@things-factory/worklist 10.1.167 → 10.1.169

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 (84) hide show
  1. package/dist-client/components/activity-starter-form.js +2 -0
  2. package/dist-client/components/activity-starter-form.js.map +1 -1
  3. package/dist-client/components/decision-content.d.ts +35 -0
  4. package/dist-client/components/decision-content.js +310 -0
  5. package/dist-client/components/decision-content.js.map +1 -0
  6. package/dist-client/components/decision-slots.d.ts +8 -0
  7. package/dist-client/components/decision-slots.js +17 -0
  8. package/dist-client/components/decision-slots.js.map +1 -1
  9. package/dist-client/components/work-box-groups.d.ts +25 -0
  10. package/dist-client/components/work-box-groups.js +98 -0
  11. package/dist-client/components/work-box-groups.js.map +1 -0
  12. package/dist-client/my-work-menus.d.ts +1 -6
  13. package/dist-client/my-work-menus.js +0 -1
  14. package/dist-client/my-work-menus.js.map +1 -1
  15. package/dist-client/pages/activity/activity-list-page.js +1 -0
  16. package/dist-client/pages/activity/activity-list-page.js.map +1 -1
  17. package/dist-client/pages/activity-approval/activity-approval-page.d.ts +2 -52
  18. package/dist-client/pages/activity-approval/activity-approval-page.js +9 -298
  19. package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
  20. package/dist-client/pages/activity-catalog/activity-detail-page.js +9 -2
  21. package/dist-client/pages/activity-catalog/activity-detail-page.js.map +1 -1
  22. package/dist-client/pages/activity-instance/activity-instance-start-page.js +3 -0
  23. package/dist-client/pages/activity-instance/activity-instance-start-page.js.map +1 -1
  24. package/dist-client/pages/activity-instance/activity-instance-view.d.ts +10 -1
  25. package/dist-client/pages/activity-instance/activity-instance-view.js +31 -2
  26. package/dist-client/pages/activity-instance/activity-instance-view.js.map +1 -1
  27. package/dist-client/pages/activity-thread/activity-thread-page.d.ts +6 -2
  28. package/dist-client/pages/activity-thread/activity-thread-page.js +32 -16
  29. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
  30. package/dist-client/pages/activity-thread/activity-thread-view-page.js +3 -2
  31. package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -1
  32. package/dist-client/pages/activity-thread/thread-sections.d.ts +34 -0
  33. package/dist-client/pages/activity-thread/thread-sections.js +36 -0
  34. package/dist-client/pages/activity-thread/thread-sections.js.map +1 -0
  35. package/dist-client/pages/todo/approval-pending-list-page.d.ts +1 -0
  36. package/dist-client/pages/todo/approval-pending-list-page.js +10 -77
  37. package/dist-client/pages/todo/approval-pending-list-page.js.map +1 -1
  38. package/dist-client/pages/todo/draft-list-page.d.ts +20 -0
  39. package/dist-client/pages/todo/draft-list-page.js +103 -5
  40. package/dist-client/pages/todo/draft-list-page.js.map +1 -1
  41. package/dist-client/pages/todo/todo-list-page.d.ts +19 -0
  42. package/dist-client/pages/todo/todo-list-page.js +147 -23
  43. package/dist-client/pages/todo/todo-list-page.js.map +1 -1
  44. package/dist-client/pages/todo/work-box.d.ts +36 -0
  45. package/dist-client/pages/todo/work-box.js +44 -0
  46. package/dist-client/pages/todo/work-box.js.map +1 -0
  47. package/dist-client/pages/work-door/work-doors-page.d.ts +1 -15
  48. package/dist-client/pages/work-door/work-doors-page.js +18 -43
  49. package/dist-client/pages/work-door/work-doors-page.js.map +1 -1
  50. package/dist-client/route.d.ts +1 -1
  51. package/dist-client/route.js +0 -3
  52. package/dist-client/route.js.map +1 -1
  53. package/dist-client/tsconfig.tsbuildinfo +1 -1
  54. package/dist-client/types/activity.d.ts +2 -0
  55. package/dist-client/types/activity.js.map +1 -1
  56. package/dist-server/controllers/activity-approval/create-approval.js +2 -1
  57. package/dist-server/controllers/activity-approval/create-approval.js.map +1 -1
  58. package/dist-server/controllers/activity-approval/resolve-judgeable-seats.js +2 -1
  59. package/dist-server/controllers/activity-approval/resolve-judgeable-seats.js.map +1 -1
  60. package/dist-server/service/activity-summary/index.d.ts +1 -1
  61. package/dist-server/service/activity-summary/open-work.d.ts +0 -1
  62. package/dist-server/service/activity-summary/open-work.js +3 -15
  63. package/dist-server/service/activity-summary/open-work.js.map +1 -1
  64. package/dist-server/service/activity-thread/activity-thread-query.d.ts +3 -0
  65. package/dist-server/service/activity-thread/activity-thread-query.js +24 -5
  66. package/dist-server/service/activity-thread/activity-thread-query.js.map +1 -1
  67. package/dist-server/service/activity-thread/index.d.ts +1 -1
  68. package/dist-server/service/activity-thread/my-open-threads.d.ts +23 -4
  69. package/dist-server/service/activity-thread/my-open-threads.js +38 -7
  70. package/dist-server/service/activity-thread/my-open-threads.js.map +1 -1
  71. package/dist-server/service/index.d.ts +3 -3
  72. package/dist-server/service/work-door/approval-line-standing.d.ts +14 -0
  73. package/dist-server/service/work-door/approval-line-standing.js +23 -5
  74. package/dist-server/service/work-door/approval-line-standing.js.map +1 -1
  75. package/dist-server/tsconfig.tsbuildinfo +1 -1
  76. package/package.json +3 -3
  77. package/tests/open-doors.test.ts +3 -2
  78. package/things-factory.config.js +0 -1
  79. package/translations/en.json +10 -2
  80. package/translations/es.json +10 -2
  81. package/translations/ja.json +10 -2
  82. package/translations/ko.json +10 -2
  83. package/translations/ms.json +10 -2
  84. package/translations/zh.json +10 -2
