@things-factory/worklist 10.1.28 → 10.1.31

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 (80) hide show
  1. package/dist-client/pages/activity/activity-page.js +9 -18
  2. package/dist-client/pages/activity/activity-page.js.map +1 -1
  3. package/dist-client/pages/activity-approval/activity-approval-page.d.ts +14 -2
  4. package/dist-client/pages/activity-approval/activity-approval-page.js +120 -45
  5. package/dist-client/pages/activity-approval/activity-approval-page.js.map +1 -1
  6. package/dist-client/pages/activity-catalog/activity-catalog-page.d.ts +1 -0
  7. package/dist-client/pages/activity-catalog/activity-catalog-page.js +5 -0
  8. package/dist-client/pages/activity-catalog/activity-catalog-page.js.map +1 -1
  9. package/dist-client/pages/activity-instance/activity-instance-start-page.js +7 -7
  10. package/dist-client/pages/activity-instance/activity-instance-start-page.js.map +1 -1
  11. package/dist-client/pages/activity-thread/activity-thread-page.d.ts +1 -0
  12. package/dist-client/pages/activity-thread/activity-thread-page.js +5 -0
  13. package/dist-client/pages/activity-thread/activity-thread-page.js.map +1 -1
  14. package/dist-client/pages/activity-thread/activity-thread-view-page.d.ts +1 -0
  15. package/dist-client/pages/activity-thread/activity-thread-view-page.js +5 -0
  16. package/dist-client/pages/activity-thread/activity-thread-view-page.js.map +1 -1
  17. package/dist-client/pages/work-door/door-words.d.ts +41 -0
  18. package/dist-client/pages/work-door/door-words.js +54 -0
  19. package/dist-client/pages/work-door/door-words.js.map +1 -0
  20. package/dist-client/pages/work-door/work-doors-page.d.ts +37 -0
  21. package/dist-client/pages/work-door/work-doors-page.js +369 -0
  22. package/dist-client/pages/work-door/work-doors-page.js.map +1 -0
  23. package/dist-client/route.d.ts +1 -1
  24. package/dist-client/route.js +3 -0
  25. package/dist-client/route.js.map +1 -1
  26. package/dist-client/tsconfig.tsbuildinfo +1 -1
  27. package/dist-server/service/activity/index.d.ts +1 -1
  28. package/dist-server/service/activity-instance/index.d.ts +1 -1
  29. package/dist-server/service/activity-template/index.d.ts +1 -1
  30. package/dist-server/service/activity-thread/index.d.ts +1 -1
  31. package/dist-server/service/index.d.ts +3 -3
  32. package/dist-server/service/index.js +5 -2
  33. package/dist-server/service/index.js.map +1 -1
  34. package/dist-server/service/work-door/activity-lookup.d.ts +70 -0
  35. package/dist-server/service/work-door/activity-lookup.js +110 -0
  36. package/dist-server/service/work-door/activity-lookup.js.map +1 -0
  37. package/dist-server/service/work-door/approval-line-standing.d.ts +92 -0
  38. package/dist-server/service/work-door/approval-line-standing.js +47 -0
  39. package/dist-server/service/work-door/approval-line-standing.js.map +1 -0
  40. package/dist-server/service/work-door/index.d.ts +15 -0
  41. package/dist-server/service/work-door/index.js +20 -0
  42. package/dist-server/service/work-door/index.js.map +1 -0
  43. package/dist-server/service/work-door/pass-work-door.d.ts +74 -0
  44. package/dist-server/service/work-door/pass-work-door.js +45 -0
  45. package/dist-server/service/work-door/pass-work-door.js.map +1 -0
  46. package/dist-server/service/work-door/work-door-declaration.d.ts +114 -0
  47. package/dist-server/service/work-door/work-door-declaration.js +67 -0
  48. package/dist-server/service/work-door/work-door-declaration.js.map +1 -0
  49. package/dist-server/service/work-door/work-door-event.d.ts +20 -0
  50. package/dist-server/service/work-door/work-door-event.js +25 -0
  51. package/dist-server/service/work-door/work-door-event.js.map +1 -0
  52. package/dist-server/service/work-door/work-door-journal-service.d.ts +47 -0
  53. package/dist-server/service/work-door/work-door-journal-service.js +75 -0
  54. package/dist-server/service/work-door/work-door-journal-service.js.map +1 -0
  55. package/dist-server/service/work-door/work-door-journal.d.ts +30 -0
  56. package/dist-server/service/work-door/work-door-journal.js +94 -0
  57. package/dist-server/service/work-door/work-door-journal.js.map +1 -0
  58. package/dist-server/service/work-door/work-door-not-used.d.ts +39 -0
  59. package/dist-server/service/work-door/work-door-not-used.js +86 -0
  60. package/dist-server/service/work-door/work-door-not-used.js.map +1 -0
  61. package/dist-server/service/work-door/work-door-resolver.d.ts +29 -0
  62. package/dist-server/service/work-door/work-door-resolver.js +127 -0
  63. package/dist-server/service/work-door/work-door-resolver.js.map +1 -0
  64. package/dist-server/service/work-door/work-door-service.d.ts +29 -0
  65. package/dist-server/service/work-door/work-door-service.js +126 -0
  66. package/dist-server/service/work-door/work-door-service.js.map +1 -0
  67. package/dist-server/service/work-door/work-door-type.d.ts +49 -0
  68. package/dist-server/service/work-door/work-door-type.js +122 -0
  69. package/dist-server/service/work-door/work-door-type.js.map +1 -0
  70. package/dist-server/service/work-door/work-door.d.ts +138 -0
  71. package/dist-server/service/work-door/work-door.js +156 -0
  72. package/dist-server/service/work-door/work-door.js.map +1 -0
  73. package/dist-server/tsconfig.tsbuildinfo +1 -1
  74. package/package.json +10 -10
  75. package/tests/pass-work-door.test.ts +133 -0
  76. package/translations/en.json +39 -15
  77. package/translations/ja.json +39 -15
  78. package/translations/ko.json +39 -15
  79. package/translations/ms.json +39 -15
  80. package/translations/zh.json +39 -15
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/worklist",
3
- "version": "10.1.28",
3
+ "version": "10.1.31",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "things-factory": true,
@@ -37,14 +37,14 @@
37
37
  "@operato/moment-timezone-es": "^10.0.0",
