lesli_audit 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4096027a1a07d618309a444ad88495f92fd260422d0668ca28c06df5305c6e24
4
- data.tar.gz: 3a24f511c199d7f1dd2471b7218e30fd3af081034961a3ae9f8a3888d5e79d32
3
+ metadata.gz: 26ce5cb30b15296797e4cd097f6ae832056db5ced836433e95b967b1437f4f61
4
+ data.tar.gz: 5ca1b871b835f766a2615472d2d2ec0db8416618f7bd5ecd87a2b7ac0c4ae6f3
5
5
  SHA512:
6
- metadata.gz: 3e4cd084c428b00c0fca28c4f45f1ded6917be8051034cec28887f36d64490a30c67c4056cbc02fa8cceabb18a8b1c467bd9037726774bd2ba6c612a01550feb
7
- data.tar.gz: 2b194180814f8d7b69a512404f035ebf4ef077393c460f098405c283a79971e8d6e74894f8e0eb01bdf65bffa77ed3f0192319328dfc94a3c533cc17d370db8f
6
+ metadata.gz: a21753e0e7657088d2d59a5d6f8805cd444f2d3950496dd01a52dbf2247244111b4baf00254be964b23092459f5bcb04956507c8a4823dcd6f1af06ebc033f5b
7
+ data.tar.gz: 0d19b6f22aa8cc2d9aa19d1107f1f0b9b2c4fb9bd1d5d5f7bf1ff1a0835c886968a8be44c264bfb79e1b3034858d0dceaad30b0840cbe98ae5fb0bfd592aa677
@@ -225,29 +225,51 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
225
225
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
226
226
 
227
227
  "use strict";
228
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var _visitors_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./visitors.vue */ \"../LesliAudit/lib/vue/apps/analytics/visitors.vue\");\n/* harmony import */ var _requests_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./requests.vue */ \"../LesliAudit/lib/vue/apps/analytics/requests.vue\");\n\n\n\n//import trends from \"./trends.vue\";\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'index',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n // · import vue tools\n\n const __returned__ = {\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,\n visitors: _visitors_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n requests: _requests_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
228
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! LesliAudit/stores/analytics */ \"../LesliAudit/lib/vue/stores/analytics.js\");\n/* harmony import */ var _components_visitors_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../components/visitors.vue */ \"../LesliAudit/lib/vue/components/visitors.vue\");\n/* harmony import */ var _components_requests_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../components/requests.vue */ \"../LesliAudit/lib/vue/components/requests.vue\");\n/* harmony import */ var _components_resources_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../components/resources.vue */ \"../LesliAudit/lib/vue/components/resources.vue\");\n\n\n// · import stores\n\n\n// · implement stores\n\n\n\n//import trends from \"./trends.vue\";\n\n// · \n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'index',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n // · import vue tools\n const storeAnalytics = (0,LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__.useAnalytics)();\n\n // · \n function reload() {\n storeAnalytics.fetch();\n }\n\n // · initializing\n (0,vue__WEBPACK_IMPORTED_MODULE_0__.onMounted)(() => {\n storeAnalytics.fetchVisits();\n setTimeout(() => storeAnalytics.fetchUsers(), 500);\n setTimeout(() => storeAnalytics.fetchDevices(), 1000);\n setTimeout(() => storeAnalytics.fetchResources(), 1500);\n setTimeout(() => storeAnalytics.fetchControllers(), 2000);\n });\n const __returned__ = {\n storeAnalytics,\n reload,\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,\n get useAnalytics() {\n return LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__.useAnalytics;\n },\n visitors: _components_visitors_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n requests: _components_requests_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n resources: _components_resources_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
229
229
 
230
230
  /***/ }),
231
231
 
232
- /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=script&setup=true&lang=js":
233
- /*!******************************************************************************************************************************************************************************************************************!*\
234
- !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=script&setup=true&lang=js ***!
235
- \******************************************************************************************************************************************************************************************************************/
232
+ /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/requests.vue?vue&type=script&setup=true&lang=js":
233
+ /*!**************************************************************************************************************************************************************************************************************!*\
234
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/requests.vue?vue&type=script&setup=true&lang=js ***!
235
+ \**************************************************************************************************************************************************************************************************************/
236
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
237
+
238
+ "use strict";
239
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! LesliAudit/stores/analytics */ \"../LesliAudit/lib/vue/stores/analytics.js\");\n\n\n// · import stores\n\n\n// · implement stores\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'requests',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n /*\n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Ruby on Rails SaaS Development Framework.\n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://www.lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · import vue tools\n const storeAnalytics = (0,LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__.useAnalytics)();\n const __returned__ = {\n storeAnalytics,\n get useAnalytics() {\n return LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_1__.useAnalytics;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/requests.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
240
+
241
+ /***/ }),
242
+
243
+ /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js":
244
+ /*!***************************************************************************************************************************************************************************************************************!*\
245
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js ***!
246
+ \***************************************************************************************************************************************************************************************************************/
236
247
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
237
248
 
238
249
  "use strict";
239
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var LesliAudit_stores_analytics_visitors__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! LesliAudit/stores/analytics/visitors */ \"../LesliAudit/lib/vue/stores/analytics/visitors.js\");\n\n\n// · import stores\n\n\n// · implement stores\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'requests',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n /*\n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Ruby on Rails SaaS Development Framework.\n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://www.lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · import vue tools\n const storeAnalytics = (0,LesliAudit_stores_analytics_visitors__WEBPACK_IMPORTED_MODULE_1__.useAnalytics)();\n const __returned__ = {\n storeAnalytics,\n get useAnalytics() {\n return LesliAudit_stores_analytics_visitors__WEBPACK_IMPORTED_MODULE_1__.useAnalytics;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/requests.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
250
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lesli-vue/components */ \"../../enginesdev/lesli-vue/source/components/index.js\");\n/* harmony import */ var LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! LesliAudit/stores/analytics */ \"../LesliAudit/lib/vue/stores/analytics.js\");\n\n\n// · import Lesli components\n\n\n// · import stores\n\n\n// · implement stores\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'resources',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n /*\n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Ruby on Rails SaaS Development Framework.\n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://www.lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · import vue tools\n const storeAnalytics = (0,LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__.useAnalytics)();\n\n // · define variables\n var series = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n var labels = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n\n // · \n (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(() => storeAnalytics.resources.records, () => {\n labels.value = storeAnalytics.resources.records.map(visit => visit.date);\n series.value = [{\n name: \"Resources\",\n data: storeAnalytics.resources.records.map(visit => visit.resources)\n }];\n });\n const __returned__ = {\n storeAnalytics,\n get series() {\n return series;\n },\n set series(v) {\n series = v;\n },\n get labels() {\n return labels;\n },\n set labels(v) {\n labels = v;\n },\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,\n get lesliChartBar() {\n return lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__.lesliChartBar;\n },\n get useAnalytics() {\n return LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__.useAnalytics;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/resources.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
240
251
 
241
252
  /***/ }),
242
253
 
243
- /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=script&setup=true&lang=js":
244
- /*!******************************************************************************************************************************************************************************************************************!*\
245
- !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=script&setup=true&lang=js ***!
246
- \******************************************************************************************************************************************************************************************************************/
254
+ /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/visitors.vue?vue&type=script&setup=true&lang=js":
255
+ /*!**************************************************************************************************************************************************************************************************************!*\
256
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/visitors.vue?vue&type=script&setup=true&lang=js ***!
257
+ \**************************************************************************************************************************************************************************************************************/
247
258
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
248
259
 
249
260
  "use strict";
