@things-factory/compliance 0.0.0-stage → 10.1.254
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-client/bootstrap.d.ts +2 -0
- package/dist-client/bootstrap.js +28 -0
- package/dist-client/bootstrap.js.map +1 -0
- package/dist-client/components/compliance-case-form.d.ts +42 -0
- package/dist-client/components/compliance-case-form.js +313 -0
- package/dist-client/components/compliance-case-form.js.map +1 -0
- package/dist-client/components/compliance-case-sheet.d.ts +35 -0
- package/dist-client/components/compliance-case-sheet.js +335 -0
- package/dist-client/components/compliance-case-sheet.js.map +1 -0
- package/dist-client/components/compliance-my-inventions.d.ts +17 -0
- package/dist-client/components/compliance-my-inventions.js +133 -0
- package/dist-client/components/compliance-my-inventions.js.map +1 -0
- package/dist-client/components/compliance-my-privacy-requests.d.ts +34 -0
- package/dist-client/components/compliance-my-privacy-requests.js +232 -0
- package/dist-client/components/compliance-my-privacy-requests.js.map +1 -0
- package/dist-client/components/compliance-my-reports.d.ts +19 -0
- package/dist-client/components/compliance-my-reports.js +137 -0
- package/dist-client/components/compliance-my-reports.js.map +1 -0
- package/dist-client/components/guide-link.d.ts +13 -0
- package/dist-client/components/guide-link.js +55 -0
- package/dist-client/components/guide-link.js.map +1 -0
- package/dist-client/components/invention-report-form.d.ts +30 -0
- package/dist-client/components/invention-report-form.js +188 -0
- package/dist-client/components/invention-report-form.js.map +1 -0
- package/dist-client/components/legal-todo.d.ts +10 -0
- package/dist-client/components/legal-todo.js +43 -0
- package/dist-client/components/legal-todo.js.map +1 -0
- package/dist-client/components/my-trainings.d.ts +18 -0
- package/dist-client/components/my-trainings.js +149 -0
- package/dist-client/components/my-trainings.js.map +1 -0
- package/dist-client/components/regulation-form.d.ts +26 -0
- package/dist-client/components/regulation-form.js +161 -0
- package/dist-client/components/regulation-form.js.map +1 -0
- package/dist-client/components/seal-use-form.d.ts +47 -0
- package/dist-client/components/seal-use-form.js +300 -0
- package/dist-client/components/seal-use-form.js.map +1 -0
- package/dist-client/components/training-attendance-form.d.ts +37 -0
- package/dist-client/components/training-attendance-form.js +186 -0
- package/dist-client/components/training-attendance-form.js.map +1 -0
- package/dist-client/components/training-certificate-form.d.ts +41 -0
- package/dist-client/components/training-certificate-form.js +198 -0
- package/dist-client/components/training-certificate-form.js.map +1 -0
- package/dist-client/components/training-session-form.d.ts +39 -0
- package/dist-client/components/training-session-form.js +270 -0
- package/dist-client/components/training-session-form.js.map +1 -0
- package/dist-client/components/training-setting-form.d.ts +45 -0
- package/dist-client/components/training-setting-form.js +175 -0
- package/dist-client/components/training-setting-form.js.map +1 -0
- package/dist-client/index.d.ts +4 -0
- package/dist-client/index.js +8 -0
- package/dist-client/index.js.map +1 -0
- package/dist-client/legal-record/dispute-calendar-source.d.ts +1 -0
- package/dist-client/legal-record/dispute-calendar-source.js +51 -0
- package/dist-client/legal-record/dispute-calendar-source.js.map +1 -0
- package/dist-client/legal-record/legal-child-grid.d.ts +31 -0
- package/dist-client/legal-record/legal-child-grid.js +76 -0
- package/dist-client/legal-record/legal-child-grid.js.map +1 -0
- package/dist-client/legal-record/legal-codes.d.ts +3 -0
- package/dist-client/legal-record/legal-codes.js +5 -0
- package/dist-client/legal-record/legal-codes.js.map +1 -0
- package/dist-client/legal-record/legal-grid.d.ts +59 -0
- package/dist-client/legal-record/legal-grid.js +68 -0
- package/dist-client/legal-record/legal-grid.js.map +1 -0
- package/dist-client/legal-record/legal-record-files.d.ts +26 -0
- package/dist-client/legal-record/legal-record-files.js +162 -0
- package/dist-client/legal-record/legal-record-files.js.map +1 -0
- package/dist-client/pages/compliance-case-list.d.ts +35 -0
- package/dist-client/pages/compliance-case-list.js +112 -0
- package/dist-client/pages/compliance-case-list.js.map +1 -0
- package/dist-client/pages/dispute-list.d.ts +57 -0
- package/dist-client/pages/dispute-list.js +156 -0
- package/dist-client/pages/dispute-list.js.map +1 -0
- package/dist-client/pages/invention-list.d.ts +57 -0
- package/dist-client/pages/invention-list.js +166 -0
- package/dist-client/pages/invention-list.js.map +1 -0
- package/dist-client/pages/legal-registration-list.d.ts +63 -0
- package/dist-client/pages/legal-registration-list.js +206 -0
- package/dist-client/pages/legal-registration-list.js.map +1 -0
- package/dist-client/pages/privacy-record-list.d.ts +52 -0
- package/dist-client/pages/privacy-record-list.js +225 -0
- package/dist-client/pages/privacy-record-list.js.map +1 -0
- package/dist-client/pages/regulation-detail.d.ts +43 -0
- package/dist-client/pages/regulation-detail.js +370 -0
- package/dist-client/pages/regulation-detail.js.map +1 -0
- package/dist-client/pages/regulation-list.d.ts +52 -0
- package/dist-client/pages/regulation-list.js +144 -0
- package/dist-client/pages/regulation-list.js.map +1 -0
- package/dist-client/pages/regulations.d.ts +49 -0
- package/dist-client/pages/regulations.js +412 -0
- package/dist-client/pages/regulations.js.map +1 -0
- package/dist-client/pages/seal-use-list.d.ts +57 -0
- package/dist-client/pages/seal-use-list.js +168 -0
- package/dist-client/pages/seal-use-list.js.map +1 -0
- package/dist-client/pages/training-list.d.ts +51 -0
- package/dist-client/pages/training-list.js +333 -0
- package/dist-client/pages/training-list.js.map +1 -0
- package/dist-client/regulation/regulation-fragments.d.ts +1 -0
- package/dist-client/regulation/regulation-fragments.js +37 -0
- package/dist-client/regulation/regulation-fragments.js.map +1 -0
- package/dist-client/regulation/regulation-guide.d.ts +19 -0
- package/dist-client/regulation/regulation-guide.js +48 -0
- package/dist-client/regulation/regulation-guide.js.map +1 -0
- package/dist-client/route.d.ts +1 -0
- package/dist-client/route.js +36 -0
- package/dist-client/route.js.map +1 -0
- package/dist-client/training-words.d.ts +11 -0
- package/dist-client/training-words.js +11 -0
- package/dist-client/training-words.js.map +1 -0
- package/dist-client/tsconfig.tsbuildinfo +1 -0
- package/dist-client/words.d.ts +15 -0
- package/dist-client/words.js +20 -0
- package/dist-client/words.js.map +1 -0
- package/dist-server/activities/index.d.ts +6 -0
- package/dist-server/activities/index.js +35 -0
- package/dist-server/activities/index.js.map +1 -0
- package/dist-server/activities/legal-todo-activity-names.d.ts +1 -0
- package/dist-server/activities/legal-todo-activity-names.js +5 -0
- package/dist-server/activities/legal-todo-activity-names.js.map +1 -0
- package/dist-server/activities/legal-todo-activity.d.ts +37 -0
- package/dist-server/activities/legal-todo-activity.js +41 -0
- package/dist-server/activities/legal-todo-activity.js.map +1 -0
- package/dist-server/activities/regulation-activity-names.d.ts +1 -0
- package/dist-server/activities/regulation-activity-names.js +5 -0
- package/dist-server/activities/regulation-activity-names.js.map +1 -0
- package/dist-server/activities/regulation-activity.d.ts +48 -0
- package/dist-server/activities/regulation-activity.js +47 -0
- package/dist-server/activities/regulation-activity.js.map +1 -0
- package/dist-server/activities/seal-use-activity-names.d.ts +2 -0
- package/dist-server/activities/seal-use-activity-names.js +6 -0
- package/dist-server/activities/seal-use-activity-names.js.map +1 -0
- package/dist-server/activities/seal-use-activity.d.ts +48 -0
- package/dist-server/activities/seal-use-activity.js +47 -0
- package/dist-server/activities/seal-use-activity.js.map +1 -0
- package/dist-server/index.d.ts +2 -0
- package/dist-server/index.js +21 -0
- package/dist-server/index.js.map +1 -0
- package/dist-server/role-tasks.d.ts +2 -0
- package/dist-server/role-tasks.js +28 -0
- package/dist-server/role-tasks.js.map +1 -0
- package/dist-server/service/common/correction.d.ts +32 -0
- package/dist-server/service/common/correction.js +98 -0
- package/dist-server/service/common/correction.js.map +1 -0
- package/dist-server/service/common/employee-reader.d.ts +11 -0
- package/dist-server/service/common/employee-reader.js +46 -0
- package/dist-server/service/common/employee-reader.js.map +1 -0
- package/dist-server/service/common/legal-todo.d.ts +19 -0
- package/dist-server/service/common/legal-todo.js +37 -0
- package/dist-server/service/common/legal-todo.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case-mutation.d.ts +9 -0
- package/dist-server/service/compliance-case/compliance-case-mutation.js +73 -0
- package/dist-server/service/compliance-case/compliance-case-mutation.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case-query.d.ts +28 -0
- package/dist-server/service/compliance-case/compliance-case-query.js +212 -0
- package/dist-server/service/compliance-case/compliance-case-query.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case-rules.d.ts +71 -0
- package/dist-server/service/compliance-case/compliance-case-rules.js +111 -0
- package/dist-server/service/compliance-case/compliance-case-rules.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case-service.d.ts +76 -0
- package/dist-server/service/compliance-case/compliance-case-service.js +425 -0
- package/dist-server/service/compliance-case/compliance-case-service.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case-type.d.ts +56 -0
- package/dist-server/service/compliance-case/compliance-case-type.js +200 -0
- package/dist-server/service/compliance-case/compliance-case-type.js.map +1 -0
- package/dist-server/service/compliance-case/compliance-case.d.ts +76 -0
- package/dist-server/service/compliance-case/compliance-case.js +260 -0
- package/dist-server/service/compliance-case/compliance-case.js.map +1 -0
- package/dist-server/service/compliance-case/index.d.ts +7 -0
- package/dist-server/service/compliance-case/index.js +17 -0
- package/dist-server/service/compliance-case/index.js.map +1 -0
- package/dist-server/service/dispute/dispute-mutation.d.ts +9 -0
- package/dist-server/service/dispute/dispute-mutation.js +64 -0
- package/dist-server/service/dispute/dispute-mutation.js.map +1 -0
- package/dist-server/service/dispute/dispute-query.d.ts +16 -0
- package/dist-server/service/dispute/dispute-query.js +124 -0
- package/dist-server/service/dispute/dispute-query.js.map +1 -0
- package/dist-server/service/dispute/dispute-rules.d.ts +20 -0
- package/dist-server/service/dispute/dispute-rules.js +42 -0
- package/dist-server/service/dispute/dispute-rules.js.map +1 -0
- package/dist-server/service/dispute/dispute-service.d.ts +17 -0
- package/dist-server/service/dispute/dispute-service.js +96 -0
- package/dist-server/service/dispute/dispute-service.js.map +1 -0
- package/dist-server/service/dispute/dispute-type.d.ts +39 -0
- package/dist-server/service/dispute/dispute-type.js +149 -0
- package/dist-server/service/dispute/dispute-type.js.map +1 -0
- package/dist-server/service/dispute/dispute.d.ts +48 -0
- package/dist-server/service/dispute/dispute.js +198 -0
- package/dist-server/service/dispute/dispute.js.map +1 -0
- package/dist-server/service/dispute/index.d.ts +5 -0
- package/dist-server/service/dispute/index.js +9 -0
- package/dist-server/service/dispute/index.js.map +1 -0
- package/dist-server/service/index.d.ts +46 -0
- package/dist-server/service/index.js +112 -0
- package/dist-server/service/index.js.map +1 -0
- package/dist-server/service/invention/index.d.ts +5 -0
- package/dist-server/service/invention/index.js +9 -0
- package/dist-server/service/invention/index.js.map +1 -0
- package/dist-server/service/invention/invention-mutation.d.ts +10 -0
- package/dist-server/service/invention/invention-mutation.js +79 -0
- package/dist-server/service/invention/invention-mutation.js.map +1 -0
- package/dist-server/service/invention/invention-query.d.ts +18 -0
- package/dist-server/service/invention/invention-query.js +141 -0
- package/dist-server/service/invention/invention-query.js.map +1 -0
- package/dist-server/service/invention/invention-rules.d.ts +28 -0
- package/dist-server/service/invention/invention-rules.js +54 -0
- package/dist-server/service/invention/invention-rules.js.map +1 -0
- package/dist-server/service/invention/invention-service.d.ts +25 -0
- package/dist-server/service/invention/invention-service.js +176 -0
- package/dist-server/service/invention/invention-service.js.map +1 -0
- package/dist-server/service/invention/invention-type.d.ts +34 -0
- package/dist-server/service/invention/invention-type.js +129 -0
- package/dist-server/service/invention/invention-type.js.map +1 -0
- package/dist-server/service/invention/invention.d.ts +55 -0
- package/dist-server/service/invention/invention.js +214 -0
- package/dist-server/service/invention/invention.js.map +1 -0
- package/dist-server/service/legal-record/attachment-readers.d.ts +1 -0
- package/dist-server/service/legal-record/attachment-readers.js +27 -0
- package/dist-server/service/legal-record/attachment-readers.js.map +1 -0
- package/dist-server/service/legal-record/days.d.ts +7 -0
- package/dist-server/service/legal-record/days.js +26 -0
- package/dist-server/service/legal-record/days.js.map +1 -0
- package/dist-server/service/legal-record/legal-record-support.d.ts +24 -0
- package/dist-server/service/legal-record/legal-record-support.js +51 -0
- package/dist-server/service/legal-record/legal-record-support.js.map +1 -0
- package/dist-server/service/legal-registration/centre-change-subscriber.d.ts +9 -0
- package/dist-server/service/legal-registration/centre-change-subscriber.js +50 -0
- package/dist-server/service/legal-registration/centre-change-subscriber.js.map +1 -0
- package/dist-server/service/legal-registration/index.d.ts +7 -0
- package/dist-server/service/legal-registration/index.js +11 -0
- package/dist-server/service/legal-registration/index.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration-mutation.d.ts +10 -0
- package/dist-server/service/legal-registration/legal-registration-mutation.js +77 -0
- package/dist-server/service/legal-registration/legal-registration-mutation.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration-query.d.ts +26 -0
- package/dist-server/service/legal-registration/legal-registration-query.js +199 -0
- package/dist-server/service/legal-registration/legal-registration-query.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration-rules.d.ts +80 -0
- package/dist-server/service/legal-registration/legal-registration-rules.js +106 -0
- package/dist-server/service/legal-registration/legal-registration-rules.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration-service.d.ts +37 -0
- package/dist-server/service/legal-registration/legal-registration-service.js +248 -0
- package/dist-server/service/legal-registration/legal-registration-service.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration-type.d.ts +55 -0
- package/dist-server/service/legal-registration/legal-registration-type.js +207 -0
- package/dist-server/service/legal-registration/legal-registration-type.js.map +1 -0
- package/dist-server/service/legal-registration/legal-registration.d.ts +76 -0
- package/dist-server/service/legal-registration/legal-registration.js +311 -0
- package/dist-server/service/legal-registration/legal-registration.js.map +1 -0
- package/dist-server/service/privacy-record/index.d.ts +5 -0
- package/dist-server/service/privacy-record/index.js +9 -0
- package/dist-server/service/privacy-record/index.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record-mutation.d.ts +7 -0
- package/dist-server/service/privacy-record/privacy-record-mutation.js +56 -0
- package/dist-server/service/privacy-record/privacy-record-mutation.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record-query.d.ts +18 -0
- package/dist-server/service/privacy-record/privacy-record-query.js +131 -0
- package/dist-server/service/privacy-record/privacy-record-query.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record-rules.d.ts +52 -0
- package/dist-server/service/privacy-record/privacy-record-rules.js +91 -0
- package/dist-server/service/privacy-record/privacy-record-rules.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record-service.d.ts +33 -0
- package/dist-server/service/privacy-record/privacy-record-service.js +133 -0
- package/dist-server/service/privacy-record/privacy-record-service.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record-type.d.ts +40 -0
- package/dist-server/service/privacy-record/privacy-record-type.js +153 -0
- package/dist-server/service/privacy-record/privacy-record-type.js.map +1 -0
- package/dist-server/service/privacy-record/privacy-record.d.ts +69 -0
- package/dist-server/service/privacy-record/privacy-record.js +245 -0
- package/dist-server/service/privacy-record/privacy-record.js.map +1 -0
- package/dist-server/service/regulation/index.d.ts +5 -0
- package/dist-server/service/regulation/index.js +9 -0
- package/dist-server/service/regulation/index.js.map +1 -0
- package/dist-server/service/regulation/regulation-mutation.d.ts +15 -0
- package/dist-server/service/regulation/regulation-mutation.js +152 -0
- package/dist-server/service/regulation/regulation-mutation.js.map +1 -0
- package/dist-server/service/regulation/regulation-query.d.ts +10 -0
- package/dist-server/service/regulation/regulation-query.js +109 -0
- package/dist-server/service/regulation/regulation-query.js.map +1 -0
- package/dist-server/service/regulation/regulation-read.d.ts +21 -0
- package/dist-server/service/regulation/regulation-read.js +111 -0
- package/dist-server/service/regulation/regulation-read.js.map +1 -0
- package/dist-server/service/regulation/regulation-rules.d.ts +83 -0
- package/dist-server/service/regulation/regulation-rules.js +170 -0
- package/dist-server/service/regulation/regulation-rules.js.map +1 -0
- package/dist-server/service/regulation/regulation-service.d.ts +63 -0
- package/dist-server/service/regulation/regulation-service.js +365 -0
- package/dist-server/service/regulation/regulation-service.js.map +1 -0
- package/dist-server/service/regulation/regulation-type.d.ts +61 -0
- package/dist-server/service/regulation/regulation-type.js +226 -0
- package/dist-server/service/regulation/regulation-type.js.map +1 -0
- package/dist-server/service/regulation/regulation.d.ts +113 -0
- package/dist-server/service/regulation/regulation.js +382 -0
- package/dist-server/service/regulation/regulation.js.map +1 -0
- package/dist-server/service/seal-use/index.d.ts +5 -0
- package/dist-server/service/seal-use/index.js +9 -0
- package/dist-server/service/seal-use/index.js.map +1 -0
- package/dist-server/service/seal-use/seal-use-mutation.d.ts +8 -0
- package/dist-server/service/seal-use/seal-use-mutation.js +69 -0
- package/dist-server/service/seal-use/seal-use-mutation.js.map +1 -0
- package/dist-server/service/seal-use/seal-use-query.d.ts +14 -0
- package/dist-server/service/seal-use/seal-use-query.js +100 -0
- package/dist-server/service/seal-use/seal-use-query.js.map +1 -0
- package/dist-server/service/seal-use/seal-use-rules.d.ts +35 -0
- package/dist-server/service/seal-use/seal-use-rules.js +64 -0
- package/dist-server/service/seal-use/seal-use-rules.js.map +1 -0
- package/dist-server/service/seal-use/seal-use-service.d.ts +20 -0
- package/dist-server/service/seal-use/seal-use-service.js +168 -0
- package/dist-server/service/seal-use/seal-use-service.js.map +1 -0
- package/dist-server/service/seal-use/seal-use-type.d.ts +24 -0
- package/dist-server/service/seal-use/seal-use-type.js +93 -0
- package/dist-server/service/seal-use/seal-use-type.js.map +1 -0
- package/dist-server/service/seal-use/seal-use.d.ts +57 -0
- package/dist-server/service/seal-use/seal-use.js +181 -0
- package/dist-server/service/seal-use/seal-use.js.map +1 -0
- package/dist-server/service/training/index.d.ts +5 -0
- package/dist-server/service/training/index.js +9 -0
- package/dist-server/service/training/index.js.map +1 -0
- package/dist-server/service/training/training-checks.d.ts +20 -0
- package/dist-server/service/training/training-checks.js +56 -0
- package/dist-server/service/training/training-checks.js.map +1 -0
- package/dist-server/service/training/training-kinds.d.ts +24 -0
- package/dist-server/service/training/training-kinds.js +42 -0
- package/dist-server/service/training/training-kinds.js.map +1 -0
- package/dist-server/service/training/training-mutation.d.ts +14 -0
- package/dist-server/service/training/training-mutation.js +140 -0
- package/dist-server/service/training/training-mutation.js.map +1 -0
- package/dist-server/service/training/training-query.d.ts +21 -0
- package/dist-server/service/training/training-query.js +196 -0
- package/dist-server/service/training/training-query.js.map +1 -0
- package/dist-server/service/training/training-read.d.ts +5 -0
- package/dist-server/service/training/training-read.js +35 -0
- package/dist-server/service/training/training-read.js.map +1 -0
- package/dist-server/service/training/training-register.d.ts +1 -0
- package/dist-server/service/training/training-register.js +27 -0
- package/dist-server/service/training/training-register.js.map +1 -0
- package/dist-server/service/training/training-rules.d.ts +72 -0
- package/dist-server/service/training/training-rules.js +143 -0
- package/dist-server/service/training/training-rules.js.map +1 -0
- package/dist-server/service/training/training-service.d.ts +98 -0
- package/dist-server/service/training/training-service.js +455 -0
- package/dist-server/service/training/training-service.js.map +1 -0
- package/dist-server/service/training/training-type.d.ts +94 -0
- package/dist-server/service/training/training-type.js +352 -0
- package/dist-server/service/training/training-type.js.map +1 -0
- package/dist-server/service/training/training.d.ts +127 -0
- package/dist-server/service/training/training.js +448 -0
- package/dist-server/service/training/training.js.map +1 -0
- package/dist-server/tsconfig.tsbuildinfo +1 -0
- package/package.json +61 -4
- package/things-factory.config.js +19 -0
- package/translations/en.json +610 -0
- package/translations/es.json +610 -0
- package/translations/ja.json +610 -0
- package/translations/ko.json +610 -0
- package/translations/ms.json +610 -0
- package/translations/zh.json +610 -0
- package/README.md +0 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"training-list.js","sourceRoot":"","sources":["../../client/pages/training-list.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-grist/ox-grist.js'\nimport '@operato/data-grist/ox-filters-form.js'\nimport '@operato/input/ox-input-select-buttons.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, query, state } from 'lit/decorators.js'\nimport { keyed } from 'lit/directives/keyed.js'\n\nimport { DataGrist, FetchOption } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { notify } from '@operato/layout'\nimport { OxPrompt } from '@operato/popup/ox-prompt.js'\nimport { PageView } from '@operato/shell'\nimport { CommonButtonStyles, CommonGristStyles, CommonHeaderStyles, ScrollbarStyles, WorkSurfacePageStyles } from '@operato/styles'\nimport { isMobileDevice } from '@operato/utils'\n\nimport { openTrainingAttendanceForm } from '../components/training-attendance-form.js'\nimport { openTrainingSessionForm } from '../components/training-session-form.js'\nimport { openTrainingSettingForm } from '../components/training-setting-form.js'\nimport { COMPLETION_STATUSES, TRAINING_KINDS, TRAINING_METHODS, TRAINING_STATES, trainingOptions, trainingWord } from '../training-words.js'\nimport { failureOf } from '../words.js'\n\ntype View = 'settings' | 'standings' | 'sessions' | 'completions'\n\nconst VIEWS: View[] = ['settings', 'standings', 'sessions', 'completions']\nconst blankFirst = (options: { value: string; display: string }[]) => [{ value: '', display: '' }, ...options]\n\n/**\n * 법정 의무 교육 (ADR-0187 decisions 15-19) - one screen read four ways, as the audit screen is: the kinds the domain\n * trains, where everyone stands this year, the sessions given, and the completions with their certificates. The kinds\n * are set in their form, a session is opened in its own, a certificate is confirmed or returned here. Nothing is deleted.\n */\n@customElement('training-list')\nexport class TrainingList extends localize(i18next)(PageView) {\n static styles = [\n WorkSurfacePageStyles,\n CommonGristStyles,\n CommonHeaderStyles,\n ScrollbarStyles,\n css`\n .filters {\n flex-wrap: wrap;\n }\n input[type='number'] {\n width: 80px;\n height: var(--context-action-height, 28px);\n box-sizing: border-box;\n border: 1px solid var(--md-sys-color-outline-variant);\n border-radius: var(--md-sys-shape-corner-small, 4px);\n background: var(--md-sys-color-surface-container-lowest);\n color: var(--md-sys-color-on-surface);\n font: inherit;\n padding: 0 var(--spacing-small, 4px);\n }\n `\n ]\n\n @state() private view: View = 'settings'\n @state() private year = new Date().getFullYear()\n @query('ox-grist') private grist!: DataGrist\n\n get context() {\n const t = i18next.t.bind(i18next)\n const actions: Record<View, any[]> = {\n settings: [\n { title: t('button.training-setting'), icon: 'tune', action: () => this.setting() },\n { title: t('button.training-open-year'), icon: 'assignment_add', action: () => this.openYear() }\n ],\n standings: [],\n sessions: [\n { title: t('button.training-session-open'), icon: 'event', action: () => this.openSession() },\n { title: t('button.training-attendance-record'), icon: 'how_to_reg', action: () => this.attendance() },\n { title: t('button.save'), action: () => this.save(), ...CommonButtonStyles.save }\n ],\n completions: [\n { title: t('button.training-confirm'), icon: 'task_alt', action: () => this.confirm() },\n { title: t('button.training-return'), icon: 'undo', action: () => this.return() }\n ]\n }\n return {\n title: t('title.training-list'),\n search: this.view === 'settings' ? undefined : { handler: (search: string) => (this.grist.searchText = search), value: this.grist?.searchText || '' },\n filter: { handler: () => this.grist.toggleHeadroom() },\n actions: actions[this.view],\n exportable: { name: t('title.training-list'), data: () => this.grist.exportRecords() }\n }\n }\n\n render() {\n return html`${keyed(\n this.view,\n html`<ox-grist class=\"page-fill\" search-mode=\"term\" .mode=${isMobileDevice() ? 'CARD' : 'GRID'} .config=${this.configOf(this.view)} .fetchHandler=${this.fetchHandler.bind(this)}>\n <div slot=\"headroom\" class=\"header\">\n <div class=\"filters\">\n <ox-input-select-buttons\n .options=${VIEWS.map(view => ({ value: view, display: i18next.t(`text.training-view-${view}`) }))}\n .value=${this.view}\n @change=${(e: CustomEvent) => (e.detail ? this.show(e.detail) : ((e.target as any).value = this.view))}\n ></ox-input-select-buttons>\n ${this.view === 'settings'\n ? ''\n : html`<input type=\"number\" min=\"2000\" max=\"2999\" aria-label=${i18next.t('field.training-year')} .value=${String(this.year)} @change=${(e: any) => this.pickYear(e)} />`}\n <ox-filters-form without-search></ox-filters-form>\n </div>\n </div>\n </ox-grist>`\n )}`\n }\n\n private show(view: View) {\n this.view = view\n this.updateContext()\n }\n\n private pickYear(e: any) {\n const year = Number(e.target.value)\n if (!Number.isInteger(year) || year < 2000 || year > 2999) return (e.target.value = String(this.year))\n this.year = year\n this.grist.fetch()\n }\n\n private configOf(view: View) {\n const t = i18next.t.bind(i18next)\n const shown = (name: string, width: number, renderer?: (value: any, column: any, record: any) => any, extra: any = {}) => ({\n type: 'string',\n name,\n header: t(`field.training-${name.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase()}`),\n width,\n sortable: false,\n ...extra,\n record: { renderer, ...extra.record }\n })\n const select = (set: 'kind' | 'method' | 'state' | 'status', codes: string[]) => ({ type: 'select', filter: { type: 'select', operator: 'eq', options: blankFirst(trainingOptions(set, codes)) } })\n const center = { record: { align: 'center' } }\n const base = {\n rows: { appendable: false, selectable: { multiple: view === 'completions' } },\n pagination: view === 'settings' ? { infinite: true } : { limit: 100, pages: [50, 100] }\n }\n const gutters = [{ type: 'gutter', gutterName: 'sequence' }, { type: 'gutter', gutterName: 'row-selector', multiple: view === 'completions' }]\n switch (view) {\n case 'settings':\n return {\n ...base,\n list: { fields: ['code', 'enabled', 'dueDay'] },\n columns: [\n ...gutters,\n shown('code', 180, value => trainingWord('kind', value)),\n shown('enabled', 70, value => t(value ? 'text.training-on' : 'text.training-off'), center),\n shown('dueDay', 80, undefined, center),\n shown('audiences', 200, value => (value?.length ? value.map((one: any) => one.targetName ?? one.targetId).join(', ') : t('text.training-whole-domain'))),\n shown('basis', 240),\n shown('retentionYears', 80, value => t('text.training-retention', { years: value }), center),\n shown('memo', 240)\n ]\n }\n case 'standings':\n return {\n ...base,\n list: { fields: ['employee', 'kind', 'state'] },\n columns: [\n ...gutters,\n shown('employee', 120, value => value?.name ?? ''),\n shown('departmentName', 120),\n shown('kind', 180, value => trainingWord('kind', value), select('kind', TRAINING_KINDS)),\n shown('dueOn', 100, undefined, center),\n shown('state', 90, value => trainingWord('state', value), select('state', TRAINING_STATES)),\n shown('completedOn', 100, undefined, center)\n ]\n }\n case 'sessions':\n return {\n ...base,\n list: { fields: ['startsOn', 'name', 'kind'] },\n columns: [\n ...gutters,\n shown('startsOn', 100, undefined, { sortable: true, ...center }),\n shown('endsOn', 100, undefined, center),\n shown('kind', 180, value => trainingWord('kind', value), select('kind', TRAINING_KINDS)),\n { type: 'string', name: 'name', header: t('field.training-session-name'), width: 200, record: { editable: true } },\n shown('method', 100, value => trainingWord('method', value), select('method', TRAINING_METHODS)),\n { type: 'string', name: 'instructor', header: t('field.training-instructor'), width: 120, record: { editable: true } },\n { type: 'string', name: 'organisation', header: t('field.training-organisation'), width: 140, record: { editable: true } },\n { type: 'string', name: 'notes', header: t('field.training-notes'), width: 200, record: { editable: true } }\n ]\n }\n case 'completions':\n return {\n ...base,\n list: { fields: ['employee', 'kind', 'status'] },\n columns: [\n ...gutters,\n shown('employee', 120, value => value?.name ?? ''),\n shown('kind', 180, value => trainingWord('kind', value), select('kind', TRAINING_KINDS)),\n shown('completedOn', 100, undefined, { sortable: true, ...center }),\n shown('method', 100, value => trainingWord('method', value)),\n shown('session', 160, value => value?.name ?? ''),\n shown('organisation', 140),\n shown('status', 90, value => trainingWord('status', value), select('status', COMPLETION_STATUSES)),\n shown('certificates', 160, (_, __, record) => (record.attachments ?? []).map((one: any) => one.name).join(', ')),\n shown('returnReason', 180),\n shown('decidedBy', 90, value => value?.name ?? '')\n ]\n }\n }\n }\n\n async fetchHandler({ page = 1, limit = 100, sortings = [], filters = [], search }: FetchOption) {\n const view = this.view\n const list = { filters: [...filters, ...(view === 'settings' ? [] : [{ name: 'year', operator: 'eq', value: this.year }])], pagination: { page, limit }, sortings, search: search?.trim() || undefined }\n const queries: Record<View, any> = {\n settings: gql`\n query {\n responses: trainingKinds { code basis cycle audience defaultOn retentionYears toConfirm enabled dueDay memo set audiences { scope targetId targetName } }\n }\n `,\n standings: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!], $search: String) {\n responses: trainingStandings(filters: $filters, pagination: $pagination, sortings: $sortings, search: $search) {\n items { id kind year dueOn state completedOn departmentName employee { id name } }\n total\n }\n }\n `,\n sessions: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!], $search: String) {\n responses: trainingSessions(filters: $filters, pagination: $pagination, sortings: $sortings, search: $search) {\n items { id kind year name method startsOn endsOn instructor organisation notes }\n total\n }\n }\n `,\n completions: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!], $search: String) {\n responses: trainingCompletions(filters: $filters, pagination: $pagination, sortings: $sortings, search: $search) {\n items {\n id kind year completedOn method organisation status returnReason\n employee { id name } session { id name } decidedBy { id name } attachments { id name path }\n }\n total\n }\n }\n `\n }\n const response = await client.query({ query: queries[view], variables: view === 'settings' ? {} : list, fetchPolicy: 'network-only' })\n if (response.errors?.length) throw response\n const answer = response.data.responses\n return view === 'settings' ? { total: answer.length, records: answer.map((one: any) => ({ ...one, id: one.code })) } : { total: answer.total, records: answer.items }\n }\n\n private picked(): any {\n const [one] = this.grist.selected\n if (!one) notify({ level: 'warn', message: i18next.t('text.training-pick-one') })\n return one\n }\n\n private async setting() {\n const kind = this.picked()\n if (kind && (await openTrainingSettingForm(kind))) this.grist.fetch()\n }\n\n private async openYear() {\n const kind = this.picked()\n if (!kind) return\n if (!kind.enabled) return notify({ level: 'warn', message: i18next.t('text.training-turn-on-first') })\n const confirmed = await OxPrompt.open({\n title: i18next.t('button.training-open-year'),\n text: i18next.t('text.training-open-year-confirm', { kind: trainingWord('kind', kind.code), year: this.year }),\n confirmButton: { text: i18next.t('button.training-open-year') },\n cancelButton: { text: i18next.t('button.cancel') }\n })\n if (!confirmed) return\n await this.call([() => client.mutate({ mutation: gql`mutation ($kind: String!, $year: Int!) { openTrainingYear(kind: $kind, year: $year) { people done handedOut } }`, variables: { kind: kind.code, year: this.year } })], data =>\n String(i18next.t('text.training-year-opened', data.openTrainingYear))\n )\n }\n\n private async openSession() {\n const response = await client.query({ query: gql`query { trainingKinds { code enabled } }`, fetchPolicy: 'network-only' })\n const kinds = (response.data?.trainingKinds ?? []).filter((one: any) => one.enabled).map((one: any) => one.code)\n if (await openTrainingSessionForm(kinds, this.year)) this.grist.fetch()\n }\n\n private async attendance() {\n const session = this.picked()\n if (session && (await openTrainingAttendanceForm(session))) this.grist.fetch()\n }\n\n private async confirm() {\n const ids = this.grist.selected.filter((one: any) => one.status === 'SUBMITTED').map((one: any) => one.id)\n if (!ids.length) return notify({ level: 'warn', message: i18next.t('text.training-pick-submitted') })\n await this.call([() => client.mutate({ mutation: gql`mutation ($ids: [String!]!) { confirmTrainingCompletions(ids: $ids) { id } }`, variables: { ids } })])\n }\n\n private async return() {\n const [one] = this.grist.selected.filter((row: any) => row.status === 'SUBMITTED')\n if (!one) return notify({ level: 'warn', message: i18next.t('text.training-pick-submitted') })\n const reason = await OxPrompt.prompt({ title: i18next.t('button.training-return'), text: i18next.t('field.training-return-reason'), multiline: true })\n if (reason === null) return\n await this.call([() => client.mutate({ mutation: gql`mutation ($id: String!, $reason: String!) { returnTrainingCompletion(id: $id, reason: $reason) { id } }`, variables: { id: one.id, reason } })])\n }\n\n /** What sessions say - the grid writes the name, instructor, organisation and notes. */\n private async save() {\n const patches = this.grist.dirtyRecords\n .filter((one: any) => one.id)\n .map((one: any) => ({ id: one.id, cuFlag: 'M', ...Object.fromEntries(Object.keys(one.__dirtyfields__ ?? {}).map(field => [field, one[field] === '' ? null : one[field]])) }))\n if (!patches.length) return\n await this.call([() => client.mutate({ mutation: gql`mutation ($patches: [TrainingSessionPatch!]!) { updateMultipleTrainingSession(patches: $patches) { id } }`, variables: { patches } })])\n }\n\n private async call(calls: (() => Promise<any>)[], said?: (data: any) => string) {\n try {\n let data: any\n for (const one of calls) {\n const response = await one()\n if (response.errors?.length) throw response\n data = response.data\n }\n notify({ message: said ? said(data) : i18next.t('text.training-saved') })\n } catch (error) {\n notify({ level: 'error', message: failureOf(error) })\n }\n this.grist.fetch()\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const VERSION_VIEW: import("graphql").DocumentNode;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import gql from 'graphql-tag';
|
|
2
|
+
/* What the rule screens read of a version - one shape for the reader's page and the keeper's. */
|
|
3
|
+
export const VERSION_VIEW = gql `
|
|
4
|
+
fragment RegulationVersionViewFields on RegulationVersionView {
|
|
5
|
+
period
|
|
6
|
+
endsOn
|
|
7
|
+
told
|
|
8
|
+
readAt
|
|
9
|
+
version {
|
|
10
|
+
id
|
|
11
|
+
version
|
|
12
|
+
body
|
|
13
|
+
effectiveOn
|
|
14
|
+
changeSummary
|
|
15
|
+
unfavourable
|
|
16
|
+
status
|
|
17
|
+
workersCount
|
|
18
|
+
adoptedAt
|
|
19
|
+
adoptionNote
|
|
20
|
+
announcementId
|
|
21
|
+
activityInstanceId
|
|
22
|
+
}
|
|
23
|
+
clauses {
|
|
24
|
+
id
|
|
25
|
+
number
|
|
26
|
+
title
|
|
27
|
+
chapter
|
|
28
|
+
text
|
|
29
|
+
}
|
|
30
|
+
changes {
|
|
31
|
+
number
|
|
32
|
+
title
|
|
33
|
+
change
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
//# sourceMappingURL=regulation-fragments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regulation-fragments.js","sourceRoot":"","sources":["../../client/regulation/regulation-fragments.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAE7B,iGAAiG;AACjG,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiC9B,CAAA","sourcesContent":["import gql from 'graphql-tag'\n\n/* What the rule screens read of a version - one shape for the reader's page and the keeper's. */\nexport const VERSION_VIEW = gql`\n fragment RegulationVersionViewFields on RegulationVersionView {\n period\n endsOn\n told\n readAt\n version {\n id\n version\n body\n effectiveOn\n changeSummary\n unfavourable\n status\n workersCount\n adoptedAt\n adoptionNote\n announcementId\n activityInstanceId\n }\n clauses {\n id\n number\n title\n chapter\n text\n }\n changes {\n number\n title\n change\n }\n }\n`\n"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export declare function configureRegulationGuide(guide: {
|
|
2
|
+
topics: string[];
|
|
3
|
+
}): void;
|
|
4
|
+
export declare function regulationGuideTopics(): string[];
|
|
5
|
+
export interface GuideSection {
|
|
6
|
+
topic: string;
|
|
7
|
+
id: string;
|
|
8
|
+
title: string;
|
|
9
|
+
}
|
|
10
|
+
/** The h2 sections of the guide's topics. */
|
|
11
|
+
export declare function guideSections(): Promise<GuideSection[]>;
|
|
12
|
+
/**
|
|
13
|
+
* One section of the guide to read on the page (ADR-0187 decision 13): its h2 and what follows up to the next h2, with
|
|
14
|
+
* the document's own styles - the guide is kept as a help document and read here, at the width of the page.
|
|
15
|
+
*/
|
|
16
|
+
export declare function guideSectionOf(topic: string, id: string): Promise<{
|
|
17
|
+
styles: string;
|
|
18
|
+
html: string;
|
|
19
|
+
} | null>;
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The guide on the law the application ships beside the company rules (ADR-0187 decisions 10, 11) - its help topics,
|
|
3
|
+
* named once at boot by the application: `configureRegulationGuide({ topics: ['office/rights'] })`. The sections of the
|
|
4
|
+
* topic are the topics a rule answers; with none named the guide and the rule's topic field are not shown.
|
|
5
|
+
*/
|
|
6
|
+
let topics = [];
|
|
7
|
+
export function configureRegulationGuide(guide) {
|
|
8
|
+
topics = [...guide.topics];
|
|
9
|
+
}
|
|
10
|
+
export function regulationGuideTopics() {
|
|
11
|
+
return topics;
|
|
12
|
+
}
|
|
13
|
+
const documents = new Map();
|
|
14
|
+
/** A guide document as served in the reader's language, read once per topic and language. */
|
|
15
|
+
function guideDocument(topic) {
|
|
16
|
+
const key = `${document.documentElement.lang}|${topic}`;
|
|
17
|
+
if (!documents.has(key))
|
|
18
|
+
documents.set(key, fetch(`/helps/${topic}.html`)
|
|
19
|
+
.then(async (response) => (response.ok ? new DOMParser().parseFromString(await response.text(), 'text/html') : null))
|
|
20
|
+
/* A guide not written yet shows no section. */
|
|
21
|
+
.catch(() => null));
|
|
22
|
+
return documents.get(key);
|
|
23
|
+
}
|
|
24
|
+
/** The h2 sections of the guide's topics. */
|
|
25
|
+
export async function guideSections() {
|
|
26
|
+
const out = [];
|
|
27
|
+
for (const topic of topics) {
|
|
28
|
+
const doc = await guideDocument(topic);
|
|
29
|
+
doc?.querySelectorAll('h2[id]').forEach(head => out.push({ topic, id: head.id, title: (head.textContent ?? '').trim() }));
|
|
30
|
+
}
|
|
31
|
+
return out;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* One section of the guide to read on the page (ADR-0187 decision 13): its h2 and what follows up to the next h2, with
|
|
35
|
+
* the document's own styles - the guide is kept as a help document and read here, at the width of the page.
|
|
36
|
+
*/
|
|
37
|
+
export async function guideSectionOf(topic, id) {
|
|
38
|
+
const doc = await guideDocument(topic);
|
|
39
|
+
const head = doc?.querySelector(`h2[id="${CSS.escape(id)}"]`);
|
|
40
|
+
if (!doc || !head)
|
|
41
|
+
return null;
|
|
42
|
+
const parts = [head.outerHTML];
|
|
43
|
+
for (let node = head.nextElementSibling; node && node.tagName !== 'H2'; node = node.nextElementSibling)
|
|
44
|
+
if (node.tagName !== 'STYLE')
|
|
45
|
+
parts.push(node.outerHTML);
|
|
46
|
+
return { styles: [...doc.querySelectorAll('style')].map(one => one.outerHTML).join(''), html: parts.join('') };
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=regulation-guide.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"regulation-guide.js","sourceRoot":"","sources":["../../client/regulation/regulation-guide.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,IAAI,MAAM,GAAa,EAAE,CAAA;AAEzB,MAAM,UAAU,wBAAwB,CAAC,KAA2B;IAClE,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO,MAAM,CAAA;AACf,CAAC;AAQD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoC,CAAA;AAE7D,6FAA6F;AAC7F,SAAS,aAAa,CAAC,KAAa;IAClC,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI,IAAI,KAAK,EAAE,CAAA;IACvD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;QACrB,SAAS,CAAC,GAAG,CACX,GAAG,EACH,KAAK,CAAC,UAAU,KAAK,OAAO,CAAC;aAC1B,IAAI,CAAC,KAAK,EAAC,QAAQ,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACnH,+CAA+C;aAC9C,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CACrB,CAAA;IACH,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;AAC5B,CAAC;AAED,6CAA6C;AAC7C,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,GAAG,GAAmB,EAAE,CAAA;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAA;QACtC,GAAG,EAAE,gBAAgB,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;IAC3H,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,EAAU;IAC5D,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,KAAK,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,GAAG,EAAE,aAAa,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IAC7D,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAC9B,MAAM,KAAK,GAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACxC,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,kBAAkB;QAAE,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAChK,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAA;AAChH,CAAC","sourcesContent":["/*\n * The guide on the law the application ships beside the company rules (ADR-0187 decisions 10, 11) - its help topics,\n * named once at boot by the application: `configureRegulationGuide({ topics: ['office/rights'] })`. The sections of the\n * topic are the topics a rule answers; with none named the guide and the rule's topic field are not shown.\n */\nlet topics: string[] = []\n\nexport function configureRegulationGuide(guide: { topics: string[] }): void {\n topics = [...guide.topics]\n}\n\nexport function regulationGuideTopics(): string[] {\n return topics\n}\n\nexport interface GuideSection {\n topic: string\n id: string\n title: string\n}\n\nconst documents = new Map<string, Promise<Document | null>>()\n\n/** A guide document as served in the reader's language, read once per topic and language. */\nfunction guideDocument(topic: string): Promise<Document | null> {\n const key = `${document.documentElement.lang}|${topic}`\n if (!documents.has(key))\n documents.set(\n key,\n fetch(`/helps/${topic}.html`)\n .then(async response => (response.ok ? new DOMParser().parseFromString(await response.text(), 'text/html') : null))\n /* A guide not written yet shows no section. */\n .catch(() => null)\n )\n return documents.get(key)!\n}\n\n/** The h2 sections of the guide's topics. */\nexport async function guideSections(): Promise<GuideSection[]> {\n const out: GuideSection[] = []\n for (const topic of topics) {\n const doc = await guideDocument(topic)\n doc?.querySelectorAll('h2[id]').forEach(head => out.push({ topic, id: head.id, title: (head.textContent ?? '').trim() }))\n }\n return out\n}\n\n/**\n * One section of the guide to read on the page (ADR-0187 decision 13): its h2 and what follows up to the next h2, with\n * the document's own styles - the guide is kept as a help document and read here, at the width of the page.\n */\nexport async function guideSectionOf(topic: string, id: string): Promise<{ styles: string; html: string } | null> {\n const doc = await guideDocument(topic)\n const head = doc?.querySelector(`h2[id=\"${CSS.escape(id)}\"]`)\n if (!doc || !head) return null\n const parts: string[] = [head.outerHTML]\n for (let node = head.nextElementSibling; node && node.tagName !== 'H2'; node = node.nextElementSibling) if (node.tagName !== 'STYLE') parts.push(node.outerHTML)\n return { styles: [...doc.querySelectorAll('style')].map(one => one.outerHTML).join(''), html: parts.join('') }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default function route(page: string): "dispute-list" | "regulations" | "seal-use-list" | "regulation-list" | "regulation-detail" | "training-list" | "compliance-case-list" | "privacy-record-list" | "legal-registration-list" | "invention-list" | undefined;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/* The pages this module brings to an application that puts them in its menu (ADR-0187 decision 27). */
|
|
2
|
+
export default function route(page) {
|
|
3
|
+
switch (page) {
|
|
4
|
+
case 'seal-use-list':
|
|
5
|
+
import('./pages/seal-use-list.js');
|
|
6
|
+
return page;
|
|
7
|
+
case 'regulations':
|
|
8
|
+
import('./pages/regulations.js');
|
|
9
|
+
return page;
|
|
10
|
+
case 'regulation-list':
|
|
11
|
+
import('./pages/regulation-list.js');
|
|
12
|
+
return page;
|
|
13
|
+
case 'regulation-detail':
|
|
14
|
+
import('./pages/regulation-detail.js');
|
|
15
|
+
return page;
|
|
16
|
+
case 'training-list':
|
|
17
|
+
import('./pages/training-list.js');
|
|
18
|
+
return page;
|
|
19
|
+
case 'compliance-case-list':
|
|
20
|
+
import('./pages/compliance-case-list.js');
|
|
21
|
+
return page;
|
|
22
|
+
case 'privacy-record-list':
|
|
23
|
+
import('./pages/privacy-record-list.js');
|
|
24
|
+
return page;
|
|
25
|
+
case 'legal-registration-list':
|
|
26
|
+
import('./pages/legal-registration-list.js');
|
|
27
|
+
return page;
|
|
28
|
+
case 'invention-list':
|
|
29
|
+
import('./pages/invention-list.js');
|
|
30
|
+
return page;
|
|
31
|
+
case 'dispute-list':
|
|
32
|
+
import('./pages/dispute-list.js');
|
|
33
|
+
return page;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../client/route.ts"],"names":[],"mappings":"AAAA,uGAAuG;AACvG,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,IAAY;IACxC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,eAAe;YAClB,MAAM,CAAC,0BAA0B,CAAC,CAAA;YAClC,OAAO,IAAI,CAAA;QACb,KAAK,aAAa;YAChB,MAAM,CAAC,wBAAwB,CAAC,CAAA;YAChC,OAAO,IAAI,CAAA;QACb,KAAK,iBAAiB;YACpB,MAAM,CAAC,4BAA4B,CAAC,CAAA;YACpC,OAAO,IAAI,CAAA;QACb,KAAK,mBAAmB;YACtB,MAAM,CAAC,8BAA8B,CAAC,CAAA;YACtC,OAAO,IAAI,CAAA;QACb,KAAK,eAAe;YAClB,MAAM,CAAC,0BAA0B,CAAC,CAAA;YAClC,OAAO,IAAI,CAAA;QACb,KAAK,sBAAsB;YACzB,MAAM,CAAC,iCAAiC,CAAC,CAAA;YACzC,OAAO,IAAI,CAAA;QACb,KAAK,qBAAqB;YACxB,MAAM,CAAC,gCAAgC,CAAC,CAAA;YACxC,OAAO,IAAI,CAAA;QACb,KAAK,yBAAyB;YAC5B,MAAM,CAAC,oCAAoC,CAAC,CAAA;YAC5C,OAAO,IAAI,CAAA;QACb,KAAK,gBAAgB;YACnB,MAAM,CAAC,2BAA2B,CAAC,CAAA;YACnC,OAAO,IAAI,CAAA;QACb,KAAK,cAAc;YACjB,MAAM,CAAC,yBAAyB,CAAC,CAAA;YACjC,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC","sourcesContent":["/* The pages this module brings to an application that puts them in its menu (ADR-0187 decision 27). */\nexport default function route(page: string) {\n switch (page) {\n case 'seal-use-list':\n import('./pages/seal-use-list.js')\n return page\n case 'regulations':\n import('./pages/regulations.js')\n return page\n case 'regulation-list':\n import('./pages/regulation-list.js')\n return page\n case 'regulation-detail':\n import('./pages/regulation-detail.js')\n return page\n case 'training-list':\n import('./pages/training-list.js')\n return page\n case 'compliance-case-list':\n import('./pages/compliance-case-list.js')\n return page\n case 'privacy-record-list':\n import('./pages/privacy-record-list.js')\n return page\n case 'legal-registration-list':\n import('./pages/legal-registration-list.js')\n return page\n case 'invention-list':\n import('./pages/invention-list.js')\n return page\n case 'dispute-list':\n import('./pages/dispute-list.js')\n return page\n }\n}\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const TRAINING_KINDS: string[];
|
|
2
|
+
export declare const TRAINING_METHODS: string[];
|
|
3
|
+
export declare const TRAINING_STATES: string[];
|
|
4
|
+
export declare const COMPLETION_STATUSES: string[];
|
|
5
|
+
/** The word for a code of a set - `trainingWord('kind', 'PENSION')`. */
|
|
6
|
+
export declare const trainingWord: (set: "kind" | "method" | "state" | "status", code?: string | null) => string;
|
|
7
|
+
/** A grid's or a form's options for a set. */
|
|
8
|
+
export declare const trainingOptions: (set: "kind" | "method" | "state" | "status", codes: string[]) => {
|
|
9
|
+
value: string;
|
|
10
|
+
display: string;
|
|
11
|
+
}[];
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { i18next } from '@operato/i18n';
|
|
2
|
+
/* What the training codes read as, in the reader's words - `text.training-kind.SEXUAL_HARASSMENT`, the keys the assistant's read uses too. */
|
|
3
|
+
export const TRAINING_KINDS = ['SEXUAL_HARASSMENT', 'DISABILITY_AWARENESS', 'PENSION', 'PRIVACY', 'SAFETY', 'WORKPLACE_BULLYING', 'OTHER'];
|
|
4
|
+
export const TRAINING_METHODS = ['COLLECTIVE', 'ONLINE', 'OUTSOURCED', 'POSTED'];
|
|
5
|
+
export const TRAINING_STATES = ['DONE', 'WAITING', 'NOT_DONE'];
|
|
6
|
+
export const COMPLETION_STATUSES = ['SUBMITTED', 'CONFIRMED', 'RETURNED'];
|
|
7
|
+
/** The word for a code of a set - `trainingWord('kind', 'PENSION')`. */
|
|
8
|
+
export const trainingWord = (set, code) => (code ? i18next.t(`text.training-${set}.${code}`) : '');
|
|
9
|
+
/** A grid's or a form's options for a set. */
|
|
10
|
+
export const trainingOptions = (set, codes) => codes.map(value => ({ value, display: trainingWord(set, value) }));
|
|
11
|
+
//# sourceMappingURL=training-words.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"training-words.js","sourceRoot":"","sources":["../client/training-words.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAEvC,8IAA8I;AAC9I,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,mBAAmB,EAAE,sBAAsB,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAA;AAC1I,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAA;AAChF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;AAC9D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,UAAU,CAAC,CAAA;AAEzE,wEAAwE;AACxE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAA2C,EAAE,IAAoB,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,GAAG,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;AAC1J,8CAA8C;AAC9C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAA2C,EAAE,KAAe,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA","sourcesContent":["import { i18next } from '@operato/i18n'\n\n/* What the training codes read as, in the reader's words - `text.training-kind.SEXUAL_HARASSMENT`, the keys the assistant's read uses too. */\nexport const TRAINING_KINDS = ['SEXUAL_HARASSMENT', 'DISABILITY_AWARENESS', 'PENSION', 'PRIVACY', 'SAFETY', 'WORKPLACE_BULLYING', 'OTHER']\nexport const TRAINING_METHODS = ['COLLECTIVE', 'ONLINE', 'OUTSOURCED', 'POSTED']\nexport const TRAINING_STATES = ['DONE', 'WAITING', 'NOT_DONE']\nexport const COMPLETION_STATUSES = ['SUBMITTED', 'CONFIRMED', 'RETURNED']\n\n/** The word for a code of a set - `trainingWord('kind', 'PENSION')`. */\nexport const trainingWord = (set: 'kind' | 'method' | 'state' | 'status', code?: string | null) => (code ? i18next.t(`text.training-${set}.${code}`) : '')\n/** A grid's or a form's options for a set. */\nexport const trainingOptions = (set: 'kind' | 'method' | 'state' | 'status', codes: string[]) => codes.map(value => ({ value, display: trainingWord(set, value) }))\n"]}
|