38
38
  "@operato/p13n": "^10.0.0",
39
39
  "@operato/popup": "^10.15.0",
40
- "@things-factory/attachment-base": "^10.1.28",
41
- "@things-factory/auth-base": "^10.1.28",
42
- "@things-factory/board-service": "^10.1.28",
43
- "@things-factory/context-ui": "^10.1.28",
44
- "@things-factory/organization": "^10.1.28",
45
- "@things-factory/personalization": "^10.1.28",
46
- "@things-factory/scheduler-client": "^10.1.28",
47
- "@things-factory/shell": "^10.1.28"
40
+ "@things-factory/attachment-base": "^10.1.31",
41
+ "@things-factory/auth-base": "^10.1.31",
42
+ "@things-factory/board-service": "^10.1.31",
43
+ "@things-factory/context-ui": "^10.1.31",
44
+ "@things-factory/organization": "^10.1.31",
45
+ "@things-factory/personalization": "^10.1.31",
46
+ "@things-factory/scheduler-client": "^10.1.31",
47
+ "@things-factory/shell": "^10.1.31"
48
48
  },
49
- "gitHead": "3a260a0f79bc6b41a692a103955bfcc541aff60e"
49
+ "gitHead": "5213e6f9913b40ea2618a2111d9884b792dbaa01"
50
50
  }
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Which way a work door goes when its approval line is empty, and what gets written down.
3
+ *
4
+ * ── Why each of these ─────────────────────────────────────────────────────
5
+ * The branch itself was never in one place before: eight doors in operato-plant each read the line
6
+ * and decided, and none of them wrote anything, so a step skipped for want of an approver left no
7
+ * trace at all. Joined here, `run` cannot happen without the line being written - so the test that
8
+ * matters most is that the `run` branch writes exactly one row, with the reason that applies.
9
+ *
10
+ * The transaction check is not ceremony: a plain manager commits the row on its own, and then the
11
+ * log says something happened that the failing work never did.
12
+ */
13
+
14
+ /*
15
+ * The entity is stood in for. Its decorators need `emitDecoratorMetadata`, which babel does not
16
+ * give jest (the repository's jest config says so, and says to test the pure logic on its own). The
17
+ * branch under test never reads the class - it only names the repository to save into.
18
+ */
19
+ jest.mock('../server/service/work-door/work-door-journal.js', () => ({ WorkDoorJournal: class WorkDoorJournal {} }))
20
+
21
+ import { WorkDoorEvent } from '../server/service/work-door/work-door-event.js'
22
+ import { passWorkDoor } from '../server/service/work-door/pass-work-door.js'
23
+
24
+ const domain = { id: 'd1' } as any
25
+
26
+ /** A manager that looks transactional and remembers what was saved. */
27
+ function openTx() {
28
+ const saved: any[] = []
29
+
30
+ return {
31
+ saved,
32
+ queryRunner: { isTransactionActive: true },
33
+ getRepository: () => ({ save: async (row: any) => ((saved.push(row), { ...row, id: 'j1' }) as any) })
34
+ } as any
35
+ }
36
+
37
+ const seatsThatStand = { roleHasMembers: async () => true, personIsHere: async () => true }
38
+
39
+ const approvalDoor = (over: any = {}): any =>
40
+ ({ name: 'lot-hold-release', labelKey: 'activity.lot-hold-release.label', kind: 'approval', whenNoLine: 'run', ...over } as any)
41
+
42
+ const subject = { kind: 'lot', id: 'LOT-1' }
43
+
44
+ describe('passWorkDoor', () => {
45
+ it('refuses to run outside a transaction - the row would commit on its own', async () => {
46
+ const loose = { getRepository: () => ({ save: async (r: any) => r }) } as any
47
+
48
+ await expect(
49
+ passWorkDoor({ door: approvalDoor(), subject }, { tx: loose, domain, seats: seatsThatStand })
50
+ ).rejects.toThrow(/transaction/)
51
+ })
52
+
53
+ it('will not judge an assignment door - it waits for a role, not for a line', async () => {
54
+ const door = { name: 'job-order-dispatch', labelKey: 'k', kind: 'assignment' } as any
55
+
56
+ await expect(passWorkDoor({ door, subject }, { tx: openTx(), domain, seats: seatsThatStand })).rejects.toThrow(
57
+ /assignment door/
58
+ )
59
+ })
60
+
61
+ it('raises when the line stands, and writes nothing - the instance is the record', async () => {
62
+ const tx = openTx()
63
+ const activity = { approvalLine: [{ type: 'Role', value: 'r1' }] }
64
+
65
+ const verdict = await passWorkDoor({ door: approvalDoor(), activity, subject }, { tx, domain, seats: seatsThatStand })
66
+
67
+ expect(verdict.go).toBe('raise')
68
+ expect(tx.saved).toHaveLength(0)
69
+ })
70
+
71
+ it('runs with an empty line, and that is written down once', async () => {
72
+ const tx = openTx()
73
+
74
+ const verdict = await passWorkDoor({ door: approvalDoor(), subject }, { tx, domain, seats: seatsThatStand })
75
+
76
+ expect(verdict).toMatchObject({ go: 'run', because: WorkDoorEvent.RanWithoutLine })
77
+ expect(tx.saved).toHaveLength(1)
78
+ expect(tx.saved[0]).toMatchObject({
79
+ kind: WorkDoorEvent.RanWithoutLine,
80
+ door: 'lot-hold-release',
81
+ subjectKind: 'lot',
82
+ subjectId: 'LOT-1'
83
+ })
84
+ })
85
+
86
+ it('says so differently when the door was declared unused - the administrator has nothing to fix', async () => {
87
+ const tx = openTx()
88
+
89
+ const verdict = await passWorkDoor({ door: approvalDoor(), subject, notUsed: true }, { tx, domain, seats: seatsThatStand })
90
+
91
+ expect(verdict).toMatchObject({ go: 'run', because: WorkDoorEvent.RanNotUsed })
92
+ expect(tx.saved[0].kind).toBe(WorkDoorEvent.RanNotUsed)
93
+ })
94
+
95
+ it('refuses with the line\'s own reason where the door refuses, and writes nothing', async () => {
96
+ const tx = openTx()
97
+ const door = approvalDoor({ whenNoLine: 'refuse', because: 'irreversible' } as any)
98
+
99
+ const verdict: any = await passWorkDoor({ door, subject }, { tx, domain, seats: seatsThatStand })
100
+
101
+ expect(verdict.go).toBe('refuse')
102
+ expect(verdict.refusal.code).toBe('approval-line-missing')
103
+ expect(tx.saved).toHaveLength(0)
104
+ })
105
+
106
+ describe('as-established - the row decides, not the door', () => {
107
+ const door = approvalDoor({ name: 'non-working-withdrawal', whenNoLine: 'as-established', because: 'approval-is-the-act' } as any)
108
+
109
+ it('refuses when the row was established through approval', async () => {
110
+ const tx = openTx()
111
+
112
+ const verdict: any = await passWorkDoor(
113
+ { door, subject, establishedByApproval: true },
114
+ { tx, domain, seats: seatsThatStand }
115
+ )
116
+
117
+ expect(verdict.go).toBe('refuse')
118
+ expect(tx.saved).toHaveLength(0)
119
+ })
120
+
121
+ it('runs when it stood without approval', async () => {
122
+ const tx = openTx()
123
+
124
+ const verdict: any = await passWorkDoor(
125
+ { door, subject, establishedByApproval: false },
126
+ { tx, domain, seats: seatsThatStand }
127
+ )
128
+
129
+ expect(verdict.go).toBe('run')
130
+ expect(tx.saved).toHaveLength(1)
131
+ })
132
+ })
133
+ })
@@ -10,7 +10,9 @@
10
10
  "button.issue": "issue",
