@en-solutions/tgm-client-sdk 1.6.21
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/LICENSE +19 -0
- package/README.md +788 -0
- package/esm2022/en-solutions-tgm-client-sdk.mjs +5 -0
- package/esm2022/lib/components/database-manager/database-manager/database-manager.component.mjs +308 -0
- package/esm2022/lib/components/database-manager/database-manager.module.mjs +66 -0
- package/esm2022/lib/components/database-manager/object-browser/object-browser.component.mjs +98 -0
- package/esm2022/lib/components/database-manager/query-editor/query-editor.component.mjs +196 -0
- package/esm2022/lib/components/database-manager/query-toolbar/query-toolbar.component.mjs +70 -0
- package/esm2022/lib/components/database-manager/record-detail/record-detail.component.mjs +112 -0
- package/esm2022/lib/components/database-manager/registry/entity-registry.mjs +512 -0
- package/esm2022/lib/components/database-manager/results-grid/results-grid.component.mjs +165 -0
- package/esm2022/lib/components/database-manager/services/entity-schema.service.mjs +91 -0
- package/esm2022/lib/components/database-manager/services/query-executor.service.mjs +204 -0
- package/esm2022/lib/components/database-manager/table-data-viewer/table-data-viewer.component.mjs +166 -0
- package/esm2022/lib/components/database-manager/table-structure/table-structure.component.mjs +42 -0
- package/esm2022/lib/components/database-manager/types/database-manager.types.mjs +6 -0
- package/esm2022/lib/components/reporting/export-button/export-button.component.mjs +203 -0
- package/esm2022/lib/components/reporting/generated-report-list/generated-report-list.component.mjs +285 -0
- package/esm2022/lib/components/reporting/report-definition-form/report-definition-form.component.mjs +206 -0
- package/esm2022/lib/components/reporting/report-definition-list/report-definition-list.component.mjs +252 -0
- package/esm2022/lib/components/reporting/report-generate-dialog/report-generate-dialog.component.mjs +122 -0
- package/esm2022/lib/components/reporting/report-stats/report-stats.component.mjs +164 -0
- package/esm2022/lib/components/reporting/report-template-list/report-template-list.component.mjs +114 -0
- package/esm2022/lib/components/reporting/reporting.module.mjs +60 -0
- package/esm2022/lib/components/video-call/incoming-call/incoming-call.component.mjs +80 -0
- package/esm2022/lib/components/video-call/services/livekit-room.service.mjs +142 -0
- package/esm2022/lib/components/video-call/services/video-call-signaling.service.mjs +42 -0
- package/esm2022/lib/components/video-call/services/video-call-state.service.mjs +52 -0
- package/esm2022/lib/components/video-call/types/video-call.types.mjs +2 -0
- package/esm2022/lib/components/video-call/video-call.module.mjs +42 -0
- package/esm2022/lib/components/video-call/video-controls/video-controls.component.mjs +33 -0
- package/esm2022/lib/components/video-call/video-participant/video-participant.component.mjs +68 -0
- package/esm2022/lib/components/video-call/video-room/video-room.component.mjs +89 -0
- package/esm2022/lib/core/auth-interceptor.mjs +33 -0
- package/esm2022/lib/core/client-interceptor.mjs +34 -0
- package/esm2022/lib/core/error-handler.mjs +32 -0
- package/esm2022/lib/core/http-client.service.mjs +254 -0
- package/esm2022/lib/core/websocket.service.mjs +185 -0
- package/esm2022/lib/models/admin/audit.models.mjs +2 -0
- package/esm2022/lib/models/admin/backup.models.mjs +2 -0
- package/esm2022/lib/models/admin/client.models.mjs +2 -0
- package/esm2022/lib/models/admin/email-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/erp.models.mjs +2 -0
- package/esm2022/lib/models/admin/identity-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/index.mjs +14 -0
- package/esm2022/lib/models/admin/messaging-provider.models.mjs +2 -0
- package/esm2022/lib/models/admin/platform-admin.models.mjs +2 -0
- package/esm2022/lib/models/admin/queue.models.mjs +2 -0
- package/esm2022/lib/models/admin/role.models.mjs +2 -0
- package/esm2022/lib/models/admin/sandbox.models.mjs +2 -0
- package/esm2022/lib/models/admin/ticket.models.mjs +2 -0
- package/esm2022/lib/models/admin/webhook.models.mjs +2 -0
- package/esm2022/lib/models/api/ai.models.mjs +2 -0
- package/esm2022/lib/models/api/aip.models.mjs +2 -0
- package/esm2022/lib/models/api/cat.models.mjs +2 -0
- package/esm2022/lib/models/api/company.models.mjs +2 -0
- package/esm2022/lib/models/api/compliance.models.mjs +2 -0
- package/esm2022/lib/models/api/component.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-edge.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-event.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-insight.models.mjs +2 -0
- package/esm2022/lib/models/api/cortex-node.models.mjs +2 -0
- package/esm2022/lib/models/api/custom-field.models.mjs +2 -0
- package/esm2022/lib/models/api/deferral.models.mjs +2 -0
- package/esm2022/lib/models/api/diagnostic-report.models.mjs +2 -0
- package/esm2022/lib/models/api/document.models.mjs +2 -0
- package/esm2022/lib/models/api/energy.models.mjs +2 -0
- package/esm2022/lib/models/api/failure.models.mjs +2 -0
- package/esm2022/lib/models/api/fleet.models.mjs +2 -0
- package/esm2022/lib/models/api/inspection.models.mjs +2 -0
- package/esm2022/lib/models/api/intervention.models.mjs +2 -0
- package/esm2022/lib/models/api/iot.models.mjs +2 -0
- package/esm2022/lib/models/api/knowledge.models.mjs +2 -0
- package/esm2022/lib/models/api/loto.models.mjs +2 -0
- package/esm2022/lib/models/api/maintenance-record.models.mjs +2 -0
- package/esm2022/lib/models/api/maintenance.models.mjs +2 -0
- package/esm2022/lib/models/api/material.models.mjs +2 -0
- package/esm2022/lib/models/api/media.models.mjs +2 -0
- package/esm2022/lib/models/api/misc.models.mjs +2 -0
- package/esm2022/lib/models/api/project.models.mjs +2 -0
- package/esm2022/lib/models/api/quality.models.mjs +2 -0
- package/esm2022/lib/models/api/reporting.models.mjs +3 -0
- package/esm2022/lib/models/api/reservoir-websocket.models.mjs +17 -0
- package/esm2022/lib/models/api/reservoir.models.mjs +2 -0
- package/esm2022/lib/models/api/search.models.mjs +2 -0
- package/esm2022/lib/models/api/sensor.models.mjs +2 -0
- package/esm2022/lib/models/api/unit.models.mjs +2 -0
- package/esm2022/lib/models/api/user.models.mjs +2 -0
- package/esm2022/lib/models/api/warranty.models.mjs +2 -0
- package/esm2022/lib/models/api/work-permit.models.mjs +2 -0
- package/esm2022/lib/models/api/workflow.models.mjs +2 -0
- package/esm2022/lib/models/auth/index.mjs +4 -0
- package/esm2022/lib/models/auth/login.models.mjs +2 -0
- package/esm2022/lib/models/auth/sso.models.mjs +2 -0
- package/esm2022/lib/models/auth/totp.models.mjs +2 -0
- package/esm2022/lib/models/base.models.mjs +99 -0
- package/esm2022/lib/models/chat/chat.models.mjs +2 -0
- package/esm2022/lib/models/enums/cat.enums.mjs +17 -0
- package/esm2022/lib/models/enums/energy.enums.mjs +8 -0
- package/esm2022/lib/models/enums/erp.enums.mjs +5 -0
- package/esm2022/lib/models/enums/index.mjs +15 -0
- package/esm2022/lib/models/enums/inspection.enums.mjs +7 -0
- package/esm2022/lib/models/enums/loto.enums.mjs +25 -0
- package/esm2022/lib/models/enums/misc.enums.mjs +19 -0
- package/esm2022/lib/models/enums/quality.enums.mjs +22 -0
- package/esm2022/lib/models/enums/reservoir.enums.mjs +13 -0
- package/esm2022/lib/models/enums/sso.enums.mjs +3 -0
- package/esm2022/lib/models/enums/status.enums.mjs +41 -0
- package/esm2022/lib/models/enums/time.enums.mjs +5 -0
- package/esm2022/lib/models/enums/type.enums.mjs +45 -0
- package/esm2022/lib/models/enums/user.enums.mjs +6 -0
- package/esm2022/lib/models/enums/work-permit.enums.mjs +33 -0
- package/esm2022/lib/models/index.mjs +42 -0
- package/esm2022/lib/models/realtime/realtime-event.models.mjs +9 -0
- package/esm2022/lib/models/video/video-call.models.mjs +2 -0
- package/esm2022/lib/services/admin/activity-log.service.mjs +28 -0
- package/esm2022/lib/services/admin/announcement.service.mjs +37 -0
- package/esm2022/lib/services/admin/article-admin.service.mjs +37 -0
- package/esm2022/lib/services/admin/audit-log.service.mjs +53 -0
- package/esm2022/lib/services/admin/backup.service.mjs +28 -0
- package/esm2022/lib/services/admin/cache-admin.service.mjs +64 -0
- package/esm2022/lib/services/admin/client-admin.service.mjs +101 -0
- package/esm2022/lib/services/admin/client-api-key.service.mjs +31 -0
- package/esm2022/lib/services/admin/client-ocr.service.mjs +28 -0
- package/esm2022/lib/services/admin/client-usage.service.mjs +31 -0
- package/esm2022/lib/services/admin/data-export.service.mjs +19 -0
- package/esm2022/lib/services/admin/document-admin.service.mjs +40 -0
- package/esm2022/lib/services/admin/email-admin.service.mjs +28 -0
- package/esm2022/lib/services/admin/email-provider.service.mjs +58 -0
- package/esm2022/lib/services/admin/erp-admin.service.mjs +111 -0
- package/esm2022/lib/services/admin/identity-provider.service.mjs +46 -0
- package/esm2022/lib/services/admin/impersonation.service.mjs +19 -0
- package/esm2022/lib/services/admin/index.mjs +31 -0
- package/esm2022/lib/services/admin/messaging-provider.service.mjs +55 -0
- package/esm2022/lib/services/admin/notification.service.mjs +31 -0
- package/esm2022/lib/services/admin/platform-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/platform-webhook.service.mjs +34 -0
- package/esm2022/lib/services/admin/queue-admin.service.mjs +55 -0
- package/esm2022/lib/services/admin/role-admin.service.mjs +81 -0
- package/esm2022/lib/services/admin/sandbox-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/scheduler-admin.service.mjs +34 -0
- package/esm2022/lib/services/admin/subscription.service.mjs +28 -0
- package/esm2022/lib/services/admin/system-health.service.mjs +22 -0
- package/esm2022/lib/services/admin/user-admin.service.mjs +67 -0
- package/esm2022/lib/services/admin/user-permission.service.mjs +40 -0
- package/esm2022/lib/services/admin/webhook-admin.service.mjs +61 -0
- package/esm2022/lib/services/api/agent.service.mjs +29 -0
- package/esm2022/lib/services/api/ai-feedback.service.mjs +17 -0
- package/esm2022/lib/services/api/ai.service.mjs +66 -0
- package/esm2022/lib/services/api/aip-analysis.service.mjs +20 -0
- package/esm2022/lib/services/api/aip-financial.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-geographic.service.mjs +30 -0
- package/esm2022/lib/services/api/aip-network.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-performance.service.mjs +29 -0
- package/esm2022/lib/services/api/aip-resource.service.mjs +23 -0
- package/esm2022/lib/services/api/aip-workflow.service.mjs +32 -0
- package/esm2022/lib/services/api/aip.service.mjs +158 -0
- package/esm2022/lib/services/api/alert.service.mjs +26 -0
- package/esm2022/lib/services/api/anomaly-detection.service.mjs +40 -0
- package/esm2022/lib/services/api/asset-lifecycle.service.mjs +78 -0
- package/esm2022/lib/services/api/audit-entry.service.mjs +22 -0
- package/esm2022/lib/services/api/base-crud.service.mjs +37 -0
- package/esm2022/lib/services/api/bid.service.mjs +17 -0
- package/esm2022/lib/services/api/budget.service.mjs +17 -0
- package/esm2022/lib/services/api/bulk-operation.service.mjs +65 -0
- package/esm2022/lib/services/api/capex-project.service.mjs +17 -0
- package/esm2022/lib/services/api/cat.service.mjs +77 -0
- package/esm2022/lib/services/api/client-article.service.mjs +23 -0
- package/esm2022/lib/services/api/community.service.mjs +41 -0
- package/esm2022/lib/services/api/company-material-type.service.mjs +17 -0
- package/esm2022/lib/services/api/company-material.service.mjs +17 -0
- package/esm2022/lib/services/api/company.service.mjs +30 -0
- package/esm2022/lib/services/api/compliance.service.mjs +74 -0
- package/esm2022/lib/services/api/component-info.service.mjs +17 -0
- package/esm2022/lib/services/api/component-location.service.mjs +17 -0
- package/esm2022/lib/services/api/component.service.mjs +53 -0
- package/esm2022/lib/services/api/cortex-event.service.mjs +17 -0
- package/esm2022/lib/services/api/cortex-insight.service.mjs +23 -0
- package/esm2022/lib/services/api/cortex-node.service.mjs +17 -0
- package/esm2022/lib/services/api/cortex.service.mjs +29 -0
- package/esm2022/lib/services/api/custom-field.service.mjs +70 -0
- package/esm2022/lib/services/api/custom.service.mjs +43 -0
- package/esm2022/lib/services/api/dashboard.service.mjs +44 -0
- package/esm2022/lib/services/api/deferral.service.mjs +54 -0
- package/esm2022/lib/services/api/department.service.mjs +17 -0
- package/esm2022/lib/services/api/device-gateway.service.mjs +33 -0
- package/esm2022/lib/services/api/diagnostic-report.service.mjs +23 -0
- package/esm2022/lib/services/api/digital-twin.service.mjs +56 -0
- package/esm2022/lib/services/api/document.service.mjs +53 -0
- package/esm2022/lib/services/api/dynamic-crud.service.mjs +67 -0
- package/esm2022/lib/services/api/energy-analytics.service.mjs +42 -0
- package/esm2022/lib/services/api/energy-production.service.mjs +17 -0
- package/esm2022/lib/services/api/energy.service.mjs +91 -0
- package/esm2022/lib/services/api/entity-comment.service.mjs +31 -0
- package/esm2022/lib/services/api/event.service.mjs +17 -0
- package/esm2022/lib/services/api/export.service.mjs +216 -0
- package/esm2022/lib/services/api/extension.service.mjs +56 -0
- package/esm2022/lib/services/api/failure.service.mjs +53 -0
- package/esm2022/lib/services/api/fleet.service.mjs +140 -0
- package/esm2022/lib/services/api/inactive-component.service.mjs +17 -0
- package/esm2022/lib/services/api/index.mjs +101 -0
- package/esm2022/lib/services/api/inspection.service.mjs +29 -0
- package/esm2022/lib/services/api/intervention-request.service.mjs +17 -0
- package/esm2022/lib/services/api/intervention.service.mjs +17 -0
- package/esm2022/lib/services/api/knowledge.service.mjs +209 -0
- package/esm2022/lib/services/api/license.service.mjs +25 -0
- package/esm2022/lib/services/api/location.service.mjs +17 -0
- package/esm2022/lib/services/api/log.service.mjs +17 -0
- package/esm2022/lib/services/api/login-history.service.mjs +17 -0
- package/esm2022/lib/services/api/maintenance-plan.service.mjs +17 -0
- package/esm2022/lib/services/api/maintenance-record.service.mjs +17 -0
- package/esm2022/lib/services/api/material-consumable.service.mjs +41 -0
- package/esm2022/lib/services/api/material-instrument.service.mjs +29 -0
- package/esm2022/lib/services/api/material-item.service.mjs +53 -0
- package/esm2022/lib/services/api/material-tooling.service.mjs +41 -0
- package/esm2022/lib/services/api/measurement-unit.service.mjs +17 -0
- package/esm2022/lib/services/api/misc-crud.service.mjs +329 -0
- package/esm2022/lib/services/api/note.service.mjs +37 -0
- package/esm2022/lib/services/api/outage-resource.service.mjs +28 -0
- package/esm2022/lib/services/api/plant-data.service.mjs +31 -0
- package/esm2022/lib/services/api/procurement.service.mjs +53 -0
- package/esm2022/lib/services/api/project.service.mjs +17 -0
- package/esm2022/lib/services/api/property-template.service.mjs +17 -0
- package/esm2022/lib/services/api/quality.service.mjs +29 -0
- package/esm2022/lib/services/api/recurring-event.service.mjs +17 -0
- package/esm2022/lib/services/api/reporting.service.mjs +117 -0
- package/esm2022/lib/services/api/reservoir-data.service.mjs +19 -0
- package/esm2022/lib/services/api/reservoir.service.mjs +209 -0
- package/esm2022/lib/services/api/room.service.mjs +17 -0
- package/esm2022/lib/services/api/sandbox.service.mjs +62 -0
- package/esm2022/lib/services/api/scheduled-report.service.mjs +17 -0
- package/esm2022/lib/services/api/search.service.mjs +77 -0
- package/esm2022/lib/services/api/sensor.service.mjs +36 -0
- package/esm2022/lib/services/api/sla-policy.service.mjs +17 -0
- package/esm2022/lib/services/api/sla.service.mjs +17 -0
- package/esm2022/lib/services/api/threshold-alert-rule.service.mjs +17 -0
- package/esm2022/lib/services/api/ticket.service.mjs +73 -0
- package/esm2022/lib/services/api/time-entry.service.mjs +17 -0
- package/esm2022/lib/services/api/todo.service.mjs +17 -0
- package/esm2022/lib/services/api/unit.service.mjs +17 -0
- package/esm2022/lib/services/api/upload.service.mjs +84 -0
- package/esm2022/lib/services/api/user.service.mjs +107 -0
- package/esm2022/lib/services/api/warehouse.service.mjs +29 -0
- package/esm2022/lib/services/api/warranty.service.mjs +29 -0
- package/esm2022/lib/services/api/work-order.service.mjs +28 -0
- package/esm2022/lib/services/api/work-permit.service.mjs +17 -0
- package/esm2022/lib/services/api/workflow.service.mjs +86 -0
- package/esm2022/lib/services/auth/auth.service.mjs +97 -0
- package/esm2022/lib/services/auth/index.mjs +5 -0
- package/esm2022/lib/services/auth/platform-auth.service.mjs +39 -0
- package/esm2022/lib/services/auth/sso-auth.service.mjs +46 -0
- package/esm2022/lib/services/auth/totp.service.mjs +34 -0
- package/esm2022/lib/services/chat/chat-rest.service.mjs +104 -0
- package/esm2022/lib/services/chat/chat-websocket.service.mjs +70 -0
- package/esm2022/lib/services/chat/index.mjs +3 -0
- package/esm2022/lib/services/index.mjs +8 -0
- package/esm2022/lib/services/realtime/index.mjs +2 -0
- package/esm2022/lib/services/realtime/realtime-event.service.mjs +187 -0
- package/esm2022/lib/services/reservoir/index.mjs +2 -0
- package/esm2022/lib/services/reservoir/reservoir-websocket.service.mjs +105 -0
- package/esm2022/lib/services/video/index.mjs +3 -0
- package/esm2022/lib/services/video/video-call-rest.service.mjs +42 -0
- package/esm2022/lib/services/video/video-call-websocket.service.mjs +55 -0
- package/esm2022/lib/tgm-sdk.config.mjs +32 -0
- package/esm2022/lib/tgm-sdk.module.mjs +38 -0
- package/esm2022/public-api.mjs +52 -0
- package/fesm2022/en-solutions-tgm-client-sdk.mjs +11029 -0
- package/fesm2022/en-solutions-tgm-client-sdk.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/components/database-manager/database-manager/database-manager.component.d.ts +70 -0
- package/lib/components/database-manager/database-manager.module.d.ts +15 -0
- package/lib/components/database-manager/object-browser/object-browser.component.d.ts +35 -0
- package/lib/components/database-manager/query-editor/query-editor.component.d.ts +31 -0
- package/lib/components/database-manager/query-toolbar/query-toolbar.component.d.ts +23 -0
- package/lib/components/database-manager/record-detail/record-detail.component.d.ts +35 -0
- package/lib/components/database-manager/registry/entity-registry.d.ts +16 -0
- package/lib/components/database-manager/results-grid/results-grid.component.d.ts +62 -0
- package/lib/components/database-manager/services/entity-schema.service.d.ts +37 -0
- package/lib/components/database-manager/services/query-executor.service.d.ts +57 -0
- package/lib/components/database-manager/table-data-viewer/table-data-viewer.component.d.ts +54 -0
- package/lib/components/database-manager/table-structure/table-structure.component.d.ts +16 -0
- package/lib/components/database-manager/types/database-manager.types.d.ts +71 -0
- package/lib/components/reporting/export-button/export-button.component.d.ts +50 -0
- package/lib/components/reporting/generated-report-list/generated-report-list.component.d.ts +93 -0
- package/lib/components/reporting/report-definition-form/report-definition-form.component.d.ts +65 -0
- package/lib/components/reporting/report-definition-list/report-definition-list.component.d.ts +90 -0
- package/lib/components/reporting/report-generate-dialog/report-generate-dialog.component.d.ts +46 -0
- package/lib/components/reporting/report-stats/report-stats.component.d.ts +47 -0
- package/lib/components/reporting/report-template-list/report-template-list.component.d.ts +39 -0
- package/lib/components/reporting/reporting.module.d.ts +14 -0
- package/lib/components/video-call/incoming-call/incoming-call.component.d.ts +20 -0
- package/lib/components/video-call/services/livekit-room.service.d.ts +28 -0
- package/lib/components/video-call/services/video-call-signaling.service.d.ts +21 -0
- package/lib/components/video-call/services/video-call-state.service.d.ts +25 -0
- package/lib/components/video-call/types/video-call.types.d.ts +49 -0
- package/lib/components/video-call/video-call.module.d.ts +11 -0
- package/lib/components/video-call/video-controls/video-controls.component.d.ts +13 -0
- package/lib/components/video-call/video-participant/video-participant.component.d.ts +17 -0
- package/lib/components/video-call/video-room/video-room.component.d.ts +30 -0
- package/lib/core/auth-interceptor.d.ts +13 -0
- package/lib/core/client-interceptor.d.ts +14 -0
- package/lib/core/error-handler.d.ts +13 -0
- package/lib/core/http-client.service.d.ts +61 -0
- package/lib/core/websocket.service.d.ts +37 -0
- package/lib/models/admin/audit.models.d.ts +73 -0
- package/lib/models/admin/backup.models.d.ts +101 -0
- package/lib/models/admin/client.models.d.ts +99 -0
- package/lib/models/admin/email-provider.models.d.ts +56 -0
- package/lib/models/admin/erp.models.d.ts +188 -0
- package/lib/models/admin/identity-provider.models.d.ts +1 -0
- package/lib/models/admin/index.d.ts +13 -0
- package/lib/models/admin/messaging-provider.models.d.ts +49 -0
- package/lib/models/admin/platform-admin.models.d.ts +33 -0
- package/lib/models/admin/queue.models.d.ts +54 -0
- package/lib/models/admin/role.models.d.ts +50 -0
- package/lib/models/admin/sandbox.models.d.ts +54 -0
- package/lib/models/admin/ticket.models.d.ts +48 -0
- package/lib/models/admin/webhook.models.d.ts +65 -0
- package/lib/models/api/ai.models.d.ts +75 -0
- package/lib/models/api/aip.models.d.ts +545 -0
- package/lib/models/api/cat.models.d.ts +260 -0
- package/lib/models/api/company.models.d.ts +125 -0
- package/lib/models/api/compliance.models.d.ts +74 -0
- package/lib/models/api/component.models.d.ts +294 -0
- package/lib/models/api/cortex-edge.models.d.ts +14 -0
- package/lib/models/api/cortex-event.models.d.ts +12 -0
- package/lib/models/api/cortex-insight.models.d.ts +25 -0
- package/lib/models/api/cortex-node.models.d.ts +10 -0
- package/lib/models/api/custom-field.models.d.ts +37 -0
- package/lib/models/api/deferral.models.d.ts +81 -0
- package/lib/models/api/diagnostic-report.models.d.ts +29 -0
- package/lib/models/api/document.models.d.ts +95 -0
- package/lib/models/api/energy.models.d.ts +210 -0
- package/lib/models/api/failure.models.d.ts +171 -0
- package/lib/models/api/fleet.models.d.ts +193 -0
- package/lib/models/api/inspection.models.d.ts +110 -0
- package/lib/models/api/intervention.models.d.ts +254 -0
- package/lib/models/api/iot.models.d.ts +15 -0
- package/lib/models/api/knowledge.models.d.ts +340 -0
- package/lib/models/api/loto.models.d.ts +51 -0
- package/lib/models/api/maintenance-record.models.d.ts +100 -0
- package/lib/models/api/maintenance.models.d.ts +188 -0
- package/lib/models/api/material.models.d.ts +261 -0
- package/lib/models/api/media.models.d.ts +106 -0
- package/lib/models/api/misc.models.d.ts +929 -0
- package/lib/models/api/project.models.d.ts +118 -0
- package/lib/models/api/quality.models.d.ts +153 -0
- package/lib/models/api/reporting.models.d.ts +76 -0
- package/lib/models/api/reservoir-websocket.models.d.ts +48 -0
- package/lib/models/api/reservoir.models.d.ts +274 -0
- package/lib/models/api/search.models.d.ts +30 -0
- package/lib/models/api/sensor.models.d.ts +117 -0
- package/lib/models/api/unit.models.d.ts +82 -0
- package/lib/models/api/user.models.d.ts +253 -0
- package/lib/models/api/warranty.models.d.ts +51 -0
- package/lib/models/api/work-permit.models.d.ts +70 -0
- package/lib/models/api/workflow.models.d.ts +52 -0
- package/lib/models/auth/index.d.ts +3 -0
- package/lib/models/auth/login.models.d.ts +134 -0
- package/lib/models/auth/sso.models.d.ts +136 -0
- package/lib/models/auth/totp.models.d.ts +19 -0
- package/lib/models/base.models.d.ts +90 -0
- package/lib/models/chat/chat.models.d.ts +171 -0
- package/lib/models/enums/cat.enums.d.ts +114 -0
- package/lib/models/enums/energy.enums.d.ts +50 -0
- package/lib/models/enums/erp.enums.d.ts +49 -0
- package/lib/models/enums/index.d.ts +14 -0
- package/lib/models/enums/inspection.enums.d.ts +61 -0
- package/lib/models/enums/loto.enums.d.ts +41 -0
- package/lib/models/enums/misc.enums.d.ts +151 -0
- package/lib/models/enums/quality.enums.d.ts +25 -0
- package/lib/models/enums/reservoir.enums.d.ts +80 -0
- package/lib/models/enums/sso.enums.d.ts +15 -0
- package/lib/models/enums/status.enums.d.ts +296 -0
- package/lib/models/enums/time.enums.d.ts +51 -0
- package/lib/models/enums/type.enums.d.ts +324 -0
- package/lib/models/enums/user.enums.d.ts +31 -0
- package/lib/models/enums/work-permit.enums.d.ts +56 -0
- package/lib/models/index.d.ts +41 -0
- package/lib/models/realtime/realtime-event.models.d.ts +95 -0
- package/lib/models/video/video-call.models.d.ts +65 -0
- package/lib/services/admin/activity-log.service.d.ts +13 -0
- package/lib/services/admin/announcement.service.d.ts +17 -0
- package/lib/services/admin/article-admin.service.d.ts +17 -0
- package/lib/services/admin/audit-log.service.d.ts +22 -0
- package/lib/services/admin/backup.service.d.ts +15 -0
- package/lib/services/admin/cache-admin.service.d.ts +26 -0
- package/lib/services/admin/client-admin.service.d.ts +38 -0
- package/lib/services/admin/client-api-key.service.d.ts +15 -0
- package/lib/services/admin/client-ocr.service.d.ts +14 -0
- package/lib/services/admin/client-usage.service.d.ts +15 -0
- package/lib/services/admin/data-export.service.d.ts +10 -0
- package/lib/services/admin/document-admin.service.d.ts +18 -0
- package/lib/services/admin/email-admin.service.d.ts +14 -0
- package/lib/services/admin/email-provider.service.d.ts +25 -0
- package/lib/services/admin/erp-admin.service.d.ts +41 -0
- package/lib/services/admin/identity-provider.service.d.ts +21 -0
- package/lib/services/admin/impersonation.service.d.ts +11 -0
- package/lib/services/admin/index.d.ts +30 -0
- package/lib/services/admin/messaging-provider.service.d.ts +24 -0
- package/lib/services/admin/notification.service.d.ts +15 -0
- package/lib/services/admin/platform-admin.service.d.ts +17 -0
- package/lib/services/admin/platform-webhook.service.d.ts +16 -0
- package/lib/services/admin/queue-admin.service.d.ts +24 -0
- package/lib/services/admin/role-admin.service.d.ts +37 -0
- package/lib/services/admin/sandbox-admin.service.d.ts +17 -0
- package/lib/services/admin/scheduler-admin.service.d.ts +61 -0
- package/lib/services/admin/subscription.service.d.ts +15 -0
- package/lib/services/admin/system-health.service.d.ts +11 -0
- package/lib/services/admin/user-admin.service.d.ts +27 -0
- package/lib/services/admin/user-permission.service.d.ts +18 -0
- package/lib/services/admin/webhook-admin.service.d.ts +26 -0
- package/lib/services/api/agent.service.d.ts +16 -0
- package/lib/services/api/ai-feedback.service.d.ts +9 -0
- package/lib/services/api/ai.service.d.ts +36 -0
- package/lib/services/api/aip-analysis.service.d.ts +13 -0
- package/lib/services/api/aip-financial.service.d.ts +16 -0
- package/lib/services/api/aip-geographic.service.d.ts +16 -0
- package/lib/services/api/aip-network.service.d.ts +16 -0
- package/lib/services/api/aip-performance.service.d.ts +16 -0
- package/lib/services/api/aip-resource.service.d.ts +14 -0
- package/lib/services/api/aip-workflow.service.d.ts +24 -0
- package/lib/services/api/aip.service.d.ts +73 -0
- package/lib/services/api/alert.service.d.ts +15 -0
- package/lib/services/api/anomaly-detection.service.d.ts +26 -0
- package/lib/services/api/asset-lifecycle.service.d.ts +29 -0
- package/lib/services/api/audit-entry.service.d.ts +13 -0
- package/lib/services/api/base-crud.service.d.ts +18 -0
- package/lib/services/api/bid.service.d.ts +10 -0
- package/lib/services/api/budget.service.d.ts +10 -0
- package/lib/services/api/bulk-operation.service.d.ts +26 -0
- package/lib/services/api/capex-project.service.d.ts +10 -0
- package/lib/services/api/cat.service.d.ts +40 -0
- package/lib/services/api/client-article.service.d.ts +14 -0
- package/lib/services/api/community.service.d.ts +21 -0
- package/lib/services/api/company-material-type.service.d.ts +10 -0
- package/lib/services/api/company-material.service.d.ts +9 -0
- package/lib/services/api/company.service.d.ts +15 -0
- package/lib/services/api/compliance.service.d.ts +35 -0
- package/lib/services/api/component-info.service.d.ts +10 -0
- package/lib/services/api/component-location.service.d.ts +10 -0
- package/lib/services/api/component.service.d.ts +32 -0
- package/lib/services/api/cortex-event.service.d.ts +10 -0
- package/lib/services/api/cortex-insight.service.d.ts +14 -0
- package/lib/services/api/cortex-node.service.d.ts +10 -0
- package/lib/services/api/cortex.service.d.ts +15 -0
- package/lib/services/api/custom-field.service.d.ts +33 -0
- package/lib/services/api/custom.service.d.ts +23 -0
- package/lib/services/api/dashboard.service.d.ts +18 -0
- package/lib/services/api/deferral.service.d.ts +29 -0
- package/lib/services/api/department.service.d.ts +9 -0
- package/lib/services/api/device-gateway.service.d.ts +16 -0
- package/lib/services/api/diagnostic-report.service.d.ts +14 -0
- package/lib/services/api/digital-twin.service.d.ts +29 -0
- package/lib/services/api/document.service.d.ts +28 -0
- package/lib/services/api/dynamic-crud.service.d.ts +41 -0
- package/lib/services/api/energy-analytics.service.d.ts +16 -0
- package/lib/services/api/energy-production.service.d.ts +10 -0
- package/lib/services/api/energy.service.d.ts +46 -0
- package/lib/services/api/entity-comment.service.d.ts +16 -0
- package/lib/services/api/event.service.d.ts +10 -0
- package/lib/services/api/export.service.d.ts +48 -0
- package/lib/services/api/extension.service.d.ts +24 -0
- package/lib/services/api/failure.service.d.ts +28 -0
- package/lib/services/api/fleet.service.d.ts +71 -0
- package/lib/services/api/inactive-component.service.d.ts +10 -0
- package/lib/services/api/index.d.ts +101 -0
- package/lib/services/api/inspection.service.d.ts +16 -0
- package/lib/services/api/intervention-request.service.d.ts +10 -0
- package/lib/services/api/intervention.service.d.ts +10 -0
- package/lib/services/api/knowledge.service.d.ts +106 -0
- package/lib/services/api/license.service.d.ts +14 -0
- package/lib/services/api/location.service.d.ts +9 -0
- package/lib/services/api/log.service.d.ts +9 -0
- package/lib/services/api/login-history.service.d.ts +10 -0
- package/lib/services/api/maintenance-plan.service.d.ts +10 -0
- package/lib/services/api/maintenance-record.service.d.ts +10 -0
- package/lib/services/api/material-consumable.service.d.ts +22 -0
- package/lib/services/api/material-instrument.service.d.ts +16 -0
- package/lib/services/api/material-item.service.d.ts +28 -0
- package/lib/services/api/material-tooling.service.d.ts +22 -0
- package/lib/services/api/measurement-unit.service.d.ts +10 -0
- package/lib/services/api/misc-crud.service.d.ts +167 -0
- package/lib/services/api/note.service.d.ts +14 -0
- package/lib/services/api/outage-resource.service.d.ts +15 -0
- package/lib/services/api/plant-data.service.d.ts +14 -0
- package/lib/services/api/procurement.service.d.ts +27 -0
- package/lib/services/api/project.service.d.ts +10 -0
- package/lib/services/api/property-template.service.d.ts +10 -0
- package/lib/services/api/quality.service.d.ts +16 -0
- package/lib/services/api/recurring-event.service.d.ts +10 -0
- package/lib/services/api/reporting.service.d.ts +38 -0
- package/lib/services/api/reservoir-data.service.d.ts +10 -0
- package/lib/services/api/reservoir.service.d.ts +109 -0
- package/lib/services/api/room.service.d.ts +10 -0
- package/lib/services/api/sandbox.service.d.ts +26 -0
- package/lib/services/api/scheduled-report.service.d.ts +10 -0
- package/lib/services/api/search.service.d.ts +54 -0
- package/lib/services/api/sensor.service.d.ts +17 -0
- package/lib/services/api/sla-policy.service.d.ts +10 -0
- package/lib/services/api/sla.service.d.ts +10 -0
- package/lib/services/api/threshold-alert-rule.service.d.ts +10 -0
- package/lib/services/api/ticket.service.d.ts +60 -0
- package/lib/services/api/time-entry.service.d.ts +10 -0
- package/lib/services/api/todo.service.d.ts +10 -0
- package/lib/services/api/unit.service.d.ts +10 -0
- package/lib/services/api/upload.service.d.ts +50 -0
- package/lib/services/api/user.service.d.ts +59 -0
- package/lib/services/api/warehouse.service.d.ts +15 -0
- package/lib/services/api/warranty.service.d.ts +16 -0
- package/lib/services/api/work-order.service.d.ts +17 -0
- package/lib/services/api/work-permit.service.d.ts +10 -0
- package/lib/services/api/workflow.service.d.ts +33 -0
- package/lib/services/auth/auth.service.d.ts +33 -0
- package/lib/services/auth/index.d.ts +4 -0
- package/lib/services/auth/platform-auth.service.d.ts +16 -0
- package/lib/services/auth/sso-auth.service.d.ts +21 -0
- package/lib/services/auth/totp.service.d.ts +18 -0
- package/lib/services/chat/chat-rest.service.d.ts +40 -0
- package/lib/services/chat/chat-websocket.service.d.ts +34 -0
- package/lib/services/chat/index.d.ts +2 -0
- package/lib/services/index.d.ts +7 -0
- package/lib/services/realtime/index.d.ts +1 -0
- package/lib/services/realtime/realtime-event.service.d.ts +137 -0
- package/lib/services/reservoir/index.d.ts +1 -0
- package/lib/services/reservoir/reservoir-websocket.service.d.ts +47 -0
- package/lib/services/video/index.d.ts +2 -0
- package/lib/services/video/video-call-rest.service.d.ts +19 -0
- package/lib/services/video/video-call-websocket.service.d.ts +31 -0
- package/lib/tgm-sdk.config.d.ts +36 -0
- package/lib/tgm-sdk.module.d.ts +13 -0
- package/package.json +40 -0
- package/public-api.d.ts +42 -0
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../services/api/reporting.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class ReportStatsComponent {
|
|
7
|
+
reportingService;
|
|
8
|
+
// ── Data ──
|
|
9
|
+
stats;
|
|
10
|
+
loading = false;
|
|
11
|
+
autoFetch = true;
|
|
12
|
+
// ── Labels ──
|
|
13
|
+
title = '';
|
|
14
|
+
totalDefinitionsLabel = 'Total Definitions';
|
|
15
|
+
completedLabel = 'Completed';
|
|
16
|
+
failedLabel = 'Failed';
|
|
17
|
+
pendingLabel = 'Pending';
|
|
18
|
+
inProgressLabel = 'In Progress';
|
|
19
|
+
// ── Custom stat cards (fully override default cards) ──
|
|
20
|
+
customCards;
|
|
21
|
+
// ── CSS overrides ──
|
|
22
|
+
containerClass = '';
|
|
23
|
+
cardClass = '';
|
|
24
|
+
// ── Custom templates ──
|
|
25
|
+
cardTemplate;
|
|
26
|
+
loadingTemplate;
|
|
27
|
+
headerTemplate;
|
|
28
|
+
// ── Events ──
|
|
29
|
+
cardClick = new EventEmitter();
|
|
30
|
+
statsFetched = new EventEmitter();
|
|
31
|
+
fetchError = new EventEmitter();
|
|
32
|
+
internalStats;
|
|
33
|
+
internalLoading = false;
|
|
34
|
+
constructor(reportingService) {
|
|
35
|
+
this.reportingService = reportingService;
|
|
36
|
+
}
|
|
37
|
+
ngOnInit() {
|
|
38
|
+
if (!this.stats && this.autoFetch) {
|
|
39
|
+
this.fetchStats();
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
get displayStats() {
|
|
43
|
+
return this.stats ?? this.internalStats;
|
|
44
|
+
}
|
|
45
|
+
get isLoading() {
|
|
46
|
+
return this.loading || this.internalLoading;
|
|
47
|
+
}
|
|
48
|
+
get cards() {
|
|
49
|
+
if (this.customCards)
|
|
50
|
+
return this.customCards;
|
|
51
|
+
const s = this.displayStats;
|
|
52
|
+
if (!s)
|
|
53
|
+
return [];
|
|
54
|
+
const result = [
|
|
55
|
+
{
|
|
56
|
+
key: 'totalDefinitions',
|
|
57
|
+
label: this.totalDefinitionsLabel,
|
|
58
|
+
value: s.totalDefinitions,
|
|
59
|
+
colorVar: 'var(--tgm-report-primary)',
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
key: 'completed',
|
|
63
|
+
label: this.completedLabel,
|
|
64
|
+
value: s.byStatus?.['COMPLETED'] ?? 0,
|
|
65
|
+
colorVar: 'var(--tgm-report-success)',
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
key: 'failed',
|
|
69
|
+
label: this.failedLabel,
|
|
70
|
+
value: s.byStatus?.['FAILED'] ?? 0,
|
|
71
|
+
colorVar: 'var(--tgm-report-danger)',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
key: 'pending',
|
|
75
|
+
label: this.pendingLabel,
|
|
76
|
+
value: s.byStatus?.['PENDING'] ?? 0,
|
|
77
|
+
colorVar: 'var(--tgm-report-warning)',
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
key: 'inProgress',
|
|
81
|
+
label: this.inProgressLabel,
|
|
82
|
+
value: s.byStatus?.['IN_PROGRESS'] ?? 0,
|
|
83
|
+
colorVar: 'var(--tgm-report-info)',
|
|
84
|
+
},
|
|
85
|
+
];
|
|
86
|
+
// Add by-type breakdown cards
|
|
87
|
+
if (s.byType) {
|
|
88
|
+
for (const [type, count] of Object.entries(s.byType)) {
|
|
89
|
+
result.push({
|
|
90
|
+
key: `type_${type}`,
|
|
91
|
+
label: type.replace(/_/g, ' '),
|
|
92
|
+
value: count,
|
|
93
|
+
colorVar: 'var(--tgm-report-text-secondary)',
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
onCardClick(key) {
|
|
100
|
+
this.cardClick.emit(key);
|
|
101
|
+
}
|
|
102
|
+
trackByKey(_index, card) {
|
|
103
|
+
return card.key;
|
|
104
|
+
}
|
|
105
|
+
fetchStats() {
|
|
106
|
+
this.internalLoading = true;
|
|
107
|
+
this.reportingService.getReportStats().subscribe({
|
|
108
|
+
next: (res) => {
|
|
109
|
+
this.internalStats = res.data;
|
|
110
|
+
this.internalLoading = false;
|
|
111
|
+
if (this.internalStats) {
|
|
112
|
+
this.statsFetched.emit(this.internalStats);
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
error: (err) => {
|
|
116
|
+
this.internalLoading = false;
|
|
117
|
+
this.fetchError.emit(err);
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportStatsComponent, deps: [{ token: i1.ReportingService }], target: i0.ɵɵFactoryTarget.Component });
|
|
122
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ReportStatsComponent, isStandalone: true, selector: "tgm-report-stats", inputs: { stats: "stats", loading: "loading", autoFetch: "autoFetch", title: "title", totalDefinitionsLabel: "totalDefinitionsLabel", completedLabel: "completedLabel", failedLabel: "failedLabel", pendingLabel: "pendingLabel", inProgressLabel: "inProgressLabel", customCards: "customCards", containerClass: "containerClass", cardClass: "cardClass", cardTemplate: "cardTemplate", loadingTemplate: "loadingTemplate", headerTemplate: "headerTemplate" }, outputs: { cardClick: "cardClick", statsFetched: "statsFetched", fetchError: "fetchError" }, ngImport: i0, template: "<div class=\"tgm-stats\" [ngClass]=\"containerClass\">\n <!-- Header -->\n <ng-container *ngIf=\"headerTemplate; else defaultHeader\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <h3 class=\"tgm-stats__title\" *ngIf=\"title\">{{ title }}</h3>\n </ng-template>\n\n <!-- Loading -->\n <ng-container *ngIf=\"isLoading\">\n <ng-container *ngIf=\"loadingTemplate; else defaultLoading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultLoading>\n <div class=\"tgm-stats__loading\">\n <div class=\"tgm-spinner\"></div>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Cards Grid -->\n <div class=\"tgm-stats__grid\" *ngIf=\"!isLoading && cards.length > 0\">\n <ng-container *ngFor=\"let card of cards; let i = index; trackBy: trackByKey\">\n <!-- Custom card template -->\n <ng-container *ngIf=\"cardTemplate; else defaultCard\">\n <ng-container *ngTemplateOutlet=\"cardTemplate; context: { $implicit: card, index: i }\"></ng-container>\n </ng-container>\n\n <!-- Default card -->\n <ng-template #defaultCard>\n <div class=\"tgm-stat-card\" [ngClass]=\"cardClass\" (click)=\"onCardClick(card.key)\"\n [style.--card-accent]=\"card.colorVar || 'var(--tgm-report-primary)'\">\n <span class=\"tgm-stat-card__value\">{{ card.value }}</span>\n <span class=\"tgm-stat-card__label\">{{ card.label }}</span>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</div>\n", styles: [":host{--tgm-report-bg: rgba(255, 255, 255, .05);--tgm-report-bg-hover: rgba(255, 255, 255, .08);--tgm-report-border: rgba(255, 255, 255, .1);--tgm-report-text: #e5e7eb;--tgm-report-text-secondary: #9ca3af;--tgm-report-text-muted: #6b7280;--tgm-report-primary: #3b82f6;--tgm-report-success: #22c55e;--tgm-report-warning: #eab308;--tgm-report-danger: #ef4444;--tgm-report-info: #3b82f6;--tgm-report-radius: 8px;--tgm-report-font-family: inherit;--tgm-report-font-size: 14px;--tgm-report-spacing: 16px;--tgm-report-spacing-sm: 8px;display:block;font-family:var(--tgm-report-font-family);font-size:var(--tgm-report-font-size);color:var(--tgm-report-text)}.tgm-stats__title{margin:0 0 var(--tgm-report-spacing);font-size:18px;font-weight:600}.tgm-stats__loading{display:flex;align-items:center;justify-content:center;padding:48px 0}.tgm-stats__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--tgm-report-spacing)}.tgm-stat-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px var(--tgm-report-spacing);background:var(--tgm-report-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius);cursor:pointer;transition:background .15s,border-color .15s,transform .15s;border-top:3px solid var(--card-accent, var(--tgm-report-primary));text-align:center}.tgm-stat-card:hover{background:var(--tgm-report-bg-hover);transform:translateY(-2px)}.tgm-stat-card__value{font-size:28px;font-weight:700;color:var(--card-accent, var(--tgm-report-primary));line-height:1;margin-bottom:6px}.tgm-stat-card__label{font-size:12px;font-weight:500;color:var(--tgm-report-text-secondary);text-transform:capitalize}.tgm-spinner{width:32px;height:32px;border:3px solid var(--tgm-report-border);border-top-color:var(--tgm-report-primary);border-radius:50%;animation:tgm-spin .8s linear infinite}@keyframes tgm-spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
123
|
+
}
|
|
124
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportStatsComponent, decorators: [{
|
|
125
|
+
type: Component,
|
|
126
|
+
args: [{ selector: 'tgm-report-stats', standalone: true, imports: [CommonModule], template: "<div class=\"tgm-stats\" [ngClass]=\"containerClass\">\n <!-- Header -->\n <ng-container *ngIf=\"headerTemplate; else defaultHeader\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <h3 class=\"tgm-stats__title\" *ngIf=\"title\">{{ title }}</h3>\n </ng-template>\n\n <!-- Loading -->\n <ng-container *ngIf=\"isLoading\">\n <ng-container *ngIf=\"loadingTemplate; else defaultLoading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultLoading>\n <div class=\"tgm-stats__loading\">\n <div class=\"tgm-spinner\"></div>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Cards Grid -->\n <div class=\"tgm-stats__grid\" *ngIf=\"!isLoading && cards.length > 0\">\n <ng-container *ngFor=\"let card of cards; let i = index; trackBy: trackByKey\">\n <!-- Custom card template -->\n <ng-container *ngIf=\"cardTemplate; else defaultCard\">\n <ng-container *ngTemplateOutlet=\"cardTemplate; context: { $implicit: card, index: i }\"></ng-container>\n </ng-container>\n\n <!-- Default card -->\n <ng-template #defaultCard>\n <div class=\"tgm-stat-card\" [ngClass]=\"cardClass\" (click)=\"onCardClick(card.key)\"\n [style.--card-accent]=\"card.colorVar || 'var(--tgm-report-primary)'\">\n <span class=\"tgm-stat-card__value\">{{ card.value }}</span>\n <span class=\"tgm-stat-card__label\">{{ card.label }}</span>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</div>\n", styles: [":host{--tgm-report-bg: rgba(255, 255, 255, .05);--tgm-report-bg-hover: rgba(255, 255, 255, .08);--tgm-report-border: rgba(255, 255, 255, .1);--tgm-report-text: #e5e7eb;--tgm-report-text-secondary: #9ca3af;--tgm-report-text-muted: #6b7280;--tgm-report-primary: #3b82f6;--tgm-report-success: #22c55e;--tgm-report-warning: #eab308;--tgm-report-danger: #ef4444;--tgm-report-info: #3b82f6;--tgm-report-radius: 8px;--tgm-report-font-family: inherit;--tgm-report-font-size: 14px;--tgm-report-spacing: 16px;--tgm-report-spacing-sm: 8px;display:block;font-family:var(--tgm-report-font-family);font-size:var(--tgm-report-font-size);color:var(--tgm-report-text)}.tgm-stats__title{margin:0 0 var(--tgm-report-spacing);font-size:18px;font-weight:600}.tgm-stats__loading{display:flex;align-items:center;justify-content:center;padding:48px 0}.tgm-stats__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:var(--tgm-report-spacing)}.tgm-stat-card{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px var(--tgm-report-spacing);background:var(--tgm-report-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius);cursor:pointer;transition:background .15s,border-color .15s,transform .15s;border-top:3px solid var(--card-accent, var(--tgm-report-primary));text-align:center}.tgm-stat-card:hover{background:var(--tgm-report-bg-hover);transform:translateY(-2px)}.tgm-stat-card__value{font-size:28px;font-weight:700;color:var(--card-accent, var(--tgm-report-primary));line-height:1;margin-bottom:6px}.tgm-stat-card__label{font-size:12px;font-weight:500;color:var(--tgm-report-text-secondary);text-transform:capitalize}.tgm-spinner{width:32px;height:32px;border:3px solid var(--tgm-report-border);border-top-color:var(--tgm-report-primary);border-radius:50%;animation:tgm-spin .8s linear infinite}@keyframes tgm-spin{to{transform:rotate(360deg)}}\n"] }]
|
|
127
|
+
}], ctorParameters: () => [{ type: i1.ReportingService }], propDecorators: { stats: [{
|
|
128
|
+
type: Input
|
|
129
|
+
}], loading: [{
|
|
130
|
+
type: Input
|
|
131
|
+
}], autoFetch: [{
|
|
132
|
+
type: Input
|
|
133
|
+
}], title: [{
|
|
134
|
+
type: Input
|
|
135
|
+
}], totalDefinitionsLabel: [{
|
|
136
|
+
type: Input
|
|
137
|
+
}], completedLabel: [{
|
|
138
|
+
type: Input
|
|
139
|
+
}], failedLabel: [{
|
|
140
|
+
type: Input
|
|
141
|
+
}], pendingLabel: [{
|
|
142
|
+
type: Input
|
|
143
|
+
}], inProgressLabel: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], customCards: [{
|
|
146
|
+
type: Input
|
|
147
|
+
}], containerClass: [{
|
|
148
|
+
type: Input
|
|
149
|
+
}], cardClass: [{
|
|
150
|
+
type: Input
|
|
151
|
+
}], cardTemplate: [{
|
|
152
|
+
type: Input
|
|
153
|
+
}], loadingTemplate: [{
|
|
154
|
+
type: Input
|
|
155
|
+
}], headerTemplate: [{
|
|
156
|
+
type: Input
|
|
157
|
+
}], cardClick: [{
|
|
158
|
+
type: Output
|
|
159
|
+
}], statsFetched: [{
|
|
160
|
+
type: Output
|
|
161
|
+
}], fetchError: [{
|
|
162
|
+
type: Output
|
|
163
|
+
}] } });
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXN0YXRzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRpbmcvcmVwb3J0LXN0YXRzL3JlcG9ydC1zdGF0cy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0aW5nL3JlcG9ydC1zdGF0cy9yZXBvcnQtc3RhdHMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sR0FFUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7Ozs7QUFtQi9DLE1BQU0sT0FBTyxvQkFBb0I7SUFrQ1g7SUFqQ3BCLGFBQWE7SUFDSixLQUFLLENBQWU7SUFDcEIsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBRTFCLGVBQWU7SUFDTixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gscUJBQXFCLEdBQUcsbUJBQW1CLENBQUM7SUFDNUMsY0FBYyxHQUFHLFdBQVcsQ0FBQztJQUM3QixXQUFXLEdBQUcsUUFBUSxDQUFDO0lBQ3ZCLFlBQVksR0FBRyxTQUFTLENBQUM7SUFDekIsZUFBZSxHQUFHLGFBQWEsQ0FBQztJQUV6Qyx5REFBeUQ7SUFDaEQsV0FBVyxDQUFjO0lBRWxDLHNCQUFzQjtJQUNiLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDcEIsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUV4Qix5QkFBeUI7SUFDaEIsWUFBWSxDQUF1RDtJQUNuRSxlQUFlLENBQXFCO0lBQ3BDLGNBQWMsQ0FBcUI7SUFFNUMsZUFBZTtJQUNMLFNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO0lBQ3ZDLFlBQVksR0FBRyxJQUFJLFlBQVks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c0JBQW5CLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUdJLFNBQVM7c0JBQWxCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlcG9ydFN0YXRzIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2FwaS9yZXBvcnRpbmcubW9kZWxzJztcbmltcG9ydCB7IFJlcG9ydGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcGkvcmVwb3J0aW5nLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN0YXRDYXJkIHtcbiAga2V5OiBzdHJpbmc7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIHZhbHVlOiBudW1iZXIgfCBzdHJpbmc7XG4gIGljb24/OiBzdHJpbmc7XG4gIGNvbG9yVmFyPzogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0Z20tcmVwb3J0LXN0YXRzJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9yZXBvcnQtc3RhdHMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yZXBvcnQtc3RhdHMuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0U3RhdHNDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyDilIDilIAgRGF0YSDilIDilIBcbiAgQElucHV0KCkgc3RhdHM/OiBSZXBvcnRTdGF0cztcbiAgQElucHV0KCkgbG9hZGluZyA9IGZhbHNlO1xuICBASW5wdXQoKSBhdXRvRmV0Y2ggPSB0cnVlO1xuXG4gIC8vIOKUgOKUgCBMYWJlbHMg4pSA4pSAXG4gIEBJbnB1dCgpIHRpdGxlID0gJyc7XG4gIEBJbnB1dCgpIHRvdGFsRGVmaW5pdGlvbnNMYWJlbCA9ICdUb3RhbCBEZWZpbml0aW9ucyc7XG4gIEBJbnB1dCgpIGNvbXBsZXRlZExhYmVsID0gJ0NvbXBsZXRlZCc7XG4gIEBJbnB1dCgpIGZhaWxlZExhYmVsID0gJ0ZhaWxlZCc7XG4gIEBJbnB1dCgpIHBlbmRpbmdMYWJlbCA9ICdQZW5kaW5nJztcbiAgQElucHV0KCkgaW5Qcm9ncmVzc0xhYmVsID0gJ0luIFByb2dyZXNzJztcblxuICAvLyDilIDilIAgQ3VzdG9tIHN0YXQgY2FyZHMgKGZ1bGx5IG92ZXJyaWRlIGRlZmF1bHQgY2FyZHMpIOKUgOKUgFxuICBASW5wdXQoKSBjdXN0b21DYXJkcz86IFN0YXRDYXJkW107XG5cbiAgLy8g4pSA4pSAIENTUyBvdmVycmlkZXMg4pSA4pSAXG4gIEBJbnB1dCgpIGNvbnRhaW5lckNsYXNzID0gJyc7XG4gIEBJbnB1dCgpIGNhcmRDbGFzcyA9ICcnO1xuXG4gIC8vIOKUgOKUgCBDdXN0b20gdGVtcGxhdGVzIOKUgOKUgFxuICBASW5wdXQoKSBjYXJkVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogU3RhdENhcmQ7IGluZGV4OiBudW1iZXIgfT47XG4gIEBJbnB1dCgpIGxvYWRpbmdUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIC8vIOKUgOKUgCBFdmVudHMg4pSA4pSAXG4gIEBPdXRwdXQoKSBjYXJkQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIHN0YXRzRmV0Y2hlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVwb3J0U3RhdHM+KCk7XG4gIEBPdXRwdXQoKSBmZXRjaEVycm9yID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgaW50ZXJuYWxTdGF0cz86IFJlcG9ydFN0YXRzO1xuICBpbnRlcm5hbExvYWRpbmcgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcG9ydGluZ1NlcnZpY2U6IFJlcG9ydGluZ1NlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnN0YXRzICYmIHRoaXMuYXV0b0ZldGNoKSB7XG4gICAgICB0aGlzLmZldGNoU3RhdHMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGlzcGxheVN0YXRzKCk6IFJlcG9ydFN0YXRzIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5zdGF0cyA/PyB0aGlzLmludGVybmFsU3RhdHM7XG4gIH1cblxuICBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmcgfHwgdGhpcy5pbnRlcm5hbExvYWRpbmc7XG4gIH1cblxuICBnZXQgY2FyZHMoKTogU3RhdENhcmRbXSB7XG4gICAgaWYgKHRoaXMuY3VzdG9tQ2FyZHMpIHJldHVybiB0aGlzLmN1c3RvbUNhcmRzO1xuICAgIGNvbnN0IHMgPSB0aGlzLmRpc3BsYXlTdGF0cztcbiAgICBpZiAoIXMpIHJldHVybiBbXTtcblxuICAgIGNvbnN0IHJlc3VsdDogU3RhdENhcmRbXSA9IFtcbiAgICAgIHtcbiAgICAgICAga2V5OiAndG90YWxEZWZpbml0aW9ucycsXG4gICAgICAgIGxhYmVsOiB0aGlzLnRvdGFsRGVmaW5pdGlvbnNMYWJlbCxcbiAgICAgICAgdmFsdWU6IHMudG90YWxEZWZpbml0aW9ucyxcbiAgICAgICAgY29sb3JWYXI6ICd2YXIoLS10Z20tcmVwb3J0LXByaW1hcnkpJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ2NvbXBsZXRlZCcsXG4gICAgICAgIGxhYmVsOiB0aGlzLmNvbXBsZXRlZExhYmVsLFxuICAgICAgICB2YWx1ZTogcy5ieVN0YXR1cz8uWydDT01QTEVURUQnXSA/PyAwLFxuICAgICAgICBjb2xvclZhcjogJ3ZhcigtLXRnbS1yZXBvcnQtc3VjY2VzcyknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnZmFpbGVkJyxcbiAgICAgICAgbGFiZWw6IHRoaXMuZmFpbGVkTGFiZWwsXG4gICAgICAgIHZhbHVlOiBzLmJ5U3RhdHVzPy5bJ0ZBSUxFRCddID8/IDAsXG4gICAgICAgIGNvbG9yVmFyOiAndmFyKC0tdGdtLXJlcG9ydC1kYW5nZXIpJyxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGtleTogJ3BlbmRpbmcnLFxuICAgICAgICBsYWJlbDogdGhpcy5wZW5kaW5nTGFiZWwsXG4gICAgICAgIHZhbHVlOiBzLmJ5U3RhdHVzPy5bJ1BFTkRJTkcnXSA/PyAwLFxuICAgICAgICBjb2xvclZhcjogJ3ZhcigtLXRnbS1yZXBvcnQtd2FybmluZyknLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAga2V5OiAnaW5Qcm9ncmVzcycsXG4gICAgICAgIGxhYmVsOiB0aGlzLmluUHJvZ3Jlc3NMYWJlbCxcbiAgICAgICAgdmFsdWU6IHMuYnlTdGF0dXM/LlsnSU5fUFJPR1JFU1MnXSA/PyAwLFxuICAgICAgICBjb2xvclZhcjogJ3ZhcigtLXRnbS1yZXBvcnQtaW5mbyknLFxuICAgICAgfSxcbiAgICBdO1xuXG4gICAgLy8gQWRkIGJ5LXR5cGUgYnJlYWtkb3duIGNhcmRzXG4gICAgaWYgKHMuYnlUeXBlKSB7XG4gICAgICBmb3IgKGNvbnN0IFt0eXBlLCBjb3VudF0gb2YgT2JqZWN0LmVudHJpZXMocy5ieVR5cGUpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICBrZXk6IGB0eXBlXyR7dHlwZX1gLFxuICAgICAgICAgIGxhYmVsOiB0eXBlLnJlcGxhY2UoL18vZywgJyAnKSxcbiAgICAgICAgICB2YWx1ZTogY291bnQsXG4gICAgICAgICAgY29sb3JWYXI6ICd2YXIoLS10Z20tcmVwb3J0LXRleHQtc2Vjb25kYXJ5KScsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBvbkNhcmRDbGljayhrZXk6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2FyZENsaWNrLmVtaXQoa2V5KTtcbiAgfVxuXG4gIHRyYWNrQnlLZXkoX2luZGV4OiBudW1iZXIsIGNhcmQ6IFN0YXRDYXJkKTogc3RyaW5nIHtcbiAgICByZXR1cm4gY2FyZC5rZXk7XG4gIH1cblxuICBwcml2YXRlIGZldGNoU3RhdHMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlcm5hbExvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMucmVwb3J0aW5nU2VydmljZS5nZXRSZXBvcnRTdGF0cygpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzKSA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxTdGF0cyA9IHJlcy5kYXRhO1xuICAgICAgICB0aGlzLmludGVybmFsTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5pbnRlcm5hbFN0YXRzKSB7XG4gICAgICAgICAgdGhpcy5zdGF0c0ZldGNoZWQuZW1pdCh0aGlzLmludGVybmFsU3RhdHMpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mZXRjaEVycm9yLmVtaXQoZXJyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0Z20tc3RhdHNcIiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiPlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlclRlbXBsYXRlOyBlbHNlIGRlZmF1bHRIZWFkZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlcj5cbiAgICA8aDMgY2xhc3M9XCJ0Z20tc3RhdHNfX3RpdGxlXCIgKm5nSWY9XCJ0aXRsZVwiPnt7IHRpdGxlIH19PC9oMz5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIExvYWRpbmcgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1RlbXBsYXRlOyBlbHNlIGRlZmF1bHRMb2FkaW5nXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TG9hZGluZz5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tc3RhdHNfX2xvYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRnbS1zcGlubmVyXCI+PC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIENhcmRzIEdyaWQgLS0+XG4gIDxkaXYgY2xhc3M9XCJ0Z20tc3RhdHNfX2dyaWRcIiAqbmdJZj1cIiFpc0xvYWRpbmcgJiYgY2FyZHMubGVuZ3RoID4gMFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNhcmQgb2YgY2FyZHM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlLZXlcIj5cbiAgICAgIDwhLS0gQ3VzdG9tIGNhcmQgdGVtcGxhdGUgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY2FyZFRlbXBsYXRlOyBlbHNlIGRlZmF1bHRDYXJkXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjYXJkVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjYXJkLCBpbmRleDogaSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPCEtLSBEZWZhdWx0IGNhcmQgLS0+XG4gICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRDYXJkPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGdtLXN0YXQtY2FyZFwiIFtuZ0NsYXNzXT1cImNhcmRDbGFzc1wiIChjbGljayk9XCJvbkNhcmRDbGljayhjYXJkLmtleSlcIlxuICAgICAgICAgIFtzdHlsZS4tLWNhcmQtYWNjZW50XT1cImNhcmQuY29sb3JWYXIgfHwgJ3ZhcigtLXRnbS1yZXBvcnQtcHJpbWFyeSknXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tc3RhdC1jYXJkX192YWx1ZVwiPnt7IGNhcmQudmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tc3RhdC1jYXJkX19sYWJlbFwiPnt7IGNhcmQubGFiZWwgfX08L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
package/esm2022/lib/components/reporting/report-template-list/report-template-list.component.mjs
ADDED
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "../../../services/api/reporting.service";
|
|
5
|
+
import * as i2 from "@angular/common";
|
|
6
|
+
export class ReportTemplateListComponent {
|
|
7
|
+
reportingService;
|
|
8
|
+
// ── Data ──
|
|
9
|
+
templates;
|
|
10
|
+
loading = false;
|
|
11
|
+
autoFetch = true;
|
|
12
|
+
// ── Labels ──
|
|
13
|
+
emptyMessage = 'No report templates available.';
|
|
14
|
+
generateButtonLabel = 'Generate';
|
|
15
|
+
filtersLabel = 'filters';
|
|
16
|
+
formatsLabel = 'Formats';
|
|
17
|
+
title = '';
|
|
18
|
+
// ── CSS overrides ──
|
|
19
|
+
containerClass = '';
|
|
20
|
+
cardClass = '';
|
|
21
|
+
// ── Custom templates ──
|
|
22
|
+
cardTemplate;
|
|
23
|
+
emptyTemplate;
|
|
24
|
+
loadingTemplate;
|
|
25
|
+
headerTemplate;
|
|
26
|
+
// ── Events ──
|
|
27
|
+
selectTemplate = new EventEmitter();
|
|
28
|
+
generateReport = new EventEmitter();
|
|
29
|
+
templatesFetched = new EventEmitter();
|
|
30
|
+
fetchError = new EventEmitter();
|
|
31
|
+
internalTemplates = [];
|
|
32
|
+
internalLoading = false;
|
|
33
|
+
constructor(reportingService) {
|
|
34
|
+
this.reportingService = reportingService;
|
|
35
|
+
}
|
|
36
|
+
ngOnInit() {
|
|
37
|
+
if (!this.templates && this.autoFetch) {
|
|
38
|
+
this.fetchTemplates();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
get displayTemplates() {
|
|
42
|
+
return this.templates ?? this.internalTemplates;
|
|
43
|
+
}
|
|
44
|
+
get isLoading() {
|
|
45
|
+
return this.loading || this.internalLoading;
|
|
46
|
+
}
|
|
47
|
+
onSelect(template) {
|
|
48
|
+
this.selectTemplate.emit(template);
|
|
49
|
+
}
|
|
50
|
+
onGenerate(event, template) {
|
|
51
|
+
event.stopPropagation();
|
|
52
|
+
this.generateReport.emit(template);
|
|
53
|
+
}
|
|
54
|
+
trackByType(_index, template) {
|
|
55
|
+
return template.type;
|
|
56
|
+
}
|
|
57
|
+
fetchTemplates() {
|
|
58
|
+
this.internalLoading = true;
|
|
59
|
+
this.reportingService.getTemplates().subscribe({
|
|
60
|
+
next: (res) => {
|
|
61
|
+
this.internalTemplates = res.data ?? [];
|
|
62
|
+
this.internalLoading = false;
|
|
63
|
+
this.templatesFetched.emit(this.internalTemplates);
|
|
64
|
+
},
|
|
65
|
+
error: (err) => {
|
|
66
|
+
this.internalLoading = false;
|
|
67
|
+
this.fetchError.emit(err);
|
|
68
|
+
},
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportTemplateListComponent, deps: [{ token: i1.ReportingService }], target: i0.ɵɵFactoryTarget.Component });
|
|
72
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ReportTemplateListComponent, isStandalone: true, selector: "tgm-report-template-list", inputs: { templates: "templates", loading: "loading", autoFetch: "autoFetch", emptyMessage: "emptyMessage", generateButtonLabel: "generateButtonLabel", filtersLabel: "filtersLabel", formatsLabel: "formatsLabel", title: "title", containerClass: "containerClass", cardClass: "cardClass", cardTemplate: "cardTemplate", emptyTemplate: "emptyTemplate", loadingTemplate: "loadingTemplate", headerTemplate: "headerTemplate" }, outputs: { selectTemplate: "selectTemplate", generateReport: "generateReport", templatesFetched: "templatesFetched", fetchError: "fetchError" }, ngImport: i0, template: "<div class=\"tgm-template-list\" [ngClass]=\"containerClass\">\n <!-- Header -->\n <ng-container *ngIf=\"headerTemplate; else defaultHeader\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <h3 class=\"tgm-template-list__title\" *ngIf=\"title\">{{ title }}</h3>\n </ng-template>\n\n <!-- Loading -->\n <ng-container *ngIf=\"isLoading\">\n <ng-container *ngIf=\"loadingTemplate; else defaultLoading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultLoading>\n <div class=\"tgm-template-list__loading\">\n <div class=\"tgm-spinner\"></div>\n <p>Loading templates...</p>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Empty -->\n <ng-container *ngIf=\"!isLoading && displayTemplates.length === 0\">\n <ng-container *ngIf=\"emptyTemplate; else defaultEmpty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultEmpty>\n <div class=\"tgm-template-list__empty\">\n <p>{{ emptyMessage }}</p>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Grid -->\n <div class=\"tgm-template-list__grid\" *ngIf=\"!isLoading && displayTemplates.length > 0\">\n <ng-container *ngFor=\"let template of displayTemplates; trackBy: trackByType\">\n <!-- Custom card template -->\n <ng-container *ngIf=\"cardTemplate; else defaultCard\">\n <ng-container *ngTemplateOutlet=\"cardTemplate; context: { $implicit: template }\"></ng-container>\n </ng-container>\n\n <!-- Default card -->\n <ng-template #defaultCard>\n <div class=\"tgm-template-card\" [ngClass]=\"cardClass\" (click)=\"onSelect(template)\">\n <div class=\"tgm-template-card__header\">\n <h4 class=\"tgm-template-card__name\">{{ template.name }}</h4>\n </div>\n <p class=\"tgm-template-card__description\">{{ template.description }}</p>\n <div class=\"tgm-template-card__meta\">\n <div class=\"tgm-template-card__formats\">\n <span class=\"tgm-badge\" *ngFor=\"let format of template.supportedFormats\">{{ format }}</span>\n </div>\n <span class=\"tgm-template-card__filters\">\n {{ template.availableFilters.length }} {{ filtersLabel }}\n </span>\n </div>\n <div class=\"tgm-template-card__actions\">\n <button class=\"tgm-btn tgm-btn--primary\" (click)=\"onGenerate($event, template)\">\n {{ generateButtonLabel }}\n </button>\n </div>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</div>\n", styles: [":host{--tgm-report-bg: rgba(255, 255, 255, .05);--tgm-report-bg-hover: rgba(255, 255, 255, .08);--tgm-report-border: rgba(255, 255, 255, .1);--tgm-report-text: #e5e7eb;--tgm-report-text-secondary: #9ca3af;--tgm-report-text-muted: #6b7280;--tgm-report-primary: #3b82f6;--tgm-report-primary-hover: #2563eb;--tgm-report-success: #22c55e;--tgm-report-warning: #eab308;--tgm-report-danger: #ef4444;--tgm-report-radius: 8px;--tgm-report-radius-sm: 4px;--tgm-report-font-family: inherit;--tgm-report-font-size: 14px;--tgm-report-spacing: 16px;--tgm-report-spacing-sm: 8px;--tgm-report-shadow: 0 1px 3px rgba(0, 0, 0, .3);display:block;font-family:var(--tgm-report-font-family);font-size:var(--tgm-report-font-size);color:var(--tgm-report-text)}.tgm-template-list__title{margin:0 0 var(--tgm-report-spacing);font-size:18px;font-weight:600;color:var(--tgm-report-text)}.tgm-template-list__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 0;color:var(--tgm-report-text-secondary)}.tgm-template-list__loading p{margin:12px 0 0}.tgm-template-list__empty{display:flex;align-items:center;justify-content:center;padding:48px 0;color:var(--tgm-report-text-muted)}.tgm-template-list__empty p{margin:0}.tgm-template-list__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--tgm-report-spacing)}.tgm-template-card{display:flex;flex-direction:column;padding:var(--tgm-report-spacing);background:var(--tgm-report-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}.tgm-template-card:hover{background:var(--tgm-report-bg-hover);border-color:var(--tgm-report-primary);box-shadow:var(--tgm-report-shadow)}.tgm-template-card__header{margin-bottom:var(--tgm-report-spacing-sm)}.tgm-template-card__name{margin:0;font-size:15px;font-weight:600;color:var(--tgm-report-text)}.tgm-template-card__description{margin:0 0 var(--tgm-report-spacing-sm);font-size:13px;color:var(--tgm-report-text-secondary);line-height:1.5;flex:1}.tgm-template-card__meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--tgm-report-spacing-sm)}.tgm-template-card__formats{display:flex;gap:4px;flex-wrap:wrap}.tgm-template-card__filters{font-size:12px;color:var(--tgm-report-text-muted)}.tgm-template-card__actions{display:flex;justify-content:flex-end;margin-top:var(--tgm-report-spacing-sm)}.tgm-badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:11px;font-weight:500;border-radius:var(--tgm-report-radius-sm);background:#3b82f626;color:var(--tgm-report-primary)}.tgm-btn{display:inline-flex;align-items:center;justify-content:center;padding:6px 16px;font-size:13px;font-weight:500;border:none;border-radius:var(--tgm-report-radius-sm);cursor:pointer;transition:background .15s,opacity .15s;font-family:var(--tgm-report-font-family)}.tgm-btn--primary{background:var(--tgm-report-primary);color:#fff}.tgm-btn--primary:hover{background:var(--tgm-report-primary-hover)}.tgm-btn:disabled{opacity:.5;cursor:not-allowed}.tgm-spinner{width:32px;height:32px;border:3px solid var(--tgm-report-border);border-top-color:var(--tgm-report-primary);border-radius:50%;animation:tgm-spin .8s linear infinite}@keyframes tgm-spin{to{transform:rotate(360deg)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] });
|
|
73
|
+
}
|
|
74
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportTemplateListComponent, decorators: [{
|
|
75
|
+
type: Component,
|
|
76
|
+
args: [{ selector: 'tgm-report-template-list', standalone: true, imports: [CommonModule], template: "<div class=\"tgm-template-list\" [ngClass]=\"containerClass\">\n <!-- Header -->\n <ng-container *ngIf=\"headerTemplate; else defaultHeader\">\n <ng-container *ngTemplateOutlet=\"headerTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <h3 class=\"tgm-template-list__title\" *ngIf=\"title\">{{ title }}</h3>\n </ng-template>\n\n <!-- Loading -->\n <ng-container *ngIf=\"isLoading\">\n <ng-container *ngIf=\"loadingTemplate; else defaultLoading\">\n <ng-container *ngTemplateOutlet=\"loadingTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultLoading>\n <div class=\"tgm-template-list__loading\">\n <div class=\"tgm-spinner\"></div>\n <p>Loading templates...</p>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Empty -->\n <ng-container *ngIf=\"!isLoading && displayTemplates.length === 0\">\n <ng-container *ngIf=\"emptyTemplate; else defaultEmpty\">\n <ng-container *ngTemplateOutlet=\"emptyTemplate\"></ng-container>\n </ng-container>\n <ng-template #defaultEmpty>\n <div class=\"tgm-template-list__empty\">\n <p>{{ emptyMessage }}</p>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Grid -->\n <div class=\"tgm-template-list__grid\" *ngIf=\"!isLoading && displayTemplates.length > 0\">\n <ng-container *ngFor=\"let template of displayTemplates; trackBy: trackByType\">\n <!-- Custom card template -->\n <ng-container *ngIf=\"cardTemplate; else defaultCard\">\n <ng-container *ngTemplateOutlet=\"cardTemplate; context: { $implicit: template }\"></ng-container>\n </ng-container>\n\n <!-- Default card -->\n <ng-template #defaultCard>\n <div class=\"tgm-template-card\" [ngClass]=\"cardClass\" (click)=\"onSelect(template)\">\n <div class=\"tgm-template-card__header\">\n <h4 class=\"tgm-template-card__name\">{{ template.name }}</h4>\n </div>\n <p class=\"tgm-template-card__description\">{{ template.description }}</p>\n <div class=\"tgm-template-card__meta\">\n <div class=\"tgm-template-card__formats\">\n <span class=\"tgm-badge\" *ngFor=\"let format of template.supportedFormats\">{{ format }}</span>\n </div>\n <span class=\"tgm-template-card__filters\">\n {{ template.availableFilters.length }} {{ filtersLabel }}\n </span>\n </div>\n <div class=\"tgm-template-card__actions\">\n <button class=\"tgm-btn tgm-btn--primary\" (click)=\"onGenerate($event, template)\">\n {{ generateButtonLabel }}\n </button>\n </div>\n </div>\n </ng-template>\n </ng-container>\n </div>\n</div>\n", styles: [":host{--tgm-report-bg: rgba(255, 255, 255, .05);--tgm-report-bg-hover: rgba(255, 255, 255, .08);--tgm-report-border: rgba(255, 255, 255, .1);--tgm-report-text: #e5e7eb;--tgm-report-text-secondary: #9ca3af;--tgm-report-text-muted: #6b7280;--tgm-report-primary: #3b82f6;--tgm-report-primary-hover: #2563eb;--tgm-report-success: #22c55e;--tgm-report-warning: #eab308;--tgm-report-danger: #ef4444;--tgm-report-radius: 8px;--tgm-report-radius-sm: 4px;--tgm-report-font-family: inherit;--tgm-report-font-size: 14px;--tgm-report-spacing: 16px;--tgm-report-spacing-sm: 8px;--tgm-report-shadow: 0 1px 3px rgba(0, 0, 0, .3);display:block;font-family:var(--tgm-report-font-family);font-size:var(--tgm-report-font-size);color:var(--tgm-report-text)}.tgm-template-list__title{margin:0 0 var(--tgm-report-spacing);font-size:18px;font-weight:600;color:var(--tgm-report-text)}.tgm-template-list__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 0;color:var(--tgm-report-text-secondary)}.tgm-template-list__loading p{margin:12px 0 0}.tgm-template-list__empty{display:flex;align-items:center;justify-content:center;padding:48px 0;color:var(--tgm-report-text-muted)}.tgm-template-list__empty p{margin:0}.tgm-template-list__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--tgm-report-spacing)}.tgm-template-card{display:flex;flex-direction:column;padding:var(--tgm-report-spacing);background:var(--tgm-report-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s}.tgm-template-card:hover{background:var(--tgm-report-bg-hover);border-color:var(--tgm-report-primary);box-shadow:var(--tgm-report-shadow)}.tgm-template-card__header{margin-bottom:var(--tgm-report-spacing-sm)}.tgm-template-card__name{margin:0;font-size:15px;font-weight:600;color:var(--tgm-report-text)}.tgm-template-card__description{margin:0 0 var(--tgm-report-spacing-sm);font-size:13px;color:var(--tgm-report-text-secondary);line-height:1.5;flex:1}.tgm-template-card__meta{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--tgm-report-spacing-sm)}.tgm-template-card__formats{display:flex;gap:4px;flex-wrap:wrap}.tgm-template-card__filters{font-size:12px;color:var(--tgm-report-text-muted)}.tgm-template-card__actions{display:flex;justify-content:flex-end;margin-top:var(--tgm-report-spacing-sm)}.tgm-badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:11px;font-weight:500;border-radius:var(--tgm-report-radius-sm);background:#3b82f626;color:var(--tgm-report-primary)}.tgm-btn{display:inline-flex;align-items:center;justify-content:center;padding:6px 16px;font-size:13px;font-weight:500;border:none;border-radius:var(--tgm-report-radius-sm);cursor:pointer;transition:background .15s,opacity .15s;font-family:var(--tgm-report-font-family)}.tgm-btn--primary{background:var(--tgm-report-primary);color:#fff}.tgm-btn--primary:hover{background:var(--tgm-report-primary-hover)}.tgm-btn:disabled{opacity:.5;cursor:not-allowed}.tgm-spinner{width:32px;height:32px;border:3px solid var(--tgm-report-border);border-top-color:var(--tgm-report-primary);border-radius:50%;animation:tgm-spin .8s linear infinite}@keyframes tgm-spin{to{transform:rotate(360deg)}}\n"] }]
|
|
77
|
+
}], ctorParameters: () => [{ type: i1.ReportingService }], propDecorators: { templates: [{
|
|
78
|
+
type: Input
|
|
79
|
+
}], loading: [{
|
|
80
|
+
type: Input
|
|
81
|
+
}], autoFetch: [{
|
|
82
|
+
type: Input
|
|
83
|
+
}], emptyMessage: [{
|
|
84
|
+
type: Input
|
|
85
|
+
}], generateButtonLabel: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], filtersLabel: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], formatsLabel: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], title: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], containerClass: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], cardClass: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], cardTemplate: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], emptyTemplate: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], loadingTemplate: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], headerTemplate: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], selectTemplate: [{
|
|
106
|
+
type: Output
|
|
107
|
+
}], generateReport: [{
|
|
108
|
+
type: Output
|
|
109
|
+
}], templatesFetched: [{
|
|
110
|
+
type: Output
|
|
111
|
+
}], fetchError: [{
|
|
112
|
+
type: Output
|
|
113
|
+
}] } });
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LXRlbXBsYXRlLWxpc3QuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3JlcG9ydGluZy9yZXBvcnQtdGVtcGxhdGUtbGlzdC9yZXBvcnQtdGVtcGxhdGUtbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0aW5nL3JlcG9ydC10ZW1wbGF0ZS1saXN0L3JlcG9ydC10ZW1wbGF0ZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDOzs7O0FBVy9DLE1BQU0sT0FBTywyQkFBMkI7SUFnQ2xCO0lBL0JwQixhQUFhO0lBQ0osU0FBUyxDQUFvQjtJQUM3QixPQUFPLEdBQUcsS0FBSyxDQUFDO0lBQ2hCLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFFMUIsZUFBZTtJQUNOLFlBQVksR0FBRyxnQ0FBZ0MsQ0FBQztJQUNoRCxtQkFBbUIsR0FBRyxVQUFVLENBQUM7SUFDakMsWUFBWSxHQUFHLFNBQVMsQ0FBQztJQUN6QixZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQ3pCLEtBQUssR0FBRyxFQUFFLENBQUM7SUFFcEIsc0JBQXNCO0lBQ2IsY0FBYyxHQUFHLEVBQUUsQ0FBQztJQUNwQixTQUFTLEdBQUcsRUFBRSxDQUFDO0lBRXhCLHlCQUF5QjtJQUNoQixZQUFZLENBQThDO0lBQzFELGFBQWEsQ0FBcUI7SUFDbEMsZUFBZSxDQUFxQjtJQUNwQyxjQUFjLENBQXFCO0lBRTVDLGVBQWU7SUFDTCxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7SUFDcEQsY0FBYyxHQUFHLElBQUksWUFBWSxFQUFrQixDQUFDO0lBQ3BELGdCQUFnQixHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO0lBQ3hELFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRS9DLGlCQUFpQixHQUFxQixFQUFFLENBQUM7SUFDekMsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUV4QixZQUFvQixnQkFBa0M7UUFBbEMscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtJQUFHLENBQUM7SUFFMUQsUUFBUTtRQUNOLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDeEIsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQztJQUM5QyxDQUFDO0lBRUQsUUFBUSxDQUFDLFFBQXdCO1FBQy9CLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxVQUFVLENBQUMsS0FBWSxFQUFFLFFBQXdCO1FBQy9DLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsV0FBVyxDQUFDLE1BQWMsRUFBRSxRQUF3QjtRQUNsRCxPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVPLGNBQWM7UUFDcEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxDQUFDLFNBQVMsQ0FBQztZQUM3QyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDWixJQUFJLENBQUMsaUJBQWlCLEdBQUcsR0FBRyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ3hDLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO2dCQUM3QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQ3JELENBQUM7WUFDRCxLQUFLLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRTtnQkFDYixJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDNUIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBMUVVLDJCQUEyQjs0RkFBM0IsMkJBQTJCLHlvQkNuQnhDLG10RkFtRUEsazBHRHBEWSxZQUFZOzs0RkFJWCwyQkFBMkI7a0JBUHZDLFNBQVM7K0JBQ0UsMEJBQTBCLGNBQ3hCLElBQUksV0FDUCxDQUFDLFlBQVksQ0FBQztxRkFNZCxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0ksY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVGVtcGxhdGVSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJlcG9ydFRlbXBsYXRlIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2FwaS9yZXBvcnRpbmcubW9kZWxzJztcbmltcG9ydCB7IFJlcG9ydGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcGkvcmVwb3J0aW5nLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0Z20tcmVwb3J0LXRlbXBsYXRlLWxpc3QnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL3JlcG9ydC10ZW1wbGF0ZS1saXN0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmVwb3J0LXRlbXBsYXRlLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0VGVtcGxhdGVMaXN0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgLy8g4pSA4pSAIERhdGEg4pSA4pSAXG4gIEBJbnB1dCgpIHRlbXBsYXRlcz86IFJlcG9ydFRlbXBsYXRlW107XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgYXV0b0ZldGNoID0gdHJ1ZTtcblxuICAvLyDilIDilIAgTGFiZWxzIOKUgOKUgFxuICBASW5wdXQoKSBlbXB0eU1lc3NhZ2UgPSAnTm8gcmVwb3J0IHRlbXBsYXRlcyBhdmFpbGFibGUuJztcbiAgQElucHV0KCkgZ2VuZXJhdGVCdXR0b25MYWJlbCA9ICdHZW5lcmF0ZSc7XG4gIEBJbnB1dCgpIGZpbHRlcnNMYWJlbCA9ICdmaWx0ZXJzJztcbiAgQElucHV0KCkgZm9ybWF0c0xhYmVsID0gJ0Zvcm1hdHMnO1xuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xuXG4gIC8vIOKUgOKUgCBDU1Mgb3ZlcnJpZGVzIOKUgOKUgFxuICBASW5wdXQoKSBjb250YWluZXJDbGFzcyA9ICcnO1xuICBASW5wdXQoKSBjYXJkQ2xhc3MgPSAnJztcblxuICAvLyDilIDilIAgQ3VzdG9tIHRlbXBsYXRlcyDilIDilIBcbiAgQElucHV0KCkgY2FyZFRlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFJlcG9ydFRlbXBsYXRlIH0+O1xuICBASW5wdXQoKSBlbXB0eVRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBJbnB1dCgpIGxvYWRpbmdUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHZvaWQ+O1xuICBASW5wdXQoKSBoZWFkZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHZvaWQ+O1xuXG4gIC8vIOKUgOKUgCBFdmVudHMg4pSA4pSAXG4gIEBPdXRwdXQoKSBzZWxlY3RUZW1wbGF0ZSA9IG5ldyBFdmVudEVtaXR0ZXI8UmVwb3J0VGVtcGxhdGU+KCk7XG4gIEBPdXRwdXQoKSBnZW5lcmF0ZVJlcG9ydCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVwb3J0VGVtcGxhdGU+KCk7XG4gIEBPdXRwdXQoKSB0ZW1wbGF0ZXNGZXRjaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxSZXBvcnRUZW1wbGF0ZVtdPigpO1xuICBAT3V0cHV0KCkgZmV0Y2hFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGludGVybmFsVGVtcGxhdGVzOiBSZXBvcnRUZW1wbGF0ZVtdID0gW107XG4gIGludGVybmFsTG9hZGluZyA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVwb3J0aW5nU2VydmljZTogUmVwb3J0aW5nU2VydmljZSkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMudGVtcGxhdGVzICYmIHRoaXMuYXV0b0ZldGNoKSB7XG4gICAgICB0aGlzLmZldGNoVGVtcGxhdGVzKCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGRpc3BsYXlUZW1wbGF0ZXMoKTogUmVwb3J0VGVtcGxhdGVbXSB7XG4gICAgcmV0dXJuIHRoaXMudGVtcGxhdGVzID8/IHRoaXMuaW50ZXJuYWxUZW1wbGF0ZXM7XG4gIH1cblxuICBnZXQgaXNMb2FkaW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmcgfHwgdGhpcy5pbnRlcm5hbExvYWRpbmc7XG4gIH1cblxuICBvblNlbGVjdCh0ZW1wbGF0ZTogUmVwb3J0VGVtcGxhdGUpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdFRlbXBsYXRlLmVtaXQodGVtcGxhdGUpO1xuICB9XG5cbiAgb25HZW5lcmF0ZShldmVudDogRXZlbnQsIHRlbXBsYXRlOiBSZXBvcnRUZW1wbGF0ZSk6IHZvaWQge1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuZ2VuZXJhdGVSZXBvcnQuZW1pdCh0ZW1wbGF0ZSk7XG4gIH1cblxuICB0cmFja0J5VHlwZShfaW5kZXg6IG51bWJlciwgdGVtcGxhdGU6IFJlcG9ydFRlbXBsYXRlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGVtcGxhdGUudHlwZTtcbiAgfVxuXG4gIHByaXZhdGUgZmV0Y2hUZW1wbGF0ZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlcm5hbExvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMucmVwb3J0aW5nU2VydmljZS5nZXRUZW1wbGF0ZXMoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlcykgPT4ge1xuICAgICAgICB0aGlzLmludGVybmFsVGVtcGxhdGVzID0gcmVzLmRhdGEgPz8gW107XG4gICAgICAgIHRoaXMuaW50ZXJuYWxMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMudGVtcGxhdGVzRmV0Y2hlZC5lbWl0KHRoaXMuaW50ZXJuYWxUZW1wbGF0ZXMpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgIHRoaXMuaW50ZXJuYWxMb2FkaW5nID0gZmFsc2U7XG4gICAgICAgIHRoaXMuZmV0Y2hFcnJvci5lbWl0KGVycik7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidGdtLXRlbXBsYXRlLWxpc3RcIiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiPlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlclRlbXBsYXRlOyBlbHNlIGRlZmF1bHRIZWFkZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlcj5cbiAgICA8aDMgY2xhc3M9XCJ0Z20tdGVtcGxhdGUtbGlzdF9fdGl0bGVcIiAqbmdJZj1cInRpdGxlXCI+e3sgdGl0bGUgfX08L2gzPlxuICA8L25nLXRlbXBsYXRlPlxuXG4gIDwhLS0gTG9hZGluZyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGluZ1wiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJsb2FkaW5nVGVtcGxhdGU7IGVsc2UgZGVmYXVsdExvYWRpbmdcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRMb2FkaW5nPlxuICAgICAgPGRpdiBjbGFzcz1cInRnbS10ZW1wbGF0ZS1saXN0X19sb2FkaW5nXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tc3Bpbm5lclwiPjwvZGl2PlxuICAgICAgICA8cD5Mb2FkaW5nIHRlbXBsYXRlcy4uLjwvcD5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gRW1wdHkgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nICYmIGRpc3BsYXlUZW1wbGF0ZXMubGVuZ3RoID09PSAwXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5VGVtcGxhdGU7IGVsc2UgZGVmYXVsdEVtcHR5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5PlxuICAgICAgPGRpdiBjbGFzcz1cInRnbS10ZW1wbGF0ZS1saXN0X19lbXB0eVwiPlxuICAgICAgICA8cD57eyBlbXB0eU1lc3NhZ2UgfX08L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIEdyaWQgLS0+XG4gIDxkaXYgY2xhc3M9XCJ0Z20tdGVtcGxhdGUtbGlzdF9fZ3JpZFwiICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBkaXNwbGF5VGVtcGxhdGVzLmxlbmd0aCA+IDBcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCB0ZW1wbGF0ZSBvZiBkaXNwbGF5VGVtcGxhdGVzOyB0cmFja0J5OiB0cmFja0J5VHlwZVwiPlxuICAgICAgPCEtLSBDdXN0b20gY2FyZCB0ZW1wbGF0ZSAtLT5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjYXJkVGVtcGxhdGU7IGVsc2UgZGVmYXVsdENhcmRcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNhcmRUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IHRlbXBsYXRlIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICA8IS0tIERlZmF1bHQgY2FyZCAtLT5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdENhcmQ+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tdGVtcGxhdGUtY2FyZFwiIFtuZ0NsYXNzXT1cImNhcmRDbGFzc1wiIChjbGljayk9XCJvblNlbGVjdCh0ZW1wbGF0ZSlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidGdtLXRlbXBsYXRlLWNhcmRfX2hlYWRlclwiPlxuICAgICAgICAgICAgPGg0IGNsYXNzPVwidGdtLXRlbXBsYXRlLWNhcmRfX25hbWVcIj57eyB0ZW1wbGF0ZS5uYW1lIH19PC9oND5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8cCBjbGFzcz1cInRnbS10ZW1wbGF0ZS1jYXJkX19kZXNjcmlwdGlvblwiPnt7IHRlbXBsYXRlLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tdGVtcGxhdGUtY2FyZF9fbWV0YVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRnbS10ZW1wbGF0ZS1jYXJkX19mb3JtYXRzXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGdtLWJhZGdlXCIgKm5nRm9yPVwibGV0IGZvcm1hdCBvZiB0ZW1wbGF0ZS5zdXBwb3J0ZWRGb3JtYXRzXCI+e3sgZm9ybWF0IH19PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRnbS10ZW1wbGF0ZS1jYXJkX19maWx0ZXJzXCI+XG4gICAgICAgICAgICAgIHt7IHRlbXBsYXRlLmF2YWlsYWJsZUZpbHRlcnMubGVuZ3RoIH19IHt7IGZpbHRlcnNMYWJlbCB9fVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tdGVtcGxhdGUtY2FyZF9fYWN0aW9uc1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRnbS1idG4gdGdtLWJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJvbkdlbmVyYXRlKCRldmVudCwgdGVtcGxhdGUpXCI+XG4gICAgICAgICAgICAgIHt7IGdlbmVyYXRlQnV0dG9uTGFiZWwgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9uZy1jb250YWluZXI+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { ReportTemplateListComponent } from './report-template-list/report-template-list.component';
|
|
4
|
+
import { ReportGenerateDialogComponent } from './report-generate-dialog/report-generate-dialog.component';
|
|
5
|
+
import { ReportDefinitionListComponent } from './report-definition-list/report-definition-list.component';
|
|
6
|
+
import { ReportDefinitionFormComponent } from './report-definition-form/report-definition-form.component';
|
|
7
|
+
import { GeneratedReportListComponent } from './generated-report-list/generated-report-list.component';
|
|
8
|
+
import { ReportStatsComponent } from './report-stats/report-stats.component';
|
|
9
|
+
import { ExportButtonComponent } from './export-button/export-button.component';
|
|
10
|
+
import * as i0 from "@angular/core";
|
|
11
|
+
export class ReportingModule {
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ReportingModule, imports: [CommonModule,
|
|
14
|
+
ReportTemplateListComponent,
|
|
15
|
+
ReportGenerateDialogComponent,
|
|
16
|
+
ReportDefinitionListComponent,
|
|
17
|
+
ReportDefinitionFormComponent,
|
|
18
|
+
GeneratedReportListComponent,
|
|
19
|
+
ReportStatsComponent,
|
|
20
|
+
ExportButtonComponent], exports: [ReportTemplateListComponent,
|
|
21
|
+
ReportGenerateDialogComponent,
|
|
22
|
+
ReportDefinitionListComponent,
|
|
23
|
+
ReportDefinitionFormComponent,
|
|
24
|
+
GeneratedReportListComponent,
|
|
25
|
+
ReportStatsComponent,
|
|
26
|
+
ExportButtonComponent] });
|
|
27
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportingModule, imports: [CommonModule,
|
|
28
|
+
ReportTemplateListComponent,
|
|
29
|
+
ReportGenerateDialogComponent,
|
|
30
|
+
ReportDefinitionListComponent,
|
|
31
|
+
ReportDefinitionFormComponent,
|
|
32
|
+
GeneratedReportListComponent,
|
|
33
|
+
ReportStatsComponent,
|
|
34
|
+
ExportButtonComponent] });
|
|
35
|
+
}
|
|
36
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportingModule, decorators: [{
|
|
37
|
+
type: NgModule,
|
|
38
|
+
args: [{
|
|
39
|
+
imports: [
|
|
40
|
+
CommonModule,
|
|
41
|
+
ReportTemplateListComponent,
|
|
42
|
+
ReportGenerateDialogComponent,
|
|
43
|
+
ReportDefinitionListComponent,
|
|
44
|
+
ReportDefinitionFormComponent,
|
|
45
|
+
GeneratedReportListComponent,
|
|
46
|
+
ReportStatsComponent,
|
|
47
|
+
ExportButtonComponent,
|
|
48
|
+
],
|
|
49
|
+
exports: [
|
|
50
|
+
ReportTemplateListComponent,
|
|
51
|
+
ReportGenerateDialogComponent,
|
|
52
|
+
ReportDefinitionListComponent,
|
|
53
|
+
ReportDefinitionFormComponent,
|
|
54
|
+
GeneratedReportListComponent,
|
|
55
|
+
ReportStatsComponent,
|
|
56
|
+
ExportButtonComponent,
|
|
57
|
+
],
|
|
58
|
+
}]
|
|
59
|
+
}] });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9yZXBvcnRpbmcvcmVwb3J0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSx1REFBdUQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSx5REFBeUQsQ0FBQztBQUN2RyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUM3RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQzs7QUF1QmhGLE1BQU0sT0FBTyxlQUFlO3dHQUFmLGVBQWU7eUdBQWYsZUFBZSxZQW5CeEIsWUFBWTtZQUNaLDJCQUEyQjtZQUMzQiw2QkFBNkI7WUFDN0IsNkJBQTZCO1lBQzdCLDZCQUE2QjtZQUM3Qiw0QkFBNEI7WUFDNUIsb0JBQW9CO1lBQ3BCLHFCQUFxQixhQUdyQiwyQkFBMkI7WUFDM0IsNkJBQTZCO1lBQzdCLDZCQUE2QjtZQUM3Qiw2QkFBNkI7WUFDN0IsNEJBQTRCO1lBQzVCLG9CQUFvQjtZQUNwQixxQkFBcUI7eUdBR1osZUFBZSxZQW5CeEIsWUFBWTtZQUNaLDJCQUEyQjtZQUMzQiw2QkFBNkI7WUFDN0IsNkJBQTZCO1lBQzdCLDZCQUE2QjtZQUM3Qiw0QkFBNEI7WUFDNUIsb0JBQW9CO1lBQ3BCLHFCQUFxQjs7NEZBWVosZUFBZTtrQkFyQjNCLFFBQVE7bUJBQUM7b0JBQ1IsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osMkJBQTJCO3dCQUMzQiw2QkFBNkI7d0JBQzdCLDZCQUE2Qjt3QkFDN0IsNkJBQTZCO3dCQUM3Qiw0QkFBNEI7d0JBQzVCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3FCQUN0QjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMkJBQTJCO3dCQUMzQiw2QkFBNkI7d0JBQzdCLDZCQUE2Qjt3QkFDN0IsNkJBQTZCO3dCQUM3Qiw0QkFBNEI7d0JBQzVCLG9CQUFvQjt3QkFDcEIscUJBQXFCO3FCQUN0QjtpQkFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgUmVwb3J0VGVtcGxhdGVMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi9yZXBvcnQtdGVtcGxhdGUtbGlzdC9yZXBvcnQtdGVtcGxhdGUtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVwb3J0R2VuZXJhdGVEaWFsb2dDb21wb25lbnQgfSBmcm9tICcuL3JlcG9ydC1nZW5lcmF0ZS1kaWFsb2cvcmVwb3J0LWdlbmVyYXRlLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVwb3J0RGVmaW5pdGlvbkxpc3RDb21wb25lbnQgfSBmcm9tICcuL3JlcG9ydC1kZWZpbml0aW9uLWxpc3QvcmVwb3J0LWRlZmluaXRpb24tbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVwb3J0RGVmaW5pdGlvbkZvcm1Db21wb25lbnQgfSBmcm9tICcuL3JlcG9ydC1kZWZpbml0aW9uLWZvcm0vcmVwb3J0LWRlZmluaXRpb24tZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2VuZXJhdGVkUmVwb3J0TGlzdENvbXBvbmVudCB9IGZyb20gJy4vZ2VuZXJhdGVkLXJlcG9ydC1saXN0L2dlbmVyYXRlZC1yZXBvcnQtbGlzdC5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVwb3J0U3RhdHNDb21wb25lbnQgfSBmcm9tICcuL3JlcG9ydC1zdGF0cy9yZXBvcnQtc3RhdHMuY29tcG9uZW50JztcbmltcG9ydCB7IEV4cG9ydEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vZXhwb3J0LWJ1dHRvbi9leHBvcnQtYnV0dG9uLmNvbXBvbmVudCc7XG5cbkBOZ01vZHVsZSh7XG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgUmVwb3J0VGVtcGxhdGVMaXN0Q29tcG9uZW50LFxuICAgIFJlcG9ydEdlbmVyYXRlRGlhbG9nQ29tcG9uZW50LFxuICAgIFJlcG9ydERlZmluaXRpb25MaXN0Q29tcG9uZW50LFxuICAgIFJlcG9ydERlZmluaXRpb25Gb3JtQ29tcG9uZW50LFxuICAgIEdlbmVyYXRlZFJlcG9ydExpc3RDb21wb25lbnQsXG4gICAgUmVwb3J0U3RhdHNDb21wb25lbnQsXG4gICAgRXhwb3J0QnV0dG9uQ29tcG9uZW50LFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgUmVwb3J0VGVtcGxhdGVMaXN0Q29tcG9uZW50LFxuICAgIFJlcG9ydEdlbmVyYXRlRGlhbG9nQ29tcG9uZW50LFxuICAgIFJlcG9ydERlZmluaXRpb25MaXN0Q29tcG9uZW50LFxuICAgIFJlcG9ydERlZmluaXRpb25Gb3JtQ29tcG9uZW50LFxuICAgIEdlbmVyYXRlZFJlcG9ydExpc3RDb21wb25lbnQsXG4gICAgUmVwb3J0U3RhdHNDb21wb25lbnQsXG4gICAgRXhwb3J0QnV0dG9uQ29tcG9uZW50LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBSZXBvcnRpbmdNb2R1bGUge31cbiJdfQ==
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
import * as i1 from "@angular/common";
|
|
5
|
+
export class IncomingCallComponent {
|
|
6
|
+
callEvent;
|
|
7
|
+
accepted = new EventEmitter();
|
|
8
|
+
declined = new EventEmitter();
|
|
9
|
+
autoDismissTimer;
|
|
10
|
+
ringtoneAudio;
|
|
11
|
+
ngOnInit() {
|
|
12
|
+
// Auto-dismiss after 30 seconds
|
|
13
|
+
this.autoDismissTimer = setTimeout(() => {
|
|
14
|
+
this.declined.emit(this.callEvent);
|
|
15
|
+
}, 30000);
|
|
16
|
+
this.playRingtone();
|
|
17
|
+
}
|
|
18
|
+
ngOnDestroy() {
|
|
19
|
+
if (this.autoDismissTimer) {
|
|
20
|
+
clearTimeout(this.autoDismissTimer);
|
|
21
|
+
}
|
|
22
|
+
this.stopRingtone();
|
|
23
|
+
}
|
|
24
|
+
onAccept() {
|
|
25
|
+
this.stopRingtone();
|
|
26
|
+
if (this.autoDismissTimer) {
|
|
27
|
+
clearTimeout(this.autoDismissTimer);
|
|
28
|
+
}
|
|
29
|
+
this.accepted.emit(this.callEvent);
|
|
30
|
+
}
|
|
31
|
+
onDecline() {
|
|
32
|
+
this.stopRingtone();
|
|
33
|
+
if (this.autoDismissTimer) {
|
|
34
|
+
clearTimeout(this.autoDismissTimer);
|
|
35
|
+
}
|
|
36
|
+
this.declined.emit(this.callEvent);
|
|
37
|
+
}
|
|
38
|
+
get callTypeLabel() {
|
|
39
|
+
return this.callEvent?.hasVideo ? 'Video Call' : 'Audio Call';
|
|
40
|
+
}
|
|
41
|
+
get callerInitials() {
|
|
42
|
+
if (!this.callEvent?.initiatorName)
|
|
43
|
+
return '?';
|
|
44
|
+
return this.callEvent.initiatorName
|
|
45
|
+
.split(' ')
|
|
46
|
+
.map((n) => n[0])
|
|
47
|
+
.join('')
|
|
48
|
+
.toUpperCase()
|
|
49
|
+
.substring(0, 2);
|
|
50
|
+
}
|
|
51
|
+
playRingtone() {
|
|
52
|
+
try {
|
|
53
|
+
this.ringtoneAudio = new Audio();
|
|
54
|
+
// Use a simple oscillator-based tone as fallback
|
|
55
|
+
this.ringtoneAudio.loop = true;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
// Audio may not be available
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
stopRingtone() {
|
|
62
|
+
if (this.ringtoneAudio) {
|
|
63
|
+
this.ringtoneAudio.pause();
|
|
64
|
+
this.ringtoneAudio = undefined;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IncomingCallComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
68
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: IncomingCallComponent, isStandalone: true, selector: "tgm-incoming-call", inputs: { callEvent: "callEvent" }, outputs: { accepted: "accepted", declined: "declined" }, ngImport: i0, template: "<div class=\"incoming-call-dialog\" *ngIf=\"callEvent\">\n <div class=\"caller-info\">\n <div class=\"caller-avatar\">\n <span class=\"initials\">{{ callerInitials }}</span>\n </div>\n <div class=\"caller-details\">\n <h3 class=\"caller-name\">{{ callEvent.initiatorName }}</h3>\n <p class=\"call-type\">Incoming {{ callTypeLabel }}</p>\n </div>\n </div>\n\n <div class=\"call-actions\">\n <button class=\"action-btn decline\" (click)=\"onDecline()\" title=\"Decline\">\n <span class=\"icon\">\u2715</span>\n <span class=\"label\">Decline</span>\n </button>\n <button class=\"action-btn accept\" (click)=\"onAccept()\" title=\"Accept\">\n <span class=\"icon\">\u2713</span>\n <span class=\"label\">Accept</span>\n </button>\n </div>\n</div>\n", styles: [".incoming-call-dialog{display:flex;flex-direction:column;align-items:center;gap:24px;padding:32px;background:#1a1a2e;border-radius:16px;box-shadow:0 20px 60px #00000080;animation:slideIn .3s ease-out;min-width:300px}.caller-info{display:flex;flex-direction:column;align-items:center;gap:12px}.caller-avatar{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;animation:pulse 2s ease-in-out infinite}.caller-avatar .initials{font-size:32px;font-weight:600;color:#fff}.caller-details{text-align:center}.caller-details .caller-name{color:#fff;font-size:20px;font-weight:600;margin:0}.caller-details .call-type{color:#fff9;font-size:14px;margin:4px 0 0}.call-actions{display:flex;gap:24px}.action-btn{flex-direction:column;gap:6px;padding:16px 24px;border:none;border-radius:50%;width:64px;height:64px;cursor:pointer;transition:transform .2s;display:flex;align-items:center;justify-content:center}.action-btn:hover{transform:scale(1.1)}.action-btn.accept{background:#22c55e;color:#fff}.action-btn.decline{background:#ef4444;color:#fff}.action-btn .icon{font-size:24px;font-weight:700}.action-btn .label{display:none}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{box-shadow:0 0 #667eea66}50%{box-shadow:0 0 0 12px #667eea00}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
|
|
69
|
+
}
|
|
70
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: IncomingCallComponent, decorators: [{
|
|
71
|
+
type: Component,
|
|
72
|
+
args: [{ selector: 'tgm-incoming-call', standalone: true, imports: [CommonModule], template: "<div class=\"incoming-call-dialog\" *ngIf=\"callEvent\">\n <div class=\"caller-info\">\n <div class=\"caller-avatar\">\n <span class=\"initials\">{{ callerInitials }}</span>\n </div>\n <div class=\"caller-details\">\n <h3 class=\"caller-name\">{{ callEvent.initiatorName }}</h3>\n <p class=\"call-type\">Incoming {{ callTypeLabel }}</p>\n </div>\n </div>\n\n <div class=\"call-actions\">\n <button class=\"action-btn decline\" (click)=\"onDecline()\" title=\"Decline\">\n <span class=\"icon\">\u2715</span>\n <span class=\"label\">Decline</span>\n </button>\n <button class=\"action-btn accept\" (click)=\"onAccept()\" title=\"Accept\">\n <span class=\"icon\">\u2713</span>\n <span class=\"label\">Accept</span>\n </button>\n </div>\n</div>\n", styles: [".incoming-call-dialog{display:flex;flex-direction:column;align-items:center;gap:24px;padding:32px;background:#1a1a2e;border-radius:16px;box-shadow:0 20px 60px #00000080;animation:slideIn .3s ease-out;min-width:300px}.caller-info{display:flex;flex-direction:column;align-items:center;gap:12px}.caller-avatar{width:80px;height:80px;border-radius:50%;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;align-items:center;justify-content:center;animation:pulse 2s ease-in-out infinite}.caller-avatar .initials{font-size:32px;font-weight:600;color:#fff}.caller-details{text-align:center}.caller-details .caller-name{color:#fff;font-size:20px;font-weight:600;margin:0}.caller-details .call-type{color:#fff9;font-size:14px;margin:4px 0 0}.call-actions{display:flex;gap:24px}.action-btn{flex-direction:column;gap:6px;padding:16px 24px;border:none;border-radius:50%;width:64px;height:64px;cursor:pointer;transition:transform .2s;display:flex;align-items:center;justify-content:center}.action-btn:hover{transform:scale(1.1)}.action-btn.accept{background:#22c55e;color:#fff}.action-btn.decline{background:#ef4444;color:#fff}.action-btn .icon{font-size:24px;font-weight:700}.action-btn .label{display:none}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{box-shadow:0 0 #667eea66}50%{box-shadow:0 0 0 12px #667eea00}}\n"] }]
|
|
73
|
+
}], propDecorators: { callEvent: [{
|
|
74
|
+
type: Input
|
|
75
|
+
}], accepted: [{
|
|
76
|
+
type: Output
|
|
77
|
+
}], declined: [{
|
|
78
|
+
type: Output
|
|
79
|
+
}] } });
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jb21pbmctY2FsbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvdmlkZW8tY2FsbC9pbmNvbWluZy1jYWxsL2luY29taW5nLWNhbGwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL3ZpZGVvLWNhbGwvaW5jb21pbmctY2FsbC9pbmNvbWluZy1jYWxsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBVS9DLE1BQU0sT0FBTyxxQkFBcUI7SUFDdkIsU0FBUyxDQUFxQjtJQUM3QixRQUFRLEdBQUcsSUFBSSxZQUFZLEVBQXFCLENBQUM7SUFDakQsUUFBUSxHQUFHLElBQUksWUFBWSxFQUFxQixDQUFDO0lBRW5ELGdCQUFnQixDQUFpQztJQUNqRCxhQUFhLENBQW9CO0lBRXpDLFFBQVE7UUFDTixnQ0FBZ0M7UUFDaEMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3JDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVWLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVztRQUNULElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsWUFBWSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3RDLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUMxQixZQUFZLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUNwQixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO1lBQzFCLFlBQVksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztJQUNoRSxDQUFDO0lBRUQsSUFBSSxjQUFjO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWE7WUFBRSxPQUFPLEdBQUcsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYTthQUNoQyxLQUFLLENBQUMsR0FBRyxDQUFDO2FBQ1YsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDaEIsSUFBSSxDQUFDLEVBQUUsQ0FBQzthQUNSLFdBQVcsRUFBRTthQUNiLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxDQUFDO1lBQ0gsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ2pDLGlEQUFpRDtZQUNqRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakMsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLDZCQUE2QjtRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVPLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsYUFBYSxHQUFHLFNBQVMsQ0FBQztRQUNqQyxDQUFDO0lBQ0gsQ0FBQzt3R0FyRVUscUJBQXFCOzRGQUFyQixxQkFBcUIsMEtDWGxDLHV5QkFzQkEseTZDRGZZLFlBQVk7OzRGQUlYLHFCQUFxQjtrQkFQakMsU0FBUzsrQkFDRSxtQkFBbUIsY0FDakIsSUFBSSxXQUNQLENBQUMsWUFBWSxDQUFDOzhCQUtkLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0ksUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5jb21pbmdDYWxsRXZlbnQgfSBmcm9tICcuLi90eXBlcy92aWRlby1jYWxsLnR5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGdtLWluY29taW5nLWNhbGwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2luY29taW5nLWNhbGwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9pbmNvbWluZy1jYWxsLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEluY29taW5nQ2FsbENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgY2FsbEV2ZW50ITogSW5jb21pbmdDYWxsRXZlbnQ7XG4gIEBPdXRwdXQoKSBhY2NlcHRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SW5jb21pbmdDYWxsRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBkZWNsaW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8SW5jb21pbmdDYWxsRXZlbnQ+KCk7XG5cbiAgcHJpdmF0ZSBhdXRvRGlzbWlzc1RpbWVyPzogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD47XG4gIHByaXZhdGUgcmluZ3RvbmVBdWRpbz86IEhUTUxBdWRpb0VsZW1lbnQ7XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgLy8gQXV0by1kaXNtaXNzIGFmdGVyIDMwIHNlY29uZHNcbiAgICB0aGlzLmF1dG9EaXNtaXNzVGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZGVjbGluZWQuZW1pdCh0aGlzLmNhbGxFdmVudCk7XG4gICAgfSwgMzAwMDApO1xuXG4gICAgdGhpcy5wbGF5UmluZ3RvbmUoKTtcbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmF1dG9EaXNtaXNzVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmF1dG9EaXNtaXNzVGltZXIpO1xuICAgIH1cbiAgICB0aGlzLnN0b3BSaW5ndG9uZSgpO1xuICB9XG5cbiAgb25BY2NlcHQoKTogdm9pZCB7XG4gICAgdGhpcy5zdG9wUmluZ3RvbmUoKTtcbiAgICBpZiAodGhpcy5hdXRvRGlzbWlzc1RpbWVyKSB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5hdXRvRGlzbWlzc1RpbWVyKTtcbiAgICB9XG4gICAgdGhpcy5hY2NlcHRlZC5lbWl0KHRoaXMuY2FsbEV2ZW50KTtcbiAgfVxuXG4gIG9uRGVjbGluZSgpOiB2b2lkIHtcbiAgICB0aGlzLnN0b3BSaW5ndG9uZSgpO1xuICAgIGlmICh0aGlzLmF1dG9EaXNtaXNzVGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmF1dG9EaXNtaXNzVGltZXIpO1xuICAgIH1cbiAgICB0aGlzLmRlY2xpbmVkLmVtaXQodGhpcy5jYWxsRXZlbnQpO1xuICB9XG5cbiAgZ2V0IGNhbGxUeXBlTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jYWxsRXZlbnQ/Lmhhc1ZpZGVvID8gJ1ZpZGVvIENhbGwnIDogJ0F1ZGlvIENhbGwnO1xuICB9XG5cbiAgZ2V0IGNhbGxlckluaXRpYWxzKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLmNhbGxFdmVudD8uaW5pdGlhdG9yTmFtZSkgcmV0dXJuICc/JztcbiAgICByZXR1cm4gdGhpcy5jYWxsRXZlbnQuaW5pdGlhdG9yTmFtZVxuICAgICAgLnNwbGl0KCcgJylcbiAgICAgIC5tYXAoKG4pID0+IG5bMF0pXG4gICAgICAuam9pbignJylcbiAgICAgIC50b1VwcGVyQ2FzZSgpXG4gICAgICAuc3Vic3RyaW5nKDAsIDIpO1xuICB9XG5cbiAgcHJpdmF0ZSBwbGF5UmluZ3RvbmUoKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIHRoaXMucmluZ3RvbmVBdWRpbyA9IG5ldyBBdWRpbygpO1xuICAgICAgLy8gVXNlIGEgc2ltcGxlIG9zY2lsbGF0b3ItYmFzZWQgdG9uZSBhcyBmYWxsYmFja1xuICAgICAgdGhpcy5yaW5ndG9uZUF1ZGlvLmxvb3AgPSB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gQXVkaW8gbWF5IG5vdCBiZSBhdmFpbGFibGVcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0b3BSaW5ndG9uZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5yaW5ndG9uZUF1ZGlvKSB7XG4gICAgICB0aGlzLnJpbmd0b25lQXVkaW8ucGF1c2UoKTtcbiAgICAgIHRoaXMucmluZ3RvbmVBdWRpbyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJpbmNvbWluZy1jYWxsLWRpYWxvZ1wiICpuZ0lmPVwiY2FsbEV2ZW50XCI+XG4gIDxkaXYgY2xhc3M9XCJjYWxsZXItaW5mb1wiPlxuICAgIDxkaXYgY2xhc3M9XCJjYWxsZXItYXZhdGFyXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cImluaXRpYWxzXCI+e3sgY2FsbGVySW5pdGlhbHMgfX08L3NwYW4+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNhbGxlci1kZXRhaWxzXCI+XG4gICAgICA8aDMgY2xhc3M9XCJjYWxsZXItbmFtZVwiPnt7IGNhbGxFdmVudC5pbml0aWF0b3JOYW1lIH19PC9oMz5cbiAgICAgIDxwIGNsYXNzPVwiY2FsbC10eXBlXCI+SW5jb21pbmcge3sgY2FsbFR5cGVMYWJlbCB9fTwvcD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNhbGwtYWN0aW9uc1wiPlxuICAgIDxidXR0b24gY2xhc3M9XCJhY3Rpb24tYnRuIGRlY2xpbmVcIiAoY2xpY2spPVwib25EZWNsaW5lKClcIiB0aXRsZT1cIkRlY2xpbmVcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvblwiPuKclTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5EZWNsaW5lPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJhY3Rpb24tYnRuIGFjY2VwdFwiIChjbGljayk9XCJvbkFjY2VwdCgpXCIgdGl0bGU9XCJBY2NlcHRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiaWNvblwiPuKckzwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzPVwibGFiZWxcIj5BY2NlcHQ8L3NwYW4+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|