@opengis/admin 0.1.97 → 0.1.98
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.
- package/README.md +29 -29
- package/config.js +4 -4
- package/dist/{IconChevronDown-C6C2qgO7.js → IconChevronDown-irxwDmQp.js} +1 -1
- package/dist/{add-page-Bz9AriTG.js → add-page-UtwEANeW.js} +18 -14
- package/dist/{admin-interface-QcGlLoY3.js → admin-interface-PJfd31TQ.js} +6 -5
- package/dist/{admin-view-AjnQFK-4.js → admin-view-BuVQ8ziq.js} +153 -148
- package/dist/admin.js +1 -1
- package/dist/admin.umd.cjs +56 -56
- package/dist/assets/logo.svg +41 -41
- package/dist/{card-view-BFYrLzFg.js → card-view-BpcpqR_U.js} +1 -1
- package/dist/{edit-page-BlHpTvcw.js → edit-page-Bd6VW9hb.js} +1 -1
- package/dist/{import-file-2vpw3792.js → import-file-eH-_Imyb.js} +7157 -7139
- package/dist/style.css +1 -1
- package/module/settings/card/admin.roles.table/access.hbs +24 -27
- package/module/settings/card/admin.roles.table/general_info.hbs +16 -16
- package/module/settings/card/admin.roles.table/index.yml +18 -14
- package/module/settings/card/admin.roles.table/users.hbs +27 -27
- package/module/settings/card/admin.routes.table/general_info.hbs +40 -40
- package/module/settings/card/admin.routes.table/index.yml +8 -8
- package/module/settings/card/admin.routes.table/users.hbs +33 -33
- package/module/settings/card/admin.users.table/general_info.hbs +25 -25
- package/module/settings/card/admin.users.table/index.yml +12 -12
- package/module/settings/card/admin.users.table/logs.hbs +30 -30
- package/module/settings/card/admin.users.table/user_roles.hbs +24 -24
- package/module/settings/cls/core.actions.json +17 -17
- package/module/settings/cls/core.scope.json +13 -13
- package/module/settings/cls/properties.site_status.json +13 -13
- package/module/settings/cls/properties.widget_status.json +13 -13
- package/module/settings/cls/users.user_type.json +13 -13
- package/module/settings/form/admin.access.form.json +36 -36
- package/module/settings/form/admin.custom_column.form.json +71 -71
- package/module/settings/form/admin.properties.form.json +15 -15
- package/module/settings/form/admin.roles.form.json +21 -19
- package/module/settings/form/admin.routes.form.json +25 -25
- package/module/settings/form/admin.user_properties.form.json +15 -15
- package/module/settings/form/admin.user_roles.form.json +21 -21
- package/module/settings/form/admin.users.form.json +153 -153
- package/module/settings/form/user.user_roles.form.json +13 -13
- package/module/settings/interface/admin.properties.json +4 -4
- package/module/settings/interface/admin.roles.json +4 -4
- package/module/settings/interface/admin.routes.json +4 -4
- package/module/settings/interface/admin.users.json +4 -4
- package/module/settings/menu.json +60 -50
- package/module/settings/select/core.roles.json +2 -2
- package/module/settings/select/core.routes.sql +1 -1
- package/module/settings/select/core.user_mentioned.sql +1 -1
- package/module/settings/select/core.user_uid.sql +1 -1
- package/module/settings/table/admin.access.table.json +83 -83
- package/module/settings/table/admin.custom_column.table.json +99 -99
- package/module/settings/table/admin.properties.table.json +39 -39
- package/module/settings/table/admin.roles.table.json +64 -64
- package/module/settings/table/admin.routes.table.json +68 -68
- package/module/settings/table/admin.user_properties.table.json +34 -34
- package/module/settings/table/admin.user_roles.table.json +72 -72
- package/module/settings/table/admin.users.table.json +121 -121
- package/package.json +81 -81
- package/plugin.js +29 -29
- package/server/helpers/core/badge.js +16 -0
- package/server/helpers/core/buttonHelper.js +14 -0
- package/server/helpers/core/select.js +50 -0
- package/server/helpers/{controllers → core}/token.js +16 -16
- package/server/helpers/index.js +28 -0
- package/server/helpers/list/buttonHelper.js +10 -10
- package/server/helpers/list/descriptionList.js +43 -34
- package/server/helpers/list/tableList.js +78 -65
- package/server/helpers/list/utils/button.js +5 -5
- package/server/helpers/temp/contentList.js +58 -0
- package/server/helpers/temp/ifCond.js +101 -0
- package/server/helpers/utils/button.js +6 -0
- package/server/helpers/utils/buttonDel.js +6 -0
- package/server/plugins/access/funcs/getAdminAccess.js +12 -14
- package/server/plugins/access/index.mjs +6 -6
- package/server/plugins/adminHook.js +81 -81
- package/server/plugins/cron.js +10 -10
- package/server/plugins/docs.js +28 -28
- package/server/plugins/hook.js +226 -226
- package/server/plugins/vite.js +71 -71
- package/server/routes/access/controllers/access.group.js +29 -29
- package/server/routes/access/controllers/access.group.post.js +48 -43
- package/server/routes/access/index.mjs +8 -63
- package/server/routes/access/schema.mjs +58 -0
- package/server/routes/calendar/controllers/calendar.data.js +87 -87
- package/server/routes/calendar/index.mjs +7 -7
- package/server/routes/calendar/schema.js +21 -21
- package/server/routes/data/controllers/cardData.js +89 -89
- package/server/routes/data/controllers/cardTabData.js +49 -49
- package/server/routes/data/controllers/funcs/getFilterSQL/index.js +92 -92
- package/server/routes/data/controllers/funcs/getFilterSQL/util/formatValue.js +170 -170
- package/server/routes/data/controllers/funcs/getFilterSQL/util/getCustomQuery.js +13 -13
- package/server/routes/data/controllers/funcs/getFilterSQL/util/getFilterQuery.js +64 -64
- package/server/routes/data/controllers/funcs/getFilterSQL/util/getOptimizedQuery.js +12 -12
- package/server/routes/data/controllers/funcs/getFilterSQL/util/getTableSql.js +34 -34
- package/server/routes/data/controllers/tableData.js +20 -20
- package/server/routes/data/controllers/tableDataId.js +27 -27
- package/server/routes/data/controllers/tableFilter.js +67 -67
- package/server/routes/data/controllers/tokenInfo.js +9 -9
- package/server/routes/data/controllers/utils/assignTokens.js +30 -30
- package/server/routes/data/controllers/utils/conditions.js +20 -20
- package/server/routes/data/controllers/utils/getColumns.js +8 -8
- package/server/routes/data/index.mjs +17 -17
- package/server/routes/data/schema.js +54 -54
- package/server/routes/menu/controllers/getMenu.js +67 -67
- package/server/routes/menu/index.mjs +5 -5
- package/server/routes/notifications/controllers/readNotifications.js +27 -27
- package/server/routes/notifications/controllers/testEmail.js +35 -35
- package/server/routes/notifications/controllers/userNotifications.js +53 -53
- package/server/routes/notifications/funcs/addNotification.js +21 -21
- package/server/routes/notifications/funcs/sendNotification.js +92 -92
- package/server/routes/notifications/hook/onWidgetSet.js +57 -57
- package/server/routes/notifications/index.mjs +27 -27
- package/server/routes/notifications/schema.js +16 -16
- package/server/routes/properties/controllers/admin.properties.get.js +29 -29
- package/server/routes/properties/controllers/user.properties.get.js +30 -30
- package/server/routes/properties/controllers/user.properties.post.js +30 -30
- package/server/routes/properties/funcs/getSettings.js +56 -56
- package/server/routes/properties/funcs/setSettings.js +44 -44
- package/server/routes/properties/funcs/utils/dataInsert.js +26 -26
- package/server/routes/properties/index.mjs +14 -14
- package/server/routes/properties/schema.js +10 -10
- package/server/routes/root.mjs +3 -3
- package/server/routes/templates/controllers/getTemplate.js +26 -26
- package/server/routes/templates/index.mjs +16 -16
- package/server/routes/templates/schema.js +8 -8
- package/server/routes/user/controllers/user.cls.id.js +14 -14
- package/server/routes/user/controllers/user.cls.js +71 -71
- package/server/routes/user/controllers/user.cls.post.js +52 -52
- package/server/routes/user/controllers/user.info.js +17 -17
- package/server/routes/user/schema.js +14 -14
- package/server/routes/widget/controllers/utils/historyFormat.js +75 -75
- package/server/routes/widget/controllers/utils/obj2db.js +13 -13
- package/server/routes/widget/controllers/widget.del.js +41 -41
- package/server/routes/widget/controllers/widget.get.js +96 -96
- package/server/routes/widget/controllers/widget.set.js +76 -76
- package/server/routes/widget/index.mjs +11 -11
- package/server/routes/widget/schema.js +12 -12
- package/server/templates/cls/itree.recrzone_category.json +73 -73
- package/server/templates/cls/test.json +9 -9
- package/server/templates/form/admin.user_cls.data.form.json +49 -49
- package/server/templates/form/admin.user_group_rel.form.json +21 -21
- package/server/templates/form/cp_building.form.json +32 -32
- package/server/templates/form/form-user-pass.json +10 -10
- package/server/templates/form/form-user_group.json +39 -39
- package/server/templates/form/form-users.json +156 -156
- package/server/templates/form/user_group_access.form.json +22 -22
- package/server/templates/select/account_id.json +2 -2
- package/server/templates/table/gis.dataset.table.json +43 -43
- package/server/templates/table/management.user_group.table.json +112 -112
- package/server/templates/table/management.users.table.json +126 -126
- package/utils.js +29 -29
- package/server/helpers/controllers/badge.js +0 -12
- package/server/helpers/controllers/hb.js +0 -3
- package/server/helpers/controllers/map.js +0 -3
- package/server/helpers/controllers/mls.js +0 -3
- package/server/helpers/controllers/vue.js +0 -3
- package/server/helpers/index.mjs +0 -29
package/package.json
CHANGED
|
@@ -1,82 +1,82 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@opengis/admin",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "This project Softpro Admin",
|
|
5
|
-
"main": "dist/admin.js",
|
|
6
|
-
"type": "module",
|
|
7
|
-
"directories": {
|
|
8
|
-
"test": "test"
|
|
9
|
-
},
|
|
10
|
-
"files": [
|
|
11
|
-
"dist/*",
|
|
12
|
-
"module/*",
|
|
13
|
-
"server/*",
|
|
14
|
-
"plugin.js",
|
|
15
|
-
"utils.js",
|
|
16
|
-
"config.js"
|
|
17
|
-
],
|
|
18
|
-
"scripts": {
|
|
19
|
-
"test": "node --test test/**/*.test.js",
|
|
20
|
-
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
|
|
21
|
-
"build": "vite build",
|
|
22
|
-
"build-app": "cross-env APP=true vite build",
|
|
23
|
-
"admin": "cross-env NODE_ENV=admin npm run start",
|
|
24
|
-
"prod": "cross-env NODE_ENV=production npm run start",
|
|
25
|
-
"start": "node --watch-path=server server vite ",
|
|
26
|
-
"docs:dev": "vitepress dev docs",
|
|
27
|
-
"docs:build": "vitepress build docs",
|
|
28
|
-
"docs:preview": "vitepress preview docs"
|
|
29
|
-
},
|
|
30
|
-
"keywords": [],
|
|
31
|
-
"author": "Softpro",
|
|
32
|
-
"license": "ISC",
|
|
33
|
-
"dependencies": {
|
|
34
|
-
"@fancyapps/ui": "^5.0.36",
|
|
35
|
-
"@opengis/admin": "^0.1.69",
|
|
36
|
-
"@opengis/fastify-auth": "^1.0.47",
|
|
37
|
-
"@opengis/fastify-file": "^1.0.27",
|
|
38
|
-
"@opengis/fastify-table": "^1.1.71",
|
|
39
|
-
"@opengis/v3-core": "^0.2.41",
|
|
40
|
-
"@opengis/v3-filter": "^0.0.
|
|
41
|
-
"@tiptap/core": "^2.8.0",
|
|
42
|
-
"@tiptap/extension-color": "^2.8.0",
|
|
43
|
-
"@tiptap/extension-mention": "^2.8.0",
|
|
44
|
-
"@tiptap/extension-placeholder": "^2.8.0",
|
|
45
|
-
"@tiptap/extension-text": "^2.8.0",
|
|
46
|
-
"@tiptap/extension-text-style": "^2.8.0",
|
|
47
|
-
"@tiptap/extension-underline": "^2.8.0",
|
|
48
|
-
"@tiptap/pm": "^2.8.0",
|
|
49
|
-
"@tiptap/starter-kit": "^2.8.0",
|
|
50
|
-
"@tiptap/suggestion": "^2.8.0",
|
|
51
|
-
"@tiptap/vue-3": "^2.8.0",
|
|
52
|
-
"@turf/turf": "^7.1.0",
|
|
53
|
-
"@vitejs/plugin-vue": "^5.0.4",
|
|
54
|
-
"close-with-grace": "^1.3.0",
|
|
55
|
-
"cross-env": "^7.0.3",
|
|
56
|
-
"fastify": "^4.26.1",
|
|
57
|
-
"fastify-plugin": "^4.0.0",
|
|
58
|
-
"maplibre-gl": "^4.7.0",
|
|
59
|
-
"moment": "^2.30.1",
|
|
60
|
-
"vite": "^5.1.4",
|
|
61
|
-
"vue": "^3.4.21",
|
|
62
|
-
"vue-router": "^4.3.0"
|
|
63
|
-
},
|
|
64
|
-
"devDependencies": {
|
|
65
|
-
"@panzoom/panzoom": "^4.5.1",
|
|
66
|
-
"@vue/eslint-config-typescript": "^12.0.0",
|
|
67
|
-
"autoprefixer": "^10.4.20",
|
|
68
|
-
"eslint": "^8.49.0",
|
|
69
|
-
"eslint-config-airbnb": "^19.0.4",
|
|
70
|
-
"eslint-plugin-import": "^2.25.3",
|
|
71
|
-
"eslint-plugin-vue": "^9.17.0",
|
|
72
|
-
"markdown-it-abbr": "^2.0.0",
|
|
73
|
-
"mermaid": "^10.9.0",
|
|
74
|
-
"postcss": "^8.4.47",
|
|
75
|
-
"sass-embedded": "^1.79.1",
|
|
76
|
-
"tailwindcss": "^3.4.13",
|
|
77
|
-
"vitepress": "^1.1.3",
|
|
78
|
-
"vitepress-plugin-mermaid": "^2.0.16",
|
|
79
|
-
"vitepress-plugin-tabs": "^0.5.0",
|
|
80
|
-
"vitepress-sidebar": "^1.22.0"
|
|
81
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@opengis/admin",
|
|
3
|
+
"version": "0.1.98",
|
|
4
|
+
"description": "This project Softpro Admin",
|
|
5
|
+
"main": "dist/admin.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"directories": {
|
|
8
|
+
"test": "test"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/*",
|
|
12
|
+
"module/*",
|
|
13
|
+
"server/*",
|
|
14
|
+
"plugin.js",
|
|
15
|
+
"utils.js",
|
|
16
|
+
"config.js"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"test": "node --test test/**/*.test.js",
|
|
20
|
+
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .gitignore",
|
|
21
|
+
"build": "vite build",
|
|
22
|
+
"build-app": "cross-env APP=true vite build",
|
|
23
|
+
"admin": "cross-env NODE_ENV=admin npm run start",
|
|
24
|
+
"prod": "cross-env NODE_ENV=production npm run start",
|
|
25
|
+
"start": "node --watch-path=server server vite ",
|
|
26
|
+
"docs:dev": "vitepress dev docs",
|
|
27
|
+
"docs:build": "vitepress build docs",
|
|
28
|
+
"docs:preview": "vitepress preview docs"
|
|
29
|
+
},
|
|
30
|
+
"keywords": [],
|
|
31
|
+
"author": "Softpro",
|
|
32
|
+
"license": "ISC",
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@fancyapps/ui": "^5.0.36",
|
|
35
|
+
"@opengis/admin": "^0.1.69",
|
|
36
|
+
"@opengis/fastify-auth": "^1.0.47",
|
|
37
|
+
"@opengis/fastify-file": "^1.0.27",
|
|
38
|
+
"@opengis/fastify-table": "^1.1.71",
|
|
39
|
+
"@opengis/v3-core": "^0.2.41",
|
|
40
|
+
"@opengis/v3-filter": "^0.0.41",
|
|
41
|
+
"@tiptap/core": "^2.8.0",
|
|
42
|
+
"@tiptap/extension-color": "^2.8.0",
|
|
43
|
+
"@tiptap/extension-mention": "^2.8.0",
|
|
44
|
+
"@tiptap/extension-placeholder": "^2.8.0",
|
|
45
|
+
"@tiptap/extension-text": "^2.8.0",
|
|
46
|
+
"@tiptap/extension-text-style": "^2.8.0",
|
|
47
|
+
"@tiptap/extension-underline": "^2.8.0",
|
|
48
|
+
"@tiptap/pm": "^2.8.0",
|
|
49
|
+
"@tiptap/starter-kit": "^2.8.0",
|
|
50
|
+
"@tiptap/suggestion": "^2.8.0",
|
|
51
|
+
"@tiptap/vue-3": "^2.8.0",
|
|
52
|
+
"@turf/turf": "^7.1.0",
|
|
53
|
+
"@vitejs/plugin-vue": "^5.0.4",
|
|
54
|
+
"close-with-grace": "^1.3.0",
|
|
55
|
+
"cross-env": "^7.0.3",
|
|
56
|
+
"fastify": "^4.26.1",
|
|
57
|
+
"fastify-plugin": "^4.0.0",
|
|
58
|
+
"maplibre-gl": "^4.7.0",
|
|
59
|
+
"moment": "^2.30.1",
|
|
60
|
+
"vite": "^5.1.4",
|
|
61
|
+
"vue": "^3.4.21",
|
|
62
|
+
"vue-router": "^4.3.0"
|
|
63
|
+
},
|
|
64
|
+
"devDependencies": {
|
|
65
|
+
"@panzoom/panzoom": "^4.5.1",
|
|
66
|
+
"@vue/eslint-config-typescript": "^12.0.0",
|
|
67
|
+
"autoprefixer": "^10.4.20",
|
|
68
|
+
"eslint": "^8.49.0",
|
|
69
|
+
"eslint-config-airbnb": "^19.0.4",
|
|
70
|
+
"eslint-plugin-import": "^2.25.3",
|
|
71
|
+
"eslint-plugin-vue": "^9.17.0",
|
|
72
|
+
"markdown-it-abbr": "^2.0.0",
|
|
73
|
+
"mermaid": "^10.9.0",
|
|
74
|
+
"postcss": "^8.4.47",
|
|
75
|
+
"sass-embedded": "^1.79.1",
|
|
76
|
+
"tailwindcss": "^3.4.13",
|
|
77
|
+
"vitepress": "^1.1.3",
|
|
78
|
+
"vitepress-plugin-mermaid": "^2.0.16",
|
|
79
|
+
"vitepress-plugin-tabs": "^0.5.0",
|
|
80
|
+
"vitepress-sidebar": "^1.22.0"
|
|
81
|
+
}
|
|
82
82
|
}
|
package/plugin.js
CHANGED
|
@@ -1,30 +1,30 @@
|
|
|
1
|
-
import fp from 'fastify-plugin';
|
|
2
|
-
|
|
3
|
-
import config from './config.js';
|
|
4
|
-
|
|
5
|
-
config.prefix = config.prefix || '/api';
|
|
6
|
-
|
|
7
|
-
async function plugin(fastify, opts = config) {
|
|
8
|
-
// const prefix = config.prefix || '/api';
|
|
9
|
-
|
|
10
|
-
fastify.register(import('./server/helpers/index.
|
|
11
|
-
// fastify.register(import('@opengis/fastify-auth'), config);
|
|
12
|
-
|
|
13
|
-
fastify.register(import('./server/plugins/cron.js'), opts); // cron / scheduler
|
|
14
|
-
fastify.register(import('./server/plugins/hook.js'), opts); // data / template hooks
|
|
15
|
-
fastify.register(import('./server/plugins/access/index.mjs'), opts); // check access / analogue of policy
|
|
16
|
-
|
|
17
|
-
// API
|
|
18
|
-
fastify.register(import('./server/routes/properties/index.mjs'), opts);
|
|
19
|
-
fastify.register(import('./server/routes/calendar/index.mjs'), opts);
|
|
20
|
-
fastify.register(import('./server/routes/notifications/index.mjs'), opts);
|
|
21
|
-
fastify.register(import('./server/routes/templates/index.mjs'), opts);
|
|
22
|
-
fastify.register(import('./server/routes/menu/index.mjs'), opts);
|
|
23
|
-
fastify.register(import('./server/routes/data/index.mjs'), opts);
|
|
24
|
-
|
|
25
|
-
fastify.register(import('./server/routes/user/index.mjs'), opts);
|
|
26
|
-
fastify.register(import('./server/routes/widget/index.mjs'), opts);
|
|
27
|
-
|
|
28
|
-
fastify.register(import('./server/routes/access/index.mjs'), opts);
|
|
29
|
-
}
|
|
1
|
+
import fp from 'fastify-plugin';
|
|
2
|
+
|
|
3
|
+
import config from './config.js';
|
|
4
|
+
|
|
5
|
+
config.prefix = config.prefix || '/api';
|
|
6
|
+
|
|
7
|
+
async function plugin(fastify, opts = config) {
|
|
8
|
+
// const prefix = config.prefix || '/api';
|
|
9
|
+
|
|
10
|
+
fastify.register(import('./server/helpers/index.js'), opts);
|
|
11
|
+
// fastify.register(import('@opengis/fastify-auth'), config);
|
|
12
|
+
|
|
13
|
+
fastify.register(import('./server/plugins/cron.js'), opts); // cron / scheduler
|
|
14
|
+
fastify.register(import('./server/plugins/hook.js'), opts); // data / template hooks
|
|
15
|
+
fastify.register(import('./server/plugins/access/index.mjs'), opts); // check access / analogue of policy
|
|
16
|
+
|
|
17
|
+
// API
|
|
18
|
+
fastify.register(import('./server/routes/properties/index.mjs'), opts);
|
|
19
|
+
fastify.register(import('./server/routes/calendar/index.mjs'), opts);
|
|
20
|
+
fastify.register(import('./server/routes/notifications/index.mjs'), opts);
|
|
21
|
+
fastify.register(import('./server/routes/templates/index.mjs'), opts);
|
|
22
|
+
fastify.register(import('./server/routes/menu/index.mjs'), opts);
|
|
23
|
+
fastify.register(import('./server/routes/data/index.mjs'), opts);
|
|
24
|
+
|
|
25
|
+
fastify.register(import('./server/routes/user/index.mjs'), opts);
|
|
26
|
+
fastify.register(import('./server/routes/widget/index.mjs'), opts);
|
|
27
|
+
|
|
28
|
+
fastify.register(import('./server/routes/access/index.mjs'), opts);
|
|
29
|
+
}
|
|
30
30
|
export default fp(plugin)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { getSelect } from "@opengis/fastify-table/utils.js";
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
export default async function badge(id, options) {
|
|
6
|
+
if (!id) return '-';
|
|
7
|
+
const data = options.hash?.data;
|
|
8
|
+
if (!data) return id;
|
|
9
|
+
const classifier = await getSelect(data);
|
|
10
|
+
if (!classifier?.arr) return id;
|
|
11
|
+
|
|
12
|
+
const item = classifier?.arr.find(el => el.id == id);
|
|
13
|
+
if (!item) return id;
|
|
14
|
+
return `<span style='color:${item.color || '#14b8a6'};border-color:${item.color || '#14b8a6'};' class="inline-flex items-center gap-x-1.5 py-1.5 px-3 rounded-full text-xs font-medium border border-teal-500 text-teal-500">${item.text}</span>`
|
|
15
|
+
|
|
16
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
|
|
2
|
+
import button from '../utils/button.js';
|
|
3
|
+
import buttonDel from '../utils/buttonDel.js';
|
|
4
|
+
export default function buttonHelper(data, opt) {
|
|
5
|
+
const { hash } = opt;
|
|
6
|
+
|
|
7
|
+
// console.log(params)
|
|
8
|
+
|
|
9
|
+
if (!hash.token) return 'token empty';
|
|
10
|
+
if (hash.del) {
|
|
11
|
+
return buttonDel(hash.token, hash.title)
|
|
12
|
+
}
|
|
13
|
+
return button(hash.token, hash.title);
|
|
14
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getPG, getSelect } from "@opengis/fastify-table/utils.js";
|
|
2
|
+
const pg = getPG();
|
|
3
|
+
|
|
4
|
+
export default async function select(ids, options) {
|
|
5
|
+
if (!ids || (Array.isArray(ids) && ids.length === 0) || ids === '') {
|
|
6
|
+
return '';
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
const data = options.hash?.data;
|
|
10
|
+
if (!data && data !== false && data !== 0) return '';
|
|
11
|
+
try {
|
|
12
|
+
const idsArray = Array.isArray(ids) ? ids : [ids];
|
|
13
|
+
|
|
14
|
+
const classifier = await getSelect(data);
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
if (!classifier) return `Не знайдено класифікатор ${data}`;
|
|
19
|
+
|
|
20
|
+
if (classifier.sql && typeof classifier.sql === 'string') {
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
const metaQuery = `SELECT * FROM (${classifier.sql})q LIMIT 0`;
|
|
25
|
+
const meta = await pg.query(metaQuery);
|
|
26
|
+
const idColumn = meta.fields[0].name;
|
|
27
|
+
const textColumn = meta.fields[1].name;
|
|
28
|
+
|
|
29
|
+
const sql = `SELECT "${idColumn}" AS id, "${textColumn}" AS text FROM (${classifier.sql}) q WHERE "${idColumn}" = ANY($1::text[])`;
|
|
30
|
+
const values = [idsArray.map(id => String(id))];
|
|
31
|
+
|
|
32
|
+
const { rows } = await pg.query(sql, values);
|
|
33
|
+
classifier.arr = rows;
|
|
34
|
+
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (!Array.isArray(classifier?.arr) || !classifier.arr.length || !classifier.arr.every(item => typeof item === 'object' && item !== null)) {
|
|
38
|
+
return ids;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const results = idsArray.map(id => {
|
|
42
|
+
const result = classifier.arr.find(el => String(el.id) == String(id));
|
|
43
|
+
return result ? result.text : '';
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return results.filter(Boolean).join(', ');
|
|
47
|
+
} catch (error) {
|
|
48
|
+
return `Сталася помилка.<!-- err: ${error.toString()} -->`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
export default function token(params) {
|
|
4
|
-
const { data, hash } = params;
|
|
5
|
-
if (!data?.root?.user?.uid) return '';
|
|
6
|
-
if (!hash || typeof hash !== 'object') return '-';
|
|
7
|
-
|
|
8
|
-
// const id = hash?.edit ? hash?.id : data?.root?.id;
|
|
9
|
-
// console.log(hash)
|
|
10
|
-
const [token] = setToken({
|
|
11
|
-
ids: [JSON.stringify(hash)],
|
|
12
|
-
|
|
13
|
-
uid: data?.root?.user?.uid,
|
|
14
|
-
array: 1,
|
|
15
|
-
});
|
|
16
|
-
return token;
|
|
1
|
+
import { setToken } from "@opengis/fastify-table/utils.js";
|
|
2
|
+
|
|
3
|
+
export default function token(params) {
|
|
4
|
+
const { data, hash } = params;
|
|
5
|
+
if (!data?.root?.user?.uid) return '';
|
|
6
|
+
if (!hash || typeof hash !== 'object') return '-';
|
|
7
|
+
|
|
8
|
+
// const id = hash?.edit ? hash?.id : data?.root?.id;
|
|
9
|
+
// console.log(hash)
|
|
10
|
+
const [token] = setToken({
|
|
11
|
+
ids: [JSON.stringify(hash)],
|
|
12
|
+
|
|
13
|
+
uid: data?.root?.user?.uid,
|
|
14
|
+
array: 1,
|
|
15
|
+
});
|
|
16
|
+
return token;
|
|
17
17
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
|
|
2
|
+
import { handlebars, handlebarsSync } from "@opengis/fastify-table/utils.js";
|
|
3
|
+
|
|
4
|
+
import token from "./core/token.js";
|
|
5
|
+
import descriptionList from "./list/descriptionList.js";
|
|
6
|
+
import tableList from "./list/tableList.js";
|
|
7
|
+
import buttonHelper from "./core/buttonHelper.js";
|
|
8
|
+
import select from "./core/select.js";
|
|
9
|
+
import badge from "./core/badge.js";
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
import ifCond from "./temp/ifCond.js";
|
|
13
|
+
import contentList from "./temp/contentList.js";
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
export default async function route() {
|
|
18
|
+
|
|
19
|
+
handlebars.registerHelper('token', token);
|
|
20
|
+
handlebars.registerHelper('descriptionList', descriptionList);
|
|
21
|
+
handlebars.registerHelper('tableList', tableList);
|
|
22
|
+
handlebars.registerHelper('button', buttonHelper);
|
|
23
|
+
handlebars.registerHelper('select', select);
|
|
24
|
+
handlebars.registerHelper('badge', badge);
|
|
25
|
+
handlebars.registerHelper('contentList', contentList);
|
|
26
|
+
handlebarsSync.registerHelper('ifCond', ifCond);
|
|
27
|
+
handlebars.registerHelper('ifCond', ifCond);
|
|
28
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import button from './utils/button.js';
|
|
3
|
-
export default function buttonHelper(data, opt) {
|
|
4
|
-
const { hash } = opt;
|
|
5
|
-
|
|
6
|
-
// console.log(params)
|
|
7
|
-
|
|
8
|
-
if (!hash.token) return 'token empty';
|
|
9
|
-
|
|
10
|
-
return button(hash.token, hash.title);
|
|
1
|
+
|
|
2
|
+
import button from './utils/button.js';
|
|
3
|
+
export default function buttonHelper(data, opt) {
|
|
4
|
+
const { hash } = opt;
|
|
5
|
+
|
|
6
|
+
// console.log(params)
|
|
7
|
+
|
|
8
|
+
if (!hash.token) return 'token empty';
|
|
9
|
+
|
|
10
|
+
return button(hash.token, hash.title);
|
|
11
11
|
}
|
|
@@ -1,35 +1,44 @@
|
|
|
1
|
-
import { handlebarsSync } from '@opengis/fastify-table/utils.js'
|
|
2
|
-
|
|
3
|
-
function format(d, key, data) {
|
|
4
|
-
if (!key?.includes) return '';
|
|
5
|
-
if (d === true) return 'так';
|
|
6
|
-
if (d === false) return 'ні'
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
return
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
1
|
+
import { handlebarsSync, handlebars } from '@opengis/fastify-table/utils.js'
|
|
2
|
+
|
|
3
|
+
function format(d, key, data) {
|
|
4
|
+
if (!key?.includes) return '';
|
|
5
|
+
if (d === true) return 'так';
|
|
6
|
+
if (d === false) return 'ні'
|
|
7
|
+
|
|
8
|
+
if (key.includes('{{')) {
|
|
9
|
+
return handlebarsSync.compile(key)(data);
|
|
10
|
+
}
|
|
11
|
+
if (!d) return '-';
|
|
12
|
+
return d;
|
|
13
|
+
}
|
|
14
|
+
export default async function descriptionList(data, opt) {
|
|
15
|
+
const { hash } = opt;
|
|
16
|
+
|
|
17
|
+
// no data
|
|
18
|
+
if (hash.nodata && !data) {
|
|
19
|
+
const noDataText = typeof hash.nodata == 'string' ? hash.nodata : 'no data';
|
|
20
|
+
return noDataText
|
|
21
|
+
}
|
|
22
|
+
if (!hash.columns) return 'columns empty'
|
|
23
|
+
const keys = hash.columns.split(',').map(el => hash.comma ? el.trim().replace(new RegExp(hash.comma || '#', 'g'), ',') : el.trim());
|
|
24
|
+
|
|
25
|
+
const result = [];
|
|
26
|
+
|
|
27
|
+
for (let i = 0; i < keys.length; i += 2) {
|
|
28
|
+
const name = keys[i];
|
|
29
|
+
const nameHBS = name.includes('{{') ? handlebarsSync.compile(name)({ ...data, hash }) : false
|
|
30
|
+
|
|
31
|
+
if (!nameHBS && name.includes('{{')) continue;
|
|
32
|
+
|
|
33
|
+
const key = keys[i + 1];
|
|
34
|
+
const d1 = ['{{format', '{{select', '{{badge', '{{ifCond'].filter(el => key.includes(el)).length ? await handlebars.compile(key)(data) || '-' : null
|
|
35
|
+
|
|
36
|
+
result.push(`<div class="flex py-[16px] text-[14px] border-b border-[#E5E7EB">
|
|
37
|
+
<div class="text-[#6B7280] font-[400] w-[50%]">${nameHBS || name}</div>
|
|
38
|
+
<div class="font-[600] text-black w-[50%]">${d1 || format(data[key], key, data)}</div>
|
|
39
|
+
</div>
|
|
40
|
+
`);
|
|
41
|
+
|
|
42
|
+
}
|
|
43
|
+
return '<div class="w-full">' + result.join('') + '</div>';
|
|
35
44
|
}
|
|
@@ -1,66 +1,79 @@
|
|
|
1
|
-
import { handlebarsSync, setToken } from '@opengis/fastify-table/utils.js'
|
|
2
|
-
|
|
3
|
-
import button from '
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
if (
|
|
8
|
-
if (d ===
|
|
9
|
-
if (
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
1
|
+
import { handlebarsSync, setToken, handlebars } from '@opengis/fastify-table/utils.js'
|
|
2
|
+
|
|
3
|
+
import button from '../utils/button.js';
|
|
4
|
+
import buttonDel from '../utils/buttonDel.js';
|
|
5
|
+
|
|
6
|
+
function format(d, key, data) {
|
|
7
|
+
if (!key?.includes) return '';
|
|
8
|
+
if (d === true) return 'так';
|
|
9
|
+
if (d === false) return 'ні';
|
|
10
|
+
if (key === 'actions') {
|
|
11
|
+
return button(d, 'редагувати') + buttonDel(d)
|
|
12
|
+
}
|
|
13
|
+
if (key.includes('{{')) {
|
|
14
|
+
return handlebarsSync.compile(key)(data);
|
|
15
|
+
}
|
|
16
|
+
if (!d) return '-';
|
|
17
|
+
return d;
|
|
18
|
+
}
|
|
19
|
+
export default async function tableList(data, opt) {
|
|
20
|
+
const { hash } = opt;
|
|
21
|
+
// no data
|
|
22
|
+
|
|
23
|
+
if (hash.nodata && !data?.length) {
|
|
24
|
+
const noDataText = typeof hash.nodata == 'string' ? hash.nodata : 'no data';
|
|
25
|
+
return noDataText
|
|
26
|
+
}
|
|
27
|
+
if (!hash.columns) return 'columns empty'
|
|
28
|
+
const keys = hash.columns.split(',').map(el => hash.comma ? el.trim().replace(new RegExp(hash.comma, 'g'), ',') : el.trim()).concat(hash.uid && hash.table && hash.form && !hash.noactions ? ['Дії', 'actions'] : []);
|
|
29
|
+
|
|
30
|
+
const result = [];
|
|
31
|
+
result.push('<thead> <tr>');
|
|
32
|
+
|
|
33
|
+
// thead
|
|
34
|
+
const skip = {}
|
|
35
|
+
for (let i = 0; i < keys.length; i += 2) {
|
|
36
|
+
const name = keys[i];
|
|
37
|
+
|
|
38
|
+
// check hbs
|
|
39
|
+
const nameHBS = name.includes('{{') ? handlebarsSync.compile(name)({ ...data, hash }) : false;
|
|
40
|
+
// console.log(name, data, nameHBS)
|
|
41
|
+
skip[name] = name.includes('{{') && !nameHBS;
|
|
42
|
+
if (skip[name]) continue;
|
|
43
|
+
|
|
44
|
+
result.push(`<th scope="col">
|
|
45
|
+
<div class="px-[20px] py-[12px] text-start text-nowrap font-medium text-[14px] text-[#6B7280] ">
|
|
46
|
+
${nameHBS || name}
|
|
47
|
+
</div>
|
|
48
|
+
</th>`)
|
|
49
|
+
}
|
|
50
|
+
result.push('</tr></thead>');
|
|
51
|
+
|
|
52
|
+
// body
|
|
53
|
+
for (let k = 0; k < data.length; k += 2) {
|
|
54
|
+
const row = data[k];
|
|
55
|
+
result.push('<tbody><tr class="border-t border-gray-200">');
|
|
56
|
+
const obj = { form: hash.form, table: hash.table, id: row[hash.id] }
|
|
57
|
+
const token = hash.table ? setToken({ ids: [JSON.stringify(obj)], uid: hash.uid, array: 1 })[0] : null;
|
|
58
|
+
for (let i = 0; i < keys.length; i += 2) {
|
|
59
|
+
|
|
60
|
+
const name = keys[i];
|
|
61
|
+
const key = keys[i + 1];
|
|
62
|
+
|
|
63
|
+
if (skip[name]) continue;
|
|
64
|
+
|
|
65
|
+
const tokenData = key == 'actions' ? token : null;
|
|
66
|
+
const d1 = ['{{format', '{{select', '{{badge', '{{#ifCond'].filter(el => key.includes(el)).length ? await handlebars.compile(key)({ ...row, token, hash }) || '-' : null
|
|
67
|
+
result.push(`<td >
|
|
68
|
+
<div class="px-[20px] py-[12px] text-start font-medium text-[14px] text-black">${d1 || format(tokenData || row[key], key, row)}</div>
|
|
69
|
+
</td>`);
|
|
70
|
+
|
|
71
|
+
}
|
|
72
|
+
// action token
|
|
73
|
+
|
|
74
|
+
result.push('</tr></tbody>');
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
return '<table class="min-w-full divide-y divide-gray-200"> ' + result.join('') + '</table>';
|
|
66
79
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
export default function button(token, title) {
|
|
4
|
-
return `<button onclick="window.v3plugin.$form({ token: '${token}' })"
|
|
5
|
-
class="inline-flex items-center px-2 py-1 text-sm font-medium text-white duration-300 bg-blue-600 border border-transparent rounded-lg gap-x-2 hover:bg-blue-700 hover:text-white">${title || 'Додати'}</button>`;
|
|
1
|
+
|
|
2
|
+
|
|
3
|
+
export default function button(token, title) {
|
|
4
|
+
return `<button onclick="window.v3plugin.$form({ token: '${token}' })"
|
|
5
|
+
class="inline-flex items-center px-2 py-1 text-sm font-medium text-white duration-300 bg-blue-600 border border-transparent rounded-lg gap-x-2 hover:bg-blue-700 hover:text-white">${title || 'Додати'}</button>`;
|
|
6
6
|
}
|