@things-factory/ops-master 10.1.246 → 10.1.248

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 (429) hide show
  1. package/package.json +5 -5
  2. package/dist-client/bootstrap.d.ts +0 -19
  3. package/dist-client/bootstrap.js +0 -66
  4. package/dist-client/bootstrap.js.map +0 -1
  5. package/dist-client/index.d.ts +0 -17
  6. package/dist-client/index.js +0 -21
  7. package/dist-client/index.js.map +0 -1
  8. package/dist-client/master-change-approval.d.ts +0 -14
  9. package/dist-client/master-change-approval.js +0 -36
  10. package/dist-client/master-change-approval.js.map +0 -1
  11. package/dist-client/master-change-policy-axes.d.ts +0 -37
  12. package/dist-client/master-change-policy-axes.js +0 -29
  13. package/dist-client/master-change-policy-axes.js.map +0 -1
  14. package/dist-client/master-change-policy-panel.d.ts +0 -59
  15. package/dist-client/master-change-policy-panel.js +0 -454
  16. package/dist-client/master-change-policy-panel.js.map +0 -1
  17. package/dist-client/master-change-providers.d.ts +0 -4
  18. package/dist-client/master-change-providers.js +0 -91
  19. package/dist-client/master-change-providers.js.map +0 -1
  20. package/dist-client/pages/master/applied-when-dialog.d.ts +0 -48
  21. package/dist-client/pages/master/applied-when-dialog.js +0 -137
  22. package/dist-client/pages/master/applied-when-dialog.js.map +0 -1
  23. package/dist-client/pages/master/assignment-fields.d.ts +0 -27
  24. package/dist-client/pages/master/assignment-fields.js +0 -62
  25. package/dist-client/pages/master/assignment-fields.js.map +0 -1
  26. package/dist-client/pages/master/equipment-class.d.ts +0 -12
  27. package/dist-client/pages/master/equipment-class.js +0 -42
  28. package/dist-client/pages/master/equipment-class.js.map +0 -1
  29. package/dist-client/pages/master/equipment.d.ts +0 -12
  30. package/dist-client/pages/master/equipment.js +0 -58
  31. package/dist-client/pages/master/equipment.js.map +0 -1
  32. package/dist-client/pages/master/grist-iso-duration.d.ts +0 -20
  33. package/dist-client/pages/master/grist-iso-duration.js +0 -70
  34. package/dist-client/pages/master/grist-iso-duration.js.map +0 -1
  35. package/dist-client/pages/master/grist-reference.d.ts +0 -91
  36. package/dist-client/pages/master/grist-reference.js +0 -419
  37. package/dist-client/pages/master/grist-reference.js.map +0 -1
  38. package/dist-client/pages/master/import-rows.d.ts +0 -35
  39. package/dist-client/pages/master/import-rows.js +0 -66
  40. package/dist-client/pages/master/import-rows.js.map +0 -1
  41. package/dist-client/pages/master/iso-duration.d.ts +0 -34
  42. package/dist-client/pages/master/iso-duration.js +0 -76
  43. package/dist-client/pages/master/iso-duration.js.map +0 -1
  44. package/dist-client/pages/master/master-options.d.ts +0 -40
  45. package/dist-client/pages/master/master-options.js +0 -54
  46. package/dist-client/pages/master/master-options.js.map +0 -1
  47. package/dist-client/pages/master/master-page-base.d.ts +0 -369
  48. package/dist-client/pages/master/master-page-base.js +0 -657
  49. package/dist-client/pages/master/master-page-base.js.map +0 -1
  50. package/dist-client/pages/master/material-class.d.ts +0 -12
  51. package/dist-client/pages/master/material-class.js +0 -42
  52. package/dist-client/pages/master/material-class.js.map +0 -1
  53. package/dist-client/pages/master/material-definition.d.ts +0 -5
  54. package/dist-client/pages/master/material-definition.js +0 -14
  55. package/dist-client/pages/master/material-definition.js.map +0 -1
  56. package/dist-client/pages/master/material-revision-fields.d.ts +0 -2
  57. package/dist-client/pages/master/material-revision-fields.js +0 -43
  58. package/dist-client/pages/master/material-revision-fields.js.map +0 -1
  59. package/dist-client/pages/master/operation-definition.d.ts +0 -12
  60. package/dist-client/pages/master/operation-definition.js +0 -49
  61. package/dist-client/pages/master/operation-definition.js.map +0 -1
  62. package/dist-client/pages/master/operational-location.d.ts +0 -84
  63. package/dist-client/pages/master/operational-location.js +0 -432
  64. package/dist-client/pages/master/operational-location.js.map +0 -1
  65. package/dist-client/pages/master/person.d.ts +0 -12
  66. package/dist-client/pages/master/person.js +0 -41
  67. package/dist-client/pages/master/person.js.map +0 -1
  68. package/dist-client/pages/master/personnel-class.d.ts +0 -12
  69. package/dist-client/pages/master/personnel-class.js +0 -43
  70. package/dist-client/pages/master/personnel-class.js.map +0 -1
  71. package/dist-client/pages/master/physical-asset-class.d.ts +0 -12
  72. package/dist-client/pages/master/physical-asset-class.js +0 -40
  73. package/dist-client/pages/master/physical-asset-class.js.map +0 -1
  74. package/dist-client/pages/master/physical-asset.d.ts +0 -12
  75. package/dist-client/pages/master/physical-asset.js +0 -41
  76. package/dist-client/pages/master/physical-asset.js.map +0 -1
  77. package/dist-client/pages/master/recipe-definition.d.ts +0 -5
  78. package/dist-client/pages/master/recipe-definition.js +0 -14
  79. package/dist-client/pages/master/recipe-definition.js.map +0 -1
  80. package/dist-client/pages/master/reference-targets.d.ts +0 -42
  81. package/dist-client/pages/master/reference-targets.js +0 -82
  82. package/dist-client/pages/master/reference-targets.js.map +0 -1
  83. package/dist-client/pages/master/revision-comparison.d.ts +0 -49
  84. package/dist-client/pages/master/revision-comparison.js +0 -560
  85. package/dist-client/pages/master/revision-comparison.js.map +0 -1
  86. package/dist-client/pages/master/revision-view.d.ts +0 -34
  87. package/dist-client/pages/master/revision-view.js +0 -145
  88. package/dist-client/pages/master/revision-view.js.map +0 -1
  89. package/dist-client/pages/master/revision-workspace.d.ts +0 -50
  90. package/dist-client/pages/master/revision-workspace.js +0 -763
  91. package/dist-client/pages/master/revision-workspace.js.map +0 -1
  92. package/dist-client/pages/master/route-definition.d.ts +0 -19
  93. package/dist-client/pages/master/route-definition.js +0 -40
  94. package/dist-client/pages/master/route-definition.js.map +0 -1
  95. package/dist-client/pages/master/stop-reason.d.ts +0 -12
  96. package/dist-client/pages/master/stop-reason.js +0 -48
  97. package/dist-client/pages/master/stop-reason.js.map +0 -1
  98. package/dist-client/pages/master/test-specification.d.ts +0 -5
  99. package/dist-client/pages/master/test-specification.js +0 -14
  100. package/dist-client/pages/master/test-specification.js.map +0 -1
  101. package/dist-client/pages/master-axes.d.ts +0 -24
  102. package/dist-client/pages/master-axes.js +0 -39
  103. package/dist-client/pages/master-axes.js.map +0 -1
  104. package/dist-client/route.d.ts +0 -1
  105. package/dist-client/route.js +0 -81
  106. package/dist-client/route.js.map +0 -1
  107. package/dist-client/tsconfig.tsbuildinfo +0 -1
  108. package/dist-server/index.d.ts +0 -1
  109. package/dist-server/index.js +0 -19
  110. package/dist-server/index.js.map +0 -1
  111. package/dist-server/service/ai-entry/master-entry-rules.d.ts +0 -175
  112. package/dist-server/service/ai-entry/master-entry-rules.js +0 -302
  113. package/dist-server/service/ai-entry/master-entry-rules.js.map +0 -1
  114. package/dist-server/service/ai-entry/master-entry-targets.d.ts +0 -23
  115. package/dist-server/service/ai-entry/master-entry-targets.js +0 -293
  116. package/dist-server/service/ai-entry/master-entry-targets.js.map +0 -1
  117. package/dist-server/service/approval-route.d.ts +0 -37
  118. package/dist-server/service/approval-route.js +0 -34
  119. package/dist-server/service/approval-route.js.map +0 -1
  120. package/dist-server/service/asset/asset-lifecycle.d.ts +0 -106
  121. package/dist-server/service/asset/asset-lifecycle.js +0 -126
  122. package/dist-server/service/asset/asset-lifecycle.js.map +0 -1
  123. package/dist-server/service/asset/asset-master-resolver.d.ts +0 -53
  124. package/dist-server/service/asset/asset-master-resolver.js +0 -185
  125. package/dist-server/service/asset/asset-master-resolver.js.map +0 -1
  126. package/dist-server/service/asset/asset-master.d.ts +0 -21
  127. package/dist-server/service/asset/asset-master.js +0 -25
  128. package/dist-server/service/asset/asset-master.js.map +0 -1
  129. package/dist-server/service/asset/asset-query.d.ts +0 -16
  130. package/dist-server/service/asset/asset-query.js +0 -72
  131. package/dist-server/service/asset/asset-query.js.map +0 -1
  132. package/dist-server/service/asset/index.d.ts +0 -6
  133. package/dist-server/service/asset/index.js +0 -10
  134. package/dist-server/service/asset/index.js.map +0 -1
  135. package/dist-server/service/asset/physical-asset-class.d.ts +0 -34
  136. package/dist-server/service/asset/physical-asset-class.js +0 -104
  137. package/dist-server/service/asset/physical-asset-class.js.map +0 -1
  138. package/dist-server/service/asset/physical-asset.d.ts +0 -66
  139. package/dist-server/service/asset/physical-asset.js +0 -123
  140. package/dist-server/service/asset/physical-asset.js.map +0 -1
  141. package/dist-server/service/assignment/applied-when.d.ts +0 -24
  142. package/dist-server/service/assignment/applied-when.js +0 -16
  143. package/dist-server/service/assignment/applied-when.js.map +0 -1
  144. package/dist-server/service/assignment/assignment-history.d.ts +0 -92
  145. package/dist-server/service/assignment/assignment-history.js +0 -289
  146. package/dist-server/service/assignment/assignment-history.js.map +0 -1
  147. package/dist-server/service/assignment/assignment-write.d.ts +0 -42
  148. package/dist-server/service/assignment/assignment-write.js +0 -101
  149. package/dist-server/service/assignment/assignment-write.js.map +0 -1
  150. package/dist-server/service/assignment/master-value-claim.d.ts +0 -135
  151. package/dist-server/service/assignment/master-value-claim.js +0 -174
  152. package/dist-server/service/assignment/master-value-claim.js.map +0 -1
  153. package/dist-server/service/equipment/equipment-class.d.ts +0 -34
  154. package/dist-server/service/equipment/equipment-class.js +0 -104
  155. package/dist-server/service/equipment/equipment-class.js.map +0 -1
  156. package/dist-server/service/equipment/equipment-master-resolver.d.ts +0 -77
  157. package/dist-server/service/equipment/equipment-master-resolver.js +0 -266
  158. package/dist-server/service/equipment/equipment-master-resolver.js.map +0 -1
  159. package/dist-server/service/equipment/equipment-master.d.ts +0 -30
  160. package/dist-server/service/equipment/equipment-master.js +0 -53
  161. package/dist-server/service/equipment/equipment-master.js.map +0 -1
  162. package/dist-server/service/equipment/equipment-query.d.ts +0 -16
  163. package/dist-server/service/equipment/equipment-query.js +0 -72
  164. package/dist-server/service/equipment/equipment-query.js.map +0 -1
  165. package/dist-server/service/equipment/equipment.d.ts +0 -71
  166. package/dist-server/service/equipment/equipment.js +0 -138
  167. package/dist-server/service/equipment/equipment.js.map +0 -1
  168. package/dist-server/service/equipment/index.d.ts +0 -8
  169. package/dist-server/service/equipment/index.js +0 -12
  170. package/dist-server/service/equipment/index.js.map +0 -1
  171. package/dist-server/service/equipment/state-period-rules.d.ts +0 -95
  172. package/dist-server/service/equipment/state-period-rules.js +0 -122
  173. package/dist-server/service/equipment/state-period-rules.js.map +0 -1
  174. package/dist-server/service/equipment/stop-reason-query.d.ts +0 -11
  175. package/dist-server/service/equipment/stop-reason-query.js +0 -39
  176. package/dist-server/service/equipment/stop-reason-query.js.map +0 -1
  177. package/dist-server/service/equipment/stop-reason.d.ts +0 -58
  178. package/dist-server/service/equipment/stop-reason.js +0 -114
  179. package/dist-server/service/equipment/stop-reason.js.map +0 -1
  180. package/dist-server/service/index.d.ts +0 -82
  181. package/dist-server/service/index.js +0 -145
  182. package/dist-server/service/index.js.map +0 -1
  183. package/dist-server/service/location/index.d.ts +0 -5
  184. package/dist-server/service/location/index.js +0 -9
  185. package/dist-server/service/location/index.js.map +0 -1
  186. package/dist-server/service/location/location-master-resolver.d.ts +0 -60
  187. package/dist-server/service/location/location-master-resolver.js +0 -313
  188. package/dist-server/service/location/location-master-resolver.js.map +0 -1
  189. package/dist-server/service/location/location-master.d.ts +0 -26
  190. package/dist-server/service/location/location-master.js +0 -28
  191. package/dist-server/service/location/location-master.js.map +0 -1
  192. package/dist-server/service/location/location-query.d.ts +0 -15
  193. package/dist-server/service/location/location-query.js +0 -56
  194. package/dist-server/service/location/location-query.js.map +0 -1
  195. package/dist-server/service/location/operational-location.d.ts +0 -116
  196. package/dist-server/service/location/operational-location.js +0 -157
  197. package/dist-server/service/location/operational-location.js.map +0 -1
  198. package/dist-server/service/master-axis.d.ts +0 -40
  199. package/dist-server/service/master-axis.js +0 -57
  200. package/dist-server/service/master-axis.js.map +0 -1
  201. package/dist-server/service/master-change-approval/approval-input.d.ts +0 -17
  202. package/dist-server/service/master-change-approval/approval-input.js +0 -35
  203. package/dist-server/service/master-change-approval/approval-input.js.map +0 -1
  204. package/dist-server/service/master-change-approval/builtin-axes.d.ts +0 -4
  205. package/dist-server/service/master-change-approval/builtin-axes.js +0 -96
  206. package/dist-server/service/master-change-approval/builtin-axes.js.map +0 -1
  207. package/dist-server/service/master-change-approval/index.d.ts +0 -14
  208. package/dist-server/service/master-change-approval/index.js +0 -37
  209. package/dist-server/service/master-change-approval/index.js.map +0 -1
  210. package/dist-server/service/master-change-approval/master-change-axis.d.ts +0 -54
  211. package/dist-server/service/master-change-approval/master-change-axis.js +0 -17
  212. package/dist-server/service/master-change-approval/master-change-axis.js.map +0 -1
  213. package/dist-server/service/master-change-approval/master-change-flow.d.ts +0 -65
  214. package/dist-server/service/master-change-approval/master-change-flow.js +0 -125
  215. package/dist-server/service/master-change-approval/master-change-flow.js.map +0 -1
  216. package/dist-server/service/master-change-approval/master-change-resolver.d.ts +0 -18
  217. package/dist-server/service/master-change-approval/master-change-resolver.js +0 -58
  218. package/dist-server/service/master-change-approval/master-change-resolver.js.map +0 -1
  219. package/dist-server/service/master-change-policy.d.ts +0 -122
  220. package/dist-server/service/master-change-policy.js +0 -304
  221. package/dist-server/service/master-change-policy.js.map +0 -1
  222. package/dist-server/service/master-conformance-resolver.d.ts +0 -34
  223. package/dist-server/service/master-conformance-resolver.js +0 -153
  224. package/dist-server/service/master-conformance-resolver.js.map +0 -1
  225. package/dist-server/service/master-conformance.d.ts +0 -80
  226. package/dist-server/service/master-conformance.js +0 -266
  227. package/dist-server/service/master-conformance.js.map +0 -1
  228. package/dist-server/service/master-crud.d.ts +0 -55
  229. package/dist-server/service/master-crud.js +0 -93
  230. package/dist-server/service/master-crud.js.map +0 -1
  231. package/dist-server/service/master-list.d.ts +0 -12
  232. package/dist-server/service/master-list.js +0 -30
  233. package/dist-server/service/master-list.js.map +0 -1
  234. package/dist-server/service/master-page-query.d.ts +0 -33
  235. package/dist-server/service/master-page-query.js +0 -55
  236. package/dist-server/service/master-page-query.js.map +0 -1
  237. package/dist-server/service/master-page.d.ts +0 -85
  238. package/dist-server/service/master-page.js +0 -104
  239. package/dist-server/service/master-page.js.map +0 -1
  240. package/dist-server/service/material/index.d.ts +0 -7
  241. package/dist-server/service/material/index.js +0 -12
  242. package/dist-server/service/material/index.js.map +0 -1
  243. package/dist-server/service/material/material-axis-status.d.ts +0 -8
  244. package/dist-server/service/material/material-axis-status.js +0 -19
  245. package/dist-server/service/material/material-axis-status.js.map +0 -1
  246. package/dist-server/service/material/material-class.d.ts +0 -34
  247. package/dist-server/service/material/material-class.js +0 -104
  248. package/dist-server/service/material/material-class.js.map +0 -1
  249. package/dist-server/service/material/material-definition.d.ts +0 -45
  250. package/dist-server/service/material/material-definition.js +0 -125
  251. package/dist-server/service/material/material-definition.js.map +0 -1
  252. package/dist-server/service/material/material-effective-list.d.ts +0 -39
  253. package/dist-server/service/material/material-effective-list.js +0 -54
  254. package/dist-server/service/material/material-effective-list.js.map +0 -1
  255. package/dist-server/service/material/material-master-resolver.d.ts +0 -106
  256. package/dist-server/service/material/material-master-resolver.js +0 -351
  257. package/dist-server/service/material/material-master-resolver.js.map +0 -1
  258. package/dist-server/service/material/material-master.d.ts +0 -9
  259. package/dist-server/service/material/material-master.js +0 -24
  260. package/dist-server/service/material/material-master.js.map +0 -1
  261. package/dist-server/service/material/material-query.d.ts +0 -16
  262. package/dist-server/service/material/material-query.js +0 -79
  263. package/dist-server/service/material/material-query.js.map +0 -1
  264. package/dist-server/service/material/material-revision-content.d.ts +0 -10
  265. package/dist-server/service/material/material-revision-content.js +0 -92
  266. package/dist-server/service/material/material-revision-content.js.map +0 -1
  267. package/dist-server/service/material/material-revision-resolver.d.ts +0 -60
  268. package/dist-server/service/material/material-revision-resolver.js +0 -96
  269. package/dist-server/service/material/material-revision-resolver.js.map +0 -1
  270. package/dist-server/service/material/material-revision-service.d.ts +0 -179
  271. package/dist-server/service/material/material-revision-service.js +0 -687
  272. package/dist-server/service/material/material-revision-service.js.map +0 -1
  273. package/dist-server/service/material/material-revision.d.ts +0 -86
  274. package/dist-server/service/material/material-revision.js +0 -339
  275. package/dist-server/service/material/material-revision.js.map +0 -1
  276. package/dist-server/service/material/recipe-index.d.ts +0 -23
  277. package/dist-server/service/material/recipe-index.js +0 -44
  278. package/dist-server/service/material/recipe-index.js.map +0 -1
  279. package/dist-server/service/operation/index.d.ts +0 -6
  280. package/dist-server/service/operation/index.js +0 -10
  281. package/dist-server/service/operation/index.js.map +0 -1
  282. package/dist-server/service/operation/operation-definition.d.ts +0 -52
  283. package/dist-server/service/operation/operation-definition.js +0 -143
  284. package/dist-server/service/operation/operation-definition.js.map +0 -1
  285. package/dist-server/service/operation/operation-master-resolver.d.ts +0 -52
  286. package/dist-server/service/operation/operation-master-resolver.js +0 -187
  287. package/dist-server/service/operation/operation-master-resolver.js.map +0 -1
  288. package/dist-server/service/operation/operation-master.d.ts +0 -21
  289. package/dist-server/service/operation/operation-master.js +0 -28
  290. package/dist-server/service/operation/operation-master.js.map +0 -1
  291. package/dist-server/service/operation/operation-query.d.ts +0 -15
  292. package/dist-server/service/operation/operation-query.js +0 -56
  293. package/dist-server/service/operation/operation-query.js.map +0 -1
  294. package/dist-server/service/operation/operation-readiness-resolver.d.ts +0 -39
  295. package/dist-server/service/operation/operation-readiness-resolver.js +0 -111
  296. package/dist-server/service/operation/operation-readiness-resolver.js.map +0 -1
  297. package/dist-server/service/operation/operation-readiness.d.ts +0 -34
  298. package/dist-server/service/operation/operation-readiness.js +0 -133
  299. package/dist-server/service/operation/operation-readiness.js.map +0 -1
  300. package/dist-server/service/personnel/index.d.ts +0 -6
  301. package/dist-server/service/personnel/index.js +0 -10
  302. package/dist-server/service/personnel/index.js.map +0 -1
  303. package/dist-server/service/personnel/person.d.ts +0 -51
  304. package/dist-server/service/personnel/person.js +0 -119
  305. package/dist-server/service/personnel/person.js.map +0 -1
  306. package/dist-server/service/personnel/personnel-class-readiness.d.ts +0 -22
  307. package/dist-server/service/personnel/personnel-class-readiness.js +0 -98
  308. package/dist-server/service/personnel/personnel-class-readiness.js.map +0 -1
  309. package/dist-server/service/personnel/personnel-class.d.ts +0 -54
  310. package/dist-server/service/personnel/personnel-class.js +0 -114
  311. package/dist-server/service/personnel/personnel-class.js.map +0 -1
  312. package/dist-server/service/personnel/personnel-master-resolver.d.ts +0 -53
  313. package/dist-server/service/personnel/personnel-master-resolver.js +0 -187
  314. package/dist-server/service/personnel/personnel-master-resolver.js.map +0 -1
  315. package/dist-server/service/personnel/personnel-master.d.ts +0 -39
  316. package/dist-server/service/personnel/personnel-master.js +0 -34
  317. package/dist-server/service/personnel/personnel-master.js.map +0 -1
  318. package/dist-server/service/personnel/personnel-query.d.ts +0 -29
  319. package/dist-server/service/personnel/personnel-query.js +0 -79
  320. package/dist-server/service/personnel/personnel-query.js.map +0 -1
  321. package/dist-server/service/personnel/qualification.d.ts +0 -104
  322. package/dist-server/service/personnel/qualification.js +0 -147
  323. package/dist-server/service/personnel/qualification.js.map +0 -1
  324. package/dist-server/service/quality/index.d.ts +0 -4
  325. package/dist-server/service/quality/index.js +0 -8
  326. package/dist-server/service/quality/index.js.map +0 -1
  327. package/dist-server/service/quality/nonconformance-cause-resolver.d.ts +0 -12
  328. package/dist-server/service/quality/nonconformance-cause-resolver.js +0 -60
  329. package/dist-server/service/quality/nonconformance-cause-resolver.js.map +0 -1
  330. package/dist-server/service/quality/nonconformance-cause.d.ts +0 -20
  331. package/dist-server/service/quality/nonconformance-cause.js +0 -90
  332. package/dist-server/service/quality/nonconformance-cause.js.map +0 -1
  333. package/dist-server/service/recipe/index.d.ts +0 -10
  334. package/dist-server/service/recipe/index.js +0 -16
  335. package/dist-server/service/recipe/index.js.map +0 -1
  336. package/dist-server/service/recipe/recipe-definition.d.ts +0 -75
  337. package/dist-server/service/recipe/recipe-definition.js +0 -143
  338. package/dist-server/service/recipe/recipe-definition.js.map +0 -1
  339. package/dist-server/service/recipe/recipe-effective-list.d.ts +0 -49
  340. package/dist-server/service/recipe/recipe-effective-list.js +0 -96
  341. package/dist-server/service/recipe/recipe-effective-list.js.map +0 -1
  342. package/dist-server/service/recipe/recipe-master-resolver.d.ts +0 -28
  343. package/dist-server/service/recipe/recipe-master-resolver.js +0 -128
  344. package/dist-server/service/recipe/recipe-master-resolver.js.map +0 -1
  345. package/dist-server/service/recipe/recipe-master.d.ts +0 -37
  346. package/dist-server/service/recipe/recipe-master.js +0 -47
  347. package/dist-server/service/recipe/recipe-master.js.map +0 -1
  348. package/dist-server/service/recipe/recipe-query.d.ts +0 -21
  349. package/dist-server/service/recipe/recipe-query.js +0 -82
  350. package/dist-server/service/recipe/recipe-query.js.map +0 -1
  351. package/dist-server/service/recipe/recipe-revision-content.d.ts +0 -32
  352. package/dist-server/service/recipe/recipe-revision-content.js +0 -70
  353. package/dist-server/service/recipe/recipe-revision-content.js.map +0 -1
  354. package/dist-server/service/recipe/recipe-revision-line.d.ts +0 -30
  355. package/dist-server/service/recipe/recipe-revision-line.js +0 -95
  356. package/dist-server/service/recipe/recipe-revision-line.js.map +0 -1
  357. package/dist-server/service/recipe/recipe-revision-resolver.d.ts +0 -65
  358. package/dist-server/service/recipe/recipe-revision-resolver.js +0 -96
  359. package/dist-server/service/recipe/recipe-revision-resolver.js.map +0 -1
  360. package/dist-server/service/recipe/recipe-revision-service.d.ts +0 -183
  361. package/dist-server/service/recipe/recipe-revision-service.js +0 -754
  362. package/dist-server/service/recipe/recipe-revision-service.js.map +0 -1
  363. package/dist-server/service/recipe/recipe-revision.d.ts +0 -102
  364. package/dist-server/service/recipe/recipe-revision.js +0 -373
  365. package/dist-server/service/recipe/recipe-revision.js.map +0 -1
  366. package/dist-server/service/recipe/route-definition.d.ts +0 -51
  367. package/dist-server/service/recipe/route-definition.js +0 -114
  368. package/dist-server/service/recipe/route-definition.js.map +0 -1
  369. package/dist-server/service/resource/class-lineage.d.ts +0 -46
  370. package/dist-server/service/resource/class-lineage.js +0 -80
  371. package/dist-server/service/resource/class-lineage.js.map +0 -1
  372. package/dist-server/service/resource/class-members.d.ts +0 -36
  373. package/dist-server/service/resource/class-members.js +0 -59
  374. package/dist-server/service/resource/class-members.js.map +0 -1
  375. package/dist-server/service/resource/referrers.d.ts +0 -54
  376. package/dist-server/service/resource/referrers.js +0 -99
  377. package/dist-server/service/resource/referrers.js.map +0 -1
  378. package/dist-server/service/resource/resource-class.d.ts +0 -25
  379. package/dist-server/service/resource/resource-class.js +0 -29
  380. package/dist-server/service/resource/resource-class.js.map +0 -1
  381. package/dist-server/service/revision-baseline.d.ts +0 -71
  382. package/dist-server/service/revision-baseline.js +0 -87
  383. package/dist-server/service/revision-baseline.js.map +0 -1
  384. package/dist-server/service/row-lock.d.ts +0 -22
  385. package/dist-server/service/row-lock.js +0 -31
  386. package/dist-server/service/row-lock.js.map +0 -1
  387. package/dist-server/service/status/axis-stamp.d.ts +0 -16
  388. package/dist-server/service/status/axis-stamp.js +0 -22
  389. package/dist-server/service/status/axis-stamp.js.map +0 -1
  390. package/dist-server/service/status/index.d.ts +0 -3
  391. package/dist-server/service/status/index.js +0 -7
  392. package/dist-server/service/status/index.js.map +0 -1
  393. package/dist-server/service/status/master-status.d.ts +0 -38
  394. package/dist-server/service/status/master-status.js +0 -129
  395. package/dist-server/service/status/master-status.js.map +0 -1
  396. package/dist-server/service/test-spec/criteria-check.d.ts +0 -53
  397. package/dist-server/service/test-spec/criteria-check.js +0 -142
  398. package/dist-server/service/test-spec/criteria-check.js.map +0 -1
  399. package/dist-server/service/test-spec/criteria-rows.d.ts +0 -89
  400. package/dist-server/service/test-spec/criteria-rows.js +0 -139
  401. package/dist-server/service/test-spec/criteria-rows.js.map +0 -1
  402. package/dist-server/service/test-spec/index.d.ts +0 -6
  403. package/dist-server/service/test-spec/index.js +0 -11
  404. package/dist-server/service/test-spec/index.js.map +0 -1
  405. package/dist-server/service/test-spec/test-spec-effective-list.d.ts +0 -34
  406. package/dist-server/service/test-spec/test-spec-effective-list.js +0 -42
  407. package/dist-server/service/test-spec/test-spec-effective-list.js.map +0 -1
  408. package/dist-server/service/test-spec/test-spec-master-resolver.d.ts +0 -44
  409. package/dist-server/service/test-spec/test-spec-master-resolver.js +0 -144
  410. package/dist-server/service/test-spec/test-spec-master-resolver.js.map +0 -1
  411. package/dist-server/service/test-spec/test-spec-master.d.ts +0 -6
  412. package/dist-server/service/test-spec/test-spec-master.js +0 -18
  413. package/dist-server/service/test-spec/test-spec-master.js.map +0 -1
  414. package/dist-server/service/test-spec/test-spec-query.d.ts +0 -15
  415. package/dist-server/service/test-spec/test-spec-query.js +0 -61
  416. package/dist-server/service/test-spec/test-spec-query.js.map +0 -1
  417. package/dist-server/service/test-spec/test-spec-revision-resolver.d.ts +0 -59
  418. package/dist-server/service/test-spec/test-spec-revision-resolver.js +0 -96
  419. package/dist-server/service/test-spec/test-spec-revision-resolver.js.map +0 -1
  420. package/dist-server/service/test-spec/test-spec-revision-service.d.ts +0 -178
  421. package/dist-server/service/test-spec/test-spec-revision-service.js +0 -685
  422. package/dist-server/service/test-spec/test-spec-revision-service.js.map +0 -1
  423. package/dist-server/service/test-spec/test-spec-revision.d.ts +0 -86
  424. package/dist-server/service/test-spec/test-spec-revision.js +0 -334
  425. package/dist-server/service/test-spec/test-spec-revision.js.map +0 -1
  426. package/dist-server/service/test-spec/test-specification.d.ts +0 -47
  427. package/dist-server/service/test-spec/test-specification.js +0 -119
  428. package/dist-server/service/test-spec/test-specification.js.map +0 -1
  429. package/dist-server/tsconfig.tsbuildinfo +0 -1
