@opengis/admin 0.1.80 → 0.1.81

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 (137) hide show
  1. package/README.md +29 -29
  2. package/config.js +4 -4
  3. package/dist/{IconChevronDown-DWLdkAUG.js → IconChevronDown-D5JGurpf.js} +1 -1
  4. package/dist/{add-page-GDPnGgQK.js → add-page-DjmhHq_I.js} +1 -1
  5. package/dist/{admin-interface-DOqhM3SD.js → admin-interface-CIA9Y-Dz.js} +334 -334
  6. package/dist/{admin-view-xnJ3u3oI.js → admin-view-DABvcRfg.js} +3 -3
  7. package/dist/admin.js +1 -1
  8. package/dist/admin.umd.cjs +85 -85
  9. package/dist/assets/logo.svg +41 -41
  10. package/dist/card-page-B_Vr2qvx.js +341 -0
  11. package/dist/{card-view-CuKF08UR.js → card-view-XmNFtrP8.js} +1 -1
  12. package/dist/{edit-page-J0eDzIuJ.js → edit-page-ELlQWVFa.js} +1 -1
  13. package/dist/{import-file-REG5YZVe.js → import-file-CsnR0UjH.js} +6848 -6730
  14. package/dist/style.css +1 -1
  15. package/module/settings/card/admin.roles.table/access.hbs +27 -27
  16. package/module/settings/card/admin.roles.table/general_info.hbs +16 -16
  17. package/module/settings/card/admin.roles.table/index.yml +14 -14
  18. package/module/settings/card/admin.roles.table/users.hbs +27 -27
  19. package/module/settings/card/admin.routes.table/general_info.hbs +40 -40
  20. package/module/settings/card/admin.routes.table/index.yml +8 -8
  21. package/module/settings/card/admin.routes.table/users.hbs +33 -33
  22. package/module/settings/card/admin.users.table/general_info.hbs +25 -25
  23. package/module/settings/card/admin.users.table/index.yml +12 -12
  24. package/module/settings/card/admin.users.table/logs.hbs +30 -30
  25. package/module/settings/card/admin.users.table/user_roles.hbs +24 -24
  26. package/module/settings/cls/core.actions.json +13 -13
  27. package/module/settings/cls/core.scope.json +13 -13
  28. package/module/settings/cls/properties.site_status.json +13 -13
  29. package/module/settings/cls/properties.widget_status.json +13 -13
  30. package/module/settings/cls/users.user_type.json +13 -13
  31. package/module/settings/form/admin.access.form.json +36 -36
  32. package/module/settings/form/admin.custom_column.form.json +71 -71
  33. package/module/settings/form/admin.properties.form.json +15 -15
  34. package/module/settings/form/admin.roles.form.json +19 -19
  35. package/module/settings/form/admin.routes.form.json +25 -25
  36. package/module/settings/form/admin.user_properties.form.json +15 -15
  37. package/module/settings/form/admin.user_roles.form.json +21 -21
  38. package/module/settings/form/admin.users.form.json +153 -153
  39. package/module/settings/form/user.user_roles.form.json +13 -13
  40. package/module/settings/interface/admin.properties.json +4 -4
  41. package/module/settings/interface/admin.roles.json +4 -4
  42. package/module/settings/interface/admin.routes.json +4 -4
  43. package/module/settings/interface/admin.users.json +4 -4
  44. package/module/settings/menu.json +50 -50
  45. package/module/settings/select/core.roles.json +2 -2
  46. package/module/settings/select/core.routes.sql +1 -1
  47. package/module/settings/select/core.user_mentioned.sql +1 -1
  48. package/module/settings/select/core.user_uid.sql +1 -1
  49. package/module/settings/table/admin.access.table.json +83 -83
  50. package/module/settings/table/admin.custom_column.table.json +99 -99
  51. package/module/settings/table/admin.properties.table.json +39 -39
  52. package/module/settings/table/admin.roles.table.json +64 -64
  53. package/module/settings/table/admin.routes.table.json +68 -68
  54. package/module/settings/table/admin.user_properties.table.json +34 -34
  55. package/module/settings/table/admin.user_roles.table.json +72 -72
  56. package/module/settings/table/admin.users.table.json +121 -121
  57. package/package.json +82 -82
  58. package/plugin.js +27 -27
  59. package/server/helpers/controllers/badge.js +11 -11
  60. package/server/helpers/controllers/hb.js +2 -2
  61. package/server/helpers/controllers/map.js +2 -2
  62. package/server/helpers/controllers/mls.js +2 -2
  63. package/server/helpers/controllers/token.js +15 -15
  64. package/server/helpers/controllers/vue.js +2 -2
  65. package/server/helpers/index.mjs +17 -17
  66. package/server/plugins/adminHook.js +93 -93
  67. package/server/plugins/cron.js +10 -10
  68. package/server/plugins/docs.js +28 -28
  69. package/server/plugins/hook.js +223 -223
  70. package/server/plugins/vite.js +71 -71
  71. package/server/routes/calendar/controllers/calendar.data.js +87 -87
  72. package/server/routes/calendar/index.mjs +7 -7
  73. package/server/routes/calendar/schema.js +21 -21
  74. package/server/routes/data/controllers/cardData.js +79 -94
  75. package/server/routes/data/controllers/cardTabData.js +49 -49
  76. package/server/routes/data/controllers/funcs/getFilterSQL/index.js +92 -92
  77. package/server/routes/data/controllers/funcs/getFilterSQL/util/formatValue.js +170 -170
  78. package/server/routes/data/controllers/funcs/getFilterSQL/util/getCustomQuery.js +13 -13
  79. package/server/routes/data/controllers/funcs/getFilterSQL/util/getFilterQuery.js +64 -64
  80. package/server/routes/data/controllers/funcs/getFilterSQL/util/getOptimizedQuery.js +12 -12
  81. package/server/routes/data/controllers/funcs/getFilterSQL/util/getTableSql.js +34 -34
  82. package/server/routes/data/controllers/tableData.js +20 -14
  83. package/server/routes/data/controllers/tableDataId.js +27 -27
  84. package/server/routes/data/controllers/tableFilter.js +63 -63
  85. package/server/routes/data/controllers/utils/assignTokens.js +30 -30
  86. package/server/routes/data/controllers/utils/getColumns.js +8 -8
  87. package/server/routes/data/index.mjs +15 -15
  88. package/server/routes/data/schema.js +54 -54
  89. package/server/routes/menu/controllers/getMenu.js +67 -67
  90. package/server/routes/menu/index.mjs +5 -5
  91. package/server/routes/notifications/controllers/readNotifications.js +27 -27
  92. package/server/routes/notifications/controllers/testEmail.js +35 -35
  93. package/server/routes/notifications/controllers/userNotifications.js +53 -53
  94. package/server/routes/notifications/funcs/addNotification.js +21 -21
  95. package/server/routes/notifications/funcs/sendNotification.js +105 -105
  96. package/server/routes/notifications/hook/onWidgetSet.js +57 -57
  97. package/server/routes/notifications/index.mjs +27 -27
  98. package/server/routes/notifications/schema.js +16 -16
  99. package/server/routes/properties/controllers/admin.properties.get.js +29 -29
  100. package/server/routes/properties/controllers/user.properties.get.js +30 -30
  101. package/server/routes/properties/controllers/user.properties.post.js +30 -30
  102. package/server/routes/properties/funcs/getSettings.js +56 -56
  103. package/server/routes/properties/funcs/setSettings.js +44 -44
  104. package/server/routes/properties/funcs/utils/dataInsert.js +26 -26
  105. package/server/routes/properties/index.mjs +14 -14
  106. package/server/routes/properties/schema.js +10 -10
  107. package/server/routes/root.mjs +3 -3
  108. package/server/routes/templates/controllers/getTemplate.js +26 -22
  109. package/server/routes/templates/index.mjs +16 -16
  110. package/server/routes/templates/schema.js +8 -8
  111. package/server/routes/user/controllers/user.cls.id.js +14 -14
  112. package/server/routes/user/controllers/user.cls.js +71 -71
  113. package/server/routes/user/controllers/user.cls.post.js +52 -52
  114. package/server/routes/user/controllers/user.info.js +17 -17
  115. package/server/routes/user/schema.js +14 -14
  116. package/server/routes/widget/controllers/utils/historyFormat.js +75 -75
  117. package/server/routes/widget/controllers/utils/obj2db.js +13 -13
  118. package/server/routes/widget/controllers/widget.del.js +41 -41
  119. package/server/routes/widget/controllers/widget.get.js +96 -96
  120. package/server/routes/widget/controllers/widget.set.js +76 -76
  121. package/server/routes/widget/index.mjs +11 -11
  122. package/server/routes/widget/schema.js +12 -12
  123. package/server/templates/cls/itree.recrzone_category.json +73 -73
  124. package/server/templates/cls/test.json +9 -9
  125. package/server/templates/form/admin.user_cls.data.form.json +49 -49
  126. package/server/templates/form/admin.user_group_rel.form.json +21 -21
  127. package/server/templates/form/cp_building.form.json +32 -32
  128. package/server/templates/form/form-user-pass.json +10 -10
  129. package/server/templates/form/form-user_group.json +39 -39
  130. package/server/templates/form/form-users.json +156 -156
  131. package/server/templates/form/user_group_access.form.json +22 -22
  132. package/server/templates/select/account_id.json +2 -2
  133. package/server/templates/table/gis.dataset.table.json +43 -43
  134. package/server/templates/table/management.user_group.table.json +112 -112
  135. package/server/templates/table/management.users.table.json +126 -126
  136. package/utils.js +26 -26
  137. package/dist/card-page-DhYFr0FI.js +0 -280