11
11
  "button.open": "open",
12
12
  "button.pick": "pick",
13
+ "button.play": "start",
13
14
  "button.post": "post",
15
+ "button.reject": "reject",
14
16
  "button.restart": "restart",
15
17
  "button.save-note": "save note",
16
18
  "button.schedule-task": "schedule task",
@@ -18,12 +20,9 @@
18
20
  "button.submit": "submit",
19
21
  "button.unschedule-task": "unschedule task",
20
22
  "error.activity not found": "this task template ({activity}) cannot be found.",
23
+ "error.activity-approval cannot be judged by the person who raised it": "you raised this request, so someone else has to judge it. if nobody else stands on this approval line, ask an administrator to add an approver.",
21
24
  "error.activity-approval is already terminated": "this approval task ({activityApproval}) has already been terminated ({actual}).",
22
25
  "error.activity-approval is reference only": "you are a reference on this item, so you cannot approve or reject it. you can leave a comment.",
23
- "error.activity-approval cannot be judged by the person who raised it": "you raised this request, so someone else has to judge it. if nobody else stands on this approval line, ask an administrator to add an approver.",
24
- "error.approval line has nobody but the person raising it": "{seats}: no approver other than you. add another approver to that step, or give that role to someone else.",
25
- "error.approval line names a role that nobody holds": "{seats}: nobody holds the role named for that step. add someone to that role.",
26
- "error.approval line names a person who cannot be found": "{seats}: the person named for that step cannot be found. name another approver.",
27
26
  "error.activity-approval not found": "this approval task ({activityApproval}) cannot be found.",