250
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lesli-vue/components */ \"../../enginesdev/lesli-vue/source/components/index.js\");\n/* harmony import */ var LesliAudit_stores_analytics_visitors__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! LesliAudit/stores/analytics/visitors */ \"../LesliAudit/lib/vue/stores/analytics/visitors.js\");\n\n\n// · import Lesli components\n\n\n// · import stores\n\n\n// · implement stores\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'visitors',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n /*\n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Ruby on Rails SaaS Development Framework.\n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://www.lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · import vue tools\n const storeAnalytics = (0,LesliAudit_stores_analytics_visitors__WEBPACK_IMPORTED_MODULE_2__.useAnalytics)();\n\n // · define variables\n var series = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n var labels = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n\n // · initializing\n (0,vue__WEBPACK_IMPORTED_MODULE_0__.onMounted)(() => {\n storeAnalytics.fetchVisits();\n setTimeout(() => storeAnalytics.fetchUsers(), 500);\n setTimeout(() => storeAnalytics.fetchDevices(), 1000);\n setTimeout(() => storeAnalytics.fetchControllers(), 1500);\n });\n\n // · \n function reload() {\n storeAnalytics.fetch();\n }\n\n // · \n (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(() => storeAnalytics.visitors.records, () => {\n labels.value = storeAnalytics.visitors.records.map(visit => visit.date);\n series.value = [{\n name: \"Requests\",\n data: storeAnalytics.visitors.records.map(visit => visit.requests)\n }, {\n name: \"Resources\",\n data: storeAnalytics.visitors.records.map(visit => visit.resources)\n }];\n });\n const __returned__ = {\n storeAnalytics,\n get series() {\n return series;\n },\n set series(v) {\n series = v;\n },\n get labels() {\n return labels;\n },\n set labels(v) {\n labels = v;\n },\n reload,\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,\n get lesliChartLine() {\n return lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__.lesliChartLine;\n },\n get useAnalytics() {\n return LesliAudit_stores_analytics_visitors__WEBPACK_IMPORTED_MODULE_2__.useAnalytics;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/visitors.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
261
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! lesli-vue/components */ \"../../enginesdev/lesli-vue/source/components/index.js\");\n/* harmony import */ var LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! LesliAudit/stores/analytics */ \"../LesliAudit/lib/vue/stores/analytics.js\");\n\n\n// · import Lesli components\n\n\n// · import stores\n\n\n// · implement stores\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'visitors',\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n\n /*\n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Ruby on Rails SaaS Development Framework.\n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://www.lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · import vue tools\n const storeAnalytics = (0,LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__.useAnalytics)();\n\n // · define variables\n var series = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n var labels = (0,vue__WEBPACK_IMPORTED_MODULE_0__.ref)([]);\n\n // · \n (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(() => storeAnalytics.visitors.records, () => {\n labels.value = storeAnalytics.visitors.records.map(visit => visit.date);\n series.value = [{\n name: \"Requests\",\n data: storeAnalytics.visitors.records.map(visit => visit.requests)\n }];\n });\n const __returned__ = {\n storeAnalytics,\n get series() {\n return series;\n },\n set series(v) {\n series = v;\n },\n get labels() {\n return labels;\n },\n set labels(v) {\n labels = v;\n },\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n computed: vue__WEBPACK_IMPORTED_MODULE_0__.computed,\n get lesliChartLine() {\n return lesli_vue_components__WEBPACK_IMPORTED_MODULE_1__.lesliChartLine;\n },\n get useAnalytics() {\n return LesliAudit_stores_analytics__WEBPACK_IMPORTED_MODULE_2__.useAnalytics;\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/visitors.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
262
+
263
+ /***/ }),
264
+
265
+ /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=script&setup=true&lang=js":
266
+ /*!********************************************************************************************************************************************************************************************************************************!*\
267
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=script&setup=true&lang=js ***!
268
+ \********************************************************************************************************************************************************************************************************************************/
269
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
270
+
271
+ "use strict";
272
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var _general_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../general.vue */ \"../../enginesdev/lesli-vue/source/components/charts/general.vue\");\n\n\n// · import & define local components\n\n\n// · defining props\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'bar',\n props: {\n title: String,\n series: {\n type: Array,\n required: true\n },\n labels: {\n type: Array,\n required: false,\n default: []\n }\n },\n setup(__props, _ref) {\n let {\n expose: __expose\n } = _ref;\n __expose();\n const props = __props;\n\n /*\n \n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Your Smart Business Assistant. \n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n \n */\n\n // · import vue tools\n\n // · specific options to print a proper line chart\n const barOptions = {\n chart: {\n height: '350px'\n },\n plotOptions: {\n bar: {\n borderRadius: 10,\n dataLabels: {\n position: 'top' // top, center, bottom\n }\n }\n },\n\n dataLabels: {\n enabled: true,\n offsetY: -20,\n style: {\n fontSize: '14px',\n colors: [\"#304758\"]\n }\n },\n xaxis: {\n categories: [],\n position: 'bottom',\n axisTicks: {\n show: false\n },\n tooltip: {\n enabled: true\n }\n }\n };\n const __returned__ = {\n props,\n barOptions,\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n componentChartGeneral: _general_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
251
273
 
252
274
  /***/ }),
253
275
 
@@ -258,7 +280,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
258
280
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
259
281
 
260
282
  "use strict";
261
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var apexcharts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! apexcharts */ \"./node_modules/apexcharts/dist/apexcharts.common.js\");\n/* harmony import */ var apexcharts__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(apexcharts__WEBPACK_IMPORTED_MODULE_1__);\n\n\n// · defining emits\n\n\n// · defining props\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'general',\n props: {\n type: {\n type: String,\n required: true\n },\n title: {\n type: String\n },\n subtitle: {\n type: String\n },\n series: {\n type: Array,\n required: true\n },\n labels: {\n type: Array,\n required: true\n },\n options: {\n type: Object,\n default() {\n return {};\n }\n }\n },\n emits: ['markerClick'],\n setup(__props, _ref) {\n let {\n expose: __expose,\n emit\n } = _ref;\n __expose();\n const props = __props;\n\n /*\n \n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Ruby on Rails SaaS Development Framework.\n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://www.lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · import vue tools\n\n // · import & define local components\n\n // · \n const instance = (0,vue__WEBPACK_IMPORTED_MODULE_0__.getCurrentInstance)();\n\n // · define variables\n var chart = (0,vue__WEBPACK_IMPORTED_MODULE_0__.reactive)({});\n\n // · specific options for apexcharts\n const generalOptions = {\n series: [],\n labels: [],\n grid: {\n show: false,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n },\n chart: {\n type: props.type,\n height: \"auto\",\n toolbar: {\n show: false\n },\n events: {\n markerClick: function (event, chartContext, _ref2) {\n let {\n seriesIndex,\n dataPointIndex\n } = _ref2;\n emit(\"markerClick\", {\n seriesIndex,\n dataPointIndex\n });\n }\n }\n },\n title: {\n text: \"\"\n },\n legend: {\n show: true,\n position: 'top',\n horizontalAlign: 'center'\n },\n dataLabels: {\n enabled: true\n },\n //colors: this.lesli.colors(\"charts\"),\n stroke: {},\n plotOptions: {},\n xaxis: {\n categories: [],\n tickPlacement: 'between',\n labels: {\n show: true,\n rotate: -65,\n rotateAlways: false,\n trim: false,\n offsetY: 5,\n style: {\n fontSize: '15px'\n }\n }\n },\n yaxis: {\n show: true\n }\n };\n\n // · unique id for the chart container\n const chartId = `component-chart-${Math.floor(Math.random() * 10000)}`;\n\n // · \n (0,vue__WEBPACK_IMPORTED_MODULE_0__.onMounted)(() => {\n // labels and data series are empty by default due child (wrapper) components \n // may set this arrays dynamically, so we have to always listen for changes on\n // these arrays\n generalOptions.labels = [];\n generalOptions.series = [];\n\n // start chart with unique html id\n chart = new (apexcharts__WEBPACK_IMPORTED_MODULE_1___default())(document.querySelector(\"#\" + chartId), generalOptions);\n\n // render an empty chart\n chart.render();\n\n // If the information is available from the start, we update the labels and sources\n if (props.options) {\n chart.updateOptions(props.options);\n }\n if (props.series) {\n chart.updateSeries(props.series);\n }\n if (props.labels) {\n chart.updateOptions({\n labels: props.labels\n });\n }\n });\n\n // · watch for changes on prop series to update chart options\n (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(() => props.series, newSeries => chart.updateSeries(newSeries));\n\n // · watch for changes on prop labels to update chart options\n (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(() => props.labels, newLabels => {\n // special options for bar charts\n if (['bar'].includes(props.type)) {\n chart.updateOptions({\n xaxis: {\n categories: newLabels\n }\n });\n return;\n }\n chart.updateOptions({\n labels: newLabels\n });\n });\n const __returned__ = {\n emit,\n props,\n instance,\n get chart() {\n return chart;\n },\n set chart(v) {\n chart = v;\n },\n generalOptions,\n chartId,\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n getCurrentInstance: vue__WEBPACK_IMPORTED_MODULE_0__.getCurrentInstance,\n get ApexCharts() {\n return (apexcharts__WEBPACK_IMPORTED_MODULE_1___default());\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/components/charts/general.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
283
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n/* harmony import */ var apexcharts__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! apexcharts */ \"./node_modules/apexcharts/dist/apexcharts.common.js\");\n/* harmony import */ var apexcharts__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(apexcharts__WEBPACK_IMPORTED_MODULE_1__);\n\n\n// · defining emits\n\n\n// · defining props\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({\n __name: 'general',\n props: {\n type: {\n type: String,\n required: true\n },\n title: {\n type: String\n },\n subtitle: {\n type: String\n },\n series: {\n type: Array,\n required: true\n },\n labels: {\n type: Array,\n required: true\n },\n options: {\n type: Object,\n default() {\n return {};\n }\n }\n },\n emits: ['markerClick'],\n setup(__props, _ref) {\n let {\n expose: __expose,\n emit\n } = _ref;\n __expose();\n const props = __props;\n\n /*\n \n Lesli\n \n Copyright (c) 2023, Lesli Technologies, S. A.\n \n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n \n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n \n You should have received a copy of the GNU General Public License\n along with this program. If not, see http://www.gnu.org/licenses/.\n \n Lesli · Ruby on Rails SaaS Development Framework.\n \n Made with ♥ by https://www.lesli.tech\n Building a better future, one line of code at a time.\n \n @contact hello@lesli.tech\n @website https://www.lesli.tech\n @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n \n // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n // · \n */\n\n // · import vue tools\n\n // · import & define local components\n\n // · \n const instance = (0,vue__WEBPACK_IMPORTED_MODULE_0__.getCurrentInstance)();\n\n // · define variables\n var chart = (0,vue__WEBPACK_IMPORTED_MODULE_0__.reactive)({});\n\n // · specific options for apexcharts\n const generalOptions = {\n series: [],\n labels: [],\n grid: {\n show: false,\n padding: {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n }\n },\n chart: {\n type: props.type,\n height: \"auto\",\n toolbar: {\n show: false\n },\n events: {\n markerClick: function (event, chartContext, _ref2) {\n let {\n seriesIndex,\n dataPointIndex\n } = _ref2;\n emit(\"markerClick\", {\n seriesIndex,\n dataPointIndex\n });\n }\n }\n },\n title: {\n text: \"\"\n },\n legend: {\n show: true,\n position: 'top',\n horizontalAlign: 'center'\n },\n dataLabels: {\n enabled: true\n },\n //colors: this.lesli.colors(\"charts\"),\n stroke: {},\n plotOptions: {},\n xaxis: {\n categories: [],\n tickPlacement: 'between',\n labels: {\n show: true,\n rotate: -65,\n rotateAlways: false,\n trim: false,\n offsetY: 5,\n style: {\n fontSize: '15px'\n }\n }\n },\n yaxis: {\n show: true\n }\n };\n\n // · unique id for the chart container\n const chartId = `component-chart-${Math.floor(Math.random() * 10000)}`;\n\n // · \n (0,vue__WEBPACK_IMPORTED_MODULE_0__.onMounted)(() => {\n // labels and data series are empty by default due child (wrapper) components \n // may set this arrays dynamically, so we have to always listen for changes on\n // these arrays\n generalOptions.labels = [];\n generalOptions.series = [];\n\n // start chart with unique html id\n chart = new (apexcharts__WEBPACK_IMPORTED_MODULE_1___default())(document.querySelector(\"#\" + chartId), generalOptions);\n\n // render an empty chart\n chart.render();\n\n // If the information is available from the start, we update the labels and sources\n if (props.options) {\n chart.updateOptions(props.options);\n }\n if (props.series) {\n chart.updateSeries(props.series);\n }\n if (props.labels) {\n chart.updateOptions({\n labels: props.labels\n });\n }\n });\n\n // · watch for changes on prop series to update chart options\n (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(() => props.series, newSeries => {\n chart.updateSeries(newSeries);\n });\n\n // · watch for changes on prop labels to update chart options\n (0,vue__WEBPACK_IMPORTED_MODULE_0__.watch)(() => props.labels, newLabels => {\n // special options for bar charts\n if (['bar'].includes(props.type)) {\n chart.updateOptions({\n xaxis: {\n categories: newLabels\n }\n });\n return;\n }\n chart.updateOptions({\n labels: newLabels\n });\n });\n const __returned__ = {\n emit,\n props,\n instance,\n get chart() {\n return chart;\n },\n set chart(v) {\n chart = v;\n },\n generalOptions,\n chartId,\n ref: vue__WEBPACK_IMPORTED_MODULE_0__.ref,\n reactive: vue__WEBPACK_IMPORTED_MODULE_0__.reactive,\n onMounted: vue__WEBPACK_IMPORTED_MODULE_0__.onMounted,\n watch: vue__WEBPACK_IMPORTED_MODULE_0__.watch,\n getCurrentInstance: vue__WEBPACK_IMPORTED_MODULE_0__.getCurrentInstance,\n get ApexCharts() {\n return (apexcharts__WEBPACK_IMPORTED_MODULE_1___default());\n }\n };\n Object.defineProperty(__returned__, '__isScriptSetup', {\n enumerable: false,\n value: true\n });\n return __returned__;\n }\n});\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/components/charts/general.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
262
284
 