@@ -1,88 +1,88 @@
1
- import { handlebars, getMeta, getTemplate } from '@opengis/fastify-table/utils.js';
2
-
3
- export default async function calendarData({
4
- pg, params = {}, query = {}, session = {},
5
- }) {
6
- const { name } = params;
7
- const { uid } = session.passport?.user || {};
8
- if (!name) {
9
- return { message: 'not enough params: name', status: 400 };
10
- }
11
- const { date, sql } = query;
12
-
13
-
14
- const body = await getTemplate('calendar', name);
15
-
16
- if (!body) {
17
- return { message: `calendar not found: ${name}`, status: 404 };
18
- }
19
-
20
- const {
21
- title,
22
- table,
23
- query: query1 = '1=1',
24
- meta = {},
25
- filter = [],
26
- } = body;
27
-
28
- if (!table) {
29
- return { message: 'not enough calendar params: table', status: 404 };
30
- }
31
- if (!pg.pk?.[table]) {
32
- return { message: `table pkey not found: ${table}`, status: 404 };
33
- }
34
-
35
- const filterWhere = filter?.length && query.filter?.length
36
- ? filter.filter((el) => (Object.hasOwn(el, 'enabled') ? el?.enabled : true))
37
- .map((el) => {
38
- const val = query.filter.split(',').find((e) => e?.split('=')?.shift()?.includes(el.column || el.name))?.split('=')?.pop();
39
- if (val) return el.column && val ? `(${[`${el.column}::text='${val.replace(/'/g,"''")}'::text`, el.query].filter((el) => el).join(' and ')})` : el.query;
40
- }).filter((el) => el).join(' and ')
41
- : undefined;
42
- // console.log(filterWhere);
43
-
44
- const queryWhere = await handlebars.compile(query1)({ uid });
45
- const filterDate = date ? `date_trunc('month', "${meta?.date || meta?.start}"::date)='${date}'::date` : undefined;
46
- const where = [queryWhere, filterDate, filterWhere].filter((el) => el).join(' and ');
47
-
48
- const filtersByColumn = filter.filter((el) => (Object.hasOwn(el, 'enabled') ? el?.enabled : true) && el?.column);
49
-
50
- const filters = [];
51
- if (filtersByColumn?.length) {
52
- await Promise.all(filtersByColumn.map(async (el) => {
53
- const { rows: filterData = [] } = await pg.query(`select $1 as id, count(*) from $2
54
- where ${el.query || '1=1'} and ${filterWhere || '1=1'} group by $1`, [el.column, table] );
55
- if (!filterData?.length) return;
56
-
57
- // const clsData = await getSelectVal({ pg, name: el.cls, values: filterData.map((el) => el.id) });
58
- const clsData = el.cls ? await getTemplate(['cls', 'select'], el.cls) : undefined;
59
-
60
- if (!el.cls) {
61
- filterData.forEach((el1) => filters.push(el1));
62
- return;
63
- }
64
-
65
- filterData.forEach((el1) => {
66
- const cls = clsData.find((item) => item.id === el1.id.toString());
67
- Object.assign(el1, { title: cls?.text, color: cls?.color });
68
- filters.push(el1);
69
- });
70
- }));
71
- }
72
-
73
- const tableMeta = await getMeta({ pg, table });
74
- const columnList = tableMeta?.columns?.map((el) => el?.name);
75
- const columns = Object.keys(meta).filter((el) => ['date', 'start','end','title','status'].includes(el) && columnList.includes(meta[el])).map((el) => `"${meta[el]}" as ${el}`);
76
-
77
- if (!columns?.length) {
78
- return { message: `calendar param meta is invalid: invalid/empty keys`, status: 404 };
79
- }
80
-
81
- const q = `select &1 from $2 where $3`;
82
- if (sql) return q;
83
-
84
- const { rows = [] } = await pg.query(q, [columns.join(','), table, where]);
85
-
86
- return { title, filters, rows };
87
-
1
+ import { handlebars, getMeta, getTemplate } from '@opengis/fastify-table/utils.js';
2
+
3
+ export default async function calendarData({
4
+ pg, params = {}, query = {}, session = {},
5
+ }) {
6
+ const { name } = params;
7
+ const { uid } = session.passport?.user || {};
8
+ if (!name) {
9
+ return { message: 'not enough params: name', status: 400 };
10
+ }
11
+ const { date, sql } = query;
12
+
13
+
14
+ const body = await getTemplate('calendar', name);
15
+
16
+ if (!body) {
17
+ return { message: `calendar not found: ${name}`, status: 404 };
18
+ }
19
+
20
+ const {
21
+ title,
22
+ table,
23
+ query: query1 = '1=1',
24
+ meta = {},
25
+ filter = [],
26
+ } = body;
27
+
28
+ if (!table) {
29
+ return { message: 'not enough calendar params: table', status: 404 };
30
+ }
31
+ if (!pg.pk?.[table]) {
32
+ return { message: `table pkey not found: ${table}`, status: 404 };
33
+ }
34
+
35
+ const filterWhere = filter?.length && query.filter?.length
36
+ ? filter.filter((el) => (Object.hasOwn(el, 'enabled') ? el?.enabled : true))
37
+ .map((el) => {
38
+ const val = query.filter.split(',').find((e) => e?.split('=')?.shift()?.includes(el.column || el.name))?.split('=')?.pop();
39
+ if (val) return el.column && val ? `(${[`${el.column}::text='${val.replace(/'/g,"''")}'::text`, el.query].filter((el) => el).join(' and ')})` : el.query;
40
+ }).filter((el) => el).join(' and ')
41
+ : undefined;
42
+ // console.log(filterWhere);
43
+
44
+ const queryWhere = await handlebars.compile(query1)({ uid });
45
+ const filterDate = date ? `date_trunc('month', "${meta?.date || meta?.start}"::date)='${date}'::date` : undefined;
46
+ const where = [queryWhere, filterDate, filterWhere].filter((el) => el).join(' and ');
47
+
48
+ const filtersByColumn = filter.filter((el) => (Object.hasOwn(el, 'enabled') ? el?.enabled : true) && el?.column);
49
+
50
+ const filters = [];
51
+ if (filtersByColumn?.length) {
52
+ await Promise.all(filtersByColumn.map(async (el) => {
53
+ const { rows: filterData = [] } = await pg.query(`select $1 as id, count(*) from $2
54
+ where ${el.query || '1=1'} and ${filterWhere || '1=1'} group by $1`, [el.column, table] );
55
+ if (!filterData?.length) return;
56
+
57
+ // const clsData = await getSelectVal({ pg, name: el.cls, values: filterData.map((el) => el.id) });
58
+ const clsData = el.cls ? await getTemplate(['cls', 'select'], el.cls) : undefined;
59
+
60
+ if (!el.cls) {
61
+ filterData.forEach((el1) => filters.push(el1));
62
+ return;
63
+ }
64
+
65
+ filterData.forEach((el1) => {
66
+ const cls = clsData.find((item) => item.id === el1.id.toString());
67
+ Object.assign(el1, { title: cls?.text, color: cls?.color });
68
+ filters.push(el1);
69
+ });
70
+ }));
71
+ }
72
+
73
+ const tableMeta = await getMeta({ pg, table });
74
+ const columnList = tableMeta?.columns?.map((el) => el?.name);
75
+ const columns = Object.keys(meta).filter((el) => ['date', 'start','end','title','status'].includes(el) && columnList.includes(meta[el])).map((el) => `"${meta[el]}" as ${el}`);
76
+
77
+ if (!columns?.length) {
78
+ return { message: `calendar param meta is invalid: invalid/empty keys`, status: 404 };
79
+ }
80
+
81
+ const q = `select &1 from $2 where $3`;
82
+ if (sql) return q;
83
+
84
+ const { rows = [] } = await pg.query(q, [columns.join(','), table, where]);
85
+
86
+ return { title, filters, rows };
87
+
88
88
  }
