mirror of
				https://github.com/Telecominfraproject/wlan-cloud-ui.git
				synced 2025-10-30 18:27:58 +00:00 
			
		
		
		
	Merge branch 'master' of https://github.com/Telecominfraproject/wlan-cloud-ui into feature/TW-917
This commit is contained in:
		| @@ -65,7 +65,7 @@ const Dashboard = () => { | ||||
|       toTime, | ||||
|       equipmentIds: [0], | ||||
|       dataTypes: ['StatusChangedEvent'], | ||||
|       limit: 100, | ||||
|       limit: 1000, | ||||
|     }, | ||||
|   }); | ||||
|  | ||||
|   | ||||
| @@ -152,7 +152,7 @@ export const GET_ALL_PROFILES = gql` | ||||
| `; | ||||
|  | ||||
| const toTime = moment(); | ||||
| const fromTime = moment().subtract(24, 'hours'); | ||||
| const fromTime = moment().subtract(1, 'hour'); | ||||
|  | ||||
| const AccessPointDetails = ({ locations }) => { | ||||
|   const { id } = useParams(); | ||||
| @@ -179,6 +179,7 @@ const AccessPointDetails = ({ locations }) => { | ||||
|       toTime: toTime.valueOf().toString(), | ||||
|       equipmentIds: [id], | ||||
|       dataTypes: ['ApNode'], | ||||
|       limit: 100, | ||||
|     }, | ||||
|   }); | ||||
|  | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| import React, { useEffect, useContext } from 'react'; | ||||
| import PropTypes from 'prop-types'; | ||||
| import { useLazyQuery } from '@apollo/react-hooks'; | ||||
| import { Alert, notification } from 'antd'; | ||||
| import { Alert } from 'antd'; | ||||
| import { NetworkTable, Loading } from '@tip-wlan/wlan-cloud-ui-library'; | ||||
|  | ||||
| import UserContext from 'contexts/UserContext'; | ||||
| @@ -93,7 +93,10 @@ const accessPointsTableColumns = [ | ||||
| const AccessPoints = ({ checkedLocations }) => { | ||||
|   const { customerId } = useContext(UserContext); | ||||
|   const [filterEquipment, { loading, error, data: equipData, fetchMore }] = useLazyQuery( | ||||
|     FILTER_EQUIPMENT | ||||
|     FILTER_EQUIPMENT, | ||||
|     { | ||||
|       errorPolicy: 'all', | ||||
|     } | ||||
|   ); | ||||
|  | ||||
|   const handleLoadMore = () => { | ||||
| @@ -119,15 +122,6 @@ const AccessPoints = ({ checkedLocations }) => { | ||||
|   const fetchFilterEquipment = async () => { | ||||
|     filterEquipment({ | ||||
|       variables: { customerId, locationIds: checkedLocations, equipmentType: 'AP' }, | ||||
|       errorPolicy: 'all', | ||||
|       onError: e => { | ||||
|         e.forEach(({ message }) => { | ||||
|           notification.error({ | ||||
|             message: 'Error', | ||||
|             description: message, | ||||
|           }); | ||||
|         }); | ||||
|       }, | ||||
|     }); | ||||
|   }; | ||||
|  | ||||
| @@ -139,7 +133,7 @@ const AccessPoints = ({ checkedLocations }) => { | ||||
|     return <Loading />; | ||||
|   } | ||||
|  | ||||
|   if (error && !(equipData && equipData.filterEquipment && equipData.filterEquipment.items)) { | ||||
|   if (error && !equipData?.filterEquipment?.items) { | ||||
|     return <Alert message="Error" description="Failed to load equipment." type="error" showIcon />; | ||||
|   } | ||||
|  | ||||
|   | ||||
| @@ -12,13 +12,14 @@ import UserContext from 'contexts/UserContext'; | ||||
| import { GET_CLIENT_SESSION, FILTER_SERVICE_METRICS } from 'graphql/queries'; | ||||
|  | ||||
| const toTime = moment(); | ||||
| const fromTime = moment().subtract(24, 'hours'); | ||||
| const fromTime = moment().subtract(1, 'hour'); | ||||
|  | ||||
| const ClientDeviceDetails = () => { | ||||
|   const { id } = useParams(); | ||||
|   const { customerId } = useContext(UserContext); | ||||
|   const { loading, error, data, refetch } = useQuery(GET_CLIENT_SESSION, { | ||||
|     variables: { customerId, macAddress: id }, | ||||
|     errorPolicy: 'all', | ||||
|   }); | ||||
|   const { | ||||
|     loading: metricsLoading, | ||||
| @@ -32,6 +33,7 @@ const ClientDeviceDetails = () => { | ||||
|       toTime: toTime.valueOf().toString(), | ||||
|       clientMacs: [id], | ||||
|       dataTypes: ['Client'], | ||||
|       limit: 100, | ||||
|     }, | ||||
|   }); | ||||
|  | ||||
| @@ -56,7 +58,7 @@ const ClientDeviceDetails = () => { | ||||
|     return <Loading />; | ||||
|   } | ||||
|  | ||||
|   if (error) { | ||||
|   if (error && !data?.getClientSession) { | ||||
|     return ( | ||||
|       <Alert message="Error" description="Failed to load Client Device." type="error" showIcon /> | ||||
|     ); | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
| import React, { useEffect, useContext } from 'react'; | ||||
| import PropTypes from 'prop-types'; | ||||
| import { useLazyQuery } from '@apollo/react-hooks'; | ||||
| import { Alert, notification } from 'antd'; | ||||
| import { Alert } from 'antd'; | ||||
| import { NetworkTable, Loading } from '@tip-wlan/wlan-cloud-ui-library'; | ||||
|  | ||||
| import UserContext from 'contexts/UserContext'; | ||||
| @@ -29,7 +29,10 @@ const clientDevicesTableColumns = [ | ||||
| const ClientDevices = ({ checkedLocations }) => { | ||||
|   const { customerId } = useContext(UserContext); | ||||
|   const [filterClientSessions, { loading, error, data, fetchMore }] = useLazyQuery( | ||||
|     FILTER_CLIENT_SESSIONS | ||||
|     FILTER_CLIENT_SESSIONS, | ||||
|     { | ||||
|       errorPolicy: 'all', | ||||
|     } | ||||
|   ); | ||||
|  | ||||
|   const handleLoadMore = () => { | ||||
| @@ -52,26 +55,21 @@ const ClientDevices = ({ checkedLocations }) => { | ||||
|     } | ||||
|   }; | ||||
|  | ||||
|   useEffect(() => { | ||||
|   const fetchFilterClientSessions = async () => { | ||||
|     filterClientSessions({ | ||||
|       variables: { customerId, locationIds: checkedLocations, equipmentType: 'AP' }, | ||||
|       errorPolicy: 'all', | ||||
|       onError: e => { | ||||
|         e.forEach(({ message }) => { | ||||
|           notification.error({ | ||||
|             message: 'Error', | ||||
|             description: message, | ||||
|           }); | ||||
|         }); | ||||
|       }, | ||||
|     }); | ||||
|   }; | ||||
|  | ||||
|   useEffect(() => { | ||||
|     fetchFilterClientSessions(); | ||||
|   }, [checkedLocations]); | ||||
|  | ||||
|   if (loading) { | ||||
|     return <Loading />; | ||||
|   } | ||||
|  | ||||
|   if (error && !(data && data.filterClientSessions && data.filterClientSessions.items)) { | ||||
|   if (error && !data?.filterClientSessions?.items) { | ||||
|     return ( | ||||
|       <Alert message="Error" description="Failed to load client devices." type="error" showIcon /> | ||||
|     ); | ||||
|   | ||||
							
								
								
									
										87
									
								
								app/containers/System/containers/AutoProvision/index.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								app/containers/System/containers/AutoProvision/index.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | ||||
| import React, { useContext } from 'react'; | ||||
| import { useQuery, useMutation } from '@apollo/react-hooks'; | ||||
| import { Alert, notification } from 'antd'; | ||||
| import { AutoProvision as AutoProvisionPage, Loading } from '@tip-wlan/wlan-cloud-ui-library'; | ||||
|  | ||||
| import UserContext from 'contexts/UserContext'; | ||||
| import { GET_CUSTOMER, GET_ALL_LOCATIONS, GET_ALL_PROFILES } from 'graphql/queries'; | ||||
| import { UPDATE_CUSTOMER } from 'graphql/mutations'; | ||||
|  | ||||
| const AutoProvision = () => { | ||||
|   const { customerId } = useContext(UserContext); | ||||
|   const { data, loading, error, refetch } = useQuery(GET_CUSTOMER, { | ||||
|     variables: { id: customerId }, | ||||
|   }); | ||||
|   const [updateCustomer] = useMutation(UPDATE_CUSTOMER); | ||||
|  | ||||
|   const { data: dataLocation, loading: loadingLoaction, error: errorLocation } = useQuery( | ||||
|     GET_ALL_LOCATIONS, | ||||
|     { | ||||
|       variables: { customerId }, | ||||
|     } | ||||
|   ); | ||||
|   const { data: dataProfile, loading: loadingProfile, error: errorProfile } = useQuery( | ||||
|     GET_ALL_PROFILES, | ||||
|     { | ||||
|       variables: { customerId, type: 'equipment_ap' }, | ||||
|     } | ||||
|   ); | ||||
|  | ||||
|   const handleUpdateCustomer = ( | ||||
|     id, | ||||
|     email, | ||||
|     name, | ||||
|     details, | ||||
|     createdTimestamp, | ||||
|     lastModifiedTimestamp | ||||
|   ) => { | ||||
|     updateCustomer({ | ||||
|       variables: { | ||||
|         id, | ||||
|         email, | ||||
|         name, | ||||
|         details, | ||||
|         createdTimestamp, | ||||
|         lastModifiedTimestamp, | ||||
|       }, | ||||
|     }) | ||||
|       .then(() => { | ||||
|         refetch(); | ||||
|         notification.success({ | ||||
|           message: 'Success', | ||||
|           description: 'Settings successfully updated.', | ||||
|         }); | ||||
|       }) | ||||
|       .catch(() => | ||||
|         notification.error({ | ||||
|           message: 'Error', | ||||
|           description: 'Settings could not be updated.', | ||||
|         }) | ||||
|       ); | ||||
|   }; | ||||
|  | ||||
|   if (loading) { | ||||
|     return <Loading />; | ||||
|   } | ||||
|  | ||||
|   if (error) { | ||||
|     return ( | ||||
|       <Alert message="Error" description="Failed to load Customer Data." type="error" showIcon /> | ||||
|     ); | ||||
|   } | ||||
|  | ||||
|   return ( | ||||
|     <AutoProvisionPage | ||||
|       data={data && data.getCustomer} | ||||
|       dataLocation={dataLocation && dataLocation.getAllLocations} | ||||
|       dataProfile={dataProfile && dataProfile.getAllProfiles.items} | ||||
|       loadingLoaction={loadingLoaction} | ||||
|       loadingProfile={loadingProfile} | ||||
|       errorLocation={errorLocation} | ||||
|       errorProfile={errorProfile} | ||||
|       onUpdateCustomer={handleUpdateCustomer} | ||||
|     /> | ||||
|   ); | ||||
| }; | ||||
|  | ||||
| export default AutoProvision; | ||||
| @@ -43,6 +43,7 @@ const Firmware = () => { | ||||
|     data: firmwareModelData, | ||||
|     error: firmwareModelError, | ||||
|     loading: firmwareModelLoading, | ||||
|     refetch: refetchFirmwareModels, | ||||
|   } = useQuery(GET_ALL_FIRMWARE_MODELS); | ||||
|  | ||||
|   const [updateTrackAssignment] = useMutation(UPDATE_TRACK_ASSIGNMENT); | ||||
| @@ -67,13 +68,13 @@ const Firmware = () => { | ||||
|         refetchAssignmentData(); | ||||
|         notification.success({ | ||||
|           message: 'Success', | ||||
|           description: 'Track Assignment successfully created.', | ||||
|           description: 'Model Target Version successfully created.', | ||||
|         }); | ||||
|       }) | ||||
|       .catch(() => | ||||
|         notification.error({ | ||||
|           message: 'Error', | ||||
|           description: 'Track Assignment could not be created.', | ||||
|           description: 'Model Target Version could not be created.', | ||||
|         }) | ||||
|       ); | ||||
|   }; | ||||
| @@ -97,13 +98,13 @@ const Firmware = () => { | ||||
|         refetchAssignmentData(); | ||||
|         notification.success({ | ||||
|           message: 'Success', | ||||
|           description: 'Track Assignment successfully updated.', | ||||
|           description: 'Model Target Version successfully updated.', | ||||
|         }); | ||||
|       }) | ||||
|       .catch(() => | ||||
|         notification.error({ | ||||
|           message: 'Error', | ||||
|           description: 'Track Assignment could not be updated.', | ||||
|           description: 'Model Target Version could not be updated.', | ||||
|         }) | ||||
|       ); | ||||
|   }; | ||||
| @@ -119,13 +120,13 @@ const Firmware = () => { | ||||
|         refetchAssignmentData(); | ||||
|         notification.success({ | ||||
|           message: 'Success', | ||||
|           description: 'Track Assignment successfully deleted.', | ||||
|           description: 'Model Target Version successfully deleted.', | ||||
|         }); | ||||
|       }) | ||||
|       .catch(() => | ||||
|         notification.error({ | ||||
|           message: 'Error', | ||||
|           description: 'Track Assignment could not be deleted.', | ||||
|           description: 'Model Target Version could not be deleted.', | ||||
|         }) | ||||
|       ); | ||||
|   }; | ||||
| @@ -151,6 +152,7 @@ const Firmware = () => { | ||||
|     }) | ||||
|       .then(() => { | ||||
|         refetch(); | ||||
|         refetchFirmwareModels(); | ||||
|         notification.success({ | ||||
|           message: 'Success', | ||||
|           description: 'Firmware version successfully created.', | ||||
| @@ -192,6 +194,7 @@ const Firmware = () => { | ||||
|     }) | ||||
|       .then(() => { | ||||
|         refetch(); | ||||
|         refetchFirmwareModels(); | ||||
|         notification.success({ | ||||
|           message: 'Success', | ||||
|           description: 'Firmware version successfully updated.', | ||||
| @@ -213,6 +216,7 @@ const Firmware = () => { | ||||
|     }) | ||||
|       .then(() => { | ||||
|         refetch(); | ||||
|         refetchFirmwareModels(); | ||||
|         notification.success({ | ||||
|           message: 'Success', | ||||
|           description: 'Firmware version successfully deleted.', | ||||
|   | ||||
| @@ -68,11 +68,18 @@ const System = () => { | ||||
|  | ||||
|   const handleFileUpload = (fileName, file) => | ||||
|     fileUpload({ variables: { fileName, file } }) | ||||
|       .then(() => { | ||||
|         notification.success({ | ||||
|           message: 'Success', | ||||
|           description: 'File successfully uploaded.', | ||||
|         }); | ||||
|       .then(resp => { | ||||
|         if (resp?.ouiUpload?.success) { | ||||
|           notification.success({ | ||||
|             message: 'Success', | ||||
|             description: 'File successfully uploaded.', | ||||
|           }); | ||||
|         } else { | ||||
|           notification.error({ | ||||
|             message: 'Error', | ||||
|             description: 'File could not be uploaded.', | ||||
|           }); | ||||
|         } | ||||
|       }) | ||||
|       .catch(() => | ||||
|         notification.error({ | ||||
|   | ||||
| @@ -5,6 +5,7 @@ import { System as SystemPage } from '@tip-wlan/wlan-cloud-ui-library'; | ||||
|  | ||||
| import Manufacturer from 'containers/System/containers/Manufacturer'; | ||||
| import Firmware from 'containers/System/containers/Firmware'; | ||||
| import AutoProvision from 'containers/System/containers/AutoProvision'; | ||||
|  | ||||
| const System = () => { | ||||
|   const { path } = useRouteMatch(); | ||||
| @@ -14,6 +15,7 @@ const System = () => { | ||||
|       <Switch> | ||||
|         <Route exact path={`${path}/manufacturer`} component={Manufacturer} /> | ||||
|         <Route exact path={`${path}/firmware`} component={Firmware} /> | ||||
|         <Route exact path={`${path}/autoprovision`} component={AutoProvision} /> | ||||
|  | ||||
|         <Redirect from={path} to={`${path}/manufacturer`} /> | ||||
|       </Switch> | ||||
|   | ||||
| @@ -86,8 +86,7 @@ export const FILE_UPLOAD = gql` | ||||
| export const OUI_UPLOAD = gql` | ||||
|   mutation OuiUpload($fileName: String, $file: Upload) { | ||||
|     ouiUpload(fileName: $fileName, file: $file) { | ||||
|       fileName | ||||
|       baseUrl | ||||
|       success | ||||
|     } | ||||
|   } | ||||
| `; | ||||
| @@ -239,3 +238,30 @@ export const CREATE_EQUIPMENT = gql` | ||||
|     } | ||||
|   } | ||||
| `; | ||||
|  | ||||
| export const UPDATE_CUSTOMER = gql` | ||||
|   mutation UpdateCustomer( | ||||
|     $id: ID! | ||||
|     $email: String! | ||||
|     $name: String! | ||||
|     $details: JSONObject | ||||
|     $createdTimestamp: String | ||||
|     $lastModifiedTimestamp: String | ||||
|   ) { | ||||
|     updateCustomer( | ||||
|       id: $id | ||||
|       email: $email | ||||
|       name: $name | ||||
|       details: $details | ||||
|       createdTimestamp: $createdTimestamp | ||||
|       lastModifiedTimestamp: $lastModifiedTimestamp | ||||
|     ) { | ||||
|       id | ||||
|       email | ||||
|       name | ||||
|       details | ||||
|       createdTimestamp | ||||
|       lastModifiedTimestamp | ||||
|     } | ||||
|   } | ||||
| `; | ||||
|   | ||||
| @@ -163,6 +163,7 @@ export const FILTER_SERVICE_METRICS = gql` | ||||
|     $clientMacs: [String] | ||||
|     $equipmentIds: [ID] | ||||
|     $dataTypes: [String] | ||||
|     $limit: Int | ||||
|   ) { | ||||
|     filterServiceMetrics( | ||||
|       customerId: $customerId | ||||
| @@ -172,6 +173,7 @@ export const FILTER_SERVICE_METRICS = gql` | ||||
|       clientMacs: $clientMacs | ||||
|       equipmentIds: $equipmentIds | ||||
|       dataTypes: $dataTypes | ||||
|       limit: $limit | ||||
|     ) { | ||||
|       items { | ||||
|         dataType | ||||
| @@ -275,6 +277,19 @@ export const GET_ALARM_COUNT = gql` | ||||
|   } | ||||
| `; | ||||
|  | ||||
| export const GET_CUSTOMER = gql` | ||||
|   query GetCustomer($id: ID!) { | ||||
|     getCustomer(id: $id) { | ||||
|       id | ||||
|       name | ||||
|       email | ||||
|       createdTimestamp | ||||
|       lastModifiedTimestamp | ||||
|       details | ||||
|     } | ||||
|   } | ||||
| `; | ||||
|  | ||||
| export const FILTER_SYSTEM_EVENTS = gql` | ||||
|   query FilterSystemEvents( | ||||
|     $customerId: ID! | ||||
|   | ||||
							
								
								
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										8
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "wlan-cloud-ui", | ||||
|   "version": "0.2.1", | ||||
|   "version": "0.2.3", | ||||
|   "lockfileVersion": 1, | ||||
|   "requires": true, | ||||
|   "dependencies": { | ||||
| @@ -1874,9 +1874,9 @@ | ||||
|       } | ||||
|     }, | ||||
|     "@tip-wlan/wlan-cloud-ui-library": { | ||||
|       "version": "0.2.1", | ||||
|       "resolved": "https://tip.jfrog.io/artifactory/api/npm/tip-wlan-cloud-npm-repo/@tip-wlan/wlan-cloud-ui-library/-/@tip-wlan/wlan-cloud-ui-library-0.2.1.tgz", | ||||
|       "integrity": "sha1-erMcjUClH8GattvLkFOnhN72kpA=" | ||||
|       "version": "0.2.3", | ||||
|       "resolved": "https://tip.jfrog.io/artifactory/api/npm/tip-wlan-cloud-npm-repo/@tip-wlan/wlan-cloud-ui-library/-/@tip-wlan/wlan-cloud-ui-library-0.2.3.tgz", | ||||
|       "integrity": "sha1-m/aF8DLiaeGF8UDtECAabipk2P0=" | ||||
|     }, | ||||
|     "@types/anymatch": { | ||||
|       "version": "1.3.1", | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "wlan-cloud-ui", | ||||
|   "version": "0.2.1", | ||||
|   "version": "0.2.3", | ||||
|   "author": "ConnectUs", | ||||
|   "description": "React Portal", | ||||
|   "engines": { | ||||
| @@ -20,7 +20,7 @@ | ||||
|     "@ant-design/icons": "^4.2.1", | ||||
|     "@apollo/react-hoc": "^3.1.4", | ||||
|     "@apollo/react-hooks": "^3.1.3", | ||||
|     "@tip-wlan/wlan-cloud-ui-library": "^0.2.1", | ||||
|     "@tip-wlan/wlan-cloud-ui-library": "^0.2.3", | ||||
|     "antd": "^4.3.1", | ||||
|     "apollo-cache-inmemory": "^1.6.6", | ||||
|     "apollo-client": "^2.6.10", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Alidev123
					Alidev123