@things-factory/organization 10.1.34 → 10.1.38

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 (41) hide show
  1. package/dist-client/component/approval-line-items-editor-popup.d.ts +1 -0
  2. package/dist-client/component/approval-line-items-editor-popup.js +6 -8
  3. package/dist-client/component/approval-line-items-editor-popup.js.map +1 -1
  4. package/dist-client/component/approval-line-items-editor.d.ts +3 -0
  5. package/dist-client/component/approval-line-items-editor.js +31 -3
  6. package/dist-client/component/approval-line-items-editor.js.map +1 -1
  7. package/dist-client/component/approval-line-selector.d.ts +1 -0
  8. package/dist-client/component/approval-line-selector.js +6 -8
  9. package/dist-client/component/approval-line-selector.js.map +1 -1
  10. package/dist-client/component/assignees-editor-popup.d.ts +1 -0
  11. package/dist-client/component/assignees-editor-popup.js +6 -8
  12. package/dist-client/component/assignees-editor-popup.js.map +1 -1
  13. package/dist-client/component/copy-from.d.ts +13 -0
  14. package/dist-client/component/copy-from.js +16 -0
  15. package/dist-client/component/copy-from.js.map +1 -0
  16. package/dist-client/component/department-selector.d.ts +1 -0
  17. package/dist-client/component/department-selector.js +6 -8
  18. package/dist-client/component/department-selector.js.map +1 -1
  19. package/dist-client/component/popup-actions-row.test.d.ts +1 -0
  20. package/dist-client/component/popup-actions-row.test.js +42 -0
  21. package/dist-client/component/popup-actions-row.test.js.map +1 -0
  22. package/dist-client/component/recipients-editor-popup.d.ts +1 -0
  23. package/dist-client/component/recipients-editor-popup.js +6 -8
  24. package/dist-client/component/recipients-editor-popup.js.map +1 -1
  25. package/dist-client/grist-editor/grist-renderer-approval-line.d.ts +10 -0
  26. package/dist-client/grist-editor/grist-renderer-approval-line.js +27 -5
  27. package/dist-client/grist-editor/grist-renderer-approval-line.js.map +1 -1
  28. package/dist-client/route.d.ts +1 -1
  29. package/dist-client/tsconfig.tsbuildinfo +1 -1
  30. package/dist-client/types/approval-line.d.ts +23 -0
  31. package/dist-client/types/approval-line.js +9 -0
  32. package/dist-client/types/approval-line.js.map +1 -1
  33. package/dist-server/tsconfig.tsbuildinfo +1 -1
  34. package/package.json +6 -6
  35. package/tests/approval-line-mark.test.ts +68 -0
  36. package/tests/copy-from.test.ts +17 -0
  37. package/translations/en.json +3 -1
  38. package/translations/ja.json +5 -3
  39. package/translations/ko.json +5 -3
  40. package/translations/ms.json +3 -1
  41. package/translations/zh.json +5 -3
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/organization",
3
- "version": "10.1.34",
3
+ "version": "10.1.38",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "dist-client/index.js",
6
6
  "things-factory": true,
@@ -36,10 +36,10 @@
36
36
  "@operato/p13n": "^10.0.0",
37
37
  "@operato/popup": "^10.15.0",
38
38
  "@operato/shell": "^10.0.0",
39
- "@things-factory/auth-base": "^10.1.34",
40
- "@things-factory/code-ui": "^10.1.34",
41
- "@things-factory/contact": "^10.1.34",
42
- "@things-factory/shell": "^10.1.34"
39
+ "@things-factory/auth-base": "^10.1.38",
40
+ "@things-factory/code-ui": "^10.1.38",
41
+ "@things-factory/contact": "^10.1.38",
42
+ "@things-factory/shell": "^10.1.38"
43
43
  },
44
- "gitHead": "5e16fd9f0cbb71c8d395b58a95bd9e99c93975c7"
44
+ "gitHead": "b947349fe1c27d11038b592ceadaba336f14785b"
45
45
  }