263
285
  /***/ }),
264
286
 
@@ -654,7 +676,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
654
676
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
655
677
 
656
678
  "use strict";
657
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nconst _hoisted_1 = {\n class: \"engines\"\n};\nconst _hoisted_2 = {\n class: \"container\"\n};\nconst _hoisted_3 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"button\", {\n class: \"button is-hidden-tablet\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"icon\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: \"ri-close-line\"\n})]), /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", null, \"close\")], -1 /* HOISTED */);\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Transition, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [$setup.storeLayout.showEngines ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"section\", {\n key: 0,\n class: \"lesli-application-engines\",\n onClick: _cache[0] || (_cache[0] = $event => $setup.storeLayout.toggleEngines())\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"default\"), _hoisted_3])])])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]),\n _: 3 /* FORWARDED */\n });\n}\n\n//# sourceURL=webpack://lesli/./lib/vue/layouts/application-engines.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
679
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nconst _hoisted_1 = {\n class: \"engines-container\"\n};\nconst _hoisted_2 = {\n class: \"engines\"\n};\nconst _hoisted_3 = /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"button\", {\n class: \"button is-hidden-tablet\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", {\n class: \"icon\"\n}, [/*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"i\", {\n class: \"ri-close-line\"\n})]), /*#__PURE__*/(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"span\", null, \"close\")], -1 /* HOISTED */);\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(vue__WEBPACK_IMPORTED_MODULE_0__.Transition, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [$setup.storeLayout.showEngines ? ((0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"section\", {\n key: 0,\n class: \"lesli-application-engines\",\n onClick: _cache[0] || (_cache[0] = $event => $setup.storeLayout.toggleEngines())\n }, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.renderSlot)(_ctx.$slots, \"default\")]), _hoisted_3])])) : (0,vue__WEBPACK_IMPORTED_MODULE_0__.createCommentVNode)(\"v-if\", true)]),\n _: 3 /* FORWARDED */\n });\n}\n\n//# sourceURL=webpack://lesli/./lib/vue/layouts/application-engines.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
658
680
 
659
681
  /***/ }),
660
682
 
@@ -676,29 +698,51 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
676
698
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
677
699
 
678
700
  "use strict";
679
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_header = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-header\");\n const _component_lesli_application_container = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-application-container\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_lesli_application_container, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_header, {\n title: \"Analytics\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"visitors\"]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"requests\"])]),\n _: 1 /* STABLE */\n });\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
701
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_select = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-select\");\n const _component_lesli_header = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-header\");\n const _component_lesli_application_container = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-application-container\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_lesli_application_container, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_header, {\n title: \"Analytics\"\n }, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_select, {\n options: [{\n label: 'Today',\n value: 7\n }, {\n label: 'Yesterday',\n value: 7\n }, {\n label: 'This week',\n value: 7\n }, {\n label: 'Last 7 days',\n value: 7\n }, {\n label: 'Last 15 days',\n value: 7\n }, {\n label: 'Last 30 days',\n value: 7\n }, {\n label: 'Last 60 days',\n value: 7\n }, {\n label: 'Last 90 days',\n value: 7\n }, {\n label: 'Last 6 months',\n value: 7\n }, {\n label: 'Last 12 months',\n value: 7\n }, {\n label: 'This year (Jan - Today)',\n value: 7\n }]\n }, null, 8 /* PROPS */, [\"options\"])]),\n _: 1 /* STABLE */\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"visitors\"], {\n class: \"mb-5\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"resources\"], {\n class: \"mb-5\"\n }), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"requests\"])]),\n _: 1 /* STABLE */\n });\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/index.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
702
+
703
+ /***/ }),
704
+
705
+ /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/requests.vue?vue&type=template&id=85d02fa6":
706
+ /*!*******************************************************************************************************************************************************************************************************************************************************************************!*\
707
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/requests.vue?vue&type=template&id=85d02fa6 ***!
708
+ \*******************************************************************************************************************************************************************************************************************************************************************************/
709
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
710
+
711
+ "use strict";
712
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nconst _hoisted_1 = {\n class: \"columns\"\n};\nconst _hoisted_2 = {\n class: \"column\"\n};\nconst _hoisted_3 = {\n class: \"column\"\n};\nconst _hoisted_4 = {\n class: \"column\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_table = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-table\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_table, {\n columns: $setup.storeAnalytics.users.columns,\n records: $setup.storeAnalytics.users.records\n }, null, 8 /* PROPS */, [\"columns\", \"records\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_table, {\n columns: $setup.storeAnalytics.devices.columns,\n records: $setup.storeAnalytics.devices.records\n }, null, 8 /* PROPS */, [\"columns\", \"records\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_4, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_table, {\n columns: $setup.storeAnalytics.controllers.columns,\n records: $setup.storeAnalytics.controllers.records\n }, null, 8 /* PROPS */, [\"columns\", \"records\"])])]);\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/requests.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
713
+
714
+ /***/ }),
715
+
716
+ /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8":
717
+ /*!********************************************************************************************************************************************************************************************************************************************************************************!*\
718
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8 ***!
719
+ \********************************************************************************************************************************************************************************************************************************************************************************/
720
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
721
+
722
+ "use strict";
723
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_application_component = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-application-component\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_lesli_application_component, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"lesliChartBar\"], {\n title: 'Resources',\n series: $setup.series,\n labels: $setup.labels\n }, null, 8 /* PROPS */, [\"series\", \"labels\"])]),\n _: 1 /* STABLE */\n });\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/resources.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
680
724
 
681
725
  /***/ }),
682
726
 
683
- /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=template&id=ddcd7c0c":
684
- /*!***********************************************************************************************************************************************************************************************************************************************************************************!*\
685
- !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=template&id=ddcd7c0c ***!
686
- \***********************************************************************************************************************************************************************************************************************************************************************************/
727
+ /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/visitors.vue?vue&type=template&id=63fdf9ae":
728
+ /*!*******************************************************************************************************************************************************************************************************************************************************************************!*\
729
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/visitors.vue?vue&type=template&id=63fdf9ae ***!
730
+ \*******************************************************************************************************************************************************************************************************************************************************************************/
687
731
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
688
732
 
