lesli_audit 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/lesli_audit/application.js +1092 -263
  3. data/app/assets/stylesheets/lesli_audit/application.css +35 -0
  4. data/app/controllers/lesli_audit/users_controller.rb +35 -0
  5. data/app/services/lesli_audit/account/activity_services.rb +2 -2
  6. data/app/services/lesli_audit/analytics/trend_services.rb +2 -2
  7. data/app/services/lesli_audit/user_service.rb +63 -0
  8. data/app/services/lesli_audit/users/activity_services.rb +2 -2
  9. data/app/services/lesli_audit/users/log_services.rb +2 -2
  10. data/app/services/lesli_audit/users/registration_services.rb +2 -2
  11. data/app/services/lesli_audit/users/role_services.rb +2 -2
  12. data/app/services/lesli_audit/users/working_hour_services.rb +2 -2
  13. data/app/views/lesli_audit/partials/_engine-navigation.html.erb +4 -4
  14. data/config/locales/translations.en.yml +1 -0
  15. data/config/locales/translations.es.yml +1 -0
  16. data/config/locales/translations.fr.yml +21 -0
  17. data/config/locales/translations.it.yml +21 -0
  18. data/config/locales/translations.pt.yml +21 -0
  19. data/config/routes.rb +4 -2
  20. data/lib/lesli_audit/version.rb +2 -2
  21. data/{app/assets/stylesheets/lesli_audit → lib/scss}/application.scss +0 -4
  22. data/lib/vue/application.js +14 -14
  23. data/lib/vue/apps/analytics/index.vue +1 -1
  24. data/lib/vue/apps/analytics/trends.vue +2 -3
  25. data/lib/vue/apps/dashboards/components/roles.vue +3 -3
  26. data/lib/vue/apps/dashboards/components/users.vue +3 -3
  27. data/lib/vue/apps/dashboards/show.vue +1 -1
  28. data/lib/vue/apps/requests/index.vue +1 -1
  29. data/lib/vue/apps/users/index.vue +80 -22
  30. data/lib/vue/apps/users/registrations.vue +21 -44
  31. data/lib/vue/components/requests.vue +1 -1
  32. data/lib/vue/components/visitors.vue +4 -4
  33. data/lib/vue/stores/analytics.js +24 -9
  34. data/lib/vue/stores/translations.json +104 -0
  35. data/lib/vue/stores/users.js +56 -0
  36. metadata +9 -5
  37. data/app/assets/stylesheets/lesli_audit/dashboard.scss +0 -0
  38. data/app/controllers/lesli_audit/dashboard/components_controller.rb +0 -60
@@ -22,77 +22,54 @@ import { ref, reactive, onMounted, watch, computed } from "vue"
22
22
 
23
23
 
24
24
  // · import Lesli components
25
- import chartLine from "Lesli/components/charts/line.vue"
25
+ import { lesliChartBar } from "lesli-vue/components"
26
26
 
27
27
 
28
28
  // · import stores
29
- import { useUsersRegistrations } from "CloudAudit/stores/users/registrations"
29
+ import { useUsers } from "LesliAudit/vue/stores/users"
30
30
 
31
31
 
32
32
  // · implement stores
33
- const storeUsersRegistrations = useUsersRegistrations()
33
+ const storeUsers = useUsers()
34
34
 
35
35
 
36
36
  // · define variables
37
37
  var registrationSeries = ref([]);
38
- var registrationLabels = ref([]);
39
- var selectedPeriod = ref("month");
40
- var filterPeriod = ref("");
41
- var selectOptions = ref([]);
42
38
 
43
39
 
44
40
  // · initializing
45
41
  onMounted(() => {
46
- storeUsersRegistrations.fetchIfEmpty()
47
- storeUsersRegistrations.getOptions()
42
+ storeUsers.getRegistrations()
48
43
  })
49
44
 
50
45
 
51
46
  // ·
