Compare commits
No commits in common. "eefc7ba4ac1a3949c484465ca7f1edf55b5467f9" and "b215f88b2cefb3085ba3fa0d2db4f03b3901f3bc" have entirely different histories.
eefc7ba4ac
...
b215f88b2c
31
README.md
@ -1,30 +1 @@
|
|||||||
# Репозиторий фронтенд приложений
|
### Пуш приложений
|
||||||
|
|
||||||
* Репозиторий будет переименован. microapps-admin-vue -> frontend-apps
|
|
||||||
|
|
||||||
## Приложения:
|
|
||||||
* live_monitor_vue - приложение калькулятора
|
|
||||||
* proxy-ui-app - приложение управления роутерами на сайтах и сайтами
|
|
||||||
* users-manage - приложение управления пользователями
|
|
||||||
* [repo](./repo/Readme.md) - Репозиторий пакетов
|
|
||||||
|
|
||||||
### Установка пакета
|
|
||||||
* Для того чтобы установить пакет из репозитория, необходимо указать путь к пакету. Путь может быть абсолютным или относительным. Путь указывается к папке, содержащей файл `package.json`. Путь указывается относительно файла, в котором выполняется команда установки.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install ../path/to/mymodule
|
|
||||||
yarn ../path/to/mymodule
|
|
||||||
```
|
|
||||||
|
|
||||||
### Пример установки пакета
|
|
||||||
#### *Установка хэлперов*
|
|
||||||
* Для установки хэлперов необходимо выполнить команду установки пакета. Пакеты хэлперов находятся в папке `1-toolkits-helpers`.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
yarn add "~/Projects/microapps-admin-vue/repo/1-toolkits-helpers/"
|
|
||||||
...
|
|
||||||
or
|
|
||||||
...
|
|
||||||
yarn add "../repo/1-toolkits-helpers/"
|
|
||||||
```
|
|
||||||
|
|
||||||
@ -1,2 +0,0 @@
|
|||||||
VITE_API_ADDR="http://172.25.78.64:6175"
|
|
||||||
VITE_LOGGER_LEVEL=4
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
extends: [
|
|
||||||
"eslint:recommended",
|
|
||||||
"plugin:vue/vue3-recommended",
|
|
||||||
],
|
|
||||||
rules: {
|
|
||||||
"no-multiple-empty-lines": ["error", {max: 2, "maxBOF": 0}],
|
|
||||||
"vue/component-tags-order": ["error", {
|
|
||||||
"order": [ "script", "template", "style"]
|
|
||||||
}],
|
|
||||||
"vue/order-in-components": "error",
|
|
||||||
"indent": ["error", 2],
|
|
||||||
"no-mixed-spaces-and-tabs": "error",
|
|
||||||
"vue/attribute-hyphenation": "off",
|
|
||||||
"vue/html-self-closing": ["error", {
|
|
||||||
"html": {
|
|
||||||
"void": "never",
|
|
||||||
"normal": "always",
|
|
||||||
"component": "always"
|
|
||||||
},
|
|
||||||
"svg": "always",
|
|
||||||
"math": "always"
|
|
||||||
}],
|
|
||||||
"vue/no-reserved-component-names": "off",
|
|
||||||
"vue/html-indent": ["error", 2, {
|
|
||||||
"attribute": 1,
|
|
||||||
"baseIndent": 1,
|
|
||||||
"closeBracket": 0,
|
|
||||||
"alignAttributesVertically": true,
|
|
||||||
"ignores": []
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,14 +0,0 @@
|
|||||||
FROM node:lts-alpine
|
|
||||||
|
|
||||||
WORKDIR /app
|
|
||||||
|
|
||||||
COPY . ./
|
|
||||||
|
|
||||||
RUN npm install
|
|
||||||
RUN npm install -g serve
|
|
||||||
|
|
||||||
RUN chown -R node:node /app/node_modules
|
|
||||||
|
|
||||||
EXPOSE 8000
|
|
||||||
|
|
||||||
CMD ["npm", "run", "dckdev"]
|
|
||||||
@ -1,42 +0,0 @@
|
|||||||
HOOK_NAME=pre-push
|
|
||||||
HOOK_PATH=../.git/hooks/$(HOOK_NAME)
|
|
||||||
|
|
||||||
prehook:
|
|
||||||
@echo "Setting up pre-push hook..."
|
|
||||||
@rm -f $(HOOK_PATH)
|
|
||||||
@echo '#!/bin/sh' >> $(HOOK_PATH)
|
|
||||||
@echo 'echo "Running lint for live_monitor_vue"' >> $(HOOK_PATH)
|
|
||||||
@echo 'cd ./live_monitor_vue' >> $(HOOK_PATH)
|
|
||||||
@echo 'yarn lint' >> $(HOOK_PATH)
|
|
||||||
@echo 'if [ $$? -ne 0 ]; then' >> $(HOOK_PATH)
|
|
||||||
@echo ' echo "Tests failed, push aborted."' >> $(HOOK_PATH)
|
|
||||||
@echo ' exit 1' >> $(HOOK_PATH)
|
|
||||||
@echo 'fi' >> $(HOOK_PATH)
|
|
||||||
@echo 'echo "Running tests for live_monitor_vue"' >> $(HOOK_PATH)
|
|
||||||
@echo 'yarn test_ones' >> $(HOOK_PATH)
|
|
||||||
@echo 'if [ $$? -ne 0 ]; then' >> $(HOOK_PATH)
|
|
||||||
@echo ' echo "Tests failed, push aborted."' >> $(HOOK_PATH)
|
|
||||||
@echo ' exit 1' >> $(HOOK_PATH)
|
|
||||||
@echo 'fi' >> $(HOOK_PATH)
|
|
||||||
@echo 'exit 0' >> $(HOOK_PATH)
|
|
||||||
@chmod +x $(HOOK_PATH)
|
|
||||||
@echo "Pre-push hook set successfully."
|
|
||||||
|
|
||||||
add:
|
|
||||||
ifeq ($(pack),)
|
|
||||||
$(error mn is not set)
|
|
||||||
endif
|
|
||||||
yarn add "../repo/${pack}/"
|
|
||||||
|
|
||||||
packs_list:
|
|
||||||
cd .. && make packs_list
|
|
||||||
|
|
||||||
list_packs:
|
|
||||||
make packs_list
|
|
||||||
|
|
||||||
push:
|
|
||||||
ifeq ($(commit),)
|
|
||||||
$(error mn is not set)
|
|
||||||
endif
|
|
||||||
make prehook
|
|
||||||
git add . && git commit -m "$(commit)" && git push
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
# Vue 3 + Vite
|
|
||||||
|
|
||||||
This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
|
|
||||||
|
|
||||||
## Recommended IDE Setup
|
|
||||||
|
|
||||||
- [VS Code](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur) + [TypeScript Vue Plugin (Volar)](https://marketplace.visualstudio.com/items?itemName=Vue.vscode-typescript-vue-plugin).
|
|
||||||
@ -1,16 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
env: {
|
|
||||||
test: {
|
|
||||||
presets: [
|
|
||||||
[
|
|
||||||
"@babel/preset-env",
|
|
||||||
{
|
|
||||||
targets: {
|
|
||||||
node: "current",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@ -1,35 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<link rel="stylesheet" href="/css/remixicons.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/2_post.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/2_svg_btn.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/2_tabulator-table.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/3_menu.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/3_content.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/3_phx_loader.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/9_burger.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/9_dropdown.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/10_form.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/10_global.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/10_menu_animations.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/111_blog_news.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/111_group_settings.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/111_machines_bg.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/111_other.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/admin_panel.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/error_page.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/fonts.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/media.css">
|
|
||||||
<link rel="stylesheet" href="/css/components/menu.css">
|
|
||||||
<link rel="stylesheet" href="/css/_flatpickr.css">
|
|
||||||
<title>LiveMonitor</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="app"></div>
|
|
||||||
<script type="module" src="/src/main.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@ -1,57 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "live_monitor_vue",
|
|
||||||
"private": true,
|
|
||||||
"version": "0.0.0",
|
|
||||||
"type": "module",
|
|
||||||
"scripts": {
|
|
||||||
"dckdev": "vite --port 8000 --host 0.0.0.0",
|
|
||||||
"dev": "vite",
|
|
||||||
"build": "vite build",
|
|
||||||
"deploy": "vite build",
|
|
||||||
"preview": "vite preview",
|
|
||||||
"test": "vitest",
|
|
||||||
"test_ones": "vitest run",
|
|
||||||
"lint": "eslint --ext .js, **/*.vue",
|
|
||||||
"lint_fix": "eslint --ext .js, **/*.vue --fix"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"0-tools-eslint": "../repo/0-tools-eslint/",
|
|
||||||
"1-toolkits-helpers": "../repo/1-toolkits-helpers/",
|
|
||||||
"3-class-complex-assistants": "../repo/3-class-complex-assistants/",
|
|
||||||
"D": "^1.0.0",
|
|
||||||
"axios": "^1.6.2",
|
|
||||||
"echarts": "^5.4.3",
|
|
||||||
"flatpickr": "^4.6.13",
|
|
||||||
"flowbite": "^2.2.0",
|
|
||||||
"flowbite-vue": "^0.1.1",
|
|
||||||
"handlebars": "^4.7.8",
|
|
||||||
"happy-dom": "^14.3.1",
|
|
||||||
"lucide": "^0.298.0",
|
|
||||||
"moment": "^2.29.4",
|
|
||||||
"ol": "^8.2.0",
|
|
||||||
"postcss-import": "^15.1.0",
|
|
||||||
"ramda": "^0.29.1",
|
|
||||||
"ramda-vue": "^0.0.9",
|
|
||||||
"remixicon": "^4.0.1",
|
|
||||||
"tabulator-tables": "^5.5.2",
|
|
||||||
"vue": "^3.3.11",
|
|
||||||
"vue-multiselect": "^3.0.0-beta.3",
|
|
||||||
"vue-router": "4",
|
|
||||||
"vuex": "^4.1.0"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@tailwindcss/forms": "^0.5.7",
|
|
||||||
"@vitejs/plugin-vue": "^4.5.2",
|
|
||||||
"@vue/test-utils": "^2.4.5",
|
|
||||||
"autoprefixer": "^10.4.16",
|
|
||||||
"eslint": "^8.56.0",
|
|
||||||
"eslint-plugin-vue": "^9.19.2",
|
|
||||||
"postcss": "^8.4.32",
|
|
||||||
"postcss-advanced-variables": "^3.0.1",
|
|
||||||
"postcss-apply": "^0.12.0",
|
|
||||||
"postcss-nesting": "^12.0.2",
|
|
||||||
"tailwindcss": "^3.3.6",
|
|
||||||
"vite": "^5.0.8",
|
|
||||||
"vitest": "^1.4.0"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,10 +0,0 @@
|
|||||||
|
|
||||||
export default {
|
|
||||||
plugins: {
|
|
||||||
"postcss-import": {},
|
|
||||||
"postcss-advanced-variables": {},
|
|
||||||
"tailwindcss/nesting": {},
|
|
||||||
tailwindcss: {},
|
|
||||||
autoprefixer: {},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
@ -1,809 +0,0 @@
|
|||||||
.flatpickr-input {
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.flatpickr-calendar {
|
|
||||||
background: transparent;
|
|
||||||
opacity: 0;
|
|
||||||
display: none;
|
|
||||||
text-align: center;
|
|
||||||
visibility: hidden;
|
|
||||||
padding: 0;
|
|
||||||
-webkit-animation: none;
|
|
||||||
animation: none;
|
|
||||||
direction: ltr;
|
|
||||||
border: 0;
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 24px;
|
|
||||||
border-radius: 5px;
|
|
||||||
position: absolute;
|
|
||||||
width: 307.875px;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
-ms-touch-action: manipulation;
|
|
||||||
touch-action: manipulation;
|
|
||||||
background: #3f4458;
|
|
||||||
-webkit-box-shadow: 1px 0 0 #20222c, -1px 0 0 #20222c, 0 1px 0 #20222c,
|
|
||||||
0 -1px 0 #20222c, 0 3px 13px rgba(0, 0, 0, 0.08);
|
|
||||||
box-shadow: 1px 0 0 #20222c, -1px 0 0 #20222c, 0 1px 0 #20222c,
|
|
||||||
0 -1px 0 #20222c, 0 3px 13px rgba(0, 0, 0, 0.08);
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.open,
|
|
||||||
.flatpickr-calendar.inline {
|
|
||||||
opacity: 1;
|
|
||||||
max-height: 640px;
|
|
||||||
visibility: visible;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.open {
|
|
||||||
display: inline-block;
|
|
||||||
z-index: 99999;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.animate.open {
|
|
||||||
-webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
||||||
animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.inline {
|
|
||||||
display: block;
|
|
||||||
position: relative;
|
|
||||||
top: 2px;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.static {
|
|
||||||
position: absolute;
|
|
||||||
top: calc(100% + 2px);
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.static.open {
|
|
||||||
z-index: 999;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.multiMonth
|
|
||||||
.flatpickr-days
|
|
||||||
.dayContainer:nth-child(n + 1)
|
|
||||||
.flatpickr-day.inRange:nth-child(7n + 7) {
|
|
||||||
-webkit-box-shadow: none !important;
|
|
||||||
box-shadow: none !important;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.multiMonth
|
|
||||||
.flatpickr-days
|
|
||||||
.dayContainer:nth-child(n + 2)
|
|
||||||
.flatpickr-day.inRange:nth-child(7n + 1) {
|
|
||||||
-webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
|
|
||||||
box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar .hasWeeks .dayContainer,
|
|
||||||
.flatpickr-calendar .hasTime .dayContainer {
|
|
||||||
border-bottom: 0;
|
|
||||||
border-bottom-right-radius: 0;
|
|
||||||
border-bottom-left-radius: 0;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar .hasWeeks .dayContainer {
|
|
||||||
border-left: 0;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.hasTime .flatpickr-time {
|
|
||||||
height: 40px;
|
|
||||||
border-top: 1px solid #20222c;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar:before,
|
|
||||||
.flatpickr-calendar:after {
|
|
||||||
position: absolute;
|
|
||||||
display: block;
|
|
||||||
pointer-events: none;
|
|
||||||
border: solid transparent;
|
|
||||||
content: "";
|
|
||||||
height: 0;
|
|
||||||
width: 0;
|
|
||||||
left: 22px;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.rightMost:before,
|
|
||||||
.flatpickr-calendar.arrowRight:before,
|
|
||||||
.flatpickr-calendar.rightMost:after,
|
|
||||||
.flatpickr-calendar.arrowRight:after {
|
|
||||||
left: auto;
|
|
||||||
right: 22px;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.arrowCenter:before,
|
|
||||||
.flatpickr-calendar.arrowCenter:after {
|
|
||||||
left: 50%;
|
|
||||||
right: 50%;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar:before {
|
|
||||||
border-width: 5px;
|
|
||||||
margin: 0 -5px;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar:after {
|
|
||||||
border-width: 4px;
|
|
||||||
margin: 0 -4px;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.arrowTop:before,
|
|
||||||
.flatpickr-calendar.arrowTop:after {
|
|
||||||
bottom: 100%;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.arrowTop:before {
|
|
||||||
border-bottom-color: #20222c;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.arrowTop:after {
|
|
||||||
border-bottom-color: #3f4458;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.arrowBottom:before,
|
|
||||||
.flatpickr-calendar.arrowBottom:after {
|
|
||||||
top: 100%;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.arrowBottom:before {
|
|
||||||
border-top-color: #20222c;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar.arrowBottom:after {
|
|
||||||
border-top-color: #3f4458;
|
|
||||||
}
|
|
||||||
.flatpickr-calendar:focus {
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
.flatpickr-wrapper {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
.flatpickr-months {
|
|
||||||
display: -webkit-box;
|
|
||||||
display: -webkit-flex;
|
|
||||||
display: -ms-flexbox;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
.flatpickr-months .flatpickr-month {
|
|
||||||
background: #3f4458;
|
|
||||||
color: #fff;
|
|
||||||
fill: #fff;
|
|
||||||
height: 34px;
|
|
||||||
line-height: 1;
|
|
||||||
text-align: center;
|
|
||||||
position: relative;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
overflow: hidden;
|
|
||||||
-webkit-box-flex: 1;
|
|
||||||
-webkit-flex: 1;
|
|
||||||
-ms-flex: 1;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
.flatpickr-months .flatpickr-prev-month,
|
|
||||||
.flatpickr-months .flatpickr-next-month {
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
text-decoration: none;
|
|
||||||
cursor: pointer;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
height: 34px;
|
|
||||||
padding: 10px;
|
|
||||||
z-index: 3;
|
|
||||||
color: #fff;
|
|
||||||
fill: #fff;
|
|
||||||
}
|
|
||||||
.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
|
|
||||||
.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.flatpickr-months .flatpickr-prev-month i,
|
|
||||||
.flatpickr-months .flatpickr-next-month i {
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
|
|
||||||
.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
|
|
||||||
/*
|
|
||||||
/*rtl:begin:ignore*/
|
|
||||||
/*
|
|
||||||
*/
|
|
||||||
left: 0;
|
|
||||||
/*
|
|
||||||
/*rtl:end:ignore*/
|
|
||||||
/*
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
/*rtl:begin:ignore*/
|
|
||||||
/*
|
|
||||||
/*rtl:end:ignore*/
|
|
||||||
.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
|
|
||||||
.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
|
|
||||||
/*
|
|
||||||
/*rtl:begin:ignore*/
|
|
||||||
/*
|
|
||||||
*/
|
|
||||||
right: 0;
|
|
||||||
/*
|
|
||||||
/*rtl:end:ignore*/
|
|
||||||
/*
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
/*rtl:begin:ignore*/
|
|
||||||
/*
|
|
||||||
/*rtl:end:ignore*/
|
|
||||||
.flatpickr-months .flatpickr-prev-month:hover,
|
|
||||||
.flatpickr-months .flatpickr-next-month:hover {
|
|
||||||
color: #eee;
|
|
||||||
}
|
|
||||||
.flatpickr-months .flatpickr-prev-month:hover svg,
|
|
||||||
.flatpickr-months .flatpickr-next-month:hover svg {
|
|
||||||
fill: #f64747;
|
|
||||||
}
|
|
||||||
.flatpickr-months .flatpickr-prev-month svg,
|
|
||||||
.flatpickr-months .flatpickr-next-month svg {
|
|
||||||
width: 14px;
|
|
||||||
height: 14px;
|
|
||||||
}
|
|
||||||
.flatpickr-months .flatpickr-prev-month svg path,
|
|
||||||
.flatpickr-months .flatpickr-next-month svg path {
|
|
||||||
-webkit-transition: fill 0.1s;
|
|
||||||
transition: fill 0.1s;
|
|
||||||
fill: inherit;
|
|
||||||
}
|
|
||||||
.numInputWrapper {
|
|
||||||
position: relative;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.numInputWrapper input,
|
|
||||||
.numInputWrapper span {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
.numInputWrapper input {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.numInputWrapper input::-ms-clear {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.numInputWrapper input::-webkit-outer-spin-button,
|
|
||||||
.numInputWrapper input::-webkit-inner-spin-button {
|
|
||||||
margin: 0;
|
|
||||||
-webkit-appearance: none;
|
|
||||||
}
|
|
||||||
.numInputWrapper span {
|
|
||||||
position: absolute;
|
|
||||||
right: 0;
|
|
||||||
width: 14px;
|
|
||||||
padding: 0 4px 0 2px;
|
|
||||||
height: 50%;
|
|
||||||
line-height: 50%;
|
|
||||||
opacity: 0;
|
|
||||||
cursor: pointer;
|
|
||||||
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
.numInputWrapper span:hover {
|
|
||||||
background: rgba(192, 187, 167, 0.1);
|
|
||||||
}
|
|
||||||
.numInputWrapper span:active {
|
|
||||||
background: rgba(192, 187, 167, 0.2);
|
|
||||||
}
|
|
||||||
.numInputWrapper span:after {
|
|
||||||
display: block;
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
.numInputWrapper span.arrowUp {
|
|
||||||
top: 0;
|
|
||||||
border-bottom: 0;
|
|
||||||
}
|
|
||||||
.numInputWrapper span.arrowUp:after {
|
|
||||||
border-left: 4px solid transparent;
|
|
||||||
border-right: 4px solid transparent;
|
|
||||||
border-bottom: 4px solid rgba(255, 255, 255, 0.6);
|
|
||||||
top: 26%;
|
|
||||||
}
|
|
||||||
.numInputWrapper span.arrowDown {
|
|
||||||
top: 50%;
|
|
||||||
}
|
|
||||||
.numInputWrapper span.arrowDown:after {
|
|
||||||
border-left: 4px solid transparent;
|
|
||||||
border-right: 4px solid transparent;
|
|
||||||
border-top: 4px solid rgba(255, 255, 255, 0.6);
|
|
||||||
top: 40%;
|
|
||||||
}
|
|
||||||
.numInputWrapper span svg {
|
|
||||||
width: inherit;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
.numInputWrapper span svg path {
|
|
||||||
fill: rgba(255, 255, 255, 0.5);
|
|
||||||
}
|
|
||||||
.numInputWrapper:hover {
|
|
||||||
background: rgba(192, 187, 167, 0.05);
|
|
||||||
}
|
|
||||||
.numInputWrapper:hover span {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
.flatpickr-current-month {
|
|
||||||
font-size: 135%;
|
|
||||||
line-height: inherit;
|
|
||||||
font-weight: 300;
|
|
||||||
color: inherit;
|
|
||||||
position: absolute;
|
|
||||||
width: 75%;
|
|
||||||
left: 12.5%;
|
|
||||||
padding: 7.48px 0 0 0;
|
|
||||||
line-height: 1;
|
|
||||||
height: 34px;
|
|
||||||
display: inline-block;
|
|
||||||
text-align: center;
|
|
||||||
-webkit-transform: translate3d(0px, 0px, 0px);
|
|
||||||
transform: translate3d(0px, 0px, 0px);
|
|
||||||
}
|
|
||||||
.flatpickr-current-month span.cur-month {
|
|
||||||
font-family: inherit;
|
|
||||||
font-weight: 700;
|
|
||||||
color: inherit;
|
|
||||||
display: inline-block;
|
|
||||||
margin-left: 0.5ch;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.flatpickr-current-month span.cur-month:hover {
|
|
||||||
background: rgba(192, 187, 167, 0.05);
|
|
||||||
}
|
|
||||||
.flatpickr-current-month .numInputWrapper {
|
|
||||||
width: 6ch;
|
|
||||||
width: 7ch\0;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
.flatpickr-current-month .numInputWrapper span.arrowUp:after {
|
|
||||||
border-bottom-color: #fff;
|
|
||||||
}
|
|
||||||
.flatpickr-current-month .numInputWrapper span.arrowDown:after {
|
|
||||||
border-top-color: #fff;
|
|
||||||
}
|
|
||||||
.flatpickr-current-month input.cur-year {
|
|
||||||
background: transparent;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
color: inherit;
|
|
||||||
cursor: text;
|
|
||||||
padding: 0 0 0 0.5ch;
|
|
||||||
margin: 0;
|
|
||||||
display: inline-block;
|
|
||||||
font-size: inherit;
|
|
||||||
font-family: inherit;
|
|
||||||
font-weight: 300;
|
|
||||||
line-height: inherit;
|
|
||||||
height: auto;
|
|
||||||
border: 0;
|
|
||||||
border-radius: 0;
|
|
||||||
vertical-align: initial;
|
|
||||||
-webkit-appearance: textfield;
|
|
||||||
-moz-appearance: textfield;
|
|
||||||
appearance: textfield;
|
|
||||||
}
|
|
||||||
.flatpickr-current-month input.cur-year:focus {
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
.flatpickr-current-month input.cur-year[disabled],
|
|
||||||
.flatpickr-current-month input.cur-year[disabled]:hover {
|
|
||||||
font-size: 100%;
|
|
||||||
color: rgba(255, 255, 255, 0.5);
|
|
||||||
background: transparent;
|
|
||||||
pointer-events: none;
|
|
||||||
}
|
|
||||||
.flatpickr-current-month .flatpickr-monthDropdown-months {
|
|
||||||
appearance: menulist;
|
|
||||||
background: #3f4458;
|
|
||||||
border: none;
|
|
||||||
border-radius: 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
color: inherit;
|
|
||||||
cursor: pointer;
|
|
||||||
font-size: inherit;
|
|
||||||
font-family: inherit;
|
|
||||||
font-weight: 300;
|
|
||||||
height: auto;
|
|
||||||
line-height: inherit;
|
|
||||||
margin: -1px 0 0 0;
|
|
||||||
outline: none;
|
|
||||||
padding: 0 0 0 0.5ch;
|
|
||||||
position: relative;
|
|
||||||
vertical-align: initial;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
-webkit-appearance: menulist;
|
|
||||||
-moz-appearance: menulist;
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
|
|
||||||
.flatpickr-current-month .flatpickr-monthDropdown-months:active {
|
|
||||||
outline: none;
|
|
||||||
}
|
|
||||||
.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
|
|
||||||
background: rgba(192, 187, 167, 0.05);
|
|
||||||
}
|
|
||||||
.flatpickr-current-month
|
|
||||||
.flatpickr-monthDropdown-months
|
|
||||||
.flatpickr-monthDropdown-month {
|
|
||||||
background-color: #3f4458;
|
|
||||||
outline: none;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
.flatpickr-weekdays {
|
|
||||||
background: transparent;
|
|
||||||
text-align: center;
|
|
||||||
overflow: hidden;
|
|
||||||
width: 100%;
|
|
||||||
display: -webkit-box;
|
|
||||||
display: -webkit-flex;
|
|
||||||
display: -ms-flexbox;
|
|
||||||
display: flex;
|
|
||||||
-webkit-box-align: center;
|
|
||||||
-webkit-align-items: center;
|
|
||||||
-ms-flex-align: center;
|
|
||||||
align-items: center;
|
|
||||||
height: 28px;
|
|
||||||
}
|
|
||||||
.flatpickr-weekdays .flatpickr-weekdaycontainer {
|
|
||||||
display: -webkit-box;
|
|
||||||
display: -webkit-flex;
|
|
||||||
display: -ms-flexbox;
|
|
||||||
display: flex;
|
|
||||||
-webkit-box-flex: 1;
|
|
||||||
-webkit-flex: 1;
|
|
||||||
-ms-flex: 1;
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
span.flatpickr-weekday {
|
|
||||||
cursor: default;
|
|
||||||
font-size: 90%;
|
|
||||||
background: #3f4458;
|
|
||||||
color: #fff;
|
|
||||||
line-height: 1;
|
|
||||||
margin: 0;
|
|
||||||
text-align: center;
|
|
||||||
display: block;
|
|
||||||
-webkit-box-flex: 1;
|
|
||||||
-webkit-flex: 1;
|
|
||||||
-ms-flex: 1;
|
|
||||||
flex: 1;
|
|
||||||
font-weight: bolder;
|
|
||||||
}
|
|
||||||
.dayContainer,
|
|
||||||
.flatpickr-weeks {
|
|
||||||
padding: 1px 0 0 0;
|
|
||||||
}
|
|
||||||
.flatpickr-days {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
display: -webkit-box;
|
|
||||||
display: -webkit-flex;
|
|
||||||
display: -ms-flexbox;
|
|
||||||
display: flex;
|
|
||||||
-webkit-box-align: start;
|
|
||||||
-webkit-align-items: flex-start;
|
|
||||||
-ms-flex-align: start;
|
|
||||||
align-items: flex-start;
|
|
||||||
width: 307.875px;
|
|
||||||
}
|
|
||||||
.flatpickr-days:focus {
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
.dayContainer {
|
|
||||||
padding: 0;
|
|
||||||
outline: 0;
|
|
||||||
text-align: left;
|
|
||||||
width: 307.875px;
|
|
||||||
min-width: 307.875px;
|
|
||||||
max-width: 307.875px;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
display: inline-block;
|
|
||||||
display: -ms-flexbox;
|
|
||||||
display: -webkit-box;
|
|
||||||
display: -webkit-flex;
|
|
||||||
display: flex;
|
|
||||||
-webkit-flex-wrap: wrap;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
-ms-flex-wrap: wrap;
|
|
||||||
-ms-flex-pack: justify;
|
|
||||||
-webkit-justify-content: space-around;
|
|
||||||
justify-content: space-around;
|
|
||||||
-webkit-transform: translate3d(0px, 0px, 0px);
|
|
||||||
transform: translate3d(0px, 0px, 0px);
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
.dayContainer + .dayContainer {
|
|
||||||
-webkit-box-shadow: -1px 0 0 #20222c;
|
|
||||||
box-shadow: -1px 0 0 #20222c;
|
|
||||||
}
|
|
||||||
.flatpickr-day {
|
|
||||||
background: none;
|
|
||||||
border: 1px solid transparent;
|
|
||||||
border-radius: 150px;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
color: rgba(255, 255, 255, 0.95);
|
|
||||||
cursor: pointer;
|
|
||||||
font-weight: 400;
|
|
||||||
width: 14.2857143%;
|
|
||||||
-webkit-flex-basis: 14.2857143%;
|
|
||||||
-ms-flex-preferred-size: 14.2857143%;
|
|
||||||
flex-basis: 14.2857143%;
|
|
||||||
max-width: 39px;
|
|
||||||
height: 39px;
|
|
||||||
line-height: 39px;
|
|
||||||
margin: 0;
|
|
||||||
display: inline-block;
|
|
||||||
position: relative;
|
|
||||||
-webkit-box-pack: center;
|
|
||||||
-webkit-justify-content: center;
|
|
||||||
-ms-flex-pack: center;
|
|
||||||
justify-content: center;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.flatpickr-day.inRange,
|
|
||||||
.flatpickr-day.prevMonthDay.inRange,
|
|
||||||
.flatpickr-day.nextMonthDay.inRange,
|
|
||||||
.flatpickr-day.today.inRange,
|
|
||||||
.flatpickr-day.prevMonthDay.today.inRange,
|
|
||||||
.flatpickr-day.nextMonthDay.today.inRange,
|
|
||||||
.flatpickr-day:hover,
|
|
||||||
.flatpickr-day.prevMonthDay:hover,
|
|
||||||
.flatpickr-day.nextMonthDay:hover,
|
|
||||||
.flatpickr-day:focus,
|
|
||||||
.flatpickr-day.prevMonthDay:focus,
|
|
||||||
.flatpickr-day.nextMonthDay:focus {
|
|
||||||
cursor: pointer;
|
|
||||||
outline: 0;
|
|
||||||
background: #646c8c;
|
|
||||||
border-color: #646c8c;
|
|
||||||
}
|
|
||||||
.flatpickr-day.today {
|
|
||||||
border-color: #eee;
|
|
||||||
}
|
|
||||||
.flatpickr-day.today:hover,
|
|
||||||
.flatpickr-day.today:focus {
|
|
||||||
border-color: #eee;
|
|
||||||
background: #eee;
|
|
||||||
color: #3f4458;
|
|
||||||
}
|
|
||||||
.flatpickr-day.selected,
|
|
||||||
.flatpickr-day.startRange,
|
|
||||||
.flatpickr-day.endRange,
|
|
||||||
.flatpickr-day.selected.inRange,
|
|
||||||
.flatpickr-day.startRange.inRange,
|
|
||||||
.flatpickr-day.endRange.inRange,
|
|
||||||
.flatpickr-day.selected:focus,
|
|
||||||
.flatpickr-day.startRange:focus,
|
|
||||||
.flatpickr-day.endRange:focus,
|
|
||||||
.flatpickr-day.selected:hover,
|
|
||||||
.flatpickr-day.startRange:hover,
|
|
||||||
.flatpickr-day.endRange:hover,
|
|
||||||
.flatpickr-day.selected.prevMonthDay,
|
|
||||||
.flatpickr-day.startRange.prevMonthDay,
|
|
||||||
.flatpickr-day.endRange.prevMonthDay,
|
|
||||||
.flatpickr-day.selected.nextMonthDay,
|
|
||||||
.flatpickr-day.startRange.nextMonthDay,
|
|
||||||
.flatpickr-day.endRange.nextMonthDay {
|
|
||||||
background: #80cbc4;
|
|
||||||
-webkit-box-shadow: none;
|
|
||||||
box-shadow: none;
|
|
||||||
color: #fff;
|
|
||||||
border-color: #80cbc4;
|
|
||||||
}
|
|
||||||
.flatpickr-day.selected.startRange,
|
|
||||||
.flatpickr-day.startRange.startRange,
|
|
||||||
.flatpickr-day.endRange.startRange {
|
|
||||||
border-radius: 50px 0 0 50px;
|
|
||||||
}
|
|
||||||
.flatpickr-day.selected.endRange,
|
|
||||||
.flatpickr-day.startRange.endRange,
|
|
||||||
.flatpickr-day.endRange.endRange {
|
|
||||||
border-radius: 0 50px 50px 0;
|
|
||||||
}
|
|
||||||
.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n + 1)),
|
|
||||||
.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n + 1)),
|
|
||||||
.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n + 1)) {
|
|
||||||
-webkit-box-shadow: -10px 0 0 #80cbc4;
|
|
||||||
box-shadow: -10px 0 0 #80cbc4;
|
|
||||||
}
|
|
||||||
.flatpickr-day.selected.startRange.endRange,
|
|
||||||
.flatpickr-day.startRange.startRange.endRange,
|
|
||||||
.flatpickr-day.endRange.startRange.endRange {
|
|
||||||
border-radius: 50px;
|
|
||||||
}
|
|
||||||
.flatpickr-day.inRange {
|
|
||||||
border-radius: 0;
|
|
||||||
-webkit-box-shadow: -5px 0 0 #646c8c, 5px 0 0 #646c8c;
|
|
||||||
box-shadow: -5px 0 0 #646c8c, 5px 0 0 #646c8c;
|
|
||||||
}
|
|
||||||
.flatpickr-day.flatpickr-disabled,
|
|
||||||
.flatpickr-day.flatpickr-disabled:hover,
|
|
||||||
.flatpickr-day.prevMonthDay,
|
|
||||||
.flatpickr-day.nextMonthDay,
|
|
||||||
.flatpickr-day.notAllowed,
|
|
||||||
.flatpickr-day.notAllowed.prevMonthDay,
|
|
||||||
.flatpickr-day.notAllowed.nextMonthDay {
|
|
||||||
color: rgba(255, 255, 255, 0.3);
|
|
||||||
background: transparent;
|
|
||||||
border-color: transparent;
|
|
||||||
cursor: default;
|
|
||||||
}
|
|
||||||
.flatpickr-day.flatpickr-disabled,
|
|
||||||
.flatpickr-day.flatpickr-disabled:hover {
|
|
||||||
cursor: not-allowed;
|
|
||||||
color: rgba(255, 255, 255, 0.1);
|
|
||||||
}
|
|
||||||
.flatpickr-day.week.selected {
|
|
||||||
border-radius: 0;
|
|
||||||
-webkit-box-shadow: -5px 0 0 #80cbc4, 5px 0 0 #80cbc4;
|
|
||||||
box-shadow: -5px 0 0 #80cbc4, 5px 0 0 #80cbc4;
|
|
||||||
}
|
|
||||||
.flatpickr-day.hidden {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
.rangeMode .flatpickr-day {
|
|
||||||
margin-top: 1px;
|
|
||||||
}
|
|
||||||
.flatpickr-weekwrapper {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
.flatpickr-weekwrapper .flatpickr-weeks {
|
|
||||||
padding: 0 12px;
|
|
||||||
-webkit-box-shadow: 1px 0 0 #20222c;
|
|
||||||
box-shadow: 1px 0 0 #20222c;
|
|
||||||
}
|
|
||||||
.flatpickr-weekwrapper .flatpickr-weekday {
|
|
||||||
float: none;
|
|
||||||
width: 100%;
|
|
||||||
line-height: 28px;
|
|
||||||
}
|
|
||||||
.flatpickr-weekwrapper span.flatpickr-day,
|
|
||||||
.flatpickr-weekwrapper span.flatpickr-day:hover {
|
|
||||||
display: block;
|
|
||||||
width: 100%;
|
|
||||||
max-width: none;
|
|
||||||
color: rgba(255, 255, 255, 0.3);
|
|
||||||
background: transparent;
|
|
||||||
cursor: default;
|
|
||||||
border: none;
|
|
||||||
}
|
|
||||||
.flatpickr-innerContainer {
|
|
||||||
display: block;
|
|
||||||
display: -webkit-box;
|
|
||||||
display: -webkit-flex;
|
|
||||||
display: -ms-flexbox;
|
|
||||||
display: flex;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.flatpickr-rContainer {
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
}
|
|
||||||
.flatpickr-time {
|
|
||||||
text-align: center;
|
|
||||||
outline: 0;
|
|
||||||
display: block;
|
|
||||||
height: 0;
|
|
||||||
line-height: 40px;
|
|
||||||
max-height: 40px;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
overflow: hidden;
|
|
||||||
display: -webkit-box;
|
|
||||||
display: -webkit-flex;
|
|
||||||
display: -ms-flexbox;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
.flatpickr-time:after {
|
|
||||||
content: "";
|
|
||||||
display: table;
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
.flatpickr-time .numInputWrapper {
|
|
||||||
-webkit-box-flex: 1;
|
|
||||||
-webkit-flex: 1;
|
|
||||||
-ms-flex: 1;
|
|
||||||
flex: 1;
|
|
||||||
width: 40%;
|
|
||||||
height: 40px;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
.flatpickr-time .numInputWrapper span.arrowUp:after {
|
|
||||||
border-bottom-color: rgba(255, 255, 255, 0.95);
|
|
||||||
}
|
|
||||||
.flatpickr-time .numInputWrapper span.arrowDown:after {
|
|
||||||
border-top-color: rgba(255, 255, 255, 0.95);
|
|
||||||
}
|
|
||||||
.flatpickr-time.hasSeconds .numInputWrapper {
|
|
||||||
width: 26%;
|
|
||||||
}
|
|
||||||
.flatpickr-time.time24hr .numInputWrapper {
|
|
||||||
width: 49%;
|
|
||||||
}
|
|
||||||
.flatpickr-time input {
|
|
||||||
background: transparent;
|
|
||||||
-webkit-box-shadow: none;
|
|
||||||
box-shadow: none;
|
|
||||||
border: 0;
|
|
||||||
border-radius: 0;
|
|
||||||
text-align: center;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
height: inherit;
|
|
||||||
line-height: inherit;
|
|
||||||
color: rgba(255, 255, 255, 0.95);
|
|
||||||
font-size: 14px;
|
|
||||||
position: relative;
|
|
||||||
-webkit-box-sizing: border-box;
|
|
||||||
box-sizing: border-box;
|
|
||||||
-webkit-appearance: textfield;
|
|
||||||
-moz-appearance: textfield;
|
|
||||||
appearance: textfield;
|
|
||||||
}
|
|
||||||
.flatpickr-time input.flatpickr-hour {
|
|
||||||
font-weight: bold;
|
|
||||||
}
|
|
||||||
.flatpickr-time input.flatpickr-minute,
|
|
||||||
.flatpickr-time input.flatpickr-second {
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
.flatpickr-time input:focus {
|
|
||||||
outline: 0;
|
|
||||||
border: 0;
|
|
||||||
}
|
|
||||||
.flatpickr-time .flatpickr-time-separator,
|
|
||||||
.flatpickr-time .flatpickr-am-pm {
|
|
||||||
height: inherit;
|
|
||||||
float: left;
|
|
||||||
line-height: inherit;
|
|
||||||
color: rgba(255, 255, 255, 0.95);
|
|
||||||
font-weight: bold;
|
|
||||||
width: 2%;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
-webkit-align-self: center;
|
|
||||||
-ms-flex-item-align: center;
|
|
||||||
align-self: center;
|
|
||||||
}
|
|
||||||
.flatpickr-time .flatpickr-am-pm {
|
|
||||||
outline: 0;
|
|
||||||
width: 18%;
|
|
||||||
cursor: pointer;
|
|
||||||
text-align: center;
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
.flatpickr-time input:hover,
|
|
||||||
.flatpickr-time .flatpickr-am-pm:hover,
|
|
||||||
.flatpickr-time input:focus,
|
|
||||||
.flatpickr-time .flatpickr-am-pm:focus {
|
|
||||||
background: #6a7395;
|
|
||||||
}
|
|
||||||
.flatpickr-input[readonly] {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
@-webkit-keyframes fpFadeInDown {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
-webkit-transform: translate3d(0, -20px, 0);
|
|
||||||
transform: translate3d(0, -20px, 0);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
-webkit-transform: translate3d(0, 0, 0);
|
|
||||||
transform: translate3d(0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes fpFadeInDown {
|
|
||||||
from {
|
|
||||||
opacity: 0;
|
|
||||||
-webkit-transform: translate3d(0, -20px, 0);
|
|
||||||
transform: translate3d(0, -20px, 0);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
opacity: 1;
|
|
||||||
-webkit-transform: translate3d(0, 0, 0);
|
|
||||||
transform: translate3d(0, 0, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,107 +0,0 @@
|
|||||||
.admin_button_bv {
|
|
||||||
transition: all 0.3s;
|
|
||||||
display: flex;
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0px;
|
|
||||||
right: 11px;
|
|
||||||
z-index: 1001;
|
|
||||||
border-radius: 100% 0 0 100%;
|
|
||||||
padding: 10px;
|
|
||||||
background-color: white;
|
|
||||||
border: 1px solid rgb(206, 206, 206);
|
|
||||||
border-right: none;
|
|
||||||
opacity: 0.6;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 720px) {
|
|
||||||
.admin_button_bv {
|
|
||||||
right: -3000px;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.admin_panel_wrapper_bv * {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_button_bv:hover {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_button_bv svg {
|
|
||||||
fill: rgb(85, 84, 82);
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_wrapper_bv {
|
|
||||||
position: fixed;
|
|
||||||
z-index: 1001;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_bv {
|
|
||||||
box-shadow: -10px -10px 30px 4px rgba(20, 55, 82, 0.15);
|
|
||||||
transition: all 0.3s;
|
|
||||||
position: fixed;
|
|
||||||
z-index: 1005;
|
|
||||||
height: 400px;
|
|
||||||
width: 250px;
|
|
||||||
background-color: white;
|
|
||||||
border: 1px solid rgb(224, 228, 231);
|
|
||||||
bottom: 0;
|
|
||||||
right: 11px;
|
|
||||||
border-radius: 5px 0 0 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_bv.closed {
|
|
||||||
right: -400px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_bv > .admin_panel_header {
|
|
||||||
border-bottom: 1px solid rgb(211, 211, 211);
|
|
||||||
width: 100%;
|
|
||||||
padding: 10px;
|
|
||||||
display: flex;
|
|
||||||
justify-content: space-between;
|
|
||||||
align-items: center;
|
|
||||||
font-weight: 700;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_bv > .admin_panel_header > svg {
|
|
||||||
fill: gray;
|
|
||||||
transition: all 0.3s;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_bv > .admin_panel_header > svg:hover {
|
|
||||||
fill: rgb(66, 65, 62);
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_bv > .admin_panel_body {
|
|
||||||
padding: 10px;
|
|
||||||
padding-top: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_body li {
|
|
||||||
list-style-type: none;
|
|
||||||
font-size: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_bv > .admin_panel_body > ul > li {
|
|
||||||
border-bottom: 1px solid rgb(220, 220, 220);
|
|
||||||
padding-bottom: 10px;
|
|
||||||
margin-bottom: 10px;
|
|
||||||
transition: all 0.1s;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_bv > .admin_panel_body > ul > li:hover {
|
|
||||||
color: rgb(89, 108, 218);
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_bv > .admin_panel_body > ul > li:active {
|
|
||||||
color: rgb(69, 88, 199);
|
|
||||||
}
|
|
||||||
|
|
||||||
.main_wrapper_increased {
|
|
||||||
padding-bottom: 400px;
|
|
||||||
}
|
|
||||||
@ -1,365 +0,0 @@
|
|||||||
[type="text"],
|
|
||||||
[type="email"],
|
|
||||||
[type="url"],
|
|
||||||
[type="password"],
|
|
||||||
[type="number"],
|
|
||||||
[type="date"],
|
|
||||||
[type="datetime-local"],
|
|
||||||
[type="month"],
|
|
||||||
[type="search"],
|
|
||||||
[type="tel"],
|
|
||||||
[type="time"],
|
|
||||||
[type="week"],
|
|
||||||
[multiple],
|
|
||||||
textarea,
|
|
||||||
select {
|
|
||||||
--tw-border-opacity: 1;
|
|
||||||
border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity));
|
|
||||||
}
|
|
||||||
.form-check {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
.form-check-label {
|
|
||||||
margin-left: 0.5rem;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.form-check-input {
|
|
||||||
transition-property: all;
|
|
||||||
transition-duration: 100ms;
|
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
||||||
}
|
|
||||||
.form-check-input[type="radio"] {
|
|
||||||
cursor: pointer;
|
|
||||||
--tw-border-opacity: 1;
|
|
||||||
border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity));
|
|
||||||
--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
||||||
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
|
|
||||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
|
||||||
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
||||||
}
|
|
||||||
.form-check-input[type="radio"]:focus {
|
|
||||||
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
|
||||||
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
||||||
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
|
||||||
calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
||||||
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
|
||||||
var(--tw-shadow, 0 0 #0000);
|
|
||||||
--tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity));
|
|
||||||
--tw-ring-opacity: 0.2;
|
|
||||||
--tw-ring-offset-width: 0px;
|
|
||||||
}
|
|
||||||
.dark .form-check-input[type="radio"] {
|
|
||||||
border-color: transparent;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.dark .form-check-input[type="radio"]:focus {
|
|
||||||
--tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity));
|
|
||||||
--tw-ring-opacity: 0.5;
|
|
||||||
}
|
|
||||||
.form-check-input[type="radio"]:checked {
|
|
||||||
border-color: rgb(var(--color-primary) / var(--tw-border-opacity));
|
|
||||||
--tw-border-opacity: 0.1;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-primary) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.form-check-input[type="radio"]:disabled:not(:checked) {
|
|
||||||
cursor: not-allowed;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.dark .form-check-input[type="radio"]:disabled:not(:checked) {
|
|
||||||
background-color: rgb(var(--color-darkmode-800) / 0.5);
|
|
||||||
}
|
|
||||||
.form-check-input[type="radio"]:disabled:checked {
|
|
||||||
cursor: not-allowed;
|
|
||||||
opacity: 0.7;
|
|
||||||
}
|
|
||||||
.dark .form-check-input[type="radio"]:disabled:checked {
|
|
||||||
background-color: rgb(var(--color-darkmode-800) / 0.5);
|
|
||||||
}
|
|
||||||
.form-check-input[type="checkbox"] {
|
|
||||||
cursor: pointer;
|
|
||||||
border-radius: 0.25rem;
|
|
||||||
--tw-border-opacity: 1;
|
|
||||||
border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity));
|
|
||||||
--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
||||||
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
|
|
||||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
|
||||||
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
||||||
}
|
|
||||||
.form-check-input[type="checkbox"]:focus {
|
|
||||||
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
|
||||||
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
||||||
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
|
||||||
calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
||||||
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
|
||||||
var(--tw-shadow, 0 0 #0000);
|
|
||||||
--tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity));
|
|
||||||
--tw-ring-opacity: 0.2;
|
|
||||||
--tw-ring-offset-width: 0px;
|
|
||||||
}
|
|
||||||
.dark .form-check-input[type="checkbox"] {
|
|
||||||
border-color: transparent;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.dark .form-check-input[type="checkbox"]:focus {
|
|
||||||
--tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity));
|
|
||||||
--tw-ring-opacity: 0.5;
|
|
||||||
}
|
|
||||||
.form-check-input[type="checkbox"]:checked {
|
|
||||||
border-color: rgb(var(--color-primary) / var(--tw-border-opacity));
|
|
||||||
--tw-border-opacity: 0.1;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-primary) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.form-check-input[type="checkbox"]:disabled:not(:checked) {
|
|
||||||
cursor: not-allowed;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.dark .form-check-input[type="checkbox"]:disabled:not(:checked) {
|
|
||||||
background-color: rgb(var(--color-darkmode-800) / 0.5);
|
|
||||||
}
|
|
||||||
.form-check-input[type="checkbox"]:disabled:checked {
|
|
||||||
cursor: not-allowed;
|
|
||||||
opacity: 0.7;
|
|
||||||
}
|
|
||||||
.dark .form-check-input[type="checkbox"]:disabled:checked {
|
|
||||||
background-color: rgb(var(--color-darkmode-800) / 0.5);
|
|
||||||
}
|
|
||||||
.form-switch .form-check-input {
|
|
||||||
width: 38px;
|
|
||||||
height: 24px;
|
|
||||||
padding: 1px;
|
|
||||||
position: relative;
|
|
||||||
border-radius: 9999px;
|
|
||||||
background-image: none;
|
|
||||||
}
|
|
||||||
.form-switch .form-check-input:before {
|
|
||||||
content: "";
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.25);
|
|
||||||
transition-property: margin-left;
|
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
bottom: 0px;
|
|
||||||
margin-top: auto;
|
|
||||||
margin-bottom: auto;
|
|
||||||
border-radius: 9999px;
|
|
||||||
transition-duration: 200ms;
|
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
||||||
}
|
|
||||||
.dark .form-switch .form-check-input:before {
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.form-switch .form-check-input:checked {
|
|
||||||
--tw-border-opacity: 1;
|
|
||||||
border-color: rgb(var(--color-success) / var(--tw-border-opacity));
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-success) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.form-switch .form-check-input:checked::before {
|
|
||||||
margin-left: 14px;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
/* Default Form Control */
|
|
||||||
.form-control {
|
|
||||||
width: 100%;
|
|
||||||
border-radius: 0.375rem;
|
|
||||||
--tw-border-opacity: 1;
|
|
||||||
border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity));
|
|
||||||
font-size: 0.875rem;
|
|
||||||
line-height: 1.25rem;
|
|
||||||
--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
||||||
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
|
|
||||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
|
||||||
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
||||||
transition-property: color, background-color, border-color, fill, stroke,
|
|
||||||
opacity, box-shadow, transform, filter, -webkit-text-decoration-color,
|
|
||||||
-webkit-backdrop-filter;
|
|
||||||
transition-property: color, background-color, border-color,
|
|
||||||
text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter,
|
|
||||||
backdrop-filter;
|
|
||||||
transition-property: color, background-color, border-color,
|
|
||||||
text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter,
|
|
||||||
backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;
|
|
||||||
transition-duration: 200ms;
|
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
||||||
}
|
|
||||||
.form-control::-moz-placeholder {
|
|
||||||
color: rgb(var(--color-slate-400) / 0.9);
|
|
||||||
}
|
|
||||||
.form-control:-ms-input-placeholder {
|
|
||||||
color: rgb(var(--color-slate-400) / 0.9);
|
|
||||||
}
|
|
||||||
.form-control::placeholder {
|
|
||||||
color: rgb(var(--color-slate-400) / 0.9);
|
|
||||||
}
|
|
||||||
.form-control:focus {
|
|
||||||
border-color: rgb(var(--color-primary) / var(--tw-border-opacity));
|
|
||||||
--tw-border-opacity: 0.4;
|
|
||||||
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
|
||||||
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
||||||
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
|
||||||
calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
||||||
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
|
||||||
var(--tw-shadow, 0 0 #0000);
|
|
||||||
--tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity));
|
|
||||||
--tw-ring-opacity: 0.2;
|
|
||||||
}
|
|
||||||
.dark .form-control {
|
|
||||||
border-color: transparent;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity));
|
|
||||||
transition-property: none;
|
|
||||||
}
|
|
||||||
.dark .form-control::-moz-placeholder {
|
|
||||||
color: rgb(var(--color-slate-500) / 0.8);
|
|
||||||
}
|
|
||||||
.dark .form-control:-ms-input-placeholder {
|
|
||||||
color: rgb(var(--color-slate-500) / 0.8);
|
|
||||||
}
|
|
||||||
.dark .form-control::placeholder {
|
|
||||||
color: rgb(var(--color-slate-500) / 0.8);
|
|
||||||
}
|
|
||||||
.dark .form-control:focus {
|
|
||||||
--tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity));
|
|
||||||
--tw-ring-opacity: 0.5;
|
|
||||||
}
|
|
||||||
.form-control:disabled,
|
|
||||||
.form-control[readonly] {
|
|
||||||
cursor: not-allowed;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.dark .form-control:disabled,
|
|
||||||
.dark .form-control[readonly] {
|
|
||||||
border-color: transparent;
|
|
||||||
background-color: rgb(var(--color-darkmode-800) / 0.5);
|
|
||||||
}
|
|
||||||
/* Default Sizes */
|
|
||||||
.form-control-sm {
|
|
||||||
padding-top: 0.375rem;
|
|
||||||
padding-bottom: 0.375rem;
|
|
||||||
padding-left: 0.5rem;
|
|
||||||
padding-right: 0.5rem;
|
|
||||||
font-size: 0.75rem;
|
|
||||||
line-height: 1rem;
|
|
||||||
}
|
|
||||||
.form-control-lg {
|
|
||||||
padding-top: 0.375rem;
|
|
||||||
padding-bottom: 0.375rem;
|
|
||||||
padding-left: 1rem;
|
|
||||||
padding-right: 1rem;
|
|
||||||
font-size: 1.125rem;
|
|
||||||
line-height: 1.75rem;
|
|
||||||
}
|
|
||||||
/* Form Control Rounded */
|
|
||||||
.form-control-rounded {
|
|
||||||
border-radius: 9999px;
|
|
||||||
}
|
|
||||||
.form-help {
|
|
||||||
margin-top: 0.5rem;
|
|
||||||
font-size: 0.75rem;
|
|
||||||
line-height: 1rem;
|
|
||||||
--tw-text-opacity: 1;
|
|
||||||
color: rgb(var(--color-slate-500) / var(--tw-text-opacity));
|
|
||||||
}
|
|
||||||
.form-inline {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
.form-inline .form-label {
|
|
||||||
margin-bottom: 0px;
|
|
||||||
margin-right: 1.25rem;
|
|
||||||
text-align: right;
|
|
||||||
}
|
|
||||||
.form-inline .form-control {
|
|
||||||
flex: 1 1 0%;
|
|
||||||
}
|
|
||||||
.form-label {
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
/* Default Form Select */
|
|
||||||
.form-select {
|
|
||||||
width: 100%;
|
|
||||||
border-radius: 0.375rem;
|
|
||||||
--tw-border-opacity: 1;
|
|
||||||
border-color: rgb(var(--color-slate-200) / var(--tw-border-opacity));
|
|
||||||
padding-top: 0.5rem;
|
|
||||||
padding-bottom: 0.5rem;
|
|
||||||
padding-left: 0.75rem;
|
|
||||||
padding-right: 2rem;
|
|
||||||
font-size: 0.875rem;
|
|
||||||
line-height: 1.25rem;
|
|
||||||
--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
||||||
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
|
|
||||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000),
|
|
||||||
var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
||||||
transition-property: color, background-color, border-color, fill, stroke,
|
|
||||||
opacity, box-shadow, transform, filter, -webkit-text-decoration-color,
|
|
||||||
-webkit-backdrop-filter;
|
|
||||||
transition-property: color, background-color, border-color,
|
|
||||||
text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter,
|
|
||||||
backdrop-filter;
|
|
||||||
transition-property: color, background-color, border-color,
|
|
||||||
text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter,
|
|
||||||
backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;
|
|
||||||
transition-duration: 200ms;
|
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
||||||
}
|
|
||||||
.form-select:focus {
|
|
||||||
border-color: rgb(var(--color-primary) / var(--tw-border-opacity));
|
|
||||||
--tw-border-opacity: 0.4;
|
|
||||||
--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0
|
|
||||||
var(--tw-ring-offset-width) var(--tw-ring-offset-color);
|
|
||||||
--tw-ring-shadow: var(--tw-ring-inset) 0 0 0
|
|
||||||
calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color);
|
|
||||||
box-shadow: var(--tw-ring-offset-shadow), var(--tw-ring-shadow),
|
|
||||||
var(--tw-shadow, 0 0 #0000);
|
|
||||||
--tw-ring-color: rgb(var(--color-primary) / var(--tw-ring-opacity));
|
|
||||||
--tw-ring-opacity: 0.2;
|
|
||||||
}
|
|
||||||
.dark .form-select {
|
|
||||||
border-color: transparent;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-darkmode-800) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.dark .form-select:focus {
|
|
||||||
--tw-ring-color: rgb(var(--color-slate-700) / var(--tw-ring-opacity));
|
|
||||||
--tw-ring-opacity: 0.5;
|
|
||||||
}
|
|
||||||
.form-select:disabled,
|
|
||||||
.form-select[readonly] {
|
|
||||||
cursor: not-allowed;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-slate-100) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.dark .form-select:disabled,
|
|
||||||
.dark .form-select[readonly] {
|
|
||||||
background-color: rgb(var(--color-darkmode-800) / 0.5);
|
|
||||||
}
|
|
||||||
/* Default Sizes */
|
|
||||||
.form-select-sm {
|
|
||||||
padding-top: 0.375rem;
|
|
||||||
padding-bottom: 0.375rem;
|
|
||||||
padding-left: 0.5rem;
|
|
||||||
padding-right: 2rem;
|
|
||||||
font-size: 0.75rem;
|
|
||||||
line-height: 1rem;
|
|
||||||
}
|
|
||||||
.form-select-lg {
|
|
||||||
padding-top: 0.375rem;
|
|
||||||
padding-bottom: 0.375rem;
|
|
||||||
padding-left: 1rem;
|
|
||||||
padding-right: 2rem;
|
|
||||||
font-size: 1.125rem;
|
|
||||||
line-height: 1.75rem;
|
|
||||||
}
|
|
||||||
@ -1,234 +0,0 @@
|
|||||||
|
|
||||||
body {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
html body {
|
|
||||||
overflow-x: hidden;
|
|
||||||
font-family: Roboto;
|
|
||||||
font-size: 0.875rem;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-moz-osx-font-smoothing: grayscale;
|
|
||||||
padding: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.sshadow {
|
|
||||||
box-shadow: 0px 0px 10px 0px rgba(11, 83, 139, 0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
.main {
|
|
||||||
background-image: url(/images/bg-main.svg);
|
|
||||||
background-attachment: fixed;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
/* padding-top: 1.25rem; */
|
|
||||||
padding-bottom: 1.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.wrapper {
|
|
||||||
position: relative;
|
|
||||||
margin-top: 15px;
|
|
||||||
}
|
|
||||||
.wrapper:before {
|
|
||||||
content: "";
|
|
||||||
width: 95%;
|
|
||||||
z-index: -1;
|
|
||||||
transform: translatey(35px);
|
|
||||||
-webkit-animation: 0.4s intro-wrapper-animation ease-in-out 0.33333s;
|
|
||||||
animation: 0.4s intro-wrapper-animation ease-in-out 0.33333s;
|
|
||||||
-webkit-animation-fill-mode: forwards;
|
|
||||||
animation-fill-mode: forwards;
|
|
||||||
-webkit-animation-delay: 0.1s;
|
|
||||||
animation-delay: 0.1s;
|
|
||||||
border-radius: 1.3rem;
|
|
||||||
position: absolute;
|
|
||||||
/* right: -15px; */
|
|
||||||
margin-left: auto;
|
|
||||||
margin-right: auto;
|
|
||||||
margin-top: 1rem;
|
|
||||||
height: 100%;
|
|
||||||
background-color: rgb(255 255 255 / 0.1);
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
.dark .wrapper:before {
|
|
||||||
background-color: rgb(var(--color-darkmode-400) / 0.5);
|
|
||||||
}
|
|
||||||
.wrapper.wrapper--top-nav .wrapper-box {
|
|
||||||
padding-top: 80px;
|
|
||||||
margin-top: -62px;
|
|
||||||
}
|
|
||||||
@media (max-width: calc(1280px - 1px)) {
|
|
||||||
.wrapper.wrapper--top-nav .wrapper-box {
|
|
||||||
margin-top: -67px;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
.wrapper.wrapper--top-nav .wrapper-box::before {
|
|
||||||
content: var(--tw-content);
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.dark .wrapper.wrapper--top-nav .wrapper-box {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media (max-width: calc(768px - 1px)) {
|
|
||||||
.wrapper.wrapper--top-nav .wrapper-box {
|
|
||||||
margin-top: -7px;
|
|
||||||
padding-top: 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media (max-width: calc(1280px - 1px)) {
|
|
||||||
.wrapper.wrapper--top-nav:before {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.wrapper .wrapper-box {
|
|
||||||
/* transform: translatey(35px); */
|
|
||||||
/* -webkit-animation: 0.4s intro-wrapper-animation ease-in-out 0.33333s;
|
|
||||||
animation: 0.4s intro-wrapper-animation ease-in-out 0.33333s;
|
|
||||||
-webkit-animation-fill-mode: forwards; */
|
|
||||||
/* animation-fill-mode: forwards; */
|
|
||||||
/* -webkit-animation-delay: 0.2s; */
|
|
||||||
/* animation-delay: 0.2s; */
|
|
||||||
display: flex;
|
|
||||||
border-radius: 1.3rem;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-primary) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.dark .wrapper .wrapper-box {
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.wrapper .wrapper-box:before {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
top: 0px;
|
|
||||||
right: 0px;
|
|
||||||
bottom: 0px;
|
|
||||||
left: 0px;
|
|
||||||
z-index: -1;
|
|
||||||
display: block;
|
|
||||||
border-radius: 1.3rem;
|
|
||||||
background-color: rgb(0 0 0 / 0.15);
|
|
||||||
}
|
|
||||||
@media (max-width: calc(768px - 1px)) {
|
|
||||||
.wrapper .wrapper-box {
|
|
||||||
margin-top: -7px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes intro-wrapper-animation {
|
|
||||||
100% {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes intro-wrapper-animation {
|
|
||||||
100% {
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.text-ssm {
|
|
||||||
font-size: 0.675rem;
|
|
||||||
line-height: 1.1rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
input[phx-hook='ToggleInput'] {
|
|
||||||
border-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.fontw-100 {
|
|
||||||
font-weight: 100
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-200 {
|
|
||||||
font-weight: 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-300 {
|
|
||||||
font-weight: 300;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-400 {
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-500 {
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-600 {
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-700 {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-800 {
|
|
||||||
font-weight: 800;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-900 {
|
|
||||||
font-weight: 900;
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-w-100 {
|
|
||||||
font-weight: 100
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-w-200 {
|
|
||||||
font-weight: 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-w-300 {
|
|
||||||
font-weight: 300;
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-w-400 {
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-w-500 {
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-w-600 {
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-w-700 {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-w-800 {
|
|
||||||
font-weight: 800;
|
|
||||||
}
|
|
||||||
|
|
||||||
.font-w-900 {
|
|
||||||
font-weight: 900;
|
|
||||||
}
|
|
||||||
|
|
||||||
.transition-all {
|
|
||||||
transition: all .3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.transition-3 {
|
|
||||||
transition: all .3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.transition-4 {
|
|
||||||
transition: all .4s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.transition-5 {
|
|
||||||
transition: all .5s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.transition-6 {
|
|
||||||
transition: all .6s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.transition-7 {
|
|
||||||
transition: all .7s;
|
|
||||||
}
|
|
||||||
@ -1,56 +0,0 @@
|
|||||||
@-webkit-keyframes intro-devider-animation {
|
|
||||||
100%{
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes intro-devider-animation {
|
|
||||||
100%{
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes intro-menu-animation {
|
|
||||||
100%{
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes intro-menu-animation {
|
|
||||||
100%{
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes intro-submenu-animation {
|
|
||||||
100%{
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes intro-submenu-animation {
|
|
||||||
100%{
|
|
||||||
opacity: 1;
|
|
||||||
transform: translateX(0px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes intro-active-menu-animation {
|
|
||||||
100%{
|
|
||||||
z-index: 10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes intro-active-menu-animation {
|
|
||||||
100%{
|
|
||||||
z-index: 10;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@-webkit-keyframes active-side-menu-chevron-animation {
|
|
||||||
100% {
|
|
||||||
margin-right: -27px;
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes active-side-menu-chevron-animation {
|
|
||||||
100% {
|
|
||||||
margin-right: -27px;
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,51 +0,0 @@
|
|||||||
.news-block{
|
|
||||||
max-width: 900px;
|
|
||||||
min-width: 200px;
|
|
||||||
max-height: 240px;
|
|
||||||
}
|
|
||||||
.news-title-image {
|
|
||||||
height: 200px;
|
|
||||||
}
|
|
||||||
.news-full-text-block{
|
|
||||||
height: calc(100% - 240px);
|
|
||||||
}
|
|
||||||
.btn-responsive-width {
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 1071px) {
|
|
||||||
.btn-responsive-width {
|
|
||||||
width: 320px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 1024px) {
|
|
||||||
.news-block{
|
|
||||||
max-height: 480px;
|
|
||||||
height: fit-content;
|
|
||||||
max-width: 450px;
|
|
||||||
}
|
|
||||||
.news-block > .news-image{
|
|
||||||
max-height: 240px;
|
|
||||||
}
|
|
||||||
.news-block > .news-text{
|
|
||||||
max-height: 280px;
|
|
||||||
height: fit-content;
|
|
||||||
}
|
|
||||||
.news-block > .news-text > .news-text-shrinked{
|
|
||||||
flex-grow: 0;
|
|
||||||
}
|
|
||||||
.news-block > .news-image > img{
|
|
||||||
overflow: auto;
|
|
||||||
height: auto;
|
|
||||||
max-width: 450px;
|
|
||||||
max-height: 240px;
|
|
||||||
}
|
|
||||||
.news-title-image {
|
|
||||||
height: calc(100vw / 8);
|
|
||||||
min-height:100px
|
|
||||||
}
|
|
||||||
.news-full-text-block{
|
|
||||||
height: calc(100% - 100vw / 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,94 +0,0 @@
|
|||||||
.group_settings {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
.group_settings-setting {
|
|
||||||
display: flex;
|
|
||||||
width: 100%;
|
|
||||||
border-bottom: 1px solid #cecece;
|
|
||||||
padding: 0 0 20px 0;
|
|
||||||
flex-direction: column;
|
|
||||||
margin: 20px 0;
|
|
||||||
}
|
|
||||||
.group_settings-setting-title{
|
|
||||||
margin: 0 10px;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
.group_settings-setting-title > label{
|
|
||||||
display: flex;
|
|
||||||
column-gap: 0.5rem;
|
|
||||||
font-weight: bold;
|
|
||||||
margin-bottom: 20px;
|
|
||||||
}
|
|
||||||
.group_settings-setting-title-params {
|
|
||||||
display: flex;
|
|
||||||
column-gap: 0.5rem;
|
|
||||||
row-gap: 0.5rem;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-btn.group_settings-setting-title-params {
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 1080px) {
|
|
||||||
.group_settings-setting-title-params {
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
.ant-btn.group_settings-setting-title-params {
|
|
||||||
margin: 10px 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.group_settings-setting-title-param {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
gap: 0.5rem;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.group_settings-setting-title-param.full {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.group_settings-setting-title-param-subtitle {
|
|
||||||
margin: 0 10px;
|
|
||||||
min-width: 20px;
|
|
||||||
width: fit-content;
|
|
||||||
}
|
|
||||||
.group_settings-setting-title-param-subtitle.selector {
|
|
||||||
width: 200px;
|
|
||||||
}
|
|
||||||
.group_settings-setting-title-param-value {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
min-width: 100px;
|
|
||||||
max-width: 100%;
|
|
||||||
gap: 0.5rem;
|
|
||||||
}
|
|
||||||
.group_settings-setting-title-param-comments{
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
border-left: 5px solid #00000073;
|
|
||||||
padding-left: 10px;
|
|
||||||
}
|
|
||||||
.compact-picker {
|
|
||||||
width: 100% !important;
|
|
||||||
}
|
|
||||||
.flex-input-control-block{
|
|
||||||
flex: 1 1 150px;
|
|
||||||
min-width: 150px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 1230px) {
|
|
||||||
.flex-input-control-block{
|
|
||||||
flex: 1 1 36px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.disable-enabled {
|
|
||||||
margin: "0 10px;"
|
|
||||||
}
|
|
||||||
.disable-enabled[disabled] {
|
|
||||||
color: #1890ff;
|
|
||||||
border: 1px solid #1890ff;
|
|
||||||
}
|
|
||||||
@ -1,6 +0,0 @@
|
|||||||
|
|
||||||
.bg-mpk, .bg-mpt, .bg-mtso, .bg-am140, .bg-uk, .bg-avf, .bg-adm, .bg-kda, .bg-chom, .bg-utm, .bg-mtg, .bg-vpr, .bg-rzd {
|
|
||||||
background: linear-gradient(96.95deg, rgba(236, 236, 243, 0.95) 1.45%, rgba(255, 255, 255, 0.703) 20.43%, rgba(255, 255, 255, 0) 98.58%), linear-gradient(277.71deg, rgba(0, 8, 38, 0.3) 0%, rgba(0, 5, 20, 0.076) 45.46%, rgba(255, 255, 255, 0) 97.87%), linear-gradient(0deg, rgba(123, 134, 152, 0.7), rgba(123, 134, 152, 0.7));
|
|
||||||
background-size: cover;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
}
|
|
||||||
@ -1,140 +0,0 @@
|
|||||||
.resp-wrap {
|
|
||||||
flex-wrap: wrap;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.resp-wrap > div {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
#date_select_1-container .SingleDatePickerInput {
|
|
||||||
width: 150px;
|
|
||||||
max-width: 90vw;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile-menu-button {
|
|
||||||
width: 180px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 1230px) {
|
|
||||||
.resp-wrap {
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
.mobile-full {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media screen and (min-width: 750px) {
|
|
||||||
.resp-wrap {
|
|
||||||
flex-wrap: nowrap;
|
|
||||||
}
|
|
||||||
.resp-wrap > div {
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media screen and (max-width: 640px) {
|
|
||||||
.ant-table {
|
|
||||||
width: 100%;
|
|
||||||
min-width: 280px;
|
|
||||||
overflow-x: auto;
|
|
||||||
max-width: calc(100vw - 2rem);
|
|
||||||
}
|
|
||||||
.name_block_hider {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.mobile-menu-button {
|
|
||||||
width: 150px;
|
|
||||||
}
|
|
||||||
.small-col {
|
|
||||||
flex-direction: column;
|
|
||||||
row-gap: 1.25rem;
|
|
||||||
}
|
|
||||||
.small-col > .ant-select {
|
|
||||||
width: 100%;
|
|
||||||
min-width: 280px;
|
|
||||||
}
|
|
||||||
#date_select_1-container .SingleDatePickerInput {
|
|
||||||
width: 100%;
|
|
||||||
min-width: 280px;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 490px) {
|
|
||||||
.group_settings-setting-title-param.mobile-early-column {
|
|
||||||
align-items: flex-start;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.mobile-early-column {
|
|
||||||
flex-direction: column;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.rdt > input {
|
|
||||||
border-bottom: 1px solid gray;
|
|
||||||
}
|
|
||||||
.flex-but {
|
|
||||||
max-width: 150px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 1230px) {
|
|
||||||
.flex-but {
|
|
||||||
max-width: 100vw;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-container-shadow {
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
row-gap: 0.5rem;
|
|
||||||
margin: 1rem;
|
|
||||||
align-items: center;
|
|
||||||
background-color: white;
|
|
||||||
padding: 2rem 1rem;
|
|
||||||
justify-content: center;
|
|
||||||
box-shadow: 2px 3px 7px rgba(0, 0, 0, 0.12), 2px 3px 7px rgba(0, 0, 0, 0.24);
|
|
||||||
column-gap: 20px;
|
|
||||||
border: 1px solid rgba(0, 0, 0, 0.15);
|
|
||||||
}
|
|
||||||
|
|
||||||
.link_btn {
|
|
||||||
text-decoration: underline;
|
|
||||||
color: blue;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-100 {
|
|
||||||
font-weight: 100;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-200 {
|
|
||||||
font-weight: 200;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-300 {
|
|
||||||
font-weight: 300;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-400 {
|
|
||||||
font-weight: 400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-500 {
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-600 {
|
|
||||||
font-weight: 600;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-700 {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-800 {
|
|
||||||
font-weight: 800;
|
|
||||||
}
|
|
||||||
|
|
||||||
.fontw-900 {
|
|
||||||
font-weight: 900;
|
|
||||||
}
|
|
||||||
@ -1,157 +0,0 @@
|
|||||||
.ant-select-selector {
|
|
||||||
height: 36px !important;
|
|
||||||
min-width: 130px;
|
|
||||||
}
|
|
||||||
.ant-input {
|
|
||||||
height: 26px;
|
|
||||||
}
|
|
||||||
.ant-modal {
|
|
||||||
width: auto !important;
|
|
||||||
max-height: calc(100vh - 2rem);
|
|
||||||
top: 0px;
|
|
||||||
}
|
|
||||||
.ant-modal-wrap {
|
|
||||||
margin-top: 2rem;
|
|
||||||
margin-bottom: 2rem;
|
|
||||||
}
|
|
||||||
.ant-table {
|
|
||||||
width: calc(100vw - 2rem);
|
|
||||||
min-width: 280px;
|
|
||||||
overflow-x: auto;
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
.table-w-full .ant-table {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-full .seletors_group {
|
|
||||||
width: 320px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 640px) {
|
|
||||||
.table-full .seletors_group {
|
|
||||||
width: 270px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.table-full .ant-table {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.table-w-full .ant-modal-body {
|
|
||||||
padding: 0 10px;
|
|
||||||
}
|
|
||||||
.fs-modal .ant-modal-body {
|
|
||||||
padding: 0 10px;
|
|
||||||
}
|
|
||||||
.ant-modal-wrap.fs-modal {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.fs-table .ant-table-body {
|
|
||||||
max-height: calc(100vh - 300px);
|
|
||||||
}
|
|
||||||
.fs-table .ant-modal-body > div {
|
|
||||||
max-height: 1000vh;
|
|
||||||
}
|
|
||||||
.fs-table .ant-table-cell {
|
|
||||||
padding: 0 4px;
|
|
||||||
}
|
|
||||||
.SingleDatePicker_picker {
|
|
||||||
z-index: 10;
|
|
||||||
}
|
|
||||||
.ant-table-thead th {
|
|
||||||
color: white !important;
|
|
||||||
background-color: rgb(56, 55, 60) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-table-thead th.antd-th-editable {
|
|
||||||
color: white !important;
|
|
||||||
background-color: white !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.DateInput_input {
|
|
||||||
padding: 4px 11px 4px;
|
|
||||||
font-size: 15px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.list_task_subitem {
|
|
||||||
display: flex;
|
|
||||||
flex-wrap: wrap;
|
|
||||||
column-gap: 10px;
|
|
||||||
row-gap: 10px;
|
|
||||||
flex: "10 1 100px";
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-select-multiple .ant-select-selection-item-remove {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
.ant-select-dropdown {
|
|
||||||
z-index: 1150;
|
|
||||||
}
|
|
||||||
.ant-table-thead th.antd-white-table-cell {
|
|
||||||
background-color: white !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 920px) {
|
|
||||||
.list_task_subitem_container {
|
|
||||||
flex-wrap: wrap;
|
|
||||||
column-gap: 20px;
|
|
||||||
row-gap: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.ant-modal-wrap {
|
|
||||||
z-index: 1150;
|
|
||||||
}
|
|
||||||
.ant-modal-mask {
|
|
||||||
z-index: 1149;
|
|
||||||
}
|
|
||||||
.highcharts-data-table table {
|
|
||||||
font-family: Verdana, sans-serif;
|
|
||||||
border-collapse: collapse;
|
|
||||||
border: 1px solid #ebebeb;
|
|
||||||
margin: 10px auto;
|
|
||||||
text-align: center;
|
|
||||||
width: 100%;
|
|
||||||
max-width: 500px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-tooltip {
|
|
||||||
z-index: 3000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mobile-maxwidth_calc100vw-20rem {
|
|
||||||
max-width: calc(100vw - 20rem);
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 640px) {
|
|
||||||
.mobile-maxwidth_calc100vw-20rem {
|
|
||||||
max-width: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-notification {
|
|
||||||
z-index: 20000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.admin_panel_wrapper_bv {
|
|
||||||
position: fixed;
|
|
||||||
z-index: 1001;
|
|
||||||
}
|
|
||||||
|
|
||||||
.anim_rotation {
|
|
||||||
animation-duration: 0.5s;
|
|
||||||
animation-name: anim_rotate;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes anim_rotate {
|
|
||||||
0% {
|
|
||||||
transform: rotate(0);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: rotate(180deg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.ant-message {
|
|
||||||
z-index: 30000;
|
|
||||||
}
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
.post .post__tabs{
|
|
||||||
border-color: transparent;
|
|
||||||
}
|
|
||||||
.dark .post .post__tabs{
|
|
||||||
border-color: transparent;
|
|
||||||
}
|
|
||||||
.post .post__tabs .nav-item .nav-link{
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
--tw-text-opacity: 1;
|
|
||||||
color: rgb(var(--color-slate-500) / var(--tw-text-opacity));
|
|
||||||
}
|
|
||||||
.post .post__tabs .nav-item .nav-link:hover:not(.disabled):not(.active):hover{
|
|
||||||
border-color: transparent;
|
|
||||||
background-color: transparent;
|
|
||||||
--tw-text-opacity: 1;
|
|
||||||
color: rgb(var(--color-slate-600) / var(--tw-text-opacity));
|
|
||||||
}
|
|
||||||
.dark .post .post__tabs .nav-item .nav-link:hover:not(.disabled):not(.active):hover{
|
|
||||||
background-color: transparent;
|
|
||||||
--tw-text-opacity: 1;
|
|
||||||
color: rgb(var(--color-slate-300) / var(--tw-text-opacity));
|
|
||||||
}
|
|
||||||
.post .post__tabs .nav-item .nav-link.active{
|
|
||||||
border-color: transparent;
|
|
||||||
--tw-text-opacity: 1;
|
|
||||||
color: rgb(var(--color-primary) / var(--tw-text-opacity));
|
|
||||||
}
|
|
||||||
.dark .post .post__tabs .nav-item .nav-link.active{
|
|
||||||
border-color: transparent;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity));
|
|
||||||
--tw-text-opacity: 1;
|
|
||||||
color: rgb(255 255 255 / var(--tw-text-opacity));
|
|
||||||
}
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
.svg_btn {
|
|
||||||
width: 14px;
|
|
||||||
height: 14px;
|
|
||||||
}
|
|
||||||
@ -1,284 +0,0 @@
|
|||||||
.tabulator {
|
|
||||||
position: relative;
|
|
||||||
font-size: 14px;
|
|
||||||
text-align: left;
|
|
||||||
overflow: hidden;
|
|
||||||
transform: translateZ(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator .tabulator-header {
|
|
||||||
position: relative;
|
|
||||||
box-sizing: border-box;
|
|
||||||
width: 100%;
|
|
||||||
color: rgb(54, 54, 51);
|
|
||||||
font-weight: bold;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator-header-hidden {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator .tabulator-header .tabulator-header-contents {
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator .tabulator-header .tabulator-col {
|
|
||||||
display: inline-flex;
|
|
||||||
position: relative;
|
|
||||||
box-sizing: border-box;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: flex-start;
|
|
||||||
text-align: left;
|
|
||||||
vertical-align: middle;
|
|
||||||
overflow: hidden;
|
|
||||||
height: fit-content !important;
|
|
||||||
margin-right: 3px;
|
|
||||||
}
|
|
||||||
/* .tabulator-col-resize-handle {
|
|
||||||
height: fit-content !important;
|
|
||||||
} */
|
|
||||||
|
|
||||||
.tabulator .tabulator-headers {
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator .tabulator-headers .tabulator-col-resize-handle {
|
|
||||||
width: 3px;
|
|
||||||
height: 25px !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator .tabulator-tableholder {
|
|
||||||
position: relative;
|
|
||||||
width: 100%;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: auto;
|
|
||||||
-webkit-overflow-scrolling: touch;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator .tabulator-tableholder .tabulator-table {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: visible;
|
|
||||||
color: #333;
|
|
||||||
}
|
|
||||||
.tabulator-row {
|
|
||||||
position: relative;
|
|
||||||
box-sizing: border-box;
|
|
||||||
min-height: 22px;
|
|
||||||
background-color: rgb(var(--color-slate-50));
|
|
||||||
width: calc(100% - 15px);
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator-row:first-child {
|
|
||||||
margin-top: 0;
|
|
||||||
}
|
|
||||||
.tabulator-row .tabulator-cell {
|
|
||||||
display: inline-block;
|
|
||||||
position: relative;
|
|
||||||
box-sizing: border-box;
|
|
||||||
vertical-align: middle;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
}
|
|
||||||
.tabulator-cell:first-child {
|
|
||||||
padding: 0 0.25rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator-placeholder-contents {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator .tabulator-col-resize-handle {
|
|
||||||
position: relative;
|
|
||||||
display: inline-block;
|
|
||||||
width: 6px;
|
|
||||||
margin-left: -3px;
|
|
||||||
margin-right: -3px;
|
|
||||||
z-index: 10;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
|
|
||||||
box-sizing: border-box;
|
|
||||||
position: relative;
|
|
||||||
padding: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator
|
|
||||||
.tabulator-header
|
|
||||||
.tabulator-col
|
|
||||||
.tabulator-col-content
|
|
||||||
.tabulator-col-title-holder {
|
|
||||||
position: relative;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.tabulator-col-title {
|
|
||||||
display: none;
|
|
||||||
text-align: center;
|
|
||||||
color: #7d7d7d;
|
|
||||||
font-size: 14px;
|
|
||||||
font-weight: 900;
|
|
||||||
}
|
|
||||||
/* .tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title { */
|
|
||||||
/* padding-right: 25px; */
|
|
||||||
/* } */
|
|
||||||
/*
|
|
||||||
.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
|
|
||||||
box-sizing: border-box;
|
|
||||||
width: 100%;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
vertical-align: bottom;
|
|
||||||
text-align: center;
|
|
||||||
} */
|
|
||||||
|
|
||||||
.tabulator
|
|
||||||
.tabulator-header
|
|
||||||
.tabulator-col.tabulator-sortable[aria-sort="none"]
|
|
||||||
.tabulator-col-content
|
|
||||||
.tabulator-col-sorter {
|
|
||||||
color: #bbb;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator
|
|
||||||
.tabulator-header
|
|
||||||
.tabulator-col
|
|
||||||
.tabulator-col-content
|
|
||||||
.tabulator-col-sorter {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
position: absolute;
|
|
||||||
top: 10px;
|
|
||||||
bottom: 0;
|
|
||||||
right: 4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator
|
|
||||||
.tabulator-header
|
|
||||||
.tabulator-col.tabulator-sortable[aria-sort="none"]
|
|
||||||
.tabulator-col-content
|
|
||||||
.tabulator-col-sorter
|
|
||||||
.tabulator-arrow {
|
|
||||||
border-top: none;
|
|
||||||
border-bottom: 6px solid #bbb;
|
|
||||||
}
|
|
||||||
.tabulator
|
|
||||||
.tabulator-header
|
|
||||||
.tabulator-col
|
|
||||||
.tabulator-col-content
|
|
||||||
.tabulator-col-sorter
|
|
||||||
.tabulator-arrow {
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
border-left: 6px solid transparent;
|
|
||||||
border-right: 6px solid transparent;
|
|
||||||
border-bottom: 6px solid #bbb;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.tabulator-header-filter > input {
|
|
||||||
padding: 0px 0.5rem !important;
|
|
||||||
font-size: 10px;
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator-header-filter {
|
|
||||||
margin-right: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator-header-filter > input {
|
|
||||||
border-radius: 0;
|
|
||||||
border: none;
|
|
||||||
border-bottom: 1px solid rgb(var(--color-slate-200));
|
|
||||||
}
|
|
||||||
.tabulator
|
|
||||||
.tabulator-header
|
|
||||||
.tabulator-col.tabulator-col-sorter-element[aria-sort="descending"]
|
|
||||||
.tabulator-col-sorter
|
|
||||||
.tabulator-arrow {
|
|
||||||
transform: rotate(180deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
|
|
||||||
width: 100%;
|
|
||||||
height: 2px;
|
|
||||||
border-radius: 100px;
|
|
||||||
margin-top: 2px;
|
|
||||||
background: rgb(115, 115, 121);
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
|
|
||||||
width: 80%;
|
|
||||||
cursor: grab;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell.tabulator-frozen {
|
|
||||||
display: inline-block;
|
|
||||||
position: sticky;
|
|
||||||
left: 0;
|
|
||||||
background-color: inherit;
|
|
||||||
z-index: 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left {
|
|
||||||
border-right: 2px solid #aaa;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator-row.tabulator-moving{
|
|
||||||
position:absolute;
|
|
||||||
border-top:1px solid #aaa;
|
|
||||||
border-bottom:1px solid #aaa;
|
|
||||||
pointer-events:none;
|
|
||||||
z-index:15;
|
|
||||||
cursor: grabbing;
|
|
||||||
}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-responsive-collapse:empty{display:none}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-responsive-collapse table{font-size:14px}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:10}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}
|
|
||||||
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}
|
|
||||||
|
|
||||||
|
|
||||||
.tabulator-row .tabulator-cell.tabulator-row-handle {
|
|
||||||
display: inline-flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-khtml-user-select: none;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-o-user-select: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*# sourceMappingURL=tabulator.min.css.map */
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
.content {
|
|
||||||
padding: 0px 22px;
|
|
||||||
border-radius: 1.3rem;
|
|
||||||
min-height: 100vh;
|
|
||||||
min-width: 0px;
|
|
||||||
flex: 1 1 0%;
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-slate-200) / var(--tw-bg-opacity));
|
|
||||||
padding-bottom: 2.5rem;
|
|
||||||
padding-top: 0.5rem;
|
|
||||||
--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
|
||||||
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
|
|
||||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
||||||
}
|
|
||||||
.dark .content{
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-darkmode-700) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
@media (max-width: calc(768px - 1px)) {
|
|
||||||
.content{
|
|
||||||
max-width: 100%;
|
|
||||||
padding-left: 1rem;
|
|
||||||
padding-right: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media (max-width: calc(350px)) {
|
|
||||||
.content{
|
|
||||||
max-width: 100%;
|
|
||||||
padding-left: 0.25rem;
|
|
||||||
padding-right: 0.25rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.content:before {
|
|
||||||
content: "";
|
|
||||||
display: block;
|
|
||||||
height: 1px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
@ -1,61 +0,0 @@
|
|||||||
.linear-loader.phx-click-loading,
|
|
||||||
.linear-loader.phx-click-loading:before,
|
|
||||||
.linear-loader.phx-click-loading:after {
|
|
||||||
border-radius: 50%;
|
|
||||||
width: 2.5em;
|
|
||||||
height: 2.5em;
|
|
||||||
-webkit-animation-fill-mode: both;
|
|
||||||
animation-fill-mode: both;
|
|
||||||
-webkit-animation: load7 1.8s infinite ease-in-out;
|
|
||||||
animation: load7 1.8s infinite ease-in-out;
|
|
||||||
}
|
|
||||||
.linear-loader.phx-click-loading {
|
|
||||||
color: #4F91F2;
|
|
||||||
font-size: 6px;
|
|
||||||
margin: -10px 20px 10px 0;
|
|
||||||
position: relative;
|
|
||||||
text-indent: -9999em;
|
|
||||||
-webkit-transform: translateZ(0);
|
|
||||||
-ms-transform: translateZ(0);
|
|
||||||
transform: translateZ(0);
|
|
||||||
-webkit-animation-delay: -0.16s;
|
|
||||||
animation-delay: -0.16s;
|
|
||||||
}
|
|
||||||
.linear-loader.phx-click-loading:before,
|
|
||||||
.linear-loader.phx-click-loading:after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
}
|
|
||||||
.linear-loader.phx-click-loading:before {
|
|
||||||
left: -3.5em;
|
|
||||||
-webkit-animation-delay: -0.32s;
|
|
||||||
animation-delay: -0.32s;
|
|
||||||
}
|
|
||||||
.linear-loader.phx-click-loading:after {
|
|
||||||
left: 3.5em;
|
|
||||||
}
|
|
||||||
@-webkit-keyframes load7 {
|
|
||||||
0%,
|
|
||||||
80%,
|
|
||||||
100% {
|
|
||||||
box-shadow: 0 2.5em 0 -1.3em;
|
|
||||||
}
|
|
||||||
40% {
|
|
||||||
box-shadow: 0 2.5em 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@keyframes load7 {
|
|
||||||
0%,
|
|
||||||
80%,
|
|
||||||
100% {
|
|
||||||
box-shadow: 0 2.5em 0 -1.3em;
|
|
||||||
}
|
|
||||||
40% {
|
|
||||||
box-shadow: 0 2.5em 0 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.border0 * {
|
|
||||||
border: 0 !important;
|
|
||||||
}
|
|
||||||
@ -1,33 +0,0 @@
|
|||||||
.burger_btn {
|
|
||||||
position: relative;
|
|
||||||
cursor: pointer;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
transition: all 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.burger_btn div {
|
|
||||||
height: 2px;
|
|
||||||
width: 25px;
|
|
||||||
border-radius: 100px;
|
|
||||||
background-color: rgb(var(--color-light) / 1);
|
|
||||||
margin-bottom: 5px;
|
|
||||||
transition: all 0.3s;
|
|
||||||
}
|
|
||||||
|
|
||||||
.burger_btn div:nth-child(3) {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.burger_btn.active div:nth-child(1) {
|
|
||||||
transform: rotate(45deg) translate(5px, 5px);
|
|
||||||
}
|
|
||||||
|
|
||||||
.burger_btn.active div:nth-child(2) {
|
|
||||||
transform: rotate(160deg);
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.burger_btn.active div:nth-child(3) {
|
|
||||||
transform: rotate(-45deg) translate(4px, -5px);
|
|
||||||
}
|
|
||||||
@ -1,86 +0,0 @@
|
|||||||
|
|
||||||
.dropdown .dropdown-menu {
|
|
||||||
transform: translate3d(-10000px, 0px, 0px) !important;
|
|
||||||
}
|
|
||||||
.dropdown-menu {
|
|
||||||
z-index: 9999;
|
|
||||||
inset: 0px auto auto 0px;
|
|
||||||
transition: visibility 0s ease-in-out 0.2s, opacity 0.2s 0s;
|
|
||||||
visibility: hidden;
|
|
||||||
position: absolute;
|
|
||||||
opacity: 0;
|
|
||||||
}
|
|
||||||
.dropdown-menu.show {
|
|
||||||
transition: visibility 0s ease-in-out 0s, opacity 0.2s 0s;
|
|
||||||
visibility: visible;
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
.dropdown-menu.show > .dropdown-content{
|
|
||||||
margin-top: 0.25rem;
|
|
||||||
}
|
|
||||||
.dropdown-menu.show > .dropdown-content .tab-content .tab-pane{
|
|
||||||
visibility: visible;
|
|
||||||
}
|
|
||||||
.dropdown-menu .dropdown-content {
|
|
||||||
transition: margin-top 0.2s;
|
|
||||||
box-shadow: 0px 3px 10px #00000017;
|
|
||||||
position: relative;
|
|
||||||
margin-top: 1.25rem;
|
|
||||||
width: 100%;
|
|
||||||
border-radius: 0.375rem;
|
|
||||||
padding: 0.5rem;
|
|
||||||
}
|
|
||||||
.dropdown-menu .dropdown-content .dropdown-header{
|
|
||||||
padding: 0.5rem;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
.dropdown-menu .dropdown-content .dropdown-divider{
|
|
||||||
margin-top: 0.5rem;
|
|
||||||
margin-bottom: 0.5rem;
|
|
||||||
margin-left: -0.5rem;
|
|
||||||
margin-right: -0.5rem;
|
|
||||||
}
|
|
||||||
.dropdown-menu .dropdown-content .dropdown-item{
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
border-radius: 0.375rem;
|
|
||||||
padding: 0.5rem;
|
|
||||||
transition-property: color, background-color, border-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-text-decoration-color, -webkit-backdrop-filter;
|
|
||||||
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter;
|
|
||||||
transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-text-decoration-color, -webkit-backdrop-filter;
|
|
||||||
transition-duration: 300ms;
|
|
||||||
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
||||||
}
|
|
||||||
.dropdown-menu .dropdown-content .dropdown-footer{
|
|
||||||
display: flex;
|
|
||||||
padding: 0.25rem;
|
|
||||||
}
|
|
||||||
.dropdown-menu .dropdown-content .tab-content .tab-pane{
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
.dropdown-content{
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.dark .dropdown-content{
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.dropdown-divider{
|
|
||||||
border-color: rgb(var(--color-slate-200) / 0.6);
|
|
||||||
}
|
|
||||||
.dark .dropdown-divider{
|
|
||||||
--tw-border-opacity: 1;
|
|
||||||
border-color: rgb(var(--color-darkmode-400) / var(--tw-border-opacity));
|
|
||||||
}
|
|
||||||
.dropdown-item:hover{
|
|
||||||
background-color: rgb(var(--color-slate-200) / 0.6);
|
|
||||||
}
|
|
||||||
.dark .dropdown-item{
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-darkmode-600) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
.dark .dropdown-item:hover{
|
|
||||||
--tw-bg-opacity: 1;
|
|
||||||
background-color: rgb(var(--color-darkmode-400) / var(--tw-bg-opacity));
|
|
||||||
}
|
|
||||||
@ -1,193 +0,0 @@
|
|||||||
body.error_wrapper {
|
|
||||||
overflow: hidden;
|
|
||||||
width: 100vw;
|
|
||||||
height: 100vh;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
body.error_wrapper .to_main {
|
|
||||||
position: absolute;
|
|
||||||
top: 50px;
|
|
||||||
left: 70px;
|
|
||||||
font-weight: 800;
|
|
||||||
font-size: 22px;
|
|
||||||
color: rgb(94, 94, 255);
|
|
||||||
}
|
|
||||||
|
|
||||||
.main.error_page {
|
|
||||||
transform: translate(0, 45%);
|
|
||||||
}
|
|
||||||
|
|
||||||
.st0 {
|
|
||||||
fill: #fff;
|
|
||||||
}
|
|
||||||
.st2 {
|
|
||||||
fill: #5d89af;
|
|
||||||
}
|
|
||||||
.st3 {
|
|
||||||
fill: #709abf;
|
|
||||||
}
|
|
||||||
.st4,
|
|
||||||
.st6 {
|
|
||||||
fill: #fff;
|
|
||||||
stroke: #b3dcdf;
|
|
||||||
stroke-miterlimit: 10;
|
|
||||||
}
|
|
||||||
.st6 {
|
|
||||||
stroke: #5d89af;
|
|
||||||
stroke-width: 2;
|
|
||||||
}
|
|
||||||
.st7,
|
|
||||||
.st8,
|
|
||||||
.st9 {
|
|
||||||
stroke: #709abf;
|
|
||||||
stroke-miterlimit: 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
.st7 {
|
|
||||||
stroke-width: 5;
|
|
||||||
stroke-linecap: round;
|
|
||||||
fill: none;
|
|
||||||
}
|
|
||||||
.st8,
|
|
||||||
.st9 {
|
|
||||||
fill: #fff;
|
|
||||||
}
|
|
||||||
.st9 {
|
|
||||||
fill: none;
|
|
||||||
}
|
|
||||||
.st10 {
|
|
||||||
}
|
|
||||||
|
|
||||||
#cloud1 {
|
|
||||||
animation: cloud003 15s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cloud2 {
|
|
||||||
animation: cloud002 25s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cloud3 {
|
|
||||||
animation: cloud003 20s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cloud4 {
|
|
||||||
animation: float 4s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cloud5 {
|
|
||||||
animation: float 8s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
#cloud7 {
|
|
||||||
animation: float 5s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tracks {
|
|
||||||
animation: slide 650ms linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
#bumps {
|
|
||||||
animation: land 10000ms linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes jig {
|
|
||||||
0% {
|
|
||||||
transform: translateY(0px);
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
transform: translateY(1px);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: translateY(0px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#car-layers {
|
|
||||||
animation: jig 0.35s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes land {
|
|
||||||
from {
|
|
||||||
transform: translateX(0);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
transform: translateX(1000px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes slide {
|
|
||||||
from {
|
|
||||||
transform: translateX(0px);
|
|
||||||
}
|
|
||||||
to {
|
|
||||||
transform: translateX(100px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* @keyframes cloudFloat {
|
|
||||||
0% { transform: translateX(0) translateY(3px); }
|
|
||||||
100% { transform: translateX(1000px) translateY(0); }
|
|
||||||
} */
|
|
||||||
|
|
||||||
@keyframes cloud001 {
|
|
||||||
0% {
|
|
||||||
transform: translateX(-1000px) translateY(3px);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: translateX(1000px) translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes cloud002 {
|
|
||||||
0% {
|
|
||||||
transform: translateX(-1000px) translateY(3px);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: translateX(1000px) translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes cloud003 {
|
|
||||||
0% {
|
|
||||||
transform: translateX(-1000px) translateY(3px);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: translateX(1000px) translateY(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes float {
|
|
||||||
0% {
|
|
||||||
transform: translateY(0px) translateX(0);
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
transform: translateY(8px) translateX(5px);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: translateY(0px) translateX(0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#bracefront,
|
|
||||||
#braceback {
|
|
||||||
animation: braces 1s linear infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes braces {
|
|
||||||
0% {
|
|
||||||
transform: translateX(-2px);
|
|
||||||
}
|
|
||||||
25% {
|
|
||||||
transform: translateX(3px);
|
|
||||||
}
|
|
||||||
50% {
|
|
||||||
transform: translateX(-2px);
|
|
||||||
}
|
|
||||||
75% {
|
|
||||||
transform: translateX(3px);
|
|
||||||
}
|
|
||||||
100% {
|
|
||||||
transform: translateX(-2px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
@font-face {
|
|
||||||
font-family: "Tangerine";
|
|
||||||
src: url("../fonts/Tangerine.woff");
|
|
||||||
}
|
|
||||||
@ -1,161 +0,0 @@
|
|||||||
.my-width-80 {
|
|
||||||
width: 80px;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 800px) {
|
|
||||||
.hide-800 {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.width-50-800 {
|
|
||||||
width: 50px;
|
|
||||||
}
|
|
||||||
|
|
||||||
div.hide-800 {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.max-width-800 {
|
|
||||||
max-width: calc(100vw - 5rem);
|
|
||||||
}
|
|
||||||
.mt-0-800 {
|
|
||||||
margin-top: 0px !important;
|
|
||||||
}
|
|
||||||
.gap-1-800 {
|
|
||||||
gap: 0.5rem !important;
|
|
||||||
}
|
|
||||||
.py-1-800 {
|
|
||||||
padding-top: 0.25rem !important;
|
|
||||||
padding-bottom: 0.25rem !important;
|
|
||||||
}
|
|
||||||
.px-1-800 {
|
|
||||||
padding-left: 0.25rem !important;
|
|
||||||
padding-right: 0.25rem !important;
|
|
||||||
}
|
|
||||||
.pt-1-800 {
|
|
||||||
padding-top: 0.25rem !important;
|
|
||||||
}
|
|
||||||
.pt-2-800 {
|
|
||||||
padding-top: 0.5rem !important;
|
|
||||||
}
|
|
||||||
.pt-3-800 {
|
|
||||||
padding-top: 0.75rem !important;
|
|
||||||
}
|
|
||||||
.pt-4-800 {
|
|
||||||
padding-top: 1rem !important;
|
|
||||||
}
|
|
||||||
.pl-0-800 {
|
|
||||||
padding-left: 0 !important;
|
|
||||||
}
|
|
||||||
.overflow-y-auto-800 {
|
|
||||||
overflow-y: auto;
|
|
||||||
}
|
|
||||||
.height-c-100vh-70px-800 {
|
|
||||||
height: calc(100vh - 70px) !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (min-width: 600px) {
|
|
||||||
.hide-over-600 {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (min-width: 500px) {
|
|
||||||
.max-width-800 {
|
|
||||||
max-width: calc(100vw - 1rem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 380px) {
|
|
||||||
.max-width-800 {
|
|
||||||
max-width: calc(100vw - 2px);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 600px) {
|
|
||||||
.hide-600 {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
.gap-1-600 {
|
|
||||||
gap: 0.25rem !important;
|
|
||||||
}
|
|
||||||
.gap-2-600 {
|
|
||||||
gap: 0.5rem !important;
|
|
||||||
}
|
|
||||||
.gap-3-600 {
|
|
||||||
gap: 0.75rem !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.max-height-100vh-600 {
|
|
||||||
max-height: 100vh !important;
|
|
||||||
}
|
|
||||||
.mt-0-600 {
|
|
||||||
margin-top: 0px !important;
|
|
||||||
}
|
|
||||||
.mr-0-600 {
|
|
||||||
margin-right: 0px !important;
|
|
||||||
}
|
|
||||||
.height-minus53px-600 {
|
|
||||||
height: calc(100vh - 53px) !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.border-l-600 {
|
|
||||||
border-left: 1px solid #dadee6;
|
|
||||||
}
|
|
||||||
.border-x-600 {
|
|
||||||
border-left: 1px solid #dadee6;
|
|
||||||
border-right: 1px solid #dadee6;
|
|
||||||
}
|
|
||||||
.border-r-600 {
|
|
||||||
border-right: 1px solid #dadee6;
|
|
||||||
}
|
|
||||||
.py-4-600 {
|
|
||||||
padding-left: 1rem;
|
|
||||||
padding-right: 1rem;
|
|
||||||
}
|
|
||||||
.py-5-600 {
|
|
||||||
padding-left: 1.25rem;
|
|
||||||
padding-right: 1.25rem;
|
|
||||||
}
|
|
||||||
.pr-4-600 {
|
|
||||||
padding-right: 1rem;
|
|
||||||
}
|
|
||||||
.pr-3-600 {
|
|
||||||
padding-right: 0.75rem;
|
|
||||||
}
|
|
||||||
.pr-2-600 {
|
|
||||||
padding-right: 0.5rem;
|
|
||||||
}
|
|
||||||
.pl-4-600 {
|
|
||||||
padding-left: 1rem;
|
|
||||||
}
|
|
||||||
.pl-3-600 {
|
|
||||||
padding-left: 0.75rem;
|
|
||||||
}
|
|
||||||
.pl-2-600 {
|
|
||||||
padding-left: 0.5rem;
|
|
||||||
}
|
|
||||||
.pt-4-600 {
|
|
||||||
padding-top: 1rem !important;
|
|
||||||
}
|
|
||||||
.px-4-600 {
|
|
||||||
padding-left: 1rem !important;
|
|
||||||
padding-right: 1rem !important;
|
|
||||||
}
|
|
||||||
.px-1-600 {
|
|
||||||
padding-left: 0.25rem !important;
|
|
||||||
padding-right: 0.25rem !important;
|
|
||||||
}
|
|
||||||
.py-1-600 {
|
|
||||||
padding-top: 0.25rem !important;
|
|
||||||
padding-bottom: 0.5rem !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 1000px) {
|
|
||||||
.controll-1000 {
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 200%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
.menu-triangl-active {
|
|
||||||
transform: rotate(180deg);
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu-triangl {
|
|
||||||
height: 10px;
|
|
||||||
width: 10px;
|
|
||||||
transition: all 0.3s;
|
|
||||||
}
|
|
||||||
.main-menu {
|
|
||||||
width: 250px;
|
|
||||||
z-index: 1101;
|
|
||||||
max-height: 100vh;
|
|
||||||
top: 40px;
|
|
||||||
}
|
|
||||||
.container-block::-webkit-scrollbar-thumb {
|
|
||||||
border: 5px solid transparent;
|
|
||||||
border-radius: 100px;
|
|
||||||
background-color: #8070d4;
|
|
||||||
background-clip: content-box;
|
|
||||||
}
|
|
||||||
.container-block::-webkit-scrollbar {
|
|
||||||
width: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.container-block::-webkit-scrollbar-track {
|
|
||||||
background: #ddd;
|
|
||||||
}
|
|
||||||
|
|
||||||
.transform_8 {
|
|
||||||
transform: translate(0, -8px);
|
|
||||||
}
|
|
||||||
|
|
||||||
@media screen and (max-width: 600px) {
|
|
||||||
.main-menu {
|
|
||||||
top: 45px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
Before Width: | Height: | Size: 2.1 MiB |
|
Before Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 108 KiB |
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5.82843 6.99955L8.36396 9.53509L6.94975 10.9493L2 5.99955L6.94975 1.0498L8.36396 2.46402L5.82843 4.99955H13C17.4183 4.99955 21 8.58127 21 12.9996C21 17.4178 17.4183 20.9996 13 20.9996H4V18.9996H13C16.3137 18.9996 19 16.3133 19 12.9996C19 9.68584 16.3137 6.99955 13 6.99955H5.82843Z"></path></svg>
|
|
||||||
|
Before Width: | Height: | Size: 366 B |
@ -1,3 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="1920.004" height="1193.001" viewBox="0 0 1920.004 1193.001">
|
|
||||||
<path id="Intersection_13" data-name="Intersection 13" d="M1183.231,1554.011,2050,361.011h346.311V1440.1l-82.762,113.912Zm-706.924-1193H918.725L476.308,969.945Z" transform="translate(-476.307 -361.011)" fill="rgba(0,0,0,0.06)"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 346 B |
@ -1,3 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="1920.004" height="1193.001" viewBox="0 0 1920.004 1193.001">
|
|
||||||
<path id="Intersection_13" data-name="Intersection 13" d="M1183.231,1554.011,2050,361.011h346.311V1440.1l-82.762,113.912Zm-706.924-1193H918.725L476.308,969.945Z" transform="translate(-476.307 -361.011)" fill="rgba(255,255,255,0.02)"/>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 352 B |
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-download"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/><polyline points="7 10 12 15 17 10"/><line x1="12" x2="12" y1="15" y2="3"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 346 B |
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu"><line x1="4" x2="20" y1="12" y2="12"/><line x1="4" x2="20" y1="6" y2="6"/><line x1="4" x2="20" y1="18" y2="18"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 326 B |
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-more-vertical"><circle cx="12" cy="12" r="1"/><circle cx="12" cy="5" r="1"/><circle cx="12" cy="19" r="1"/></svg>
|
|
||||||
|
Before Width: | Height: | Size: 315 B |
@ -1,9 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
|
||||||
<path d="M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"></path>
|
|
||||||
<polyline points="7.5 4.21 12 6.81 16.5 4.21"></polyline>
|
|
||||||
<polyline points="7.5 19.79 7.5 14.6 3 12"></polyline>
|
|
||||||
<polyline points="21 12 16.5 14.6 16.5 19.79"></polyline>
|
|
||||||
<polyline points="3.27 6.96 12 12.01 20.73 6.96"></polyline>
|
|
||||||
<line x1="12" y1="22.08" x2="12" y2="12"></line>
|
|
||||||
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 622 B |
|
Before Width: | Height: | Size: 108 KiB |
@ -1,159 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="330.653" height="229.984" viewBox="0 0 330.653 229.984">
|
|
||||||
<defs>
|
|
||||||
<linearGradient id="linear-gradient" x1="0.5" y1="1" x2="0.5" gradientUnits="objectBoundingBox">
|
|
||||||
<stop offset="0" stop-color="gray" stop-opacity="0.251"/>
|
|
||||||
<stop offset="0.54" stop-color="gray" stop-opacity="0.122"/>
|
|
||||||
<stop offset="1" stop-color="gray" stop-opacity="0.102"/>
|
|
||||||
</linearGradient>
|
|
||||||
</defs>
|
|
||||||
<g id="Group_1" data-name="Group 1" transform="translate(-420 -259)">
|
|
||||||
<circle id="Ellipse_37" data-name="Ellipse 37" cx="3.972" cy="3.972" r="3.972" transform="translate(722.377 259)" fill="#f1f5f9" opacity="0.1"/>
|
|
||||||
<ellipse id="Ellipse_38" data-name="Ellipse 38" cx="27.882" cy="2.78" rx="27.882" ry="2.78" transform="translate(620.471 483.424)" fill="#6c63ff" opacity="0.1"/>
|
|
||||||
<path id="Path_65" data-name="Path 65" d="M136.394,487.31l-.122,6.6-.98,53.523L126.9,567.077l-28.9.331V490.352l30.166-2.39Z" transform="translate(354.436 -100.91)" fill="#5f5d7e"/>
|
|
||||||
<path id="Path_66" data-name="Path 66" d="M136.394,487.31l-.122,6.6-.98,53.523L126.9,567.077l-28.9.331V490.352l30.166-2.39Z" transform="translate(354.436 -100.91)" fill="#334155"/>
|
|
||||||
<path id="Path_67" data-name="Path 67" d="M194.819,487.31l-.122,6.6-.98,53.523-8.387,19.641,2.208-73.038-.007-.046-.94-6.031Z" transform="translate(296.011 -100.91)" fill="#475569"/>
|
|
||||||
<path id="Path_68" data-name="Path 68" d="M128.166,487.962l8.228-.652-.122,6.6-7.166.079L98,494.34v-3.988Z" transform="translate(354.436 -100.91)" opacity="0.1"/>
|
|
||||||
<path id="Path_69" data-name="Path 69" d="M930.981,487.562v76.613h-6.729L897.33,544.538V485.4l24.053-2.261,1.476.679,1.393.642Z" transform="translate(-180.328 -98.121)" fill="#475569"/>
|
|
||||||
<rect id="Rectangle_55" data-name="Rectangle 55" width="6.729" height="80.356" transform="translate(743.924 385.698)" fill="#334155"/>
|
|
||||||
<path id="Path_70" data-name="Path 70" d="M930.981,483.819v4.4l-6.729.076-26.922.3v-3.2l24.053-2.261,1.476.679,1.393.642v-.642Z" transform="translate(-180.328 -98.121)" opacity="0.1"/>
|
|
||||||
<path id="Path_71" data-name="Path 71" d="M330.653,464.929v6.242L0,474.858v-7.944l31.113-6.289,270.745-1.986Z" transform="translate(420 -81.73)" fill="#475569"/>
|
|
||||||
<path id="Path_72" data-name="Path 72" d="M330.653,477.64v6.242L0,487.57v-7.944Z" transform="translate(420 -94.441)" fill="#334155"/>
|
|
||||||
<rect id="Rectangle_56" data-name="Rectangle 56" width="115.818" height="89.925" rx="22.82" transform="translate(540.975 289.64)" fill="#475569"/>
|
|
||||||
<rect id="Rectangle_57" data-name="Rectangle 57" width="97.349" height="73.356" rx="7" transform="translate(550.295 297.752)" fill="#f1f5f9"/>
|
|
||||||
<circle id="Ellipse_39" data-name="Ellipse 39" cx="1.595" cy="1.595" r="1.595" transform="translate(544.9 332.833)" fill="#e6e8ec"/>
|
|
||||||
<circle id="Ellipse_40" data-name="Ellipse 40" cx="2.631" cy="2.631" r="2.631" transform="translate(649.326 331.969)" fill="#e6e8ec"/>
|
|
||||||
<path id="Path_73" data-name="Path 73" d="M620.934,349.638l-12.448-7.566a1.7,1.7,0,0,0-2.525,1.483V358.27a1.7,1.7,0,0,0,2.525,1.483l12.448-7.143a1.7,1.7,0,0,0,0-2.972Zm9.36,1.274a17.542,17.542,0,1,0-17.542,17.542,17.542,17.542,0,0,0,17.542-17.542Zm-31.688,0a14.146,14.146,0,1,1,14.146,14.146,14.146,14.146,0,0,1-14.146-14.146Z" transform="translate(-11.469 -14.925)" fill="#475469"/>
|
|
||||||
<path id="Path_74" data-name="Path 74" d="M736.127,405.782a4.14,4.14,0,0,0-.374-1.165c.251-.857.414-1.384.414-1.384a1.93,1.93,0,0,0-.04-.331,5.081,5.081,0,0,0-5.147-4.263c-1.986.036-5.753.169-9.93.639.238-1.671.523-3.671.821-5.729l.546.06a2.6,2.6,0,0,1,.391.02h.175a1.8,1.8,0,0,0,1.211-.371.715.715,0,0,0-.222-1.172A2.952,2.952,0,0,0,726.565,391a2.317,2.317,0,0,0,0-2.694c-.7-.993-2.178-1.655-2.257-2.823a3.449,3.449,0,0,1,.748-1.844,7.7,7.7,0,0,0-1.215-9.251,18.1,18.1,0,0,0-1.47-1.307c-.728-2.674-1.489-5.064-1.714-5.14a5.783,5.783,0,0,1-1.268-1.264,6.084,6.084,0,0,0-.023-1.367c-.351-2.317-2.648-3.972-3.912-6.017a10.388,10.388,0,0,1-1.168-6.894,49.319,49.319,0,0,1,1.807-6.9,8.782,8.782,0,0,0,.354-5.187,9.428,9.428,0,0,0-2.135-3.217,24.318,24.318,0,0,0-7.586-5.958,15.076,15.076,0,0,0-6.716-1.436h-.023l-.364.02-.258.017-.258.026-.275.026h0c-.281.036-.559.079-.837.136a28.9,28.9,0,0,0-6.14-.688h-.268a3.144,3.144,0,0,0-1.754.414c-.735.513-.828,1.433-1.049,2.234a6.2,6.2,0,0,1-2.383,3.31c-.791.569-1.721.993-2.476,1.589a2.522,2.522,0,0,0-1.142,2.37,2.586,2.586,0,0,0,1.655,1.622c-.1.119-.2.235-.288.357.156.063.331.119.473.165.993.3,2.062.331,3.068.6a6.725,6.725,0,0,1,.814.275,11.624,11.624,0,0,0-1.36,5.468,11.78,11.78,0,0,0,6.163,10.333v.331c.1,3.455-.159,7.659-1.926,8.371s-3.459,1.516-4.5,2.036l-.331.175c-.275-.126-.549-.258-.818-.4,0,0-1.407-.166-1.162.907,0,0-4.253-.662-6.587,1.155a60.664,60.664,0,0,0-6.914,6.6c-.751.99-6.56,3.154-6.56,3.154a7.448,7.448,0,0,0,1.039-5.693s-.874-3.78-.457-5.3,1.5-7.143,1.5-7.143.152-5.938-3.088-8.662-5.494-4.965-4.243-2.317a36.912,36.912,0,0,0,1.834,3.545s-7.748,1.84-5,4.713,3.5,2.876,3.5,2.876-.917,7.093-1.086,8.414-1.655,11.383-1.655,11.383-.083,4.786.751,5.527a3.765,3.765,0,0,0,4,2.979s6.58-.166,8.414-.907,8.162-4.7,8.831-4.455a.38.38,0,0,1,.129.086.943.943,0,0,1,.1.1c-.662,1.466-2.231,6.444-1.562,8.89,0,0-.583,6.927,2.916,9.155,0,0,5.081,8.579,3.164,13.2-.152.374-.288.718-.414,1.053-2.909-2.413-7.348-4.634-14.126-5.862-.692-.126-1.38-.278-2.062-.444-1.926-.467-7.225-.894-9.747,7.484a36.849,36.849,0,0,1-2.237,5.667,18.709,18.709,0,0,0-2.118,7.745c-.056,4,2.012,7.973,9.519,9.43a28.567,28.567,0,0,0,1.443,9.079c2.082,5.2,5.415,13.61,5.415,13.61s4,8.579,4.25,12.041a55.272,55.272,0,0,1,.235,7.282,3.231,3.231,0,0,1-.033.364,8.769,8.769,0,0,1-1.119,1.016c-.583.331-2.5,2.393-2.5,2.886a8.82,8.82,0,0,0,.126,1.41,3.474,3.474,0,0,0-1.4,2.515c0,4.475,12.7,8.1,28.365,8.1s28.362-3.641,28.362-8.1c0-4.084-10.592-7.46-24.354-8.016,2.87-1.145,5.418-2.347,6.474-3.31a1.549,1.549,0,0,0,.5-.682L705.5,473.78s-.208.046-.516.136l-.185-.278c-1.185-1.8-3.465-5.4-3.465-6.375,0-.361-.6-2.668-1.476-5.829V451.289c8.692,1.324,19.892-.477,19.892-.477l.05-.026h.218v-.119c1.506-.834,9.039-5.246,11.273-11.1.662-1.708-.162-4.154-1.8-6.769,1.145-2.843,3.972-10.188,3.69-13.117,0-.156-.02-.331-.02-.5a8.635,8.635,0,0,0,.033-.9c.331-4.3,2.979-12.164,2.979-12.164S736.16,405.981,736.127,405.782ZM679.86,386.665c.6,1.059,1.248,2.413,1.5,2.962h0s-.88-1.622-1.486-2.962Zm.629,92.709-.063.023v-.331a19.7,19.7,0,0,1,.063-2.588,3.032,3.032,0,0,0-.285-1.344,31.773,31.773,0,0,1-2.029-7.987,40.057,40.057,0,0,1-.434-6.835,121.041,121.041,0,0,0,.149-15.113l5.124,1.152,5.958,12.147s3.833,5.931,5.021,10.611V473.8a11.453,11.453,0,0,1-1.791,3.886c-.791,1.082-1.562,2.178-2.277,3.31-.218.351-.46.712-.7,1.049-.079,0-3.995.228-4.66.963a4.449,4.449,0,0,0-1.245,1.887l-.169.026a39.5,39.5,0,0,0-2.645-5.544Z" transform="translate(-50.055 -12.157)" fill="url(#linear-gradient)"/>
|
|
||||||
<path id="Path_75" data-name="Path 75" d="M775.915,767.873l-1.324,4.3-5.627,4.882-8.275,2.376s-3.889-2.128-2.565-2.542a3.266,3.266,0,0,0,1.248-1.086c-.463,1.688,3.22-.487,3.22-.487s9.516-6.785,10.509-7.53a7.484,7.484,0,0,1,2.118-.97C775.634,767.465,775.915,767.873,775.915,767.873Z" transform="translate(-120.277 -304.91)" opacity="0.1"/>
|
|
||||||
<path id="Path_76" data-name="Path 76" d="M757.738,692.923l-1.324,4.3-5.627,4.882-8.275,2.376s-3.889-2.128-2.565-2.542a3.264,3.264,0,0,0,1.248-1.086,16.531,16.531,0,0,0,1.1-1.6c.708-1.139,1.476-2.237,2.261-3.31a11.912,11.912,0,0,0,2.089-5.5c.579-4.551-5.3-13.736-5.3-13.736L730.68,654.79l14.894,1.82s8.026,27.555,8.026,28.878c0,.993,2.264,4.584,3.442,6.4C757.457,692.516,757.738,692.923,757.738,692.923Z" transform="translate(-102.1 -229.96)" fill="#f8d4d4"/>
|
|
||||||
<ellipse id="Ellipse_41" data-name="Ellipse 41" cx="28.173" cy="8.126" rx="28.173" ry="8.126" transform="translate(619.203 472.187)" fill="#1e293b"/>
|
|
||||||
<path id="Path_77" data-name="Path 77" d="M770.57,773.456a1.589,1.589,0,0,1-.5.685c-2.045,1.877-9.7,4.667-14.421,6.183a33.427,33.427,0,0,1-3.783,1.076,11.216,11.216,0,0,1-5.213-1.678c-1.655-1.016-.165-2.459.5-3.2s4.634-.966,4.634-.966c-1.9,3.167,2.81.387,2.81.387s9.516-6.785,10.509-7.53a9.136,9.136,0,0,1,2.813-1.158Z" transform="translate(-112.285 -305.197)" fill="#fff"/>
|
|
||||||
<path id="Path_79" data-name="Path 79" d="M789.781,788.09c-2.045,1.877-9.694,4.667-14.421,6.183C779.643,790.645,786.825,788.749,789.781,788.09Z" transform="translate(-131.992 -319.14)" opacity="0.1"/>
|
|
||||||
<ellipse id="Ellipse_42" data-name="Ellipse 42" cx="5.637" cy="1.625" rx="5.637" ry="1.625" transform="translate(641.74 476.07)" opacity="0.1"/>
|
|
||||||
<rect id="Rectangle_58" data-name="Rectangle 58" width="5.792" height="42.862" transform="translate(644.242 434.833)" fill="#1e293b"/>
|
|
||||||
<path id="Path_80" data-name="Path 80" d="M783.792,687.128v4.965A40.74,40.74,0,0,1,778,689.045V685h1.208Z" transform="translate(-133.758 -250.171)" opacity="0.1"/>
|
|
||||||
<path id="Path_81" data-name="Path 81" d="M754.27,610.208s19.124-4.922,23.884-8.606,23.45,13.65,20.981,20.19-11.459,11.277-11.459,11.277-24.86,4.045-29.094-4.392S754.27,610.208,754.27,610.208Z" transform="translate(-117.882 -194.037)" fill="#94a3b8"/>
|
|
||||||
<path id="Path_82" data-name="Path 82" d="M754.27,610.208s19.124-4.922,23.884-8.606,23.45,13.65,20.981,20.19-11.459,11.277-11.459,11.277-24.86,4.045-29.094-4.392S754.27,610.208,754.27,610.208Z" transform="translate(-117.882 -194.037)" fill="#94a3b8" opacity="0.445"/>
|
|
||||||
<path id="Path_83" data-name="Path 83" d="M749.27,604.208s19.124-4.922,23.884-8.606,23.45,13.65,20.981,20.19-11.459,11.277-11.459,11.277-24.86,4.045-29.094-4.392S749.27,604.208,749.27,604.208Z" transform="translate(-114.537 -190.023)" fill="#334155"/>
|
|
||||||
<path id="Path_84" data-name="Path 84" d="M673.421,423.313l-2.069-.751a7.524,7.524,0,0,0,1.036-5.709s-.87-3.793-.457-5.329,1.489-7.166,1.489-7.166.152-5.958-3.068-8.688-5.455-4.965-4.213-2.317a36.851,36.851,0,0,0,1.82,3.558s-7.7,1.844-4.965,4.73,3.475,2.883,3.475,2.883-.91,7.116-1.076,8.44-1.655,11.419-1.655,11.419-.083,4.8.745,5.544a3.744,3.744,0,0,0,3.972,2.979C669.046,432.9,676.069,425.134,673.421,423.313Z" transform="translate(-56.426 -54.261)" fill="#f8d4d4"/>
|
|
||||||
<path id="Path_85" data-name="Path 85" d="M784.127,413.249v4.634l-4.8,1.566-8.175,6.017-2.168,1.6-9.681-3.889-6.123-6.454s.3-.162.814-.43l.331-.175c1.036-.52,2.668-1.324,4.472-2.042s2.016-4.928,1.913-8.4v-.331c-.083-2.433-.331-4.422-.331-4.422s1.009-.192,2.479-.41c4.074-.606,11.677-1.423,11.009,1.072a5.752,5.752,0,0,0,0,2.578c.02.093.04.189.063.281a21.835,21.835,0,0,0,2.82,6.16l6.62,2.383.185.066Z" transform="translate(-117.153 -59.421)" fill="#f8d4d4"/>
|
|
||||||
<path id="Path_86" data-name="Path 86" d="M838.485,441.541v-1.407a4.636,4.636,0,0,1,1.572,0c.579.166,1.678,1.9,2.175,2.069s3.535,11.5,3.2,12.495-3.459,23.411-3.459,23.411l-6.3,6.951-1.241-19.114,4.055-11.336Z" transform="translate(-171.511 -86.307)" fill="#f8d4d4"/>
|
|
||||||
<path id="Path_87" data-name="Path 87" d="M737.631,601.77s-5.762,1.241-5.031,3.062,3.955,1.9,3.955,1.9Z" transform="translate(-103.342 -194.489)" fill="#fdc2cc"/>
|
|
||||||
<path id="Path_88" data-name="Path 88" d="M710.965,463.909l-4.385,9.45-5.213,3.806-.91-5.882s-1.761-3.889-2.519-4.548a.379.379,0,0,0-.129-.086c-.662-.248-6.951,3.724-8.771,4.468s-8.357.91-8.357.91l2.9-10.343s5.792-2.151,6.537-3.144a60.232,60.232,0,0,1,6.868-6.62c2.317-1.82,6.544-1.158,6.544-1.158l.066.027,1.086.47,3.144,7.7Z" transform="translate(-68.65 -93.384)" fill="#f8d4d4"/>
|
|
||||||
<path id="Path_89" data-name="Path 89" d="M701.066,669.314a19.757,19.757,0,0,0-.063,2.595c.023.923.063,1.708.063,1.708l-1.9,3.972s-6.537,2.151-5.461,1.241a3.6,3.6,0,0,0,.662-2.214,56.131,56.131,0,0,0-.235-7.3c-.248-3.475-4.22-12.081-4.22-12.081s-3.31-8.44-5.378-13.653-1.324-14.646-1.324-14.646.331-7.116,1.82-9.268,7.282-2.9,7.282-2.9l2.717,9.013s2.234,8.44,3.062,9.681.579,16.053.248,17.625a42.152,42.152,0,0,0,.434,6.858,32.207,32.207,0,0,0,2.012,8.01,3.059,3.059,0,0,1,.281,1.359Z" transform="translate(-70.252 -204.524)" fill="#f8d4d4"/>
|
|
||||||
<path id="Path_90" data-name="Path 90" d="M722.3,785.068l-1.9,3.972s-6.537,2.151-5.461,1.241a3.6,3.6,0,0,0,.662-2.214c.235-.235.487-.493.745-.758a16.712,16.712,0,0,1,5.908-3.949h0C722.263,784.283,722.3,785.068,722.3,785.068Z" transform="translate(-91.489 -315.975)" opacity="0.1"/>
|
|
||||||
<path id="Path_91" data-name="Path 91" d="M719.522,791.588a.187.187,0,0,1,0,.046c-.331,1.572-5.792,3.724-5.792,3.724s-3.475.579-5.461,1.076a1.374,1.374,0,0,1-.467.043c-1.532-.116-1.6-3.065-1.6-3.518a9.4,9.4,0,0,1,2.482-2.9,17.738,17.738,0,0,0,1.84-1.764,17.078,17.078,0,0,1,6.031-4.028h0S719.787,789.956,719.522,791.588Z" transform="translate(-85.723 -316.584)" fill="#fff"/>
|
|
||||||
<path id="Path_93" data-name="Path 93" d="M722.76,806.268a.2.2,0,0,1,0,.046c-.331,1.572-5.792,3.724-5.792,3.724s-3.475.579-5.461,1.076a1.375,1.375,0,0,1-.467.043c1.8-1.235,6.166-4.2,6.755-4.263S721.287,805.993,722.76,806.268Z" transform="translate(-88.961 -331.264)" opacity="0.1"/>
|
|
||||||
<path id="Path_94" data-name="Path 94" d="M788.514,404.442c-2.045,1.685-3.925,1.443-6.782,1.443-2.065,0-4.75.725-6.441-.2-.07-2.585-.331-4.76-.331-4.76s14.4-2.731,13.488.662a6.018,6.018,0,0,0,.066,2.86Z" transform="translate(-131.724 -59.422)" opacity="0.1"/>
|
|
||||||
<path id="Path_95" data-name="Path 95" d="M781.1,361.146a11.833,11.833,0,0,1-11.833,11.833,8.247,8.247,0,0,1-.907-.033h0a11.833,11.833,0,1,1,12.743-11.8Z" transform="translate(-120.003 -25.593)" fill="#f8d4d4"/>
|
|
||||||
<path id="Path_96" data-name="Path 96" d="M742.7,459.252l3.144,4.965-4.385,9.45-5.213,3.806-.91-5.9s-1.761-3.889-2.519-4.548c.218-.533.367-.778.367-.583,0,.827,2.036,4.551,2.036,4.551,6.289-2.151,4.336-10.509,4.336-10.509s-.781-7.447-1.086-9.407l1.086.47Z" transform="translate(-103.532 -93.675)" opacity="0.1"/>
|
|
||||||
<path id="Path_97" data-name="Path 97" d="M784.127,439.869V444.5l-4.8,1.566-8.175,6.017-2.168,1.6-9.681-3.889-6.123-6.454s.3-.162.814-.43l.331-.175a40.414,40.414,0,0,0,16.718,3c12.468-1.986,12.839-5,12.528-6.067Z" transform="translate(-117.153 -86.041)" opacity="0.1"/>
|
|
||||||
<path id="Path_98" data-name="Path 98" d="M743.016,514.772a92.777,92.777,0,0,1-9.6,4.055c-5.709,2.069-18.287-.662-19.859-1.076s-13.653-5.213-18.287-7.033-5.792-.331-6.868-.5-1.82-2.234-1.986-2.813,2.979-5.627,4.717-8.192,6.951-2.069,7.7-2.234,5.958,0,5.958,0-.331-1.655,1.572-6.289-3.144-13.239-3.144-13.239c-3.475-2.234-2.9-9.185-2.9-9.185-.827-3.062,1.82-10.1,1.82-9.268s2.036,4.551,2.036,4.551c6.289-2.151,4.336-10.509,4.336-10.509s-.91-8.688-1.152-9.764,1.152-.91,1.152-.91q.4.209.814.4a40.229,40.229,0,0,0,17.059,3.161c15.116-2.439,12.438-6.328,12.339-6.467l.735.261c5.461,3.972,3.806,17.128,3.806,17.128l-2.046,9.82-1.519,7.315s5.378,32.6,5.875,34.257S743.016,514.772,743.016,514.772Z" transform="translate(-72.484 -85.901)" fill="#94a3b8"/>
|
|
||||||
<path id="Path_99" data-name="Path 99" d="M730.994,622c-.331.248-4.055,7.944-1.324,10.095S730.994,622,730.994,622Z" transform="translate(-100.759 -208.023)" opacity="0.1"/>
|
|
||||||
<path id="Path_100" data-name="Path 100" d="M743.68,625.27c.083.248,7.778,12.495,12,13.488Z" transform="translate(-110.798 -210.21)" opacity="0.1"/>
|
|
||||||
<path id="Path_101" data-name="Path 101" d="M797.2,332.386l-1.231.261a8.3,8.3,0,0,1,1.039-.308Z" transform="translate(-145.78 -14.236)" opacity="0.1"/>
|
|
||||||
<path id="Path_102" data-name="Path 102" d="M783.931,396.545l-2.317,9.814A11.986,11.986,0,0,1,778.4,404.2a9.8,9.8,0,0,0-2.35-1.966,10.2,10.2,0,0,0-4.081-.563,19.63,19.63,0,0,1-5.1-.874,3.6,3.6,0,0,1-1.324-.642,3.217,3.217,0,0,1-.662-2.8,42.893,42.893,0,0,0,.05-5.723c-.02-.357-.046-.715-.076-1.072-.132-1.6-.563-3.452-2.2-4.137-.841-.331-1.844-.3-2.648-.7a2.185,2.185,0,0,1-.331-.2c-1.192-.834-1.3-2.506-1.254-3.912q.106-2.9.2-5.8a16.864,16.864,0,0,0-.063-2.863h0a6.352,6.352,0,0,0-.516-1.827c-.718-1.536-2.214-2.817-2.482-4.438a1.8,1.8,0,0,1-.03-.228c-.139-1.45.774-2.8,1.1-4.227.642-2.87-1.516-6.014-4.69-6.838-.993-.258-2.059-.308-3.048-.6a4.887,4.887,0,0,1-.467-.165,13.894,13.894,0,0,1,11.167-5.3c7.391,0,13.385,5.3,13.385,11.833a11.356,11.356,0,0,1-4.945,9.185c.02.093.043.189.07.281a20.819,20.819,0,0,0,3.191,6.16l7.493,2.383.834.265C785.8,383.395,783.931,396.545,783.931,396.545Z" transform="translate(-113.969 -25.596)" opacity="0.1"/>
|
|
||||||
<path id="Path_103" data-name="Path 103" d="M867.572,520.655a1.124,1.124,0,0,1-.212-.03A.439.439,0,0,1,867.572,520.655Z" transform="translate(-193.541 -140.2)" opacity="0.1"/>
|
|
||||||
<path id="Path_104" data-name="Path 104" d="M759.671,330a28.465,28.465,0,0,0-6.315-.738,3.5,3.5,0,0,0-1.986.417c-.732.513-.824,1.44-1.043,2.241a6.216,6.216,0,0,1-2.367,3.31c-.784.573-1.708.993-2.459,1.6a2.566,2.566,0,0,0-1.135,2.376,2.938,2.938,0,0,0,2.171,1.84c.993.281,2.049.331,3.048.6,3.174.824,5.329,3.972,4.687,6.835-.331,1.427-1.235,2.777-1.1,4.227.162,1.731,1.761,3.065,2.512,4.67a10.092,10.092,0,0,1,.586,4.687l-.2,5.8c-.053,1.529.079,3.369,1.589,4.117.808.4,1.814.354,2.648.7,1.635.682,2.065,2.539,2.2,4.134a42.74,42.74,0,0,1,.026,6.8,3.187,3.187,0,0,0,.662,2.8,3.549,3.549,0,0,0,1.324.642,19.634,19.634,0,0,0,5.1.874,10.307,10.307,0,0,1,4.081.563,9.878,9.878,0,0,1,2.35,1.966,12.988,12.988,0,0,0,7.672,3.359,2.285,2.285,0,0,0,1.734-.354c.427-.394.175-1.244-.434-1.195a2.943,2.943,0,0,0,2.787-1.066,2.35,2.35,0,0,0,0-2.7c-.692-.993-2.161-1.655-2.241-2.833a3.5,3.5,0,0,1,.741-1.85,7.781,7.781,0,0,0-1.2-9.268c-1.552-1.605-3.879-2.823-4.422-4.882-.361-1.377.185-2.823-.023-4.223-.331-2.317-2.625-3.972-3.886-6.037a10.5,10.5,0,0,1-1.162-6.914,49.179,49.179,0,0,1,1.8-6.918,8.928,8.928,0,0,0,.351-5.206,9.539,9.539,0,0,0-2.122-3.227,23.9,23.9,0,0,0-7.533-5.958,13.774,13.774,0,0,0-9.837-.907" transform="translate(-111.233 -12.175)" fill="#474157"/>
|
|
||||||
<path id="Path_105" data-name="Path 105" d="M759.671,330a28.465,28.465,0,0,0-6.315-.738,3.5,3.5,0,0,0-1.986.417c-.732.513-.824,1.44-1.043,2.241a6.216,6.216,0,0,1-2.367,3.31c-.784.573-1.708.993-2.459,1.6a2.566,2.566,0,0,0-1.135,2.376,2.938,2.938,0,0,0,2.171,1.84c.993.281,2.049.331,3.048.6,3.174.824,5.329,3.972,4.687,6.835-.331,1.427-1.235,2.777-1.1,4.227.162,1.731,1.761,3.065,2.512,4.67a10.092,10.092,0,0,1,.586,4.687l-.2,5.8c-.053,1.529.079,3.369,1.589,4.117.808.4,1.814.354,2.648.7,1.635.682,2.065,2.539,2.2,4.134a42.74,42.74,0,0,1,.026,6.8,3.187,3.187,0,0,0,.662,2.8,3.549,3.549,0,0,0,1.324.642,19.634,19.634,0,0,0,5.1.874,10.307,10.307,0,0,1,4.081.563,9.878,9.878,0,0,1,2.35,1.966,12.988,12.988,0,0,0,7.672,3.359,2.285,2.285,0,0,0,1.734-.354c.427-.394.175-1.244-.434-1.195a2.943,2.943,0,0,0,2.787-1.066,2.35,2.35,0,0,0,0-2.7c-.692-.993-2.161-1.655-2.241-2.833a3.5,3.5,0,0,1,.741-1.85,7.781,7.781,0,0,0-1.2-9.268c-1.552-1.605-3.879-2.823-4.422-4.882-.361-1.377.185-2.823-.023-4.223-.331-2.317-2.625-3.972-3.886-6.037a10.5,10.5,0,0,1-1.162-6.914,49.179,49.179,0,0,1,1.8-6.918,8.928,8.928,0,0,0,.351-5.206,9.539,9.539,0,0,0-2.122-3.227,23.9,23.9,0,0,0-7.533-5.958,13.774,13.774,0,0,0-9.837-.907" transform="translate(-111.233 -12.175)" fill="#1e293b"/>
|
|
||||||
<path id="Path_106" data-name="Path 106" d="M737.18,548.476s2.813,1.076,5.792-1.9S737.18,548.476,737.18,548.476Z" transform="translate(-106.449 -156.917)" opacity="0.1"/>
|
|
||||||
<g id="Group_116" data-name="Group 116" transform="translate(633.048 317.105)" opacity="0.1">
|
|
||||||
<path id="Path_107" data-name="Path 107" d="M793.1,330.871a11.776,11.776,0,0,1,1.655-.209,12.551,12.551,0,0,0-2.317.073Z" transform="translate(-776.467 -330.203)"/>
|
|
||||||
<path id="Path_108" data-name="Path 108" d="M777.411,390.5a9.9,9.9,0,0,0-2.353-1.966,10.3,10.3,0,0,0-4.081-.563,19.53,19.53,0,0,1-5.1-.874,3.549,3.549,0,0,1-1.324-.642,3.225,3.225,0,0,1-.662-2.8,42.733,42.733,0,0,0-.026-6.8c-.136-1.6-.563-3.452-2.2-4.134-.837-.351-1.84-.308-2.648-.7-1.509-.748-1.655-2.588-1.592-4.117q.1-2.9.2-5.8a10.059,10.059,0,0,0-.586-4.69c-.751-1.605-2.35-2.936-2.512-4.67-.136-1.446.778-2.8,1.1-4.227.642-2.87-1.516-6.011-4.69-6.835-.993-.258-2.059-.311-3.048-.6a2.905,2.905,0,0,1-2.155-1.82,2.52,2.52,0,0,1,1.132-2.38c.751-.606,1.675-1.023,2.463-1.6a6.193,6.193,0,0,0,2.363-3.31,3.713,3.713,0,0,1,1.043-2.241,2.648,2.648,0,0,1,1.357-.4c-.295,0-.589-.017-.88-.017a3.521,3.521,0,0,0-1.986.414c-.732.516-.824,1.44-1.043,2.241a6.216,6.216,0,0,1-2.367,3.31c-.784.573-1.708.993-2.459,1.6a2.568,2.568,0,0,0-1.135,2.38,2.92,2.92,0,0,0,2.158,1.82c.99.295,2.049.331,3.048.6,3.174.824,5.329,3.972,4.687,6.835-.331,1.427-1.235,2.78-1.1,4.227.162,1.734,1.761,3.065,2.512,4.67a10.057,10.057,0,0,1,.586,4.69q-.1,2.9-.2,5.8c-.053,1.529.079,3.369,1.589,4.117.808.4,1.814.354,2.648.7,1.635.682,2.065,2.539,2.2,4.134a42.74,42.74,0,0,1,.026,6.8,3.187,3.187,0,0,0,.662,2.8,3.549,3.549,0,0,0,1.324.642,19.5,19.5,0,0,0,5.1.874,10.308,10.308,0,0,1,4.081.563A9.959,9.959,0,0,1,775.9,390.5a12.968,12.968,0,0,0,7.669,3.36,3.544,3.544,0,0,0,1.109-.043,12.945,12.945,0,0,1-7.267-3.317Z" transform="translate(-744.18 -329.32)"/>
|
|
||||||
</g>
|
|
||||||
<path id="Path_109" data-name="Path 109" d="M684.782,484s-2.648,2.429-2.261,3.422S684.782,484,684.782,484Z" transform="translate(-69.856 -115.699)" opacity="0.1"/>
|
|
||||||
<path id="Path_110" data-name="Path 110" d="M668.535,577.927c-1.91-.467-7.176-.9-9.681,7.507a37.186,37.186,0,0,1-2.221,5.683c-2.4,4.935-5.508,15.083,8.146,17.317l32.767,7.447s17.542,2.151,18.7,1.324a3.207,3.207,0,0,0,.993-2.648s-19.363,0-23.169-5.958-3.972-14.067-3.972-14.067.477-12.521-19.528-16.159C669.908,578.248,669.213,578.092,668.535,577.927Z" transform="translate(-51.152 -178.397)" fill="#474157"/>
|
|
||||||
<path id="Path_111" data-name="Path 111" d="M668.535,578.1c-1.91-.467-7.176-.9-9.681,7.51a37.188,37.188,0,0,1-2.221,5.683c-2.4,4.932-5.508,15.08,8.146,17.314l32.767,7.447s17.542,2.151,18.7,1.324a3.207,3.207,0,0,0,.993-2.648s-19.363,0-23.169-5.958S690.1,594.7,690.1,594.7s.477-12.521-19.528-16.159C669.908,578.418,669.213,578.256,668.535,578.1Z" transform="translate(-51.152 -178.511)" fill="#334155"/>
|
|
||||||
<path id="Path_112" data-name="Path 112" d="M811.958,543.834a5.061,5.061,0,0,0-5.114-4.276c-4.713.086-19.22.715-25.959,5.117,0,0-5.13,3.31-6.62,3.31s-21.68,17.211,8.275,32.6c0,0,16.053,4.568,22.341-6.156,0,0,4.468-11.518,4.137-15.507S812,544.178,812,544.178,811.991,544.049,811.958,543.834Z" transform="translate(-125.886 -152.867)" fill="#475569"/>
|
|
||||||
<path id="Path_113" data-name="Path 113" d="M811.958,553.257a4.963,4.963,0,0,0-5.114-3.949c-4.713.079-19.22.662-25.959,4.723,0,0-5.13,3.055-6.62,3.055s-21.68,15.887,8.275,30.1c0,0,16.053,4.217,22.341-5.683,0,0,4.468-10.635,4.137-14.315S812,553.575,812,553.575,811.991,553.456,811.958,553.257Z" transform="translate(-125.886 -159.39)" fill="#475569" opacity="0.1"/>
|
|
||||||
<rect id="Rectangle_59" data-name="Rectangle 59" width="5.296" height="11.277" transform="translate(664.763 427.716)" fill="#1e293b"/>
|
|
||||||
<ellipse id="Ellipse_43" data-name="Ellipse 43" cx="14.908" cy="0.957" rx="14.908" ry="0.957" transform="translate(461.439 379.949)" opacity="0.1"/>
|
|
||||||
<path id="Path_114" data-name="Path 114" d="M266.794,405.634a5.684,5.684,0,0,0-.755,1.42c-.046.126-.093.265-.139.4a1.22,1.22,0,0,0-.262-.089,3.753,3.753,0,0,0-1.182-.1c0-.152.02-.331.023-.483.05-1.744-.156-4.177-1.82-3.148-1.6.993-.457,2.648.573,3.71l.265.258c-.94.662-1.119,2.228-1.274,3.853s-1.536,3.406-2.453,4.415c-.093.1-.175.2-.258.281a3.346,3.346,0,0,0-2.664-.685c-.036-.142-.079-.291-.122-.45-.741-2.674-2.28-7.311-4.243-8.328l.258-.331c.834-1.092,1.774-2.711.387-3.128s-1.513,1.407-1.436,2.77c0,.172.026.331.04.483a2.042,2.042,0,0,0-1.45.708l-.215-.252c-1.125-1.324-3.187-3.432-3.813-1.84-.583,1.483,1.235,3.406,2.512,4.521l.079.07c-.857,3.485,2.876,6.332,4.9,7.563l.261.159c-2.78,3.277-4.5,9.417-4.5,9.417l7.785,1.39s5.163-4.452,4.5-8.635h.053c5.16-1.033,6.332-6.534,5.527-9.8l.093-.036a5.871,5.871,0,0,0,2.39-1.807C271.3,405.928,268.271,403.664,266.794,405.634Z" transform="translate(222.063 -61.62)" fill="#475569"/>
|
|
||||||
<path id="Path_115" data-name="Path 115" d="M266.794,405.634a5.684,5.684,0,0,0-.755,1.42c-.046.126-.093.265-.139.4a1.22,1.22,0,0,0-.262-.089,3.753,3.753,0,0,0-1.182-.1c0-.152.02-.331.023-.483.05-1.744-.156-4.177-1.82-3.148-1.6.993-.457,2.648.573,3.71l.265.258c-.94.662-1.119,2.228-1.274,3.853s-1.536,3.406-2.453,4.415c-.093.1-.175.2-.258.281a3.346,3.346,0,0,0-2.664-.685c-.036-.142-.079-.291-.122-.45-.741-2.674-2.28-7.311-4.243-8.328l.258-.331c.834-1.092,1.774-2.711.387-3.128s-1.513,1.407-1.436,2.77c0,.172.026.331.04.483a2.042,2.042,0,0,0-1.45.708l-.215-.252c-1.125-1.324-3.187-3.432-3.813-1.84-.583,1.483,1.235,3.406,2.512,4.521l.079.07c-.857,3.485,2.876,6.332,4.9,7.563l.261.159c-2.78,3.277-4.5,9.417-4.5,9.417l7.785,1.39s5.163-4.452,4.5-8.635h.053c5.16-1.033,6.332-6.534,5.527-9.8l.093-.036a5.871,5.871,0,0,0,2.39-1.807C271.3,405.928,268.271,403.664,266.794,405.634Z" transform="translate(222.063 -61.62)" fill="none" opacity="0.1"/>
|
|
||||||
<path id="Path_116" data-name="Path 116" d="M252.281,410.632l-.9,2.664s-.506-.357-1.145-.92c-1.278-1.115-3.1-3.038-2.512-4.521.626-1.592,2.688.51,3.813,1.84C251.98,410.222,252.281,410.632,252.281,410.632Z" transform="translate(221.08 -64.374)" fill="#f1f5f9"/>
|
|
||||||
<path id="Path_117" data-name="Path 117" d="M265.366,406.372a12.878,12.878,0,0,1-.887,1.043,13.984,13.984,0,0,1-.162-1.4c-.076-1.364.069-3.174,1.436-2.77S266.187,405.279,265.366,406.372Z" transform="translate(209.915 -61.633)" fill="#f1f5f9"/>
|
|
||||||
<path id="Path_118" data-name="Path 118" d="M297.718,407.222c-.026.877-.113,1.576-.113,1.576a11.254,11.254,0,0,1-1.135-1.013c-1.029-1.069-2.168-2.717-.573-3.71C297.559,403.045,297.765,405.477,297.718,407.222Z" transform="translate(189.306 -62.063)" fill="#f1f5f9"/>
|
|
||||||
<path id="Path_119" data-name="Path 119" d="M310.61,411.379a5.871,5.871,0,0,1-2.4,1.8,6.681,6.681,0,0,1-.8.288l-1.072-1.506a10.934,10.934,0,0,1,.444-1.463,5.688,5.688,0,0,1,.755-1.42,1.919,1.919,0,0,1,3.073,2.3Z" transform="translate(181.79 -65.072)" fill="#f1f5f9"/>
|
|
||||||
<path id="Path_120" data-name="Path 120" d="M256.831,414.57c.453.526.755.937.755.937l-.9,2.664s-.506-.357-1.145-.92a5.213,5.213,0,0,1,1.026-2.34A3.1,3.1,0,0,1,256.831,414.57Z" transform="translate(215.776 -69.249)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<path id="Path_121" data-name="Path 121" d="M265.4,412.088a12.9,12.9,0,0,1-.887,1.043,13.967,13.967,0,0,1-.162-1.4,1.807,1.807,0,0,1,1.049.357Z" transform="translate(209.882 -67.349)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<path id="Path_122" data-name="Path 122" d="M263.826,423.624l-2.264.993a13.76,13.76,0,0,1-1.2-.682c-2.38-1.466-7.162-5.15-3.955-9.493s5.882,3.449,6.934,7.255C263.671,422.84,263.826,423.624,263.826,423.624Z" transform="translate(215.916 -68.308)" fill="#f1f5f9"/>
|
|
||||||
<path id="Path_123" data-name="Path 123" d="M299.22,414.643a1.844,1.844,0,0,1,1.248-.563c-.026.877-.113,1.575-.113,1.575a11.266,11.266,0,0,1-1.135-1.012Z" transform="translate(186.553 -68.921)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<path id="Path_124" data-name="Path 124" d="M308.213,417.581a6.692,6.692,0,0,1-.8.288l-1.072-1.506a10.935,10.935,0,0,1,.444-1.463,3.83,3.83,0,0,1,1.428,2.681Z" transform="translate(181.79 -69.47)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<path id="Path_125" data-name="Path 125" d="M285.8,427.814l-.381.066c-7.589,1.155-2.5-2.939-2.5-2.939s.331-.314.8-.831c.917-1.009,2.294-2.78,2.453-4.415.238-2.459.513-4.766,3.416-4.088C292.452,416.272,293,426.374,285.8,427.814Z" transform="translate(198.577 -69.862)" fill="#f1f5f9"/>
|
|
||||||
<rect id="Rectangle_60" data-name="Rectangle 60" width="14.5" height="3.813" transform="translate(469.747 376.844)" fill="#474157"/>
|
|
||||||
<rect id="Rectangle_61" data-name="Rectangle 61" width="18.946" height="13.306" transform="translate(467.443 364.452)" fill="#474157"/>
|
|
||||||
<rect id="Rectangle_62" data-name="Rectangle 62" width="14.5" height="3.813" transform="translate(469.608 376.844)" fill="#334155" opacity="0.1"/>
|
|
||||||
<rect id="Rectangle_63" data-name="Rectangle 63" width="18.946" height="13.306" transform="translate(467.384 364.455)" fill="#334155" opacity="0.1"/>
|
|
||||||
<rect id="Rectangle_64" data-name="Rectangle 64" width="14.5" height="3.813" transform="translate(470.7 376.844)" fill="#1e293b"/>
|
|
||||||
<path id="Path_126" data-name="Path 126" d="M273.539,439c.331,1.139.49,1.923.49,1.923l-2.264.993a13.763,13.763,0,0,1-1.2-.682A5.677,5.677,0,0,1,273.539,439Z" transform="translate(205.727 -85.593)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<path id="Path_127" data-name="Path 127" d="M285.8,445.244l-.381.066c-7.589,1.155-2.5-2.939-2.5-2.939s.331-.314.8-.831a5,5,0,0,1,2.081,3.7Z" transform="translate(198.577 -87.292)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<path id="Path_128" data-name="Path 128" d="M257.76,451.555s4.25-15.225,10.211-10.525-2.426,11.915-2.426,11.915Z" transform="translate(214.291 -86.348)" fill="#f1f5f9"/>
|
|
||||||
<circle id="Ellipse_44" data-name="Ellipse 44" cx="0.477" cy="0.477" r="0.477" transform="translate(473.719 348.045)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_45" data-name="Ellipse 45" cx="0.477" cy="0.477" r="0.477" transform="translate(473.679 350.273)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_46" data-name="Ellipse 46" cx="0.477" cy="0.477" r="0.477" transform="translate(487.504 348.482)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_47" data-name="Ellipse 47" cx="0.477" cy="0.477" r="0.477" transform="translate(476.38 359.884)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_48" data-name="Ellipse 48" cx="0.477" cy="0.477" r="0.477" transform="translate(486.511 352.179)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_49" data-name="Ellipse 49" cx="0.477" cy="0.477" r="0.477" transform="translate(481.586 357.104)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_50" data-name="Ellipse 50" cx="0.477" cy="0.477" r="0.477" transform="translate(475.347 348.998)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_51" data-name="Ellipse 51" cx="0.477" cy="0.477" r="0.477" transform="translate(486.194 349.915)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_52" data-name="Ellipse 52" cx="0.477" cy="0.477" r="0.477" transform="translate(484.565 353.609)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_53" data-name="Ellipse 53" cx="0.477" cy="0.477" r="0.477" transform="translate(479.557 359.527)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_54" data-name="Ellipse 54" cx="0.477" cy="0.477" r="0.477" transform="translate(478.525 357.184)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_55" data-name="Ellipse 55" cx="0.477" cy="0.477" r="0.477" transform="translate(476.062 351.901)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<rect id="Rectangle_65" data-name="Rectangle 65" width="14.5" height="1.393" transform="translate(470.7 376.844)" opacity="0.1"/>
|
|
||||||
<rect id="Rectangle_66" data-name="Rectangle 66" width="18.946" height="13.306" transform="translate(468.397 364.452)" fill="#1e293b"/>
|
|
||||||
<circle id="Ellipse_56" data-name="Ellipse 56" cx="0.477" cy="0.477" r="0.477" transform="translate(480.193 361.672)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<circle id="Ellipse_57" data-name="Ellipse 57" cx="0.477" cy="0.477" r="0.477" transform="translate(477.333 362.268)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<path id="Path_129" data-name="Path 129" d="M399.263,626s2.36,3.088-1.089,7.748-6.289,8.606-5.15,11.505c0,0,5.21-8.659,9.45-8.778S403.927,631.21,399.263,626Z" transform="translate(123.968 -210.699)" fill="#f1f5f9"/>
|
|
||||||
<path id="Path_130" data-name="Path 130" d="M399.525,626a3.8,3.8,0,0,1,.483.967c4.134,4.859,6.338,9.393,2.363,9.509-3.7.116-8.146,6.736-9.211,8.39.036.129.079.258.126.381,0,0,5.21-8.659,9.45-8.778S404.188,631.21,399.525,626Z" transform="translate(123.706 -210.699)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<path id="Path_131" data-name="Path 131" d="M424.553,636.492c0,1.086-.122,1.966-.271,1.966s-.271-.88-.271-1.966.152-.576.3-.576S424.553,635.4,424.553,636.492Z" transform="translate(103.067 -217.252)" fill="#475569"/>
|
|
||||||
<path id="Path_132" data-name="Path 132" d="M426.437,640.312c-.953.52-1.784.834-1.857.7s.642-.662,1.6-1.182.576-.142.662,0S427.393,639.793,426.437,640.312Z" transform="translate(102.689 -219.775)" fill="#475569"/>
|
|
||||||
<path id="Path_133" data-name="Path 133" d="M363.985,626s-2.36,3.088,1.089,7.748,6.289,8.606,5.147,11.505c0,0-5.206-8.659-9.446-8.778S359.321,631.21,363.985,626Z" transform="translate(146.771 -210.699)" fill="#f1f5f9"/>
|
|
||||||
<path id="Path_134" data-name="Path 134" d="M363.985,626a3.8,3.8,0,0,0-.483.967c-4.134,4.859-6.338,9.393-2.363,9.509,3.7.116,8.146,6.736,9.211,8.39a3.669,3.669,0,0,1-.129.381s-5.206-8.655-9.446-8.768S359.321,631.21,363.985,626Z" transform="translate(146.771 -210.699)" fill="#1e293b" opacity="0.1"/>
|
|
||||||
<path id="Path_135" data-name="Path 135" d="M361.44,636.492c0,1.086.122,1.966.271,1.966s.271-.88.271-1.966-.152-.576-.3-.576S361.44,635.4,361.44,636.492Z" transform="translate(144.927 -217.252)" fill="#475569"/>
|
|
||||||
<path id="Path_136" data-name="Path 136" d="M355.691,640.312c.953.52,1.784.834,1.857.7s-.642-.662-1.6-1.182-.576-.142-.662,0S354.734,639.793,355.691,640.312Z" transform="translate(149.17 -219.775)" fill="#475569"/>
|
|
||||||
<path id="Ellipse_58" data-name="Ellipse 58" d="M24.691,0C38.327,0,49.382,1.7,49.382,3.79S38.327,7.58,24.691,7.58,0,5.883,0,3.79,11.055,0,24.691,0Z" transform="translate(492.3 450.604)" fill="#f1f5f9" opacity="0.077"/>
|
|
||||||
<path id="Path_137" data-name="Path 137" d="M380.556,668.693l-.119.963-.166,1.364-.066.566-.169,1.364-.07.569-.165,1.36-1.873,15.49c-.169,1.383-2.429,2.459-5.153,2.459h-9.837c-2.727,0-4.965-1.076-5.15-2.459l-1.893-15.49-.165-1.36-.069-.569-.169-1.364-.066-.566-.165-1.364-.119-.963c-.1-.781,1.125-1.443,2.671-1.443H377.89C379.427,667.25,380.652,667.912,380.556,668.693Z" transform="translate(149.146 -238.296)" fill="#1e293b"/>
|
|
||||||
<path id="Path_138" data-name="Path 138" d="M280.188,623.15l-.165,1.36H255.176l-.165-1.36Z" transform="translate(249.394 -191.79)" fill="#334155"/>
|
|
||||||
<path id="Path_139" data-name="Path 139" d="M280.425,628.98l-.165,1.364H255.88l-.169-1.364Z" transform="translate(248.926 -195.69)" fill="#334155"/>
|
|
||||||
<path id="Path_140" data-name="Path 140" d="M280.668,634.81l-.165,1.364H256.6l-.165-1.364Z" transform="translate(248.444 -199.59)" fill="#334155"/>
|
|
||||||
</g>
|
|
||||||
<!-- Code injected by live-server -->
|
|
||||||
<script>
|
|
||||||
// <![CDATA[ <-- For SVG support
|
|
||||||
if ('WebSocket' in window) {
|
|
||||||
(function () {
|
|
||||||
function refreshCSS() {
|
|
||||||
var sheets = [].slice.call(document.getElementsByTagName("link"));
|
|
||||||
var head = document.getElementsByTagName("head")[0];
|
|
||||||
for (var i = 0; i < sheets.length; ++i) {
|
|
||||||
var elem = sheets[i];
|
|
||||||
var parent = elem.parentElement || head;
|
|
||||||
parent.removeChild(elem);
|
|
||||||
var rel = elem.rel;
|
|
||||||
if (elem.href && typeof rel != "string" || rel.length == 0 || rel.toLowerCase() == "stylesheet") {
|
|
||||||
var url = elem.href.replace(/(&|\?)_cacheOverride=\d+/, '');
|
|
||||||
elem.href = url + (url.indexOf('?') >= 0 ? '&' : '?') + '_cacheOverride=' + (new Date().valueOf());
|
|
||||||
}
|
|
||||||
parent.appendChild(elem);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var protocol = window.location.protocol === 'http:' ? 'ws://' : 'wss://';
|
|
||||||
var address = protocol + window.location.host + window.location.pathname + '/ws';
|
|
||||||
var socket = new WebSocket(address);
|
|
||||||
socket.onmessage = function (msg) {
|
|
||||||
if (msg.data == 'reload') window.location.reload();
|
|
||||||
else if (msg.data == 'refreshcss') refreshCSS();
|
|
||||||
};
|
|
||||||
if (sessionStorage && !sessionStorage.getItem('IsThisFirstTime_Log_From_LiveServer')) {
|
|
||||||
console.log('Live reload enabled.');
|
|
||||||
sessionStorage.setItem('IsThisFirstTime_Log_From_LiveServer', true);
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
console.error('Upgrade your browser. This Browser is NOT supported WebSocket for Live-Reloading.');
|
|
||||||
}
|
|
||||||
// ]]>
|
|
||||||
</script>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 938 KiB |
|
Before Width: | Height: | Size: 1.8 KiB |
@ -1,284 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 355">
|
|
||||||
<g id="ocean">
|
|
||||||
<path id="sky" class="st0" d="M0 0h1000v203.1H0z"></path>
|
|
||||||
<linearGradient id="water_1_" gradientUnits="userSpaceOnUse" x1="500" y1="354" x2="500" y2="200.667">
|
|
||||||
<stop offset="0" stop-color="#fff"></stop>
|
|
||||||
<stop offset="1" stop-color="#b3dcdf"></stop>
|
|
||||||
</linearGradient>
|
|
||||||
<path id="water" fill="url(#water_1_)" d="M0 200.7h1000V354H0z"></path>
|
|
||||||
<path id="land" class="st0" d="M0 273.4h1000V354H0z"></path>
|
|
||||||
<g id="bumps">
|
|
||||||
<path class="st0" d="M0 275.2s83.8-28 180-28 197 28 197 28H0z"></path>
|
|
||||||
<path class="st0" d="M377 275.2s54.7-28 117.5-28 128.6 28 128.6 28H377z"></path>
|
|
||||||
<path class="st0" d="M623.2 275.2s83.7-28 179.9-28 196.9 28 196.9 28H623.2z"></path>
|
|
||||||
<path class="st0" d="M-998 275.2s83.8-28 180-28 197 28 197 28h-377z"></path>
|
|
||||||
<path class="st0" d="M-621 275.2s54.7-28 117.5-28 128.6 28 128.6 28H-621z"></path>
|
|
||||||
<path class="st0" d="M-374.8 275.2s83.7-28 179.9-28S2 275.2 2 275.2h-376.8z"></path>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g id="tracks">
|
|
||||||
<path class="st2" d="M9.8 282.4h-3L0 307.6h3z"></path>
|
|
||||||
<path class="st2" d="M19.8 282.4h-3L10 307.6h3z"></path>
|
|
||||||
<path class="st2" d="M29.8 282.4h-3L20 307.6h3z"></path>
|
|
||||||
<path class="st2" d="M39.8 282.4h-3L30 307.6h3z"></path>
|
|
||||||
<path class="st2" d="M49.8 282.4h-3L40 307.6h3z"></path>
|
|
||||||
<path class="st2" d="M59.8 282.4h-3L50 307.6h3z"></path>
|
|
||||||
<path class="st2" d="M69.8 282.4h-3L60 307.6h3z"></path>
|
|
||||||
<path class="st2" d="M79.8 282.4h-3L70 307.6h3z"></path>
|
|
||||||
<path class="st2" d="M89.8 282.4h-3L80 307.6h3z"></path>
|
|
||||||
<path class="st2" d="M99.8 282.4h-3L90 307.6h3z"></path>
|
|
||||||
<path class="st2" d="M109.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M119.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M129.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M139.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M149.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M159.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M169.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M179.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M189.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M199.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M209.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M219.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M229.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M239.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M249.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M259.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M269.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M279.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M289.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M299.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M309.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M319.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M329.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M339.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M349.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M359.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M369.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M379.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M389.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M399.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M409.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M419.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M429.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M439.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M449.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M459.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M469.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M479.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M489.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M499.8 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M1000 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M990 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M980 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M970 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M960 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M950 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M940 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M930 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M920 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M910 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M900 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M890 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M880 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M870 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M860 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M850 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M840 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M830 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M820 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M810 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M800 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M790 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M780 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M770 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M760 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M750 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M740 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M730 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M720 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M710 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M700 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M690 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M680 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M670 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M660 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M650 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M640 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M630 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M620 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M610 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M600 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M590 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M580 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M570 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M560 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<g>
|
|
||||||
<path class="st2" d="M-490.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-480.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-470.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-460.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-450.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-440.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-430.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-420.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-410.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-400.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-390.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-380.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-370.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-360.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-350.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-340.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-330.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-320.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-310.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-300.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-290.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-280.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-270.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-260.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-250.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-240.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-230.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-220.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-210.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-200.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-190.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-180.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-170.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-160.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-150.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-140.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-130.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-120.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-110.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-100.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-90.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-80.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-70.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-60.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-50.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-40.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-30.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-20.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-10.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M-.2 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M500 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M490 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M480 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M470 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M460 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M450 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M440 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M430 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M420 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M410 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M400 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M390 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M380 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M370 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M360 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M350 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M340 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M330 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M320 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M310 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M300 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M290 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M280 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M270 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M260 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M250 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M240 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M230 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M220 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M210 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M200 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M190 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M180 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M170 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M160 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M150 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M140 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M130 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M120 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M110 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M100 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M90 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M80 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M70 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M60 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
</g>
|
|
||||||
<path class="st2" d="M550 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M540 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M530 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M520 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M510 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M550 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M540 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M530 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M520 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st2" d="M510 282.4h-3l-6.8 25.2h3z"></path>
|
|
||||||
<path class="st3" d="M-499.5 300.2H1000v5.1H-499.5z"></path>
|
|
||||||
<path class="st3" d="M-499.5 283.8H1000v2.8H-499.5z"></path>
|
|
||||||
</g>
|
|
||||||
<g id="cloudsAll">
|
|
||||||
<path id="cloud1" class="st4" d="M19.5 69.7s-21.3.5-25-12.2c0 0-4.3-21.3 16-21.8 0 0-2.1-12.2 12.2-14.9 0 0 15-3.2 21.3 6.9 0 0 3.6-20.7 17.8-22.3 0 0 24-3 26.6 13.1 0 0 .1 9.5-2.8 13.5 0 0 9.5-15 26.5-4.8 0 0 12.1 7.9 7 20.2 0 0 16 4.8 10.1 18.1 0 0-10.2 8.5-17.1-1.1 0 0-5.5 16-32.5 16 0 0-19.1 2.1-27-13.3 0 0 .5 10.1-13.3 10.6-.1 0-20.3 3.2-19.8-8z"></path>
|
|
||||||
<path id="cloud3" class="st4" d="M836 132s-18.3 2.1-22.2-4.9c0 0-4.9-11.8 12.5-13.8 0 0-2.5-6.8 9.7-9.6 0 0 12.7-3.1 18.7 2.1 0 0 2-12.2 14-14.3 0 0 16.6-3.3 23.7 2.1 0 0 4.8 3.9 2.4 6.5 0 0 3.1-4.8 18.4-.4 0 0 10.9 3.5 7.2 11 0 0 13.8-1.5 9.7 9.5 0 0-4.1 10.8-15.5 4.8 0 0-3.1 5.6-26.4 7.9 0 0-16.3 2.8-24-5.3 0 0 1 5.7-10.8 7.2-.1.1-17.2 3.6-17.4-2.8z"></path>
|
|
||||||
<path id="cloud2" class="st4" d="M19.3 159.5s-15.9.6-18.8-5.1c0 0-3.4-9.5 11.7-10.1 0 0-1.7-5.5 9-6.9 0 0 11.2-1.7 16 2.8 0 0 2.5-9.4 13.1-10.3 0 0 17.9-1.8 20 5.4 0 0 .2 4.3-2 6.1 0 0 6.9-6.9 19.8-2.6 0 0 9.1 3.4 5.5 9 0 0 6.5 0 4.5 6.7 0 0-2.6 5.6-9.6 1 0 0-4 7.3-24.2 7.7 0 0-14.2 1.3-20.4-5.5 0 0 .5 4.5-9.8 5 0 .1-15 1.8-14.8-3.2z"></path>
|
|
||||||
<path id="cloud4" class="st4" d="M370.3 109.5s15.9.6 18.8-5.1c0 0 3.4-9.5-11.7-10.1 0 0 1.7-5.5-9-6.9 0 0-11.2-1.7-16 2.8 0 0-2.5-9.4-13.1-10.3 0 0-17.9-1.8-20 5.4 0 0-.2 4.3 2 6.1 0 0-6.9-6.9-19.8-2.6 0 0-9.1 3.4-5.5 9 0 0-12 1.9-7.7 8 0 0 7.5 4 12.8-.2 0 0 4 7.3 24.2 7.7 0 0 14.2 1.3 20.4-5.5 0 0-.5 4.5 9.8 5 0 0 15.1 1.7 14.8-3.3z"></path>
|
|
||||||
<path id="cloud5" class="st4" d="M511.7 12.4s-21.3-.3-25 7c0 0-4.3 12.2 16 12.5 0 0-2.1 7 12.2 8.6 0 0 15 1.8 21.3-4 0 0 3.6 11.9 17.8 12.8 0 0 19.5 1.6 27-4.4 0 0 5-4.4 2.1-6.7 0 0 4.1 4.4 21.2-1.5 0 0 12.1-4.6 7-11.6 0 0 16-2.8 10.1-10.4 0 0-10.2-4.9-17.1.6 0 0-5.5-9.2-32.5-9.2 0 0-19.1-1.2-27 7.6 0 0 .5-5.8-13.3-6.1-.1.2-20.3-1.6-19.8 4.8z"></path>
|
|
||||||
</g>
|
|
||||||
<g id="train">
|
|
||||||
<path fill="#b3dcdf" d="M344.5 248.5h507.2v37.8H344.5z"></path>
|
|
||||||
<g id="wheels">
|
|
||||||
<circle class="st6" cx="384.1" cy="285.6" r="15.1"></circle>
|
|
||||||
<path class="st2" d="M384.1 295.7c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1 10.1 4.5 10.1 10.1c0 5.5-4.6 10.1-10.1 10.1z"></path>
|
|
||||||
<circle class="st6" cx="416.1" cy="285.6" r="15.1"></circle>
|
|
||||||
<path class="st2" d="M416.1 295.7c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1 10.1 4.5 10.1 10.1c0 5.5-4.6 10.1-10.1 10.1z"></path>
|
|
||||||
<circle class="st6" cx="469.1" cy="285.6" r="15.1"></circle>
|
|
||||||
<path class="st2" d="M469.1 295.7c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1 10.1 4.5 10.1 10.1c0 5.5-4.6 10.1-10.1 10.1z"></path>
|
|
||||||
<circle class="st6" cx="734.1" cy="285.6" r="15.1"></circle>
|
|
||||||
<path class="st2" d="M734.1 295.7c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1 10.1 4.5 10.1 10.1c0 5.5-4.6 10.1-10.1 10.1z"></path>
|
|
||||||
<circle class="st6" cx="766.1" cy="285.6" r="15.1"></circle>
|
|
||||||
<path class="st2" d="M766.1 295.7c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1 10.1 4.5 10.1 10.1c0 5.5-4.6 10.1-10.1 10.1z"></path>
|
|
||||||
<circle class="st6" cx="821.1" cy="285.6" r="15.1"></circle>
|
|
||||||
<path class="st2" d="M821.1 295.7c-5.6 0-10.1-4.5-10.1-10.1s4.5-10.1 10.1-10.1 10.1 4.5 10.1 10.1c0 5.5-4.6 10.1-10.1 10.1z"></path>
|
|
||||||
</g>
|
|
||||||
<path id="bracefront" class="st7" d="M383.2 285.6h88.1"></path>
|
|
||||||
<path id="braceback" class="st7" d="M733.2 285.6h88.1"></path>
|
|
||||||
<g id="car-layers">
|
|
||||||
<path id="car" class="st8" d="M321.8 300.7v-32.4s1.2.7-1.5-2.4v-29.1s3.1-11.6 10.7-21.1c0 0 7.6-12 15.5-17.5h1.3s10.2-4.9 30.9-28h.6s-.9-1.4 0-2.7c0 0 10.1-10.5 21-12.3 0 0 9.4-1.8 20.2-1.8h47.7V151H492v-1.1h10.1v1.1h19v2.2s8.2.9 19.2-4.2c0 0 1.4-1.1 28.8-1.1h291.5v6.8h7.5v2.2s12.2-.6 12.2 9.8V177l-10-.1v57.9s14.9-.5 14.9 10.2c0 0 1 9-14.9 8.9v3.8H719.5s-2.4.1-4.3 3l-15 29s-2.9 5.1-10.8 5.1H504.3s-2.9.1-6.1-5l-13.1-25s-4.5-7.1-11.8-7.1H369v2.4s-3.2 1.3-7.1 8.7L351.4 289s-2.9 6.3-6.9 6.4h-17.8l-4.9 5.3z"></path>
|
|
||||||
<path id="streamline-outine" class="st8" d="M320.3 236.6s1.4-6.8 4.4-11.3c0 0 .1-2.3 23.2-6.3l78-16.6s103.3-21.1 134.9-26.1c0 0 93.3-16 120.5-17.9 0 0 57.6-4.3 100-4.1h88.9v63.4s-10.3 5.4-17.1 5.3c0 0-305.6 4.9-366.3 8.1 0 0-100.3 4.8-119.1 6.8 0-.1-46.6 1.2-47.4-1.3z"></path>
|
|
||||||
<g id="window-grate">
|
|
||||||
<path class="st9" d="M739.5 182.6H854"></path>
|
|
||||||
<path class="st9" d="M739.5 177.6H854"></path>
|
|
||||||
<path class="st9" d="M739.5 172.6H854"></path>
|
|
||||||
<path class="st9" d="M739.5 167.6H854"></path>
|
|
||||||
<path class="st9" d="M739.5 161.4H854v26.1H739.5z"></path>
|
|
||||||
</g>
|
|
||||||
<path class="st9" d="M320.3 257.8h549.9"></path>
|
|
||||||
<g id="Text">
|
|
||||||
<text transform="translate(377.037 230.025)" class="st8 st10" font-size="21">
|
|
||||||
404
|
|
||||||
</text>
|
|
||||||
<text transform="translate(550.5 213.994)" class="st8 st10" font-size="24.025">
|
|
||||||
Страница не найдена.
|
|
||||||
</text>
|
|
||||||
</g>
|
|
||||||
<g id="ladders">
|
|
||||||
<g id="ladder-f">
|
|
||||||
<path id="front-ladder" class="st8" d="M433.8 258.4h17.8v34.8h-17.8z"></path>
|
|
||||||
<path id="fb-rung" class="st9" d="M433.8 281.1h17.7"></path>
|
|
||||||
<path id="ft-rung" class="st9" d="M433.8 268.6h17.7"></path>
|
|
||||||
</g>
|
|
||||||
<g id="ladder-b">
|
|
||||||
<path id="ladder-back" class="st8" d="M851.8 257.8h17.8v34.8h-17.8z"></path>
|
|
||||||
<path id="bt-rung" class="st9" d="M851.8 268.6h17.7"></path>
|
|
||||||
<path id="bb-rung" class="st9" d="M851.8 281.1h17.7"></path>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<path id="window-front" class="st8" d="M350.5 196.4s-.4 3.9 15.2 4.3l32.3-30.3s-18.2 1.1-19-.8l-28.5 26.8z"></path>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 21 KiB |
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB |
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
|
||||||
|
Before Width: | Height: | Size: 1.5 KiB |
@ -1,53 +0,0 @@
|
|||||||
<script>
|
|
||||||
import {mapGetters, mapMutations} from 'vuex'
|
|
||||||
import AppContainer from "@frames/AppContainer/AppContainer.vue"
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'App',
|
|
||||||
components: {
|
|
||||||
AppContainer
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
...mapGetters('auth', ['inited']),
|
|
||||||
pageName() {
|
|
||||||
return this.$route.name
|
|
||||||
},
|
|
||||||
outerPages () {
|
|
||||||
return ['auth', '404']
|
|
||||||
},
|
|
||||||
innerPage () {
|
|
||||||
return !this.outerPages.includes(this.pageName) && this.inited
|
|
||||||
},
|
|
||||||
outerPage () {
|
|
||||||
return this.outerPages.includes(this.pageName) && this.inited
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.initAuth(localStorage.getItem('token'))
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
...mapMutations('auth', ['initAuth'])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div
|
|
||||||
v-if="innerPage"
|
|
||||||
class="flex min-h-[100vh]"
|
|
||||||
>
|
|
||||||
<AppContainer>
|
|
||||||
<router-view />
|
|
||||||
</AppContainer>
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
v-if="outerPage"
|
|
||||||
class="relative"
|
|
||||||
>
|
|
||||||
<router-view />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
import {scandApiRequest} from '@helpers/apiHelpers.js'
|
|
||||||
import {Adapter} from '1-toolkits-helpers'
|
|
||||||
|
|
||||||
const {convertList} = Adapter
|
|
||||||
|
|
||||||
const machinesConfig = {
|
|
||||||
zav_nomer: 'zavNomer',
|
|
||||||
type: 'type',
|
|
||||||
railway_name: 'railwayName',
|
|
||||||
org_name: 'orgName',
|
|
||||||
nomer_zn8: 'nomerZn8',
|
|
||||||
machine_type: 'machineType',
|
|
||||||
machine_id: 'machineId',
|
|
||||||
imei: 'imei',
|
|
||||||
device_number: 'deviceNumber',
|
|
||||||
device_id: 'deviceId'
|
|
||||||
}
|
|
||||||
|
|
||||||
class AdapterOfMachines {
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param {String} url
|
|
||||||
*/
|
|
||||||
constructor(url) {
|
|
||||||
this.url = url
|
|
||||||
}
|
|
||||||
|
|
||||||
async getModalMachines() {
|
|
||||||
let result = await scandApiRequest('ScandApi.LiveMonitor.Machines', 'select_machines', [])
|
|
||||||
result = convertList(result, {
|
|
||||||
config: machinesConfig
|
|
||||||
})
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default AdapterOfMachines
|
|
||||||
@ -1,8 +0,0 @@
|
|||||||
class AdapterOfPacks {
|
|
||||||
constructor(url) {
|
|
||||||
this.url = url
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
export default AdapterOfPacks
|
|
||||||
@ -1 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>
|
|
||||||
|
Before Width: | Height: | Size: 496 B |
@ -1,59 +0,0 @@
|
|||||||
<script>
|
|
||||||
import {FwbButton} from "flowbite-vue";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
FwbButton
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
onClick: {
|
|
||||||
type: Function,
|
|
||||||
default: () => {
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<fwb-button
|
|
||||||
color="dark"
|
|
||||||
:onclick="onClick"
|
|
||||||
outline
|
|
||||||
square
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="feather feather-x-square"
|
|
||||||
fill="none"
|
|
||||||
height="24"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
width="24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
>
|
|
||||||
<rect
|
|
||||||
height="18"
|
|
||||||
rx="2"
|
|
||||||
ry="2"
|
|
||||||
width="18"
|
|
||||||
x="3"
|
|
||||||
y="3"
|
|
||||||
/>
|
|
||||||
<line
|
|
||||||
x1="9"
|
|
||||||
x2="15"
|
|
||||||
y1="9"
|
|
||||||
y2="15"
|
|
||||||
/>
|
|
||||||
<line
|
|
||||||
x1="15"
|
|
||||||
x2="9"
|
|
||||||
y1="9"
|
|
||||||
y2="15"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</fwb-button>
|
|
||||||
</template>
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
<script>
|
|
||||||
import {FwbButton} from "flowbite-vue";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
FwbButton
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
onClick: {
|
|
||||||
type: Function,
|
|
||||||
default: () => {
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<fwb-button
|
|
||||||
color="dark"
|
|
||||||
:onclick="onClick"
|
|
||||||
outline
|
|
||||||
square
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="feather feather-edit"
|
|
||||||
fill="none"
|
|
||||||
height="24"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
width="24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
>
|
|
||||||
<path d="M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7" />
|
|
||||||
<path d="M18.5 2.5a2.121 2.121 0 0 1 3 3L12 15l-4 1 1-4 9.5-9.5z" />
|
|
||||||
</svg>
|
|
||||||
</fwb-button>
|
|
||||||
</template>
|
|
||||||
@ -1,42 +0,0 @@
|
|||||||
<script>
|
|
||||||
import {FwbButton} from "flowbite-vue";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
FwbButton
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
onClick: {
|
|
||||||
type: Function,
|
|
||||||
default: () => {
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<fwb-button
|
|
||||||
color="dark"
|
|
||||||
:onclick="onClick"
|
|
||||||
outline
|
|
||||||
square
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="feather feather-save"
|
|
||||||
fill="none"
|
|
||||||
height="24"
|
|
||||||
stroke="currentColor"
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
width="24"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
>
|
|
||||||
<path d="M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z" />
|
|
||||||
<polyline points="17 21 17 13 7 13 7 21" />
|
|
||||||
<polyline points="7 3 7 8 15 8" />
|
|
||||||
</svg>
|
|
||||||
</fwb-button>
|
|
||||||
</template>
|
|
||||||
@ -1,70 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'DoubleSwitch',
|
|
||||||
props: {
|
|
||||||
machine: {
|
|
||||||
type: Object,
|
|
||||||
default: () => ({})
|
|
||||||
},
|
|
||||||
firstTitle: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
secondTitle: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
firstColor: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
secondColor: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
|
|
||||||
},
|
|
||||||
inject: ['isChecked'],
|
|
||||||
emits: ['switched'],
|
|
||||||
methods: {
|
|
||||||
buttonClass: function(value) {
|
|
||||||
return `border border-slate-400 flex items-center justify-center cursor-pointer rounded transition-all text-xs text-center py-[5px] px-2 ${value}`
|
|
||||||
},
|
|
||||||
setChecked(e) {
|
|
||||||
this.$emit('switched', e.target.checked)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<label class="relative inline-flex items-center cursor-pointer">
|
|
||||||
<input
|
|
||||||
v-bind="$attrs"
|
|
||||||
class="input sr-only peer/checkbox"
|
|
||||||
type="checkbox"
|
|
||||||
:checked="isChecked"
|
|
||||||
@change="setChecked"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<div
|
|
||||||
:class="`w-11 h-6 rounded-full peer peer-focus:ring-4 peer-focus:ring-${secondColor}-300 dark:peer-focus:ring-${secondColor}-800 dark:bg-${firstColor}-700 peer-checked/checkbox:after:translate-x-full peer-checked/checkbox:after:border-white after:content-[''] after:absolute after:top-0.5 after:left-[2px] after:bg-white after:border-${firstColor}-300 after:border after:rounded-full after:h-5 after:w-5 after:transition-all dark:border-${firstColor}-600`"
|
|
||||||
:style="{background: !isChecked ? firstColor : secondColor}"></div>
|
|
||||||
<span class="block peer-checked/checkbox:hidden ml-2 text-sm font-medium text-gray-900 dark:text-gray-300"> {{ firstTitle }}</span>
|
|
||||||
<span class="hidden peer-checked/checkbox:block ml-2 text-sm font-medium text-gray-900 dark:text-gray-300"> {{ secondTitle }} </span>
|
|
||||||
</label>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
|
|
||||||
</style>
|
|
||||||
@ -1,58 +0,0 @@
|
|||||||
<script>
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'VAccordion',
|
|
||||||
props: {
|
|
||||||
isOpen: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
id: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
},
|
|
||||||
setup(props, {slots}) {
|
|
||||||
const hasHeader = slots.header !== undefined
|
|
||||||
const hasBody = slots.body !== undefined
|
|
||||||
return {
|
|
||||||
hasHeader,
|
|
||||||
hasBody
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="relative w-full">
|
|
||||||
<input
|
|
||||||
:id="id"
|
|
||||||
type="checkbox"
|
|
||||||
value=""
|
|
||||||
:checked="isOpen"
|
|
||||||
class="hidden peer"
|
|
||||||
required=""
|
|
||||||
>
|
|
||||||
<label
|
|
||||||
:for="id"
|
|
||||||
class="inline-flex items-center justify-between w-full px-5 h-[50px] text-gray-600 bg-white border border-gray-200 rounded-lg cursor-pointer dark:hover:text-gray-300 dark:border-gray-700 peer-checked:rounded-b-none peer-checked:border-slate-200 hover:text-gray-600 dark:peer-checked:text-gray-300 peer-checked:text-gray-600 hover:bg-gray-50 dark:text-gray-400 dark:bg-gray-800 transition-all"
|
|
||||||
>
|
|
||||||
<div v-if="hasHeader"><slot name="header" /></div>
|
|
||||||
</label>
|
|
||||||
<i class="ri-arrow-down-s-line absolute right-[10px] top-[15px] peer-checked:rotate-180 transition-all pointer-events-none" />
|
|
||||||
<div
|
|
||||||
v-if="hasBody"
|
|
||||||
class="hidden peer-checked:block transition-all w-full px-5 py-4 text-gray-600 bg-white border border-gray-200 rounded-b-lg cursor-default"
|
|
||||||
>
|
|
||||||
<slot name="body" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
</style>
|
|
||||||
@ -1,58 +0,0 @@
|
|||||||
<script>
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: "VButton",
|
|
||||||
props: {
|
|
||||||
onClick: {
|
|
||||||
type: Function,
|
|
||||||
default: () => {
|
|
||||||
},
|
|
||||||
},
|
|
||||||
selected: {
|
|
||||||
type: String,
|
|
||||||
default: "",
|
|
||||||
},
|
|
||||||
type: {
|
|
||||||
type: String,
|
|
||||||
default: "",
|
|
||||||
},
|
|
||||||
minWidth: {
|
|
||||||
type: String,
|
|
||||||
default: "80px",
|
|
||||||
},
|
|
||||||
title: {
|
|
||||||
type: String,
|
|
||||||
default: "",
|
|
||||||
},
|
|
||||||
classBtn: {
|
|
||||||
type: Array,
|
|
||||||
default: () => [],
|
|
||||||
},
|
|
||||||
classIcon: {
|
|
||||||
type: String,
|
|
||||||
default: "",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
setSelected: function() {
|
|
||||||
this.onClick(this.selected)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<button
|
|
||||||
:type="type"
|
|
||||||
:class="classBtn"
|
|
||||||
class="w-full relative col-span-4 md:col-span-2 items-center justify-center text-center border-solid border-blue-1 z-10 cursor-pointer"
|
|
||||||
@click="setSelected()"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
v-if="classIcon"
|
|
||||||
:class="classIcon"
|
|
||||||
class="text-blue-1"
|
|
||||||
/>
|
|
||||||
{{ title }}
|
|
||||||
</button>
|
|
||||||
</template>
|
|
||||||
@ -1,74 +0,0 @@
|
|||||||
<script>
|
|
||||||
import Modal from '../VModal/VModal.vue'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'ButtonModal',
|
|
||||||
components: {Modal},
|
|
||||||
props: {
|
|
||||||
text: {
|
|
||||||
default: "",
|
|
||||||
type: String
|
|
||||||
},
|
|
||||||
"btnClass": {
|
|
||||||
default: "",
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
containerClass: {
|
|
||||||
default: "",
|
|
||||||
type: String,
|
|
||||||
},
|
|
||||||
forcedBtnClass: {
|
|
||||||
default: "",
|
|
||||||
type: String
|
|
||||||
},
|
|
||||||
onToggle: {
|
|
||||||
default: () => null,
|
|
||||||
type: Function
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
open: false,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
__btnClass__() {
|
|
||||||
if (this.forcedBtnClass) return this.forcedBtnClass
|
|
||||||
return `${this.btnClass} cursor-pointer w-full bg-transparent hover:bg-primary text-primary font-semibold hover:text-white py-1 text-ssm px-4 border border-primary hover:border-transparent rounded-lg text-center transition_up`
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
toggle () {
|
|
||||||
this.open = !this.open
|
|
||||||
this.onToggle({isOpen: this.open})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div
|
|
||||||
v-if="text"
|
|
||||||
:class="__btnClass__"
|
|
||||||
@click="toggle"
|
|
||||||
>
|
|
||||||
{{ text }}
|
|
||||||
</div>
|
|
||||||
<div
|
|
||||||
v-if="!text"
|
|
||||||
:class="__btnClass__"
|
|
||||||
@click="toggle"
|
|
||||||
>
|
|
||||||
<slot name="button" />
|
|
||||||
</div>
|
|
||||||
<Modal
|
|
||||||
v-if="open"
|
|
||||||
:close="toggle"
|
|
||||||
:isOpen="true"
|
|
||||||
:containerClass="containerClass"
|
|
||||||
>
|
|
||||||
<slot />
|
|
||||||
</Modal>
|
|
||||||
</template>
|
|
||||||
@ -1,51 +0,0 @@
|
|||||||
<template>
|
|
||||||
<ButtonModal
|
|
||||||
text="Выбрать машину"
|
|
||||||
btnClass="col-span-4"
|
|
||||||
containerClass="pt-10 px-4 min-w-[80vw]"
|
|
||||||
>
|
|
||||||
<Tabulator v-bind="tabulatorOptions" />
|
|
||||||
</ButtonModal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import ButtonModal from '@molecules/ButtonModal/ButtonModal.vue'
|
|
||||||
import Tabulator from "@molecules/VTabulator/VTabulator.vue"
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'MachinesModal',
|
|
||||||
components: {ButtonModal, Tabulator},
|
|
||||||
data() {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
tabulatorOptions() {
|
|
||||||
return {
|
|
||||||
dataSource: this.packsData,
|
|
||||||
columns: [
|
|
||||||
{
|
|
||||||
title: "Нормер пакета",
|
|
||||||
field: "pack_number",
|
|
||||||
width: 150
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Количество записей",
|
|
||||||
field: "count",
|
|
||||||
width: 150
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Последняя дата пакета",
|
|
||||||
field: "pack_dt",
|
|
||||||
width: 150,
|
|
||||||
render: "{{ dt_format (dt_shift pack_dt 3 'hour') }}"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
height: "550px"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
@ -1,71 +0,0 @@
|
|||||||
<script>
|
|
||||||
import Modal from '@molecules/VModal/VModal.vue'
|
|
||||||
import {CoordsMap} from './helpers'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'MapModal',
|
|
||||||
components: {
|
|
||||||
Modal,
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
open: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
close: {
|
|
||||||
type: Function,
|
|
||||||
default: () => {}
|
|
||||||
},
|
|
||||||
id: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
data: {
|
|
||||||
type: Object,
|
|
||||||
default: () => ({})
|
|
||||||
},
|
|
||||||
text: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
headerClass: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
containerClass: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
updated () {
|
|
||||||
this.$nextTick(function () {
|
|
||||||
if (this.data && this.id && this.open) {
|
|
||||||
const newMap = new CoordsMap(this.id)
|
|
||||||
newMap.loadMap(this.data.coords, this.data.machine)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<Modal
|
|
||||||
v-if="open"
|
|
||||||
:close="close"
|
|
||||||
:isOpen="true"
|
|
||||||
:containerClass="containerClass"
|
|
||||||
>
|
|
||||||
<div :class="headerClass">
|
|
||||||
<slot name="header" />
|
|
||||||
</div>
|
|
||||||
<slot />
|
|
||||||
</Modal>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
</style>
|
|
||||||
@ -1,297 +0,0 @@
|
|||||||
import Map from 'ol/Map.js';
|
|
||||||
import OSM from 'ol/source/OSM.js';
|
|
||||||
import TileLayer from 'ol/layer/Tile.js';
|
|
||||||
import View from 'ol/View.js';
|
|
||||||
import { fromLonLat } from "ol/proj";
|
|
||||||
import Point from "ol/geom/Point";
|
|
||||||
import {Fill, Stroke, Style, Text, Icon} from 'ol/style.js';
|
|
||||||
import { Vector as VectorLayer } from "ol/layer";
|
|
||||||
import { Vector as VectorSource } from "ol/source";
|
|
||||||
import Feature from "ol/Feature";
|
|
||||||
import Overlay from "ol/Overlay";
|
|
||||||
|
|
||||||
const svg = () => {
|
|
||||||
const screen_width = document.documentElement.clientWidth;
|
|
||||||
|
|
||||||
let svg_width = 25;
|
|
||||||
let svg_height = 45;
|
|
||||||
|
|
||||||
if (
|
|
||||||
/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
|
|
||||||
navigator.userAgent
|
|
||||||
)
|
|
||||||
) {
|
|
||||||
svg_width = screen_width < 700 ? 30 : 50;
|
|
||||||
}
|
|
||||||
|
|
||||||
return `
|
|
||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="rgb(59 130 246)" width="${svg_width}" height="${svg_height}" viewBox="0 0 24 24" ><path fill="none" d="M0 0h24v24H0z"/><path d="M18.364 17.364L12 23.728l-6.364-6.364a9 9 0 1 1 12.728 0zM12 15a4 4 0 1 0 0-8 4 4 0 0 0 0 8zm0-2a2 2 0 1 1 0-4 2 2 0 0 1 0 4z"/></svg>
|
|
||||||
`
|
|
||||||
};
|
|
||||||
|
|
||||||
const createMap = (elId, zoom, coordinates = [37.619829, 55.752603]) => {
|
|
||||||
return new Map(
|
|
||||||
{
|
|
||||||
target: elId,
|
|
||||||
layers: [
|
|
||||||
new TileLayer({
|
|
||||||
source: new OSM(),
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
view: new View({
|
|
||||||
projection: "EPSG:3857",
|
|
||||||
center: fromLonLat(coordinates),
|
|
||||||
zoom: zoom,
|
|
||||||
}),
|
|
||||||
}
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
const mapFeature = (coordinate) => {
|
|
||||||
return new Feature({
|
|
||||||
geometry: new Point(coordinate).transform("EPSG:4326", "EPSG:900913"),
|
|
||||||
projection: "EPSG:4326",
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const iconFeature = (point) => {
|
|
||||||
return new Feature({
|
|
||||||
geometry: new Point(point).transform("EPSG:4326", "EPSG:900913"),
|
|
||||||
projection: "EPSG:4326",
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
const iconStyle = (color, text, course = null) =>
|
|
||||||
new Style({
|
|
||||||
image: new Icon({
|
|
||||||
scale: 1.4,
|
|
||||||
anchor: [0.45, 32],
|
|
||||||
anchorXUnits: "fraction",
|
|
||||||
anchorYUnits: "pixels",
|
|
||||||
src: "data:image/svg+xml;utf8," + svg(color, course),
|
|
||||||
}),
|
|
||||||
text: new Text({
|
|
||||||
text: text,
|
|
||||||
offsetY: -14,
|
|
||||||
offsetX: -18,
|
|
||||||
textBaseline: 'middle',
|
|
||||||
backgroundFill: new Fill({color: [90, 90, 60, 0.8]}),
|
|
||||||
backgroundStroke: new Stroke({color: [25, 230, 115, 0]}),
|
|
||||||
padding: [3, 3, 3, 3],
|
|
||||||
textAlign: 'right',
|
|
||||||
justify: 'left',
|
|
||||||
font: '12px bold Calibri,sans-serif',
|
|
||||||
fill: new Fill({
|
|
||||||
color: 'white',
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
const labelStyle = (text) => new Style({
|
|
||||||
text: new Text({
|
|
||||||
text: text,
|
|
||||||
font: '25px Calibri,sans-serif',
|
|
||||||
fill: new Fill({
|
|
||||||
color: '#fff',
|
|
||||||
}),
|
|
||||||
}),
|
|
||||||
});
|
|
||||||
|
|
||||||
const addLayerIcon = (map, coordinates, text) => {
|
|
||||||
return map.addLayer(
|
|
||||||
new VectorLayer({
|
|
||||||
type: "vector_layer",
|
|
||||||
source: new VectorSource({
|
|
||||||
features: [iconFeature(coordinates)],
|
|
||||||
}),
|
|
||||||
style: [
|
|
||||||
iconStyle("green", text),
|
|
||||||
],
|
|
||||||
})
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
const addLayer = (map, coordinates, text) => {
|
|
||||||
return map.addLayer(
|
|
||||||
new VectorLayer({
|
|
||||||
type: "vector_layer",
|
|
||||||
source: new VectorSource({
|
|
||||||
features: [mapFeature(coordinates), iconFeature(coordinates)],
|
|
||||||
}),
|
|
||||||
style: [
|
|
||||||
iconStyle("green", text),
|
|
||||||
],
|
|
||||||
})
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
const setView = (map, zoom, coordinates) => {
|
|
||||||
return map.setView(new View({
|
|
||||||
projection: "EPSG:3857",
|
|
||||||
center: fromLonLat(coordinates),
|
|
||||||
zoom: zoom,
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
|
|
||||||
const addLayerWithEmptyCoords = (map, labelText) => {
|
|
||||||
return map.addLayer(
|
|
||||||
new VectorLayer({
|
|
||||||
type: "vector_layer",
|
|
||||||
background: 'rgba(0,0,0,0.7)',
|
|
||||||
source: new VectorSource({
|
|
||||||
features: [mapFeature([37.619829, 55.752603])]
|
|
||||||
}),
|
|
||||||
style: [labelStyle(labelText)]
|
|
||||||
})
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
const removeLayers = (map) => {
|
|
||||||
return map.getLayers().forEach(layer => {
|
|
||||||
if(layer?.values_?.type == "vector_layer") {
|
|
||||||
map.removeLayer(layer)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const setTooltip = (map, coordinates, machine, tooltip_id, content_id, closer_id) => {
|
|
||||||
const tooltipSelector = document.getElementById(tooltip_id)
|
|
||||||
const contentSelector = document.getElementById(content_id)
|
|
||||||
const onClose = document.getElementById(closer_id)
|
|
||||||
|
|
||||||
const tooltip = new Overlay({
|
|
||||||
element: tooltipSelector,
|
|
||||||
})
|
|
||||||
map.addOverlay(tooltip)
|
|
||||||
|
|
||||||
const tooltipContent = new Overlay({
|
|
||||||
position: coordinates,
|
|
||||||
positioning: 'center-center',
|
|
||||||
element: contentSelector,
|
|
||||||
stopEvent: false,
|
|
||||||
});
|
|
||||||
|
|
||||||
map.addOverlay(tooltipContent)
|
|
||||||
|
|
||||||
|
|
||||||
const onClosed = () => {
|
|
||||||
if(onClose) {
|
|
||||||
tooltip.setPosition(undefined)
|
|
||||||
onClose.blur()
|
|
||||||
const tooltipText = tooltipSelector.querySelector(`.${content_id}`)
|
|
||||||
if(tooltipText) {
|
|
||||||
tooltipText.remove()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
map.on('click', function (e) {
|
|
||||||
const feature = map.forEachFeatureAtPixel(e.pixel, function (feature) {
|
|
||||||
return feature;
|
|
||||||
})
|
|
||||||
|
|
||||||
onClosed()
|
|
||||||
|
|
||||||
const tooltipText = document.createElement('div')
|
|
||||||
tooltipText.classList.add(content_id)
|
|
||||||
|
|
||||||
if (feature) {
|
|
||||||
const container = tooltip.getElement();
|
|
||||||
const props = feature.getProperties()
|
|
||||||
|
|
||||||
const coordsFormated = feature.getGeometry()
|
|
||||||
const coordsFormat = feature.getGeometry().getFlatCoordinates()
|
|
||||||
|
|
||||||
// const hdms = toLonLat(coordinates)
|
|
||||||
|
|
||||||
// setTimeout(() => {
|
|
||||||
container.style.opacity = "1"
|
|
||||||
container.style.display = "flex"
|
|
||||||
container.style.minWidth = "max-content"
|
|
||||||
tooltipText.innerHTML = `
|
|
||||||
<div class="flex flex-col justify-items-center">
|
|
||||||
<div class="tooltip-title flex text-lg text-blue-500"> ${machine.machine_type} </div>
|
|
||||||
<code> ${coordinates} </code>
|
|
||||||
<hr class="mt-1 mb-2">
|
|
||||||
<div class="tooltip-title flex text-sm"><div class="w-20">Imei:</div> <div>${machine.imei}</div> </div>
|
|
||||||
<div class="tooltip-title flex text-sm"><div class="w-20">Дорога:</div> <div>${machine.railway_name}</div> </div>
|
|
||||||
<div class="tooltip-title flex text-sm"><div class="w-20">Компания:</div> <div>${machine.org_name}</div> </div>
|
|
||||||
<div class="tooltip-title flex text-sm"><div class="w-20">8зн номер:</div> <div>${machine.nomer_zn8}</div> </div>
|
|
||||||
<div class="tooltip-title flex text-sm"><div class="w-20">Устройство:</div> <div>${machine.device_number}</div> </div>
|
|
||||||
<a class="flex justify-center items-center bg-blue-300 hover:bg-blue-400 text-gray-800 p-1 mt-2 rounded" target="_blank" href="/html/askr_devices/analyze_comm/${machine.imei}"}">Детализация</a>
|
|
||||||
</div>`
|
|
||||||
container.prepend(tooltipText)
|
|
||||||
// }, 200)
|
|
||||||
|
|
||||||
tooltip.setPosition(e.coordinate)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
map.on('pointermove', function (e) {
|
|
||||||
const pixel = map.getEventPixel(e.originalEvent);
|
|
||||||
const hit = map.hasFeatureAtPixel(pixel);
|
|
||||||
// console.log('hit', hit)
|
|
||||||
// console.log('pixel', pixel)
|
|
||||||
// console.log('map', map)
|
|
||||||
// map.getTarget().style.cursor = hit ? 'pointer' : '';
|
|
||||||
})
|
|
||||||
|
|
||||||
onClose.addEventListener('click', onClosed)
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
export class CoordsMap {
|
|
||||||
|
|
||||||
constructor(id) {
|
|
||||||
this.id = id
|
|
||||||
}
|
|
||||||
|
|
||||||
loadMap(coordinates, machine) {
|
|
||||||
if(!coordinates) {
|
|
||||||
if(!this.map) {
|
|
||||||
console.log('coordinates', coordinates)
|
|
||||||
console.log('machine', machine)
|
|
||||||
this.map = createMap(this.id, 5)
|
|
||||||
addLayerWithEmptyCoords(this.map, 'Данных о местоположении машины нет')
|
|
||||||
} else {
|
|
||||||
removeLayers(this.map)
|
|
||||||
addLayerWithEmptyCoords(this.map, 'Данных о местоположении машины нет')
|
|
||||||
setView(this.map, 5, [37.619829, 55.752603])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(coordinates) {
|
|
||||||
console.log('coordinates', coordinates)
|
|
||||||
console.log('machine', machine)
|
|
||||||
if(!this.map) {
|
|
||||||
this.map = createMap(this.id, 8, coordinates)
|
|
||||||
addLayerIcon(this.map, coordinates, `${coordinates[1] ? +coordinates[1].toFixed(5) : ''} ${coordinates[0] ? +coordinates[0].toFixed(5) : ''}`)
|
|
||||||
|
|
||||||
} else {
|
|
||||||
removeLayers(this.map)
|
|
||||||
addLayerIcon(this.map, coordinates, `${coordinates[1] ? +coordinates[1].toFixed(5) : ''} ${coordinates[0] ? +coordinates[0].toFixed(5) : ''}`)
|
|
||||||
setView(this.map, 8, coordinates)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(coordinates && machine) {
|
|
||||||
if(!this.map) {
|
|
||||||
this.map = createMap(this.id, 8, coordinates)
|
|
||||||
addLayerIcon(this.map, coordinates, machine.machine_type)
|
|
||||||
setTooltip(this.map, coordinates, machine, 'popup', 'popup-content', 'popup-closer')
|
|
||||||
// this.map.addOverlay(popup)
|
|
||||||
// this.map.addOverlay(marker(coordinates))
|
|
||||||
// setOverlay(this.map)
|
|
||||||
|
|
||||||
} else if (machine) {
|
|
||||||
removeLayers(this.map)
|
|
||||||
addLayer(this.map, coordinates, machine.machine_type)
|
|
||||||
setView(this.map, 8, coordinates)
|
|
||||||
setTooltip(this.map, coordinates, machine, 'popup', 'popup-content', 'popup-closer')
|
|
||||||
// this.map.addOverlay(popup)
|
|
||||||
// this.map.addOverlay(marker(coordinates))
|
|
||||||
// setOverlay(this.map)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -1,102 +0,0 @@
|
|||||||
<script>
|
|
||||||
import {mapActions} from "vuex";
|
|
||||||
import {ECharts} from '@store/hooks/Echarts';
|
|
||||||
export default {
|
|
||||||
name: 'VChart',
|
|
||||||
props: {
|
|
||||||
data: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {}
|
|
||||||
},
|
|
||||||
sizes: {
|
|
||||||
type: Object,
|
|
||||||
default: () => {}
|
|
||||||
},
|
|
||||||
id: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
type: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
height: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
maxWidth: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
maxHeight: {
|
|
||||||
type: String,
|
|
||||||
default: ''
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
chartStyles: {
|
|
||||||
maxWidth: `${this.maxWidth}`,
|
|
||||||
maxHeight: `${this.maxHeight}`,
|
|
||||||
top: "15px",
|
|
||||||
padding: "10px",
|
|
||||||
margin: "10px",
|
|
||||||
boxShadow: "rgb(0 0 0 / 12%) 2px 3px 7px",
|
|
||||||
border: "1px solid rgba(0, 0, 0, 0.15)"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
// ...mapGetters('main', ['activeChartData', 'prevGroupByData', 'activeMenuChartData']),
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
this.$nextTick(function () {
|
|
||||||
const chart = new ECharts(this.id, this.sizes)
|
|
||||||
this.setTypeFunc(this.type, chart, this.data)
|
|
||||||
chart.onClickedBarCharts(this.updateCharts)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
updated () {
|
|
||||||
this.$nextTick(function () {
|
|
||||||
const chart = new ECharts(this.id, this.sizes)
|
|
||||||
this.setTypeFunc(this.type, chart, this.data)
|
|
||||||
chart.onClickedBarCharts(this.updateCharts)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
...mapActions('layoutMachines', ['updateCharts']),
|
|
||||||
setTypeFunc: function(type, chart, data) {
|
|
||||||
switch(type) {
|
|
||||||
case 'pie': return chart.makePieCharts({...data, type: type})
|
|
||||||
case 'mount': return chart.makeBarMountCharts({...data, type: type, height: this.height})
|
|
||||||
case 'mainMl': return chart.makeBarCharts({...data, type: type})
|
|
||||||
case 'default': return chart.makeBarTypesCharts({...data, type: type})
|
|
||||||
case 'types': return chart.makeBarTypesCharts({...data, type: type})
|
|
||||||
case 'without_first_layout': return chart.makeBarTypesCharts({...data, type: type})
|
|
||||||
case 'ml': return chart.makeBarTypesCharts({...data, type: type})
|
|
||||||
case 'packLines': return chart.makeLinesPackCharts({...data, type: type})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div
|
|
||||||
:id="id"
|
|
||||||
class="flex grow justify-center relative overflow-hidden bg-white"
|
|
||||||
:style="chartStyles"
|
|
||||||
/>
|
|
||||||
<div
|
|
||||||
id="button_close"
|
|
||||||
class="flex absolute h-max top-[50px] right-[45px]"
|
|
||||||
/>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
</style>
|
|
||||||
@ -1,72 +0,0 @@
|
|||||||
<script>
|
|
||||||
import flatpickr from "flatpickr";
|
|
||||||
import { Russian } from "flatpickr/dist/l10n/ru";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'VDatepicker',
|
|
||||||
components: {},
|
|
||||||
inject: ['defaultDate'],
|
|
||||||
props: {
|
|
||||||
enableTime: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
dateFormat: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
onchange: {
|
|
||||||
type: Function,
|
|
||||||
default: () => null
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
datepicker: null,
|
|
||||||
value: this.defaultDate
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
_dateFormat () {
|
|
||||||
if (this.dateFormat) return this.dateFormat
|
|
||||||
if (this.enableTime) return "d.m.Y H:i"
|
|
||||||
return "d.m.Y"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
this.datepicker = flatpickr(this.$refs.datepicker, {
|
|
||||||
allowInput: true,
|
|
||||||
enableTime: this.enableTime,
|
|
||||||
dateFormat: this._dateFormat,
|
|
||||||
locale: Russian,
|
|
||||||
onChange: (a,_b,_c) => {
|
|
||||||
this.onchange(a[0])
|
|
||||||
}
|
|
||||||
});
|
|
||||||
this.datepicker.setDate(this.defaultDate)
|
|
||||||
|
|
||||||
},
|
|
||||||
updated() {
|
|
||||||
this.$nextTick(function () {
|
|
||||||
this.datepicker = flatpickr(this.$refs.datepicker, {
|
|
||||||
allowInput: true,
|
|
||||||
enableTime: this.enableTime,
|
|
||||||
dateFormat: this._dateFormat,
|
|
||||||
locale: Russian,
|
|
||||||
});
|
|
||||||
this.datepicker.setDate(this.value)
|
|
||||||
})
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<input
|
|
||||||
ref="datepicker"
|
|
||||||
type="text"
|
|
||||||
class="bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full py-1 pl-2 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500 flatpickr-input"
|
|
||||||
>
|
|
||||||
</template>
|
|
||||||
@ -1,88 +0,0 @@
|
|||||||
<script>
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'VModal',
|
|
||||||
components: {},
|
|
||||||
props: {
|
|
||||||
isOpen: {
|
|
||||||
default: false,
|
|
||||||
type: Boolean
|
|
||||||
},
|
|
||||||
close: {
|
|
||||||
default: () => null,
|
|
||||||
type: Function
|
|
||||||
},
|
|
||||||
containerClass: {
|
|
||||||
default: "",
|
|
||||||
type: String,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
document.addEventListener("keydown", this.onEsc);
|
|
||||||
},
|
|
||||||
unmounted() {
|
|
||||||
document.removeEventListener("keydown", this.onEsc);
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
onEsc (e) {
|
|
||||||
if (e.key === "Escape") {
|
|
||||||
this.close()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div
|
|
||||||
v-if="isOpen"
|
|
||||||
class="absolute"
|
|
||||||
>
|
|
||||||
<div class="absolute">
|
|
||||||
<div
|
|
||||||
id="select_machines_modal"
|
|
||||||
class="fixed z-[10000] inset-0"
|
|
||||||
>
|
|
||||||
<!-- VModal container -->
|
|
||||||
<div class="h-screen flex items-center justify-center p-4">
|
|
||||||
<!-- Overlay -->
|
|
||||||
<div
|
|
||||||
class="absolute z-0 inset-0 bg-gray-500 opacity-75"
|
|
||||||
aria-hidden="true"
|
|
||||||
/>
|
|
||||||
<!-- VModal box -->
|
|
||||||
<div
|
|
||||||
class="relative max-h-full overflow-y-auto bg-white rounded-lg shadow-xl "
|
|
||||||
role="dialog"
|
|
||||||
aria-modal="true"
|
|
||||||
tabindex="0"
|
|
||||||
autofocus=""
|
|
||||||
>
|
|
||||||
<button
|
|
||||||
type="button"
|
|
||||||
class="absolute top-2 right-2 text-gray-400 flex space-x-1 items-center"
|
|
||||||
aria_label="close modal"
|
|
||||||
@click="close"
|
|
||||||
>
|
|
||||||
<span class="text-sm">(esc)</span>
|
|
||||||
<i class="ri ri-close-line text-2xl" />
|
|
||||||
</button>
|
|
||||||
|
|
||||||
<div
|
|
||||||
class="min-w-[350px] min-h-[400px] py"
|
|
||||||
:class="containerClass"
|
|
||||||
>
|
|
||||||
<slot />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
@ -1,38 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div class="w-fit flex items-center">
|
|
||||||
<RawSpinner
|
|
||||||
class="mr-2"
|
|
||||||
/>
|
|
||||||
<span
|
|
||||||
v-if="!disableText"
|
|
||||||
class="text-lg text-slate-700"
|
|
||||||
>{{ text }}</span>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import RawSpinner from './VSpinnerSvg.vue'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'VSpinner',
|
|
||||||
components: {RawSpinner},
|
|
||||||
props: {
|
|
||||||
text: {
|
|
||||||
default: "Загрузка",
|
|
||||||
type: String
|
|
||||||
},
|
|
||||||
disableText: {
|
|
||||||
default: false,
|
|
||||||
type: Boolean
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
@ -1,42 +0,0 @@
|
|||||||
<template>
|
|
||||||
<svg
|
|
||||||
aria-hidden="true"
|
|
||||||
:width="size"
|
|
||||||
:height="size"
|
|
||||||
class="text-gray-200 animate-spin dark:text-gray-600 fill-blue-600"
|
|
||||||
viewBox="0 0 100 101"
|
|
||||||
fill="none"
|
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z"
|
|
||||||
fill="currentColor"
|
|
||||||
/>
|
|
||||||
<path
|
|
||||||
d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z"
|
|
||||||
fill="currentFill"
|
|
||||||
/>
|
|
||||||
</svg>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'VSpinnerSvg',
|
|
||||||
components: {},
|
|
||||||
props: {
|
|
||||||
size: {
|
|
||||||
type: Number,
|
|
||||||
default: 25
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
@ -1,194 +0,0 @@
|
|||||||
<script>
|
|
||||||
import {TabulatorFull as Tabulator} from 'tabulator-tables';
|
|
||||||
import {
|
|
||||||
prepColumns,
|
|
||||||
sorter,
|
|
||||||
renderGroupHeader,
|
|
||||||
groupByFunction,
|
|
||||||
makedFiltering,
|
|
||||||
tablefy
|
|
||||||
} from "./helper";
|
|
||||||
import localization from "./localization";
|
|
||||||
import { cond, equals, is, mergeAll, sort, T, mergeDeepRight } from "ramda";
|
|
||||||
import { pipe } from "@helpers/functions";
|
|
||||||
import Pagination from "./VTabulatorPagination.vue";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'VTabulator',
|
|
||||||
components: {
|
|
||||||
Pagination
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
dataSource: {
|
|
||||||
type: Array,
|
|
||||||
default: () => []
|
|
||||||
},
|
|
||||||
columns: {
|
|
||||||
type: Array,
|
|
||||||
default: () => []
|
|
||||||
},
|
|
||||||
initialSort: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
groupBy: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
groupByTemplate: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
groupValues: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
height: {
|
|
||||||
type: String,
|
|
||||||
default: "550px"
|
|
||||||
},
|
|
||||||
groupExtraValues: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
groupHeader: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
pagination: {
|
|
||||||
type: Object,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
selectOption: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
filterData: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
withTablefy: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
refId: Math.random().toString(36).slice(4),
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
data () {
|
|
||||||
if (!is(Array, this.dataSource)) return []
|
|
||||||
if (this.withTablefy) return tablefy(this.dataSource)
|
|
||||||
return this.dataSource
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.makeTabele()
|
|
||||||
},
|
|
||||||
updated() {
|
|
||||||
this.makeTabele()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
makeTabele () {
|
|
||||||
this.table = new Tabulator(this.$refs[this.refId], this.getConfig())
|
|
||||||
},
|
|
||||||
getConfig () {
|
|
||||||
let configurator = pipe(this.__defaultCfg());
|
|
||||||
return configurator(
|
|
||||||
(x) => mergeDeepRight(x, this.__getColsCfg()),
|
|
||||||
(x) => mergeDeepRight(x, this.__getSortCfg()),
|
|
||||||
(x) => mergeDeepRight(x, this.__getGroupCfg()),
|
|
||||||
(x) => mergeDeepRight(x, this.__getGroupHeaderCfg()),
|
|
||||||
// (x) => mergeAll(x, this.__getPaginationCgs())
|
|
||||||
);
|
|
||||||
},
|
|
||||||
__defaultCfg () {
|
|
||||||
return {
|
|
||||||
locale: "ru",
|
|
||||||
langs: localization(),
|
|
||||||
height: this.height || "250px",
|
|
||||||
responsiveLayout: "collapse",
|
|
||||||
placeholder: "Нет записей",
|
|
||||||
movableColumns: true,
|
|
||||||
autoResize: false,
|
|
||||||
data: this.data,
|
|
||||||
groupStartOpen: false,
|
|
||||||
|
|
||||||
groupHeader: function (value, count, data, group) {
|
|
||||||
return value + "<span>(" + count + " записей)</span>";
|
|
||||||
},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
__getColsCfg() {
|
|
||||||
let layout, columns = []
|
|
||||||
if (this.autoColumns && is(Object, this.data[0])) {
|
|
||||||
let first = this.data[0];
|
|
||||||
let keys = Object.keys(first).map((key) => ({
|
|
||||||
headerFilter: "input",
|
|
||||||
headerFilterPlaceholder: key,
|
|
||||||
title: key,
|
|
||||||
field: key,
|
|
||||||
download: false,
|
|
||||||
print: false,
|
|
||||||
vertAlign: "middle",
|
|
||||||
sorter: "string",
|
|
||||||
responsive: 0,
|
|
||||||
minWidth: 80,
|
|
||||||
maxWidth: 300,
|
|
||||||
}));
|
|
||||||
layout = "fitDataFill"
|
|
||||||
columns = sort(sorter, keys)
|
|
||||||
} else {
|
|
||||||
layout = "fitDataStretch"
|
|
||||||
columns = prepColumns(this.columns)
|
|
||||||
}
|
|
||||||
if (this.withTablefy) {
|
|
||||||
columns = tablefy(columns)
|
|
||||||
}
|
|
||||||
return {columns, layout}
|
|
||||||
},
|
|
||||||
__getSortCfg() {
|
|
||||||
if (this.initialSort) return { initialSort: this.initialSort };
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
__getGroupCfg() {
|
|
||||||
if (this.groupByTemplate)
|
|
||||||
return { groupBy: groupByFunction(this.groupByTemplate) };
|
|
||||||
if (this.groupBy) return { groupBy: this.groupBy };
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
__getGroupHeaderCfg() {
|
|
||||||
if (this.groupHeader)
|
|
||||||
return {
|
|
||||||
groupHeader: (value, count, data, group) =>
|
|
||||||
renderGroupHeader({
|
|
||||||
extra: this.groupExtraValues,
|
|
||||||
groupHeader: this.groupHeader,
|
|
||||||
value,
|
|
||||||
count,
|
|
||||||
data,
|
|
||||||
group,
|
|
||||||
}),
|
|
||||||
};
|
|
||||||
return {};
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="mb-4">
|
|
||||||
<div class="overflow-x-auto w-full">
|
|
||||||
<div
|
|
||||||
:ref="refId"
|
|
||||||
class="w-full"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div v-if="pagination">
|
|
||||||
<Pagination :params="pagination"/>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
@ -1,184 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import {mapGetters, mapMutations, mapActions, useStore} from "vuex"
|
|
||||||
import { validation } from './helper'
|
|
||||||
import { Alert } from "@store/hooks/Alert"
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'Pagination',
|
|
||||||
components: {
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
params: {
|
|
||||||
type: Object,
|
|
||||||
default: () => ({})
|
|
||||||
},
|
|
||||||
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
inputValue: null,
|
|
||||||
initLocalStorage: null,
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
params: {
|
|
||||||
handler(value, oldValue) {
|
|
||||||
if(value) {
|
|
||||||
const loader = document.querySelector(`#table_loder_${this.params.id}`)
|
|
||||||
loader.style.display = 'none'
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
mounted () {
|
|
||||||
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
selectOptions: (selectOption, paginationOptions) => {
|
|
||||||
const options = selectOption ? selectOption : optionsDefault
|
|
||||||
const currentOptions = options.filter((el) => {
|
|
||||||
if(el <= Math.ceil(paginationOptions.total / 10) * 10) {
|
|
||||||
return el
|
|
||||||
}
|
|
||||||
})
|
|
||||||
if(paginationOptions.show_all) {
|
|
||||||
currentOptions.push('Все')
|
|
||||||
}
|
|
||||||
return currentOptions
|
|
||||||
},
|
|
||||||
currentEntries: (pagination) => {
|
|
||||||
if (pagination) {
|
|
||||||
const endPageDataIdx = pagination.page_size * pagination.page_number
|
|
||||||
const isEndPageDataIdxMore = endPageDataIdx > pagination.total
|
|
||||||
if(isEndPageDataIdxMore || pagination.page_size > pagination.total) {
|
|
||||||
return (`${pagination.page_size * (pagination.page_number - 1) + 1} ... ${pagination.total}`)
|
|
||||||
} else {
|
|
||||||
return (`${pagination.page_size * (pagination.page_number - 1) + 1} ... ${pagination.page_size * pagination.page_number}`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setPagination: function ({pageNumber, pageSize}) {
|
|
||||||
const loader = document.querySelector(`#table_loder_${this.params.id}`)
|
|
||||||
loader.style.display = 'block'
|
|
||||||
this.params.updatePagination({pageNumber: pageNumber, pageSize: pageSize})
|
|
||||||
},
|
|
||||||
updateSelectedValue: function (e) {
|
|
||||||
const loader = document.querySelector(`#table_loder_${this.params.id}`)
|
|
||||||
loader.style.display = 'block'
|
|
||||||
this.setPagination({
|
|
||||||
pageNumber: 1, // this.params.paginationOptions.page_number,
|
|
||||||
pageSize: e.target.value
|
|
||||||
})
|
|
||||||
},
|
|
||||||
updateInputValue: function (e) {
|
|
||||||
const pageNumber = e.target.value.trim()
|
|
||||||
const buttonPageInput = document.querySelector(`.page-button-${this.params.id}`)
|
|
||||||
if(pageNumber) {
|
|
||||||
this.inputValue = pageNumber
|
|
||||||
buttonPageInput.removeAttribute('disabled')
|
|
||||||
buttonPageInput.classList.remove('opacity-50')
|
|
||||||
} else {
|
|
||||||
buttonPageInput.setAttribute('disabled', 'disabled')
|
|
||||||
buttonPageInput.classList.add('opacity-50')
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setPaginationButton: function (e) {
|
|
||||||
if(this.inputValue) {
|
|
||||||
const error = validation(this.inputValue, this.params.paginationOptions)
|
|
||||||
if(Number(this.inputValue) === this.params.paginationOptions.page_number) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if(!error) {
|
|
||||||
e.target.removeAttribute('disabled')
|
|
||||||
e.target.classList.remove('opacity-50')
|
|
||||||
const loader = document.querySelector(`#table_loder_${this.params.id}`)
|
|
||||||
loader.style.display = 'block'
|
|
||||||
e.target.focus()
|
|
||||||
const params = {pageNumber: this.inputValue, pageSize: this.params.paginationOptions.page_size}
|
|
||||||
return this.params.updatePagination(params)
|
|
||||||
} else {
|
|
||||||
e.target.setAttribute('disabled', 'disabled')
|
|
||||||
e.target.classList.add('opacity-50')
|
|
||||||
const errorObj = {
|
|
||||||
id: this.params.id,
|
|
||||||
color: "red",
|
|
||||||
icon: "<i class='ri-alert-line'></i>",
|
|
||||||
message: error,
|
|
||||||
delay: 5000,
|
|
||||||
}
|
|
||||||
return new Alert(errorObj)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="pagination w-full flex flex-row items-center justify-between gap-3 mt-2 mb-8 xl:mb-0 pb-8 xl:p-2.5 bg-slate-100 border-2 border-solid border-slate-300 rounded-lg flex-col 2xl:flex-row">
|
|
||||||
<div class="pagination-left flex flex-row gap-1">
|
|
||||||
<div class="current-entries flex text-sm font-bold">Показаны {{currentEntries(params?.paginationOptions)}}</div>
|
|
||||||
<div class="count-entries flex text-sm font-bold">(Всего записей - {{params?.paginationOptions?.total}})</div>
|
|
||||||
</div>
|
|
||||||
<div class="pagination-right flex flex-col xl:flex-row items-center gap-3">
|
|
||||||
<div :id="`table_loder_${params.id}`" class="hidden w-full h-auto bg-light flex items-center justify-center px-2"><div type-node="loader" class="flex my_margin-3 items-center justify-center">
|
|
||||||
<div role="status">
|
|
||||||
<svg aria-hidden="true" class="mr-2 w-6 h-6 text-gray-400 animate-spin dark:text-gray-400 fill-white" viewBox="0 0 100 101" fill="none" >
|
|
||||||
<path d="M100 50.5908C100 78.2051 77.6142 100.591 50 100.591C22.3858 100.591 0 78.2051 0 50.5908C0 22.9766 22.3858 0.59082 50 0.59082C77.6142 0.59082 100 22.9766 100 50.5908ZM9.08144 50.5908C9.08144 73.1895 27.4013 91.5094 50 91.5094C72.5987 91.5094 90.9186 73.1895 90.9186 50.5908C90.9186 27.9921 72.5987 9.67226 50 9.67226C27.4013 9.67226 9.08144 27.9921 9.08144 50.5908Z" fill="currentColor"/>
|
|
||||||
<path d="M93.9676 39.0409C96.393 38.4038 97.8624 35.9116 97.0079 33.5539C95.2932 28.8227 92.871 24.3692 89.8167 20.348C85.8452 15.1192 80.8826 10.7238 75.2124 7.41289C69.5422 4.10194 63.2754 1.94025 56.7698 1.05124C51.7666 0.367541 46.6976 0.446843 41.7345 1.27873C39.2613 1.69328 37.813 4.19778 38.4501 6.62326C39.0873 9.04874 41.5694 10.4717 44.0505 10.1071C47.8511 9.54855 51.7191 9.52689 55.5402 10.0491C60.8642 10.7766 65.9928 12.5457 70.6331 15.2552C75.2735 17.9648 79.3347 21.5619 82.5849 25.841C84.9175 28.9121 86.7997 32.2913 88.1811 35.8758C89.083 38.2158 91.5421 39.6781 93.9676 39.0409Z" fill="currentFill"/>
|
|
||||||
</svg>
|
|
||||||
</div>
|
|
||||||
</div></div>
|
|
||||||
<div class="buttons flex h-fit gap-1 sm:gap-3 text-sm">
|
|
||||||
<div class="flex gap-1 sm:gap-3" v-if="params.paginationOptions.page_number > 1">
|
|
||||||
<div v-if="params.paginationOptions.page_number - 1 !== 1">
|
|
||||||
<button :table_btn="`${params.id}`" class="previous flex items-center text-white font-bold bg-slate-600 hover:bg-slate-700 py-1 px-3 gap-2 rounded" @click="setPagination({pageNumber: 1, pageSize: params.paginationOptions.page_size})">
|
|
||||||
<span>1</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<button :table_btn="`${params.id}`" class="previous flex items-center text-white font-bold bg-slate-600 hover:bg-slate-700 py-1 px-3 gap-2 rounded" @click="setPagination({pageNumber: params.paginationOptions.page_number - 1, pageSize: params.paginationOptions.page_size})">
|
|
||||||
<span class="hidden sm:flex">Назад</span><i class="ri-arrow-left-line sm:hidden"></i>
|
|
||||||
</button>
|
|
||||||
<button :table_btn="`${params.id}`" class="previous flex items-center text-white font-bold bg-slate-600 hover:bg-slate-700 py-1 px-3 gap-2 rounded" @click="setPagination({pageNumber: params.paginationOptions.page_number - 1, pageSize: params.paginationOptions.page_size})">
|
|
||||||
<span>{{params.paginationOptions.page_number - 1}}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
<button :table_btn="`${params.id}`" class="active flex items-center text-blue-700 font-bold bg-white py-1 px-3 gap-2 rounded cursor-default">
|
|
||||||
<span>{{params.paginationOptions.page_number}}</span>
|
|
||||||
</button>
|
|
||||||
<div class="flex gap-1 sm:gap-3" v-if="params.paginationOptions.page_number < params.paginationOptions.total_pages">
|
|
||||||
<button :table_btn="`${params.id}`" class="next flex items-center text-white font-bold bg-slate-600 hover:bg-slate-700 py-1 px-3 gap-2 rounded" @click="setPagination({pageNumber: params.paginationOptions.page_number + 1, pageSize: params.paginationOptions.page_size})">
|
|
||||||
<span>{{params.paginationOptions.page_number + 1}}</span>
|
|
||||||
</button>
|
|
||||||
<button :table_btn="`${params.id}`" class="next flex items-center text-white font-bold bg-slate-600 hover:bg-slate-700 py-1 px-3 gap-2 rounded" @click="setPagination({pageNumber: params.paginationOptions.page_number + 1, pageSize: params.paginationOptions.page_size})">
|
|
||||||
<span class="hidden sm:flex">Вперёд</span><i class="ri-arrow-right-line sm:hidden"></i>
|
|
||||||
</button>
|
|
||||||
<div v-if="params.paginationOptions.page_number + 1 !== params.paginationOptions.total_pages">
|
|
||||||
<button :table_btn="`${params.id}`" class="next flex items-center text-white font-bold bg-slate-600 hover:bg-slate-700 py-1 px-3 gap-2 rounded" @click="setPagination({pageNumber: params.paginationOptions.total_pages, pageSize: params.paginationOptions.page_size})">
|
|
||||||
<span>{{params.paginationOptions.total_pages}}</span>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="flex flex-row items-center justify-center gap-2"><input v-on:input="updateInputValue" :class="`page-input-${params.id}`" class="flex max-w-[80px] items-center text-slate-700 text-sm font-bold focus-visible:outline-blue-300 bg-white py-1 px-2 gap-2 rounded" value="" placeholder="Страница"/><button @click="setPaginationButton" disabled :class="`page-button-${params.id}`" class="opacity-50 flex items-center text-white font-bold bg-slate-600 hover:bg-slate-700 py-1 px-1 rounded">Перейти</button></div>
|
|
||||||
<div id="select-on-page" class="select-on-page flex items-center justify-center gap-3 p-1 text-sm text-slate-700 font-bold">
|
|
||||||
Показать
|
|
||||||
<select name="on_page" v-bind:value="params.paginationOptions.page_size" v-on:change="updateSelectedValue" :table_option="`${params.id}`" class="flex text-gray-700 pl-3 pr-9 py-0.5 rounded cursor-pointer border-none" style="--tw-ring-color:focus: none" >
|
|
||||||
<option :key={idx} v-for="(el, idx) in selectOptions(params.selectOption, params.paginationOptions)" :value="`${el === 'Все' ? params.paginationOptions.total : el}`">
|
|
||||||
{{ el }}
|
|
||||||
</option>`
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
</style>
|
|
||||||
@ -1,356 +0,0 @@
|
|||||||
import { always, cond, equals, is, T, mergeLeft } from "ramda";
|
|
||||||
import Handlebars from "handlebars/dist/cjs/handlebars";
|
|
||||||
import moment from "moment";
|
|
||||||
import presetConfig from './presetConfig'
|
|
||||||
import {parseFunc, parseFunc3} from './stringFunction'
|
|
||||||
|
|
||||||
const tablefy = (list = []) => {
|
|
||||||
const defaultData = (title) => ({
|
|
||||||
headerFilter: "input",
|
|
||||||
minWidth: 80,
|
|
||||||
headerFilterPlaceholder: title,
|
|
||||||
download: false,
|
|
||||||
print: false,
|
|
||||||
vertAlign: "middle",
|
|
||||||
sorter: "string",
|
|
||||||
responsive: 0
|
|
||||||
})
|
|
||||||
|
|
||||||
if (!is(Array, list)) return []
|
|
||||||
return list.map((el) => mergeLeft(el, defaultData(el?.title || "")))
|
|
||||||
}
|
|
||||||
|
|
||||||
const math = (value, operator, operand, options) => {
|
|
||||||
var left = parseFloat(value);
|
|
||||||
var right = parseFloat(operand);
|
|
||||||
|
|
||||||
switch(operator) {
|
|
||||||
case "+":
|
|
||||||
return left + right;
|
|
||||||
case "-":
|
|
||||||
return left - right;
|
|
||||||
case "*":
|
|
||||||
return left * right;
|
|
||||||
case "/":
|
|
||||||
return left / right;
|
|
||||||
case "%":
|
|
||||||
return left % right;
|
|
||||||
default:
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const link = (col) => ({
|
|
||||||
...col,
|
|
||||||
formatter: (cell, { prefix = "", text, key = "id" }, onRendered) => {
|
|
||||||
onRendered(function () {
|
|
||||||
let row = cell.getRow().getData();
|
|
||||||
if (!text && !cell.getValue()) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
if (!row[key]) return null;
|
|
||||||
|
|
||||||
cell.getElement().innerHTML = `<a target="_blank" href="${prefix}/${
|
|
||||||
row[key]
|
|
||||||
}">${text || cell.getValue()}</a>`;
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
[
|
|
||||||
['renderFunc', (strFunc, record, strDataIndex) => {
|
|
||||||
const pFunc = strFunc.replace(/##/gm, "'")
|
|
||||||
return parseFunc(pFunc)(record[strDataIndex], record)
|
|
||||||
}],
|
|
||||||
['math', math],
|
|
||||||
['presetConfig', (record, pack) => presetConfig(pack, record)],
|
|
||||||
[
|
|
||||||
"dt_shift",
|
|
||||||
(date, shift, param) => {
|
|
||||||
return date ? moment(date).add(shift, param) : "нд";
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"dt_format",
|
|
||||||
(date) => {
|
|
||||||
return date ? moment(date).format("DD.MM.YYYY HH:mm") : "нд";
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"dt_db_format",
|
|
||||||
(date) => {
|
|
||||||
return date ? moment(date).format("YYYY-MM-DDTHH:mm:ss") : "нд";
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"from_now",
|
|
||||||
(date) => {
|
|
||||||
return moment(date).fromNow()
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"json_parse",
|
|
||||||
(item) => {
|
|
||||||
return `
|
|
||||||
<div>
|
|
||||||
${item}
|
|
||||||
</div>
|
|
||||||
`
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"time_from_sec",
|
|
||||||
(ms) => {
|
|
||||||
if (!ms) return "н/д"
|
|
||||||
return `${moment(moment().subtract(Math.round(ms), 'milliseconds')).fromNow()}`.replace("назад", '')
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"lenght",
|
|
||||||
(list) => {
|
|
||||||
return is(Array, list) ? list.length : 0;
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"more",
|
|
||||||
(one, two) => {
|
|
||||||
return one > two;
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"less",
|
|
||||||
(one, two) => {
|
|
||||||
return one < two;
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"or",
|
|
||||||
(one, two) => {
|
|
||||||
return one || two;
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"eq",
|
|
||||||
(one, two) => {
|
|
||||||
return one == two;
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"from_list",
|
|
||||||
(list, param_string) => {
|
|
||||||
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"endOf",
|
|
||||||
(date, param) => moment(date).endOf(param)
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"startOf",
|
|
||||||
(date, param) => moment(date).startOf(param)
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"render",
|
|
||||||
(list, key) => {
|
|
||||||
return list.map(el => el[key]).join(", ")
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"get",
|
|
||||||
(map, key) => {
|
|
||||||
return map[key] ? `${map[key]}` : ""
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"get_from",
|
|
||||||
(map, key) => {
|
|
||||||
return map[key] ? `${map[key]}` : ""
|
|
||||||
}
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"uint8parse",
|
|
||||||
(list) => pipe(
|
|
||||||
(x) => Uint8Array.from(x, e => e.charCodeAt(0)),
|
|
||||||
Array.from
|
|
||||||
)(list)
|
|
||||||
],
|
|
||||||
[
|
|
||||||
"filter_aoo",
|
|
||||||
(list = [], key, _availible_list) => {
|
|
||||||
const availible_list = pipe(
|
|
||||||
(x) => Uint8Array.from(x, e => e.charCodeAt(0)),
|
|
||||||
Array.from
|
|
||||||
)(_availible_list)
|
|
||||||
return list.filter((el) =>
|
|
||||||
availible_list.includes(el[key]))
|
|
||||||
}
|
|
||||||
]
|
|
||||||
].forEach(([name, func]) => {
|
|
||||||
Handlebars.registerHelper(name, func);
|
|
||||||
});
|
|
||||||
|
|
||||||
const render = (col) => ({
|
|
||||||
...col,
|
|
||||||
formatter: (cell, _, onRendered) => {
|
|
||||||
|
|
||||||
onRendered(function () {
|
|
||||||
const record = cell.getRow().getData()
|
|
||||||
// console.log('col.onCell', parseFunc(col.onCell))
|
|
||||||
|
|
||||||
if(col.onCell && record.status) {
|
|
||||||
// cell.getElement().style.backgroundColor = setColorCellFromStatus(record.status)
|
|
||||||
cell.getElement().style.backgroundColor = parseFunc3(col.onCell)(record)
|
|
||||||
}
|
|
||||||
if(col.onCell && !record.status) {
|
|
||||||
console.log('onCell', col.onCell)
|
|
||||||
cell.getElement().style.backgroundColor = parseFunc(col.onCell)(record)?.style?.backgroundColor
|
|
||||||
}
|
|
||||||
if (`${col.render}`.includes("{{") && `${col.render}`.includes("}}")) {
|
|
||||||
let record = cell.getRow().getData();
|
|
||||||
cell.getElement().innerHTML = Handlebars.compile(col.render)(
|
|
||||||
{...record, __record__: record}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
cell.getElement().innerHTML = parseFunc(col.render)(record[col["dataIndex"]] || record[col["field"]] || record[col["key"]], record)
|
|
||||||
}
|
|
||||||
});
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
let sorter = (a, b) => {
|
|
||||||
let [a_field, b_field] = [a["field"], b["field"]];
|
|
||||||
if (a_field.includes("id") && b_field.includes("id"))
|
|
||||||
return a_field.localeCompare(b_field);
|
|
||||||
if (a_field.includes("id")) return -1;
|
|
||||||
if (b_field.includes("id")) return 1;
|
|
||||||
if (a_field.includes("dt") && b_field.includes("dt"))
|
|
||||||
return b_field.localeCompare(a_field);
|
|
||||||
if (a_field.includes("dt")) return -1;
|
|
||||||
if (b_field.includes("dt")) return 1;
|
|
||||||
if (a_field.includes("imei") && b_field.includes("imei"))
|
|
||||||
return b_field.localeCompare(a_field);
|
|
||||||
if (a_field.includes("imei")) return -1;
|
|
||||||
if (b_field.includes("imei")) return 1;
|
|
||||||
return a_field.localeCompare(b_field);
|
|
||||||
};
|
|
||||||
|
|
||||||
const prepCol = (col) =>
|
|
||||||
cond([
|
|
||||||
[() => is(String, col.render), () => render(col)],
|
|
||||||
[equals("link"), () => link(col)],
|
|
||||||
[T, always(col)],
|
|
||||||
])(col.mode);
|
|
||||||
|
|
||||||
const prepColumns = (cols) =>
|
|
||||||
is(Array, cols) ? cols.map((col) => prepCol(col)) : [];
|
|
||||||
|
|
||||||
const renderGroupHeader = ({ groupHeader, value, count, group, extra }) => {
|
|
||||||
const group_data = group._group;
|
|
||||||
|
|
||||||
if (group_data.level == 0) {
|
|
||||||
const {company_id, param, train_info: train, date: _date} = group_data.groupList[0].rows[0].data
|
|
||||||
|
|
||||||
const date = `${_date}`.replace(/\s(.*)/gm, "")
|
|
||||||
|
|
||||||
const icident_group = extra.find((el) =>
|
|
||||||
el.date === date &&
|
|
||||||
el.company_id == company_id &&
|
|
||||||
el.train == train &&
|
|
||||||
el.param == param
|
|
||||||
) || {}
|
|
||||||
|
|
||||||
return Handlebars.compile(groupHeader)({
|
|
||||||
_value: value,
|
|
||||||
_count: count,
|
|
||||||
extra: extra,
|
|
||||||
icident_group: icident_group
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return `${value} (${count} записей)`;
|
|
||||||
};
|
|
||||||
|
|
||||||
const groupByFunction = (groupBy) => (data) =>
|
|
||||||
Handlebars.compile(groupBy)(data);
|
|
||||||
|
|
||||||
const makedFiltering = (id, filterParams, selectedFilter, clearFilters) => {
|
|
||||||
|
|
||||||
const table = document.querySelector(`#${id}`)
|
|
||||||
const isFiltering = document.querySelector(`${id}-filters`)
|
|
||||||
|
|
||||||
if(id && filterParams) {
|
|
||||||
filterParams.unshift([])
|
|
||||||
const filtersContainer = document.createElement('div')
|
|
||||||
filtersContainer.setAttribute("id", `${id}-filters`)
|
|
||||||
filtersContainer.classList.add("col-span-12")
|
|
||||||
filtersContainer.innerHTML = `
|
|
||||||
<div id="${id}-filtersContainer" class="filters flex flex-row items-center justify-start gap-3 mb-0 pt-2.5 bg-slate-100 rounded-t-md flex-row 2xl:flex-row">
|
|
||||||
<div id="${id}-selectFilters" class="flex items-center justify-start gap-3 p-1 ml-2 text-base text-slate-700 font-bold">
|
|
||||||
Фильтр по статусу
|
|
||||||
<select name="selectFilter" id="${id}-selectFilter" class="flex text-gray-700 pl-3 pr-9 py-0.5 rounded cursor-pointer border-none" style="--tw-ring-color:focus: none" >
|
|
||||||
${filterParams.map((el) => {
|
|
||||||
return (`<option value='${el}'>
|
|
||||||
${el}
|
|
||||||
</option>`)
|
|
||||||
})}
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<button id="${id}-filtersClear"class="w-fit h-fit flex items-center text-white text-sm font-bold bg-slate-600 hover:bg-slate-700 py-1 px-3 gap-1 rounded">Очистить фильтр</button>
|
|
||||||
</div>`
|
|
||||||
if(!isFiltering) {
|
|
||||||
table.before(filtersContainer)
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
isFiltering.remove()
|
|
||||||
table.before(filtersContainer)
|
|
||||||
}
|
|
||||||
|
|
||||||
const selectFilters = document.querySelectorAll(`#${id}-selectFilter`)
|
|
||||||
const selectOptions = document.querySelectorAll(`#${id}-selectFilter option`)
|
|
||||||
const buttonClearFilters = document.querySelector(`#${id}-filtersClear`)
|
|
||||||
|
|
||||||
selectFilters.forEach((el) => {
|
|
||||||
el.onchange = (e) => {
|
|
||||||
if(e.target.value) {
|
|
||||||
selectOptions[0].removeAttribute('selected')
|
|
||||||
console.log('e', e)
|
|
||||||
console.log('selectFilters[0]', selectFilters[0])
|
|
||||||
console.log('selectOptions[0][0]', selectOptions[0])
|
|
||||||
selectedFilter(e.target.value)
|
|
||||||
} else {
|
|
||||||
clearFilters()
|
|
||||||
e.target.setAttribute('selected', 'selected')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
buttonClearFilters.onclick = () => {
|
|
||||||
clearFilters()
|
|
||||||
selectOptions[0].setAttribute('selected', 'selected')
|
|
||||||
console.log('selectFilters[0]', selectFilters[0])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const validation = (value, pagination) => {
|
|
||||||
const pipe = (...fns) => (...x) => fns.reduce((error, validator) => error || validator(...x), undefined)
|
|
||||||
const required = value => {
|
|
||||||
return value ? undefined : "*"
|
|
||||||
}
|
|
||||||
const minPage = length => value => {
|
|
||||||
value = value.replace(/\s+/g, '')
|
|
||||||
return value >= length ? undefined : `Номер страницы должен быть больше или равен ${length}`
|
|
||||||
}
|
|
||||||
const maxPage = length => value => {
|
|
||||||
value = value.replace(/\s+/g, '')
|
|
||||||
return length >= value ? undefined : `Номер страницы должен быть меньше или равен ${length}`
|
|
||||||
}
|
|
||||||
const onlyDigits = value => {
|
|
||||||
const pattern = /^([\d])*$/g
|
|
||||||
return pattern.test(value) ? undefined : `Номер страницы должен содержать только цифры`
|
|
||||||
}
|
|
||||||
const composedValidators = pipe(onlyDigits, minPage(1), maxPage(pagination.total_pages))
|
|
||||||
return composedValidators(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
export {prepColumns, sorter, renderGroupHeader, groupByFunction, makedFiltering, tablefy, validation};
|
|
||||||
@ -1,29 +0,0 @@
|
|||||||
const localization = () => ({
|
|
||||||
ru: {
|
|
||||||
groups: {
|
|
||||||
item: "запись",
|
|
||||||
items: "записей",
|
|
||||||
},
|
|
||||||
"pagination":{
|
|
||||||
"page_size":"Размер таблицы", //label for the page size select element
|
|
||||||
"page_title":"Показать страницу",//tooltip text for the numeric page button, appears in front of the page number (eg. "Show Page" will result in a tool tip of "Show Page 1" on the page 1 button)
|
|
||||||
"first":"К первой", //text for the first page button
|
|
||||||
"first_title":"Показать страницу", //tooltip text for the first page button
|
|
||||||
"last":"К последней",
|
|
||||||
"last_title":"Последняя страница",
|
|
||||||
"prev":"<<",
|
|
||||||
"prev_title":"<<",
|
|
||||||
"next":">>",
|
|
||||||
"next_title":">>",
|
|
||||||
"all":"Все",
|
|
||||||
"counter":{
|
|
||||||
"showing": "Показать",
|
|
||||||
"of": "из",
|
|
||||||
"rows": "строки",
|
|
||||||
"pages": "страницы",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
export default localization;
|
|
||||||
@ -1,244 +0,0 @@
|
|||||||
import { cond, T } from "ramda";
|
|
||||||
|
|
||||||
const text = `
|
|
||||||
0 Конфигурация не установлена (по умолчанию)
|
|
||||||
1 Стандартная конфигурация МРТ (МПТ/АВФ)
|
|
||||||
2 Стандартная конфигурация ЖДСМ
|
|
||||||
3 Стандартная конфигурация УК/ВПО
|
|
||||||
4 ЩОМ/РМ (Акселерометр)
|
|
||||||
5 СМ (Сибирский ПГУПС)
|
|
||||||
6 СМ (зарезервировано)
|
|
||||||
7 Эмуляция платы БКП
|
|
||||||
8 Конфигурация Блок-М
|
|
||||||
40 Эмуляторы
|
|
||||||
41 Эмуляторы (CAN1 + CAN2 (Блок-М) + ModBus
|
|
||||||
50 Стандартная конфигурация ModBus Master (опрос внешних устройств)
|
|
||||||
51 Стандартная конфигурация ModBus Master (опрос плат АС КРСПС)
|
|
||||||
52 Конфигурация трекера (электрички и т.п.)
|
|
||||||
53 Конфигурация трекер + счетчик импульсов + акселерометр
|
|
||||||
54 РадарП
|
|
||||||
55 СДРГО
|
|
||||||
100 ПМА-1М РПМ
|
|
||||||
101 ЩОМ-1400 РПМ
|
|
||||||
102 АМ-140 СКРТ РПМ
|
|
||||||
103 АС-01 РПМ
|
|
||||||
104 ТЭС ПСС-1К РПМ
|
|
||||||
105 ПСС-2П РПМ
|
|
||||||
200 РПБ-01 ВНИКТИ
|
|
||||||
201 МПК Спецлоко
|
|
||||||
202 УК 25/25 ВНИКТИ
|
|
||||||
203 СЗ-800 ВНИКТИ
|
|
||||||
300 ЩОМ-1200С ТЖДМ
|
|
||||||
301 ЩОМ-2000 ТЖДМc
|
|
||||||
302 ССГС-1 ТЖДМ
|
|
||||||
303 ВПО-С ТЖДМ
|
|
||||||
304 МПВ ТЖДМ
|
|
||||||
305 УПК ТЖДМ
|
|
||||||
306 ПРЛ-М ТЖДМ
|
|
||||||
307 РУ-700 ТЖДМ
|
|
||||||
308 МПВ Секция 2 ТЖДМ
|
|
||||||
1911 Конфигурация для отладки
|
|
||||||
4096 Настраиваемая конфигурация
|
|
||||||
`
|
|
||||||
|
|
||||||
//TODO SERGEY
|
|
||||||
const parse = () => {
|
|
||||||
text
|
|
||||||
return {}
|
|
||||||
}
|
|
||||||
|
|
||||||
const get_f1_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_2_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация, не установлена (по умолчанию)",
|
|
||||||
1: "Стандартная, конфигурация МРТ (МПТ/АВФ)",
|
|
||||||
2: "Стандартная конфигурация ЖДСМ",
|
|
||||||
3: "Стандартная конфигурация УК/ВПО",
|
|
||||||
4: "ЩОМ/РМ (Акселерометр)",
|
|
||||||
5: "СМ (Сибирский ПГУПС)",
|
|
||||||
6: "СМ (зарезервировано)",
|
|
||||||
7: "Эмуляция платы БКП",
|
|
||||||
8: "Конфигурация Блок-М",
|
|
||||||
40: "Эмуляторы",
|
|
||||||
41: "Эмуляторы (CAN1 + CAN2 (Блок-М) + ModBus",
|
|
||||||
50: "Стандартная конфигурация ModBus Master (опрос внешних устройств)",
|
|
||||||
51: "Стандартная конфигурация ModBus Master (опрос плат АС КРСПС)",
|
|
||||||
52: "Конфигурация трекера (электрички и т.п.)",
|
|
||||||
53: "Конфигурация трекер + счетчик импульсов + акселерометр",
|
|
||||||
54: "РадарП",
|
|
||||||
55: "СДРГО",
|
|
||||||
100 : "ПМА-1М РПМ",
|
|
||||||
101 : "ЩОМ-1400 РПМ",
|
|
||||||
102 : "АМ-140 СКРТ РПМ",
|
|
||||||
103 : "АС-01 РПМ",
|
|
||||||
104 : "ТЭС ПСС-1К РПМ",
|
|
||||||
105 : "ПСС-2П РПМ",
|
|
||||||
200 : "РПБ-01 ВНИКТИ",
|
|
||||||
201 : "МПК Спецлоко",
|
|
||||||
202 : "УК 25/25 ВНИКТИ",
|
|
||||||
203 : "СЗ-800 ВНИКТИ",
|
|
||||||
300 : "ЩОМ-1200С ТЖДМ",
|
|
||||||
301 : "ЩОМ-2000 ТЖДМ",
|
|
||||||
302 : "ССГС-1 ТЖДМ",
|
|
||||||
303 : "ВПО-С ТЖДМ",
|
|
||||||
304 : "МПВ ТЖДМ",
|
|
||||||
305 : "УПК ТЖДМ",
|
|
||||||
306 : "ПРЛ-М ТЖДМ",
|
|
||||||
307 : "РУ-700 ТЖДМ",
|
|
||||||
308 : "МПВ Секция 2 ТЖДМ",
|
|
||||||
1911: "Конфигурация для отладки",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_4_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
1: "Стандартная конфигурация МРТ (МПТ/АВФ)",
|
|
||||||
2: "Стандартная конфигурация ЖДСМ",
|
|
||||||
3: "Стандартная конфигурация УК/ВПО",
|
|
||||||
4: "ЩОМ/РМ (Акселерометр)",
|
|
||||||
5: "СМ (Сибирский ПГУПС)",
|
|
||||||
6: "СМ (зарезервировано)",
|
|
||||||
7: "Эмуляция платы БКП",
|
|
||||||
8: "Конфигурация Блок-М",
|
|
||||||
40: "Эмуляторы (CAN1 + ОНК-160 + ModBus)",
|
|
||||||
41: "Эмуляторы (CAN1 + CAN2 (Блок-М) + ModBus)",
|
|
||||||
50: "Стандартная конфигурация ModBus Master (опрос внешних устройств)",
|
|
||||||
51: "Стандартная конфигурация ModBus Master (опрос плат АС КРСПС)",
|
|
||||||
52: "Конфигурация трекера (электрички и т.п.)",
|
|
||||||
53: "Конфигурация трекер + счетчик импульсов + акселерометр",
|
|
||||||
54: "РадарП",
|
|
||||||
55: "СДРГО",
|
|
||||||
100: "ПМА-1М РПМ",
|
|
||||||
101: "ЩОМ-1400 РПМ",
|
|
||||||
102: "АМ-140 СКРТ РПМ",
|
|
||||||
103: "АС-01 РПМ",
|
|
||||||
104: "ТЭС ПСС-1К РПМ",
|
|
||||||
105: "ПСС-2П РПМ",
|
|
||||||
200: "РПБ-01 ВНИКТИ",
|
|
||||||
201: "МПК Спецлоко",
|
|
||||||
202: "УК 25/25 ВНИКТИ",
|
|
||||||
203: "СЗ-800 ВНИКТИ",
|
|
||||||
300: "ЩОМ-1200С ТЖДМ",
|
|
||||||
301: "ЩОМ-2000 ТЖДМ",
|
|
||||||
302: "ССГС-1 ТЖДМ",
|
|
||||||
303: "ВПО-С ТЖДМ",
|
|
||||||
304: "МПВ ТЖДМ",
|
|
||||||
305: "УПК ТЖДМ",
|
|
||||||
306: "ПРЛ-М ТЖДМ",
|
|
||||||
307: "РУ-700 ТЖДМ",
|
|
||||||
308: "МПВ Секция 2 ТЖДМ",
|
|
||||||
1911: "Конфигурация для отладки",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_skrt_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
1: "Обработка импульсной СКРТ",
|
|
||||||
2: "Конфигурация ModBus Slave Base",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const uk_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
1: "УК AC с подключением по SPI",
|
|
||||||
2: "УК AC с подключением по LORA",
|
|
||||||
3: "УК DC с подключением по SPI",
|
|
||||||
4: "УК DC с подключением по LORA",
|
|
||||||
5: "ВПО AC/DC с подключением по SPI",
|
|
||||||
6: "ВПО AC/DC с подключением по LORA",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_64_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_dig_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
1: "Конфигурация с эмуляторами",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_69_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_80_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Плата с экраном для СМ",
|
|
||||||
1: "Плата с экраном для ПСС",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_81_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Плата с ультразвуковыми датчиками (СМ и т.п.)",
|
|
||||||
4096: "Плата с ультразвуковыми датчиками (СМ и т.п.) настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_82_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Плата с дискретными входами + LORA (СМ Tail)",
|
|
||||||
4096: "Плата с дискретными входами + LORA (СМ Tail) настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
|
|
||||||
const sadko_83_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
1: "Конфигурация для МПТ",
|
|
||||||
2: "Конфигурация для ТЭС ПСС-1К",
|
|
||||||
3: "Конфигурация для СМ (СМ-2Б)",
|
|
||||||
4: "Конфигурация для Динамик",
|
|
||||||
5: "Конфигурация для УТМ-5",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
|
|
||||||
const presetConfig = (el, record) => {
|
|
||||||
const { board_id: board_id } = record;
|
|
||||||
board_id == 64 && console.log(record)
|
|
||||||
|
|
||||||
|
|
||||||
return cond([
|
|
||||||
[(board) => board == 1, () => get_f1_preset(el)],
|
|
||||||
[(board) => board == 2, () => sadko_2_preset(el)],
|
|
||||||
[(board) => board == 4, () => sadko_4_preset(el)],
|
|
||||||
[(board) => board == 16, () => sadko_skrt_preset(el)],
|
|
||||||
[(board) => board == 19, () => uk_preset(el)],
|
|
||||||
[(board) => board == 64, () => sadko_64_preset(el)],
|
|
||||||
[(board) => board == 68, () => sadko_dig_preset(el)],
|
|
||||||
[(board) => board == 69, () => sadko_69_preset(el)],
|
|
||||||
[(board) => board == 80, () => sadko_80_preset(el)],
|
|
||||||
[(board) => board == 81, () => sadko_81_preset(el)],
|
|
||||||
[(board) => board == 82, () => sadko_82_preset(el)],
|
|
||||||
[(board) => board == 83, () => sadko_83_preset(el)],
|
|
||||||
[T, () => el],
|
|
||||||
])(board_id);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default presetConfig
|
|
||||||
@ -1,406 +0,0 @@
|
|||||||
// import "antd/dist/antd.css";
|
|
||||||
import axios from "axios";
|
|
||||||
import { parseSepareteDate } from "./time_funcs";
|
|
||||||
import {
|
|
||||||
range,
|
|
||||||
groupBy,
|
|
||||||
find,
|
|
||||||
propEq,
|
|
||||||
findIndex,
|
|
||||||
update,
|
|
||||||
is,
|
|
||||||
cond,
|
|
||||||
T,
|
|
||||||
isNil
|
|
||||||
} from "ramda";
|
|
||||||
|
|
||||||
let getPackSettings = (userId, page, packStructId, func) => {
|
|
||||||
if (userId && page && packStructId) {
|
|
||||||
axios({
|
|
||||||
method: "GET",
|
|
||||||
url: `/api/settings/${userId}/${page}/${packStructId}`,
|
|
||||||
headers: {
|
|
||||||
Authorization: `vniizht ${btoa(JSON.stringify({ date: new Date() }))}`,
|
|
||||||
},
|
|
||||||
})
|
|
||||||
.then(({ data }) => {
|
|
||||||
func(data)
|
|
||||||
})
|
|
||||||
.catch((e) => console.warn(e));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const prepDiscretes = (from, to, arr) =>
|
|
||||||
range(from, to + 1).map((el) => ({
|
|
||||||
title: el,
|
|
||||||
dataIndex: `disc${el}`,
|
|
||||||
key: `disc${el}`,
|
|
||||||
width: 60,
|
|
||||||
render: (v) =>
|
|
||||||
v ? (
|
|
||||||
"вкл"
|
|
||||||
) : (
|
|
||||||
"выкл"
|
|
||||||
),
|
|
||||||
}));
|
|
||||||
|
|
||||||
const is_number = (val) => {
|
|
||||||
try {
|
|
||||||
return +val;
|
|
||||||
} catch (_e) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
const is_dt = (val) => {
|
|
||||||
let is_invalid = new Date(val) !== "Invalid Date";
|
|
||||||
return val && val != "" && !is_invalid;
|
|
||||||
};
|
|
||||||
|
|
||||||
const compare = (val, from, untill) => {
|
|
||||||
if (is_number(val)) {
|
|
||||||
return val >= +from && val <= +untill;
|
|
||||||
}
|
|
||||||
if (is_dt(val)) {
|
|
||||||
let val = new Date(val).getTime;
|
|
||||||
let from = new Date(from).getTime;
|
|
||||||
let untill = new Date(untill).getTime;
|
|
||||||
|
|
||||||
return val >= from && val <= untill;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
|
||||||
`${val}`.toLowerCase() == `${from}`.toLowerCase() ||
|
|
||||||
`${val}`.toLowerCase() == `${untill}`.toLowerCase()
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
const withCustomSettings = (_columns, requestSettings) => {
|
|
||||||
let columns = _columns
|
|
||||||
|
|
||||||
if (requestSettings?.colors?.isOn) {
|
|
||||||
}
|
|
||||||
|
|
||||||
if (requestSettings?.colors?.isOn) {
|
|
||||||
let colors = requestSettings.colors.list.filter((el) => el.isOn);
|
|
||||||
colors = groupBy((c) => c.param)(colors);
|
|
||||||
coloredParams = Object.keys(colors);
|
|
||||||
columns = columns.map((el) => {
|
|
||||||
if (coloredParams.includes(el.dataIndex)) {
|
|
||||||
return {
|
|
||||||
...el,
|
|
||||||
onCell: (data, index) => {
|
|
||||||
let colrSettings = colors[el.dataIndex];
|
|
||||||
let value = data[el.dataIndex];
|
|
||||||
let color = find(({ from, untill }) =>
|
|
||||||
compare(value, from, untill)
|
|
||||||
)(colrSettings);
|
|
||||||
return {
|
|
||||||
style: { background: color?.color?.hex || "white" },
|
|
||||||
};
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
return el;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
let sort_order =
|
|
||||||
requestSettings?.settings?.sort_order == "desc" ? "descend" : "ascend";
|
|
||||||
let prim_param = requestSettings?.settings?.date_param;
|
|
||||||
let prim_base_date =
|
|
||||||
find(propEq("dataIndex", prim_param), columns) ||
|
|
||||||
find(propEq("dataIndex", "pack_dt_new"), columns);
|
|
||||||
let prim_index = findIndex(propEq("dataIndex", prim_param), columns);
|
|
||||||
// сделано, потому что в пакете может быть подменена дата
|
|
||||||
if (prim_index < 0) {
|
|
||||||
prim_base_date = find(propEq("dataIndex", "pack_dt_new"), columns);
|
|
||||||
prim_index = findIndex(propEq("dataIndex", "pack_dt_new"), columns);
|
|
||||||
}
|
|
||||||
if (prim_index >= 0) {
|
|
||||||
let sec_param = prim_param == "pack_dt" ? "dt" : "pack_dt";
|
|
||||||
let sec_base_date = find(propEq("dataIndex", sec_param), columns);
|
|
||||||
let sec_index = findIndex(propEq("dataIndex", sec_param), columns);
|
|
||||||
if (sec_index < 0) {
|
|
||||||
sec_base_date = find(propEq("dataIndex", "pack_dt_new"), columns);
|
|
||||||
sec_index = findIndex(propEq("dataIndex", "pack_dt_new"), columns);
|
|
||||||
}
|
|
||||||
if (sec_index > 0) {
|
|
||||||
columns = update(
|
|
||||||
prim_index,
|
|
||||||
{
|
|
||||||
...prim_base_date,
|
|
||||||
defaultSortOrder: sort_order,
|
|
||||||
sorter: (a, b) => new Date(a[prim_param]) - new Date(b[prim_param]),
|
|
||||||
},
|
|
||||||
columns
|
|
||||||
);
|
|
||||||
|
|
||||||
let sec_object = {
|
|
||||||
...sec_base_date,
|
|
||||||
sorter: (a, b) => new Date(a[prim_param]) - new Date(b[prim_param]),
|
|
||||||
};
|
|
||||||
delete sec_object.defaultSortOrder;
|
|
||||||
|
|
||||||
columns = update(sec_index, sec_object, columns);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return columns;
|
|
||||||
};
|
|
||||||
|
|
||||||
const fetch_sorter_field = (sorter, req_params) => {
|
|
||||||
const date_param = req_params?.settings?.date_param
|
|
||||||
return cond([
|
|
||||||
[() => sorter?.field, () => sorter.field],
|
|
||||||
[is(Array), field_from_arr(sorter, date_param)],
|
|
||||||
[isNil, () => date_param],
|
|
||||||
])(sorter)
|
|
||||||
}
|
|
||||||
|
|
||||||
const field_from_arr = (sorter, date_param) => () => {
|
|
||||||
const field = sorter.find((el) => `${el?.field}`.includes("dt"))?.field
|
|
||||||
return field || date_param
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const get_f1_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_2_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация, не установлена (по умолчанию)",
|
|
||||||
1: "Стандартная, конфигурация МРТ (МПТ/АВФ)",
|
|
||||||
2: "Стандартная конфигурация ЖДСМ",
|
|
||||||
3: "Стандартная конфигурация УК/ВПО",
|
|
||||||
4: "ЩОМ/РМ (Акселерометр)",
|
|
||||||
5: "СМ (Сибирский ПГУПС)",
|
|
||||||
6: "СМ (зарезервировано)",
|
|
||||||
7: "Эмуляция платы БКП",
|
|
||||||
8: "Конфигурация Блок-М",
|
|
||||||
40: "Эмуляторы",
|
|
||||||
41: "Эмуляторы (CAN1 + CAN2 (Блок-М) + ModBus",
|
|
||||||
50: "Стандартная конфигурация ModBus Master (опрос внешних устройств)",
|
|
||||||
51: "Стандартная конфигурация ModBus Master (опрос плат АС КРСПС)",
|
|
||||||
52: "Конфигурация трекера (электрички и т.п.)",
|
|
||||||
53: "Конфигурация трекер + счетчик импульсов + акселерометр",
|
|
||||||
54: "РадарП",
|
|
||||||
55: "СДРГО",
|
|
||||||
100 : "ПМА-1М РПМ",
|
|
||||||
101 : "ЩОМ-1400 РПМ",
|
|
||||||
102 : "АМ-140 СКРТ РПМ",
|
|
||||||
103 : "АС-01 РПМ",
|
|
||||||
104 : "ТЭС ПСС-1К РПМ",
|
|
||||||
105 : "ПСС-2П РПМ",
|
|
||||||
200 : "РПБ-01 ВНИКТИ",
|
|
||||||
201 : "МПК Спецлоко",
|
|
||||||
202 : "УК 25/25 ВНИКТИ",
|
|
||||||
203 : "СЗ-800 ВНИКТИ",
|
|
||||||
300 : "ЩОМ-1200С ТЖДМ",
|
|
||||||
301 : "ЩОМ-2000 ТЖДМ",
|
|
||||||
302 : "ССГС-1 ТЖДМ",
|
|
||||||
303 : "ВПО-С ТЖДМ",
|
|
||||||
304 : "МПВ ТЖДМ",
|
|
||||||
305 : "УПК ТЖДМ",
|
|
||||||
306 : "ПРЛ-М ТЖДМ",
|
|
||||||
307 : "РУ-700 ТЖДМ",
|
|
||||||
308 : "МПВ Секция 2 ТЖДМ",
|
|
||||||
1911: "Конфигурация для отладки",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_4_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
1: "Стандартная конфигурация МРТ (МПТ/АВФ)",
|
|
||||||
2: "Стандартная конфигурация ЖДСМ",
|
|
||||||
3: "Стандартная конфигурация УК/ВПО",
|
|
||||||
4: "ЩОМ/РМ (Акселерометр)",
|
|
||||||
5: "СМ (Сибирский ПГУПС)",
|
|
||||||
6: "СМ (зарезервировано)",
|
|
||||||
7: "Эмуляция платы БКП",
|
|
||||||
8: "Конфигурация Блок-М",
|
|
||||||
40: "Эмуляторы (CAN1 + ОНК-160 + ModBus)",
|
|
||||||
41: "Эмуляторы (CAN1 + CAN2 (Блок-М) + ModBus)",
|
|
||||||
50: "Стандартная конфигурация ModBus Master (опрос внешних устройств)",
|
|
||||||
51: "Стандартная конфигурация ModBus Master (опрос плат АС КРСПС)",
|
|
||||||
52: "Конфигурация трекера (электрички и т.п.)",
|
|
||||||
53: "Конфигурация трекер + счетчик импульсов + акселерометр",
|
|
||||||
54: "РадарП",
|
|
||||||
55: "СДРГО",
|
|
||||||
100: "ПМА-1М РПМ",
|
|
||||||
101: "ЩОМ-1400 РПМ",
|
|
||||||
102: "АМ-140 СКРТ РПМ",
|
|
||||||
103: "АС-01 РПМ",
|
|
||||||
104: "ТЭС ПСС-1К РПМ",
|
|
||||||
105: "ПСС-2П РПМ",
|
|
||||||
200: "РПБ-01 ВНИКТИ",
|
|
||||||
201: "МПК Спецлоко",
|
|
||||||
202: "УК 25/25 ВНИКТИ",
|
|
||||||
203: "СЗ-800 ВНИКТИ",
|
|
||||||
300: "ЩОМ-1200С ТЖДМ",
|
|
||||||
301: "ЩОМ-2000 ТЖДМ",
|
|
||||||
302: "ССГС-1 ТЖДМ",
|
|
||||||
303: "ВПО-С ТЖДМ",
|
|
||||||
304: "МПВ ТЖДМ",
|
|
||||||
305: "УПК ТЖДМ",
|
|
||||||
306: "ПРЛ-М ТЖДМ",
|
|
||||||
307: "РУ-700 ТЖДМ",
|
|
||||||
308: "МПВ Секция 2 ТЖДМ",
|
|
||||||
1911: "Конфигурация для отладки",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_skrt_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
1: "Обработка импульсной СКРТ",
|
|
||||||
2: "Конфигурация ModBus Slave Base",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const uk_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
1: "УК AC с подключением по SPI",
|
|
||||||
2: "УК AC с подключением по LORA",
|
|
||||||
3: "УК DC с подключением по SPI",
|
|
||||||
4: "УК DC с подключением по LORA",
|
|
||||||
5: "ВПО AC/DC с подключением по SPI",
|
|
||||||
6: "ВПО AC/DC с подключением по LORA",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_64_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_dig_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
1: "Конфигурация с эмуляторами",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_69_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_80_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Плата с экраном для СМ",
|
|
||||||
1: "Плата с экраном для ПСС",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_81_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Плата с ультразвуковыми датчиками (СМ и т.п.)",
|
|
||||||
4096: "Плата с ультразвуковыми датчиками (СМ и т.п.) настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
const sadko_82_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Плата с дискретными входами + LORA (СМ Tail)",
|
|
||||||
4096: "Плата с дискретными входами + LORA (СМ Tail) настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
|
|
||||||
const sadko_83_preset = (el) => {
|
|
||||||
const r = {
|
|
||||||
0: "Конфигурация не установлена (по умолчанию)",
|
|
||||||
1: "Конфигурация для МПТ",
|
|
||||||
2: "Конфигурация для ТЭС ПСС-1К",
|
|
||||||
3: "Конфигурация для СМ (СМ-2Б)",
|
|
||||||
4: "Конфигурация для Динамик",
|
|
||||||
5: "Конфигурация для УТМ-5",
|
|
||||||
4096: "Настраиваемая конфигурация",
|
|
||||||
};
|
|
||||||
return r[el] || el;
|
|
||||||
};
|
|
||||||
|
|
||||||
const presetConfig = (el, record) => {
|
|
||||||
const { board_id: board_id } = record;
|
|
||||||
board_id == 64 && console.log(record)
|
|
||||||
|
|
||||||
|
|
||||||
return cond([
|
|
||||||
[(board) => board == 1, () => get_f1_preset(el)],
|
|
||||||
[(board) => board == 2, () => sadko_2_preset(el)],
|
|
||||||
[(board) => board == 4, () => sadko_4_preset(el)],
|
|
||||||
[(board) => board == 16, () => sadko_skrt_preset(el)],
|
|
||||||
[(board) => board == 19, () => uk_preset(el)],
|
|
||||||
[(board) => board == 64, () => sadko_64_preset(el)],
|
|
||||||
[(board) => board == 68, () => sadko_dig_preset(el)],
|
|
||||||
[(board) => board == 69, () => sadko_69_preset(el)],
|
|
||||||
[(board) => board == 80, () => sadko_80_preset(el)],
|
|
||||||
[(board) => board == 81, () => sadko_81_preset(el)],
|
|
||||||
[(board) => board == 82, () => sadko_82_preset(el)],
|
|
||||||
[(board) => board == 83, () => sadko_83_preset(el)],
|
|
||||||
[T, () => el],
|
|
||||||
])(board_id);
|
|
||||||
};
|
|
||||||
|
|
||||||
const fVarsNames = [
|
|
||||||
"getPackSettings",
|
|
||||||
"prepDiscretes",
|
|
||||||
"is_number",
|
|
||||||
"is_dt",
|
|
||||||
"compare",
|
|
||||||
"withCustomSettings",
|
|
||||||
"parseSepareteDate",
|
|
||||||
"presetConfig",
|
|
||||||
];
|
|
||||||
|
|
||||||
const fVarsFuncs = [
|
|
||||||
getPackSettings,
|
|
||||||
prepDiscretes,
|
|
||||||
is_number,
|
|
||||||
is_dt,
|
|
||||||
compare,
|
|
||||||
withCustomSettings,
|
|
||||||
parseSepareteDate,
|
|
||||||
presetConfig,
|
|
||||||
];
|
|
||||||
|
|
||||||
let parseFunc = (string) => {
|
|
||||||
return (item, el) => {
|
|
||||||
const f = new Function(
|
|
||||||
"item",
|
|
||||||
"el",
|
|
||||||
...fVarsNames,
|
|
||||||
`return (${string})(item, el)`
|
|
||||||
);
|
|
||||||
return f(item, el, ...fVarsFuncs);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
let parseFunc2 = (string) => {
|
|
||||||
const f = new Function(...fVarsNames, `return (() => ${string})()`);
|
|
||||||
return f(...fVarsFuncs);
|
|
||||||
};
|
|
||||||
|
|
||||||
const parseFunc3 = (string) => {
|
|
||||||
const f = new Function(`return (${string})`)
|
|
||||||
return f()
|
|
||||||
}
|
|
||||||
|
|
||||||
export {parseFunc, parseFunc2, parseFunc3}
|
|
||||||
@ -1,168 +0,0 @@
|
|||||||
import { inc, type, cond, equals, T, pipe } from "ramda";
|
|
||||||
|
|
||||||
export const isDate = (date) =>
|
|
||||||
type(date) === "Date" || new Date(date).getTime() > 0;
|
|
||||||
export const formateDateToString = (date) =>
|
|
||||||
isDate(date) && date.toLocaleString();
|
|
||||||
|
|
||||||
const monthNames = [
|
|
||||||
"Январь",
|
|
||||||
"Февраль",
|
|
||||||
"Март",
|
|
||||||
"Апрель",
|
|
||||||
"Май",
|
|
||||||
"Июнь",
|
|
||||||
"Июль",
|
|
||||||
"Август",
|
|
||||||
"Сентябрь",
|
|
||||||
"Октябрь",
|
|
||||||
"Ноябрь",
|
|
||||||
"Декабрь",
|
|
||||||
];
|
|
||||||
|
|
||||||
export const reformateDateString = (date, format = "full") =>
|
|
||||||
!!date ? reformate(date, format) : null;
|
|
||||||
|
|
||||||
const reformate = (date, format) =>
|
|
||||||
cond([
|
|
||||||
[
|
|
||||||
equals("time-only"),
|
|
||||||
() => {
|
|
||||||
const { hr, min, sec } = getTime(date);
|
|
||||||
return `${hr}:${min}:${sec}`;
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
equals("date-only"),
|
|
||||||
() => {
|
|
||||||
const { day, mth, year } = getDate(date);
|
|
||||||
return `${day}/${mth}/${year}`;
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
equals("date-report"),
|
|
||||||
() => {
|
|
||||||
const { day, mth, year } = getDate(date);
|
|
||||||
return `${year}-${mth}-${day}`;
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
equals("mth-date-report"),
|
|
||||||
() => {
|
|
||||||
date = new Date(date);
|
|
||||||
return `${getMthName(date)} ${date.getDate()}`;
|
|
||||||
},
|
|
||||||
],
|
|
||||||
[
|
|
||||||
T,
|
|
||||||
() => {
|
|
||||||
const { hr, min, sec } = getTime(date);
|
|
||||||
const { day, mth, year } = getDate(date);
|
|
||||||
return `${day}/${mth}/${year} ${hr}:${min}:${sec}`;
|
|
||||||
},
|
|
||||||
],
|
|
||||||
])(format);
|
|
||||||
|
|
||||||
export const addHours = (oldDate, h) => {
|
|
||||||
const date = new Date(oldDate);
|
|
||||||
date.setHours(date.getHours() + h);
|
|
||||||
return date;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const lastDay = addHours(new Date(), -24);
|
|
||||||
|
|
||||||
const getTime = (date) => {
|
|
||||||
date = new Date(date);
|
|
||||||
return {
|
|
||||||
hr: formatTime(date.getHours()),
|
|
||||||
minutes: formatTime(date.getMinutes()),
|
|
||||||
sec: formatTime(date.getSeconds()),
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
const getDate = (date) => {
|
|
||||||
date = new Date(date);
|
|
||||||
return {
|
|
||||||
mth: formatDate(date.getMonth()),
|
|
||||||
day: date.getDate(),
|
|
||||||
year: date.getFullYear(),
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getMthName = (date) => monthNames[date.getMonth()];
|
|
||||||
export const formatDate = (t) => (inc(t) >= 10 ? inc(t) : `0${inc(t)}`);
|
|
||||||
export const formatTime = (t) => `0${t}`.slice(-2);
|
|
||||||
|
|
||||||
export const getDateByType = (date) => {
|
|
||||||
if (type(date) === "String") return new Date(date.replace(/\s/, "T"));
|
|
||||||
return new Date(date);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const parseSepareteDate = (
|
|
||||||
date = new Date(),
|
|
||||||
symbol = ".",
|
|
||||||
mode = "DateDMY"
|
|
||||||
) => {
|
|
||||||
const selfDate = getDateByType(date);
|
|
||||||
const dateBits = {
|
|
||||||
year: selfDate.getFullYear(),
|
|
||||||
month: selfDate.getMonth() + 1,
|
|
||||||
day: selfDate.getDate(),
|
|
||||||
hours: selfDate.getHours(),
|
|
||||||
minutes: selfDate.getMinutes(),
|
|
||||||
seconds: selfDate.getSeconds(),
|
|
||||||
};
|
|
||||||
Object.keys(dateBits).forEach((key) => {
|
|
||||||
if (dateBits[key] < 10) dateBits[key] = `0${dateBits[key]}`;
|
|
||||||
});
|
|
||||||
switch (mode) {
|
|
||||||
case "DateDMY":
|
|
||||||
return dateBits.day + symbol + dateBits.month + symbol + dateBits.year;
|
|
||||||
case "DateDM":
|
|
||||||
return dateBits.day + symbol + dateBits.month;
|
|
||||||
case "DateYMD":
|
|
||||||
return dateBits.year + symbol + dateBits.month + symbol + dateBits.day;
|
|
||||||
case "DateDMYHM":
|
|
||||||
return `${
|
|
||||||
dateBits.day + symbol + dateBits.month + symbol + dateBits.year
|
|
||||||
} ${dateBits.hours}:${dateBits.minutes}`;
|
|
||||||
case "DateDMYHMS":
|
|
||||||
return `${
|
|
||||||
dateBits.day + symbol + dateBits.month + symbol + dateBits.year
|
|
||||||
} ${dateBits.hours}:${dateBits.minutes}:${dateBits.seconds}`;
|
|
||||||
case "DateYMDHM":
|
|
||||||
return `${
|
|
||||||
dateBits.year + symbol + dateBits.month + symbol + dateBits.day
|
|
||||||
} ${dateBits.hours}:${dateBits.minutes}`;
|
|
||||||
case "DateYMDHMS":
|
|
||||||
return `${
|
|
||||||
dateBits.year + symbol + dateBits.month + symbol + dateBits.day
|
|
||||||
} ${dateBits.hours}:${dateBits.minutes}:${dateBits.seconds}`;
|
|
||||||
case "DateHM":
|
|
||||||
return `${dateBits.hours}:${dateBits.minutes}`;
|
|
||||||
case "DateHMDM":
|
|
||||||
return `${dateBits.hours}:${dateBits.minutes} ${dateBits.day}${symbol}${dateBits.month}`;
|
|
||||||
case "DateDataBase":
|
|
||||||
return `${
|
|
||||||
dateBits.year + symbol + dateBits.month + symbol + dateBits.day
|
|
||||||
}T${dateBits.hours}:${dateBits.minutes}:${dateBits.seconds}`;
|
|
||||||
case "DateDataBaseSpace":
|
|
||||||
return `${
|
|
||||||
dateBits.year + symbol + dateBits.month + symbol + dateBits.day
|
|
||||||
} ${dateBits.hours}:${dateBits.minutes}:${dateBits.seconds}`;
|
|
||||||
default:
|
|
||||||
return dateBits.day + symbol + dateBits.month + symbol + dateBits.year;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const toStartDay = (date = new Date()) => {
|
|
||||||
const selfDate = getDateByType(date);
|
|
||||||
|
|
||||||
return selfDate.setHours(0, 0, 0);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const withTime = (date, time) =>
|
|
||||||
pipe(
|
|
||||||
(x) => parseSepareteDate(x, "-", "DateYMD"),
|
|
||||||
(x) => `${x}T${time}`
|
|
||||||
)(date);
|
|
||||||
@ -1,223 +0,0 @@
|
|||||||
import { parse } from "handlebars/dist/cjs/handlebars/compiler/base";
|
|
||||||
import { cond, T, isEmpty } from "ramda";
|
|
||||||
|
|
||||||
const setPackColumns = (name) => {
|
|
||||||
switch(name) {
|
|
||||||
case 'КолонкиПакетов':
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
title: "Пакет на проде",
|
|
||||||
field: "switch ",
|
|
||||||
width: 150,
|
|
||||||
render: `
|
|
||||||
<form x-data='{ isProd: {{ isProd }} }' phx-change='update_pack_struct_online:{{ id }}'>
|
|
||||||
<div class='flex justify-center'>
|
|
||||||
<div class='form-check form-switch'>
|
|
||||||
<label for='toogle_group_{{ id }}' class='flex items-center cursor-pointer'>
|
|
||||||
<input value='true' x-model='isProd' id='toogle_group_{{ id }}' name='toogle_pack_struct_{{ id }}' class='form-check-input appearance-none w-9 rounded-full float-left h-3 align-top bg-white bg-no-repeat bg-contain bg-gray-300 checked:bg-blue-500 focus:outline-none cursor-pointer shadow-sm' type='checkbox' role='switch' id='flexSwitchCheckDefault'>
|
|
||||||
</label>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
`
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Название",
|
|
||||||
field: "name",
|
|
||||||
width: 180
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Действия",
|
|
||||||
field: "actions",
|
|
||||||
width: 100,
|
|
||||||
render: `
|
|
||||||
<div class='flex gap-2 py-1'>
|
|
||||||
<button style='width: 25px; height: 25px;' class='italic border border-solid transition-all duration-300 rounded-full cursor-pointer hover:text-gray-500 linear-loader card-btn-action pt-[2px] text-primary' phx-click='select_struct:{{ id }}' >
|
|
||||||
<i class='ri-eye-fill'></i>
|
|
||||||
</button>
|
|
||||||
<button style='width: 25px; height: 25px;' class='italic border border-solid transition-all duration-300 rounded-full cursor-pointer hover:text-gray-500 linear-loader card-btn-action'>
|
|
||||||
<i class='ri-pencil-fill'></i>
|
|
||||||
</button>
|
|
||||||
<button style='width: 25px; height: 25px;' class='relative flex items-center justify-center italic border border-solid transition-all duration-300 rounded-full cursor-pointer hover:text-gray-500 linear-loader card-btn-action-red' x-data='{ open: false }' @click='open = !open'>
|
|
||||||
<div x-show='open' class='popup-text not-italic'>
|
|
||||||
<span>Вы точно хотите удалить структуру?</span>
|
|
||||||
<span class='flex gap-2'>
|
|
||||||
<span class='justify-center flex flex-grow bg-blue-500 hover:bg-blue-700 text-white rounded'>Да</span>
|
|
||||||
<span class='justify-center flex flex-grow bg-gray-500 hover:bg-gray-700 text-white rounded'>Отмена</span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<i class='ri-delete-bin-fill'></i>
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
`
|
|
||||||
}
|
|
||||||
]
|
|
||||||
case 'Сырые':
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
title: "Время пакета",
|
|
||||||
field: "pack_dt",
|
|
||||||
width: 180
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Архивная дата",
|
|
||||||
field: "arhiv_date",
|
|
||||||
width: 90
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Номер пакета",
|
|
||||||
field: "pack_number",
|
|
||||||
width: 70
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Длинна пакета",
|
|
||||||
field: "pack_len",
|
|
||||||
width: 70
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Репл",
|
|
||||||
field: "id_repl",
|
|
||||||
width: 70
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "IMEI",
|
|
||||||
field: "imei",
|
|
||||||
width: 120
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "ДАННЫЕ",
|
|
||||||
field: "data",
|
|
||||||
width: 600
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Дата начала передачи",
|
|
||||||
field: "connect_dt",
|
|
||||||
width: 180
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Дата завершения передачи",
|
|
||||||
field: "disconnect_dt",
|
|
||||||
width: 180
|
|
||||||
}
|
|
||||||
]
|
|
||||||
case 'Нераспознанные':
|
|
||||||
return [
|
|
||||||
{
|
|
||||||
title: "Время пакета",
|
|
||||||
field: "pack_dt",
|
|
||||||
width: 180
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Архивная дата",
|
|
||||||
field: "arhiv_date",
|
|
||||||
width: 90
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Номер пакета",
|
|
||||||
field: "pack_number",
|
|
||||||
width: 70
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Длинна пакета",
|
|
||||||
field: "pack_len",
|
|
||||||
width: 70
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Репл",
|
|
||||||
field: "id_repl",
|
|
||||||
width: 70
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "IMEI",
|
|
||||||
field: "imei",
|
|
||||||
width: 120
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "ДАННЫЕ",
|
|
||||||
field: "data",
|
|
||||||
width: 600
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Дата начала передачи",
|
|
||||||
field: "connect_dt",
|
|
||||||
width: 180
|
|
||||||
},
|
|
||||||
{
|
|
||||||
title: "Дата завершения передачи",
|
|
||||||
field: "disconnect_dt",
|
|
||||||
width: 180
|
|
||||||
}
|
|
||||||
]
|
|
||||||
default: return []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const prepareSetPackColumns = (name, data) => {
|
|
||||||
console.log('prepareSetPackColumns data', data);
|
|
||||||
console.log('prepareSetPackColumns name', name);
|
|
||||||
switch(name) {
|
|
||||||
case 'askr_logs':
|
|
||||||
if (data.length > 0) {
|
|
||||||
return data[0].map((el) => ({title: Object.keys(el)[0], field: Object.keys(el)[0], width: 150}))
|
|
||||||
}
|
|
||||||
if (data.length === 0) {
|
|
||||||
return []
|
|
||||||
}
|
|
||||||
case 'raw':
|
|
||||||
return setPackColumns('Сырые')
|
|
||||||
case 'unrecognized':
|
|
||||||
return setPackColumns('Нераспознанные')
|
|
||||||
default: return []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const normalizeCols = (cols) => {
|
|
||||||
console.log('normalizeCols - cols', cols)
|
|
||||||
const withoutCoordsPackDtCols = cols.filter((el) => el.field !== 'pack_dt' && el.field !== 'lat_lon')
|
|
||||||
const coordsField = {
|
|
||||||
title: "Координаты",
|
|
||||||
field: "lat_lon",
|
|
||||||
key: "coords",
|
|
||||||
render: `(_, rec) => {
|
|
||||||
if (!rec?.geo) return ""
|
|
||||||
const lat = rec?.geo?.coordinates[1]
|
|
||||||
const lon = rec?.geo?.coordinates[0]
|
|
||||||
return \`<div class="underline underline-offset-2 decoration-dashed cursor-pointer" phx-click="load_map" phx-value-lon="\${lat}" phx-value-lat="\${lon}">
|
|
||||||
\${lat ? +lat.toFixed(5) : lat} \${lon ? +lon.toFixed(5) : lon}
|
|
||||||
</div>\`
|
|
||||||
}`
|
|
||||||
}
|
|
||||||
const packDtField = {
|
|
||||||
title: "Дата формирования пакета",
|
|
||||||
field: "pack_dt",
|
|
||||||
key: "pack_dt",
|
|
||||||
render: `{{ dt_format (dt_shift pack_dt 3 'hour') }}`,
|
|
||||||
width: 130
|
|
||||||
}
|
|
||||||
return [packDtField, coordsField, ...withoutCoordsPackDtCols]
|
|
||||||
}
|
|
||||||
|
|
||||||
const parseCols = (packStructure, report) => {
|
|
||||||
if (!isEmpty(packStructure)) return normalizeCols(packStructure)
|
|
||||||
if (!packStructure && report && !isEmpty(report)) return prepareSetPackColumns('askr_logs', report.askr_logs)
|
|
||||||
if (!packStructure && !report) return []
|
|
||||||
}
|
|
||||||
|
|
||||||
const fetchColumn = (packStructure, report, id = null) => {
|
|
||||||
console.log('packStructure', packStructure)
|
|
||||||
console.log('id', id)
|
|
||||||
const getCurrentPackColls = (packStructure, id) => {
|
|
||||||
const currentPackStructure = packStructure.find((el) => el.id === id)
|
|
||||||
console.log('currentPackStructure', currentPackStructure)
|
|
||||||
const currColumns = currentPackStructure.columns ? currentPackStructure.columns : []
|
|
||||||
return parseCols(currColumns, null)
|
|
||||||
}
|
|
||||||
return cond([
|
|
||||||
[(packStructure) => !packStructure === true, () => parseCols(null, report)],
|
|
||||||
[(packStructure) => (packStructure?.length >= 1) && (id && typeof id === 'number'), () => getCurrentPackColls(packStructure, id)],
|
|
||||||
[(packStructure) => packStructure?.length >= 1, () => parseCols(packStructure[0].columns, null)],
|
|
||||||
[T, () => parseCols(null, report)],
|
|
||||||
])(packStructure)
|
|
||||||
}
|
|
||||||
|
|
||||||
export {prepareSetPackColumns, setPackColumns, normalizeCols, parseCols, fetchColumn}
|
|
||||||
@ -1,58 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import {mapGetters, mapMutations, mapActions, useStore} from "vuex"
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'PackViewButton',
|
|
||||||
components: {
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
active: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
mode: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
name: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
inner: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
labelClass: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
idx: {
|
|
||||||
type: Number,
|
|
||||||
default: ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
...mapGetters('machines', ['selectedPackMode']),
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
...mapActions('machines', ['updateModePack']),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<template>
|
|
||||||
{{ console.log('selectedPackMode', selectedPackMode)
|
|
||||||
}}
|
|
||||||
<button @click="updateModePack(mode)" v-bind:key="idx" type="button" class="w-full">
|
|
||||||
<input name="switchTableMode" type="radio" :id="name" :value="name" :checked="active" class="hidden peer" required="">
|
|
||||||
<label :for="name" :class="labelClass" class="transition-all w-full border-slate-600 w-full block cursor-pointer py-1 text-ssm sm:text-sm hover:bg-slate-700 hover:text-white text-slate-600 border-slate-600
|
|
||||||
peer-checked:bg-slate-600 peer-checked:text-white">
|
|
||||||
{{ inner }}
|
|
||||||
</label>
|
|
||||||
</button>
|
|
||||||
</template>
|
|
||||||
@ -1,123 +0,0 @@
|
|||||||
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import {mapGetters, mapMutations, mapActions, useStore} from "vuex"
|
|
||||||
import PackViewButton from './Button.vue'
|
|
||||||
import Spinner from "@molecules/VSpinner/VSpinner.vue"
|
|
||||||
import Tabulator from "@molecules/VTabulator/VTabulator.vue"
|
|
||||||
import { isEmpty } from "ramda";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'PackView',
|
|
||||||
components: {
|
|
||||||
PackViewButton,
|
|
||||||
Spinner,
|
|
||||||
Tabulator
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
isLoader: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
},
|
|
||||||
id: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data () {
|
|
||||||
return {
|
|
||||||
hasData: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setup (props, {slots}) {
|
|
||||||
const hasDescription = slots.description != undefined
|
|
||||||
const hasError = slots.error != undefined
|
|
||||||
console.log('slots', slots)
|
|
||||||
return {
|
|
||||||
hasDescription,
|
|
||||||
hasError
|
|
||||||
}
|
|
||||||
},
|
|
||||||
updated () {
|
|
||||||
this.$nextTick(function () {
|
|
||||||
if (!isEmpty(this.packData)) {
|
|
||||||
this.hasData = true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
...mapGetters('machines', ['packData', 'selectPackStructs', 'selectedPackStruct']),
|
|
||||||
buttonsData: () =>
|
|
||||||
([
|
|
||||||
{mode: 'askr_logs', isActive: true, name: 'switch_askr_logs', inner: 'обработанные', labelClass: 'rounded-l-lg border'},
|
|
||||||
{mode: 'raw', isActive: false, name: 'switch_raw', inner: 'сырые', labelClass: 'border-y'},
|
|
||||||
{mode: 'unrecognized', isActive: false, name: 'switch_unrecognized', inner: 'нераспознанные', labelClass: 'rounded-r-lg border'},
|
|
||||||
])
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
...mapActions('machines', ['updateSelectStruct']),
|
|
||||||
updateSelectedValue: function (e) {
|
|
||||||
console.log('e', e.target.value)
|
|
||||||
this.updateSelectStruct(Number(e.target.value))
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="w-full relative">
|
|
||||||
{{
|
|
||||||
console.log('packData', packData)
|
|
||||||
}}
|
|
||||||
<div v-if="!hasData" class="w-full h-[50px] rounded-xl bg-slate-200 hidden" :id="`${id}_loader`">
|
|
||||||
<Spinner/>
|
|
||||||
</div>
|
|
||||||
<div v-if="hasData" :id="id" class="w-full rounded-md bg-light border-rounded p-4">
|
|
||||||
<div class="grid grid-cols-12 mb-6">
|
|
||||||
<div class="flex flex-col gap-1 col-span-12 sm:col-span-4 md:col-span-5 lg:col-span-5 2xl:col-span-7 sm:mb-0">
|
|
||||||
<h2 :id="`${id}_pack_name`" class=" text-lg">Пакет: <span v-if="selectPackStructs" >{{selectPackStructs[0]?.packNumber}}</span></h2>
|
|
||||||
<div v-if="hasDescription" class="text-xs text-slate-500">
|
|
||||||
<slot name="description" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<!-- <form phx-change="c_packs_mode:on_click" :id="`${id}_table_active`" class="col-span-12 sm:col-span-8 md:col-span-7 lg:col-span-7 2xl:col-span-5 flex justify-center hidden"> -->
|
|
||||||
<div class="col-span-12 sm:col-span-8 md:col-span-7 lg:col-span-7 2xl:col-span-5 flex justify-center">
|
|
||||||
<PackViewButton v-for="(button, idx) in buttonsData"
|
|
||||||
:idx="idx"
|
|
||||||
:mode="button.mode"
|
|
||||||
:name="button.name"
|
|
||||||
:active="button.isActive"
|
|
||||||
:inner="button.inner"
|
|
||||||
:labelClass="button.labelClass"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<!-- </form> -->
|
|
||||||
</div>
|
|
||||||
<div class="relative" :id="id">
|
|
||||||
<div id="selectStructContainer" class="flex gap-2 items-center mb-2">
|
|
||||||
<span>Выберите структуру:</span>
|
|
||||||
<select v-if="selectPackStructs" id="selectStruct" name="struct" v-bind:value="selectedPackStruct.id" v-on:change="updateSelectedValue" class=" w-fit bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block py-1 pl-2 dark:bg-gray-700 dark:border-gray-600 dark:placeholder-gray-400 dark:text-white dark:focus:ring-blue-500 dark:focus:border-blue-500" style="--tw-ring-color:focus: none" >
|
|
||||||
<option :key={idx} v-for="(el, idx) in selectPackStructs" :value="el.id">
|
|
||||||
{{ el.name }}
|
|
||||||
</option>
|
|
||||||
</select>
|
|
||||||
</div>
|
|
||||||
<div :id="`${id}_report`" class="tab-pane active bg-light relative shadow text-center min-h-[300px] relative rounded-md w-full relative">
|
|
||||||
<Tabulator v-bind="packData" />
|
|
||||||
<div v-if="isLoader" class="w-full h-[50px] rounded-xl bg-slate-200 hidden" :id="`${id}_loader`">
|
|
||||||
<Spinner/>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div v-if="hasError" :id="`${id}_error`" class="w-full rounded-md bg-light border-rounded p-4 flex flex-col gap-5 items-center justify-center hidden">
|
|
||||||
<slot name="error" />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
</style>
|
|
||||||
@ -1,77 +0,0 @@
|
|||||||
<script>
|
|
||||||
import MenuList from './MenuList.vue'
|
|
||||||
import MobileMenu from './MobileMenu.vue'
|
|
||||||
import LeftPanel from './AppContainerLeftPanel.vue'
|
|
||||||
import Breadcrumbs from './AppContainerBreadcrumbs.vue'
|
|
||||||
import RightPanel from './RightPanel.vue'
|
|
||||||
import AppContainerHeader from './AppContainerHeader.vue'
|
|
||||||
import {mapGetters} from 'vuex'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'AppContainer',
|
|
||||||
components: {
|
|
||||||
MobileMenu,
|
|
||||||
MenuList,
|
|
||||||
LeftPanel,
|
|
||||||
Breadcrumbs,
|
|
||||||
RightPanel,
|
|
||||||
AppContainerHeader
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
...mapGetters('layout', ["show_menu", 'is_enabled_menu']),
|
|
||||||
...mapGetters('auth', ['menuList']),
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="main w-full">
|
|
||||||
<!-- BEGIN: TOP BAR -->
|
|
||||||
<div
|
|
||||||
id="menu"
|
|
||||||
class="top-bar-boxed w-full h-[59px] mt-[4px] z-[51] relative justify-center border-b border-white/[0.2] -mx-3 px-3 sm:pl-8 md:pt-0 mb-[4px]"
|
|
||||||
>
|
|
||||||
<MobileMenu
|
|
||||||
v-if="false"
|
|
||||||
current_menu_item=""
|
|
||||||
current_user=""
|
|
||||||
:menu_list="menuList"
|
|
||||||
/>
|
|
||||||
<AppContainerHeader>
|
|
||||||
<div class="flex justify-between items-center">
|
|
||||||
<LeftPanel />
|
|
||||||
<Breadcrumbs
|
|
||||||
v-if="false"
|
|
||||||
:breadcrumbs="[]"
|
|
||||||
/>
|
|
||||||
<RightPanel
|
|
||||||
:current_user="''"
|
|
||||||
:page_title="''"
|
|
||||||
:notifications="[{from: 'Бот из LM', datetime: '10:00', message: 'Проведен редизайн приложения', readed: false}]"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="sm:hidden flex items-center justify-between" />
|
|
||||||
</AppContainerHeader>
|
|
||||||
</div>
|
|
||||||
<!-- END: TOP BAR -->
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="wrapper-box">
|
|
||||||
<div v-if="show_menu && is_enabled_menu">
|
|
||||||
<MenuList
|
|
||||||
:menu_list="menuList"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<div class="content">
|
|
||||||
<div class="grid grid-cols-12 gap-6 h-full">
|
|
||||||
<slot />
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
@ -1,47 +0,0 @@
|
|||||||
<script>
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'BreadCrumbs',
|
|
||||||
components: {},
|
|
||||||
props: {
|
|
||||||
breadcrumbs: {
|
|
||||||
type: Array,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
rkey() {
|
|
||||||
return Math.random().toString(36).slice(4)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<!-- BEGIN: Breadcrumb -->
|
|
||||||
<nav
|
|
||||||
v-if="breadcrumbs"
|
|
||||||
aria-label="breadcrumb"
|
|
||||||
class="-intro-x h-[45px] mr-auto"
|
|
||||||
>
|
|
||||||
<ol class="breadcrumb breadcrumb-light">
|
|
||||||
<li
|
|
||||||
v-for="{name, link, active} in breadcrumbs"
|
|
||||||
:key="rkey(name)"
|
|
||||||
:class="{'breadcrumb-item active': active, 'breadcrumb-item': !active}"
|
|
||||||
aria-current="page"
|
|
||||||
>
|
|
||||||
<a
|
|
||||||
:href="link"
|
|
||||||
>{{ name }}</a>
|
|
||||||
</li>
|
|
||||||
</ol>
|
|
||||||
</nav>
|
|
||||||
<!-- END: Breadcrumb -->
|
|
||||||
<div class="flex grow w-full border-hide-600" />
|
|
||||||
</template>
|
|
||||||
@ -1,21 +0,0 @@
|
|||||||
<script>
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: "AppContainerHeader",
|
|
||||||
props: {
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {}
|
|
||||||
},
|
|
||||||
computed: {},
|
|
||||||
methods: {}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="w-full">
|
|
||||||
<slot />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
@ -1,43 +0,0 @@
|
|||||||
<script>
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'AppContainerLeftPanel',
|
|
||||||
components: {},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
mobile_menu_opened: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<div class="flex items-center border-white/[0.2] border-r">
|
|
||||||
<div
|
|
||||||
class="flex p-4 cursor-pointer flex md:hidden"
|
|
||||||
@click="mobile_menu_opened = !mobile_menu_opened"
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
icon="bar-chart-2"
|
|
||||||
class="w-6 h-6 text-white transform rotate-90"
|
|
||||||
/>
|
|
||||||
</div>
|
|
||||||
<router-link
|
|
||||||
class="items-center relative -intro-x flex cursor-pointer p-4 hidden md:flex"
|
|
||||||
to="/?page=machines&mode=cards"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="text-white mx-4"
|
|
||||||
style="font-weight: 600;"
|
|
||||||
>
|
|
||||||
LiveMonitor
|
|
||||||
</div>
|
|
||||||
</router-link>
|
|
||||||
<div class="w-[15px]" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
@ -1,119 +0,0 @@
|
|||||||
<!-- eslint-disable vue/prop-name-casing -->
|
|
||||||
<script>
|
|
||||||
import { cond, equals, T, always } from 'ramda'
|
|
||||||
import { createIcons, icons } from "lucide";
|
|
||||||
import MenuItemGroup from './MenuItemGroup.vue'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'MenuItem',
|
|
||||||
components: {MenuItemGroup},
|
|
||||||
props: {
|
|
||||||
type: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
menu_item: {
|
|
||||||
type: Object,
|
|
||||||
default: () => ({
|
|
||||||
link: "/"
|
|
||||||
})
|
|
||||||
},
|
|
||||||
base_class: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
routeName: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
_base_class() {
|
|
||||||
return `${this.base_class}`
|
|
||||||
},
|
|
||||||
activeClass () {
|
|
||||||
return 'side-menu side-menu--active'
|
|
||||||
},
|
|
||||||
menuRouterName() {
|
|
||||||
return this.menu_item.router || ""
|
|
||||||
},
|
|
||||||
currentRouterName() {
|
|
||||||
return this.$router.currentRoute._value.name || ""
|
|
||||||
},
|
|
||||||
linkClass() {
|
|
||||||
const menuRouterName = this.menu_item.router || ""
|
|
||||||
if (menuRouterName === this.routeName)
|
|
||||||
return `${this._base_class} ${this._base_class}--active`
|
|
||||||
return this._base_class
|
|
||||||
},
|
|
||||||
_type() {
|
|
||||||
return cond([
|
|
||||||
[equals("simple_link"), (x) => x],
|
|
||||||
[equals("line"), (x) => x],
|
|
||||||
[equals("group"), (x) => x],
|
|
||||||
[T, () => "other"],
|
|
||||||
])(this.type)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.icons()
|
|
||||||
},
|
|
||||||
updated() {
|
|
||||||
console.log(123)
|
|
||||||
|
|
||||||
this.icons()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
icons() {
|
|
||||||
createIcons({ icons, "stroke-width": 1.5, nameAttr: "icon" })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<li v-if="_type == 'simple_link'">
|
|
||||||
<router-link
|
|
||||||
phx-hook="MenuLink"
|
|
||||||
:class="linkClass"
|
|
||||||
:to="menu_item.link"
|
|
||||||
>
|
|
||||||
<div :class="`${_base_class}__icon`">
|
|
||||||
<i :icon="menu_item?.icon" />
|
|
||||||
</div>
|
|
||||||
<div :class="`${_base_class}__title`">
|
|
||||||
{{ menu_item.show }}
|
|
||||||
</div>
|
|
||||||
</router-link>
|
|
||||||
</li>
|
|
||||||
<li v-if="_type == 'line'">
|
|
||||||
<hr class="m-4">
|
|
||||||
</li>
|
|
||||||
<MenuItemGroup
|
|
||||||
v-if="_type == 'group'"
|
|
||||||
:type="_type"
|
|
||||||
:base_class="base_class"
|
|
||||||
:menu_item="menu_item"
|
|
||||||
/>
|
|
||||||
<div v-if="_type == 'other'">
|
|
||||||
""
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
|
|
||||||
<!-- <router-link
|
|
||||||
v-if="type === 'link'"
|
|
||||||
class="flex p-2 rounded-md hover:bg-gray-100 flex items-center"
|
|
||||||
:class="{'bg-gray-200': pageName === name}"
|
|
||||||
:to="link"
|
|
||||||
>
|
|
||||||
<i :class="`ri-${icon} text-slate-600 mr-2 `" />
|
|
||||||
<span
|
|
||||||
v-if="isOpenMenu"
|
|
||||||
class="text-slate-700"
|
|
||||||
>{{ title }}</span>
|
|
||||||
</router-link> -->
|
|
||||||
@ -1,93 +0,0 @@
|
|||||||
<!-- eslint-disable vue/prop-name-casing -->
|
|
||||||
<script>
|
|
||||||
import { cond, equals, T } from 'ramda'
|
|
||||||
import { createIcons, icons } from "lucide";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'MenuItemCopy',
|
|
||||||
components: {},
|
|
||||||
props: {
|
|
||||||
type: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
menu_item: {
|
|
||||||
type: Object,
|
|
||||||
default: () => ({
|
|
||||||
link: "/"
|
|
||||||
})
|
|
||||||
},
|
|
||||||
base_class: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
_base_class() {
|
|
||||||
return `${this.base_class}`
|
|
||||||
},
|
|
||||||
activeClass () {
|
|
||||||
return 'side-menu side-menu--active'
|
|
||||||
},
|
|
||||||
menuRouterName() {
|
|
||||||
return this.menu_item.router || ""
|
|
||||||
},
|
|
||||||
currentRouterName() {
|
|
||||||
return this.$router.currentRoute._value.name || ""
|
|
||||||
},
|
|
||||||
linkClass() {
|
|
||||||
const menuRouterName = this.menu_item.router || ""
|
|
||||||
const currentRouterName = this.$router.currentRoute._value.name || Math.random()
|
|
||||||
if (menuRouterName === currentRouterName)
|
|
||||||
return `${this._base_class} ${this._base_class}--active`
|
|
||||||
return this._base_class
|
|
||||||
},
|
|
||||||
_type() {
|
|
||||||
return cond([
|
|
||||||
[equals("simple_link"), (x) => x],
|
|
||||||
[equals("line"), (x) => x],
|
|
||||||
[equals("group"), (x) => x],
|
|
||||||
[T, () => "other"],
|
|
||||||
])(this.type)
|
|
||||||
}
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.icons()
|
|
||||||
},
|
|
||||||
updated() {
|
|
||||||
this.icons()
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
icons() {
|
|
||||||
createIcons({ icons, "stroke-width": 1.5, nameAttr: "icon" })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<li v-if="_type == 'simple_link'">
|
|
||||||
<router-link
|
|
||||||
phx-hook="MenuLink"
|
|
||||||
:class="linkClass"
|
|
||||||
:to="menu_item.link"
|
|
||||||
>
|
|
||||||
<div :class="`${_base_class}__icon`">
|
|
||||||
<i :icon="menu_item?.icon" />
|
|
||||||
</div>
|
|
||||||
<div :class="`${_base_class}__title`">
|
|
||||||
{{ menu_item.show }}
|
|
||||||
</div>
|
|
||||||
</router-link>
|
|
||||||
</li>
|
|
||||||
<li v-if="_type == 'line'">
|
|
||||||
<hr class="m-4">
|
|
||||||
</li>
|
|
||||||
<div v-if="_type == 'other'">
|
|
||||||
""
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
@ -1,80 +0,0 @@
|
|||||||
<!-- eslint-disable vue/prop-name-casing -->
|
|
||||||
<script>
|
|
||||||
import MenuItem from './MenuItemCopy.vue'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'MenuItemGroup',
|
|
||||||
components: {
|
|
||||||
MenuItem
|
|
||||||
},
|
|
||||||
props: {
|
|
||||||
type: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
base_class: {
|
|
||||||
type: String,
|
|
||||||
default: null
|
|
||||||
},
|
|
||||||
menu_item: {
|
|
||||||
type: Object,
|
|
||||||
default: () => ({})
|
|
||||||
},
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
open: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
containerClass() {
|
|
||||||
const menuRouterName = this.menu_item.router || ""
|
|
||||||
const currentRouterName = this.$router.currentRoute._value.name || Math.random()
|
|
||||||
if (menuRouterName === currentRouterName) return `${this.base_class} ${this.base_class}--active`
|
|
||||||
return `${this.base_class}`
|
|
||||||
},
|
|
||||||
itemClass() {
|
|
||||||
if (this.open) return `${this.base_class}__sub-icon transform rotate-180`
|
|
||||||
return `${this.base_class}__sub-icon`
|
|
||||||
},
|
|
||||||
listClass() {
|
|
||||||
if (this.open) return `${this.base_class}__sub-open`
|
|
||||||
return ""
|
|
||||||
},
|
|
||||||
menu_list_with_index() {
|
|
||||||
return this.menu_item.children.map((el, index) => ({...el, index}))
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
toggle() {
|
|
||||||
this.open = !this.open
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<li>
|
|
||||||
<span
|
|
||||||
:class="containerClass"
|
|
||||||
@click="toggle"
|
|
||||||
>
|
|
||||||
<div :class="`${base_class}__icon`"> <i :icon="menu_item.icon" /> </div>
|
|
||||||
<div :class="`${base_class}__title`">
|
|
||||||
{{ menu_item.show }}
|
|
||||||
<div :class="itemClass"> <i icon="chevron-down" /> </div>
|
|
||||||
</div>
|
|
||||||
</span>
|
|
||||||
<ul :class="listClass">
|
|
||||||
<MenuItem
|
|
||||||
v-for="item in menu_item.children"
|
|
||||||
:key="JSON.stringify(item)"
|
|
||||||
:base_class="base_class"
|
|
||||||
:type="item.type"
|
|
||||||
:menu_item="item"
|
|
||||||
/>
|
|
||||||
</ul>
|
|
||||||
</li>
|
|
||||||
</template>
|
|
||||||
@ -1,63 +0,0 @@
|
|||||||
<!-- eslint-disable vue/prop-name-casing -->
|
|
||||||
<script>
|
|
||||||
import {mapGetters} from 'vuex'
|
|
||||||
import MenuItem from './MenuItem.vue'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'MenuList',
|
|
||||||
components: {MenuItem},
|
|
||||||
props: {
|
|
||||||
current_menu_item: {
|
|
||||||
type: String,
|
|
||||||
default: ""
|
|
||||||
},
|
|
||||||
menu_list: {
|
|
||||||
type: Array,
|
|
||||||
default: () => []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
routeName: ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
...mapGetters('', ['mobile_menu_opened', 'show_menu']),
|
|
||||||
menu_list_with_index() {
|
|
||||||
return this.menu_list.map((el, index) => ({...el, index}))
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch:{
|
|
||||||
$route (to){
|
|
||||||
this.routeName = to.name;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
rkey() {
|
|
||||||
return Math.random().toString(36).slice(4)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<nav
|
|
||||||
x-show="show_menu"
|
|
||||||
class="side-nav"
|
|
||||||
>
|
|
||||||
<ul>
|
|
||||||
<MenuItem
|
|
||||||
v-for="{index, ...menu_item} in menu_list_with_index"
|
|
||||||
:id="`main_menu_item_component_${index}`"
|
|
||||||
:key="rkey(index)"
|
|
||||||
base_class="side-menu"
|
|
||||||
:type="menu_item.type"
|
|
||||||
:menu_item="menu_item"
|
|
||||||
:current_menu_item="current_menu_item"
|
|
||||||
:routeName="routeName"
|
|
||||||
/>
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
</template>
|
|
||||||