Client Page
The client page of the Adroit Manager Frontend is located at iot-frontend/src/pages/client-page/[clientPage].tsx
. It displays detailed information about a specific client.
Fetching Client ID
The client page fetches the client ID from the URL using the fetchIdAndType
function:
function fetchIdAndType() {
// Fetches ID from URL
const pathname = usePathname();
const parts = pathname ? pathname.split('/') : [];
const id = parts[parts.length - 1]
? parseInt(parts[parts.length - 1] as string)
: 0;
// Determine the ID type based on the URL path
const isClientId = parts.includes('client-page');
const isDeviceId = parts.includes('device-info');
const idType = isClientId ? 'client' : isDeviceId ? 'device' : '';
return { id, type: idType };
}
This function extracts the ID from the URL and determines the ID type based on the URL path. If the URL includes "client-page", it sets the ID type as "client". If the URL includes "device-info", it sets the ID type as "device". Otherwise, the ID type is an empty string.
Authentication Check
The client page requires authentication. It checks the authentication status using the isLoading
and isAuthenticated
variables.
if (isLoading) {
return (
<>
<LoadingIndicator />
</>
);
}
if (isAuthenticated) {
return (
<>
<SEO title={title} description={description} />
<Header />
{/* Client page content */}
</>
);
} else {
return <LoginScreen />;
}
If isLoading
is true
, a LoadingIndicator
component is rendered to indicate that the page is loading.
If isAuthenticated
is true
, the client page content is rendered, including the SEO
component for setting the page title and description, and the Header
component.
If isAuthenticated
is false
, the LoginScreen
component is rendered, prompting the user to log in.
Client Page Content
The client page displays various information about the client, such as:
- Client name
- Client ID
- Total devices associated with the client
- Metrics related to the client
- Sites where the client's IoT devices are deployed
- Basic client details
The specific implementation of rendering this information depends on the structure and data available in your application.