@burdenoff/microfe-assethandler 2026.510.104
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -0
- package/dist/assethandler/AssetHandlerRoot.d.ts +5 -0
- package/dist/assethandler/AssetHandlerRoot.d.ts.map +1 -0
- package/dist/assethandler/AssetHandlerRoot.js +159 -0
- package/dist/assethandler/AssetHandlerRoot.js.map +1 -0
- package/dist/assethandler/AssetHandlerRoutes.d.ts +2 -0
- package/dist/assethandler/AssetHandlerRoutes.d.ts.map +1 -0
- package/dist/assethandler/AssetHandlerRoutes.js +255 -0
- package/dist/assethandler/AssetHandlerRoutes.js.map +1 -0
- package/dist/assethandler/index.d.ts +5 -0
- package/dist/assethandler/index.d.ts.map +1 -0
- package/dist/assethandler/index.js +3 -0
- package/dist/assethandler/pages/AiPredictionsPage.d.ts +2 -0
- package/dist/assethandler/pages/AiPredictionsPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AiPredictionsPage.js +133 -0
- package/dist/assethandler/pages/AiPredictionsPage.js.map +1 -0
- package/dist/assethandler/pages/AnalyticsPage.d.ts +2 -0
- package/dist/assethandler/pages/AnalyticsPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AnalyticsPage.js +576 -0
- package/dist/assethandler/pages/AnalyticsPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.js +162 -0
- package/dist/assethandler/pages/AssetsAssetCategoriesPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js +249 -0
- package/dist/assethandler/pages/AssetsAssetCheckInOutPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCreatePage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetCreatePage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetCreatePage.js +323 -0
- package/dist/assethandler/pages/AssetsAssetCreatePage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetDetailPage.js +392 -0
- package/dist/assethandler/pages/AssetsAssetDetailPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetEditPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetEditPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetEditPage.js +341 -0
- package/dist/assethandler/pages/AssetsAssetEditPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetListPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetListPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetListPage.js +459 -0
- package/dist/assethandler/pages/AssetsAssetListPage.js.map +1 -0
- package/dist/assethandler/pages/AssetsAssetTrackingPage.d.ts +2 -0
- package/dist/assethandler/pages/AssetsAssetTrackingPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AssetsAssetTrackingPage.js +166 -0
- package/dist/assethandler/pages/AssetsAssetTrackingPage.js.map +1 -0
- package/dist/assethandler/pages/AuditTrailPage.d.ts +2 -0
- package/dist/assethandler/pages/AuditTrailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/AuditTrailPage.js +197 -0
- package/dist/assethandler/pages/AuditTrailPage.js.map +1 -0
- package/dist/assethandler/pages/CmdbBrowserPage.d.ts +2 -0
- package/dist/assethandler/pages/CmdbBrowserPage.d.ts.map +1 -0
- package/dist/assethandler/pages/CmdbBrowserPage.js +75 -0
- package/dist/assethandler/pages/CmdbBrowserPage.js.map +1 -0
- package/dist/assethandler/pages/DashboardPage.d.ts +2 -0
- package/dist/assethandler/pages/DashboardPage.d.ts.map +1 -0
- package/dist/assethandler/pages/DashboardPage.js +336 -0
- package/dist/assethandler/pages/DashboardPage.js.map +1 -0
- package/dist/assethandler/pages/DigitalTwinPage.d.ts +2 -0
- package/dist/assethandler/pages/DigitalTwinPage.d.ts.map +1 -0
- package/dist/assethandler/pages/DigitalTwinPage.js +71 -0
- package/dist/assethandler/pages/DigitalTwinPage.js.map +1 -0
- package/dist/assethandler/pages/DiscoveryJobsPage.d.ts +2 -0
- package/dist/assethandler/pages/DiscoveryJobsPage.d.ts.map +1 -0
- package/dist/assethandler/pages/DiscoveryJobsPage.js +115 -0
- package/dist/assethandler/pages/DiscoveryJobsPage.js.map +1 -0
- package/dist/assethandler/pages/EsgDashboardPage.d.ts +2 -0
- package/dist/assethandler/pages/EsgDashboardPage.d.ts.map +1 -0
- package/dist/assethandler/pages/EsgDashboardPage.js +130 -0
- package/dist/assethandler/pages/EsgDashboardPage.js.map +1 -0
- package/dist/assethandler/pages/FinanceBudgetDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/FinanceBudgetDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js +182 -0
- package/dist/assethandler/pages/FinanceBudgetDetailPage.js.map +1 -0
- package/dist/assethandler/pages/FinanceFinanceHubPage.d.ts +2 -0
- package/dist/assethandler/pages/FinanceFinanceHubPage.d.ts.map +1 -0
- package/dist/assethandler/pages/FinanceFinanceHubPage.js +324 -0
- package/dist/assethandler/pages/FinanceFinanceHubPage.js.map +1 -0
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.js +172 -0
- package/dist/assethandler/pages/FinanceInvoiceDetailPage.js.map +1 -0
- package/dist/assethandler/pages/IotDevicesPage.d.ts +2 -0
- package/dist/assethandler/pages/IotDevicesPage.d.ts.map +1 -0
- package/dist/assethandler/pages/IotDevicesPage.js +80 -0
- package/dist/assethandler/pages/IotDevicesPage.js.map +1 -0
- package/dist/assethandler/pages/ItilChangeDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilChangeDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilChangeDetailPage.js +221 -0
- package/dist/assethandler/pages/ItilChangeDetailPage.js.map +1 -0
- package/dist/assethandler/pages/ItilChangeManagementPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilChangeManagementPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilChangeManagementPage.js +179 -0
- package/dist/assethandler/pages/ItilChangeManagementPage.js.map +1 -0
- package/dist/assethandler/pages/ItilIncidentDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilIncidentDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilIncidentDetailPage.js +222 -0
- package/dist/assethandler/pages/ItilIncidentDetailPage.js.map +1 -0
- package/dist/assethandler/pages/ItilIncidentManagementPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilIncidentManagementPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilIncidentManagementPage.js +265 -0
- package/dist/assethandler/pages/ItilIncidentManagementPage.js.map +1 -0
- package/dist/assethandler/pages/ItilItilhubPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilItilhubPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilItilhubPage.js +374 -0
- package/dist/assethandler/pages/ItilItilhubPage.js.map +1 -0
- package/dist/assethandler/pages/ItilProblemDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilProblemDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilProblemDetailPage.js +177 -0
- package/dist/assethandler/pages/ItilProblemDetailPage.js.map +1 -0
- package/dist/assethandler/pages/ItilProblemManagementPage.d.ts +2 -0
- package/dist/assethandler/pages/ItilProblemManagementPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ItilProblemManagementPage.js +167 -0
- package/dist/assethandler/pages/ItilProblemManagementPage.js.map +1 -0
- package/dist/assethandler/pages/KnowledgeBasePage.d.ts +2 -0
- package/dist/assethandler/pages/KnowledgeBasePage.d.ts.map +1 -0
- package/dist/assethandler/pages/KnowledgeBasePage.js +116 -0
- package/dist/assethandler/pages/KnowledgeBasePage.js.map +1 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.d.ts +2 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js +185 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceCalendarPage.js.map +1 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.d.ts +2 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js +133 -0
- package/dist/assethandler/pages/MaintenanceMaintenanceSchedulerPage.js.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js +166 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceDetailPage.js.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.d.ts +2 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js +155 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceListPage.js.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.d.ts +2 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js +126 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceOrdersPage.js.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.d.ts +2 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.d.ts.map +1 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js +157 -0
- package/dist/assethandler/pages/MarketplaceMarketplaceSellPage.js.map +1 -0
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js +179 -0
- package/dist/assethandler/pages/OperationsMaintenanceDetailPage.js.map +1 -0
- package/dist/assethandler/pages/OperationsOperationsHubPage.d.ts +2 -0
- package/dist/assethandler/pages/OperationsOperationsHubPage.d.ts.map +1 -0
- package/dist/assethandler/pages/OperationsOperationsHubPage.js +291 -0
- package/dist/assethandler/pages/OperationsOperationsHubPage.js.map +1 -0
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js +172 -0
- package/dist/assethandler/pages/OperationsWorkOrderDetailPage.js.map +1 -0
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.d.ts +2 -0
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.d.ts.map +1 -0
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js +203 -0
- package/dist/assethandler/pages/PortfolioPortfolioOverviewPage.js.map +1 -0
- package/dist/assethandler/pages/ProvenancePage.d.ts +2 -0
- package/dist/assethandler/pages/ProvenancePage.d.ts.map +1 -0
- package/dist/assethandler/pages/ProvenancePage.js +118 -0
- package/dist/assethandler/pages/ProvenancePage.js.map +1 -0
- package/dist/assethandler/pages/ReportsReportBuilderPage.d.ts +2 -0
- package/dist/assethandler/pages/ReportsReportBuilderPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ReportsReportBuilderPage.js +201 -0
- package/dist/assethandler/pages/ReportsReportBuilderPage.js.map +1 -0
- package/dist/assethandler/pages/ReportsReportsDashboardPage.d.ts +2 -0
- package/dist/assethandler/pages/ReportsReportsDashboardPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ReportsReportsDashboardPage.js +201 -0
- package/dist/assethandler/pages/ReportsReportsDashboardPage.js.map +1 -0
- package/dist/assethandler/pages/ReportsReportsListPage.d.ts +2 -0
- package/dist/assethandler/pages/ReportsReportsListPage.d.ts.map +1 -0
- package/dist/assethandler/pages/ReportsReportsListPage.js +128 -0
- package/dist/assethandler/pages/ReportsReportsListPage.js.map +1 -0
- package/dist/assethandler/pages/SamLicensesPage.d.ts +2 -0
- package/dist/assethandler/pages/SamLicensesPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SamLicensesPage.js +79 -0
- package/dist/assethandler/pages/SamLicensesPage.js.map +1 -0
- package/dist/assethandler/pages/SecurityComplianceDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/SecurityComplianceDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SecurityComplianceDetailPage.js +109 -0
- package/dist/assethandler/pages/SecurityComplianceDetailPage.js.map +1 -0
- package/dist/assethandler/pages/SecurityPolicyDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/SecurityPolicyDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SecurityPolicyDetailPage.js +133 -0
- package/dist/assethandler/pages/SecurityPolicyDetailPage.js.map +1 -0
- package/dist/assethandler/pages/SecurityScheduleBackupPage.d.ts +2 -0
- package/dist/assethandler/pages/SecurityScheduleBackupPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SecurityScheduleBackupPage.js +143 -0
- package/dist/assethandler/pages/SecurityScheduleBackupPage.js.map +1 -0
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js +135 -0
- package/dist/assethandler/pages/SecuritySecurityEventDetailPage.js.map +1 -0
- package/dist/assethandler/pages/SecuritySecurityHubPage.d.ts +2 -0
- package/dist/assethandler/pages/SecuritySecurityHubPage.d.ts.map +1 -0
- package/dist/assethandler/pages/SecuritySecurityHubPage.js +355 -0
- package/dist/assethandler/pages/SecuritySecurityHubPage.js.map +1 -0
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.d.ts +2 -0
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.d.ts.map +1 -0
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.js +281 -0
- package/dist/assethandler/pages/TransactionsTransactionDetailPage.js.map +1 -0
- package/dist/assethandler/pages/TransactionsTransactionListPage.d.ts +2 -0
- package/dist/assethandler/pages/TransactionsTransactionListPage.d.ts.map +1 -0
- package/dist/assethandler/pages/TransactionsTransactionListPage.js +220 -0
- package/dist/assethandler/pages/TransactionsTransactionListPage.js.map +1 -0
- package/dist/assethandler/pages/UsersPage.d.ts +2 -0
- package/dist/assethandler/pages/UsersPage.d.ts.map +1 -0
- package/dist/assethandler/pages/UsersPage.js +183 -0
- package/dist/assethandler/pages/UsersPage.js.map +1 -0
- package/dist/assethandler/pages/UsersUserCreatePage.d.ts +2 -0
- package/dist/assethandler/pages/UsersUserCreatePage.d.ts.map +1 -0
- package/dist/assethandler/pages/UsersUserCreatePage.js +213 -0
- package/dist/assethandler/pages/UsersUserCreatePage.js.map +1 -0
- package/dist/assethandler/pages/UsersUserManagementHubPage.d.ts +2 -0
- package/dist/assethandler/pages/UsersUserManagementHubPage.d.ts.map +1 -0
- package/dist/assethandler/pages/UsersUserManagementHubPage.js +325 -0
- package/dist/assethandler/pages/UsersUserManagementHubPage.js.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.d.ts +2 -0
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.d.ts.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js +246 -0
- package/dist/assethandler/pages/WorkflowsWorkflowBuilderPage.js.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.d.ts +2 -0
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.d.ts.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js +188 -0
- package/dist/assethandler/pages/WorkflowsWorkflowExecutionsPage.js.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.d.ts +2 -0
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.d.ts.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.js +163 -0
- package/dist/assethandler/pages/WorkflowsWorkflowListPage.js.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.d.ts +2 -0
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.d.ts.map +1 -0
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js +158 -0
- package/dist/assethandler/pages/WorkflowsWorkflowTemplatesPage.js.map +1 -0
- package/dist/assethandler/providers/AssetHandlerProvider.d.ts +6 -0
- package/dist/assethandler/providers/AssetHandlerProvider.d.ts.map +1 -0
- package/dist/assethandler/providers/AssetHandlerProvider.js +214 -0
- package/dist/assethandler/providers/AssetHandlerProvider.js.map +1 -0
- package/dist/assethandler/store/assethandlerStore.d.ts +635 -0
- package/dist/assethandler/store/assethandlerStore.d.ts.map +1 -0
- package/dist/assethandler/store/assethandlerStore.js +2337 -0
- package/dist/assethandler/store/assethandlerStore.js.map +1 -0
- package/dist/assethandler/types/index.d.ts +56 -0
- package/dist/assethandler/types/index.d.ts.map +1 -0
- package/dist/assethandler/utils/cn.d.ts +4 -0
- package/dist/assethandler/utils/cn.d.ts.map +1 -0
- package/dist/assethandler/utils/i18n.d.ts +6 -0
- package/dist/assethandler/utils/i18n.d.ts.map +1 -0
- package/dist/assethandler/utils/i18n.js +9 -0
- package/dist/assethandler/utils/i18n.js.map +1 -0
- package/dist/assethandler/utils/navigation.d.ts +2 -0
- package/dist/assethandler/utils/navigation.d.ts.map +1 -0
- package/dist/assethandler/utils/navigation.js +8 -0
- package/dist/assethandler/utils/navigation.js.map +1 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +20716 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +210 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +53363 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/package.json +108 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import { useAssetHandlerStore as e } from "../store/assethandlerStore.js";
|
|
2
|
+
import { tWithFallback as t } from "../utils/i18n.js";
|
|
3
|
+
import { useState as n } from "react";
|
|
4
|
+
import { Activity as r, AlertTriangle as i, ArrowDownRight as a, ArrowUpRight as o, Box as s, CheckCircle as c, Clock as l, DollarSign as u, Shield as d, Wrench as f } from "lucide-react";
|
|
5
|
+
import { Badge as p, Button as m, Card as h, CardContent as g, CardDescription as _, CardHeader as v, CardTitle as y, Separator as b } from "@burdenoff/fe-libs/ui";
|
|
6
|
+
import { useI18n as x } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
7
|
+
import { jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
8
|
+
//#region src/assethandler/pages/DashboardPage.tsx
|
|
9
|
+
function w() {
|
|
10
|
+
let { t: w } = x(), { metrics: T, workItems: E, assets: D, incidents: O, maintenanceRecords: k, notifications: A, portfolio: j, changeRequests: M, workflows: N } = e(), [P] = n("This Month"), F = O.filter((e) => e.status !== "resolved" && e.status !== "closed"), I = O.filter((e) => e.priority === "critical" && e.status !== "resolved"), L = k.filter((e) => e.status === "scheduled" || e.status === "in_progress"), R = A.filter((e) => !e.isRead), z = N.filter((e) => e.status === "active");
|
|
11
|
+
return /* @__PURE__ */ C("div", {
|
|
12
|
+
className: "space-y-6 p-6",
|
|
13
|
+
children: [
|
|
14
|
+
/* @__PURE__ */ C("div", {
|
|
15
|
+
className: "flex items-center justify-between",
|
|
16
|
+
children: [/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("h1", {
|
|
17
|
+
className: "text-3xl font-bold",
|
|
18
|
+
children: t(w, "assethandler.dashboard.title", "Dashboard")
|
|
19
|
+
}), /* @__PURE__ */ S("p", {
|
|
20
|
+
className: "text-sm text-muted-foreground mt-1",
|
|
21
|
+
children: t(w, "assethandler.dashboard.description", "Overview of your IT asset portfolio and operations")
|
|
22
|
+
})] }), /* @__PURE__ */ C("div", {
|
|
23
|
+
className: "flex gap-2",
|
|
24
|
+
children: [/* @__PURE__ */ S(m, {
|
|
25
|
+
variant: "outline",
|
|
26
|
+
size: "sm",
|
|
27
|
+
children: t(w, "assethandler.dashboard.actions.exportReport", "Export Report")
|
|
28
|
+
}), /* @__PURE__ */ S(m, {
|
|
29
|
+
size: "sm",
|
|
30
|
+
children: t(w, "assethandler.dashboard.actions.addAsset", "Add Asset")
|
|
31
|
+
})]
|
|
32
|
+
})]
|
|
33
|
+
}),
|
|
34
|
+
/* @__PURE__ */ S("div", {
|
|
35
|
+
className: "grid gap-4 md:grid-cols-2 lg:grid-cols-4",
|
|
36
|
+
children: T.map((e, n) => {
|
|
37
|
+
let c = [
|
|
38
|
+
s,
|
|
39
|
+
i,
|
|
40
|
+
d,
|
|
41
|
+
u
|
|
42
|
+
][n] || r, l = e.trend.startsWith("+");
|
|
43
|
+
return /* @__PURE__ */ C(h, { children: [/* @__PURE__ */ C(v, {
|
|
44
|
+
className: "flex flex-row items-center justify-between space-y-0 pb-2",
|
|
45
|
+
children: [/* @__PURE__ */ S(y, {
|
|
46
|
+
className: "text-sm font-medium",
|
|
47
|
+
children: e.label
|
|
48
|
+
}), /* @__PURE__ */ S(c, { className: "h-4 w-4 text-muted-foreground" })]
|
|
49
|
+
}), /* @__PURE__ */ C(g, { children: [/* @__PURE__ */ S("div", {
|
|
50
|
+
className: "text-2xl font-bold",
|
|
51
|
+
children: e.value
|
|
52
|
+
}), /* @__PURE__ */ C("div", {
|
|
53
|
+
className: "flex items-center text-xs text-muted-foreground mt-1",
|
|
54
|
+
children: [
|
|
55
|
+
l ? /* @__PURE__ */ S(o, { className: "mr-1 h-3 w-3 text-green-600" }) : /* @__PURE__ */ S(a, { className: "mr-1 h-3 w-3 text-red-600" }),
|
|
56
|
+
/* @__PURE__ */ S("span", {
|
|
57
|
+
className: l ? "text-green-600" : "text-red-600",
|
|
58
|
+
children: e.trend
|
|
59
|
+
}),
|
|
60
|
+
/* @__PURE__ */ S("span", {
|
|
61
|
+
className: "ml-1",
|
|
62
|
+
children: t(w, "assethandler.dashboard.metrics.fromLastMonth", "from last month")
|
|
63
|
+
})
|
|
64
|
+
]
|
|
65
|
+
})] })] }, e.label);
|
|
66
|
+
})
|
|
67
|
+
}),
|
|
68
|
+
/* @__PURE__ */ C("div", {
|
|
69
|
+
className: "grid gap-6 lg:grid-cols-3",
|
|
70
|
+
children: [/* @__PURE__ */ C(h, {
|
|
71
|
+
className: "lg:col-span-2",
|
|
72
|
+
children: [/* @__PURE__ */ C(v, { children: [/* @__PURE__ */ S(y, { children: t(w, "assethandler.dashboard.portfolio.title", "Portfolio Breakdown") }), /* @__PURE__ */ S(_, { children: t(w, "assethandler.dashboard.portfolio.description", "Asset distribution by category") })] }), /* @__PURE__ */ S(g, { children: /* @__PURE__ */ S("div", {
|
|
73
|
+
className: "space-y-4",
|
|
74
|
+
children: j.byCategory.map((e) => {
|
|
75
|
+
let t = Math.round(e.count / j.totalAssets * 100);
|
|
76
|
+
return /* @__PURE__ */ C("div", {
|
|
77
|
+
className: "space-y-1",
|
|
78
|
+
children: [/* @__PURE__ */ C("div", {
|
|
79
|
+
className: "flex items-center justify-between text-sm",
|
|
80
|
+
children: [/* @__PURE__ */ S("span", {
|
|
81
|
+
className: "font-medium",
|
|
82
|
+
children: e.category
|
|
83
|
+
}), /* @__PURE__ */ C("span", {
|
|
84
|
+
className: "text-muted-foreground",
|
|
85
|
+
children: [
|
|
86
|
+
e.count,
|
|
87
|
+
" assets · $",
|
|
88
|
+
(e.value / 1e3).toFixed(0),
|
|
89
|
+
"K"
|
|
90
|
+
]
|
|
91
|
+
})]
|
|
92
|
+
}), /* @__PURE__ */ S("div", {
|
|
93
|
+
className: "h-2 rounded-full bg-muted overflow-hidden",
|
|
94
|
+
children: /* @__PURE__ */ S("div", {
|
|
95
|
+
className: "h-full rounded-full bg-primary",
|
|
96
|
+
style: { width: `${t}%` }
|
|
97
|
+
})
|
|
98
|
+
})]
|
|
99
|
+
}, e.category);
|
|
100
|
+
})
|
|
101
|
+
}) })]
|
|
102
|
+
}), /* @__PURE__ */ C(h, { children: [/* @__PURE__ */ C(v, { children: [/* @__PURE__ */ C(y, {
|
|
103
|
+
className: "flex items-center gap-2",
|
|
104
|
+
children: [/* @__PURE__ */ S(i, { className: "h-4 w-4 text-destructive" }), t(w, "assethandler.dashboard.incidents.title", "Active Incidents")]
|
|
105
|
+
}), /* @__PURE__ */ C(_, { children: [
|
|
106
|
+
F.length,
|
|
107
|
+
" ",
|
|
108
|
+
t(w, "assethandler.dashboard.incidents.unresolvedCount", "unresolved incidents")
|
|
109
|
+
] })] }), /* @__PURE__ */ S(g, { children: /* @__PURE__ */ S("div", {
|
|
110
|
+
className: "space-y-3",
|
|
111
|
+
children: F.slice(0, 4).map((e) => /* @__PURE__ */ S("div", {
|
|
112
|
+
className: "flex items-start gap-3 rounded-lg border p-3",
|
|
113
|
+
children: /* @__PURE__ */ C("div", {
|
|
114
|
+
className: "flex-1 min-w-0",
|
|
115
|
+
children: [
|
|
116
|
+
/* @__PURE__ */ C("div", {
|
|
117
|
+
className: "flex items-center gap-2",
|
|
118
|
+
children: [/* @__PURE__ */ S("span", {
|
|
119
|
+
className: "text-xs font-mono text-muted-foreground",
|
|
120
|
+
children: e.id
|
|
121
|
+
}), /* @__PURE__ */ S(p, {
|
|
122
|
+
variant: e.priority === "critical" || e.priority === "high" ? "destructive" : "secondary",
|
|
123
|
+
className: "text-[10px]",
|
|
124
|
+
children: e.priority
|
|
125
|
+
})]
|
|
126
|
+
}),
|
|
127
|
+
/* @__PURE__ */ S("p", {
|
|
128
|
+
className: "text-sm font-medium truncate mt-1",
|
|
129
|
+
children: e.title
|
|
130
|
+
}),
|
|
131
|
+
/* @__PURE__ */ S("p", {
|
|
132
|
+
className: "text-xs text-muted-foreground mt-0.5",
|
|
133
|
+
children: e.assignedTo || t(w, "assethandler.dashboard.incidents.unassigned", "Unassigned")
|
|
134
|
+
})
|
|
135
|
+
]
|
|
136
|
+
})
|
|
137
|
+
}, e.id))
|
|
138
|
+
}) })] })]
|
|
139
|
+
}),
|
|
140
|
+
/* @__PURE__ */ C("div", {
|
|
141
|
+
className: "grid gap-6 lg:grid-cols-2",
|
|
142
|
+
children: [/* @__PURE__ */ C(h, { children: [/* @__PURE__ */ C(v, { children: [/* @__PURE__ */ S(y, { children: t(w, "assethandler.dashboard.workItems.title", "Current Work Items") }), /* @__PURE__ */ S(_, { children: t(w, "assethandler.dashboard.workItems.description", "Active tasks and initiatives") })] }), /* @__PURE__ */ S(g, { children: /* @__PURE__ */ S("div", {
|
|
143
|
+
className: "space-y-3",
|
|
144
|
+
children: E.map((e) => /* @__PURE__ */ C("div", {
|
|
145
|
+
className: "flex items-center gap-3",
|
|
146
|
+
children: [/* @__PURE__ */ S("span", {
|
|
147
|
+
className: `inline-flex items-center rounded-md px-2 py-1 text-[10px] font-medium ${{
|
|
148
|
+
active: "bg-blue-100 text-blue-800",
|
|
149
|
+
planned: "bg-slate-100 text-slate-800",
|
|
150
|
+
at_risk: "bg-red-100 text-red-800",
|
|
151
|
+
completed: "bg-green-100 text-green-800"
|
|
152
|
+
}[e.status] || "bg-muted text-muted-foreground"}`,
|
|
153
|
+
children: e.status.replace("_", " ")
|
|
154
|
+
}), /* @__PURE__ */ C("div", {
|
|
155
|
+
className: "flex-1 min-w-0",
|
|
156
|
+
children: [/* @__PURE__ */ S("p", {
|
|
157
|
+
className: "text-sm truncate",
|
|
158
|
+
children: e.title
|
|
159
|
+
}), /* @__PURE__ */ C("p", {
|
|
160
|
+
className: "text-xs text-muted-foreground",
|
|
161
|
+
children: [
|
|
162
|
+
e.owner,
|
|
163
|
+
" · ",
|
|
164
|
+
e.updatedAt
|
|
165
|
+
]
|
|
166
|
+
})]
|
|
167
|
+
})]
|
|
168
|
+
}, e.id))
|
|
169
|
+
}) })] }), /* @__PURE__ */ C(h, { children: [/* @__PURE__ */ C(v, { children: [/* @__PURE__ */ S(y, { children: t(w, "assethandler.dashboard.operations.title", "Operations Summary") }), /* @__PURE__ */ S(_, { children: t(w, "assethandler.dashboard.operations.description", "Quick view of current operations") })] }), /* @__PURE__ */ C(g, { children: [
|
|
170
|
+
/* @__PURE__ */ C("div", {
|
|
171
|
+
className: "grid grid-cols-2 gap-4",
|
|
172
|
+
children: [
|
|
173
|
+
/* @__PURE__ */ C("div", {
|
|
174
|
+
className: "rounded-lg border p-4 text-center",
|
|
175
|
+
children: [
|
|
176
|
+
/* @__PURE__ */ S(f, { className: "h-5 w-5 mx-auto text-muted-foreground mb-2" }),
|
|
177
|
+
/* @__PURE__ */ S("p", {
|
|
178
|
+
className: "text-2xl font-bold",
|
|
179
|
+
children: L.length
|
|
180
|
+
}),
|
|
181
|
+
/* @__PURE__ */ S("p", {
|
|
182
|
+
className: "text-xs text-muted-foreground",
|
|
183
|
+
children: t(w, "assethandler.dashboard.operations.pendingMaintenance", "Pending Maintenance")
|
|
184
|
+
})
|
|
185
|
+
]
|
|
186
|
+
}),
|
|
187
|
+
/* @__PURE__ */ C("div", {
|
|
188
|
+
className: "rounded-lg border p-4 text-center",
|
|
189
|
+
children: [
|
|
190
|
+
/* @__PURE__ */ S(r, { className: "h-5 w-5 mx-auto text-muted-foreground mb-2" }),
|
|
191
|
+
/* @__PURE__ */ S("p", {
|
|
192
|
+
className: "text-2xl font-bold",
|
|
193
|
+
children: z.length
|
|
194
|
+
}),
|
|
195
|
+
/* @__PURE__ */ S("p", {
|
|
196
|
+
className: "text-xs text-muted-foreground",
|
|
197
|
+
children: t(w, "assethandler.dashboard.operations.activeWorkflows", "Active Workflows")
|
|
198
|
+
})
|
|
199
|
+
]
|
|
200
|
+
}),
|
|
201
|
+
/* @__PURE__ */ C("div", {
|
|
202
|
+
className: "rounded-lg border p-4 text-center",
|
|
203
|
+
children: [
|
|
204
|
+
/* @__PURE__ */ S(l, { className: "h-5 w-5 mx-auto text-muted-foreground mb-2" }),
|
|
205
|
+
/* @__PURE__ */ S("p", {
|
|
206
|
+
className: "text-2xl font-bold",
|
|
207
|
+
children: M.filter((e) => e.status === "approved" || e.status === "submitted").length
|
|
208
|
+
}),
|
|
209
|
+
/* @__PURE__ */ S("p", {
|
|
210
|
+
className: "text-xs text-muted-foreground",
|
|
211
|
+
children: t(w, "assethandler.dashboard.operations.pendingChanges", "Pending Changes")
|
|
212
|
+
})
|
|
213
|
+
]
|
|
214
|
+
}),
|
|
215
|
+
/* @__PURE__ */ C("div", {
|
|
216
|
+
className: "rounded-lg border p-4 text-center",
|
|
217
|
+
children: [
|
|
218
|
+
/* @__PURE__ */ S(c, { className: "h-5 w-5 mx-auto text-muted-foreground mb-2" }),
|
|
219
|
+
/* @__PURE__ */ S("p", {
|
|
220
|
+
className: "text-2xl font-bold",
|
|
221
|
+
children: I.length
|
|
222
|
+
}),
|
|
223
|
+
/* @__PURE__ */ S("p", {
|
|
224
|
+
className: "text-xs text-muted-foreground",
|
|
225
|
+
children: t(w, "assethandler.dashboard.operations.criticalAlerts", "Critical Alerts")
|
|
226
|
+
})
|
|
227
|
+
]
|
|
228
|
+
})
|
|
229
|
+
]
|
|
230
|
+
}),
|
|
231
|
+
/* @__PURE__ */ S(b, { className: "my-4" }),
|
|
232
|
+
/* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("h4", {
|
|
233
|
+
className: "text-sm font-medium mb-2",
|
|
234
|
+
children: t(w, "assethandler.dashboard.notifications.title", "Recent Notifications")
|
|
235
|
+
}), /* @__PURE__ */ S("div", {
|
|
236
|
+
className: "space-y-2",
|
|
237
|
+
children: R.slice(0, 3).map((e) => /* @__PURE__ */ C("div", {
|
|
238
|
+
className: "flex items-start gap-2 text-sm",
|
|
239
|
+
children: [/* @__PURE__ */ S("div", { className: `mt-1 h-2 w-2 rounded-full shrink-0 ${e.priority === "critical" ? "bg-red-500" : e.priority === "high" ? "bg-orange-500" : "bg-blue-500"}` }), /* @__PURE__ */ C("div", { children: [/* @__PURE__ */ S("p", {
|
|
240
|
+
className: "font-medium text-xs",
|
|
241
|
+
children: e.title
|
|
242
|
+
}), /* @__PURE__ */ S("p", {
|
|
243
|
+
className: "text-xs text-muted-foreground truncate",
|
|
244
|
+
children: e.message
|
|
245
|
+
})] })]
|
|
246
|
+
}, e.id))
|
|
247
|
+
})] })
|
|
248
|
+
] })] })]
|
|
249
|
+
}),
|
|
250
|
+
/* @__PURE__ */ C(h, { children: [/* @__PURE__ */ C(v, { children: [/* @__PURE__ */ C(y, {
|
|
251
|
+
className: "flex items-center gap-2",
|
|
252
|
+
children: [/* @__PURE__ */ S(f, { className: "h-4 w-4" }), t(w, "assethandler.dashboard.maintenance.title", "Upcoming Maintenance")]
|
|
253
|
+
}), /* @__PURE__ */ S(_, { children: t(w, "assethandler.dashboard.maintenance.description", "Scheduled maintenance activities") })] }), /* @__PURE__ */ S(g, { children: /* @__PURE__ */ S("div", {
|
|
254
|
+
className: "overflow-x-auto",
|
|
255
|
+
children: /* @__PURE__ */ C("table", {
|
|
256
|
+
className: "w-full text-sm",
|
|
257
|
+
children: [/* @__PURE__ */ S("thead", { children: /* @__PURE__ */ C("tr", {
|
|
258
|
+
className: "border-b",
|
|
259
|
+
children: [
|
|
260
|
+
/* @__PURE__ */ S("th", {
|
|
261
|
+
className: "text-left py-2 font-medium",
|
|
262
|
+
children: t(w, "assethandler.dashboard.maintenance.table.id", "ID")
|
|
263
|
+
}),
|
|
264
|
+
/* @__PURE__ */ S("th", {
|
|
265
|
+
className: "text-left py-2 font-medium",
|
|
266
|
+
children: t(w, "assethandler.dashboard.maintenance.table.asset", "Asset")
|
|
267
|
+
}),
|
|
268
|
+
/* @__PURE__ */ S("th", {
|
|
269
|
+
className: "text-left py-2 font-medium",
|
|
270
|
+
children: t(w, "assethandler.dashboard.maintenance.table.title", "Title")
|
|
271
|
+
}),
|
|
272
|
+
/* @__PURE__ */ S("th", {
|
|
273
|
+
className: "text-left py-2 font-medium",
|
|
274
|
+
children: t(w, "assethandler.dashboard.maintenance.table.type", "Type")
|
|
275
|
+
}),
|
|
276
|
+
/* @__PURE__ */ S("th", {
|
|
277
|
+
className: "text-left py-2 font-medium",
|
|
278
|
+
children: t(w, "assethandler.dashboard.maintenance.table.priority", "Priority")
|
|
279
|
+
}),
|
|
280
|
+
/* @__PURE__ */ S("th", {
|
|
281
|
+
className: "text-left py-2 font-medium",
|
|
282
|
+
children: t(w, "assethandler.dashboard.maintenance.table.scheduled", "Scheduled")
|
|
283
|
+
}),
|
|
284
|
+
/* @__PURE__ */ S("th", {
|
|
285
|
+
className: "text-left py-2 font-medium",
|
|
286
|
+
children: t(w, "assethandler.dashboard.maintenance.table.status", "Status")
|
|
287
|
+
})
|
|
288
|
+
]
|
|
289
|
+
}) }), /* @__PURE__ */ S("tbody", { children: k.map((e) => /* @__PURE__ */ C("tr", {
|
|
290
|
+
className: "border-b hover:bg-muted/50",
|
|
291
|
+
children: [
|
|
292
|
+
/* @__PURE__ */ S("td", {
|
|
293
|
+
className: "py-2 font-mono text-xs",
|
|
294
|
+
children: e.id
|
|
295
|
+
}),
|
|
296
|
+
/* @__PURE__ */ S("td", {
|
|
297
|
+
className: "py-2",
|
|
298
|
+
children: e.assetName
|
|
299
|
+
}),
|
|
300
|
+
/* @__PURE__ */ S("td", {
|
|
301
|
+
className: "py-2",
|
|
302
|
+
children: e.title
|
|
303
|
+
}),
|
|
304
|
+
/* @__PURE__ */ S("td", {
|
|
305
|
+
className: "py-2 capitalize",
|
|
306
|
+
children: e.type
|
|
307
|
+
}),
|
|
308
|
+
/* @__PURE__ */ S("td", {
|
|
309
|
+
className: "py-2",
|
|
310
|
+
children: /* @__PURE__ */ S(p, {
|
|
311
|
+
variant: e.priority === "critical" || e.priority === "high" ? "destructive" : "secondary",
|
|
312
|
+
children: e.priority
|
|
313
|
+
})
|
|
314
|
+
}),
|
|
315
|
+
/* @__PURE__ */ S("td", {
|
|
316
|
+
className: "py-2",
|
|
317
|
+
children: e.scheduledDate
|
|
318
|
+
}),
|
|
319
|
+
/* @__PURE__ */ S("td", {
|
|
320
|
+
className: "py-2",
|
|
321
|
+
children: /* @__PURE__ */ S(p, {
|
|
322
|
+
variant: e.status === "completed" ? "default" : e.status === "in_progress" ? "secondary" : "outline",
|
|
323
|
+
children: e.status.replace("_", " ")
|
|
324
|
+
})
|
|
325
|
+
})
|
|
326
|
+
]
|
|
327
|
+
}, e.id)) })]
|
|
328
|
+
})
|
|
329
|
+
}) })] })
|
|
330
|
+
]
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
//#endregion
|
|
334
|
+
export { w as DashboardPage };
|
|
335
|
+
|
|
336
|
+
//# sourceMappingURL=DashboardPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardPage.js","names":[],"sources":["../../../src/assethandler/pages/DashboardPage.tsx"],"sourcesContent":["import { useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Separator,\n} from '@burdenoff/fe-libs/ui';\nimport {\n Activity,\n AlertTriangle,\n ArrowUpRight,\n ArrowDownRight,\n Box,\n Clock,\n DollarSign,\n Shield,\n Wrench,\n TrendingUp,\n Users,\n CheckCircle,\n} from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useAssetHandlerStore } from '../store/assethandlerStore';\nimport { tWithFallback } from '../utils/i18n';\n\nexport function DashboardPage() {\n const { t } = useI18n();\n const {\n metrics,\n workItems,\n assets,\n incidents,\n maintenanceRecords,\n notifications,\n portfolio,\n changeRequests,\n workflows,\n } = useAssetHandlerStore();\n const [selectedPeriod] = useState('This Month');\n\n const activeIncidents = incidents.filter((i) => i.status !== 'resolved' && i.status !== 'closed');\n const criticalIncidents = incidents.filter(\n (i) => i.priority === 'critical' && i.status !== 'resolved'\n );\n const pendingMaintenance = maintenanceRecords.filter(\n (m) => m.status === 'scheduled' || m.status === 'in_progress'\n );\n const unreadNotifications = notifications.filter((n) => !n.isRead);\n const activeWorkflows = workflows.filter((w) => w.status === 'active');\n\n return (\n <div className=\"space-y-6 p-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-3xl font-bold\">\n {tWithFallback(t, 'assethandler.dashboard.title', 'Dashboard')}\n </h1>\n <p className=\"text-sm text-muted-foreground mt-1\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.description',\n 'Overview of your IT asset portfolio and operations'\n )}\n </p>\n </div>\n <div className=\"flex gap-2\">\n <Button variant=\"outline\" size=\"sm\">\n {tWithFallback(t, 'assethandler.dashboard.actions.exportReport', 'Export Report')}\n </Button>\n <Button size=\"sm\">\n {tWithFallback(t, 'assethandler.dashboard.actions.addAsset', 'Add Asset')}\n </Button>\n </div>\n </div>\n\n {/* KPI Metrics */}\n <div className=\"grid gap-4 md:grid-cols-2 lg:grid-cols-4\">\n {metrics.map((metric, i) => {\n const icons = [Box, AlertTriangle, Shield, DollarSign];\n const Icon = icons[i] || Activity;\n const isPositive = metric.trend.startsWith('+');\n return (\n <Card key={metric.label}>\n <CardHeader className=\"flex flex-row items-center justify-between space-y-0 pb-2\">\n <CardTitle className=\"text-sm font-medium\">{metric.label}</CardTitle>\n <Icon className=\"h-4 w-4 text-muted-foreground\" />\n </CardHeader>\n <CardContent>\n <div className=\"text-2xl font-bold\">{metric.value}</div>\n <div className=\"flex items-center text-xs text-muted-foreground mt-1\">\n {isPositive ? (\n <ArrowUpRight className=\"mr-1 h-3 w-3 text-green-600\" />\n ) : (\n <ArrowDownRight className=\"mr-1 h-3 w-3 text-red-600\" />\n )}\n <span className={isPositive ? 'text-green-600' : 'text-red-600'}>\n {metric.trend}\n </span>\n <span className=\"ml-1\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.metrics.fromLastMonth',\n 'from last month'\n )}\n </span>\n </div>\n </CardContent>\n </Card>\n );\n })}\n </div>\n\n {/* Portfolio Breakdown & Active Incidents */}\n <div className=\"grid gap-6 lg:grid-cols-3\">\n {/* Portfolio by Category */}\n <Card className=\"lg:col-span-2\">\n <CardHeader>\n <CardTitle>\n {tWithFallback(t, 'assethandler.dashboard.portfolio.title', 'Portfolio Breakdown')}\n </CardTitle>\n <CardDescription>\n {tWithFallback(\n t,\n 'assethandler.dashboard.portfolio.description',\n 'Asset distribution by category'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-4\">\n {portfolio.byCategory.map((cat) => {\n const pct = Math.round((cat.count / portfolio.totalAssets) * 100);\n return (\n <div key={cat.category} className=\"space-y-1\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-medium\">{cat.category}</span>\n <span className=\"text-muted-foreground\">\n {cat.count} assets · ${(cat.value / 1000).toFixed(0)}K\n </span>\n </div>\n <div className=\"h-2 rounded-full bg-muted overflow-hidden\">\n <div\n className=\"h-full rounded-full bg-primary\"\n style={{ width: `${pct}%` }}\n />\n </div>\n </div>\n );\n })}\n </div>\n </CardContent>\n </Card>\n\n {/* Active Incidents */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <AlertTriangle className=\"h-4 w-4 text-destructive\" />\n {tWithFallback(t, 'assethandler.dashboard.incidents.title', 'Active Incidents')}\n </CardTitle>\n <CardDescription>\n {activeIncidents.length}{' '}\n {tWithFallback(\n t,\n 'assethandler.dashboard.incidents.unresolvedCount',\n 'unresolved incidents'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {activeIncidents.slice(0, 4).map((inc) => (\n <div key={inc.id} className=\"flex items-start gap-3 rounded-lg border p-3\">\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-mono text-muted-foreground\">{inc.id}</span>\n <Badge\n variant={\n inc.priority === 'critical'\n ? 'destructive'\n : inc.priority === 'high'\n ? 'destructive'\n : 'secondary'\n }\n className=\"text-[10px]\"\n >\n {inc.priority}\n </Badge>\n </div>\n <p className=\"text-sm font-medium truncate mt-1\">{inc.title}</p>\n <p className=\"text-xs text-muted-foreground mt-0.5\">\n {inc.assignedTo ||\n tWithFallback(\n t,\n 'assethandler.dashboard.incidents.unassigned',\n 'Unassigned'\n )}\n </p>\n </div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Work Items & Operations Summary */}\n <div className=\"grid gap-6 lg:grid-cols-2\">\n {/* Work Items */}\n <Card>\n <CardHeader>\n <CardTitle>\n {tWithFallback(t, 'assethandler.dashboard.workItems.title', 'Current Work Items')}\n </CardTitle>\n <CardDescription>\n {tWithFallback(\n t,\n 'assethandler.dashboard.workItems.description',\n 'Active tasks and initiatives'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"space-y-3\">\n {workItems.map((item) => {\n const statusColors: Record<string, string> = {\n active: 'bg-blue-100 text-blue-800',\n planned: 'bg-slate-100 text-slate-800',\n at_risk: 'bg-red-100 text-red-800',\n completed: 'bg-green-100 text-green-800',\n };\n return (\n <div key={item.id} className=\"flex items-center gap-3\">\n <span\n className={`inline-flex items-center rounded-md px-2 py-1 text-[10px] font-medium ${statusColors[item.status] || 'bg-muted text-muted-foreground'}`}\n >\n {item.status.replace('_', ' ')}\n </span>\n <div className=\"flex-1 min-w-0\">\n <p className=\"text-sm truncate\">{item.title}</p>\n <p className=\"text-xs text-muted-foreground\">\n {item.owner} · {item.updatedAt}\n </p>\n </div>\n </div>\n );\n })}\n </div>\n </CardContent>\n </Card>\n\n {/* Operations Quick View */}\n <Card>\n <CardHeader>\n <CardTitle>\n {tWithFallback(t, 'assethandler.dashboard.operations.title', 'Operations Summary')}\n </CardTitle>\n <CardDescription>\n {tWithFallback(\n t,\n 'assethandler.dashboard.operations.description',\n 'Quick view of current operations'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"grid grid-cols-2 gap-4\">\n <div className=\"rounded-lg border p-4 text-center\">\n <Wrench className=\"h-5 w-5 mx-auto text-muted-foreground mb-2\" />\n <p className=\"text-2xl font-bold\">{pendingMaintenance.length}</p>\n <p className=\"text-xs text-muted-foreground\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.operations.pendingMaintenance',\n 'Pending Maintenance'\n )}\n </p>\n </div>\n <div className=\"rounded-lg border p-4 text-center\">\n <Activity className=\"h-5 w-5 mx-auto text-muted-foreground mb-2\" />\n <p className=\"text-2xl font-bold\">{activeWorkflows.length}</p>\n <p className=\"text-xs text-muted-foreground\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.operations.activeWorkflows',\n 'Active Workflows'\n )}\n </p>\n </div>\n <div className=\"rounded-lg border p-4 text-center\">\n <Clock className=\"h-5 w-5 mx-auto text-muted-foreground mb-2\" />\n <p className=\"text-2xl font-bold\">\n {\n changeRequests.filter(\n (c) => c.status === 'approved' || c.status === 'submitted'\n ).length\n }\n </p>\n <p className=\"text-xs text-muted-foreground\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.operations.pendingChanges',\n 'Pending Changes'\n )}\n </p>\n </div>\n <div className=\"rounded-lg border p-4 text-center\">\n <CheckCircle className=\"h-5 w-5 mx-auto text-muted-foreground mb-2\" />\n <p className=\"text-2xl font-bold\">{criticalIncidents.length}</p>\n <p className=\"text-xs text-muted-foreground\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.operations.criticalAlerts',\n 'Critical Alerts'\n )}\n </p>\n </div>\n </div>\n\n <Separator className=\"my-4\" />\n\n <div>\n <h4 className=\"text-sm font-medium mb-2\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.notifications.title',\n 'Recent Notifications'\n )}\n </h4>\n <div className=\"space-y-2\">\n {unreadNotifications.slice(0, 3).map((n) => (\n <div key={n.id} className=\"flex items-start gap-2 text-sm\">\n <div\n className={`mt-1 h-2 w-2 rounded-full shrink-0 ${n.priority === 'critical' ? 'bg-red-500' : n.priority === 'high' ? 'bg-orange-500' : 'bg-blue-500'}`}\n />\n <div>\n <p className=\"font-medium text-xs\">{n.title}</p>\n <p className=\"text-xs text-muted-foreground truncate\">{n.message}</p>\n </div>\n </div>\n ))}\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n\n {/* Upcoming Maintenance */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Wrench className=\"h-4 w-4\" />\n {tWithFallback(t, 'assethandler.dashboard.maintenance.title', 'Upcoming Maintenance')}\n </CardTitle>\n <CardDescription>\n {tWithFallback(\n t,\n 'assethandler.dashboard.maintenance.description',\n 'Scheduled maintenance activities'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"overflow-x-auto\">\n <table className=\"w-full text-sm\">\n <thead>\n <tr className=\"border-b\">\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(t, 'assethandler.dashboard.maintenance.table.id', 'ID')}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(t, 'assethandler.dashboard.maintenance.table.asset', 'Asset')}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(t, 'assethandler.dashboard.maintenance.table.title', 'Title')}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(t, 'assethandler.dashboard.maintenance.table.type', 'Type')}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.maintenance.table.priority',\n 'Priority'\n )}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(\n t,\n 'assethandler.dashboard.maintenance.table.scheduled',\n 'Scheduled'\n )}\n </th>\n <th className=\"text-left py-2 font-medium\">\n {tWithFallback(t, 'assethandler.dashboard.maintenance.table.status', 'Status')}\n </th>\n </tr>\n </thead>\n <tbody>\n {maintenanceRecords.map((rec) => (\n <tr key={rec.id} className=\"border-b hover:bg-muted/50\">\n <td className=\"py-2 font-mono text-xs\">{rec.id}</td>\n <td className=\"py-2\">{rec.assetName}</td>\n <td className=\"py-2\">{rec.title}</td>\n <td className=\"py-2 capitalize\">{rec.type}</td>\n <td className=\"py-2\">\n <Badge\n variant={\n rec.priority === 'critical' || rec.priority === 'high'\n ? 'destructive'\n : 'secondary'\n }\n >\n {rec.priority}\n </Badge>\n </td>\n <td className=\"py-2\">{rec.scheduledDate}</td>\n <td className=\"py-2\">\n <Badge\n variant={\n rec.status === 'completed'\n ? 'default'\n : rec.status === 'in_progress'\n ? 'secondary'\n : 'outline'\n }\n >\n {rec.status.replace('_', ' ')}\n </Badge>\n </td>\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DigitalTwinPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/DigitalTwinPage.tsx"],"names":[],"mappings":"AAiBA,wBAAgB,eAAe,4CA4C9B"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { Box as e } from "lucide-react";
|
|
2
|
+
import { jsx as t, jsxs as n } from "react/jsx-runtime";
|
|
3
|
+
import { gql as r } from "@apollo/client";
|
|
4
|
+
import { useQuery as i } from "@apollo/client/react";
|
|
5
|
+
//#region src/assethandler/pages/DigitalTwinPage.tsx
|
|
6
|
+
var a = r`
|
|
7
|
+
query AssetHandlerDigitalTwins {
|
|
8
|
+
digitalTwins {
|
|
9
|
+
id
|
|
10
|
+
assetId
|
|
11
|
+
modelRef
|
|
12
|
+
fidelityLevel
|
|
13
|
+
geometryRef
|
|
14
|
+
updatedAt
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
`;
|
|
18
|
+
function o() {
|
|
19
|
+
let { data: r, loading: o } = i(a, { fetchPolicy: "cache-and-network" }), s = r?.digitalTwins ?? [];
|
|
20
|
+
return /* @__PURE__ */ n("div", {
|
|
21
|
+
className: "space-y-4 p-4",
|
|
22
|
+
children: [
|
|
23
|
+
/* @__PURE__ */ n("h1", {
|
|
24
|
+
className: "flex items-center gap-2 text-2xl font-semibold",
|
|
25
|
+
children: [/* @__PURE__ */ t(e, { className: "h-6 w-6" }), " Digital Twin"]
|
|
26
|
+
}),
|
|
27
|
+
/* @__PURE__ */ t("p", {
|
|
28
|
+
className: "text-muted-foreground",
|
|
29
|
+
children: "Manage and simulate digital twins for critical assets and systems."
|
|
30
|
+
}),
|
|
31
|
+
/* @__PURE__ */ n("div", {
|
|
32
|
+
className: "grid gap-3 md:grid-cols-2",
|
|
33
|
+
children: [
|
|
34
|
+
o && s.length === 0 ? /* @__PURE__ */ t("p", {
|
|
35
|
+
className: "text-sm text-muted-foreground",
|
|
36
|
+
children: "Loading twins..."
|
|
37
|
+
}) : null,
|
|
38
|
+
!o && s.length === 0 ? /* @__PURE__ */ t("p", {
|
|
39
|
+
className: "text-sm text-muted-foreground",
|
|
40
|
+
children: "No digital twins found."
|
|
41
|
+
}) : null,
|
|
42
|
+
s.map((e) => /* @__PURE__ */ n("article", {
|
|
43
|
+
className: "rounded-lg border p-4",
|
|
44
|
+
children: [
|
|
45
|
+
/* @__PURE__ */ n("p", {
|
|
46
|
+
className: "text-xs uppercase tracking-wide text-muted-foreground",
|
|
47
|
+
children: ["Asset ", e.assetId]
|
|
48
|
+
}),
|
|
49
|
+
/* @__PURE__ */ t("h2", {
|
|
50
|
+
className: "mt-1 text-base font-semibold",
|
|
51
|
+
children: e.modelRef
|
|
52
|
+
}),
|
|
53
|
+
/* @__PURE__ */ n("p", {
|
|
54
|
+
className: "mt-1 text-sm text-muted-foreground",
|
|
55
|
+
children: ["Fidelity: ", e.fidelityLevel]
|
|
56
|
+
}),
|
|
57
|
+
/* @__PURE__ */ n("p", {
|
|
58
|
+
className: "mt-1 text-sm text-muted-foreground",
|
|
59
|
+
children: ["Geometry: ", e.geometryRef ?? "Not linked"]
|
|
60
|
+
})
|
|
61
|
+
]
|
|
62
|
+
}, e.id))
|
|
63
|
+
]
|
|
64
|
+
})
|
|
65
|
+
]
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
//#endregion
|
|
69
|
+
export { o as DigitalTwinPage };
|
|
70
|
+
|
|
71
|
+
//# sourceMappingURL=DigitalTwinPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DigitalTwinPage.js","names":[],"sources":["../../../src/assethandler/pages/DigitalTwinPage.tsx"],"sourcesContent":["import { Box } from 'lucide-react';\nimport { gql } from '@apollo/client';\nimport { useQuery } from '@apollo/client/react';\n\nconst DIGITAL_TWINS_QUERY = gql`\n query AssetHandlerDigitalTwins {\n digitalTwins {\n id\n assetId\n modelRef\n fidelityLevel\n geometryRef\n updatedAt\n }\n }\n`;\n\nexport function DigitalTwinPage() {\n const { data, loading } = useQuery<{\n digitalTwins: Array<{\n id: string;\n assetId: string;\n modelRef: string;\n fidelityLevel: string;\n geometryRef: string | null;\n updatedAt: string;\n }>;\n }>(DIGITAL_TWINS_QUERY, { fetchPolicy: 'cache-and-network' });\n\n const twins = data?.digitalTwins ?? [];\n\n return (\n <div className=\"space-y-4 p-4\">\n <h1 className=\"flex items-center gap-2 text-2xl font-semibold\">\n <Box className=\"h-6 w-6\" /> Digital Twin\n </h1>\n <p className=\"text-muted-foreground\">\n Manage and simulate digital twins for critical assets and systems.\n </p>\n <div className=\"grid gap-3 md:grid-cols-2\">\n {loading && twins.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">Loading twins...</p>\n ) : null}\n {!loading && twins.length === 0 ? (\n <p className=\"text-sm text-muted-foreground\">No digital twins found.</p>\n ) : null}\n {twins.map((twin) => (\n <article key={twin.id} className=\"rounded-lg border p-4\">\n <p className=\"text-xs uppercase tracking-wide text-muted-foreground\">\n Asset {twin.assetId}\n </p>\n <h2 className=\"mt-1 text-base font-semibold\">{twin.modelRef}</h2>\n <p className=\"mt-1 text-sm text-muted-foreground\">Fidelity: {twin.fidelityLevel}</p>\n <p className=\"mt-1 text-sm text-muted-foreground\">\n Geometry: {twin.geometryRef ?? 'Not linked'}\n </p>\n </article>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;AAIA,IAAM,IAAsB,CAAG;;;;;;;;;;;;AAa/B,SAAgB,IAAkB;CAChC,IAAM,EAAE,SAAM,eAAY,EASvB,GAAqB,EAAE,aAAa,qBAAqB,CAAC,EAEvD,IAAQ,GAAM,gBAAgB,EAAE;AAEtC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,MAAD;IAAI,WAAU;cAAd,CACE,kBAAC,GAAD,EAAK,WAAU,WAAY,CAAA,EAAA,gBACxB;;GACL,kBAAC,KAAD;IAAG,WAAU;cAAwB;IAEjC,CAAA;GACJ,kBAAC,OAAD;IAAK,WAAU;cAAf;KACG,KAAW,EAAM,WAAW,IAC3B,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAAoB,CAAA,GAC/D;KACH,CAAC,KAAW,EAAM,WAAW,IAC5B,kBAAC,KAAD;MAAG,WAAU;gBAAgC;MAA2B,CAAA,GACtE;KACH,EAAM,KAAK,MACV,kBAAC,WAAD;MAAuB,WAAU;gBAAjC;OACE,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAqE,UAC5D,EAAK,QACV;;OACJ,kBAAC,MAAD;QAAI,WAAU;kBAAgC,EAAK;QAAc,CAAA;OACjE,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAkD,cAAW,EAAK,cAAkB;;OACpF,kBAAC,KAAD;QAAG,WAAU;kBAAb,CAAkD,cACrC,EAAK,eAAe,aAC7B;;OACI;QATI,EAAK,GAST,CACV;KACE;;GACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscoveryJobsPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/DiscoveryJobsPage.tsx"],"names":[],"mappings":"AA2BA,wBAAgB,iBAAiB,4CA0FhC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { useState as e } from "react";
|
|
2
|
+
import { Radar as t } from "lucide-react";
|
|
3
|
+
import { jsx as n, jsxs as r } from "react/jsx-runtime";
|
|
4
|
+
import { gql as i } from "@apollo/client";
|
|
5
|
+
import { useMutation as a, useQuery as o } from "@apollo/client/react";
|
|
6
|
+
//#region src/assethandler/pages/DiscoveryJobsPage.tsx
|
|
7
|
+
var s = i`
|
|
8
|
+
query AssetHandlerDiscoveryJobs {
|
|
9
|
+
discoveryJobs {
|
|
10
|
+
id
|
|
11
|
+
name
|
|
12
|
+
source
|
|
13
|
+
status
|
|
14
|
+
assetsDiscovered
|
|
15
|
+
startedAt
|
|
16
|
+
completedAt
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
`, c = i`
|
|
20
|
+
mutation AssetHandlerStartDiscoveryJob($input: StartDiscoveryJobInput!) {
|
|
21
|
+
startDiscoveryJob(input: $input) {
|
|
22
|
+
id
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
`;
|
|
26
|
+
function l() {
|
|
27
|
+
let [i, l] = e("Nightly Datacenter Scan"), [u, d] = e("aws-ap-south-1"), { data: f, loading: p, refetch: m } = o(s, { fetchPolicy: "cache-and-network" }), [h, { loading: g }] = a(c, { onCompleted: () => {
|
|
28
|
+
m();
|
|
29
|
+
} }), _ = f?.discoveryJobs ?? [];
|
|
30
|
+
return /* @__PURE__ */ r("div", {
|
|
31
|
+
className: "space-y-4 p-4",
|
|
32
|
+
children: [
|
|
33
|
+
/* @__PURE__ */ r("h1", {
|
|
34
|
+
className: "flex items-center gap-2 text-2xl font-semibold",
|
|
35
|
+
children: [/* @__PURE__ */ n(t, { className: "h-6 w-6" }), " Discovery Jobs"]
|
|
36
|
+
}),
|
|
37
|
+
/* @__PURE__ */ n("p", {
|
|
38
|
+
className: "text-muted-foreground",
|
|
39
|
+
children: "Run and monitor asset discovery scans from connected environments."
|
|
40
|
+
}),
|
|
41
|
+
/* @__PURE__ */ r("form", {
|
|
42
|
+
className: "grid gap-3 rounded-lg border p-4 md:grid-cols-3",
|
|
43
|
+
onSubmit: (e) => {
|
|
44
|
+
e.preventDefault(), h({ variables: { input: {
|
|
45
|
+
name: i,
|
|
46
|
+
source: u
|
|
47
|
+
} } });
|
|
48
|
+
},
|
|
49
|
+
children: [
|
|
50
|
+
/* @__PURE__ */ n("input", {
|
|
51
|
+
className: "rounded-md border px-3 py-2",
|
|
52
|
+
value: i,
|
|
53
|
+
onChange: (e) => l(e.target.value),
|
|
54
|
+
placeholder: "Job name"
|
|
55
|
+
}),
|
|
56
|
+
/* @__PURE__ */ n("input", {
|
|
57
|
+
className: "rounded-md border px-3 py-2",
|
|
58
|
+
value: u,
|
|
59
|
+
onChange: (e) => d(e.target.value),
|
|
60
|
+
placeholder: "Discovery source"
|
|
61
|
+
}),
|
|
62
|
+
/* @__PURE__ */ n("button", {
|
|
63
|
+
className: "rounded-md bg-primary px-3 py-2 text-primary-foreground",
|
|
64
|
+
disabled: g,
|
|
65
|
+
type: "submit",
|
|
66
|
+
children: g ? "Starting..." : "Start Job"
|
|
67
|
+
})
|
|
68
|
+
]
|
|
69
|
+
}),
|
|
70
|
+
/* @__PURE__ */ r("div", {
|
|
71
|
+
className: "rounded-lg border",
|
|
72
|
+
children: [
|
|
73
|
+
/* @__PURE__ */ r("div", {
|
|
74
|
+
className: "grid grid-cols-5 gap-3 border-b px-4 py-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground",
|
|
75
|
+
children: [
|
|
76
|
+
/* @__PURE__ */ n("span", { children: "Name" }),
|
|
77
|
+
/* @__PURE__ */ n("span", { children: "Source" }),
|
|
78
|
+
/* @__PURE__ */ n("span", { children: "Status" }),
|
|
79
|
+
/* @__PURE__ */ n("span", { children: "Discovered" }),
|
|
80
|
+
/* @__PURE__ */ n("span", { children: "Started" })
|
|
81
|
+
]
|
|
82
|
+
}),
|
|
83
|
+
p && _.length === 0 ? /* @__PURE__ */ n("div", {
|
|
84
|
+
className: "px-4 py-4 text-sm text-muted-foreground",
|
|
85
|
+
children: "Loading jobs..."
|
|
86
|
+
}) : null,
|
|
87
|
+
!p && _.length === 0 ? /* @__PURE__ */ n("div", {
|
|
88
|
+
className: "px-4 py-4 text-sm text-muted-foreground",
|
|
89
|
+
children: "No discovery jobs found."
|
|
90
|
+
}) : null,
|
|
91
|
+
_.map((e) => /* @__PURE__ */ r("div", {
|
|
92
|
+
className: "grid grid-cols-5 gap-3 border-b px-4 py-3 text-sm last:border-b-0",
|
|
93
|
+
children: [
|
|
94
|
+
/* @__PURE__ */ n("span", {
|
|
95
|
+
className: "font-medium",
|
|
96
|
+
children: e.name
|
|
97
|
+
}),
|
|
98
|
+
/* @__PURE__ */ n("span", { children: e.source }),
|
|
99
|
+
/* @__PURE__ */ n("span", { children: e.status }),
|
|
100
|
+
/* @__PURE__ */ n("span", { children: e.assetsDiscovered }),
|
|
101
|
+
/* @__PURE__ */ n("span", {
|
|
102
|
+
className: "text-muted-foreground",
|
|
103
|
+
children: e.startedAt ? new Date(e.startedAt).toLocaleString() : "n/a"
|
|
104
|
+
})
|
|
105
|
+
]
|
|
106
|
+
}, e.id))
|
|
107
|
+
]
|
|
108
|
+
})
|
|
109
|
+
]
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
//#endregion
|
|
113
|
+
export { l as DiscoveryJobsPage };
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=DiscoveryJobsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DiscoveryJobsPage.js","names":[],"sources":["../../../src/assethandler/pages/DiscoveryJobsPage.tsx"],"sourcesContent":["import { Radar } from 'lucide-react';\nimport { useState } from 'react';\nimport { gql } from '@apollo/client';\nimport { useMutation, useQuery } from '@apollo/client/react';\n\nconst DISCOVERY_JOBS_QUERY = gql`\n query AssetHandlerDiscoveryJobs {\n discoveryJobs {\n id\n name\n source\n status\n assetsDiscovered\n startedAt\n completedAt\n }\n }\n`;\n\nconst START_DISCOVERY_JOB_MUTATION = gql`\n mutation AssetHandlerStartDiscoveryJob($input: StartDiscoveryJobInput!) {\n startDiscoveryJob(input: $input) {\n id\n }\n }\n`;\n\nexport function DiscoveryJobsPage() {\n const [name, setName] = useState('Nightly Datacenter Scan');\n const [source, setSource] = useState('aws-ap-south-1');\n\n const { data, loading, refetch } = useQuery<{\n discoveryJobs: Array<{\n id: string;\n name: string;\n source: string;\n status: string;\n assetsDiscovered: number;\n startedAt: string | null;\n completedAt: string | null;\n }>;\n }>(DISCOVERY_JOBS_QUERY, { fetchPolicy: 'cache-and-network' });\n\n const [startDiscoveryJob, { loading: starting }] = useMutation(START_DISCOVERY_JOB_MUTATION, {\n onCompleted: () => {\n void refetch();\n },\n });\n\n const jobs = data?.discoveryJobs ?? [];\n\n return (\n <div className=\"space-y-4 p-4\">\n <h1 className=\"flex items-center gap-2 text-2xl font-semibold\">\n <Radar className=\"h-6 w-6\" /> Discovery Jobs\n </h1>\n <p className=\"text-muted-foreground\">\n Run and monitor asset discovery scans from connected environments.\n </p>\n <form\n className=\"grid gap-3 rounded-lg border p-4 md:grid-cols-3\"\n onSubmit={(event) => {\n event.preventDefault();\n void startDiscoveryJob({ variables: { input: { name, source } } });\n }}\n >\n <input\n className=\"rounded-md border px-3 py-2\"\n value={name}\n onChange={(event) => setName(event.target.value)}\n placeholder=\"Job name\"\n />\n <input\n className=\"rounded-md border px-3 py-2\"\n value={source}\n onChange={(event) => setSource(event.target.value)}\n placeholder=\"Discovery source\"\n />\n <button\n className=\"rounded-md bg-primary px-3 py-2 text-primary-foreground\"\n disabled={starting}\n type=\"submit\"\n >\n {starting ? 'Starting...' : 'Start Job'}\n </button>\n </form>\n <div className=\"rounded-lg border\">\n <div className=\"grid grid-cols-5 gap-3 border-b px-4 py-3 text-xs font-semibold uppercase tracking-wide text-muted-foreground\">\n <span>Name</span>\n <span>Source</span>\n <span>Status</span>\n <span>Discovered</span>\n <span>Started</span>\n </div>\n {loading && jobs.length === 0 ? (\n <div className=\"px-4 py-4 text-sm text-muted-foreground\">Loading jobs...</div>\n ) : null}\n {!loading && jobs.length === 0 ? (\n <div className=\"px-4 py-4 text-sm text-muted-foreground\">No discovery jobs found.</div>\n ) : null}\n {jobs.map((job) => (\n <div\n key={job.id}\n className=\"grid grid-cols-5 gap-3 border-b px-4 py-3 text-sm last:border-b-0\"\n >\n <span className=\"font-medium\">{job.name}</span>\n <span>{job.source}</span>\n <span>{job.status}</span>\n <span>{job.assetsDiscovered}</span>\n <span className=\"text-muted-foreground\">\n {job.startedAt ? new Date(job.startedAt).toLocaleString() : 'n/a'}\n </span>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;AAKA,IAAM,IAAuB,CAAG;;;;;;;;;;;;GAc1B,IAA+B,CAAG;;;;;;;AAQxC,SAAgB,IAAoB;CAClC,IAAM,CAAC,GAAM,KAAW,EAAS,0BAA0B,EACrD,CAAC,GAAQ,KAAa,EAAS,iBAAiB,EAEhD,EAAE,SAAM,YAAS,eAAY,EAUhC,GAAsB,EAAE,aAAa,qBAAqB,CAAC,EAExD,CAAC,GAAmB,EAAE,SAAS,OAAc,EAAY,GAA8B,EAC3F,mBAAmB;AACZ,KAAS;IAEjB,CAAC,EAEI,IAAO,GAAM,iBAAiB,EAAE;AAEtC,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf;GACE,kBAAC,MAAD;IAAI,WAAU;cAAd,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAAA,kBAC1B;;GACL,kBAAC,KAAD;IAAG,WAAU;cAAwB;IAEjC,CAAA;GACJ,kBAAC,QAAD;IACE,WAAU;IACV,WAAW,MAAU;AAEd,KADL,EAAM,gBAAgB,EACjB,EAAkB,EAAE,WAAW,EAAE,OAAO;MAAE;MAAM;MAAQ,EAAE,EAAE,CAAC;;cAJtE;KAOE,kBAAC,SAAD;MACE,WAAU;MACV,OAAO;MACP,WAAW,MAAU,EAAQ,EAAM,OAAO,MAAM;MAChD,aAAY;MACZ,CAAA;KACF,kBAAC,SAAD;MACE,WAAU;MACV,OAAO;MACP,WAAW,MAAU,EAAU,EAAM,OAAO,MAAM;MAClD,aAAY;MACZ,CAAA;KACF,kBAAC,UAAD;MACE,WAAU;MACV,UAAU;MACV,MAAK;gBAEJ,IAAW,gBAAgB;MACrB,CAAA;KACJ;;GACP,kBAAC,OAAD;IAAK,WAAU;cAAf;KACE,kBAAC,OAAD;MAAK,WAAU;gBAAf;OACE,kBAAC,QAAD,EAAA,UAAM,QAAW,CAAA;OACjB,kBAAC,QAAD,EAAA,UAAM,UAAa,CAAA;OACnB,kBAAC,QAAD,EAAA,UAAM,UAAa,CAAA;OACnB,kBAAC,QAAD,EAAA,UAAM,cAAiB,CAAA;OACvB,kBAAC,QAAD,EAAA,UAAM,WAAc,CAAA;OAChB;;KACL,KAAW,EAAK,WAAW,IAC1B,kBAAC,OAAD;MAAK,WAAU;gBAA0C;MAAqB,CAAA,GAC5E;KACH,CAAC,KAAW,EAAK,WAAW,IAC3B,kBAAC,OAAD;MAAK,WAAU;gBAA0C;MAA8B,CAAA,GACrF;KACH,EAAK,KAAK,MACT,kBAAC,OAAD;MAEE,WAAU;gBAFZ;OAIE,kBAAC,QAAD;QAAM,WAAU;kBAAe,EAAI;QAAY,CAAA;OAC/C,kBAAC,QAAD,EAAA,UAAO,EAAI,QAAc,CAAA;OACzB,kBAAC,QAAD,EAAA,UAAO,EAAI,QAAc,CAAA;OACzB,kBAAC,QAAD,EAAA,UAAO,EAAI,kBAAwB,CAAA;OACnC,kBAAC,QAAD;QAAM,WAAU;kBACb,EAAI,YAAY,IAAI,KAAK,EAAI,UAAU,CAAC,gBAAgB,GAAG;QACvD,CAAA;OACH;QAVC,EAAI,GAUL,CACN;KACE;;GACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EsgDashboardPage.d.ts","sourceRoot":"","sources":["../../../src/assethandler/pages/EsgDashboardPage.tsx"],"names":[],"mappings":"AA8BA,wBAAgB,gBAAgB,4CAsG/B"}
|