1 import * as React from 'react';
3 import { withRouter, RouteComponentProps } from 'react-router-dom';
5 import { MaterialTable, ColumnType, MaterialTableCtorType } from '../../../../framework/src/components/material-table';
6 import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore';
7 import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect';
9 import { AdaptiveModulationDataType } from '../models/adaptiveModulationDataType';
10 import { createAdaptiveModulation15minProperties, createAdaptiveModulation15minActions, adaptiveModulation15minReloadAction } from '../handlers/adaptiveModulation15minHandler';
11 import { createAdaptiveModulation24hoursProperties, createAdaptiveModulation24hoursActions, adaptiveModulation24hoursReloadAction } from '../handlers/adaptiveModulation24hoursHandler';
14 const mapProps = (state: IApplicationStoreState) => ({
15 adaptiveModulation15minProperties: createAdaptiveModulation15minProperties(state),
16 adaptiveModulation24hoursProperties: createAdaptiveModulation24hoursProperties(state),
19 const mapDisp = (dispatcher: IDispatcher) => ({
20 adaptiveModulation15minActions: createAdaptiveModulation15minActions(dispatcher.dispatch),
21 adaptiveModulation24hoursActions: createAdaptiveModulation24hoursActions(dispatcher.dispatch),
24 type AdaptiveModulationComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & {
25 selectedTimePeriod: string
28 const AdaptiveModulationTable = MaterialTable as MaterialTableCtorType<AdaptiveModulationDataType>;
31 * The Component which gets the adaptiveModulation data from the database based on the selected time period.
33 class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComponentProps>{
34 render(): JSX.Element {
35 if (this.props.selectedTimePeriod == "15min") {
37 <AdaptiveModulationTable idProperty={"_id"} columns={[
38 { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text },
39 { property: "scanner-id", title: "Scanner ID", type: ColumnType.text },
40 { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true },
42 property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => {
43 const suspectIntervalFlag = rowData["suspect-interval-flag"].toString();
44 return <div >{suspectIntervalFlag} </div>
47 { property: "time2-states-s", title: "QAM2S", type: ColumnType.text, disableFilter: true, disableSorting: true },
48 { property: "time2-states", title: "QAM2", type: ColumnType.text, disableFilter: true, disableSorting: true },
49 { property: "time2-states-l", title: "QAM2L", type: ColumnType.text, disableFilter: true, disableSorting: true },
50 { property: "time4-states-s", title: "QAM4S", type: ColumnType.text, disableFilter: true, disableSorting: true },
51 { property: "time4-states", title: "QAM4", type: ColumnType.text, disableFilter: true, disableSorting: true },
52 { property: "time4-states-l", title: "QAM4L", type: ColumnType.text, disableFilter: true, disableSorting: true },
53 { property: "time16-states-s", title: "QAM16S", type: ColumnType.text, disableFilter: true, disableSorting: true },
54 { property: "time16-states", title: "QAM16", type: ColumnType.text, disableFilter: true, disableSorting: true },
55 { property: "time16-states-l", title: "QAM16L", type: ColumnType.text, disableFilter: true, disableSorting: true },
56 { property: "time32-states-s", title: "QAM32S", type: ColumnType.text, disableFilter: true, disableSorting: true },
57 { property: "time32-states", title: "QAM32", type: ColumnType.text, disableFilter: true, disableSorting: true },
58 { property: "time32-states-l", title: "QAM32L", type: ColumnType.text, disableFilter: true, disableSorting: true },
59 { property: "time64-states-s", title: "QAM64S", type: ColumnType.text, disableFilter: true, disableSorting: true },
60 { property: "time64-states", title: "QAM64", type: ColumnType.text, disableFilter: true, disableSorting: true },
61 { property: "time64-states-l", title: "QAM64L", type: ColumnType.text, disableFilter: true, disableSorting: true },
62 { property: "time128-states-s", title: "QAM128S", type: ColumnType.text, disableFilter: true, disableSorting: true },
63 { property: "time128-states", title: "QAM128", type: ColumnType.text, disableFilter: true, disableSorting: true },
64 { property: "time128-states-l", title: "QAM128L", type: ColumnType.text, disableFilter: true, disableSorting: true },
65 { property: "time256-states-s", title: "QAM256S", type: ColumnType.text, disableFilter: true, disableSorting: true },
66 { property: "time256-states", title: "QAM256", type: ColumnType.text, disableFilter: true, disableSorting: true },
67 { property: "time256-states-l", title: "QAM256L", type: ColumnType.text, disableFilter: true, disableSorting: true },
68 { property: "time512-states-s", title: "QAM512S", type: ColumnType.text, disableFilter: true, disableSorting: true },
69 { property: "time512-states", title: "QAM512", type: ColumnType.text, disableFilter: true, disableSorting: true },
70 { property: "time512-states-l", title: "QAM512L", type: ColumnType.text, disableFilter: true, disableSorting: true },
71 { property: "time1024-states-s", title: "QAM1024S", type: ColumnType.text, disableFilter: true, disableSorting: true },
72 { property: "time1024-states", title: "QAM1024", type: ColumnType.text, disableFilter: true, disableSorting: true },
73 { property: "time1024-states-l", title: "QAM1024L", type: ColumnType.text, disableFilter: true, disableSorting: true },
74 { property: "time2048-states-s", title: "QAM2048S", type: ColumnType.text, disableFilter: true, disableSorting: true },
75 { property: "time2048-states", title: "QAM2048", type: ColumnType.text, disableFilter: true, disableSorting: true },
76 { property: "time2048-states-l", title: "QAM2048L", type: ColumnType.text, disableFilter: true, disableSorting: true },
77 { property: "time4096-states-s", title: "QAM4096S", type: ColumnType.text, disableFilter: true, disableSorting: true },
78 { property: "time4096-states", title: "QAM4096", type: ColumnType.text, disableFilter: true, disableSorting: true },
79 { property: "time4096-states-l", title: "QAM4096L", type: ColumnType.text, disableFilter: true, disableSorting: true },
80 { property: "time8192-states-s", title: "QAM8192S", type: ColumnType.text, disableFilter: true, disableSorting: true },
81 { property: "time8192-states", title: "QAM8192", type: ColumnType.text, disableFilter: true, disableSorting: true },
82 { property: "time8192-states-l", title: "QAM8192L", type: ColumnType.text, disableFilter: true, disableSorting: true },
83 ]} {...this.props.adaptiveModulation15minProperties} {...this.props.adaptiveModulation15minActions} />
87 <AdaptiveModulationTable idProperty={"_id"} columns={[
88 { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text },
89 { property: "scanner-id", title: "Scanner ID", type: ColumnType.text },
90 { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true },
92 property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => {
93 const suspectIntervalFlag = rowData["suspect-interval-flag"].toString();
94 return <div >{suspectIntervalFlag} </div>
97 { property: "time2-states-s", title: "QAM2S", type: ColumnType.text, disableFilter: true, disableSorting: true },
98 { property: "time2-states", title: "QAM2", type: ColumnType.text, disableFilter: true, disableSorting: true },
99 { property: "time2-states-l", title: "QAM2L", type: ColumnType.text, disableFilter: true, disableSorting: true },
100 { property: "time4-states-s", title: "QAM4S", type: ColumnType.text, disableFilter: true, disableSorting: true },
101 { property: "time4-states", title: "QAM4", type: ColumnType.text, disableFilter: true, disableSorting: true },
102 { property: "time4-states-l", title: "QAM4L", type: ColumnType.text, disableFilter: true, disableSorting: true },
103 { property: "time16-states-s", title: "QAM16S", type: ColumnType.text, disableFilter: true, disableSorting: true },
104 { property: "time16-states", title: "QAM16", type: ColumnType.text, disableFilter: true, disableSorting: true },
105 { property: "time16-states-l", title: "QAM16L", type: ColumnType.text, disableFilter: true, disableSorting: true },
106 { property: "time32-states-s", title: "QAM32S", type: ColumnType.text, disableFilter: true, disableSorting: true },
107 { property: "time32-states", title: "QAM32", type: ColumnType.text, disableFilter: true, disableSorting: true },
108 { property: "time32-states-l", title: "QAM32L", type: ColumnType.text, disableFilter: true, disableSorting: true },
109 { property: "time64-states-s", title: "QAM64S", type: ColumnType.text, disableFilter: true, disableSorting: true },
110 { property: "time64-states", title: "QAM64", type: ColumnType.text, disableFilter: true, disableSorting: true },
111 { property: "time64-states-l", title: "QAM64L", type: ColumnType.text, disableFilter: true, disableSorting: true },
112 { property: "time128-states-s", title: "QAM128S", type: ColumnType.text, disableFilter: true, disableSorting: true },
113 { property: "time128-states", title: "QAM128", type: ColumnType.text, disableFilter: true, disableSorting: true },
114 { property: "time128-states-l", title: "QAM128L", type: ColumnType.text, disableFilter: true, disableSorting: true },
115 { property: "time256-states-s", title: "QAM256S", type: ColumnType.text, disableFilter: true, disableSorting: true },
116 { property: "time256-states", title: "QAM256", type: ColumnType.text, disableFilter: true, disableSorting: true },
117 { property: "time256-states-l", title: "QAM256L", type: ColumnType.text, disableFilter: true, disableSorting: true },
118 { property: "time512-states-s", title: "QAM512S", type: ColumnType.text, disableFilter: true, disableSorting: true },
119 { property: "time512-states", title: "QAM512", type: ColumnType.text, disableFilter: true, disableSorting: true },
120 { property: "time512-states-l", title: "QAM512L", type: ColumnType.text, disableFilter: true, disableSorting: true },
121 { property: "time1024-states-s", title: "QAM1024S", type: ColumnType.text, disableFilter: true, disableSorting: true },
122 { property: "time1024-states", title: "QAM1024", type: ColumnType.text, disableFilter: true, disableSorting: true },
123 { property: "time1024-states-l", title: "QAM1024L", type: ColumnType.text, disableFilter: true, disableSorting: true },
124 { property: "time2048-states-s", title: "QAM2048S", type: ColumnType.text, disableFilter: true, disableSorting: true },
125 { property: "time2048-states", title: "QAM2048", type: ColumnType.text, disableFilter: true, disableSorting: true },
126 { property: "time2048-states-l", title: "QAM2048L", type: ColumnType.text, disableFilter: true, disableSorting: true },
127 { property: "time4096-states-s", title: "QAM4096S", type: ColumnType.text, disableFilter: true, disableSorting: true },
128 { property: "time4096-states", title: "QAM4096", type: ColumnType.text, disableFilter: true, disableSorting: true },
129 { property: "time4096-states-l", title: "QAM4096L", type: ColumnType.text, disableFilter: true, disableSorting: true },
130 { property: "time8192-states-s", title: "QAM8192S", type: ColumnType.text, disableFilter: true, disableSorting: true },
131 { property: "time8192-states", title: "QAM8192", type: ColumnType.text, disableFilter: true, disableSorting: true },
132 { property: "time8192-states-l", title: "QAM8192L", type: ColumnType.text, disableFilter: true, disableSorting: true },
133 ]} {...this.props.adaptiveModulation24hoursProperties} {...this.props.adaptiveModulation24hoursActions} />
139 export const AdaptiveModulation = withRouter(connect(mapProps, mapDisp)(AdaptiveModulationComponent));
140 export default AdaptiveModulation;