@tachybase/plugin-department 0.23.35

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 (128) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +1 -0
  3. package/client.d.ts +2 -0
  4. package/client.js +1 -0
  5. package/dist/client/common/DepartmentTable.schema.d.ts +50 -0
  6. package/dist/client/common/DepartmentTable.view.d.ts +4 -0
  7. package/dist/client/common/FilterKeys.context.d.ts +10 -0
  8. package/dist/client/common/InternalDepartmentTable.d.ts +5 -0
  9. package/dist/client/common/Request.povider.d.ts +1 -0
  10. package/dist/client/common/UserDepartmentsFieldNotSupport.d.ts +2 -0
  11. package/dist/client/common/scopes/useDepartmentFilterActionProps.d.ts +5 -0
  12. package/dist/client/common/scopes/useFilterActionProps.d.ts +5 -0
  13. package/dist/client/index.d.ts +6 -0
  14. package/dist/client/index.js +12 -0
  15. package/dist/client/locale.d.ts +9 -0
  16. package/dist/client/main-tab/DepartmentIndex.d.ts +5 -0
  17. package/dist/client/main-tab/DepartmentIndex.provider.d.ts +3 -0
  18. package/dist/client/main-tab/DepartmentManagement.component.d.ts +1 -0
  19. package/dist/client/main-tab/DepartmentManagement.schema.d.ts +10 -0
  20. package/dist/client/main-tab/DepartmentManagement.view.d.ts +1 -0
  21. package/dist/client/main-tab/collections/departments.collection.d.ts +128 -0
  22. package/dist/client/main-tab/collections/users.collection.d.ts +189 -0
  23. package/dist/client/main-tab/components/DepartmentSelect.d.ts +1 -0
  24. package/dist/client/main-tab/components/InternalSuperiorDepartmentSelect.d.ts +1 -0
  25. package/dist/client/main-tab/components/SuperiorDepartmentSelect.d.ts +1 -0
  26. package/dist/client/main-tab/context/Department.context.d.ts +23 -0
  27. package/dist/client/main-tab/context/DepartmentsExpanded.context.d.ts +17 -0
  28. package/dist/client/main-tab/departments-block/AddNewDepartment.schema.d.ts +67 -0
  29. package/dist/client/main-tab/departments-block/AddNewDepartment.view.d.ts +1 -0
  30. package/dist/client/main-tab/departments-block/DepartmentOwnersField.component.d.ts +5 -0
  31. package/dist/client/main-tab/departments-block/DepartmentsBlock.d.ts +1 -0
  32. package/dist/client/main-tab/departments-block/DepartmentsSearch.component.d.ts +1 -0
  33. package/dist/client/main-tab/departments-block/DepartmentsTree.component.d.ts +8 -0
  34. package/dist/client/main-tab/departments-block/Request.provider.d.ts +1 -0
  35. package/dist/client/main-tab/departments-block/UnknownOwerns.schema.d.ts +136 -0
  36. package/dist/client/main-tab/departments-block/UnknownOwerns.view.d.ts +1 -0
  37. package/dist/client/main-tab/departments-block/schemas/schemaDepartmentEdit.d.ts +62 -0
  38. package/dist/client/main-tab/departments-block/schemas/schemaDepartmentNewSub.d.ts +57 -0
  39. package/dist/client/main-tab/departments-block/scopes/useCreateDepartment.d.ts +3 -0
  40. package/dist/client/main-tab/departments-block/scopes/useUpdateDepartment.d.ts +3 -0
  41. package/dist/client/main-tab/departments-users-block/AddMembers.schema.d.ts +148 -0
  42. package/dist/client/main-tab/departments-users-block/AddMembers.view.d.ts +1 -0
  43. package/dist/client/main-tab/departments-users-block/DepartmentField.component.d.ts +1 -0
  44. package/dist/client/main-tab/departments-users-block/DepartmentsUsersBlock.d.ts +1 -0
  45. package/dist/client/main-tab/departments-users-block/DepartmentsUsersBlock.schema.d.ts +676 -0
  46. package/dist/client/main-tab/departments-users-block/IsOwnerField.component.d.ts +1 -0
  47. package/dist/client/main-tab/departments-users-block/MemberActions.schema.d.ts +49 -0
  48. package/dist/client/main-tab/departments-users-block/MemberActions.view.d.ts +1 -0
  49. package/dist/client/main-tab/departments-users-block/RowRemoveAction.schema.d.ts +16 -0
  50. package/dist/client/main-tab/departments-users-block/RowRemoveAction.view.d.ts +1 -0
  51. package/dist/client/main-tab/departments-users-block/UserDepartmentsField.component.d.ts +1 -0
  52. package/dist/client/main-tab/departments-users-block/UserSelectDepartment.schema.d.ts +42 -0
  53. package/dist/client/main-tab/departments-users-block/UserSelectDepartment.view.d.ts +1 -0
  54. package/dist/client/main-tab/departments-users-block/scopes/useBulkRemoveMembersAction.d.ts +3 -0
  55. package/dist/client/main-tab/departments-users-block/scopes/useDataSource.d.ts +40 -0
  56. package/dist/client/main-tab/departments-users-block/scopes/useMembersDataSource.d.ts +6 -0
  57. package/dist/client/main-tab/departments-users-block/scopes/usePropsAddMember.d.ts +1 -0
  58. package/dist/client/main-tab/departments-users-block/scopes/useRefreshActionProps.d.ts +3 -0
  59. package/dist/client/main-tab/departments-users-block/scopes/useRemoveMemberAction.d.ts +3 -0
  60. package/dist/client/main-tab/departments-users-block/scopes/useShowTotal.d.ts +1 -0
  61. package/dist/client/main-tab/hooks/useDeepTree.d.ts +14 -0
  62. package/dist/client/main-tab/hooks/useGetDepTree.d.ts +18 -0
  63. package/dist/client/main-tab/kit.d.ts +4 -0
  64. package/dist/client/main-tab/providers/DepartmentsResource.provider.d.ts +3 -0
  65. package/dist/client/main-tab/providers/UserResource.provider.d.ts +3 -0
  66. package/dist/client/role-auth/DepartmentTitle.component.d.ts +1 -0
  67. package/dist/client/role-auth/Departments.d.ts +1 -0
  68. package/dist/client/role-auth/Departments.schema.d.ts +227 -0
  69. package/dist/client/role-auth/kit.d.ts +4 -0
  70. package/dist/client/role-auth/scopes/useAddDepartments.d.ts +3 -0
  71. package/dist/client/role-auth/scopes/useBulkRemoveDepartments.d.ts +3 -0
  72. package/dist/client/role-auth/scopes/useDataSource.d.ts +40 -0
  73. package/dist/client/role-auth/scopes/useDisabled.d.ts +3 -0
  74. package/dist/client/role-auth/scopes/useRemoveDepartment.d.ts +3 -0
  75. package/dist/client/settings/DepartmentOwnersFieldSetting.d.ts +2 -0
  76. package/dist/client/settings/UserDepartmentsFieldSetting.d.ts +2 -0
  77. package/dist/client/settings/UserMainDepartmentFieldSetting.d.ts +2 -0
  78. package/dist/client/settings/items/enableLinkItem.d.ts +2 -0
  79. package/dist/client/settings/items/modeSelectItem.d.ts +2 -0
  80. package/dist/client/settings/items/titleFieldItem.d.ts +2 -0
  81. package/dist/client/utils/getDepartmentStr.d.ts +1 -0
  82. package/dist/client/utils/getUserListByDepartment.d.ts +1 -0
  83. package/dist/externalVersion.js +14 -0
  84. package/dist/index.d.ts +2 -0
  85. package/dist/index.js +39 -0
  86. package/dist/locale/en-US.json +51 -0
  87. package/dist/locale/zh-CN.json +51 -0
  88. package/dist/server/actions/departments.d.ts +5 -0
  89. package/dist/server/actions/departments.js +105 -0
  90. package/dist/server/actions/index.d.ts +2 -0
  91. package/dist/server/actions/index.js +23 -0
  92. package/dist/server/actions/users.d.ts +4 -0
  93. package/dist/server/actions/users.js +142 -0
  94. package/dist/server/collections/departmentRoles.d.ts +2 -0
  95. package/dist/server/collections/departmentRoles.js +27 -0
  96. package/dist/server/collections/departments.d.ts +29 -0
  97. package/dist/server/collections/departments.js +162 -0
  98. package/dist/server/collections/departmentsUsers.d.ts +2 -0
  99. package/dist/server/collections/departmentsUsers.js +43 -0
  100. package/dist/server/collections/roles.d.ts +2 -0
  101. package/dist/server/collections/roles.js +39 -0
  102. package/dist/server/collections/users.d.ts +55 -0
  103. package/dist/server/collections/users.js +87 -0
  104. package/dist/server/index.d.ts +1 -0
  105. package/dist/server/index.js +33 -0
  106. package/dist/server/middlewares/destroy-department-check.d.ts +2 -0
  107. package/dist/server/middlewares/destroy-department-check.js +53 -0
  108. package/dist/server/middlewares/index.d.ts +6 -0
  109. package/dist/server/middlewares/index.js +31 -0
  110. package/dist/server/middlewares/list-users-include-child-department.d.ts +2 -0
  111. package/dist/server/middlewares/list-users-include-child-department.js +77 -0
  112. package/dist/server/middlewares/reset-user-departments-cache.d.ts +2 -0
  113. package/dist/server/middlewares/reset-user-departments-cache.js +39 -0
  114. package/dist/server/middlewares/set-department-owners.d.ts +2 -0
  115. package/dist/server/middlewares/set-department-owners.js +74 -0
  116. package/dist/server/middlewares/set-departments-roles.d.ts +2 -0
  117. package/dist/server/middlewares/set-departments-roles.js +64 -0
  118. package/dist/server/middlewares/set-main-department.d.ts +2 -0
  119. package/dist/server/middlewares/set-main-department.js +105 -0
  120. package/dist/server/middlewares/update-department-isleaf.d.ts +2 -0
  121. package/dist/server/middlewares/update-department-isleaf.js +84 -0
  122. package/dist/server/models/department.d.ts +4 -0
  123. package/dist/server/models/department.js +38 -0
  124. package/dist/server/plugin.d.ts +8 -0
  125. package/dist/server/plugin.js +134 -0
  126. package/package.json +27 -0
  127. package/server.d.ts +2 -0
  128. package/server.js +1 -0
