feat(feat(init): serviceOfMachines):
This commit is contained in:
parent
6eb9973b61
commit
f6ca446f92
@ -1,12 +1,19 @@
|
||||
HOOK_NAME=pre-push
|
||||
HOOK_PATH=.git/hooks/$(HOOK_NAME)
|
||||
HOOK_PATH=../.git/hooks/$(HOOK_NAME)
|
||||
|
||||
pre_hook:
|
||||
prehook:
|
||||
@echo "Setting up pre-push hook..."
|
||||
@rm -f $(HOOK_PATH)
|
||||
@echo '#!/bin/sh' >> $(HOOK_PATH)
|
||||
@echo 'echo "Running tests..."' >> $(HOOK_PATH)
|
||||
@echo 'go test ./...' >> $(HOOK_PATH)
|
||||
@echo 'echo "Running lint for proxy-ui-app"' >> $(HOOK_PATH)
|
||||
@echo 'cd ./proxy-ui-app' >> $(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 proxy-ui"' >> $(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)
|
||||
@ -14,3 +21,10 @@ pre_hook:
|
||||
@echo 'exit 0' >> $(HOOK_PATH)
|
||||
@chmod +x $(HOOK_PATH)
|
||||
@echo "Pre-push hook set successfully."
|
||||
|
||||
push:
|
||||
ifeq ($(commit),)
|
||||
$(error mn is not set)
|
||||
endif
|
||||
make prehook
|
||||
git add . && git commit -m "feat($(commit)):" && git push
|
||||
|
||||
@ -16,12 +16,14 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"1-toolkits-helpers": "../repo/1-toolkits-helpers/",
|
||||
"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",
|
||||
@ -38,6 +40,7 @@
|
||||
"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",
|
||||
@ -46,6 +49,7 @@
|
||||
"postcss-apply": "^0.12.0",
|
||||
"postcss-nesting": "^12.0.2",
|
||||
"tailwindcss": "^3.3.6",
|
||||
"vite": "^5.0.8"
|
||||
"vite": "^5.0.8",
|
||||
"vitest": "^1.4.0"
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,38 @@
|
||||
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
|
||||
@ -57,11 +57,11 @@ export default {
|
||||
const urlParams = path.value === '/' && query?.value?.mode ? query.value.mode : ''
|
||||
const externalParams = {historyData: updatedData, urlParams: urlParams}
|
||||
|
||||
store.commit('machines/setHistoryData', updatedData)
|
||||
store.dispatch('machines/uploadData', externalParams)
|
||||
store.commit('layoutMachines/setHistoryData', updatedData)
|
||||
store.dispatch('layoutMachines/uploadData', externalParams)
|
||||
},
|
||||
computed: {
|
||||
...mapGetters('machines', ['searchModes', 'searchValue', 'selectedSearchMode', 'leftTopButtons', 'rightTopButtons', 'selectedMode', 'toggleFilter', 'activeFilterBtn', 'mapData', 'machinesData']),
|
||||
...mapGetters('layoutMachines', ['searchModes', 'searchValue', 'selectedSearchMode', 'leftTopButtons', 'rightTopButtons', 'selectedMode', 'toggleFilter', 'activeFilterBtn', 'mapData', 'machinesData']),
|
||||
...mapGetters('layout', ['isOpenMenu']),
|
||||
},
|
||||
mounted () {
|
||||
@ -81,7 +81,7 @@ export default {
|
||||
},
|
||||
unmounted() {
|
||||
const store = useStore();
|
||||
store.dispatch('machines/resetStore')
|
||||
store.dispatch('layoutMachines/resetStore')
|
||||
},
|
||||
watch: {
|
||||
isSuccessSearch: {
|
||||
@ -92,8 +92,8 @@ export default {
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
...mapMutations('machines', ['setSearchMode', 'setSelectedMode', 'setToggleFilter', 'setActiveFilterBtn']),
|
||||
...mapActions('machines', ['updateSearch', 'clearFilters']),
|
||||
...mapMutations('layoutMachines', ['setSearchMode', 'setSelectedMode', 'setToggleFilter', 'setActiveFilterBtn']),
|
||||
...mapActions('layoutMachines', ['updateSearch', 'clearFilters']),
|
||||
updateSearchMode: function(selectedSearchMode) {
|
||||
this.setSearchMode(selectedSearchMode)
|
||||
},
|
||||
|
||||
@ -69,9 +69,6 @@ export default {
|
||||
|
||||
<template>
|
||||
<div class="col-span-12">
|
||||
<div class="hidden" id="ignore:21QxOfq">
|
||||
{{ console.log('selectedPage', selectedPage) }}
|
||||
</div>
|
||||
<div class="p-2 sm:px-5 pt-1 bg-light rounded-t-xl">
|
||||
<div class="relative">
|
||||
<div class="flex gap-3 sm:gap-7 w-full lg:w-[50%]">
|
||||
|
||||
54
live_monitor_vue/src/helpers/apiHelpers.js
Normal file
54
live_monitor_vue/src/helpers/apiHelpers.js
Normal file
@ -0,0 +1,54 @@
|
||||
import axios from "axios";
|
||||
|
||||
const post = async (path, data, onError) => {
|
||||
return axios.post(`${path}`, data)
|
||||
.then(r => r.data)
|
||||
.catch(error => {
|
||||
onError && onError(error)
|
||||
console.error('Error post request:', error)
|
||||
})
|
||||
}
|
||||
|
||||
const get = async (path) => {
|
||||
return axios.get(`${path}`)
|
||||
.then(r => r.data)
|
||||
.catch(error => {
|
||||
console.error('Error post request:', error)
|
||||
})
|
||||
}
|
||||
|
||||
const put = async (path, data, onError) => {
|
||||
return axios.put(`${path}`, data)
|
||||
.then(r => r.data)
|
||||
.catch(error => {
|
||||
onError && onError(error)
|
||||
console.error('Error put request:', error)
|
||||
})
|
||||
}
|
||||
|
||||
const remove = async (path, onError) => {
|
||||
return axios.delete(`${path}`)
|
||||
.then(r => r.data)
|
||||
.catch(error => {
|
||||
onError && onError(error)
|
||||
console.error('Error delete request:', error)
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Function for request to scand api
|
||||
* @param {String} module
|
||||
* @param {String} functionName
|
||||
* @param {Array} params
|
||||
* @param {String | undefined} onError
|
||||
* @returns {Promise<Promise<unknown | void | Array | Object> | *>}
|
||||
*/
|
||||
const scandApiRequest = async (module, functionName, params, onError= undefined) => {
|
||||
return post('http://0.0.0.0:9999/scand/api/get_data', {
|
||||
module,
|
||||
function: functionName,
|
||||
params
|
||||
}, onError)
|
||||
}
|
||||
|
||||
export {get, post, put, remove, scandApiRequest}
|
||||
@ -9,7 +9,7 @@ import "./helpers/dropdown.js"
|
||||
|
||||
|
||||
createApp(App)
|
||||
.use(Router)
|
||||
.use(ramdaVue)
|
||||
.use(store)
|
||||
.mount('#app')
|
||||
.use(Router)
|
||||
.use(ramdaVue)
|
||||
.use(store)
|
||||
.mount('#app')
|
||||
|
||||
24
live_monitor_vue/src/services/ServiceOfMachines.js
Normal file
24
live_monitor_vue/src/services/ServiceOfMachines.js
Normal file
@ -0,0 +1,24 @@
|
||||
|
||||
class ServiceOfMachines {
|
||||
constructor(adapter, store) {
|
||||
this.adapter = adapter
|
||||
this.store = store
|
||||
}
|
||||
|
||||
async fetchModalMachines() {
|
||||
return await this.adapter.getModalMachines()
|
||||
}
|
||||
|
||||
async putModalMachines(machines) {
|
||||
const result = await this.store.dispatch('machines/saveModalMachines', machines)
|
||||
return result
|
||||
}
|
||||
|
||||
async makeFetchAndPutModalMachines() {
|
||||
const machines = await this.fetchModalMachines()
|
||||
await this.putModalMachines(machines)
|
||||
return machines
|
||||
}
|
||||
}
|
||||
|
||||
export default ServiceOfMachines
|
||||
@ -1,6 +1,7 @@
|
||||
import { createStore, createLogger } from 'vuex';
|
||||
import { store as main } from '@/store/modules/main';
|
||||
import { store as machines } from '@/store/modules/machines';
|
||||
import { store as layoutMachines } from '@/store/modules/machines';
|
||||
import { store as finder_packs } from '@/store/modules/finder_packs';
|
||||
import { store as add_users } from '@/store/modules/add_users';
|
||||
import { store as layout } from '@/store/modules/layout';
|
||||
@ -21,6 +22,7 @@ export const store = createStore({
|
||||
plugins,
|
||||
modules: {
|
||||
main,
|
||||
layoutMachines,
|
||||
machines,
|
||||
finder_packs,
|
||||
add_users,
|
||||
@ -35,5 +37,5 @@ export const store = createStore({
|
||||
});
|
||||
|
||||
export function useStore() {
|
||||
return store;
|
||||
return store;
|
||||
}
|
||||
|
||||
2854
live_monitor_vue/src/store/modules/layoutMachines/StaticData.js
Normal file
2854
live_monitor_vue/src/store/modules/layoutMachines/StaticData.js
Normal file
File diff suppressed because it is too large
Load Diff
120
live_monitor_vue/src/store/modules/layoutMachines/helpers.js
Normal file
120
live_monitor_vue/src/store/modules/layoutMachines/helpers.js
Normal file
@ -0,0 +1,120 @@
|
||||
import {isEmpty, uniq} from 'ramda'
|
||||
import {pagination, searchModes} from './StaticData'
|
||||
|
||||
const prepareSelects = (selects, selectors) => {
|
||||
const updatedSelects = selects.reduce((acc, el) => {
|
||||
if (selectors[el.key]) {
|
||||
const newEl = {...el, data: selectors[el.key]}
|
||||
acc = [...acc, newEl]
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
}, [])
|
||||
// console.log('updSelects', updatedSelects)
|
||||
|
||||
const filteredSelects = updatedSelects.map((el) => ({...el, data: el.data.reduce((acc, select) => {
|
||||
if (select) {
|
||||
const newSelect = {name: select}
|
||||
acc = [...acc, newSelect]
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
}, [])
|
||||
})).sort((a, b) => a.order - b.order)
|
||||
// console.log('filteredSelects', filteredSelects)
|
||||
return filteredSelects
|
||||
}
|
||||
|
||||
const mergedMachines = (machinesData, historyData) => {
|
||||
const orderHistoryData = historyData.map((el, idx) => ({...el, order: idx}))
|
||||
const historyMachinesIds = orderHistoryData.filter((el, idx, arr) => arr.findIndex((item) => item.machine_id === el.machine_id) === idx).map((el) => el.machine_id)
|
||||
const historyMachines = Array.from(machinesData).filter((el) => historyMachinesIds.find((id) => id === el.machine_id)).sort((a, b) => a.order - b.order)
|
||||
const countHistoryNachines = historyMachines.length > 0 ? historyMachines.slice(0, 20).length : 0
|
||||
const currentMachines = machinesData.slice(0, 20 - countHistoryNachines)
|
||||
return [...historyMachines.slice(0, 20), ...currentMachines]
|
||||
}
|
||||
|
||||
const colorSelection = (key, value) => {
|
||||
if(key) {
|
||||
const machinesContainer = document.querySelector('#listMachines')
|
||||
const allSearchField = machinesContainer ? machinesContainer.querySelectorAll('[search-mode]') : null
|
||||
if (allSearchField) {
|
||||
allSearchField.forEach((el) => {
|
||||
el.style = ''
|
||||
})
|
||||
}
|
||||
if (value) {
|
||||
const searchField = machinesContainer ? machinesContainer.querySelectorAll(`[search-mode=${key}]`) : null
|
||||
if (searchField) {
|
||||
searchField.forEach((el) => {
|
||||
el.style.width = "fit-content"
|
||||
el.style.padding = "2px"
|
||||
// el.style.color = "#FFF"
|
||||
el.style.borderRadius = "3px"
|
||||
el.style.backgroundColor = "rgb(1 97 253 / 30%)"
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const findMachine = (machine, filters) => {
|
||||
const isArr = filters && Array.isArray(filters)
|
||||
if (isArr) {
|
||||
const filteredMachine = filters.filter((filter) => {
|
||||
if (machine === filter) {
|
||||
return machine
|
||||
}
|
||||
})
|
||||
return filteredMachine.length > 0 ? true : false
|
||||
}
|
||||
if (!isArr) {
|
||||
if (`${machine}`.includes(filters)) { // Для поиска неточное совпадение
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
const setUpdatedDataMachines = (machines, params) => {
|
||||
const filters = params.filter
|
||||
if(!isEmpty(filters)) {
|
||||
const searchModeKeys = searchModes.map((el) => el.key)
|
||||
const searchData = filters.find((filter) => (searchModeKeys.includes(Object.entries(filter)[0][0])))
|
||||
const currentFilters = searchData ? [searchData] : filters
|
||||
const filteredMachines = machines.filter((machine) => {
|
||||
return currentFilters.find((filter) => {
|
||||
const entries = Object.entries(filter)
|
||||
if (!isEmpty(entries) && machine[entries[0][0]] && findMachine(machine[entries[0][0]], entries[0][1])) {
|
||||
return machine
|
||||
}
|
||||
})
|
||||
})
|
||||
// console.log('filteredMachines', filteredMachines)
|
||||
return filteredMachines
|
||||
}
|
||||
return machines
|
||||
}
|
||||
|
||||
const loadingPagination = (machines, pagination) => {
|
||||
pagination.paginationOptions.total = machines.length
|
||||
pagination.paginationOptions.total_pages = Math.ceil(pagination.paginationOptions.total / pagination.paginationOptions.page_size)
|
||||
return machines.slice(0, pagination.paginationOptions.page_size)
|
||||
}
|
||||
|
||||
const setPagination = (machines, pagination, updatedData) => {
|
||||
const pageNumber = Number(updatedData.pageNumber)
|
||||
const pageSize = Number(updatedData.pageSize)
|
||||
pagination.paginationOptions.total_pages = Math.ceil(pagination.paginationOptions.total / pageSize)
|
||||
const updatedPaginationOptions = {...pagination.paginationOptions, page_number: pageNumber, page_size: pageSize}
|
||||
const updatedPagination = {...pagination, paginationOptions: updatedPaginationOptions}
|
||||
const beginPageDataIdx = pageSize === 1 ? 0 : (pageNumber - 1) * pageSize
|
||||
const endPageDataIdx = beginPageDataIdx + pageSize
|
||||
const isEndPageDataIdxMore = endPageDataIdx > machines.length
|
||||
const currentTableData = isEndPageDataIdxMore ? machines.slice(beginPageDataIdx) : machines.slice(beginPageDataIdx, endPageDataIdx)
|
||||
return {currentTableData, updatedPagination}
|
||||
}
|
||||
|
||||
export { prepareSelects, mergedMachines, colorSelection, setUpdatedDataMachines, loadingPagination, setPagination }
|
||||
@ -0,0 +1,431 @@
|
||||
import { chartsFilterParams, chartsGroupByParams, chartsGroupByParams2, chartsFilterKeysMl, chartsMountParams, chartsBarTypesParams, chartsBarTypesGroupByParams, chartsBarTypesWithoutLayoutParams } from "./StaticData"
|
||||
import {cond, uniq, has, T} from 'ramda'
|
||||
|
||||
const setPeriodCharts = (filterKeys) => {
|
||||
if (typeof filterKeys === 'array') return {period: 'dayly', title: '24 часа'}
|
||||
switch(filterKeys) {
|
||||
case 'commun': return {period: 'yearly', title: "год"}
|
||||
case 'rors': return {period: 'dayly', title: "на данный момент"}
|
||||
case 'routes': return {period: 'weekly', title: "две недели"}
|
||||
default: return {period: 'dayly', title: "на данный момент"}
|
||||
}
|
||||
}
|
||||
|
||||
const setNamesMl = (filterKey) => {
|
||||
if (!filterKey) return null
|
||||
switch(filterKey) {
|
||||
case 'routes_common': return 'Обычные'
|
||||
case 'routes_emergency': return 'Аварийные'
|
||||
case 'routes_other': return 'Прочие'
|
||||
case 'routes_repair': return 'Ремонтные'
|
||||
case 'routes_without_leaving': return 'Без выезда'
|
||||
case 'routes_without_ml': return 'СПС без МЛ'
|
||||
default: return ''
|
||||
}
|
||||
}
|
||||
|
||||
const setMachinesClass = (typeId) => {
|
||||
if (typeId) {
|
||||
switch(typeId) {
|
||||
case 'mpt_types': return 'МРТ'
|
||||
case 'gdsm_types': return 'ЖДСМ'
|
||||
case 'sm_pss_types': return 'СМ'
|
||||
default: return ''
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const setFilterValues = (machineValue, filterParams) => {
|
||||
if(filterParams.values.includes(machineValue.toLowerCase())) {
|
||||
return {name: machineValue}
|
||||
}
|
||||
}
|
||||
|
||||
const setCountMachinesMl = (arr, counter = 0) => {
|
||||
return arr.reduce((acc, item) => {
|
||||
if (item && item.length > 0) {
|
||||
return setCountMachinesMl(item, acc)
|
||||
} else {
|
||||
if (item.charts?.value) {
|
||||
acc = acc + item.charts?.value
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
}
|
||||
return acc
|
||||
}, counter)
|
||||
}
|
||||
|
||||
/* Charts updated data */
|
||||
|
||||
const chartsPie = (data, filterParams) => {
|
||||
// {list, _resp} = Agents.MachineList.get_machines(set_period_loading_charts(filterKey).period, params) apiHelpers
|
||||
|
||||
const countMachines = data?.length
|
||||
const machines = data.reduce((acc, machine) => {
|
||||
if (machine[filterParams.filterKey]) {
|
||||
acc.push(setFilterValues(machine[filterParams.filterKey], filterParams))
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
}, [])
|
||||
|
||||
// const isFilteredMachine = machines.find((el) => filterParams.values.includes(el.name.toLowerCase()))
|
||||
const groupByfiltered = machines.reduce((acc, machine) => {
|
||||
if (filterParams.values.includes(machine.name.toLowerCase())) {
|
||||
const count = machines.filter((el) => el.name === machine.name).length
|
||||
const filteredMachines = {name: machine.name, value: count}
|
||||
acc = uniq([...acc, filteredMachines])
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
}, [])
|
||||
return {countMachines: countMachines, period: setPeriodCharts(filterParams.filterKey).title, machines: groupByfiltered}
|
||||
}
|
||||
|
||||
const chartsPieGroupedBy = (data, groupByParams, filterParams) => {
|
||||
|
||||
const filteredGroupByParams = data.filter((machine) => machine[groupByParams.groupByKey] && machine[groupByParams.groupByKey].toLowerCase() === groupByParams.value)
|
||||
const countMachines = filteredGroupByParams?.length
|
||||
|
||||
const machines = filteredGroupByParams.reduce((acc, machine) => {
|
||||
|
||||
if (machine[filterParams.filterKey]) {
|
||||
acc.push(setFilterValues(machine[filterParams.filterKey], filterParams))
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
}, [])
|
||||
|
||||
const filteredMachines = machines.reduce((acc, machine) => {
|
||||
if (filterParams.values.includes(machine.name.toLowerCase())) {
|
||||
const count = machines.filter((el) => el.name === machine.name).length
|
||||
const filteredMachines = {name: machine.name, value: count}
|
||||
acc = uniq([...acc, filteredMachines])
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
}, [])
|
||||
return {countMachines: countMachines, period: setPeriodCharts(filterParams.filterKey).title, machines: filteredMachines}
|
||||
}
|
||||
|
||||
const chartsBarGroupedByMl = (data, filterKeysMl) => {
|
||||
|
||||
const machinesWithMl = filterKeysMl.map((filterKey) => {
|
||||
const filteredWithMl = data.reduce((acc, machine) => {
|
||||
if (machine[filterKey] === 0 || machine[filterKey]) {
|
||||
acc = [...acc, {[filterKey]: machine[filterKey]}]
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
}, [])
|
||||
const count = filteredWithMl.reduce((acc, machine) => {
|
||||
acc = acc + parseFloat(machine[filterKey])
|
||||
return acc
|
||||
}, 0)
|
||||
|
||||
return {key: filterKey, name: setNamesMl(filterKey), machinesCount: filteredWithMl.length, value: count}
|
||||
})
|
||||
|
||||
// console.log('machinesWithMl', machinesWithMl)
|
||||
|
||||
const countMachinesWithMl = Math.floor((machinesWithMl.reduce((acc, machine) => {
|
||||
return acc + machine.machinesCount
|
||||
}, 0)) / filterKeysMl.length)
|
||||
|
||||
const machinesWithoutMl = filterKeysMl.map((filterKey) => {
|
||||
const countNull = data.reduce((acc, machine) => {
|
||||
if (machine[filterKey] === null) {
|
||||
acc = acc + 1
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
}, 0)
|
||||
return {key: filterKey, value: countNull}
|
||||
})
|
||||
|
||||
// console.log('machinesWithoutMl', machinesWithoutMl)
|
||||
|
||||
const countMachinesWithoutMl = Math.floor((machinesWithoutMl.reduce((acc, machine) => {
|
||||
return acc + machine.value
|
||||
}, 0)) / filterKeysMl.length // Либо только машины, если без деления тогда все null МЛ суммируются
|
||||
)
|
||||
|
||||
machinesWithMl.push({key: 'routes_without_ml', name: setNamesMl('routes_without_ml'), value: countMachinesWithoutMl})
|
||||
|
||||
return {countMachinesWithMl: countMachinesWithMl, period: setPeriodCharts(filterKeysMl).title, machines: machinesWithMl}
|
||||
}
|
||||
|
||||
const chartsBarMount = (data, groupByKey, filterKey, countKey) => {
|
||||
|
||||
const groupByData = Object.groupBy(data, (el) => el[groupByKey])
|
||||
|
||||
const yAxisData = Object.entries(groupByData).map(([key, val]) => ({key: key, val: val.reduce((acc, val) => acc + val[countKey], 0)}))
|
||||
const xAxisData = Object.entries(groupByData).map(([key, groupArr]) => {
|
||||
const groupByFilterData = Object.groupBy(groupArr, (el) => el[filterKey])
|
||||
const newArr = Object.entries(groupByFilterData).map(([key, val]) => ({name: key, value: val.reduce((acc, val) => acc + val[countKey], 0)}))
|
||||
return {yAxisData: key, totalCount: groupArr.length, charts: newArr}
|
||||
})
|
||||
|
||||
const countMounts = yAxisData.reduce((acc, year) => (acc + year.val), 0)
|
||||
|
||||
return {yAxisData: yAxisData, xAxisData: xAxisData, countMounts: countMounts, filterKey: filterKey}
|
||||
}
|
||||
|
||||
const chartsBarTypes = (data, groupByKey, filterKey, prevGroupByData, prevGroupByFilters) => {
|
||||
|
||||
const countMachines = data.length
|
||||
const groupByData = Object.groupBy(data, (el) => el[groupByKey])
|
||||
|
||||
const yAxisData = Object.entries(groupByData).map(([key, val]) => ({key: key, val: val.length}))
|
||||
const xAxisData = Object.entries(groupByData).map(([key, groupArr]) => {
|
||||
const groupByFilterData = Object.groupBy(groupArr, (el) => el[filterKey])
|
||||
const newArr = Object.entries(groupByFilterData).map(([key, val]) => ({name: key, value: val.length, linkData: groupByKey === 'machine_type' ? val.map((el) => ({machine_type: el.machine_type, device_number: el.device_number})) : ''}))
|
||||
return {yAxisData: key, totalCount: groupArr.length, charts: newArr}
|
||||
})
|
||||
|
||||
return {yAxisData: yAxisData, xAxisData: xAxisData, countMachines: countMachines, period: setPeriodCharts(filterKey).title, filterKey: filterKey, groupByKey: groupByKey, prevGroupByData: prevGroupByData, prevGroupByFilters: prevGroupByFilters}
|
||||
}
|
||||
|
||||
const chartsBarTypesGroupedBy = (data, groupByKey, filterKey, prevGroupByData, prevGroupByFilters, typeId) => {
|
||||
|
||||
const machineClass = setMachinesClass(typeId)
|
||||
const machinesFilteredClass = data.filter(({machine_class}) => machine_class === machineClass)
|
||||
|
||||
const groupByData = Object.groupBy(machinesFilteredClass, (el) => el[groupByKey])
|
||||
|
||||
const yAxisData = Object.entries(groupByData).map(([key, val]) => ({key: key, val: val.length}))
|
||||
const xAxisData = Object.entries(groupByData).map(([key, groupArr]) => {
|
||||
const groupByFilterData = Object.groupBy(groupArr, (el) => el[filterKey])
|
||||
const newArr = Object.entries(groupByFilterData).map(([key, val]) => ({name: key, value: val.length, linkData: groupByKey === 'machine_type' ? val.map((el) => ({machine_type: el.machine_type, device_number: el.device_number})) : ''}))
|
||||
return {yAxisData: key, totalCount: groupArr.length, charts: newArr}
|
||||
})
|
||||
|
||||
const countMachines = yAxisData.reduce((acc, type) => acc + type.val, 0)
|
||||
|
||||
return {yAxisData: yAxisData, xAxisData: xAxisData, countMachines: countMachines, period: setPeriodCharts(filterKey).title, filterKey: filterKey, groupByKey: groupByKey, prevGroupByData: prevGroupByData, prevGroupByFilters: prevGroupByFilters, typeId: typeId}
|
||||
}
|
||||
|
||||
const chartsBarTypesWithoutFirstLayout = (data, groupByKey, filterKey, prevGroupByData, prevGroupByFilters, groupByValue) => {
|
||||
|
||||
const groupByData = Object.groupBy(data, (el) => el['org_type_name'])
|
||||
const filteredGroupByData = Object.entries(groupByData).filter(([key, val]) => key === groupByValue)
|
||||
|
||||
if (filteredGroupByData.length === 0) return {yAxisData: [], xAxisData: [], countMachines: 0, period: setPeriodCharts(filterKey).title, filterKey: filterKey, groupByKey: groupByKey, prevGroupByData: prevGroupByData, prevGroupByFilters: prevGroupByFilters, groupByValue: groupByValue}
|
||||
|
||||
const [groupedByGroupByKeyY] = filteredGroupByData.map(([key, groupArr]) => Object.groupBy(groupArr, (el) => el[groupByKey]))
|
||||
const yAxisData = Object.entries(groupedByGroupByKeyY).map(([key, val]) => ({key: key, val: val.length}))
|
||||
|
||||
const [groupedByGroupByKeyX] = filteredGroupByData.map(([key, groupArr]) => Object.groupBy(groupArr, (el) => el[groupByKey]))
|
||||
const xAxisData = Object.entries(groupedByGroupByKeyX).map(([key, groupArr]) => {
|
||||
const groupByFilterData = Object.groupBy(groupArr, (el) => el[filterKey])
|
||||
const newArr = Object.entries(groupByFilterData).map(([key, val]) => ({name: key, value: val.length, linkData: groupByKey === 'machine_type' ? val.map((el) => ({machine_type: el.machine_type, device_number: el.device_number})) : ''}))
|
||||
return {yAxisData: key, totalCount: groupArr.length, charts: newArr}
|
||||
})
|
||||
|
||||
const countMachines = yAxisData.reduce((acc, type) => acc + type.val, 0)
|
||||
|
||||
return {yAxisData: yAxisData, xAxisData: xAxisData, countMachines: countMachines, period: setPeriodCharts(filterKey).title, filterKey: filterKey, groupByKey: groupByKey, prevGroupByData: prevGroupByData, prevGroupByFilters: prevGroupByFilters, groupByValue: groupByValue}
|
||||
}
|
||||
|
||||
const chartsBarTypesGroupedByMl = (data, groupByKey, filterKeys, prevGroupByData, prevGroupByFilters) => {
|
||||
|
||||
const groupByData = Object.groupBy(data, (el) => el[groupByKey])
|
||||
const yAxisData = Object.entries(groupByData).map(([key, val]) => {
|
||||
const allValuesArr = filterKeys.map((filterKey) => {
|
||||
const machinesWithMl = val.reduce((acc, el) => {
|
||||
if (el[filterKey] || el[filterKey] === 0) {
|
||||
acc = acc + el[filterKey]
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
}, 0)
|
||||
const machinesWithoutMl = val.filter((el) => el[filterKey] === null).length
|
||||
return {machinesWithMl: machinesWithMl, machinesWithoutMl: machinesWithoutMl}
|
||||
})
|
||||
// console.log('allValuesArr', allValuesArr)
|
||||
const countMachinesWithMl = allValuesArr.reduce((acc, count) => (acc + count.machinesWithMl), 0)
|
||||
const countMachinesWithoutMl = allValuesArr.reduce((acc, count) => (acc + count.machinesWithoutMl), 0) / filterKeys.length // Для исключения дублирования делим н а длину filterKeys
|
||||
|
||||
return {key: key, val: countMachinesWithMl + countMachinesWithoutMl}
|
||||
})
|
||||
|
||||
const xAxisData = Object.entries(groupByData).map(([key, groupArr]) => {
|
||||
return filterKeys.map((filterKey) => {
|
||||
const groupByFilterData = Object.groupBy(groupArr, (el) => el[filterKey])
|
||||
const newArr = Object.entries(groupByFilterData).map(([key, val]) => ({key: filterKey, name: key, value: val.reduce((acc, el) => el[filterKey] ? acc + el[filterKey] : acc, 0), linkData: groupByKey === 'machine_type' ? val.map((el) => ({machine_type: el.machine_type, device_number: el.device_number})) : ''}
|
||||
))
|
||||
const machinesWithMl = newArr.reduce((acc, type) => {
|
||||
if (type.key === filterKey) {
|
||||
acc = {filterKey: filterKey, name: setNamesMl(filterKey), value: acc?.value + type.value, linkData: type.linkData}
|
||||
} else {
|
||||
acc = {filterKey: filterKey, name: setNamesMl(filterKey), value: acc?.value, linkData: type.linkData}
|
||||
}
|
||||
return acc
|
||||
}, {value: 0})
|
||||
// console.log('machinesWithMl', machinesWithMl)
|
||||
return {yAxisData: key, charts: machinesWithMl}
|
||||
})
|
||||
})
|
||||
|
||||
const machinesWithoutMl = Object.entries(groupByData).map(([key, val]) => {
|
||||
const countWithoutMl = val.filter((el) => filterKeys.find((filterKey) => el[filterKey] === null)).length
|
||||
return {yAxisData: key, charts: {filterKey: 'routes_without_ml', name: setNamesMl('routes_without_ml'), value: countWithoutMl, linkData: groupByKey === 'machine_type' ? val.map((el) => ({machine_type: el.machine_type, device_number: el.device_number})) : ''}}
|
||||
})
|
||||
|
||||
const countMachinesWithMl = setCountMachinesMl(xAxisData)
|
||||
const countMachinesWithoutMl = Math.floor(setCountMachinesMl(machinesWithoutMl)) / filterKeys.length
|
||||
|
||||
const updatedXAxisData = xAxisData.reduce((acc, group) => {
|
||||
const isFindGroup = machinesWithoutMl.find((machine) => machine.yAxisData === group[0].yAxisData)
|
||||
if (isFindGroup) {
|
||||
const updatedGroup = [...group, isFindGroup]
|
||||
acc.push(updatedGroup)
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
}, [])
|
||||
|
||||
// console.log('updatedXAxisData', updatedXAxisData)
|
||||
|
||||
return {yAxisData: yAxisData, xAxisData: updatedXAxisData, countMachinesWithMl: countMachinesWithMl, countMachinesWithoutMl: countMachinesWithoutMl, period: setPeriodCharts(filterKeys).title, groupByKey: groupByKey, prevGroupByData: prevGroupByData, prevGroupByFilters: prevGroupByFilters}
|
||||
}
|
||||
|
||||
/* Charts updated data end */
|
||||
|
||||
|
||||
const loadingChartsData = ({chartsSetup, data, dataMount, prevGroupByData, prevGroupByFilters}) => {
|
||||
|
||||
// console.log('dataPie', chartsPie(data, chartsFilterParams[0]))
|
||||
// console.log('dataPieValue', chartsPieGroupByValue(data, chartsGroupByParams[0], chartsFilterParams[0]))
|
||||
// console.log('dataPieTypes', chartsPieGroupedBy(data, chartsGroupByParams2[0], chartsFilterParams[0]))
|
||||
// console.log('dataBarMl', chartsBarGroupedByMl(data, chartsFilterKeysMl))
|
||||
// console.log('dataBarMount', chartsBarMount(dataMount, 'year', 'client_type', 'device_count'))
|
||||
// console.log('chartsBarTypesGroupedByMl', chartsBarTypesGroupedByMl(data, 'org_type_name', chartsFilterKeysMl, {}, {}))
|
||||
|
||||
const filteredPie = chartsFilterParams.reduce((acc, param) => {
|
||||
const idChart = `${param.filterKey}_pie`
|
||||
return {...acc, [idChart]: chartsPie(data, param)}}, {}) // Далее объединение всех типов графиков
|
||||
|
||||
const filteredPieGroupByValue = chartsGroupByParams.reduce((acc, param) => {
|
||||
const idChart = `${chartsFilterParams[0].filterKey}_pie_${param.valueId}`
|
||||
return {...acc, [idChart]: chartsPieGroupedBy(data, param, chartsFilterParams[0])}}, {})
|
||||
|
||||
const filteredPieGroupByTypes = chartsGroupByParams2.reduce((acc, param) => {
|
||||
const idChart = `${chartsFilterParams[0].filterKey}_pie_${param.valueId}`
|
||||
return {...acc, [idChart]: chartsPieGroupedBy(data, param, chartsFilterParams[0])}}, {})
|
||||
|
||||
const filteredBarGroupByMl = {[`${chartsFilterParams[1].filterKey}_bar`]: chartsBarGroupedByMl(data, chartsFilterKeysMl)}
|
||||
|
||||
const filteredBarMount = chartsMountParams.reduce((acc, param) => {
|
||||
const idChart = `mount_${param.filterKey}_bar`
|
||||
return {...acc, [idChart]: chartsBarMount(dataMount, param.groupByKey, param.filterKey, param.countKey)}}, {})
|
||||
|
||||
const filteredBarTypes = chartsBarTypesParams.reduce((acc, param) => {
|
||||
const idChart = `${param.filterKey}_${param.valueId}_bar`
|
||||
return {...acc, [idChart]: chartsBarTypes(data, param.groupByKey, param.filterKey, prevGroupByData, prevGroupByFilters)}}, {})
|
||||
|
||||
const filteredBarGroupByTypes = chartsBarTypesGroupByParams.reduce((acc, param) => {
|
||||
const idChart = `${param.filterKey}_${param.valueId}_bar_${param.typeId}`
|
||||
return {...acc, [idChart]: chartsBarTypesGroupedBy(data, param.groupByKey, param.filterKey, prevGroupByData, prevGroupByFilters, param.typeId)}}, {})
|
||||
|
||||
const filteredBarWithoutLayoutTypes = chartsBarTypesWithoutLayoutParams.reduce((acc, param) => {
|
||||
const idChart = `${param.filterKey}_types_bar_${param.valueId}`
|
||||
return {...acc, [idChart]: chartsBarTypesWithoutFirstLayout(data, param.groupByKey, param.filterKey, prevGroupByData, prevGroupByFilters, param.groupByValue)}}, {})
|
||||
|
||||
const filteredBarGroupByMlTypes = {[`${chartsFilterParams[1].filterKey}_types_bar_ml`]: chartsBarTypesGroupedByMl(data, 'org_type_name', chartsFilterKeysMl, prevGroupByData, prevGroupByFilters)}
|
||||
|
||||
const allCharts = {...filteredPie, ...filteredPieGroupByValue, ...filteredPieGroupByTypes, ...filteredBarGroupByMl, ...filteredBarMount, ...filteredBarTypes, ...filteredBarGroupByTypes, ...filteredBarWithoutLayoutTypes, ...filteredBarGroupByMlTypes}
|
||||
|
||||
console.log('allCharts', allCharts)
|
||||
|
||||
// console.log('this.charts', data)
|
||||
const main = chartsSetup.main.reduce((acc, chart) => {
|
||||
if (allCharts[chart.id]) {
|
||||
const newChart = {...chart, data: allCharts[chart.id]}
|
||||
acc = [...acc, newChart]
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
|
||||
}, [])
|
||||
const types = chartsSetup.types.reduce((acc, chart) => {
|
||||
if (allCharts[chart.id]) {
|
||||
const newChart = {...chart, data: allCharts[chart.id]}
|
||||
acc = [...acc, newChart]
|
||||
} else {
|
||||
acc
|
||||
}
|
||||
return acc
|
||||
|
||||
}, [])
|
||||
return {...chartsSetup, main: main, types: types}
|
||||
}
|
||||
|
||||
const setBarTypesChart = (activeChartParams, prevGroupByData, prevGroupByFilters, defaultData, currentData) => {
|
||||
switch (activeChartParams.type) {
|
||||
case 'default':
|
||||
const dataDefault = chartsBarTypes(defaultData, activeChartParams.groupByKey, activeChartParams.filterKey, prevGroupByData, prevGroupByFilters)
|
||||
// const updatedData = currentData.types.reduce((acc, chart) => {
|
||||
// if (chart.id === activeChartParams.id) {
|
||||
// const newChart = {...chart, data: data}
|
||||
// acc = [...acc, newChart]
|
||||
// } else {
|
||||
// acc = [...acc, chart]
|
||||
// }
|
||||
// return acc
|
||||
// }, [])
|
||||
// return {main: currentData.main, types: updatedData}
|
||||
return dataDefault
|
||||
case 'without_first_layout':
|
||||
const dataWithoutFirstLayout = chartsBarTypesWithoutFirstLayout(defaultData, activeChartParams.groupByKey, activeChartParams.filterKey, prevGroupByData, prevGroupByFilters, activeChartParams.groupByValue)
|
||||
return dataWithoutFirstLayout
|
||||
case 'types':
|
||||
const dataGroupBy = chartsBarTypesGroupedBy(defaultData, activeChartParams.groupByKey, activeChartParams.filterKey, prevGroupByData, prevGroupByFilters, activeChartParams.groupByValue)
|
||||
return dataGroupBy
|
||||
case 'ml':
|
||||
const dataMl = chartsBarTypesGroupedByMl(defaultData, activeChartParams.groupByKey, chartsFilterKeysMl, prevGroupByData, prevGroupByFilters)
|
||||
return dataMl
|
||||
}
|
||||
}
|
||||
|
||||
const setNextLayoutGroupByKey = (groupByKey, prevGroupByValue) => {
|
||||
if (prevGroupByValue === 'без типа') return null
|
||||
switch (groupByKey) {
|
||||
case 'org_type_name': return 'railway_name'
|
||||
case 'railway_name': return 'org_name'
|
||||
case 'org_name': return 'type'
|
||||
case 'type': return 'machine_type'
|
||||
case 'zav_nomer': return 'machine_type'
|
||||
default: return null
|
||||
}
|
||||
}
|
||||
|
||||
const setBeforeLayoutGroupByData = (prevGroupByData, prevGroupByFilters, type) => {
|
||||
return cond([
|
||||
[has('type'), () => ({org_name: prevGroupByFilters['org_name']})],
|
||||
[has('org_name'), () => ({railway_name: prevGroupByFilters['railway_name']})],
|
||||
[has('railway_name'), () => (type === 'without_first_layout' ? {} : {org_type_name: prevGroupByFilters['org_type_name']})],
|
||||
[T, () => {}],
|
||||
])(prevGroupByData)
|
||||
}
|
||||
|
||||
const typesCharts = (type) => {
|
||||
switch (type) {
|
||||
case 'pie': return true
|
||||
case 'mount': return true
|
||||
case 'mainMl': return true
|
||||
default: return false
|
||||
}
|
||||
}
|
||||
|
||||
export { loadingChartsData, setBarTypesChart, setNextLayoutGroupByKey, setBeforeLayoutGroupByData, typesCharts }
|
||||
459
live_monitor_vue/src/store/modules/layoutMachines/index.js
Normal file
459
live_monitor_vue/src/store/modules/layoutMachines/index.js
Normal file
@ -0,0 +1,459 @@
|
||||
import {toRaw} from 'vue'
|
||||
import {searchModes, leftTopButtons, rightTopButtons, selects, selectors, charts, dataMachines, dataMount, pagination, machineInfo, reportPacks, report, packStructure, multiReport, multiPackStructure} from './StaticData'
|
||||
import { chartsSetup } from '@/store/hooks/Echarts/staticData.js';
|
||||
import { prepareSelects, mergedMachines, setUpdatedDataMachines, colorSelection, loadingPagination, setPagination } from './helpers';
|
||||
import { loadingChartsData, setBarTypesChart, setNextLayoutGroupByKey, setBeforeLayoutGroupByData, typesCharts } from './helpersCharts';
|
||||
import { fetchColumn, prepareSetPackColumns } from '@organisms/PackColumns';
|
||||
import { get } from '../apiHelpers';
|
||||
import {equals, isEmpty, uniq} from 'ramda'
|
||||
|
||||
const initState = {
|
||||
leftTopButtons: leftTopButtons,
|
||||
rightTopButtons: rightTopButtons,
|
||||
searchModes: searchModes,
|
||||
pagination: pagination,
|
||||
toggleFilter: false,
|
||||
openMenuChart: false,
|
||||
initHistory: false,
|
||||
|
||||
selectedSearchMode: searchModes[0],
|
||||
selectedMode: leftTopButtons[0].key,
|
||||
selectedSelects: {},
|
||||
activeFilterBtn: null,
|
||||
activeChartData: null,
|
||||
activeMenuChartData: {openMenuChart: false},
|
||||
selectedPackStruct: null,
|
||||
selectedPackMode: 'askr_logs',
|
||||
|
||||
searchValue: '',
|
||||
selectedData: [],
|
||||
selectsData: [],
|
||||
machinesDataDefault: [],
|
||||
machinesData: [],
|
||||
tableData: [],
|
||||
chartsData: [],
|
||||
chartsMountData: [],
|
||||
mapData: null,
|
||||
machineInfo: null,
|
||||
reportPacks: [],
|
||||
structPackDefault: [],
|
||||
selectPackStructs: [],
|
||||
packData: {},
|
||||
|
||||
historyData: [],
|
||||
historyMachines: [],
|
||||
legendFiltersParams: [],
|
||||
};
|
||||
|
||||
const state = {
|
||||
...initState
|
||||
};
|
||||
|
||||
const getters = {
|
||||
pages: (state) => state.pages,
|
||||
searchModes: (state) => state.searchModes,
|
||||
leftTopButtons: (state) => state.leftTopButtons,
|
||||
rightTopButtons: (state) => state.rightTopButtons,
|
||||
toggleFilter: (state) => state.toggleFilter,
|
||||
openMenuChart: (state) => state.openMenuChart,
|
||||
initHistory: (state) => state.initHistory,
|
||||
|
||||
selectedPage: (state) => state.selectedPage,
|
||||
selectedSearchMode: (state) => state.selectedSearchMode,
|
||||
selectedMode: (state) => state.selectedMode,
|
||||
selectedSelects: (state) => state.selectedSelects,
|
||||
activeFilterBtn: (state) => state.activeFilterBtn,
|
||||
activeChartData: (state) => state.activeChartData,
|
||||
activeMenuChartData: (state) => state.activeMenuChartData,
|
||||
selectedPackStruct: (state) => state.selectedPackStruct,
|
||||
selectedPackMode: (state) => state.selectedPackMode,
|
||||
|
||||
searchValue: (state) => state.searchValue,
|
||||
selectedData: (state) => state.selectedData,
|
||||
selectsData: (state) => state.selectsData,
|
||||
machinesDataDefault: (state) => state.machinesDataDefault,
|
||||
machinesData: (state) => state.machinesData,
|
||||
tableData: (state) => state.tableData,
|
||||
chartsData: (state) => state.chartsData,
|
||||
chartsMountData: (state) => state.chartsMountData,
|
||||
historyData: (state) => state.historyData,
|
||||
historyMachines: (state) => state.historyMachines,
|
||||
legendFiltersParams: (state) => state.legendFiltersParams,
|
||||
pagination: (state) => state.pagination,
|
||||
mapData: (state) => state.mapData,
|
||||
machineInfo: (state) => state.machineInfo,
|
||||
reportPacks: (state) => state.reportPacks,
|
||||
selectPackStructs: (state) => state.selectPackStructs,
|
||||
packData: (state) => state.packData,
|
||||
};
|
||||
|
||||
const mutations = {
|
||||
setPage: (state, updval) => state.selectedPage = updval,
|
||||
setToggleFilter: (state) => state.toggleFilter = !state.toggleFilter,
|
||||
setOpenMenuChart: (state, updval) => state.openMenuChart = updval,
|
||||
setInitHistory: (state, updval) => state.initHistory = updval,
|
||||
|
||||
setSearchMode: (state, updval) => state.selectedSearchMode = updval,
|
||||
setSelectedMode: (state, updval) => state.selectedMode = updval,
|
||||
setSelectedSelects: (state, updval) => state.selectedSelects = updval,
|
||||
setSelectedMachines: (state, updval) => state.selectedMachines = updval,
|
||||
setActiveFilterBtn: (state, updval) => state.activeFilterBtn = updval,
|
||||
setActiveChartData: (state, updval) => state.activeChartData = updval,
|
||||
setActiveMenuChartData: (state, updval) => state.activeMenuChartData = updval,
|
||||
setSelectedPackStruct: (state, updval) => state.selectedPackStruct = updval,
|
||||
setSelectedPackMode: (state, updval) => state.selectedPackMode = updval,
|
||||
|
||||
setSelectsData: (state, updval) => state.selectsData = updval,
|
||||
setSearchValue: (state, updval) => state.searchValue = updval,
|
||||
setSelectedData: (state, updval) => state.selectedData = updval,
|
||||
setMachinesDataDefault: (state, updval) => state.machinesDataDefault = updval,
|
||||
setMachinesData: (state, updval) => state.machinesData = updval,
|
||||
setTableData: (state, updval) => state.tableData = updval,
|
||||
setChartsData: (state, updval) => state.chartsData = updval,
|
||||
setChartsDataMount: (state, updval) => state.chartsMountData = updval,
|
||||
setHistoryData: (state, updval) => state.historyData = updval,
|
||||
setHistoryMachines: (state, updval) => state.historyMachines = updval,
|
||||
setLegendFiltersParams: (state, updval) => state.legendFiltersParams = updval,
|
||||
setPagination: (state, updval) => state.pagination = updval,
|
||||
setMapData: (state, updval) => state.mapData = updval,
|
||||
setMachineInfo: (state, updval) => state.machineInfo = updval,
|
||||
setReportPacks: (state, updval) => state.reportPacks = updval,
|
||||
setStructPackDefault: (state, updval) => state.structPackDefault = updval,
|
||||
setSelectPackStructs: (state, updval) => state.selectPackStructs = updval,
|
||||
setPackData: (state, updval) => state.packData = updval,
|
||||
resetStore: (state) => {
|
||||
Object.entries(initState).forEach(([k,v]) => {
|
||||
state[k] = v
|
||||
})
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
const actions = {
|
||||
uploadData: async ({commit, getters, state}, externalParams) => {
|
||||
try{
|
||||
// const machinesData = toRaw(getters.machinesData)
|
||||
// const machinesDataDefault = toRaw(state.machinesDataDefault)
|
||||
const pagination = toRaw(getters.pagination)
|
||||
// const chartsData = toRaw(state.chartsData)
|
||||
const historyData = externalParams.historyData ? externalParams.historyData : toRaw(state.historyData)
|
||||
const chartsData = !isEmpty(dataMachines) ? dataMachines.filter((machine) => machine.machine_id !== null) : []
|
||||
const chartsMountData = !isEmpty(dataMount) ? dataMount.filter((el) => el.client_type !== null) : []
|
||||
|
||||
const updatedData = loadingChartsData({chartsSetup: chartsSetup, data: chartsData, dataMount: chartsMountData, prevGroupByData: {}, prevGroupByFilters: {}})
|
||||
const filteredSelects = prepareSelects(selects, selectors)
|
||||
const mergedData = mergedMachines(dataMachines, historyData)
|
||||
const currentTableData = loadingPagination(dataMachines, pagination)
|
||||
const currentSelectedMode = externalParams.urlParams ? externalParams.urlParams : 'cards'
|
||||
// console.log('updatedData', updatedData)
|
||||
|
||||
commit('setSelectedMode', currentSelectedMode)
|
||||
commit('setTableData', currentTableData)
|
||||
commit('setPagination', pagination)
|
||||
commit('setSelectsData', filteredSelects)
|
||||
commit('setChartsData', updatedData)
|
||||
commit('setChartsDataMount', chartsMountData)
|
||||
commit('setMachinesDataDefault', dataMachines)
|
||||
commit('setMachinesData', mergedData)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updateSearch: async ({commit, getters, state}, updatedSearchValue) => {
|
||||
try {
|
||||
const selectedSearchMode = toRaw(getters.selectedSearchMode)
|
||||
const selectedData = toRaw(getters.selectedData)
|
||||
const machinesDataDefault = toRaw(state.machinesDataDefault)
|
||||
// const machinesData = toRaw(state.machinesData)
|
||||
const isEmptyParams = isEmpty(selectedData)
|
||||
let updatedFilters = []
|
||||
if (updatedSearchValue) {
|
||||
console.log('isEmptyParams', isEmptyParams)
|
||||
console.log('selectedData', selectedData)
|
||||
// updatedFilters = isEmptyParams ? [{[selectedSearchMode.key]: updatedSearchValue}] : [...selectedData.filter, {[selectedSearchMode.key]: updatedSearchValue}]
|
||||
updatedFilters = [{[selectedSearchMode.key]: updatedSearchValue}]
|
||||
}
|
||||
if (!updatedSearchValue) {
|
||||
updatedFilters = !isEmptyParams ? selectedData.filter.filter((el) => !el[selectedSearchMode.key]) : selectedData
|
||||
}
|
||||
const updatedFiltersForSend = {filter: updatedFilters}
|
||||
// const currentData = !isEmptyParams && updatedSearchValue && !isEmpty(machinesData) ? machinesData : machinesDataDefault
|
||||
const updatedData = setUpdatedDataMachines(machinesDataDefault, updatedFiltersForSend)
|
||||
const updatedDataCharts = loadingChartsData({chartsSetup: chartsSetup, data: updatedData, dataMount: dataMount, prevGroupByData: {}, prevGroupByFilters: {}})
|
||||
commit('setSelectedData', updatedFiltersForSend)
|
||||
commit('setSelectedSelects', {})
|
||||
commit('setSearchValue', updatedSearchValue)
|
||||
commit('setMachinesData', updatedData)
|
||||
commit('setChartsData', updatedDataCharts)
|
||||
colorSelection(selectedSearchMode.key, updatedSearchValue)
|
||||
// console.log('updatedFilters', updatedFilters)
|
||||
// console.log('updatedData', updatedData)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updateSelects: async ({dispatch, commit, getters, state}, updatedSelect) => {
|
||||
try {
|
||||
const allSelects = toRaw(getters.selectsData)
|
||||
const selectedSelects = toRaw(getters.selectedSelects)
|
||||
const machinesDataDefault = toRaw(state.machinesDataDefault)
|
||||
dispatch('updateSearch', '')
|
||||
const curUpdatedSelectName = updatedSelect.key === 'set' ? updatedSelect.value[0].name : updatedSelect.value.name
|
||||
let updatedSelects = {}
|
||||
for (let i = 0; i < allSelects.length; i++) {
|
||||
const curSelect = allSelects[i]
|
||||
const newSelected = curSelect.data.find((el) => el.name === curUpdatedSelectName)
|
||||
if (!newSelected && (selectedSelects[curSelect.key] && selectedSelects[curSelect.key].length > 0)) {
|
||||
updatedSelects[curSelect.key] = selectedSelects[curSelect.key]
|
||||
}
|
||||
if (updatedSelect.key === 'removed' && newSelected && (selectedSelects[curSelect.key] && selectedSelects[curSelect.key].length === 0)) {
|
||||
break
|
||||
}
|
||||
if (updatedSelect.key === 'removed' && newSelected && (selectedSelects[curSelect.key] && selectedSelects[curSelect.key].length > 0)) {
|
||||
updatedSelects[curSelect.key] = selectedSelects[curSelect.key].filter((el) => el.name !== newSelected.name)
|
||||
break
|
||||
}
|
||||
if (updatedSelect.key === 'set' && newSelected && (selectedSelects[curSelect.key] && selectedSelects[curSelect.key].length > 0)) {
|
||||
updatedSelects[curSelect.key] = selectedSelects[curSelect.key]
|
||||
break
|
||||
}
|
||||
}
|
||||
const updatedFilters = Object.entries(updatedSelects).map(([key, value]) => ({[key]: value.map((el) => el.name)}))
|
||||
// const mergedFilters = searchValue ? [...updatedFilters, {[selectedSearchMode.key]: searchValue}] : updatedFilters
|
||||
// console.log('mergedFilters', mergedFilters)
|
||||
// const currentData = !isEmptyParams ? machinesData : machinesDataDefault
|
||||
const updatedFiltersForSend = {filter: updatedFilters}
|
||||
const updatedData = setUpdatedDataMachines(machinesDataDefault, updatedFiltersForSend)
|
||||
const updatedDataCharts = loadingChartsData({chartsSetup: chartsSetup, data: updatedData, dataMount: dataMount, prevGroupByData: {}, prevGroupByFilters: {}})
|
||||
// console.log('updatedData', updatedData)
|
||||
// console.log('updatedFilters', updatedFilters)
|
||||
commit('setMachinesData', updatedData)
|
||||
commit('setChartsData', updatedDataCharts)
|
||||
commit('setSelectedSelects', updatedSelects)
|
||||
commit('setSelectedData', updatedFiltersForSend)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updateCharts: async ({commit, getters, state}, updatedData) => {
|
||||
try {
|
||||
switch(updatedData.action) {
|
||||
case 'nextLayoutChart':
|
||||
// console.log('updatedDataNext', updatedData)
|
||||
const prevGroupByFiltersNext = updatedData.prevGroupByFilters
|
||||
const updatedFiltersNext = {...prevGroupByFiltersNext, ...updatedData.prevGroupByData}
|
||||
const prevGroupByValue = updatedData.prevGroupByData.type ? updatedData.prevGroupByData.type : null
|
||||
const groupByKeyNext = setNextLayoutGroupByKey(updatedData.groupByKey, prevGroupByValue)
|
||||
if (groupByKeyNext) {
|
||||
const activeChartData = {id: updatedData.id, data: updatedData.data, groupByKey: groupByKeyNext, filterKey: updatedData.filterKey, type: updatedData.type, groupByValue: updatedData.groupByValue}
|
||||
const newData = setBarTypesChart(activeChartData, updatedData.prevGroupByData, updatedFiltersNext, state.machinesDataDefault, toRaw(state.chartsData))
|
||||
return commit('setActiveChartData', {...activeChartData, data: newData})
|
||||
}
|
||||
break
|
||||
case 'beforeLayoutChart':
|
||||
// console.log('updatedDataBefore', updatedData)
|
||||
const prevGroupByData = updatedData.groupByInfo.prevGroupByData
|
||||
const prevGroupByFiltersBefore = updatedData.groupByInfo.prevGroupByFilters
|
||||
const groupByKeyBefore = Object.keys(prevGroupByData)[0] // Получаем уже предыдущее значение ключа
|
||||
delete prevGroupByFiltersBefore[groupByKeyBefore] // Удаляем значение после вычисления prevGroupByData, так как подымаемся на уровень выше, сохраняя актуальное значение для фильтрации
|
||||
const isOnlyFiltersParams = equals(prevGroupByData, prevGroupByFiltersBefore)
|
||||
const updatedPrevGroupByDataBefore = isOnlyFiltersParams ? {} : setBeforeLayoutGroupByData(prevGroupByData, prevGroupByFiltersBefore, updatedData.groupByInfo.type)
|
||||
if (groupByKeyBefore) {
|
||||
const activeChartData = {id: updatedData.id, data: updatedData.data, groupByKey: groupByKeyBefore, filterKey: updatedData.filterKey, type: updatedData.groupByInfo.type, groupByValue: updatedData.groupByInfo.groupByValue}
|
||||
const newData = setBarTypesChart(activeChartData, updatedPrevGroupByDataBefore, prevGroupByFiltersBefore, state.machinesDataDefault, toRaw(state.chartsData))
|
||||
return commit('setActiveChartData', {...activeChartData, data: newData})
|
||||
}
|
||||
break
|
||||
case 'openMenuChart':
|
||||
// console.log('updatedDataOpen', updatedData)
|
||||
const openMenuChart = toRaw(state.activeMenuChartData.openMenuChart)
|
||||
updatedData.groupByInfo.data[0].type = updatedData.groupByInfo.type
|
||||
const activeChartDataMenu = {chartId: updatedData.groupByInfo.chartId, data: updatedData.groupByInfo.data, groupByKey: updatedData.groupByInfo.groupByKey, filterKey: updatedData.groupByInfo.filterKey, type: updatedData.groupByInfo.type, groupByValue: updatedData.groupByInfo.groupByValue}
|
||||
const newDataMenu = setBarTypesChart(activeChartDataMenu, updatedData.groupByInfo.prevGroupByData, updatedData.groupByInfo.prevGroupByFilters, state.machinesDataDefault, toRaw(state.chartsData))
|
||||
const isNotTypesChartsMenu = typesCharts(updatedData.groupByInfo.type)
|
||||
const toggleActiveMenuChartData = {openMenuChart: !openMenuChart, groupByInfo: {...activeChartDataMenu, data: isNotTypesChartsMenu ? updatedData.groupByInfo.data[0] : newDataMenu}}
|
||||
commit('setActiveMenuChartData', toggleActiveMenuChartData)
|
||||
break
|
||||
case 'downloadChart':
|
||||
// console.log('updatedDataDownload', updatedData)
|
||||
const activeChartDataDownload = {chartId: updatedData.groupByInfo.chartId, isDownloadChart: updatedData.groupByInfo.isDownloadChart, data: updatedData.groupByInfo.data, groupByKey: updatedData.groupByInfo.groupByKey, prevGroupByData: updatedData.groupByInfo.prevGroupByData, prevGroupByFilters: updatedData.groupByInfo.prevGroupByFilters, filterKey: updatedData.groupByInfo.filterKey, type: updatedData.groupByInfo.type, groupByValue: updatedData.groupByInfo.groupByValue}
|
||||
const newDataDownload = setBarTypesChart(activeChartDataDownload, updatedData.groupByInfo.prevGroupByData, updatedData.groupByInfo.prevGroupByFilters, state.machinesDataDefault, toRaw(state.chartsData))
|
||||
const isNotTypesChartsDownload = typesCharts(updatedData.groupByInfo.type)
|
||||
const downloadActiveMenuChartData = {openMenuChart: false, groupByInfo: {...updatedData.groupByInfo, data: isNotTypesChartsDownload ? updatedData.groupByInfo.data[0] : newDataDownload}}
|
||||
commit('setActiveMenuChartData', downloadActiveMenuChartData)
|
||||
break
|
||||
case 'legendFiltersParams':
|
||||
commit('setLegendFiltersParams', updatedData.data)
|
||||
default: return false
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updatePagination: async ({commit, getters, state}, updatedData) => {
|
||||
try {
|
||||
const pagination = toRaw(getters.pagination)
|
||||
const machinesDataDefault = toRaw(state.machinesDataDefault)
|
||||
const newData = setPagination(machinesDataDefault, pagination, updatedData)
|
||||
console.log('currentTableData', newData.currentTableData)
|
||||
commit('setTableData', newData.currentTableData)
|
||||
commit('setPagination', newData.updatedPagination)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
openMapModal: async ({commit, state}, machine) => {
|
||||
try {
|
||||
// Добавить запрос на получение координат
|
||||
/*
|
||||
machine_id = machine["machine_id"]
|
||||
last_loc = Communicator.PackFetcher.last_locations([machine_id])
|
||||
|
||||
*/
|
||||
const coords = [44.510345, 48.771025]
|
||||
const params = {machine: machine, coords: coords}
|
||||
commit('setMapData', params)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
openDataModal: async ({commit, state}, machine) => {
|
||||
try {
|
||||
|
||||
// Добавить запрос на получение пакетов и информации о машине
|
||||
/*
|
||||
curr_machine_info = Communicator.Devices.askr_devices(where: "imei = #{imei}")
|
||||
|
||||
[{_, machine_name} | machine_info] =
|
||||
Analyzer.reparse_machine_info(curr_machine_info, :imei)
|
||||
|> Enum.reduce([], fn
|
||||
{"Текущая машина", _} = cur, acc -> [cur] ++ acc
|
||||
cur, acc -> acc ++ [cur]
|
||||
end)
|
||||
|
||||
report_packs =
|
||||
Enum.reduce(curr_machine_info, [], fn
|
||||
%{imei: imei}, acc ->
|
||||
acc ++
|
||||
PacksFuncs.get_pack_nums(
|
||||
imei,
|
||||
Timex.now() |> Timex.beginning_of_day(),
|
||||
Timex.now() |> Timex.end_of_day()
|
||||
)
|
||||
|
||||
_, acc ->
|
||||
acc
|
||||
end)
|
||||
|> DynamicStructDestroyer.destroy()
|
||||
|> Enum.sort_by(& &1.packNumber)
|
||||
|
||||
*/
|
||||
|
||||
commit('setMachineInfo', machineInfo)
|
||||
commit('setReportPacks', reportPacks)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
loadPack: async ({commit, state}, packNumber) => {
|
||||
try {
|
||||
|
||||
/* Получение данных о пакете
|
||||
report =
|
||||
Enum.reduce(curr_machine_info, [], fn
|
||||
%{imei: imei}, acc ->
|
||||
acc ++ PacksFuncs.upload_machine_data(imei, pack_number, dt_start, dt_finish, 30) // Огреничение до 30 машин askr_logs
|
||||
|
||||
_, acc ->
|
||||
acc
|
||||
end)
|
||||
|> DynamicStructDestroyer.destroy()
|
||||
|
||||
Получение структуры пакета
|
||||
|
||||
pack_structs = Helper.get_structs_of_pack(pack_number)
|
||||
|
||||
def get_structs_of_pack(pack_number) do
|
||||
LiveMonitor.Packages.list_pack_struct()
|
||||
|> Enum.filter(&(&1.pack == pack_number))
|
||||
end
|
||||
|
||||
*/
|
||||
console.log('packNumber', packNumber)
|
||||
// const dataSource = !isEmpty(report) ? report.askr_logs.sort((a, b) => b.pack_dt - a.pack_dt) : []
|
||||
const dataSource = !isEmpty(multiReport) ? multiReport.askr_logs.sort((a, b) => b.pack_dt - a.pack_dt).slice(0, 30) : [] // Огреничение до 30 машин askr_logs
|
||||
// const columns = fetchColumn(packStructure, report)
|
||||
const columns = fetchColumn(multiPackStructure, multiReport)
|
||||
// const selectedPackStruct = packStructure.map((item) => ({id: item.id, name: item.name, packNumber: packNumber}))
|
||||
console.log('multiPackStructure', multiPackStructure)
|
||||
console.log('multiReport', multiReport)
|
||||
console.log('columns', columns)
|
||||
const selectPackStructs = multiPackStructure.map((item) => ({id: item.id, name: item.name, packNumber: packNumber}))
|
||||
commit('setStructPackDefault', multiPackStructure)
|
||||
commit('setSelectPackStructs', selectPackStructs)
|
||||
commit('setSelectedPackStruct', selectPackStructs[0])
|
||||
commit('setPackData', {dataSource, columns, height: '550px'})
|
||||
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updateModePack: async ({commit, getters, state}, updatedMode) => {
|
||||
try {
|
||||
const structPackDefault = toRaw(state.structPackDefault)
|
||||
const currentReport = multiReport[updatedMode] ? multiReport[updatedMode] : []
|
||||
const columns = updatedMode === 'askr_logs' ? fetchColumn(structPackDefault, multiReport, null) : prepareSetPackColumns(updatedMode, currentReport)
|
||||
console.log('columns', columns)
|
||||
console.log('currentReport', currentReport)
|
||||
commit('setSelectedPackMode', updatedMode)
|
||||
commit('setPackData', {dataSource: currentReport, columns, height: '550px'})
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updateSelectStruct: async ({commit, getters, state}, updatedStructId) => {
|
||||
try {
|
||||
const updatedMode = toRaw(getters.selectedPackMode)
|
||||
const currentReport = toRaw(state.packData.dataSource)
|
||||
const structPackDefault = toRaw(state.structPackDefault)
|
||||
const selectPackStructs = toRaw(getters.selectPackStructs)
|
||||
const [selectedPackStruct] = selectPackStructs.filter((item) => item.id === updatedStructId)
|
||||
console.log('selectedPackStruct', selectedPackStruct)
|
||||
// const currentReport = multiReport[updatedMode] ? multiReport[updatedMode] : []
|
||||
const columns = updatedMode === 'askr_logs' ? fetchColumn(structPackDefault, multiReport, updatedStructId) : prepareSetPackColumns(updatedMode, currentReport)
|
||||
console.log('updatedMode', updatedMode)
|
||||
console.log('structPackDefault', structPackDefault)
|
||||
console.log('columns', columns)
|
||||
console.log('currentReport', currentReport)
|
||||
commit('setSelectedPackStruct', selectedPackStruct)
|
||||
commit('setPackData', {dataSource: currentReport, columns, height: '550px'})
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
clearFilters: async ({commit, state}) => {
|
||||
try {
|
||||
const machinesDataDefault = toRaw(state.machinesDataDefault)
|
||||
const updatedFiltersForSend = {filter: []}
|
||||
const updatedData = setUpdatedDataMachines(machinesDataDefault, updatedFiltersForSend)
|
||||
const updatedDataCharts = loadingChartsData({chartsSetup: chartsSetup, data: updatedData, dataMount: dataMount, prevGroupByData: {}, prevGroupByFilters: {}})
|
||||
commit('setSelectedSelects', {})
|
||||
commit('setSelectedData', [])
|
||||
commit('setMachinesData', updatedData)
|
||||
commit('setChartsData', updatedDataCharts)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
resetStore: ({commit}) => {
|
||||
commit('resetStore')
|
||||
}
|
||||
};
|
||||
|
||||
export const store = {
|
||||
namespaced: true,
|
||||
state,
|
||||
getters,
|
||||
mutations,
|
||||
actions,
|
||||
};
|
||||
@ -1,48 +1,7 @@
|
||||
import {toRaw} from 'vue'
|
||||
import {searchModes, leftTopButtons, rightTopButtons, selects, selectors, charts, dataMachines, dataMount, pagination, machineInfo, reportPacks, report, packStructure, multiReport, multiPackStructure} from './StaticData'
|
||||
import { chartsSetup } from '@/store/hooks/Echarts/staticData.js';
|
||||
import { prepareSelects, mergedMachines, setUpdatedDataMachines, colorSelection, loadingPagination, setPagination } from './helpers';
|
||||
import { loadingChartsData, setBarTypesChart, setNextLayoutGroupByKey, setBeforeLayoutGroupByData, typesCharts } from './helpersCharts';
|
||||
import { fetchColumn, prepareSetPackColumns } from '@organisms/PackColumns';
|
||||
import { get } from '../apiHelpers';
|
||||
import {equals, isEmpty, uniq} from 'ramda'
|
||||
import {equals, isEmpty} from 'ramda'
|
||||
|
||||
const initState = {
|
||||
leftTopButtons: leftTopButtons,
|
||||
rightTopButtons: rightTopButtons,
|
||||
searchModes: searchModes,
|
||||
pagination: pagination,
|
||||
toggleFilter: false,
|
||||
openMenuChart: false,
|
||||
initHistory: false,
|
||||
|
||||
selectedSearchMode: searchModes[0],
|
||||
selectedMode: leftTopButtons[0].key,
|
||||
selectedSelects: {},
|
||||
activeFilterBtn: null,
|
||||
activeChartData: null,
|
||||
activeMenuChartData: {openMenuChart: false},
|
||||
selectedPackStruct: null,
|
||||
selectedPackMode: 'askr_logs',
|
||||
|
||||
searchValue: '',
|
||||
selectedData: [],
|
||||
selectsData: [],
|
||||
machinesDataDefault: [],
|
||||
machinesData: [],
|
||||
tableData: [],
|
||||
chartsData: [],
|
||||
chartsMountData: [],
|
||||
mapData: null,
|
||||
machineInfo: null,
|
||||
reportPacks: [],
|
||||
structPackDefault: [],
|
||||
selectPackStructs: [],
|
||||
packData: {},
|
||||
|
||||
historyData: [],
|
||||
historyMachines: [],
|
||||
legendFiltersParams: [],
|
||||
modalMachines: [],
|
||||
};
|
||||
|
||||
const state = {
|
||||
@ -50,400 +9,22 @@ const state = {
|
||||
};
|
||||
|
||||
const getters = {
|
||||
pages: (state) => state.pages,
|
||||
searchModes: (state) => state.searchModes,
|
||||
leftTopButtons: (state) => state.leftTopButtons,
|
||||
rightTopButtons: (state) => state.rightTopButtons,
|
||||
toggleFilter: (state) => state.toggleFilter,
|
||||
openMenuChart: (state) => state.openMenuChart,
|
||||
initHistory: (state) => state.initHistory,
|
||||
|
||||
selectedPage: (state) => state.selectedPage,
|
||||
selectedSearchMode: (state) => state.selectedSearchMode,
|
||||
selectedMode: (state) => state.selectedMode,
|
||||
selectedSelects: (state) => state.selectedSelects,
|
||||
activeFilterBtn: (state) => state.activeFilterBtn,
|
||||
activeChartData: (state) => state.activeChartData,
|
||||
activeMenuChartData: (state) => state.activeMenuChartData,
|
||||
selectedPackStruct: (state) => state.selectedPackStruct,
|
||||
selectedPackMode: (state) => state.selectedPackMode,
|
||||
|
||||
searchValue: (state) => state.searchValue,
|
||||
selectedData: (state) => state.selectedData,
|
||||
selectsData: (state) => state.selectsData,
|
||||
machinesDataDefault: (state) => state.machinesDataDefault,
|
||||
machinesData: (state) => state.machinesData,
|
||||
tableData: (state) => state.tableData,
|
||||
chartsData: (state) => state.chartsData,
|
||||
chartsMountData: (state) => state.chartsMountData,
|
||||
historyData: (state) => state.historyData,
|
||||
historyMachines: (state) => state.historyMachines,
|
||||
legendFiltersParams: (state) => state.legendFiltersParams,
|
||||
pagination: (state) => state.pagination,
|
||||
mapData: (state) => state.mapData,
|
||||
machineInfo: (state) => state.machineInfo,
|
||||
reportPacks: (state) => state.reportPacks,
|
||||
selectPackStructs: (state) => state.selectPackStructs,
|
||||
packData: (state) => state.packData,
|
||||
modalMachines: (state) => state.modalMachines,
|
||||
};
|
||||
|
||||
const mutations = {
|
||||
setPage: (state, updval) => state.selectedPage = updval,
|
||||
setToggleFilter: (state) => state.toggleFilter = !state.toggleFilter,
|
||||
setOpenMenuChart: (state, updval) => state.openMenuChart = updval,
|
||||
setInitHistory: (state, updval) => state.initHistory = updval,
|
||||
|
||||
setSearchMode: (state, updval) => state.selectedSearchMode = updval,
|
||||
setSelectedMode: (state, updval) => state.selectedMode = updval,
|
||||
setSelectedSelects: (state, updval) => state.selectedSelects = updval,
|
||||
setSelectedMachines: (state, updval) => state.selectedMachines = updval,
|
||||
setActiveFilterBtn: (state, updval) => state.activeFilterBtn = updval,
|
||||
setActiveChartData: (state, updval) => state.activeChartData = updval,
|
||||
setActiveMenuChartData: (state, updval) => state.activeMenuChartData = updval,
|
||||
setSelectedPackStruct: (state, updval) => state.selectedPackStruct = updval,
|
||||
setSelectedPackMode: (state, updval) => state.selectedPackMode = updval,
|
||||
|
||||
setSelectsData: (state, updval) => state.selectsData = updval,
|
||||
setSearchValue: (state, updval) => state.searchValue = updval,
|
||||
setSelectedData: (state, updval) => state.selectedData = updval,
|
||||
setMachinesDataDefault: (state, updval) => state.machinesDataDefault = updval,
|
||||
setMachinesData: (state, updval) => state.machinesData = updval,
|
||||
setTableData: (state, updval) => state.tableData = updval,
|
||||
setChartsData: (state, updval) => state.chartsData = updval,
|
||||
setChartsDataMount: (state, updval) => state.chartsMountData = updval,
|
||||
setHistoryData: (state, updval) => state.historyData = updval,
|
||||
setHistoryMachines: (state, updval) => state.historyMachines = updval,
|
||||
setLegendFiltersParams: (state, updval) => state.legendFiltersParams = updval,
|
||||
setPagination: (state, updval) => state.pagination = updval,
|
||||
setMapData: (state, updval) => state.mapData = updval,
|
||||
setMachineInfo: (state, updval) => state.machineInfo = updval,
|
||||
setReportPacks: (state, updval) => state.reportPacks = updval,
|
||||
setStructPackDefault: (state, updval) => state.structPackDefault = updval,
|
||||
setSelectPackStructs: (state, updval) => state.selectPackStructs = updval,
|
||||
setPackData: (state, updval) => state.packData = updval,
|
||||
setModalMachines: (state, updval) => state.modalMachines = updval,
|
||||
resetStore: (state) => {
|
||||
Object.entries(initState).forEach(([k,v]) => {
|
||||
state[k] = v
|
||||
})
|
||||
},
|
||||
for (let key in initState) {
|
||||
state[key] = initState[key]
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
const actions = {
|
||||
uploadData: async ({commit, getters, state}, externalParams) => {
|
||||
try{
|
||||
// const machinesData = toRaw(getters.machinesData)
|
||||
// const machinesDataDefault = toRaw(state.machinesDataDefault)
|
||||
const pagination = toRaw(getters.pagination)
|
||||
// const chartsData = toRaw(state.chartsData)
|
||||
const historyData = externalParams.historyData ? externalParams.historyData : toRaw(state.historyData)
|
||||
const chartsData = !isEmpty(dataMachines) ? dataMachines.filter((machine) => machine.machine_id !== null) : []
|
||||
const chartsMountData = !isEmpty(dataMount) ? dataMount.filter((el) => el.client_type !== null) : []
|
||||
|
||||
const updatedData = loadingChartsData({chartsSetup: chartsSetup, data: chartsData, dataMount: chartsMountData, prevGroupByData: {}, prevGroupByFilters: {}})
|
||||
const filteredSelects = prepareSelects(selects, selectors)
|
||||
const mergedData = mergedMachines(dataMachines, historyData)
|
||||
const currentTableData = loadingPagination(dataMachines, pagination)
|
||||
const currentSelectedMode = externalParams.urlParams ? externalParams.urlParams : 'cards'
|
||||
// console.log('updatedData', updatedData)
|
||||
|
||||
commit('setSelectedMode', currentSelectedMode)
|
||||
commit('setTableData', currentTableData)
|
||||
commit('setPagination', pagination)
|
||||
commit('setSelectsData', filteredSelects)
|
||||
commit('setChartsData', updatedData)
|
||||
commit('setChartsDataMount', chartsMountData)
|
||||
commit('setMachinesDataDefault', dataMachines)
|
||||
commit('setMachinesData', mergedData)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updateSearch: async ({commit, getters, state}, updatedSearchValue) => {
|
||||
try {
|
||||
const selectedSearchMode = toRaw(getters.selectedSearchMode)
|
||||
const selectedData = toRaw(getters.selectedData)
|
||||
const machinesDataDefault = toRaw(state.machinesDataDefault)
|
||||
// const machinesData = toRaw(state.machinesData)
|
||||
const isEmptyParams = isEmpty(selectedData)
|
||||
let updatedFilters = []
|
||||
if (updatedSearchValue) {
|
||||
console.log('isEmptyParams', isEmptyParams)
|
||||
console.log('selectedData', selectedData)
|
||||
// updatedFilters = isEmptyParams ? [{[selectedSearchMode.key]: updatedSearchValue}] : [...selectedData.filter, {[selectedSearchMode.key]: updatedSearchValue}]
|
||||
updatedFilters = [{[selectedSearchMode.key]: updatedSearchValue}]
|
||||
}
|
||||
if (!updatedSearchValue) {
|
||||
updatedFilters = !isEmptyParams ? selectedData.filter.filter((el) => !el[selectedSearchMode.key]) : selectedData
|
||||
}
|
||||
const updatedFiltersForSend = {filter: updatedFilters}
|
||||
// const currentData = !isEmptyParams && updatedSearchValue && !isEmpty(machinesData) ? machinesData : machinesDataDefault
|
||||
const updatedData = setUpdatedDataMachines(machinesDataDefault, updatedFiltersForSend)
|
||||
const updatedDataCharts = loadingChartsData({chartsSetup: chartsSetup, data: updatedData, dataMount: dataMount, prevGroupByData: {}, prevGroupByFilters: {}})
|
||||
commit('setSelectedData', updatedFiltersForSend)
|
||||
commit('setSelectedSelects', {})
|
||||
commit('setSearchValue', updatedSearchValue)
|
||||
commit('setMachinesData', updatedData)
|
||||
commit('setChartsData', updatedDataCharts)
|
||||
colorSelection(selectedSearchMode.key, updatedSearchValue)
|
||||
// console.log('updatedFilters', updatedFilters)
|
||||
// console.log('updatedData', updatedData)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updateSelects: async ({dispatch, commit, getters, state}, updatedSelect) => {
|
||||
try {
|
||||
const allSelects = toRaw(getters.selectsData)
|
||||
const selectedSelects = toRaw(getters.selectedSelects)
|
||||
const machinesDataDefault = toRaw(state.machinesDataDefault)
|
||||
dispatch('updateSearch', '')
|
||||
const curUpdatedSelectName = updatedSelect.key === 'set' ? updatedSelect.value[0].name : updatedSelect.value.name
|
||||
let updatedSelects = {}
|
||||
for (let i = 0; i < allSelects.length; i++) {
|
||||
const curSelect = allSelects[i]
|
||||
const newSelected = curSelect.data.find((el) => el.name === curUpdatedSelectName)
|
||||
if (!newSelected && (selectedSelects[curSelect.key] && selectedSelects[curSelect.key].length > 0)) {
|
||||
updatedSelects[curSelect.key] = selectedSelects[curSelect.key]
|
||||
}
|
||||
if (updatedSelect.key === 'removed' && newSelected && (selectedSelects[curSelect.key] && selectedSelects[curSelect.key].length === 0)) {
|
||||
break
|
||||
}
|
||||
if (updatedSelect.key === 'removed' && newSelected && (selectedSelects[curSelect.key] && selectedSelects[curSelect.key].length > 0)) {
|
||||
updatedSelects[curSelect.key] = selectedSelects[curSelect.key].filter((el) => el.name !== newSelected.name)
|
||||
break
|
||||
}
|
||||
if (updatedSelect.key === 'set' && newSelected && (selectedSelects[curSelect.key] && selectedSelects[curSelect.key].length > 0)) {
|
||||
updatedSelects[curSelect.key] = selectedSelects[curSelect.key]
|
||||
break
|
||||
}
|
||||
}
|
||||
const updatedFilters = Object.entries(updatedSelects).map(([key, value]) => ({[key]: value.map((el) => el.name)}))
|
||||
// const mergedFilters = searchValue ? [...updatedFilters, {[selectedSearchMode.key]: searchValue}] : updatedFilters
|
||||
// console.log('mergedFilters', mergedFilters)
|
||||
// const currentData = !isEmptyParams ? machinesData : machinesDataDefault
|
||||
const updatedFiltersForSend = {filter: updatedFilters}
|
||||
const updatedData = setUpdatedDataMachines(machinesDataDefault, updatedFiltersForSend)
|
||||
const updatedDataCharts = loadingChartsData({chartsSetup: chartsSetup, data: updatedData, dataMount: dataMount, prevGroupByData: {}, prevGroupByFilters: {}})
|
||||
// console.log('updatedData', updatedData)
|
||||
// console.log('updatedFilters', updatedFilters)
|
||||
commit('setMachinesData', updatedData)
|
||||
commit('setChartsData', updatedDataCharts)
|
||||
commit('setSelectedSelects', updatedSelects)
|
||||
commit('setSelectedData', updatedFiltersForSend)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updateCharts: async ({commit, getters, state}, updatedData) => {
|
||||
try {
|
||||
switch(updatedData.action) {
|
||||
case 'nextLayoutChart':
|
||||
// console.log('updatedDataNext', updatedData)
|
||||
const prevGroupByFiltersNext = updatedData.prevGroupByFilters
|
||||
const updatedFiltersNext = {...prevGroupByFiltersNext, ...updatedData.prevGroupByData}
|
||||
const prevGroupByValue = updatedData.prevGroupByData.type ? updatedData.prevGroupByData.type : null
|
||||
const groupByKeyNext = setNextLayoutGroupByKey(updatedData.groupByKey, prevGroupByValue)
|
||||
if (groupByKeyNext) {
|
||||
const activeChartData = {id: updatedData.id, data: updatedData.data, groupByKey: groupByKeyNext, filterKey: updatedData.filterKey, type: updatedData.type, groupByValue: updatedData.groupByValue}
|
||||
const newData = setBarTypesChart(activeChartData, updatedData.prevGroupByData, updatedFiltersNext, state.machinesDataDefault, toRaw(state.chartsData))
|
||||
return commit('setActiveChartData', {...activeChartData, data: newData})
|
||||
}
|
||||
break
|
||||
case 'beforeLayoutChart':
|
||||
// console.log('updatedDataBefore', updatedData)
|
||||
const prevGroupByData = updatedData.groupByInfo.prevGroupByData
|
||||
const prevGroupByFiltersBefore = updatedData.groupByInfo.prevGroupByFilters
|
||||
const groupByKeyBefore = Object.keys(prevGroupByData)[0] // Получаем уже предыдущее значение ключа
|
||||
delete prevGroupByFiltersBefore[groupByKeyBefore] // Удаляем значение после вычисления prevGroupByData, так как подымаемся на уровень выше, сохраняя актуальное значение для фильтрации
|
||||
const isOnlyFiltersParams = equals(prevGroupByData, prevGroupByFiltersBefore)
|
||||
const updatedPrevGroupByDataBefore = isOnlyFiltersParams ? {} : setBeforeLayoutGroupByData(prevGroupByData, prevGroupByFiltersBefore, updatedData.groupByInfo.type)
|
||||
if (groupByKeyBefore) {
|
||||
const activeChartData = {id: updatedData.id, data: updatedData.data, groupByKey: groupByKeyBefore, filterKey: updatedData.filterKey, type: updatedData.groupByInfo.type, groupByValue: updatedData.groupByInfo.groupByValue}
|
||||
const newData = setBarTypesChart(activeChartData, updatedPrevGroupByDataBefore, prevGroupByFiltersBefore, state.machinesDataDefault, toRaw(state.chartsData))
|
||||
return commit('setActiveChartData', {...activeChartData, data: newData})
|
||||
}
|
||||
break
|
||||
case 'openMenuChart':
|
||||
// console.log('updatedDataOpen', updatedData)
|
||||
const openMenuChart = toRaw(state.activeMenuChartData.openMenuChart)
|
||||
updatedData.groupByInfo.data[0].type = updatedData.groupByInfo.type
|
||||
const activeChartDataMenu = {chartId: updatedData.groupByInfo.chartId, data: updatedData.groupByInfo.data, groupByKey: updatedData.groupByInfo.groupByKey, filterKey: updatedData.groupByInfo.filterKey, type: updatedData.groupByInfo.type, groupByValue: updatedData.groupByInfo.groupByValue}
|
||||
const newDataMenu = setBarTypesChart(activeChartDataMenu, updatedData.groupByInfo.prevGroupByData, updatedData.groupByInfo.prevGroupByFilters, state.machinesDataDefault, toRaw(state.chartsData))
|
||||
const isNotTypesChartsMenu = typesCharts(updatedData.groupByInfo.type)
|
||||
const toggleActiveMenuChartData = {openMenuChart: !openMenuChart, groupByInfo: {...activeChartDataMenu, data: isNotTypesChartsMenu ? updatedData.groupByInfo.data[0] : newDataMenu}}
|
||||
commit('setActiveMenuChartData', toggleActiveMenuChartData)
|
||||
break
|
||||
case 'downloadChart':
|
||||
// console.log('updatedDataDownload', updatedData)
|
||||
const activeChartDataDownload = {chartId: updatedData.groupByInfo.chartId, isDownloadChart: updatedData.groupByInfo.isDownloadChart, data: updatedData.groupByInfo.data, groupByKey: updatedData.groupByInfo.groupByKey, prevGroupByData: updatedData.groupByInfo.prevGroupByData, prevGroupByFilters: updatedData.groupByInfo.prevGroupByFilters, filterKey: updatedData.groupByInfo.filterKey, type: updatedData.groupByInfo.type, groupByValue: updatedData.groupByInfo.groupByValue}
|
||||
const newDataDownload = setBarTypesChart(activeChartDataDownload, updatedData.groupByInfo.prevGroupByData, updatedData.groupByInfo.prevGroupByFilters, state.machinesDataDefault, toRaw(state.chartsData))
|
||||
const isNotTypesChartsDownload = typesCharts(updatedData.groupByInfo.type)
|
||||
const downloadActiveMenuChartData = {openMenuChart: false, groupByInfo: {...updatedData.groupByInfo, data: isNotTypesChartsDownload ? updatedData.groupByInfo.data[0] : newDataDownload}}
|
||||
commit('setActiveMenuChartData', downloadActiveMenuChartData)
|
||||
break
|
||||
case 'legendFiltersParams':
|
||||
commit('setLegendFiltersParams', updatedData.data)
|
||||
default: return false
|
||||
}
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updatePagination: async ({commit, getters, state}, updatedData) => {
|
||||
try {
|
||||
const pagination = toRaw(getters.pagination)
|
||||
const machinesDataDefault = toRaw(state.machinesDataDefault)
|
||||
const newData = setPagination(machinesDataDefault, pagination, updatedData)
|
||||
console.log('currentTableData', newData.currentTableData)
|
||||
commit('setTableData', newData.currentTableData)
|
||||
commit('setPagination', newData.updatedPagination)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
openMapModal: async ({commit, state}, machine) => {
|
||||
try {
|
||||
// Добавить запрос на получение координат
|
||||
/*
|
||||
machine_id = machine["machine_id"]
|
||||
last_loc = Communicator.PackFetcher.last_locations([machine_id])
|
||||
|
||||
*/
|
||||
const coords = [44.510345, 48.771025]
|
||||
const params = {machine: machine, coords: coords}
|
||||
commit('setMapData', params)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
openDataModal: async ({commit, state}, machine) => {
|
||||
try {
|
||||
|
||||
// Добавить запрос на получение пакетов и информации о машине
|
||||
/*
|
||||
curr_machine_info = Communicator.Devices.askr_devices(where: "imei = #{imei}")
|
||||
|
||||
[{_, machine_name} | machine_info] =
|
||||
Analyzer.reparse_machine_info(curr_machine_info, :imei)
|
||||
|> Enum.reduce([], fn
|
||||
{"Текущая машина", _} = cur, acc -> [cur] ++ acc
|
||||
cur, acc -> acc ++ [cur]
|
||||
end)
|
||||
|
||||
report_packs =
|
||||
Enum.reduce(curr_machine_info, [], fn
|
||||
%{imei: imei}, acc ->
|
||||
acc ++
|
||||
PacksFuncs.get_pack_nums(
|
||||
imei,
|
||||
Timex.now() |> Timex.beginning_of_day(),
|
||||
Timex.now() |> Timex.end_of_day()
|
||||
)
|
||||
|
||||
_, acc ->
|
||||
acc
|
||||
end)
|
||||
|> DynamicStructDestroyer.destroy()
|
||||
|> Enum.sort_by(& &1.packNumber)
|
||||
|
||||
*/
|
||||
|
||||
commit('setMachineInfo', machineInfo)
|
||||
commit('setReportPacks', reportPacks)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
loadPack: async ({commit, state}, packNumber) => {
|
||||
try {
|
||||
|
||||
/* Получение данных о пакете
|
||||
report =
|
||||
Enum.reduce(curr_machine_info, [], fn
|
||||
%{imei: imei}, acc ->
|
||||
acc ++ PacksFuncs.upload_machine_data(imei, pack_number, dt_start, dt_finish, 30) // Огреничение до 30 машин askr_logs
|
||||
|
||||
_, acc ->
|
||||
acc
|
||||
end)
|
||||
|> DynamicStructDestroyer.destroy()
|
||||
|
||||
Получение структуры пакета
|
||||
|
||||
pack_structs = Helper.get_structs_of_pack(pack_number)
|
||||
|
||||
def get_structs_of_pack(pack_number) do
|
||||
LiveMonitor.Packages.list_pack_struct()
|
||||
|> Enum.filter(&(&1.pack == pack_number))
|
||||
end
|
||||
|
||||
*/
|
||||
console.log('packNumber', packNumber)
|
||||
// const dataSource = !isEmpty(report) ? report.askr_logs.sort((a, b) => b.pack_dt - a.pack_dt) : []
|
||||
const dataSource = !isEmpty(multiReport) ? multiReport.askr_logs.sort((a, b) => b.pack_dt - a.pack_dt).slice(0, 30) : [] // Огреничение до 30 машин askr_logs
|
||||
// const columns = fetchColumn(packStructure, report)
|
||||
const columns = fetchColumn(multiPackStructure, multiReport)
|
||||
// const selectedPackStruct = packStructure.map((item) => ({id: item.id, name: item.name, packNumber: packNumber}))
|
||||
console.log('multiPackStructure', multiPackStructure)
|
||||
console.log('multiReport', multiReport)
|
||||
console.log('columns', columns)
|
||||
const selectPackStructs = multiPackStructure.map((item) => ({id: item.id, name: item.name, packNumber: packNumber}))
|
||||
commit('setStructPackDefault', multiPackStructure)
|
||||
commit('setSelectPackStructs', selectPackStructs)
|
||||
commit('setSelectedPackStruct', selectPackStructs[0])
|
||||
commit('setPackData', {dataSource, columns, height: '550px'})
|
||||
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updateModePack: async ({commit, getters, state}, updatedMode) => {
|
||||
try {
|
||||
const structPackDefault = toRaw(state.structPackDefault)
|
||||
const currentReport = multiReport[updatedMode] ? multiReport[updatedMode] : []
|
||||
const columns = updatedMode === 'askr_logs' ? fetchColumn(structPackDefault, multiReport, null) : prepareSetPackColumns(updatedMode, currentReport)
|
||||
console.log('columns', columns)
|
||||
console.log('currentReport', currentReport)
|
||||
commit('setSelectedPackMode', updatedMode)
|
||||
commit('setPackData', {dataSource: currentReport, columns, height: '550px'})
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
updateSelectStruct: async ({commit, getters, state}, updatedStructId) => {
|
||||
try {
|
||||
const updatedMode = toRaw(getters.selectedPackMode)
|
||||
const currentReport = toRaw(state.packData.dataSource)
|
||||
const structPackDefault = toRaw(state.structPackDefault)
|
||||
const selectPackStructs = toRaw(getters.selectPackStructs)
|
||||
const [selectedPackStruct] = selectPackStructs.filter((item) => item.id === updatedStructId)
|
||||
console.log('selectedPackStruct', selectedPackStruct)
|
||||
// const currentReport = multiReport[updatedMode] ? multiReport[updatedMode] : []
|
||||
const columns = updatedMode === 'askr_logs' ? fetchColumn(structPackDefault, multiReport, updatedStructId) : prepareSetPackColumns(updatedMode, currentReport)
|
||||
console.log('updatedMode', updatedMode)
|
||||
console.log('structPackDefault', structPackDefault)
|
||||
console.log('columns', columns)
|
||||
console.log('currentReport', currentReport)
|
||||
commit('setSelectedPackStruct', selectedPackStruct)
|
||||
commit('setPackData', {dataSource: currentReport, columns, height: '550px'})
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
},
|
||||
clearFilters: async ({commit, state}) => {
|
||||
try {
|
||||
const machinesDataDefault = toRaw(state.machinesDataDefault)
|
||||
const updatedFiltersForSend = {filter: []}
|
||||
const updatedData = setUpdatedDataMachines(machinesDataDefault, updatedFiltersForSend)
|
||||
const updatedDataCharts = loadingChartsData({chartsSetup: chartsSetup, data: updatedData, dataMount: dataMount, prevGroupByData: {}, prevGroupByFilters: {}})
|
||||
commit('setSelectedSelects', {})
|
||||
commit('setSelectedData', [])
|
||||
commit('setMachinesData', updatedData)
|
||||
commit('setChartsData', updatedDataCharts)
|
||||
} catch (err) {
|
||||
console.error(err)
|
||||
}
|
||||
saveModalMachines: ({commit}, machines) => {
|
||||
commit('setModalMachines', machines)
|
||||
},
|
||||
resetStore: ({commit}) => {
|
||||
commit('resetStore')
|
||||
|
||||
@ -1,2 +1,22 @@
|
||||
import {describe, test, expect} from 'vitest'
|
||||
import AdapterOfMachines from "@adapters/AdapterOfMachines.js"
|
||||
import {de} from 'vitest'
|
||||
import axios from 'axios'
|
||||
import {apiModalListMachines, appModalListMachines} from "@mocks/machines.js"
|
||||
|
||||
vi.mock('axios')
|
||||
|
||||
|
||||
describe('AdapterOfMachines', () => {
|
||||
axios.post.mockResolvedValue({data: apiModalListMachines})
|
||||
|
||||
test('AdapterOfMachines should be a object', () => {
|
||||
const adapterOfMachines = new AdapterOfMachines('')
|
||||
expect(typeof adapterOfMachines).toBe('object')
|
||||
})
|
||||
|
||||
test('test of fetchMachines', async () => {
|
||||
const adapterOfMachines = new AdapterOfMachines('http://localhost:5444')
|
||||
const result = await adapterOfMachines.getModalMachines()
|
||||
expect(result).toEqual(appModalListMachines)
|
||||
})
|
||||
})
|
||||
19
live_monitor_vue/tests/helpers/apiHelpers.test.js
Normal file
19
live_monitor_vue/tests/helpers/apiHelpers.test.js
Normal file
@ -0,0 +1,19 @@
|
||||
import axios from 'axios'
|
||||
import {describe, test, expect, vi} from 'vitest'
|
||||
import {apiModalListMachines} from "@mocks/machines.js"
|
||||
import {scandApiRequest} from "@helpers/apiHelpers.js"
|
||||
|
||||
vi.mock('axios')
|
||||
|
||||
describe('scandApiRequest', () => {
|
||||
test('scandApiRequest should be a function', () => {
|
||||
expect(typeof scandApiRequest).toBe('function')
|
||||
})
|
||||
|
||||
test('scandApiRequest should return a promise', async () => {
|
||||
axios.post.mockResolvedValue({data: apiModalListMachines})
|
||||
const result = await scandApiRequest('ScandApi.LiveMonitor.Machines', 'select_machines', [])
|
||||
expect(result).toEqual(apiModalListMachines)
|
||||
})
|
||||
})
|
||||
|
||||
41
live_monitor_vue/tests/mocks/machines.js
Normal file
41
live_monitor_vue/tests/mocks/machines.js
Normal file
@ -0,0 +1,41 @@
|
||||
import {vi} from 'vitest'
|
||||
|
||||
const apiModalMachine = {
|
||||
"zav_nomer": "007",
|
||||
"type": "АВФ-1М.2",
|
||||
"railway_name": "РЖД",
|
||||
"org_name": "ДКРЭ",
|
||||
"nomer_zn8": 19413152,
|
||||
"machine_type": "АВФ-1М.2 № 007",
|
||||
"machine_id": 5862,
|
||||
"imei": 868136032634217,
|
||||
"device_number": "КР190617",
|
||||
"device_id": 6248
|
||||
}
|
||||
|
||||
const appModalMachine = {
|
||||
"zavNomer": "007",
|
||||
"type": "АВФ-1М.2",
|
||||
"railwayName": "РЖД",
|
||||
"orgName": "ДКРЭ",
|
||||
"nomerZn8": 19413152,
|
||||
"machineType": "АВФ-1М.2 № 007",
|
||||
"machineId": 5862,
|
||||
"imei": 868136032634217,
|
||||
"deviceNumber": "КР190617",
|
||||
"deviceId": 6248
|
||||
}
|
||||
|
||||
const apiModalListMachines = [apiModalMachine]
|
||||
const appModalListMachines = [appModalMachine]
|
||||
|
||||
class AdapterOfMachines {
|
||||
constructor(url) {
|
||||
this.url = url
|
||||
}
|
||||
getModalMachines (){
|
||||
return appModalListMachines
|
||||
}
|
||||
}
|
||||
|
||||
export { apiModalMachine, appModalMachine, apiModalListMachines, appModalListMachines, AdapterOfMachines}
|
||||
38
live_monitor_vue/tests/services/ServiceOfMachines.test.js
Normal file
38
live_monitor_vue/tests/services/ServiceOfMachines.test.js
Normal file
@ -0,0 +1,38 @@
|
||||
import {expect, describe, vi, test, beforeEach} from 'vitest'
|
||||
import ServiceOfMachines from "@services/ServiceOfMachines.js"
|
||||
import {AdapterOfMachines, appModalListMachines} from "@mocks/machines.js"
|
||||
import { createStore } from "vuex"
|
||||
import { store as machines } from '@/store/modules/machines';
|
||||
|
||||
describe('test ServiceOfMachines', () => {
|
||||
const adapterOfMachines = new AdapterOfMachines('')
|
||||
const store = createStore({
|
||||
modules: {
|
||||
machines
|
||||
}
|
||||
})
|
||||
|
||||
beforeEach(() => {
|
||||
store.dispatch('machines/resetStore')
|
||||
})
|
||||
|
||||
const serviceOfMachines = new ServiceOfMachines(adapterOfMachines, store)
|
||||
|
||||
test('test fetchModalMachines', async () => {
|
||||
const result = await serviceOfMachines.fetchModalMachines()
|
||||
expect(result).toEqual(appModalListMachines)
|
||||
})
|
||||
|
||||
test('test putModalMachines', async () => {
|
||||
await serviceOfMachines.putModalMachines(appModalListMachines)
|
||||
const result = store.getters['machines/modalMachines']
|
||||
expect(result).toEqual(appModalListMachines)
|
||||
})
|
||||
|
||||
test('test makeFetchAndPutModalMachines', async () => {
|
||||
const funcResult = await serviceOfMachines.makeFetchAndPutModalMachines()
|
||||
const storeResult = store.getters['machines/modalMachines']
|
||||
expect(funcResult).toEqual(appModalListMachines)
|
||||
expect(storeResult).toEqual(appModalListMachines)
|
||||
})
|
||||
})
|
||||
24
live_monitor_vue/tests/store/machines.test.js
Normal file
24
live_monitor_vue/tests/store/machines.test.js
Normal file
@ -0,0 +1,24 @@
|
||||
import {describe, test, expect, beforeEach} from 'vitest'
|
||||
import {createStore} from "vuex"
|
||||
import { store as machines } from '@/store/modules/machines';
|
||||
describe('machines store', () => {
|
||||
const store = createStore({
|
||||
modules: {
|
||||
machines
|
||||
}
|
||||
})
|
||||
|
||||
beforeEach(() => {
|
||||
store.dispatch('machines/resetStore')
|
||||
})
|
||||
|
||||
test('machines should be a object', () => {
|
||||
expect(typeof machines).toBe('object')
|
||||
})
|
||||
|
||||
test('modalMachines should be a array', () => {
|
||||
expect(store.getters['machines/modalMachines']).toEqual([])
|
||||
store.dispatch('machines/saveModalMachines', [1, 2, 3])
|
||||
expect(store.getters['machines/modalMachines']).toEqual([1, 2, 3])
|
||||
})
|
||||
})
|
||||
@ -3,7 +3,7 @@
|
||||
|
||||
|
||||
"1-toolkits-helpers@../repo/1-toolkits-helpers/":
|
||||
version "0.0.5"
|
||||
version "0.0.6"
|
||||
|
||||
"@aashutoshrathi/word-wrap@^1.2.3":
|
||||
version "1.2.6"
|
||||
@ -232,6 +232,13 @@
|
||||
wrap-ansi "^8.1.0"
|
||||
wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
|
||||
|
||||
"@jest/schemas@^29.6.3":
|
||||
version "29.6.3"
|
||||
resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz#430b5ce8a4e0044a7e3819663305a7b3091c8e03"
|
||||
integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
|
||||
dependencies:
|
||||
"@sinclair/typebox" "^0.27.8"
|
||||
|
||||
"@jridgewell/gen-mapping@^0.3.2":
|
||||
version "0.3.5"
|
||||
resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36"
|
||||
@ -285,6 +292,11 @@
|
||||
"@nodelib/fs.scandir" "2.1.5"
|
||||
fastq "^1.6.0"
|
||||
|
||||
"@one-ini/wasm@0.1.1":
|
||||
version "0.1.1"
|
||||
resolved "https://registry.npmjs.org/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323"
|
||||
integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==
|
||||
|
||||
"@petamoriken/float16@^3.4.7":
|
||||
version "3.8.6"
|
||||
resolved "https://registry.npmjs.org/@petamoriken/float16/-/float16-3.8.6.tgz#580701cb97a510882342333d31c7cbfd9e14b4f4"
|
||||
@ -365,6 +377,11 @@
|
||||
resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.13.0.tgz#6abd79db7ff8d01a58865ba20a63cfd23d9e2a10"
|
||||
integrity sha512-UKXUQNbO3DOhzLRwHSpa0HnhhCgNODvfoPWv2FCXme8N/ANFfhIPMGuOT+QuKd16+B5yxZ0HdpNlqPvTMS1qfw==
|
||||
|
||||
"@sinclair/typebox@^0.27.8":
|
||||
version "0.27.8"
|
||||
resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz#6667fac16c436b5434a387a34dedb013198f6e6e"
|
||||
integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
|
||||
|
||||
"@tailwindcss/forms@^0.5.7":
|
||||
version "0.5.7"
|
||||
resolved "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.7.tgz#db5421f062a757b5f828bc9286ba626c6685e821"
|
||||
@ -372,7 +389,7 @@
|
||||
dependencies:
|
||||
mini-svg-data-uri "^1.2.3"
|
||||
|
||||
"@types/estree@1.0.5":
|
||||
"@types/estree@1.0.5", "@types/estree@^1.0.0":
|
||||
version "1.0.5"
|
||||
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4"
|
||||
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
|
||||
@ -392,6 +409,50 @@
|
||||
resolved "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.6.2.tgz#057d2ded94c4e71b94e9814f92dcd9306317aa46"
|
||||
integrity sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==
|
||||
|
||||
"@vitest/expect@1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmjs.org/@vitest/expect/-/expect-1.4.0.tgz#d64e17838a20007fecd252397f9b96a1ca81bfb0"
|
||||
integrity sha512-Jths0sWCJZ8BxjKe+p+eKsoqev1/T8lYcrjavEaz8auEJ4jAVY0GwW3JKmdVU4mmNPLPHixh4GNXP7GFtAiDHA==
|
||||
dependencies:
|
||||
"@vitest/spy" "1.4.0"
|
||||
"@vitest/utils" "1.4.0"
|
||||
chai "^4.3.10"
|
||||
|
||||
"@vitest/runner@1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmjs.org/@vitest/runner/-/runner-1.4.0.tgz#907c2d17ad5975b70882c25ab7a13b73e5a28da9"
|
||||
integrity sha512-EDYVSmesqlQ4RD2VvWo3hQgTJ7ZrFQ2VSJdfiJiArkCerDAGeyF1i6dHkmySqk573jLp6d/cfqCN+7wUB5tLgg==
|
||||
dependencies:
|
||||
"@vitest/utils" "1.4.0"
|
||||
p-limit "^5.0.0"
|
||||
pathe "^1.1.1"
|
||||
|
||||
"@vitest/snapshot@1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.4.0.tgz#2945b3fb53767a3f4f421919e93edfef2935b8bd"
|
||||
integrity sha512-saAFnt5pPIA5qDGxOHxJ/XxhMFKkUSBJmVt5VgDsAqPTX6JP326r5C/c9UuCMPoXNzuudTPsYDZCoJ5ilpqG2A==
|
||||
dependencies:
|
||||
magic-string "^0.30.5"
|
||||
pathe "^1.1.1"
|
||||
pretty-format "^29.7.0"
|
||||
|
||||
"@vitest/spy@1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmjs.org/@vitest/spy/-/spy-1.4.0.tgz#cf953c93ae54885e801cbe6b408a547ae613f26c"
|
||||
integrity sha512-Ywau/Qs1DzM/8Uc+yA77CwSegizMlcgTJuYGAi0jujOteJOUf1ujunHThYo243KG9nAyWT3L9ifPYZ5+As/+6Q==
|
||||
dependencies:
|
||||
tinyspy "^2.2.0"
|
||||
|
||||
"@vitest/utils@1.4.0":
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmjs.org/@vitest/utils/-/utils-1.4.0.tgz#ea6297e0d329f9ff0a106f4e1f6daf3ff6aad3f0"
|
||||
integrity sha512-mx3Yd1/6e2Vt/PUC98DcqTirtfxUyAZ32uK82r8rZzbtBeBo+nqgnjx/LvqQdWsrvNtm14VmurNgcf4nqY5gJg==
|
||||
dependencies:
|
||||
diff-sequences "^29.6.3"
|
||||
estree-walker "^3.0.3"
|
||||
loupe "^2.3.7"
|
||||
pretty-format "^29.7.0"
|
||||
|
||||
"@vue/compiler-core@3.4.21":
|
||||
version "3.4.21"
|
||||
resolved "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.21.tgz#868b7085378fc24e58c9aed14c8d62110a62be1a"
|
||||
@ -476,6 +537,14 @@
|
||||
resolved "https://registry.npmjs.org/@vue/shared/-/shared-3.4.21.tgz#de526a9059d0a599f0b429af7037cd0c3ed7d5a1"
|
||||
integrity sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g==
|
||||
|
||||
"@vue/test-utils@^2.4.5":
|
||||
version "2.4.5"
|
||||
resolved "https://registry.npmjs.org/@vue/test-utils/-/test-utils-2.4.5.tgz#010aa4debe6602d83dc75f233b397092742105a2"
|
||||
integrity sha512-oo2u7vktOyKUked36R93NB7mg2B+N7Plr8lxp2JBGwr18ch6EggFjixSCdIVVLkT6Qr0z359Xvnafc9dcKyDUg==
|
||||
dependencies:
|
||||
js-beautify "^1.14.9"
|
||||
vue-component-type-helpers "^2.0.0"
|
||||
|
||||
"@vueuse/core@9.3.0":
|
||||
version "9.3.0"
|
||||
resolved "https://registry.npmjs.org/@vueuse/core/-/core-9.3.0.tgz#74d855bd19cb5eadd2edb30c871918fac881e8b8"
|
||||
@ -498,12 +567,27 @@
|
||||
dependencies:
|
||||
vue-demi "*"
|
||||
|
||||
D@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/D/-/D-1.0.0.tgz#c348a4e034f72847be51206fc530fc089e9cc2a9"
|
||||
integrity sha512-nQvrCBu7K2pSSEtIM0EEF03FVjcczCXInMt3moLNFbjlWx6bZrX72uT6/1uAXDbnzGUAx9gTyDiQ+vrFi663oA==
|
||||
|
||||
abbrev@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf"
|
||||
integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==
|
||||
|
||||
acorn-jsx@^5.3.2:
|
||||
version "5.3.2"
|
||||
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
|
||||
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
|
||||
|
||||
acorn@^8.9.0:
|
||||
acorn-walk@^8.3.2:
|
||||
version "8.3.2"
|
||||
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz#7703af9415f1b6db9315d6895503862e231d34aa"
|
||||
integrity sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==
|
||||
|
||||
acorn@^8.11.3, acorn@^8.9.0:
|
||||
version "8.11.3"
|
||||
resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz#71e0b14e13a4ec160724b38fb7b0f233b1b81d7a"
|
||||
integrity sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==
|
||||
@ -535,6 +619,11 @@ ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
||||
dependencies:
|
||||
color-convert "^2.0.1"
|
||||
|
||||
ansi-styles@^5.0.0:
|
||||
version "5.2.0"
|
||||
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b"
|
||||
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
|
||||
|
||||
ansi-styles@^6.1.0:
|
||||
version "6.2.1"
|
||||
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz#0e62320cf99c21afff3b3012192546aacbfb05c5"
|
||||
@ -563,6 +652,11 @@ argparse@^2.0.1:
|
||||
resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
|
||||
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
|
||||
|
||||
assertion-error@^1.1.0:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b"
|
||||
integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==
|
||||
|
||||
asynckit@^0.4.0:
|
||||
version "0.4.0"
|
||||
resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
|
||||
@ -636,6 +730,11 @@ browserslist@^4.23.0:
|
||||
node-releases "^2.0.14"
|
||||
update-browserslist-db "^1.0.13"
|
||||
|
||||
cac@^6.7.14:
|
||||
version "6.7.14"
|
||||
resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz#804e1e6f506ee363cb0e3ccbb09cad5dd9870959"
|
||||
integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
|
||||
|
||||
callsites@^3.0.0:
|
||||
version "3.1.0"
|
||||
resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73"
|
||||
@ -651,6 +750,19 @@ caniuse-lite@^1.0.30001587, caniuse-lite@^1.0.30001599:
|
||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001600.tgz#93a3ee17a35aa6a9f0c6ef1b2ab49507d1ab9079"
|
||||
integrity sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==
|
||||
|
||||
chai@^4.3.10:
|
||||
version "4.4.1"
|
||||
resolved "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1"
|
||||
integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==
|
||||
dependencies:
|
||||
assertion-error "^1.1.0"
|
||||
check-error "^1.0.3"
|
||||
deep-eql "^4.1.3"
|
||||
get-func-name "^2.0.2"
|
||||
loupe "^2.3.6"
|
||||
pathval "^1.1.1"
|
||||
type-detect "^4.0.8"
|
||||
|
||||
chalk@^4.0.0:
|
||||
version "4.1.2"
|
||||
resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
|
||||
@ -659,6 +771,13 @@ chalk@^4.0.0:
|
||||
ansi-styles "^4.1.0"
|
||||
supports-color "^7.1.0"
|
||||
|
||||
check-error@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694"
|
||||
integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==
|
||||
dependencies:
|
||||
get-func-name "^2.0.2"
|
||||
|
||||
chokidar@^3.5.3:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b"
|
||||
@ -723,6 +842,11 @@ combined-stream@^1.0.8:
|
||||
dependencies:
|
||||
delayed-stream "~1.0.0"
|
||||
|
||||
commander@^10.0.0:
|
||||
version "10.0.1"
|
||||
resolved "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
|
||||
integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
|
||||
|
||||
commander@^4.0.0:
|
||||
version "4.1.1"
|
||||
resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz#9fd602bd936294e9e9ef46a3f4d6964044b18068"
|
||||
@ -733,7 +857,15 @@ concat-map@0.0.1:
|
||||
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
|
||||
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
|
||||
|
||||
cross-spawn@^7.0.0, cross-spawn@^7.0.2:
|
||||
config-chain@^1.1.13:
|
||||
version "1.1.13"
|
||||
resolved "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
|
||||
integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
|
||||
dependencies:
|
||||
ini "^1.3.4"
|
||||
proto-list "~1.2.1"
|
||||
|
||||
cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
|
||||
version "7.0.3"
|
||||
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
|
||||
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
|
||||
@ -759,6 +891,13 @@ debug@^4.3.1, debug@^4.3.2, debug@^4.3.4:
|
||||
dependencies:
|
||||
ms "2.1.2"
|
||||
|
||||
deep-eql@^4.1.3:
|
||||
version "4.1.3"
|
||||
resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz#7c7775513092f7df98d8df9996dd085eb668cc6d"
|
||||
integrity sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==
|
||||
dependencies:
|
||||
type-detect "^4.0.0"
|
||||
|
||||
deep-is@^0.1.3:
|
||||
version "0.1.4"
|
||||
resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831"
|
||||
@ -774,6 +913,11 @@ didyoumean@^1.2.2:
|
||||
resolved "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz#989346ffe9e839b4555ecf5666edea0d3e8ad037"
|
||||
integrity sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==
|
||||
|
||||
diff-sequences@^29.6.3:
|
||||
version "29.6.3"
|
||||
resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
|
||||
integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
|
||||
|
||||
dlv@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79"
|
||||
@ -804,6 +948,16 @@ echarts@^5.4.3:
|
||||
tslib "2.3.0"
|
||||
zrender "5.5.0"
|
||||
|
||||
editorconfig@^1.0.4:
|
||||
version "1.0.4"
|
||||
resolved "https://registry.npmjs.org/editorconfig/-/editorconfig-1.0.4.tgz#040c9a8e9a6c5288388b87c2db07028aa89f53a3"
|
||||
integrity sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==
|
||||
dependencies:
|
||||
"@one-ini/wasm" "0.1.1"
|
||||
commander "^10.0.0"
|
||||
minimatch "9.0.1"
|
||||
semver "^7.5.3"
|
||||
|
||||
electron-to-chromium@^1.4.668:
|
||||
version "1.4.715"
|
||||
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.715.tgz#bb16bcf2a3537962fccfa746b5c98c5f7404ff46"
|
||||
@ -966,11 +1120,33 @@ estree-walker@^2.0.2:
|
||||
resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
|
||||
integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
|
||||
|
||||
estree-walker@^3.0.3:
|
||||
version "3.0.3"
|
||||
resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d"
|
||||
integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==
|
||||
dependencies:
|
||||
"@types/estree" "^1.0.0"
|
||||
|
||||
esutils@^2.0.2:
|
||||
version "2.0.3"
|
||||
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64"
|
||||
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
|
||||
|
||||
execa@^8.0.1:
|
||||
version "8.0.1"
|
||||
resolved "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz#51f6a5943b580f963c3ca9c6321796db8cc39b8c"
|
||||
integrity sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==
|
||||
dependencies:
|
||||
cross-spawn "^7.0.3"
|
||||
get-stream "^8.0.1"
|
||||
human-signals "^5.0.0"
|
||||
is-stream "^3.0.0"
|
||||
merge-stream "^2.0.0"
|
||||
npm-run-path "^5.1.0"
|
||||
onetime "^6.0.0"
|
||||
signal-exit "^4.1.0"
|
||||
strip-final-newline "^3.0.0"
|
||||
|
||||
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
||||
version "3.1.3"
|
||||
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
|
||||
@ -1139,6 +1315,16 @@ geotiff@^2.0.7:
|
||||
xml-utils "^1.0.2"
|
||||
zstddec "^0.1.0"
|
||||
|
||||
get-func-name@^2.0.1, get-func-name@^2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41"
|
||||
integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==
|
||||
|
||||
get-stream@^8.0.1:
|
||||
version "8.0.1"
|
||||
resolved "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz#def9dfd71742cd7754a7761ed43749a27d02eca2"
|
||||
integrity sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==
|
||||
|
||||
glob-parent@^5.1.2, glob-parent@~5.1.2:
|
||||
version "5.1.2"
|
||||
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
|
||||
@ -1153,7 +1339,7 @@ glob-parent@^6.0.2:
|
||||
dependencies:
|
||||
is-glob "^4.0.3"
|
||||
|
||||
glob@^10.3.10:
|
||||
glob@^10.3.10, glob@^10.3.3:
|
||||
version "10.3.10"
|
||||
resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz#0351ebb809fd187fe421ab96af83d3a70715df4b"
|
||||
integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==
|
||||
@ -1200,6 +1386,15 @@ handlebars@^4.7.8:
|
||||
optionalDependencies:
|
||||
uglify-js "^3.1.4"
|
||||
|
||||
happy-dom@^14.3.1:
|
||||
version "14.3.1"
|
||||
resolved "https://registry.npmjs.org/happy-dom/-/happy-dom-14.3.1.tgz#3ddab7fd7273c2d9b94ebbfe9b5b67f5c9f7d18d"
|
||||
integrity sha512-uv2mE7jUH0S3cTnDPqNQj+J+Z5wOevqzopc7e8URXtcCH2STubCjPFVyEJ1ONGSv/aL/uvNwo5WWjsinpWpADQ==
|
||||
dependencies:
|
||||
entities "^4.5.0"
|
||||
webidl-conversions "^7.0.0"
|
||||
whatwg-mimetype "^3.0.0"
|
||||
|
||||
has-flag@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
|
||||
@ -1212,6 +1407,11 @@ hasown@^2.0.0:
|
||||
dependencies:
|
||||
function-bind "^1.1.2"
|
||||
|
||||
human-signals@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz#42665a284f9ae0dade3ba41ebc37eb4b852f3a28"
|
||||
integrity sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==
|
||||
|
||||
ieee754@^1.1.12:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352"
|
||||
@ -1248,6 +1448,11 @@ inherits@2:
|
||||
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
|
||||
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
||||
|
||||
ini@^1.3.4:
|
||||
version "1.3.8"
|
||||
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
|
||||
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
||||
|
||||
is-binary-path@~2.1.0:
|
||||
version "2.1.0"
|
||||
resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
|
||||
@ -1289,6 +1494,11 @@ is-path-inside@^3.0.3:
|
||||
resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
|
||||
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
|
||||
|
||||
is-stream@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz#e6bfd7aa6bef69f4f472ce9bb681e3e57b4319ac"
|
||||
integrity sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==
|
||||
|
||||
isexe@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
|
||||
@ -1308,6 +1518,27 @@ jiti@^1.19.1:
|
||||
resolved "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz#7c97f8fe045724e136a397f7340475244156105d"
|
||||
integrity sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==
|
||||
|
||||
js-beautify@^1.14.9:
|
||||
version "1.15.1"
|
||||
resolved "https://registry.npmjs.org/js-beautify/-/js-beautify-1.15.1.tgz#4695afb508c324e1084ee0b952a102023fc65b64"
|
||||
integrity sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==
|
||||
dependencies:
|
||||
config-chain "^1.1.13"
|
||||
editorconfig "^1.0.4"
|
||||
glob "^10.3.3"
|
||||
js-cookie "^3.0.5"
|
||||
nopt "^7.2.0"
|
||||
|
||||
js-cookie@^3.0.5:
|
||||
version "3.0.5"
|
||||
resolved "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc"
|
||||
integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==
|
||||
|
||||
js-tokens@^8.0.2:
|
||||
version "8.0.3"
|
||||
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-8.0.3.tgz#1c407ec905643603b38b6be6977300406ec48775"
|
||||
integrity sha512-UfJMcSJc+SEXEl9lH/VLHSZbThQyLpw1vLO1Lb+j4RWDvG3N2f7yj3PVQA3cmkTBNldJ9eFnM+xEXxHIXrYiJw==
|
||||
|
||||
js-yaml@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
|
||||
@ -1330,6 +1561,11 @@ json-stable-stringify-without-jsonify@^1.0.1:
|
||||
resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651"
|
||||
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
|
||||
|
||||
jsonc-parser@^3.2.0:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz#031904571ccf929d7670ee8c547545081cb37f1a"
|
||||
integrity sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==
|
||||
|
||||
keyv@^4.5.3:
|
||||
version "4.5.4"
|
||||
resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93"
|
||||
@ -1365,6 +1601,14 @@ lines-and-columns@^1.1.6:
|
||||
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632"
|
||||
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
|
||||
|
||||
local-pkg@^0.5.0:
|
||||
version "0.5.0"
|
||||
resolved "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.0.tgz#093d25a346bae59a99f80e75f6e9d36d7e8c925c"
|
||||
integrity sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==
|
||||
dependencies:
|
||||
mlly "^1.4.2"
|
||||
pkg-types "^1.0.3"
|
||||
|
||||
locate-path@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
|
||||
@ -1387,6 +1631,13 @@ lodash@^4.17.21:
|
||||
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
|
||||
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
||||
|
||||
loupe@^2.3.6, loupe@^2.3.7:
|
||||
version "2.3.7"
|
||||
resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697"
|
||||
integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==
|
||||
dependencies:
|
||||
get-func-name "^2.0.1"
|
||||
|
||||
lru-cache@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
|
||||
@ -1404,13 +1655,18 @@ lucide@^0.298.0:
|
||||
resolved "https://registry.npmjs.org/lucide/-/lucide-0.298.0.tgz#32641328a11c3c04ca03246600623de573347014"
|
||||
integrity sha512-FphzOd0gEJftlSHjEz0BEJW4nInpycRJF7xwr0n/36MOsWiDuRRs7QuJwB4qJvaDwggArPzXFKTjunNR5Gz/TQ==
|
||||
|
||||
magic-string@^0.30.7:
|
||||
magic-string@^0.30.5, magic-string@^0.30.7:
|
||||
version "0.30.8"
|
||||
resolved "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz#14e8624246d2bedba70d5462aa99ac9681844613"
|
||||
integrity sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==
|
||||
dependencies:
|
||||
"@jridgewell/sourcemap-codec" "^1.4.15"
|
||||
|
||||
merge-stream@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
|
||||
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
|
||||
|
||||
merge2@^1.3.0:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
|
||||
@ -1436,11 +1692,23 @@ mime-types@^2.1.12:
|
||||
dependencies:
|
||||
mime-db "1.52.0"
|
||||
|
||||
mimic-fn@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz#60a90550d5cb0b239cca65d893b1a53b29871ecc"
|
||||
integrity sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==
|
||||
|
||||
mini-svg-data-uri@^1.2.3, mini-svg-data-uri@^1.4.3:
|
||||
version "1.4.4"
|
||||
resolved "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz#8ab0aabcdf8c29ad5693ca595af19dd2ead09939"
|
||||
integrity sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==
|
||||
|
||||
minimatch@9.0.1:
|
||||
version "9.0.1"
|
||||
resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253"
|
||||
integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==
|
||||
dependencies:
|
||||
brace-expansion "^2.0.1"
|
||||
|
||||
minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
|
||||
@ -1465,6 +1733,16 @@ minimist@^1.2.5:
|
||||
resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c"
|
||||
integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
|
||||
|
||||
mlly@^1.2.0, mlly@^1.4.2:
|
||||
version "1.6.1"
|
||||
resolved "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz#0983067dc3366d6314fc5e12712884e6978d028f"
|
||||
integrity sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==
|
||||
dependencies:
|
||||
acorn "^8.11.3"
|
||||
pathe "^1.1.2"
|
||||
pkg-types "^1.0.3"
|
||||
ufo "^1.3.2"
|
||||
|
||||
moment@^2.29.4:
|
||||
version "2.30.1"
|
||||
resolved "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae"
|
||||
@ -1509,6 +1787,13 @@ node-releases@^2.0.14:
|
||||
resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz#2ffb053bceb8b2be8495ece1ab6ce600c4461b0b"
|
||||
integrity sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==
|
||||
|
||||
nopt@^7.2.0:
|
||||
version "7.2.0"
|
||||
resolved "https://registry.npmjs.org/nopt/-/nopt-7.2.0.tgz#067378c68116f602f552876194fd11f1292503d7"
|
||||
integrity sha512-CVDtwCdhYIvnAzFoJ6NJ6dX3oga9/HyciQDnG1vQDjSLMeKLJ4A93ZqYKDrgYSr1FBY5/hMYC+2VCi24pgpkGA==
|
||||
dependencies:
|
||||
abbrev "^2.0.0"
|
||||
|
||||
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
|
||||
@ -1519,6 +1804,13 @@ normalize-range@^0.1.2:
|
||||
resolved "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942"
|
||||
integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==
|
||||
|
||||
npm-run-path@^5.1.0:
|
||||
version "5.3.0"
|
||||
resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz#e23353d0ebb9317f174e93417e4a4d82d0249e9f"
|
||||
integrity sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==
|
||||
dependencies:
|
||||
path-key "^4.0.0"
|
||||
|
||||
nth-check@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
|
||||
@ -1555,6 +1847,13 @@ once@^1.3.0:
|
||||
dependencies:
|
||||
wrappy "1"
|
||||
|
||||
onetime@^6.0.0:
|
||||
version "6.0.0"
|
||||
resolved "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz#7c24c18ed1fd2e9bca4bd26806a33613c77d34b4"
|
||||
integrity sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==
|
||||
dependencies:
|
||||
mimic-fn "^4.0.0"
|
||||
|
||||
optionator@^0.9.3:
|
||||
version "0.9.3"
|
||||
resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64"
|
||||
@ -1574,6 +1873,13 @@ p-limit@^3.0.2:
|
||||
dependencies:
|
||||
yocto-queue "^0.1.0"
|
||||
|
||||
p-limit@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.npmjs.org/p-limit/-/p-limit-5.0.0.tgz#6946d5b7140b649b7a33a027d89b4c625b3a5985"
|
||||
integrity sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==
|
||||
dependencies:
|
||||
yocto-queue "^1.0.0"
|
||||
|
||||
p-locate@^5.0.0:
|
||||
version "5.0.0"
|
||||
resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
|
||||
@ -1613,6 +1919,11 @@ path-key@^3.1.0:
|
||||
resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
|
||||
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
|
||||
|
||||
path-key@^4.0.0:
|
||||
version "4.0.0"
|
||||
resolved "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz#295588dc3aee64154f877adb9d780b81c554bf18"
|
||||
integrity sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==
|
||||
|
||||
path-parse@^1.0.7:
|
||||
version "1.0.7"
|
||||
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
|
||||
@ -1626,6 +1937,16 @@ path-scurry@^1.10.1:
|
||||
lru-cache "^9.1.1 || ^10.0.0"
|
||||
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
||||
|
||||
pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2:
|
||||
version "1.1.2"
|
||||
resolved "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec"
|
||||
integrity sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==
|
||||
|
||||
pathval@^1.1.1:
|
||||
version "1.1.1"
|
||||
resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d"
|
||||
integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==
|
||||
|
||||
pbf@3.2.1:
|
||||
version "3.2.1"
|
||||
resolved "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a"
|
||||
@ -1659,6 +1980,15 @@ pirates@^4.0.1:
|
||||
resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz#3018ae32ecfcff6c29ba2267cbf21166ac1f36b9"
|
||||
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
|
||||
|
||||
pkg-types@^1.0.3:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.npmjs.org/pkg-types/-/pkg-types-1.0.3.tgz#988b42ab19254c01614d13f4f65a2cfc7880f868"
|
||||
integrity sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==
|
||||
dependencies:
|
||||
jsonc-parser "^3.2.0"
|
||||
mlly "^1.2.0"
|
||||
pathe "^1.1.0"
|
||||
|
||||
postcss-advanced-variables@^3.0.1:
|
||||
version "3.0.1"
|
||||
resolved "https://registry.npmjs.org/postcss-advanced-variables/-/postcss-advanced-variables-3.0.1.tgz#260a6ec1fc7256e94798824a742580249926db13"
|
||||
@ -1750,6 +2080,20 @@ prelude-ls@^1.2.1:
|
||||
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396"
|
||||
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
|
||||
|
||||
pretty-format@^29.7.0:
|
||||
version "29.7.0"
|
||||
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz#ca42c758310f365bfa71a0bda0a807160b776812"
|
||||
integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
|
||||
dependencies:
|
||||
"@jest/schemas" "^29.6.3"
|
||||
ansi-styles "^5.0.0"
|
||||
react-is "^18.0.0"
|
||||
|
||||
proto-list@~1.2.1:
|
||||
version "1.2.4"
|
||||
resolved "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
|
||||
integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==
|
||||
|
||||
protocol-buffers-schema@^3.3.1:
|
||||
version "3.6.0"
|
||||
resolved "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03"
|
||||
@ -1804,6 +2148,11 @@ rbush@^3.0.1:
|
||||
dependencies:
|
||||
quickselect "^2.0.0"
|
||||
|
||||
react-is@^18.0.0:
|
||||
version "18.2.0"
|
||||
resolved "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
|
||||
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
|
||||
|
||||
read-cache@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774"
|
||||
@ -1885,7 +2234,7 @@ run-parallel@^1.1.9:
|
||||
dependencies:
|
||||
queue-microtask "^1.2.2"
|
||||
|
||||
semver@^7.3.6, semver@^7.6.0:
|
||||
semver@^7.3.6, semver@^7.5.3, semver@^7.6.0:
|
||||
version "7.6.0"
|
||||
resolved "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
|
||||
integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
|
||||
@ -1904,7 +2253,12 @@ shebang-regex@^3.0.0:
|
||||
resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
|
||||
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
|
||||
|
||||
signal-exit@^4.0.1:
|
||||
siginfo@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz#32e76c70b79724e3bb567cb9d543eb858ccfaf30"
|
||||
integrity sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==
|
||||
|
||||
signal-exit@^4.0.1, signal-exit@^4.1.0:
|
||||
version "4.1.0"
|
||||
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
|
||||
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
|
||||
@ -1919,6 +2273,16 @@ source-map@^0.6.1:
|
||||
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
|
||||
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
||||
|
||||
stackback@0.0.2:
|
||||
version "0.0.2"
|
||||
resolved "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz#1ac8a0d9483848d1695e418b6d031a3c3ce68e3b"
|
||||
integrity sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==
|
||||
|
||||
std-env@^3.5.0:
|
||||
version "3.7.0"
|
||||
resolved "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz#c9f7386ced6ecf13360b6c6c55b8aaa4ef7481d2"
|
||||
integrity sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==
|
||||
|
||||
"string-width-cjs@npm:string-width@^4.2.0":
|
||||
version "4.2.3"
|
||||
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
|
||||
@ -1967,11 +2331,23 @@ strip-ansi@^7.0.1:
|
||||
dependencies:
|
||||
ansi-regex "^6.0.1"
|
||||
|
||||
strip-final-newline@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz#52894c313fbff318835280aed60ff71ebf12b8fd"
|
||||
integrity sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==
|
||||
|
||||
strip-json-comments@^3.1.1:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006"
|
||||
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
|
||||
|
||||
strip-literal@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.npmjs.org/strip-literal/-/strip-literal-2.0.0.tgz#5d063580933e4e03ebb669b12db64d2200687527"
|
||||
integrity sha512-f9vHgsCWBq2ugHAkGMiiYY+AYG0D/cbloKKg0nhaaaSNsujdGIpVXCNsrJpCKr5M0f4aI31mr13UjY6GAuXCKA==
|
||||
dependencies:
|
||||
js-tokens "^8.0.2"
|
||||
|
||||
sucrase@^3.32.0:
|
||||
version "3.35.0"
|
||||
resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz#57f17a3d7e19b36d8995f06679d121be914ae263"
|
||||
@ -2054,6 +2430,21 @@ thenify-all@^1.0.0:
|
||||
dependencies:
|
||||
any-promise "^1.0.0"
|
||||
|
||||
tinybench@^2.5.1:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.npmjs.org/tinybench/-/tinybench-2.6.0.tgz#1423284ee22de07c91b3752c048d2764714b341b"
|
||||
integrity sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==
|
||||
|
||||
tinypool@^0.8.2:
|
||||
version "0.8.2"
|
||||
resolved "https://registry.npmjs.org/tinypool/-/tinypool-0.8.2.tgz#84013b03dc69dacb322563a475d4c0a9be00f82a"
|
||||
integrity sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==
|
||||
|
||||
tinyspy@^2.2.0:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.npmjs.org/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1"
|
||||
integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==
|
||||
|
||||
to-regex-range@^5.0.1:
|
||||
version "5.0.1"
|
||||
resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
|
||||
@ -2078,11 +2469,21 @@ type-check@^0.4.0, type-check@~0.4.0:
|
||||
dependencies:
|
||||
prelude-ls "^1.2.1"
|
||||
|
||||
type-detect@^4.0.0, type-detect@^4.0.8:
|
||||
version "4.0.8"
|
||||
resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c"
|
||||
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
|
||||
|
||||
type-fest@^0.20.2:
|
||||
version "0.20.2"
|
||||
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4"
|
||||
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
|
||||
|
||||
ufo@^1.3.2:
|
||||
version "1.5.3"
|
||||
resolved "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz#3325bd3c977b6c6cd3160bf4ff52989adc9d3344"
|
||||
integrity sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==
|
||||
|
||||
uglify-js@^3.1.4:
|
||||
version "3.17.4"
|
||||
resolved "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz#61678cf5fa3f5b7eb789bb345df29afb8257c22c"
|
||||
@ -2108,7 +2509,18 @@ util-deprecate@^1.0.2:
|
||||
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
|
||||
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
||||
|
||||
vite@^5.0.8:
|
||||
vite-node@1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmjs.org/vite-node/-/vite-node-1.4.0.tgz#265529d60570ca695ceb69391f87f92847934ad8"
|
||||
integrity sha512-VZDAseqjrHgNd4Kh8icYHWzTKSCZMhia7GyHfhtzLW33fZlG9SwsB6CEhgyVOWkJfJ2pFLrp/Gj1FSfAiqH9Lw==
|
||||
dependencies:
|
||||
cac "^6.7.14"
|
||||
debug "^4.3.4"
|
||||
pathe "^1.1.1"
|
||||
picocolors "^1.0.0"
|
||||
vite "^5.0.0"
|
||||
|
||||
vite@^5.0.0, vite@^5.0.8:
|
||||
version "5.2.2"
|
||||
resolved "https://registry.npmjs.org/vite/-/vite-5.2.2.tgz#b98f8de352d22e21d99508274ddd053ef82bf238"
|
||||
integrity sha512-FWZbz0oSdLq5snUI0b6sULbz58iXFXdvkZfZWR/F0ZJuKTSPO7v72QPXt6KqYeMFb0yytNp6kZosxJ96Nr/wDQ==
|
||||
@ -2119,6 +2531,37 @@ vite@^5.0.8:
|
||||
optionalDependencies:
|
||||
fsevents "~2.3.3"
|
||||
|
||||
vitest@^1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.npmjs.org/vitest/-/vitest-1.4.0.tgz#f5c812aaf5023818b89b7fc667fa45327396fece"
|
||||
integrity sha512-gujzn0g7fmwf83/WzrDTnncZt2UiXP41mHuFYFrdwaLRVQ6JYQEiME2IfEjU3vcFL3VKa75XhI3lFgn+hfVsQw==
|
||||
dependencies:
|
||||
"@vitest/expect" "1.4.0"
|
||||
"@vitest/runner" "1.4.0"
|
||||
"@vitest/snapshot" "1.4.0"
|
||||
"@vitest/spy" "1.4.0"
|
||||
"@vitest/utils" "1.4.0"
|
||||
acorn-walk "^8.3.2"
|
||||
chai "^4.3.10"
|
||||
debug "^4.3.4"
|
||||
execa "^8.0.1"
|
||||
local-pkg "^0.5.0"
|
||||
magic-string "^0.30.5"
|
||||
pathe "^1.1.1"
|
||||
picocolors "^1.0.0"
|
||||
std-env "^3.5.0"
|
||||
strip-literal "^2.0.0"
|
||||
tinybench "^2.5.1"
|
||||
tinypool "^0.8.2"
|
||||
vite "^5.0.0"
|
||||
vite-node "1.4.0"
|
||||
why-is-node-running "^2.2.2"
|
||||
|
||||
vue-component-type-helpers@^2.0.0:
|
||||
version "2.0.7"
|
||||
resolved "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-2.0.7.tgz#f142e82440da61fa81671ac2f35fd87146248897"
|
||||
integrity sha512-7e12Evdll7JcTIocojgnCgwocX4WzIYStGClBQ+QuWPinZo/vQolv2EMq4a3lg16TKfwWafLimG77bxb56UauA==
|
||||
|
||||
vue-demi@*:
|
||||
version "0.14.7"
|
||||
resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.7.tgz#8317536b3ef74c5b09f268f7782e70194567d8f2"
|
||||
@ -2177,6 +2620,16 @@ web-worker@^1.2.0:
|
||||
resolved "https://registry.npmjs.org/web-worker/-/web-worker-1.3.0.tgz#e5f2df5c7fe356755a5fb8f8410d4312627e6776"
|
||||
integrity sha512-BSR9wyRsy/KOValMgd5kMyr3JzpdeoR9KVId8u5GVlTTAtNChlsE4yTxeY7zMdNSyOmoKBv8NH2qeRY9Tg+IaA==
|
||||
|
||||
webidl-conversions@^7.0.0:
|
||||
version "7.0.0"
|
||||
resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a"
|
||||
integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
|
||||
|
||||
whatwg-mimetype@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7"
|
||||
integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==
|
||||
|
||||
which@^2.0.1:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
|
||||
@ -2184,6 +2637,14 @@ which@^2.0.1:
|
||||
dependencies:
|
||||
isexe "^2.0.0"
|
||||
|
||||
why-is-node-running@^2.2.2:
|
||||
version "2.2.2"
|
||||
resolved "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz#4185b2b4699117819e7154594271e7e344c9973e"
|
||||
integrity sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==
|
||||
dependencies:
|
||||
siginfo "^2.0.0"
|
||||
stackback "0.0.2"
|
||||
|
||||
wordwrap@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb"
|
||||
@ -2237,6 +2698,11 @@ yocto-queue@^0.1.0:
|
||||
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"
|
||||
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
||||
|
||||
yocto-queue@^1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz#7f816433fb2cbc511ec8bf7d263c3b58a1a3c251"
|
||||
integrity sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==
|
||||
|
||||
zrender@5.5.0:
|
||||
version "5.5.0"
|
||||
resolved "https://registry.npmjs.org/zrender/-/zrender-5.5.0.tgz#54d0d6c4eda81a96d9f60a9cd74dc48ea026bc1e"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user