689
733
  "use strict";
690
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nconst _hoisted_1 = {\n class: \"columns mt-3\"\n};\nconst _hoisted_2 = {\n class: \"column\"\n};\nconst _hoisted_3 = {\n class: \"column\"\n};\nconst _hoisted_4 = {\n class: \"column\"\n};\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_table = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-table\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementBlock)(\"div\", _hoisted_1, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_2, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_table, {\n columns: $setup.storeAnalytics.users.columns,\n records: $setup.storeAnalytics.users.records\n }, null, 8 /* PROPS */, [\"columns\", \"records\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_3, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_table, {\n columns: $setup.storeAnalytics.devices.columns,\n records: $setup.storeAnalytics.devices.records\n }, null, 8 /* PROPS */, [\"columns\", \"records\"])]), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createElementVNode)(\"div\", _hoisted_4, [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)(_component_lesli_table, {\n columns: $setup.storeAnalytics.controllers.columns,\n records: $setup.storeAnalytics.controllers.records\n }, null, 8 /* PROPS */, [\"columns\", \"records\"])])]);\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/requests.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
734
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_application_component = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-application-component\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_lesli_application_component, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"lesliChartLine\"], {\n title: 'Visitors',\n series: $setup.series,\n labels: $setup.labels\n }, null, 8 /* PROPS */, [\"series\", \"labels\"])]),\n _: 1 /* STABLE */\n });\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/visitors.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
691
735
 
692
736
  /***/ }),
693
737
 
694
- /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=template&id=37ff537b":
695
- /*!***********************************************************************************************************************************************************************************************************************************************************************************!*\
696
- !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=template&id=37ff537b ***!
697
- \***********************************************************************************************************************************************************************************************************************************************************************************/
738
+ /***/ "./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=template&id=986d3ba4":
739
+ /*!*************************************************************************************************************************************************************************************************************************************************************************************************!*\
740
+ !*** ./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=template&id=986d3ba4 ***!
741
+ \*************************************************************************************************************************************************************************************************************************************************************************************************/
698
742
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
699
743
 
700
744
  "use strict";
701
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_lesli_application_component = (0,vue__WEBPACK_IMPORTED_MODULE_0__.resolveComponent)(\"lesli-application-component\");\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)(_component_lesli_application_component, null, {\n default: (0,vue__WEBPACK_IMPORTED_MODULE_0__.withCtx)(() => [(0,vue__WEBPACK_IMPORTED_MODULE_0__.createVNode)($setup[\"lesliChartLine\"], {\n title: 'Visitors',\n series: $setup.series,\n labels: $setup.labels\n }, null, 8 /* PROPS */, [\"series\", \"labels\"])]),\n _: 1 /* STABLE */\n });\n}\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/visitors.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
745
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* binding */ render)\n/* harmony export */ });\n/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! vue */ \"./node_modules/vue/dist/vue.esm-bundler.js\");\n\nfunction render(_ctx, _cache, $props, $setup, $data, $options) {\n return (0,vue__WEBPACK_IMPORTED_MODULE_0__.openBlock)(), (0,vue__WEBPACK_IMPORTED_MODULE_0__.createBlock)($setup[\"componentChartGeneral\"], {\n type: \"bar\",\n title: $props.title,\n series: $props.series,\n labels: $props.labels,\n options: $setup.barOptions\n }, null, 8 /* PROPS */, [\"title\", \"series\", \"labels\"]);\n}\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet%5B1%5D.rules%5B2%5D!./node_modules/vue-loader/dist/index.js??ruleSet%5B0%5D.use");
702
746
 
703
747
  /***/ }),
704
748
 
@@ -1087,14 +1131,14 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var Lesl
1087
1131
 
1088
1132
  /***/ }),
1089
1133
 
1090
- /***/ "../LesliAudit/lib/vue/stores/analytics/visitors.js":
1091
- /*!**********************************************************!*\
1092
- !*** ../LesliAudit/lib/vue/stores/analytics/visitors.js ***!
1093
- \**********************************************************/
1134
+ /***/ "../LesliAudit/lib/vue/stores/analytics.js":
1135
+ /*!*************************************************!*\
1136
+ !*** ../LesliAudit/lib/vue/stores/analytics.js ***!
1137
+ \*************************************************/
1094
1138
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1095
1139
 
1096
1140
  "use strict";
1097
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useAnalytics: () => (/* binding */ useAnalytics)\n/* harmony export */ });\n/* harmony import */ var pinia__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pinia */ \"./node_modules/pinia/dist/pinia.mjs\");\n/*\nCopyright (c) 2022, all rights reserved.\n\nAll the information provided by this platform is protected by international laws related to \nindustrial property, intellectual property, copyright and relative international laws. \nAll intellectual or industrial property rights of the code, texts, trade mark, design, \npictures and any other information belongs to the owner of this platform.\n\nWithout the written permission of the owner, any replication, modification,\ntransmission, publication is strictly forbidden.\n\nFor more information read the license file including with this software.\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n// · \n\n\n// · \nconst useAnalytics = (0,pinia__WEBPACK_IMPORTED_MODULE_0__.defineStore)(\"analytics\", {\n state: () => {\n return {\n users: {\n loading: false,\n pagination: {},\n records: [],\n columns: [{\n field: 'email',\n label: 'User'\n }, {\n field: 'resources',\n label: 'Resources'\n }, {\n field: 'requests',\n label: 'Requests'\n }]\n },\n devices: {\n loading: false,\n pagination: {},\n records: [],\n columns: [{\n field: 'device',\n label: 'Device'\n }, {\n field: 'visits',\n label: 'Visits'\n }]\n },\n visitors: {\n loading: false,\n pagination: {},\n records: []\n },\n controllers: {\n loading: false,\n pagination: {},\n records: [],\n columns: [{\n field: 'request_controller',\n label: 'Controller'\n }, {\n field: 'requests',\n label: 'Requests'\n }]\n },\n trends: {\n loading: false,\n recordsDays: [],\n recordsHours: []\n }\n };\n },\n actions: {\n fetchVisits() {\n this.visitors.loading = true;\n this.http.get(this.url.audit(\"analytics/visitors\")).then(result => {\n this.visitors.records = result.reverse();\n }).finally(() => {\n this.visitors.loading = false;\n });\n },\n fetchUsers() {\n this.users.loading = true;\n this.http.get(this.url.audit(\"analytics/users\")).then(result => {\n this.users.records = result;\n }).finally(() => {\n this.users.loading = false;\n });\n },\n fetchDevices() {\n this.devices.loading = true;\n this.http.get(this.url.audit(\"analytics/devices\")).then(result => {\n this.devices.records = result;\n }).finally(() => {\n this.devices.loading = false;\n });\n },\n fetchControllers() {\n this.controllers.loading = true;\n this.http.get(this.url.audit(\"analytics/controllers\")).then(result => {\n this.controllers.records = result;\n }).finally(() => {\n this.controllers.loading = false;\n });\n },\n time(period, initalDate, endDate) {\n this.http.get(this.url.audit(\"analytics/trends\").filter({\n groupBy: [period],\n startDate: [initalDate],\n finalDate: [endDate]\n })).then(result => {\n if (period === 'day') {\n this.trends.recordsDays = result;\n } else if (period === 'hour') {\n this.trends.recordsHours = result;\n }\n }).finally(() => {\n this.loading = false;\n });\n }\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/stores/analytics/visitors.js?");
1141
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useAnalytics: () => (/* binding */ useAnalytics)\n/* harmony export */ });\n/* harmony import */ var pinia__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! pinia */ \"./node_modules/pinia/dist/pinia.mjs\");\n/*\nCopyright (c) 2022, all rights reserved.\n\nAll the information provided by this platform is protected by international laws related to \nindustrial property, intellectual property, copyright and relative international laws. \nAll intellectual or industrial property rights of the code, texts, trade mark, design, \npictures and any other information belongs to the owner of this platform.\n\nWithout the written permission of the owner, any replication, modification,\ntransmission, publication is strictly forbidden.\n\nFor more information read the license file including with this software.\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n// · \n\n\n// · \nconst useAnalytics = (0,pinia__WEBPACK_IMPORTED_MODULE_0__.defineStore)(\"analytics\", {\n state: () => {\n return {\n users: {\n loading: false,\n pagination: {},\n records: [],\n columns: [{\n field: 'email',\n label: 'User'\n }, {\n field: 'resources',\n label: 'Resources'\n }, {\n field: 'requests',\n label: 'Requests'\n }]\n },\n devices: {\n loading: false,\n pagination: {},\n records: [],\n columns: [{\n field: 'device',\n label: 'Device'\n }, {\n field: 'visits',\n label: 'Visits'\n }]\n },\n resources: {\n loading: false,\n pagination: {},\n records: []\n },\n visitors: {\n loading: false,\n pagination: {},\n records: []\n },\n controllers: {\n loading: false,\n pagination: {},\n records: [],\n columns: [{\n field: 'request_controller',\n label: 'Controller'\n }, {\n field: 'requests',\n label: 'Requests'\n }]\n },\n trends: {\n loading: false,\n recordsDays: [],\n recordsHours: []\n }\n };\n },\n actions: {\n fetchVisits() {\n this.visitors.loading = true;\n this.http.get(this.url.audit(\"analytics/visitors\")).then(result => {\n this.visitors.records = result.reverse();\n }).finally(() => {\n this.visitors.loading = false;\n });\n },\n fetchResources() {\n this.resources.loading = true;\n this.http.get(this.url.audit(\"analytics/resourcess\")).then(result => {\n this.resources.records = result.reverse();\n }).finally(() => {\n this.resources.loading = false;\n });\n },\n fetchUsers() {\n this.users.loading = true;\n this.http.get(this.url.audit(\"analytics/users\")).then(result => {\n this.users.records = result;\n }).finally(() => {\n this.users.loading = false;\n });\n },\n fetchDevices() {\n this.devices.loading = true;\n this.http.get(this.url.audit(\"analytics/devices\")).then(result => {\n this.devices.records = result;\n }).finally(() => {\n this.devices.loading = false;\n });\n },\n fetchControllers() {\n this.controllers.loading = true;\n this.http.get(this.url.audit(\"analytics/controllers\")).then(result => {\n this.controllers.records = result;\n }).finally(() => {\n this.controllers.loading = false;\n });\n },\n time(period, initalDate, endDate) {\n this.http.get(this.url.audit(\"analytics/trends\").filter({\n groupBy: [period],\n startDate: [initalDate],\n finalDate: [endDate]\n })).then(result => {\n if (period === 'day') {\n this.trends.recordsDays = result;\n } else if (period === 'hour') {\n this.trends.recordsHours = result;\n }\n }).finally(() => {\n this.loading = false;\n });\n }\n }\n});\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/stores/analytics.js?");
1098
1142
 