@@ -1,763 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import '@operato/data-grist/ox-grist.js';
3
- import gql from 'graphql-tag';
4
- import { html, css, nothing } from 'lit';
5
- import { state } from 'lit/decorators.js';
6
- import { client } from '@operato/graphql';
7
- import { i18next } from '@operato/i18n';
8
- import { OxPrompt } from '@operato/popup';
9
- import { IDENTITY, MasterPageBase } from './master-page-base.js';
10
- import { requestMasterChangeApproval, masterChangeStatus } from '../../master-change-approval.js';
11
- import { revisionText as t, revisionDate as date, revisionStyles } from './revision-comparison.js';
12
- import { materialRevisionFields } from './material-revision-fields.js';
13
- import { localDateTime, isoFromLocal, isBaseline, reasonOf } from './revision-view.js';
14
- /** Shared workflow, not shared domain payload. Both consumers keep their existing page/URL identities. */
15
- export class RevisionWorkspace extends MasterPageBase {
16
- constructor() {
17
- super(...arguments);
18
- this.newName = '';
19
- this.busy = false;
20
- this.dirty = false;
21
- this.failure = '';
22
- this.message = '';
23
- this.statuses = {};
24
- this.serial = 0;
25
- }
26
- static { this.styles = [
27
- ...MasterPageBase.styles,
28
- revisionStyles,
29
- css `
30
- :host {
31
- display: flex;
32
- flex-direction: column;
33
- min-height: 0;
34
- }
35
- ox-grist {
36
- flex: 1;
37
- min-height: 240px;
38
- }
39
- ox-grist[hidden] {
40
- display: none;
41
- }
42
- .workspace {
43
- overflow: auto;
44
- flex: 1;
45
- padding: 20px 24px;
46
- }
47
- .bar {
48
- display: flex;
49
- align-items: center;
50
- gap: 12px;
51
- flex-wrap: wrap;
52
- }
53
- .bar h2 {
54
- margin: 8px 0;
55
- font-size: var(--ui-t-title, 20px);
56
- flex: 1;
57
- overflow-wrap: anywhere;
58
- }
59
- .summary {
60
- display: grid;
61
- grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
62
- gap: 16px;
63
- margin: 20px 0;
64
- }
65
- .card {
66
- padding: 16px;
67
- border: 1px solid var(--ui-line);
68
- border-radius: 6px;
69
- background: var(--md-sys-color-surface);
70
- }
71
- .card h3 {
72
- margin: 0 0 10px;
73
- }
74
- .card p {
75
- margin: 8px 0;
76
- }
77
- .current {
78
- border-inline-start: 4px solid var(--md-sys-color-primary);
79
- }
80
- .fields {
81
- display: grid;
82
- grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
83
- gap: 16px;
84
- margin: 16px 0;
85
- }
86
- label {
87
- display: flex;
88
- flex-direction: column;
89
- gap: 6px;
90
- font-size: var(--ui-t-small, 13px);
91
- }
92
- input,
93
- textarea {
94
- box-sizing: border-box;
95
- width: 100%;
96
- padding: 8px;
97
- border: 1px solid var(--ui-line);
98
- border-radius: 4px;
99
- font: inherit;
100
- background: var(--md-sys-color-surface);
101
- color: inherit;
102
- }
103
- td input {
104
- min-width: 100px;
105
- }
106
- textarea {
107
- min-height: 70px;
108
- }
109
- .actions {
110
- display: flex;
111
- flex-wrap: wrap;
112
- gap: 12px;
113
- margin-top: 20px;
114
- align-items: center;
115
- }
116
- .notice {
117
- padding: 12px;
118
- background: var(--md-sys-color-surface-container);
119
- border-radius: 4px;
120
- }
121
- .failure {
122
- padding: 12px;
123
- border-inline-start: 4px solid var(--md-sys-color-error);
124
- color: var(--md-sys-color-error);
125
- }
126
- .empty {
127
- padding: 24px;
128
- }
129
- .hint {
130
- font-size: var(--ui-t-small, 13px);
131
- }
132
- .editor {
133
- border-top: 1px solid var(--ui-line);
134
- margin-top: 20px;
135
- padding-top: 12px;
136
- }
137
- @media (max-width: 700px) {
138
- .workspace {
139
- padding: 12px;
140
- }
141
- .summary {
142
- grid-template-columns: 1fr;
143
- }
144
- .fields {
145
- grid-template-columns: 1fr;
146
- }
147
- }
148
- `
149
- ]; }
150
- get recipe() {
151
- return this.axis === 'recipeDefinition';
152
- }
153
- get material() { return this.axis === 'materialDefinition'; }
154
- get names() {
155
- if (this.material)
156
- return { noun: 'material', list: 'materialDefinitions', overview: 'materialDefinitionRevisions', subject: 'materialId', create: 'createMaterialDefinitionDraft', edit: 'editMaterialDefinitionDraft', publish: 'publishMaterialDefinitionDraft' };
157
- return this.recipe
158
- ? {
159
- noun: 'recipe',
160
- list: 'recipeDefinitions',
161
- overview: 'recipeRevisions',
162
- subject: 'recipeId',
163
- create: 'createRecipeDraft',
164
- edit: 'editRecipeDraft',
165
- publish: 'publishRecipeDraft'
166
- }
167
- : {
168
- noun: 'spec',
169
- list: 'testSpecifications',
170
- overview: 'testSpecificationRevisions',
171
- subject: 'specId',
172
- create: 'createTestSpecificationDraft',
173
- edit: 'editTestSpecificationDraft',
174
- publish: 'publishTestSpecificationDraft'
175
- };
176
- }
177
- get spec() {
178
- return {
179
- key: this.axis,
180
- title: this.material ? 'material' : this.recipe ? 'recipe' : 'test-specification',
181
- help: 'ops-master/' + (this.material ? 'material-definition' : this.recipe ? 'recipe-definition' : 'test-specification'),
182
- query: this.names.list,
183
- mutation: this.material ? 'updateMultipleMaterialDefinition' : this.recipe ? 'updateMultipleRecipeDefinition' : 'updateMultipleTestSpecification',
184
- columns: [
185
- ...IDENTITY,
186
- ...(this.material ? [
187
- { name: 'rootClasses', label: 'material-type', type: 'list', width: 120 },
188
- { name: 'classPath', label: 'class-lineage', type: 'list', width: 180 },
189
- { name: 'madeBy', label: 'made-by', type: 'list', width: 180 },
190
- { name: 'usedIn', label: 'used-in', type: 'list', width: 180 }
191
- ] : []),
192
- { name: 'revisionNumber', label: 'revision', type: 'number' },
193
- { name: 'effectiveStart', label: 'effective-start', type: 'date' }
194
- ].map(column => ({ ...column, readonly: true }))
195
- };
196
- }
197
- get pathSegmentNarrowsList() {
198
- return false;
199
- }
200
- get context() {
201
- return {
202
- ...super.context,
203
- importable: undefined,
204
- exportable: this.overview || this.draft ? undefined : super.context.exportable,
205
- search: this.overview || this.draft ? undefined : super.context.search,
206
- description: t('purpose'),
207
- actions: this.draft && !this.draft.frozenAt
208
- ? [
209
- {
210
- title: this.approvalRequired ? t('request-approval') : i18next.t('button.save'),
211
- icon: 'done',
212
- emphasis: { raised: true },
213
- disabled: this.busy || this.approvalRequired === undefined,
214
- action: () => this.submit()
215
- }
216
- ]
217
- : this.overview || this.draft
218
- ? []
219
- : [
220
- {
221
- title: t(this.material ? 'new-material' : this.recipe ? 'new-recipe' : 'new-spec'),
222
- icon: 'add',
223
- emphasis: { raised: true },
224
- action: () => this.startNew()
225
- }
226
- ]
227
- };
228
- }
229
- updated(changes) {
230
- super.updated(changes);
231
- if (this.active && ['overview', 'draft', 'busy', 'approvalRequired'].some(key => changes.has(key)))
232
- this.updateContext();
233
- }
234
- configOf() {
235
- const config = super.configOf();
236
- return { ...config, rows: { ...config.rows, appendable: false, selectable: { multiple: false } } };
237
- }
238
- async pageInitialized() {
239
- await super.pageInitialized();
240
- await this.openResource(this.lifecycle?.resourceId);
241
- }
242
- async pageUpdated(changes, after, before) {
243
- await super.pageUpdated();
244
- if (after?.resourceId !== before?.resourceId)
245
- await this.openResource(after?.resourceId);
246
- }
247
- async openResource(key) {
248
- if (!key)
249
- return;
250
- await this.run(async () => {
251
- const response = await client.query({
252
- query: gql(`query($filters:[Filter!]){${this.names.list}(filters:$filters){items{id}}}`),
253
- variables: { filters: [{ name: 'name', operator: 'eq', value: key }] },
254
- fetchPolicy: 'no-cache'
255
- });
256
- this.assert(response);
257
- const row = response.data[this.names.list].items[0];
258
- if (row)
259
- await this.load(row.id);
260
- });
261
- }
262
- assert(response) {
263
- if (response.errors?.length)
264
- throw new Error(response.errors.map((e) => e.message).join('\n'));
265
- if (!response.data)
266
- throw new Error(t('no-response'));
267
- }
268
- async run(work) {
269
- if (this.busy)
270
- return;
271
- this.busy = true;
272
- this.failure = '';
273
- try {
274
- await work();
275
- }
276
- catch (error) {
277
- this.failure = error.message;
278
- }
279
- finally {
280
- this.busy = false;
281
- }
282
- }
283
- async canLeave() {
284
- return (!this.dirty ||
285
- !!(await OxPrompt.open({
286
- title: t('unsaved'),
287
- text: t('discard-question'),
288
- confirmButton: { text: t('discard') },
289
- cancelButton: { text: t('keep-editing') }
290
- })));
291
- }
292
- blank() {
293
- return {
294
- version: '1',
295
- description: '',
296
- materialDefinitionName: '',
297
- effectiveFrom: new Date().toISOString(),
298
- reason: '',
299
- materialClassIds: [], properties: [], testSpecificationIds: [],
300
- criteria: [],
301
- inputs: [],
302
- outputs: []
303
- };
304
- }
305
- async policy() {
306
- const response = await client.query({
307
- query: gql `
308
- query ($axis: String!) {
309
- masterChangePolicy(axis: $axis)
310
- }
311
- `,
312
- variables: { axis: this.axis },
313
- fetchPolicy: 'no-cache'
314
- });
315
- this.assert(response);
316
- this.approvalRequired = response.data.masterChangePolicy.approvalRequired;
317
- }
318
- async startNew() {
319
- if (!(await this.canLeave()))
320
- return;
321
- await this.run(async () => {
322
- ++this.serial;
323
- this.overview = undefined;
324
- this.draft = this.blank();
325
- this.newName = '';
326
- this.dirty = false;
327
- this.message = '';
328
- await this.policy();
329
- });
330
- }
331
- async pick(event) {
332
- const row = event.detail?.records?.[0] ?? event.detail?.added?.[0];
333
- if (!row?.id || !(await this.canLeave()))
334
- return;
335
- await this.run(async () => {
336
- this.draft = undefined;
337
- this.dirty = false;
338
- this.message = '';
339
- await this.load(row.id);
340
- });
341
- }
342
- async load(id) {
343
- const serial = ++this.serial;
344
- const response = await client.query({
345
- query: gql(`query($id:String!){${this.names.overview}(${this.names.subject}:$id)}`),
346
- variables: { id },
347
- fetchPolicy: 'no-cache'
348
- });
349
- this.assert(response);
350
- if (serial !== this.serial)
351
- return;
352
- this.overview = response.data[this.names.overview];
353
- await this.policy();
354
- const statuses = {};
355
- await Promise.all(this.overview.revisions
356
- .filter((row) => row.activityInstanceId)
357
- .map(async (row) => {
358
- try {
359
- statuses[row.id] = await masterChangeStatus(this, row.activityInstanceId);
360
- }
361
- catch (error) {
362
- statuses[row.id] = { state: 'unknown', comment: error.message };
363
- }
364
- }));
365
- if (serial === this.serial)
366
- this.statuses = statuses;
367
- }
368
- get currentSegment() {
369
- return this.overview?.schedule.find((s) => s.state === 'current');
370
- }
371
- get current() {
372
- return this.overview?.revisions.find((r) => r.id === this.currentSegment?.revisionId);
373
- }
374
- get comparisonBase() {
375
- if (this.draft?.id && (!this.dirty || this.draft.frozenAt))
376
- return this.overview?.revisions.find((r) => r.id === this.draft.baseRevisionId);
377
- const at = this.draft?.effectiveFrom;
378
- const segment = this.overview?.schedule.find((s) => s.validFrom <= at && (!s.validTo || at < s.validTo));
379
- return this.overview?.revisions.find((r) => r.id === segment?.revisionId);
380
- }
381
- stateOf(row) {
382
- const segment = this.overview?.schedule.find((s) => s.revisionId === row.id);
383
- return (segment?.state ??
384
- (row.activityInstanceId ? (this.statuses[row.id]?.state ?? 'unknown') : row.frozenAt ? 'approved' : 'draft'));
385
- }
386
- async openRevision(row, fork = false) {
387
- if (!(await this.canLeave()))
388
- return;
389
- this.draft = structuredClone(row ?? this.blank());
390
- if (fork)
391
- this.draft = {
392
- ...this.draft,
393
- id: undefined,
394
- revisionNumber: undefined,
395
- frozenAt: undefined,
396
- activityInstanceId: undefined,
397
- editGeneration: undefined,
398
- baseRevisionId: undefined,
399
- releaseKind: null,
400
- effectiveFrom: new Date().toISOString(),
401
- reason: ''
402
- };
403
- this.dirty = false;
404
- this.message = '';
405
- await this.updateComplete;
406
- this.renderRoot.querySelector('.editor')?.scrollIntoView({ block: 'start', behavior: 'smooth' });
407
- }
408
- change(field, value) {
409
- this.draft = { ...this.draft, [field]: value };
410
- this.dirty = true;
411
- this.message = '';
412
- }
413
- line(section, index, field, value) {
414
- const rows = this.draft[section].map((row) => ({ ...row, limit: { ...row.limit } }));
415
- const numeric = ['qty', 'minimum', 'maximum'].includes(field);
416
- const next = numeric ? (value === '' ? undefined : Number(value)) : value;
417
- if (section === 'criteria' && ['minimum', 'maximum', 'uom'].includes(field))
418
- rows[index].limit[field] = next;
419
- else
420
- rows[index][field] = next;
421
- this.change(section, rows);
422
- }
423
- async save() {
424
- await this.run(async () => {
425
- await this.persist();
426
- this.message = t('saved');
427
- });
428
- }
429
- async persist(publish = false) {
430
- if (!this.draft || this.draft.frozenAt)
431
- return;
432
- const invalid = this.renderRoot.querySelector('input:invalid,textarea:invalid');
433
- if (invalid) {
434
- invalid.reportValidity();
435
- throw new Error(t('required-fields'));
436
- }
437
- const { version, description, criteria, inputs, outputs, materialDefinitionName, route, effectiveFrom, reason } = this.draft;
438
- const content = this.material
439
- ? { description, materialClassIds: this.draft.materialClassIds, properties: this.draft.properties, testSpecificationIds: this.draft.testSpecificationIds, effectiveFrom, reason }
440
- : this.recipe
441
- ? { description, inputs, outputs, materialDefinitionName, route: route || null, effectiveFrom, reason }
442
- : { version, description, criteria, effectiveFrom, reason };
443
- const n = this.names;
444
- const saveOnce = this.material ? 'saveAndPublishMaterialDefinition' : this.recipe ? 'saveAndPublishRecipe' : 'saveAndPublishTestSpecification';
445
- const response = publish
446
- ? await client.mutate({
447
- mutation: gql(`mutation($subject:String,$name:String,$revisionId:String,$editGeneration:Int,$content:Object!){${saveOnce}(${n.subject}:$subject,name:$name,revisionId:$revisionId,editGeneration:$editGeneration,content:$content)}`),
448
- variables: { subject: this.overview?.[n.subject], name: this.overview ? undefined : this.newName,
449
- revisionId: this.draft.id, editGeneration: this.draft.editGeneration, content }
450
- })
451
- : this.draft.id
452
- ? await client.mutate({
453
- mutation: gql(`mutation($id:String!,$generation:Int!,$content:Object!){${n.edit}(revisionId:$id,editGeneration:$generation,content:$content)}`),
454
- variables: { id: this.draft.id, generation: this.draft.editGeneration, content }
455
- })
456
- : await client.mutate({
457
- mutation: gql(`mutation($subject:String,$name:String,$content:Object!){${n.create}(${n.subject}:$subject,name:$name,content:$content)}`),
458
- variables: { subject: this.overview?.[n.subject], name: this.overview ? undefined : this.newName, content }
459
- });
460
- this.assert(response);
461
- this.draft = publish ? response.data[saveOnce].revision : response.data[n.edit] ?? response.data[n.create];
462
- this.dirty = false;
463
- await this.load(this.draft[n.subject]);
464
- await this.grist?.fetch();
465
- }
466
- async submit() {
467
- await this.run(async () => {
468
- if (!this.draft || this.draft.frozenAt)
469
- return;
470
- await this.policy();
471
- if (!this.approvalRequired) {
472
- await this.persist(true);
473
- this.message = t('published');
474
- return;
475
- }
476
- await this.persist();
477
- if (!this.draft?.id || this.draft.frozenAt)
478
- return;
479
- await requestMasterChangeApproval(this, {
480
- axis: this.axis,
481
- revisionId: this.draft.id,
482
- editGeneration: this.draft.editGeneration
483
- });
484
- const id = this.draft.id;
485
- await this.load(this.draft[this.names.subject]);
486
- this.draft = this.overview.revisions.find((r) => r.id === id);
487
- await this.grist?.fetch();
488
- this.message = t('submitted');
489
- });
490
- }
491
- content(row, editable = false) {
492
- if (this.material)
493
- return materialRevisionFields(row, editable ? (field, value) => this.change(field, value) : undefined);
494
- return (this.recipe ? ['inputs', 'outputs'] : ['criteria']).map(section => {
495
- const fields = section === 'criteria'
496
- ? ['id', 'description', 'evaluatedPropertyId', 'minimum', 'maximum', 'uom', 'expression']
497
- : section === 'inputs'
498
- ? ['material', 'qty', 'operation']
499
- : ['material', 'qty'];
500
- return html `<h3>${t(section)}</h3>
501
- <div class="scroll">
502
- <table>
503
- <thead>
504
- <tr>
505
- ${fields.map(field => html `<th>${t(field)}</th>`)}${editable ? html `<th>${t('actions')}</th>` : nothing}
506
- </tr>
507
- </thead>
508
- <tbody>
509
- ${(row[section] ?? []).map((line, index) => html `<tr>
510
- ${fields.map(field => {
511
- const value = section === 'criteria' && ['minimum', 'maximum', 'uom'].includes(field)
512
- ? line.limit?.[field]
513
- : line[field];
514
- return html `<td>
515
- ${editable ? html `<input aria-label=${t(section) + ' ' + (index + 1) + ' ' + t(field)} .value=${String(value ?? '')} type=${['qty', 'minimum', 'maximum'].includes(field) ? 'number' : 'text'} step="any" ?required=${['id', 'material', 'qty', 'evaluatedPropertyId'].includes(field)} @input=${(e) => this.line(section, index, field, e.target.value)} />` : (value ?? '—')}
516
- </td>`;
517
- })}${editable
518
- ? html `<td>
519
- <button
520
- aria-label=${t('remove-row', { n: index + 1 })}
521
- @click=${() => this.change(section, row[section].filter((_, i) => i !== index))}
522
- >
523
- ${t('remove')}
524
- </button>
525
- </td>`
526
- : nothing}
527
- </tr>`)}
528
- </tbody>
529
- </table>
530
- </div>
531
- ${editable ? html `<button @click=${() => this.change(section, [...row[section], section === 'criteria' ? { id: '', description: '', limit: {} } : { lineKey: crypto.randomUUID(), material: '', qty: 1 }])}>${t('add-' + section)}</button>` : nothing}
532
- ${section === 'criteria' && row.criteria?.some((c) => c.expression) ? html `<p class="notice">${t('expression-preserved')}</p>` : nothing}`;
533
- });
534
- }
535
- status(row) {
536
- const state = this.stateOf(row), decision = this.statuses[row.id];
537
- return html `<span class="pill">${t(state)}</span
538
- >${decision?.who ? html `<span> · ${decision.who}</span>` : ''}${decision?.comment ? html `<p>${decision.comment}</p>` : ''}${decision?.open ? html `<button @click=${() => decision.open()}>${t('approval-detail')}</button>` : ''}`;
539
- }
540
- render() {
541
- const current = this.current;
542
- const next = this.overview?.schedule.filter((s) => s.state === 'scheduled') ?? [];
543
- const changes = this.overview?.revisions.filter((r) => !this.overview.schedule.some((s) => s.revisionId === r.id)) ?? [];
544
- const readonly = !!this.draft?.frozenAt || this.busy;
545
- return html ` <ox-grist
546
- ?hidden=${!!this.overview || !!this.draft}
547
- .mode=${this.mode}
548
- .config=${this.gristConfig}
549
- .fetchHandler=${this.fetchHandler.bind(this)}
550
- @select-record-change=${this.pick.bind(this)}
551
- ></ox-grist>
552
- ${this.overview || this.draft
553
- ? html `<main class="workspace" aria-busy=${this.busy}>
554
- <div class="bar">
555
- <button
556
- ?disabled=${this.busy}
557
- @click=${async () => {
558
- if (await this.canLeave()) {
559
- this.overview = undefined;
560
- this.draft = undefined;
561
- this.dirty = false;
562
- await this.grist?.fetch();
563
- }
564
- }}
565
- >
566
- ${t('back-list')}
567
- </button>
568
- <h2>${this.overview?.name ?? t(this.material ? 'new-material' : this.recipe ? 'new-recipe' : 'new-spec')}</h2>
569
- ${this.overview
570
- ? html `<button
571
- ?disabled=${this.busy}
572
- @click=${() => this.run(async () => {
573
- this.message = '';
574
- await this.load(this.overview[this.names.subject]);
575
- await this.grist?.fetch();
576
- })}
577
- >
578
- ${t('refresh')}</button
579
- ><button
580
- class="primary"
581
- ?disabled=${this.busy}
582
- @click=${() => this.openRevision(current, true)}
583
- >
584
- ${t('create-change')}
585
- </button>`
586
- : ''}
587
- </div>
588
- ${this.overview
589
- ? html `<div class="summary">
590
- <section class="card current">
591
- <h3>${t('current')}</h3>
592
- ${current
593
- ? html `<strong>${t('revision-value', { n: current.revisionNumber })}</strong>
594
- <p>
595
- ${date(this.currentSegment.validFrom)} →
596
- ${this.currentSegment.validTo ? date(this.currentSegment.validTo) : t('until-change')}
597
- </p>
598
- <button @click=${() => this.openRevision(current)}>${t('view-current')}</button>`
599
- : html `<p>${t('no-current')}</p>`}
600
- </section>
601
- <section class="card">
602
- <h3>${t('changes-in-progress')} · ${changes.length}</h3>
603
- ${changes.length ? changes.map((row) => html `<p><button @click=${() => this.openRevision(row)}>${t('revision-value', { n: row.revisionNumber })}</button> ${this.status(row)}</p>`) : html `<p class="muted">${t('no-drafts')}</p>`}
604
- </section>
605
- <section class="card">
606
- <h3>${t('scheduled')}</h3>
607
- ${next.length
608
- ? next.map((segment) => {
609
- const row = this.overview.revisions.find((r) => r.id === segment.revisionId);
610
- return html `<p>
611
- <button @click=${() => this.openRevision(row)}>
612
- ${t('revision-value', { n: row.revisionNumber })}
613
- </button>
614
- · ${date(segment.validFrom)}
615
- </p>`;
616
- })
617
- : html `<p class="muted">${t('no-scheduled')}</p>`}
618
- </section>
619
- </div>
620
- ${!this.draft && current
621
- ? html `<h3>${t('current-content')}</h3>
622
- <p>${current.description}</p>
623
- ${this.content(current)}`
624
- : ''}
625
- <details>
626
- <summary>${t('history')}</summary>
627
- <table>
628
- <thead>
629
- <tr>
630
- <th>${t('revision')}</th>
631
- <th>${t('state')}</th>
632
- <th>${t('effectiveFrom')}</th>
633
- <th>${t('reason')}</th>
634
- </tr>
635
- </thead>
636
- <tbody>
637
- ${[...this.overview.revisions].reverse().map((row) => html `<tr>
638
- <td><button @click=${() => this.openRevision(row)}>${row.revisionNumber}</button></td>
639
- <td>${this.status(row)}</td>
640
- <td>${date(row.effectiveFrom)}</td>
641
- <td>
642
- ${reasonOf(row, t('first-record'))}
643
- ${isBaseline(row) ? html `<div class="muted">${t('first-record-why')}</div>` : nothing}
644
- </td>
645
- </tr>`)}
646
- </tbody>
647
- </table>
648
- </details>`
649
- : ''}
650
- ${this.draft
651
- ? html `<section class="editor">
652
- <div class="bar">
653
- <h3>
654
- ${this.draft.id ? t('revision-value', { n: this.draft.revisionNumber }) : t('new-change')}
655
- </h3>
656
- ${this.draft.id ? this.status(this.draft) : ''}<button
657
- ?disabled=${this.busy}
658
- @click=${async () => {
659
- if (await this.canLeave()) {
660
- this.draft = undefined;
661
- this.dirty = false;
662
- }
663
- }}
664
- >
665
- ${t('close-editor')}
666
- </button>
667
- </div>
668
- <p class="notice">${t(this.material ? 'material-impact' : this.recipe ? 'recipe-impact' : 'spec-impact')}</p>
669
- <div class="fields">
670
- ${!this.overview
671
- ? html `<label
672
- >${t('name')}<input
673
- required
674
- .value=${this.newName}
675
- @input=${(e) => {
676
- this.newName = e.target.value;
677
- this.dirty = true;
678
- }}
679
- /></label>`
680
- : ''}
681
- ${['description', ...(this.material ? [] : this.recipe ? ['materialDefinitionName', 'route'] : ['version'])].map(field => html `<label>${t(field)}<input ?disabled=${readonly} ?required=${field === 'materialDefinitionName' || field === 'version'} .value=${this.draft[field] ?? ''} @input=${(e) => this.change(field, e.target.value)} /></label>`)}
682
- <label
683
- >${t('effectiveFrom')}<input
684
- type="datetime-local"
685
- required
686
- ?disabled=${readonly}
687
- .value=${localDateTime(this.draft.effectiveFrom)}
688
- @change=${(e) => {
689
- try {
690
- this.change('effectiveFrom', isoFromLocal(e.target.value));
691
- }
692
- catch {
693
- this.failure = t('invalid-date');
694
- }
695
- }}
696
- /><span class="muted hint"
697
- >${t('time-zone')} · ${Intl.DateTimeFormat().resolvedOptions().timeZone}</span
698
- ></label
699
- >
700
- <label
701
- >${t('reason')}<textarea
702
- required
703
- ?disabled=${readonly}
704
- .value=${this.draft.reason ?? ''}
705
- @input=${(e) => this.change('reason', e.target.value)}
706
- ></textarea>
707
- </label>
708
- </div>
709
- ${this.content(this.draft, !readonly)}
710
- <ops-master-revision-comparison
711
- .axis=${this.axis}
712
- .before=${this.comparisonBase}
713
- .after=${this.draft}
714
- ></ops-master-revision-comparison>
715
- <div class="actions">
716
- ${this.draft.frozenAt ? html `<button ?disabled=${this.busy} @click=${() => this.openRevision(this.draft, true)}>${t('create-change')}</button>` : html `<button ?disabled=${this.busy} @click=${() => this.save()}>${t('save-draft')}</button>`}${this.dirty ? html `<span>${t('unsaved')}</span>` : ''}
717
- </div>
718
- </section>`
719
- : ''}
720
- ${this.message ? html `<p role="status" class="notice">${this.message}</p>` : ''}${this.failure ? html `<p role="alert" class="failure">${this.failure}</p>` : ''}
721
- </main>`
722
- : this.failure
723
- ? html `<p role="alert" class="failure">${this.failure}</p>`
724
- : nothing}`;
725
- }
726
- }
727
- __decorate([
728
- state(),
729
- __metadata("design:type", Object)
730
- ], RevisionWorkspace.prototype, "overview", void 0);
731
- __decorate([
732
- state(),
733
- __metadata("design:type", Object)
734
- ], RevisionWorkspace.prototype, "draft", void 0);
735
- __decorate([
736
- state(),
737
- __metadata("design:type", Object)
738
- ], RevisionWorkspace.prototype, "newName", void 0);
739
- __decorate([
740
- state(),
741
- __metadata("design:type", Object)
742
- ], RevisionWorkspace.prototype, "busy", void 0);
743
- __decorate([
744
- state(),
745
- __metadata("design:type", Object)
746
- ], RevisionWorkspace.prototype, "dirty", void 0);
747
- __decorate([
748
- state(),
749
- __metadata("design:type", Object)
750
- ], RevisionWorkspace.prototype, "failure", void 0);
751
- __decorate([
752
- state(),
753
- __metadata("design:type", Object)
754
- ], RevisionWorkspace.prototype, "message", void 0);
755
- __decorate([
756
- state(),
757
- __metadata("design:type", Object)
758
- ], RevisionWorkspace.prototype, "approvalRequired", void 0);
759
- __decorate([
760
- state(),
761
- __metadata("design:type", Object)
762
- ], RevisionWorkspace.prototype, "statuses", void 0);
763
- //# sourceMappingURL=revision-workspace.js.map