@@ -0,0 +1,51 @@
1
+ {
2
+ "Add custom component": "Add custom component",
3
+ "Add department": "Add department",
4
+ "Add departments": "Add departments",
5
+ "Add members": "Add members",
6
+ "All members": "All members",
7
+ "All users": "All users",
8
+ "Are you sure you want to delete it?": "Are you sure you want to delete it?",
9
+ "Are you sure you want to remove it?": "Are you sure you want to remove it?",
10
+ "Are you sure you want to remove these departments?": "Are you sure you want to remove these departments?",
11
+ "Are you sure you want to remove these members?": "Are you sure you want to remove these members?",
12
+ "Configure": "Configure",
13
+ "Delete department": "Delete department",
14
+ "Delete record action": "Delete record action",
15
+ "Department": "Department",
16
+ "Department name": "Department name",
17
+ "Departments": "Departments",
18
+ "Departments management": "Departments management",
19
+ "Edit department": "Edit department",
20
+ "Exclude members of sub-departments": "Exclude members of sub-departments",
21
+ "Main": "Main",
22
+ "Main department": "Main department",
23
+ "New department": "New department",
24
+ "New sub department": "New sub department",
25
+ "Only display direct members of the department": "Only display direct members of the department",
26
+ "Owner": "Owner",
27
+ "Owners": "Owners",
28
+ "Page style": "Page Style",
29
+ "Please select": "Please select",
30
+ "Please select departments": "Please select departments",
31
+ "Please select members": "Please select members",
32
+ "Remove department": "Remove department",
33
+ "Remove departments": "Remove departments",
34
+ "Remove member": "Remove member",
35
+ "Remove members": "Remove members",
36
+ "Roles management": "Roles management",
37
+ "Search for departments, users": "Search for departments, users",
38
+ "Search results": "Search results",
39
+ "Select Departments": "Select Departments",
40
+ "Select actions": "Select actions",
41
+ "Set as main department": "Set as main department",
42
+ "Show all members": "Show All members",
43
+ "Superior department": "Superior department",
44
+ "The department has members, please remove them first": "The department has members, please remove them first",
45
+ "The department has sub-departments, please delete them first": "The department has sub-departments, please delete them first",
46
+ "This field is currently not supported for use in form blocks.": "This field is currently not supported for use in form blocks.",
47
+ "component": "component",
48
+ "default": "default",
49
+ "error": "error",
50
+ "loading...": "loading..."
51
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "Add custom component": "添加自定义组件",
3
+ "Add department": "添加部门",
4
+ "Add departments": "添加部门",
5
+ "Add members": "添加成员",
6
+ "All members": "展示全部成员",
7
+ "All users": "所有用户",
8
+ "Are you sure you want to delete it?": "你确定要删除吗?",
9
+ "Are you sure you want to remove it?": "你确定要移除吗?",
10
+ "Are you sure you want to remove these departments?": "你确定要移除这些部门吗?",
11
+ "Are you sure you want to remove these members?": "你确定要移除这些成员吗?",
12
+ "Configure": "配置",
13
+ "Delete department": "删除部门",
14
+ "Delete record action": "删除记录操作",
15
+ "Department": "部门",
16
+ "Department name": "部门名称",
17
+ "Departments": "部门",
18
+ "Departments management": "部门管理",
19
+ "Edit department": "编辑部门",
20
+ "Exclude members of sub-departments": "仅展示部门的直属成员",
21
+ "Main": "主属部门",
22
+ "Main department": "主属部门",
23
+ "New department": "新建部门",
24
+ "New sub department": "新建子部门",
25
+ "Only display direct members of the department": "仅展示部门的直属成员",
26
+ "Owner": "负责人",
27
+ "Owners": "负责人",
28
+ "Page style": "页面版本",
29
+ "Please select": "请选择",
30
+ "Please select departments": "请选择部门",
31
+ "Please select members": "请选择成员",
32
+ "Remove department": "移除部门",
33
+ "Remove departments": "移除部门",
34
+ "Remove member": "移除成员",
35
+ "Remove members": "移除成员",
36
+ "Roles management": "角色管理",
37
+ "Search for departments, users": "搜索部门、用户",
38
+ "Search results": "搜索结果",
39
+ "Select Departments": "选择部门",
40
+ "Select actions": "选择操作",
41
+ "Set as main department": "设置为主属部门",
42
+ "Show all members": "展示全部成员",
43
+ "Superior department": "上级部门",
44
+ "The department has members, please remove them first": "部门下有成员,请先移除",
45
+ "The department has sub-departments, please delete them first": "部门下有子部门,请先删除子部门",
46
+ "This field is currently not supported for use in form blocks.": "该字段目前不支持在表单卡片中使用。",
47
+ "component": "组件",
48
+ "default": "默认",
49
+ "error": "出错了",
50
+ "loading...": "加载中..."
51
+ }
@@ -0,0 +1,5 @@
1
+ import type { Context, Next } from '@tachybase/actions';
2
+ export declare const getAppendsOwners: (ctx: Context, next: Next) => Promise<void>;
3
+ export declare const aggregateSearch: (ctx: Context, next: Next) => Promise<void>;
4
+ export declare const setOwner: (ctx: Context, next: Next) => Promise<void>;
5
+ export declare const removeOwner: (ctx: Context, next: Next) => Promise<void>;
@@ -0,0 +1,105 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var departments_exports = {};
19
+ __export(departments_exports, {
20
+ aggregateSearch: () => aggregateSearch,
21
+ getAppendsOwners: () => getAppendsOwners,
22
+ removeOwner: () => removeOwner,
23
+ setOwner: () => setOwner
24
+ });
25
+ module.exports = __toCommonJS(departments_exports);
26
+ const getAppendsOwners = async (ctx, next) => {
27
+ const { filterByTk, appends } = ctx.action.params;
28
+ const repo = ctx.db.getRepository("departments");
29
+ const department = await repo.findOne({
30
+ filterByTk,
31
+ appends
32
+ });
33
+ const owners = await department.getOwners();
34
+ department.setDataValue("owners", owners);
35
+ ctx.body = department;
36
+ await next();
37
+ };
38
+ const aggregateSearch = async (ctx, next) => {
39
+ const { keyword, type, last = 0, limit = 10 } = ctx.action.params.values || {};
40
+ let users = [];
41
+ let departments = [];
42
+ if (!type || type === "user") {
43
+ const repo = ctx.db.getRepository("users");
44
+ users = await repo.find({
45
+ filter: {
46
+ id: { $gt: last },
47
+ $or: [
48
+ { username: { $includes: keyword } },
49
+ { nickname: { $includes: keyword } },
50
+ { phone: { $includes: keyword } },
51
+ { email: { $includes: keyword } }
52
+ ]
53
+ },
54
+ limit
55
+ });
56
+ }
57
+ if (!type || type === "department") {
58
+ const repo = ctx.db.getRepository("departments");
59
+ departments = await repo.find({
60
+ filter: {
61
+ id: { $gt: last },
62
+ title: { $includes: keyword }
63
+ },
64
+ appends: ["parent(recursively=true)"],
65
+ limit
66
+ });
67
+ }
68
+ ctx.body = { users, departments };
69
+ await next();
70
+ };
71
+ const setOwner = async (ctx, next) => {
72
+ const { userId, departmentId } = ctx.action.params.values || {};
73
+ const throughRepo = ctx.db.getRepository("departmentsUsers");
74
+ await throughRepo.update({
75
+ filter: {
76
+ userId,
77
+ departmentId
78
+ },
79
+ values: {
80
+ isOwner: true
81
+ }
82
+ });
83
+ await next();
84
+ };
85
+ const removeOwner = async (ctx, next) => {
86
+ const { userId, departmentId } = ctx.action.params.values || {};
87
+ const throughRepo = ctx.db.getRepository("departmentsUsers");
88
+ await throughRepo.update({
89
+ filter: {
90
+ userId,
91
+ departmentId
92
+ },
93
+ values: {
94
+ isOwner: false
95
+ }
96
+ });
97
+ await next();
98
+ };
99
+ // Annotate the CommonJS export names for ESM import in node:
100
+ 0 && (module.exports = {
101
+ aggregateSearch,
102
+ getAppendsOwners,
103
+ removeOwner,
104
+ setOwner
105
+ });
@@ -0,0 +1,2 @@
1
+ export * from './departments';
2
+ export * from './users';
@@ -0,0 +1,23 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __copyProps = (to, from, except, desc) => {
6
+ if (from && typeof from === "object" || typeof from === "function") {
7
+ for (let key of __getOwnPropNames(from))
8
+ if (!__hasOwnProp.call(to, key) && key !== except)
9
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ }
11
+ return to;
12
+ };
13
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
15
+ var actions_exports = {};
16
+ module.exports = __toCommonJS(actions_exports);
17
+ __reExport(actions_exports, require("./departments"), module.exports);
18
+ __reExport(actions_exports, require("./users"), module.exports);
19
+ // Annotate the CommonJS export names for ESM import in node:
20
+ 0 && (module.exports = {
21
+ ...require("./departments"),
22
+ ...require("./users")
23
+ });
@@ -0,0 +1,4 @@
1
+ import { type Context, type Next } from '@tachybase/actions';
2
+ export declare const listExcludeDept: (ctx: Context, next: Next) => Promise<void>;
3
+ export declare const setDepartments: (ctx: Context, next: Next) => Promise<void>;
4
+ export declare const setMainDepartment: (ctx: Context, next: Next) => Promise<void>;
@@ -0,0 +1,142 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var users_exports = {};
19
+ __export(users_exports, {
20
+ listExcludeDept: () => listExcludeDept,
21
+ setDepartments: () => setDepartments,
22
+ setMainDepartment: () => setMainDepartment
23
+ });
24
+ module.exports = __toCommonJS(users_exports);
25
+ var import_actions = require("@tachybase/actions");
26
+ const listExcludeDept = async (ctx, next) => {
27
+ const { departmentId, page = import_actions.DEFAULT_PAGE, pageSize = import_actions.DEFAULT_PER_PAGE } = ctx.action.params;
28
+ const repo = ctx.db.getRepository("users");
29
+ const members = await repo.find({
30
+ fields: ["id"],
31
+ filter: {
32
+ "departments.id": departmentId
33
+ }
34
+ });
35
+ const memberIds = members.map((member) => member.id);
36
+ if (memberIds.length) {
37
+ ctx.action.mergeParams({
38
+ filter: {
39
+ id: {
40
+ $notIn: memberIds
41
+ }
42
+ }
43
+ });
44
+ }
45
+ const { filter } = ctx.action.params;
46
+ const [rows, count] = await repo.findAndCount({
47
+ context: ctx,
48
+ offset: (page - 1) * pageSize,
49
+ limit: pageSize,
50
+ filter
51
+ });
52
+ ctx.body = {
53
+ count,
54
+ rows,
55
+ page: Number(page),
56
+ pageSize: Number(pageSize),
57
+ totalPage: Math.ceil(count / pageSize)
58
+ };
59
+ await next();
60
+ };
61
+ const setDepartments = async (ctx, next) => {
62
+ const { values = {} } = ctx.action.params;
63
+ const { userId, departments = [] } = values;
64
+ const repo = ctx.db.getRepository("users");
65
+ const throughRepo = ctx.db.getRepository("departmentsUsers");
66
+ const user = await repo.findOne({ filterByTk: userId });
67
+ if (!user) {
68
+ ctx.throw(400, ctx.t("User does not exist"));
69
+ }
70
+ const departmentIds = departments.map((department) => department.id);
71
+ const main = departments.find((department) => department.isMain);
72
+ const owners = departments.filter((department) => department.isOwner);
73
+ await ctx.db.sequelize.transaction(async (t) => {
74
+ await user.setDepartments(departmentIds, {
75
+ through: {
76
+ isMain: false,
77
+ isOwner: false
78
+ },
79
+ transaction: t
80
+ });
81
+ if (main) {
82
+ await throughRepo.update({
83
+ filter: {
84
+ userId,
85
+ departmentId: main.id
86
+ },
87
+ values: {
88
+ isMain: true
89
+ },
90
+ transaction: t
91
+ });
92
+ }
93
+ if (owners.length) {
94
+ await throughRepo.update({
95
+ filter: {
96
+ userId,
97
+ departmentId: {
98
+ $in: owners.map((owner) => owner.id)
99
+ }
100
+ },
101
+ values: {
102
+ isOwner: true
103
+ },
104
+ transaction: t
105
+ });
106
+ }
107
+ });
108
+ await next();
109
+ };
110
+ const setMainDepartment = async (ctx, next) => {
111
+ const { userId, departmentId } = ctx.action.params.values || {};
112
+ const throughRepo = ctx.db.getRepository("departmentsUsers");
113
+ await ctx.db.sequelize.transaction(async (t) => {
114
+ await throughRepo.update({
115
+ filter: {
116
+ userId,
117
+ isMain: true
118
+ },
119
+ values: {
120
+ isMain: false
121
+ },
122
+ transaction: t
123
+ });
124
+ await throughRepo.update({
125
+ filter: {
126
+ userId,
127
+ departmentId
128
+ },
129
+ values: {
130
+ isMain: true
131
+ },
132
+ transaction: t
133
+ });
134
+ });
135
+ await next();
136
+ };
137
+ // Annotate the CommonJS export names for ESM import in node:
138
+ 0 && (module.exports = {
139
+ listExcludeDept,
140
+ setDepartments,
141
+ setMainDepartment
142
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tachybase/database").CollectionOptions;
2
+ export default _default;
@@ -0,0 +1,27 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var departmentRoles_exports = {};
19
+ __export(departmentRoles_exports, {
20
+ default: () => departmentRoles_default
21
+ });
22
+ module.exports = __toCommonJS(departmentRoles_exports);
23
+ var import_database = require("@tachybase/database");
24
+ var departmentRoles_default = (0, import_database.defineCollection)({
25
+ name: "departmentsRoles",
26
+ dumpRules: "required"
27
+ });
@@ -0,0 +1,29 @@
1
+ export declare const ownersField: {
2
+ interface: string;
3
+ type: string;
4
+ name: string;
5
+ collectionName: string;
6
+ target: string;
7
+ through: string;
8
+ foreignKey: string;
9
+ otherKey: string;
10
+ targetKey: string;
11
+ sourceKey: string;
12
+ throughScope: {
13
+ isOwner: boolean;
14
+ };
15
+ uiSchema: {
16
+ type: string;
17
+ title: string;
18
+ 'x-component': string;
19
+ 'x-component-props': {
20
+ multiple: boolean;
21
+ fieldNames: {
22
+ label: string;
23
+ value: string;
24
+ };
25
+ };
26
+ };
27
+ };
28
+ declare const _default: import("@tachybase/database").CollectionOptions;
29
+ export default _default;
@@ -0,0 +1,162 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var departments_exports = {};
19
+ __export(departments_exports, {
20
+ default: () => departments_default,
21
+ ownersField: () => ownersField
22
+ });
23
+ module.exports = __toCommonJS(departments_exports);
24
+ var import_database = require("@tachybase/database");
25
+ const ownersField = {
26
+ interface: "m2m",
27
+ type: "belongsToMany",
28
+ name: "owners",
29
+ collectionName: "departments",
30
+ target: "users",
31
+ through: "departmentsUsers",
32
+ foreignKey: "departmentId",
33
+ otherKey: "userId",
34
+ targetKey: "id",
35
+ sourceKey: "id",
36
+ throughScope: {
37
+ isOwner: true
38
+ },
39
+ uiSchema: {
40
+ type: "m2m",
41
+ title: '{{t("Owners")}}',
42
+ "x-component": "DepartmentOwnersField",
43
+ "x-component-props": {
44
+ multiple: true,
45
+ fieldNames: {
46
+ label: "nickname",
47
+ value: "id"
48
+ }
49
+ }
50
+ }
51
+ };
52
+ var departments_default = (0, import_database.defineCollection)({
53
+ name: "departments",
54
+ title: '{{t("Departments")}}',
55
+ dumpRules: "required",
56
+ tree: "adjacency-list",
57
+ template: "tree",
58
+ shared: true,
59
+ sortable: true,
60
+ model: "DepartmentModel",
61
+ createdBy: true,
62
+ updatedBy: true,
63
+ logging: true,
64
+ fields: [
65
+ {
66
+ type: "bigInt",
67
+ name: "id",
68
+ primaryKey: true,
69
+ autoIncrement: true,
70
+ interface: "id",
71
+ uiSchema: {
72
+ type: "number",
73
+ title: '{{t("ID")}}',
74
+ "x-component": "InputNumber",
75
+ "x-read-pretty": true
76
+ }
77
+ },
78
+ {
79
+ type: "string",
80
+ name: "title",
81
+ interface: "input",
82
+ uiSchema: {
83
+ type: "string",
84
+ title: '{{t("Department name")}}',
85
+ "x-component": "Input"
86
+ }
87
+ },
88
+ {
89
+ type: "boolean",
90
+ name: "isLeaf"
91
+ },
92
+ {
93
+ type: "belongsTo",
94
+ name: "parent",
95
+ target: "departments",
96
+ foreignKey: "parentId",
97
+ treeParent: true,
98
+ onDelete: "CASCADE",
99
+ interface: "m2o",
100
+ uiSchema: {
101
+ type: "m2o",
102
+ title: '{{t("Superior department")}}',
103
+ "x-component": "AssociationField",
104
+ "x-component-props": {
105
+ multiple: false,
106
+ fieldNames: {
107
+ label: "title",
108
+ value: "id"
109
+ }
110
+ }
111
+ }
112
+ },
113
+ {
114
+ type: "hasMany",
115
+ name: "children",
116
+ target: "departments",
117
+ foreignKey: "parentId",
118
+ treeChildren: true,
119
+ onDelete: "CASCADE"
120
+ },
121
+ {
122
+ type: "belongsToMany",
123
+ name: "members",
124
+ target: "users",
125
+ through: "departmentsUsers",
126
+ foreignKey: "departmentId",
127
+ otherKey: "userId",
128
+ targetKey: "id",
129
+ sourceKey: "id",
130
+ onDelete: "CASCADE"
131
+ },
132
+ {
133
+ interface: "m2m",
134
+ type: "belongsToMany",
135
+ name: "roles",
136
+ target: "roles",
137
+ through: "departmentsRoles",
138
+ foreignKey: "departmentId",
139
+ otherKey: "roleName",
140
+ targetKey: "name",
141
+ sourceKey: "id",
142
+ onDelete: "CASCADE",
143
+ uiSchema: {
144
+ type: "m2m",
145
+ title: '{{t("Roles")}}',
146
+ "x-component": "AssociationField",
147
+ "x-component-props": {
148
+ multiple: true,
149
+ fieldNames: {
150
+ label: "title",
151
+ value: "name"
152
+ }
153
+ }
154
+ }
155
+ },
156
+ ownersField
157
+ ]
158
+ });
159
+ // Annotate the CommonJS export names for ESM import in node:
160
+ 0 && (module.exports = {
161
+ ownersField
162
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tachybase/database").CollectionOptions;
2
+ export default _default;
@@ -0,0 +1,43 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+ var departmentsUsers_exports = {};
19
+ __export(departmentsUsers_exports, {
20
+ default: () => departmentsUsers_default
21
+ });
22
+ module.exports = __toCommonJS(departmentsUsers_exports);
23
+ var import_database = require("@tachybase/database");
24
+ var departmentsUsers_default = (0, import_database.defineCollection)({
25
+ name: "departmentsUsers",
26
+ dumpRules: "required",
27
+ fields: [
28
+ {
29
+ type: "boolean",
30
+ name: "isOwner",
31
+ // Weather the user is the owner of the department
32
+ allowNull: false,
33
+ defaultValue: false
34
+ },
35
+ {
36
+ type: "boolean",
37
+ name: "isMain",
38
+ // Weather this is the main department of the user
39
+ allowNull: false,
40
+ defaultValue: false
41
+ }
42
+ ]
43
+ });
@@ -0,0 +1,2 @@
1
+ declare const _default: import("@tachybase/database").CollectionDef;
2
+ export default _default;