52
- watch(() => storeUsersRegistrations.periods, () => {
53
- selectOptions.value = storeUsersRegistrations.periods
54
- })
47
+ watch(() => storeUsers.registrations, (oldData, newData) => {
55
48
 
49
+ if (storeUsers.registrations.length == 0) {
50
+ return
51
+ }
56
52
 
57
- // ·
58
- watch(() => storeUsersRegistrations.records, () => {
59
- registrationLabels.value = storeUsersRegistrations.records.map(visit => visit.date)
60
53
  registrationSeries.value = [{
61
- name: "Users",
62
- data: storeUsersRegistrations.records.map(visit => visit.count)
54
+ data: storeUsers.registrations.map(registration => {
55
+ return {
56
+ x: registration.date,
57
+ y: registration.count
58
+ }
59
+ })
63
60
  }]
64
61
  })
65
62
 
66
-
67
- // ·
68
- function updateDate(){
69
- filterPeriod = selectedPeriod.value;
70
- storeUsersRegistrations.fetch(filterPeriod)
71
- }
72
-
73
63
  </script>
74
64
  <template>
75
65
  <section class="application-component">
76
- <lesli-header title="User registered by date" @reload="storeUsersRegistrations.reload()">
77
- </lesli-header>
78
-
79
- <div class="block">
80
- <lesli-select
81
- id = "selectPeriod"
82
- @change="updateDate"
83
- v-model = "selectedPeriod"
84
- :options="selectOptions">
85
- </lesli-select>
86
- </div>
87
- <div class="card">
88
- <div class="card-content">
89
- <chartLine
90
- :series="registrationSeries"
91
- :labels="registrationLabels"
92
- @marker-click="markerClick">
93
- </chartLine>
94
- </div>
95
- </div>
66
+ <lesli-card>
67
+ <lesli-chart-bar
68
+ title="Registrations by date"
69
+ :series="registrationSeries"
70
+ @marker-click="markerClick">
71
+ </lesli-chart-bar>
72
+ </lesli-card>
96
73
  </section>
97
74
  </template>
98
75
 
@@ -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/vue/stores/analytics"
40
40
 
41
41
 
42
42
  // · implement stores
@@ -36,11 +36,11 @@ import { ref, reactive, onMounted, watch, computed } from "vue"
36
36
 
37
37
 
38
38
  // · import Lesli components
39
- import { ChartLine } from "lesli-vue/components"
39
+ 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/vue/stores/analytics"
44
44
 
45
45
 
46
46
  // · implement stores
@@ -67,10 +67,10 @@ watch(() => storeAnalytics.visitors.records, () => {
67
67
  </script>
68
68
  <template>
69
69
  <lesli-application-component>
70
- <chart-line
70
+ <lesli-chart-line
71
71
  :title="'Visitors'"
72
72
  :series="series"
73
73
  :labels="labels">
74
- </chart-line>
74
+ </lesli-chart-line>
75
75
  </lesli-application-component>
76
76
  </template>
@@ -1,17 +1,32 @@
1
1
  /*
2
- Copyright (c) 2022, all rights reserved.
3
2
 
4
- All the information provided by this platform is protected by international laws related to
5
- industrial property, intellectual property, copyright and relative international laws.
6
- All intellectual or industrial property rights of the code, texts, trade mark, design,
7
- pictures and any other information belongs to the owner of this platform.
3
+ Lesli
8
4
 
9
- Without the written permission of the owner, any replication, modification,
10
- transmission, publication is strictly forbidden.
5
+ Copyright (c) 2023, Lesli Technologies, S. A.
11
6
 
12
- For more information read the license file including with this software.
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.
13
11
 
14
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
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 LesliTech
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
+ // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
15
30
  // ·
16
31
  */
17
32
 
@@ -5,6 +5,12 @@
5
5
  "navigation_logout": "Logout",
6
6
  "navigation_my_profile": "My profile"
7
7
  },
8
+ "dashboards": {
9
+ "column_default": "Default",
10
+ "column_name": "Name",
11
+ "title": "Dashboards",
12
+ "view_add_component": "Add component"
13
+ },
8
14
  "shared": {
9
15
  "button_add_new": "Add new",
10
16
  "button_delete": "Delete",
@@ -14,6 +20,7 @@
14
20
  "button_save": "Save",
15
21
  "button_settings": "Settings",
16
22
  "button_show": "Show",
23
+ "toolbar_search": "Search...",
17
24
  "view_discussions": "Discussions",
18
25
  "view_files": "Files",
19
26
  "view_quick_actions": "Quick actions",
@@ -28,6 +35,12 @@
28
35
  "navigation_logout": "Cerrar sesión",
29
36
  "navigation_my_profile": "Mi perfil"
30
37
  },
38
+ "dashboards": {
39
+ "column_default": "Default",
40
+ "column_name": "Nombre",
41
+ "title": "Dashboards",
42
+ "view_add_component": "Agregar componente"
43
+ },
31
44
  "shared": {
32
45
  "button_add_new": "Agregar nuevo",
33
46
  "button_delete": "Eliminar",
@@ -37,6 +50,7 @@
37
50
  "button_save": "Guardar",
38
51
  "button_settings": "Configuración",
39
52
  "button_show": "Ver",
53
+ "toolbar_search": "Buscar...",
40
54
  "view_discussions": "Discusiones",
41
55
  "view_files": "Archivos",
42
56
  "view_quick_actions": "Acciones rapidas",
@@ -44,5 +58,95 @@
44
58
  "view_status_inactive": "Inactivo"
45
59
  }
46
60
  }
61
+ },
62
+ "fr": {
63
+ "lesli": {
64
+ "application": {
65
+ "navigation_logout": ":lesli.application.navigation_logout:",
66
+ "navigation_my_profile": ":lesli.application.navigation_my_profile:"
67
+ },
68
+ "dashboards": {
69
+ "column_default": ":lesli.dashboards.column_default:",
70
+ "column_name": ":lesli.dashboards.column_name:",
71
+ "title": ":lesli.dashboards.title:",
72
+ "view_add_component": ":lesli.dashboards.view_add_component:"
73
+ },
74
+ "shared": {
75
+ "button_add_new": ":lesli.shared.button_add_new:",
76
+ "button_delete": ":lesli.shared.button_delete:",
77
+ "button_edit": ":lesli.shared.button_edit:",
78
+ "button_list": ":lesli.shared.button_list:",
79
+ "button_reload": ":lesli.shared.button_reload:",
80
+ "button_save": ":lesli.shared.button_save:",
81
+ "button_settings": ":lesli.shared.button_settings:",
82
+ "button_show": ":lesli.shared.button_show:",
83
+ "toolbar_search": ":lesli.shared.toolbar_search:",
84
+ "view_discussions": ":lesli.shared.view_discussions:",
85
+ "view_files": ":lesli.shared.view_files:",
86
+ "view_quick_actions": ":lesli.shared.view_quick_actions:",
87
+ "view_status_active": ":lesli.shared.view_status_active:",
88
+ "view_status_inactive": ":lesli.shared.view_status_inactive:"
89
+ }
90
+ }
91
+ },
92
+ "it": {
93
+ "lesli": {
94
+ "application": {
95
+ "navigation_logout": ":lesli.application.navigation_logout:",
96
+ "navigation_my_profile": ":lesli.application.navigation_my_profile:"
97
+ },
98
+ "dashboards": {
99
+ "column_default": ":lesli.dashboards.column_default:",
100
+ "column_name": ":lesli.dashboards.column_name:",
101
+ "title": ":lesli.dashboards.title:",
102
+ "view_add_component": ":lesli.dashboards.view_add_component:"
103
+ },
104
+ "shared": {
105
+ "button_add_new": ":lesli.shared.button_add_new:",
106
+ "button_delete": ":lesli.shared.button_delete:",
107
+ "button_edit": ":lesli.shared.button_edit:",
108
+ "button_list": ":lesli.shared.button_list:",
109
+ "button_reload": ":lesli.shared.button_reload:",
110
+ "button_save": ":lesli.shared.button_save:",
111
+ "button_settings": ":lesli.shared.button_settings:",
112
+ "button_show": ":lesli.shared.button_show:",
113
+ "toolbar_search": ":lesli.shared.toolbar_search:",
114
+ "view_discussions": ":lesli.shared.view_discussions:",
115
+ "view_files": ":lesli.shared.view_files:",
116
+ "view_quick_actions": ":lesli.shared.view_quick_actions:",
117
+ "view_status_active": ":lesli.shared.view_status_active:",
118
+ "view_status_inactive": ":lesli.shared.view_status_inactive:"
119
+ }
120
+ }
121
+ },
122
+ "pt": {
123
+ "lesli": {
124
+ "application": {
125
+ "navigation_logout": ":lesli.application.navigation_logout:",
126
+ "navigation_my_profile": ":lesli.application.navigation_my_profile:"
127
+ },
128
+ "dashboards": {
129
+ "column_default": ":lesli.dashboards.column_default:",
130
+ "column_name": ":lesli.dashboards.column_name:",
131
+ "title": ":lesli.dashboards.title:",
132
+ "view_add_component": ":lesli.dashboards.view_add_component:"
133
+ },
134
+ "shared": {
135
+ "button_add_new": ":lesli.shared.button_add_new:",
136
+ "button_delete": ":lesli.shared.button_delete:",
137
+ "button_edit": ":lesli.shared.button_edit:",
138
+ "button_list": ":lesli.shared.button_list:",
139
+ "button_reload": ":lesli.shared.button_reload:",
140
+ "button_save": ":lesli.shared.button_save:",
141
+ "button_settings": ":lesli.shared.button_settings:",
142
+ "button_show": ":lesli.shared.button_show:",
143
+ "toolbar_search": ":lesli.shared.toolbar_search:",
144
+ "view_discussions": ":lesli.shared.view_discussions:",
145
+ "view_files": ":lesli.shared.view_files:",
146
+ "view_quick_actions": ":lesli.shared.view_quick_actions:",
147
+ "view_status_active": ":lesli.shared.view_status_active:",
148
+ "view_status_inactive": ":lesli.shared.view_status_inactive:"
149
+ }
150
+ }
47
151
  }
48
152
  }
