@things-factory/compliance 0.0.0-stage → 10.1.255

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 +37 -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 +612 -0
  351. package/translations/es.json +612 -0
  352. package/translations/ja.json +612 -0
  353. package/translations/ko.json +612 -0
  354. package/translations/ms.json +612 -0
  355. package/translations/zh.json +612 -0
  356. package/README.md +0 -3
@@ -0,0 +1,45 @@
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 '@things-factory/announcement/dist-client/components/audience-picker.js';
6
+ import { LitElement } from 'lit';
7
+ type Audience = {
8
+ scope: string;
9
+ targetId: string;
10
+ targetName?: string;
11
+ };
12
+ /** A kind as the domain has it - what `trainingKinds` answers. */
13
+ export interface TrainingKindRow {
14
+ code: string;
15
+ basis: string;
16
+ cycle: string;
17
+ audience: string;
18
+ retentionYears: number;
19
+ toConfirm?: boolean;
20
+ enabled: boolean;
21
+ dueDay: string;
22
+ audiences: Audience[];
23
+ memo?: string | null;
24
+ }
25
+ /** Opens the form; resolves true when the setting was saved. */
26
+ export declare function openTrainingSettingForm(kind: TrainingKindRow): Promise<boolean>;
27
+ declare const TrainingSettingForm_base: (new (...args: any[]) => LitElement) & typeof LitElement;
28
+ /**
29
+ * 교육 종류 설정 (ADR-0187 decision 15) - whether the domain trains a kind, the day of each year it is due, who must take
30
+ * it, and why. What the law says of it is shown above.
31
+ */
32
+ export declare class TrainingSettingForm extends TrainingSettingForm_base {
33
+ static styles: import("lit").CSSResult[];
34
+ kind: TrainingKindRow;
35
+ private enabled;
36
+ private dueDay;
37
+ private audiences;
38
+ private memo;
39
+ private working;
40
+ private message;
41
+ connectedCallback(): void;
42
+ render(): import("lit-html").TemplateResult<1>;
43
+ private save;
44
+ }
45
+ export {};
@@ -0,0 +1,175 @@
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 '@things-factory/announcement/dist-client/components/audience-picker.js';
7
+ import gql from 'graphql-tag';
8
+ import { css, html, LitElement } from 'lit';
9
+ import { customElement, property, state } from 'lit/decorators.js';
10
+ import { client } from '@operato/graphql';
11
+ import { i18next, localize } from '@operato/i18n';
12
+ import { notify, openPopup } from '@operato/layout';
13
+ import { CommonPopupStyles, FormFieldStyles, PopupBodyStyles, PopupFieldStyles } from '@operato/styles';
14
+ import { trainingWord } from '../training-words.js';
15
+ import { failureOf } from '../words.js';
16
+ /** Opens the form; resolves true when the setting was saved. */
17
+ export function openTrainingSettingForm(kind) {
18
+ return new Promise(resolve => {
19
+ let done = false;
20
+ const handle = openPopup(html `<training-setting-form .kind=${kind} @close=${() => handle.close()} @saved=${() => ((done = true), handle.close())}></training-setting-form>`, { backdrop: true, size: 'medium', title: i18next.t('title.training-setting', { kind: trainingWord('kind', kind.code) }) });
21
+ handle.onclosed = () => resolve(done);
22
+ });
23
+ }
24
+ /**
25
+ * 교육 종류 설정 (ADR-0187 decision 15) - whether the domain trains a kind, the day of each year it is due, who must take
26
+ * it, and why. What the law says of it is shown above.
27
+ */
28
+ let TrainingSettingForm = class TrainingSettingForm extends localize(i18next)(LitElement) {
29
+ constructor() {
30
+ super(...arguments);
31
+ this.enabled = 'ON';
32
+ this.dueDay = '';
33
+ this.audiences = [];
34
+ this.memo = '';
35
+ this.working = false;
36
+ this.message = '';
37
+ }
38
+ static { this.styles = [
39
+ CommonPopupStyles,
40
+ PopupBodyStyles,
41
+ FormFieldStyles,
42
+ PopupFieldStyles,
43
+ css `
44
+ [invalid] {
45
+ color: var(--ui-crit, var(--md-sys-color-error));
46
+ font-size: var(--ui-t-small, 11.5px);
47
+ }
48
+ [invalid]:empty {
49
+ display: none;
50
+ }
51
+ [guide] p {
52
+ margin: 0;
53
+ color: var(--ui-muted);
54
+ line-height: var(--popup-line-height);
55
+ }
56
+ ox-input-select-buttons {
57
+ align-self: flex-start;
58
+ }
59
+ `
60
+ ]; }
61
+ connectedCallback() {
62
+ super.connectedCallback();
63
+ const { enabled, dueDay, audiences, memo } = this.kind;
64
+ Object.assign(this, { enabled: enabled ? 'ON' : 'OFF', dueDay, audiences: audiences ?? [], memo: memo ?? '' });
65
+ }
66
+ render() {
67
+ const kind = this.kind;
68
+ return html `
69
+ <div class="body">
70
+ <div guide>
71
+ <p>${i18next.t('field.training-basis')}: ${kind.basis}${kind.toConfirm ? ` · ${i18next.t('text.training-basis-to-confirm')}` : ''}</p>
72
+ <p>${i18next.t('field.training-audience-by-law')}: ${kind.audience} · ${i18next.t('text.training-retention', { years: kind.retentionYears })}</p>
73
+ </div>
74
+
75
+ <div class="field">
76
+ <ox-input-select-buttons
77
+ .value=${this.enabled}
78
+ .options=${['ON', 'OFF'].map(value => ({ value, display: i18next.t(`text.training-${value.toLowerCase()}`) }))}
79
+ @change=${(e) => e.detail && (this.enabled = e.detail)}
80
+ ></ox-input-select-buttons>
81
+ </div>
82
+
83
+ <label class="field">
84
+ <span>${i18next.t('field.training-due-day')}</span>
85
+ <input .value=${this.dueDay} placeholder="12-31" maxlength="5" @input=${(e) => (this.dueDay = e.target.value)} />
86
+ <span>${i18next.t('text.training-due-day-hint')}</span>
87
+ </label>
88
+
89
+ <div class="field">
90
+ <span>${i18next.t('field.training-audiences')}</span>
91
+ <announcement-audience-picker .value=${this.audiences} @change=${(e) => Array.isArray(e.detail) && (this.audiences = e.detail)}></announcement-audience-picker>
92
+ <span>${i18next.t('text.training-audiences-hint')}</span>
93
+ </div>
94
+
95
+ <label class="field">
96
+ <span>${i18next.t('field.training-memo')}</span>
97
+ <textarea rows="3" .value=${this.memo} @input=${(e) => (this.memo = e.target.value)}></textarea>
98
+ <span invalid>${this.message}</span>
99
+ </label>
100
+ </div>
101
+
102
+ <ox-popup-actions>
103
+ <md-text-button slot="cancel" @click=${() => this.dispatchEvent(new CustomEvent('close'))}>${i18next.t('button.cancel')}</md-text-button>
104
+ <md-filled-button slot="confirm" ?disabled=${this.working} @click=${() => this.save()}>${i18next.t('button.save')}</md-filled-button>
105
+ </ox-popup-actions>
106
+ `;
107
+ }
108
+ async save() {
109
+ this.message = '';
110
+ this.working = true;
111
+ try {
112
+ const response = await client.mutate({
113
+ mutation: gql `
114
+ mutation ($patches: [TrainingSettingPatch!]!) {
115
+ saveTrainingSettings(patches: $patches) { id }
116
+ }
117
+ `,
118
+ variables: {
119
+ patches: [
120
+ {
121
+ kind: this.kind.code,
122
+ enabled: this.enabled === 'ON',
123
+ dueDay: this.dueDay.trim() || null,
124
+ audiences: this.audiences.map(({ scope, targetId, targetName }) => ({ scope, targetId, targetName })),
125
+ memo: this.memo
126
+ }
127
+ ]
128
+ }
129
+ });
130
+ if (response.errors?.length)
131
+ throw response;
132
+ notify({ message: i18next.t('text.training-saved') });
133
+ this.dispatchEvent(new CustomEvent('saved'));
134
+ }
135
+ catch (error) {
136
+ this.message = failureOf(error);
137
+ }
138
+ finally {
139
+ this.working = false;
140
+ }
141
+ }
142
+ };
143
+ __decorate([
144
+ property({ type: Object }),
145
+ __metadata("design:type", Object)
146
+ ], TrainingSettingForm.prototype, "kind", void 0);
147
+ __decorate([
148
+ state(),
149
+ __metadata("design:type", Object)
150
+ ], TrainingSettingForm.prototype, "enabled", void 0);
151
+ __decorate([
152
+ state(),
153
+ __metadata("design:type", Object)
154
+ ], TrainingSettingForm.prototype, "dueDay", void 0);
155
+ __decorate([
156
+ state(),
157
+ __metadata("design:type", Array)
158
+ ], TrainingSettingForm.prototype, "audiences", void 0);
159
+ __decorate([
160
+ state(),
161
+ __metadata("design:type", Object)
162
+ ], TrainingSettingForm.prototype, "memo", void 0);
163
+ __decorate([
164
+ state(),
165
+ __metadata("design:type", Object)
166
+ ], TrainingSettingForm.prototype, "working", void 0);
167
+ __decorate([
168
+ state(),
169
+ __metadata("design:type", Object)
170
+ ], TrainingSettingForm.prototype, "message", void 0);
171
+ TrainingSettingForm = __decorate([
172
+ customElement('training-setting-form')
173
+ ], TrainingSettingForm);
174
+ export { TrainingSettingForm };
175
+ //# sourceMappingURL=training-setting-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"training-setting-form.js","sourceRoot":"","sources":["../../client/components/training-setting-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-select-buttons.js'\nimport '@operato/popup/ox-popup-actions.js'\nimport '@things-factory/announcement/dist-client/components/audience-picker.js'\n\nimport gql from 'graphql-tag'\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, state } from 'lit/decorators.js'\n\nimport { client } 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 { trainingWord } from '../training-words.js'\nimport { failureOf } from '../words.js'\n\ntype Audience = { scope: string; targetId: string; targetName?: string }\n\n/** A kind as the domain has it - what `trainingKinds` answers. */\nexport interface TrainingKindRow {\n code: string\n basis: string\n cycle: string\n audience: string\n retentionYears: number\n toConfirm?: boolean\n enabled: boolean\n dueDay: string\n audiences: Audience[]\n memo?: string | null\n}\n\n/** Opens the form; resolves true when the setting was saved. */\nexport function openTrainingSettingForm(kind: TrainingKindRow): Promise<boolean> {\n return new Promise(resolve => {\n let done = false\n const handle: any = openPopup(\n html`<training-setting-form .kind=${kind} @close=${() => handle.close()} @saved=${() => ((done = true), handle.close())}></training-setting-form>`,\n { backdrop: true, size: 'medium', title: i18next.t('title.training-setting', { kind: trainingWord('kind', kind.code) }) }\n )\n handle.onclosed = () => resolve(done)\n })\n}\n\n/**\n * 교육 종류 설정 (ADR-0187 decision 15) - whether the domain trains a kind, the day of each year it is due, who must take\n * it, and why. What the law says of it is shown above.\n */\n@customElement('training-setting-form')\nexport class TrainingSettingForm extends localize(i18next)(LitElement) {\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 ox-input-select-buttons {\n align-self: flex-start;\n }\n `\n ]\n\n @property({ type: Object }) kind!: TrainingKindRow\n\n @state() private enabled = 'ON'\n @state() private dueDay = ''\n @state() private audiences: Audience[] = []\n @state() private memo = ''\n @state() private working = false\n @state() private message = ''\n\n connectedCallback() {\n super.connectedCallback()\n const { enabled, dueDay, audiences, memo } = this.kind\n Object.assign(this, { enabled: enabled ? 'ON' : 'OFF', dueDay, audiences: audiences ?? [], memo: memo ?? '' })\n }\n\n render() {\n const kind = this.kind\n return html`\n <div class=\"body\">\n <div guide>\n <p>${i18next.t('field.training-basis')}: ${kind.basis}${kind.toConfirm ? ` · ${i18next.t('text.training-basis-to-confirm')}` : ''}</p>\n <p>${i18next.t('field.training-audience-by-law')}: ${kind.audience} · ${i18next.t('text.training-retention', { years: kind.retentionYears })}</p>\n </div>\n\n <div class=\"field\">\n <ox-input-select-buttons\n .value=${this.enabled}\n .options=${['ON', 'OFF'].map(value => ({ value, display: i18next.t(`text.training-${value.toLowerCase()}`) }))}\n @change=${(e: CustomEvent) => e.detail && (this.enabled = e.detail)}\n ></ox-input-select-buttons>\n </div>\n\n <label class=\"field\">\n <span>${i18next.t('field.training-due-day')}</span>\n <input .value=${this.dueDay} placeholder=\"12-31\" maxlength=\"5\" @input=${(e: any) => (this.dueDay = e.target.value)} />\n <span>${i18next.t('text.training-due-day-hint')}</span>\n </label>\n\n <div class=\"field\">\n <span>${i18next.t('field.training-audiences')}</span>\n <announcement-audience-picker .value=${this.audiences} @change=${(e: CustomEvent) => Array.isArray(e.detail) && (this.audiences = e.detail)}></announcement-audience-picker>\n <span>${i18next.t('text.training-audiences-hint')}</span>\n </div>\n\n <label class=\"field\">\n <span>${i18next.t('field.training-memo')}</span>\n <textarea rows=\"3\" .value=${this.memo} @input=${(e: any) => (this.memo = e.target.value)}></textarea>\n <span invalid>${this.message}</span>\n </label>\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.save()}>${i18next.t('button.save')}</md-filled-button>\n </ox-popup-actions>\n `\n }\n\n private async save() {\n this.message = ''\n this.working = true\n try {\n const response = await client.mutate({\n mutation: gql`\n mutation ($patches: [TrainingSettingPatch!]!) {\n saveTrainingSettings(patches: $patches) { id }\n }\n `,\n variables: {\n patches: [\n {\n kind: this.kind.code,\n enabled: this.enabled === 'ON',\n dueDay: this.dueDay.trim() || null,\n audiences: this.audiences.map(({ scope, targetId, targetName }) => ({ scope, targetId, targetName })),\n memo: this.memo\n }\n ]\n }\n })\n if ((response as any).errors?.length) throw response\n notify({ message: i18next.t('text.training-saved') })\n this.dispatchEvent(new CustomEvent('saved'))\n } catch (error) {\n this.message = failureOf(error)\n } finally {\n this.working = false\n }\n }\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export { openSealUseForm } from './components/seal-use-form.js';
2
+ export { configureRegulationGuide } from './regulation/regulation-guide.js';
3
+ export { openInventionReportForm } from './components/invention-report-form.js';
4
+ export { ComplianceGuideLink } from './components/guide-link.js';
@@ -0,0 +1,8 @@
1
+ /* What an application opens of this module beside its pages - the seal use form, prefilled from where it is asked (ADR-0188). */
2
+ export { openSealUseForm } from './components/seal-use-form.js';
3
+ /* What an application names at boot - the guide on the law beside the company rules (ADR-0187 decision 10). */
4
+ export { configureRegulationGuide } from './regulation/regulation-guide.js';
5
+ export { openInventionReportForm } from './components/invention-report-form.js';
6
+ /* A screen's link to its topic of the guide on the law (ADR-0187 decision 13): <compliance-guide-link section="leave">. */
7
+ export { ComplianceGuideLink } from './components/guide-link.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AAAA,iIAAiI;AACjI,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC/D,+GAA+G;AAC/G,OAAO,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAA;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,uCAAuC,CAAA;AAC/E,2HAA2H;AAC3H,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA","sourcesContent":["/* What an application opens of this module beside its pages - the seal use form, prefilled from where it is asked (ADR-0188). */\nexport { openSealUseForm } from './components/seal-use-form.js'\n/* What an application names at boot - the guide on the law beside the company rules (ADR-0187 decision 10). */\nexport { configureRegulationGuide } from './regulation/regulation-guide.js'\nexport { openInventionReportForm } from './components/invention-report-form.js'\n/* A screen's link to its topic of the guide on the law (ADR-0187 decision 13): <compliance-guide-link section=\"leave\">. */\nexport { ComplianceGuideLink } from './components/guide-link.js'\n"]}
@@ -0,0 +1 @@
1
+ export declare function registerDisputeCalendarSource(): void;
@@ -0,0 +1,51 @@
1
+ import gql from 'graphql-tag';
2
+ import { client } from '@operato/graphql';
3
+ import { i18next } from '@operato/i18n';
4
+ import { localDayOf, registerWorkCalendarSource } from '@things-factory/worklist/dist-client';
5
+ /*
6
+ * 분쟁 기일 on 「내 업무 달력」 (ADR-0187 decision 25) - the calendar module has no door for a module's dated facts; the
7
+ * work calendar takes sources, so a dispute's hearings go there for those who keep the disputes. Anyone else has no
8
+ * chip: the door refuses them, and `applies` says so.
9
+ */
10
+ const HEARINGS = gql `
11
+ query ($from: String!, $to: String!) {
12
+ disputeHearings(from: $from, to: $to) { items { id heldOn heldAt name place dispute { id title status } } }
13
+ }
14
+ `;
15
+ const read = async (from, to) => {
16
+ const response = await client.query({ query: HEARINGS, variables: { from, to }, fetchPolicy: 'network-only' });
17
+ if (response.errors?.length)
18
+ throw response;
19
+ return response.data.disputeHearings.items;
20
+ };
21
+ export function registerDisputeCalendarSource() {
22
+ registerWorkCalendarSource({
23
+ key: 'compliance-dispute-hearings',
24
+ label: () => i18next.t('label.calendar-dispute-hearings'),
25
+ async applies() {
26
+ const today = localDayOf(new Date());
27
+ return await read(today, today).then(() => true, () => false);
28
+ },
29
+ async load(from, to) {
30
+ /* [from, to) - the last day drawn is the day before `to`. */
31
+ const last = localDayOf(new Date(to.getTime() - 1));
32
+ return (await read(localDayOf(from), last)).map(one => {
33
+ const [year, month, day] = one.heldOn.split('-').map(Number);
34
+ const [hour, minute] = (one.heldAt ?? '').split(':').map(Number);
35
+ const closed = one.dispute?.status === 'CLOSED';
36
+ return {
37
+ id: one.id,
38
+ name: `${one.name} · ${one.dispute?.title ?? ''}`,
39
+ date: new Date(year, month - 1, day, hour || 0, minute || 0),
40
+ allDay: !one.heldAt,
41
+ rank: closed ? 2 : 0,
42
+ priority: closed ? 0 : 2,
43
+ icon: 'gavel',
44
+ href: 'dispute-list',
45
+ note: one.place ?? undefined
46
+ };
47
+ });
48
+ }
49
+ });
50
+ }
51
+ //# sourceMappingURL=dispute-calendar-source.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispute-calendar-source.js","sourceRoot":"","sources":["../../client/legal-record/dispute-calendar-source.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAA0B,MAAM,sCAAsC,CAAA;AAErH;;;;GAIG;AAEH,MAAM,QAAQ,GAAG,GAAG,CAAA;;;;CAInB,CAAA;AAED,MAAM,IAAI,GAAG,KAAK,EAAE,IAAY,EAAE,EAAU,EAAE,EAAE;IAC9C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC,CAAA;IAC9G,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM;QAAE,MAAM,QAAQ,CAAA;IAC3C,OAAO,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,KAAc,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,UAAU,6BAA6B;IAC3C,0BAA0B,CAAC;QACzB,GAAG,EAAE,6BAA6B;QAClC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,iCAAiC,CAAC;QACzD,KAAK,CAAC,OAAO;YACX,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;YACpC,OAAO,MAAM,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,CAClC,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACZ,CAAA;QACH,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAU,EAAE,EAAQ;YAC7B,6DAA6D;YAC7D,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;YACnD,OAAO,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACpD,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAC5D,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAChE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAA;gBAC/C,OAAO;oBACL,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE,EAAE;oBACjD,IAAI,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;oBAC5D,MAAM,EAAE,CAAC,GAAG,CAAC,MAAM;oBACnB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACpB,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,cAAc;oBACpB,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,SAAS;iBACR,CAAA;YACxB,CAAC,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC","sourcesContent":["import gql from 'graphql-tag'\n\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { localDayOf, registerWorkCalendarSource, type WorkCalendarEntry } from '@things-factory/worklist/dist-client'\n\n/*\n * 분쟁 기일 on 「내 업무 달력」 (ADR-0187 decision 25) - the calendar module has no door for a module's dated facts; the\n * work calendar takes sources, so a dispute's hearings go there for those who keep the disputes. Anyone else has no\n * chip: the door refuses them, and `applies` says so.\n */\n\nconst HEARINGS = gql`\n query ($from: String!, $to: String!) {\n disputeHearings(from: $from, to: $to) { items { id heldOn heldAt name place dispute { id title status } } }\n }\n`\n\nconst read = async (from: string, to: string) => {\n const response = await client.query({ query: HEARINGS, variables: { from, to }, fetchPolicy: 'network-only' })\n if (response.errors?.length) throw response\n return response.data.disputeHearings.items as any[]\n}\n\nexport function registerDisputeCalendarSource(): void {\n registerWorkCalendarSource({\n key: 'compliance-dispute-hearings',\n label: () => i18next.t('label.calendar-dispute-hearings'),\n async applies() {\n const today = localDayOf(new Date())\n return await read(today, today).then(\n () => true,\n () => false\n )\n },\n async load(from: Date, to: Date): Promise<WorkCalendarEntry[]> {\n /* [from, to) - the last day drawn is the day before `to`. */\n const last = localDayOf(new Date(to.getTime() - 1))\n return (await read(localDayOf(from), last)).map(one => {\n const [year, month, day] = one.heldOn.split('-').map(Number)\n const [hour, minute] = (one.heldAt ?? '').split(':').map(Number)\n const closed = one.dispute?.status === 'CLOSED'\n return {\n id: one.id,\n name: `${one.name} · ${one.dispute?.title ?? ''}`,\n date: new Date(year, month - 1, day, hour || 0, minute || 0),\n allDay: !one.heldAt,\n rank: closed ? 2 : 0,\n priority: closed ? 0 : 2,\n icon: 'gavel',\n href: 'dispute-list',\n note: one.place ?? undefined\n } as WorkCalendarEntry\n })\n }\n })\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import '@material/web/button/filled-button.js';
2
+ import '@material/web/button/text-button.js';
3
+ import '@operato/data-grist/ox-grist.js';
4
+ import '@operato/popup/ox-popup-actions.js';
5
+ import { LitElement } from 'lit';
6
+ import { DataGrist } from '@operato/data-grist';
7
+ export interface ChildGridSpec {
8
+ /** The grid's columns, past the gutters. */
9
+ columns: any[];
10
+ /** Whether rows may be added. */
11
+ appendable: boolean;
12
+ /** The rows. */
13
+ fetch: () => Promise<any[]>;
14
+ /** Saves the grid's dirty rows; true when saved. */
15
+ save: (grist: DataGrist) => Promise<boolean>;
16
+ }
17
+ declare const LegalChildGrid_base: (new (...args: any[]) => LitElement) & typeof LitElement;
18
+ /**
19
+ * The rows that hang on one legal record - a centre's researchers and its changes to file, an invention's rewards, a
20
+ * dispute's hearings: a small grid in a popup, saved with the one main action. Nothing is deleted from it.
21
+ */
22
+ export declare class LegalChildGrid extends LegalChildGrid_base {
23
+ static styles: import("lit").CSSResult[];
24
+ spec: ChildGridSpec;
25
+ private grist;
26
+ /** Opens the grid; `changed` runs when the popup closes after a save. */
27
+ static open(title: string, spec: ChildGridSpec, changed?: () => void): any;
28
+ render(): import("lit-html").TemplateResult<1>;
29
+ private save;
30
+ }
31
+ export {};
@@ -0,0 +1,76 @@
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/data-grist/ox-grist.js';
5
+ import '@operato/popup/ox-popup-actions.js';
6
+ import { css, html, LitElement } from 'lit';
7
+ import { customElement, property, query } from 'lit/decorators.js';
8
+ import { DataGrist } from '@operato/data-grist';
9
+ import { i18next, localize } from '@operato/i18n';
10
+ import { openPopup } from '@operato/layout';
11
+ import { CommonGristStyles, CommonPopupStyles } from '@operato/styles';
12
+ /**
13
+ * The rows that hang on one legal record - a centre's researchers and its changes to file, an invention's rewards, a
14
+ * dispute's hearings: a small grid in a popup, saved with the one main action. Nothing is deleted from it.
15
+ */
16
+ let LegalChildGrid = class LegalChildGrid extends localize(i18next)(LitElement) {
17
+ static { this.styles = [
18
+ CommonPopupStyles,
19
+ CommonGristStyles,
20
+ css `
21
+ :host {
22
+ display: flex;
23
+ flex-direction: column;
24
+ min-height: 360px;
25
+ }
26
+ ox-grist {
27
+ flex: 1;
28
+ }
29
+ `
30
+ ]; }
31
+ /** Opens the grid; `changed` runs when the popup closes after a save. */
32
+ static open(title, spec, changed) {
33
+ let saved = false;
34
+ const popup = openPopup(html `<legal-child-grid .spec=${spec} @saved=${() => (saved = true)} @close=${() => popup.close()}></legal-child-grid>`, { backdrop: true, size: 'large', title });
35
+ popup.onclosed = () => saved && changed?.();
36
+ return popup;
37
+ }
38
+ render() {
39
+ const config = {
40
+ rows: { appendable: this.spec.appendable, selectable: { multiple: false } },
41
+ pagination: { infinite: true },
42
+ columns: [{ type: 'gutter', gutterName: 'dirty' }, { type: 'gutter', gutterName: 'sequence' }, ...this.spec.columns]
43
+ };
44
+ return html `
45
+ <ox-grist .mode=${'GRID'} .config=${config} .fetchHandler=${async () => {
46
+ const records = await this.spec.fetch();
47
+ return { total: records.length, records };
48
+ }}></ox-grist>
49
+ <ox-popup-actions>
50
+ <md-text-button slot="cancel" @click=${() => this.dispatchEvent(new CustomEvent('close'))}>${i18next.t('button.close')}</md-text-button>
51
+ <md-filled-button slot="confirm" @click=${() => this.save()}>${i18next.t('button.save')}</md-filled-button>
52
+ </ox-popup-actions>
53
+ `;
54
+ }
55
+ async save() {
56
+ if (!(await this.spec.save(this.grist)))
57
+ return;
58
+ this.dispatchEvent(new CustomEvent('saved'));
59
+ this.grist.fetch();
60
+ }
61
+ };
62
+ __decorate([
63
+ property({ attribute: false }),
64
+ __metadata("design:type", Object)
65
+ ], LegalChildGrid.prototype, "spec", void 0);
66
+ __decorate([
67
+ query('ox-grist'),
68
+ __metadata("design:type", DataGrist
69
+ /** Opens the grid; `changed` runs when the popup closes after a save. */
70
+ )
71
+ ], LegalChildGrid.prototype, "grist", void 0);
72
+ LegalChildGrid = __decorate([
73
+ customElement('legal-child-grid')
74
+ ], LegalChildGrid);
75
+ export { LegalChildGrid };
76
+ //# sourceMappingURL=legal-child-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legal-child-grid.js","sourceRoot":"","sources":["../../client/legal-record/legal-child-grid.ts"],"names":[],"mappings":";AAAA,OAAO,uCAAuC,CAAA;AAC9C,OAAO,qCAAqC,CAAA;AAC5C,OAAO,iCAAiC,CAAA;AACxC,OAAO,oCAAoC,CAAA;AAE3C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAatE;;;GAGG;AAEI,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;aACxD,WAAM,GAAG;QACd,iBAAiB;QACjB,iBAAiB;QACjB,GAAG,CAAA;;;;;;;;;KASF;KACF,AAbY,CAaZ;IAKD,yEAAyE;IACzE,MAAM,CAAC,IAAI,CAAC,KAAa,EAAE,IAAmB,EAAE,OAAoB;QAClE,IAAI,KAAK,GAAG,KAAK,CAAA;QACjB,MAAM,KAAK,GAAQ,SAAS,CAAC,IAAI,CAAA,2BAA2B,IAAI,WAAW,GAAG,EAAE,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,sBAAsB,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;QAC9L,KAAK,CAAC,QAAQ,GAAG,GAAG,EAAE,CAAC,KAAK,IAAI,OAAO,EAAE,EAAE,CAAA;QAC3C,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM;QACJ,MAAM,MAAM,GAAG;YACb,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;YAC3E,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;YAC9B,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;SACrH,CAAA;QACD,OAAO,IAAI,CAAA;wBACS,MAAM,YAAY,MAAM,kBAAkB,KAAK,IAAI,EAAE;YACrE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;YACvC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAA;QAC3C,CAAC;;+CAEwC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;kDAC5E,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;;KAE1F,CAAA;IACH,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAAE,OAAM;QAC/C,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;QAC5C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;;AAjC+B;IAA/B,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;;4CAAqB;AACzB;IAA1B,KAAK,CAAC,UAAU,CAAC;8BAAiB,SAAS;IAE5C,yEAAyE;;6CAF7B;AAjBjC,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc,CAkD1B","sourcesContent":["import '@material/web/button/filled-button.js'\nimport '@material/web/button/text-button.js'\nimport '@operato/data-grist/ox-grist.js'\nimport '@operato/popup/ox-popup-actions.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property, query } from 'lit/decorators.js'\n\nimport { DataGrist } from '@operato/data-grist'\nimport { i18next, localize } from '@operato/i18n'\nimport { openPopup } from '@operato/layout'\nimport { CommonGristStyles, CommonPopupStyles } from '@operato/styles'\n\nexport interface ChildGridSpec {\n /** The grid's columns, past the gutters. */\n columns: any[]\n /** Whether rows may be added. */\n appendable: boolean\n /** The rows. */\n fetch: () => Promise<any[]>\n /** Saves the grid's dirty rows; true when saved. */\n save: (grist: DataGrist) => Promise<boolean>\n}\n\n/**\n * The rows that hang on one legal record - a centre's researchers and its changes to file, an invention's rewards, a\n * dispute's hearings: a small grid in a popup, saved with the one main action. Nothing is deleted from it.\n */\n@customElement('legal-child-grid')\nexport class LegalChildGrid extends localize(i18next)(LitElement) {\n static styles = [\n CommonPopupStyles,\n CommonGristStyles,\n css`\n :host {\n display: flex;\n flex-direction: column;\n min-height: 360px;\n }\n ox-grist {\n flex: 1;\n }\n `\n ]\n\n @property({ attribute: false }) spec!: ChildGridSpec\n @query('ox-grist') private grist!: DataGrist\n\n /** Opens the grid; `changed` runs when the popup closes after a save. */\n static open(title: string, spec: ChildGridSpec, changed?: () => void) {\n let saved = false\n const popup: any = openPopup(html`<legal-child-grid .spec=${spec} @saved=${() => (saved = true)} @close=${() => popup.close()}></legal-child-grid>`, { backdrop: true, size: 'large', title })\n popup.onclosed = () => saved && changed?.()\n return popup\n }\n\n render() {\n const config = {\n rows: { appendable: this.spec.appendable, selectable: { multiple: false } },\n pagination: { infinite: true },\n columns: [{ type: 'gutter', gutterName: 'dirty' }, { type: 'gutter', gutterName: 'sequence' }, ...this.spec.columns]\n }\n return html`\n <ox-grist .mode=${'GRID'} .config=${config} .fetchHandler=${async () => {\n const records = await this.spec.fetch()\n return { total: records.length, records }\n }}></ox-grist>\n <ox-popup-actions>\n <md-text-button slot=\"cancel\" @click=${() => this.dispatchEvent(new CustomEvent('close'))}>${i18next.t('button.close')}</md-text-button>\n <md-filled-button slot=\"confirm\" @click=${() => this.save()}>${i18next.t('button.save')}</md-filled-button>\n </ox-popup-actions>\n `\n }\n\n private async save() {\n if (!(await this.spec.save(this.grist))) return\n this.dispatchEvent(new CustomEvent('saved'))\n this.grist.fetch()\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export declare const INVENTION_DECISIONS: string[];
2
+ export declare const DISPUTE_KINDS: string[];
3
+ export declare const DISPUTE_STATUSES: string[];
@@ -0,0 +1,5 @@
1
+ /* The codes of the inventions and the disputes as the server holds them (ADR-0187 decisions 24, 25). */
2
+ export const INVENTION_DECISIONS = ['SUCCEED', 'WAIVE'];
3
+ export const DISPUTE_KINDS = ['CERTIFIED_LETTER_SENT', 'CERTIFIED_LETTER_RECEIVED', 'LAWSUIT', 'MEDIATION', 'ADMINISTRATIVE_ACTION'];
4
+ export const DISPUTE_STATUSES = ['OPEN', 'CLOSED'];
5
+ //# sourceMappingURL=legal-codes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legal-codes.js","sourceRoot":"","sources":["../../client/legal-record/legal-codes.ts"],"names":[],"mappings":"AAAA,wGAAwG;AACxG,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,uBAAuB,EAAE,2BAA2B,EAAE,SAAS,EAAE,WAAW,EAAE,uBAAuB,CAAC,CAAA;AACpI,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA","sourcesContent":["/* The codes of the inventions and the disputes as the server holds them (ADR-0187 decisions 24, 25). */\nexport const INVENTION_DECISIONS = ['SUCCEED', 'WAIVE']\nexport const DISPUTE_KINDS = ['CERTIFIED_LETTER_SENT', 'CERTIFIED_LETTER_RECEIVED', 'LAWSUIT', 'MEDIATION', 'ADMINISTRATIVE_ACTION']\nexport const DISPUTE_STATUSES = ['OPEN', 'CLOSED']\n"]}
@@ -0,0 +1,59 @@
1
+ import { DataGrist } from '@operato/data-grist';
2
+ /** The grid's new and changed rows as patches - all fields of a new row, the changed ones otherwise. */
3
+ export declare function patchesOf(grist: DataGrist, fields: string[], shape?: (patch: any) => any): any[];
4
+ /** An object column's id as the patch carries it - `inCharge` → `inChargeId`. */
5
+ export declare function idsOf(patch: any, objects: string[]): any;
6
+ /** Saves through `mutation(<extra>, patches)`; true when saved. */
7
+ export declare function saveRows(mutation: string, type: string, patches: any[], extra?: Record<string, string>): Promise<boolean>;
8
+ /** An employee picked in a grid cell - the framework's resource-object editor over `employees`. */
9
+ export declare const employeeColumn: (name: string, header: string, width?: number) => {
10
+ type: string;
11
+ name: string;
12
+ header: string;
13
+ width: number;
14
+ record: {
15
+ editable: boolean;
16
+ editor: import("@operato/data-grist").FieldEditor;
17
+ options: {
18
+ queryName: string;
19
+ select: ({
20
+ name: string;
21
+ hidden: boolean;
22
+ width?: undefined;
23
+ header?: undefined;
24
+ } | {
25
+ name: string;
26
+ width: number;
27
+ hidden?: undefined;
28
+ header?: undefined;
29
+ } | {
30
+ name: string;
31
+ header: string;
32
+ width: number;
33
+ hidden?: undefined;
34
+ })[];
35
+ };
36
+ };
37
+ };
38
+ /** A day cell. */
39
+ export declare const dayColumn: (name: string, header: string, editable?: boolean, width?: number) => {
40
+ type: string;
41
+ name: string;
42
+ header: string;
43
+ width: number;
44
+ sortable: boolean;
45
+ record: {
46
+ editable: boolean;
47
+ align: string;
48
+ };
49
+ };
50
+ /** A text cell. */
51
+ export declare const textColumn: (name: string, header: string, width?: number, editable?: boolean) => {
52
+ type: string;
53
+ name: string;
54
+ header: string;
55
+ width: number;
56
+ record: {
57
+ editable: boolean;
58
+ };
59
+ };
@@ -0,0 +1,68 @@
1
+ import gql from 'graphql-tag';
2
+ import { getEditor } from '@operato/data-grist';
3
+ import { client } from '@operato/graphql';
4
+ import { i18next } from '@operato/i18n';
5
+ import { notify } from '@operato/layout';
6
+ import { failureOf } from '../words.js';
7
+ /*
8
+ * What the grids of the ledger, the inventions and the disputes share (ADR-0187 decisions 23-25): rows are added and
9
+ * corrected, never deleted, so a save sends the new rows whole and the changed fields of the others.
10
+ */
11
+ /** The grid's new and changed rows as patches - all fields of a new row, the changed ones otherwise. */
12
+ export function patchesOf(grist, fields, shape = patch => patch) {
13
+ return grist.dirtyRecords
14
+ .filter((record) => record.__dirty__ === '+' || record.__dirty__ === 'M')
15
+ .map((record) => {
16
+ const changed = record.__dirty__ === '+' ? fields.filter(field => record[field] !== undefined) : Object.keys(record.__dirtyfields__ ?? {}).filter(field => fields.includes(field));
17
+ return shape({ ...(record.id ? { id: record.id } : {}), cuFlag: record.__dirty__, ...Object.fromEntries(changed.map(field => [field, record[field] === '' ? null : record[field]])) });
18
+ });
19
+ }
20
+ /** An object column's id as the patch carries it - `inCharge` → `inChargeId`. */
21
+ export function idsOf(patch, objects) {
22
+ for (const name of objects)
23
+ if (name in patch)
24
+ (patch[`${name}Id`] = patch[name]?.id ?? null), delete patch[name];
25
+ return patch;
26
+ }
27
+ /** Saves through `mutation(<extra>, patches)`; true when saved. */
28
+ export async function saveRows(mutation, type, patches, extra = {}) {
29
+ if (!patches.length)
30
+ return false;
31
+ const args = Object.keys(extra).map(name => `$${name}: String!`);
32
+ const passes = Object.keys(extra).map(name => `${name}: $${name}`);
33
+ try {
34
+ const response = await client.mutate({
35
+ mutation: gql `
36
+ mutation (${[...args, `$patches: [${type}!]!`].join(', ')}) {
37
+ ${mutation}(${[...passes, 'patches: $patches'].join(', ')}) { id }
38
+ }
39
+ `,
40
+ variables: { ...extra, patches }
41
+ });
42
+ if (response.errors?.length)
43
+ throw response;
44
+ notify({ message: i18next.t('text.legal-record-saved') });
45
+ return true;
46
+ }
47
+ catch (error) {
48
+ notify({ level: 'error', message: failureOf(error) });
49
+ return false;
50
+ }
51
+ }
52
+ /** An employee picked in a grid cell - the framework's resource-object editor over `employees`. */
53
+ export const employeeColumn = (name, header, width = 100) => ({
54
+ type: 'object',
55
+ name,
56
+ header,
57
+ width,
58
+ record: {
59
+ editable: true,
60
+ editor: getEditor('resource-object'),
61
+ options: { queryName: 'employees', select: [{ name: 'id', hidden: true }, { name: 'name', width: 160 }, { name: 'controlNo', header: i18next.t('field.control-no'), width: 100 }] }
62
+ }
63
+ });
64
+ /** A day cell. */
65
+ export const dayColumn = (name, header, editable = true, width = 100) => ({ type: 'date', name, header, width, sortable: true, record: { editable, align: 'center' } });
66
+ /** A text cell. */
67
+ export const textColumn = (name, header, width = 140, editable = true) => ({ type: 'string', name, header, width, record: { editable } });
68
+ //# sourceMappingURL=legal-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"legal-grid.js","sourceRoot":"","sources":["../../client/legal-record/legal-grid.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAE7B,OAAO,EAAa,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAEvC;;;GAGG;AAEH,wGAAwG;AACxG,MAAM,UAAU,SAAS,CAAC,KAAgB,EAAE,MAAgB,EAAE,QAA6B,KAAK,CAAC,EAAE,CAAC,KAAK;IACvG,OAAO,KAAK,CAAC,YAAY;SACtB,MAAM,CAAC,CAAC,MAAW,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,GAAG,IAAI,MAAM,CAAC,SAAS,KAAK,GAAG,CAAC;SAC7E,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE;QACnB,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;QAClL,OAAO,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACxL,CAAC,CAAC,CAAA;AACN,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,KAAK,CAAC,KAAU,EAAE,OAAiB;IACjD,KAAK,MAAM,IAAI,IAAI,OAAO;QAAE,IAAI,IAAI,IAAI,KAAK;YAAE,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,IAAI,CAAC,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,CAAA;IACjH,OAAO,KAAK,CAAA;AACd,CAAC;AAED,mEAAmE;AACnE,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB,EAAE,IAAY,EAAE,OAAc,EAAE,QAAgC,EAAE;IAC/G,IAAI,CAAC,OAAO,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACjC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,IAAI,WAAW,CAAC,CAAA;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,MAAM,IAAI,EAAE,CAAC,CAAA;IAClE,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;YACnC,QAAQ,EAAE,GAAG,CAAA;oBACC,CAAC,GAAG,IAAI,EAAE,cAAc,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACrD,QAAQ,IAAI,CAAC,GAAG,MAAM,EAAE,mBAAmB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;OAE5D;YACD,SAAS,EAAE,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE;SACjC,CAAC,CAAA;QACF,IAAK,QAAgB,CAAC,MAAM,EAAE,MAAM;YAAE,MAAM,QAAQ,CAAA;QACpD,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAA;QACzD,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACrD,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,mGAAmG;AACnG,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC;IAC5E,IAAI,EAAE,QAAQ;IACd,IAAI;IACJ,MAAM;IACN,KAAK;IACL,MAAM,EAAE;QACN,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,SAAS,CAAC,iBAAiB,CAAC;QACpC,OAAO,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,EAAE;KACpL;CACF,CAAC,CAAA;AAEF,kBAAkB;AAClB,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,QAAQ,GAAG,IAAI,EAAE,KAAK,GAAG,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA;AAEvL,mBAAmB;AACnB,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,MAAc,EAAE,KAAK,GAAG,GAAG,EAAE,QAAQ,GAAG,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAA","sourcesContent":["import gql from 'graphql-tag'\n\nimport { DataGrist, getEditor } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next } from '@operato/i18n'\nimport { notify } from '@operato/layout'\n\nimport { failureOf } from '../words.js'\n\n/*\n * What the grids of the ledger, the inventions and the disputes share (ADR-0187 decisions 23-25): rows are added and\n * corrected, never deleted, so a save sends the new rows whole and the changed fields of the others.\n */\n\n/** The grid's new and changed rows as patches - all fields of a new row, the changed ones otherwise. */\nexport function patchesOf(grist: DataGrist, fields: string[], shape: (patch: any) => any = patch => patch) {\n return grist.dirtyRecords\n .filter((record: any) => record.__dirty__ === '+' || record.__dirty__ === 'M')\n .map((record: any) => {\n const changed = record.__dirty__ === '+' ? fields.filter(field => record[field] !== undefined) : Object.keys(record.__dirtyfields__ ?? {}).filter(field => fields.includes(field))\n return shape({ ...(record.id ? { id: record.id } : {}), cuFlag: record.__dirty__, ...Object.fromEntries(changed.map(field => [field, record[field] === '' ? null : record[field]])) })\n })\n}\n\n/** An object column's id as the patch carries it - `inCharge` → `inChargeId`. */\nexport function idsOf(patch: any, objects: string[]) {\n for (const name of objects) if (name in patch) (patch[`${name}Id`] = patch[name]?.id ?? null), delete patch[name]\n return patch\n}\n\n/** Saves through `mutation(<extra>, patches)`; true when saved. */\nexport async function saveRows(mutation: string, type: string, patches: any[], extra: Record<string, string> = {}): Promise<boolean> {\n if (!patches.length) return false\n const args = Object.keys(extra).map(name => `$${name}: String!`)\n const passes = Object.keys(extra).map(name => `${name}: $${name}`)\n try {\n const response = await client.mutate({\n mutation: gql`\n mutation (${[...args, `$patches: [${type}!]!`].join(', ')}) {\n ${mutation}(${[...passes, 'patches: $patches'].join(', ')}) { id }\n }\n `,\n variables: { ...extra, patches }\n })\n if ((response as any).errors?.length) throw response\n notify({ message: i18next.t('text.legal-record-saved') })\n return true\n } catch (error) {\n notify({ level: 'error', message: failureOf(error) })\n return false\n }\n}\n\n/** An employee picked in a grid cell - the framework's resource-object editor over `employees`. */\nexport const employeeColumn = (name: string, header: string, width = 100) => ({\n type: 'object',\n name,\n header,\n width,\n record: {\n editable: true,\n editor: getEditor('resource-object'),\n options: { queryName: 'employees', select: [{ name: 'id', hidden: true }, { name: 'name', width: 160 }, { name: 'controlNo', header: i18next.t('field.control-no'), width: 100 }] }\n }\n})\n\n/** A day cell. */\nexport const dayColumn = (name: string, header: string, editable = true, width = 100) => ({ type: 'date', name, header, width, sortable: true, record: { editable, align: 'center' } })\n\n/** A text cell. */\nexport const textColumn = (name: string, header: string, width = 140, editable = true) => ({ type: 'string', name, header, width, record: { editable } })\n"]}