@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
package/esm2022/lib/components/reporting/report-definition-list/report-definition-list.component.mjs
ADDED
|
@@ -0,0 +1,252 @@
|
|
|
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 ReportDefinitionListComponent {
|
|
7
|
+
reportingService;
|
|
8
|
+
// ── Data ──
|
|
9
|
+
definitions;
|
|
10
|
+
loading = false;
|
|
11
|
+
autoFetch = true;
|
|
12
|
+
pageSize = 10;
|
|
13
|
+
showActions = true;
|
|
14
|
+
showPagination = true;
|
|
15
|
+
// ── Visible columns (all true by default) ──
|
|
16
|
+
showName = true;
|
|
17
|
+
showType = true;
|
|
18
|
+
showFormat = true;
|
|
19
|
+
showSchedule = true;
|
|
20
|
+
showEnabled = true;
|
|
21
|
+
showLastRun = true;
|
|
22
|
+
// ── Labels ──
|
|
23
|
+
emptyMessage = 'No report definitions found.';
|
|
24
|
+
title = '';
|
|
25
|
+
nameHeader = 'Name';
|
|
26
|
+
typeHeader = 'Type';
|
|
27
|
+
formatHeader = 'Format';
|
|
28
|
+
scheduleHeader = 'Schedule';
|
|
29
|
+
enabledHeader = 'Enabled';
|
|
30
|
+
lastRunHeader = 'Last Run';
|
|
31
|
+
actionsHeader = 'Actions';
|
|
32
|
+
editLabel = 'Edit';
|
|
33
|
+
deleteLabel = 'Delete';
|
|
34
|
+
generateLabel = 'Generate';
|
|
35
|
+
viewLabel = 'View';
|
|
36
|
+
previousLabel = 'Previous';
|
|
37
|
+
nextLabel = 'Next';
|
|
38
|
+
// ── CSS overrides ──
|
|
39
|
+
containerClass = '';
|
|
40
|
+
tableClass = '';
|
|
41
|
+
// ── Custom templates ──
|
|
42
|
+
rowTemplate;
|
|
43
|
+
emptyTemplate;
|
|
44
|
+
loadingTemplate;
|
|
45
|
+
headerTemplate;
|
|
46
|
+
actionsTemplate;
|
|
47
|
+
paginationTemplate;
|
|
48
|
+
// ── Events ──
|
|
49
|
+
edit = new EventEmitter();
|
|
50
|
+
delete = new EventEmitter();
|
|
51
|
+
toggle = new EventEmitter();
|
|
52
|
+
generate = new EventEmitter();
|
|
53
|
+
view = new EventEmitter();
|
|
54
|
+
pageChange = new EventEmitter();
|
|
55
|
+
definitionsFetched = new EventEmitter();
|
|
56
|
+
fetchError = new EventEmitter();
|
|
57
|
+
internalDefinitions = [];
|
|
58
|
+
internalLoading = false;
|
|
59
|
+
currentPage = 0;
|
|
60
|
+
totalItems = 0;
|
|
61
|
+
constructor(reportingService) {
|
|
62
|
+
this.reportingService = reportingService;
|
|
63
|
+
}
|
|
64
|
+
ngOnInit() {
|
|
65
|
+
if (!this.definitions && this.autoFetch) {
|
|
66
|
+
this.fetchDefinitions();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
get displayDefinitions() {
|
|
70
|
+
return this.definitions ?? this.internalDefinitions;
|
|
71
|
+
}
|
|
72
|
+
get isLoading() {
|
|
73
|
+
return this.loading || this.internalLoading;
|
|
74
|
+
}
|
|
75
|
+
get totalPages() {
|
|
76
|
+
const total = this.totalItems || this.displayDefinitions.length;
|
|
77
|
+
return Math.ceil(total / this.pageSize) || 1;
|
|
78
|
+
}
|
|
79
|
+
get hasPrev() {
|
|
80
|
+
return this.currentPage > 0;
|
|
81
|
+
}
|
|
82
|
+
get hasNext() {
|
|
83
|
+
return this.currentPage < this.totalPages - 1;
|
|
84
|
+
}
|
|
85
|
+
onEdit(def) {
|
|
86
|
+
this.edit.emit(def);
|
|
87
|
+
}
|
|
88
|
+
onDelete(def) {
|
|
89
|
+
this.delete.emit(def);
|
|
90
|
+
}
|
|
91
|
+
onToggle(def) {
|
|
92
|
+
this.toggle.emit({ definition: def, enabled: !def.enabled });
|
|
93
|
+
}
|
|
94
|
+
onGenerate(def) {
|
|
95
|
+
this.generate.emit(def);
|
|
96
|
+
}
|
|
97
|
+
onView(def) {
|
|
98
|
+
this.view.emit(def);
|
|
99
|
+
}
|
|
100
|
+
onPrevPage() {
|
|
101
|
+
if (this.hasPrev) {
|
|
102
|
+
this.currentPage--;
|
|
103
|
+
this.pageChange.emit({ page: this.currentPage, size: this.pageSize });
|
|
104
|
+
if (!this.definitions && this.autoFetch) {
|
|
105
|
+
this.fetchDefinitions();
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
onNextPage() {
|
|
110
|
+
if (this.hasNext) {
|
|
111
|
+
this.currentPage++;
|
|
112
|
+
this.pageChange.emit({ page: this.currentPage, size: this.pageSize });
|
|
113
|
+
if (!this.definitions && this.autoFetch) {
|
|
114
|
+
this.fetchDefinitions();
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
goToPage = (page) => {
|
|
119
|
+
this.currentPage = page;
|
|
120
|
+
this.pageChange.emit({ page: this.currentPage, size: this.pageSize });
|
|
121
|
+
if (!this.definitions && this.autoFetch) {
|
|
122
|
+
this.fetchDefinitions();
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
trackById(_index, def) {
|
|
126
|
+
return def.id;
|
|
127
|
+
}
|
|
128
|
+
formatDate(dateStr) {
|
|
129
|
+
if (!dateStr)
|
|
130
|
+
return '—';
|
|
131
|
+
try {
|
|
132
|
+
return new Date(dateStr).toLocaleDateString(undefined, {
|
|
133
|
+
year: 'numeric',
|
|
134
|
+
month: 'short',
|
|
135
|
+
day: 'numeric',
|
|
136
|
+
hour: '2-digit',
|
|
137
|
+
minute: '2-digit',
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return dateStr;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
fetchDefinitions() {
|
|
145
|
+
this.internalLoading = true;
|
|
146
|
+
this.reportingService.listDefinitions(this.currentPage, this.pageSize).subscribe({
|
|
147
|
+
next: (res) => {
|
|
148
|
+
this.internalDefinitions = res.data ?? [];
|
|
149
|
+
this.totalItems = res.total ?? this.internalDefinitions.length;
|
|
150
|
+
this.internalLoading = false;
|
|
151
|
+
this.definitionsFetched.emit(this.internalDefinitions);
|
|
152
|
+
},
|
|
153
|
+
error: (err) => {
|
|
154
|
+
this.internalLoading = false;
|
|
155
|
+
this.fetchError.emit(err);
|
|
156
|
+
},
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportDefinitionListComponent, deps: [{ token: i1.ReportingService }], target: i0.ɵɵFactoryTarget.Component });
|
|
160
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ReportDefinitionListComponent, isStandalone: true, selector: "tgm-report-definition-list", inputs: { definitions: "definitions", loading: "loading", autoFetch: "autoFetch", pageSize: "pageSize", showActions: "showActions", showPagination: "showPagination", showName: "showName", showType: "showType", showFormat: "showFormat", showSchedule: "showSchedule", showEnabled: "showEnabled", showLastRun: "showLastRun", emptyMessage: "emptyMessage", title: "title", nameHeader: "nameHeader", typeHeader: "typeHeader", formatHeader: "formatHeader", scheduleHeader: "scheduleHeader", enabledHeader: "enabledHeader", lastRunHeader: "lastRunHeader", actionsHeader: "actionsHeader", editLabel: "editLabel", deleteLabel: "deleteLabel", generateLabel: "generateLabel", viewLabel: "viewLabel", previousLabel: "previousLabel", nextLabel: "nextLabel", containerClass: "containerClass", tableClass: "tableClass", rowTemplate: "rowTemplate", emptyTemplate: "emptyTemplate", loadingTemplate: "loadingTemplate", headerTemplate: "headerTemplate", actionsTemplate: "actionsTemplate", paginationTemplate: "paginationTemplate" }, outputs: { edit: "edit", delete: "delete", toggle: "toggle", generate: "generate", view: "view", pageChange: "pageChange", definitionsFetched: "definitionsFetched", fetchError: "fetchError" }, ngImport: i0, template: "<div class=\"tgm-def-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-def-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-def-list__loading\">\n <div class=\"tgm-spinner\"></div>\n <p>Loading definitions...</p>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Empty -->\n <ng-container *ngIf=\"!isLoading && displayDefinitions.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-def-list__empty\">\n <p>{{ emptyMessage }}</p>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Table -->\n <div class=\"tgm-table-wrapper\" *ngIf=\"!isLoading && displayDefinitions.length > 0\">\n <table class=\"tgm-table\" [ngClass]=\"tableClass\">\n <thead>\n <tr>\n <th *ngIf=\"showName\">{{ nameHeader }}</th>\n <th *ngIf=\"showType\">{{ typeHeader }}</th>\n <th *ngIf=\"showFormat\">{{ formatHeader }}</th>\n <th *ngIf=\"showSchedule\">{{ scheduleHeader }}</th>\n <th *ngIf=\"showEnabled\">{{ enabledHeader }}</th>\n <th *ngIf=\"showLastRun\">{{ lastRunHeader }}</th>\n <th *ngIf=\"showActions\">{{ actionsHeader }}</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let def of displayDefinitions; let i = index; trackBy: trackById\">\n <!-- Custom row template -->\n <ng-container *ngIf=\"rowTemplate; else defaultRow\">\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: def, index: i }\"></ng-container>\n </ng-container>\n\n <!-- Default row -->\n <ng-template #defaultRow>\n <tr>\n <td *ngIf=\"showName\">\n <span class=\"tgm-def-name\" (click)=\"onView(def)\">{{ def.name }}</span>\n <span class=\"tgm-def-desc\" *ngIf=\"def.description\">{{ def.description }}</span>\n </td>\n <td *ngIf=\"showType\">\n <span class=\"tgm-badge tgm-badge--type\">{{ def.reportType }}</span>\n </td>\n <td *ngIf=\"showFormat\">{{ def.reportFormat }}</td>\n <td *ngIf=\"showSchedule\">{{ def.schedule }}</td>\n <td *ngIf=\"showEnabled\">\n <button class=\"tgm-toggle\" [class.tgm-toggle--active]=\"def.enabled\" (click)=\"onToggle(def)\">\n <span class=\"tgm-toggle__track\">\n <span class=\"tgm-toggle__thumb\"></span>\n </span>\n </button>\n </td>\n <td *ngIf=\"showLastRun\">{{ formatDate(def.lastRunAt) }}</td>\n <td *ngIf=\"showActions\">\n <!-- Custom actions -->\n <ng-container *ngIf=\"actionsTemplate; else defaultActions\">\n <ng-container *ngTemplateOutlet=\"actionsTemplate; context: { $implicit: def }\"></ng-container>\n </ng-container>\n <ng-template #defaultActions>\n <div class=\"tgm-actions\">\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--ghost\" (click)=\"onView(def)\">{{ viewLabel }}</button>\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--ghost\" (click)=\"onEdit(def)\">{{ editLabel }}</button>\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--primary\" (click)=\"onGenerate(def)\">{{ generateLabel }}</button>\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--danger\" (click)=\"onDelete(def)\">{{ deleteLabel }}</button>\n </div>\n </ng-template>\n </td>\n </tr>\n </ng-template>\n </ng-container>\n </tbody>\n </table>\n\n <!-- Pagination -->\n <ng-container *ngIf=\"showPagination && totalPages > 1\">\n <ng-container *ngIf=\"paginationTemplate; else defaultPagination\">\n <ng-container *ngTemplateOutlet=\"paginationTemplate; context: {\n page: currentPage,\n pageSize: pageSize,\n total: totalItems,\n onPageChange: goToPage\n }\"></ng-container>\n </ng-container>\n <ng-template #defaultPagination>\n <div class=\"tgm-pagination\">\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--ghost\" [disabled]=\"!hasPrev\" (click)=\"onPrevPage()\">\n {{ previousLabel }}\n </button>\n <span class=\"tgm-pagination__info\">{{ currentPage + 1 }} / {{ totalPages }}</span>\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--ghost\" [disabled]=\"!hasNext\" (click)=\"onNextPage()\">\n {{ nextLabel }}\n </button>\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-danger: #ef4444;--tgm-report-danger-hover: #dc2626;--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;display:block;font-family:var(--tgm-report-font-family);font-size:var(--tgm-report-font-size);color:var(--tgm-report-text)}.tgm-def-list__title{margin:0 0 var(--tgm-report-spacing);font-size:18px;font-weight:600}.tgm-def-list__loading,.tgm-def-list__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 0;color:var(--tgm-report-text-muted)}.tgm-def-list__loading p,.tgm-def-list__empty p{margin:12px 0 0}.tgm-table-wrapper{overflow-x:auto}.tgm-table{width:100%;border-collapse:collapse}.tgm-table th,.tgm-table td{padding:10px 12px;text-align:left;white-space:nowrap}.tgm-table th{font-size:12px;font-weight:600;color:var(--tgm-report-text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--tgm-report-border)}.tgm-table td{font-size:13px;border-bottom:1px solid var(--tgm-report-border)}.tgm-table tbody tr{transition:background .1s}.tgm-table tbody tr:hover{background:var(--tgm-report-bg-hover)}.tgm-def-name{font-weight:500;color:var(--tgm-report-primary);cursor:pointer}.tgm-def-name:hover{text-decoration:underline}.tgm-def-desc{display:block;font-size:12px;color:var(--tgm-report-text-muted);margin-top:2px;white-space:normal;max-width:300px}.tgm-badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:11px;font-weight:500;border-radius:var(--tgm-report-radius-sm)}.tgm-badge--type{background:#3b82f626;color:var(--tgm-report-primary)}.tgm-toggle{background:none;border:none;cursor:pointer;padding:0}.tgm-toggle__track{display:flex;align-items:center;width:36px;height:20px;background:var(--tgm-report-text-muted);border-radius:10px;padding:2px;transition:background .2s}.tgm-toggle__thumb{display:block;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s}.tgm-toggle--active .tgm-toggle__track{background:var(--tgm-report-success)}.tgm-toggle--active .tgm-toggle__thumb{transform:translate(16px)}.tgm-actions{display:flex;gap:4px}.tgm-pagination{display:flex;align-items:center;justify-content:center;gap:var(--tgm-report-spacing-sm);padding:var(--tgm-report-spacing) 0}.tgm-pagination__info{font-size:13px;color:var(--tgm-report-text-secondary)}.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--sm{padding:4px 10px;font-size:12px}.tgm-btn--primary{background:var(--tgm-report-primary);color:#fff}.tgm-btn--primary:hover:not(:disabled){background:var(--tgm-report-primary-hover)}.tgm-btn--danger{background:var(--tgm-report-danger);color:#fff}.tgm-btn--danger:hover:not(:disabled){background:var(--tgm-report-danger-hover)}.tgm-btn--ghost{background:transparent;color:var(--tgm-report-text-secondary)}.tgm-btn--ghost:hover:not(:disabled){background:var(--tgm-report-bg-hover);color:var(--tgm-report-text)}.tgm-btn:disabled{opacity:.4;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"] }] });
|
|
161
|
+
}
|
|
162
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportDefinitionListComponent, decorators: [{
|
|
163
|
+
type: Component,
|
|
164
|
+
args: [{ selector: 'tgm-report-definition-list', standalone: true, imports: [CommonModule], template: "<div class=\"tgm-def-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-def-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-def-list__loading\">\n <div class=\"tgm-spinner\"></div>\n <p>Loading definitions...</p>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Empty -->\n <ng-container *ngIf=\"!isLoading && displayDefinitions.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-def-list__empty\">\n <p>{{ emptyMessage }}</p>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Table -->\n <div class=\"tgm-table-wrapper\" *ngIf=\"!isLoading && displayDefinitions.length > 0\">\n <table class=\"tgm-table\" [ngClass]=\"tableClass\">\n <thead>\n <tr>\n <th *ngIf=\"showName\">{{ nameHeader }}</th>\n <th *ngIf=\"showType\">{{ typeHeader }}</th>\n <th *ngIf=\"showFormat\">{{ formatHeader }}</th>\n <th *ngIf=\"showSchedule\">{{ scheduleHeader }}</th>\n <th *ngIf=\"showEnabled\">{{ enabledHeader }}</th>\n <th *ngIf=\"showLastRun\">{{ lastRunHeader }}</th>\n <th *ngIf=\"showActions\">{{ actionsHeader }}</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let def of displayDefinitions; let i = index; trackBy: trackById\">\n <!-- Custom row template -->\n <ng-container *ngIf=\"rowTemplate; else defaultRow\">\n <ng-container *ngTemplateOutlet=\"rowTemplate; context: { $implicit: def, index: i }\"></ng-container>\n </ng-container>\n\n <!-- Default row -->\n <ng-template #defaultRow>\n <tr>\n <td *ngIf=\"showName\">\n <span class=\"tgm-def-name\" (click)=\"onView(def)\">{{ def.name }}</span>\n <span class=\"tgm-def-desc\" *ngIf=\"def.description\">{{ def.description }}</span>\n </td>\n <td *ngIf=\"showType\">\n <span class=\"tgm-badge tgm-badge--type\">{{ def.reportType }}</span>\n </td>\n <td *ngIf=\"showFormat\">{{ def.reportFormat }}</td>\n <td *ngIf=\"showSchedule\">{{ def.schedule }}</td>\n <td *ngIf=\"showEnabled\">\n <button class=\"tgm-toggle\" [class.tgm-toggle--active]=\"def.enabled\" (click)=\"onToggle(def)\">\n <span class=\"tgm-toggle__track\">\n <span class=\"tgm-toggle__thumb\"></span>\n </span>\n </button>\n </td>\n <td *ngIf=\"showLastRun\">{{ formatDate(def.lastRunAt) }}</td>\n <td *ngIf=\"showActions\">\n <!-- Custom actions -->\n <ng-container *ngIf=\"actionsTemplate; else defaultActions\">\n <ng-container *ngTemplateOutlet=\"actionsTemplate; context: { $implicit: def }\"></ng-container>\n </ng-container>\n <ng-template #defaultActions>\n <div class=\"tgm-actions\">\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--ghost\" (click)=\"onView(def)\">{{ viewLabel }}</button>\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--ghost\" (click)=\"onEdit(def)\">{{ editLabel }}</button>\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--primary\" (click)=\"onGenerate(def)\">{{ generateLabel }}</button>\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--danger\" (click)=\"onDelete(def)\">{{ deleteLabel }}</button>\n </div>\n </ng-template>\n </td>\n </tr>\n </ng-template>\n </ng-container>\n </tbody>\n </table>\n\n <!-- Pagination -->\n <ng-container *ngIf=\"showPagination && totalPages > 1\">\n <ng-container *ngIf=\"paginationTemplate; else defaultPagination\">\n <ng-container *ngTemplateOutlet=\"paginationTemplate; context: {\n page: currentPage,\n pageSize: pageSize,\n total: totalItems,\n onPageChange: goToPage\n }\"></ng-container>\n </ng-container>\n <ng-template #defaultPagination>\n <div class=\"tgm-pagination\">\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--ghost\" [disabled]=\"!hasPrev\" (click)=\"onPrevPage()\">\n {{ previousLabel }}\n </button>\n <span class=\"tgm-pagination__info\">{{ currentPage + 1 }} / {{ totalPages }}</span>\n <button class=\"tgm-btn tgm-btn--sm tgm-btn--ghost\" [disabled]=\"!hasNext\" (click)=\"onNextPage()\">\n {{ nextLabel }}\n </button>\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-danger: #ef4444;--tgm-report-danger-hover: #dc2626;--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;display:block;font-family:var(--tgm-report-font-family);font-size:var(--tgm-report-font-size);color:var(--tgm-report-text)}.tgm-def-list__title{margin:0 0 var(--tgm-report-spacing);font-size:18px;font-weight:600}.tgm-def-list__loading,.tgm-def-list__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 0;color:var(--tgm-report-text-muted)}.tgm-def-list__loading p,.tgm-def-list__empty p{margin:12px 0 0}.tgm-table-wrapper{overflow-x:auto}.tgm-table{width:100%;border-collapse:collapse}.tgm-table th,.tgm-table td{padding:10px 12px;text-align:left;white-space:nowrap}.tgm-table th{font-size:12px;font-weight:600;color:var(--tgm-report-text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--tgm-report-border)}.tgm-table td{font-size:13px;border-bottom:1px solid var(--tgm-report-border)}.tgm-table tbody tr{transition:background .1s}.tgm-table tbody tr:hover{background:var(--tgm-report-bg-hover)}.tgm-def-name{font-weight:500;color:var(--tgm-report-primary);cursor:pointer}.tgm-def-name:hover{text-decoration:underline}.tgm-def-desc{display:block;font-size:12px;color:var(--tgm-report-text-muted);margin-top:2px;white-space:normal;max-width:300px}.tgm-badge{display:inline-flex;align-items:center;padding:2px 8px;font-size:11px;font-weight:500;border-radius:var(--tgm-report-radius-sm)}.tgm-badge--type{background:#3b82f626;color:var(--tgm-report-primary)}.tgm-toggle{background:none;border:none;cursor:pointer;padding:0}.tgm-toggle__track{display:flex;align-items:center;width:36px;height:20px;background:var(--tgm-report-text-muted);border-radius:10px;padding:2px;transition:background .2s}.tgm-toggle__thumb{display:block;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s}.tgm-toggle--active .tgm-toggle__track{background:var(--tgm-report-success)}.tgm-toggle--active .tgm-toggle__thumb{transform:translate(16px)}.tgm-actions{display:flex;gap:4px}.tgm-pagination{display:flex;align-items:center;justify-content:center;gap:var(--tgm-report-spacing-sm);padding:var(--tgm-report-spacing) 0}.tgm-pagination__info{font-size:13px;color:var(--tgm-report-text-secondary)}.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--sm{padding:4px 10px;font-size:12px}.tgm-btn--primary{background:var(--tgm-report-primary);color:#fff}.tgm-btn--primary:hover:not(:disabled){background:var(--tgm-report-primary-hover)}.tgm-btn--danger{background:var(--tgm-report-danger);color:#fff}.tgm-btn--danger:hover:not(:disabled){background:var(--tgm-report-danger-hover)}.tgm-btn--ghost{background:transparent;color:var(--tgm-report-text-secondary)}.tgm-btn--ghost:hover:not(:disabled){background:var(--tgm-report-bg-hover);color:var(--tgm-report-text)}.tgm-btn:disabled{opacity:.4;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"] }]
|
|
165
|
+
}], ctorParameters: () => [{ type: i1.ReportingService }], propDecorators: { definitions: [{
|
|
166
|
+
type: Input
|
|
167
|
+
}], loading: [{
|
|
168
|
+
type: Input
|
|
169
|
+
}], autoFetch: [{
|
|
170
|
+
type: Input
|
|
171
|
+
}], pageSize: [{
|
|
172
|
+
type: Input
|
|
173
|
+
}], showActions: [{
|
|
174
|
+
type: Input
|
|
175
|
+
}], showPagination: [{
|
|
176
|
+
type: Input
|
|
177
|
+
}], showName: [{
|
|
178
|
+
type: Input
|
|
179
|
+
}], showType: [{
|
|
180
|
+
type: Input
|
|
181
|
+
}], showFormat: [{
|
|
182
|
+
type: Input
|
|
183
|
+
}], showSchedule: [{
|
|
184
|
+
type: Input
|
|
185
|
+
}], showEnabled: [{
|
|
186
|
+
type: Input
|
|
187
|
+
}], showLastRun: [{
|
|
188
|
+
type: Input
|
|
189
|
+
}], emptyMessage: [{
|
|
190
|
+
type: Input
|
|
191
|
+
}], title: [{
|
|
192
|
+
type: Input
|
|
193
|
+
}], nameHeader: [{
|
|
194
|
+
type: Input
|
|
195
|
+
}], typeHeader: [{
|
|
196
|
+
type: Input
|
|
197
|
+
}], formatHeader: [{
|
|
198
|
+
type: Input
|
|
199
|
+
}], scheduleHeader: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}], enabledHeader: [{
|
|
202
|
+
type: Input
|
|
203
|
+
}], lastRunHeader: [{
|
|
204
|
+
type: Input
|
|
205
|
+
}], actionsHeader: [{
|
|
206
|
+
type: Input
|
|
207
|
+
}], editLabel: [{
|
|
208
|
+
type: Input
|
|
209
|
+
}], deleteLabel: [{
|
|
210
|
+
type: Input
|
|
211
|
+
}], generateLabel: [{
|
|
212
|
+
type: Input
|
|
213
|
+
}], viewLabel: [{
|
|
214
|
+
type: Input
|
|
215
|
+
}], previousLabel: [{
|
|
216
|
+
type: Input
|
|
217
|
+
}], nextLabel: [{
|
|
218
|
+
type: Input
|
|
219
|
+
}], containerClass: [{
|
|
220
|
+
type: Input
|
|
221
|
+
}], tableClass: [{
|
|
222
|
+
type: Input
|
|
223
|
+
}], rowTemplate: [{
|
|
224
|
+
type: Input
|
|
225
|
+
}], emptyTemplate: [{
|
|
226
|
+
type: Input
|
|
227
|
+
}], loadingTemplate: [{
|
|
228
|
+
type: Input
|
|
229
|
+
}], headerTemplate: [{
|
|
230
|
+
type: Input
|
|
231
|
+
}], actionsTemplate: [{
|
|
232
|
+
type: Input
|
|
233
|
+
}], paginationTemplate: [{
|
|
234
|
+
type: Input
|
|
235
|
+
}], edit: [{
|
|
236
|
+
type: Output
|
|
237
|
+
}], delete: [{
|
|
238
|
+
type: Output
|
|
239
|
+
}], toggle: [{
|
|
240
|
+
type: Output
|
|
241
|
+
}], generate: [{
|
|
242
|
+
type: Output
|
|
243
|
+
}], view: [{
|
|
244
|
+
type: Output
|
|
245
|
+
}], pageChange: [{
|
|
246
|
+
type: Output
|
|
247
|
+
}], definitionsFetched: [{
|
|
248
|
+
type: Output
|
|
249
|
+
}], fetchError: [{
|
|
250
|
+
type: Output
|
|
251
|
+
}] } });
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWRlZmluaXRpb24tbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0aW5nL3JlcG9ydC1kZWZpbml0aW9uLWxpc3QvcmVwb3J0LWRlZmluaXRpb24tbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0aW5nL3JlcG9ydC1kZWZpbml0aW9uLWxpc3QvcmVwb3J0LWRlZmluaXRpb24tbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7OztBQVcvQyxNQUFNLE9BQU8sNkJBQTZCO0lBa0VwQjtJQWpFcEIsYUFBYTtJQUNKLFdBQVcsQ0FBc0I7SUFDakMsT0FBTyxHQUFHLEtBQUssQ0FBQztJQUNoQixTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ2pCLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDZCxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQ25CLGNBQWMsR0FBRyxJQUFJLENBQUM7SUFFL0IsOENBQThDO0lBQ3JDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDaEIsUUFBUSxHQUFHLElBQUksQ0FBQztJQUNoQixVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQ2xCLFlBQVksR0FBRyxJQUFJLENBQUM7SUFDcEIsV0FBVyxHQUFHLElBQUksQ0FBQztJQUNuQixXQUFXLEdBQUcsSUFBSSxDQUFDO0lBRTVCLGVBQWU7SUFDTixZQUFZLEdBQUcsOEJBQThCLENBQUM7SUFDOUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztJQUNYLFVBQVUsR0FBRyxNQUFNLENBQUM7SUFDcEIsVUFBVSxH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QkFBckIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxhQUFhO3NCQUFyQixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUdHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBUUksSUFBSTtzQkFBYixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSZXBvcnREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzL2FwaS9yZXBvcnRpbmcubW9kZWxzJztcbmltcG9ydCB7IFJlcG9ydGluZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcGkvcmVwb3J0aW5nLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd0Z20tcmVwb3J0LWRlZmluaXRpb24tbGlzdCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LWRlZmluaXRpb24tbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlcG9ydC1kZWZpbml0aW9uLWxpc3QuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0RGVmaW5pdGlvbkxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvLyDilIDilIAgRGF0YSDilIDilIBcbiAgQElucHV0KCkgZGVmaW5pdGlvbnM/OiBSZXBvcnREZWZpbml0aW9uW107XG4gIEBJbnB1dCgpIGxvYWRpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgYXV0b0ZldGNoID0gdHJ1ZTtcbiAgQElucHV0KCkgcGFnZVNpemUgPSAxMDtcbiAgQElucHV0KCkgc2hvd0FjdGlvbnMgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93UGFnaW5hdGlvbiA9IHRydWU7XG5cbiAgLy8g4pSA4pSAIFZpc2libGUgY29sdW1ucyAoYWxsIHRydWUgYnkgZGVmYXVsdCkg4pSA4pSAXG4gIEBJbnB1dCgpIHNob3dOYW1lID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1R5cGUgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93Rm9ybWF0ID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd1NjaGVkdWxlID0gdHJ1ZTtcbiAgQElucHV0KCkgc2hvd0VuYWJsZWQgPSB0cnVlO1xuICBASW5wdXQoKSBzaG93TGFzdFJ1biA9IHRydWU7XG5cbiAgLy8g4pSA4pSAIExhYmVscyDilIDilIBcbiAgQElucHV0KCkgZW1wdHlNZXNzYWdlID0gJ05vIHJlcG9ydCBkZWZpbml0aW9ucyBmb3VuZC4nO1xuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xuICBASW5wdXQoKSBuYW1lSGVhZGVyID0gJ05hbWUnO1xuICBASW5wdXQoKSB0eXBlSGVhZGVyID0gJ1R5cGUnO1xuICBASW5wdXQoKSBmb3JtYXRIZWFkZXIgPSAnRm9ybWF0JztcbiAgQElucHV0KCkgc2NoZWR1bGVIZWFkZXIgPSAnU2NoZWR1bGUnO1xuICBASW5wdXQoKSBlbmFibGVkSGVhZGVyID0gJ0VuYWJsZWQnO1xuICBASW5wdXQoKSBsYXN0UnVuSGVhZGVyID0gJ0xhc3QgUnVuJztcbiAgQElucHV0KCkgYWN0aW9uc0hlYWRlciA9ICdBY3Rpb25zJztcbiAgQElucHV0KCkgZWRpdExhYmVsID0gJ0VkaXQnO1xuICBASW5wdXQoKSBkZWxldGVMYWJlbCA9ICdEZWxldGUnO1xuICBASW5wdXQoKSBnZW5lcmF0ZUxhYmVsID0gJ0dlbmVyYXRlJztcbiAgQElucHV0KCkgdmlld0xhYmVsID0gJ1ZpZXcnO1xuICBASW5wdXQoKSBwcmV2aW91c0xhYmVsID0gJ1ByZXZpb3VzJztcbiAgQElucHV0KCkgbmV4dExhYmVsID0gJ05leHQnO1xuXG4gIC8vIOKUgOKUgCBDU1Mgb3ZlcnJpZGVzIOKUgOKUgFxuICBASW5wdXQoKSBjb250YWluZXJDbGFzcyA9ICcnO1xuICBASW5wdXQoKSB0YWJsZUNsYXNzID0gJyc7XG5cbiAgLy8g4pSA4pSAIEN1c3RvbSB0ZW1wbGF0ZXMg4pSA4pSAXG4gIEBJbnB1dCgpIHJvd1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8eyAkaW1wbGljaXQ6IFJlcG9ydERlZmluaXRpb247IGluZGV4OiBudW1iZXIgfT47XG4gIEBJbnB1dCgpIGVtcHR5VGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQElucHV0KCkgbG9hZGluZ1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBJbnB1dCgpIGhlYWRlclRlbXBsYXRlPzogVGVtcGxhdGVSZWY8dm9pZD47XG4gIEBJbnB1dCgpIGFjdGlvbnNUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHsgJGltcGxpY2l0OiBSZXBvcnREZWZpbml0aW9uIH0+O1xuICBASW5wdXQoKSBwYWdpbmF0aW9uVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7XG4gICAgcGFnZTogbnVtYmVyO1xuICAgIHBhZ2VTaXplOiBudW1iZXI7XG4gICAgdG90YWw6IG51bWJlcjtcbiAgICBvblBhZ2VDaGFuZ2U6IChwYWdlOiBudW1iZXIpID0+IHZvaWQ7XG4gIH0+O1xuXG4gIC8vIOKUgOKUgCBFdmVudHMg4pSA4pSAXG4gIEBPdXRwdXQoKSBlZGl0ID0gbmV3IEV2ZW50RW1pdHRlcjxSZXBvcnREZWZpbml0aW9uPigpO1xuICBAT3V0cHV0KCkgZGVsZXRlID0gbmV3IEV2ZW50RW1pdHRlcjxSZXBvcnREZWZpbml0aW9uPigpO1xuICBAT3V0cHV0KCkgdG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjx7IGRlZmluaXRpb246IFJlcG9ydERlZmluaXRpb247IGVuYWJsZWQ6IGJvb2xlYW4gfT4oKTtcbiAgQE91dHB1dCgpIGdlbmVyYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxSZXBvcnREZWZpbml0aW9uPigpO1xuICBAT3V0cHV0KCkgdmlldyA9IG5ldyBFdmVudEVtaXR0ZXI8UmVwb3J0RGVmaW5pdGlvbj4oKTtcbiAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHsgcGFnZTogbnVtYmVyOyBzaXplOiBudW1iZXIgfT4oKTtcbiAgQE91dHB1dCgpIGRlZmluaXRpb25zRmV0Y2hlZCA9IG5ldyBFdmVudEVtaXR0ZXI8UmVwb3J0RGVmaW5pdGlvbltdPigpO1xuICBAT3V0cHV0KCkgZmV0Y2hFcnJvciA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGludGVybmFsRGVmaW5pdGlvbnM6IFJlcG9ydERlZmluaXRpb25bXSA9IFtdO1xuICBpbnRlcm5hbExvYWRpbmcgPSBmYWxzZTtcbiAgY3VycmVudFBhZ2UgPSAwO1xuICB0b3RhbEl0ZW1zID0gMDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlcG9ydGluZ1NlcnZpY2U6IFJlcG9ydGluZ1NlcnZpY2UpIHt9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmRlZmluaXRpb25zICYmIHRoaXMuYXV0b0ZldGNoKSB7XG4gICAgICB0aGlzLmZldGNoRGVmaW5pdGlvbnMoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgZGlzcGxheURlZmluaXRpb25zKCk6IFJlcG9ydERlZmluaXRpb25bXSB7XG4gICAgcmV0dXJuIHRoaXMuZGVmaW5pdGlvbnMgPz8gdGhpcy5pbnRlcm5hbERlZmluaXRpb25zO1xuICB9XG5cbiAgZ2V0IGlzTG9hZGluZygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nIHx8IHRoaXMuaW50ZXJuYWxMb2FkaW5nO1xuICB9XG5cbiAgZ2V0IHRvdGFsUGFnZXMoKTogbnVtYmVyIHtcbiAgICBjb25zdCB0b3RhbCA9IHRoaXMudG90YWxJdGVtcyB8fCB0aGlzLmRpc3BsYXlEZWZpbml0aW9ucy5sZW5ndGg7XG4gICAgcmV0dXJuIE1hdGguY2VpbCh0b3RhbCAvIHRoaXMucGFnZVNpemUpIHx8IDE7XG4gIH1cblxuICBnZXQgaGFzUHJldigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA+IDA7XG4gIH1cblxuICBnZXQgaGFzTmV4dCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50UGFnZSA8IHRoaXMudG90YWxQYWdlcyAtIDE7XG4gIH1cblxuICBvbkVkaXQoZGVmOiBSZXBvcnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5lZGl0LmVtaXQoZGVmKTtcbiAgfVxuXG4gIG9uRGVsZXRlKGRlZjogUmVwb3J0RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIHRoaXMuZGVsZXRlLmVtaXQoZGVmKTtcbiAgfVxuXG4gIG9uVG9nZ2xlKGRlZjogUmVwb3J0RGVmaW5pdGlvbik6IHZvaWQge1xuICAgIHRoaXMudG9nZ2xlLmVtaXQoeyBkZWZpbml0aW9uOiBkZWYsIGVuYWJsZWQ6ICFkZWYuZW5hYmxlZCB9KTtcbiAgfVxuXG4gIG9uR2VuZXJhdGUoZGVmOiBSZXBvcnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy5nZW5lcmF0ZS5lbWl0KGRlZik7XG4gIH1cblxuICBvblZpZXcoZGVmOiBSZXBvcnREZWZpbml0aW9uKTogdm9pZCB7XG4gICAgdGhpcy52aWV3LmVtaXQoZGVmKTtcbiAgfVxuXG4gIG9uUHJldlBhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzUHJldikge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZS0tO1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoeyBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlLCBzaXplOiB0aGlzLnBhZ2VTaXplIH0pO1xuICAgICAgaWYgKCF0aGlzLmRlZmluaXRpb25zICYmIHRoaXMuYXV0b0ZldGNoKSB7XG4gICAgICAgIHRoaXMuZmV0Y2hEZWZpbml0aW9ucygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG9uTmV4dFBhZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaGFzTmV4dCkge1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSsrO1xuICAgICAgdGhpcy5wYWdlQ2hhbmdlLmVtaXQoeyBwYWdlOiB0aGlzLmN1cnJlbnRQYWdlLCBzaXplOiB0aGlzLnBhZ2VTaXplIH0pO1xuICAgICAgaWYgKCF0aGlzLmRlZmluaXRpb25zICYmIHRoaXMuYXV0b0ZldGNoKSB7XG4gICAgICAgIHRoaXMuZmV0Y2hEZWZpbml0aW9ucygpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGdvVG9QYWdlID0gKHBhZ2U6IG51bWJlcik6IHZvaWQgPT4ge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBwYWdlO1xuICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KHsgcGFnZTogdGhpcy5jdXJyZW50UGFnZSwgc2l6ZTogdGhpcy5wYWdlU2l6ZSB9KTtcbiAgICBpZiAoIXRoaXMuZGVmaW5pdGlvbnMgJiYgdGhpcy5hdXRvRmV0Y2gpIHtcbiAgICAgIHRoaXMuZmV0Y2hEZWZpbml0aW9ucygpO1xuICAgIH1cbiAgfTtcblxuICB0cmFja0J5SWQoX2luZGV4OiBudW1iZXIsIGRlZjogUmVwb3J0RGVmaW5pdGlvbik6IG51bWJlciB7XG4gICAgcmV0dXJuIGRlZi5pZDtcbiAgfVxuXG4gIGZvcm1hdERhdGUoZGF0ZVN0cj86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFkYXRlU3RyKSByZXR1cm4gJ+KAlCc7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZShkYXRlU3RyKS50b0xvY2FsZURhdGVTdHJpbmcodW5kZWZpbmVkLCB7XG4gICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICBob3VyOiAnMi1kaWdpdCcsXG4gICAgICAgIG1pbnV0ZTogJzItZGlnaXQnLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4gZGF0ZVN0cjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGZldGNoRGVmaW5pdGlvbnMoKTogdm9pZCB7XG4gICAgdGhpcy5pbnRlcm5hbExvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMucmVwb3J0aW5nU2VydmljZS5saXN0RGVmaW5pdGlvbnModGhpcy5jdXJyZW50UGFnZSwgdGhpcy5wYWdlU2l6ZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXMpID0+IHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbERlZmluaXRpb25zID0gcmVzLmRhdGEgPz8gW107XG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IChyZXMgYXMgYW55KS50b3RhbCA/PyB0aGlzLmludGVybmFsRGVmaW5pdGlvbnMubGVuZ3RoO1xuICAgICAgICB0aGlzLmludGVybmFsTG9hZGluZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmRlZmluaXRpb25zRmV0Y2hlZC5lbWl0KHRoaXMuaW50ZXJuYWxEZWZpbml0aW9ucyk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgdGhpcy5pbnRlcm5hbExvYWRpbmcgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5mZXRjaEVycm9yLmVtaXQoZXJyKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0Z20tZGVmLWxpc3RcIiBbbmdDbGFzc109XCJjb250YWluZXJDbGFzc1wiPlxuICA8IS0tIEhlYWRlciAtLT5cbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhlYWRlclRlbXBsYXRlOyBlbHNlIGRlZmF1bHRIZWFkZXJcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaGVhZGVyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgPC9uZy1jb250YWluZXI+XG4gIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlcj5cbiAgICA8aDMgY2xhc3M9XCJ0Z20tZGVmLWxpc3RfX3RpdGxlXCIgKm5nSWY9XCJ0aXRsZVwiPnt7IHRpdGxlIH19PC9oMz5cbiAgPC9uZy10ZW1wbGF0ZT5cblxuICA8IS0tIExvYWRpbmcgLS0+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibG9hZGluZ1RlbXBsYXRlOyBlbHNlIGRlZmF1bHRMb2FkaW5nXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibG9hZGluZ1RlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0TG9hZGluZz5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tZGVmLWxpc3RfX2xvYWRpbmdcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInRnbS1zcGlubmVyXCI+PC9kaXY+XG4gICAgICAgIDxwPkxvYWRpbmcgZGVmaW5pdGlvbnMuLi48L3A+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8IS0tIEVtcHR5IC0tPlxuICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzTG9hZGluZyAmJiBkaXNwbGF5RGVmaW5pdGlvbnMubGVuZ3RoID09PSAwXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5VGVtcGxhdGU7IGVsc2UgZGVmYXVsdEVtcHR5XCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVtcHR5PlxuICAgICAgPGRpdiBjbGFzcz1cInRnbS1kZWYtbGlzdF9fZW1wdHlcIj5cbiAgICAgICAgPHA+e3sgZW1wdHlNZXNzYWdlIH19PC9wPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPCEtLSBUYWJsZSAtLT5cbiAgPGRpdiBjbGFzcz1cInRnbS10YWJsZS13cmFwcGVyXCIgKm5nSWY9XCIhaXNMb2FkaW5nICYmIGRpc3BsYXlEZWZpbml0aW9ucy5sZW5ndGggPiAwXCI+XG4gICAgPHRhYmxlIGNsYXNzPVwidGdtLXRhYmxlXCIgW25nQ2xhc3NdPVwidGFibGVDbGFzc1wiPlxuICAgICAgPHRoZWFkPlxuICAgICAgICA8dHI+XG4gICAgICAgICAgPHRoICpuZ0lmPVwic2hvd05hbWVcIj57eyBuYW1lSGVhZGVyIH19PC90aD5cbiAgICAgICAgICA8dGggKm5nSWY9XCJzaG93VHlwZVwiPnt7IHR5cGVIZWFkZXIgfX08L3RoPlxuICAgICAgICAgIDx0aCAqbmdJZj1cInNob3dGb3JtYXRcIj57eyBmb3JtYXRIZWFkZXIgfX08L3RoPlxuICAgICAgICAgIDx0aCAqbmdJZj1cInNob3dTY2hlZHVsZVwiPnt7IHNjaGVkdWxlSGVhZGVyIH19PC90aD5cbiAgICAgICAgICA8dGggKm5nSWY9XCJzaG93RW5hYmxlZFwiPnt7IGVuYWJsZWRIZWFkZXIgfX08L3RoPlxuICAgICAgICAgIDx0aCAqbmdJZj1cInNob3dMYXN0UnVuXCI+e3sgbGFzdFJ1bkhlYWRlciB9fTwvdGg+XG4gICAgICAgICAgPHRoICpuZ0lmPVwic2hvd0FjdGlvbnNcIj57eyBhY3Rpb25zSGVhZGVyIH19PC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGRlZiBvZiBkaXNwbGF5RGVmaW5pdGlvbnM7IGxldCBpID0gaW5kZXg7IHRyYWNrQnk6IHRyYWNrQnlJZFwiPlxuICAgICAgICAgIDwhLS0gQ3VzdG9tIHJvdyB0ZW1wbGF0ZSAtLT5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicm93VGVtcGxhdGU7IGVsc2UgZGVmYXVsdFJvd1wiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJvd1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogZGVmLCBpbmRleDogaSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICA8IS0tIERlZmF1bHQgcm93IC0tPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFJvdz5cbiAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic2hvd05hbWVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRnbS1kZWYtbmFtZVwiIChjbGljayk9XCJvblZpZXcoZGVmKVwiPnt7IGRlZi5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGdtLWRlZi1kZXNjXCIgKm5nSWY9XCJkZWYuZGVzY3JpcHRpb25cIj57eyBkZWYuZGVzY3JpcHRpb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNob3dUeXBlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tYmFkZ2UgdGdtLWJhZGdlLS10eXBlXCI+e3sgZGVmLnJlcG9ydFR5cGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgIDx0ZCAqbmdJZj1cInNob3dGb3JtYXRcIj57eyBkZWYucmVwb3J0Rm9ybWF0IH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic2hvd1NjaGVkdWxlXCI+e3sgZGVmLnNjaGVkdWxlIH19PC90ZD5cbiAgICAgICAgICAgICAgPHRkICpuZ0lmPVwic2hvd0VuYWJsZWRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGdtLXRvZ2dsZVwiIFtjbGFzcy50Z20tdG9nZ2xlLS1hY3RpdmVdPVwiZGVmLmVuYWJsZWRcIiAoY2xpY2spPVwib25Ub2dnbGUoZGVmKVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0Z20tdG9nZ2xlX190cmFja1wiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInRnbS10b2dnbGVfX3RodW1iXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzaG93TGFzdFJ1blwiPnt7IGZvcm1hdERhdGUoZGVmLmxhc3RSdW5BdCkgfX08L3RkPlxuICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJzaG93QWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgIDwhLS0gQ3VzdG9tIGFjdGlvbnMgLS0+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImFjdGlvbnNUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0QWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImFjdGlvbnNUZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGRlZiB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0QWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tYWN0aW9uc1wiPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGdtLWJ0biB0Z20tYnRuLS1zbSB0Z20tYnRuLS1naG9zdFwiIChjbGljayk9XCJvblZpZXcoZGVmKVwiPnt7IHZpZXdMYWJlbCB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGdtLWJ0biB0Z20tYnRuLS1zbSB0Z20tYnRuLS1naG9zdFwiIChjbGljayk9XCJvbkVkaXQoZGVmKVwiPnt7IGVkaXRMYWJlbCB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidGdtLWJ0biB0Z20tYnRuLS1zbSB0Z20tYnRuLS1wcmltYXJ5XCIgKGNsaWNrKT1cIm9uR2VuZXJhdGUoZGVmKVwiPnt7IGdlbmVyYXRlTGFiZWwgfX08L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRnbS1idG4gdGdtLWJ0bi0tc20gdGdtLWJ0bi0tZGFuZ2VyXCIgKGNsaWNrKT1cIm9uRGVsZXRlKGRlZilcIj57eyBkZWxldGVMYWJlbCB9fTwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG5cbiAgICA8IS0tIFBhZ2luYXRpb24gLS0+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dQYWdpbmF0aW9uICYmIHRvdGFsUGFnZXMgPiAxXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicGFnaW5hdGlvblRlbXBsYXRlOyBlbHNlIGRlZmF1bHRQYWdpbmF0aW9uXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwYWdpbmF0aW9uVGVtcGxhdGU7IGNvbnRleHQ6IHtcbiAgICAgICAgICBwYWdlOiBjdXJyZW50UGFnZSxcbiAgICAgICAgICBwYWdlU2l6ZTogcGFnZVNpemUsXG4gICAgICAgICAgdG90YWw6IHRvdGFsSXRlbXMsXG4gICAgICAgICAgb25QYWdlQ2hhbmdlOiBnb1RvUGFnZVxuICAgICAgICB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdFBhZ2luYXRpb24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tcGFnaW5hdGlvblwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0Z20tYnRuIHRnbS1idG4tLXNtIHRnbS1idG4tLWdob3N0XCIgW2Rpc2FibGVkXT1cIiFoYXNQcmV2XCIgKGNsaWNrKT1cIm9uUHJldlBhZ2UoKVwiPlxuICAgICAgICAgICAge3sgcHJldmlvdXNMYWJlbCB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGdtLXBhZ2luYXRpb25fX2luZm9cIj57eyBjdXJyZW50UGFnZSArIDEgfX0gLyB7eyB0b3RhbFBhZ2VzIH19PC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0Z20tYnRuIHRnbS1idG4tLXNtIHRnbS1idG4tLWdob3N0XCIgW2Rpc2FibGVkXT1cIiFoYXNOZXh0XCIgKGNsaWNrKT1cIm9uTmV4dFBhZ2UoKVwiPlxuICAgICAgICAgICAge3sgbmV4dExhYmVsIH19XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|
package/esm2022/lib/components/reporting/report-generate-dialog/report-generate-dialog.component.mjs
ADDED
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { Component, EventEmitter, Input, Output, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule } from '@angular/forms';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
import * as i1 from "@angular/common";
|
|
6
|
+
import * as i2 from "@angular/forms";
|
|
7
|
+
export class ReportGenerateDialogComponent {
|
|
8
|
+
// ── Data ──
|
|
9
|
+
template;
|
|
10
|
+
open = false;
|
|
11
|
+
generating = false;
|
|
12
|
+
formatOptions;
|
|
13
|
+
// ── Labels ──
|
|
14
|
+
title = '';
|
|
15
|
+
formatLabel = 'Format';
|
|
16
|
+
filtersLabel = 'Filters';
|
|
17
|
+
generateButtonLabel = 'Generate Report';
|
|
18
|
+
cancelButtonLabel = 'Cancel';
|
|
19
|
+
closeOnBackdrop = true;
|
|
20
|
+
// ── CSS overrides ──
|
|
21
|
+
containerClass = '';
|
|
22
|
+
dialogClass = '';
|
|
23
|
+
// ── Custom templates ──
|
|
24
|
+
headerTemplate;
|
|
25
|
+
filtersTemplate;
|
|
26
|
+
footerTemplate;
|
|
27
|
+
// ── Events ──
|
|
28
|
+
generate = new EventEmitter();
|
|
29
|
+
close = new EventEmitter();
|
|
30
|
+
cancel = new EventEmitter();
|
|
31
|
+
selectedFormat = 'PDF';
|
|
32
|
+
filters = {};
|
|
33
|
+
get availableFormats() {
|
|
34
|
+
return this.formatOptions ?? this.template?.supportedFormats ?? ['PDF', 'EXCEL', 'CSV'];
|
|
35
|
+
}
|
|
36
|
+
get dialogTitle() {
|
|
37
|
+
return this.title || `Generate: ${this.template?.name ?? 'Report'}`;
|
|
38
|
+
}
|
|
39
|
+
ngOnChanges(changes) {
|
|
40
|
+
if (changes['template'] && this.template) {
|
|
41
|
+
this.resetForm();
|
|
42
|
+
}
|
|
43
|
+
if (changes['open'] && this.open && this.template) {
|
|
44
|
+
this.resetForm();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
onBackdropClick() {
|
|
48
|
+
if (this.closeOnBackdrop) {
|
|
49
|
+
this.close.emit();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
onCancel() {
|
|
53
|
+
this.cancel.emit();
|
|
54
|
+
this.close.emit();
|
|
55
|
+
}
|
|
56
|
+
onGenerate() {
|
|
57
|
+
const request = {
|
|
58
|
+
reportType: this.template.type,
|
|
59
|
+
reportFormat: this.selectedFormat,
|
|
60
|
+
filters: { ...this.filters },
|
|
61
|
+
};
|
|
62
|
+
this.generate.emit(request);
|
|
63
|
+
}
|
|
64
|
+
onFilterChange(key, value) {
|
|
65
|
+
this.filters[key] = value;
|
|
66
|
+
}
|
|
67
|
+
trackByFilter(_index, filter) {
|
|
68
|
+
return filter;
|
|
69
|
+
}
|
|
70
|
+
resetForm() {
|
|
71
|
+
this.selectedFormat = this.availableFormats[0] ?? 'PDF';
|
|
72
|
+
this.filters = {};
|
|
73
|
+
if (this.template?.availableFilters) {
|
|
74
|
+
for (const f of this.template.availableFilters) {
|
|
75
|
+
this.filters[f] = '';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportGenerateDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
80
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ReportGenerateDialogComponent, isStandalone: true, selector: "tgm-report-generate-dialog", inputs: { template: "template", open: "open", generating: "generating", formatOptions: "formatOptions", title: "title", formatLabel: "formatLabel", filtersLabel: "filtersLabel", generateButtonLabel: "generateButtonLabel", cancelButtonLabel: "cancelButtonLabel", closeOnBackdrop: "closeOnBackdrop", containerClass: "containerClass", dialogClass: "dialogClass", headerTemplate: "headerTemplate", filtersTemplate: "filtersTemplate", footerTemplate: "footerTemplate" }, outputs: { generate: "generate", close: "close", cancel: "cancel" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"tgm-dialog-backdrop\" *ngIf=\"open\" [ngClass]=\"containerClass\" (click)=\"onBackdropClick()\">\n <div class=\"tgm-dialog\" [ngClass]=\"dialogClass\" (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <ng-container *ngIf=\"headerTemplate; else defaultHeader\">\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: template }\"></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <div class=\"tgm-dialog__header\">\n <h3 class=\"tgm-dialog__title\">{{ dialogTitle }}</h3>\n <button class=\"tgm-dialog__close\" (click)=\"onCancel()\" type=\"button\">×</button>\n </div>\n </ng-template>\n\n <div class=\"tgm-dialog__body\">\n <!-- Format Selection -->\n <div class=\"tgm-form-group\">\n <label class=\"tgm-form-label\">{{ formatLabel }}</label>\n <div class=\"tgm-radio-group\">\n <label class=\"tgm-radio\" *ngFor=\"let fmt of availableFormats\">\n <input type=\"radio\" [value]=\"fmt\" [(ngModel)]=\"selectedFormat\" name=\"reportFormat\" />\n <span class=\"tgm-radio__label\">{{ fmt }}</span>\n </label>\n </div>\n </div>\n\n <!-- Filters -->\n <ng-container *ngIf=\"template?.availableFilters?.length\">\n <div class=\"tgm-form-group\">\n <label class=\"tgm-form-label\">{{ filtersLabel }}</label>\n\n <ng-container *ngIf=\"filtersTemplate; else defaultFilters\">\n <ng-container *ngTemplateOutlet=\"filtersTemplate; context: { $implicit: template, filters: filters }\"></ng-container>\n </ng-container>\n\n <ng-template #defaultFilters>\n <div class=\"tgm-filters-grid\">\n <div class=\"tgm-filter-field\" *ngFor=\"let filter of template.availableFilters; trackBy: trackByFilter\">\n <label class=\"tgm-filter-field__label\">{{ filter }}</label>\n <input\n class=\"tgm-input\"\n type=\"text\"\n [placeholder]=\"'Enter ' + filter\"\n [ngModel]=\"filters[filter]\"\n (ngModelChange)=\"onFilterChange(filter, $event)\"\n [attr.name]=\"'filter_' + filter\"\n />\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <!-- Footer -->\n <ng-container *ngIf=\"footerTemplate; else defaultFooter\">\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: {\n $implicit: template,\n generating: generating,\n onGenerate: onGenerate.bind(this),\n onCancel: onCancel.bind(this)\n }\"></ng-container>\n </ng-container>\n <ng-template #defaultFooter>\n <div class=\"tgm-dialog__footer\">\n <button class=\"tgm-btn tgm-btn--secondary\" (click)=\"onCancel()\" type=\"button\" [disabled]=\"generating\">\n {{ cancelButtonLabel }}\n </button>\n <button class=\"tgm-btn tgm-btn--primary\" (click)=\"onGenerate()\" type=\"button\" [disabled]=\"generating\">\n <span class=\"tgm-spinner tgm-spinner--sm\" *ngIf=\"generating\"></span>\n {{ generateButtonLabel }}\n </button>\n </div>\n </ng-template>\n </div>\n</div>\n", styles: [":host{--tgm-report-bg: rgba(30, 30, 46, 1);--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-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 4px 24px rgba(0, 0, 0, .5);--tgm-report-backdrop: rgba(0, 0, 0, .6);--tgm-report-dialog-width: 480px;--tgm-report-input-bg: rgba(255, 255, 255, .05);display:block;font-family:var(--tgm-report-font-family);font-size:var(--tgm-report-font-size);color:var(--tgm-report-text)}.tgm-dialog-backdrop{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--tgm-report-backdrop);z-index:1000;animation:tgm-fadeIn .15s ease-out}.tgm-dialog{width:100%;max-width:var(--tgm-report-dialog-width);max-height:90vh;overflow-y:auto;background:var(--tgm-report-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius);box-shadow:var(--tgm-report-shadow);animation:tgm-slideIn .2s ease-out}.tgm-dialog__header{display:flex;align-items:center;justify-content:space-between;padding:var(--tgm-report-spacing);border-bottom:1px solid var(--tgm-report-border)}.tgm-dialog__title{margin:0;font-size:16px;font-weight:600;color:var(--tgm-report-text)}.tgm-dialog__close{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:none;border:none;color:var(--tgm-report-text-muted);font-size:20px;cursor:pointer;border-radius:var(--tgm-report-radius-sm);transition:background .15s,color .15s}.tgm-dialog__close:hover{background:var(--tgm-report-bg-hover);color:var(--tgm-report-text)}.tgm-dialog__body{padding:var(--tgm-report-spacing)}.tgm-dialog__footer{display:flex;justify-content:flex-end;gap:var(--tgm-report-spacing-sm);padding:var(--tgm-report-spacing);border-top:1px solid var(--tgm-report-border)}.tgm-form-group{margin-bottom:var(--tgm-report-spacing)}.tgm-form-group:last-child{margin-bottom:0}.tgm-form-label{display:block;margin-bottom:var(--tgm-report-spacing-sm);font-size:13px;font-weight:500;color:var(--tgm-report-text-secondary)}.tgm-radio-group{display:flex;gap:var(--tgm-report-spacing);flex-wrap:wrap}.tgm-radio{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:13px}.tgm-radio input[type=radio]{accent-color:var(--tgm-report-primary)}.tgm-radio__label{color:var(--tgm-report-text)}.tgm-filters-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--tgm-report-spacing-sm)}.tgm-filter-field{display:flex;flex-direction:column;gap:4px}.tgm-filter-field__label{font-size:12px;color:var(--tgm-report-text-muted);text-transform:capitalize}.tgm-input{width:100%;padding:8px 12px;font-size:13px;font-family:var(--tgm-report-font-family);color:var(--tgm-report-text);background:var(--tgm-report-input-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius-sm);outline:none;transition:border-color .15s;box-sizing:border-box}.tgm-input::placeholder{color:var(--tgm-report-text-muted)}.tgm-input:focus{border-color:var(--tgm-report-primary)}.tgm-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 20px;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:not(:disabled){background:var(--tgm-report-primary-hover)}.tgm-btn--secondary{background:transparent;color:var(--tgm-report-text-secondary);border:1px solid var(--tgm-report-border)}.tgm-btn--secondary:hover:not(:disabled){background:var(--tgm-report-bg-hover);color:var(--tgm-report-text)}.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}.tgm-spinner--sm{width:14px;height:14px;border-width:2px}@keyframes tgm-spin{to{transform:rotate(360deg)}}@keyframes tgm-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes tgm-slideIn{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.RadioControlValueAccessor, selector: "input[type=radio][formControlName],input[type=radio][formControl],input[type=radio][ngModel]", inputs: ["name", "formControlName", "value"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
81
|
+
}
|
|
82
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ReportGenerateDialogComponent, decorators: [{
|
|
83
|
+
type: Component,
|
|
84
|
+
args: [{ selector: 'tgm-report-generate-dialog', standalone: true, imports: [CommonModule, FormsModule], template: "<div class=\"tgm-dialog-backdrop\" *ngIf=\"open\" [ngClass]=\"containerClass\" (click)=\"onBackdropClick()\">\n <div class=\"tgm-dialog\" [ngClass]=\"dialogClass\" (click)=\"$event.stopPropagation()\">\n <!-- Header -->\n <ng-container *ngIf=\"headerTemplate; else defaultHeader\">\n <ng-container *ngTemplateOutlet=\"headerTemplate; context: { $implicit: template }\"></ng-container>\n </ng-container>\n <ng-template #defaultHeader>\n <div class=\"tgm-dialog__header\">\n <h3 class=\"tgm-dialog__title\">{{ dialogTitle }}</h3>\n <button class=\"tgm-dialog__close\" (click)=\"onCancel()\" type=\"button\">×</button>\n </div>\n </ng-template>\n\n <div class=\"tgm-dialog__body\">\n <!-- Format Selection -->\n <div class=\"tgm-form-group\">\n <label class=\"tgm-form-label\">{{ formatLabel }}</label>\n <div class=\"tgm-radio-group\">\n <label class=\"tgm-radio\" *ngFor=\"let fmt of availableFormats\">\n <input type=\"radio\" [value]=\"fmt\" [(ngModel)]=\"selectedFormat\" name=\"reportFormat\" />\n <span class=\"tgm-radio__label\">{{ fmt }}</span>\n </label>\n </div>\n </div>\n\n <!-- Filters -->\n <ng-container *ngIf=\"template?.availableFilters?.length\">\n <div class=\"tgm-form-group\">\n <label class=\"tgm-form-label\">{{ filtersLabel }}</label>\n\n <ng-container *ngIf=\"filtersTemplate; else defaultFilters\">\n <ng-container *ngTemplateOutlet=\"filtersTemplate; context: { $implicit: template, filters: filters }\"></ng-container>\n </ng-container>\n\n <ng-template #defaultFilters>\n <div class=\"tgm-filters-grid\">\n <div class=\"tgm-filter-field\" *ngFor=\"let filter of template.availableFilters; trackBy: trackByFilter\">\n <label class=\"tgm-filter-field__label\">{{ filter }}</label>\n <input\n class=\"tgm-input\"\n type=\"text\"\n [placeholder]=\"'Enter ' + filter\"\n [ngModel]=\"filters[filter]\"\n (ngModelChange)=\"onFilterChange(filter, $event)\"\n [attr.name]=\"'filter_' + filter\"\n />\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <!-- Footer -->\n <ng-container *ngIf=\"footerTemplate; else defaultFooter\">\n <ng-container *ngTemplateOutlet=\"footerTemplate; context: {\n $implicit: template,\n generating: generating,\n onGenerate: onGenerate.bind(this),\n onCancel: onCancel.bind(this)\n }\"></ng-container>\n </ng-container>\n <ng-template #defaultFooter>\n <div class=\"tgm-dialog__footer\">\n <button class=\"tgm-btn tgm-btn--secondary\" (click)=\"onCancel()\" type=\"button\" [disabled]=\"generating\">\n {{ cancelButtonLabel }}\n </button>\n <button class=\"tgm-btn tgm-btn--primary\" (click)=\"onGenerate()\" type=\"button\" [disabled]=\"generating\">\n <span class=\"tgm-spinner tgm-spinner--sm\" *ngIf=\"generating\"></span>\n {{ generateButtonLabel }}\n </button>\n </div>\n </ng-template>\n </div>\n</div>\n", styles: [":host{--tgm-report-bg: rgba(30, 30, 46, 1);--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-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 4px 24px rgba(0, 0, 0, .5);--tgm-report-backdrop: rgba(0, 0, 0, .6);--tgm-report-dialog-width: 480px;--tgm-report-input-bg: rgba(255, 255, 255, .05);display:block;font-family:var(--tgm-report-font-family);font-size:var(--tgm-report-font-size);color:var(--tgm-report-text)}.tgm-dialog-backdrop{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:var(--tgm-report-backdrop);z-index:1000;animation:tgm-fadeIn .15s ease-out}.tgm-dialog{width:100%;max-width:var(--tgm-report-dialog-width);max-height:90vh;overflow-y:auto;background:var(--tgm-report-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius);box-shadow:var(--tgm-report-shadow);animation:tgm-slideIn .2s ease-out}.tgm-dialog__header{display:flex;align-items:center;justify-content:space-between;padding:var(--tgm-report-spacing);border-bottom:1px solid var(--tgm-report-border)}.tgm-dialog__title{margin:0;font-size:16px;font-weight:600;color:var(--tgm-report-text)}.tgm-dialog__close{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:none;border:none;color:var(--tgm-report-text-muted);font-size:20px;cursor:pointer;border-radius:var(--tgm-report-radius-sm);transition:background .15s,color .15s}.tgm-dialog__close:hover{background:var(--tgm-report-bg-hover);color:var(--tgm-report-text)}.tgm-dialog__body{padding:var(--tgm-report-spacing)}.tgm-dialog__footer{display:flex;justify-content:flex-end;gap:var(--tgm-report-spacing-sm);padding:var(--tgm-report-spacing);border-top:1px solid var(--tgm-report-border)}.tgm-form-group{margin-bottom:var(--tgm-report-spacing)}.tgm-form-group:last-child{margin-bottom:0}.tgm-form-label{display:block;margin-bottom:var(--tgm-report-spacing-sm);font-size:13px;font-weight:500;color:var(--tgm-report-text-secondary)}.tgm-radio-group{display:flex;gap:var(--tgm-report-spacing);flex-wrap:wrap}.tgm-radio{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-size:13px}.tgm-radio input[type=radio]{accent-color:var(--tgm-report-primary)}.tgm-radio__label{color:var(--tgm-report-text)}.tgm-filters-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--tgm-report-spacing-sm)}.tgm-filter-field{display:flex;flex-direction:column;gap:4px}.tgm-filter-field__label{font-size:12px;color:var(--tgm-report-text-muted);text-transform:capitalize}.tgm-input{width:100%;padding:8px 12px;font-size:13px;font-family:var(--tgm-report-font-family);color:var(--tgm-report-text);background:var(--tgm-report-input-bg);border:1px solid var(--tgm-report-border);border-radius:var(--tgm-report-radius-sm);outline:none;transition:border-color .15s;box-sizing:border-box}.tgm-input::placeholder{color:var(--tgm-report-text-muted)}.tgm-input:focus{border-color:var(--tgm-report-primary)}.tgm-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 20px;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:not(:disabled){background:var(--tgm-report-primary-hover)}.tgm-btn--secondary{background:transparent;color:var(--tgm-report-text-secondary);border:1px solid var(--tgm-report-border)}.tgm-btn--secondary:hover:not(:disabled){background:var(--tgm-report-bg-hover);color:var(--tgm-report-text)}.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}.tgm-spinner--sm{width:14px;height:14px;border-width:2px}@keyframes tgm-spin{to{transform:rotate(360deg)}}@keyframes tgm-fadeIn{0%{opacity:0}to{opacity:1}}@keyframes tgm-slideIn{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
85
|
+
}], propDecorators: { template: [{
|
|
86
|
+
type: Input
|
|
87
|
+
}], open: [{
|
|
88
|
+
type: Input
|
|
89
|
+
}], generating: [{
|
|
90
|
+
type: Input
|
|
91
|
+
}], formatOptions: [{
|
|
92
|
+
type: Input
|
|
93
|
+
}], title: [{
|
|
94
|
+
type: Input
|
|
95
|
+
}], formatLabel: [{
|
|
96
|
+
type: Input
|
|
97
|
+
}], filtersLabel: [{
|
|
98
|
+
type: Input
|
|
99
|
+
}], generateButtonLabel: [{
|
|
100
|
+
type: Input
|
|
101
|
+
}], cancelButtonLabel: [{
|
|
102
|
+
type: Input
|
|
103
|
+
}], closeOnBackdrop: [{
|
|
104
|
+
type: Input
|
|
105
|
+
}], containerClass: [{
|
|
106
|
+
type: Input
|
|
107
|
+
}], dialogClass: [{
|
|
108
|
+
type: Input
|
|
109
|
+
}], headerTemplate: [{
|
|
110
|
+
type: Input
|
|
111
|
+
}], filtersTemplate: [{
|
|
112
|
+
type: Input
|
|
113
|
+
}], footerTemplate: [{
|
|
114
|
+
type: Input
|
|
115
|
+
}], generate: [{
|
|
116
|
+
type: Output
|
|
117
|
+
}], close: [{
|
|
118
|
+
type: Output
|
|
119
|
+
}], cancel: [{
|
|
120
|
+
type: Output
|
|
121
|
+
}] } });
|
|
122
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0LWdlbmVyYXRlLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0aW5nL3JlcG9ydC1nZW5lcmF0ZS1kaWFsb2cvcmVwb3J0LWdlbmVyYXRlLWRpYWxvZy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvcmVwb3J0aW5nL3JlcG9ydC1nZW5lcmF0ZS1kaWFsb2cvcmVwb3J0LWdlbmVyYXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxHQUdQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFjN0MsTUFBTSxPQUFPLDZCQUE2QjtJQUN4QyxhQUFhO0lBQ0osUUFBUSxDQUFrQjtJQUMxQixJQUFJLEdBQUcsS0FBSyxDQUFDO0lBQ2IsVUFBVSxHQUFHLEtBQUssQ0FBQztJQUNuQixhQUFhLENBQWtCO0lBRXhDLGVBQWU7SUFDTixLQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ1gsV0FBVyxHQUFHLFFBQVEsQ0FBQztJQUN2QixZQUFZLEdBQUcsU0FBUyxDQUFDO0lBQ3pCLG1CQUFtQixHQUFHLGlCQUFpQixDQUFDO0lBQ3hDLGlCQUFpQixHQUFHLFFBQVEsQ0FBQztJQUM3QixlQUFlLEdBQUcsSUFBSSxDQUFDO0lBRWhDLHNCQUFzQjtJQUNiLGNBQWMsR0FBRyxFQUFFLENBQUM7SUFDcEIsV0FBVyxHQUFHLEVBQUUsQ0FBQztJQUUxQix5QkFBeUI7SUFDaEIsY0FBYyxDQUE4QztJQUM1RCxlQUFlLENBR3JCO0lBQ00sY0FBYyxDQUtw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QixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFHRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBSUcsY0FBYztzQkFBdEIsS0FBSztnQkFRSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLEtBQUs7c0JBQWQsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzLFxuICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBHZW5lcmF0ZVJlcG9ydFJlcXVlc3QsXG4gIFJlcG9ydEZvcm1hdCxcbiAgUmVwb3J0VGVtcGxhdGUsXG59IGZyb20gJy4uLy4uLy4uL21vZGVscy9hcGkvcmVwb3J0aW5nLm1vZGVscyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3RnbS1yZXBvcnQtZ2VuZXJhdGUtZGlhbG9nJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0LWdlbmVyYXRlLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3JlcG9ydC1nZW5lcmF0ZS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVwb3J0R2VuZXJhdGVEaWFsb2dDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAvLyDilIDilIAgRGF0YSDilIDilIBcbiAgQElucHV0KCkgdGVtcGxhdGUhOiBSZXBvcnRUZW1wbGF0ZTtcbiAgQElucHV0KCkgb3BlbiA9IGZhbHNlO1xuICBASW5wdXQoKSBnZW5lcmF0aW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIGZvcm1hdE9wdGlvbnM/OiBSZXBvcnRGb3JtYXRbXTtcblxuICAvLyDilIDilIAgTGFiZWxzIOKUgOKUgFxuICBASW5wdXQoKSB0aXRsZSA9ICcnO1xuICBASW5wdXQoKSBmb3JtYXRMYWJlbCA9ICdGb3JtYXQnO1xuICBASW5wdXQoKSBmaWx0ZXJzTGFiZWwgPSAnRmlsdGVycyc7XG4gIEBJbnB1dCgpIGdlbmVyYXRlQnV0dG9uTGFiZWwgPSAnR2VuZXJhdGUgUmVwb3J0JztcbiAgQElucHV0KCkgY2FuY2VsQnV0dG9uTGFiZWwgPSAnQ2FuY2VsJztcbiAgQElucHV0KCkgY2xvc2VPbkJhY2tkcm9wID0gdHJ1ZTtcblxuICAvLyDilIDilIAgQ1NTIG92ZXJyaWRlcyDilIDilIBcbiAgQElucHV0KCkgY29udGFpbmVyQ2xhc3MgPSAnJztcbiAgQElucHV0KCkgZGlhbG9nQ2xhc3MgPSAnJztcblxuICAvLyDilIDilIAgQ3VzdG9tIHRlbXBsYXRlcyDilIDilIBcbiAgQElucHV0KCkgaGVhZGVyVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7ICRpbXBsaWNpdDogUmVwb3J0VGVtcGxhdGUgfT47XG4gIEBJbnB1dCgpIGZpbHRlcnNUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHtcbiAgICAkaW1wbGljaXQ6IFJlcG9ydFRlbXBsYXRlO1xuICAgIGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIH0+O1xuICBASW5wdXQoKSBmb290ZXJUZW1wbGF0ZT86IFRlbXBsYXRlUmVmPHtcbiAgICAkaW1wbGljaXQ6IFJlcG9ydFRlbXBsYXRlO1xuICAgIGdlbmVyYXRpbmc6IGJvb2xlYW47XG4gICAgb25HZW5lcmF0ZTogKCkgPT4gdm9pZDtcbiAgICBvbkNhbmNlbDogKCkgPT4gdm9pZDtcbiAgfT47XG5cbiAgLy8g4pSA4pSAIEV2ZW50cyDilIDilIBcbiAgQE91dHB1dCgpIGdlbmVyYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxHZW5lcmF0ZVJlcG9ydFJlcXVlc3Q+KCk7XG4gIEBPdXRwdXQoKSBjbG9zZSA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgQE91dHB1dCgpIGNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBzZWxlY3RlZEZvcm1hdDogUmVwb3J0Rm9ybWF0ID0gJ1BERic7XG4gIGZpbHRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcblxuICBnZXQgYXZhaWxhYmxlRm9ybWF0cygpOiBSZXBvcnRGb3JtYXRbXSB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0T3B0aW9ucyA/PyB0aGlzLnRlbXBsYXRlPy5zdXBwb3J0ZWRGb3JtYXRzID8/IFsnUERGJywgJ0VYQ0VMJywgJ0NTViddO1xuICB9XG5cbiAgZ2V0IGRpYWxvZ1RpdGxlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudGl0bGUgfHwgYEdlbmVyYXRlOiAke3RoaXMudGVtcGxhdGU/Lm5hbWUgPz8gJ1JlcG9ydCd9YDtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlc1sndGVtcGxhdGUnXSAmJiB0aGlzLnRlbXBsYXRlKSB7XG4gICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgICBpZiAoY2hhbmdlc1snb3BlbiddICYmIHRoaXMub3BlbiAmJiB0aGlzLnRlbXBsYXRlKSB7XG4gICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQmFja2Ryb3BDbGljaygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jbG9zZU9uQmFja2Ryb3ApIHtcbiAgICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuY2FuY2VsLmVtaXQoKTtcbiAgICB0aGlzLmNsb3NlLmVtaXQoKTtcbiAgfVxuXG4gIG9uR2VuZXJhdGUoKTogdm9pZCB7XG4gICAgY29uc3QgcmVxdWVzdDogR2VuZXJhdGVSZXBvcnRSZXF1ZXN0ID0ge1xuICAgICAgcmVwb3J0VHlwZTogdGhpcy50ZW1wbGF0ZS50eXBlLFxuICAgICAgcmVwb3J0Rm9ybWF0OiB0aGlzLnNlbGVjdGVkRm9ybWF0LFxuICAgICAgZmlsdGVyczogeyAuLi50aGlzLmZpbHRlcnMgfSxcbiAgICB9O1xuICAgIHRoaXMuZ2VuZXJhdGUuZW1pdChyZXF1ZXN0KTtcbiAgfVxuXG4gIG9uRmlsdGVyQ2hhbmdlKGtleTogc3RyaW5nLCB2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5maWx0ZXJzW2tleV0gPSB2YWx1ZTtcbiAgfVxuXG4gIHRyYWNrQnlGaWx0ZXIoX2luZGV4OiBudW1iZXIsIGZpbHRlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gZmlsdGVyO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RlZEZvcm1hdCA9IHRoaXMuYXZhaWxhYmxlRm9ybWF0c1swXSA/PyAnUERGJztcbiAgICB0aGlzLmZpbHRlcnMgPSB7fTtcbiAgICBpZiAodGhpcy50ZW1wbGF0ZT8uYXZhaWxhYmxlRmlsdGVycykge1xuICAgICAgZm9yIChjb25zdCBmIG9mIHRoaXMudGVtcGxhdGUuYXZhaWxhYmxlRmlsdGVycykge1xuICAgICAgICB0aGlzLmZpbHRlcnNbZl0gPSAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0Z20tZGlhbG9nLWJhY2tkcm9wXCIgKm5nSWY9XCJvcGVuXCIgW25nQ2xhc3NdPVwiY29udGFpbmVyQ2xhc3NcIiAoY2xpY2spPVwib25CYWNrZHJvcENsaWNrKClcIj5cbiAgPGRpdiBjbGFzcz1cInRnbS1kaWFsb2dcIiBbbmdDbGFzc109XCJkaWFsb2dDbGFzc1wiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIj5cbiAgICA8IS0tIEhlYWRlciAtLT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGVhZGVyVGVtcGxhdGU7IGVsc2UgZGVmYXVsdEhlYWRlclwiPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImhlYWRlclRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdGVtcGxhdGUgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEhlYWRlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tZGlhbG9nX19oZWFkZXJcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwidGdtLWRpYWxvZ19fdGl0bGVcIj57eyBkaWFsb2dUaXRsZSB9fTwvaDM+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ0Z20tZGlhbG9nX19jbG9zZVwiIChjbGljayk9XCJvbkNhbmNlbCgpXCIgdHlwZT1cImJ1dHRvblwiPiZ0aW1lczs8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICA8ZGl2IGNsYXNzPVwidGdtLWRpYWxvZ19fYm9keVwiPlxuICAgICAgPCEtLSBGb3JtYXQgU2VsZWN0aW9uIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInRnbS1mb3JtLWdyb3VwXCI+XG4gICAgICAgIDxsYWJlbCBjbGFzcz1cInRnbS1mb3JtLWxhYmVsXCI+e3sgZm9ybWF0TGFiZWwgfX08L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGdtLXJhZGlvLWdyb3VwXCI+XG4gICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGdtLXJhZGlvXCIgKm5nRm9yPVwibGV0IGZtdCBvZiBhdmFpbGFibGVGb3JtYXRzXCI+XG4gICAgICAgICAgICA8aW5wdXQgdHlwZT1cInJhZGlvXCIgW3ZhbHVlXT1cImZtdFwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWRGb3JtYXRcIiBuYW1lPVwicmVwb3J0Rm9ybWF0XCIgLz5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGdtLXJhZGlvX19sYWJlbFwiPnt7IGZtdCB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIEZpbHRlcnMgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGVtcGxhdGU/LmF2YWlsYWJsZUZpbHRlcnM/Lmxlbmd0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidGdtLWZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJ0Z20tZm9ybS1sYWJlbFwiPnt7IGZpbHRlcnNMYWJlbCB9fTwvbGFiZWw+XG5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmlsdGVyc1RlbXBsYXRlOyBlbHNlIGRlZmF1bHRGaWx0ZXJzXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsdGVyc1RlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogdGVtcGxhdGUsIGZpbHRlcnM6IGZpbHRlcnMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNkZWZhdWx0RmlsdGVycz5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tZmlsdGVycy1ncmlkXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tZmlsdGVyLWZpZWxkXCIgKm5nRm9yPVwibGV0IGZpbHRlciBvZiB0ZW1wbGF0ZS5hdmFpbGFibGVGaWx0ZXJzOyB0cmFja0J5OiB0cmFja0J5RmlsdGVyXCI+XG4gICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidGdtLWZpbHRlci1maWVsZF9fbGFiZWxcIj57eyBmaWx0ZXIgfX08L2xhYmVsPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0Z20taW5wdXRcIlxuICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidFbnRlciAnICsgZmlsdGVyXCJcbiAgICAgICAgICAgICAgICAgIFtuZ01vZGVsXT1cImZpbHRlcnNbZmlsdGVyXVwiXG4gICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkZpbHRlckNoYW5nZShmaWx0ZXIsICRldmVudClcIlxuICAgICAgICAgICAgICAgICAgW2F0dHIubmFtZV09XCInZmlsdGVyXycgKyBmaWx0ZXJcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cblxuICAgIDwhLS0gRm9vdGVyIC0tPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJmb290ZXJUZW1wbGF0ZTsgZWxzZSBkZWZhdWx0Rm9vdGVyXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZm9vdGVyVGVtcGxhdGU7IGNvbnRleHQ6IHtcbiAgICAgICAgJGltcGxpY2l0OiB0ZW1wbGF0ZSxcbiAgICAgICAgZ2VuZXJhdGluZzogZ2VuZXJhdGluZyxcbiAgICAgICAgb25HZW5lcmF0ZTogb25HZW5lcmF0ZS5iaW5kKHRoaXMpLFxuICAgICAgICBvbkNhbmNlbDogb25DYW5jZWwuYmluZCh0aGlzKVxuICAgICAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEZvb3Rlcj5cbiAgICAgIDxkaXYgY2xhc3M9XCJ0Z20tZGlhbG9nX19mb290ZXJcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRnbS1idG4gdGdtLWJ0bi0tc2Vjb25kYXJ5XCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImdlbmVyYXRpbmdcIj5cbiAgICAgICAgICB7eyBjYW5jZWxCdXR0b25MYWJlbCB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRnbS1idG4gdGdtLWJ0bi0tcHJpbWFyeVwiIChjbGljayk9XCJvbkdlbmVyYXRlKClcIiB0eXBlPVwiYnV0dG9uXCIgW2Rpc2FibGVkXT1cImdlbmVyYXRpbmdcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRnbS1zcGlubmVyIHRnbS1zcGlubmVyLS1zbVwiICpuZ0lmPVwiZ2VuZXJhdGluZ1wiPjwvc3Bhbj5cbiAgICAgICAgICB7eyBnZW5lcmF0ZUJ1dHRvbkxhYmVsIH19XG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
|