28
27
  "error.activity-approval taken by someone else": "someone else handled this approval first. reload the list to see where it stands.",
29
28
  "error.activity-instance belongs to someone else": "{id} is someone else's draft. Only the person who wrote it, or someone who manages activity instances, may edit or issue it.",
@@ -38,7 +37,12 @@
38
37
  "error.activity-thread should be the state": "this task thread ({id}) is {actual}. this can only be done in {state}.",
39
38
  "error.activity-thread should not be submitted": "this task thread ({id}) is already in {actual} status.",
40
39
  "error.all activity threads should be terminated": "thread ({activityThread}) is still {state}. try again after all threads are terminated.",
40
+ "error.approval line has nobody but the person raising it": "{seats}: no approver other than you. add another approver to that step, or give that role to someone else.",
41
+ "error.approval line names a person who cannot be found": "{seats}: the person named for that step cannot be found. name another approver.",
42
+ "error.approval line names a role that nobody holds": "{seats}: nobody holds the role named for that step. add someone to that role.",
41
43
  "error.not authorized to handle this task": "you are not authorized to perform this task.",
44
+ "error.work-door-not-used-reason-missing": "enter why this task is not used.",
45
+ "error.work-door-unknown": "unknown task \"{name}\". use a task name from the status screen.",
42
46
  "field.activity-type": "activity type",
43
47
  "field.approval-changed-at": "last change",
44
48
  "field.approval-drafter": "submitted by",
@@ -62,6 +66,7 @@
62
66
  "field.due-in": "due in",
63
67
  "field.hidden": "hidden",
64
68
  "field.inout": "inout",
69
+ "field.input": "input",
65
70
  "field.input-key": "input-key",
66
71
  "field.issued-at": "issued at",
67
72
  "field.issuer": "issuer",
@@ -111,6 +116,7 @@
111
116
  "field.wl-due": "due",
112
117
  "field.wl-judgment": "decision",
113
118
  "field.wl-owner": "owner",
119
+ "field.wl-participation": "type",
114
120
  "field.wl-priority": "priority",
115
121
  "field.wl-round": "round",
116
122
  "field.wl-started-at": "started",
@@ -119,7 +125,6 @@
119
125
  "field.wl-subject": "subject",
120
126
  "field.wl-submitted-at": "submitted",
121
127
  "field.wl-terminated-at": "finished",
122
- "field.wl-participation": "type",
123
128
  "field.wl-view-source": "view source",
124
129
  "label.activity-build-info": "build info",
125
130
  "label.activity-input": "task content",
@@ -176,15 +181,15 @@
176
181
  "label.filter-released": "released",
177
182
  "label.filter-resubmitted": "resubmitted",
178
183
  "label.group-approval": "to approve",
179
- "label.group-reference": "for information",
180
184
  "label.group-completed": "completed",
181
- "label.participation-approval": "approval",
182
- "label.participation-reference": "reference",
185
+ "label.group-reference": "for information",
183
186
  "label.hours": "hours",
184
187
  "label.information": "information",
185
188
  "label.issued-by-me": "issued by me",
186
189
  "label.minutes": "minutes",
187
190
  "label.no": "no",
191
+ "label.participation-approval": "approval",
192
+ "label.participation-reference": "reference",
188
193
  "label.readiness-declared": "no effect yet",
189
194
  "label.readiness-not-worklist": "handled on another screen",
190
195
  "label.readiness-partial": "partly usable",
@@ -194,13 +199,18 @@
194
199
  "label.thread-basics": "basics",
195
200
  "label.thread-info": "task info",
196
201
  "label.timeline": "timeline",
202
+ "label.title": "title",
203
+ "label.value": "value",
197
204
  "label.what-changes": "what changes on approval",