1099
1143
  /***/ }),
1100
1144
 
@@ -1105,7 +1149,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1105
1149
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1106
1150
 
1107
1151
  "use strict";
1108
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ editorKeypad: () => (/* reexport safe */ _editors_keypad_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ editorRichText: () => (/* reexport safe */ _editors_richtext_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ editorRichTextViewer: () => (/* reexport safe */ _editors_richtext_viewer_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ lesliChartLine: () => (/* reexport safe */ _charts_line_line_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _charts_line_line_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./charts/line/line.vue */ \"../../enginesdev/lesli-vue/source/components/charts/line/line.vue\");\n/* harmony import */ var _editors_richtext_viewer_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./editors/richtext-viewer.vue */ \"../../enginesdev/lesli-vue/source/components/editors/richtext-viewer.vue\");\n/* harmony import */ var _editors_richtext_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./editors/richtext.vue */ \"../../enginesdev/lesli-vue/source/components/editors/richtext.vue\");\n/* harmony import */ var _editors_keypad_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./editors/keypad.vue */ \"../../enginesdev/lesli-vue/source/components/editors/keypad.vue\");\n/*\nLesli\n\nCopyright (c) 2023, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see http://www.gnu.org/licenses/.\n\nLesli · Ruby on Rails SaaS Development Framework.\n\nMade with ♥ by https://www.lesli.tech\nBuilding a better future, one line of code at a time.\n\n@contact hello@lesli.tech\n@website https://www.lesli.dev\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n\n\n\n\n\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/components/index.js?");
1152
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ editorKeypad: () => (/* reexport safe */ _editors_keypad_vue__WEBPACK_IMPORTED_MODULE_4__[\"default\"]),\n/* harmony export */ editorRichText: () => (/* reexport safe */ _editors_richtext_vue__WEBPACK_IMPORTED_MODULE_3__[\"default\"]),\n/* harmony export */ editorRichTextViewer: () => (/* reexport safe */ _editors_richtext_viewer_vue__WEBPACK_IMPORTED_MODULE_2__[\"default\"]),\n/* harmony export */ lesliChartBar: () => (/* reexport safe */ _charts_bar_bar_vue__WEBPACK_IMPORTED_MODULE_1__[\"default\"]),\n/* harmony export */ lesliChartLine: () => (/* reexport safe */ _charts_line_line_vue__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _charts_line_line_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./charts/line/line.vue */ \"../../enginesdev/lesli-vue/source/components/charts/line/line.vue\");\n/* harmony import */ var _charts_bar_bar_vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./charts/bar/bar.vue */ \"../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue\");\n/* harmony import */ var _editors_richtext_viewer_vue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./editors/richtext-viewer.vue */ \"../../enginesdev/lesli-vue/source/components/editors/richtext-viewer.vue\");\n/* harmony import */ var _editors_richtext_vue__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./editors/richtext.vue */ \"../../enginesdev/lesli-vue/source/components/editors/richtext.vue\");\n/* harmony import */ var _editors_keypad_vue__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./editors/keypad.vue */ \"../../enginesdev/lesli-vue/source/components/editors/keypad.vue\");\n/*\nLesli\n\nCopyright (c) 2023, Lesli Technologies, S. A.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program. If not, see http://www.gnu.org/licenses/.\n\nLesli · Ruby on Rails SaaS Development Framework.\n\nMade with ♥ by https://www.lesli.tech\nBuilding a better future, one line of code at a time.\n\n@contact hello@lesli.tech\n@website https://www.lesli.dev\n@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html\n\n// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~\n// · \n*/\n\n\n\n\n\n\n\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/components/index.js?");
1109
1153
 
1110
1154
  /***/ }),
1111
1155
 
@@ -1499,25 +1543,47 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1499
1543
 
1500
1544
  /***/ }),
1501
1545
 
1502
- /***/ "../LesliAudit/lib/vue/apps/analytics/requests.vue":
1503
- /*!*********************************************************!*\
1504
- !*** ../LesliAudit/lib/vue/apps/analytics/requests.vue ***!
1505
- \*********************************************************/
1546
+ /***/ "../LesliAudit/lib/vue/components/requests.vue":
1547
+ /*!*****************************************************!*\
1548
+ !*** ../LesliAudit/lib/vue/components/requests.vue ***!
1549
+ \*****************************************************/
1506
1550
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1507
1551
 
1508
1552
  "use strict";
1509
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _requests_vue_vue_type_template_id_ddcd7c0c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./requests.vue?vue&type=template&id=ddcd7c0c */ \"../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=template&id=ddcd7c0c\");\n/* harmony import */ var _requests_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./requests.vue?vue&type=script&setup=true&lang=js */ \"../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=script&setup=true&lang=js\");\n/* harmony import */ var _Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../Lesli/node_modules/vue-loader/dist/exportHelper.js */ \"./node_modules/vue-loader/dist/exportHelper.js\");\n\n\n\n\n;\nconst __exports__ = /*#__PURE__*/(0,_Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_requests_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], [['render',_requests_vue_vue_type_template_id_ddcd7c0c__WEBPACK_IMPORTED_MODULE_0__.render],['__file',\"LesliAudit/lib/vue/apps/analytics/requests.vue\"]])\n/* hot reload */\nif (false) {}\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__exports__);\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/requests.vue?");
1553
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _requests_vue_vue_type_template_id_85d02fa6__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./requests.vue?vue&type=template&id=85d02fa6 */ \"../LesliAudit/lib/vue/components/requests.vue?vue&type=template&id=85d02fa6\");\n/* harmony import */ var _requests_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./requests.vue?vue&type=script&setup=true&lang=js */ \"../LesliAudit/lib/vue/components/requests.vue?vue&type=script&setup=true&lang=js\");\n/* harmony import */ var _Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../Lesli/node_modules/vue-loader/dist/exportHelper.js */ \"./node_modules/vue-loader/dist/exportHelper.js\");\n\n\n\n\n;\nconst __exports__ = /*#__PURE__*/(0,_Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_requests_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], [['render',_requests_vue_vue_type_template_id_85d02fa6__WEBPACK_IMPORTED_MODULE_0__.render],['__file',\"LesliAudit/lib/vue/components/requests.vue\"]])\n/* hot reload */\nif (false) {}\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__exports__);\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/requests.vue?");
1510
1554
 
1511
1555
  /***/ }),
1512
1556
 
