2 * ============LICENSE_START========================================================================
3 * ONAP : ccsdk feature sdnr wt odlux
4 * =================================================================================================
5 * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. All rights reserved.
6 * =================================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
8 * in compliance with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software distributed under the License
13 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
14 * or implied. See the License for the specific language governing permissions and limitations under
16 * ============LICENSE_END==========================================================================
19 import * as React from 'react';
20 import ToggleButton from '@material-ui/lab/ToggleButton';
21 import ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup';
22 import BarChartIcon from '@material-ui/icons/BarChart';
23 import TableChartIcon from '@material-ui/icons/TableChart';
24 import { makeStyles } from '@material-ui/core';
25 import Tooltip from '@material-ui/core/Tooltip';
26 import ChartFilter from './chartFilter'
27 import FilterListIcon from '@material-ui/icons/FilterList';
29 const styles = makeStyles({
30 toggleButtonContainer: {
33 justifyContent: "center",
45 onRefresh: () => void;
46 onHandleRequestSort: (orderBy: string) => void;
47 onToggleFilter: () => void;
48 onFilterChanged: (property: string, filterTerm: string) => void;
49 onHandleChangePage: (page: number) => void;
50 onHandleChangeRowsPerPage: (rowsPerPage: number | null) => void;
53 type toggleProps = { selectedValue: string, onChange(value: string): void, showFilter: boolean, onToggleFilterButton(): void, onFilterChanged: (property: string, filterTerm: string) => void, existingFilter: any };
55 const ToggleContainer: React.FunctionComponent<toggleProps> = (props) => {
57 const classes = styles();
59 const handleChange = (event: React.MouseEvent<HTMLElement>, newView: string) => {
60 if (newView !== null) {
61 props.onChange(newView)
65 const handleFilterChange = (event: React.MouseEvent<HTMLElement>, newView: string) => {
66 props.onToggleFilterButton();
69 const children = React.Children.toArray(props.children);
71 //hide filter if visible + table
72 //put current name into state, let container handle stuff itelf, register for togglestate, get right via set name
76 <div className={classes.toggleButtonContainer} >
77 <ToggleButtonGroup className={classes.subViewGroup} size="medium" value={props.selectedValue} exclusive onChange={handleChange}>
78 <ToggleButton aria-label="display-chart" key={1} value="chart">
79 <Tooltip title="Chart">
83 <ToggleButton aria-label="display-table" key={2} value="table">
84 <Tooltip title="Table">
90 <ToggleButtonGroup className={classes.filterGroup} onChange={handleFilterChange} >
91 <ToggleButton aria-label="show-filter" selected={props.showFilter as boolean} disabled={props.selectedValue !== "chart"}>
92 <Tooltip title={props.showFilter ? 'Hide filter' : 'Show available filter'}>
101 props.selectedValue === "chart" &&
102 <ChartFilter filters={props.existingFilter} onFilterChanged={props.onFilterChanged} isVisible={props.showFilter} />
105 {props.selectedValue === "chart" ? children[0] : props.selectedValue === "table" && children[1]}
110 export default ToggleContainer;