198
205
  "label.what-it-was-judged-from": "what it was judged from",
199
206
  "label.yes": "yes",
207
+ "menu.work-doors": "approval and assignment forms",
200
208
  "text.activity-activated": "{name} is now on for this domain.",
201
209
  "text.activity-change-failed": "{name} was not changed: {why}",
202
210
  "text.activity-change-not-allowed": "you are not allowed to change {name}. ask an administrator for the activity privilege.",
203
211
  "text.activity-deactivated": "{name} is off. this work will no longer be raised.",
212
+ "text.activity-draft-how": "enter a title and description, then choose save draft to open the editor.",
213
+ "text.activity-draft-where": "drafts are in the drafts list and can be edited until you {action}.",
204
214
  "text.activity-guide-unwritten": "an explanation of this work has not been written yet.",
205
215
  "text.activity-in-use-here": "in use",
206
216
  "text.activity-not-in-use-here": "not in use",
@@ -221,6 +231,8 @@
221
231
  "text.copy-failed": "could not copy",
222
232
  "text.copy-payload": "copy this value as raw json",
223
233
  "text.decision-keys-count": "{n} decision key(s)",
234
+ "text.door-filled-from": "set in {name}",
235
+ "text.door-form-from": "{name}'s form — it cannot be changed from here",
224
236
  "text.draft": "draft",
225
237
  "text.due-just-passed": "just passed",
226
238
  "text.due-left-in": "{span} left",
@@ -236,8 +248,8 @@
236
248
  "text.finished-on-this-day": "finished on this day",
237
249
  "text.generated-approval-view": "the generated one",
238
250
  "text.group-approval-hint": "it moves on only after you approve or reject",
239
- "text.group-reference-hint": "comment if you have something to say",
240
251
  "text.group-completed-hint": "review completed approvals and references",
252
+ "text.group-reference-hint": "comment if you have something to say",
241
253
  "text.handed-over-on-this-day": "no deadline. handed over on this day",
242
254
  "text.installable-activities": "installable activities",
243
255
  "text.it-did-not-go-through": "it did not go through: {said}",
@@ -250,14 +262,14 @@
250
262
  "text.no-approval-content-why": "judge from the submission reason and history in the timeline below.",
251
263
  "text.no-approval-description": "new items show up here.",
252
264
  "text.no-approval-title": "nothing to approve",
265
+ "text.no-completed-approval-description": "completed approval and reference history appears here.",
266
+ "text.no-completed-approval-title": "no completed approvals or references",
253
267
  "text.no-due": "no due date",
254
268
  "text.no-installable-activity": "no activities are registered",
255
269
  "text.no-installable-activity-why": "activities appear here once a feature that registers them is installed.",
256
270
  "text.no-reason-given": "no reason was written.",
257
271
  "text.no-reference-description": "items sent for your information show up here.",
258
272
  "text.no-reference-title": "nothing sent for your information",
259
- "text.no-completed-approval-description": "completed approval and reference history appears here.",
260
- "text.no-completed-approval-title": "no completed approvals or references",
261
273
  "text.no-value": "no value",
262
274
  "text.not-allowed-to-do-this": "you are not allowed to do this. ask an administrator.",
263
275
  "text.own-approval-view": "its own",
@@ -268,6 +280,7 @@
268
280
  "text.reference-open": "you can leave a comment",
269
281
  "text.save": "save",
270
282
  "text.signed-out-sign-in-again": "you are signed out. sign in again and retry.",
283
+ "text.task_is_aborted_successfully": "stopped",
271
284
  "text.task_is_approved_successfully": "task is approved successfully",
272
285
  "text.task_is_finished_successfully": "task is finished successfully.",
273
286
  "text.task_is_rejected_successfully": "task is rejected successfully",
@@ -275,10 +288,15 @@
275
288
  "text.task_is_saved_successfully": "task is saved successfully",
276
289
  "text.task_is_started_successfully": "task is started successfully.",
277
290
  "text.timeline-count": "{count} entries",
291
+ "text.work-doors-lead": "shows whether each approval and assignment step has approvers or receivers. without them, an approval completes as soon as it is raised and an assignment reaches nobody.",
292
+ "text.work-doors-next-line": "set an approval line on {count} work forms —",
293
+ "text.work-doors-next-seats": "{standing} of {offered} roles are set up. set up roles first to use them in approval lines —",
294
+ "text.work-doors-read-failed": "could not read the approval forms.",
278
295
  "text.write-your-comment-as-reference": "write your comment.",
279
296
  "title.activity": "activity",
280
297
  "title.activity application": "activity application",
281
298
  "title.activity approval": "activity approval",
299
+ "title.activity approval list": "approvals",
282
300
  "title.activity bank": "activity bank",
283
301
  "title.activity catalog": "activity catalog",
284
302
  "title.activity instance": "activity instance",