1513
- /***/ "../LesliAudit/lib/vue/apps/analytics/visitors.vue":
1514
- /*!*********************************************************!*\
1515
- !*** ../LesliAudit/lib/vue/apps/analytics/visitors.vue ***!
1516
- \*********************************************************/
1557
+ /***/ "../LesliAudit/lib/vue/components/resources.vue":
1558
+ /*!******************************************************!*\
1559
+ !*** ../LesliAudit/lib/vue/components/resources.vue ***!
1560
+ \******************************************************/
1561
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1562
+
1563
+ "use strict";
1564
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _resources_vue_vue_type_template_id_ca4d0ee8__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./resources.vue?vue&type=template&id=ca4d0ee8 */ \"../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8\");\n/* harmony import */ var _resources_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./resources.vue?vue&type=script&setup=true&lang=js */ \"../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js\");\n/* harmony import */ var _Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../Lesli/node_modules/vue-loader/dist/exportHelper.js */ \"./node_modules/vue-loader/dist/exportHelper.js\");\n\n\n\n\n;\nconst __exports__ = /*#__PURE__*/(0,_Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_resources_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], [['render',_resources_vue_vue_type_template_id_ca4d0ee8__WEBPACK_IMPORTED_MODULE_0__.render],['__file',\"LesliAudit/lib/vue/components/resources.vue\"]])\n/* hot reload */\nif (false) {}\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__exports__);\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/resources.vue?");
1565
+
1566
+ /***/ }),
1567
+
1568
+ /***/ "../LesliAudit/lib/vue/components/visitors.vue":
1569
+ /*!*****************************************************!*\
1570
+ !*** ../LesliAudit/lib/vue/components/visitors.vue ***!
1571
+ \*****************************************************/
1572
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1573
+
1574
+ "use strict";
1575
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _visitors_vue_vue_type_template_id_63fdf9ae__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./visitors.vue?vue&type=template&id=63fdf9ae */ \"../LesliAudit/lib/vue/components/visitors.vue?vue&type=template&id=63fdf9ae\");\n/* harmony import */ var _visitors_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./visitors.vue?vue&type=script&setup=true&lang=js */ \"../LesliAudit/lib/vue/components/visitors.vue?vue&type=script&setup=true&lang=js\");\n/* harmony import */ var _Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../Lesli/node_modules/vue-loader/dist/exportHelper.js */ \"./node_modules/vue-loader/dist/exportHelper.js\");\n\n\n\n\n;\nconst __exports__ = /*#__PURE__*/(0,_Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_visitors_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], [['render',_visitors_vue_vue_type_template_id_63fdf9ae__WEBPACK_IMPORTED_MODULE_0__.render],['__file',\"LesliAudit/lib/vue/components/visitors.vue\"]])\n/* hot reload */\nif (false) {}\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__exports__);\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/visitors.vue?");
1576
+
1577
+ /***/ }),
1578
+
1579
+ /***/ "../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue":
1580
+ /*!***********************************************************************!*\
1581
+ !*** ../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue ***!
1582
+ \***********************************************************************/
1517
1583
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1518
1584
 
1519
1585
  "use strict";
1520
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _visitors_vue_vue_type_template_id_37ff537b__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./visitors.vue?vue&type=template&id=37ff537b */ \"../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=template&id=37ff537b\");\n/* harmony import */ var _visitors_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./visitors.vue?vue&type=script&setup=true&lang=js */ \"../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=script&setup=true&lang=js\");\n/* harmony import */ var _Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../Lesli/node_modules/vue-loader/dist/exportHelper.js */ \"./node_modules/vue-loader/dist/exportHelper.js\");\n\n\n\n\n;\nconst __exports__ = /*#__PURE__*/(0,_Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_visitors_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], [['render',_visitors_vue_vue_type_template_id_37ff537b__WEBPACK_IMPORTED_MODULE_0__.render],['__file',\"LesliAudit/lib/vue/apps/analytics/visitors.vue\"]])\n/* hot reload */\nif (false) {}\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__exports__);\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/visitors.vue?");
1586
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _bar_vue_vue_type_template_id_986d3ba4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bar.vue?vue&type=template&id=986d3ba4 */ \"../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=template&id=986d3ba4\");\n/* harmony import */ var _bar_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./bar.vue?vue&type=script&setup=true&lang=js */ \"../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=script&setup=true&lang=js\");\n/* harmony import */ var _engines_Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../engines/Lesli/node_modules/vue-loader/dist/exportHelper.js */ \"./node_modules/vue-loader/dist/exportHelper.js\");\n\n\n\n\n;\nconst __exports__ = /*#__PURE__*/(0,_engines_Lesli_node_modules_vue_loader_dist_exportHelper_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_bar_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], [['render',_bar_vue_vue_type_template_id_986d3ba4__WEBPACK_IMPORTED_MODULE_0__.render],['__file',\"enginesdev/lesli-vue/source/components/charts/bar/bar.vue\"]])\n/* hot reload */\nif (false) {}\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (__exports__);\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?");
1521
1587
 
1522
1588
  /***/ }),
1523
1589
 
@@ -1950,25 +2016,47 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1950
2016
 
1951
2017
  /***/ }),
1952
2018
 
1953
- /***/ "../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=script&setup=true&lang=js":
1954
- /*!********************************************************************************************!*\
1955
- !*** ../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=script&setup=true&lang=js ***!
1956
- \********************************************************************************************/
2019
+ /***/ "../LesliAudit/lib/vue/components/requests.vue?vue&type=script&setup=true&lang=js":
2020
+ /*!****************************************************************************************!*\
2021
+ !*** ../LesliAudit/lib/vue/components/requests.vue?vue&type=script&setup=true&lang=js ***!
2022
+ \****************************************************************************************/
1957
2023
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1958
2024
 
1959
2025
  "use strict";
1960
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_requests_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_requests_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./requests.vue?vue&type=script&setup=true&lang=js */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=script&setup=true&lang=js\");\n \n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/requests.vue?");
2026
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_requests_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_requests_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./requests.vue?vue&type=script&setup=true&lang=js */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/requests.vue?vue&type=script&setup=true&lang=js\");\n \n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/requests.vue?");
1961
2027
 
1962
2028
  /***/ }),
1963
2029
 
1964
- /***/ "../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=script&setup=true&lang=js":
1965
- /*!********************************************************************************************!*\
1966
- !*** ../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=script&setup=true&lang=js ***!
1967
- \********************************************************************************************/
2030
+ /***/ "../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js":
2031
+ /*!*****************************************************************************************!*\
2032
+ !*** ../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js ***!
2033
+ \*****************************************************************************************/
2034
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2035
+
2036
+ "use strict";
2037
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_resources_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_resources_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./resources.vue?vue&type=script&setup=true&lang=js */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=script&setup=true&lang=js\");\n \n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/resources.vue?");
2038
+
2039
+ /***/ }),
2040
+
2041
+ /***/ "../LesliAudit/lib/vue/components/visitors.vue?vue&type=script&setup=true&lang=js":
2042
+ /*!****************************************************************************************!*\
2043
+ !*** ../LesliAudit/lib/vue/components/visitors.vue?vue&type=script&setup=true&lang=js ***!
2044
+ \****************************************************************************************/
2045
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2046
+
2047
+ "use strict";
2048
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_visitors_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_visitors_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./visitors.vue?vue&type=script&setup=true&lang=js */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/visitors.vue?vue&type=script&setup=true&lang=js\");\n \n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/visitors.vue?");
2049
+
2050
+ /***/ }),
2051
+
2052
+ /***/ "../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=script&setup=true&lang=js":
2053
+ /*!**********************************************************************************************************!*\
2054
+ !*** ../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=script&setup=true&lang=js ***!
2055
+ \**********************************************************************************************************/
1968
2056
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1969
2057
 
1970
2058
  "use strict";
1971
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_visitors_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_visitors_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./visitors.vue?vue&type=script&setup=true&lang=js */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=script&setup=true&lang=js\");\n \n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/visitors.vue?");
2059
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* reexport safe */ _engines_Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_engines_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_bar_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])\n/* harmony export */ });\n/* harmony import */ var _engines_Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_engines_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_bar_vue_vue_type_script_setup_true_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../engines/Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../../../engines/Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./bar.vue?vue&type=script&setup=true&lang=js */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=script&setup=true&lang=js\");\n \n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?");
1972
2060
 
1973
2061
  /***/ }),
1974
2062
 
@@ -2401,25 +2489,47 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
2401
2489
 
2402
2490
  /***/ }),
2403
2491
 
2404
- /***/ "../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=template&id=ddcd7c0c":
2405
- /*!***************************************************************************************!*\
2406
- !*** ../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=template&id=ddcd7c0c ***!
2407
- \***************************************************************************************/
2492
+ /***/ "../LesliAudit/lib/vue/components/requests.vue?vue&type=template&id=85d02fa6":
2493
+ /*!***********************************************************************************!*\
2494
+ !*** ../LesliAudit/lib/vue/components/requests.vue?vue&type=template&id=85d02fa6 ***!
2495
+ \***********************************************************************************/
2408
2496
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2409
2497
 
2410
2498
  "use strict";
2411
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_requests_vue_vue_type_template_id_ddcd7c0c__WEBPACK_IMPORTED_MODULE_0__.render)\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_requests_vue_vue_type_template_id_ddcd7c0c__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../../Lesli/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!../../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./requests.vue?vue&type=template&id=ddcd7c0c */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/requests.vue?vue&type=template&id=ddcd7c0c\");\n\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/requests.vue?");
2499
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_requests_vue_vue_type_template_id_85d02fa6__WEBPACK_IMPORTED_MODULE_0__.render)\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_requests_vue_vue_type_template_id_85d02fa6__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../Lesli/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./requests.vue?vue&type=template&id=85d02fa6 */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/requests.vue?vue&type=template&id=85d02fa6\");\n\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/requests.vue?");
2412
2500
 
2413
2501
  /***/ }),
2414
2502
 
