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 +4 -4
- data/app/assets/javascripts/lesli_audit/application.js +170 -60
- data/app/controllers/lesli_audit/analytics_controller.rb +4 -0
- data/app/services/lesli_audit/analytic_service.rb +12 -3
- data/app/services/lesli_audit/analytics/visitor_service.rb +5 -1
- data/config/routes.rb +27 -0
- data/db/seed/development.rb +67 -0
- data/db/seed/production.rb +0 -0
- data/db/seed/test.rb +0 -0
- data/db/seeds.rb +40 -0
- data/lib/lesli_audit/version.rb +2 -1
- data/lib/vue/apps/analytics/index.vue +46 -4
- data/lib/vue/apps/analytics/trends.vue +1 -1
- data/lib/vue/{apps/analytics → components}/requests.vue +2 -2
- data/lib/vue/components/resources.vue +73 -0
- data/lib/vue/{apps/analytics → components}/visitors.vue +1 -19
- data/lib/vue/stores/{analytics/visitors.js → analytics.js} +14 -0
- metadata +10 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 26ce5cb30b15296797e4cd097f6ae832056db5ced836433e95b967b1437f4f61
|
4
|
+
data.tar.gz: 5ca1b871b835f766a2615472d2d2ec0db8416618f7bd5ecd87a2b7ac0c4ae6f3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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/
|
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/
|
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
|
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/
|
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/
|
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
|
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: \"
|
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/
|
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/
|
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\
|
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
|
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
|
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
|
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
|
1091
|
-
|
1092
|
-
!*** ../LesliAudit/lib/vue/stores/analytics
|
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
|
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 */
|
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/
|
1503
|
-
|
1504
|
-
!*** ../LesliAudit/lib/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
|
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/
|
1514
|
-
|
1515
|
-
!*** ../LesliAudit/lib/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
|
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/
|
1954
|
-
|
1955
|
-
!*** ../LesliAudit/lib/vue/
|
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__(/*!
|
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/
|
1965
|
-
|
1966
|
-
!*** ../LesliAudit/lib/vue/
|
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 */
|
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/
|
2405
|
-
|
2406
|
-
!*** ../LesliAudit/lib/vue/
|
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 */
|
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/
|
2416
|
-
|
2417
|
-
!*** ../LesliAudit/lib/vue/
|
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 */
|
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
|
-
|
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 =
|
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
|
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
|
data/lib/lesli_audit/version.rb
CHANGED
@@ -4,15 +4,57 @@
|
|
4
4
|
import { ref, reactive, onMounted, watch, computed } from "vue"
|
5
5
|
|
6
6
|
|
7
|
-
|
8
|
-
import
|
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"
|
15
|
-
|
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>
|
@@ -36,7 +36,7 @@ import { } from "vue"
|
|
36
36
|
|
37
37
|
|
38
38
|
// · import stores
|
39
|
-
import { useAnalytics } from "LesliAudit/stores/analytics
|
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
|
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
|
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.
|
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-
|
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
|
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
|