@@ -298,18 +316,24 @@
298
316
  "title.activity template list": "activity template list",
299
317
  "title.activity template model item list": "activity template model item list",
300
318
  "title.activity thread": "activity thread",
319
+ "title.activity thread list": "tasks",
320
+ "title.activity-stats list": "task statistics",
301
321
  "title.approval done list": "approval done list",
302
322
  "title.approval pending list": "my approval inbox",
303
323
  "title.assigned list": "assigned list",
304
324
  "title.done list": "done",
305
325
  "title.draft list": "drafts",
306
326
  "title.edit duration": "edit duration",
327
+ "title.import activity-approval": "import approvals",
328
+ "title.import activity-stats": "import task statistics",
329
+ "title.import activity-template": "import task templates",
330
+ "title.import activity-thread": "import tasks",
307
331
  "title.installable activity list": "installable activity list",
308
332
  "title.my work calendar": "my work calendar",
309
333
  "title.my workspace": "my workspace",
310
334
  "title.pick activity": "pick an activity to handle",
311
335
  "title.todo list": "to do",
312
- "title.worklist dashboard": "worklist dashboard",
313
- "text.activity-draft-how": "enter a title and description, then choose save draft to open the editor.",
314
- "text.activity-draft-where": "drafts are in the drafts list and can be edited until you {action}."
315
- }
336
+ "title.work-doors": "approval and assignment forms in this plant",
337
+ "title.work-doors-next": "What to do next",
338
+ "title.worklist dashboard": "worklist dashboard"
339
+ }
@@ -10,7 +10,9 @@
10
10
  "button.issue": "イシュー",
11
11
  "button.open": "開く",
12
12
  "button.pick": "選択",
13
+ "button.play": "実行",
13
14
  "button.post": "掲示",
15
+ "button.reject": "差し戻し",
14
16
  "button.restart": "再スタート",
15
17
  "button.save-note": "メモを保存",
16
18
  "button.schedule-task": "タスクをスケジュール",
@@ -18,12 +20,9 @@
18
20
  "button.submit": "提出",
19
21
  "button.unschedule-task": "タスクのスケジュールを解除",
20
22
  "error.activity not found": "このタスクテンプレート({activity})が見つかりません。",
23
+ "error.activity-approval cannot be judged by the person who raised it": "この件は起案した方が承認できません。他に承認者がいない場合は、管理者に承認ルートへ承認者を追加するよう依頼してください。",
21
24
  "error.activity-approval is already terminated": "この承認タスク({activityApproval})はすでに終了({actual})しています。",
22
25
  "error.activity-approval is reference only": "参照として受け取った件のため、承認・却下はできません。意見は残せます。",
23
- "error.activity-approval cannot be judged by the person who raised it": "この件は起案した方が承認できません。他に承認者がいない場合は、管理者に承認ルートへ承認者を追加するよう依頼してください。",
24
- "error.approval line has nobody but the person raising it": "{seats} の段階に起案者以外の承認者がいません。別の承認者を追加するか、その役割に人を追加してください。",
25
- "error.approval line names a role that nobody holds": "{seats} の段階に指定した役割に人がいません。その役割に人を追加してください。",
26
- "error.approval line names a person who cannot be found": "{seats} の段階に指定した人が見つかりません。承認者を指定し直してください。",
27
26
  "error.activity-approval not found": "この承認タスク({activityApproval})が見つかりません。",
28
27
  "error.activity-approval taken by someone else": "他の方が先に処理しました。一覧を再読み込みしてください。",
29
28
  "error.activity-instance belongs to someone else": "{id} is someone else's draft. Only the person who wrote it, or someone who manages activity instances, may edit or issue it.",
@@ -38,7 +37,12 @@
38
37
  "error.activity-thread should be the state": "この作業スレッド({id})は {actual} 状態です。{state} 状態のときだけ実行できます。",
39
38
  "error.activity-thread should not be submitted": "このタスクスレッド({id})はすでに{actual}状態です。",
40
39
  "error.all activity threads should be terminated": "スレッド({activityThread})がまだ {state} 状態です。すべてのスレッドが終了してから再試行してください。",
40
+ "error.approval line has nobody but the person raising it": "{seats} の段階に起案者以外の承認者がいません。別の承認者を追加するか、その役割に人を追加してください。",
41
+ "error.approval line names a person who cannot be found": "{seats} の段階に指定した人が見つかりません。承認者を指定し直してください。",
42
+ "error.approval line names a role that nobody holds": "{seats} の段階に指定した役割に人がいません。その役割に人を追加してください。",
41
43
  "error.not authorized to handle this task": "このタスクを処理する権限がありません。",
44
+ "error.work-door-not-used-reason-missing": "使用しない理由を入力してください。",
45
+ "error.work-door-unknown": "「{name}」は不明な業務です。状況画面の業務名を使用してください。",
42
46
  "field.activity-type": "業務タイプ",
