diff options
Diffstat (limited to 'sdnr/wt/odlux/apps/performanceHistoryApp')
51 files changed, 1797 insertions, 1000 deletions
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/package.json b/sdnr/wt/odlux/apps/performanceHistoryApp/package.json index 74b4d9c68..290046ef5 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/package.json +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/package.json @@ -19,7 +19,7 @@ "framework" ], "author": "Sai Neetha Phulmali", - "license": "Apache License, Version 2.0", + "license": "Apache-2.0", "dependencies": { "@odlux/framework" : "*", "@odlux/connect-app": "*", diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/connectedNetworkElementsActions.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/connectedNetworkElementsActions.ts index 8f7e99c40..97d531608 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/connectedNetworkElementsActions.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/connectedNetworkElementsActions.ts @@ -1,3 +1,20 @@ +/** + * ============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 { Action } from '../../../../framework/src/flux/action'; import { Dispatch } from '../../../../framework/src/flux/store'; import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; @@ -32,6 +49,7 @@ export class AllConnectedNetworkElementsLoadedAction extends BaseAction { * Represents an asynchronous thunk action to load all connected network element Ids. */ export const loadAllConnectedNetworkElementsAsync = (dispatch: Dispatch, getState: () => IApplicationStoreState) => { + window.setTimeout(() => { dispatch(new LoadAllConnectedNetworkElementsAction()); const connectedNetworkElementsIds = getState().connect.mountedNetworkElements; let mountIdList: ConnectedNetworkElementIds[] = []; @@ -47,4 +65,21 @@ export const loadAllConnectedNetworkElementsAsync = (dispatch: Dispatch, getStat return 0; }); dispatch(new AllConnectedNetworkElementsLoadedAction(mountIdList)); -};
\ No newline at end of file + }, 500); +}; + +/** + * Represents an action causing the store to update mountId. + */ +export class UpdateMountId extends BaseAction { + constructor (public nodeId?: string) { + super(); + } +} + +/** + * Represents an asynchronous thunk action to load updated mountId. + */ +export const updateMountIdActionCreator = (nodeId: string ) => async (dispatch: Dispatch) => { + return dispatch(new UpdateMountId(nodeId)); +} diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/ltpAction.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/ltpAction.ts index 577066cee..2741d889a 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/ltpAction.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/ltpAction.ts @@ -1,3 +1,20 @@ +/** + * ============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 { Action } from '../../../../framework/src/flux/action'; import { Dispatch } from '../../../../framework/src/flux/store'; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/panelChangeActions.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/panelChangeActions.ts index 82072c7fe..8b77cb3b0 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/panelChangeActions.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/panelChangeActions.ts @@ -1,3 +1,20 @@ +/** + * ============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 { Action } from '../../../../framework/src/flux/action'; import { PanelId } from '../models/panelId'; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/timeChangeAction.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/timeChangeAction.ts new file mode 100644 index 000000000..a069af13c --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/timeChangeAction.ts @@ -0,0 +1,29 @@ +/** + * ============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 { Action } from '../../../../framework/src/flux/action'; +import { PmDataInterval } from '../models/performanceDataType'; + +export class TimeChangeAction extends Action { + /** + * Initialize this instance. + * @param time Action to set the time interval in dropdown. + */ + constructor(public time: PmDataInterval) { + super(); + } +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx index 281ee2f8d..2564d574a 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx @@ -1,3 +1,20 @@ +/** + * ============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 { withRouter, RouteComponentProps } from 'react-router-dom'; @@ -8,19 +25,16 @@ import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/co import { AdaptiveModulationDataType } from '../models/adaptiveModulationDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; -import { createAdaptiveModulation15minProperties, createAdaptiveModulation15minActions } from '../handlers/adaptiveModulation15minHandler'; -import { createAdaptiveModulation24hoursProperties, createAdaptiveModulation24hoursActions } from '../handlers/adaptiveModulation24hoursHandler'; +import { createAdaptiveModulationProperties, createAdaptiveModulationActions } from '../handlers/adaptiveModulationHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; import { addColumnLabels } from '../utils/tableUtils'; const mapProps = (state: IApplicationStoreState) => ({ - adaptiveModulation15minProperties: createAdaptiveModulation15minProperties(state), - adaptiveModulation24hoursProperties: createAdaptiveModulation24hoursProperties(state) + adaptiveModulationProperties: createAdaptiveModulationProperties(state), }); const mapDisp = (dispatcher: IDispatcher) => ({ - adaptiveModulation15minActions: createAdaptiveModulation15minActions(dispatcher.dispatch), - adaptiveModulation24hoursActions: createAdaptiveModulation24hoursActions(dispatcher.dispatch) + adaptiveModulationActions: createAdaptiveModulationActions(dispatcher.dispatch), }); type AdaptiveModulationComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { @@ -34,22 +48,17 @@ const AdaptiveModulationTable = MaterialTable as MaterialTableCtorType<AdaptiveM */ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComponentProps>{ render(): JSX.Element { - const properties = this.props.selectedTimePeriod === "15min" - ? this.props.adaptiveModulation15minProperties - : this.props.adaptiveModulation24hoursProperties; - - const actions = this.props.selectedTimePeriod === "15min" - ? this.props.adaptiveModulation15minActions - : this.props.adaptiveModulation24hoursActions; + const properties = this.props.adaptiveModulationProperties; + const actions = this.props.adaptiveModulationActions; const chartPagedData = this.getChartDataValues(properties.rows); const adaptiveModulationColumns: ColumnModel<AdaptiveModulationDataType>[] = [ - { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, - { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, - { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { property: "radioSignalId", title: "Radio signal", type: ColumnType.text }, + { property: "scannerId", title: "Scanner ID", type: ColumnType.text }, + { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true }, { - property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { - const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } }]; @@ -76,7 +85,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp sortDataByTimeStamp(_rows); const datasets: IDataSet[] = [{ - name: "time2-states-s", + name: "time2StatesS", label: "QAM2S", borderColor: '#62a309fc', bezierCurve: false, @@ -85,7 +94,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM2S", }, { - name: "time2-states", + name: "time2States", label: "QAM2", borderColor: '#62a309fc', bezierCurve: false, @@ -94,7 +103,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM2", }, { - name: "time2-states-l", + name: "time2StatesL", label: "QAM2L", borderColor: '#62a309fc', bezierCurve: false, @@ -103,7 +112,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM2L", }, { - name: "time4-states-s", + name: "time4StatesS", label: "QAM4S", borderColor: '#b308edde', bezierCurve: false, @@ -112,7 +121,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM4S", }, { - name: "time4-states", + name: "time4States", label: "QAM4", borderColor: '#b308edde', bezierCurve: false, @@ -121,7 +130,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM4", }, { - name: "time4-states-l", + name: "time4StatesL", label: "QAM4L", borderColor: '#b308edde', bezierCurve: false, @@ -130,7 +139,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM4L", }, { - name: "time16-states-s", + name: "time16StatesS", label: "QAM16S", borderColor: '#9b15e2', bezierCurve: false, @@ -139,7 +148,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM16S", }, { - name: "time16-states", + name: "time16States", label: "QAM16", borderColor: '#9b15e2', bezierCurve: false, @@ -148,7 +157,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM16", }, { - name: "time16-states-l", + name: "time16StatesL", label: "QAM16L", borderColor: '#9b15e2', bezierCurve: false, @@ -157,7 +166,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM16L", }, { - name: "time32-states-s", + name: "time32StatesS", label: "QAM32S", borderColor: '#2704f5f0', bezierCurve: false, @@ -166,7 +175,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM32S", }, { - name: "time32-states", + name: "time32States", label: "QAM32", borderColor: '#2704f5f0', bezierCurve: false, @@ -175,7 +184,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM32", }, { - name: "time32-states-l", + name: "time32StatesL", label: "QAM32L", borderColor: '#2704f5f0', bezierCurve: false, @@ -184,7 +193,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM32L", }, { - name: "time64-states-s", + name: "time64StatesS", label: "QAM64S", borderColor: '#347692', bezierCurve: false, @@ -193,7 +202,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM64S", }, { - name: "time64-states", + name: "time64States", label: "QAM64", borderColor: '#347692', bezierCurve: false, @@ -202,7 +211,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM64", }, { - name: "time64-states-l", + name: "time64StatesL", label: "QAM64L", borderColor: '#347692', bezierCurve: false, @@ -211,7 +220,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM64L", }, { - name: "time128-states-s", + name: "time128StatesS", label: "QAM128S", borderColor: '#885e22', bezierCurve: false, @@ -220,7 +229,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM128S", }, { - name: "time128-states", + name: "time128States", label: "QAM128", borderColor: '#885e22', bezierCurve: false, @@ -229,7 +238,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM128", }, { - name: "time128-states-l", + name: "time128StatesL", label: "QAM128L", borderColor: '#885e22', bezierCurve: false, @@ -238,7 +247,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM128L", }, { - name: "time256-states-s", + name: "time256StatesS", label: "QAM256S", borderColor: '#de07807a', bezierCurve: false, @@ -247,7 +256,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM256S", }, { - name: "time256-states", + name: "time256States", label: "QAM256", borderColor: '#de07807a', bezierCurve: false, @@ -256,7 +265,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM256", }, { - name: "time256-states-l", + name: "time256StatesL", label: "QAM256L", borderColor: '#de07807a', bezierCurve: false, @@ -265,7 +274,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM256L", }, { - name: "time512-states-s", + name: "time512StatesS", label: "QAM512S", borderColor: '#8fdaacde', bezierCurve: false, @@ -274,7 +283,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM512S", }, { - name: "time512-states", + name: "time512States", label: "QAM512", borderColor: '#8fdaacde', bezierCurve: false, @@ -284,7 +293,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp columnLabel: "QAM512", }, { - name: "time512-states-l", + name: "time512StatesL", label: "QAM512L", borderColor: '#8fdaacde', bezierCurve: false, @@ -294,7 +303,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp columnLabel: "QAM512L", }, { - name: "time1024-states-s", + name: "time1024StatesS", label: "QAM1024S", borderColor: '#435b22', bezierCurve: false, @@ -304,7 +313,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp columnLabel: "QAM1024S", }, { - name: "time1024-states", + name: "time1024States", label: "QAM1024", borderColor: '#435b22', bezierCurve: false, @@ -314,7 +323,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp columnLabel: "QAM1024", }, { - name: "time1024-states-l", + name: "time1024StatesL", label: "QAM1024L", borderColor: '#435b22', bezierCurve: false, @@ -323,7 +332,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM1024L", }, { - name: "time2048-states-s", + name: "time2048StatesS", label: "QAM2048S", borderColor: '#e87a5b', bezierCurve: false, @@ -332,7 +341,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM2048S", }, { - name: "time2048-states", + name: "time2048States", label: "QAM2048", borderColor: '#e87a5b', bezierCurve: false, @@ -341,7 +350,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM2048", }, { - name: "time2048-states-l", + name: "time2048StatesL", label: "QAM2048L", borderColor: '#e87a5b', bezierCurve: false, @@ -350,7 +359,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM2048L", }, { - name: "time4096-states-s", + name: "time4096StatesS", label: "QAM4096S", borderColor: '#5be878', bezierCurve: false, @@ -359,7 +368,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM4096S", }, { - name: "time4096-states", + name: "time4096States", label: "QAM4096", borderColor: '#5be878', bezierCurve: false, @@ -368,7 +377,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM4096", }, { - name: "time4096-states-l", + name: "time4096StatesL", label: "QAM4096L", borderColor: '#5be878', bezierCurve: false, @@ -377,7 +386,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM4096L", }, { - name: "time8192-states-s", + name: "time8192StatesS", label: "QAM8192s", borderColor: '#cb5be8', bezierCurve: false, @@ -386,7 +395,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM8192S", }, { - name: "time8192-states", + name: "time8192States", label: "QAM8192", borderColor: '#cb5be8', bezierCurve: false, @@ -395,7 +404,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp data: [], columnLabel: "QAM8192", }, { - name: "time8192-states-l", + name: "time8192StatesL", label: "QAM8192L", borderColor: '#cb5be8', bezierCurve: false, @@ -409,7 +418,7 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp _rows.forEach(row => { datasets.forEach(ds => { ds.data.push({ - x: row["time-stamp"], + x: row["utcTimeStamp" as keyof AdaptiveModulationDataType] as string, y: row[ds.name as keyof AdaptiveModulationDataType] as string }); }); diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx index 42e3f93a6..8718171f7 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx @@ -1,3 +1,20 @@ +/** + * ============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 { withRouter, RouteComponentProps } from 'react-router-dom'; @@ -8,19 +25,16 @@ import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/co import { CrossPolarDiscriminationDataType } from '../models/crossPolarDiscriminationDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; -import { createCrossPolarDiscrimination15minProperties, createCrossPolarDiscrimination15minActions } from '../handlers/crossPolarDiscrimination15minHandler'; -import { createCrossPolarDiscrimination24hoursProperties, createCrossPolarDiscrimination24hoursActions } from '../handlers/crossPolarDiscrimination24hoursHandler'; +import { createCrossPolarDiscriminationProperties, createCrossPolarDiscriminationActions } from '../handlers/crossPolarDiscriminationHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; import { addColumnLabels } from '../utils/tableUtils'; const mapProps = (state: IApplicationStoreState) => ({ - crossPolarDiscrimination15minProperties: createCrossPolarDiscrimination15minProperties(state), - crossPolarDiscrimination24hoursProperties: createCrossPolarDiscrimination24hoursProperties(state) + crossPolarDiscriminationProperties: createCrossPolarDiscriminationProperties(state), }); const mapDisp = (dispatcher: IDispatcher) => ({ - crossPolarDiscrimination15minActions: createCrossPolarDiscrimination15minActions(dispatcher.dispatch), - crossPolarDiscrimination24hoursActions: createCrossPolarDiscrimination24hoursActions(dispatcher.dispatch) + crossPolarDiscriminationActions: createCrossPolarDiscriminationActions(dispatcher.dispatch), }); type CrossPolarDiscriminationComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { @@ -34,27 +48,23 @@ const CrossPolarDiscriminationTable = MaterialTable as MaterialTableCtorType<Cro */ class CrossPolarDiscriminationComponent extends React.Component<CrossPolarDiscriminationComponentProps>{ render(): JSX.Element { - const properties = this.props.selectedTimePeriod === "15min" - ? this.props.crossPolarDiscrimination15minProperties - : this.props.crossPolarDiscrimination24hoursProperties; - const actions = this.props.selectedTimePeriod === "15min" - ? this.props.crossPolarDiscrimination15minActions - : this.props.crossPolarDiscrimination24hoursActions; + const properties = this.props.crossPolarDiscriminationProperties; + const actions = this.props.crossPolarDiscriminationActions; const chartPagedData = this.getChartDataValues(properties.rows); const cpdColumns: ColumnModel<CrossPolarDiscriminationDataType>[] = [ - { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, - { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, - { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { property: "radioSignalId", title: "Radio signal", type: ColumnType.text }, + { property: "scannerId", title: "Scanner ID", type: ColumnType.text }, + { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true }, { - property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { - const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } } ]; - + chartPagedData.datasets.forEach(ds => { cpdColumns.push(addColumnLabels<CrossPolarDiscriminationDataType>(ds.name, ds.columnLabel)); }); @@ -75,7 +85,7 @@ class CrossPolarDiscriminationComponent extends React.Component<CrossPolarDiscri sortDataByTimeStamp(_rows); const datasets: IDataSet[] = [{ - name: "xpd-min", + name: "xpdMin", label: "xpd-min", borderColor: '#0e17f3de', bezierCurve: false, @@ -84,7 +94,7 @@ class CrossPolarDiscriminationComponent extends React.Component<CrossPolarDiscri data: [], columnLabel: "CPD (min)[db]" }, { - name: "xpd-avg", + name: "xpdAvg", label: "xpd-avg", borderColor: '#08edb6de', bezierCurve: false, @@ -93,7 +103,7 @@ class CrossPolarDiscriminationComponent extends React.Component<CrossPolarDiscri data: [], columnLabel: "CPD (avg)[db]" }, { - name: "xpd-max", + name: "xpdMax", label: "xpd-max", borderColor: '#b308edde', bezierCurve: false, @@ -106,7 +116,7 @@ class CrossPolarDiscriminationComponent extends React.Component<CrossPolarDiscri _rows.forEach(row => { datasets.forEach(ds => { ds.data.push({ - x: row["time-stamp"], + x: row["utcTimeStamp" as keyof CrossPolarDiscriminationDataType] as string, y: row[ds.name as keyof CrossPolarDiscriminationDataType] as string }); }); diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx index 578022db7..fc44879dc 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx @@ -1,3 +1,20 @@ +/** + * ============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 { withRouter, RouteComponentProps } from 'react-router-dom'; @@ -7,19 +24,16 @@ import { IApplicationStoreState } from '../../../../framework/src/store/applicat import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; import { PerformanceDataType } from '../models/performanceDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; -import { createPerformanceData15minProperties, createPerformanceData15minActions } from '../handlers/performanceData15minHandler'; -import { createPerformanceData24hoursProperties, createPerformanceData24hoursActions } from '../handlers/performanceData24hoursHandler'; +import { createPerformanceDataProperties, createPerformanceDataActions } from '../handlers/performanceDataHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; import { addColumnLabels } from '../utils/tableUtils'; const mapProps = (state: IApplicationStoreState) => ({ - performanceData15minProperties: createPerformanceData15minProperties(state), - performanceData24hoursProperties: createPerformanceData24hoursProperties(state) + performanceDataProperties: createPerformanceDataProperties(state), }); const mapDisp = (dispatcher: IDispatcher) => ({ - performanceData15minActions: createPerformanceData15minActions(dispatcher.dispatch), - performanceData24hoursActions: createPerformanceData24hoursActions(dispatcher.dispatch) + performanceDataActions: createPerformanceDataActions(dispatcher.dispatch), }); type PerformanceDataComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { @@ -33,21 +47,17 @@ const PerformanceDataTable = MaterialTable as MaterialTableCtorType<PerformanceD */ class PerformanceDataComponent extends React.Component<PerformanceDataComponentProps>{ render(): JSX.Element { - const properties = this.props.selectedTimePeriod === "15min" - ? this.props.performanceData15minProperties - : this.props.performanceData24hoursProperties; - const actions = this.props.selectedTimePeriod === "15min" - ? this.props.performanceData15minActions - : this.props.performanceData24hoursActions; + const properties = this.props.performanceDataProperties; + const actions = this.props.performanceDataActions; const chartPagedData = this.getChartDataValues(properties.rows); const performanceColumns: ColumnModel<PerformanceDataType>[] = [ - { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, - { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, - { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { property: "radioSignalId", title: "Radio signal", type: ColumnType.text }, + { property: "scannerId", title: "Scanner ID", type: ColumnType.text }, + { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true }, { - property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { - const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } } @@ -104,7 +114,7 @@ class PerformanceDataComponent extends React.Component<PerformanceDataComponentP _rows.forEach(row => { datasets.forEach(ds => { ds.data.push({ - x: row["time-stamp"], + x: row["utcTimeStamp" as keyof PerformanceDataType] as string, y: row[ds.name as keyof PerformanceDataType] as string }); }); diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx index b893ce149..9992f5bd8 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx @@ -1,3 +1,20 @@ +/** + * ============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 { withRouter, RouteComponentProps } from 'react-router-dom'; @@ -8,19 +25,16 @@ import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/co import { ReceiveLevelDataType } from '../models/receiveLevelDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; -import { createReceiveLevel15minProperties, createReceiveLevel15minActions } from '../handlers/receiveLevel15minHandler'; -import { createReceiveLevel24hoursProperties, createReceiveLevel24hoursActions } from '../handlers/receiveLevel24hoursHandler'; +import { createReceiveLevelProperties, createReceiveLevelActions } from '../handlers/receiveLevelHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; import { addColumnLabels } from '../utils/tableUtils'; const mapProps = (state: IApplicationStoreState) => ({ - receiveLevel15minProperties: createReceiveLevel15minProperties(state), - receiveLevel24hoursProperties: createReceiveLevel24hoursProperties(state) + receiveLevelProperties: createReceiveLevelProperties(state), }); const mapDisp = (dispatcher: IDispatcher) => ({ - receiveLevel15minActions: createReceiveLevel15minActions(dispatcher.dispatch), - receiveLevel24hoursActions: createReceiveLevel24hoursActions(dispatcher.dispatch) + receiveLevelActions: createReceiveLevelActions(dispatcher.dispatch), }); type ReceiveLevelComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { @@ -34,21 +48,17 @@ const ReceiveLevelTable = MaterialTable as MaterialTableCtorType<ReceiveLevelDat */ class ReceiveLevelComponent extends React.Component<ReceiveLevelComponentProps>{ render(): JSX.Element { - const properties = this.props.selectedTimePeriod === "15min" - ? this.props.receiveLevel15minProperties - : this.props.receiveLevel24hoursProperties; - const actions = this.props.selectedTimePeriod === "15min" - ? this.props.receiveLevel15minActions - : this.props.receiveLevel24hoursActions; + const properties = this.props.receiveLevelProperties; + const actions = this.props.receiveLevelActions; const chartPagedData = this.getChartDataValues(properties.rows); const receiveLevelColumns: ColumnModel<ReceiveLevelDataType>[] = [ - { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, - { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, - { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { property: "radioSignalId", title: "Radio signal", type: ColumnType.text }, + { property: "scannerId", title: "Scanner ID", type: ColumnType.text }, + { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true }, { - property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { - const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } } @@ -75,7 +85,7 @@ class ReceiveLevelComponent extends React.Component<ReceiveLevelComponentProps>{ sortDataByTimeStamp(_rows); const datasets: IDataSet[] = [{ - name: "rx-level-min", + name: "rxLevelMin", label: "rx-level-min", borderColor: '#0e17f3de', bezierCurve: false, @@ -84,7 +94,7 @@ class ReceiveLevelComponent extends React.Component<ReceiveLevelComponentProps>{ data: [], columnLabel: "Rx min" }, { - name: "rx-level-avg", + name: "rxLevelAvg", label: "rx-level-avg", borderColor: '#08edb6de', bezierCurve: false, @@ -93,7 +103,7 @@ class ReceiveLevelComponent extends React.Component<ReceiveLevelComponentProps>{ data: [], columnLabel: "Rx avg" }, { - name: "rx-level-max", + name: "rxLevelMax", label: "rx-level-max", borderColor: '#b308edde', bezierCurve: false, @@ -106,7 +116,7 @@ class ReceiveLevelComponent extends React.Component<ReceiveLevelComponentProps>{ _rows.forEach(row => { datasets.forEach(ds => { ds.data.push({ - x: row["time-stamp"], + x: row["utcTimeStamp" as keyof ReceiveLevelDataType] as string, y: row[ds.name as keyof ReceiveLevelDataType] as string }); }); diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx index 90ed1a9cb..98017ae2f 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx @@ -1,3 +1,20 @@ +/** + * ============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 { withRouter, RouteComponentProps } from 'react-router-dom'; @@ -8,19 +25,16 @@ import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/co import { SignalToInterferenceDataType } from '../models/signalToInteferenceDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; -import { createSignalToInterference15minProperties, createSignalToInterference15minActions } from '../handlers/signalToInterference15minHandler'; -import { createSignalToInterference24hoursProperties, createSignalToInterference24hoursActions } from '../handlers/signalToInterference24hoursHandler'; +import { createSignalToInterferenceProperties, createSignalToInterferenceActions } from '../handlers/signalToInterferenceHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; import { addColumnLabels } from '../utils/tableUtils'; const mapProps = (state: IApplicationStoreState) => ({ - signalToInterference15minProperties: createSignalToInterference15minProperties(state), - signalToInterference24hoursProperties: createSignalToInterference24hoursProperties(state) + signalToInterferenceProperties: createSignalToInterferenceProperties(state), }); const mapDisp = (dispatcher: IDispatcher) => ({ - signalToInterference15minActions: createSignalToInterference15minActions(dispatcher.dispatch), - signalToInterference24hoursActions: createSignalToInterference24hoursActions(dispatcher.dispatch) + signalToInterferenceActions: createSignalToInterferenceActions(dispatcher.dispatch), }); type SignalToInterferenceComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { @@ -34,28 +48,23 @@ const SignalToInterferenceTable = MaterialTable as MaterialTableCtorType<SignalT */ class SignalToInterferenceComponent extends React.Component<SignalToInterferenceComponentProps>{ render(): JSX.Element { - const properties = this.props.selectedTimePeriod === "15min" - ? this.props.signalToInterference15minProperties - : this.props.signalToInterference24hoursProperties; - const actions = this.props.selectedTimePeriod === "15min" - ? this.props.signalToInterference15minActions - : this.props.signalToInterference24hoursActions; + const properties = this.props.signalToInterferenceProperties; + const actions = this.props.signalToInterferenceActions; const chartPagedData = this.getChartDataValues(properties.rows); const sinrColumns: ColumnModel<SignalToInterferenceDataType>[] = [ - - { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, - { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, - { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { property: "radioSignalId", title: "Radio signal", type: ColumnType.text }, + { property: "scannerId", title: "Scanner ID", type: ColumnType.text }, + { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true }, { - property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { - const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } } ]; - + chartPagedData.datasets.forEach(ds => { sinrColumns.push(addColumnLabels<SignalToInterferenceDataType>(ds.name, ds.columnLabel)); }); @@ -78,7 +87,7 @@ class SignalToInterferenceComponent extends React.Component<SignalToInterference sortDataByTimeStamp(_rows); const datasets: IDataSet[] = [{ - name: "snir-min", + name: "snirMin", label: "snir-min", borderColor: '#0e17f3de', bezierCurve: false, @@ -87,7 +96,7 @@ class SignalToInterferenceComponent extends React.Component<SignalToInterference data: [], columnLabel: "SINR (min)[db]" }, { - name: "snir-avg", + name: "snirAvg", label: "snir-avg", borderColor: '#08edb6de', bezierCurve: false, @@ -96,7 +105,7 @@ class SignalToInterferenceComponent extends React.Component<SignalToInterference data: [], columnLabel: "SINR (avg)[db]" }, { - name: "snir-max", + name: "snirMax", label: "snir-max", borderColor: '#b308edde', bezierCurve: false, @@ -109,7 +118,7 @@ class SignalToInterferenceComponent extends React.Component<SignalToInterference _rows.forEach(row => { datasets.forEach(ds => { ds.data.push({ - x: row["time-stamp"], + x: row["utcTimeStamp" as keyof SignalToInterferenceDataType] as string, y: row[ds.name as keyof SignalToInterferenceDataType] as string }); }); diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx index f105bfd46..f1e62cf33 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx @@ -1,3 +1,20 @@ +/** + * ============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 { withRouter, RouteComponentProps } from 'react-router-dom'; @@ -8,19 +25,16 @@ import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/co import { TemperatureDataType } from '../models/temperatureDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; -import { createTemperature15minProperties, createTemperature15minActions } from '../handlers/temperature15minHandler'; -import { createTemperature24hoursProperties, createTemperature24hoursActions } from '../handlers/temperature24hoursHandler'; +import { createTemperatureProperties, createTemperatureActions } from '../handlers/temperatureHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; import { addColumnLabels } from '../utils/tableUtils'; const mapProps = (state: IApplicationStoreState) => ({ - temperature15minProperties: createTemperature15minProperties(state), - temperature24hoursProperties: createTemperature24hoursProperties(state) + temperatureProperties: createTemperatureProperties(state), }); const mapDisp = (dispatcher: IDispatcher) => ({ - temperature15minActions: createTemperature15minActions(dispatcher.dispatch), - temperature24hoursActions: createTemperature24hoursActions(dispatcher.dispatch) + temperatureActions: createTemperatureActions(dispatcher.dispatch), }); type TemperatureComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { @@ -34,26 +48,22 @@ const TemperatureTable = MaterialTable as MaterialTableCtorType<TemperatureDataT */ class TemperatureComponent extends React.Component<TemperatureComponentProps>{ render(): JSX.Element { - const properties = this.props.selectedTimePeriod === "15min" - ? this.props.temperature15minProperties - : this.props.temperature24hoursProperties; - const actions = this.props.selectedTimePeriod === "15min" - ? this.props.temperature15minActions - : this.props.temperature24hoursActions; + const properties = this.props.temperatureProperties; + const actions = this.props.temperatureActions; const chartPagedData = this.getChartDataValues(properties.rows); const temperatureColumns: ColumnModel<TemperatureDataType>[] = [ - { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, - { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, - { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { property: "radioSignalId", title: "Radio signal", type: ColumnType.text }, + { property: "scannerId", title: "Scanner ID", type: ColumnType.text }, + { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true }, { - property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { - const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } } ]; - + chartPagedData.datasets.forEach(ds => { temperatureColumns.push(addColumnLabels<TemperatureDataType>(ds.name, ds.columnLabel)); }); @@ -75,7 +85,7 @@ class TemperatureComponent extends React.Component<TemperatureComponentProps>{ sortDataByTimeStamp(_rows); const datasets: IDataSet[] = [{ - name: "rf-temp-min", + name: "rfTempMin", label: "rf-temp-min", borderColor: '#0e17f3de', bezierCurve: false, @@ -84,7 +94,7 @@ class TemperatureComponent extends React.Component<TemperatureComponentProps>{ data: [], columnLabel: "Rf Temp Min[deg C]" }, { - name: "rf-temp-avg", + name: "rfTempAvg", label: "rf-temp-avg", borderColor: '#08edb6de', bezierCurve: false, @@ -93,7 +103,7 @@ class TemperatureComponent extends React.Component<TemperatureComponentProps>{ data: [], columnLabel: "Rf Temp Avg[deg C]" }, { - name: "rf-temp-max", + name: "rfTempMax", label: "rf-temp-max", borderColor: '#b308edde', bezierCurve: false, @@ -106,7 +116,7 @@ class TemperatureComponent extends React.Component<TemperatureComponentProps>{ _rows.forEach(row => { datasets.forEach(ds => { ds.data.push({ - x: row["time-stamp"], + x: row["utcTimeStamp" as keyof TemperatureDataType] as string, y: row[ds.name as keyof TemperatureDataType] as string }); }); diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx index 088a83eed..8ec4561a4 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx @@ -1,3 +1,20 @@ +/** + * ============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 { withRouter, RouteComponentProps } from 'react-router-dom'; @@ -8,19 +25,16 @@ import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/co import { TransmissionPowerDataType } from '../models/transmissionPowerDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; -import { createTransmissionPower15minProperties, createTransmissionPower15minActions } from '../handlers/transmissionPower15minHandler'; -import { createTransmissionPower24hoursProperties, createTransmissionPower24hoursActions } from '../handlers/transmissionPower24hoursHandler'; +import { createTransmissionPowerProperties, createTransmissionPowerActions } from '../handlers/transmissionPowerHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; import { addColumnLabels } from '../utils/tableUtils'; const mapProps = (state: IApplicationStoreState) => ({ - transmissionPower15minProperties: createTransmissionPower15minProperties(state), - transmissionPower24hoursProperties: createTransmissionPower24hoursProperties(state) + transmissionPowerProperties: createTransmissionPowerProperties(state), }); const mapDisp = (dispatcher: IDispatcher) => ({ - transmissionPower15minActions: createTransmissionPower15minActions(dispatcher.dispatch), - transmissionPower24hoursActions: createTransmissionPower24hoursActions(dispatcher.dispatch) + transmissionPowerActions: createTransmissionPowerActions(dispatcher.dispatch), }); type TransmissionPowerComponentProps = RouteComponentProps & Connect<typeof mapProps, typeof mapDisp> & { @@ -34,27 +48,23 @@ const TransmissionPowerTable = MaterialTable as MaterialTableCtorType<Transmissi */ class TransmissionPowerComponent extends React.Component<TransmissionPowerComponentProps>{ render(): JSX.Element { - const properties = this.props.selectedTimePeriod === "15min" - ? this.props.transmissionPower15minProperties - : this.props.transmissionPower24hoursProperties; - const actions = this.props.selectedTimePeriod === "15min" - ? this.props.transmissionPower15minActions - : this.props.transmissionPower24hoursActions; + const properties = this.props.transmissionPowerProperties + const actions = this.props.transmissionPowerActions const chartPagedData = this.getChartDataValues(properties.rows); const transmissionColumns: ColumnModel<TransmissionPowerDataType>[] = [ - { property: "radio-signal-id", title: "Radio signal", type: ColumnType.text }, - { property: "scanner-id", title: "Scanner ID", type: ColumnType.text }, - { property: "time-stamp", title: "End Time", type: ColumnType.text, disableFilter: true }, + { property: "radioSignalId", title: "Radio signal", type: ColumnType.text }, + { property: "scannerId", title: "Scanner ID", type: ColumnType.text }, + { property: "utcTimeStamp", title: "End Time", type: ColumnType.text, disableFilter: true }, { - property: "suspect-interval-flag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { - const suspectIntervalFlag = rowData["suspect-interval-flag"].toString(); + property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } } ]; - + chartPagedData.datasets.forEach(ds => { transmissionColumns.push(addColumnLabels<TransmissionPowerDataType>(ds.name, ds.columnLabel)); }); @@ -77,7 +87,7 @@ class TransmissionPowerComponent extends React.Component<TransmissionPowerCompon sortDataByTimeStamp(_rows); const datasets: IDataSet[] = [{ - name: "tx-level-min", + name: "txLevelMin", label: "tx-level-min", borderColor: '#0e17f3de', bezierCurve: false, @@ -86,7 +96,7 @@ class TransmissionPowerComponent extends React.Component<TransmissionPowerCompon data: [], columnLabel: "Tx min" }, { - name: "tx-level-avg", + name: "txLevelAvg", label: "tx-level-avg", borderColor: '#08edb6de', bezierCurve: false, @@ -95,7 +105,7 @@ class TransmissionPowerComponent extends React.Component<TransmissionPowerCompon data: [], columnLabel: "Tx avg" }, { - name: "tx-level-max", + name: "txLevelMax", label: "tx-level-max", borderColor: '#b308edde', bezierCurve: false, @@ -108,7 +118,7 @@ class TransmissionPowerComponent extends React.Component<TransmissionPowerCompon _rows.forEach(row => { datasets.forEach(ds => { ds.data.push({ - x: row["time-stamp"], + x: row["utcTimeStamp" as keyof TransmissionPowerDataType] as string, y: row[ds.name as keyof TransmissionPowerDataType] as string }); }); diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation15minHandler.ts deleted file mode 100644 index 6072cf0fb..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation15minHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - - -import { AdaptiveModulationDataType, AdaptiveModulation, AdaptiveModulationResult } from '../models/adaptiveModulationDataType'; - -export interface IAdaptiveModulation15minState extends IExternalTableState<AdaptiveModulationDataType> { } - -/** - * Creates elastic search material data fetch handler for Adaptive modulation from historicalperformance15min database. - */ -const adaptiveModulationSearchHandler = createSearchDataHandler<AdaptiveModulationResult, AdaptiveModulation>( - "sdnperformance/historicalperformance15min", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: adaptiveModulation15minActionHandler, - createActions: createAdaptiveModulation15minActions, - createProperties: createAdaptiveModulation15minProperties, - createPreActions: createAdaptiveModulation15minPreActions, - reloadAction: adaptiveModulation15minReloadAction, -} = createExternal<AdaptiveModulationDataType>(adaptiveModulationSearchHandler, appState => appState.performanceHistory.adaptiveModulation15min); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation24hoursHandler.ts deleted file mode 100644 index 466b22966..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulation24hoursHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - - -import { AdaptiveModulationDataType, AdaptiveModulation, AdaptiveModulationResult } from '../models/adaptiveModulationDataType'; - -export interface IAdaptiveModulation24hoursState extends IExternalTableState<AdaptiveModulationDataType> { } - -/** - * Creates elastic search material data fetch handler for Adaptive modulation from historicalperformance24h database. - */ -const adaptiveModulationSearchHandler = createSearchDataHandler<AdaptiveModulationResult, AdaptiveModulation>( - "sdnperformance/historicalperformance24h", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: adaptiveModulation24hoursActionHandler, - createActions: createAdaptiveModulation24hoursActions, - createProperties: createAdaptiveModulation24hoursProperties, - createPreActions: createAdaptiveModulation24hoursPreActions, - reloadAction: adaptiveModulation24hoursReloadAction, -} = createExternal<AdaptiveModulationDataType>(adaptiveModulationSearchHandler, appState => appState.performanceHistory.adaptiveModulation24hours); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts new file mode 100644 index 000000000..ba765c8cb --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts @@ -0,0 +1,96 @@ +/** + * ============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 { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + +import { AdaptiveModulationDataType, AdaptiveModulationResult } from '../models/adaptiveModulationDataType'; +import { getFilter } from '../utils/tableUtils'; + +export interface IAdaptiveModulationState extends IExternalTableState<AdaptiveModulationDataType> { } + +/** + * Creates elastic search material data fetch handler for Adaptive modulation from historicalperformance database. + */ +const adaptiveModulationSearchHandler = createSearchDataHandler<AdaptiveModulationResult, AdaptiveModulationDataType>( + getFilter, + null, + (hit) => ({ + _id: hit._id, + radioSignalId: hit._source["radio-signal-id"], + scannerId: hit._source["scanner-id"], + utcTimeStamp: hit._source["time-stamp"], + suspectIntervalFlag: hit._source["suspect-interval-flag"], + time2StatesS: hit._source["performance-data"]["time2-states-s"], + time2States: hit._source["performance-data"]["time2-states"], + time2StatesL: hit._source["performance-data"]["time2-states-l"], + time4StatesS: hit._source["performance-data"]["time4-states-s"], + time4States: hit._source["performance-data"]["time4-states"], + time4StatesL: hit._source["performance-data"]["time4-states-l"], + time16StatesS: hit._source["performance-data"]["time16-states-s"], + time16States: hit._source["performance-data"]["time16-states"], + time16StatesL: hit._source["performance-data"]["time16-states-l"], + time32StatesS: hit._source["performance-data"]["time32-states-s"], + time32States: hit._source["performance-data"]["time32-states"], + time32StatesL: hit._source["performance-data"]["time32-states-l"], + time64StatesS: hit._source["performance-data"]["time64-states-s"], + time64States: hit._source["performance-data"]["time64-states"], + time64StatesL: hit._source["performance-data"]["time64-states-l"], + time128StatesS: hit._source["performance-data"]["time128-states-s"], + time128States: hit._source["performance-data"]["time128-states"], + time128StatesL: hit._source["performance-data"]["time128-states-l"], + time256StatesS: hit._source["performance-data"]["time256-states-s"], + time256States: hit._source["performance-data"]["time256-states"], + time256StatesL: hit._source["performance-data"]["time256-states-l"], + time512StatesS: hit._source["performance-data"]["time512-states-s"], + time512States: hit._source["performance-data"]["time512-states"], + time512StatesL: hit._source["performance-data"]["time512-states-l"], + time1024StatesS: hit._source["performance-data"]["time1024-states-s"], + time1024States: hit._source["performance-data"]["time1024-states"], + time1024StatesL: hit._source["performance-data"]["time1024-states-l"], + time2048StatesS: hit._source["performance-data"]["time2048-states-s"], + time2048States: hit._source["performance-data"]["time2048-states"], + time2048StatesL: hit._source["performance-data"]["time2048-states-l"], + time4096StatesS: hit._source["performance-data"]["time4096-states-s"], + time4096States: hit._source["performance-data"]["time4096-states"], + time4096StatesL: hit._source["performance-data"]["time4096-states-l"], + time8192StatesS: hit._source["performance-data"]["time8192-states-s"], + time8192States: hit._source["performance-data"]["time8192-states"], + time8192StatesL: hit._source["performance-data"]["time8192-states-l"], + }), + (pmDataEntry: string) => { + switch (pmDataEntry) { + case "radioSignalId": + return "radio-signal-id"; + case "scannerId": + return "scanner-id"; + case "utcTimeStamp": + return "time-stamp" + case "suspectIntervalFlag": + return "suspect-interval-flag"; + } + return pmDataEntry + }); + +export const { + actionHandler: adaptiveModulationActionHandler, + createActions: createAdaptiveModulationActions, + createProperties: createAdaptiveModulationProperties, + createPreActions: createAdaptiveModulationPreActions, + reloadAction: adaptiveModulationReloadAction, +} = createExternal<AdaptiveModulationDataType>(adaptiveModulationSearchHandler, appState => appState.performanceHistory.adaptiveModulation); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts index 415b073c9..41aceca9f 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts @@ -1,3 +1,20 @@ +/** + * ============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 { IActionHandler } from '../../../../framework/src/flux/action'; import { @@ -13,7 +30,7 @@ export interface IAvailableLtpsState { } const connectedNetworkElementsStateInit: IAvailableLtpsState = { - distinctLtps: [], + distinctLtps: [], busy: false }; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts index ad153f0ec..ee14063c2 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts @@ -1,3 +1,20 @@ +/** + * ============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 { IActionHandler } from '../../../../framework/src/flux/action'; import { AllConnectedNetworkElementsLoadedAction, LoadAllConnectedNetworkElementsAction } from '../actions/connectedNetworkElementsActions'; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination15minHandler.ts deleted file mode 100644 index 81418db94..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination15minHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - - -import { CrossPolarDiscriminationDataType, CrossPolarDiscrimination, CrossPolarDiscriminationResult } from '../models/crossPolarDiscriminationDataType'; - -export interface ICrossPolarDiscrimination15minState extends IExternalTableState<CrossPolarDiscriminationDataType> { } - -/** - * Creates elastic search material data fetch handler for CPD from historicalperformance15min database. - */ -const crossPolarDiscriminationSearchHandler = createSearchDataHandler<CrossPolarDiscriminationResult, CrossPolarDiscrimination>( - "sdnperformance/historicalperformance15min", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: crossPolarDiscrimination15minActionHandler, - createActions: createCrossPolarDiscrimination15minActions, - createProperties: createCrossPolarDiscrimination15minProperties, - createPreActions: createCrossPolarDiscrimination15minPreActions, - reloadAction: crossPolarDiscrimination15minReloadAction, -} = createExternal<CrossPolarDiscriminationDataType>(crossPolarDiscriminationSearchHandler, appState => appState.performanceHistory.crossPolarDiscrimination15min); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination24hoursHandler.ts deleted file mode 100644 index b4d9da393..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscrimination24hoursHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - - -import { CrossPolarDiscriminationDataType, CrossPolarDiscrimination, CrossPolarDiscriminationResult } from '../models/crossPolarDiscriminationDataType'; - -export interface ICrossPolarDiscrimination24hoursState extends IExternalTableState<CrossPolarDiscriminationDataType> { } - -/** - * Creates elastic search material data fetch handler for CPD from historicalperformance24h database. - */ -const crossPolarDiscriminationSearchHandler = createSearchDataHandler<CrossPolarDiscriminationResult, CrossPolarDiscrimination>( - "sdnperformance/historicalperformance24h", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: crossPolarDiscrimination24hoursActionHandler, - createActions: createCrossPolarDiscrimination24hoursActions, - createProperties: createCrossPolarDiscrimination24hoursProperties, - createPreActions: createCrossPolarDiscrimination24hoursPreActions, - reloadAction: crossPolarDiscrimination24hoursReloadAction, -} = createExternal<CrossPolarDiscriminationDataType>(crossPolarDiscriminationSearchHandler, appState => appState.performanceHistory.crossPolarDiscrimination24hours); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts new file mode 100644 index 000000000..074c97d91 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts @@ -0,0 +1,63 @@ +/** + * ============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 { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + +import { CrossPolarDiscriminationDataType, CrossPolarDiscriminationResult } from '../models/crossPolarDiscriminationDataType'; +import { getFilter } from '../utils/tableUtils'; + +export interface ICrossPolarDiscriminationState extends IExternalTableState<CrossPolarDiscriminationDataType> { } + +/** + * Creates elastic search material data fetch handler for CPD from historicalperformance database. + */ +const crossPolarDiscriminationSearchHandler = createSearchDataHandler<CrossPolarDiscriminationResult, CrossPolarDiscriminationDataType>( + getFilter, + null, + (hit) => ({ + _id: hit._id, + radioSignalId: hit._source["radio-signal-id"], + scannerId: hit._source["scanner-id"], + utcTimeStamp: hit._source["time-stamp"], + suspectIntervalFlag: hit._source["suspect-interval-flag"], + xpdMin: hit._source["performance-data"]["xpd-min"], + xpdAvg: hit._source["performance-data"]["xpd-avg"], + xpdMax: hit._source["performance-data"]["xpd-max"], + }), + (pmDataEntry: string) => { + switch (pmDataEntry) { + case "radioSignalId": + return "radio-signal-id"; + case "scannerId": + return "scanner-id"; + case "utcTimeStamp": + return "time-stamp" + case "suspectIntervalFlag": + return "suspect-interval-flag"; + } + return pmDataEntry + }); + +export const { + actionHandler: crossPolarDiscriminationActionHandler, + createActions: createCrossPolarDiscriminationActions, + createProperties: createCrossPolarDiscriminationProperties, + createPreActions: createCrossPolarDiscriminationPreActions, + reloadAction: crossPolarDiscriminationReloadAction, +} = createExternal<CrossPolarDiscriminationDataType>(crossPolarDiscriminationSearchHandler, appState => appState.performanceHistory.crossPolarDiscrimination); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData15minHandler.ts deleted file mode 100644 index 4f284a27e..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData15minHandler.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { createExternal,IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - -import { PerformanceDataType, Performance,PerformanceResult } from '../models/performanceDataType'; - -export interface IPerformanceData15minState extends IExternalTableState<PerformanceDataType> {} - -/** - * Creates elastic search material data fetch handler for performance data from historicalperformance15min database. - */ - const performanceDataSearchHandler = createSearchDataHandler<PerformanceResult, Performance>( - "sdnperformance/historicalperformance15min", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}` ); - -export const { - actionHandler: performanceData15minActionHandler, - createActions: createPerformanceData15minActions, - createProperties: createPerformanceData15minProperties, - createPreActions: createPerformanceData15minPreActions, - reloadAction: performanceData15minReloadAction -} = createExternal<PerformanceDataType>(performanceDataSearchHandler, appState => appState.performanceHistory.performanceData15min); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData24hoursHandler.ts deleted file mode 100644 index 4136ce482..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceData24hoursHandler.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - -import { PerformanceDataType, Performance, PerformanceResult } from '../models/performanceDataType'; - -export interface IPerformanceData24hoursState extends IExternalTableState<PerformanceDataType> { } - -/** - * Creates elastic search material data fetch handler for performance data from historicalperformance24h database. - */ -const performanceDataSearchHandler = createSearchDataHandler<PerformanceResult, Performance>( - "sdnperformance/historicalperformance24h", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: performanceData24hoursActionHandler, - createActions: createPerformanceData24hoursActions, - createProperties: createPerformanceData24hoursProperties, - createPreActions: createPerformanceData24hoursPreActions, - reloadAction: performanceData24hoursReloadAction -} = createExternal<PerformanceDataType>(performanceDataSearchHandler, appState => appState.performanceHistory.performanceData24hours); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts new file mode 100644 index 000000000..51b537fea --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts @@ -0,0 +1,65 @@ +/** + * ============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 moment from 'moment'; + +import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + +import { PerformanceResult, PerformanceDataType } from '../models/performanceDataType'; +import { getFilter } from '../utils/tableUtils'; + +export interface IPerformanceDataState extends IExternalTableState<PerformanceDataType> { } + +/** +* Creates elastic search material data fetch handler for performance data from historicalperformance15min database. +*/ +const performanceDataSearchHandler = createSearchDataHandler<PerformanceResult, PerformanceDataType>( + getFilter, + null, + (hit) => ({ + _id: hit._id, + radioSignalId: hit._source["radio-signal-id"], + scannerId: hit._source["scanner-id"], + utcTimeStamp: hit._source["time-stamp"], + suspectIntervalFlag: hit._source["suspect-interval-flag"], + es: hit._source["performance-data"]["es"], + ses: hit._source["performance-data"]["ses"], + unavailability: hit._source["performance-data"]["unavailability"], + }), + (pmDataEntry: string) => { + switch (pmDataEntry) { + case "radioSignalId": + return "radio-signal-id"; + case "scannerId": + return "scanner-id"; + case "utcTimeStamp": + return "time-stamp" + case "suspectIntervalFlag": + return "suspect-interval-flag"; + } + return pmDataEntry + }); + +export const { + actionHandler: performanceDataActionHandler, + createActions: createPerformanceDataActions, + createProperties: createPerformanceDataProperties, + createPreActions: createPerformanceDataPreActions, + reloadAction: performanceDataReloadAction +} = createExternal<PerformanceDataType>(performanceDataSearchHandler, appState => appState.performanceHistory.performanceData); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts index 43813e573..85ff01634 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts @@ -1,3 +1,20 @@ +/** + * ============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========================================================================== + */ // main state handler import { combineActionHandler } from '../../../../framework/src/flux/middleware'; @@ -7,45 +24,46 @@ import { IApplicationStoreState } from '../../../../framework/src/store/applicat import { IActionHandler } from '../../../../framework/src/flux/action'; import { IConnectAppStoreState } from '../../../connectApp/src/handlers/connectAppRootHandler'; -import { IPerformanceData15minState, performanceData15minActionHandler } from './performanceData15minHandler'; -import { IReceiveLevel15minState, receiveLevel15minActionHandler } from './receiveLevel15minHandler'; -import { ITransmissionPower15minState, transmissionPower15minActionHandler } from './transmissionPower15minHandler'; -import { IAdaptiveModulation15minState, adaptiveModulation15minActionHandler } from './adaptiveModulation15minHandler'; -import { ITemperature15minState, temperature15minActionHandler } from './temperature15minHandler'; -import { ISignalToInterference15minState, signalToInterference15minActionHandler } from './signalToInterference15minHandler'; -import { ICrossPolarDiscrimination15minState, crossPolarDiscrimination15minActionHandler } from './crossPolarDiscrimination15minHandler'; -import { IPerformanceData24hoursState, performanceData24hoursActionHandler } from './performanceData24hoursHandler'; -import { IReceiveLevel24hoursState, receiveLevel24hoursActionHandler } from './receiveLevel24hoursHandler'; -import { ITransmissionPower24hoursState, transmissionPower24hoursActionHandler } from './transmissionPower24hoursHandler'; -import { IAdaptiveModulation24hoursState, adaptiveModulation24hoursActionHandler } from './adaptiveModulation24hoursHandler'; -import { ITemperature24hoursState, temperature24hoursActionHandler } from './temperature24hoursHandler'; -import { ISignalToInterference24hoursState, signalToInterference24hoursActionHandler } from './signalToInterference24hoursHandler'; -import { ICrossPolarDiscrimination24hoursState, crossPolarDiscrimination24hoursActionHandler } from './crossPolarDiscrimination24hoursHandler'; +import { IPerformanceDataState, performanceDataActionHandler } from './performanceDataHandler'; +import { IReceiveLevelState, receiveLevelActionHandler } from './receiveLevelHandler'; +import { ITransmissionPowerState, transmissionPowerActionHandler } from './transmissionPowerHandler'; +import { IAdaptiveModulationState, adaptiveModulationActionHandler } from './adaptiveModulationHandler'; +import { ITemperatureState, temperatureActionHandler } from './temperatureHandler'; +import { ISignalToInterferenceState, signalToInterferenceActionHandler } from './signalToInterferenceHandler'; +import { ICrossPolarDiscriminationState, crossPolarDiscriminationActionHandler } from './crossPolarDiscriminationHandler'; import { SetPanelAction } from '../actions/panelChangeActions'; import { IConnectedNetworkElementsState, connectedNetworkElementsActionHandler } from './connectedNetworkElementsActionHandler'; import { IAvailableLtpsState, availableLtpsActionHandler } from './availableLtpsActionHandler'; +import { PmDataInterval } from '../models/performanceDataType'; +import { TimeChangeAction } from '../actions/timeChangeAction'; +import { UpdateMountId } from '../actions/connectedNetworkElementsActions'; export interface IPerformanceHistoryStoreState { + mountId: string; networkElements: IConnectedNetworkElementsState; ltps: IAvailableLtpsState; - performanceData15min: IPerformanceData15minState; - performanceData24hours: IPerformanceData24hoursState; - receiveLevel15min: IReceiveLevel15minState; - receiveLevel24hours: IReceiveLevel24hoursState; - transmissionPower15min: ITransmissionPower15minState; - transmissionPower24hours: ITransmissionPower24hoursState; - adaptiveModulation15min: IAdaptiveModulation15minState; - adaptiveModulation24hours: IAdaptiveModulation24hoursState; - temperature15min: ITemperature15minState; - temperature24hours: ITemperature24hoursState; - signalToInterference15min:ISignalToInterference15minState; - signalToInterference24hours:ISignalToInterference24hoursState; - crossPolarDiscrimination15min: ICrossPolarDiscrimination15minState; - crossPolarDiscrimination24hours: ICrossPolarDiscrimination24hoursState; + performanceData: IPerformanceDataState; + receiveLevel: IReceiveLevelState; + transmissionPower: ITransmissionPowerState; + adaptiveModulation: IAdaptiveModulationState; + temperature: ITemperatureState; + signalToInterference: ISignalToInterferenceState; + crossPolarDiscrimination: ICrossPolarDiscriminationState; currentOpenPanel: string | null; + pmDataIntervalType: PmDataInterval; +} +const mountIdHandler: IActionHandler<string> = (state = "", action) => { + if (action instanceof UpdateMountId) { + state = ""; + if (action.nodeId) { + state = action.nodeId; + } + } + return state; } + const currentOpenPanelHandler: IActionHandler<string | null> = (state = null, action) => { if (action instanceof SetPanelAction) { state = action.panelId; @@ -53,6 +71,13 @@ const currentOpenPanelHandler: IActionHandler<string | null> = (state = null, ac return state; } +const currentPMDataIntervalHandler: IActionHandler<PmDataInterval> = (state = PmDataInterval.pmInterval15Min, action) => { + if (action instanceof TimeChangeAction) { + state = action.time; + } + return state; +} + declare module '../../../../framework/src/store/applicationStore' { interface IApplicationStoreState { performanceHistory: IPerformanceHistoryStoreState; @@ -61,23 +86,18 @@ declare module '../../../../framework/src/store/applicationStore' { } const actionHandlers = { + mountId: mountIdHandler, networkElements: connectedNetworkElementsActionHandler, ltps: availableLtpsActionHandler, - performanceData15min: performanceData15minActionHandler, - performanceData24hours: performanceData24hoursActionHandler, - receiveLevel15min: receiveLevel15minActionHandler, - receiveLevel24hours: receiveLevel24hoursActionHandler, - transmissionPower15min: transmissionPower15minActionHandler, - transmissionPower24hours: transmissionPower24hoursActionHandler, - adaptiveModulation15min: adaptiveModulation15minActionHandler, - adaptiveModulation24hours: adaptiveModulation24hoursActionHandler, - temperature15min: temperature15minActionHandler, - temperature24hours: temperature24hoursActionHandler, - signalToInterference15min: signalToInterference15minActionHandler, - signalToInterference24hours: signalToInterference24hoursActionHandler, - crossPolarDiscrimination15min: crossPolarDiscrimination15minActionHandler, - crossPolarDiscrimination24hours: crossPolarDiscrimination24hoursActionHandler, - currentOpenPanel: currentOpenPanelHandler + performanceData: performanceDataActionHandler, + receiveLevel: receiveLevelActionHandler, + transmissionPower: transmissionPowerActionHandler, + adaptiveModulation: adaptiveModulationActionHandler, + temperature: temperatureActionHandler, + signalToInterference: signalToInterferenceActionHandler, + crossPolarDiscrimination: crossPolarDiscriminationActionHandler, + currentOpenPanel: currentOpenPanelHandler, + pmDataIntervalType: currentPMDataIntervalHandler }; const performanceHistoryRootHandler = combineActionHandler<IPerformanceHistoryStoreState>(actionHandlers); diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel15minHandler.ts deleted file mode 100644 index c7c5e177f..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel15minHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - - -import { ReceiveLevelDataType, ReceiveLevel, ReceiveLevelResult } from '../models/receiveLevelDataType'; - -export interface IReceiveLevel15minState extends IExternalTableState<ReceiveLevelDataType> { } - -/** - * Creates elastic search material data fetch handler for receiveLevel from historicalperformance15min database. - */ -const receiveLevelSearchHandler = createSearchDataHandler<ReceiveLevelResult, ReceiveLevel>( - "sdnperformance/historicalperformance15min", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: receiveLevel15minActionHandler, - createActions: createReceiveLevel15minActions, - createProperties: createReceiveLevel15minProperties, - createPreActions: createReceiveLevel15minPreActions, - reloadAction: receiveLevel15minReloadAction, -} = createExternal<ReceiveLevelDataType>(receiveLevelSearchHandler, appState => appState.performanceHistory.receiveLevel15min); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel24hoursHandler.ts deleted file mode 100644 index f665dfdc6..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevel24hoursHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - - -import { ReceiveLevelDataType, ReceiveLevel, ReceiveLevelResult } from '../models/receiveLevelDataType'; - -export interface IReceiveLevel24hoursState extends IExternalTableState<ReceiveLevelDataType> { } - -/** - * Creates elastic search material data fetch handler for receiveLevel from historicalperformance24h database. - */ -const receiveLevelSearchHandler = createSearchDataHandler<ReceiveLevelResult, ReceiveLevel>( - "sdnperformance/historicalperformance24h", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: receiveLevel24hoursActionHandler, - createActions: createReceiveLevel24hoursActions, - createProperties: createReceiveLevel24hoursProperties, - createPreActions: createReceiveLevel24hoursPreActions, - reloadAction: receiveLevel24hoursReloadAction, -} = createExternal<ReceiveLevelDataType>(receiveLevelSearchHandler, appState => appState.performanceHistory.receiveLevel24hours); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts new file mode 100644 index 000000000..adb70b120 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts @@ -0,0 +1,63 @@ +/** + * ============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 { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + +import { ReceiveLevelDataType, ReceiveLevelResult } from '../models/receiveLevelDataType'; +import { getFilter } from '../utils/tableUtils'; + +export interface IReceiveLevelState extends IExternalTableState<ReceiveLevelDataType> { } + +/** + * Creates elastic search material data fetch handler for receiveLevel from historicalperformance database. + */ +const receiveLevelSearchHandler = createSearchDataHandler<ReceiveLevelResult, ReceiveLevelDataType>( + getFilter, + null, + (hit) => ({ + _id: hit._id, + radioSignalId: hit._source["radio-signal-id"], + scannerId: hit._source["scanner-id"], + utcTimeStamp: hit._source["time-stamp"], + suspectIntervalFlag: hit._source["suspect-interval-flag"], + rxLevelMin: hit._source["performance-data"]["rx-level-min"], + rxLevelAvg: hit._source["performance-data"]["rx-level-avg"], + rxLevelMax: hit._source["performance-data"]["rx-level-max"], + }), + (pmDataEntry: string) => { + switch (pmDataEntry) { + case "radioSignalId": + return "radio-signal-id"; + case "scannerId": + return "scanner-id"; + case "utcTimeStamp": + return "time-stamp" + case "suspectIntervalFlag": + return "suspect-interval-flag"; + } + return pmDataEntry + }); + +export const { + actionHandler: receiveLevelActionHandler, + createActions: createReceiveLevelActions, + createProperties: createReceiveLevelProperties, + createPreActions: createReceiveLevelPreActions, + reloadAction: receiveLevelReloadAction, +} = createExternal<ReceiveLevelDataType>(receiveLevelSearchHandler, appState => appState.performanceHistory.receiveLevel); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference15minHandler.ts deleted file mode 100644 index 536a89ea7..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference15minHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - - -import { SignalToInterferenceDataType, SignalToInterference, SignalToInterferenceResult } from '../models/signalToInteferenceDataType'; - -export interface ISignalToInterference15minState extends IExternalTableState<SignalToInterferenceDataType> { } - -/** - * Creates elastic search material data fetch handler for SINR from historicalperformance15min database. - */ -const signalToInterferenceSearchHandler = createSearchDataHandler<SignalToInterferenceResult, SignalToInterference>( - "sdnperformance/historicalperformance15min", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: signalToInterference15minActionHandler, - createActions: createSignalToInterference15minActions, - createProperties: createSignalToInterference15minProperties, - createPreActions: createSignalToInterference15minPreActions, - reloadAction: signalToInterference15minReloadAction, -} = createExternal<SignalToInterferenceDataType>(signalToInterferenceSearchHandler, appState => appState.performanceHistory.signalToInterference15min); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference24hoursHandler.ts deleted file mode 100644 index a95d0aecf..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterference24hoursHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - - -import { SignalToInterferenceDataType, SignalToInterference, SignalToInterferenceResult } from '../models/signalToInteferenceDataType'; - -export interface ISignalToInterference24hoursState extends IExternalTableState<SignalToInterferenceDataType> { } - -/** - * Creates elastic search material data fetch handler for SINR from historicalperformance24h database. - */ -const signalToInterferenceSearchHandler = createSearchDataHandler<SignalToInterferenceResult, SignalToInterference>( - "sdnperformance/historicalperformance24h", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: signalToInterference24hoursActionHandler, - createActions: createSignalToInterference24hoursActions, - createProperties: createSignalToInterference24hoursProperties, - createPreActions: createSignalToInterference24hoursPreActions, - reloadAction: signalToInterference24hoursReloadAction, -} = createExternal<SignalToInterferenceDataType>(signalToInterferenceSearchHandler, appState => appState.performanceHistory.signalToInterference24hours); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts new file mode 100644 index 000000000..aa75ba226 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts @@ -0,0 +1,63 @@ +/** + * ============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 { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + +import { SignalToInterferenceDataType, SignalToInterferenceResult } from '../models/signalToInteferenceDataType'; +import { getFilter } from '../utils/tableUtils'; + +export interface ISignalToInterferenceState extends IExternalTableState<SignalToInterferenceDataType> { } + +/** + * Creates elastic search material data fetch handler for SINR from historicalperformance database. + */ +const signalToInterferenceSearchHandler = createSearchDataHandler<SignalToInterferenceResult, SignalToInterferenceDataType>( + getFilter, + null, + (hit) => ({ + _id: hit._id, + radioSignalId: hit._source["radio-signal-id"], + scannerId: hit._source["scanner-id"], + utcTimeStamp: hit._source["time-stamp"], + suspectIntervalFlag: hit._source["suspect-interval-flag"], + snirMin: hit._source["performance-data"]["snir-min"], + snirAvg: hit._source["performance-data"]["snir-avg"], + snirMax: hit._source["performance-data"]["snir-max"], + }), + (pmDataEntry: string) => { + switch (pmDataEntry) { + case "radioSignalId": + return "radio-signal-id"; + case "scannerId": + return "scanner-id"; + case "utcTimeStamp": + return "time-stamp" + case "suspectIntervalFlag": + return "suspect-interval-flag"; + } + return pmDataEntry + }); + +export const { + actionHandler: signalToInterferenceActionHandler, + createActions: createSignalToInterferenceActions, + createProperties: createSignalToInterferenceProperties, + createPreActions: createSignalToInterferencePreActions, + reloadAction: signalToInterferenceReloadAction, +} = createExternal<SignalToInterferenceDataType>(signalToInterferenceSearchHandler, appState => appState.performanceHistory.signalToInterference); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature15minHandler.ts deleted file mode 100644 index 20fb57035..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature15minHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - - -import { TemperatureDataType, Temperature, TemperatureResult } from '../models/temperatureDataType'; - -export interface ITemperature15minState extends IExternalTableState<TemperatureDataType> { } - -/** - * Creates elastic search material data fetch handler for Temperature from historicalperformance15min database. - */ -const temperatureSearchHandler = createSearchDataHandler<TemperatureResult, Temperature>( - "sdnperformance/historicalperformance15min", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: temperature15minActionHandler, - createActions: createTemperature15minActions, - createProperties: createTemperature15minProperties, - createPreActions: createTemperature15minPreActions, - reloadAction: temperature15minReloadAction, -} = createExternal<TemperatureDataType>(temperatureSearchHandler, appState => appState.performanceHistory.temperature15min); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature24hoursHandler.ts deleted file mode 100644 index 1c36ef876..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperature24hoursHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - - -import { TemperatureDataType, Temperature, TemperatureResult } from '../models/temperatureDataType'; - -export interface ITemperature24hoursState extends IExternalTableState<TemperatureDataType> { } - -/** - * Creates elastic search material data fetch handler for temperature from historicalperformance24h database. - */ -const temperatureSearchHandler = createSearchDataHandler<TemperatureResult, Temperature>( - "sdnperformance/historicalperformance24h", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: temperature24hoursActionHandler, - createActions: createTemperature24hoursActions, - createProperties: createTemperature24hoursProperties, - createPreActions: createTemperature24hoursPreActions, - reloadAction: temperature24hoursReloadAction, -} = createExternal<TemperatureDataType>(temperatureSearchHandler, appState => appState.performanceHistory.temperature24hours); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts new file mode 100644 index 000000000..8a9ae7025 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts @@ -0,0 +1,63 @@ +/** + * ============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 { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + +import { TemperatureDataType, TemperatureResult } from '../models/temperatureDataType'; +import { getFilter } from '../utils/tableUtils'; + +export interface ITemperatureState extends IExternalTableState<TemperatureDataType> { } + +/** + * Creates elastic search material data fetch handler for Temperature from historicalperformance database. + */ +const temperatureSearchHandler = createSearchDataHandler<TemperatureResult, TemperatureDataType>( + getFilter, + null, + (hit) => ({ + _id: hit._id, + radioSignalId: hit._source["radio-signal-id"], + scannerId: hit._source["scanner-id"], + utcTimeStamp: hit._source["time-stamp"], + suspectIntervalFlag: hit._source["suspect-interval-flag"], + rfTempMin: hit._source["performance-data"]["rf-temp-min"], + rfTempAvg: hit._source["performance-data"]["rf-temp-avg"], + rfTempMax: hit._source["performance-data"]["rf-temp-max"], + }), + (pmDataEntry: string) => { + switch (pmDataEntry) { + case "radioSignalId": + return "radio-signal-id"; + case "scannerId": + return "scanner-id"; + case "utcTimeStamp": + return "time-stamp" + case "suspectIntervalFlag": + return "suspect-interval-flag"; + } + return pmDataEntry + }); + +export const { + actionHandler: temperatureActionHandler, + createActions: createTemperatureActions, + createProperties: createTemperatureProperties, + createPreActions: createTemperaturePreActions, + reloadAction: temperatureReloadAction, +} = createExternal<TemperatureDataType>(temperatureSearchHandler, appState => appState.performanceHistory.temperature); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower15minHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower15minHandler.ts deleted file mode 100644 index e6ba90f10..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower15minHandler.ts +++ /dev/null @@ -1,29 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - - -import { TransmissionPowerDataType, TransmissionPower, TransmissionPowerResult } from '../models/transmissionPowerDataType'; - -export interface ITransmissionPower15minState extends IExternalTableState<TransmissionPowerDataType> { } - -/** - * Creates elastic search material data fetch handler for Transmission power from historicalperformance15min database. - */ -const transmissionPowerSearchHandler = createSearchDataHandler<TransmissionPowerResult, TransmissionPower>( - "sdnperformance/historicalperformance15min", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: transmissionPower15minActionHandler, - createActions: createTransmissionPower15minActions, - createProperties: createTransmissionPower15minProperties, - createPreActions: createTransmissionPower15minPreActions, - reloadAction: transmissionPower15minReloadAction, -} = createExternal<TransmissionPowerDataType>(transmissionPowerSearchHandler, appState => appState.performanceHistory.transmissionPower15min); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower24hoursHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower24hoursHandler.ts deleted file mode 100644 index de50629e1..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPower24hoursHandler.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; -import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; - -import { TransmissionPowerDataType, TransmissionPower, TransmissionPowerResult } from '../models/transmissionPowerDataType'; - -export interface ITransmissionPower24hoursState extends IExternalTableState<TransmissionPowerDataType> { } - -/** - * Creates elastic search material data fetch handler for transmission power from historicalperformance24h database. - */ -const transmissionPowerSearchHandler = createSearchDataHandler<TransmissionPowerResult, TransmissionPower>( - "sdnperformance/historicalperformance24h", - null, - (hit) => ({ - _id: hit._id, - ...hit._source, - ...hit._source["performance-data"] - }), - (name) => `${name}`); - -export const { - actionHandler: transmissionPower24hoursActionHandler, - createActions: createTransmissionPower24hoursActions, - createProperties: createTransmissionPower24hoursProperties, - createPreActions: createTransmissionPower24hoursPreActions, - reloadAction: transmissionPower24hoursReloadAction, -} = createExternal<TransmissionPowerDataType>(transmissionPowerSearchHandler, appState => appState.performanceHistory.transmissionPower24hours); - diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts new file mode 100644 index 000000000..c2ad82183 --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts @@ -0,0 +1,63 @@ +/** + * ============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 { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; +import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; + +import { TransmissionPowerDataType, TransmissionPowerResult } from '../models/transmissionPowerDataType'; +import { getFilter } from '../utils/tableUtils'; + +export interface ITransmissionPowerState extends IExternalTableState<TransmissionPowerDataType> { } + +/** + * Creates elastic search material data fetch handler for Transmission power from historicalperformance database. + */ +const transmissionPowerSearchHandler = createSearchDataHandler<TransmissionPowerResult, TransmissionPowerDataType>( + getFilter, + null, + (hit) => ({ + _id: hit._id, + radioSignalId: hit._source["radio-signal-id"], + scannerId: hit._source["scanner-id"], + utcTimeStamp: hit._source["time-stamp"], + suspectIntervalFlag: hit._source["suspect-interval-flag"], + txLevelMin: hit._source["performance-data"]["tx-level-min"], + txLevelAvg: hit._source["performance-data"]["tx-level-avg"], + txLevelMax: hit._source["performance-data"]["tx-level-max"], + }), + (pmDataEntry: string) => { + switch (pmDataEntry) { + case "radioSignalId": + return "radio-signal-id"; + case "scannerId": + return "scanner-id"; + case "utcTimeStamp": + return "time-stamp" + case "suspectIntervalFlag": + return "suspect-interval-flag"; + } + return pmDataEntry + }); + +export const { + actionHandler: transmissionPowerActionHandler, + createActions: createTransmissionPowerActions, + createProperties: createTransmissionPowerProperties, + createPreActions: createTransmissionPowerPreActions, + reloadAction: transmissionPowerReloadAction, +} = createExternal<TransmissionPowerDataType>(transmissionPowerSearchHandler, appState => appState.performanceHistory.transmissionPower); + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts index 701d54a38..9c1d28986 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts @@ -1,52 +1,118 @@ +/** + * ============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========================================================================== + */ export { HitEntry, Result } from '../../../../framework/src/models'; /** * Represents Adaptive Modulation data fields of the performance history table. */ -export type AdaptiveModulationDataType = { - "_id": string; +export type AdaptiveModulationDatabaseDataType = { + "time2-states-s": number; + "time2-states": number; + "time2-states-l": number; + "time4-states-s": number; + "time4-states": number; + "time4-states-l": number; + "time16-states-s": number; + "time16-states": number; + "time16-states-l": number; + "time32-states-s": number; + "time32-states": number; + "time32-states-l": number; + "time64-states-s": number; + "time64-states": number; + "time64-states-l": number; + "time128-states-s": number; + "time128-states": number; + "time128-states-l": number; + "time256-states-s": number; + "time256-states": number; + "time256-states-l": number; + "time512-states-s": number; + "time512-states": number; + "time512-states-l": number; + "time1024-states-s": number; + "time1024-states": number; + "time1024-states-l": number; + "time2048-states-s": number; + "time2048-states": number; + "time2048-states-l": number; + "time4096-states-s": number; + "time4096-states": number; + "time4096-states-l": number; + "time8192-states-s": number; + "time8192-states": number; + "time8192-states-l": number; +}; + +/** + * Represents Result type of database query + */ +export type AdaptiveModulationResult = { + "performance-data": AdaptiveModulationDatabaseDataType; "radio-signal-id": string; "scanner-id": string; - "time-stamp": string; "suspect-interval-flag": boolean; - "time2-states-s": string; - "time2-states": string; - "time2-states-l": string; - "time4-states-s": string; - "time4-states": string; - "time4-states-l": string; - "time16-states-s": string; - "time16-states": string; - "time16-states-l": string; - "time32-states-s": string; - "time32-states": string; - "time32-states-l": string; - "time64-states-s": string; - "time64-states": string; - "time64-states-l": string; - "time128-states-s": string; - "time128-states": string; - "time128-states-l": string; - "time256-states-s": string; - "time256-states": string; - "time256-states-l": string; - "time512-states-s": string; - "time512-states": string; - "time512-states-l": string; - "time1024-states-s": string; - "time1024-states": string; - "time1024-states-l": string; - "time2048-states-s": string; - "time2048-states": string; - "time2048-states-l": string; - "time4096-states-s": string; - "time4096-states": string; - "time4096-states-l": string; - "time8192-states-s": string; - "time8192-states": string; - "time8192-states-l": string; + "time-stamp": string; }; -export type AdaptiveModulationResult = { "performance-data": AdaptiveModulationDataType }; -export type AdaptiveModulation = AdaptiveModulationDataType & { _id: string }; +/** + * Internally used type to provide table and chart data + */ +export type AdaptiveModulationDataType = { + radioSignalId: string; + scannerId: string; + utcTimeStamp: string; + suspectIntervalFlag: boolean; + "time2StatesS": number; + "time2States": number; + "time2StatesL": number; + "time4StatesS": number; + "time4States": number; + "time4StatesL": number; + "time16StatesS": number; + "time16States": number; + "time16StatesL": number; + "time32StatesS": number; + "time32States": number; + "time32StatesL": number; + "time64StatesS": number; + "time64States": number; + "time64StatesL": number; + "time128StatesS": number; + "time128States": number; + "time128StatesL": number; + "time256StatesS": number; + "time256States": number; + "time256StatesL": number; + "time512StatesS": number; + "time512States": number; + "time512StatesL": number; + "time1024StatesS": number; + "time1024States": number; + "time1024StatesL": number; + "time2048StatesS": number; + "time2048States": number; + "time2048StatesL": number; + "time4096StatesS": number; + "time4096States": number; + "time4096StatesL": number; + "time8192StatesS": number; + "time8192States": number; + "time8192StatesL": number; +} & { _id: string };
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts index d5a6c6888..fcf7ad5f6 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts @@ -1,3 +1,20 @@ +/** + * ============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========================================================================== + */ export type LtpIds = { key: string } diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts index 8ea59e2ec..487cf029d 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts @@ -1,33 +1,49 @@ -export interface IData { +/** + * ============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========================================================================== + */ +export interface IData { x: string; y: string; } - + /** * Structure of chartjs dataset with the chart properties. */ - export interface IDataSet { - name: string, - label: string, - lineTension: 0, - bezierCurve: boolean; - fill: boolean, - borderColor: string, - data: IData[], - columnLabel:string - } +export interface IDataSet { + name: string, + label: string, + lineTension: 0, + bezierCurve: boolean; + fill: boolean, + borderColor: string, + data: IData[], + columnLabel: string +} /** * Structure of chartjs dataset which is sent to the chart. */ - export interface IDataSetsObject { - datasets: IDataSet[] - } +export interface IDataSetsObject { + datasets: IDataSet[] +} /** * Interface used by chart for sorting on time-stamp */ - export interface ITimeStamp { - "time-stamp": string; - } -
\ No newline at end of file +export interface ITimeStamp { + "utcTimeStamp": string; +} diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts index 43e74eb3e..ef4415393 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts @@ -1,19 +1,53 @@ +/** + * ============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========================================================================== + */ export { HitEntry, Result } from '../../../../framework/src/models'; + /** - * Represents CPD data fields of the performance history table. + * Represents Receive level data fields of the performance history table. */ -export type CrossPolarDiscriminationDataType = { - "_id": string; +export type CrossPolarDiscriminationDatabaseDataType = { + "xpd-min": number; + "xpd-avg": number; + "xpd-max": number; +}; + +/** + * Represents Result type of database query + */ +export type CrossPolarDiscriminationResult = { + "performance-data": CrossPolarDiscriminationDatabaseDataType "radio-signal-id": string; "scanner-id": string; - "time-stamp": string; "suspect-interval-flag": boolean; - "xpd-min": string; - "xpd-avg": string; - "xpd-max": string; + "time-stamp": string; }; -export type CrossPolarDiscriminationResult = { "performance-data": CrossPolarDiscriminationDataType }; +/** + * Internally used type to provide table and chart data + */ +export type CrossPolarDiscriminationDataType = { + radioSignalId: string; + scannerId: string; + utcTimeStamp: string; + suspectIntervalFlag: boolean; + xpdMin: number; + xpdAvg: number; + xpdMax: number; +} & { _id: string }; -export type CrossPolarDiscrimination = CrossPolarDiscriminationDataType & { _id: string };
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts index 3c9b5cb21..6af29c4a8 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts @@ -1,19 +1,63 @@ -export { HitEntry, Result } from '../../../../framework/src/models'; +/** + * ============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 { Moment } from "moment"; + +//export { HitEntry, Result } from '../../../../framework/src/models'; /** - * Represents performance data fields of the performance history table. + * Represents performance data fields of the performance history table as used in the database */ -export type PerformanceDataType = { - "_id": string; +export type PerformanceDatabaseDataType = { + "es": number; + "ses": number; + "unavailability": number; +}; + + +/** + * Represents Result type of database query + */ +export type PerformanceResult = { + "performance-data": PerformanceDatabaseDataType; "radio-signal-id": string; "scanner-id": string; - "time-stamp": string; "suspect-interval-flag": boolean; - "es": string; - "ses": string; - "unavailability": string; + "time-stamp": string; }; -export type PerformanceResult = { "performance-data": PerformanceDataType }; +/** + * Internally used type to provide table and chart data + */ +export type PerformanceDataType = { + radioSignalId: string; + scannerId: string; + utcTimeStamp: string; + suspectIntervalFlag: boolean; + es: number; + ses: number; + unavailability: number; +} & { _id: string }; + -export type Performance = PerformanceDataType & { _id: string };
\ No newline at end of file +/** + * Represents performance data time interval. + */ +export const enum PmDataInterval { + pmInterval15Min, + pmInterval24Hours +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts index 57ea48cce..836bf58d9 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts @@ -1,19 +1,52 @@ +/** + * ============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========================================================================== + */ export { HitEntry, Result } from '../../../../framework/src/models'; /** * Represents Receive level data fields of the performance history table. */ -export type ReceiveLevelDataType = { - "_id": string; +export type ReceiveLevelDatabaseDataType = { + "rx-level-min": number; + "rx-level-avg": number; + "rx-level-max": number; +}; + +/** + * Represents Result type of database query + */ +export type ReceiveLevelResult = { + "performance-data": ReceiveLevelDatabaseDataType "radio-signal-id": string; "scanner-id": string; - "time-stamp": string; "suspect-interval-flag": boolean; - "rx-level-min": string; - "rx-level-avg": string; - "rx-level-max": string; + "time-stamp": string; }; -export type ReceiveLevelResult = { "performance-data": ReceiveLevelDataType }; +/** + * Internally used type to provide table and chart data + */ +export type ReceiveLevelDataType = { + radioSignalId: string; + scannerId: string; + utcTimeStamp: string; + suspectIntervalFlag: boolean; + rxLevelMin: number; + rxLevelAvg: number; + rxLevelMax: number; +} & { _id: string }; -export type ReceiveLevel = ReceiveLevelDataType & { _id: string }; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts index 51d43b455..deb1d8f18 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts @@ -1,19 +1,54 @@ +/** + * ============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========================================================================== + */ export { HitEntry, Result } from '../../../../framework/src/models'; + /** - * Represents Signal to interference data fields of the performance history table. + * Represents Receive level data fields of the performance history table. */ -export type SignalToInterferenceDataType = { - "_id": string; +export type SignalToInterferenceDatabaseDataType = { + "snir-min": number; + "snir-avg": number; + "snir-max": number; +}; + +/** + * Represents Result type of database query + */ +export type SignalToInterferenceResult = { + "performance-data": SignalToInterferenceDatabaseDataType "radio-signal-id": string; "scanner-id": string; - "time-stamp": string; "suspect-interval-flag": boolean; - "snir-min": string; - "snir-avg": string; - "snir-max": string; + "time-stamp": string; }; -export type SignalToInterferenceResult = { "performance-data": SignalToInterferenceDataType }; -export type SignalToInterference = SignalToInterferenceDataType & { _id: string }; +/** + * Internally used type to provide table and chart data + */ +export type SignalToInterferenceDataType = { + radioSignalId: string; + scannerId: string; + utcTimeStamp: string; + suspectIntervalFlag: boolean; + snirMin: number; + snirAvg: number; + snirMax: number; +} & { _id: string }; + diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts index 3179d7b6a..dd3ce5253 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts @@ -1,19 +1,54 @@ +/** + * ============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========================================================================== + */ export { HitEntry, Result } from '../../../../framework/src/models'; + /** - * Represents Temperature data fields of the performance history table. + * Represents Receive level data fields of the performance history table. */ -export type TemperatureDataType = { - "_id": string; +export type TemperatureDatabaseDataType = { + "rf-temp-min": number; + "rf-temp-avg": number; + "rf-temp-max": number; +}; + +/** + * Represents Result type of database query + */ +export type TemperatureResult = { + "performance-data": TemperatureDatabaseDataType "radio-signal-id": string; "scanner-id": string; - "time-stamp": string; "suspect-interval-flag": boolean; - "rf-temp-min": string; - "rf-temp-avg": string; - "rf-temp-max": string; + "time-stamp": string; }; -export type TemperatureResult = { "performance-data": TemperatureDataType }; +/** + * Internally used type to provide table and chart data + */ +export type TemperatureDataType = { + radioSignalId: string; + scannerId: string; + utcTimeStamp: string; + suspectIntervalFlag: boolean; + rfTempMin: number; + rfTempAvg: number; + rfTempMax: number; +} & { _id: string }; + -export type Temperature = TemperatureDataType & { _id: string }; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts index 84548ce45..6bd89411d 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts @@ -1,3 +1,20 @@ +/** + * ============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========================================================================== + */ export interface TopologyNode { "node-id": string; "netconf-node-topology:connection-status": string; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts index af6f9892d..2c31f5378 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts @@ -1,19 +1,53 @@ +/** + * ============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========================================================================== + */ export { HitEntry, Result } from '../../../../framework/src/models'; + /** - * Represents the TransmissionPower data fields of the performance history table. + * Represents Receive level data fields of the performance history table. */ -export type TransmissionPowerDataType = { - "_id": string; +export type TransmissionPowerDatabaseDataType = { + "tx-level-min": number; + "tx-level-avg": number; + "tx-level-max": number; +}; + +/** + * Represents Result type of database query + */ +export type TransmissionPowerResult = { + "performance-data": TransmissionPowerDatabaseDataType "radio-signal-id": string; "scanner-id": string; - "time-stamp": string; "suspect-interval-flag": boolean; - "tx-level-min": string; - "tx-level-avg": string; - "tx-level-max": string; + "time-stamp": string; }; -export type TransmissionPowerResult = { "performance-data": TransmissionPowerDataType }; +/** + * Internally used type to provide table and chart data + */ +export type TransmissionPowerDataType = { + radioSignalId: string; + scannerId: string; + utcTimeStamp: string; + suspectIntervalFlag: boolean; + txLevelMin: number; + txLevelAvg: number; + txLevelMax: number; +} & { _id: string }; -export type TransmissionPower = TransmissionPowerDataType & { _id: string }; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx index 3e1263e34..a3fa2dbfe 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx @@ -1,17 +1,111 @@ +/** + * ============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 { faBook } from '@fortawesome/free-solid-svg-icons'; import applicationManager from '../../../framework/src/services/applicationManager'; +import { withRouter, RouteComponentProps, Route, Switch, Redirect } from 'react-router-dom'; import performanceHistoryRootHandler from './handlers/performanceHistoryRootHandler'; -import PerformanceHistoryApplication from './views/performanceHistoryApplication'; +import { PmDataInterval } from './models/performanceDataType'; +import PerformanceHistoryApplication from './views/performanceHistoryApplication'; +import { ApplicationStore } from '../../../framework/src/store/applicationStore'; + +import connect, { Connect, IDispatcher } from '../../../framework/src/flux/connect'; +import { IApplicationStoreState } from "../../../framework/src/store/applicationStore"; +import { updateMountIdActionCreator } from "./actions/connectedNetworkElementsActions"; + +let api: { + readonly applicationStore: ApplicationStore | null; + readonly applicationStoreInitialized: Promise<ApplicationStore>; +} + +const mapProps = (state: IApplicationStoreState) => ({ +}); + +const mapDisp = (dispatcher: IDispatcher) => ({ + updateMountId: (mountId: string) => dispatcher.dispatch(updateMountIdActionCreator(mountId)) +}); + +let currentMountId: string | null = null; +let lastUrl: string = "/performanceHistory"; +const PerformanceHistoryApplicationRouteAdapter = connect(mapProps, mapDisp)((props: RouteComponentProps<{ mountId?: string}> & Connect<typeof mapProps, typeof mapDisp>) => { + let mountId: string = ""; + if (props.location.pathname !== lastUrl) { + // ensure the asynchronus update will only be called once per path + lastUrl = props.location.pathname; + let index = lastUrl.lastIndexOf("performanceHistory/"); + if(index >= 0) { + mountId = lastUrl.substr(index+19); + } else { + mountId = ""; + } + + window.setTimeout(async () => { + // check if the mountId has changed + if (currentMountId !== mountId) { + currentMountId = mountId; + await props.updateMountId(currentMountId); + } + }); + } + return ( + <PerformanceHistoryApplication /> + ); +}); + +const PerformanceHistoryRouterApp = withRouter((props: RouteComponentProps) => { + props.history.action = "POP"; + return ( + <Switch> + <Route path={`${props.match.path}/:mountId`} component={PerformanceHistoryApplicationRouteAdapter} /> + <Route path={`${props.match.path}`} component={PerformanceHistoryApplicationRouteAdapter} /> + <Redirect to={`${props.match.path}`} /> + </Switch> + ) +}); export function register() { - applicationManager.registerApplication({ + api = applicationManager.registerApplication({ name: "performanceHistory", icon: faBook, - rootComponent: PerformanceHistoryApplication, + rootComponent: PerformanceHistoryRouterApp, rootActionHandler: performanceHistoryRootHandler, menuEntry: "Performance" }); -}
\ No newline at end of file +} + +export function setPmDataInterval(pmDataInterval: PmDataInterval): boolean { + let reload: boolean = true; + if (api && api.applicationStore) { + if (api.applicationStore.state.performanceHistory.pmDataIntervalType !== pmDataInterval) { + reload = true; + } + api.applicationStore.state.performanceHistory.pmDataIntervalType = pmDataInterval; + } + return reload; +} + + +export function getPmDataInterval(): PmDataInterval { + let result = api && api.applicationStore + ? api.applicationStore.state.performanceHistory.pmDataIntervalType + : PmDataInterval.pmInterval15Min; + return result ? result : PmDataInterval.pmInterval15Min; +} diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts index d0b8346cd..0f3c89b83 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts @@ -1,3 +1,20 @@ +/** + * ============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 { requestRest } from '../../../../framework/src/services/restService'; import { Result } from '../../../../framework/src/models/elasticSearch'; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx index 5d583e855..52b5ddb58 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx @@ -1,51 +1,75 @@ +/** + * ============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 { IDataSetsObject } from '../models/chartTypes'; import { Line } from 'react-chartjs-2'; import * as moment from 'moment'; import { ITimeStamp } from 'models/chartTypes'; +const style: React.CSSProperties = { + height: "350px" +} export const lineChart = (chartPagedData: IDataSetsObject) => { return ( - <Line ref="chart" data={chartPagedData} options={{ - scales: { - xAxes: [{ - type: 'time', - time: { - displayFormats: { - 'second': 'DD MMM YYYY HH:mm:ss', - 'minute': 'DD MMM YYYY HH:mm:ss', - 'hour': 'DD MMM YYYY HH:mm:ss', - 'year': 'DD MMM YYYY HH:mm:ss', + <div style={style}> + <Line ref="chart" data={chartPagedData} options={{ + responsive: true, + maintainAspectRatio: false, + scales: { + xAxes: [{ + type: 'time', + time: { + displayFormats: { + 'second': 'DD MMM YYYY HH:mm:ss', + 'minute': 'DD MMM YYYY HH:mm:ss', + 'hour': 'DD MMM YYYY HH:mm:ss', + 'year': 'DD MMM YYYY HH:mm:ss', + }, + parser: function (date: string) { + let offsetValue = new Date().getTimezoneOffset(); + var utcDate = moment(date, 'YYYY-MM-DDTHH:mm:ss').utcOffset(offsetValue).utc(false); + return utcDate; + } }, - parser: function (date: string) { - let offsetValue = new Date().getTimezoneOffset(); - var utcDate = moment(date, 'YYYY-MM-DDTHH:mm:ss').utcOffset(offsetValue).utc(false); - return utcDate; - } - }, - display: true, - scaleLabel: { - display: true, - labelString: 'Timestamp' - } - }], - yAxes: [{ - ticks: { - beginAtZero: true - }, - scaleLabel: { display: true, - labelString: 'Value' - } - }] - } - }} /> + scaleLabel: { + display: true, + labelString: 'Timestamp' + } + }], + yAxes: [{ + ticks: { + beginAtZero: true + }, + scaleLabel: { + display: true, + labelString: 'Value' + } + }] + } + }} /> + </div> ); } export const sortDataByTimeStamp = <T extends ITimeStamp>(_rows: T[]): T[] => { return (_rows.sort((a, b) => { - const result = Date.parse(a["time-stamp"]) - Date.parse(b["time-stamp"]); + const result = Date.parse(a["utcTimeStamp"]) - Date.parse(b["utcTimeStamp"]); return isNaN(result) ? 0 : result; })); }
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/tableUtils.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/tableUtils.ts index ad50e5165..865d89c88 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/tableUtils.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/tableUtils.ts @@ -1,5 +1,36 @@ +/** + * ============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 { ColumnType, ColumnModel } from '../../../../framework/src/components/material-table'; +import { PmDataInterval } from '../models/performanceDataType'; +import { getPmDataInterval } from '../plugin'; + export const addColumnLabels = <T>(name: string, title: string, disableFilter = true, disableSorting = true): ColumnModel<T> => { return { property: name as keyof T, title: title, type: ColumnType.text, disableFilter: disableFilter, disableSorting: disableSorting }; } + +export function getFilter(): string { + switch (getPmDataInterval()) { + case PmDataInterval.pmInterval15Min: + return "sdnperformance/historicalperformance15min"; + case PmDataInterval.pmInterval24Hours: + return "sdnperformance/historicalperformance24h"; + default: + throw new Error("Unknown time intervall"); + } +}
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx index 0cadfffe7..218250d18 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx @@ -1,3 +1,20 @@ +/** + * ============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 { createStyles, Theme, withStyles, WithStyles } from '@material-ui/core/styles'; @@ -8,8 +25,12 @@ import Select from '@material-ui/core/Select'; import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; import { Panel } from '../../../../framework/src/components/material-ui'; +import { loadAllMountedNetworkElementsAsync } from '../../../connectApp/src/actions/mountedNetworkElementsActions'; +import { NavigateToApplication } from '../../../../framework/src/actions/navigationActions'; +import { Dispatch } from '../../../../framework/src/flux/store'; import { PanelId } from '../models/panelId'; +import { PmDataInterval } from '../models/performanceDataType'; import PerformanceData from '../components/performanceData'; import ReceiveLevel from '../components/receiveLevel'; import TransmissionPower from '../components/transmissionPower'; @@ -18,24 +39,18 @@ import Temperature from '../components/temperature'; import SignalToInterference from '../components/signalToInterference'; import CrossPolarDiscrimination from '../components/crossPolarDiscrimination'; import { loadAllConnectedNetworkElementsAsync } from '../actions/connectedNetworkElementsActions'; -import { loadAllMountedNetworkElementsAsync } from '../../../connectApp/src/actions/mountedNetworkElementsActions'; +import { TimeChangeAction } from '../actions/timeChangeAction'; import { loadDistinctLtpsbyNetworkElementAsync } from '../actions/ltpAction'; import { SetPanelAction } from '../actions/panelChangeActions'; -import { createPerformanceData15minPreActions, performanceData15minReloadAction } from '../handlers/performanceData15minHandler'; -import { createPerformanceData24hoursPreActions, performanceData24hoursReloadAction } from '../handlers/performanceData24hoursHandler'; -import { createReceiveLevel15minPreActions, receiveLevel15minReloadAction } from '../handlers/receiveLevel15minHandler'; -import { createReceiveLevel24hoursPreActions, receiveLevel24hoursReloadAction } from '../handlers/receiveLevel24hoursHandler'; -import { createTransmissionPower15minPreActions, transmissionPower15minReloadAction } from '../handlers/transmissionPower15minHandler'; -import { createTransmissionPower24hoursPreActions, transmissionPower24hoursReloadAction } from '../handlers/transmissionPower24hoursHandler'; -import { createAdaptiveModulation15minPreActions, adaptiveModulation15minReloadAction } from '../handlers/adaptiveModulation15minHandler'; -import { createAdaptiveModulation24hoursPreActions, adaptiveModulation24hoursReloadAction } from '../handlers/adaptiveModulation24hoursHandler'; -import { createTemperature15minPreActions, temperature15minReloadAction } from '../handlers/temperature15minHandler'; -import { createTemperature24hoursPreActions, temperature24hoursReloadAction } from '../handlers/temperature24hoursHandler'; -import { createSignalToInterference15minPreActions, signalToInterference15minReloadAction } from '../handlers/signalToInterference15minHandler'; -import { createSignalToInterference24hoursPreActions, signalToInterference24hoursReloadAction } from '../handlers/signalToInterference24hoursHandler'; -import { createCrossPolarDiscrimination15minPreActions, crossPolarDiscrimination15minReloadAction } from '../handlers/crossPolarDiscrimination15minHandler'; -import { createCrossPolarDiscrimination24hoursPreActions, crossPolarDiscrimination24hoursReloadAction } from '../handlers/crossPolarDiscrimination24hoursHandler'; +import { createPerformanceDataPreActions, performanceDataReloadAction, createPerformanceDataActions } from '../handlers/performanceDataHandler'; +import { createReceiveLevelPreActions, receiveLevelReloadAction, createReceiveLevelActions } from '../handlers/receiveLevelHandler'; +import { createTransmissionPowerPreActions, transmissionPowerReloadAction, createTransmissionPowerActions } from '../handlers/transmissionPowerHandler'; +import { createAdaptiveModulationPreActions, adaptiveModulationReloadAction, createAdaptiveModulationActions } from '../handlers/adaptiveModulationHandler'; +import { createTemperaturePreActions, temperatureReloadAction, createTemperatureActions } from '../handlers/temperatureHandler'; +import { createSignalToInterferencePreActions, signalToInterferenceReloadAction, createSignalToInterferenceActions } from '../handlers/signalToInterferenceHandler'; +import { createCrossPolarDiscriminationPreActions, crossPolarDiscriminationReloadAction, createCrossPolarDiscriminationActions } from '../handlers/crossPolarDiscriminationHandler'; +import { MaterialTable, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; const PerformanceHistoryComponentStyles = (theme: Theme) => createStyles({ root: { @@ -61,61 +76,65 @@ const PerformanceHistoryComponentStyles = (theme: Theme) => createStyles({ }); const mapProps = (state: IApplicationStoreState) => ({ + ...state.performanceHistory, activePanel: state.performanceHistory.currentOpenPanel, availableLtps: state.performanceHistory.ltps.distinctLtps, networkElements: state.performanceHistory.networkElements.connectedNetworkElementIds }); const mapDispatcher = (dispatcher: IDispatcher) => ({ - reloadPerformanceData15min: () => dispatcher.dispatch(performanceData15minReloadAction), - reloadPerformanceData24hours: () => dispatcher.dispatch(performanceData24hoursReloadAction), - reloadReceiveLevel15min: () => dispatcher.dispatch(receiveLevel15minReloadAction), - reloadReceiveLevel24hours: () => dispatcher.dispatch(receiveLevel24hoursReloadAction), - reloadTransmissionPower15min: () => dispatcher.dispatch(transmissionPower15minReloadAction), - reloadTransmissionPower24hours: () => dispatcher.dispatch(transmissionPower24hoursReloadAction), - reloadAdaptiveModulation15min: () => dispatcher.dispatch(adaptiveModulation15minReloadAction), - reloadAdaptiveModulation24hours: () => dispatcher.dispatch(adaptiveModulation24hoursReloadAction), - reloadTemperature15min: () => dispatcher.dispatch(temperature15minReloadAction), - reloadTemperature24hours: () => dispatcher.dispatch(temperature24hoursReloadAction), - reloadSignalToInterference15min: () => dispatcher.dispatch(signalToInterference15minReloadAction), - reloadSignalToInterference24hours: () => dispatcher.dispatch(signalToInterference24hoursReloadAction), - reloadCrossPolarDiscrimination15min: () => dispatcher.dispatch(crossPolarDiscrimination15minReloadAction), - reloadCrossPolarDiscrimination24hours: () => dispatcher.dispatch(crossPolarDiscrimination24hoursReloadAction), - performanceData15minPreActions: createPerformanceData15minPreActions(dispatcher.dispatch), - performanceData24hoursPreActions: createPerformanceData24hoursPreActions(dispatcher.dispatch), - receiveLevel15minPreActions: createReceiveLevel15minPreActions(dispatcher.dispatch), - receiveLevel24hoursPreActions: createReceiveLevel24hoursPreActions(dispatcher.dispatch), - transmissionPower15minPreActions: createTransmissionPower15minPreActions(dispatcher.dispatch), - transmissionPower24hoursPreActions: createTransmissionPower24hoursPreActions(dispatcher.dispatch), - adaptiveModulation15minPreActions: createAdaptiveModulation15minPreActions(dispatcher.dispatch), - adaptiveModulation24hoursPreActions: createAdaptiveModulation24hoursPreActions(dispatcher.dispatch), - temperature15minPreActions: createTemperature15minPreActions(dispatcher.dispatch), - temperature24hoursPreActions: createTemperature24hoursPreActions(dispatcher.dispatch), - signalToInterference15minPreActions: createSignalToInterference15minPreActions(dispatcher.dispatch), - signalToInterference24hoursPreActions: createSignalToInterference24hoursPreActions(dispatcher.dispatch), - crossPolarDiscrimination15minPreActions: createCrossPolarDiscrimination15minPreActions(dispatcher.dispatch), - crossPolarDiscrimination24hoursPreActions: createCrossPolarDiscrimination24hoursPreActions(dispatcher.dispatch), - getConnectedNetworkElementsIds: async() => { + enableFilterPerformanceData: createPerformanceDataActions(dispatcher.dispatch), + enableFilterReceiveLevel: createReceiveLevelActions(dispatcher.dispatch), + enableFilterTransmissionPower: createTransmissionPowerActions(dispatcher.dispatch), + enableFilterAdaptiveModulation: createAdaptiveModulationActions(dispatcher.dispatch), + enableFilterTemperature: createTemperatureActions(dispatcher.dispatch), + enableFilterSinr: createSignalToInterferenceActions(dispatcher.dispatch), + enableFilterCpd: createCrossPolarDiscriminationActions(dispatcher.dispatch), + reloadPerformanceData: () => dispatcher.dispatch(performanceDataReloadAction), + reloadReceiveLevel: () => dispatcher.dispatch(receiveLevelReloadAction), + reloadTransmissionPower: () => dispatcher.dispatch(transmissionPowerReloadAction), + reloadAdaptiveModulation: () => dispatcher.dispatch(adaptiveModulationReloadAction), + reloadTemperature: () => dispatcher.dispatch(temperatureReloadAction), + reloadSignalToInterference: () => dispatcher.dispatch(signalToInterferenceReloadAction), + reloadCrossPolarDiscrimination: () => dispatcher.dispatch(crossPolarDiscriminationReloadAction), + performanceDataPreActions: createPerformanceDataPreActions(dispatcher.dispatch), + receiveLevelPreActions: createReceiveLevelPreActions(dispatcher.dispatch), + transmissionPowerPreActions: createTransmissionPowerPreActions(dispatcher.dispatch), + adaptiveModulationPreActions: createAdaptiveModulationPreActions(dispatcher.dispatch), + temperaturePreActions: createTemperaturePreActions(dispatcher.dispatch), + signalToInterferencePreActions: createSignalToInterferencePreActions(dispatcher.dispatch), + crossPolarDiscriminationPreActions: createCrossPolarDiscriminationPreActions(dispatcher.dispatch), + getConnectedNetworkElementsIds: async () => { await dispatcher.dispatch(loadAllMountedNetworkElementsAsync) dispatcher.dispatch(loadAllConnectedNetworkElementsAsync); }, getDistinctLtpsIds: (selectedNetworkElement: string, selectedTimePeriod: string, selectedLtp: string, selectFirstLtp?: Function, resetLTP?: Function) => dispatcher.dispatch(loadDistinctLtpsbyNetworkElementAsync(selectedNetworkElement, selectedTimePeriod, selectedLtp, selectFirstLtp, resetLTP)), - setCurrentPanel: (panelId: PanelId) => dispatcher.dispatch(new SetPanelAction(panelId)) + setCurrentPanel: (panelId: PanelId) => dispatcher.dispatch(new SetPanelAction(panelId)), + timeIntervalChange: (time: PmDataInterval) => dispatcher.dispatch(new TimeChangeAction(time)), + changeNode: (nodeId: string) => dispatcher.dispatch((dispatch: Dispatch) => { + dispatch(new NavigateToApplication("performanceHistory", nodeId)); + }) }); +export type NetworkElementType = { + mountId: string, +} +const NetworkElementTable = MaterialTable as MaterialTableCtorType<NetworkElementType>; + type PerformanceHistoryComponentProps = Connect<typeof mapProps, typeof mapDispatcher> & WithStyles<typeof PerformanceHistoryComponentStyles>; type PerformanceHistoryComponentState = { selectedNetworkElement: string, selectedTimePeriod: string, selectedLtp: string, + showNetworkElementsTable: boolean, showLtps: boolean, showPanels: boolean }; /** - * Represents the component for Performance history application. - */ +* Represents the component for Performance history application. +*/ class PerformanceHistoryComponent extends React.Component<PerformanceHistoryComponentProps, PerformanceHistoryComponentState>{ /** * Initialises this instance @@ -126,144 +145,125 @@ class PerformanceHistoryComponent extends React.Component<PerformanceHistoryComp selectedNetworkElement: "-1", selectedTimePeriod: "15min", selectedLtp: "-1", + showNetworkElementsTable: true, showLtps: false, showPanels: false }; } + onTogglePanel = (panelId: PanelId) => { + const nextActivePanel = panelId === this.props.activePanel ? null : panelId; + this.props.setCurrentPanel(nextActivePanel); + switch (nextActivePanel) { + case "PerformanceData": + this.props.reloadPerformanceData(); + break; + case "ReceiveLevel": + this.props.reloadReceiveLevel(); + break; + case "TransmissionPower": + this.props.reloadTransmissionPower(); + break; + case "AdaptiveModulation": + this.props.reloadAdaptiveModulation(); + break; + case "Temperature": + this.props.reloadTemperature(); + break; + case "SINR": + this.props.reloadSignalToInterference(); + break; + case "CPD": + this.props.reloadCrossPolarDiscrimination(); + break; + default: + // do nothing if all panels are closed + break; + } + } + render(): JSX.Element { const { classes } = this.props; - const { activePanel } = this.props; - - const onTogglePanel = (panelId: PanelId) => { - const nextActivePanel = panelId === this.props.activePanel ? null : panelId; - this.props.setCurrentPanel(nextActivePanel); - switch (nextActivePanel) { - case "PerformanceData": - if (this.state.selectedTimePeriod === "15min") { - this.props.reloadPerformanceData15min(); - } else { - this.props.reloadPerformanceData24hours(); - } - break; - case "ReceiveLevel": - if (this.state.selectedTimePeriod === "15min") { - this.props.reloadReceiveLevel15min(); - } else { - this.props.reloadReceiveLevel24hours(); - } - break; - case "TransmissionPower": - if (this.state.selectedTimePeriod === "15min") { - this.props.reloadTransmissionPower15min(); - } else { - this.props.reloadTransmissionPower24hours(); - } - break; - case "AdaptiveModulation": - if (this.state.selectedTimePeriod === "15min") { - this.props.reloadAdaptiveModulation15min(); - } else { - this.props.reloadAdaptiveModulation24hours(); - } - break; - case "Temperature": - if (this.state.selectedTimePeriod === "15min") { - this.props.reloadTemperature15min(); - } else { - this.props.reloadTemperature24hours(); - } - break; - case "SINR": - if (this.state.selectedTimePeriod === "15min") { - this.props.reloadSignalToInterference15min(); - } else { - this.props.reloadSignalToInterference24hours(); - } - break; - case "CPD": - if (this.state.selectedTimePeriod === "15min") { - this.props.reloadCrossPolarDiscrimination15min(); - } else { - this.props.reloadCrossPolarDiscrimination24hours(); - } - break; - default: - // do nothing if all panels are closed - break; - } + const { activePanel, mountId } = this.props; + if (mountId === "") { + return ( + <> + <h2>Please select the network element !</h2> + <NetworkElementTable idProperty={"mountId"} rows={ this.props.networkElements } asynchronus + onHandleClick={(event, rowData) => { this.handleNetworkElementSelect(rowData.mountId) }} columns={ + [{ property: "mountId" }] + } /> + </> + ) + } + else { + this.handleURLChange(mountId); + return ( + <> + <h2>Selected Network Element: { this.state.selectedNetworkElement } </h2> + { this.state.showLtps && ( + <div> + <FormControl className={ classes.display }> + <span> + Select LTP + </span> + <Select className={ classes.selectDropdown } value={ this.state.selectedLtp } onChange={ this.handleLtpChange } > + <MenuItem value={ "-1" }><em>--Select--</em></MenuItem> + { this.props.availableLtps.map(ltp => + (<MenuItem value={ ltp.key } key={ ltp.key }>{ ltp.key }</MenuItem>)) } + </Select> + <span> Time-Period </span> + <Select className={ classes.selectDropdown } value={ this.state.selectedTimePeriod } onChange={ this.handleTimePeriodChange } > + <MenuItem value={ "15min" }>15min</MenuItem> + <MenuItem value={ "24hours" }>24hours</MenuItem> + </Select> + </FormControl> + { this.state.showPanels && ( + <div> + <Panel activePanel={ activePanel } panelId={ "PerformanceData" } onToggle={ this.onTogglePanel } title={ "Performance Data" }> + <PerformanceData selectedTimePeriod={ this.state.selectedTimePeriod } /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "ReceiveLevel" } onToggle={ this.onTogglePanel } title={ "Receive Level" }> + <ReceiveLevel selectedTimePeriod={ this.state.selectedTimePeriod } /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "TransmissionPower" } onToggle={ this.onTogglePanel } title={ "Transmission Power" }> + <TransmissionPower selectedTimePeriod={ this.state.selectedTimePeriod } /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "AdaptiveModulation" } onToggle={ this.onTogglePanel } title={ "Adaptive Modulation" }> + <AdaptiveModulation selectedTimePeriod={ this.state.selectedTimePeriod } /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "Temperature" } onToggle={ this.onTogglePanel } title={ "Temperature" }> + <Temperature selectedTimePeriod={ this.state.selectedTimePeriod } /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "SINR" } onToggle={ this.onTogglePanel } title={ "Signal-to-interference-plus-noise ratio (SINR)" }> + <SignalToInterference selectedTimePeriod={ this.state.selectedTimePeriod } /> + </Panel> + <Panel activePanel={ activePanel } panelId={ "CPD" } onToggle={ this.onTogglePanel } title={ "Cross Polar Discrimination" }> + <CrossPolarDiscrimination selectedTimePeriod={ this.state.selectedTimePeriod } /> + </Panel> + </div> + )} + </div> + )} + </> + ); } - - return ( - <> - <div> - <form className={ classes.root } autoComplete="off"> - <FormControl className={ classes.margin }> - <span> Select Network element </span> - <Select className={ classes.selectDropdown } value={ this.state.selectedNetworkElement } onChange={ this.handleNetworkElementChange } - > - <MenuItem value={ "-1" }><em>--Select--</em></MenuItem> - { this.props.networkElements.map(ne => - (<MenuItem value={ ne.mountId } key={ ne.mountId }>{ ne.mountId }</MenuItem>))} - </Select> - </FormControl> - </form> - </div> - { this.state.showLtps && ( - <div> - <FormControl className={ classes.display }> - <span> - Select LTP - </span> - <Select className={ classes.selectDropdown } value={ this.state.selectedLtp } onChange={ this.handleLtpChange } > - <MenuItem value={ "-1" }><em>--Select--</em></MenuItem> - { this.props.availableLtps.map(ltp => - (<MenuItem value={ltp.key} key={ltp.key}>{ltp.key}</MenuItem>)) } - </Select> - <span> Time-Period </span> - <Select className={ classes.selectDropdown } value={ this.state.selectedTimePeriod } onChange={ this.handleTimePeriodChange } > - <MenuItem value={ "15min" }>15min</MenuItem> - <MenuItem value={ "24hours" }>24hours</MenuItem> - </Select> - </FormControl> - { this.state.showPanels && ( - <div> - <Panel activePanel={ activePanel } panelId={ "PerformanceData" } onToggle={ onTogglePanel } title={ "Performance Data" }> - <PerformanceData selectedTimePeriod={ this.state.selectedTimePeriod} /> - </Panel> - <Panel activePanel={ activePanel } panelId={ "ReceiveLevel" } onToggle={ onTogglePanel } title={ "Receive Level" }> - <ReceiveLevel selectedTimePeriod={ this.state.selectedTimePeriod} /> - </Panel> - <Panel activePanel={ activePanel } panelId={ "TransmissionPower" } onToggle={ onTogglePanel } title={ "Transmission Power" }> - <TransmissionPower selectedTimePeriod={ this.state.selectedTimePeriod} /> - </Panel> - <Panel activePanel={ activePanel } panelId={ "AdaptiveModulation" } onToggle={ onTogglePanel } title={ "Adaptive Modulation" }> - <AdaptiveModulation selectedTimePeriod={ this.state.selectedTimePeriod} /> - </Panel> - <Panel activePanel={ activePanel } panelId={ "Temperature" } onToggle={ onTogglePanel } title={ "Temperature" }> - <Temperature selectedTimePeriod={ this.state.selectedTimePeriod} /> - </Panel> - <Panel activePanel={ activePanel } panelId={ "SINR" } onToggle={ onTogglePanel } title={ "Signal-to-interference-plus-noise ratio (SINR)" }> - <SignalToInterference selectedTimePeriod={ this.state.selectedTimePeriod} /> - </Panel> - <Panel activePanel={ activePanel } panelId={ "CPD" } onToggle={ onTogglePanel } title={ "Cross Polar Discrimination" }> - <CrossPolarDiscrimination selectedTimePeriod={ this.state.selectedTimePeriod } /> - </Panel> - </div> - )} - </div> - )} - </> - ); }; public componentDidMount() { this.props.getConnectedNetworkElementsIds(); + this.props.enableFilterPerformanceData.onToggleFilter(); + this.props.enableFilterReceiveLevel.onToggleFilter(); + this.props.enableFilterTransmissionPower.onToggleFilter(); + this.props.enableFilterTemperature.onToggleFilter(); + this.props.enableFilterAdaptiveModulation.onToggleFilter(); + this.props.enableFilterSinr.onToggleFilter(); + this.props.enableFilterCpd.onToggleFilter(); } /** - * Function which selects the first ltp returned from the database on selection of network element. - */ + * Function which selects the first ltp returned from the database on selection of network element. + */ private selectFirstLtp = (firstLtp: string) => { this.setState({ showPanels: true, @@ -273,56 +273,55 @@ class PerformanceHistoryComponent extends React.Component<PerformanceHistoryComp } /** - * A function which loads the tables based on prefilters defined by network element and ltp on selected time period. - */ + * A function which loads the tables based on prefilters defined by network element and ltp on selected time period. + */ private preFilterChangeAndReload = (networkElement: string, timePeriod: string, ltp: string) => { const preFilter = { "node-name": networkElement, "uuid-interface": ltp }; - if (timePeriod === "15min") { - this.props.performanceData15minPreActions.onPreFilterChanged(preFilter); - this.props.receiveLevel15minPreActions.onPreFilterChanged(preFilter); - this.props.transmissionPower15minPreActions.onPreFilterChanged(preFilter); - this.props.adaptiveModulation15minPreActions.onPreFilterChanged(preFilter); - this.props.temperature15minPreActions.onPreFilterChanged(preFilter); - this.props.signalToInterference15minPreActions.onPreFilterChanged(preFilter); - this.props.crossPolarDiscrimination15minPreActions.onPreFilterChanged(preFilter); - } else if (timePeriod === "24hours") { - this.props.performanceData24hoursPreActions.onPreFilterChanged(preFilter); - this.props.receiveLevel24hoursPreActions.onPreFilterChanged(preFilter); - this.props.transmissionPower24hoursPreActions.onPreFilterChanged(preFilter); - this.props.adaptiveModulation24hoursPreActions.onPreFilterChanged(preFilter); - this.props.temperature24hoursPreActions.onPreFilterChanged(preFilter); - this.props.signalToInterference24hoursPreActions.onPreFilterChanged(preFilter); - this.props.crossPolarDiscrimination24hoursPreActions.onPreFilterChanged(preFilter); - } + this.props.performanceDataPreActions.onPreFilterChanged(preFilter); + this.props.receiveLevelPreActions.onPreFilterChanged(preFilter); + this.props.transmissionPowerPreActions.onPreFilterChanged(preFilter); + this.props.adaptiveModulationPreActions.onPreFilterChanged(preFilter); + this.props.temperaturePreActions.onPreFilterChanged(preFilter); + this.props.signalToInterferencePreActions.onPreFilterChanged(preFilter); + this.props.crossPolarDiscriminationPreActions.onPreFilterChanged(preFilter); + } - /** - * Function which handles network element changes. - */ - private handleNetworkElementChange = (event: React.ChangeEvent<HTMLSelectElement>) => { - var showLtps: boolean = true; - if (event.target.value === "-1") { - showLtps = false; - } else if (event.target.value !== this.state.selectedNetworkElement) { - this.setState({ - showPanels: false - }); - } + /** + * Function which handles network element changes. + */ + private handleNetworkElementSelect = (selectedNetworkElement: string) => { + + this.setState({ + showLtps: true, + selectedNetworkElement: selectedNetworkElement, + showNetworkElementsTable: false, + showPanels: false, + selectedLtp: "-1" + }); + this.props.changeNode(selectedNetworkElement); + this.props.getDistinctLtpsIds(selectedNetworkElement, this.state.selectedTimePeriod, "-1", this.selectFirstLtp); +} + +private handleURLChange = (selectedNetworkElement: string) => { + if(selectedNetworkElement !== this.state.selectedNetworkElement) { this.setState({ - showLtps: showLtps, - selectedNetworkElement: event.target.value, + showLtps: true, + selectedNetworkElement: selectedNetworkElement, + showPanels: false, selectedLtp: "-1" }); - this.props.getDistinctLtpsIds(event.target.value, this.state.selectedTimePeriod, "-1", this.selectFirstLtp); + this.props.getDistinctLtpsIds(selectedNetworkElement, this.state.selectedTimePeriod, "-1", this.selectFirstLtp); } +} - /** - * Function which resets the ltps to "--select--" in the state if the passed parameter @ltpNotSelected is true. - * @param ltpNotSelected: true, if existing selected is not available in the given time period, else false - */ +/** + * Function which resets the ltps to "--select--" in the state if the passed parameter @ltpNotSelected is true. + * @param ltpNotSelected: true, if existing selected is not available in the given time period, else false + */ private resetLtpDropdown = (ltpNotSelected: boolean) => { if (ltpNotSelected) { this.setState({ @@ -332,23 +331,31 @@ class PerformanceHistoryComponent extends React.Component<PerformanceHistoryComp } /** - * Function which handles the time period changes. - */ + * Function which handles the time period changes. + */ private handleTimePeriodChange = (event: React.ChangeEvent<HTMLSelectElement>) => { + const selectedTimeInterval = event.target.value === "15min" + ? PmDataInterval.pmInterval15Min + : PmDataInterval.pmInterval24Hours + this.setState({ selectedTimePeriod: event.target.value, }); - if (event.target.value === "15min") { - this.props.getDistinctLtpsIds(this.state.selectedNetworkElement, event.target.value, this.state.selectedLtp, undefined, this.resetLtpDropdown); - } else if (event.target.value === "24hours") { - this.props.getDistinctLtpsIds(this.state.selectedNetworkElement, event.target.value, this.state.selectedLtp, undefined, this.resetLtpDropdown); - } + this.props.timeIntervalChange(selectedTimeInterval); + this.props.reloadPerformanceData(); + this.props.reloadReceiveLevel(); + this.props.reloadTransmissionPower(); + this.props.reloadAdaptiveModulation(); + this.props.reloadTemperature(); + this.props.reloadSignalToInterference(); + this.props.reloadCrossPolarDiscrimination(); + this.props.getDistinctLtpsIds(this.state.selectedNetworkElement, event.target.value, this.state.selectedLtp, undefined, this.resetLtpDropdown); this.preFilterChangeAndReload(this.state.selectedNetworkElement, event.target.value, this.state.selectedLtp); } /** - * Function which handles the ltp changes. - */ + * Function which handles the ltp changes. + */ private handleLtpChange = (event: React.ChangeEvent<HTMLSelectElement>) => { var showPanels: boolean = true; if (event.target.value === "-1") { |