@@ -1,7 +1,7 @@
1
- import calendarData from "./controllers/calendar.data.js";
2
-
3
- import { calendarDataSchema } from './schema.js';
4
-
5
- export default async function route(fastify) {
6
- fastify.get('/calendar/:name', { schema: calendarDataSchema }, calendarData);
7
- }
1
+ import calendarData from "./controllers/calendar.data.js";
2
+
3
+ import { calendarDataSchema } from './schema.js';
4
+
5
+ export default async function route(fastify) {
6
+ fastify.get('/calendar/:name', { schema: calendarDataSchema }, calendarData);
7
+ }
@@ -1,22 +1,22 @@
1
- const calendarDataSchema = {
2
- params: {
3
- name: { type: 'string', pattern: '^([\\d\\w._-]+)$' },
4
- },
5
- querystring: {
6
- date: { type: 'string', pattern: '^([\\d\\s\\/,.:-]+)$' },
7
- sql: { type: 'string', pattern: '^(\\d)$' },
8
- },
9
-
10
- // query: {
11
- // type: 'object',
12
- // properties: {
13
- // date: {
14
- // type: 'string',
15
- // format: 'date',
16
- // },
17
- // },
18
- // },
19
- };
20
-
21
- export { calendarDataSchema }
1
+ const calendarDataSchema = {
2
+ params: {
3
+ name: { type: 'string', pattern: '^([\\d\\w._-]+)$' },
4
+ },
5
+ querystring: {
6
+ date: { type: 'string', pattern: '^([\\d\\s\\/,.:-]+)$' },
7
+ sql: { type: 'string', pattern: '^(\\d)$' },
8
+ },
9
+
10
+ // query: {
11
+ // type: 'object',
12
+ // properties: {
13
+ // date: {
14
+ // type: 'string',
15
+ // format: 'date',
16
+ // },
17
+ // },
18
+ // },
19
+ };
20
+
21
+ export { calendarDataSchema }
22
22
  export default null;