43
47
  "field.approval-changed-at": "最終変更",
44
48
  "field.approval-drafter": "起案者",
@@ -62,6 +66,7 @@
62
66
  "field.due-in": "残り時間",
63
67
  "field.hidden": "隠す",
64
68
  "field.inout": "入出力",
69
+ "field.input": "入力値",
65
70
  "field.input-key": "入力キー",
66
71
  "field.issued-at": "発行日",
67
72
  "field.issuer": "発行者",
@@ -111,6 +116,7 @@
111
116
  "field.wl-due": "期限",
112
117
  "field.wl-judgment": "判定",
113
118
  "field.wl-owner": "担当者",
119
+ "field.wl-participation": "区分",
114
120
  "field.wl-priority": "優先度",
115
121
  "field.wl-round": "回次",
116
122
  "field.wl-started-at": "開始",
@@ -119,7 +125,6 @@
119
125
  "field.wl-subject": "件名",
120
126
  "field.wl-submitted-at": "上申日",
121
127
  "field.wl-terminated-at": "完了",
122
- "field.wl-participation": "区分",
123
128
  "field.wl-view-source": "画面ソース",
124
129
  "label.activity-build-info": "開発情報",
125
130
  "label.activity-input": "業務内容",
@@ -176,15 +181,15 @@
176
181
  "label.filter-released": "配布",
177
182
  "label.filter-resubmitted": "再上申",
178
183
  "label.group-approval": "決裁するもの",
179
- "label.group-reference": "参照で届いたもの",
180
184
  "label.group-completed": "完了",
181
- "label.participation-approval": "決裁",
182
- "label.participation-reference": "参照",
185
+ "label.group-reference": "参照で届いたもの",
183
186
  "label.hours": "時間",
184
187
  "label.information": "基本情報",
185
188
  "label.issued-by-me": "発行者が自分",
186
189
  "label.minutes": "分",
187
190
  "label.no": "いいえ",
191
+ "label.participation-approval": "決裁",
192
+ "label.participation-reference": "参照",
188
193
  "label.readiness-declared": "まだ動作しない",
189
194
  "label.readiness-not-worklist": "業務箱には来ない",
190
195
  "label.readiness-partial": "一部のみ動作",
@@ -194,13 +199,18 @@
194
199
  "label.thread-basics": "基本情報",
195
200
  "label.thread-info": "業務情報",
196
201
  "label.timeline": "タイムライン",
202
+ "label.title": "タイトル",
203
+ "label.value": "値",
197
204
  "label.what-changes": "承認すると変わること",
198
205
  "label.what-it-was-judged-from": "判断の根拠",
199
206
  "label.yes": "はい",
207
+ "menu.work-doors": "承認・割当様式の状況",
200
208
  "text.activity-activated": "{name} をこのドメインで使用するようにしました。",
201
209
  "text.activity-change-failed": "{name} を変更できませんでした: {why}",
202
210
  "text.activity-change-not-allowed": "{name} を変更する権限がありません。管理者に業務活動の権限を依頼してください。",
203
211
  "text.activity-deactivated": "{name} をオフにしました。この業務は今後上がりません。",
212
+ "text.activity-draft-how": "タイトルと説明を入力し、下書き保存を選択すると編集画面に移動します。",
213
+ "text.activity-draft-where": "下書きは「作成中」一覧にあり、{action} するまで編集できます。",
204
214
  "text.activity-guide-unwritten": "この業務の説明はまだ用意されていません。",
205
215
  "text.activity-in-use-here": "使用中",
206
216
  "text.activity-not-in-use-here": "まだ使用していません",
@@ -221,6 +231,8 @@
221
231
  "text.copy-failed": "コピーできません",
222
232
  "text.copy-payload": "この値を原文(JSON)でコピーします",
223
233
  "text.decision-keys-count": "判断項目 {n}件",
234
+ "text.door-filled-from": "{name} で設定されています",
235
+ "text.door-form-from": "{name} のフォームです — ここでは変更できません",
224
236
  "text.draft": "ドラフト保存",
225
237
  "text.due-just-passed": "過ぎたところ",
226
238
  "text.due-left-in": "残り{span}",
@@ -236,8 +248,8 @@
236
248
  "text.finished-on-this-day": "この日に完了しました",
237
249
  "text.generated-approval-view": "既定の画面",
238
250
  "text.group-approval-hint": "承認または却下すると次に進みます",
239
- "text.group-reference-hint": "意見があれば書き込めます",
240
251
  "text.group-completed-hint": "完了した決裁と参照の履歴を確認します",
252
+ "text.group-reference-hint": "意見があれば書き込めます",
241
253
  "text.handed-over-on-this-day": "期限がありません。この日に受け取りました",
242
254
  "text.installable-activities": "設置可能業務",
243
255
  "text.it-did-not-go-through": "処理できませんでした: {said}",
