/** * ============LICENSE_START======================================================================== * ONAP : ccsdk feature sdnr wt odlux * ================================================================================================= * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. * ================================================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. * ============LICENSE_END========================================================================== */ import * as React from 'react'; import { WithStyles, withStyles, createStyles, Theme, Tooltip } from '@material-ui/core'; import AddIcon from '@material-ui/icons/Add'; import IconButton from '@material-ui/core/IconButton'; import EditIcon from '@material-ui/icons/Edit'; import DeleteIcon from '@material-ui/icons/Delete'; import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; import connect, { IDispatcher, Connect } from '../../../../framework/src/flux/connect'; import MaterialTable, { MaterialTableCtorType, ColumnType } from '../../../../framework/src/components/material-table'; import { createAvaliableMediatorServersProperties, createAvaliableMediatorServersActions } from '../handlers/avaliableMediatorServersHandler'; import { MediatorServer } from '../models/mediatorServer'; import EditMediatorServerDialog, { EditMediatorServerDialogMode } from '../components/editMediatorServerDialog'; import { NavigateToApplication } from '../../../../framework/src/actions/navigationActions'; const MediatorServersTable = MaterialTable as MaterialTableCtorType; const styles = (theme: Theme) => createStyles({ button: { margin: 0, padding: "6px 6px", minWidth: 'unset', }, spacer: { marginLeft: theme.spacing.unit, marginRight: theme.spacing.unit, display: "inline", }, }); const mapProps = (state: IApplicationStoreState) => ({ mediatorServersProperties: createAvaliableMediatorServersProperties(state), }); const mapDispatch = (dispatcher: IDispatcher) => ({ mediatorServersActions: createAvaliableMediatorServersActions(dispatcher.dispatch), selectMediatorServer: (mediatorServerId: string) => mediatorServerId && dispatcher.dispatch(new NavigateToApplication("mediator", mediatorServerId)), }); const emptyMediatorServer: MediatorServer = { _id: "", name: "", url: "" }; type MediatorServerSelectionComponentProps = Connect & WithStyles; type MediatorServerSelectionComponentState = { mediatorServerToEdit: MediatorServer, mediatorServerEditorMode: EditMediatorServerDialogMode } class MediatorServerSelectionComponent extends React.Component { constructor (props: MediatorServerSelectionComponentProps) { super(props); this.state = { mediatorServerEditorMode: EditMediatorServerDialogMode.None, mediatorServerToEdit: emptyMediatorServer, } } render() { const { classes } = this.props; const addMediatorServerActionButton = { icon: AddIcon, tooltip: 'Add', onClick: () => { this.setState({ mediatorServerEditorMode: EditMediatorServerDialogMode.AddMediatorServer, mediatorServerToEdit: emptyMediatorServer, }); } }; return ( <> (
{ this.onEditMediatorServer(event, rowData); }}> { this.onRemoveMediatorServer(event, rowData); }}>
) } ]} onHandleClick={ this.onSelectMediatorServer } /> ); } private onSelectMediatorServer = (event: React.MouseEvent, server: MediatorServer) =>{ event.preventDefault(); event.stopPropagation(); this.props.selectMediatorServer(server && server._id); } private onEditMediatorServer = (event: React.MouseEvent, server: MediatorServer) => { event.preventDefault(); event.stopPropagation(); this.setState({ mediatorServerEditorMode: EditMediatorServerDialogMode.EditMediatorServer, mediatorServerToEdit: server, }); } private onRemoveMediatorServer = (event: React.MouseEvent, server: MediatorServer) => { event.preventDefault(); event.stopPropagation(); this.setState({ mediatorServerEditorMode: EditMediatorServerDialogMode.RemoveMediatorServer, mediatorServerToEdit: server, }); } private onCloseEditMediatorServerDialog = () => { this.setState({ mediatorServerEditorMode: EditMediatorServerDialogMode.None, mediatorServerToEdit: emptyMediatorServer, }); } } export const MediatorServerSelection = withStyles(styles)(connect(mapProps, mapDispatch)(MediatorServerSelectionComponent)); export default MediatorServerSelection;