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