diff options
Diffstat (limited to 'sdnr/wt/odlux/apps/performanceHistoryApp')
39 files changed, 482 insertions, 643 deletions
diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/package.json b/sdnr/wt/odlux/apps/performanceHistoryApp/package.json index 290046ef5..1e6adf7c3 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/package.json +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/package.json @@ -21,23 +21,23 @@ "author": "Sai Neetha Phulmali", "license": "Apache-2.0", "dependencies": { - "@odlux/framework" : "*", + "@odlux/framework": "*", "@odlux/connect-app": "*", - "react-chartjs-2":"2.7.6", - "chart.js":"2.8.0" + "react-chartjs-2": "2.7.6", + "chart.js": "2.8.0" }, "peerDependencies": { - "@types/react": "16.4.14", - "@types/react-dom": "16.0.8", - "@types/react-router-dom": "4.3.1", - "@material-ui/core": "3.8.3", - "@material-ui/icons": "3.0.2", - "@types/classnames": "2.2.6", - "@types/flux": "3.1.8", - "@types/jquery": "3.3.10", - "jquery": "3.3.1", - "react": "16.5.2", - "react-dom": "16.5.2", - "react-router-dom": "4.3.1" + "@types/react": "16.9.11", + "@types/react-dom": "16.9.4", + "@types/react-router-dom": "4.3.1", + "@material-ui/core": "4.6.1", + "@material-ui/icons": "4.5.1", + "@types/classnames": "2.2.6", + "@types/flux": "3.1.8", + "@types/jquery": "3.3.10", + "jquery": "3.3.1", + "react": "16.11.0", + "react-dom": "16.11.0", + "react-router-dom": "4.3.1" } }
\ No newline at end of file diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/pom.xml b/sdnr/wt/odlux/apps/performanceHistoryApp/pom.xml index 647b9efdb..4fc302f05 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/pom.xml +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/pom.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.onap.ccsdk.parent</groupId> @@ -7,18 +8,20 @@ <version>1.5.1-SNAPSHOT</version> <relativePath/> </parent> - <modelVersion>4.0.0</modelVersion> + <groupId>org.onap.ccsdk.features.sdnr.wt</groupId> <artifactId>sdnr-wt-odlux-app-performanceHistoryApp</artifactId> <version>0.7.0-SNAPSHOT</version> <packaging>bundle</packaging> - <name>sdnr-wt-odlux-app-performanceHistoryApp</name> + + <name>ccsdk-features :: ${project.artifactId}</name> <licenses> <license> <name>Apache License, Version 2.0</name> <url>http://www.apache.org/licenses/LICENSE-2.0</url> </license> </licenses> + <dependencies> <dependency> <groupId>${project.groupId}</groupId> @@ -37,8 +40,21 @@ <scope>test</scope> </dependency> </dependencies> + <build> <sourceDirectory>src2/main/java</sourceDirectory> + <resources> + <resource> + <directory>dist</directory> + <targetPath>odlux</targetPath> + </resource> + <resource> + <directory>src2/main/resources</directory> + </resource> + <resource> + <directory>src2/test/resources</directory> + </resource> + </resources> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> @@ -61,10 +77,10 @@ <followSymlinks>false</followSymlinks> </fileset> <!-- eclipse bug build bin folder in basedir --> - <fileset> - <directory>bin</directory> - <followSymlinks>false</followSymlinks> - </fileset> + <fileset> + <directory>bin</directory> + <followSymlinks>false</followSymlinks> + </fileset> </filesets> </configuration> </plugin> @@ -87,7 +103,7 @@ </executions> </plugin> <plugin> - <groupId>de.jacksitlab</groupId> + <groupId>de.jacks-it-lab</groupId> <artifactId>frontend-maven-plugin</artifactId> <version>1.7.1</version> <executions> @@ -99,8 +115,8 @@ <!-- optional: default phase is "generate-resources" --> <phase>initialize</phase> <configuration> - <nodeVersion>v8.10.0</nodeVersion> - <yarnVersion>v1.12.3</yarnVersion> + <nodeVersion>v10.16.3</nodeVersion> + <yarnVersion>v1.19.0</yarnVersion> </configuration> </execution> <execution> @@ -130,27 +146,5 @@ </configuration> </plugin> </plugins> - <resources> - <resource> - <directory>dist</directory> - <targetPath>odlux</targetPath> - </resource> - <resource> - <directory>src2/main/resources</directory> - </resource> - <resource> - <directory>src2/test/resources</directory> - </resource> - </resources> </build> - <pluginRepositories> - <pluginRepository> - <id>highstreet repo</id> - <url>https://cloud-highstreet-technologies.com/mvn/</url> - <snapshots> - <enabled>true</enabled> - <updatePolicy>always</updatePolicy> - </snapshots> - </pluginRepository> - </pluginRepositories> </project> diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/connectedNetworkElementsActions.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/deviceListActions.ts index 97d531608..9637fec81 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/connectedNetworkElementsActions.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/actions/deviceListActions.ts @@ -19,7 +19,8 @@ import { Action } from '../../../../framework/src/flux/action'; import { Dispatch } from '../../../../framework/src/flux/store'; import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; -import { ConnectedNetworkElementIds } from '../models/connectedNetworkElements'; +import { DeviceListType } from '../models/deviceListType'; +import { PerformanceHistoryService } from '../services/performanceHistoryService'; /** * Represents the base action. @@ -27,52 +28,44 @@ import { ConnectedNetworkElementIds } from '../models/connectedNetworkElements'; export class BaseAction extends Action { } /** - * Represents an action causing the store to load all connected network element Ids. + * Represents an action causing the store to load all devices. */ -export class LoadAllConnectedNetworkElementsAction extends BaseAction { } +export class LoadAllDeviceListAction extends BaseAction { } /** - * Represents an action causing the store to update all connected network element Ids. + * Represents an action causing the store to update all devices. */ -export class AllConnectedNetworkElementsLoadedAction extends BaseAction { +export class AllDeviceListLoadedAction extends BaseAction { /** * Initialize this instance. * - * @param connectedNetworkElements The connected network element Ids which are loaded from the state of connectApp. + * @param deviceList All the distinct devices from the performance history database. */ - constructor(public connectedNetworkElementIds: ConnectedNetworkElementIds[] | null, public error?: string) { + constructor(public deviceList: DeviceListType[] | null, public error?: string) { super(); } } /** - * Represents an asynchronous thunk action to load all connected network element Ids. + * Represents an asynchronous thunk action to load all devices. */ -export const loadAllConnectedNetworkElementsAsync = (dispatch: Dispatch, getState: () => IApplicationStoreState) => { - window.setTimeout(() => { - dispatch(new LoadAllConnectedNetworkElementsAction()); - const connectedNetworkElementsIds = getState().connect.mountedNetworkElements; - let mountIdList: ConnectedNetworkElementIds[] = []; - connectedNetworkElementsIds.elements.forEach(element => { - const connectedNetworkElement = { - mountId: element.mountId - } - mountIdList.push(connectedNetworkElement); - }); - mountIdList.sort((a, b) => { - if (a.mountId < b.mountId) return -1; - if (a.mountId > b.mountId) return 1; - return 0; - }); - dispatch(new AllConnectedNetworkElementsLoadedAction(mountIdList)); - }, 500); +export const loadAllDeviceListAsync = async (dispatch: Dispatch) => { + dispatch(new LoadAllDeviceListAction()); + const deviceListFromPerfHistory: DeviceListType[] = await PerformanceHistoryService.getDeviceListfromPerf15minHistory().then(ne => (ne)) || []; + const deviceListFromPerf24History: DeviceListType[] = await PerformanceHistoryService.getDeviceListfromPerf24hHistory().then(ne => (ne)) || []; + deviceListFromPerf24History.forEach(deviceList24h => { + if (deviceListFromPerfHistory.findIndex(deviceList15min => deviceList15min.nodeId === deviceList24h.nodeId) < 0) { + deviceListFromPerfHistory.push(deviceList24h); + }; + }); + return deviceListFromPerfHistory && dispatch(new AllDeviceListLoadedAction(deviceListFromPerfHistory)); }; /** * Represents an action causing the store to update mountId. */ export class UpdateMountId extends BaseAction { - constructor (public nodeId?: string) { + constructor(public nodeId?: string) { super(); } } @@ -80,6 +73,6 @@ export class UpdateMountId extends BaseAction { /** * Represents an asynchronous thunk action to load updated mountId. */ -export const updateMountIdActionCreator = (nodeId: string ) => async (dispatch: Dispatch) => { +export const updateMountIdActionCreator = (nodeId: string) => async (dispatch: Dispatch) => { return dispatch(new UpdateMountId(nodeId)); } diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx index 2564d574a..09d3accd4 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/adaptiveModulation.tsx @@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, ColumnModel, MaterialTableCtorType } from '. import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; -import { AdaptiveModulationDataType } from '../models/adaptiveModulationDataType'; +import { AdaptiveModulationDataType, AdaptiveModulationDatabaseDataType } from '../models/adaptiveModulationDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; import { createAdaptiveModulationProperties, createAdaptiveModulationActions } from '../handlers/adaptiveModulationHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; @@ -55,9 +55,9 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp const adaptiveModulationColumns: ColumnModel<AdaptiveModulationDataType>[] = [ { 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: "timeStamp", title: "End Time", type: ColumnType.text }, { - property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => { const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } @@ -416,10 +416,46 @@ class AdaptiveModulationComponent extends React.Component<AdaptiveModulationComp ]; _rows.forEach(row => { + row.time2StatesS = row.performanceData.time2StatesS + row.time2States = row.performanceData.time2States; + row.time2StatesL = row.performanceData.time2StatesL; + row.time4StatesS = row.performanceData.time4StatesS + row.time4States = row.performanceData.time4States; + row.time4StatesL = row.performanceData.time4StatesL; + row.time16StatesS = row.performanceData.time16StatesS; + row.time16States = row.performanceData.time16States; + row.time16StatesL = row.performanceData.time16StatesL; + row.time32StatesS = row.performanceData.time32StatesS; + row.time32States = row.performanceData.time32States; + row.time32StatesL = row.performanceData.time32StatesL; + row.time64StatesS = row.performanceData.time64StatesS; + row.time64States = row.performanceData.time64States; + row.time64StatesL = row.performanceData.time64StatesL; + row.time128StatesS = row.performanceData.time128StatesS; + row.time128States = row.performanceData.time128States; + row.time128StatesL = row.performanceData.time128StatesL; + row.time256StatesS = row.performanceData.time256StatesS; + row.time256States = row.performanceData.time256States; + row.time256StatesL = row.performanceData.time256StatesL; + row.time512StatesS = row.performanceData.time512StatesS; + row.time512States = row.performanceData.time512States; + row.time512StatesL = row.performanceData.time512StatesL; + row.time1024StatesS = row.performanceData.time1024StatesS; + row.time1024States = row.performanceData.time1024States; + row.time1024StatesL = row.performanceData.time1024StatesL; + row.time2048StatesS = row.performanceData.time2048StatesS; + row.time2048States = row.performanceData.time2048States; + row.time2048StatesL = row.performanceData.time2048StatesL; + row.time4096StatesS = row.performanceData.time4096StatesS; + row.time4096States = row.performanceData.time4096States; + row.time4096StatesL = row.performanceData.time4096StatesL; + row.time8192StatesS = row.performanceData.time8192StatesS; + row.time8192States = row.performanceData.time8192States; + row.time8192StatesL = row.performanceData.time8192StatesL; datasets.forEach(ds => { ds.data.push({ - x: row["utcTimeStamp" as keyof AdaptiveModulationDataType] as string, - y: row[ds.name as keyof AdaptiveModulationDataType] as string + x: row["timeStamp" as keyof AdaptiveModulationDataType] as string, + y: row.performanceData[ds.name as keyof AdaptiveModulationDatabaseDataType] 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 8718171f7..267e00bbe 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/crossPolarDiscrimination.tsx @@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, MaterialTableCtorType, ColumnModel } from '. import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; -import { CrossPolarDiscriminationDataType } from '../models/crossPolarDiscriminationDataType'; +import { CrossPolarDiscriminationDataType, CrossPolarDiscriminationDatabaseDataType } from '../models/crossPolarDiscriminationDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; import { createCrossPolarDiscriminationProperties, createCrossPolarDiscriminationActions } from '../handlers/crossPolarDiscriminationHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; @@ -56,9 +56,9 @@ class CrossPolarDiscriminationComponent extends React.Component<CrossPolarDiscri const cpdColumns: ColumnModel<CrossPolarDiscriminationDataType>[] = [ { 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: "timeStamp", title: "End Time", type: ColumnType.text }, { - property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => { const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } @@ -114,10 +114,13 @@ class CrossPolarDiscriminationComponent extends React.Component<CrossPolarDiscri }]; _rows.forEach(row => { + row.xpdMin = row.performanceData.xpdMin; + row.xpdAvg = row.performanceData.xpdAvg; + row.xpdMax = row.performanceData.xpdMax; datasets.forEach(ds => { ds.data.push({ - x: row["utcTimeStamp" as keyof CrossPolarDiscriminationDataType] as string, - y: row[ds.name as keyof CrossPolarDiscriminationDataType] as string + x: row["timeStamp" as keyof CrossPolarDiscriminationDataType] as string, + y: row.performanceData[ds.name as keyof CrossPolarDiscriminationDatabaseDataType] 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 fc44879dc..c58c49c9e 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/performanceData.tsx @@ -22,7 +22,7 @@ import { withRouter, RouteComponentProps } from 'react-router-dom'; import { MaterialTable, ColumnType, ColumnModel, MaterialTableCtorType } from '../../../../framework/src/components/material-table'; import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; -import { PerformanceDataType } from '../models/performanceDataType'; +import { PerformanceDataType, PerformanceDatabaseDataType } from '../models/performanceDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; import { createPerformanceDataProperties, createPerformanceDataActions } from '../handlers/performanceDataHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; @@ -54,9 +54,9 @@ class PerformanceDataComponent extends React.Component<PerformanceDataComponentP const performanceColumns: ColumnModel<PerformanceDataType>[] = [ { 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: "timeStamp", title: "End Time", type: ColumnType.text }, { - property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => { const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } @@ -112,13 +112,17 @@ class PerformanceDataComponent extends React.Component<PerformanceDataComponentP }]; _rows.forEach(row => { + row.es = row.performanceData.es; + row.ses = row.performanceData.ses; + row.unavailability = row.performanceData.unavailability; datasets.forEach(ds => { ds.data.push({ - x: row["utcTimeStamp" as keyof PerformanceDataType] as string, - y: row[ds.name as keyof PerformanceDataType] as string + x: row["timeStamp" as keyof PerformanceDataType] as string, + y: row.performanceData[ds.name as keyof PerformanceDatabaseDataType] as string }); }); }); + return { datasets: datasets }; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx index 9992f5bd8..55bc39860 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/receiveLevel.tsx @@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, ColumnModel, MaterialTableCtorType } from '. import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; -import { ReceiveLevelDataType } from '../models/receiveLevelDataType'; +import { ReceiveLevelDataType,ReceiveLevelDatabaseDataType } from '../models/receiveLevelDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; import { createReceiveLevelProperties, createReceiveLevelActions } from '../handlers/receiveLevelHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; @@ -55,9 +55,9 @@ class ReceiveLevelComponent extends React.Component<ReceiveLevelComponentProps>{ const receiveLevelColumns: ColumnModel<ReceiveLevelDataType>[] = [ { 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: "timeStamp", title: "End Time", type: ColumnType.text }, { - property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => { const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } @@ -114,10 +114,13 @@ class ReceiveLevelComponent extends React.Component<ReceiveLevelComponentProps>{ }]; _rows.forEach(row => { + row.rxLevelMin = row.performanceData.rxLevelMin; + row.rxLevelAvg = row.performanceData.rxLevelAvg; + row.rxLevelMax = row.performanceData.rxLevelMax; datasets.forEach(ds => { ds.data.push({ - x: row["utcTimeStamp" as keyof ReceiveLevelDataType] as string, - y: row[ds.name as keyof ReceiveLevelDataType] as string + x: row["timeStamp" as keyof ReceiveLevelDataType] as string, + y: row.performanceData[ds.name as keyof ReceiveLevelDatabaseDataType] 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 98017ae2f..42aa007a9 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/signalToInterference.tsx @@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, ColumnModel, MaterialTableCtorType } from '. import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; -import { SignalToInterferenceDataType } from '../models/signalToInteferenceDataType'; +import { SignalToInterferenceDataType, SignalToInterferenceDatabaseDataType } from '../models/signalToInteferenceDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; import { createSignalToInterferenceProperties, createSignalToInterferenceActions } from '../handlers/signalToInterferenceHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; @@ -56,9 +56,9 @@ class SignalToInterferenceComponent extends React.Component<SignalToInterference const sinrColumns: ColumnModel<SignalToInterferenceDataType>[] = [ { 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: "timeStamp", title: "End Time", type: ColumnType.text }, { - property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => { const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } @@ -116,10 +116,13 @@ class SignalToInterferenceComponent extends React.Component<SignalToInterference }]; _rows.forEach(row => { + row.snirMin = row.performanceData.snirMin; + row.snirAvg = row.performanceData.snirAvg; + row.snirMax = row.performanceData.snirMax; datasets.forEach(ds => { ds.data.push({ - x: row["utcTimeStamp" as keyof SignalToInterferenceDataType] as string, - y: row[ds.name as keyof SignalToInterferenceDataType] as string + x: row["timeStamp" as keyof SignalToInterferenceDataType] as string, + y: row.performanceData[ds.name as keyof SignalToInterferenceDatabaseDataType] 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 f1e62cf33..256911c2d 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/temperature.tsx @@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, ColumnModel, MaterialTableCtorType } from '. import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; -import { TemperatureDataType } from '../models/temperatureDataType'; +import { TemperatureDataType, TemperatureDatabaseDataType } from '../models/temperatureDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; import { createTemperatureProperties, createTemperatureActions } from '../handlers/temperatureHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; @@ -55,9 +55,9 @@ class TemperatureComponent extends React.Component<TemperatureComponentProps>{ const temperatureColumns: ColumnModel<TemperatureDataType>[] = [ { 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: "timeStamp", title: "End Time", type: ColumnType.text }, { - property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => { const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } @@ -114,10 +114,13 @@ class TemperatureComponent extends React.Component<TemperatureComponentProps>{ }]; _rows.forEach(row => { + row.rfTempMin = row.performanceData.rfTempMin; + row.rfTempAvg = row.performanceData.rfTempAvg; + row.rfTempMax = row.performanceData.rfTempMax; datasets.forEach(ds => { ds.data.push({ - x: row["utcTimeStamp" as keyof TemperatureDataType] as string, - y: row[ds.name as keyof TemperatureDataType] as string + x: row["timeStamp" as keyof TemperatureDataType] as string, + y: row.performanceData[ds.name as keyof TemperatureDatabaseDataType] 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 8ec4561a4..635cbf103 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/components/transmissionPower.tsx @@ -23,7 +23,7 @@ import { MaterialTable, ColumnType, ColumnModel, MaterialTableCtorType } from '. import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; import connect, { Connect, IDispatcher } from '../../../../framework/src/flux/connect'; -import { TransmissionPowerDataType } from '../models/transmissionPowerDataType'; +import { TransmissionPowerDataType, TransmissionPowerDatabaseDataType } from '../models/transmissionPowerDataType'; import { IDataSet, IDataSetsObject } from '../models/chartTypes'; import { createTransmissionPowerProperties, createTransmissionPowerActions } from '../handlers/transmissionPowerHandler'; import { lineChart, sortDataByTimeStamp } from '../utils/chartUtils'; @@ -56,9 +56,9 @@ class TransmissionPowerComponent extends React.Component<TransmissionPowerCompon const transmissionColumns: ColumnModel<TransmissionPowerDataType>[] = [ { 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: "timeStamp", title: "End Time", type: ColumnType.text }, { - property: "suspectIntervalFlag", title: "Suspect Interval", type: ColumnType.custom, customControl: ({ rowData }) => { + property: "suspectIntervalFlag", title: "Suspect Interval", customControl: ({ rowData }) => { const suspectIntervalFlag = rowData["suspectIntervalFlag"].toString(); return <div >{suspectIntervalFlag} </div> } @@ -116,10 +116,13 @@ class TransmissionPowerComponent extends React.Component<TransmissionPowerCompon }]; _rows.forEach(row => { + row.txLevelMin = row.performanceData.txLevelMin; + row.txLevelAvg = row.performanceData.txLevelAvg; + row.txLevelMax = row.performanceData.txLevelMax; datasets.forEach(ds => { ds.data.push({ - x: row["utcTimeStamp" as keyof TransmissionPowerDataType] as string, - y: row[ds.name as keyof TransmissionPowerDataType] as string + x: row["timeStamp" as keyof TransmissionPowerDataType] as string, + y: row.performanceData[ds.name as keyof TransmissionPowerDatabaseDataType] as string }); }); }); diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts index ba765c8cb..3548bf4dc 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/adaptiveModulationHandler.ts @@ -18,7 +18,7 @@ import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; -import { AdaptiveModulationDataType, AdaptiveModulationResult } from '../models/adaptiveModulationDataType'; +import { AdaptiveModulationDataType } from '../models/adaptiveModulationDataType'; import { getFilter } from '../utils/tableUtils'; export interface IAdaptiveModulationState extends IExternalTableState<AdaptiveModulationDataType> { } @@ -26,66 +26,7 @@ export interface IAdaptiveModulationState extends IExternalTableState<AdaptiveMo /** * 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 - }); - +const adaptiveModulationSearchHandler = createSearchDataHandler<AdaptiveModulationDataType>(getFilter, null) export const { actionHandler: adaptiveModulationActionHandler, createActions: createAdaptiveModulationActions, diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts index 41aceca9f..b3b284b42 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/availableLtpsActionHandler.ts @@ -29,12 +29,12 @@ export interface IAvailableLtpsState { busy: boolean; } -const connectedNetworkElementsStateInit: IAvailableLtpsState = { +const ltpListStateInit: IAvailableLtpsState = { distinctLtps: [], busy: false }; -export const availableLtpsActionHandler: IActionHandler<IAvailableLtpsState> = (state = connectedNetworkElementsStateInit, action) => { +export const availableLtpsActionHandler: IActionHandler<IAvailableLtpsState> = (state = ltpListStateInit, action) => { if (action instanceof LoadAllAvailableLtpsAction) { state = { diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts index 074c97d91..1e6c6d0a6 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/crossPolarDiscriminationHandler.ts @@ -18,7 +18,7 @@ import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; -import { CrossPolarDiscriminationDataType, CrossPolarDiscriminationResult } from '../models/crossPolarDiscriminationDataType'; +import { CrossPolarDiscriminationDataType } from '../models/crossPolarDiscriminationDataType'; import { getFilter } from '../utils/tableUtils'; export interface ICrossPolarDiscriminationState extends IExternalTableState<CrossPolarDiscriminationDataType> { } @@ -26,32 +26,7 @@ export interface ICrossPolarDiscriminationState extends IExternalTableState<Cros /** * 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 - }); +const crossPolarDiscriminationSearchHandler = createSearchDataHandler<CrossPolarDiscriminationDataType>(getFilter, null) export const { actionHandler: crossPolarDiscriminationActionHandler, diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/deviceListActionHandler.ts index ee14063c2..b3c0db446 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/connectedNetworkElementsActionHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/deviceListActionHandler.ts @@ -17,32 +17,32 @@ */ import { IActionHandler } from '../../../../framework/src/flux/action'; -import { AllConnectedNetworkElementsLoadedAction, LoadAllConnectedNetworkElementsAction } from '../actions/connectedNetworkElementsActions'; -import { ConnectedNetworkElementIds } from '../models/connectedNetworkElements'; +import { AllDeviceListLoadedAction, LoadAllDeviceListAction } from '../actions/deviceListActions'; +import { DeviceListType } from '../models/deviceListType'; -export interface IConnectedNetworkElementsState { - connectedNetworkElementIds: ConnectedNetworkElementIds[]; +export interface IDeviceListState { + deviceList: DeviceListType[]; busy: boolean; } -const connectedNetworkElementsStateInit: IConnectedNetworkElementsState = { - connectedNetworkElementIds: [], +const deviceListStateInit: IDeviceListState = { + deviceList: [], busy: false }; -export const connectedNetworkElementsActionHandler: IActionHandler<IConnectedNetworkElementsState> = (state = connectedNetworkElementsStateInit, action) => { - if (action instanceof LoadAllConnectedNetworkElementsAction) { +export const deviceListActionHandler: IActionHandler<IDeviceListState> = (state = deviceListStateInit, action) => { + if (action instanceof LoadAllDeviceListAction) { state = { ...state, busy: true }; - } else if (action instanceof AllConnectedNetworkElementsLoadedAction) { - if (!action.error && action.connectedNetworkElementIds) { + } else if (action instanceof AllDeviceListLoadedAction) { + if (!action.error && action.deviceList) { state = { ...state, - connectedNetworkElementIds: action.connectedNetworkElementIds, + deviceList: action.deviceList, busy: false }; } else { diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts index 51b537fea..131566367 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceDataHandler.ts @@ -20,7 +20,7 @@ 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 { PerformanceDataType } from '../models/performanceDataType'; import { getFilter } from '../utils/tableUtils'; export interface IPerformanceDataState extends IExternalTableState<PerformanceDataType> { } @@ -28,32 +28,7 @@ export interface IPerformanceDataState extends IExternalTableState<PerformanceDa /** * 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 - }); +const performanceDataSearchHandler = createSearchDataHandler<PerformanceDataType>(getFilter, null); export const { actionHandler: performanceDataActionHandler, diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts index 85ff01634..c33f10a7e 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/performanceHistoryRootHandler.ts @@ -32,15 +32,15 @@ import { ITemperatureState, temperatureActionHandler } from './temperatureHandle import { ISignalToInterferenceState, signalToInterferenceActionHandler } from './signalToInterferenceHandler'; import { ICrossPolarDiscriminationState, crossPolarDiscriminationActionHandler } from './crossPolarDiscriminationHandler'; import { SetPanelAction } from '../actions/panelChangeActions'; -import { IConnectedNetworkElementsState, connectedNetworkElementsActionHandler } from './connectedNetworkElementsActionHandler'; +import { IDeviceListState, deviceListActionHandler } from './deviceListActionHandler'; import { IAvailableLtpsState, availableLtpsActionHandler } from './availableLtpsActionHandler'; import { PmDataInterval } from '../models/performanceDataType'; import { TimeChangeAction } from '../actions/timeChangeAction'; -import { UpdateMountId } from '../actions/connectedNetworkElementsActions'; +import { UpdateMountId } from '../actions/deviceListActions'; export interface IPerformanceHistoryStoreState { - mountId: string; - networkElements: IConnectedNetworkElementsState; + nodeId: string; + networkElements: IDeviceListState; ltps: IAvailableLtpsState; performanceData: IPerformanceDataState; receiveLevel: IReceiveLevelState; @@ -86,8 +86,8 @@ declare module '../../../../framework/src/store/applicationStore' { } const actionHandlers = { - mountId: mountIdHandler, - networkElements: connectedNetworkElementsActionHandler, + nodeId: mountIdHandler, + networkElements: deviceListActionHandler, ltps: availableLtpsActionHandler, performanceData: performanceDataActionHandler, receiveLevel: receiveLevelActionHandler, diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts index adb70b120..91595cc58 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/receiveLevelHandler.ts @@ -18,7 +18,7 @@ import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; -import { ReceiveLevelDataType, ReceiveLevelResult } from '../models/receiveLevelDataType'; +import { ReceiveLevelDataType } from '../models/receiveLevelDataType'; import { getFilter } from '../utils/tableUtils'; export interface IReceiveLevelState extends IExternalTableState<ReceiveLevelDataType> { } @@ -26,32 +26,7 @@ export interface IReceiveLevelState extends IExternalTableState<ReceiveLevelData /** * 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 - }); +const receiveLevelSearchHandler = createSearchDataHandler<ReceiveLevelDataType>(getFilter, null); export const { actionHandler: receiveLevelActionHandler, diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts index aa75ba226..e0f804086 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/signalToInterferenceHandler.ts @@ -18,7 +18,7 @@ import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; -import { SignalToInterferenceDataType, SignalToInterferenceResult } from '../models/signalToInteferenceDataType'; +import { SignalToInterferenceDataType } from '../models/signalToInteferenceDataType'; import { getFilter } from '../utils/tableUtils'; export interface ISignalToInterferenceState extends IExternalTableState<SignalToInterferenceDataType> { } @@ -26,32 +26,7 @@ export interface ISignalToInterferenceState extends IExternalTableState<SignalTo /** * 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 - }); +const signalToInterferenceSearchHandler = createSearchDataHandler<SignalToInterferenceDataType>(getFilter, null); export const { actionHandler: signalToInterferenceActionHandler, diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts index 8a9ae7025..0a6c73a1c 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/temperatureHandler.ts @@ -18,7 +18,7 @@ import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; -import { TemperatureDataType, TemperatureResult } from '../models/temperatureDataType'; +import { TemperatureDataType } from '../models/temperatureDataType'; import { getFilter } from '../utils/tableUtils'; export interface ITemperatureState extends IExternalTableState<TemperatureDataType> { } @@ -26,32 +26,7 @@ export interface ITemperatureState extends IExternalTableState<TemperatureDataTy /** * 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 - }); +const temperatureSearchHandler = createSearchDataHandler< TemperatureDataType>(getFilter, null); export const { actionHandler: temperatureActionHandler, diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts index c2ad82183..32bef817d 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/handlers/transmissionPowerHandler.ts @@ -18,7 +18,7 @@ import { createExternal, IExternalTableState } from '../../../../framework/src/components/material-table/utilities'; import { createSearchDataHandler } from '../../../../framework/src/utilities/elasticSearch'; -import { TransmissionPowerDataType, TransmissionPowerResult } from '../models/transmissionPowerDataType'; +import { TransmissionPowerDataType } from '../models/transmissionPowerDataType'; import { getFilter } from '../utils/tableUtils'; export interface ITransmissionPowerState extends IExternalTableState<TransmissionPowerDataType> { } @@ -26,32 +26,7 @@ export interface ITransmissionPowerState extends IExternalTableState<Transmissio /** * 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 - }); +const transmissionPowerSearchHandler = createSearchDataHandler<TransmissionPowerDataType>(getFilter, null) export const { actionHandler: transmissionPowerActionHandler, diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts index 9c1d28986..adb0bcd6f 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/adaptiveModulationDataType.ts @@ -4,13 +4,13 @@ * ================================================================================================= * 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 + * 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 + * 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========================================================================== @@ -21,53 +21,43 @@ export { HitEntry, Result } from '../../../../framework/src/models'; * Represents Adaptive Modulation data fields of the performance history table. */ 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; - "suspect-interval-flag": boolean; - "time-stamp": string; + _id: string ; + 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; }; @@ -75,44 +65,45 @@ export type AdaptiveModulationResult = { * Internally used type to provide table and chart data */ export type AdaptiveModulationDataType = { + performanceData: AdaptiveModulationDatabaseDataType; radioSignalId: string; scannerId: string; - utcTimeStamp: string; + timeStamp: 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; + 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 fcf7ad5f6..dc6c7bc16 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/availableLtps.ts @@ -16,16 +16,6 @@ * ============LICENSE_END========================================================================== */ export type LtpIds = { - key: string + key : string } - export type Bucket<T>={ - buckets: T[] - } - -/** - * Represents distinct available ltps using elasticsearch aggregations structure. - */ - export type DistinctLtp = { - "uuid-interface": Bucket<LtpIds> - } diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts index 487cf029d..53039faa2 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/chartTypes.ts @@ -45,5 +45,5 @@ export interface IDataSetsObject { * Interface used by chart for sorting on time-stamp */ export interface ITimeStamp { - "utcTimeStamp": string; + timeStamp: string; } diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/connectedNetworkElements.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/connectedNetworkElements.ts deleted file mode 100644 index b7277f777..000000000 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/connectedNetworkElements.ts +++ /dev/null @@ -1,7 +0,0 @@ -/** - * Represents connected network elements. - */ - -export type ConnectedNetworkElementIds = { - mountId: string; - } diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts index ef4415393..8adb16f45 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/crossPolarDiscriminationDataType.ts @@ -22,29 +22,20 @@ export { HitEntry, Result } from '../../../../framework/src/models'; * Represents Receive level data fields of the performance history table. */ 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; - "suspect-interval-flag": boolean; - "time-stamp": string; + _id: string; + xpdMin: number; + xpdAvg: number; + xpdMax: number; }; /** * Internally used type to provide table and chart data */ export type CrossPolarDiscriminationDataType = { + performanceData: CrossPolarDiscriminationDatabaseDataType radioSignalId: string; scannerId: string; - utcTimeStamp: string; + timeStamp: string; suspectIntervalFlag: boolean; xpdMin: number; xpdAvg: number; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/deviceListType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/deviceListType.ts new file mode 100644 index 000000000..db8f2d71e --- /dev/null +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/deviceListType.ts @@ -0,0 +1,25 @@ +/** + * ============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========================================================================== + */ + +/** + * Represents all the distinct devices from the performance history data. + */ + +export type DeviceListType = { + nodeId: string; +} diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts index 1f05b47cc..5889a64c8 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/panelId.ts @@ -1,4 +1,22 @@ /** + * ============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========================================================================== + */ + +/** * Represents PanelIds for the available Expansional panels. */ export type PanelId = null | "PerformanceData" | "ReceiveLevel" | "TransmissionPower" | "AdaptiveModulation" | "Temperature" | "SINR" | "CPD";
\ 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 6af29c4a8..30f97fb54 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/performanceDataType.ts @@ -23,30 +23,21 @@ import { Moment } from "moment"; * Represents performance data fields of the performance history table as used in the database */ 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; - "suspect-interval-flag": boolean; - "time-stamp": string; + _id: string; + es: number; + ses: number; + unavailability: number; }; /** * Internally used type to provide table and chart data */ export type PerformanceDataType = { + + performanceData: PerformanceDatabaseDataType; radioSignalId: string; scannerId: string; - utcTimeStamp: string; + timeStamp: string; suspectIntervalFlag: boolean; es: number; ses: number; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts index 836bf58d9..2748a3d5d 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/receiveLevelDataType.ts @@ -21,29 +21,20 @@ export { HitEntry, Result } from '../../../../framework/src/models'; * Represents Receive level data fields of the performance history table. */ 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; - "suspect-interval-flag": boolean; - "time-stamp": string; + _id: string; + rxLevelMin: number; + rxLevelAvg: number; + rxLevelMax: number; }; /** * Internally used type to provide table and chart data */ export type ReceiveLevelDataType = { + performanceData: ReceiveLevelDatabaseDataType; radioSignalId: string; scannerId: string; - utcTimeStamp: string; + timeStamp: string; suspectIntervalFlag: boolean; rxLevelMin: number; rxLevelAvg: number; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts index deb1d8f18..5c675feb8 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/signalToInteferenceDataType.ts @@ -22,30 +22,20 @@ export { HitEntry, Result } from '../../../../framework/src/models'; * Represents Receive level data fields of the performance history table. */ 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; - "suspect-interval-flag": boolean; - "time-stamp": string; + _id: string; + snirMin: number; + snirAvg: number; + snirMax: number; }; - /** * Internally used type to provide table and chart data */ export type SignalToInterferenceDataType = { + performanceData: SignalToInterferenceDatabaseDataType; radioSignalId: string; scannerId: string; - utcTimeStamp: string; + timeStamp: string; suspectIntervalFlag: boolean; snirMin: number; snirAvg: number; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts index dd3ce5253..3b0cb7683 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/temperatureDataType.ts @@ -22,29 +22,20 @@ export { HitEntry, Result } from '../../../../framework/src/models'; * Represents Receive level data fields of the performance history table. */ 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; - "suspect-interval-flag": boolean; - "time-stamp": string; + _id: string; + rfTempMin: number; + rfTempAvg: number; + rfTempMax: number; }; /** * Internally used type to provide table and chart data */ export type TemperatureDataType = { + performanceData: TemperatureDatabaseDataType radioSignalId: string; scannerId: string; - utcTimeStamp: string; + timeStamp: string; suspectIntervalFlag: boolean; rfTempMin: number; rfTempAvg: number; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetconf.ts index 6bd89411d..99123f55e 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetConf.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/topologyNetconf.ts @@ -15,15 +15,12 @@ * the License. * ============LICENSE_END========================================================================== */ + export interface TopologyNode { "node-id": string; - "netconf-node-topology:connection-status": string; } -/** - * Represents restConf network element topology. - */ export interface Topology { "topology-id": string; - "node": TopologyNode[]; + node: TopologyNode[]; } diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts index 2c31f5378..62c00bfe4 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/models/transmissionPowerDataType.ts @@ -22,29 +22,20 @@ export { HitEntry, Result } from '../../../../framework/src/models'; * Represents Receive level data fields of the performance history table. */ 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; - "suspect-interval-flag": boolean; - "time-stamp": string; + _id: string; + txLevelMin: number; + txLevelAvg: number; + txLevelMax: number; }; /** * Internally used type to provide table and chart data */ export type TransmissionPowerDataType = { + performanceData: TransmissionPowerDatabaseDataType; radioSignalId: string; scannerId: string; - utcTimeStamp: string; + timeStamp: string; suspectIntervalFlag: boolean; txLevelMin: number; txLevelAvg: number; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/pluginPerformance.tsx index a3fa2dbfe..df3ffd90a 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/plugin.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/pluginPerformance.tsx @@ -29,7 +29,7 @@ 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"; +import { updateMountIdActionCreator } from "./actions/deviceListActions"; let api: { readonly applicationStore: ApplicationStore | null; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts b/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts index 0f3c89b83..2b03d1c2e 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/services/performanceHistoryService.ts @@ -18,7 +18,10 @@ import { requestRest } from '../../../../framework/src/services/restService'; import { Result } from '../../../../framework/src/models/elasticSearch'; -import { DistinctLtp, LtpIds } from '../models/availableLtps'; +import { convertPropertyNames, replaceUpperCase } from '../../../../framework/src/utilities/yangHelper'; +import { LtpIds } from '../models/availableLtps'; +import { DeviceListType } from '../models/deviceListType'; +import { Topology, TopologyNode } from '../models/topologyNetconf'; /** * Represents a web api accessor service for Network elements actions. @@ -31,33 +34,75 @@ class PerformanceService { public async getDistinctLtpsFromDatabase(networkElement: string, selectedTimePeriod: string): Promise<LtpIds[] | null> { let path; const query = { - "size": 0, - "query": { - "match": { - "node-name": networkElement - } - }, - "aggs": { - "uuid-interface": { - "terms": { - "field": "uuid-interface" - } - } + "filter": [{ + "property": "node-name", + "filtervalue": networkElement + }], + "sortorder": [], + "pagination": { + "size": 20, + "page": 1 } - }; + } + if (selectedTimePeriod === "15min") { - path = 'database/sdnperformance/historicalperformance15min/_search'; + path = '/restconf/operations/data-provider:read-pmdata-15m-ltp-list'; } else { - path = 'database/sdnperformance/historicalperformance24h/_search'; + path = '/restconf/operations/data-provider:read-pmdata-24h-ltp-list'; } - const result = await requestRest<Result<DistinctLtp>>(path, { method: "POST", body: JSON.stringify(query) }); - return result && result.aggregations && result.aggregations["uuid-interface"].buckets.map(ne => ({ - key: ne.key + const result = await requestRest<Result<string>>(path, { method: "POST", body: JSON.stringify(convertPropertyNames({ input: query }, replaceUpperCase)) }); + return result && result.output && result.output.data.map(ne => ({ key: ne })) || null; + } + + + + /** + * Gets all devices from the performanceHistory 15min backend. + */ + public async getDeviceListfromPerf15minHistory(): Promise<(DeviceListType)[] | null> { + const path = '/restconf/operations/data-provider:read-pmdata-15m-device-list'; + const query = { + "input": { + "filter": [], + "sortorder": [], + "pagination": { + "size": 20, + "page": 1 + } + } + }; + + const result = await requestRest<Result<string>>(path, { method: "POST", body: JSON.stringify(query) }); + return result && result.output && result.output.data && result.output.data.map(ne => ({ + nodeId: ne + })) || null; + } + + /** + * Gets all devices from the performanceHistory 24h backend. + */ + public async getDeviceListfromPerf24hHistory(): Promise<(DeviceListType)[] | null> { + const path = '/restconf/operations/data-provider:read-pmdata-24h-device-list'; + const query = { + "input": { + "filter": [], + "sortorder": [], + "pagination": { + "size": 20, + "page": 1 + } + } + }; + + const result = await requestRest<Result<string>>(path, { method: "POST", body: JSON.stringify(query) }); + return result && result.output && result.output.data && result.output.data.map(ne => ({ + nodeId: ne })) || null; } } + export const PerformanceHistoryService = new PerformanceService(); export default PerformanceHistoryService; diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx index 52b5ddb58..3240f73f1 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/chartUtils.tsx @@ -69,7 +69,7 @@ export const lineChart = (chartPagedData: IDataSetsObject) => { export const sortDataByTimeStamp = <T extends ITimeStamp>(_rows: T[]): T[] => { return (_rows.sort((a, b) => { - const result = Date.parse(a["utcTimeStamp"]) - Date.parse(b["utcTimeStamp"]); + const result = Date.parse(a["timeStamp"]) - Date.parse(b["timeStamp"]); 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 865d89c88..b5a3a3f36 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/tableUtils.ts +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/utils/tableUtils.ts @@ -18,7 +18,7 @@ import { ColumnType, ColumnModel } from '../../../../framework/src/components/material-table'; import { PmDataInterval } from '../models/performanceDataType'; -import { getPmDataInterval } from '../plugin'; +import { getPmDataInterval } from '../pluginPerformance'; 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 }; @@ -27,9 +27,9 @@ export const addColumnLabels = <T>(name: string, title: string, disableFilter = export function getFilter(): string { switch (getPmDataInterval()) { case PmDataInterval.pmInterval15Min: - return "sdnperformance/historicalperformance15min"; + return "pmdata-15m"; case PmDataInterval.pmInterval24Hours: - return "sdnperformance/historicalperformance24h"; + return "pmdata-24h"; default: throw new Error("Unknown time intervall"); } diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx b/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx index 218250d18..ae22f8041 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/src/views/performanceHistoryApplication.tsx @@ -25,7 +25,6 @@ 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'; @@ -38,7 +37,7 @@ import AdaptiveModulation from '../components/adaptiveModulation'; import Temperature from '../components/temperature'; import SignalToInterference from '../components/signalToInterference'; import CrossPolarDiscrimination from '../components/crossPolarDiscrimination'; -import { loadAllConnectedNetworkElementsAsync } from '../actions/connectedNetworkElementsActions'; +import { loadAllDeviceListAsync } from '../actions/deviceListActions'; import { TimeChangeAction } from '../actions/timeChangeAction'; import { loadDistinctLtpsbyNetworkElementAsync } from '../actions/ltpAction'; import { SetPanelAction } from '../actions/panelChangeActions'; @@ -58,7 +57,7 @@ const PerformanceHistoryComponentStyles = (theme: Theme) => createStyles({ flexWrap: "wrap", }, margin: { - margin: theme.spacing.unit, + margin: theme.spacing(1), }, display: { display: "inline-block" @@ -79,7 +78,7 @@ const mapProps = (state: IApplicationStoreState) => ({ ...state.performanceHistory, activePanel: state.performanceHistory.currentOpenPanel, availableLtps: state.performanceHistory.ltps.distinctLtps, - networkElements: state.performanceHistory.networkElements.connectedNetworkElementIds + networkElements: state.performanceHistory.networkElements.deviceList, }); const mapDispatcher = (dispatcher: IDispatcher) => ({ @@ -104,9 +103,8 @@ const mapDispatcher = (dispatcher: IDispatcher) => ({ temperaturePreActions: createTemperaturePreActions(dispatcher.dispatch), signalToInterferencePreActions: createSignalToInterferencePreActions(dispatcher.dispatch), crossPolarDiscriminationPreActions: createCrossPolarDiscriminationPreActions(dispatcher.dispatch), - getConnectedNetworkElementsIds: async () => { - await dispatcher.dispatch(loadAllMountedNetworkElementsAsync) - dispatcher.dispatch(loadAllConnectedNetworkElementsAsync); + getAllDevicesPMdata: async () => { + await dispatcher.dispatch(loadAllDeviceListAsync); }, 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)), @@ -117,7 +115,7 @@ const mapDispatcher = (dispatcher: IDispatcher) => ({ }); export type NetworkElementType = { - mountId: string, + nodeId: string, } const NetworkElementTable = MaterialTable as MaterialTableCtorType<NetworkElementType>; @@ -184,62 +182,62 @@ class PerformanceHistoryComponent extends React.Component<PerformanceHistoryComp render(): JSX.Element { const { classes } = this.props; - const { activePanel, mountId } = this.props; - if (mountId === "") { + const { activePanel, nodeId } = this.props; + if (nodeId === "") { 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" }] + <NetworkElementTable title={"Please select the network element!"} idProperty={"nodeId"} rows={this.props.networkElements} asynchronus + onHandleClick={(event, rowData) => { this.handleNetworkElementSelect(rowData.nodeId) }} columns={ + [{ property: "nodeId", title: "Node Name" }] } /> </> ) } else { - this.handleURLChange(mountId); + 3 + this.handleURLChange(nodeId); return ( <> - <h2>Selected Network Element: { this.state.selectedNetworkElement } </h2> - { this.state.showLtps && ( + <h3>Selected Network Element: {this.state.selectedNetworkElement} </h3> + {this.state.showLtps && ( <div> - <FormControl className={ classes.display }> + <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 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 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 && ( + {this.state.showPanels && ( <div> - <Panel activePanel={ activePanel } panelId={ "PerformanceData" } onToggle={ this.onTogglePanel } title={ "Performance Data" }> - <PerformanceData selectedTimePeriod={ this.state.selectedTimePeriod } /> + <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 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 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 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 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 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 activePanel={activePanel} panelId={"CPD"} onToggle={this.onTogglePanel} title={"Cross Polar Discrimination"}> + <CrossPolarDiscrimination selectedTimePeriod={this.state.selectedTimePeriod} /> </Panel> </div> )} @@ -251,7 +249,7 @@ class PerformanceHistoryComponent extends React.Component<PerformanceHistoryComp }; public componentDidMount() { - this.props.getConnectedNetworkElementsIds(); + this.props.getAllDevicesPMdata(); this.props.enableFilterPerformanceData.onToggleFilter(); this.props.enableFilterReceiveLevel.onToggleFilter(); this.props.enableFilterTransmissionPower.onToggleFilter(); @@ -290,38 +288,38 @@ class PerformanceHistoryComponent extends React.Component<PerformanceHistoryComp } - /** - * 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); -} + /** + * Function which handles network element changes. + */ + private handleNetworkElementSelect = (selectedNetworkElement: string) => { -private handleURLChange = (selectedNetworkElement: string) => { - if(selectedNetworkElement !== this.state.selectedNetworkElement) { 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); } -} -/** - * 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 handleURLChange = (selectedNetworkElement: string) => { + if (selectedNetworkElement !== this.state.selectedNetworkElement) { + this.setState({ + showLtps: true, + selectedNetworkElement: selectedNetworkElement, + showPanels: false, + selectedLtp: "-1" + }); + 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 + */ private resetLtpDropdown = (ltpNotSelected: boolean) => { if (ltpNotSelected) { this.setState({ diff --git a/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js b/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js index 27a5949ac..9c2414864 100644 --- a/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js +++ b/sdnr/wt/odlux/apps/performanceHistoryApp/webpack.config.js @@ -26,7 +26,7 @@ module.exports = (env) => { context: path.resolve(__dirname, "src"), entry: { - performanceHistoryApp: ["./plugin.tsx"] + performanceHistoryApp: ["./pluginPerformance.tsx"] }, devtool: env === "release" ? false : "source-map", @@ -125,12 +125,16 @@ module.exports = (env) => { colors: true }, proxy: { + "/oauth2/": { + target: "http://10.20.6.29:48181", + secure: false + }, "/restconf": { - target: "http://localhost:8181", + target: "http://10.20.6.29:48181", secure: false }, "/database": { - target: "http://localhost:8181", + target: "http://10.20.6.29:48181", secure: false } } |