@@ -0,0 +1,68 @@
1
+ import { readFileSync } from 'fs'
2
+ import path from 'path'
3
+
4
+ import { approvalLineMark } from '../client/types/approval-line'
5
+
6
+ /**
7
+ * 「이 업무에 결재자가 있나」를 화면 셋이 각각 셌다. 업무정의 리스트의 사람 표만 결재선이 비었는지로
8
+ * 답해서, 참조만 있는 줄도 사람 아이콘을 얻었다 — BatchRelease 가 그랬다.
9
+ *
10
+ * 참조는 의견을 낼 뿐 판정하지 않는다. 참조만 있는 결재선으로 규제를 걸면 건은 올라가고 아무도 못
11
+ * 내린다.
12
+ *
13
+ * 이 고침이 가르는 축을 먼저 적는다:
14
+ * ① 줄이 없다 → none
15
+ * ② 줄은 있고 결재 0 → reference-only ← 전에는 person/group 이 나오던 자리
16
+ * ③ 결재 1 → one
17
+ * ④ 결재 2 이상 → many
18
+ * ⑤ 빈 participation → 결재다 (옛 행)
19
+ * ⑥ 렌더러가 길이가 아니라 이 답으로 그린다
20
+ */
21
+
22
+ const approval = { participation: undefined }
23
+ const reference = { participation: 'reference' }
24
+
25
+ describe('approval line mark', () => {
26
+ it('★ 줄이 없으면 아무것도 아니다', () => {
27
+ expect(approvalLineMark(undefined)).toEqual('none')
28
+ expect(approvalLineMark(null)).toEqual('none')
29
+ expect(approvalLineMark([])).toEqual('none')
30
+ })
31
+
32
+ it('★ 참조만 있는 줄은 결재자가 있는 것으로 세지 않는다', () => {
33
+ expect(approvalLineMark([reference])).toEqual('reference-only')
34
+ expect(approvalLineMark([reference, reference])).toEqual('reference-only')
35
+ })
36
+
37
+ it('★ 참조만 있는 것과 줄이 아예 없는 것을 가른다', () => {
38
+ /* 고칠 사람이 할 일이 다르다 — 하나는 줄을 만들고, 하나는 그 줄에 결재자를 더한다. */
39
+ expect(approvalLineMark([reference])).not.toEqual(approvalLineMark([]))
40
+ })
41
+
42
+ it('★ 결재 단계를 센다. 줄의 길이가 아니다', () => {
43
+ expect(approvalLineMark([approval])).toEqual('one')
44
+ expect(approvalLineMark([approval, reference])).toEqual('one')
45
+ expect(approvalLineMark([reference, approval, reference])).toEqual('one')
46
+ expect(approvalLineMark([approval, approval])).toEqual('many')
47
+ expect(approvalLineMark([reference, approval, approval])).toEqual('many')
48
+ })
49
+
50
+ it('빈 participation 은 결재다 — 그 칸이 생기기 전에 쌓인 줄이 있다', () => {
51
+ expect(approvalLineMark([{}])).toEqual('one')
52
+ expect(approvalLineMark([{ participation: null }])).toEqual('one')
53
+ })
54
+
55
+ it('★ 격자 칸이 줄의 길이로 가르지 않는다', () => {
56
+ /*
57
+ * 전에는 `value.length == 1` 로 person 을, 그보다 많으면 group 을 그렸다. 그 셈은 참조를
58
+ * 결재자로 읽는다. 이 줄이 없으면 렌더러가 다시 자기 셈을 쓴다.
59
+ */
60
+ const source = readFileSync(
61
+ path.resolve(__dirname, '..', 'client', 'grist-editor', 'grist-renderer-approval-line.ts'),
62
+ 'utf-8'
63
+ ).replace(/\/\*[\s\S]*?\*\//g, '')
64
+
65
+ expect(/approvalLineMark\(/.test(source)).toEqual(true)
66
+ expect(/value\.length/.test(source)).toEqual(false)
67
+ })
68
+ })
@@ -0,0 +1,17 @@
1
+ import { offersCopyFrom } from '../client/component/copy-from'
2
+
3
+ describe('the approval line editor offers "copy from" only when there is something to copy', () => {
4
+ it('saved lines: the button stands', () => {
5
+ expect(offersCopyFrom(1)).toBe(true)
6
+ expect(offersCopyFrom(12)).toBe(true)
7
+ })
8
+
9
+ it('none saved: no button, so no empty window', () => {
10
+ expect(offersCopyFrom(0)).toBe(false)
11
+ })
12
+
13
+ it('not counted yet, or the count failed: no button', () => {
14
+ expect(offersCopyFrom(undefined)).toBe(false)
15
+ expect(offersCopyFrom(null)).toBe(false)
16
+ })
17
+ })
@@ -50,6 +50,9 @@
50
50
  "prompt.sure to empty approval line ?": "sure to empty approval line ?",
51
51
  "text.add the first department": "fill in a control number and a name, then add",
52
52
  "text.all departments": "everyone",
53
+ "text.approval-line has one approver": "one approval step",
54
+ "text.approval-line has references only": "references only — nobody here can approve it",
55
+ "text.approval-line has several approvers": "several approval steps",
53
56
  "text.approval-line-empty": "no approver — a submission completes at once",
54
57
  "text.approver-unknown": "(no name)",
55
58
  "text.deleted": "deleted",
@@ -69,7 +72,6 @@
69
72
  "text.notify-immediately": "as soon as submitted",
70
73
  "text.saved": "saved",
71
74
  "title.approval-line": "approval lines",
72
- "title.approval-line editor": "approval line editor",
73
75
  "title.approval-line item list": "approval line item list",
74
76
  "title.approval-line template list": "approval line template list",
75
77
  "title.assignee list": "assignee list",
@@ -10,8 +10,8 @@
10
10
  "button.view": "表示",
11
11
  "error.contact-information-required": "この従業員には連絡先情報が必要です。",
12
12
  "error.employee-already-registered": "この従業員はすでにシステムユーザーとして登録されています。",
13
- "error.multiple-employees-for-user": "このアカウントに紐づく社員情報が複数あり、どの社員として処理するか判断できません。ドメイン管理者が一つだけ残す必要があります。",
14
- "error.no-employee-for-user": "このアカウントに紐づく社員情報がありません。ドメイン管理者が社員一覧で紐づけできます。",
13
+ "error.multiple-employees-for-user": "このアカウントに紐づく社員情報が複数あり、どの社員として処理するか判断できません。$t(term.domain)管理者が一つだけ残す必要があります。",
14
+ "error.no-employee-for-user": "このアカウントに紐づく社員情報がありません。$t(term.domain)管理者が社員一覧で紐づけできます。",
15
15
  "field.approval-line": "決裁ライン",
16
16
  "field.approver": "決裁者",
17
17
  "field.control-no": "管理番号",
@@ -50,6 +50,9 @@
50
50
  "prompt.sure to empty approval line ?": "承認ラインを空にしますか?",
51
51
  "text.add the first department": "管理番号と名前を入力して追加してください",
52
52
  "text.all departments": "全体",
53
+ "text.approval-line has one approver": "承認 1段階",
54
+ "text.approval-line has references only": "参照のみです — 承認できる方がいません",
55
+ "text.approval-line has several approvers": "承認 複数段階",
53
56
  "text.approval-line-empty": "決裁者がいません — 提出すると即完了します",
54
57
  "text.approver-unknown": "(名前なし)",
55
58
  "text.deleted": "削除しました",
@@ -69,7 +72,6 @@
69
72
  "text.notify-immediately": "申請直後",
70
73
  "text.saved": "保存しました",
71
74
  "title.approval-line": "決裁ライン",
72
- "title.approval-line editor": "決裁ライン編集",
73
75
  "title.approval-line item list": "決裁ライン詳細",
74
76
  "title.approval-line template list": "決裁ライン テンプレート リスト",
75
77
  "title.assignee list": "譲渡人リスト",
@@ -10,8 +10,8 @@
10
10
  "button.view": "보기",
11
11
  "error.contact-information-required": "해당 직원의 연락처 정보가 필요합니다.",
12
12
  "error.employee-already-registered": "해당 직원은 이미 시스템 사용자로 등록되어 있습니다.",
13
- "error.multiple-employees-for-user": "이 계정에 연결된 직원 정보가 둘 이상이어서 어느 직원으로 처리할지 알 수 없습니다. 도메인 관리자가 하나만 남겨야 합니다.",
14
- "error.no-employee-for-user": "이 계정에 연결된 직원 정보가 없습니다. 도메인 관리자가 직원 목록에서 연결해 줄 수 있습니다.",
13
+ "error.multiple-employees-for-user": "이 계정에 연결된 직원 정보가 둘 이상이어서 어느 직원으로 처리할지 알 수 없습니다. $t(term.domain) 관리자가 하나만 남겨야 합니다.",
14
+ "error.no-employee-for-user": "이 계정에 연결된 직원 정보가 없습니다. $t(term.domain) 관리자가 직원 목록에서 연결해 줄 수 있습니다.",
15
15
  "field.approval-line": "결재선",
16
16
  "field.approver": "결재자",
17
17
  "field.control-no": "관리 번호",
@@ -50,6 +50,9 @@
50
50
  "prompt.sure to empty approval line ?": "결재라인을 비우시겠습니까 ?",
51
51
  "text.add the first department": "관리번호와 이름을 적고 추가하십시오",
52
52
  "text.all departments": "전체",
53
+ "text.approval-line has one approver": "결재 1단계",
54
+ "text.approval-line has references only": "참조만 있습니다 — 결재할 사람이 없습니다",
55
+ "text.approval-line has several approvers": "결재 여러 단계",
53
56
  "text.approval-line-empty": "결재자가 없습니다 — 올리면 곧 완료됩니다",
54
57
  "text.approver-unknown": "(이름 없음)",
55
58
  "text.deleted": "삭제했습니다",
@@ -69,7 +72,6 @@
69
72
  "text.notify-immediately": "상신 즉시",
70
73
  "text.saved": "저장했습니다",
71
74
  "title.approval-line": "결재선",
72
- "title.approval-line editor": "결재선 편집",
73
75
  "title.approval-line item list": "결재선 상세",
74
76
  "title.approval-line template list": "결재선 목록",
75
77
  "title.assignee list": "할당자 목록",
@@ -50,6 +50,9 @@
50
50
  "prompt.sure to empty approval line ?": "pasti mahu kosongkan garis kelulusan?",
51
51
  "text.add the first department": "isi nombor kawalan dan nama, kemudian tambah",
52
52
  "text.all departments": "semua",
53
+ "text.approval-line has one approver": "satu langkah kelulusan",
54
+ "text.approval-line has references only": "rujukan sahaja — tiada sesiapa di sini boleh meluluskannya",
55
+ "text.approval-line has several approvers": "beberapa langkah kelulusan",
53
56
  "text.approval-line-empty": "tiada pelulus — penghantaran selesai serta-merta",
54
57
  "text.approver-unknown": "(tiada nama)",
55
58
  "text.deleted": "dipadam",
@@ -69,7 +72,6 @@
69
72
  "text.notify-immediately": "sebaik dihantar",
70
73
  "text.saved": "disimpan",
71
74
  "title.approval-line": "talian kelulusan",
72
- "title.approval-line editor": "editor garis kelulusan",
73
75
  "title.approval-line item list": "senarai item garis kelulusan",
74
76
  "title.approval-line template list": "senarai templat garis kelulusan",
75
77
  "title.assignee list": "senarai penerima tugasan",
@@ -10,8 +10,8 @@
10
10
  "button.view": "查看",
11
11
  "error.contact-information-required": "该员工需要联系信息。",
12
12
  "error.employee-already-registered": "该员工已注册为系统用户。",
13
- "error.multiple-employees-for-user": "此账号关联了多条员工信息,无法判断以哪一位员工身份处理。域管理员需只保留一条。",
14
- "error.no-employee-for-user": "此账号未关联员工信息。域管理员可在员工列表中进行关联。",
13
+ "error.multiple-employees-for-user": "此账号关联了多条员工信息,无法判断以哪一位员工身份处理。$t(term.domain)管理员需只保留一条。",
14
+ "error.no-employee-for-user": "此账号未关联员工信息。$t(term.domain)管理员可在员工列表中进行关联。",
15
15
  "field.approval-line": "审批线",
16
16
  "field.approver": "审批人",
17
17
  "field.control-no": "控制编号",
@@ -50,6 +50,9 @@
50
50
  "prompt.sure to empty approval line ?": "确定要清空审批行吗?",
51
51
  "text.add the first department": "填写管理编号和名称后添加",
52
52
  "text.all departments": "全部",
53
+ "text.approval-line has one approver": "审批 1 个环节",
54
+ "text.approval-line has references only": "仅为参照 — 此处无人可审批",
55
+ "text.approval-line has several approvers": "审批多个环节",
53
56
  "text.approval-line-empty": "没有审批人 — 提交后立即完成",
54
57
  "text.approver-unknown": "(无名称)",
55
58
  "text.deleted": "已删除",
@@ -69,7 +72,6 @@
69
72
  "text.notify-immediately": "提交后立即",
70
73
  "text.saved": "已保存",
71
74
  "title.approval-line": "审批线",
72
- "title.approval-line editor": "审批线编辑器",
73
75
  "title.approval-line item list": "审批线项目列表",
74
76
  "title.approval-line template list": "审批线模板列表",
75
77
  "title.assignee list": "受托人列表",