mirror of
				https://github.com/Telecominfraproject/wlan-cloud-ui.git
				synced 2025-11-03 20:28:12 +00:00 
			
		
		
		
	Manual backup channel change for Bulk-Edit APs
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