@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,188 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import '@material/web/button/filled-button.js';
|
|
3
|
+
import '@material/web/button/text-button.js';
|
|
4
|
+
import '@operato/input/ox-input-file.js';
|
|
5
|
+
import '@operato/input/ox-select.js';
|
|
6
|
+
import '@operato/popup/ox-popup-actions.js';
|
|
7
|
+
import '@operato/popup/ox-popup-list.js';
|
|
8
|
+
import gql from 'graphql-tag';
|
|
9
|
+
import { css, html, LitElement } from 'lit';
|
|
10
|
+
import { customElement, state } from 'lit/decorators.js';
|
|
11
|
+
import { client, uploadContext } from '@operato/graphql';
|
|
12
|
+
import { i18next, localize } from '@operato/i18n';
|
|
13
|
+
import { notify, openPopup } from '@operato/layout';
|
|
14
|
+
import { CommonPopupStyles, FormFieldStyles, PopupBodyStyles, PopupFieldStyles } from '@operato/styles';
|
|
15
|
+
import { failureOf } from '../words.js';
|
|
16
|
+
/** Opens the form; resolves with the reported invention, or null when the person closed it. */
|
|
17
|
+
export function openInventionReportForm() {
|
|
18
|
+
return new Promise(resolve => {
|
|
19
|
+
let done = null;
|
|
20
|
+
const handle = openPopup(html `<invention-report-form @close=${() => handle.close()} @reported=${(e) => ((done = e.detail), handle.close())}></invention-report-form>`, { backdrop: true, size: 'medium', title: i18next.t('title.invention-report') });
|
|
21
|
+
handle.onclosed = () => resolve(done);
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
const today = () => {
|
|
25
|
+
const now = new Date();
|
|
26
|
+
return new Date(now.getTime() - now.getTimezoneOffset() * 60000).toISOString().slice(0, 10);
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* 직무발명 신고 (ADR-0187 decision 24 · 발명진흥법 §12) - what the invention is, who invented it with the reporter, the
|
|
30
|
+
* papers that show it. The company tells whether it succeeds to the right within four months of the report.
|
|
31
|
+
*/
|
|
32
|
+
let InventionReportForm = class InventionReportForm extends localize(i18next)(LitElement) {
|
|
33
|
+
constructor() {
|
|
34
|
+
super(...arguments);
|
|
35
|
+
this.inventionTitle = '';
|
|
36
|
+
this.content = '';
|
|
37
|
+
this.reportedOn = today();
|
|
38
|
+
this.coInventorIds = [];
|
|
39
|
+
this.files = [];
|
|
40
|
+
this.people = [];
|
|
41
|
+
this.working = false;
|
|
42
|
+
this.message = '';
|
|
43
|
+
}
|
|
44
|
+
/* The house shape of a popup (page-standard sections 7, 8): only the body scrolls, fields are labels above native
|
|
45
|
+
inputs, the one button row is `ox-popup-actions`. */
|
|
46
|
+
static { this.styles = [
|
|
47
|
+
CommonPopupStyles,
|
|
48
|
+
PopupBodyStyles,
|
|
49
|
+
FormFieldStyles,
|
|
50
|
+
PopupFieldStyles,
|
|
51
|
+
css `
|
|
52
|
+
[invalid] {
|
|
53
|
+
color: var(--ui-crit, var(--md-sys-color-error));
|
|
54
|
+
font-size: var(--ui-t-small, 11.5px);
|
|
55
|
+
}
|
|
56
|
+
[invalid]:empty {
|
|
57
|
+
display: none;
|
|
58
|
+
}
|
|
59
|
+
[guide] p {
|
|
60
|
+
margin: 0;
|
|
61
|
+
color: var(--ui-muted);
|
|
62
|
+
line-height: var(--popup-line-height);
|
|
63
|
+
}
|
|
64
|
+
textarea {
|
|
65
|
+
min-height: 8em;
|
|
66
|
+
resize: vertical;
|
|
67
|
+
}
|
|
68
|
+
ox-select {
|
|
69
|
+
width: 100%;
|
|
70
|
+
}
|
|
71
|
+
`
|
|
72
|
+
]; }
|
|
73
|
+
async connectedCallback() {
|
|
74
|
+
super.connectedCallback();
|
|
75
|
+
const response = await client.query({ query: gql `query { inventionColleagues { id name departmentName } }`, fetchPolicy: 'no-cache' });
|
|
76
|
+
this.people = (response.data?.inventionColleagues ?? []).map((one) => ({ value: one.id, display: one.departmentName ? `${one.name} · ${one.departmentName}` : one.name }));
|
|
77
|
+
}
|
|
78
|
+
render() {
|
|
79
|
+
const named = this.people.filter(one => this.coInventorIds.includes(one.value)).map(one => one.display);
|
|
80
|
+
return html `
|
|
81
|
+
<div class="body">
|
|
82
|
+
<div guide><p>${i18next.t('text.invention-report-guide')}</p></div>
|
|
83
|
+
|
|
84
|
+
<label class="field">
|
|
85
|
+
<span>${i18next.t('field.invention-title')}</span>
|
|
86
|
+
<input .value=${this.inventionTitle} @input=${(e) => (this.inventionTitle = e.target.value)} />
|
|
87
|
+
</label>
|
|
88
|
+
|
|
89
|
+
<label class="field">
|
|
90
|
+
<span>${i18next.t('field.invention-content')}</span>
|
|
91
|
+
<textarea .value=${this.content} @input=${(e) => (this.content = e.target.value)}></textarea>
|
|
92
|
+
</label>
|
|
93
|
+
|
|
94
|
+
<label class="field">
|
|
95
|
+
<span>${i18next.t('field.invention-reported-on')}</span>
|
|
96
|
+
<input type="date" .value=${this.reportedOn} @input=${(e) => (this.reportedOn = e.target.value)} />
|
|
97
|
+
</label>
|
|
98
|
+
|
|
99
|
+
<label class="field">
|
|
100
|
+
<span>${i18next.t('field.invention-co-inventors')}</span>
|
|
101
|
+
<ox-select multiple .value=${this.coInventorIds} @change=${(e) => (this.coInventorIds = [].concat(e.detail ?? []).filter(Boolean))}>
|
|
102
|
+
<span slot="label">${named.length ? named.join(', ') : '—'}</span>
|
|
103
|
+
<ox-popup-list align-left nowrap with-search multiple>${this.people.map(one => html `<div option value=${one.value}>${one.display}</div>`)}</ox-popup-list>
|
|
104
|
+
</ox-select>
|
|
105
|
+
</label>
|
|
106
|
+
|
|
107
|
+
<div class="field">
|
|
108
|
+
<span>${i18next.t('field.invention-files')}</span>
|
|
109
|
+
<ox-input-file multiple .progress=${this.progress} @change=${(e) => (this.files = [...(e.detail ?? [])])}></ox-input-file>
|
|
110
|
+
<span invalid>${this.message}</span>
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<ox-popup-actions>
|
|
115
|
+
<md-text-button slot="cancel" @click=${() => this.dispatchEvent(new CustomEvent('close'))}>${i18next.t('button.cancel')}</md-text-button>
|
|
116
|
+
<md-filled-button slot="confirm" ?disabled=${this.working} @click=${() => this.report()}>${i18next.t('button.invention-report')}</md-filled-button>
|
|
117
|
+
</ox-popup-actions>
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
120
|
+
async report() {
|
|
121
|
+
this.message = '';
|
|
122
|
+
this.working = true;
|
|
123
|
+
try {
|
|
124
|
+
const response = await client.mutate({
|
|
125
|
+
mutation: gql `
|
|
126
|
+
mutation ($invention: NewInvention!, $files: [Upload!]) {
|
|
127
|
+
reportInvention(invention: $invention, files: $files) { id decisionDueOn }
|
|
128
|
+
}
|
|
129
|
+
`,
|
|
130
|
+
variables: { invention: { title: this.inventionTitle, content: this.content, reportedOn: this.reportedOn || null, coInventorIds: this.coInventorIds }, files: this.files },
|
|
131
|
+
...(this.files.length ? { context: uploadContext((fraction) => (this.progress = fraction)) } : {})
|
|
132
|
+
});
|
|
133
|
+
if (response.errors?.length)
|
|
134
|
+
throw response;
|
|
135
|
+
const reported = response.data.reportInvention;
|
|
136
|
+
notify({ message: i18next.t('text.invention-reported', { day: reported.decisionDueOn }) });
|
|
137
|
+
this.dispatchEvent(new CustomEvent('reported', { detail: reported }));
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
this.message = failureOf(error);
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
this.working = false;
|
|
144
|
+
this.progress = undefined;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
};
|
|
148
|
+
__decorate([
|
|
149
|
+
state(),
|
|
150
|
+
__metadata("design:type", Object)
|
|
151
|
+
], InventionReportForm.prototype, "inventionTitle", void 0);
|
|
152
|
+
__decorate([
|
|
153
|
+
state(),
|
|
154
|
+
__metadata("design:type", Object)
|
|
155
|
+
], InventionReportForm.prototype, "content", void 0);
|
|
156
|
+
__decorate([
|
|
157
|
+
state(),
|
|
158
|
+
__metadata("design:type", Object)
|
|
159
|
+
], InventionReportForm.prototype, "reportedOn", void 0);
|
|
160
|
+
__decorate([
|
|
161
|
+
state(),
|
|
162
|
+
__metadata("design:type", Array)
|
|
163
|
+
], InventionReportForm.prototype, "coInventorIds", void 0);
|
|
164
|
+
__decorate([
|
|
165
|
+
state(),
|
|
166
|
+
__metadata("design:type", Array)
|
|
167
|
+
], InventionReportForm.prototype, "files", void 0);
|
|
168
|
+
__decorate([
|
|
169
|
+
state(),
|
|
170
|
+
__metadata("design:type", Array)
|
|
171
|
+
], InventionReportForm.prototype, "people", void 0);
|
|
172
|
+
__decorate([
|
|
173
|
+
state(),
|
|
174
|
+
__metadata("design:type", Object)
|
|
175
|
+
], InventionReportForm.prototype, "working", void 0);
|
|
176
|
+
__decorate([
|
|
177
|
+
state(),
|
|
178
|
+
__metadata("design:type", Number)
|
|
179
|
+
], InventionReportForm.prototype, "progress", void 0);
|
|
180
|
+
__decorate([
|
|
181
|
+
state(),
|
|
182
|
+
__metadata("design:type", Object)
|
|
183
|
+
], InventionReportForm.prototype, "message", void 0);
|
|
184
|
+
InventionReportForm = __decorate([
|
|
185
|
+
customElement('invention-report-form')
|
|
186
|
+
], InventionReportForm);
|
|
187
|
+
export { InventionReportForm };
|
|
188
|
+
//# sourceMappingURL=invention-report-form.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invention-report-form.js","sourceRoot":"","sources":["../../client/components/invention-report-form.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/filled-button.js'\nimport '@material/web/button/text-button.js'\nimport '@operato/input/ox-input-file.js'\nimport '@operato/input/ox-select.js'\nimport '@operato/popup/ox-popup-actions.js'\nimport '@operato/popup/ox-popup-list.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, state } from 'lit/decorators.js'\n\nimport { client, uploadContext } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { notify, openPopup } from '@operato/layout'\nimport { CommonPopupStyles, FormFieldStyles, PopupBodyStyles, PopupFieldStyles } from '@operato/styles'\n\nimport { failureOf } from '../words.js'\n\ntype Choice = { value: string; display: string }\n\n/** Opens the form; resolves with the reported invention, or null when the person closed it. */\nexport function openInventionReportForm(): Promise<any | null> {\n return new Promise(resolve => {\n let done: any = null\n const handle: any = openPopup(\n html`<invention-report-form @close=${() => handle.close()} @reported=${(e: CustomEvent) => ((done = e.detail), handle.close())}></invention-report-form>`,\n { backdrop: true, size: 'medium', title: i18next.t('title.invention-report') }\n )\n handle.onclosed = () => resolve(done)\n })\n}\n\nconst today = () => {\n const now = new Date()\n return new Date(now.getTime() - now.getTimezoneOffset() * 60000).toISOString().slice(0, 10)\n}\n\n/**\n * 직무발명 신고 (ADR-0187 decision 24 · 발명진흥법 §12) - what the invention is, who invented it with the reporter, the\n * papers that show it. The company tells whether it succeeds to the right within four months of the report.\n */\n@customElement('invention-report-form')\nexport class InventionReportForm extends localize(i18next)(LitElement) {\n /* The house shape of a popup (page-standard sections 7, 8): only the body scrolls, fields are labels above native\n inputs, the one button row is `ox-popup-actions`. */\n static styles = [\n CommonPopupStyles,\n PopupBodyStyles,\n FormFieldStyles,\n PopupFieldStyles,\n css`\n [invalid] {\n color: var(--ui-crit, var(--md-sys-color-error));\n font-size: var(--ui-t-small, 11.5px);\n }\n [invalid]:empty {\n display: none;\n }\n [guide] p {\n margin: 0;\n color: var(--ui-muted);\n line-height: var(--popup-line-height);\n }\n textarea {\n min-height: 8em;\n resize: vertical;\n }\n ox-select {\n width: 100%;\n }\n `\n ]\n\n @state() private inventionTitle = ''\n @state() private content = ''\n @state() private reportedOn = today()\n @state() private coInventorIds: string[] = []\n @state() private files: File[] = []\n @state() private people: Choice[] = []\n @state() private working = false\n @state() private progress?: number\n @state() private message = ''\n\n async connectedCallback() {\n super.connectedCallback()\n const response = await client.query({ query: gql`query { inventionColleagues { id name departmentName } }`, fetchPolicy: 'no-cache' })\n this.people = (response.data?.inventionColleagues ?? []).map((one: any) => ({ value: one.id, display: one.departmentName ? `${one.name} · ${one.departmentName}` : one.name }))\n }\n\n render() {\n const named = this.people.filter(one => this.coInventorIds.includes(one.value)).map(one => one.display)\n return html`\n <div class=\"body\">\n <div guide><p>${i18next.t('text.invention-report-guide')}</p></div>\n\n <label class=\"field\">\n <span>${i18next.t('field.invention-title')}</span>\n <input .value=${this.inventionTitle} @input=${(e: any) => (this.inventionTitle = e.target.value)} />\n </label>\n\n <label class=\"field\">\n <span>${i18next.t('field.invention-content')}</span>\n <textarea .value=${this.content} @input=${(e: any) => (this.content = e.target.value)}></textarea>\n </label>\n\n <label class=\"field\">\n <span>${i18next.t('field.invention-reported-on')}</span>\n <input type=\"date\" .value=${this.reportedOn} @input=${(e: any) => (this.reportedOn = e.target.value)} />\n </label>\n\n <label class=\"field\">\n <span>${i18next.t('field.invention-co-inventors')}</span>\n <ox-select multiple .value=${this.coInventorIds} @change=${(e: CustomEvent) => (this.coInventorIds = [].concat(e.detail ?? []).filter(Boolean))}>\n <span slot=\"label\">${named.length ? named.join(', ') : '—'}</span>\n <ox-popup-list align-left nowrap with-search multiple>${this.people.map(one => html`<div option value=${one.value}>${one.display}</div>`)}</ox-popup-list>\n </ox-select>\n </label>\n\n <div class=\"field\">\n <span>${i18next.t('field.invention-files')}</span>\n <ox-input-file multiple .progress=${this.progress} @change=${(e: CustomEvent) => (this.files = [...(e.detail ?? [])])}></ox-input-file>\n <span invalid>${this.message}</span>\n </div>\n </div>\n\n <ox-popup-actions>\n <md-text-button slot=\"cancel\" @click=${() => this.dispatchEvent(new CustomEvent('close'))}>${i18next.t('button.cancel')}</md-text-button>\n <md-filled-button slot=\"confirm\" ?disabled=${this.working} @click=${() => this.report()}>${i18next.t('button.invention-report')}</md-filled-button>\n </ox-popup-actions>\n `\n }\n\n private async report() {\n this.message = ''\n this.working = true\n try {\n const response = await client.mutate({\n mutation: gql`\n mutation ($invention: NewInvention!, $files: [Upload!]) {\n reportInvention(invention: $invention, files: $files) { id decisionDueOn }\n }\n `,\n variables: { invention: { title: this.inventionTitle, content: this.content, reportedOn: this.reportedOn || null, coInventorIds: this.coInventorIds }, files: this.files },\n ...(this.files.length ? { context: uploadContext((fraction: number) => (this.progress = fraction)) } : {})\n })\n if ((response as any).errors?.length) throw response\n const reported = response.data.reportInvention\n notify({ message: i18next.t('text.invention-reported', { day: reported.decisionDueOn }) })\n this.dispatchEvent(new CustomEvent('reported', { detail: reported }))\n } catch (error) {\n this.message = failureOf(error)\n } finally {\n this.working = false\n this.progress = undefined\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import '@material/web/button/filled-button.js';
|
|
2
|
+
import { LitElement } from 'lit';
|
|
3
|
+
export declare class ComplianceTodo extends LitElement {
|
|
4
|
+
static styles: import("lit").CSSResult;
|
|
5
|
+
input: {
|
|
6
|
+
headline?: string;
|
|
7
|
+
address?: string;
|
|
8
|
+
};
|
|
9
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import '@material/web/button/filled-button.js';
|
|
3
|
+
import { css, html, LitElement } from 'lit';
|
|
4
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
5
|
+
import { i18next } from '@operato/i18n';
|
|
6
|
+
import { navigate } from '@operato/shell';
|
|
7
|
+
/*
|
|
8
|
+
* 법무 할 일 (ADR-0187 decisions 18, 23) - what the worklist to-do shows: what is asked, by when, and the way to the
|
|
9
|
+
* record. Recording it there closes the to-do; nothing is answered here.
|
|
10
|
+
*/
|
|
11
|
+
let ComplianceTodo = class ComplianceTodo extends LitElement {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
this.input = {};
|
|
15
|
+
}
|
|
16
|
+
static { this.styles = css `
|
|
17
|
+
:host {
|
|
18
|
+
display: block;
|
|
19
|
+
padding: var(--spacing-large, 12px);
|
|
20
|
+
font-size: var(--ui-t-body, 13px);
|
|
21
|
+
line-height: 1.6;
|
|
22
|
+
color: var(--ui-ink);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
p {
|
|
26
|
+
margin: 0 0 var(--spacing-medium, 8px);
|
|
27
|
+
}
|
|
28
|
+
`; }
|
|
29
|
+
render() {
|
|
30
|
+
const { headline = '', address } = this.input ?? {};
|
|
31
|
+
return html `<p>${headline}</p>
|
|
32
|
+
${address ? html `<md-filled-button @click=${() => navigate(address)}>${i18next.t('button.compliance-todo-open')}</md-filled-button>` : ''}`;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
__decorate([
|
|
36
|
+
property({ attribute: false }),
|
|
37
|
+
__metadata("design:type", Object)
|
|
38
|
+
], ComplianceTodo.prototype, "input", void 0);
|
|
39
|
+
ComplianceTodo = __decorate([
|
|
40
|
+
customElement('compliance-todo')
|
|
41
|
+
], ComplianceTodo);
|
|
42
|
+
export { ComplianceTodo };
|
|
43
|
+
//# sourceMappingURL=legal-todo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"legal-todo.js","sourceRoot":"","sources":["../../client/components/legal-todo.ts"],"names":[],"mappings":";AAAA,OAAO,uCAAuC,CAAA;AAE9C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC;;;GAGG;AAEI,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,UAAU;IAAvC;;QAe2B,UAAK,GAA4C,EAAE,CAAA;IAOrF,CAAC;aArBQ,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;GAYlB,AAZY,CAYZ;IAID,MAAM;QACJ,MAAM,EAAE,QAAQ,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,EAAE,CAAA;QACnD,OAAO,IAAI,CAAA,MAAM,QAAQ;QACrB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,4BAA4B,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IAC/I,CAAC;;AAN+B;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;6CAAoD;AAfxE,cAAc;IAD1B,aAAa,CAAC,iBAAiB,CAAC;GACpB,cAAc,CAsB1B","sourcesContent":["import '@material/web/button/filled-button.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { i18next } from '@operato/i18n'\nimport { navigate } from '@operato/shell'\n\n/*\n * 법무 할 일 (ADR-0187 decisions 18, 23) - what the worklist to-do shows: what is asked, by when, and the way to the\n * record. Recording it there closes the to-do; nothing is answered here.\n */\n@customElement('compliance-todo')\nexport class ComplianceTodo extends LitElement {\n static styles = css`\n :host {\n display: block;\n padding: var(--spacing-large, 12px);\n font-size: var(--ui-t-body, 13px);\n line-height: 1.6;\n color: var(--ui-ink);\n }\n\n p {\n margin: 0 0 var(--spacing-medium, 8px);\n }\n `\n\n @property({ attribute: false }) input: { headline?: string; address?: string } = {}\n\n render() {\n const { headline = '', address } = this.input ?? {}\n return html`<p>${headline}</p>\n ${address ? html`<md-filled-button @click=${() => navigate(address)}>${i18next.t('button.compliance-todo-open')}</md-filled-button>` : ''}`\n }\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import '@material/web/button/text-button.js';
|
|
2
|
+
import { LitElement, nothing } from 'lit';
|
|
3
|
+
declare const ComplianceMyTrainings_base: (new (...args: any[]) => LitElement) & typeof LitElement;
|
|
4
|
+
/**
|
|
5
|
+
* 내 의무 교육 (ADR-0187 decisions 10, 17, 18) - this year's trainings the person must take: by when, whether done, the
|
|
6
|
+
* sessions of it, and the certificate of one taken elsewhere. Only a certificate the manager confirmed is done.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ComplianceMyTrainings extends ComplianceMyTrainings_base {
|
|
9
|
+
static styles: import("lit").CSSResult;
|
|
10
|
+
private rows;
|
|
11
|
+
private loaded;
|
|
12
|
+
private message;
|
|
13
|
+
connectedCallback(): void;
|
|
14
|
+
render(): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
15
|
+
private fetch;
|
|
16
|
+
private upload;
|
|
17
|
+
}
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import '@material/web/button/text-button.js';
|
|
3
|
+
import gql from 'graphql-tag';
|
|
4
|
+
import { css, html, LitElement, nothing } from 'lit';
|
|
5
|
+
import { customElement, state } from 'lit/decorators.js';
|
|
6
|
+
import { client } from '@operato/graphql';
|
|
7
|
+
import { i18next, localize } from '@operato/i18n';
|
|
8
|
+
import { trainingWord } from '../training-words.js';
|
|
9
|
+
import { failureOf } from '../words.js';
|
|
10
|
+
import { openTrainingCertificateForm } from './training-certificate-form.js';
|
|
11
|
+
/**
|
|
12
|
+
* 내 의무 교육 (ADR-0187 decisions 10, 17, 18) - this year's trainings the person must take: by when, whether done, the
|
|
13
|
+
* sessions of it, and the certificate of one taken elsewhere. Only a certificate the manager confirmed is done.
|
|
14
|
+
*/
|
|
15
|
+
let ComplianceMyTrainings = class ComplianceMyTrainings extends localize(i18next)(LitElement) {
|
|
16
|
+
constructor() {
|
|
17
|
+
super(...arguments);
|
|
18
|
+
this.rows = [];
|
|
19
|
+
this.loaded = false;
|
|
20
|
+
this.message = '';
|
|
21
|
+
}
|
|
22
|
+
static { this.styles = css `
|
|
23
|
+
:host {
|
|
24
|
+
display: block;
|
|
25
|
+
color: var(--ui-ink);
|
|
26
|
+
font-size: var(--ui-t-body, 13px);
|
|
27
|
+
}
|
|
28
|
+
table {
|
|
29
|
+
width: 100%;
|
|
30
|
+
border-collapse: collapse;
|
|
31
|
+
}
|
|
32
|
+
th,
|
|
33
|
+
td {
|
|
34
|
+
text-align: left;
|
|
35
|
+
vertical-align: top;
|
|
36
|
+
padding: var(--spacing-small, 4px) var(--spacing-medium, 8px);
|
|
37
|
+
border-bottom: 1px solid var(--ui-line-soft, var(--md-sys-color-outline-variant));
|
|
38
|
+
}
|
|
39
|
+
th {
|
|
40
|
+
color: var(--ui-muted);
|
|
41
|
+
font-weight: normal;
|
|
42
|
+
}
|
|
43
|
+
[state='DONE'] {
|
|
44
|
+
color: var(--ui-ok, var(--md-sys-color-primary));
|
|
45
|
+
}
|
|
46
|
+
[state='NOT_DONE'] {
|
|
47
|
+
color: var(--ui-crit, var(--md-sys-color-error));
|
|
48
|
+
}
|
|
49
|
+
[muted] {
|
|
50
|
+
color: var(--ui-muted);
|
|
51
|
+
}
|
|
52
|
+
p {
|
|
53
|
+
margin: 0;
|
|
54
|
+
}
|
|
55
|
+
`; }
|
|
56
|
+
connectedCallback() {
|
|
57
|
+
super.connectedCallback();
|
|
58
|
+
this.fetch();
|
|
59
|
+
}
|
|
60
|
+
render() {
|
|
61
|
+
if (this.message)
|
|
62
|
+
return html `<p muted>${this.message}</p>`;
|
|
63
|
+
if (!this.loaded)
|
|
64
|
+
return nothing;
|
|
65
|
+
if (!this.rows.length)
|
|
66
|
+
return html `<p muted>${i18next.t('text.training-mine-empty')}</p>`;
|
|
67
|
+
return html `<table>
|
|
68
|
+
<thead>
|
|
69
|
+
<tr>
|
|
70
|
+
<th>${i18next.t('field.training-kind')}</th>
|
|
71
|
+
<th>${i18next.t('field.training-due-on')}</th>
|
|
72
|
+
<th>${i18next.t('field.training-state')}</th>
|
|
73
|
+
<th>${i18next.t('field.training-session')}</th>
|
|
74
|
+
<th></th>
|
|
75
|
+
</tr>
|
|
76
|
+
</thead>
|
|
77
|
+
<tbody>
|
|
78
|
+
${this.rows.map(row => html `<tr>
|
|
79
|
+
<td>${trainingWord('kind', row.kind)}</td>
|
|
80
|
+
<td>${row.dueOn}</td>
|
|
81
|
+
<td>
|
|
82
|
+
<p state=${row.state}>${trainingWord('state', row.state)}</p>
|
|
83
|
+
${row.completion?.status === 'CONFIRMED' ? html `<p muted>${row.completion.completedOn}</p>` : nothing}
|
|
84
|
+
${row.state === 'NOT_DONE' && row.completion?.status === 'RETURNED'
|
|
85
|
+
? html `<p muted>${i18next.t('text.training-returned', { reason: row.completion.returnReason ?? '' })}</p>`
|
|
86
|
+
: nothing}
|
|
87
|
+
</td>
|
|
88
|
+
<td>
|
|
89
|
+
${row.sessions.length
|
|
90
|
+
? row.sessions.map((one) => html `<p>${one.name} · ${one.endsOn && one.endsOn !== one.startsOn ? `${one.startsOn} ~ ${one.endsOn}` : one.startsOn} · ${trainingWord('method', one.method)}</p>`)
|
|
91
|
+
: html `<p muted>${i18next.t('text.training-no-session-yet')}</p>`}
|
|
92
|
+
</td>
|
|
93
|
+
<td>
|
|
94
|
+
${row.state === 'NOT_DONE'
|
|
95
|
+
? html `<md-text-button @click=${() => this.upload(row)}>${i18next.t('button.training-certificate-upload')}</md-text-button>`
|
|
96
|
+
: nothing}
|
|
97
|
+
</td>
|
|
98
|
+
</tr>`)}
|
|
99
|
+
</tbody>
|
|
100
|
+
</table>`;
|
|
101
|
+
}
|
|
102
|
+
async fetch() {
|
|
103
|
+
try {
|
|
104
|
+
const response = await client.query({
|
|
105
|
+
query: gql `
|
|
106
|
+
query {
|
|
107
|
+
myTrainings {
|
|
108
|
+
kind year dueOn state
|
|
109
|
+
completion { id status completedOn returnReason }
|
|
110
|
+
sessions { id name method startsOn endsOn }
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
`,
|
|
114
|
+
fetchPolicy: 'network-only'
|
|
115
|
+
});
|
|
116
|
+
if (response.errors?.length)
|
|
117
|
+
throw response;
|
|
118
|
+
this.rows = response.data.myTrainings;
|
|
119
|
+
this.message = '';
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
this.message = failureOf(error);
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
this.loaded = true;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
async upload(row) {
|
|
129
|
+
if (await openTrainingCertificateForm({ kind: row.kind, year: row.year, sessions: row.sessions }))
|
|
130
|
+
this.fetch();
|
|
131
|
+
}
|
|
132
|
+
};
|
|
133
|
+
__decorate([
|
|
134
|
+
state(),
|
|
135
|
+
__metadata("design:type", Array)
|
|
136
|
+
], ComplianceMyTrainings.prototype, "rows", void 0);
|
|
137
|
+
__decorate([
|
|
138
|
+
state(),
|
|
139
|
+
__metadata("design:type", Object)
|
|
140
|
+
], ComplianceMyTrainings.prototype, "loaded", void 0);
|
|
141
|
+
__decorate([
|
|
142
|
+
state(),
|
|
143
|
+
__metadata("design:type", Object)
|
|
144
|
+
], ComplianceMyTrainings.prototype, "message", void 0);
|
|
145
|
+
ComplianceMyTrainings = __decorate([
|
|
146
|
+
customElement('compliance-my-trainings')
|
|
147
|
+
], ComplianceMyTrainings);
|
|
148
|
+
export { ComplianceMyTrainings };
|
|
149
|
+
//# sourceMappingURL=my-trainings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"my-trainings.js","sourceRoot":"","sources":["../../client/components/my-trainings.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/text-button.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement, nothing } from 'lit'\nimport { customElement, state } from 'lit/decorators.js'\n\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\n\nimport { trainingWord } from '../training-words.js'\nimport { failureOf } from '../words.js'\nimport { openTrainingCertificateForm } from './training-certificate-form.js'\n\n/**\n * 내 의무 교육 (ADR-0187 decisions 10, 17, 18) - this year's trainings the person must take: by when, whether done, the\n * sessions of it, and the certificate of one taken elsewhere. Only a certificate the manager confirmed is done.\n */\n@customElement('compliance-my-trainings')\nexport class ComplianceMyTrainings extends localize(i18next)(LitElement) {\n static styles = css`\n :host {\n display: block;\n color: var(--ui-ink);\n font-size: var(--ui-t-body, 13px);\n }\n table {\n width: 100%;\n border-collapse: collapse;\n }\n th,\n td {\n text-align: left;\n vertical-align: top;\n padding: var(--spacing-small, 4px) var(--spacing-medium, 8px);\n border-bottom: 1px solid var(--ui-line-soft, var(--md-sys-color-outline-variant));\n }\n th {\n color: var(--ui-muted);\n font-weight: normal;\n }\n [state='DONE'] {\n color: var(--ui-ok, var(--md-sys-color-primary));\n }\n [state='NOT_DONE'] {\n color: var(--ui-crit, var(--md-sys-color-error));\n }\n [muted] {\n color: var(--ui-muted);\n }\n p {\n margin: 0;\n }\n `\n\n @state() private rows: any[] = []\n @state() private loaded = false\n @state() private message = ''\n\n connectedCallback() {\n super.connectedCallback()\n this.fetch()\n }\n\n render() {\n if (this.message) return html`<p muted>${this.message}</p>`\n if (!this.loaded) return nothing\n if (!this.rows.length) return html`<p muted>${i18next.t('text.training-mine-empty')}</p>`\n return html`<table>\n <thead>\n <tr>\n <th>${i18next.t('field.training-kind')}</th>\n <th>${i18next.t('field.training-due-on')}</th>\n <th>${i18next.t('field.training-state')}</th>\n <th>${i18next.t('field.training-session')}</th>\n <th></th>\n </tr>\n </thead>\n <tbody>\n ${this.rows.map(\n row => html`<tr>\n <td>${trainingWord('kind', row.kind)}</td>\n <td>${row.dueOn}</td>\n <td>\n <p state=${row.state}>${trainingWord('state', row.state)}</p>\n ${row.completion?.status === 'CONFIRMED' ? html`<p muted>${row.completion.completedOn}</p>` : nothing}\n ${row.state === 'NOT_DONE' && row.completion?.status === 'RETURNED'\n ? html`<p muted>${i18next.t('text.training-returned', { reason: row.completion.returnReason ?? '' })}</p>`\n : nothing}\n </td>\n <td>\n ${row.sessions.length\n ? row.sessions.map(\n (one: any) =>\n html`<p>${one.name} · ${one.endsOn && one.endsOn !== one.startsOn ? `${one.startsOn} ~ ${one.endsOn}` : one.startsOn} · ${trainingWord('method', one.method)}</p>`\n )\n : html`<p muted>${i18next.t('text.training-no-session-yet')}</p>`}\n </td>\n <td>\n ${row.state === 'NOT_DONE'\n ? html`<md-text-button @click=${() => this.upload(row)}>${i18next.t('button.training-certificate-upload')}</md-text-button>`\n : nothing}\n </td>\n </tr>`\n )}\n </tbody>\n </table>`\n }\n\n private async fetch() {\n try {\n const response = await client.query({\n query: gql`\n query {\n myTrainings {\n kind year dueOn state\n completion { id status completedOn returnReason }\n sessions { id name method startsOn endsOn }\n }\n }\n `,\n fetchPolicy: 'network-only'\n })\n if ((response as any).errors?.length) throw response\n this.rows = response.data.myTrainings\n this.message = ''\n } catch (error) {\n this.message = failureOf(error)\n } finally {\n this.loaded = true\n }\n }\n\n private async upload(row: any) {\n if (await openTrainingCertificateForm({ kind: row.kind, year: row.year, sessions: row.sessions })) this.fetch()\n }\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import '@material/web/button/filled-button.js';
|
|
2
|
+
import '@material/web/button/text-button.js';
|
|
3
|
+
import '@operato/input/ox-input-select-buttons.js';
|
|
4
|
+
import '@operato/popup/ox-popup-actions.js';
|
|
5
|
+
import { LitElement } from 'lit';
|
|
6
|
+
/** Opens the form; resolves with the new rule, or null when the person closed it. */
|
|
7
|
+
export declare function openRegulationForm(): Promise<any | null>;
|
|
8
|
+
declare const RegulationForm_base: (new (...args: any[]) => LitElement) & typeof LitElement;
|
|
9
|
+
/**
|
|
10
|
+
* 새 규정 (ADR-0187 decision 2) - the code, the name, what it is, and the guide's sections it answers. A rule of working
|
|
11
|
+
* conditions is an annex of the work rules, not 「그 밖」 - the form says so beside the kind.
|
|
12
|
+
*/
|
|
13
|
+
export declare class RegulationForm extends RegulationForm_base {
|
|
14
|
+
static styles: import("lit").CSSResult[];
|
|
15
|
+
private code;
|
|
16
|
+
private name;
|
|
17
|
+
private kind;
|
|
18
|
+
private topics;
|
|
19
|
+
private sections;
|
|
20
|
+
private working;
|
|
21
|
+
private message;
|
|
22
|
+
connectedCallback(): Promise<void>;
|
|
23
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
24
|
+
private create;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import '@material/web/button/filled-button.js';
|
|
3
|
+
import '@material/web/button/text-button.js';
|
|
4
|
+
import '@operato/input/ox-input-select-buttons.js';
|
|
5
|
+
import '@operato/popup/ox-popup-actions.js';
|
|
6
|
+
import gql from 'graphql-tag';
|
|
7
|
+
import { css, html, LitElement, nothing } from 'lit';
|
|
8
|
+
import { customElement, state } from 'lit/decorators.js';
|
|
9
|
+
import { client } from '@operato/graphql';
|
|
10
|
+
import { i18next, localize } from '@operato/i18n';
|
|
11
|
+
import { openPopup } from '@operato/layout';
|
|
12
|
+
import { CommonPopupStyles, FormFieldStyles, PopupBodyStyles, PopupFieldStyles } from '@operato/styles';
|
|
13
|
+
import { guideSections } from '../regulation/regulation-guide.js';
|
|
14
|
+
import { failureOf, REGULATION_KINDS, wordOf } from '../words.js';
|
|
15
|
+
/** Opens the form; resolves with the new rule, or null when the person closed it. */
|
|
16
|
+
export function openRegulationForm() {
|
|
17
|
+
return new Promise(resolve => {
|
|
18
|
+
let done = null;
|
|
19
|
+
const handle = openPopup(html `<regulation-form @close=${() => handle.close()} @created=${(e) => ((done = e.detail), handle.close())}></regulation-form>`, {
|
|
20
|
+
backdrop: true,
|
|
21
|
+
size: 'medium',
|
|
22
|
+
title: i18next.t('title.regulation-new')
|
|
23
|
+
});
|
|
24
|
+
handle.onclosed = () => resolve(done);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 새 규정 (ADR-0187 decision 2) - the code, the name, what it is, and the guide's sections it answers. A rule of working
|
|
29
|
+
* conditions is an annex of the work rules, not 「그 밖」 - the form says so beside the kind.
|
|
30
|
+
*/
|
|
31
|
+
let RegulationForm = class RegulationForm extends localize(i18next)(LitElement) {
|
|
32
|
+
constructor() {
|
|
33
|
+
super(...arguments);
|
|
34
|
+
this.code = '';
|
|
35
|
+
this.name = '';
|
|
36
|
+
this.kind = 'WORK_RULES_ANNEX';
|
|
37
|
+
this.topics = [];
|
|
38
|
+
this.sections = [];
|
|
39
|
+
this.working = false;
|
|
40
|
+
this.message = '';
|
|
41
|
+
}
|
|
42
|
+
static { this.styles = [
|
|
43
|
+
CommonPopupStyles,
|
|
44
|
+
PopupBodyStyles,
|
|
45
|
+
FormFieldStyles,
|
|
46
|
+
PopupFieldStyles,
|
|
47
|
+
css `
|
|
48
|
+
[invalid] {
|
|
49
|
+
color: var(--ui-crit, var(--md-sys-color-error));
|
|
50
|
+
font-size: var(--ui-t-small, 11.5px);
|
|
51
|
+
}
|
|
52
|
+
[invalid]:empty {
|
|
53
|
+
display: none;
|
|
54
|
+
}
|
|
55
|
+
[guide] p {
|
|
56
|
+
margin: 0;
|
|
57
|
+
color: var(--ui-muted);
|
|
58
|
+
line-height: var(--popup-line-height);
|
|
59
|
+
}
|
|
60
|
+
ox-input-select-buttons {
|
|
61
|
+
align-self: flex-start;
|
|
62
|
+
}
|
|
63
|
+
`
|
|
64
|
+
]; }
|
|
65
|
+
async connectedCallback() {
|
|
66
|
+
super.connectedCallback();
|
|
67
|
+
this.sections = await guideSections();
|
|
68
|
+
}
|
|
69
|
+
render() {
|
|
70
|
+
return html `
|
|
71
|
+
<div class="body">
|
|
72
|
+
<label class="field">
|
|
73
|
+
<span>${i18next.t('field.regulation-code')}</span>
|
|
74
|
+
<input .value=${this.code} maxlength="40" @input=${(e) => (this.code = e.target.value)} />
|
|
75
|
+
<span>${i18next.t('text.regulation-code-hint')}</span>
|
|
76
|
+
</label>
|
|
77
|
+
<label class="field">
|
|
78
|
+
<span>${i18next.t('field.regulation-name')}</span>
|
|
79
|
+
<input .value=${this.name} @input=${(e) => (this.name = e.target.value)} />
|
|
80
|
+
</label>
|
|
81
|
+
<div class="field">
|
|
82
|
+
<span>${i18next.t('field.regulation-kind')}</span>
|
|
83
|
+
<ox-input-select-buttons
|
|
84
|
+
.value=${this.kind}
|
|
85
|
+
.options=${REGULATION_KINDS.map(code => ({ display: wordOf('regulation-kind', code), value: code }))}
|
|
86
|
+
@change=${(e) => e.detail && (this.kind = e.detail)}
|
|
87
|
+
></ox-input-select-buttons>
|
|
88
|
+
<div guide><p>${i18next.t(`text.regulation-kind-guide-${this.kind.toLowerCase().replace(/_/g, '-')}`)}</p></div>
|
|
89
|
+
</div>
|
|
90
|
+
${this.sections.length
|
|
91
|
+
? html `<div class="field">
|
|
92
|
+
<span>${i18next.t('field.regulation-topics')}</span>
|
|
93
|
+
<ox-input-select-buttons multiple .value=${this.topics} .options=${this.sections.map(one => ({ display: one.title, value: one.id }))} @change=${(e) => (this.topics = e.detail ?? [])}></ox-input-select-buttons>
|
|
94
|
+
</div>`
|
|
95
|
+
: nothing}
|
|
96
|
+
<span invalid>${this.message}</span>
|
|
97
|
+
</div>
|
|
98
|
+
|
|
99
|
+
<ox-popup-actions>
|
|
100
|
+
<md-text-button slot="cancel" @click=${() => this.dispatchEvent(new CustomEvent('close'))}>${i18next.t('button.cancel')}</md-text-button>
|
|
101
|
+
<md-filled-button slot="confirm" ?disabled=${this.working} @click=${() => this.create()}>${i18next.t('button.regulation-new')}</md-filled-button>
|
|
102
|
+
</ox-popup-actions>
|
|
103
|
+
`;
|
|
104
|
+
}
|
|
105
|
+
async create() {
|
|
106
|
+
this.message = '';
|
|
107
|
+
this.working = true;
|
|
108
|
+
try {
|
|
109
|
+
const response = await client.mutate({
|
|
110
|
+
mutation: gql `
|
|
111
|
+
mutation ($regulation: NewRegulation!) {
|
|
112
|
+
createRegulation(regulation: $regulation) { id }
|
|
113
|
+
}
|
|
114
|
+
`,
|
|
115
|
+
variables: { regulation: { code: this.code.trim(), name: this.name.trim(), kind: this.kind, topics: this.topics } }
|
|
116
|
+
});
|
|
117
|
+
if (response.errors?.length)
|
|
118
|
+
throw response;
|
|
119
|
+
this.dispatchEvent(new CustomEvent('created', { detail: response.data.createRegulation }));
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
this.message = failureOf(error);
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
this.working = false;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
__decorate([
|
|
130
|
+
state(),
|
|
131
|
+
__metadata("design:type", Object)
|
|
132
|
+
], RegulationForm.prototype, "code", void 0);
|
|
133
|
+
__decorate([
|
|
134
|
+
state(),
|
|
135
|
+
__metadata("design:type", Object)
|
|
136
|
+
], RegulationForm.prototype, "name", void 0);
|
|
137
|
+
__decorate([
|
|
138
|
+
state(),
|
|
139
|
+
__metadata("design:type", Object)
|
|
140
|
+
], RegulationForm.prototype, "kind", void 0);
|
|
141
|
+
__decorate([
|
|
142
|
+
state(),
|
|
143
|
+
__metadata("design:type", Array)
|
|
144
|
+
], RegulationForm.prototype, "topics", void 0);
|
|
145
|
+
__decorate([
|
|
146
|
+
state(),
|
|
147
|
+
__metadata("design:type", Array)
|
|
148
|
+
], RegulationForm.prototype, "sections", void 0);
|
|
149
|
+
__decorate([
|
|
150
|
+
state(),
|
|
151
|
+
__metadata("design:type", Object)
|
|
152
|
+
], RegulationForm.prototype, "working", void 0);
|
|
153
|
+
__decorate([
|
|
154
|
+
state(),
|
|
155
|
+
__metadata("design:type", Object)
|
|
156
|
+
], RegulationForm.prototype, "message", void 0);
|
|
157
|
+
RegulationForm = __decorate([
|
|
158
|
+
customElement('regulation-form')
|
|
159
|
+
], RegulationForm);
|
|
160
|
+
export { RegulationForm };
|
|
161
|
+
//# sourceMappingURL=regulation-form.js.map
|