@mj-biz-apps/forms-ng 0.0.0 → 0.2.0
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/dist/lib/builder/builder-models.d.ts +27 -0
- package/dist/lib/builder/builder-models.d.ts.map +1 -0
- package/dist/lib/builder/builder-models.js +15 -0
- package/dist/lib/builder/builder-models.js.map +1 -0
- package/dist/lib/builder/builder-state.service.d.ts +48 -0
- package/dist/lib/builder/builder-state.service.d.ts.map +1 -0
- package/dist/lib/builder/builder-state.service.js +231 -0
- package/dist/lib/builder/builder-state.service.js.map +1 -0
- package/dist/lib/builder/builder-styles.d.ts +12 -0
- package/dist/lib/builder/builder-styles.d.ts.map +1 -0
- package/dist/lib/builder/builder-styles.js +74 -0
- package/dist/lib/builder/builder-styles.js.map +1 -0
- package/dist/lib/builder/conditional-rule-editor.component.d.ts +53 -0
- package/dist/lib/builder/conditional-rule-editor.component.d.ts.map +1 -0
- package/dist/lib/builder/conditional-rule-editor.component.js +282 -0
- package/dist/lib/builder/conditional-rule-editor.component.js.map +1 -0
- package/dist/lib/builder/design-panel.component.d.ts +71 -0
- package/dist/lib/builder/design-panel.component.d.ts.map +1 -0
- package/dist/lib/builder/design-panel.component.js +530 -0
- package/dist/lib/builder/design-panel.component.js.map +1 -0
- package/dist/lib/builder/design-panel.styles.d.ts +10 -0
- package/dist/lib/builder/design-panel.styles.d.ts.map +1 -0
- package/dist/lib/builder/design-panel.styles.js +78 -0
- package/dist/lib/builder/design-panel.styles.js.map +1 -0
- package/dist/lib/builder/design-state.service.d.ts +51 -0
- package/dist/lib/builder/design-state.service.d.ts.map +1 -0
- package/dist/lib/builder/design-state.service.js +108 -0
- package/dist/lib/builder/design-state.service.js.map +1 -0
- package/dist/lib/builder/distribution-links.d.ts +29 -0
- package/dist/lib/builder/distribution-links.d.ts.map +1 -0
- package/dist/lib/builder/distribution-links.js +53 -0
- package/dist/lib/builder/distribution-links.js.map +1 -0
- package/dist/lib/builder/distribution-manager.component.d.ts +53 -0
- package/dist/lib/builder/distribution-manager.component.d.ts.map +1 -0
- package/dist/lib/builder/distribution-manager.component.js +330 -0
- package/dist/lib/builder/distribution-manager.component.js.map +1 -0
- package/dist/lib/builder/distribution.service.d.ts +62 -0
- package/dist/lib/builder/distribution.service.d.ts.map +1 -0
- package/dist/lib/builder/distribution.service.js +140 -0
- package/dist/lib/builder/distribution.service.js.map +1 -0
- package/dist/lib/builder/entity-names.d.ts +20 -0
- package/dist/lib/builder/entity-names.d.ts.map +1 -0
- package/dist/lib/builder/entity-names.js +20 -0
- package/dist/lib/builder/entity-names.js.map +1 -0
- package/dist/lib/builder/form-builder.component.d.ts +92 -0
- package/dist/lib/builder/form-builder.component.d.ts.map +1 -0
- package/dist/lib/builder/form-builder.component.js +627 -0
- package/dist/lib/builder/form-builder.component.js.map +1 -0
- package/dist/lib/builder/form-builder.styles.d.ts +3 -0
- package/dist/lib/builder/form-builder.styles.d.ts.map +1 -0
- package/dist/lib/builder/form-builder.styles.js +94 -0
- package/dist/lib/builder/form-builder.styles.js.map +1 -0
- package/dist/lib/builder/form-preview-modal.component.d.ts +25 -0
- package/dist/lib/builder/form-preview-modal.component.d.ts.map +1 -0
- package/dist/lib/builder/form-preview-modal.component.js +90 -0
- package/dist/lib/builder/form-preview-modal.component.js.map +1 -0
- package/dist/lib/builder/index.d.ts +31 -0
- package/dist/lib/builder/index.d.ts.map +1 -0
- package/dist/lib/builder/index.js +32 -0
- package/dist/lib/builder/index.js.map +1 -0
- package/dist/lib/builder/json-fields.d.ts +14 -0
- package/dist/lib/builder/json-fields.d.ts.map +1 -0
- package/dist/lib/builder/json-fields.js +100 -0
- package/dist/lib/builder/json-fields.js.map +1 -0
- package/dist/lib/builder/publish.service.d.ts +34 -0
- package/dist/lib/builder/publish.service.d.ts.map +1 -0
- package/dist/lib/builder/publish.service.js +110 -0
- package/dist/lib/builder/publish.service.js.map +1 -0
- package/dist/lib/builder/qr-code.d.ts +26 -0
- package/dist/lib/builder/qr-code.d.ts.map +1 -0
- package/dist/lib/builder/qr-code.js +361 -0
- package/dist/lib/builder/qr-code.js.map +1 -0
- package/dist/lib/builder/question-editor.component.d.ts +41 -0
- package/dist/lib/builder/question-editor.component.d.ts.map +1 -0
- package/dist/lib/builder/question-editor.component.js +228 -0
- package/dist/lib/builder/question-editor.component.js.map +1 -0
- package/dist/lib/builder/question-type-catalog.d.ts +29 -0
- package/dist/lib/builder/question-type-catalog.d.ts.map +1 -0
- package/dist/lib/builder/question-type-catalog.js +43 -0
- package/dist/lib/builder/question-type-catalog.js.map +1 -0
- package/dist/lib/builder/reorder.d.ts +10 -0
- package/dist/lib/builder/reorder.d.ts.map +1 -0
- package/dist/lib/builder/reorder.js +18 -0
- package/dist/lib/builder/reorder.js.map +1 -0
- package/dist/lib/builder/snapshot-builder.d.ts +16 -0
- package/dist/lib/builder/snapshot-builder.d.ts.map +1 -0
- package/dist/lib/builder/snapshot-builder.js +93 -0
- package/dist/lib/builder/snapshot-builder.js.map +1 -0
- package/dist/lib/builder/style-tokens.d.ts +54 -0
- package/dist/lib/builder/style-tokens.d.ts.map +1 -0
- package/dist/lib/builder/style-tokens.js +71 -0
- package/dist/lib/builder/style-tokens.js.map +1 -0
- package/dist/lib/builder/validation-rule-editor.component.d.ts +27 -0
- package/dist/lib/builder/validation-rule-editor.component.d.ts.map +1 -0
- package/dist/lib/builder/validation-rule-editor.component.js +179 -0
- package/dist/lib/builder/validation-rule-editor.component.js.map +1 -0
- package/dist/lib/dashboard/components/distribution-chart.component.d.ts +14 -0
- package/dist/lib/dashboard/components/distribution-chart.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/distribution-chart.component.js +85 -0
- package/dist/lib/dashboard/components/distribution-chart.component.js.map +1 -0
- package/dist/lib/dashboard/components/funnel-chart.component.d.ts +14 -0
- package/dist/lib/dashboard/components/funnel-chart.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/funnel-chart.component.js +101 -0
- package/dist/lib/dashboard/components/funnel-chart.component.js.map +1 -0
- package/dist/lib/dashboard/components/question-breakdown.component.d.ts +16 -0
- package/dist/lib/dashboard/components/question-breakdown.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/question-breakdown.component.js +213 -0
- package/dist/lib/dashboard/components/question-breakdown.component.js.map +1 -0
- package/dist/lib/dashboard/components/response-detail.component.d.ts +11 -0
- package/dist/lib/dashboard/components/response-detail.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/response-detail.component.js +113 -0
- package/dist/lib/dashboard/components/response-detail.component.js.map +1 -0
- package/dist/lib/dashboard/components/response-list.component.d.ts +27 -0
- package/dist/lib/dashboard/components/response-list.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/response-list.component.js +196 -0
- package/dist/lib/dashboard/components/response-list.component.js.map +1 -0
- package/dist/lib/dashboard/components/summary-stats.component.d.ts +12 -0
- package/dist/lib/dashboard/components/summary-stats.component.d.ts.map +1 -0
- package/dist/lib/dashboard/components/summary-stats.component.js +112 -0
- package/dist/lib/dashboard/components/summary-stats.component.js.map +1 -0
- package/dist/lib/dashboard/forms-reporting-dashboard.component.d.ts +64 -0
- package/dist/lib/dashboard/forms-reporting-dashboard.component.d.ts.map +1 -0
- package/dist/lib/dashboard/forms-reporting-dashboard.component.js +397 -0
- package/dist/lib/dashboard/forms-reporting-dashboard.component.js.map +1 -0
- package/dist/lib/dashboard/index.d.ts +19 -0
- package/dist/lib/dashboard/index.d.ts.map +1 -0
- package/dist/lib/dashboard/index.js +19 -0
- package/dist/lib/dashboard/index.js.map +1 -0
- package/dist/lib/dashboard/models/reporting.model.d.ts +125 -0
- package/dist/lib/dashboard/models/reporting.model.d.ts.map +1 -0
- package/dist/lib/dashboard/models/reporting.model.js +2 -0
- package/dist/lib/dashboard/models/reporting.model.js.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting-export.service.d.ts +21 -0
- package/dist/lib/dashboard/services/forms-reporting-export.service.d.ts.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting-export.service.js +83 -0
- package/dist/lib/dashboard/services/forms-reporting-export.service.js.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting-mock.d.ts +18 -0
- package/dist/lib/dashboard/services/forms-reporting-mock.d.ts.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting-mock.js +147 -0
- package/dist/lib/dashboard/services/forms-reporting-mock.js.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting.service.d.ts +45 -0
- package/dist/lib/dashboard/services/forms-reporting.service.d.ts.map +1 -0
- package/dist/lib/dashboard/services/forms-reporting.service.js +230 -0
- package/dist/lib/dashboard/services/forms-reporting.service.js.map +1 -0
- package/dist/lib/dashboard/services/reporting-aggregations.d.ts +40 -0
- package/dist/lib/dashboard/services/reporting-aggregations.d.ts.map +1 -0
- package/dist/lib/dashboard/services/reporting-aggregations.js +379 -0
- package/dist/lib/dashboard/services/reporting-aggregations.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js +104 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddress/mjbizappscommonaddress.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.js +83 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressLink/mjbizappscommonaddresslink.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js +96 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonAddressType/mjbizappscommonaddresstype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js +83 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactMethod/mjbizappscommoncontactmethod.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js +96 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonContactType/mjbizappscommoncontacttype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js +172 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganization/mjbizappscommonorganization.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js +90 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonOrganizationType/mjbizappscommonorganizationtype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js +274 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonPerson/mjbizappscommonperson.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js +91 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationship/mjbizappscommonrelationship.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js +100 -0
- package/dist/lib/generated/Entities/mjBizAppsCommonRelationshipType/mjbizappscommonrelationshiptype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.js +174 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsForm/mjbizappsformsform.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.js +118 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormCategory/mjbizappsformsformcategory.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.js +93 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormDistribution/mjbizappsformsformdistribution.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.js +96 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormPage/mjbizappsformsformpage.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.js +132 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestion/mjbizappsformsformquestion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.js +77 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormQuestionOption/mjbizappsformsformquestionoption.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.js +108 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponse/mjbizappsformsformresponse.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.js +99 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormResponseAnswer/mjbizappsformsformresponseanswer.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.js +100 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormStyle/mjbizappsformsformstyle.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.js +96 -0
- package/dist/lib/generated/Entities/mjBizAppsFormsFormVersion/mjbizappsformsformversion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.js +274 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTask/mjbizappstaskstask.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.js +67 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskActivity/mjbizappstaskstaskactivity.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.js +90 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskAssignment/mjbizappstaskstaskassignment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.js +124 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskCategory/mjbizappstaskstaskcategory.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.js +86 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskComment/mjbizappstaskstaskcomment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.js +67 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecision/mjbizappstaskstaskdecision.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.js +86 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDecisionOutcome/mjbizappstaskstaskdecisionoutcome.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.js +61 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskDependency/mjbizappstaskstaskdependency.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.js +63 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskLink/mjbizappstaskstasklink.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.js +69 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationConfig/mjbizappstaskstasknotificationconfig.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.js +63 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskNotificationLog/mjbizappstaskstasknotificationlog.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.js +98 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskRole/mjbizappstaskstaskrole.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.js +80 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTag/mjbizappstaskstasktag.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.js +59 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTagLink/mjbizappstaskstasktaglink.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.js +84 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplate/mjbizappstaskstasktemplate.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.js +146 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItem/mjbizappstaskstasktemplateitem.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.js +61 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemDependency/mjbizappstaskstasktemplateitemdependency.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.js +59 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskTemplateItemRole/mjbizappstaskstasktemplateitemrole.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.js +132 -0
- package/dist/lib/generated/Entities/mjBizAppsTasksTaskType/mjbizappstaskstasktype.form.component.js.map +1 -0
- package/dist/lib/generated/class-registrations-manifest.d.ts +6 -0
- package/dist/lib/generated/class-registrations-manifest.d.ts.map +1 -0
- package/dist/lib/generated/class-registrations-manifest.js +6 -0
- package/dist/lib/generated/class-registrations-manifest.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +61 -0
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -0
- package/dist/lib/generated/generated-forms.module.js +207 -0
- package/dist/lib/generated/generated-forms.module.js.map +1 -0
- package/dist/lib/home/forms-home-dashboard.component.d.ts +61 -0
- package/dist/lib/home/forms-home-dashboard.component.d.ts.map +1 -0
- package/dist/lib/home/forms-home-dashboard.component.js +379 -0
- package/dist/lib/home/forms-home-dashboard.component.js.map +1 -0
- package/dist/lib/home/forms-home.service.d.ts +24 -0
- package/dist/lib/home/forms-home.service.d.ts.map +1 -0
- package/dist/lib/home/forms-home.service.js +92 -0
- package/dist/lib/home/forms-home.service.js.map +1 -0
- package/dist/lib/home/home-aggregations.d.ts +23 -0
- package/dist/lib/home/home-aggregations.d.ts.map +1 -0
- package/dist/lib/home/home-aggregations.js +64 -0
- package/dist/lib/home/home-aggregations.js.map +1 -0
- package/dist/lib/home/home-models.d.ts +60 -0
- package/dist/lib/home/home-models.d.ts.map +1 -0
- package/dist/lib/home/home-models.js +34 -0
- package/dist/lib/home/home-models.js.map +1 -0
- package/dist/lib/home/index.d.ts +13 -0
- package/dist/lib/home/index.d.ts.map +1 -0
- package/dist/lib/home/index.js +13 -0
- package/dist/lib/home/index.js.map +1 -0
- package/dist/lib/widget/api/form-upload.service.d.ts +41 -0
- package/dist/lib/widget/api/form-upload.service.d.ts.map +1 -0
- package/dist/lib/widget/api/form-upload.service.js +124 -0
- package/dist/lib/widget/api/form-upload.service.js.map +1 -0
- package/dist/lib/widget/api/forms-api.config.d.ts +55 -0
- package/dist/lib/widget/api/forms-api.config.d.ts.map +1 -0
- package/dist/lib/widget/api/forms-api.config.js +40 -0
- package/dist/lib/widget/api/forms-api.config.js.map +1 -0
- package/dist/lib/widget/api/forms-api.graphql.service.d.ts +20 -0
- package/dist/lib/widget/api/forms-api.graphql.service.d.ts.map +1 -0
- package/dist/lib/widget/api/forms-api.graphql.service.js +96 -0
- package/dist/lib/widget/api/forms-api.graphql.service.js.map +1 -0
- package/dist/lib/widget/api/forms-api.interface.d.ts +45 -0
- package/dist/lib/widget/api/forms-api.interface.d.ts.map +1 -0
- package/dist/lib/widget/api/forms-api.interface.js +8 -0
- package/dist/lib/widget/api/forms-api.interface.js.map +1 -0
- package/dist/lib/widget/api/forms-api.mock.service.d.ts +12 -0
- package/dist/lib/widget/api/forms-api.mock.service.d.ts.map +1 -0
- package/dist/lib/widget/api/forms-api.mock.service.js +41 -0
- package/dist/lib/widget/api/forms-api.mock.service.js.map +1 -0
- package/dist/lib/widget/api/mock-form.data.d.ts +8 -0
- package/dist/lib/widget/api/mock-form.data.d.ts.map +1 -0
- package/dist/lib/widget/api/mock-form.data.js +192 -0
- package/dist/lib/widget/api/mock-form.data.js.map +1 -0
- package/dist/lib/widget/api/submission-mapping.d.ts +60 -0
- package/dist/lib/widget/api/submission-mapping.d.ts.map +1 -0
- package/dist/lib/widget/api/submission-mapping.js +47 -0
- package/dist/lib/widget/api/submission-mapping.js.map +1 -0
- package/dist/lib/widget/components/form-one-question.component.d.ts +43 -0
- package/dist/lib/widget/components/form-one-question.component.d.ts.map +1 -0
- package/dist/lib/widget/components/form-one-question.component.js +194 -0
- package/dist/lib/widget/components/form-one-question.component.js.map +1 -0
- package/dist/lib/widget/components/form-progress.component.d.ts +9 -0
- package/dist/lib/widget/components/form-progress.component.d.ts.map +1 -0
- package/dist/lib/widget/components/form-progress.component.js +47 -0
- package/dist/lib/widget/components/form-progress.component.js.map +1 -0
- package/dist/lib/widget/components/form-scroll.component.d.ts +23 -0
- package/dist/lib/widget/components/form-scroll.component.d.ts.map +1 -0
- package/dist/lib/widget/components/form-scroll.component.js +132 -0
- package/dist/lib/widget/components/form-scroll.component.js.map +1 -0
- package/dist/lib/widget/components/questions/form-question.component.d.ts +68 -0
- package/dist/lib/widget/components/questions/form-question.component.d.ts.map +1 -0
- package/dist/lib/widget/components/questions/form-question.component.js +541 -0
- package/dist/lib/widget/components/questions/form-question.component.js.map +1 -0
- package/dist/lib/widget/components/questions/input-mode.d.ts +13 -0
- package/dist/lib/widget/components/questions/input-mode.d.ts.map +1 -0
- package/dist/lib/widget/components/questions/input-mode.js +42 -0
- package/dist/lib/widget/components/questions/input-mode.js.map +1 -0
- package/dist/lib/widget/components/turnstile-challenge.component.d.ts +52 -0
- package/dist/lib/widget/components/turnstile-challenge.component.d.ts.map +1 -0
- package/dist/lib/widget/components/turnstile-challenge.component.js +123 -0
- package/dist/lib/widget/components/turnstile-challenge.component.js.map +1 -0
- package/dist/lib/widget/core/answer-value.d.ts +17 -0
- package/dist/lib/widget/core/answer-value.d.ts.map +1 -0
- package/dist/lib/widget/core/answer-value.js +41 -0
- package/dist/lib/widget/core/answer-value.js.map +1 -0
- package/dist/lib/widget/core/autosave-controller.d.ts +65 -0
- package/dist/lib/widget/core/autosave-controller.d.ts.map +1 -0
- package/dist/lib/widget/core/autosave-controller.js +134 -0
- package/dist/lib/widget/core/autosave-controller.js.map +1 -0
- package/dist/lib/widget/core/client-id.d.ts +17 -0
- package/dist/lib/widget/core/client-id.d.ts.map +1 -0
- package/dist/lib/widget/core/client-id.js +52 -0
- package/dist/lib/widget/core/client-id.js.map +1 -0
- package/dist/lib/widget/core/form-runtime.d.ts +34 -0
- package/dist/lib/widget/core/form-runtime.d.ts.map +1 -0
- package/dist/lib/widget/core/form-runtime.js +123 -0
- package/dist/lib/widget/core/form-runtime.js.map +1 -0
- package/dist/lib/widget/core/one-question-stepper.d.ts +20 -0
- package/dist/lib/widget/core/one-question-stepper.d.ts.map +1 -0
- package/dist/lib/widget/core/one-question-stepper.js +23 -0
- package/dist/lib/widget/core/one-question-stepper.js.map +1 -0
- package/dist/lib/widget/core/submit-phase.d.ts +31 -0
- package/dist/lib/widget/core/submit-phase.d.ts.map +1 -0
- package/dist/lib/widget/core/submit-phase.js +21 -0
- package/dist/lib/widget/core/submit-phase.js.map +1 -0
- package/dist/lib/widget/core/theming.d.ts +17 -0
- package/dist/lib/widget/core/theming.d.ts.map +1 -0
- package/dist/lib/widget/core/theming.js +36 -0
- package/dist/lib/widget/core/theming.js.map +1 -0
- package/dist/lib/widget/core/turnstile-gate.d.ts +42 -0
- package/dist/lib/widget/core/turnstile-gate.d.ts.map +1 -0
- package/dist/lib/widget/core/turnstile-gate.js +61 -0
- package/dist/lib/widget/core/turnstile-gate.js.map +1 -0
- package/dist/lib/widget/core/turnstile-loader.d.ts +34 -0
- package/dist/lib/widget/core/turnstile-loader.d.ts.map +1 -0
- package/dist/lib/widget/core/turnstile-loader.js +68 -0
- package/dist/lib/widget/core/turnstile-loader.js.map +1 -0
- package/dist/lib/widget/core/validation.d.ts +19 -0
- package/dist/lib/widget/core/validation.d.ts.map +1 -0
- package/dist/lib/widget/core/validation.js +105 -0
- package/dist/lib/widget/core/validation.js.map +1 -0
- package/dist/lib/widget/index.d.ts +27 -0
- package/dist/lib/widget/index.d.ts.map +1 -0
- package/dist/lib/widget/index.js +30 -0
- package/dist/lib/widget/index.js.map +1 -0
- package/dist/lib/widget/mj-form.component.d.ts +114 -0
- package/dist/lib/widget/mj-form.component.d.ts.map +1 -0
- package/dist/lib/widget/mj-form.component.js +428 -0
- package/dist/lib/widget/mj-form.component.js.map +1 -0
- package/dist/lib/widget/register-element.d.ts +8 -0
- package/dist/lib/widget/register-element.d.ts.map +1 -0
- package/dist/lib/widget/register-element.js +98 -0
- package/dist/lib/widget/register-element.js.map +1 -0
- package/dist/public-api.d.ts +23 -0
- package/dist/public-api.d.ts.map +1 -0
- package/dist/public-api.js +33 -0
- package/dist/public-api.js.map +1 -0
- package/dist/widget-entry.d.ts +2 -0
- package/dist/widget-entry.d.ts.map +1 -0
- package/dist/widget-entry.js +20 -0
- package/dist/widget-entry.js.map +1 -0
- package/package.json +53 -5
- package/README.md +0 -3
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/** Top-line stat cards: total responses, completion rate, avg time, last submit. */
|
|
4
|
+
export class FormsSummaryStatsComponent {
|
|
5
|
+
stats;
|
|
6
|
+
pct(fraction) {
|
|
7
|
+
return `${Math.round(fraction * 100)}%`;
|
|
8
|
+
}
|
|
9
|
+
get durationLabel() {
|
|
10
|
+
const secs = this.stats.averageCompletionSeconds;
|
|
11
|
+
if (secs === null)
|
|
12
|
+
return '—';
|
|
13
|
+
if (secs < 60)
|
|
14
|
+
return `${Math.round(secs)}s`;
|
|
15
|
+
const mins = secs / 60;
|
|
16
|
+
if (mins < 60)
|
|
17
|
+
return `${mins.toFixed(1)}m`;
|
|
18
|
+
return `${(mins / 60).toFixed(1)}h`;
|
|
19
|
+
}
|
|
20
|
+
get lastLabel() {
|
|
21
|
+
const d = this.stats.lastSubmittedAt;
|
|
22
|
+
if (!d)
|
|
23
|
+
return '—';
|
|
24
|
+
return d.toLocaleDateString();
|
|
25
|
+
}
|
|
26
|
+
static ɵfac = function FormsSummaryStatsComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormsSummaryStatsComponent)(); };
|
|
27
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormsSummaryStatsComponent, selectors: [["mj-forms-summary-stats"]], inputs: { stats: "stats" }, decls: 31, vars: 6, consts: [[1, "stat-grid"], [1, "stat-card"], [1, "stat-icon"], [1, "fa-solid", "fa-inbox"], [1, "stat-value"], [1, "stat-label"], [1, "stat-sub"], [1, "fa-solid", "fa-circle-check"], [1, "fa-solid", "fa-clock"], [1, "fa-solid", "fa-calendar-day"]], template: function FormsSummaryStatsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
28
|
+
i0.ɵɵdomElementStart(0, "div", 0)(1, "div", 1)(2, "span", 2);
|
|
29
|
+
i0.ɵɵdomElement(3, "i", 3);
|
|
30
|
+
i0.ɵɵdomElementEnd();
|
|
31
|
+
i0.ɵɵdomElementStart(4, "span", 4);
|
|
32
|
+
i0.ɵɵtext(5);
|
|
33
|
+
i0.ɵɵdomElementEnd();
|
|
34
|
+
i0.ɵɵdomElementStart(6, "span", 5);
|
|
35
|
+
i0.ɵɵtext(7, "Responses");
|
|
36
|
+
i0.ɵɵdomElementEnd();
|
|
37
|
+
i0.ɵɵdomElementStart(8, "span", 6);
|
|
38
|
+
i0.ɵɵtext(9);
|
|
39
|
+
i0.ɵɵdomElementEnd()();
|
|
40
|
+
i0.ɵɵdomElementStart(10, "div", 1)(11, "span", 2);
|
|
41
|
+
i0.ɵɵdomElement(12, "i", 7);
|
|
42
|
+
i0.ɵɵdomElementEnd();
|
|
43
|
+
i0.ɵɵdomElementStart(13, "span", 4);
|
|
44
|
+
i0.ɵɵtext(14);
|
|
45
|
+
i0.ɵɵdomElementEnd();
|
|
46
|
+
i0.ɵɵdomElementStart(15, "span", 5);
|
|
47
|
+
i0.ɵɵtext(16, "Completion rate");
|
|
48
|
+
i0.ɵɵdomElementEnd()();
|
|
49
|
+
i0.ɵɵdomElementStart(17, "div", 1)(18, "span", 2);
|
|
50
|
+
i0.ɵɵdomElement(19, "i", 8);
|
|
51
|
+
i0.ɵɵdomElementEnd();
|
|
52
|
+
i0.ɵɵdomElementStart(20, "span", 4);
|
|
53
|
+
i0.ɵɵtext(21);
|
|
54
|
+
i0.ɵɵdomElementEnd();
|
|
55
|
+
i0.ɵɵdomElementStart(22, "span", 5);
|
|
56
|
+
i0.ɵɵtext(23, "Avg. time to complete");
|
|
57
|
+
i0.ɵɵdomElementEnd()();
|
|
58
|
+
i0.ɵɵdomElementStart(24, "div", 1)(25, "span", 2);
|
|
59
|
+
i0.ɵɵdomElement(26, "i", 9);
|
|
60
|
+
i0.ɵɵdomElementEnd();
|
|
61
|
+
i0.ɵɵdomElementStart(27, "span", 4);
|
|
62
|
+
i0.ɵɵtext(28);
|
|
63
|
+
i0.ɵɵdomElementEnd();
|
|
64
|
+
i0.ɵɵdomElementStart(29, "span", 5);
|
|
65
|
+
i0.ɵɵtext(30, "Last response");
|
|
66
|
+
i0.ɵɵdomElementEnd()()();
|
|
67
|
+
} if (rf & 2) {
|
|
68
|
+
i0.ɵɵadvance(5);
|
|
69
|
+
i0.ɵɵtextInterpolate(ctx.stats.totalResponses);
|
|
70
|
+
i0.ɵɵadvance(4);
|
|
71
|
+
i0.ɵɵtextInterpolate2("", ctx.stats.completeResponses, " complete \u00B7 ", ctx.stats.partialResponses, " partial");
|
|
72
|
+
i0.ɵɵadvance(5);
|
|
73
|
+
i0.ɵɵtextInterpolate(ctx.pct(ctx.stats.completionRate));
|
|
74
|
+
i0.ɵɵadvance(7);
|
|
75
|
+
i0.ɵɵtextInterpolate(ctx.durationLabel);
|
|
76
|
+
i0.ɵɵadvance(7);
|
|
77
|
+
i0.ɵɵtextInterpolate(ctx.lastLabel);
|
|
78
|
+
} }, styles: ["[_nghost-%COMP%] {\n display: block;\n }\n .stat-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: var(--mj-space-3);\n }\n .stat-card[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n padding: var(--mj-space-4);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-sm);\n }\n .stat-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n .stat-value[_ngcontent-%COMP%] {\n font-size: 26px;\n font-weight: 700;\n color: var(--mj-text-primary);\n font-variant-numeric: tabular-nums;\n }\n .stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n .stat-sub[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-muted);\n }"], changeDetection: 0 });
|
|
79
|
+
}
|
|
80
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormsSummaryStatsComponent, [{
|
|
81
|
+
type: Component,
|
|
82
|
+
args: [{ selector: 'mj-forms-summary-stats', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
83
|
+
<div class="stat-grid">
|
|
84
|
+
<div class="stat-card">
|
|
85
|
+
<span class="stat-icon"><i class="fa-solid fa-inbox"></i></span>
|
|
86
|
+
<span class="stat-value">{{ stats.totalResponses }}</span>
|
|
87
|
+
<span class="stat-label">Responses</span>
|
|
88
|
+
<span class="stat-sub">{{ stats.completeResponses }} complete · {{ stats.partialResponses }} partial</span>
|
|
89
|
+
</div>
|
|
90
|
+
<div class="stat-card">
|
|
91
|
+
<span class="stat-icon"><i class="fa-solid fa-circle-check"></i></span>
|
|
92
|
+
<span class="stat-value">{{ pct(stats.completionRate) }}</span>
|
|
93
|
+
<span class="stat-label">Completion rate</span>
|
|
94
|
+
</div>
|
|
95
|
+
<div class="stat-card">
|
|
96
|
+
<span class="stat-icon"><i class="fa-solid fa-clock"></i></span>
|
|
97
|
+
<span class="stat-value">{{ durationLabel }}</span>
|
|
98
|
+
<span class="stat-label">Avg. time to complete</span>
|
|
99
|
+
</div>
|
|
100
|
+
<div class="stat-card">
|
|
101
|
+
<span class="stat-icon"><i class="fa-solid fa-calendar-day"></i></span>
|
|
102
|
+
<span class="stat-value">{{ lastLabel }}</span>
|
|
103
|
+
<span class="stat-label">Last response</span>
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
`, styles: ["\n :host {\n display: block;\n }\n .stat-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));\n gap: var(--mj-space-3);\n }\n .stat-card {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-1);\n padding: var(--mj-space-4);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-subtle);\n border-radius: var(--mj-radius-lg);\n box-shadow: var(--mj-shadow-sm);\n }\n .stat-icon {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n .stat-value {\n font-size: 26px;\n font-weight: 700;\n color: var(--mj-text-primary);\n font-variant-numeric: tabular-nums;\n }\n .stat-label {\n font-size: 12px;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.04em;\n }\n .stat-sub {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n "] }]
|
|
107
|
+
}], null, { stats: [{
|
|
108
|
+
type: Input,
|
|
109
|
+
args: [{ required: true }]
|
|
110
|
+
}] }); })();
|
|
111
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FormsSummaryStatsComponent, { className: "FormsSummaryStatsComponent", filePath: "lib/dashboard/components/summary-stats.component.ts", lineNumber: 77 }); })();
|
|
112
|
+
//# sourceMappingURL=summary-stats.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summary-stats.component.js","sourceRoot":"","sources":["../../../../src/lib/dashboard/components/summary-stats.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;AAG1E,oFAAoF;AAyEpF,MAAM,OAAO,0BAA0B;IACV,KAAK,CAAoB;IAE7C,GAAG,CAAC,QAAgB;QACzB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC;IAC1C,CAAC;IAED,IAAW,aAAa;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC;QACjD,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,GAAG,CAAC;QAC9B,IAAI,IAAI,GAAG,EAAE;YAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;QACvB,IAAI,IAAI,GAAG,EAAE;YAAE,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;QAC5C,OAAO,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtC,CAAC;IAED,IAAW,SAAS;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QACrC,IAAI,CAAC,CAAC;YAAE,OAAO,GAAG,CAAC;QACnB,OAAO,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAChC,CAAC;oHApBU,0BAA0B;6DAA1B,0BAA0B;YAjE/B,AADF,AADF,iCAAuB,aACE,cACG;YAAA,0BAAiC;YAAA,oBAAO;YAChE,kCAAyB;YAAA,YAA0B;YAAA,oBAAO;YAC1D,kCAAyB;YAAA,yBAAS;YAAA,oBAAO;YACzC,kCAAuB;YAAA,YAA6E;YACtG,AADsG,oBAAO,EACvG;YAEJ,AADF,kCAAuB,eACG;YAAA,2BAAwC;YAAA,oBAAO;YACvE,mCAAyB;YAAA,aAA+B;YAAA,oBAAO;YAC/D,mCAAyB;YAAA,gCAAe;YAC1C,AAD0C,oBAAO,EAC3C;YAEJ,AADF,kCAAuB,eACG;YAAA,2BAAiC;YAAA,oBAAO;YAChE,mCAAyB;YAAA,aAAmB;YAAA,oBAAO;YACnD,mCAAyB;YAAA,sCAAqB;YAChD,AADgD,oBAAO,EACjD;YAEJ,AADF,kCAAuB,eACG;YAAA,2BAAwC;YAAA,oBAAO;YACvE,mCAAyB;YAAA,aAAe;YAAA,oBAAO;YAC/C,mCAAyB;YAAA,8BAAa;YAE1C,AADE,AADwC,oBAAO,EACzC,EACF;;YAnBuB,eAA0B;YAA1B,8CAA0B;YAE5B,eAA6E;YAA7E,mHAA6E;YAI3E,eAA+B;YAA/B,uDAA+B;YAK/B,eAAmB;YAAnB,uCAAmB;YAKnB,eAAe;YAAf,mCAAe;;;iFAgDnC,0BAA0B;cAxEtC,SAAS;2BACE,wBAAwB,cACtB,IAAI,mBACC,uBAAuB,CAAC,MAAM,YACrC;;;;;;;;;;;;;;;;;;;;;;;;GAwBT;;kBA6CA,KAAK;mBAAC,EAAE,QAAQ,EAAE,IAAI,EAAE;;kFADd,0BAA0B"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { BaseDashboard } from '@memberjunction/ng-shared';
|
|
2
|
+
import type { ResourceData } from '@memberjunction/core-entities';
|
|
3
|
+
import type { ExportFormat } from '@memberjunction/export-engine';
|
|
4
|
+
import type { FormReportData, ReportableForm, ResponseDetail } from './models/reporting.model';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
type DashboardTab = 'summary' | 'questions' | 'funnel' | 'responses';
|
|
7
|
+
/**
|
|
8
|
+
* Forms reporting dashboard (WP-F). A `BaseDashboard` subclass registered with
|
|
9
|
+
* the MJ ClassFactory under 'FormsReportingDashboard' — the matching Dashboard
|
|
10
|
+
* metadata record (DriverClass) is authored by WP-A.
|
|
11
|
+
*
|
|
12
|
+
* Standalone so the Explorer can instantiate it directly via `createComponent`.
|
|
13
|
+
* All data comes through RunView/RunViews (FormsReportingService); a seeded mock
|
|
14
|
+
* mode renders the UI before any real responses exist (toggle is a one-flag swap).
|
|
15
|
+
*/
|
|
16
|
+
export declare class FormsReportingDashboardComponent extends BaseDashboard {
|
|
17
|
+
private readonly data;
|
|
18
|
+
private readonly exporter;
|
|
19
|
+
private readonly cdr;
|
|
20
|
+
/**
|
|
21
|
+
* Live RunView/RunQuery data path is the default. Set to `true` only as an explicit
|
|
22
|
+
* dev aid (e.g. to preview the dashboard UI before any real responses exist) — the
|
|
23
|
+
* seeded mock renders the identical UI with fabricated data. Never ship `true`.
|
|
24
|
+
*/
|
|
25
|
+
useMock: boolean;
|
|
26
|
+
loading: boolean;
|
|
27
|
+
errorMessage: string | null;
|
|
28
|
+
forms: ReportableForm[];
|
|
29
|
+
selectedForm: ReportableForm | null;
|
|
30
|
+
report: FormReportData | null;
|
|
31
|
+
activeTab: DashboardTab;
|
|
32
|
+
readonly tabs: {
|
|
33
|
+
key: DashboardTab;
|
|
34
|
+
label: string;
|
|
35
|
+
icon: string;
|
|
36
|
+
}[];
|
|
37
|
+
/** Selected response for the detail view; null shows the list. */
|
|
38
|
+
responseDetail: ResponseDetail | null;
|
|
39
|
+
/** Raw answer rows for the current report, kept for export pivoting. */
|
|
40
|
+
private rawAnswers;
|
|
41
|
+
GetResourceDisplayName(_data: ResourceData): Promise<string>;
|
|
42
|
+
GetResourceIconClass(_data: ResourceData): Promise<string>;
|
|
43
|
+
protected initDashboard(): void;
|
|
44
|
+
protected loadData(): void;
|
|
45
|
+
private loadForms;
|
|
46
|
+
selectForm(form: ReportableForm): Promise<void>;
|
|
47
|
+
onFormChange(formId: string): Promise<void>;
|
|
48
|
+
setTab(tab: DashboardTab): void;
|
|
49
|
+
openResponse(responseId: string): Promise<void>;
|
|
50
|
+
closeResponse(): void;
|
|
51
|
+
export(format: ExportFormat): Promise<void>;
|
|
52
|
+
/** Loads the raw answers separately so export can pivot to a wide matrix. */
|
|
53
|
+
private loadRawAnswers;
|
|
54
|
+
/** Builds a detail view from the mock report (no extra fetch). */
|
|
55
|
+
private mockResponseDetail;
|
|
56
|
+
private mockDetailAnswers;
|
|
57
|
+
private beginLoad;
|
|
58
|
+
private endLoad;
|
|
59
|
+
private fail;
|
|
60
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<FormsReportingDashboardComponent, never>;
|
|
61
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FormsReportingDashboardComponent, "mj-forms-reporting-dashboard", never, {}, {}, never, never, true, never>;
|
|
62
|
+
}
|
|
63
|
+
export {};
|
|
64
|
+
//# sourceMappingURL=forms-reporting-dashboard.component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms-reporting-dashboard.component.d.ts","sourceRoot":"","sources":["../../../src/lib/dashboard/forms-reporting-dashboard.component.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAGlE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AASlE,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACf,MAAM,0BAA0B,CAAC;;AAQlC,KAAK,YAAY,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAErE;;;;;;;;GAQG;AACH,qBAiBa,gCAAiC,SAAQ,aAAa;IACjE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiC;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuC;IAChE,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IAEjD;;;;OAIG;IACI,OAAO,UAAS;IAEhB,OAAO,UAAS;IAChB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEnC,KAAK,EAAE,cAAc,EAAE,CAAM;IAC7B,YAAY,EAAE,cAAc,GAAG,IAAI,CAAQ;IAC3C,MAAM,EAAE,cAAc,GAAG,IAAI,CAAQ;IAErC,SAAS,EAAE,YAAY,CAAa;IAC3C,SAAgB,IAAI,EAAE;QAAE,GAAG,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAKxE;IAEF,kEAAkE;IAC3D,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAEpD,wEAAwE;IACxE,OAAO,CAAC,UAAU,CAAoD;IAEzD,sBAAsB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAInD,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhF,SAAS,CAAC,aAAa,IAAI,IAAI;IAI/B,SAAS,CAAC,QAAQ,IAAI,IAAI;YAIZ,SAAS;IAcV,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB/C,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOjD,MAAM,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAKzB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrD,aAAa,IAAI,IAAI;IAIf,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYxD,6EAA6E;YAC/D,cAAc;IAM5B,kEAAkE;IAClE,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,IAAI;yCAzKD,gCAAgC;2CAAhC,gCAAgC;CA+K5C"}
|
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject } from '@angular/core';
|
|
8
|
+
import { FormsModule } from '@angular/forms';
|
|
9
|
+
import { BaseDashboard } from '@memberjunction/ng-shared';
|
|
10
|
+
import { LogError } from '@memberjunction/core';
|
|
11
|
+
import { RegisterClass } from '@memberjunction/global';
|
|
12
|
+
import { FormsReportingService } from './services/forms-reporting.service';
|
|
13
|
+
import { FormsReportingExportService } from './services/forms-reporting-export.service';
|
|
14
|
+
import { mockReport, mockReportableForms } from './services/forms-reporting-mock';
|
|
15
|
+
import { FormsSummaryStatsComponent } from './components/summary-stats.component';
|
|
16
|
+
import { FormsQuestionBreakdownComponent } from './components/question-breakdown.component';
|
|
17
|
+
import { FormsFunnelChartComponent } from './components/funnel-chart.component';
|
|
18
|
+
import { FormsResponseListComponent } from './components/response-list.component';
|
|
19
|
+
import { FormsResponseDetailComponent } from './components/response-detail.component';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "@angular/forms";
|
|
22
|
+
const _forTrack0 = ($index, $item) => $item.formId;
|
|
23
|
+
const _forTrack1 = ($index, $item) => $item.key;
|
|
24
|
+
const _forTrack2 = ($index, $item) => $item.questionId;
|
|
25
|
+
function FormsReportingDashboardComponent_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
26
|
+
i0.ɵɵelementStart(0, "span", 5);
|
|
27
|
+
i0.ɵɵtext(1, "Sample data");
|
|
28
|
+
i0.ɵɵelementEnd();
|
|
29
|
+
} }
|
|
30
|
+
function FormsReportingDashboardComponent_Conditional_8_For_5_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
i0.ɵɵelementStart(0, "option", 17);
|
|
32
|
+
i0.ɵɵtext(1);
|
|
33
|
+
i0.ɵɵelementEnd();
|
|
34
|
+
} if (rf & 2) {
|
|
35
|
+
const f_r3 = ctx.$implicit;
|
|
36
|
+
i0.ɵɵproperty("value", f_r3.formId);
|
|
37
|
+
i0.ɵɵadvance();
|
|
38
|
+
i0.ɵɵtextInterpolate2("", f_r3.name, " (", f_r3.responseCount, ")");
|
|
39
|
+
} }
|
|
40
|
+
function FormsReportingDashboardComponent_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
41
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
42
|
+
i0.ɵɵelementStart(0, "label", 7)(1, "span", 15);
|
|
43
|
+
i0.ɵɵtext(2, "Select a form");
|
|
44
|
+
i0.ɵɵelementEnd();
|
|
45
|
+
i0.ɵɵelementStart(3, "select", 16);
|
|
46
|
+
i0.ɵɵlistener("ngModelChange", function FormsReportingDashboardComponent_Conditional_8_Template_select_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onFormChange($event)); });
|
|
47
|
+
i0.ɵɵrepeaterCreate(4, FormsReportingDashboardComponent_Conditional_8_For_5_Template, 2, 3, "option", 17, _forTrack0);
|
|
48
|
+
i0.ɵɵelementEnd()();
|
|
49
|
+
} if (rf & 2) {
|
|
50
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
51
|
+
i0.ɵɵadvance(3);
|
|
52
|
+
i0.ɵɵproperty("ngModel", ctx_r1.selectedForm == null ? null : ctx_r1.selectedForm.formId);
|
|
53
|
+
i0.ɵɵadvance();
|
|
54
|
+
i0.ɵɵrepeater(ctx_r1.forms);
|
|
55
|
+
} }
|
|
56
|
+
function FormsReportingDashboardComponent_Conditional_16_Template(rf, ctx) { if (rf & 1) {
|
|
57
|
+
i0.ɵɵelementStart(0, "div", 12);
|
|
58
|
+
i0.ɵɵelement(1, "i", 18);
|
|
59
|
+
i0.ɵɵtext(2);
|
|
60
|
+
i0.ɵɵelementEnd();
|
|
61
|
+
} if (rf & 2) {
|
|
62
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
63
|
+
i0.ɵɵadvance(2);
|
|
64
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r1.errorMessage, " ");
|
|
65
|
+
} }
|
|
66
|
+
function FormsReportingDashboardComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
67
|
+
i0.ɵɵelementStart(0, "div", 13);
|
|
68
|
+
i0.ɵɵelement(1, "i", 19);
|
|
69
|
+
i0.ɵɵtext(2, " Loading\u2026");
|
|
70
|
+
i0.ɵɵelementEnd();
|
|
71
|
+
} }
|
|
72
|
+
function FormsReportingDashboardComponent_Conditional_18_Template(rf, ctx) { if (rf & 1) {
|
|
73
|
+
i0.ɵɵelementStart(0, "div", 14);
|
|
74
|
+
i0.ɵɵelement(1, "i", 20);
|
|
75
|
+
i0.ɵɵelementStart(2, "p");
|
|
76
|
+
i0.ɵɵtext(3, "No published forms to report on yet.");
|
|
77
|
+
i0.ɵɵelementEnd()();
|
|
78
|
+
} }
|
|
79
|
+
function FormsReportingDashboardComponent_Conditional_19_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
80
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
81
|
+
i0.ɵɵelementStart(0, "button", 27);
|
|
82
|
+
i0.ɵɵlistener("click", function FormsReportingDashboardComponent_Conditional_19_For_2_Template_button_click_0_listener() { const t_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setTab(t_r5.key)); });
|
|
83
|
+
i0.ɵɵelement(1, "i");
|
|
84
|
+
i0.ɵɵtext(2);
|
|
85
|
+
i0.ɵɵelementEnd();
|
|
86
|
+
} if (rf & 2) {
|
|
87
|
+
const t_r5 = ctx.$implicit;
|
|
88
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
89
|
+
i0.ɵɵclassProp("tab--active", ctx_r1.activeTab === t_r5.key);
|
|
90
|
+
i0.ɵɵattribute("aria-selected", ctx_r1.activeTab === t_r5.key);
|
|
91
|
+
i0.ɵɵadvance();
|
|
92
|
+
i0.ɵɵclassMap(t_r5.icon);
|
|
93
|
+
i0.ɵɵadvance();
|
|
94
|
+
i0.ɵɵtextInterpolate1(" ", t_r5.label, " ");
|
|
95
|
+
} }
|
|
96
|
+
function FormsReportingDashboardComponent_Conditional_19_Case_4_Template(rf, ctx) { if (rf & 1) {
|
|
97
|
+
i0.ɵɵelement(0, "mj-forms-summary-stats", 24);
|
|
98
|
+
} if (rf & 2) {
|
|
99
|
+
const r_r6 = i0.ɵɵnextContext();
|
|
100
|
+
i0.ɵɵproperty("stats", r_r6.summary);
|
|
101
|
+
} }
|
|
102
|
+
function FormsReportingDashboardComponent_Conditional_19_Case_5_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
103
|
+
i0.ɵɵelement(0, "mj-forms-question-breakdown", 28);
|
|
104
|
+
} if (rf & 2) {
|
|
105
|
+
const b_r7 = ctx.$implicit;
|
|
106
|
+
i0.ɵɵproperty("breakdown", b_r7);
|
|
107
|
+
} }
|
|
108
|
+
function FormsReportingDashboardComponent_Conditional_19_Case_5_Template(rf, ctx) { if (rf & 1) {
|
|
109
|
+
i0.ɵɵelementStart(0, "div", 25);
|
|
110
|
+
i0.ɵɵrepeaterCreate(1, FormsReportingDashboardComponent_Conditional_19_Case_5_For_2_Template, 1, 1, "mj-forms-question-breakdown", 28, _forTrack2);
|
|
111
|
+
i0.ɵɵelementEnd();
|
|
112
|
+
} if (rf & 2) {
|
|
113
|
+
const r_r6 = i0.ɵɵnextContext();
|
|
114
|
+
i0.ɵɵadvance();
|
|
115
|
+
i0.ɵɵrepeater(r_r6.breakdowns);
|
|
116
|
+
} }
|
|
117
|
+
function FormsReportingDashboardComponent_Conditional_19_Case_6_Template(rf, ctx) { if (rf & 1) {
|
|
118
|
+
i0.ɵɵelement(0, "mj-forms-funnel-chart", 26);
|
|
119
|
+
} if (rf & 2) {
|
|
120
|
+
const r_r6 = i0.ɵɵnextContext();
|
|
121
|
+
i0.ɵɵproperty("steps", r_r6.funnel);
|
|
122
|
+
} }
|
|
123
|
+
function FormsReportingDashboardComponent_Conditional_19_Case_7_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
124
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
125
|
+
i0.ɵɵelementStart(0, "mj-forms-response-detail", 31);
|
|
126
|
+
i0.ɵɵlistener("back", function FormsReportingDashboardComponent_Conditional_19_Case_7_Conditional_0_Template_mj_forms_response_detail_back_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.closeResponse()); });
|
|
127
|
+
i0.ɵɵelementEnd();
|
|
128
|
+
} if (rf & 2) {
|
|
129
|
+
i0.ɵɵproperty("detail", ctx);
|
|
130
|
+
} }
|
|
131
|
+
function FormsReportingDashboardComponent_Conditional_19_Case_7_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
132
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
133
|
+
i0.ɵɵelementStart(0, "mj-forms-response-list", 32);
|
|
134
|
+
i0.ɵɵlistener("open", function FormsReportingDashboardComponent_Conditional_19_Case_7_Conditional_1_Template_mj_forms_response_list_open_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openResponse($event)); });
|
|
135
|
+
i0.ɵɵelementEnd();
|
|
136
|
+
} if (rf & 2) {
|
|
137
|
+
const r_r6 = i0.ɵɵnextContext(2);
|
|
138
|
+
i0.ɵɵproperty("rows", r_r6.responses);
|
|
139
|
+
} }
|
|
140
|
+
function FormsReportingDashboardComponent_Conditional_19_Case_7_Template(rf, ctx) { if (rf & 1) {
|
|
141
|
+
i0.ɵɵconditionalCreate(0, FormsReportingDashboardComponent_Conditional_19_Case_7_Conditional_0_Template, 1, 1, "mj-forms-response-detail", 29)(1, FormsReportingDashboardComponent_Conditional_19_Case_7_Conditional_1_Template, 1, 1, "mj-forms-response-list", 30);
|
|
142
|
+
} if (rf & 2) {
|
|
143
|
+
let tmp_3_0;
|
|
144
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
145
|
+
i0.ɵɵconditional((tmp_3_0 = ctx_r1.responseDetail) ? 0 : 1, tmp_3_0);
|
|
146
|
+
} }
|
|
147
|
+
function FormsReportingDashboardComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
+
i0.ɵɵelementStart(0, "nav", 21);
|
|
149
|
+
i0.ɵɵrepeaterCreate(1, FormsReportingDashboardComponent_Conditional_19_For_2_Template, 3, 6, "button", 22, _forTrack1);
|
|
150
|
+
i0.ɵɵelementEnd();
|
|
151
|
+
i0.ɵɵelementStart(3, "section", 23);
|
|
152
|
+
i0.ɵɵconditionalCreate(4, FormsReportingDashboardComponent_Conditional_19_Case_4_Template, 1, 1, "mj-forms-summary-stats", 24)(5, FormsReportingDashboardComponent_Conditional_19_Case_5_Template, 3, 0, "div", 25)(6, FormsReportingDashboardComponent_Conditional_19_Case_6_Template, 1, 1, "mj-forms-funnel-chart", 26)(7, FormsReportingDashboardComponent_Conditional_19_Case_7_Template, 2, 1);
|
|
153
|
+
i0.ɵɵelementEnd();
|
|
154
|
+
} if (rf & 2) {
|
|
155
|
+
let tmp_3_0;
|
|
156
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
157
|
+
i0.ɵɵadvance();
|
|
158
|
+
i0.ɵɵrepeater(ctx_r1.tabs);
|
|
159
|
+
i0.ɵɵadvance(3);
|
|
160
|
+
i0.ɵɵconditional((tmp_3_0 = ctx_r1.activeTab) === "summary" ? 4 : tmp_3_0 === "questions" ? 5 : tmp_3_0 === "funnel" ? 6 : tmp_3_0 === "responses" ? 7 : -1);
|
|
161
|
+
} }
|
|
162
|
+
/**
|
|
163
|
+
* Forms reporting dashboard (WP-F). A `BaseDashboard` subclass registered with
|
|
164
|
+
* the MJ ClassFactory under 'FormsReportingDashboard' — the matching Dashboard
|
|
165
|
+
* metadata record (DriverClass) is authored by WP-A.
|
|
166
|
+
*
|
|
167
|
+
* Standalone so the Explorer can instantiate it directly via `createComponent`.
|
|
168
|
+
* All data comes through RunView/RunViews (FormsReportingService); a seeded mock
|
|
169
|
+
* mode renders the UI before any real responses exist (toggle is a one-flag swap).
|
|
170
|
+
*/
|
|
171
|
+
let FormsReportingDashboardComponent = class FormsReportingDashboardComponent extends BaseDashboard {
|
|
172
|
+
data = inject(FormsReportingService);
|
|
173
|
+
exporter = inject(FormsReportingExportService);
|
|
174
|
+
cdr = inject(ChangeDetectorRef);
|
|
175
|
+
/**
|
|
176
|
+
* Live RunView/RunQuery data path is the default. Set to `true` only as an explicit
|
|
177
|
+
* dev aid (e.g. to preview the dashboard UI before any real responses exist) — the
|
|
178
|
+
* seeded mock renders the identical UI with fabricated data. Never ship `true`.
|
|
179
|
+
*/
|
|
180
|
+
useMock = false;
|
|
181
|
+
loading = false;
|
|
182
|
+
errorMessage = null;
|
|
183
|
+
forms = [];
|
|
184
|
+
selectedForm = null;
|
|
185
|
+
report = null;
|
|
186
|
+
activeTab = 'summary';
|
|
187
|
+
tabs = [
|
|
188
|
+
{ key: 'summary', label: 'Summary', icon: 'fa-solid fa-gauge' },
|
|
189
|
+
{ key: 'questions', label: 'Questions', icon: 'fa-solid fa-list-ul' },
|
|
190
|
+
{ key: 'funnel', label: 'Funnel', icon: 'fa-solid fa-filter' },
|
|
191
|
+
{ key: 'responses', label: 'Responses', icon: 'fa-solid fa-table-list' },
|
|
192
|
+
];
|
|
193
|
+
/** Selected response for the detail view; null shows the list. */
|
|
194
|
+
responseDetail = null;
|
|
195
|
+
/** Raw answer rows for the current report, kept for export pivoting. */
|
|
196
|
+
rawAnswers = [];
|
|
197
|
+
async GetResourceDisplayName(_data) {
|
|
198
|
+
return 'Forms Reporting';
|
|
199
|
+
}
|
|
200
|
+
async GetResourceIconClass(_data) {
|
|
201
|
+
return 'fa-solid fa-chart-column';
|
|
202
|
+
}
|
|
203
|
+
initDashboard() {
|
|
204
|
+
// Nothing to set up beyond the injected services.
|
|
205
|
+
}
|
|
206
|
+
loadData() {
|
|
207
|
+
void this.loadForms();
|
|
208
|
+
}
|
|
209
|
+
async loadForms() {
|
|
210
|
+
this.beginLoad();
|
|
211
|
+
try {
|
|
212
|
+
this.forms = this.useMock ? mockReportableForms() : await this.data.loadReportableForms();
|
|
213
|
+
if (this.forms.length > 0) {
|
|
214
|
+
await this.selectForm(this.forms[0]);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
this.fail(err, 'Failed to load forms.');
|
|
219
|
+
}
|
|
220
|
+
finally {
|
|
221
|
+
this.endLoad();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
async selectForm(form) {
|
|
225
|
+
this.selectedForm = form;
|
|
226
|
+
this.responseDetail = null;
|
|
227
|
+
this.activeTab = 'summary';
|
|
228
|
+
this.beginLoad();
|
|
229
|
+
try {
|
|
230
|
+
if (this.useMock) {
|
|
231
|
+
this.report = mockReport();
|
|
232
|
+
this.rawAnswers = [];
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
this.report = await this.data.loadReport(form);
|
|
236
|
+
this.rawAnswers = await this.loadRawAnswers(form.formId);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch (err) {
|
|
240
|
+
this.fail(err, 'Failed to load the report.');
|
|
241
|
+
}
|
|
242
|
+
finally {
|
|
243
|
+
this.endLoad();
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
async onFormChange(formId) {
|
|
247
|
+
const form = this.forms.find((f) => f.formId === formId);
|
|
248
|
+
if (form) {
|
|
249
|
+
await this.selectForm(form);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
setTab(tab) {
|
|
253
|
+
this.activeTab = tab;
|
|
254
|
+
this.responseDetail = null;
|
|
255
|
+
}
|
|
256
|
+
async openResponse(responseId) {
|
|
257
|
+
if (!this.report)
|
|
258
|
+
return;
|
|
259
|
+
this.beginLoad();
|
|
260
|
+
try {
|
|
261
|
+
this.responseDetail = this.useMock
|
|
262
|
+
? this.mockResponseDetail(responseId)
|
|
263
|
+
: await this.data.loadResponseDetail(responseId, this.report.questions);
|
|
264
|
+
}
|
|
265
|
+
catch (err) {
|
|
266
|
+
this.fail(err, 'Failed to load the response.');
|
|
267
|
+
}
|
|
268
|
+
finally {
|
|
269
|
+
this.endLoad();
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
closeResponse() {
|
|
273
|
+
this.responseDetail = null;
|
|
274
|
+
}
|
|
275
|
+
async export(format) {
|
|
276
|
+
if (!this.report)
|
|
277
|
+
return;
|
|
278
|
+
this.beginLoad();
|
|
279
|
+
try {
|
|
280
|
+
await this.exporter.exportResponses(this.report, this.rawAnswers, format);
|
|
281
|
+
}
|
|
282
|
+
catch (err) {
|
|
283
|
+
this.fail(err, 'Export failed.');
|
|
284
|
+
}
|
|
285
|
+
finally {
|
|
286
|
+
this.endLoad();
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/** Loads the raw answers separately so export can pivot to a wide matrix. */
|
|
290
|
+
async loadRawAnswers(formId) {
|
|
291
|
+
return this.data.loadAnswersForForm(formId);
|
|
292
|
+
}
|
|
293
|
+
/** Builds a detail view from the mock report (no extra fetch). */
|
|
294
|
+
mockResponseDetail(responseId) {
|
|
295
|
+
const row = this.report?.responses.find((r) => r.responseId === responseId);
|
|
296
|
+
return {
|
|
297
|
+
responseId,
|
|
298
|
+
status: row?.status ?? 'Complete',
|
|
299
|
+
startedAt: row?.startedAt ?? null,
|
|
300
|
+
submittedAt: row?.submittedAt ?? null,
|
|
301
|
+
respondent: row?.respondent ?? 'Anonymous',
|
|
302
|
+
answers: this.mockDetailAnswers(),
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
mockDetailAnswers() {
|
|
306
|
+
const qs = this.report?.questions ?? [];
|
|
307
|
+
return qs
|
|
308
|
+
.filter((q) => q.type !== 'Statement')
|
|
309
|
+
.slice(0, 4)
|
|
310
|
+
.map((q) => ({
|
|
311
|
+
questionId: q.id,
|
|
312
|
+
prompt: q.prompt,
|
|
313
|
+
type: q.type,
|
|
314
|
+
displayValue: 'Sample answer',
|
|
315
|
+
}));
|
|
316
|
+
}
|
|
317
|
+
beginLoad() {
|
|
318
|
+
this.loading = true;
|
|
319
|
+
this.errorMessage = null;
|
|
320
|
+
this.cdr.markForCheck();
|
|
321
|
+
}
|
|
322
|
+
endLoad() {
|
|
323
|
+
this.loading = false;
|
|
324
|
+
this.cdr.markForCheck();
|
|
325
|
+
}
|
|
326
|
+
fail(err, fallback) {
|
|
327
|
+
const message = err instanceof Error ? err.message : fallback;
|
|
328
|
+
this.errorMessage = message;
|
|
329
|
+
LogError(message);
|
|
330
|
+
this.Error.emit(err instanceof Error ? err : new Error(message));
|
|
331
|
+
}
|
|
332
|
+
static ɵfac = /*@__PURE__*/ (() => { let ɵFormsReportingDashboardComponent_BaseFactory; return function FormsReportingDashboardComponent_Factory(__ngFactoryType__) { return (ɵFormsReportingDashboardComponent_BaseFactory || (ɵFormsReportingDashboardComponent_BaseFactory = i0.ɵɵgetInheritedFactory(FormsReportingDashboardComponent)))(__ngFactoryType__ || FormsReportingDashboardComponent); }; })();
|
|
333
|
+
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormsReportingDashboardComponent, selectors: [["mj-forms-reporting-dashboard"]], features: [i0.ɵɵProvidersFeature([FormsReportingService, FormsReportingExportService]), i0.ɵɵInheritDefinitionFeature], decls: 20, vars: 8, consts: [[1, "reporting"], [1, "rep-header"], [1, "title-row"], [1, "rep-title"], [1, "fa-solid", "fa-chart-column"], ["title", "Showing seeded sample data until live responses exist", 1, "mock-badge"], [1, "controls"], [1, "form-picker"], ["role", "group", "aria-label", "Export responses", 1, "export-group"], ["type", "button", 1, "btn", 3, "click", "disabled"], [1, "fa-solid", "fa-file-csv"], [1, "fa-solid", "fa-file-excel"], ["role", "alert", 1, "alert"], [1, "loading"], [1, "empty-state"], [1, "sr-only"], ["aria-label", "Select a form to report on", 3, "ngModelChange", "ngModel"], [3, "value"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-inbox"], ["role", "tablist", 1, "tabs"], ["type", "button", "role", "tab", 1, "tab", 3, "tab--active"], [1, "tab-body"], [3, "stats"], [1, "breakdowns"], [3, "steps"], ["type", "button", "role", "tab", 1, "tab", 3, "click"], [3, "breakdown"], [3, "detail"], [3, "rows"], [3, "back", "detail"], [3, "open", "rows"]], template: function FormsReportingDashboardComponent_Template(rf, ctx) { if (rf & 1) {
|
|
334
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "header", 1)(2, "div", 2)(3, "h2", 3);
|
|
335
|
+
i0.ɵɵelement(4, "i", 4);
|
|
336
|
+
i0.ɵɵtext(5, " Forms Reporting");
|
|
337
|
+
i0.ɵɵelementEnd();
|
|
338
|
+
i0.ɵɵconditionalCreate(6, FormsReportingDashboardComponent_Conditional_6_Template, 2, 0, "span", 5);
|
|
339
|
+
i0.ɵɵelementEnd();
|
|
340
|
+
i0.ɵɵelementStart(7, "div", 6);
|
|
341
|
+
i0.ɵɵconditionalCreate(8, FormsReportingDashboardComponent_Conditional_8_Template, 6, 1, "label", 7);
|
|
342
|
+
i0.ɵɵelementStart(9, "div", 8)(10, "button", 9);
|
|
343
|
+
i0.ɵɵlistener("click", function FormsReportingDashboardComponent_Template_button_click_10_listener() { return ctx.export("csv"); });
|
|
344
|
+
i0.ɵɵelement(11, "i", 10);
|
|
345
|
+
i0.ɵɵtext(12, " CSV ");
|
|
346
|
+
i0.ɵɵelementEnd();
|
|
347
|
+
i0.ɵɵelementStart(13, "button", 9);
|
|
348
|
+
i0.ɵɵlistener("click", function FormsReportingDashboardComponent_Template_button_click_13_listener() { return ctx.export("excel"); });
|
|
349
|
+
i0.ɵɵelement(14, "i", 11);
|
|
350
|
+
i0.ɵɵtext(15, " Excel ");
|
|
351
|
+
i0.ɵɵelementEnd()()()();
|
|
352
|
+
i0.ɵɵconditionalCreate(16, FormsReportingDashboardComponent_Conditional_16_Template, 3, 1, "div", 12);
|
|
353
|
+
i0.ɵɵconditionalCreate(17, FormsReportingDashboardComponent_Conditional_17_Template, 3, 0, "div", 13);
|
|
354
|
+
i0.ɵɵconditionalCreate(18, FormsReportingDashboardComponent_Conditional_18_Template, 4, 0, "div", 14);
|
|
355
|
+
i0.ɵɵconditionalCreate(19, FormsReportingDashboardComponent_Conditional_19_Template, 8, 1);
|
|
356
|
+
i0.ɵɵelementEnd();
|
|
357
|
+
} if (rf & 2) {
|
|
358
|
+
let tmp_7_0;
|
|
359
|
+
i0.ɵɵadvance(6);
|
|
360
|
+
i0.ɵɵconditional(ctx.useMock ? 6 : -1);
|
|
361
|
+
i0.ɵɵadvance(2);
|
|
362
|
+
i0.ɵɵconditional(ctx.forms.length > 0 ? 8 : -1);
|
|
363
|
+
i0.ɵɵadvance(2);
|
|
364
|
+
i0.ɵɵproperty("disabled", !ctx.report || ctx.loading);
|
|
365
|
+
i0.ɵɵadvance(3);
|
|
366
|
+
i0.ɵɵproperty("disabled", !ctx.report || ctx.loading);
|
|
367
|
+
i0.ɵɵadvance(3);
|
|
368
|
+
i0.ɵɵconditional(ctx.errorMessage ? 16 : -1);
|
|
369
|
+
i0.ɵɵadvance();
|
|
370
|
+
i0.ɵɵconditional(ctx.loading ? 17 : -1);
|
|
371
|
+
i0.ɵɵadvance();
|
|
372
|
+
i0.ɵɵconditional(!ctx.loading && ctx.forms.length === 0 ? 18 : -1);
|
|
373
|
+
i0.ɵɵadvance();
|
|
374
|
+
i0.ɵɵconditional((tmp_7_0 = ctx.report) ? 19 : -1, tmp_7_0);
|
|
375
|
+
} }, dependencies: [FormsModule, i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, FormsSummaryStatsComponent,
|
|
376
|
+
FormsQuestionBreakdownComponent,
|
|
377
|
+
FormsFunnelChartComponent,
|
|
378
|
+
FormsResponseListComponent,
|
|
379
|
+
FormsResponseDetailComponent], styles: ["[_nghost-%COMP%] {\n display: block;\n height: 100%;\n overflow: auto;\n background: var(--mj-bg-page);\n font-family: var(--mj-font-family);\n}\n\n.reporting[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4);\n padding: var(--mj-space-4);\n}\n\n.rep-header[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: var(--mj-space-3);\n align-items: center;\n justify-content: space-between;\n}\n\n.title-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n}\n\n.rep-title[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.mock-badge[_ngcontent-%COMP%] {\n font-size: 11px;\n padding: 2px var(--mj-space-2);\n border-radius: var(--mj-radius-full);\n background: var(--mj-status-info);\n color: var(--mj-text-inverse);\n}\n\n.controls[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-2);\n align-items: center;\n flex-wrap: wrap;\n}\n\n.form-picker[_ngcontent-%COMP%] select[_ngcontent-%COMP%] {\n padding: var(--mj-space-2);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n max-width: 320px;\n}\n\n.export-group[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-1);\n}\n\n.btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-1);\n padding: var(--mj-space-2) var(--mj-space-3);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n}\n\n.btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n}\n\n.btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.alert[_ngcontent-%COMP%] {\n padding: var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-status-error);\n color: var(--mj-status-error);\n font-size: 13px;\n}\n\n.loading[_ngcontent-%COMP%] {\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--mj-space-2);\n padding: var(--mj-space-8);\n color: var(--mj-text-muted);\n}\n\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 28px;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n}\n\n.tabs[_ngcontent-%COMP%] {\n display: flex;\n gap: var(--mj-space-1);\n border-bottom: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.tab[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-1);\n padding: var(--mj-space-2) var(--mj-space-3);\n border: none;\n border-bottom: 2px solid transparent;\n background: none;\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n}\n\n.tab--active[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.tab-body[_ngcontent-%COMP%] {\n min-height: 0;\n}\n\n.breakdowns[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: var(--mj-space-4);\n}\n\n.sr-only[_ngcontent-%COMP%] {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}"], changeDetection: 0 });
|
|
380
|
+
};
|
|
381
|
+
FormsReportingDashboardComponent = __decorate([
|
|
382
|
+
RegisterClass(BaseDashboard, 'FormsReportingDashboard')
|
|
383
|
+
], FormsReportingDashboardComponent);
|
|
384
|
+
export { FormsReportingDashboardComponent };
|
|
385
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormsReportingDashboardComponent, [{
|
|
386
|
+
type: Component,
|
|
387
|
+
args: [{ selector: 'mj-forms-reporting-dashboard', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, providers: [FormsReportingService, FormsReportingExportService], imports: [
|
|
388
|
+
FormsModule,
|
|
389
|
+
FormsSummaryStatsComponent,
|
|
390
|
+
FormsQuestionBreakdownComponent,
|
|
391
|
+
FormsFunnelChartComponent,
|
|
392
|
+
FormsResponseListComponent,
|
|
393
|
+
FormsResponseDetailComponent,
|
|
394
|
+
], template: "<div class=\"reporting\">\n <header class=\"rep-header\">\n <div class=\"title-row\">\n <h2 class=\"rep-title\"><i class=\"fa-solid fa-chart-column\"></i> Forms Reporting</h2>\n @if (useMock) {\n <span class=\"mock-badge\" title=\"Showing seeded sample data until live responses exist\">Sample data</span>\n }\n </div>\n\n <div class=\"controls\">\n @if (forms.length > 0) {\n <label class=\"form-picker\">\n <span class=\"sr-only\">Select a form</span>\n <select\n [ngModel]=\"selectedForm?.formId\"\n (ngModelChange)=\"onFormChange($event)\"\n aria-label=\"Select a form to report on\">\n @for (f of forms; track f.formId) {\n <option [value]=\"f.formId\">{{ f.name }} ({{ f.responseCount }})</option>\n }\n </select>\n </label>\n }\n <div class=\"export-group\" role=\"group\" aria-label=\"Export responses\">\n <button type=\"button\" class=\"btn\" [disabled]=\"!report || loading\" (click)=\"export('csv')\">\n <i class=\"fa-solid fa-file-csv\"></i> CSV\n </button>\n <button type=\"button\" class=\"btn\" [disabled]=\"!report || loading\" (click)=\"export('excel')\">\n <i class=\"fa-solid fa-file-excel\"></i> Excel\n </button>\n </div>\n </div>\n </header>\n\n @if (errorMessage) {\n <div class=\"alert\" role=\"alert\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i> {{ errorMessage }}\n </div>\n }\n\n @if (loading) {\n <div class=\"loading\"><i class=\"fa-solid fa-spinner fa-spin\"></i> Loading\u2026</div>\n }\n\n @if (!loading && forms.length === 0) {\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-inbox\"></i>\n <p>No published forms to report on yet.</p>\n </div>\n }\n\n @if (report; as r) {\n <nav class=\"tabs\" role=\"tablist\">\n @for (t of tabs; track t.key) {\n <button\n type=\"button\"\n role=\"tab\"\n class=\"tab\"\n [class.tab--active]=\"activeTab === t.key\"\n [attr.aria-selected]=\"activeTab === t.key\"\n (click)=\"setTab(t.key)\">\n <i [class]=\"t.icon\"></i> {{ t.label }}\n </button>\n }\n </nav>\n\n <section class=\"tab-body\">\n @switch (activeTab) {\n @case ('summary') {\n <mj-forms-summary-stats [stats]=\"r.summary\"></mj-forms-summary-stats>\n }\n @case ('questions') {\n <div class=\"breakdowns\">\n @for (b of r.breakdowns; track b.questionId) {\n <mj-forms-question-breakdown [breakdown]=\"b\"></mj-forms-question-breakdown>\n }\n </div>\n }\n @case ('funnel') {\n <mj-forms-funnel-chart [steps]=\"r.funnel\"></mj-forms-funnel-chart>\n }\n @case ('responses') {\n @if (responseDetail; as d) {\n <mj-forms-response-detail [detail]=\"d\" (back)=\"closeResponse()\"></mj-forms-response-detail>\n } @else {\n <mj-forms-response-list [rows]=\"r.responses\" (open)=\"openResponse($event)\"></mj-forms-response-list>\n }\n }\n }\n </section>\n }\n</div>\n", styles: [":host {\n display: block;\n height: 100%;\n overflow: auto;\n background: var(--mj-bg-page);\n font-family: var(--mj-font-family);\n}\n\n.reporting {\n display: flex;\n flex-direction: column;\n gap: var(--mj-space-4);\n padding: var(--mj-space-4);\n}\n\n.rep-header {\n display: flex;\n flex-wrap: wrap;\n gap: var(--mj-space-3);\n align-items: center;\n justify-content: space-between;\n}\n\n.title-row {\n display: flex;\n align-items: center;\n gap: var(--mj-space-2);\n}\n\n.rep-title {\n margin: 0;\n font-size: 18px;\n font-weight: 700;\n color: var(--mj-text-primary);\n}\n\n.mock-badge {\n font-size: 11px;\n padding: 2px var(--mj-space-2);\n border-radius: var(--mj-radius-full);\n background: var(--mj-status-info);\n color: var(--mj-text-inverse);\n}\n\n.controls {\n display: flex;\n gap: var(--mj-space-2);\n align-items: center;\n flex-wrap: wrap;\n}\n\n.form-picker select {\n padding: var(--mj-space-2);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n max-width: 320px;\n}\n\n.export-group {\n display: flex;\n gap: var(--mj-space-1);\n}\n\n.btn {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-1);\n padding: var(--mj-space-2) var(--mj-space-3);\n border: 1px solid var(--mj-border-default);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n font-size: 13px;\n cursor: pointer;\n}\n\n.btn:hover:not(:disabled) {\n background: var(--mj-bg-surface-hover);\n}\n\n.btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.alert {\n padding: var(--mj-space-3);\n border-radius: var(--mj-radius-md);\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-status-error);\n color: var(--mj-status-error);\n font-size: 13px;\n}\n\n.loading {\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: var(--mj-space-2);\n padding: var(--mj-space-8);\n color: var(--mj-text-muted);\n}\n\n.empty-state i {\n font-size: 28px;\n}\n\n.empty-state p {\n margin: 0;\n}\n\n.tabs {\n display: flex;\n gap: var(--mj-space-1);\n border-bottom: 1px solid var(--mj-border-default);\n flex-wrap: wrap;\n}\n\n.tab {\n display: inline-flex;\n align-items: center;\n gap: var(--mj-space-1);\n padding: var(--mj-space-2) var(--mj-space-3);\n border: none;\n border-bottom: 2px solid transparent;\n background: none;\n color: var(--mj-text-secondary);\n font-size: 13px;\n cursor: pointer;\n}\n\n.tab--active {\n color: var(--mj-brand-primary);\n border-bottom-color: var(--mj-brand-primary);\n font-weight: 600;\n}\n\n.tab-body {\n min-height: 0;\n}\n\n.breakdowns {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: var(--mj-space-4);\n}\n\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border: 0;\n}\n"] }]
|
|
395
|
+
}], null, null); })();
|
|
396
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FormsReportingDashboardComponent, { className: "FormsReportingDashboardComponent", filePath: "lib/dashboard/forms-reporting-dashboard.component.ts", lineNumber: 56 }); })();
|
|
397
|
+
//# sourceMappingURL=forms-reporting-dashboard.component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"forms-reporting-dashboard.component.js","sourceRoot":"","sources":["../../../src/lib/dashboard/forms-reporting-dashboard.component.ts","../../../src/lib/dashboard/forms-reporting-dashboard.component.html"],"names":[],"mappings":"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"}
|