@@ -0,0 +1,98 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import { css, html, LitElement } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import { i18next } from '@operato/i18n';
5
+ /**
6
+ * The groups of a work box, drawn the one way all three boxes draw them (pages/todo/work-box.ts).
7
+ *
8
+ * It sits above the list, outside the grid's headroom. In the headroom it would fold away with the
9
+ * filters, and with it the only way to the other groups. Filters may fold - unfolding gives the
10
+ * whole list back - but this must not.
11
+ *
12
+ * Choosing fires `select` with the group's key; the page changes its address.
13
+ */
14
+ let WorkBoxGroups = class WorkBoxGroups extends LitElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.groups = [];
18
+ this.selected = '';
19
+ }
20
+ static { this.styles = css `
21
+ :host {
22
+ flex: none;
23
+ display: flex;
24
+ gap: var(--spacing-large);
25
+ padding: 0 var(--spacing-medium);
26
+ border-bottom: 1px solid var(--ui-line, #d5dce0);
27
+ }
28
+
29
+ button {
30
+ border: none;
31
+ background: none;
32
+ padding: var(--spacing-medium) 2px calc(var(--spacing-medium) - 2px);
33
+ border-bottom: 2px solid transparent;
34
+ font: inherit;
35
+ font-size: 14px;
36
+ color: var(--ui-muted, #57676f);
37
+ cursor: pointer;
38
+ }
39
+
40
+ button:hover:not([data-selected]) {
41
+ color: var(--ui-ink, #17272f);
42
+ }
43
+
44
+ /*
45
+ * ── 색은 밑줄이 말하고, 글자는 읽히는 색으로 ──────────────────────────────
46
+ * 고른 탭의 글자를 --ui-accent 로 두었는데, 그 토큰이 브랜드 초록(#0e8a56)이 되면서 14px
47
+ * 글자로는 안 읽히게 됐다.
48
+ *
49
+ * [확인함] 초록 #0e8a56 · 배경 rgb(240 242 244) → 대비 3.91. 본문 글자 기준 4.5 미달이다.
50
+ * 흰 바탕 기준으로는 4.39 인데, **이 앱 배경은 흰색이 아니라** 더 나쁘다.
51
+ *
52
+ * --ui-ink 15.1 고른 탭 글자
53
+ * --ui-muted 5.52 안 고른 탭 글자
54
+ * --ui-accent 3.91 밑줄 — UI 요소는 3.0 기준이라 통과한다
55
+ *
56
+ * 밑줄은 선택을 가장 강하게 표시하는 자리다. 브랜드색이 거기 남으면 잃는 것이 없다.
57
+ */
58
+ button[data-selected] {
59
+ font-weight: 600;
60
+ color: var(--ui-ink, #17272f);
61
+ border-bottom-color: var(--ui-accent, #262e38);
62
+ }
63
+
64
+ .n {
65
+ margin-left: 4px;
66
+ color: var(--ui-faint, #8a959c);
67
+ }
68
+
69
+ button[data-selected] .n {
70
+ color: inherit;
71
+ }
72
+ `; }
73
+ render() {
74
+ return this.groups.map(({ key, label, hint, count }) => html `
75
+ <button
76
+ ?data-selected=${this.selected === key}
77
+ title=${i18next.t(hint)}
78
+ @click=${() => this.dispatchEvent(new CustomEvent('select', { detail: key }))}
79
+ >
80
+ ${i18next.t(label)}
81
+ ${count !== undefined ? html `<span class="n">${count.toLocaleString(i18next.language || undefined)}</span>` : ''}
82
+ </button>
83
+ `);
84
+ }
85
+ };
86
+ __decorate([
87
+ property({ type: Array }),
88
+ __metadata("design:type", Array)
89
+ ], WorkBoxGroups.prototype, "groups", void 0);
90
+ __decorate([
91
+ property({ type: String }),
92
+ __metadata("design:type", Object)
93
+ ], WorkBoxGroups.prototype, "selected", void 0);
94
+ WorkBoxGroups = __decorate([
95
+ customElement('work-box-groups')
96
+ ], WorkBoxGroups);
97
+ export { WorkBoxGroups };
98
+ //# sourceMappingURL=work-box-groups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"work-box-groups.js","sourceRoot":"","sources":["../../client/components/work-box-groups.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AAYvC;;;;;;;;GAQG;AAEI,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,UAAU;IAAtC;;QAuDsB,WAAM,GAAsB,EAAE,CAAA;QAC7B,aAAQ,GAAG,EAAE,CAAA;IAgB3C,CAAC;aAvEQ,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDlB,AApDY,CAoDZ;IAKD,MAAM;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CACpB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,IAAI,CAAA;;2BAEhB,IAAI,CAAC,QAAQ,KAAK,GAAG;kBAC9B,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;mBACd,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;;YAE3E,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YAChB,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA,mBAAmB,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;;OAEnH,CACF,CAAA;IACH,CAAC;;AAhB0B;IAA1B,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;;6CAA+B;AAC7B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;+CAAc;AAxD9B,aAAa;IADzB,aAAa,CAAC,iBAAiB,CAAC;GACpB,aAAa,CAwEzB","sourcesContent":["import { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\nimport { i18next } from '@operato/i18n'\n\nexport type WorkBoxGroupTab = {\n key: string\n /** Translation key of the tab's name. */\n label: string\n /** Translation key of what the group is, shown on hover. */\n hint: string\n /** Undefined draws no number - a count that could not be read is not zero. */\n count?: number\n}\n\n/**\n * The groups of a work box, drawn the one way all three boxes draw them (pages/todo/work-box.ts).\n *\n * It sits above the list, outside the grid's headroom. In the headroom it would fold away with the\n * filters, and with it the only way to the other groups. Filters may fold - unfolding gives the\n * whole list back - but this must not.\n *\n * Choosing fires `select` with the group's key; the page changes its address.\n */\n@customElement('work-box-groups')\nexport class WorkBoxGroups extends LitElement {\n static styles = css`\n :host {\n flex: none;\n display: flex;\n gap: var(--spacing-large);\n padding: 0 var(--spacing-medium);\n border-bottom: 1px solid var(--ui-line, #d5dce0);\n }\n\n button {\n border: none;\n background: none;\n padding: var(--spacing-medium) 2px calc(var(--spacing-medium) - 2px);\n border-bottom: 2px solid transparent;\n font: inherit;\n font-size: 14px;\n color: var(--ui-muted, #57676f);\n cursor: pointer;\n }\n\n button:hover:not([data-selected]) {\n color: var(--ui-ink, #17272f);\n }\n\n /*\n * ── 색은 밑줄이 말하고, 글자는 읽히는 색으로 ──────────────────────────────\n * 고른 탭의 글자를 --ui-accent 로 두었는데, 그 토큰이 브랜드 초록(#0e8a56)이 되면서 14px\n * 글자로는 안 읽히게 됐다.\n *\n * [확인함] 초록 #0e8a56 · 배경 rgb(240 242 244) → 대비 3.91. 본문 글자 기준 4.5 미달이다.\n * 흰 바탕 기준으로는 4.39 인데, **이 앱 배경은 흰색이 아니라** 더 나쁘다.\n *\n * --ui-ink 15.1 고른 탭 글자\n * --ui-muted 5.52 안 고른 탭 글자\n * --ui-accent 3.91 밑줄 — UI 요소는 3.0 기준이라 통과한다\n *\n * 밑줄은 선택을 가장 강하게 표시하는 자리다. 브랜드색이 거기 남으면 잃는 것이 없다.\n */\n button[data-selected] {\n font-weight: 600;\n color: var(--ui-ink, #17272f);\n border-bottom-color: var(--ui-accent, #262e38);\n }\n\n .n {\n margin-left: 4px;\n color: var(--ui-faint, #8a959c);\n }\n\n button[data-selected] .n {\n color: inherit;\n }\n `\n\n @property({ type: Array }) groups: WorkBoxGroupTab[] = []\n @property({ type: String }) selected = ''\n\n render() {\n return this.groups.map(\n ({ key, label, hint, count }) => html`\n <button\n ?data-selected=${this.selected === key}\n title=${i18next.t(hint)}\n @click=${() => this.dispatchEvent(new CustomEvent('select', { detail: key }))}\n >\n ${i18next.t(label)}\n ${count !== undefined ? html`<span class=\"n\">${count.toLocaleString(i18next.language || undefined)}</span>` : ''}\n </button>\n `\n )\n }\n}\n"]}
@@ -7,7 +7,7 @@
7
7
  * entries it shows, in its own order, and keeps its own menu shape:
8
8
  *
9
9
  * ```ts
10
- * const MY_WORK: MyWorkMenuName[] = ['todo', 'approval-pending', 'draft', 'done']
10
+ * const MY_WORK: MyWorkMenuName[] = ['todo', 'approval-pending', 'draft']
11
11
  * MY_WORK.map(name => MY_WORK_MENUS[name]).map(({ path, icon, label, badge }) => ({ path, icon, name: i18next.t(label), … }))
12
12
  * ```
13
13
  *
@@ -50,11 +50,6 @@ export declare const MY_WORK_MENUS: {
50
50
  readonly label: "title.draft list";
51
51
  readonly badge: "numberOfDrafts";
52
52
  };
53
- readonly done: {
54
- readonly path: "done-list";
55
- readonly icon: "task_alt";
56
- readonly label: "title.done list";
57
- };
58
53
  readonly 'approval-done': {
59
54
  readonly path: "approval-done-list";
60
55
  readonly icon: "history";
@@ -9,7 +9,6 @@ export const MY_WORK_MENUS = {
9
9
  badge: 'numberOfApprovalPendings'
10
10
  },
11
11
  draft: { path: 'draft-list', icon: 'drive_file_rename_outline', label: 'title.draft list', badge: 'numberOfDrafts' },
12
- done: { path: 'done-list', icon: 'task_alt', label: 'title.done list' },
13
12
  'approval-done': { path: 'approval-done-list', icon: 'history', label: 'title.approval done list' },
14
13
  'my-work-calendar': { path: 'done-list-calendar', icon: 'calendar_month', label: 'title.my work calendar' },
15
14
  pickable: { path: 'pickable-list', icon: 'shop', label: 'title.activity shopping', badge: 'numberOfPicks' },
@@ -1 +1 @@
1
- {"version":3,"file":"my-work-menus.js","sourceRoot":"","sources":["../client/my-work-menus.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,2EAA2E;IAC3E,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC/F,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;IACnG,kBAAkB,EAAE;QAClB,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,6BAA6B;QACpC,KAAK,EAAE,0BAA0B;KAClC;IACD,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACpH,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,iBAAiB,EAAE;IACvE,eAAe,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACnG,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE;IAC3G,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,eAAe,EAAE;IAC3G,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,6BAA6B,EAAE;IAC9F,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,8BAA8B,EAAE;IACxG,mBAAmB,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,8BAA8B,EAAE;IACtH,kBAAkB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,wBAAwB,EAAE;IACpG,YAAY,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAC1C,CAAA","sourcesContent":["/**\n * The menu entries for worklist's own screens — **which address, which icon, which label, which count.**\n *\n * Every product puts \"my work\" in its menu, and each used to write these rows itself: the same path,\n * icon, label key and badge name, copied and drifting (one app had a different to-do icon, one had its\n * own English labels). The screens are worklist's, so the facts about them are too. A product picks the\n * entries it shows, in its own order, and keeps its own menu shape:\n *\n * ```ts\n * const MY_WORK: MyWorkMenuName[] = ['todo', 'approval-pending', 'draft', 'done']\n * MY_WORK.map(name => MY_WORK_MENUS[name]).map(({ path, icon, label, badge }) => ({ path, icon, name: i18next.t(label), … }))\n * ```\n *\n * `label` is a translation key that worklist carries in every language. `badge` is a name for\n * `generateActivitySummary`; how a product draws the count stays with the product.\n */\nexport interface MyWorkMenu {\n /** Address of the worklist screen. */\n path: string\n /** Material Symbols name. */\n icon: string\n /** Translation key in worklist's translations. */\n label: string\n /** `generateActivitySummary` name, for entries that count something. */\n badge?: 'numberOfToDos' | 'numberOfApprovalPendings' | 'numberOfDrafts' | 'numberOfPicks' | 'numberOfMyWork'\n}\n\nexport const MY_WORK_MENUS = {\n /** The group row: everything that has come to me. Opens the to-do list. */\n 'my-work': { path: 'todo-list', icon: 'inbox', label: 'menu.my-work', badge: 'numberOfMyWork' },\n todo: { path: 'todo-list', icon: 'things_to_do', label: 'title.todo list', badge: 'numberOfToDos' },\n 'approval-pending': {\n path: 'approval-pending-list',\n icon: 'approval',\n label: 'title.approval pending list',\n badge: 'numberOfApprovalPendings'\n },\n draft: { path: 'draft-list', icon: 'drive_file_rename_outline', label: 'title.draft list', badge: 'numberOfDrafts' },\n done: { path: 'done-list', icon: 'task_alt', label: 'title.done list' },\n 'approval-done': { path: 'approval-done-list', icon: 'history', label: 'title.approval done list' },\n 'my-work-calendar': { path: 'done-list-calendar', icon: 'calendar_month', label: 'title.my work calendar' },\n pickable: { path: 'pickable-list', icon: 'shop', label: 'title.activity shopping', badge: 'numberOfPicks' },\n starter: { path: 'starter-list', icon: 'rocket_launch', label: 'title.activity starter list' },\n reporter: { path: 'reporter-list', icon: 'content_paste_search', label: 'title.activity reporter list' },\n 'activity-instance': { path: 'activity-instance-list', icon: 'list_alt_check', label: 'title.activity instance list' },\n 'activity-catalog': { path: 'activity-catalog', icon: 'menu_book', label: 'title.activity catalog' },\n 'work-doors': { path: 'work-doors-page', icon: 'how_to_reg', label: 'menu.work-doors' }\n} as const satisfies Record<string, MyWorkMenu>\n\nexport type MyWorkMenuName = keyof typeof MY_WORK_MENUS\n"]}
1
+ {"version":3,"file":"my-work-menus.js","sourceRoot":"","sources":["../client/my-work-menus.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,2EAA2E;IAC3E,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE;IAC/F,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,eAAe,EAAE;IACnG,kBAAkB,EAAE;QAClB,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,UAAU;QAChB,KAAK,EAAE,6BAA6B;QACpC,KAAK,EAAE,0BAA0B;KAClC;IACD,KAAK,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE;IACpH,eAAe,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,0BAA0B,EAAE;IACnG,kBAAkB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,wBAAwB,EAAE;IAC3G,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,eAAe,EAAE;IAC3G,OAAO,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,6BAA6B,EAAE;IAC9F,QAAQ,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,8BAA8B,EAAE;IACxG,mBAAmB,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,8BAA8B,EAAE;IACtH,kBAAkB,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,wBAAwB,EAAE;IACpG,YAAY,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE;CAC1C,CAAA","sourcesContent":["/**\n * The menu entries for worklist's own screens — **which address, which icon, which label, which count.**\n *\n * Every product puts \"my work\" in its menu, and each used to write these rows itself: the same path,\n * icon, label key and badge name, copied and drifting (one app had a different to-do icon, one had its\n * own English labels). The screens are worklist's, so the facts about them are too. A product picks the\n * entries it shows, in its own order, and keeps its own menu shape:\n *\n * ```ts\n * const MY_WORK: MyWorkMenuName[] = ['todo', 'approval-pending', 'draft']\n * MY_WORK.map(name => MY_WORK_MENUS[name]).map(({ path, icon, label, badge }) => ({ path, icon, name: i18next.t(label), … }))\n * ```\n *\n * `label` is a translation key that worklist carries in every language. `badge` is a name for\n * `generateActivitySummary`; how a product draws the count stays with the product.\n */\nexport interface MyWorkMenu {\n /** Address of the worklist screen. */\n path: string\n /** Material Symbols name. */\n icon: string\n /** Translation key in worklist's translations. */\n label: string\n /** `generateActivitySummary` name, for entries that count something. */\n badge?: 'numberOfToDos' | 'numberOfApprovalPendings' | 'numberOfDrafts' | 'numberOfPicks' | 'numberOfMyWork'\n}\n\nexport const MY_WORK_MENUS = {\n /** The group row: everything that has come to me. Opens the to-do list. */\n 'my-work': { path: 'todo-list', icon: 'inbox', label: 'menu.my-work', badge: 'numberOfMyWork' },\n todo: { path: 'todo-list', icon: 'things_to_do', label: 'title.todo list', badge: 'numberOfToDos' },\n 'approval-pending': {\n path: 'approval-pending-list',\n icon: 'approval',\n label: 'title.approval pending list',\n badge: 'numberOfApprovalPendings'\n },\n draft: { path: 'draft-list', icon: 'drive_file_rename_outline', label: 'title.draft list', badge: 'numberOfDrafts' },\n 'approval-done': { path: 'approval-done-list', icon: 'history', label: 'title.approval done list' },\n 'my-work-calendar': { path: 'done-list-calendar', icon: 'calendar_month', label: 'title.my work calendar' },\n pickable: { path: 'pickable-list', icon: 'shop', label: 'title.activity shopping', badge: 'numberOfPicks' },\n starter: { path: 'starter-list', icon: 'rocket_launch', label: 'title.activity starter list' },\n reporter: { path: 'reporter-list', icon: 'content_paste_search', label: 'title.activity reporter list' },\n 'activity-instance': { path: 'activity-instance-list', icon: 'list_alt_check', label: 'title.activity instance list' },\n 'activity-catalog': { path: 'activity-catalog', icon: 'menu_book', label: 'title.activity catalog' },\n 'work-doors': { path: 'work-doors-page', icon: 'how_to_reg', label: 'menu.work-doors' }\n} as const satisfies Record<string, MyWorkMenu>\n\nexport type MyWorkMenuName = keyof typeof MY_WORK_MENUS\n"]}
@@ -439,6 +439,7 @@ let ActivityListPage = class ActivityListPage extends localize(i18next)(PageView
439
439
  approvalLine { type
440
440
  value
441
441
  participation
442
+ notifyAfter
442
443
  approver { id
443
444
  name
444
445
  description
@@ -1 +1 @@
1
- {"version":3,"file":"activity-list-page.js","sourceRoot":"","sources":["../../../client/pages/activity/activity-list-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-grist'\nimport './activity-model-item-list.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { DataGrist, FetchOption, getEditor, getRenderer } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { ranMutation } from '../../components/say-outcome.js'\nimport { notify, openPopup } from '@operato/layout'\nimport { PageView } from '@operato/shell'\nimport { CommonButtonStyles, CommonHeaderStyles, ScrollbarStyles, WorkSurfacePageStyles } from '@operato/styles'\nimport { adjustFilters, isMobileDevice } from '@operato/utils'\n\nimport { ActivityStartingTypes, ActivityTypes, ActivityUITypes } from '../../types/types.js'\n\nimport { priorityCell } from '../../activity-cells.js'\n\nexport const ActivityStatus = [\n { display: '', value: '' },\n { display: i18next.t('label.activity-state-draft'), value: 'draft' },\n { display: i18next.t('label.activity-state-released'), value: 'released' },\n { display: i18next.t('label.activity-state-deprecated'), value: 'deprecated' }\n]\n\n@customElement('activity-list-page')\nexport class ActivityListPage extends localize(i18next)(PageView) { static styles = [\n /* The work surface frame for a list screen (ADR-0060 decision 8). */\n WorkSurfacePageStyles,\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host {\n --grid-record-emphasized-background-color: #8b0000;\n --grid-record-emphasized-color: #ff6b6b;\n }\n\n .header { grid-template-areas: 'filters actions';\n }\n `\n ]\n\n @property({ type: Object }) gristConfig?: any\n @property({ type: String }) mode: 'CARD' | 'GRID' = isMobileDevice() ? 'CARD' : 'GRID'\n\n @query('ox-grist') grist!: DataGrist\n\n @state() filters: string[] = ['released']\n\n get context() { return { title: i18next.t('title.activity list'),\n search: { handler: (search: string) => { this.grist.searchText = search\n },\n value: this.grist?.searchText || ''\n },\n filter: { handler: () => { this.grist.toggleHeadroom()\n }\n },\n help: 'worklist/activity',\n actions: [\n { title: i18next.t('button.save'),\n action: this.updateActivity.bind(this),\n ...CommonButtonStyles.save\n }\n ]\n }\n }\n\n render() { const mode = this.mode\n\n return html`\n <ox-grist class=\"page-fill\" .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>\n <div slot=\"headroom\" class=\"header\">\n <div class=\"filters\">\n <ox-input-select-buttons\n .value=${this.filters}\n .options=${[\n { display: i18next.t('label.filter-draft'),\n value: 'draft'\n },\n { display: i18next.t('label.filter-released'),\n value: 'released'\n },\n { display: i18next.t('label.filter-deprecated'),\n value: 'deprecated'\n }\n ]}\n @change=${(e: CustomEvent) => { this.filters = (e.currentTarget as any)?.value\n this.grist.fetch()\n }}\n ></ox-input-select-buttons>\n </div>\n\n </div>\n </ox-grist>\n `\n }\n\n async pageInitialized(lifecycle) { this.gristConfig = { list: { thumbnail: 'thumbnail',\n fields: ['name', 'description'],\n details: ['updatedAt']\n },\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n { type: 'gutter',\n gutterName: 'button',\n icon: record => (!record ? 'calendar_add_on' : !record.id || !record.scheduleId ? '' : 'event_available'),\n title: i18next.t('button.schedule-task'),\n handlers: { click: (columns, data, column, record, rowIndex) => { if (!record || !record.id || (!record.scheduleId && !record.schedule)) { return\n }\n if (record.scheduleId) { this.stopActivitySchedule(record)\n } else { this.startActivitySchedule(record)\n }\n }\n }\n },\n { type: 'gutter',\n gutterName: 'button',\n icon: record => (!record ? 'reorder' : record.id ? 'reorder' : ''),\n iconOnly: false,\n title: record => (!record ? i18next.t('button.detail') : record.id ? i18next.t('button.detail') : ''),\n width: 72,\n handlers: { click: (columns, data, column, record, rowIndex) => { if (!record.id) return\n const popup = openPopup(\n html` <activity-model-item-list .activity=${record}></activity-model-item-list> `,\n { backdrop: true,\n help: 'worklist/activity/activity-model-item-list',\n size: 'large',\n title: i18next.t('title.activity model item list')\n }\n )\n popup.onclosed = () => { this.grist?.fetch()\n }\n }\n }\n },\n { type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: { editable: true\n },\n filter: 'search',\n sortable: true,\n width: 175\n },\n { type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: { editable: true\n },\n filter: 'search',\n width: 225\n },\n { type: 'approval-line',\n name: 'approvalLine',\n header: i18next.t('field.approval-line'),\n record: { editable: true,\n align: 'center'\n },\n width: 60\n },\n { type: 'select',\n name: 'state',\n header: i18next.t('field.status'),\n record: { editable: true,\n options: ActivityStatus\n },\n filter: true,\n width: 75\n },\n { type: 'select',\n name: 'activityType',\n label: true,\n header: i18next.t('field.activity-type'),\n record: { editable: true,\n options: ActivityTypes\n },\n sortable: true,\n width: 75\n },\n { type: 'select',\n name: 'startingType',\n label: true,\n header: i18next.t('field.starting-type'),\n record: { editable: true,\n options: ActivityStartingTypes\n },\n sortable: true,\n width: 75\n },\n { type: 'select',\n name: 'multiple',\n header: i18next.t('field.multiple'),\n record: { editable: true,\n options: [\n { display: '', value: '' },\n { display: 'Single', value: 'single' },\n { display: 'Parallel', value: 'parallel' },\n { display: 'Sequential', value: 'sequential' }\n ]\n },\n width: 90\n },\n { type: 'activity-search-keys',\n name: 'searchKeys',\n label: true,\n header: i18next.t('field.search-keys'),\n record: { editable: true\n },\n width: 60\n },\n { type: 'number',\n name: 'priority',\n header: i18next.t('field.priority'),\n record: {\n editable: false,\n align: 'center',\n renderer: priorityCell()\n },\n width: 75\n },\n { type: 'crontab',\n name: 'schedule',\n label: true,\n header: i18next.t('field.schedule'),\n record: { editable: true,\n options: { objectified: true\n }\n },\n width: 80\n },\n { type: 'timezone',\n name: 'timezone',\n header: i18next.t('field.timezone'),\n record: { editable: true\n },\n width: 120\n },\n { type: 'image',\n name: 'thumbnail',\n header: i18next.t('field.thumbnail'),\n record: { editable: true },\n width: 120\n },\n { type: 'resource-object',\n name: 'issuerRole',\n header: i18next.t('field.issuer-role'),\n record: { editable: true,\n options: { title: i18next.t('title.lookup role'),\n queryName: 'roles'\n }\n },\n filter: 'search',\n width: 85\n },\n { type: 'resource-object',\n name: 'assigneeRole',\n header: i18next.t('field.assignee-role'),\n record: { editable: true,\n options: { title: i18next.t('title.lookup role'),\n queryName: 'roles'\n }\n },\n filter: 'search',\n width: 85\n },\n { type: 'resource-object',\n name: 'supervisoryRole',\n header: i18next.t('field.supervisory-role'),\n record: { editable: true,\n options: { title: i18next.t('title.lookup role'),\n queryName: 'roles'\n }\n },\n filter: 'search',\n width: 85\n },\n { type: 'assignees',\n name: 'assignees',\n header: i18next.t('field.assignees'),\n record: { editable: true\n },\n width: 80\n },\n { type: 'select',\n name: 'uiType',\n label: true,\n header: i18next.t('field.ui-type'),\n record: { editable: true,\n options: ActivityUITypes\n },\n width: 80\n },\n { type: 'string',\n name: 'uiSource',\n header: i18next.t('field.ui-source'),\n record: { editable: true,\n editor: function (value, column, record, rowIndex, field) { var type = record.uiType !== 'board' ? 'script' : 'board'\n return getEditor(type)(value, column, record, rowIndex, field)\n },\n renderer: function (value, column, record, rowIndex, field) { var type = record.uiType !== 'board' ? 'script' : 'board'\n return getRenderer(type)(value, column, record, rowIndex, field)\n }\n },\n width: 140\n },\n { type: 'select',\n name: 'viewType',\n label: true,\n header: i18next.t('field.view-type'),\n record: { editable: true,\n options: ActivityUITypes\n },\n width: 80\n },\n { type: 'string',\n name: 'viewSource',\n header: i18next.t('field.view-source'),\n record: { editable: true,\n editor: function (value, column, record, rowIndex, field) { var type = record.viewType !== 'board' ? 'script' : 'board'\n return getEditor(type)(value, column, record, rowIndex, field)\n },\n renderer: function (value, column, record, rowIndex, field) { var type = record.viewType !== 'board' ? 'script' : 'board'\n return getRenderer(type)(value, column, record, rowIndex, field)\n }\n },\n width: 140\n },\n { type: 'select',\n name: 'reportType',\n label: true,\n header: i18next.t('field.report-type'),\n record: { editable: true,\n options: ActivityUITypes\n },\n width: 80\n },\n { type: 'string',\n name: 'reportSource',\n header: i18next.t('field.report-source'),\n record: { editable: true,\n editor: function (value, column, record, rowIndex, field) { var type = record.reportType !== 'board' ? 'script' : 'board'\n return getEditor(type)(value, column, record, rowIndex, field)\n },\n renderer: function (value, column, record, rowIndex, field) { var type = record.reportType !== 'board' ? 'script' : 'board'\n return getRenderer(type)(value, column, record, rowIndex, field)\n }\n },\n width: 140\n },\n { type: 'duration',\n name: 'standardTime',\n header: i18next.t('field.standard-time'),\n record: { editable: true\n },\n sortable: true,\n width: 105\n },\n { type: 'resource-object',\n name: 'updater',\n header: i18next.t('field.updater'),\n record: { editable: false\n },\n sortable: true,\n width: 85\n },\n { type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n record: { editable: false\n },\n sortable: true,\n width: 180\n }\n ],\n rows: { selectable: { multiple: true\n },\n handlers: { click: 'select-row-toggle'\n }\n },\n sorters: [\n { name: 'name'\n }\n ]\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) { const status = ['draft', 'released', 'deprecated'].filter(state => this.filters?.includes(state))\n\n if (status.length > 0) { filters = adjustFilters(filters, [{ name: 'state', operator: 'in', value: status }])\n }\n\n const response = await client.query({ query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) { responses: activities(filters: $filters, pagination: $pagination, sortings: $sortings) { items { id\n name\n description\n activityType\n searchKeys { name\n description\n inputKey\n tKey\n }\n state\n model { name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n }\n thumbnail\n priority\n issuerRole { id\n name\n }\n assigneeRole { id\n name\n }\n supervisoryRole { id\n name\n }\n assignees { type\n value\n assignee { id\n name\n description\n controlNo\n }\n }\n approvalLine { type\n value\n participation\n approver { id\n name\n description\n controlNo\n }\n }\n uiType\n uiSource\n viewType\n viewSource\n reportType\n reportSource\n startingType\n multiple\n schedule\n timezone\n scheduleId\n standardTime\n updater { id\n name\n }\n updatedAt\n }\n total\n }\n }\n `,\n variables: { filters,\n pagination: { page, limit },\n sortings\n }\n })\n\n return { total: response.data.responses.total || 0,\n records: response.data.responses.items || []\n }\n }\n\n async updateActivity() { let patches = this.grist?.dirtyRecords\n if (patches && patches.length) { patches = patches.map(patch => { let patchField: any = patch.id ? { id: patch.id } : {}\n const dirtyFields = patch.__dirtyfields__\n for (let key in dirtyFields) { patchField[key] = dirtyFields[key].after\n }\n patchField.cuFlag = patch.__dirty__\n\n return patchField\n })\n\n const outcome = await ranMutation(() => client.mutate({ mutation: gql`\n mutation ($patches: [ActivityPatch!]!) { updateMultipleActivity(patches: $patches) { name\n }\n }\n `,\n variables: { patches\n },\n context: { hasUpload: true\n }\n }))\n\n if (outcome.ok) { this.grist?.fetch()\n }\n }\n }\n\n async startActivitySchedule(record) {\n /*\n * This read response.data.startActivitySchedule.scheduleId straight off the answer. A refused\n * mutation resolves with null data under errorPolicy: 'all', so the failure did not go quiet —\n * it threw a TypeError on the null, and the message below never ran either way.\n *\n * Its sibling stopActivitySchedule already reported both outcomes; this one did not.\n */\n const outcome = await ranMutation(() => client.mutate({\n mutation: gql`\n mutation ($activityId: String!) {\n startActivitySchedule(activityId: $activityId) {\n scheduleId\n }\n }\n `,\n variables: {\n activityId: record.id\n }\n }))\n\n if (!outcome.ok) {\n this.grist.fetch()\n return\n }\n\n record.scheduleId = outcome.data.startActivitySchedule?.scheduleId\n\n notify({ level: 'info',\n message: `success to start activity schedule : ${record.name}`\n })\n\n this.grist.fetch()\n }\n\n async stopActivitySchedule(record) { var response = await client.mutate({ mutation: gql`\n mutation ($activityId: String!) { stopActivitySchedule(activityId: $activityId) { scheduleId\n }\n }\n `,\n variables: { activityId: record.id\n }\n })\n\n if (!response.errors) { notify({ level: 'info',\n message: `success to stop activity schedule : ${record.name}`\n })\n } else { notify({ level: 'error',\n message: `${response.errors.map(error => error.message).join('\\n')}`\n })\n }\n\n this.grist.fetch()\n }\n}\n"]}
1
+ {"version":3,"file":"activity-list-page.js","sourceRoot":"","sources":["../../../client/pages/activity/activity-list-page.ts"],"names":[],"mappings":"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","sourcesContent":["import '@operato/data-grist'\nimport './activity-model-item-list.js'\n\nimport gql from 'graphql-tag'\nimport { css, html } from 'lit'\nimport { customElement, property, query, state } from 'lit/decorators.js'\nimport { DataGrist, FetchOption, getEditor, getRenderer } from '@operato/data-grist'\nimport { client } from '@operato/graphql'\nimport { i18next, localize } from '@operato/i18n'\nimport { ranMutation } from '../../components/say-outcome.js'\nimport { notify, openPopup } from '@operato/layout'\nimport { PageView } from '@operato/shell'\nimport { CommonButtonStyles, CommonHeaderStyles, ScrollbarStyles, WorkSurfacePageStyles } from '@operato/styles'\nimport { adjustFilters, isMobileDevice } from '@operato/utils'\n\nimport { ActivityStartingTypes, ActivityTypes, ActivityUITypes } from '../../types/types.js'\n\nimport { priorityCell } from '../../activity-cells.js'\n\nexport const ActivityStatus = [\n { display: '', value: '' },\n { display: i18next.t('label.activity-state-draft'), value: 'draft' },\n { display: i18next.t('label.activity-state-released'), value: 'released' },\n { display: i18next.t('label.activity-state-deprecated'), value: 'deprecated' }\n]\n\n@customElement('activity-list-page')\nexport class ActivityListPage extends localize(i18next)(PageView) { static styles = [\n /* The work surface frame for a list screen (ADR-0060 decision 8). */\n WorkSurfacePageStyles,\n ScrollbarStyles,\n CommonHeaderStyles,\n css`\n :host {\n --grid-record-emphasized-background-color: #8b0000;\n --grid-record-emphasized-color: #ff6b6b;\n }\n\n .header { grid-template-areas: 'filters actions';\n }\n `\n ]\n\n @property({ type: Object }) gristConfig?: any\n @property({ type: String }) mode: 'CARD' | 'GRID' = isMobileDevice() ? 'CARD' : 'GRID'\n\n @query('ox-grist') grist!: DataGrist\n\n @state() filters: string[] = ['released']\n\n get context() { return { title: i18next.t('title.activity list'),\n search: { handler: (search: string) => { this.grist.searchText = search\n },\n value: this.grist?.searchText || ''\n },\n filter: { handler: () => { this.grist.toggleHeadroom()\n }\n },\n help: 'worklist/activity',\n actions: [\n { title: i18next.t('button.save'),\n action: this.updateActivity.bind(this),\n ...CommonButtonStyles.save\n }\n ]\n }\n }\n\n render() { const mode = this.mode\n\n return html`\n <ox-grist class=\"page-fill\" .mode=${mode} .config=${this.gristConfig} .fetchHandler=${this.fetchHandler.bind(this)}>\n <div slot=\"headroom\" class=\"header\">\n <div class=\"filters\">\n <ox-input-select-buttons\n .value=${this.filters}\n .options=${[\n { display: i18next.t('label.filter-draft'),\n value: 'draft'\n },\n { display: i18next.t('label.filter-released'),\n value: 'released'\n },\n { display: i18next.t('label.filter-deprecated'),\n value: 'deprecated'\n }\n ]}\n @change=${(e: CustomEvent) => { this.filters = (e.currentTarget as any)?.value\n this.grist.fetch()\n }}\n ></ox-input-select-buttons>\n </div>\n\n </div>\n </ox-grist>\n `\n }\n\n async pageInitialized(lifecycle) { this.gristConfig = { list: { thumbnail: 'thumbnail',\n fields: ['name', 'description'],\n details: ['updatedAt']\n },\n columns: [\n { type: 'gutter', gutterName: 'sequence' },\n { type: 'gutter', gutterName: 'row-selector', multiple: true },\n { type: 'gutter',\n gutterName: 'button',\n icon: record => (!record ? 'calendar_add_on' : !record.id || !record.scheduleId ? '' : 'event_available'),\n title: i18next.t('button.schedule-task'),\n handlers: { click: (columns, data, column, record, rowIndex) => { if (!record || !record.id || (!record.scheduleId && !record.schedule)) { return\n }\n if (record.scheduleId) { this.stopActivitySchedule(record)\n } else { this.startActivitySchedule(record)\n }\n }\n }\n },\n { type: 'gutter',\n gutterName: 'button',\n icon: record => (!record ? 'reorder' : record.id ? 'reorder' : ''),\n iconOnly: false,\n title: record => (!record ? i18next.t('button.detail') : record.id ? i18next.t('button.detail') : ''),\n width: 72,\n handlers: { click: (columns, data, column, record, rowIndex) => { if (!record.id) return\n const popup = openPopup(\n html` <activity-model-item-list .activity=${record}></activity-model-item-list> `,\n { backdrop: true,\n help: 'worklist/activity/activity-model-item-list',\n size: 'large',\n title: i18next.t('title.activity model item list')\n }\n )\n popup.onclosed = () => { this.grist?.fetch()\n }\n }\n }\n },\n { type: 'string',\n name: 'name',\n header: i18next.t('field.name'),\n record: { editable: true\n },\n filter: 'search',\n sortable: true,\n width: 175\n },\n { type: 'string',\n name: 'description',\n header: i18next.t('field.description'),\n record: { editable: true\n },\n filter: 'search',\n width: 225\n },\n { type: 'approval-line',\n name: 'approvalLine',\n header: i18next.t('field.approval-line'),\n record: { editable: true,\n align: 'center'\n },\n width: 60\n },\n { type: 'select',\n name: 'state',\n header: i18next.t('field.status'),\n record: { editable: true,\n options: ActivityStatus\n },\n filter: true,\n width: 75\n },\n { type: 'select',\n name: 'activityType',\n label: true,\n header: i18next.t('field.activity-type'),\n record: { editable: true,\n options: ActivityTypes\n },\n sortable: true,\n width: 75\n },\n { type: 'select',\n name: 'startingType',\n label: true,\n header: i18next.t('field.starting-type'),\n record: { editable: true,\n options: ActivityStartingTypes\n },\n sortable: true,\n width: 75\n },\n { type: 'select',\n name: 'multiple',\n header: i18next.t('field.multiple'),\n record: { editable: true,\n options: [\n { display: '', value: '' },\n { display: 'Single', value: 'single' },\n { display: 'Parallel', value: 'parallel' },\n { display: 'Sequential', value: 'sequential' }\n ]\n },\n width: 90\n },\n { type: 'activity-search-keys',\n name: 'searchKeys',\n label: true,\n header: i18next.t('field.search-keys'),\n record: { editable: true\n },\n width: 60\n },\n { type: 'number',\n name: 'priority',\n header: i18next.t('field.priority'),\n record: {\n editable: false,\n align: 'center',\n renderer: priorityCell()\n },\n width: 75\n },\n { type: 'crontab',\n name: 'schedule',\n label: true,\n header: i18next.t('field.schedule'),\n record: { editable: true,\n options: { objectified: true\n }\n },\n width: 80\n },\n { type: 'timezone',\n name: 'timezone',\n header: i18next.t('field.timezone'),\n record: { editable: true\n },\n width: 120\n },\n { type: 'image',\n name: 'thumbnail',\n header: i18next.t('field.thumbnail'),\n record: { editable: true },\n width: 120\n },\n { type: 'resource-object',\n name: 'issuerRole',\n header: i18next.t('field.issuer-role'),\n record: { editable: true,\n options: { title: i18next.t('title.lookup role'),\n queryName: 'roles'\n }\n },\n filter: 'search',\n width: 85\n },\n { type: 'resource-object',\n name: 'assigneeRole',\n header: i18next.t('field.assignee-role'),\n record: { editable: true,\n options: { title: i18next.t('title.lookup role'),\n queryName: 'roles'\n }\n },\n filter: 'search',\n width: 85\n },\n { type: 'resource-object',\n name: 'supervisoryRole',\n header: i18next.t('field.supervisory-role'),\n record: { editable: true,\n options: { title: i18next.t('title.lookup role'),\n queryName: 'roles'\n }\n },\n filter: 'search',\n width: 85\n },\n { type: 'assignees',\n name: 'assignees',\n header: i18next.t('field.assignees'),\n record: { editable: true\n },\n width: 80\n },\n { type: 'select',\n name: 'uiType',\n label: true,\n header: i18next.t('field.ui-type'),\n record: { editable: true,\n options: ActivityUITypes\n },\n width: 80\n },\n { type: 'string',\n name: 'uiSource',\n header: i18next.t('field.ui-source'),\n record: { editable: true,\n editor: function (value, column, record, rowIndex, field) { var type = record.uiType !== 'board' ? 'script' : 'board'\n return getEditor(type)(value, column, record, rowIndex, field)\n },\n renderer: function (value, column, record, rowIndex, field) { var type = record.uiType !== 'board' ? 'script' : 'board'\n return getRenderer(type)(value, column, record, rowIndex, field)\n }\n },\n width: 140\n },\n { type: 'select',\n name: 'viewType',\n label: true,\n header: i18next.t('field.view-type'),\n record: { editable: true,\n options: ActivityUITypes\n },\n width: 80\n },\n { type: 'string',\n name: 'viewSource',\n header: i18next.t('field.view-source'),\n record: { editable: true,\n editor: function (value, column, record, rowIndex, field) { var type = record.viewType !== 'board' ? 'script' : 'board'\n return getEditor(type)(value, column, record, rowIndex, field)\n },\n renderer: function (value, column, record, rowIndex, field) { var type = record.viewType !== 'board' ? 'script' : 'board'\n return getRenderer(type)(value, column, record, rowIndex, field)\n }\n },\n width: 140\n },\n { type: 'select',\n name: 'reportType',\n label: true,\n header: i18next.t('field.report-type'),\n record: { editable: true,\n options: ActivityUITypes\n },\n width: 80\n },\n { type: 'string',\n name: 'reportSource',\n header: i18next.t('field.report-source'),\n record: { editable: true,\n editor: function (value, column, record, rowIndex, field) { var type = record.reportType !== 'board' ? 'script' : 'board'\n return getEditor(type)(value, column, record, rowIndex, field)\n },\n renderer: function (value, column, record, rowIndex, field) { var type = record.reportType !== 'board' ? 'script' : 'board'\n return getRenderer(type)(value, column, record, rowIndex, field)\n }\n },\n width: 140\n },\n { type: 'duration',\n name: 'standardTime',\n header: i18next.t('field.standard-time'),\n record: { editable: true\n },\n sortable: true,\n width: 105\n },\n { type: 'resource-object',\n name: 'updater',\n header: i18next.t('field.updater'),\n record: { editable: false\n },\n sortable: true,\n width: 85\n },\n { type: 'datetime',\n name: 'updatedAt',\n header: i18next.t('field.updated_at'),\n record: { editable: false\n },\n sortable: true,\n width: 180\n }\n ],\n rows: { selectable: { multiple: true\n },\n handlers: { click: 'select-row-toggle'\n }\n },\n sorters: [\n { name: 'name'\n }\n ]\n }\n }\n\n async fetchHandler({ page, limit, sortings = [], filters = [] }: FetchOption) { const status = ['draft', 'released', 'deprecated'].filter(state => this.filters?.includes(state))\n\n if (status.length > 0) { filters = adjustFilters(filters, [{ name: 'state', operator: 'in', value: status }])\n }\n\n const response = await client.query({ query: gql`\n query ($filters: [Filter!], $pagination: Pagination, $sortings: [Sorting!]) { responses: activities(filters: $filters, pagination: $pagination, sortings: $sortings) { items { id\n name\n description\n activityType\n searchKeys { name\n description\n inputKey\n tKey\n }\n state\n model { name\n description\n active\n tag\n inout\n type\n unit\n options\n quantifier\n spec\n }\n thumbnail\n priority\n issuerRole { id\n name\n }\n assigneeRole { id\n name\n }\n supervisoryRole { id\n name\n }\n assignees { type\n value\n assignee { id\n name\n description\n controlNo\n }\n }\n approvalLine { type\n value\n participation\n notifyAfter\n approver { id\n name\n description\n controlNo\n }\n }\n uiType\n uiSource\n viewType\n viewSource\n reportType\n reportSource\n startingType\n multiple\n schedule\n timezone\n scheduleId\n standardTime\n updater { id\n name\n }\n updatedAt\n }\n total\n }\n }\n `,\n variables: { filters,\n pagination: { page, limit },\n sortings\n }\n })\n\n return { total: response.data.responses.total || 0,\n records: response.data.responses.items || []\n }\n }\n\n async updateActivity() { let patches = this.grist?.dirtyRecords\n if (patches && patches.length) { patches = patches.map(patch => { let patchField: any = patch.id ? { id: patch.id } : {}\n const dirtyFields = patch.__dirtyfields__\n for (let key in dirtyFields) { patchField[key] = dirtyFields[key].after\n }\n patchField.cuFlag = patch.__dirty__\n\n return patchField\n })\n\n const outcome = await ranMutation(() => client.mutate({ mutation: gql`\n mutation ($patches: [ActivityPatch!]!) { updateMultipleActivity(patches: $patches) { name\n }\n }\n `,\n variables: { patches\n },\n context: { hasUpload: true\n }\n }))\n\n if (outcome.ok) { this.grist?.fetch()\n }\n }\n }\n\n async startActivitySchedule(record) {\n /*\n * This read response.data.startActivitySchedule.scheduleId straight off the answer. A refused\n * mutation resolves with null data under errorPolicy: 'all', so the failure did not go quiet —\n * it threw a TypeError on the null, and the message below never ran either way.\n *\n * Its sibling stopActivitySchedule already reported both outcomes; this one did not.\n */\n const outcome = await ranMutation(() => client.mutate({\n mutation: gql`\n mutation ($activityId: String!) {\n startActivitySchedule(activityId: $activityId) {\n scheduleId\n }\n }\n `,\n variables: {\n activityId: record.id\n }\n }))\n\n if (!outcome.ok) {\n this.grist.fetch()\n return\n }\n\n record.scheduleId = outcome.data.startActivitySchedule?.scheduleId\n\n notify({ level: 'info',\n message: `success to start activity schedule : ${record.name}`\n })\n\n this.grist.fetch()\n }\n\n async stopActivitySchedule(record) { var response = await client.mutate({ mutation: gql`\n mutation ($activityId: String!) { stopActivitySchedule(activityId: $activityId) { scheduleId\n }\n }\n `,\n variables: { activityId: record.id\n }\n })\n\n if (!response.errors) { notify({ level: 'info',\n message: `success to stop activity schedule : ${record.name}`\n })\n } else { notify({ level: 'error',\n message: `${response.errors.map(error => error.message).join('\\n')}`\n })\n }\n\n this.grist.fetch()\n }\n}\n"]}
@@ -105,60 +105,10 @@ export declare class ActivityApprovalPage extends ActivityApprovalPage_base {
105
105
  * approveActivityApproval / rejectActivityApproval 은 id 와 comment 만 보낸다 — 그 값은 어디에도
106
106
  * 가지 않는다. 결재자가 적을 수 있는 것은 의견 하나이고, 그것은 화면 아래 칸이 받는다.
107
107
  */
108
- /**
109
- * The decision the activity declared, or nothing when it declared none.
110
- *
111
- * Returning nothing is how generatedContent knows to fall back to the model. An activity with no
112
- * decisionKeys draws exactly what it drew before.
113
- *
114
- * A slot whose path led nowhere is skipped rather than drawn empty. Older instances of an activity
115
- * predate a field the declaration names and an empty
116
- * bar on the screen would read as "there is no reason" when the truth is that this record has no
117
- * such value. What cannot be shown is left out; what is shown is only what the payload actually
118
- * carries.
119
- *
120
- * `reason` is the exception. Missing and blank mean the same thing to whoever is reading — nobody
121
- * wrote one — so both draw the grey line rather than disappearing. A reason that silently vanishes
122
- * would let an approver assume it was never asked for.
123
- */
108
+ /** The decision the activity declared, or nothing - drawn by `renderDecision`, the one drawing both screens use. */
124
109
  decisionContent(): DirectiveResult<{
125
- new (_partInfo: import("lit-html/directive.js").PartInfo): import("lit-html/directives/keyed.js").Keyed<TemplateResult<1>>;
110
+ new (_partInfo: import("lit-html/directive.js").PartInfo): import("lit-html/directives/keyed.js").Keyed<TemplateResult>;
126
111
  }>;
127
- /**
128
- * Whether approving can be undone, drawn as the frame around the decision.
129
- *
130
- * Only an explicit true or false draws. Anything else — the path led nowhere, or the value is not
131
- * a boolean — draws nothing, because saying "this can be undone" on a screen that does not know is
132
- * the one mistake this line must never make.
133
- *
134
- * This is not rejectionIsFinal. That one says whether **rejecting** ends the case for good; this
135
- * says whether **approving** can be taken back. The twin actuation carries both, which is exactly
136
- * why they must not share a sentence.
137
- */
138
- private renderReversibility;
139
- /**
140
- * One slot's value as something to read.
141
- *
142
- * A scalar prints with its unit when one was declared. Anything shaped — an object, a list — goes
143
- * through fieldValue, the same laying-out the model sections use, so a payload reads the same way
144
- * wherever it appears and a four-level object does not become one long line.
145
- *
146
- * ── The sentence is built here, not frozen when the request was raised ──
147
- * Eighteen doors write a Korean sentence at issue and the issue snapshots it, so it stands in the
148
- * language of whoever raised it and an approver reading another language never catches up. Where
149
- * a door declares `valueTKey`, the sentence is made at reading time instead, out of the values
150
- * the request did freeze.
151
- *
152
- * **A door that has not moved yet draws exactly what it drew before.** That is what lets plant
153
- * move them one at a time instead of eighteen at once, and it covers a door that moved into a
154
- * locale nobody has written yet: an empty `defaultValue` means a missing key falls through to the
155
- * frozen sentence rather than printing `approval.…` on the card.
156
- */
157
- private slotText;
158
- /** The sentence this slot declares, when it declares one and the locale has it. */
159
- private sentenceOf;
160
- /** Did a person actually write something here. Whitespace is not words. */
161
- private hasWords;
162
112
  generatedContent(): DirectiveResult;
163
113
  boardContent(): DirectiveResult;
164
114
  /**