@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.
Files changed (356) hide show
  1. package/dist-client/bootstrap.d.ts +2 -0
  2. package/dist-client/bootstrap.js +28 -0
  3. package/dist-client/bootstrap.js.map +1 -0
  4. package/dist-client/components/compliance-case-form.d.ts +42 -0
  5. package/dist-client/components/compliance-case-form.js +313 -0
  6. package/dist-client/components/compliance-case-form.js.map +1 -0
  7. package/dist-client/components/compliance-case-sheet.d.ts +35 -0
  8. package/dist-client/components/compliance-case-sheet.js +335 -0
  9. package/dist-client/components/compliance-case-sheet.js.map +1 -0
  10. package/dist-client/components/compliance-my-inventions.d.ts +17 -0
  11. package/dist-client/components/compliance-my-inventions.js +133 -0
  12. package/dist-client/components/compliance-my-inventions.js.map +1 -0
  13. package/dist-client/components/compliance-my-privacy-requests.d.ts +34 -0
  14. package/dist-client/components/compliance-my-privacy-requests.js +232 -0
  15. package/dist-client/components/compliance-my-privacy-requests.js.map +1 -0
  16. package/dist-client/components/compliance-my-reports.d.ts +19 -0
  17. package/dist-client/components/compliance-my-reports.js +137 -0
  18. package/dist-client/components/compliance-my-reports.js.map +1 -0
  19. package/dist-client/components/guide-link.d.ts +13 -0
  20. package/dist-client/components/guide-link.js +55 -0
  21. package/dist-client/components/guide-link.js.map +1 -0
  22. package/dist-client/components/invention-report-form.d.ts +30 -0
  23. package/dist-client/components/invention-report-form.js +188 -0
  24. package/dist-client/components/invention-report-form.js.map +1 -0
  25. package/dist-client/components/legal-todo.d.ts +10 -0
  26. package/dist-client/components/legal-todo.js +43 -0
  27. package/dist-client/components/legal-todo.js.map +1 -0
  28. package/dist-client/components/my-trainings.d.ts +18 -0
  29. package/dist-client/components/my-trainings.js +149 -0
  30. package/dist-client/components/my-trainings.js.map +1 -0
  31. package/dist-client/components/regulation-form.d.ts +26 -0
  32. package/dist-client/components/regulation-form.js +161 -0
  33. package/dist-client/components/regulation-form.js.map +1 -0
  34. package/dist-client/components/seal-use-form.d.ts +47 -0
  35. package/dist-client/components/seal-use-form.js +300 -0
  36. package/dist-client/components/seal-use-form.js.map +1 -0
  37. package/dist-client/components/training-attendance-form.d.ts +37 -0
  38. package/dist-client/components/training-attendance-form.js +186 -0
  39. package/dist-client/components/training-attendance-form.js.map +1 -0
  40. package/dist-client/components/training-certificate-form.d.ts +41 -0
  41. package/dist-client/components/training-certificate-form.js +198 -0
  42. package/dist-client/components/training-certificate-form.js.map +1 -0
  43. package/dist-client/components/training-session-form.d.ts +39 -0
  44. package/dist-client/components/training-session-form.js +270 -0
  45. package/dist-client/components/training-session-form.js.map +1 -0
  46. package/dist-client/components/training-setting-form.d.ts +45 -0
  47. package/dist-client/components/training-setting-form.js +175 -0
  48. package/dist-client/components/training-setting-form.js.map +1 -0
  49. package/dist-client/index.d.ts +4 -0
  50. package/dist-client/index.js +8 -0
  51. package/dist-client/index.js.map +1 -0
  52. package/dist-client/legal-record/dispute-calendar-source.d.ts +1 -0
  53. package/dist-client/legal-record/dispute-calendar-source.js +51 -0
  54. package/dist-client/legal-record/dispute-calendar-source.js.map +1 -0
  55. package/dist-client/legal-record/legal-child-grid.d.ts +31 -0
  56. package/dist-client/legal-record/legal-child-grid.js +76 -0
  57. package/dist-client/legal-record/legal-child-grid.js.map +1 -0
  58. package/dist-client/legal-record/legal-codes.d.ts +3 -0
  59. package/dist-client/legal-record/legal-codes.js +5 -0
  60. package/dist-client/legal-record/legal-codes.js.map +1 -0
  61. package/dist-client/legal-record/legal-grid.d.ts +59 -0
  62. package/dist-client/legal-record/legal-grid.js +68 -0
  63. package/dist-client/legal-record/legal-grid.js.map +1 -0
  64. package/dist-client/legal-record/legal-record-files.d.ts +26 -0
  65. package/dist-client/legal-record/legal-record-files.js +162 -0
  66. package/dist-client/legal-record/legal-record-files.js.map +1 -0
  67. package/dist-client/pages/compliance-case-list.d.ts +35 -0
  68. package/dist-client/pages/compliance-case-list.js +112 -0
  69. package/dist-client/pages/compliance-case-list.js.map +1 -0
  70. package/dist-client/pages/dispute-list.d.ts +57 -0
  71. package/dist-client/pages/dispute-list.js +156 -0
  72. package/dist-client/pages/dispute-list.js.map +1 -0
  73. package/dist-client/pages/invention-list.d.ts +57 -0
  74. package/dist-client/pages/invention-list.js +166 -0
  75. package/dist-client/pages/invention-list.js.map +1 -0
  76. package/dist-client/pages/legal-registration-list.d.ts +63 -0
  77. package/dist-client/pages/legal-registration-list.js +206 -0
  78. package/dist-client/pages/legal-registration-list.js.map +1 -0
  79. package/dist-client/pages/privacy-record-list.d.ts +52 -0
  80. package/dist-client/pages/privacy-record-list.js +225 -0
  81. package/dist-client/pages/privacy-record-list.js.map +1 -0
  82. package/dist-client/pages/regulation-detail.d.ts +43 -0
  83. package/dist-client/pages/regulation-detail.js +370 -0
  84. package/dist-client/pages/regulation-detail.js.map +1 -0
  85. package/dist-client/pages/regulation-list.d.ts +52 -0
  86. package/dist-client/pages/regulation-list.js +144 -0
  87. package/dist-client/pages/regulation-list.js.map +1 -0
  88. package/dist-client/pages/regulations.d.ts +49 -0
  89. package/dist-client/pages/regulations.js +412 -0
  90. package/dist-client/pages/regulations.js.map +1 -0
  91. package/dist-client/pages/seal-use-list.d.ts +57 -0
  92. package/dist-client/pages/seal-use-list.js +168 -0
  93. package/dist-client/pages/seal-use-list.js.map +1 -0
  94. package/dist-client/pages/training-list.d.ts +51 -0
  95. package/dist-client/pages/training-list.js +333 -0
  96. package/dist-client/pages/training-list.js.map +1 -0
  97. package/dist-client/regulation/regulation-fragments.d.ts +1 -0
  98. package/dist-client/regulation/regulation-fragments.js +37 -0
  99. package/dist-client/regulation/regulation-fragments.js.map +1 -0
  100. package/dist-client/regulation/regulation-guide.d.ts +19 -0
  101. package/dist-client/regulation/regulation-guide.js +48 -0
  102. package/dist-client/regulation/regulation-guide.js.map +1 -0
  103. package/dist-client/route.d.ts +1 -0
  104. package/dist-client/route.js +36 -0
  105. package/dist-client/route.js.map +1 -0
  106. package/dist-client/training-words.d.ts +11 -0
  107. package/dist-client/training-words.js +11 -0
  108. package/dist-client/training-words.js.map +1 -0
  109. package/dist-client/tsconfig.tsbuildinfo +1 -0
  110. package/dist-client/words.d.ts +15 -0
  111. package/dist-client/words.js +20 -0
  112. package/dist-client/words.js.map +1 -0
  113. package/dist-server/activities/index.d.ts +6 -0
  114. package/dist-server/activities/index.js +35 -0
  115. package/dist-server/activities/index.js.map +1 -0
  116. package/dist-server/activities/legal-todo-activity-names.d.ts +1 -0
  117. package/dist-server/activities/legal-todo-activity-names.js +5 -0
  118. package/dist-server/activities/legal-todo-activity-names.js.map +1 -0
  119. package/dist-server/activities/legal-todo-activity.d.ts +37 -0
  120. package/dist-server/activities/legal-todo-activity.js +41 -0
  121. package/dist-server/activities/legal-todo-activity.js.map +1 -0
  122. package/dist-server/activities/regulation-activity-names.d.ts +1 -0
  123. package/dist-server/activities/regulation-activity-names.js +5 -0
  124. package/dist-server/activities/regulation-activity-names.js.map +1 -0
  125. package/dist-server/activities/regulation-activity.d.ts +48 -0
  126. package/dist-server/activities/regulation-activity.js +47 -0
  127. package/dist-server/activities/regulation-activity.js.map +1 -0
  128. package/dist-server/activities/seal-use-activity-names.d.ts +2 -0
  129. package/dist-server/activities/seal-use-activity-names.js +6 -0
  130. package/dist-server/activities/seal-use-activity-names.js.map +1 -0
  131. package/dist-server/activities/seal-use-activity.d.ts +48 -0
  132. package/dist-server/activities/seal-use-activity.js +47 -0
  133. package/dist-server/activities/seal-use-activity.js.map +1 -0
  134. package/dist-server/index.d.ts +2 -0
  135. package/dist-server/index.js +21 -0
  136. package/dist-server/index.js.map +1 -0
  137. package/dist-server/role-tasks.d.ts +2 -0
  138. package/dist-server/role-tasks.js +28 -0
  139. package/dist-server/role-tasks.js.map +1 -0
  140. package/dist-server/service/common/correction.d.ts +32 -0
  141. package/dist-server/service/common/correction.js +98 -0
  142. package/dist-server/service/common/correction.js.map +1 -0
  143. package/dist-server/service/common/employee-reader.d.ts +11 -0
  144. package/dist-server/service/common/employee-reader.js +46 -0
  145. package/dist-server/service/common/employee-reader.js.map +1 -0
  146. package/dist-server/service/common/legal-todo.d.ts +19 -0
  147. package/dist-server/service/common/legal-todo.js +37 -0
  148. package/dist-server/service/common/legal-todo.js.map +1 -0
  149. package/dist-server/service/compliance-case/compliance-case-mutation.d.ts +9 -0
  150. package/dist-server/service/compliance-case/compliance-case-mutation.js +73 -0
  151. package/dist-server/service/compliance-case/compliance-case-mutation.js.map +1 -0
  152. package/dist-server/service/compliance-case/compliance-case-query.d.ts +28 -0
  153. package/dist-server/service/compliance-case/compliance-case-query.js +212 -0
  154. package/dist-server/service/compliance-case/compliance-case-query.js.map +1 -0
  155. package/dist-server/service/compliance-case/compliance-case-rules.d.ts +71 -0
  156. package/dist-server/service/compliance-case/compliance-case-rules.js +111 -0
  157. package/dist-server/service/compliance-case/compliance-case-rules.js.map +1 -0
  158. package/dist-server/service/compliance-case/compliance-case-service.d.ts +76 -0
  159. package/dist-server/service/compliance-case/compliance-case-service.js +425 -0
  160. package/dist-server/service/compliance-case/compliance-case-service.js.map +1 -0
  161. package/dist-server/service/compliance-case/compliance-case-type.d.ts +56 -0
  162. package/dist-server/service/compliance-case/compliance-case-type.js +200 -0
  163. package/dist-server/service/compliance-case/compliance-case-type.js.map +1 -0
  164. package/dist-server/service/compliance-case/compliance-case.d.ts +76 -0
  165. package/dist-server/service/compliance-case/compliance-case.js +260 -0
  166. package/dist-server/service/compliance-case/compliance-case.js.map +1 -0
  167. package/dist-server/service/compliance-case/index.d.ts +7 -0
  168. package/dist-server/service/compliance-case/index.js +17 -0
  169. package/dist-server/service/compliance-case/index.js.map +1 -0
  170. package/dist-server/service/dispute/dispute-mutation.d.ts +9 -0
  171. package/dist-server/service/dispute/dispute-mutation.js +64 -0
  172. package/dist-server/service/dispute/dispute-mutation.js.map +1 -0
  173. package/dist-server/service/dispute/dispute-query.d.ts +16 -0
  174. package/dist-server/service/dispute/dispute-query.js +124 -0
  175. package/dist-server/service/dispute/dispute-query.js.map +1 -0
  176. package/dist-server/service/dispute/dispute-rules.d.ts +20 -0
  177. package/dist-server/service/dispute/dispute-rules.js +42 -0
  178. package/dist-server/service/dispute/dispute-rules.js.map +1 -0
  179. package/dist-server/service/dispute/dispute-service.d.ts +17 -0
  180. package/dist-server/service/dispute/dispute-service.js +96 -0
  181. package/dist-server/service/dispute/dispute-service.js.map +1 -0
  182. package/dist-server/service/dispute/dispute-type.d.ts +39 -0
  183. package/dist-server/service/dispute/dispute-type.js +149 -0
  184. package/dist-server/service/dispute/dispute-type.js.map +1 -0
  185. package/dist-server/service/dispute/dispute.d.ts +48 -0
  186. package/dist-server/service/dispute/dispute.js +198 -0
  187. package/dist-server/service/dispute/dispute.js.map +1 -0
  188. package/dist-server/service/dispute/index.d.ts +5 -0
  189. package/dist-server/service/dispute/index.js +9 -0
  190. package/dist-server/service/dispute/index.js.map +1 -0
  191. package/dist-server/service/index.d.ts +46 -0
  192. package/dist-server/service/index.js +112 -0
  193. package/dist-server/service/index.js.map +1 -0
  194. package/dist-server/service/invention/index.d.ts +5 -0
  195. package/dist-server/service/invention/index.js +9 -0
  196. package/dist-server/service/invention/index.js.map +1 -0
  197. package/dist-server/service/invention/invention-mutation.d.ts +10 -0
  198. package/dist-server/service/invention/invention-mutation.js +79 -0
  199. package/dist-server/service/invention/invention-mutation.js.map +1 -0
  200. package/dist-server/service/invention/invention-query.d.ts +18 -0
  201. package/dist-server/service/invention/invention-query.js +141 -0
  202. package/dist-server/service/invention/invention-query.js.map +1 -0
  203. package/dist-server/service/invention/invention-rules.d.ts +28 -0
  204. package/dist-server/service/invention/invention-rules.js +54 -0
  205. package/dist-server/service/invention/invention-rules.js.map +1 -0
  206. package/dist-server/service/invention/invention-service.d.ts +25 -0
  207. package/dist-server/service/invention/invention-service.js +176 -0
  208. package/dist-server/service/invention/invention-service.js.map +1 -0
  209. package/dist-server/service/invention/invention-type.d.ts +34 -0
  210. package/dist-server/service/invention/invention-type.js +129 -0
  211. package/dist-server/service/invention/invention-type.js.map +1 -0
  212. package/dist-server/service/invention/invention.d.ts +55 -0
  213. package/dist-server/service/invention/invention.js +214 -0
  214. package/dist-server/service/invention/invention.js.map +1 -0
  215. package/dist-server/service/legal-record/attachment-readers.d.ts +1 -0
  216. package/dist-server/service/legal-record/attachment-readers.js +27 -0
  217. package/dist-server/service/legal-record/attachment-readers.js.map +1 -0
  218. package/dist-server/service/legal-record/days.d.ts +7 -0
  219. package/dist-server/service/legal-record/days.js +26 -0
  220. package/dist-server/service/legal-record/days.js.map +1 -0
  221. package/dist-server/service/legal-record/legal-record-support.d.ts +24 -0
  222. package/dist-server/service/legal-record/legal-record-support.js +51 -0
  223. package/dist-server/service/legal-record/legal-record-support.js.map +1 -0
  224. package/dist-server/service/legal-registration/centre-change-subscriber.d.ts +9 -0
  225. package/dist-server/service/legal-registration/centre-change-subscriber.js +50 -0
  226. package/dist-server/service/legal-registration/centre-change-subscriber.js.map +1 -0
  227. package/dist-server/service/legal-registration/index.d.ts +7 -0
  228. package/dist-server/service/legal-registration/index.js +11 -0
  229. package/dist-server/service/legal-registration/index.js.map +1 -0
  230. package/dist-server/service/legal-registration/legal-registration-mutation.d.ts +10 -0
  231. package/dist-server/service/legal-registration/legal-registration-mutation.js +77 -0
  232. package/dist-server/service/legal-registration/legal-registration-mutation.js.map +1 -0
  233. package/dist-server/service/legal-registration/legal-registration-query.d.ts +26 -0
  234. package/dist-server/service/legal-registration/legal-registration-query.js +199 -0
  235. package/dist-server/service/legal-registration/legal-registration-query.js.map +1 -0
  236. package/dist-server/service/legal-registration/legal-registration-rules.d.ts +80 -0
  237. package/dist-server/service/legal-registration/legal-registration-rules.js +106 -0
  238. package/dist-server/service/legal-registration/legal-registration-rules.js.map +1 -0
  239. package/dist-server/service/legal-registration/legal-registration-service.d.ts +37 -0
  240. package/dist-server/service/legal-registration/legal-registration-service.js +248 -0
  241. package/dist-server/service/legal-registration/legal-registration-service.js.map +1 -0
  242. package/dist-server/service/legal-registration/legal-registration-type.d.ts +55 -0
  243. package/dist-server/service/legal-registration/legal-registration-type.js +207 -0
  244. package/dist-server/service/legal-registration/legal-registration-type.js.map +1 -0
  245. package/dist-server/service/legal-registration/legal-registration.d.ts +76 -0
  246. package/dist-server/service/legal-registration/legal-registration.js +311 -0
  247. package/dist-server/service/legal-registration/legal-registration.js.map +1 -0
  248. package/dist-server/service/privacy-record/index.d.ts +5 -0
  249. package/dist-server/service/privacy-record/index.js +9 -0
  250. package/dist-server/service/privacy-record/index.js.map +1 -0
  251. package/dist-server/service/privacy-record/privacy-record-mutation.d.ts +7 -0
  252. package/dist-server/service/privacy-record/privacy-record-mutation.js +56 -0
  253. package/dist-server/service/privacy-record/privacy-record-mutation.js.map +1 -0
  254. package/dist-server/service/privacy-record/privacy-record-query.d.ts +18 -0
  255. package/dist-server/service/privacy-record/privacy-record-query.js +131 -0
  256. package/dist-server/service/privacy-record/privacy-record-query.js.map +1 -0
  257. package/dist-server/service/privacy-record/privacy-record-rules.d.ts +52 -0
  258. package/dist-server/service/privacy-record/privacy-record-rules.js +91 -0
  259. package/dist-server/service/privacy-record/privacy-record-rules.js.map +1 -0
  260. package/dist-server/service/privacy-record/privacy-record-service.d.ts +33 -0
  261. package/dist-server/service/privacy-record/privacy-record-service.js +133 -0
  262. package/dist-server/service/privacy-record/privacy-record-service.js.map +1 -0
  263. package/dist-server/service/privacy-record/privacy-record-type.d.ts +40 -0
  264. package/dist-server/service/privacy-record/privacy-record-type.js +153 -0
  265. package/dist-server/service/privacy-record/privacy-record-type.js.map +1 -0
  266. package/dist-server/service/privacy-record/privacy-record.d.ts +69 -0
  267. package/dist-server/service/privacy-record/privacy-record.js +245 -0
  268. package/dist-server/service/privacy-record/privacy-record.js.map +1 -0
  269. package/dist-server/service/regulation/index.d.ts +5 -0
  270. package/dist-server/service/regulation/index.js +9 -0
  271. package/dist-server/service/regulation/index.js.map +1 -0
  272. package/dist-server/service/regulation/regulation-mutation.d.ts +15 -0
  273. package/dist-server/service/regulation/regulation-mutation.js +152 -0
  274. package/dist-server/service/regulation/regulation-mutation.js.map +1 -0
  275. package/dist-server/service/regulation/regulation-query.d.ts +10 -0
  276. package/dist-server/service/regulation/regulation-query.js +109 -0
  277. package/dist-server/service/regulation/regulation-query.js.map +1 -0
  278. package/dist-server/service/regulation/regulation-read.d.ts +21 -0
  279. package/dist-server/service/regulation/regulation-read.js +111 -0
  280. package/dist-server/service/regulation/regulation-read.js.map +1 -0
  281. package/dist-server/service/regulation/regulation-rules.d.ts +83 -0
  282. package/dist-server/service/regulation/regulation-rules.js +170 -0
  283. package/dist-server/service/regulation/regulation-rules.js.map +1 -0
  284. package/dist-server/service/regulation/regulation-service.d.ts +63 -0
  285. package/dist-server/service/regulation/regulation-service.js +365 -0
  286. package/dist-server/service/regulation/regulation-service.js.map +1 -0
  287. package/dist-server/service/regulation/regulation-type.d.ts +61 -0
  288. package/dist-server/service/regulation/regulation-type.js +226 -0
  289. package/dist-server/service/regulation/regulation-type.js.map +1 -0
  290. package/dist-server/service/regulation/regulation.d.ts +113 -0
  291. package/dist-server/service/regulation/regulation.js +382 -0
  292. package/dist-server/service/regulation/regulation.js.map +1 -0
  293. package/dist-server/service/seal-use/index.d.ts +5 -0
  294. package/dist-server/service/seal-use/index.js +9 -0
  295. package/dist-server/service/seal-use/index.js.map +1 -0
  296. package/dist-server/service/seal-use/seal-use-mutation.d.ts +8 -0
  297. package/dist-server/service/seal-use/seal-use-mutation.js +69 -0
  298. package/dist-server/service/seal-use/seal-use-mutation.js.map +1 -0
  299. package/dist-server/service/seal-use/seal-use-query.d.ts +14 -0
  300. package/dist-server/service/seal-use/seal-use-query.js +100 -0
  301. package/dist-server/service/seal-use/seal-use-query.js.map +1 -0
  302. package/dist-server/service/seal-use/seal-use-rules.d.ts +35 -0
  303. package/dist-server/service/seal-use/seal-use-rules.js +64 -0
  304. package/dist-server/service/seal-use/seal-use-rules.js.map +1 -0
  305. package/dist-server/service/seal-use/seal-use-service.d.ts +20 -0
  306. package/dist-server/service/seal-use/seal-use-service.js +168 -0
  307. package/dist-server/service/seal-use/seal-use-service.js.map +1 -0
  308. package/dist-server/service/seal-use/seal-use-type.d.ts +24 -0
  309. package/dist-server/service/seal-use/seal-use-type.js +93 -0
  310. package/dist-server/service/seal-use/seal-use-type.js.map +1 -0
  311. package/dist-server/service/seal-use/seal-use.d.ts +57 -0
  312. package/dist-server/service/seal-use/seal-use.js +181 -0
  313. package/dist-server/service/seal-use/seal-use.js.map +1 -0
  314. package/dist-server/service/training/index.d.ts +5 -0
  315. package/dist-server/service/training/index.js +9 -0
  316. package/dist-server/service/training/index.js.map +1 -0
  317. package/dist-server/service/training/training-checks.d.ts +20 -0
  318. package/dist-server/service/training/training-checks.js +56 -0
  319. package/dist-server/service/training/training-checks.js.map +1 -0
  320. package/dist-server/service/training/training-kinds.d.ts +24 -0
  321. package/dist-server/service/training/training-kinds.js +42 -0
  322. package/dist-server/service/training/training-kinds.js.map +1 -0
  323. package/dist-server/service/training/training-mutation.d.ts +14 -0
  324. package/dist-server/service/training/training-mutation.js +140 -0
  325. package/dist-server/service/training/training-mutation.js.map +1 -0
  326. package/dist-server/service/training/training-query.d.ts +21 -0
  327. package/dist-server/service/training/training-query.js +196 -0
  328. package/dist-server/service/training/training-query.js.map +1 -0
  329. package/dist-server/service/training/training-read.d.ts +5 -0
  330. package/dist-server/service/training/training-read.js +35 -0
  331. package/dist-server/service/training/training-read.js.map +1 -0
  332. package/dist-server/service/training/training-register.d.ts +1 -0
  333. package/dist-server/service/training/training-register.js +27 -0
  334. package/dist-server/service/training/training-register.js.map +1 -0
  335. package/dist-server/service/training/training-rules.d.ts +72 -0
  336. package/dist-server/service/training/training-rules.js +143 -0
  337. package/dist-server/service/training/training-rules.js.map +1 -0
  338. package/dist-server/service/training/training-service.d.ts +98 -0
  339. package/dist-server/service/training/training-service.js +455 -0
  340. package/dist-server/service/training/training-service.js.map +1 -0
  341. package/dist-server/service/training/training-type.d.ts +94 -0
  342. package/dist-server/service/training/training-type.js +352 -0
  343. package/dist-server/service/training/training-type.js.map +1 -0
  344. package/dist-server/service/training/training.d.ts +127 -0
  345. package/dist-server/service/training/training.js +448 -0
  346. package/dist-server/service/training/training.js.map +1 -0
  347. package/dist-server/tsconfig.tsbuildinfo +1 -0
  348. package/package.json +61 -4
  349. package/things-factory.config.js +19 -0
  350. package/translations/en.json +610 -0
  351. package/translations/es.json +610 -0
  352. package/translations/ja.json +610 -0
  353. package/translations/ko.json +610 -0
  354. package/translations/ms.json +610 -0
  355. package/translations/zh.json +610 -0
  356. 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