2415
- /***/ "../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=template&id=37ff537b":
2416
- /*!***************************************************************************************!*\
2417
- !*** ../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=template&id=37ff537b ***!
2418
- \***************************************************************************************/
2503
+ /***/ "../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8":
2504
+ /*!************************************************************************************!*\
2505
+ !*** ../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8 ***!
2506
+ \************************************************************************************/
2507
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2508
+
2509
+ "use strict";
2510
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_resources_vue_vue_type_template_id_ca4d0ee8__WEBPACK_IMPORTED_MODULE_0__.render)\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_resources_vue_vue_type_template_id_ca4d0ee8__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../Lesli/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./resources.vue?vue&type=template&id=ca4d0ee8 */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/resources.vue?vue&type=template&id=ca4d0ee8\");\n\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/resources.vue?");
2511
+
2512
+ /***/ }),
2513
+
2514
+ /***/ "../LesliAudit/lib/vue/components/visitors.vue?vue&type=template&id=63fdf9ae":
2515
+ /*!***********************************************************************************!*\
2516
+ !*** ../LesliAudit/lib/vue/components/visitors.vue?vue&type=template&id=63fdf9ae ***!
2517
+ \***********************************************************************************/
2518
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2519
+
2520
+ "use strict";
2521
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_visitors_vue_vue_type_template_id_63fdf9ae__WEBPACK_IMPORTED_MODULE_0__.render)\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_visitors_vue_vue_type_template_id_63fdf9ae__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../Lesli/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./visitors.vue?vue&type=template&id=63fdf9ae */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/components/visitors.vue?vue&type=template&id=63fdf9ae\");\n\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/components/visitors.vue?");
2522
+
2523
+ /***/ }),
2524
+
2525
+ /***/ "../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=template&id=986d3ba4":
2526
+ /*!*****************************************************************************************************!*\
2527
+ !*** ../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=template&id=986d3ba4 ***!
2528
+ \*****************************************************************************************************/
2419
2529
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
2420
2530
 
2421
2531
  "use strict";
2422
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* reexport safe */ _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_visitors_vue_vue_type_template_id_37ff537b__WEBPACK_IMPORTED_MODULE_0__.render)\n/* harmony export */ });\n/* harmony import */ var _Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_visitors_vue_vue_type_template_id_37ff537b__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../../Lesli/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!../../../../../Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./visitors.vue?vue&type=template&id=37ff537b */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../LesliAudit/lib/vue/apps/analytics/visitors.vue?vue&type=template&id=37ff537b\");\n\n\n//# sourceURL=webpack://lesli/../LesliAudit/lib/vue/apps/analytics/visitors.vue?");
2532
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ render: () => (/* reexport safe */ _engines_Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_engines_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_engines_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_bar_vue_vue_type_template_id_986d3ba4__WEBPACK_IMPORTED_MODULE_0__.render)\n/* harmony export */ });\n/* harmony import */ var _engines_Lesli_node_modules_babel_loader_lib_index_js_clonedRuleSet_8_use_engines_Lesli_node_modules_vue_loader_dist_templateLoader_js_ruleSet_1_rules_2_engines_Lesli_node_modules_vue_loader_dist_index_js_ruleSet_0_use_bar_vue_vue_type_template_id_986d3ba4__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../engines/Lesli/node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!../../../../../../engines/Lesli/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!../../../../../../engines/Lesli/node_modules/vue-loader/dist/index.js??ruleSet[0].use!./bar.vue?vue&type=template&id=986d3ba4 */ \"./node_modules/babel-loader/lib/index.js??clonedRuleSet-8.use!./node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[2]!./node_modules/vue-loader/dist/index.js??ruleSet[0].use!../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?vue&type=template&id=986d3ba4\");\n\n\n//# sourceURL=webpack://lesli/../../enginesdev/lesli-vue/source/components/charts/bar/bar.vue?");
2423
2533
 
2424
2534
  /***/ }),
2425
2535
 
@@ -9,6 +9,10 @@ module LesliAudit
9
9
  respond_with_successful(AnalyticService.new(current_user, query).visitors)
10
10
  end
11
11
 
12
+ def resourcess
13
+ respond_with_successful(AnalyticService.new(current_user, query).resourcess)
14
+ end
15
+
12
16
  def users
13
17
  respond_with_successful(AnalyticService.new(current_user, query).users)
14
18
  end
@@ -35,6 +35,14 @@ module LesliAudit
35
35
 
36
36
  LIMIT=5
37
37
 
38
+ def resourcess
39
+ return current_user.account.requests.group(:created_at).limit(30)
40
+ .select(
41
+ "count(id) resources",
42
+ "created_at date"
43
+ )
44
+ end
45
+
38
46
  # @overwrite
39
47
  # @return {Hash} Paginated list of the records
40
48
  # @param {query} Has of the formated queries/filters that will be applied to filter data
@@ -55,13 +63,13 @@ module LesliAudit
55
63
  requests = apply_filters(requests, query)
56
64
 
57
65
  requests.limit(30).order("date DESC").select(
58
- "count(id) resources",
66
+ #"count(id) resources",
59
67
  "sum(request_count) requests",
60
68
  "DATE_TRUNC('day', created_at) date"
61
69
  ).map do |request|
62
70
  {
63
71
  :requests => request[:requests],
64
- :resources => request[:resources],
72
+ #:resources => request[:resources],
65
73
  :date => Date2.new(request[:date]).date.to_s
66
74
  }
67
75
  end
@@ -103,7 +111,8 @@ module LesliAudit
103
111
  end
104
112
 
105
113
  def controllers
106
- requests = Lesli::User::Request.where(user: current_user.account.users).group("request_controller")
114
+ requests = current_user.account.requests
115
+ .group("request_controller").limit(30)
107
116
 
108
117
  requests = apply_filters(requests, query)
109
118
 
@@ -42,7 +42,11 @@ module LesliAudit
42
42
  # @example
43
43
  def visits
44
44
 