@@ -1,95 +1,80 @@
1
- import path from 'node:path';
2
-
3
- import { config, handlebars, setToken, getTemplate } from "@opengis/fastify-table/utils.js";
4
- // import yaml from 'js-yaml';
5
- import getTableData from "./tableData.js";
6
-
7
- export default async function getCardData(req) {
8
- const {
9
- pg, params = {}, session = {}, user
10
- } = req;
11
- const { table, id } = params;
12
- const uid = config?.auth?.disable ? '1' : session.passport?.user?.uid;
13
-
14
- const time = Date.now();
15
-
16
- const template = await getTemplate('card', table);
17
-
18
- const tableTemplate = await getTemplate('table', table);
19
- const index = template?.find(el => el[0] === 'index.yml')?.[1] || {};
20
-
21
- if (index?.tokens && typeof index?.tokens === 'object' && !Array.isArray(index?.tokens)) {
22
- Object.keys(index?.tokens).map((key) => {
23
- const id1 = index.tokens[key]?.edit ? index.tokens[key]?.id : id;
24
- const [token] = setToken({
25
- ids: [JSON.stringify({ ...index.tokens[key], id: id1 })],
26
- mode: index.tokens[key]?.edit ? 'w' : 'a',
27
- uid,
28
- array: 1,
29
- });
30
- index.tokens[key] = token;
31
- });
32
- }
33
-
34
- const vue = template
35
- .filter((el) => el[0].endsWith('.vue'))
36
- .reduce((acc, curr) => Object.assign(acc, { [path.parse(curr[0]).name]: curr[1].match(/<template[^>]*>([\s\S]*?)<\/template>/)[1].trim() }), {});
37
-
38
- if (index?.panels?.length) {
39
- index?.panels.filter((el) => el.props || el.items?.find((item) => item.props))?.forEach((panel) => {
40
- if (panel.props) {
41
- const editTokens = setToken({
42
- ids: [JSON.stringify({ ...panel.props, id })],
43
- mode: 'w',
44
- uid: config?.auth?.disable ? '1' : uid,
45
- array: 1,
46
- });
47
- Object.assign(panel, { token: editTokens[0] });
48
- }
49
- if (panel.items?.length) {
50
- panel.items.filter((item) => item?.props)?.forEach((item) => {
51
- const editTokens = setToken({
52
- ids: [JSON.stringify({ ...item.props, id })],
53
- mode: 'w',
54
- uid: config?.auth?.disable ? '1' : uid,
55
- array: 1,
56
- });
57
- Object.assign(item, { token: editTokens[0] });
58
- });
59
- }
60
- });
61
- }
62
-
63
- const data = {};
64
- if (index?.data && index?.data?.[0]?.name) {
65
- await Promise.all(index.data.filter((el) => el?.name && el?.sql).map(async (el) => {
66
- const q = await handlebars.compile(el.sql)({ user, uid: user?.uid, id });
67
- const { rows = [] } = await pg.query(q);
68
- data[el.name] = rows;
69
- }));
70
- }
71
-
72
- const { message, rows = [] } = await getTableData({ pg, params: { table, id }, session, user });
73
-
74
- if (message) return { message };
75
-
76
- const html = {};
77
- if (template) {
78
- await Promise.all(template.filter(el => el[0].includes('.hbs')).map(async (el) => {
79
- const htmlContent = await handlebars.compile(el[1])({ ...rows[0], user });
80
- const name = el[0].substring(0, el[0].lastIndexOf('.'))
81
- html[name] = htmlContent;
82
- }));
83
- }
84
-
85
- return {
86
- time: Date.now() - time,
87
- ...index,
88
- vue,
89
- data,
90
- html,
91
- rows,
92
- columns: tableTemplate?.columns || tableTemplate?.colModel,
93
- };
94
-
1
+ import path from 'node:path';
2
+
3
+ import { config, handlebars, setOpt, setToken, getTemplate, handlebarsSync } from "@opengis/fastify-table/utils.js";
4
+ //import { setOpt, setToken } from "../../../../../fastify-table/utils.js";
5
+ // import yaml from 'js-yaml';
6
+ import getTableData from "./tableData.js";
7
+
8
+ export default async function getCardData(req) {
9
+ const {
10
+ pg, params = {}, session = {}, user
11
+ } = req;
12
+ const { table, id } = params;
13
+ const uid = config?.auth?.disable ? '1' : session.passport?.user?.uid;
14
+
15
+ const time = Date.now();
16
+
17
+ const template = await getTemplate('card', table);
18
+
19
+ const tableTemplate = await getTemplate('table', table);
20
+ const index = template?.find(el => el[0] === 'index.yml')?.[1] || {};
21
+
22
+ // tokens result
23
+ const tokens = {};
24
+ if (index?.tokens && typeof index?.tokens === 'object' && !Array.isArray(index?.tokens)) {
25
+ for (let key in index?.tokens) {
26
+ const item = index?.tokens[key];
27
+ Object.keys(item).filter(el => item[el].includes('{{')).forEach(el => {
28
+ item[el] = handlebarsSync.compile(item[el])({ user, uid: user?.uid, id });
29
+ });
30
+
31
+ const token = item.form && item.table ? setToken({
32
+ ids: [JSON.stringify(item)],
33
+ uid,
34
+ array: 1,
35
+ })[0] : setOpt(item, user.uid);
36
+ tokens[key] = token;
37
+ }
38
+ }
39
+
40
+ // vue result
41
+ const vue = template
42
+ .filter((el) => el[0].endsWith('.vue'))
43
+ .reduce((acc, curr) => Object.assign(acc, { [path.parse(curr[0]).name]: curr[1].match(/<template[^>]*>([\s\S]*?)<\/template>/)[1].trim() }), {});
44
+
45
+ // data result
46
+ const data = {};
47
+ if (index?.data && index?.data?.[0]?.name) {
48
+ await Promise.all(index.data.filter((el) => el?.name && el?.sql).map(async (el) => {
49
+ const q = handlebarsSync.compile(el.sql)({ user, uid: user?.uid, id });
50
+ const { rows = [] } = await pg.query(q);
51
+ data[el.name] = rows;
52
+ }));
53
+ }
54
+
55
+ const { message, rows = [] } = await getTableData({ pg, params: { table, id }, session, user });
56
+
57
+ if (message) return { message };
58
+
59
+ // html result
60
+ const html = {};
61
+ if (template) {
62
+ await Promise.all(template.filter(el => el[0].includes('.hbs')).map(async (el) => {
63
+ const htmlContent = await handlebars.compile(el[1])({ ...rows[0], user, data, tokens });
64
+ const name = el[0].substring(0, el[0].lastIndexOf('.'))
65
+ html[name] = htmlContent;
66
+ }));
67
+ }
68
+
69
+ return {
70
+ time: Date.now() - time,
71
+ ...index,
72
+ tokens,
73
+ vue,
74
+ data,
75
+ html,
76
+ rows,
77
+ columns: tableTemplate?.columns || tableTemplate?.colModel,
78
+ };
79
+
95
80
  }
@@ -1,50 +1,50 @@
1
- import { config, handlebars, getToken, getTemplate, getMeta } from "@opengis/fastify-table/utils.js";
2
-
3
- import getTableData from "./tableData.js";
4
-
5
- export default async function cardTabData({
6
- pg, query = {}, params = {}, session = {},
7
- }) {
8
- const { token } = params;
9
- const { sql } = query;
10
-
11
- if (!token) {
12
- return { message: 'not enough params: token', status: 400 };
13
- }
14
-
15
- const time = Date.now();
16
- const { uid } = config?.auth?.disable ? { uid: '1' } : (session.passport?.user || {});
17
-
18
- const props = await getToken({
19
- token,
20
- mode: 'w',
21
- uid,
22
- json: 1,
23
- });
24
-
25
- if (!props || !props?.table || !props) {
26
- return { message: { error: 'token is invalid', props }, status: 403 };
27
- }
28
-
29
- const tableTemplate = await getTemplate('table', props.table);
30
-
31
- const { columns = [] } = tableTemplate?.columns || tableTemplate?.colModel
32
- ? { columns: tableTemplate?.columns || tableTemplate?.colModel }
33
- : await getMeta({ table: props.table });
34
-
35
- const filter = await handlebars.compile(props.query.replace(/@id/g, '{{id}}'))(props);
36
- const { message, rows = [] } = await getTableData({ pg, params: { table: props.table }, session, query: { filter, sql } });
37
- if (message) return { message };
38
-
39
- if (props.columns?.length && rows?.length) {
40
- const allowList = ['id', 'token'].concat(props.columns).map((el) => [el, `${el}_text`]).flat();
41
- rows.forEach((row) => Object.keys(row).forEach((el) => { if (!allowList.includes(el)) delete row[el]; }));
42
-
43
- return {
44
- time: Date.now() - time,
45
- rows,
46
- columns: columns.filter((col) => props.columns.includes(col.name)),
47
- };
48
- }
49
- return { time: Date.now() - time, rows, columns };
1
+ import { config, handlebars, getToken, getTemplate, getMeta } from "@opengis/fastify-table/utils.js";
2
+
3
+ import getTableData from "./tableData.js";
4
+
5
+ export default async function cardTabData({
6
+ pg, query = {}, params = {}, session = {},
7
+ }) {
8
+ const { token } = params;
9
+ const { sql } = query;
10
+
11
+ if (!token) {
12
+ return { message: 'not enough params: token', status: 400 };
13
+ }
14
+
15
+ const time = Date.now();
16
+ const { uid } = config?.auth?.disable ? { uid: '1' } : (session.passport?.user || {});
17
+
18
+ const props = await getToken({
19
+ token,
20
+ mode: 'w',
21
+ uid,
22
+ json: 1,
23
+ });
24
+
25
+ if (!props || !props?.table || !props) {
26
+ return { message: { error: 'token is invalid', props }, status: 403 };
27
+ }
28
+
29
+ const tableTemplate = await getTemplate('table', props.table);
30
+
31
+ const { columns = [] } = tableTemplate?.columns || tableTemplate?.colModel
32
+ ? { columns: tableTemplate?.columns || tableTemplate?.colModel }
33
+ : await getMeta({ table: props.table });
34
+
35
+ const filter = await handlebars.compile(props.query.replace(/@id/g, '{{id}}'))(props);
36
+ const { message, rows = [] } = await getTableData({ pg, params: { table: props.table }, session, query: { filter, sql } });
37
+ if (message) return { message };
38
+
39
+ if (props.columns?.length && rows?.length) {
40
+ const allowList = ['id', 'token'].concat(props.columns).map((el) => [el, `${el}_text`]).flat();
41
+ rows.forEach((row) => Object.keys(row).forEach((el) => { if (!allowList.includes(el)) delete row[el]; }));
42
+
43
+ return {
44
+ time: Date.now() - time,
45
+ rows,
46
+ columns: columns.filter((col) => props.columns.includes(col.name)),
47
+ };
48
+ }
49
+ return { time: Date.now() - time, rows, columns };
50
50
  }