@@ -0,0 +1,56 @@
1
+ /*
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 LesliTech
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
+ // ·
35
+ import { defineStore } from "pinia"
36
+
37
+
38
+ // ·
39
+ export const useUsers = defineStore("audit.users", {
40
+ state: () => {
41
+ return {
42
+ registrations: []
43
+ }
44
+ },
45
+ actions: {
46
+
47
+ getRegistrations() {
48
+ this.registrations = []
49
+ this.http.get(this.url.audit("users/registrations")).then(result => {
50
+ this.registrations = result
51
+ }).catch(error => {
52
+ console.log(error)
53
+ })
54
+ }
55
+ }
56
+ })
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.5.0
4
+ version: 0.6.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: 2024-02-11 00:00:00.000000000 Z
11
+ date: 2024-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -35,12 +35,10 @@ files:
35
35
  - app/assets/config/lesli_audit_manifest.js
36
36
  - app/assets/images/lesli_audit/audit-logo.svg
37
37
  - app/assets/javascripts/lesli_audit/application.js
38
- - app/assets/stylesheets/lesli_audit/application.scss
39
- - app/assets/stylesheets/lesli_audit/dashboard.scss
38
+ - app/assets/stylesheets/lesli_audit/application.css
40
39
  - app/controllers/lesli_audit/accounts_controller.rb
41
40
  - app/controllers/lesli_audit/analytics_controller.rb
42
41
  - app/controllers/lesli_audit/application_controller.rb
43
- - app/controllers/lesli_audit/dashboard/components_controller.rb
44
42
  - app/controllers/lesli_audit/dashboards_controller.rb
45
43
  - app/controllers/lesli_audit/requests_controller.rb
46
44
  - app/controllers/lesli_audit/users_controller.rb
@@ -68,6 +66,7 @@ files:
68
66
  - app/services/lesli_audit/analytics/trend_services.rb
69
67
  - app/services/lesli_audit/analytics/visitor_service.rb
70
68
  - app/services/lesli_audit/request_service.rb
69
+ - app/services/lesli_audit/user_service.rb
71
70
  - app/services/lesli_audit/users/activity_services.rb
72
71
  - app/services/lesli_audit/users/log_services.rb
73
72
  - app/services/lesli_audit/users/registration_services.rb
@@ -112,6 +111,9 @@ files:
112
111
  - app/views/lesli_audit/users/show.html.erb
113
112
  - config/locales/translations.en.yml
114
113
  - config/locales/translations.es.yml
114
+ - config/locales/translations.fr.yml
115
+ - config/locales/translations.it.yml
116
+ - config/locales/translations.pt.yml
115
117
  - config/routes.rb
116
118
  - db/migrate/v1.0/0503000110_create_lesli_audit_accounts.rb
117
119
  - db/migrate/v1.0/0503050110_create_lesli_audit_dashboards.rb
@@ -125,6 +127,7 @@ files:
125
127
  - lib/lesli_audit.rb
126
128
  - lib/lesli_audit/engine.rb
127
129
  - lib/lesli_audit/version.rb
130
+ - lib/scss/application.scss
128
131
  - lib/tasks/lesli_audit_tasks.rake
129
132
  - lib/vue/application.js
130
133
  - lib/vue/apps/accounts/activities.vue
@@ -150,6 +153,7 @@ files:
150
153
  - lib/vue/stores/security/password.js
151
154
  - lib/vue/stores/security/session.js
152
155
  - lib/vue/stores/translations.json
156
+ - lib/vue/stores/users.js
153
157
  - lib/vue/stores/users/activities.js
154
158
  - lib/vue/stores/users/logs.js
155
159
  - lib/vue/stores/users/registrations.js
File without changes
@@ -1,60 +0,0 @@
1
- module LesliAudit
2
- class Dashboard::ComponentsController < ApplicationController
3
- before_action :set_dashboard_component, only: %i[ show edit update destroy ]
4
-
5
- # GET /dashboard/components
6
- def index
7
- @dashboard_components = Dashboard::Component.all
8
- end
9
-
10
- # GET /dashboard/components/1
11
- def show
12
- end
13
-
14
- # GET /dashboard/components/new
15
- def new
16
- @dashboard_component = Dashboard::Component.new
17
- end
18
-
19
- # GET /dashboard/components/1/edit
20
- def edit
21
- end
22
-
23
- # POST /dashboard/components
24
- def create
25
- @dashboard_component = Dashboard::Component.new(dashboard_component_params)
26
-
27
- if @dashboard_component.save
28
- redirect_to @dashboard_component, notice: "Component was successfully created."
29
- else
30
- render :new, status: :unprocessable_entity
31
- end
32
- end
33
-
34
- # PATCH/PUT /dashboard/components/1
35
- def update
36
- if @dashboard_component.update(dashboard_component_params)
37
- redirect_to @dashboard_component, notice: "Component was successfully updated.", status: :see_other
38
- else
39
- render :edit, status: :unprocessable_entity
40
- end
41
- end
42
-
43
- # DELETE /dashboard/components/1
44
- def destroy
45
- @dashboard_component.destroy
46
- redirect_to dashboard_components_url, notice: "Component was successfully destroyed.", status: :see_other
47
- end
48
-
49
- private
50
- # Use callbacks to share common setup or constraints between actions.
51
- def set_dashboard_component
52
- @dashboard_component = Dashboard::Component.find(params[:id])
53
- end
54
-
55
- # Only allow a list of trusted parameters through.
56
- def dashboard_component_params
57
- params.fetch(:dashboard_component, {})
58
- end
59
- end
60
- end