45
- return Lesli::User::Request.group("DATE_TRUNC('day', created_at)").limit(30).order("date DESC").select(
45
+ return Lesli::User::Request
46
+ .group("DATE_TRUNC('day', created_at)").limit(30)
47
+ .order("date DESC")
48
+ .limit(30)
49
+ .select(
46
50
  "count(id) resources",
47
51
  "sum(request_count) requests",
48
52
  "DATE_TRUNC('day', created_at) date"
data/config/routes.rb CHANGED
@@ -32,10 +32,37 @@ Building a better future, one line of code at a time.
32
32
 
33
33
  LesliAudit::Engine.routes.draw do
34
34
  root to: "dashboards#show"
35
+
36
+
37
+ # Dashboard:
38
+ # Total users
39
+ # Total roles
40
+ # Visits
41
+ # Trends
35
42
  resource :dashboard, only: [:show]
43
+
44
+ # Users:
45
+ # Registrations users grouped by creation date
46
+ # Working hours first and last request of the day
47
+ # Activities changes on users information
48
+ # Roles total users by role
49
+ # Logs relevant actions of users
50
+ # resources :users, only: []
51
+
52
+ # Account:
53
+ # Activities changes on account information
54
+ # Logs relevant actions of the account
55
+ # resources :account, only: []
56
+
57
+ # Requests: Raw request data
58
+ # resources :request, only: []
59
+
60
+ # Analytics:
61
+ #
36
62
  resources :analytics, only: [:index] do
37
63
  collection do
38
64
  get :trends
65
+ get :resourcess
39
66
  get :visitors
40
67
  get :controllers
41
68
  get :devices
@@ -0,0 +1,67 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS Development Framework.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+
34
+
35
+ # Get the current date
36
+ end_date = Date.today
37
+
38
+ # Calculate the date 10 days ago
39
+ start_date = 10.days.ago.to_date
40
+
41
+ account = Lesli::Account.first
42
+
43
+ user = Lesli::User.first
44
+
45
+ session = user.sessions.first
46
+
47
+ # Iterate through the dates
48
+ (start_date..end_date).each do |date|
49
+
50
+ Lesli::Account::Request.create_with(
51
+ :request_method => "show",
52
+ :request_count => rand(1..100),
53
+ ).find_or_create_by(
54
+ :request_controller => "lesli_audit/dashboards",
55
+ :request_action => "show",
56
+ :created_at => date,
57
+ :account => account
58
+ )
59
+
60
+ Lesli::User::Request.create_with(
61
+ :request_count => rand(1..100)
62
+ ).find_or_create_by(
63
+ :created_at => date,
64
+ :session => session,
65
+ :user => user
66
+ )
67
+ end
File without changes
data/db/seed/test.rb ADDED
File without changes
data/db/seeds.rb ADDED
@@ -0,0 +1,40 @@
1
+ =begin
2
+
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS Development Framework.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ =end
32
+
33
+
34
+ # IMPORTANT:
35
+ # Seed files are only for development, if you need to create default resources
36
+ # for production you must use the initializer method in the Engine account model
37
+ if Rails.env.development?
38
+ L2.msg("Loading seeds for LesliAudit", "Version: #{LesliAudit::VERSION}", "Build: #{LesliAudit::BUILD}")
39
+ load(LesliAudit::Engine.root.join("db", "seed", "#{ Rails.env.downcase }.rb"))
40
+ end
@@ -1,3 +1,4 @@
1
1
  module LesliAudit
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
+ BUILD = "1696565622"
3
4
  end
@@ -4,15 +4,57 @@
4
4
  import { ref, reactive, onMounted, watch, computed } from "vue"
5
5
 
6
6
 
7
- import visitors from "./visitors.vue";
8
- import requests from "./requests.vue";
7
+ // · import stores
8
+ import { useAnalytics } from "LesliAudit/stores/analytics"
9
+
10
+
11
+ // · implement stores
12
+ const storeAnalytics = useAnalytics()
13
+
14
+
15
+ // ·
16
+ import visitors from "../../components/visitors.vue";
17
+ import requests from "../../components/requests.vue";
18
+ import resources from "../../components/resources.vue";
9
19
  //import trends from "./trends.vue";
10
20
 
21
+
22
+ // ·
23
+ function reload() {
24
+ storeAnalytics.fetch()
25
+ }
26
+
27
+
28
+ // · initializing
29
+ onMounted(() => {
30
+ storeAnalytics.fetchVisits()
31
+ setTimeout(() => storeAnalytics.fetchUsers(), 500)
32
+ setTimeout(() => storeAnalytics.fetchDevices(), 1000)
33
+ setTimeout(() => storeAnalytics.fetchResources(), 1500)
34
+ setTimeout(() => storeAnalytics.fetchControllers(), 2000)
35
+ })
36
+
11
37
  </script>
12
38
  <template>
13
39
  <lesli-application-container>
14
- <lesli-header title="Analytics"></lesli-header>
15
- <visitors></visitors>
40
+ <lesli-header title="Analytics">
41
+ <lesli-select :options="[
42
+ { label: 'Today', value: 7 },
43
+ { label: 'Yesterday', value: 7 },
44
+ { label: 'This week', value: 7 },
45
+ { label: 'Last 7 days', value: 7 },
46
+ { label: 'Last 15 days', value: 7 },
47
+ { label: 'Last 30 days', value: 7 },
48
+ { label: 'Last 60 days', value: 7 },
49
+ { label: 'Last 90 days', value: 7 },
50
+ { label: 'Last 6 months', value: 7 },
51
+ { label: 'Last 12 months', value: 7 },
52
+ { label: 'This year (Jan - Today)', value: 7 }
53
+ ]">
54
+ </lesli-select>
55
+ </lesli-header>
56
+ <visitors class="mb-5"></visitors>
57
+ <resources class="mb-5"></resources>
16
58
  <requests></requests>
17
59
  </lesli-application-container>
18
60
  </template>
@@ -27,7 +27,7 @@ import chartLine from "Lesli/components/charts/line.vue"
27
27
 
28
28
 
29
29
  // · import lesli stores
30
- import { useAnalytics } from "CloudAudit/stores/analytics/visitors"
30
+ import { useAnalytics } from "CloudAudit/stores/analytics"
31
31
 
32
32
 
33
33
  // · implement stores
@@ -36,7 +36,7 @@ import { } from "vue"
36
36
 
37
37
 
38
38
  // · import stores
39
- import { useAnalytics } from "LesliAudit/stores/analytics/visitors"
39
+ import { useAnalytics } from "LesliAudit/stores/analytics"
40
40
 
41
41
 
42
42
  // · implement stores
@@ -44,7 +44,7 @@ const storeAnalytics = useAnalytics()
44
44
 
45
45
  </script>
46
46
  <template>
47
- <div class="columns mt-3">
47
+ <div class="columns">
48
48
  <div class="column">
49
49
  <lesli-table
50
50
  :columns="storeAnalytics.users.columns"
@@ -0,0 +1,73 @@
1
+ <script setup>
2
+ /*
3
+ Lesli
4
+
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
6
+
7
+ This program is free software: you can redistribute it and/or modify
8
+ it under the terms of the GNU General Public License as published by
9
+ the Free Software Foundation, either version 3 of the License, or
10
+ (at your option) any later version.
11
+
12
+ This program is distributed in the hope that it will be useful,
13
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
14
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15
+ GNU General Public License for more details.
16
+
17
+ You should have received a copy of the GNU General Public License
18
+ along with this program. If not, see http://www.gnu.org/licenses/.
19
+
20
+ Lesli · Ruby on Rails SaaS Development Framework.
21
+
22
+ Made with ♥ by https://www.lesli.tech
23
+ Building a better future, one line of code at a time.
24
+
25
+ @contact hello@lesli.tech
26
+ @website https://www.lesli.tech
27
+ @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
+
29
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
+ // ·
31
+ */
32
+
33
+
34
+ // · import vue tools
35
+ import { ref, reactive, onMounted, watch, computed } from "vue"
36
+
37
+
38
+ // · import Lesli components
39
+ import { lesliChartBar } from "lesli-vue/components"
40
+
41
+
42
+ // · import stores
43
+ import { useAnalytics } from "LesliAudit/stores/analytics"
44
+
45
+
46
+ // · implement stores
47
+ const storeAnalytics = useAnalytics()
48
+
49
+
50
+ // · define variables
51
+ var series = ref([]);
52
+ var labels = ref([]);
53
+
54
+
55
+ // ·
56
+ watch(() => storeAnalytics.resources.records, () => {
57
+ labels.value = storeAnalytics.resources.records.map(visit => visit.date)
58
+ series.value = [{
59
+ name: "Resources",
60
+ data: storeAnalytics.resources.records.map(visit => visit.resources)
61
+ }]
62
+ })
63
+
64
+ </script>
65
+ <template>
66
+ <lesli-application-component>
67
+ <lesli-chart-bar
68
+ :title="'Resources'"
69
+ :series="series"
70
+ :labels="labels">
71
+ </lesli-chart-bar>
72
+ </lesli-application-component>
73
+ </template>
@@ -40,7 +40,7 @@ import { lesliChartLine } from "lesli-vue/components"
40
40
 
41
41
 
42
42
  // · import stores
43
- import { useAnalytics } from "LesliAudit/stores/analytics/visitors"
43
+ import { useAnalytics } from "LesliAudit/stores/analytics"
44
44
 
45
45
 
46
46
  // · implement stores
@@ -52,30 +52,12 @@ var series = ref([]);
52
52
  var labels = ref([]);
53
53
 
54
54
 
55
- // · initializing
56
- onMounted(() => {
57
- storeAnalytics.fetchVisits()
58
- setTimeout(() => storeAnalytics.fetchUsers(), 500)
59
- setTimeout(() => storeAnalytics.fetchDevices(), 1000)
60
- setTimeout(() => storeAnalytics.fetchControllers(), 1500)
61
- })
62
-
63
-
64
- // ·
65
- function reload() {
66
- storeAnalytics.fetch()
67
- }
68
-
69
-
70
55
  // ·
71
56
  watch(() => storeAnalytics.visitors.records, () => {
72
57
  labels.value = storeAnalytics.visitors.records.map(visit => visit.date)
73
58
  series.value = [{
74
59
  name: "Requests",
75
60
  data: storeAnalytics.visitors.records.map(visit => visit.requests)
76
- }, {
77
- name: "Resources",
78
- data: storeAnalytics.visitors.records.map(visit => visit.resources)
79
61
  }]
80
62
  })
81
63
 
@@ -51,6 +51,11 @@ export const useAnalytics = defineStore("analytics", {
51
51
  label: 'Visits'
52
52
  }]
53
53
  },
54
+ resources: {
55
+ loading: false,
56
+ pagination: {},
57
+ records: []
58
+ },
54
59
  visitors: {
55
60
  loading: false,
56
61
  pagination: {},
@@ -86,6 +91,15 @@ export const useAnalytics = defineStore("analytics", {
86
91
  })
87
92
  },
88
93
 
94
+ fetchResources() {
95
+ this.resources.loading = true
96
+ this.http.get(this.url.audit("analytics/resourcess")).then(result => {
97
+ this.resources.records = result.reverse()
98
+ }).finally(() => {
99
+ this.resources.loading = false
100
+ })
101
+ },
102
+
89
103
  fetchUsers() {
90
104
  this.users.loading = true
91
105
  this.http.get(this.url.audit("analytics/users")).then(result => {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lesli_audit
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Lesli Development Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-10-01 00:00:00.000000000 Z
11
+ date: 2023-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -75,6 +75,10 @@ files:
75
75
  - db/migrate/v1.0/0803000110_create_lesli_audit_accounts.rb
76
76
  - db/migrate/v1.0/0803050110_create_lesli_audit_dashboards.rb
77
77
  - db/migrate/v1.0/0803050210_create_lesli_audit_dashboard_components.rb
78
+ - db/seed/development.rb
79
+ - db/seed/production.rb
80
+ - db/seed/test.rb
81
+ - db/seeds.rb
78
82
  - lib/lesli_audit.rb
79
83
  - lib/lesli_audit/engine.rb
80
84
  - lib/lesli_audit/version.rb
@@ -82,9 +86,7 @@ files:
82
86
  - lib/vue/application.js
83
87
  - lib/vue/apps/accounts/activities.vue
84
88
  - lib/vue/apps/analytics/index.vue
85
- - lib/vue/apps/analytics/requests.vue
86
89
  - lib/vue/apps/analytics/trends.vue
87
- - lib/vue/apps/analytics/visitors.vue
88
90
  - lib/vue/apps/requests/index.vue
89
91
  - lib/vue/apps/security/passwords.vue
90
92
  - lib/vue/apps/security/sessions.vue
@@ -93,8 +95,11 @@ files:
93
95
  - lib/vue/apps/users/registrations.vue
94
96
  - lib/vue/apps/users/roles.vue
95
97
  - lib/vue/apps/users/workingHours.vue
98
+ - lib/vue/components/requests.vue
99
+ - lib/vue/components/resources.vue
100
+ - lib/vue/components/visitors.vue
96
101
  - lib/vue/stores/accounts/activities.js
97
- - lib/vue/stores/analytics/visitors.js
102
+ - lib/vue/stores/analytics.js
98
103
  - lib/vue/stores/request.js
99
104
  - lib/vue/stores/security/password.js
100
105
  - lib/vue/stores/security/session.js