@@ -250,14 +262,14 @@
250
262
  "text.no-approval-content-why": "下のタイムラインの起案理由と履歴を見て判断してください。",
251
263
  "text.no-approval-description": "新しい件が届くとここに表示されます。",
252
264
  "text.no-approval-title": "決裁する件はありません",
265
+ "text.no-completed-approval-description": "完了した決裁と参照の履歴がここに表示されます。",
266
+ "text.no-completed-approval-title": "完了した決裁または参照の件はありません",
253
267
  "text.no-due": "期限なし",
254
268
  "text.no-installable-activity": "登録された業務がありません",
255
269
  "text.no-installable-activity-why": "業務を登録する機能がインストールされるとここに表示されます。",
256
270
  "text.no-reason-given": "理由が記入されていません。",
257
271
  "text.no-reference-description": "参照として届いた件はここに表示されます。",
258
272
  "text.no-reference-title": "参照で届いた件はありません",
259
- "text.no-completed-approval-description": "完了した決裁と参照の履歴がここに表示されます。",
260
- "text.no-completed-approval-title": "完了した決裁または参照の件はありません",
261
273
  "text.no-value": "値なし",
262
274
  "text.not-allowed-to-do-this": "この操作を行う権限がありません。管理者に依頼してください。",
263
275
  "text.own-approval-view": "専用",
@@ -268,6 +280,7 @@
268
280
  "text.reference-open": "意見を書けます",
269
281
  "text.save": "保存",
270
282
  "text.signed-out-sign-in-again": "ログインが切れました。再度ログインしてからお試しください。",
283
+ "text.task_is_aborted_successfully": "中止しました",
271
284
  "text.task_is_approved_successfully": "業務が正常に承認されました。",
272
285
  "text.task_is_finished_successfully": "業務が成功的に完了しました。",
273
286
  "text.task_is_rejected_successfully": "業務が正常に突き返されました。",
@@ -275,10 +288,15 @@
275
288
  "text.task_is_saved_successfully": "業務が正常に保存されました。",
276
289
  "text.task_is_started_successfully": "業務が正常に開始されました。",
277
290
  "text.timeline-count": "{count}件",
291
+ "text.work-doors-lead": "承認・割当の各段階で承認者と受取人が決まっているかを表示します。決めていないと、承認は申請と同時に承認され、割当は誰にも届きません。",
292
+ "text.work-doors-next-line": "業務様式 {count}件に承認ラインを指定してください —",
293
+ "text.work-doors-next-seats": "ロール {offered}件中 {standing}件が設定されています。承認ラインに使うロールを先に設定してください —",
294
+ "text.work-doors-read-failed": "承認様式の状況を読み込めませんでした。",
278
295
  "text.write-your-comment-as-reference": "ご意見をご記入ください。",
279
296
  "title.activity": "業務",
280
297
  "title.activity application": "業務申込書作成",
281
298
  "title.activity approval": "業務承認",
299
+ "title.activity approval list": "決裁",
282
300
  "title.activity bank": "業務バンク",
283
301
  "title.activity catalog": "業務カタログ",
284
302
  "title.activity instance": "業務インスタンス",
@@ -298,18 +316,24 @@
298
316
  "title.activity template list": "業務テンプレート",
299
317
  "title.activity template model item list": "業務テンプレート モデル リスト",
300
318
  "title.activity thread": "業務スレッド",
319
+ "title.activity thread list": "業務",
320
+ "title.activity-stats list": "業務の統計",
301
321
  "title.approval done list": "マイ承認リスト",
302
322
  "title.approval pending list": "私の決裁箱",
303
323
  "title.assigned list": "マイ関連業務現況",
304
324
  "title.done list": "完了",
305
325
  "title.draft list": "作成中",
306
326
  "title.edit duration": "所要時間編集",
327
+ "title.import activity-approval": "決裁の取り込み",
328
+ "title.import activity-stats": "業務統計の取り込み",
329
+ "title.import activity-template": "業務テンプレートの取り込み",
330
+ "title.import activity-thread": "業務の取り込み",
307
331
  "title.installable activity list": "設置可能業務",
308
332
  "title.my work calendar": "私の業務カレンダー",
309
333
  "title.my workspace": "私の仕事の空間",
310
334
  "title.pick activity": "担当する業務を選択",
311
335
  "title.todo list": "やること",
312
- "title.worklist dashboard": "ワークリストダッシュボード",
313
- "text.activity-draft-how": "タイトルと説明を入力し、下書き保存を選択すると編集画面に移動します。",
314
- "text.activity-draft-where": "下書きは「作成中」一覧にあり、{action} するまで編集できます。"
315
- }
336
+ "title.work-doors": "この工場の承認・割当様式",
337
+ "title.work-doors-next": "次にすること",
338
+ "title.worklist dashboard": "ワークリストダッシュボード"
339
+ }