mirror of
				https://github.com/Telecominfraproject/wlan-cloud-ui.git
				synced 2025-10-30 18:27:58 +00:00 
			
		
		
		
	Merge pull request #90 from Telecominfraproject/bugfix/WIFI-1505
hotfix/WIFI-1505: Manual Channel Editing
This commit is contained in:
		| @@ -1,7 +1,7 @@ | ||||
| import React, { useContext } from 'react'; | ||||
| import PropTypes from 'prop-types'; | ||||
| import { useParams, useHistory } from 'react-router-dom'; | ||||
| import { useQuery, useMutation, gql } from '@apollo/client'; | ||||
| import { useQuery, useMutation } from '@apollo/client'; | ||||
| import { Alert, notification } from 'antd'; | ||||
| import moment from 'moment'; | ||||
| import { | ||||
| @@ -9,8 +9,15 @@ import { | ||||
|   Loading, | ||||
| } from '@tip-wlan/wlan-cloud-ui-library'; | ||||
|  | ||||
| import { FILTER_SERVICE_METRICS, GET_ALL_FIRMWARE, GET_ALL_PROFILES } from 'graphql/queries'; | ||||
| import { | ||||
|   GET_EQUIPMENT, | ||||
|   FILTER_SERVICE_METRICS, | ||||
|   GET_ALL_FIRMWARE, | ||||
|   GET_ALL_PROFILES, | ||||
| } from 'graphql/queries'; | ||||
| import { | ||||
|   UPDATE_EQUIPMENT, | ||||
|   DELETE_EQUIPMENT, | ||||
|   UPDATE_EQUIPMENT_FIRMWARE, | ||||
|   REQUEST_EQUIPMENT_SWITCH_BANK, | ||||
|   REQUEST_EQUIPMENT_REBOOT, | ||||
| @@ -18,120 +25,6 @@ import { | ||||
| import { fetchMoreProfiles } from 'graphql/functions'; | ||||
| import UserContext from 'contexts/UserContext'; | ||||
|  | ||||
| const GET_EQUIPMENT = gql` | ||||
|   query GetEquipment($id: ID!) { | ||||
|     getEquipment(id: $id) { | ||||
|       id | ||||
|       equipmentType | ||||
|       inventoryId | ||||
|       customerId | ||||
|       profileId | ||||
|       locationId | ||||
|       name | ||||
|       latitude | ||||
|       longitude | ||||
|       serial | ||||
|       lastModifiedTimestamp | ||||
|       details | ||||
|       profile { | ||||
|         id | ||||
|         name | ||||
|         childProfiles { | ||||
|           id | ||||
|           name | ||||
|           details | ||||
|         } | ||||
|       } | ||||
|       baseMacAddress | ||||
|       manufacturer | ||||
|       status { | ||||
|         firmware { | ||||
|           detailsJSON | ||||
|         } | ||||
|         protocol { | ||||
|           detailsJSON | ||||
|         } | ||||
|         radioUtilization { | ||||
|           detailsJSON | ||||
|         } | ||||
|         clientDetails { | ||||
|           detailsJSON | ||||
|           details { | ||||
|             numClientsPerRadio | ||||
|           } | ||||
|         } | ||||
|         osPerformance { | ||||
|           detailsJSON | ||||
|         } | ||||
|       } | ||||
|       model | ||||
|       alarmsCount | ||||
|       alarms { | ||||
|         severity | ||||
|         alarmCode | ||||
|         details | ||||
|         createdTimestamp | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| `; | ||||
|  | ||||
| const UPDATE_EQUIPMENT = gql` | ||||
|   mutation UpdateEquipment( | ||||
|     $id: ID! | ||||
|     $equipmentType: String! | ||||
|     $inventoryId: String! | ||||
|     $customerId: ID! | ||||
|     $profileId: ID! | ||||
|     $locationId: ID! | ||||
|     $name: String! | ||||
|     $baseMacAddress: String | ||||
|     $latitude: String | ||||
|     $longitude: String | ||||
|     $serial: String | ||||
|     $lastModifiedTimestamp: String | ||||
|     $details: JSONObject | ||||
|   ) { | ||||
|     updateEquipment( | ||||
|       id: $id | ||||
|       equipmentType: $equipmentType | ||||
|       inventoryId: $inventoryId | ||||
|       customerId: $customerId | ||||
|       profileId: $profileId | ||||
|       locationId: $locationId | ||||
|       name: $name | ||||
|       baseMacAddress: $baseMacAddress | ||||
|       latitude: $latitude | ||||
|       longitude: $longitude | ||||
|       serial: $serial | ||||
|       lastModifiedTimestamp: $lastModifiedTimestamp | ||||
|       details: $details | ||||
|     ) { | ||||
|       id | ||||
|       equipmentType | ||||
|       inventoryId | ||||
|       customerId | ||||
|       profileId | ||||
|       locationId | ||||
|       name | ||||
|       baseMacAddress | ||||
|       latitude | ||||
|       longitude | ||||
|       serial | ||||
|       lastModifiedTimestamp | ||||
|       details | ||||
|     } | ||||
|   } | ||||
| `; | ||||
|  | ||||
| const DELETE_EQUIPMENT = gql` | ||||
|   mutation DeleteEquipment($id: ID!) { | ||||
|     deleteEquipment(id: $id) { | ||||
|       id | ||||
|     } | ||||
|   } | ||||
| `; | ||||
|  | ||||
| const toTime = moment(); | ||||
| const fromTime = moment().subtract(1, 'hour'); | ||||
|  | ||||
|   | ||||
| @@ -27,13 +27,22 @@ const renderTableCell = tabCell => { | ||||
|   return <span>{tabCell}</span>; | ||||
| }; | ||||
| const accessPointsChannelTableColumns = [ | ||||
|   { title: 'Name', dataIndex: 'name', key: 'name', width: 150, render: renderTableCell }, | ||||
|   { title: 'Name', dataIndex: 'name', key: 'name', width: 250, render: renderTableCell }, | ||||
|   { | ||||
|     title: 'Channel', | ||||
|     dataIndex: 'channel', | ||||
|     key: 'channel', | ||||
|     title: 'Manual Active Channel', | ||||
|     dataIndex: 'manualChannelNumber', | ||||
|     key: 'manualChannelNumber', | ||||
|     editable: true, | ||||
|     width: 150, | ||||
|     width: 200, | ||||
|     render: renderTableCell, | ||||
|   }, | ||||
|  | ||||
|   { | ||||
|     title: 'Manual Backup Channel', | ||||
|     dataIndex: 'manualBackupChannelNumber', | ||||
|     key: 'manualBackupChannelNumber', | ||||
|     editable: true, | ||||
|     width: 210, | ||||
|     render: renderTableCell, | ||||
|   }, | ||||
|   { | ||||
| @@ -49,7 +58,7 @@ const accessPointsChannelTableColumns = [ | ||||
|     dataIndex: 'probeResponseThreshold', | ||||
|     key: 'probeResponseThreshold', | ||||
|     editable: true, | ||||
|     width: 200, | ||||
|     width: 210, | ||||
|     render: renderTableCell, | ||||
|   }, | ||||
|   { | ||||
| @@ -57,7 +66,7 @@ const accessPointsChannelTableColumns = [ | ||||
|     dataIndex: 'clientDisconnectThreshold', | ||||
|     key: 'clientDisconnectThreshold', | ||||
|     editable: true, | ||||
|     width: 200, | ||||
|     width: 210, | ||||
|  | ||||
|     render: renderTableCell, | ||||
|   }, | ||||
| @@ -66,7 +75,7 @@ const accessPointsChannelTableColumns = [ | ||||
|     dataIndex: 'snrDrop', | ||||
|     key: 'snrDrop', | ||||
|     editable: true, | ||||
|     width: 175, | ||||
|     width: 150, | ||||
|     render: renderTableCell, | ||||
|   }, | ||||
|   { | ||||
| @@ -169,6 +178,21 @@ const BulkEditAPs = ({ locations, checkedLocations }) => { | ||||
|   const [updateEquipmentBulk] = useMutation(UPDATE_EQUIPMENT_BULK); | ||||
|  | ||||
|   const getRadioDetails = (radioDetails, type) => { | ||||
|     if (type === 'manualChannelNumber') { | ||||
|       const manualChannelNumbers = []; | ||||
|       Object.keys(radioDetails?.radioMap || {}).map(i => { | ||||
|         return manualChannelNumbers.push(radioDetails.radioMap[i]?.manualChannelNumber); | ||||
|       }); | ||||
|       return manualChannelNumbers; | ||||
|     } | ||||
|  | ||||
|     if (type === 'manualBackupChannelNumber') { | ||||
|       const manualBackupChannelNumbers = []; | ||||
|       Object.keys(radioDetails?.radioMap || {}).map(i => { | ||||
|         return manualBackupChannelNumbers.push(radioDetails.radioMap[i]?.manualBackupChannelNumber); | ||||
|       }); | ||||
|       return manualBackupChannelNumbers; | ||||
|     } | ||||
|     if (type === 'cellSize') { | ||||
|       const cellSizeValues = []; | ||||
|       Object.keys(radioDetails?.radioMap || {}).map(i => { | ||||
| @@ -214,12 +238,13 @@ const BulkEditAPs = ({ locations, checkedLocations }) => { | ||||
|   }; | ||||
|  | ||||
|   const setAccessPointsBulkEditTableData = (dataSource = []) => { | ||||
|     const tableData = dataSource.items.map(({ id: key, name, channel, details }) => { | ||||
|     const tableData = dataSource.items.map(({ id: key, name, details }) => { | ||||
|       return { | ||||
|         key, | ||||
|         id: key, | ||||
|         name, | ||||
|         channel, | ||||
|         manualChannelNumber: getRadioDetails(details, 'manualChannelNumber'), | ||||
|         manualBackupChannelNumber: getRadioDetails(details, 'manualBackupChannelNumber'), | ||||
|         cellSize: getRadioDetails(details, 'cellSize'), | ||||
|         probeResponseThreshold: getRadioDetails(details, 'probeResponseThreshold'), | ||||
|         clientDisconnectThreshold: getRadioDetails(details, 'clientDisconnectThreshold'), | ||||
| @@ -232,7 +257,8 @@ const BulkEditAPs = ({ locations, checkedLocations }) => { | ||||
|  | ||||
|   const setUpdatedBulkEditTableData = ( | ||||
|     equipmentId, | ||||
|     channel, | ||||
|     manualChannelNumber, | ||||
|     manualBackupChannelNumber, | ||||
|     cellSize, | ||||
|     probeResponseThreshold, | ||||
|     clientDisconnectThreshold, | ||||
| @@ -251,7 +277,8 @@ const BulkEditAPs = ({ locations, checkedLocations }) => { | ||||
|           minLoadFactor = minLoad[dataIndex]; | ||||
|  | ||||
|           frequencies[`${i}`] = { | ||||
|             channelNumber: channel[dataIndex], | ||||
|             channelNumber: manualChannelNumber[dataIndex], | ||||
|             backupChannelNumber: manualBackupChannelNumber[dataIndex], | ||||
|             rxCellSizeDb: { | ||||
|               auto: true, | ||||
|               value: cellSize[dataIndex], | ||||
| @@ -300,7 +327,8 @@ const BulkEditAPs = ({ locations, checkedLocations }) => { | ||||
|     Object.keys(updatedRows).forEach(key => { | ||||
|       const { | ||||
|         id: equipmentId, | ||||
|         channel, | ||||
|         manualChannelNumber, | ||||
|         manualBackupChannelNumber, | ||||
|         cellSize, | ||||
|         probeResponseThreshold, | ||||
|         clientDisconnectThreshold, | ||||
| @@ -309,7 +337,8 @@ const BulkEditAPs = ({ locations, checkedLocations }) => { | ||||
|       } = updatedRows[key]; | ||||
|       const updatedEuips = setUpdatedBulkEditTableData( | ||||
|         equipmentId, | ||||
|         channel, | ||||
|         manualChannelNumber, | ||||
|         manualBackupChannelNumber, | ||||
|         cellSize, | ||||
|         probeResponseThreshold, | ||||
|         clientDisconnectThreshold, | ||||
| @@ -364,18 +393,9 @@ const BulkEditAPs = ({ locations, checkedLocations }) => { | ||||
|   return ( | ||||
|     <BulkEditAccessPoints | ||||
|       tableColumns={accessPointsChannelTableColumns} | ||||
|       tableData={ | ||||
|         equipData && | ||||
|         equipData.filterEquipment && | ||||
|         setAccessPointsBulkEditTableData(equipData && equipData.filterEquipment) | ||||
|       } | ||||
|       tableData={setAccessPointsBulkEditTableData(equipData && equipData?.filterEquipment)} | ||||
|       onLoadMore={handleLoadMore} | ||||
|       isLastPage={ | ||||
|         equipData && | ||||
|         equipData.filterEquipment && | ||||
|         equipData.filterEquipment.context && | ||||
|         equipData.filterEquipment.context.lastPage | ||||
|       } | ||||
|       isLastPage={equipData?.filterEquipment?.context?.lastPage} | ||||
|       onSaveChanges={handleSaveChanges} | ||||
|       breadcrumbPath={getBreadcrumbPath(id, locations)} | ||||
|     /> | ||||
|   | ||||
| @@ -255,6 +255,62 @@ export const CREATE_EQUIPMENT = gql` | ||||
|   } | ||||
| `; | ||||
|  | ||||
| export const UPDATE_EQUIPMENT = gql` | ||||
|   mutation UpdateEquipment( | ||||
|     $id: ID! | ||||
|     $equipmentType: String! | ||||
|     $inventoryId: String! | ||||
|     $customerId: ID! | ||||
|     $profileId: ID! | ||||
|     $locationId: ID! | ||||
|     $name: String! | ||||
|     $baseMacAddress: String | ||||
|     $latitude: String | ||||
|     $longitude: String | ||||
|     $serial: String | ||||
|     $lastModifiedTimestamp: String | ||||
|     $details: JSONObject | ||||
|   ) { | ||||
|     updateEquipment( | ||||
|       id: $id | ||||
|       equipmentType: $equipmentType | ||||
|       inventoryId: $inventoryId | ||||
|       customerId: $customerId | ||||
|       profileId: $profileId | ||||
|       locationId: $locationId | ||||
|       name: $name | ||||
|       baseMacAddress: $baseMacAddress | ||||
|       latitude: $latitude | ||||
|       longitude: $longitude | ||||
|       serial: $serial | ||||
|       lastModifiedTimestamp: $lastModifiedTimestamp | ||||
|       details: $details | ||||
|     ) { | ||||
|       id | ||||
|       equipmentType | ||||
|       inventoryId | ||||
|       customerId | ||||
|       profileId | ||||
|       locationId | ||||
|       name | ||||
|       baseMacAddress | ||||
|       latitude | ||||
|       longitude | ||||
|       serial | ||||
|       lastModifiedTimestamp | ||||
|       details | ||||
|     } | ||||
|   } | ||||
| `; | ||||
|  | ||||
| export const DELETE_EQUIPMENT = gql` | ||||
|   mutation DeleteEquipment($id: ID!) { | ||||
|     deleteEquipment(id: $id) { | ||||
|       id | ||||
|     } | ||||
|   } | ||||
| `; | ||||
|  | ||||
| export const UPDATE_CUSTOMER = gql` | ||||
|   mutation UpdateCustomer( | ||||
|     $id: ID! | ||||
|   | ||||
| @@ -77,6 +77,64 @@ export const FILTER_EQUIPMENT = gql` | ||||
|   } | ||||
| `; | ||||
|  | ||||
| export const GET_EQUIPMENT = gql` | ||||
|   query GetEquipment($id: ID!) { | ||||
|     getEquipment(id: $id) { | ||||
|       id | ||||
|       equipmentType | ||||
|       inventoryId | ||||
|       customerId | ||||
|       profileId | ||||
|       locationId | ||||
|       name | ||||
|       latitude | ||||
|       longitude | ||||
|       serial | ||||
|       lastModifiedTimestamp | ||||
|       details | ||||
|       profile { | ||||
|         id | ||||
|         name | ||||
|         childProfiles { | ||||
|           id | ||||
|           name | ||||
|           details | ||||
|         } | ||||
|       } | ||||
|       baseMacAddress | ||||
|       manufacturer | ||||
|       status { | ||||
|         firmware { | ||||
|           detailsJSON | ||||
|         } | ||||
|         protocol { | ||||
|           detailsJSON | ||||
|         } | ||||
|         radioUtilization { | ||||
|           detailsJSON | ||||
|         } | ||||
|         clientDetails { | ||||
|           detailsJSON | ||||
|           details { | ||||
|             numClientsPerRadio | ||||
|           } | ||||
|         } | ||||
|         osPerformance { | ||||
|           detailsJSON | ||||
|         } | ||||
|       } | ||||
|       model | ||||
|       alarmsCount | ||||
|       alarms { | ||||
|         severity | ||||
|         alarmCode | ||||
|         details | ||||
|         createdTimestamp | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| `; | ||||
|  | ||||
| export const FILTER_EQUIPMENT_BULK_EDIT_APS = gql` | ||||
|   query FilterEquipment( | ||||
|     $locationIds: [ID] | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Sean Macfarlane
					Sean Macfarlane