@opengis/admin 0.1.0
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 -0
- package/config.js +5 -0
- package/dist/add-page-C-msiPrU.js +64 -0
- package/dist/admin-interface-vPkHXzQK.js +762 -0
- package/dist/admin-view-BYF4ITZY.js +220 -0
- package/dist/card-page-HOwuHNjV.js +49 -0
- package/dist/card-view-CjZRvfqy.js +11 -0
- package/dist/edit-page-7yrRusn4.js +58 -0
- package/dist/form-TrZSpRSC.js +38 -0
- package/dist/import-file-DPHo57R5.js +3726 -0
- package/dist/settings.js +4 -0
- package/dist/settings.umd.cjs +36 -0
- package/dist/style.css +1 -0
- package/dist/userMenu-CT1xO2Pt.js +5 -0
- package/package.json +52 -0
- package/plugin.js +25 -0
- package/server/helpers/controllers/badge.js +12 -0
- package/server/helpers/controllers/hb.js +3 -0
- package/server/helpers/controllers/map.js +3 -0
- package/server/helpers/controllers/mls.js +3 -0
- package/server/helpers/controllers/vue.js +3 -0
- package/server/helpers/index.mjs +13 -0
- package/server/plugins/docs.js +28 -0
- package/server/plugins/hook.js +94 -0
- package/server/plugins/vite.js +64 -0
- package/server/routes/data/controllers/cardData.js +30 -0
- package/server/routes/data/controllers/metaFormat/getSelectVal.js +19 -0
- package/server/routes/data/controllers/metaFormat/index.js +29 -0
- package/server/routes/data/controllers/tableData.js +129 -0
- package/server/routes/data/controllers/tableDataId.js +28 -0
- package/server/routes/data/controllers/tableFilter.js +51 -0
- package/server/routes/data/index.mjs +10 -0
- package/server/routes/menu/controllers/getMenu.js +50 -0
- package/server/routes/menu/index.mjs +5 -0
- package/server/routes/root.mjs +3 -0
- package/server/routes/templates/controllers/getTemplate.js +9 -0
- package/server/routes/templates/funcs/addTempateFolder.js +47 -0
- package/server/routes/templates/funcs/getTemplate.js +70 -0
- package/server/routes/templates/funcs/getTemplatePath.js +39 -0
- package/server/routes/templates/funcs/loadTemplate.js +1 -0
- package/server/routes/templates/funcs/loadTemplateDir.js +1 -0
- package/server/routes/templates/funcs/loadTemplatePath.js +1 -0
- package/server/routes/templates/index.mjs +14 -0
- package/server/templates/cls/test.json +10 -0
- package/server/templates/form/admin.user_cls.data.form.json +50 -0
- package/server/templates/form/admin.user_group_rel.form.json +22 -0
- package/server/templates/form/cp_building.form.json +33 -0
- package/server/templates/form/form-user-pass.json +11 -0
- package/server/templates/form/form-user_group.json +40 -0
- package/server/templates/form/form-users.json +157 -0
- package/server/templates/form/user_group_access.form.json +23 -0
- package/server/templates/interface/management.user_group.html +1 -0
- package/server/templates/interface/management.user_group.json +10 -0
- package/server/templates/interface/management.users.html +1 -0
- package/server/templates/interface/management.users.json +10 -0
- package/server/templates/map/dgm_level_line.xml +52 -0
- package/server/templates/pt/admin-menu-pt.html +108 -0
- package/server/templates/pt/management.user_group.table.pt.html +127 -0
- package/server/templates/pt/management.users.table.pt.html +130 -0
- package/server/templates/pt/table-standard-pt.html +202 -0
- package/server/templates/select/account_id.json +3 -0
- package/server/templates/select/account_id.sql +1 -0
- package/server/templates/table/gis.dataset.table.json +44 -0
- package/server/templates/table/management.user_group.table.json +113 -0
- package/server/templates/table/management.users.table.json +127 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { readFile } from 'fs/promises';
|
|
2
|
+
import fs, { existsSync, readdirSync } from 'fs';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
// import config from '../../../../config.js';
|
|
5
|
+
|
|
6
|
+
import loadTemplatePath from './loadTemplatePath.js';
|
|
7
|
+
const cwd = process.cwd();
|
|
8
|
+
const moduleList = []
|
|
9
|
+
|
|
10
|
+
export default function getTemplatePath(type) {
|
|
11
|
+
if (!type) return null;
|
|
12
|
+
|
|
13
|
+
// form cache
|
|
14
|
+
if (loadTemplatePath[type]) return loadTemplatePath[type];
|
|
15
|
+
loadTemplatePath[type] = []
|
|
16
|
+
|
|
17
|
+
const moduleDir = path.join(cwd, 'module')
|
|
18
|
+
if (fs.existsSync(moduleDir) && !moduleList.length) {
|
|
19
|
+
readdirSync(moduleDir).forEach(el => moduleList.push(el))
|
|
20
|
+
}
|
|
21
|
+
moduleList.forEach(el => {
|
|
22
|
+
const templateDir = path.join(moduleDir, el, type)
|
|
23
|
+
if (!existsSync(templateDir)) return;
|
|
24
|
+
|
|
25
|
+
const list = readdirSync(templateDir, { withFileTypes: true })
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
list.forEach(file => {
|
|
29
|
+
const isDir = file.isDirectory();
|
|
30
|
+
const name = isDir ? file.name : file.name.substring(0, file.name.lastIndexOf('.'))
|
|
31
|
+
const ext = isDir ? null : file.name.substring(file.name.lastIndexOf('.') + 1)
|
|
32
|
+
loadTemplatePath[type].push([name, path.join(templateDir, file.name), ext, isDir])
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
return loadTemplatePath[type]
|
|
38
|
+
|
|
39
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default []
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default {}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import getTemplateApi from './controllers/getTemplate.js';
|
|
2
|
+
|
|
3
|
+
export default async function route(fastify) {
|
|
4
|
+
//fastify.decorate('addTempateFolder', addTempateFolder); // call from funcs
|
|
5
|
+
fastify.get(`/template/:type/:name`, getTemplateApi);
|
|
6
|
+
|
|
7
|
+
/*fastify.addHook('onListen', async () => {
|
|
8
|
+
await addTempateFolder(path.join(process.cwd(), '/module/itree'));
|
|
9
|
+
await addTempateFolder(path.join(process.cwd(), '/module/test'));
|
|
10
|
+
});*/
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"label_style": "vertical",
|
|
3
|
+
"schema": {
|
|
4
|
+
"code": {
|
|
5
|
+
"type": "Text",
|
|
6
|
+
"ua": "Код",
|
|
7
|
+
"ru": "Код",
|
|
8
|
+
"en": "Code",
|
|
9
|
+
"placeholder": {
|
|
10
|
+
"ua": "Код",
|
|
11
|
+
"ru": "Код",
|
|
12
|
+
"en": "Code"
|
|
13
|
+
},
|
|
14
|
+
"validators": [
|
|
15
|
+
"required"
|
|
16
|
+
],
|
|
17
|
+
"col": 6
|
|
18
|
+
},
|
|
19
|
+
"name": {
|
|
20
|
+
"type": "Text",
|
|
21
|
+
"ua": "Назва",
|
|
22
|
+
"ru": "Название",
|
|
23
|
+
"en": "Name",
|
|
24
|
+
"placeholder": {
|
|
25
|
+
"ua": "Назва",
|
|
26
|
+
"ru": "Название",
|
|
27
|
+
"en": "Name"
|
|
28
|
+
},
|
|
29
|
+
"validators": [
|
|
30
|
+
"required"
|
|
31
|
+
],
|
|
32
|
+
"col": 6
|
|
33
|
+
},
|
|
34
|
+
"icon": {
|
|
35
|
+
"type": "File",
|
|
36
|
+
"multi": false,
|
|
37
|
+
"ua": "Іконка",
|
|
38
|
+
"ru": "Иконка",
|
|
39
|
+
"en": "Icon",
|
|
40
|
+
"col": 6
|
|
41
|
+
},
|
|
42
|
+
"color": {
|
|
43
|
+
"type": "ColorPicker",
|
|
44
|
+
"ua": "Колір",
|
|
45
|
+
"ru": "Цвет",
|
|
46
|
+
"en": "Color",
|
|
47
|
+
"col": 6
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": {
|
|
3
|
+
"user_uid": {
|
|
4
|
+
"type": "Autocomplete",
|
|
5
|
+
"data": "user_id",
|
|
6
|
+
"ua": "Користувач",
|
|
7
|
+
"validators": [
|
|
8
|
+
"required"
|
|
9
|
+
]
|
|
10
|
+
},
|
|
11
|
+
"user_access": {
|
|
12
|
+
"type": "Select2",
|
|
13
|
+
"data": "user_access",
|
|
14
|
+
"placeholder": "Згідно налаштувань інтерфейсів",
|
|
15
|
+
"ua": "Доступ"
|
|
16
|
+
},
|
|
17
|
+
"expiration": {
|
|
18
|
+
"type": "DatePicker",
|
|
19
|
+
"ua": "Закінчення терміну дії доступу до групи"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": {
|
|
3
|
+
|
|
4
|
+
"cp_umuni_id": {
|
|
5
|
+
"type": "Text",
|
|
6
|
+
"ua": "ID UMUNI"
|
|
7
|
+
},
|
|
8
|
+
"cp_year": {
|
|
9
|
+
"type": "Text",
|
|
10
|
+
"ua": "Рік будівництва"
|
|
11
|
+
},
|
|
12
|
+
"cp_date_en_audit": {
|
|
13
|
+
"type": "DatePicker",
|
|
14
|
+
"ua": "Дата проведення останнього енергоаудиту"
|
|
15
|
+
},
|
|
16
|
+
"cp_certificate": {
|
|
17
|
+
"type": "Text",
|
|
18
|
+
"ua": "Сертифікат енергоефективності будівлі",
|
|
19
|
+
"help": "Вкажіть посилання"
|
|
20
|
+
},
|
|
21
|
+
"cp_pkd": {
|
|
22
|
+
"type": "Autocomplete",
|
|
23
|
+
"data": "customer_name",
|
|
24
|
+
"add": {
|
|
25
|
+
"model": "crm_acc.crm_account",
|
|
26
|
+
"ua": "Додати",
|
|
27
|
+
"form": "account_light.form"
|
|
28
|
+
},
|
|
29
|
+
"ua": "Замовник ПКД"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"label_style": "vertical"
|
|
33
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"login":{"type":"Text","ua":"Логін","ru":"Логин"},
|
|
3
|
+
"password":{"type":"Password","ua":"Пароль","ru":"Пароль","validators": [
|
|
4
|
+
{
|
|
5
|
+
"type": "regexp",
|
|
6
|
+
"regexp": "^.{8,}$",
|
|
7
|
+
"flags": "gm",
|
|
8
|
+
"message": "Пароль повинен бути більше 8 символів"
|
|
9
|
+
}
|
|
10
|
+
]}
|
|
11
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": {
|
|
3
|
+
"group_name": {
|
|
4
|
+
"type": "Text",
|
|
5
|
+
"data": "customer_id",
|
|
6
|
+
"ua": "Назва",
|
|
7
|
+
"i": "Вноситься загальна назва групи доступу українською мовою",
|
|
8
|
+
"ru": "Название"
|
|
9
|
+
},
|
|
10
|
+
"info": {
|
|
11
|
+
"type": "Text",
|
|
12
|
+
"ua": "Опис",
|
|
13
|
+
"i": "Додається текстовий опис групи доступу, що буде збережений в системі",
|
|
14
|
+
"ru": "Описание"
|
|
15
|
+
},
|
|
16
|
+
"license": {
|
|
17
|
+
"type": "Select2",
|
|
18
|
+
"data": "license",
|
|
19
|
+
"ua": "Ліцензія",
|
|
20
|
+
"ru": "Лицензия",
|
|
21
|
+
"default": "0"
|
|
22
|
+
},
|
|
23
|
+
"product_code": {
|
|
24
|
+
"type": "Select2",
|
|
25
|
+
"data": "product_code",
|
|
26
|
+
"ua": "Код продукту",
|
|
27
|
+
"ru": "Код продукта",
|
|
28
|
+
"default": "0"
|
|
29
|
+
},
|
|
30
|
+
"allow_ip": {
|
|
31
|
+
"type": "Text",
|
|
32
|
+
"ua": "IP адреси",
|
|
33
|
+
"ru": "IP адреса"
|
|
34
|
+
},
|
|
35
|
+
"permission.edit_everything": {
|
|
36
|
+
"type": "Switcher",
|
|
37
|
+
"ua": "Редагувати не тільки власні записи"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": {
|
|
3
|
+
"d1": {
|
|
4
|
+
"type": "HTML",
|
|
5
|
+
"title": false,
|
|
6
|
+
"text": "<h4 class='text-center'>Акаунт</h4><br>",
|
|
7
|
+
"col": 12
|
|
8
|
+
},
|
|
9
|
+
"user_name": {
|
|
10
|
+
"type": "Text",
|
|
11
|
+
"validators": [
|
|
12
|
+
"required"
|
|
13
|
+
],
|
|
14
|
+
"ua": "Ім'я",
|
|
15
|
+
"i": "Вноситься ім'я користувача, що буде відображатися у системі",
|
|
16
|
+
"ru": "Имя"
|
|
17
|
+
},
|
|
18
|
+
"sur_name": {
|
|
19
|
+
"type": "Text",
|
|
20
|
+
"validators": [
|
|
21
|
+
"required"
|
|
22
|
+
],
|
|
23
|
+
"ua": "Прізвище",
|
|
24
|
+
"i": "Вноситься прізвище користувача, що буде відображатися у системі",
|
|
25
|
+
"ru": "Фамилия"
|
|
26
|
+
},
|
|
27
|
+
"phone": {
|
|
28
|
+
"type": "MarkedText",
|
|
29
|
+
"mask": "+389999999999",
|
|
30
|
+
"id": "1",
|
|
31
|
+
"ua": "Телефон",
|
|
32
|
+
"i": "Вноситься телефон користувача",
|
|
33
|
+
"ru": "Телефон"
|
|
34
|
+
},
|
|
35
|
+
"email": {
|
|
36
|
+
"type": "Email",
|
|
37
|
+
"ua": "E-mail",
|
|
38
|
+
"i": "Вноситься електронна адреса користувача",
|
|
39
|
+
"ru": "E-mail"
|
|
40
|
+
},
|
|
41
|
+
"d2": {
|
|
42
|
+
"type": "HTML",
|
|
43
|
+
"title": false,
|
|
44
|
+
"text": "<h4 class='text-center'>Логін / Пароль</h4><br>",
|
|
45
|
+
"col": 12
|
|
46
|
+
},
|
|
47
|
+
"login": {
|
|
48
|
+
"type": "Text",
|
|
49
|
+
"validators": [
|
|
50
|
+
"required"
|
|
51
|
+
],
|
|
52
|
+
"ua": "Логін",
|
|
53
|
+
"i": "Вноситься довільний логін користувача латинськими літерами, що буде використовуватися для входу в систему",
|
|
54
|
+
"ru": "Логин"
|
|
55
|
+
},
|
|
56
|
+
"password": {
|
|
57
|
+
"type": "Password",
|
|
58
|
+
"validators": [
|
|
59
|
+
"required",
|
|
60
|
+
{
|
|
61
|
+
"type": "regexp",
|
|
62
|
+
"regexp": "^.{8,}$",
|
|
63
|
+
"flags": "gm",
|
|
64
|
+
"message": "Пароль повинен бути більше 8 символів"
|
|
65
|
+
}
|
|
66
|
+
],
|
|
67
|
+
"ua": "Пароль",
|
|
68
|
+
"i": "Вноситься пароль, що буде використовуватися для входу в систему (рекомендоване використання складних паролів)",
|
|
69
|
+
"ru": "Пароль"
|
|
70
|
+
},
|
|
71
|
+
"d3": {
|
|
72
|
+
"type": "HTML",
|
|
73
|
+
"title": false,
|
|
74
|
+
"text": "<h4 class='text-center'>Доступ</h4><br>",
|
|
75
|
+
"col": 12
|
|
76
|
+
},
|
|
77
|
+
"user_type": {
|
|
78
|
+
"type": "Autocomplete",
|
|
79
|
+
"data": "user_type",
|
|
80
|
+
"default": "regular",
|
|
81
|
+
"ua": "Рівень доступу"
|
|
82
|
+
},
|
|
83
|
+
"enabled": {
|
|
84
|
+
"type": "Switcher",
|
|
85
|
+
"ua": "Off/On",
|
|
86
|
+
"help": "Off - користувач вимкнутий; On - Користувач увімкнутий"
|
|
87
|
+
},
|
|
88
|
+
"readonly": {
|
|
89
|
+
"type": "Switcher",
|
|
90
|
+
"ua": "Read Only",
|
|
91
|
+
"help": "On - У користувача усі інтерфейси в режимі перегляду, без редагування"
|
|
92
|
+
},
|
|
93
|
+
"d4": {
|
|
94
|
+
"type": "HTML",
|
|
95
|
+
"title": false,
|
|
96
|
+
"text": "<h4 class='text-center'>Профіль</h4><br>",
|
|
97
|
+
"col": 12
|
|
98
|
+
},
|
|
99
|
+
"user_rnokpp": {
|
|
100
|
+
"type": "MarkedText",
|
|
101
|
+
"mask": "9999999999",
|
|
102
|
+
"ua": "РНОКПП",
|
|
103
|
+
"col": 6,
|
|
104
|
+
"validators": [
|
|
105
|
+
{
|
|
106
|
+
"type": "regexp",
|
|
107
|
+
"regexp": "^([0-9]{10,10})$",
|
|
108
|
+
"flags": "g",
|
|
109
|
+
"message": "Лише цифри, 10 символів"
|
|
110
|
+
}
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
"organ_edrpou": {
|
|
114
|
+
"type": "MarkedText",
|
|
115
|
+
"mask": "99999999",
|
|
116
|
+
"ua": "Код ЄДРПОУ",
|
|
117
|
+
"col": 6,
|
|
118
|
+
"validators": [
|
|
119
|
+
{
|
|
120
|
+
"type": "regexp",
|
|
121
|
+
"regexp": "^([0-9]{8,8})$",
|
|
122
|
+
"flags": "g",
|
|
123
|
+
"message": "Лише цифри, 8 символів"
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
},
|
|
127
|
+
"avatar": {
|
|
128
|
+
"type": "File",
|
|
129
|
+
"ua": "Аватар",
|
|
130
|
+
"i": "Додається зображення, що буде відображено в системі у якості аватара цього користувача",
|
|
131
|
+
"ru": "Аватар",
|
|
132
|
+
"dir": "avatar"
|
|
133
|
+
},
|
|
134
|
+
"users_id": {
|
|
135
|
+
"table": "admin.user_group_rel",
|
|
136
|
+
"parent_id": "user_uid",
|
|
137
|
+
"colModel": [
|
|
138
|
+
{
|
|
139
|
+
"name": "user_group_id",
|
|
140
|
+
"ua": "Група",
|
|
141
|
+
"type": "Autocomplete",
|
|
142
|
+
"data": "user_group",
|
|
143
|
+
"add": {
|
|
144
|
+
"model": "admin.user_group",
|
|
145
|
+
"form": "form-user_group",
|
|
146
|
+
"title": "Додати групу"
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
],
|
|
150
|
+
"ua": "Групи",
|
|
151
|
+
"type": "DataTable",
|
|
152
|
+
"col": 12
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
"label_style": "vertical",
|
|
156
|
+
"width": 900
|
|
157
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"label_style": "vertical",
|
|
3
|
+
"reload":true,
|
|
4
|
+
"schema": {
|
|
5
|
+
"role": {
|
|
6
|
+
"type": "Select2",
|
|
7
|
+
"ua": "Доступ",
|
|
8
|
+
"ru": "Доступ",
|
|
9
|
+
"data": "user_access",
|
|
10
|
+
"validators": [
|
|
11
|
+
"required"
|
|
12
|
+
]
|
|
13
|
+
},
|
|
14
|
+
"doct_id": {
|
|
15
|
+
"type": "Autocomplete",
|
|
16
|
+
"data": "core.interface_list",
|
|
17
|
+
"validators": [
|
|
18
|
+
"required"
|
|
19
|
+
],
|
|
20
|
+
"ua": "Оберіть інтерфейс"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{{{_table name="management.user_group.table" order="cdate desc" sqlFilter1=1 sqlTable1=1}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{{{_table name="management.users.table" order="cdate desc" sqlTable1=1 filter_sql1=1 sqlFilter1=1 }}}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!DOCTYPE Map[]>
|
|
3
|
+
<Map buffer-size="128" maximum-extent="-20037508.34,-20037508.34,20037508.34,20037508.34" srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0.0 +k=1.0 +units=m +nadgrids=@null +wktext +no_defs +over">
|
|
4
|
+
<Parameters>
|
|
5
|
+
<Parameter name="format"><![CDATA[png]]></Parameter>
|
|
6
|
+
<Parameter name="bounds">22.21886234574473,44.39063304354448,39.488618053500204,52.25437909874123</Parameter>
|
|
7
|
+
<Parameter name="maximum-extent"><![CDATA[-20037508.34,-20037508.34,20037508.34,20037508.34]]></Parameter>
|
|
8
|
+
<Parameter name="center">0,0,2</Parameter>
|
|
9
|
+
<Parameter name="minzoom">1</Parameter>
|
|
10
|
+
<Parameter name="maxzoom">25</Parameter>
|
|
11
|
+
</Parameters>
|
|
12
|
+
<Style filter-mode="first" name="line_niv-fill">
|
|
13
|
+
<Rule>
|
|
14
|
+
<MaxScaleDenominator>25000000</MaxScaleDenominator>
|
|
15
|
+
<Filter><![CDATA[([niv_class_n] = 'II')]]></Filter>
|
|
16
|
+
<LineSymbolizer stroke="#ffffff" stroke-width="3" />
|
|
17
|
+
</Rule>
|
|
18
|
+
<Rule>
|
|
19
|
+
<MaxScaleDenominator>25000000</MaxScaleDenominator>
|
|
20
|
+
<Filter><![CDATA[([niv_class_n] = 'I')]]></Filter>
|
|
21
|
+
<LineSymbolizer stroke="#ffffff" stroke-width="3" />
|
|
22
|
+
</Rule>
|
|
23
|
+
</Style>
|
|
24
|
+
<Style filter-mode="first" name="line_niv">
|
|
25
|
+
<Rule>
|
|
26
|
+
<MaxScaleDenominator>25000000</MaxScaleDenominator>
|
|
27
|
+
<Filter><![CDATA[([niv_class_n] = 'II')]]></Filter>
|
|
28
|
+
<LineSymbolizer stroke="#0000ff" stroke-width="4" />
|
|
29
|
+
</Rule>
|
|
30
|
+
<Rule>
|
|
31
|
+
<MaxScaleDenominator>25000000</MaxScaleDenominator>
|
|
32
|
+
<Filter><![CDATA[([niv_class_n] = 'I')]]></Filter>
|
|
33
|
+
<LineSymbolizer stroke="#ff0000" stroke-width="4" />
|
|
34
|
+
</Rule>
|
|
35
|
+
</Style>
|
|
36
|
+
<Layer maximum-scale-denominator="25000000" minimum-scale-denominator="100" name="line_niv" srs="+proj=longlat +datum=WGS84 +no_defs ">
|
|
37
|
+
<StyleName><![CDATA[line_niv]]></StyleName>
|
|
38
|
+
<StyleName><![CDATA[line_niv-fill]]></StyleName>
|
|
39
|
+
<Datasource>
|
|
40
|
+
<Parameter name="simplify_geometries">true</Parameter>
|
|
41
|
+
<Parameter name="type"><![CDATA[postgis]]></Parameter>
|
|
42
|
+
<Parameter name="extent"><![CDATA[22.21886234574473,44.39063304354448,39.488618053500204,52.25437909874123]]></Parameter>
|
|
43
|
+
<Parameter name="host"><![CDATA[localhost]]></Parameter>
|
|
44
|
+
<Parameter name="table"><![CDATA[(select * from dgm.dgm_niv) as dp]]></Parameter>
|
|
45
|
+
<Parameter name="dbname"><![CDATA[geo_dgm_gki]]></Parameter>
|
|
46
|
+
<Parameter name="geometry_field"><![CDATA[geom]]></Parameter>
|
|
47
|
+
<Parameter name="port"><![CDATA[5432]]></Parameter>
|
|
48
|
+
<Parameter name="user"><![CDATA[postgres]]></Parameter>
|
|
49
|
+
<Parameter name="password"><![CDATA[1111]]></Parameter>
|
|
50
|
+
</Datasource>
|
|
51
|
+
</Layer>
|
|
52
|
+
</Map>
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
|
|
2
|
+
<div class="sidebar-collapse">
|
|
3
|
+
<div class="sidebar-settings-block">
|
|
4
|
+
<div class="program-name">
|
|
5
|
+
<a _href='/'>
|
|
6
|
+
{{#if @root.setting.admin_logo}}
|
|
7
|
+
<div class="program-logo text-center p-xs">
|
|
8
|
+
<img src="files/{{{@root.setting.admin_logo}}}">
|
|
9
|
+
</div>
|
|
10
|
+
{{/if}}
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
<div class="program-title h4 text-white text-center p-xs m-t-n-sm m-b-none">
|
|
14
|
+
{{{coalesce setting.admin.name setting.site_name 'Admin panel'}}}</div>
|
|
15
|
+
|
|
16
|
+
</a>
|
|
17
|
+
{{#if @root.setting.multilang.length}}
|
|
18
|
+
<div style='text-align:center'>
|
|
19
|
+
{{#each @root.setting.multilang}}
|
|
20
|
+
<a href='/{{{this}}}/'
|
|
21
|
+
class='btn btn-xs btn-info {{#ifCond this '==' @root.lang}}disabled{{/ifCond}}'
|
|
22
|
+
style='text-transform: uppercase'>{{this}}</a>
|
|
23
|
+
{{/each}}
|
|
24
|
+
</div>
|
|
25
|
+
{{/if}}
|
|
26
|
+
</div>
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
</div>
|
|
31
|
+
<ul class="nav metismenu menu-main" id="side-menu">
|
|
32
|
+
<li class="nav-header">
|
|
33
|
+
<div class="dropdown profile-element">
|
|
34
|
+
<div class="pull-left">
|
|
35
|
+
<img style='cursor:pointer' _href='{{home}}' alt="image" class="img-circle img-sm"
|
|
36
|
+
src="files/{{{coalesce user.avatar user.photo '../tpl/module/core/images/user_default.png'}}}" />
|
|
37
|
+
</div>
|
|
38
|
+
<a data-toggle="dropdown" class="dropdown-toggle" href="#">
|
|
39
|
+
<span class="clear">
|
|
40
|
+
<span class="block"> <strong class="font-bold">{{user.user_name}}
|
|
41
|
+
{{user.sur_name}}</strong>{{#if user.user_type}}({{user.user_type}}){{/if}}</span>
|
|
42
|
+
<span class="text-muted text-xs block">{{user.job}} <b class="caret"></b></span>
|
|
43
|
+
</span>
|
|
44
|
+
</a>
|
|
45
|
+
<ul class="dropdown-menu animated fadeInRight m-t-xs">
|
|
46
|
+
<li class="divider"></li>
|
|
47
|
+
<!--li><a href='/api/format/core.api.refrence.t' target='_blank'>Допомога</a></li-->
|
|
48
|
+
{{{setting.user_menu}}}
|
|
49
|
+
<li class="divider"></li>
|
|
50
|
+
<li><a href="/logout">{{mls 'logout'}}</a></li>
|
|
51
|
+
</ul>
|
|
52
|
+
</div>
|
|
53
|
+
<div class="logo-element">
|
|
54
|
+
<a _href='dashboard'>S+</a>
|
|
55
|
+
</div>
|
|
56
|
+
</li>
|
|
57
|
+
{{#each data}}
|
|
58
|
+
<li {{#ifCond path "not in" ",divider"}} _href="{{@root.req.session.suffix}}{{path}}"{{/ifCond}} data-menu-nav="true" title="{{lookup this @root.lang}}" {{#unless fixed}} module='{{coalesce module module}}' {{else}} fixed-menu {{/unless}}>
|
|
59
|
+
{{#ifCond path "==" "divider"}}
|
|
60
|
+
<span class="menu-group-title">{{lookup this @root.lang}}</span>
|
|
61
|
+
{{^}}
|
|
62
|
+
<a style="{{coalesce style ''}}">
|
|
63
|
+
{{#if icon}}<i class="menu-icon {{icon}}"></i>{{/if}} <span class="nav-label">{{coalesce (lookup this @root.lang) title}}</span>
|
|
64
|
+
{{#if menu}}<span class="fa arrow"></span>{{/if}}
|
|
65
|
+
</a>
|
|
66
|
+
{{#if menu}}
|
|
67
|
+
<ul class="nav nav-second-level collapse" style="">
|
|
68
|
+
{{#each menu}}
|
|
69
|
+
{{#ifCond path "==" "divider"}}
|
|
70
|
+
<li title="{{lookup this @root.lang}}"><span class="menu-group-title">{{lookup this @root.lang}}</span></li>
|
|
71
|
+
{{^}}
|
|
72
|
+
<li _href="{{@root.req.session.suffix}}{{path}}" data-menu-nav="true" title="{{lookup this @root.lang}}"><a class="position-r" style="{{coalesce style ''}}">{{#if icon}}<i class="nav-second-level__link-icon {{{icon}}}"></i>{{/if}}{{lookup this @root.lang}}</a></li>
|
|
73
|
+
{{/ifCond}}
|
|
74
|
+
{{/each}}
|
|
75
|
+
</ul>
|
|
76
|
+
{{/if}}
|
|
77
|
+
{{/ifCond}}
|
|
78
|
+
</li>
|
|
79
|
+
{{/each}}
|
|
80
|
+
</ul>
|
|
81
|
+
</div>
|
|
82
|
+
<script nonce="352acdc8af3009870977ebaf4aac50c5e124bb09">
|
|
83
|
+
/* Set active nav item */
|
|
84
|
+
const currentLocation = window.location.pathname;
|
|
85
|
+
const list = $(".metismenu li[_href]");
|
|
86
|
+
|
|
87
|
+
const matchedList = list
|
|
88
|
+
.filter((index, el) => currentLocation.indexOf($(el).attr("_href")) == 1)
|
|
89
|
+
.sort((prev, next) => $(next).attr("_href").length - $(prev).attr("_href").length);
|
|
90
|
+
|
|
91
|
+
const currentItem = matchedList[0];
|
|
92
|
+
|
|
93
|
+
if ($(currentItem).parent().closest("[data-menu-nav]")) {
|
|
94
|
+
$(currentItem).parent().collapse('show');
|
|
95
|
+
$(currentItem).parent().closest("[data-menu-nav]").addClass("active");
|
|
96
|
+
}
|
|
97
|
+
$(currentItem).addClass("active");
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
{{#ifCond 'module_menu' 'in' @root.setting.core.setting}}
|
|
101
|
+
$('.module-menu li>a').click( (el) =>{
|
|
102
|
+
$('.menu-main>li[module]').hide();
|
|
103
|
+
let module=el.target.getAttribute('module');
|
|
104
|
+
$('.menu-main>li[module="'+module+'"]').show();
|
|
105
|
+
$('.module_name_title').html(el.target.innerText);
|
|
106
|
+
})
|
|
107
|
+
{{/ifCond}}
|
|
108
|
+
</script>
|