From 930653c86d66b7e0f144d506909856636c40649d Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Mon, 6 Mar 2023 20:26:43 +0000 Subject: [PATCH] feat: show usage data --- .../UsageDataInformation/index.ee.tsx | 49 +++++++++++++++++++ .../src/graphql/queries/get-usage-data.ee.ts | 13 +++++ packages/web/src/hooks/useUsageData.ee.ts | 28 +++++++++++ .../BillingAndUsageSettings/index.ee.tsx | 7 ++- 4 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 packages/web/src/components/UsageDataInformation/index.ee.tsx create mode 100644 packages/web/src/graphql/queries/get-usage-data.ee.ts create mode 100644 packages/web/src/hooks/useUsageData.ee.ts diff --git a/packages/web/src/components/UsageDataInformation/index.ee.tsx b/packages/web/src/components/UsageDataInformation/index.ee.tsx new file mode 100644 index 00000000..9bc85b92 --- /dev/null +++ b/packages/web/src/components/UsageDataInformation/index.ee.tsx @@ -0,0 +1,49 @@ +import * as React from 'react'; +import { DateTime } from 'luxon'; + +import Paper from '@mui/material/Paper'; +import Table from '@mui/material/Table'; +import TableBody from '@mui/material/TableBody'; +import TableCell from '@mui/material/TableCell'; +import TableContainer from '@mui/material/TableContainer'; +import TableRow from '@mui/material/TableRow'; + +import useUsageData from 'hooks/useUsageData.ee'; + +export default function UsageDataInformation() { + const usageData = useUsageData(); + + return ( + + + + + + + Total allowed task count + + + {usageData.allowedTaskCount} + + + + + Consumed task count + + + {usageData.consumedTaskCount} + + + + + Next billing date + + + {usageData.nextResetAt?.toLocaleString(DateTime.DATE_FULL)} + + +
+
+
+ ); +} diff --git a/packages/web/src/graphql/queries/get-usage-data.ee.ts b/packages/web/src/graphql/queries/get-usage-data.ee.ts new file mode 100644 index 00000000..7f410ca2 --- /dev/null +++ b/packages/web/src/graphql/queries/get-usage-data.ee.ts @@ -0,0 +1,13 @@ +import { gql } from '@apollo/client'; + +export const GET_USAGE_DATA = gql` + query GetUsageData { + getUsageData { + allowedTaskCount + consumedTaskCount + remainingTaskCount + nextResetAt + } + } +`; + diff --git a/packages/web/src/hooks/useUsageData.ee.ts b/packages/web/src/hooks/useUsageData.ee.ts new file mode 100644 index 00000000..7880dc19 --- /dev/null +++ b/packages/web/src/hooks/useUsageData.ee.ts @@ -0,0 +1,28 @@ +import { useQuery } from '@apollo/client'; +import { DateTime } from 'luxon'; + +import { GET_USAGE_DATA } from 'graphql/queries/get-usage-data.ee'; + +type UseUsageDataReturn = { + allowedTaskCount: number; + consumedTaskCount: number; + remainingTaskCount: number; + nextResetAt: DateTime; + loading: boolean; +}; + +export default function useUsageData(): UseUsageDataReturn { + const { data, loading } = useQuery(GET_USAGE_DATA); + + const usageData = data?.getUsageData; + const nextResetAt = usageData?.nextResetAt; + const nextResetAtDateTimeObject = nextResetAt && DateTime.fromMillis(Number(nextResetAt)); + + return { + allowedTaskCount: usageData?.allowedTaskCount, + consumedTaskCount: usageData?.consumedTaskCount, + remainingTaskCount: usageData?.remainingTaskCount, + nextResetAt: nextResetAtDateTimeObject, + loading + }; +} diff --git a/packages/web/src/pages/BillingAndUsageSettings/index.ee.tsx b/packages/web/src/pages/BillingAndUsageSettings/index.ee.tsx index 0386fc68..af12fbdf 100644 --- a/packages/web/src/pages/BillingAndUsageSettings/index.ee.tsx +++ b/packages/web/src/pages/BillingAndUsageSettings/index.ee.tsx @@ -4,6 +4,7 @@ import Grid from '@mui/material/Grid'; import * as URLS from 'config/urls' import PaymentInformation from 'components/PaymentInformation/index.ee'; +import UsageDataInformation from 'components/UsageDataInformation/index.ee'; import PageTitle from 'components/PageTitle'; import Container from 'components/Container'; import useFormatMessage from 'hooks/useFormatMessage'; @@ -29,7 +30,11 @@ function BillingAndUsageSettings() { {formatMessage('billingAndUsageSettings.title')} - + + + + +