lesli 5.0.12 → 5.0.14

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 (477) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/config/lesli_manifest.js +3 -6
  3. data/app/assets/images/lesli/brand/app-icon.svg +45 -39
  4. data/app/assets/images/lesli/brand/app-logo.png +0 -0
  5. data/app/assets/javascripts/lesli/application.js +1 -0
  6. data/app/controllers/lesli/abouts_controller.rb +16 -14
  7. data/app/controllers/lesli/application_controller.rb +14 -0
  8. data/app/controllers/lesli/application_devise_controller.rb +10 -12
  9. data/app/controllers/lesli/application_lesli_controller.rb +12 -11
  10. data/app/controllers/lesli/apps_controller.rb +6 -0
  11. data/app/controllers/lesli/roles_controller.rb +2 -2
  12. data/app/helpers/lesli/assets_helper.rb +24 -6
  13. data/app/helpers/lesli/general_helper.rb +18 -5
  14. data/app/helpers/lesli/html_helper.rb +8 -0
  15. data/app/helpers/lesli/navigation_helper.rb +43 -20
  16. data/app/helpers/lesli/system_helper.rb +2 -2
  17. data/app/helpers/lesli/turbo_helper.rb +58 -0
  18. data/app/interfaces/lesli/customization_interface.rb +42 -0
  19. data/app/interfaces/lesli/requester_interface.rb +103 -0
  20. data/app/interfaces/lesli/responder_interface.rb +127 -0
  21. data/app/lib/date2.rb +1 -191
  22. data/app/lib/lesli/courier.rb +54 -0
  23. data/app/mailers/lesli/application_lesli_mailer.rb +32 -59
  24. data/app/mailers/lesli/devise_mailer.rb +16 -8
  25. data/app/models/concerns/account_initializer.rb +27 -68
  26. data/app/models/concerns/lesli/has_activities.rb +29 -0
  27. data/app/models/concerns/user_extensions.rb +34 -13
  28. data/app/models/concerns/user_security.rb +4 -4
  29. data/app/models/lesli/account.rb +13 -20
  30. data/{lib/scss/layouts/application-container.scss → app/models/lesli/item/activity.rb} +11 -8
  31. data/app/models/lesli/role/{power.rb → action.rb} +6 -4
  32. data/app/models/lesli/role.rb +7 -15
  33. data/app/models/lesli/shared/catalog.rb +20 -0
  34. data/app/models/lesli/shared/dashboard.rb +1 -1
  35. data/app/models/lesli/user/activity.rb +5 -0
  36. data/app/models/lesli/user/detail.rb +5 -5
  37. data/app/models/lesli/user/{log.rb → journal.rb} +3 -3
  38. data/app/models/lesli/user/{power.rb → role.rb} +2 -3
  39. data/app/models/lesli/user/session.rb +3 -4
  40. data/app/models/lesli/user.rb +50 -46
  41. data/app/operators/lesli/controller_operator.rb +7 -2
  42. data/app/operators/lesli/{role_descriptor_operator.rb → role_operator.rb} +51 -28
  43. data/app/operators/lesli/user_registration_operator.rb +3 -2
  44. data/app/services/lesli/application_lesli_service.rb +8 -4
  45. data/app/services/lesli/role/action_service.rb +58 -0
  46. data/app/services/lesli/role_service.rb +232 -0
  47. data/app/services/lesli/{user_session_service.rb → user/session_service.rb} +23 -14
  48. data/app/services/lesli/user_service.rb +86 -2
  49. data/app/views/lesli/apps/show.html.erb +52 -0
  50. data/app/views/lesli/layouts/application-devise.html.erb +5 -7
  51. data/app/views/lesli/layouts/application-lesli.html.erb +18 -22
  52. data/app/views/lesli/partials/_application-analytics.html.erb +2 -2
  53. data/app/views/lesli/partials/_application-data.html.erb +5 -79
  54. data/app/views/lesli/partials/_application-head.html.erb +7 -4
  55. data/app/views/lesli/partials/_application-lesli-annoouncements.html.erb +49 -0
  56. data/app/views/lesli/partials/_application-lesli-header.html.erb +88 -39
  57. data/app/views/lesli/partials/_application-lesli-javascript.html.erb +5 -18
  58. data/app/views/lesli/partials/_application-lesli-navigation.html.erb +17 -7
  59. data/app/views/lesli/partials/{_application-lesli-notices.html.erb → _application-lesli-notifications.html.erb} +10 -8
  60. data/app/views/lesli/partials/_application-lesli-scss.html.erb +3 -3
  61. data/app/views/lesli/partials/_application-lesli-sidebar.html.erb +1 -1
  62. data/app/views/lesli/partials/_application-public-javascript.html.erb +1 -4
  63. data/app/views/lesli/shared/dashboards/_show.html.erb +63 -0
  64. data/app/views/lesli/wrappers/_application-devise-simple.erb +1 -1
  65. data/app/views/lesli/wrappers/_application-devise.html.erb +4 -6
  66. data/config/importmap.rb +14 -0
  67. data/config/initializers/lesli.rb +27 -13
  68. data/config/initializers/lesli_migration_helpers.rb +61 -0
  69. data/config/locales/translations.en.yml +1 -24
  70. data/config/locales/translations.es.yml +1 -24
  71. data/config/locales/translations.fr.yml +1 -24
  72. data/config/locales/translations.it.yml +1 -24
  73. data/config/locales/translations.pt.yml +1 -24
  74. data/config/routes.rb +3 -1
  75. data/db/migrate/v1/{0010000110_create_lesli_accounts.rb → 0000000110_create_lesli_accounts.rb} +13 -12
  76. data/db/migrate/v1/0000000210_create_lesli_roles.rb +65 -0
  77. data/db/migrate/v1/0000000310_create_lesli_users.rb +99 -0
  78. data/db/migrate/v1/{0010000610_create_lesli_system_controllers.rb → 0000100110_create_lesli_system_controllers.rb} +3 -3
  79. data/db/migrate/v1/{0010000710_create_lesli_system_controller_actions.rb → 0000100210_create_lesli_system_controller_actions.rb} +3 -4
  80. data/db/{seed/production.rb → migrate/v1/0000110310_create_lesli_account_settings.rb} +6 -3
  81. data/{app/models/lesli/user/agent.rb → db/migrate/v1/0000110410_create_lesli_account_activities.rb} +3 -3
  82. data/db/migrate/v1/0000120210_create_lesli_role_actions.rb +45 -0
  83. data/db/migrate/v1/{0010001410_create_lesli_account_logs.rb → 0000120310_create_lesli_role_privileges.rb} +8 -8
  84. data/db/{tables/0010003810_create_user_shortcuts.rb → migrate/v1/0000130210_create_lesli_user_roles.rb} +9 -12
  85. data/db/migrate/v1/0000130310_create_lesli_user_sessions.rb +56 -0
  86. data/db/migrate/v1/0000130410_create_lesli_user_activities.rb +37 -0
  87. data/db/{tables/0010001110_create_account_locations.rb → migrate2/0000100510_create_lesli_account_locations.rb} +6 -6
  88. data/db/{tables/0010001510_create_account_currencies.rb → migrate2/0000100610_create_lesli_account_currencies.rb} +4 -4
  89. data/db/seed/{development/accounts.rb → accounts.rb} +6 -2
  90. data/db/seed/{production/users.rb → users.rb} +4 -10
  91. data/db/seed/{tools.rb → xyz.rb} +2 -7
  92. data/db/seeds.rb +3 -2
  93. data/db/structure/00000020_catalogs.json +0 -0
  94. data/lib/generators/application_lesli_generator_base.rb +164 -0
  95. data/lib/generators/lesli/spec/USAGE +8 -0
  96. data/lib/generators/lesli/spec/spec_generator.rb +25 -0
  97. data/lib/generators/lesli/spec/templates/spec-factory.template +17 -0
  98. data/lib/generators/lesli/spec/templates/spec-model.template +70 -0
  99. data/lib/generators/lesli/view/USAGE +8 -0
  100. data/lib/generators/lesli/view/templates/spec-factory.template +17 -0
  101. data/lib/generators/lesli/view/templates/spec-model.template +70 -0
  102. data/lib/generators/lesli/view/view_generator.rb +25 -0
  103. data/lib/lesli/configuration.rb +8 -11
  104. data/lib/lesli/engine.rb +24 -6
  105. data/lib/lesli/r_spec.rb +43 -0
  106. data/lib/lesli/routing.rb +90 -0
  107. data/lib/lesli/version.rb +2 -2
  108. data/lib/lesli.rb +13 -0
  109. data/lib/migrate/common.rb +94 -0
  110. data/lib/migrate/items/action_structure.rb +51 -0
  111. data/{db/migrate/v1/0010001210_create_lesli_account_activities.rb → lib/migrate/items/activity_structure.rb} +18 -16
  112. data/lib/migrate/items/attachment_structure.rb +62 -0
  113. data/{app/views/lesli/partials/_application-lesli-engines.html.erb → lib/migrate/items/discussion_structure.rb} +19 -27
  114. data/lib/migrate/items/subscriber_structure.rb +49 -0
  115. data/lib/migrate/items/version_structure.rb +53 -0
  116. data/lib/migrate/shared/account_structure.rb +21 -0
  117. data/lib/migrate/shared/catalog_structure.rb +30 -0
  118. data/lib/migrate/shared/dashboard_structure.rb +54 -0
  119. data/lib/migrate/shared/setting_structure.rb +20 -0
  120. data/lib/rspec/config/spec_coverage.rb +95 -0
  121. data/{db/migrate/v1/0010001110_create_lesli_account_settings.rb → lib/rspec/factories/lesli_account.rb} +10 -7
  122. data/{db/seed/development.rb → lib/rspec/factories/lesli_role.rb} +30 -3
  123. data/{db/seed/test.rb → lib/rspec/factories/lesli_user.rb} +32 -3
  124. data/lib/rspec/fixtures/files/lesli-icon.png +0 -0
  125. data/lib/rspec/fixtures/files/test_file_1.docx +0 -0
  126. data/{db/tables/0010001610_create_account_currency_exchange_rates.rb → lib/rspec/helpers/lesli_helper.rb} +21 -21
  127. data/lib/rspec/helpers/rails_helper.rb +134 -0
  128. data/lib/rspec/helpers/response_request_helper.rb +214 -0
  129. data/lib/rspec/helpers/response_service_helper.rb +66 -0
  130. data/lib/rspec/helpers/spec_helper.rb +99 -0
  131. data/lib/rspec/lesli_api_tester.rb +133 -0
  132. data/lib/rspec/lesli_service_tester.rb +46 -0
  133. data/{db/tables/0010001410_create_account_files.rb → lib/rspec/testers/controller.rb} +31 -20
  134. data/lib/rspec/testers/model.rb +36 -0
  135. data/lib/rspec/testers/request.rb +84 -0
  136. data/lib/tasks/lesli/db.rake +5 -3
  137. data/lib/tasks/lesli/git.rake +28 -32
  138. data/lib/tasks/lesli/github.rake +89 -0
  139. data/lib/tasks/lesli_tasks.rake +6 -6
  140. data/readme.md +28 -17
  141. metadata +132 -399
  142. data/app/assets/fonts/lesli/Domine/Domine-Variable.ttf +0 -0
  143. data/app/assets/fonts/lesli/Domine/OFL.txt +0 -97
  144. data/app/assets/fonts/lesli/MaterialDesign/icons.woff2 +0 -0
  145. data/app/assets/fonts/lesli/Montserrat/Montserrat-Variable.ttf +0 -0
  146. data/app/assets/fonts/lesli/OpenSans/OpenSans-Variable.ttf +0 -0
  147. data/app/assets/fonts/lesli/Remix/remixicon.eot +0 -0
  148. data/app/assets/fonts/lesli/Remix/remixicon.glyph.json +0 -1
  149. data/app/assets/fonts/lesli/Remix/remixicon.svg +0 -7633
  150. data/app/assets/fonts/lesli/Remix/remixicon.symbol.svg +0 -11
  151. data/app/assets/fonts/lesli/Remix/remixicon.ttf +0 -0
  152. data/app/assets/fonts/lesli/Remix/remixicon.woff +0 -0
  153. data/app/assets/fonts/lesli/Remix/remixicon.woff2 +0 -0
  154. data/app/assets/fonts/lesli/Roboto/LICENSE.txt +0 -202
  155. data/app/assets/fonts/lesli/Roboto/Roboto-Black.ttf +0 -0
  156. data/app/assets/fonts/lesli/Roboto/Roboto-BlackItalic.ttf +0 -0
  157. data/app/assets/fonts/lesli/Roboto/Roboto-Bold.ttf +0 -0
  158. data/app/assets/fonts/lesli/Roboto/Roboto-BoldItalic.ttf +0 -0
  159. data/app/assets/fonts/lesli/Roboto/Roboto-Italic.ttf +0 -0
  160. data/app/assets/fonts/lesli/Roboto/Roboto-Light.ttf +0 -0
  161. data/app/assets/fonts/lesli/Roboto/Roboto-LightItalic.ttf +0 -0
  162. data/app/assets/fonts/lesli/Roboto/Roboto-Medium.ttf +0 -0
  163. data/app/assets/fonts/lesli/Roboto/Roboto-MediumItalic.ttf +0 -0
  164. data/app/assets/fonts/lesli/Roboto/Roboto-Regular.ttf +0 -0
  165. data/app/assets/fonts/lesli/Roboto/Roboto-Thin.ttf +0 -0
  166. data/app/assets/fonts/lesli/Roboto/Roboto-ThinItalic.ttf +0 -0
  167. data/app/assets/icons/lesli/engine-admin.svg +0 -1
  168. data/app/assets/icons/lesli/engine-audit.svg +0 -1
  169. data/app/assets/icons/lesli/engine-babel.svg +0 -1
  170. data/app/assets/icons/lesli/engine-bell.svg +0 -1
  171. data/app/assets/icons/lesli/engine-books.svg +0 -1
  172. data/app/assets/icons/lesli/engine-calendar.svg +0 -1
  173. data/app/assets/icons/lesli/engine-dashboard.svg +0 -1
  174. data/app/assets/icons/lesli/engine-dispatcher.svg +0 -1
  175. data/app/assets/icons/lesli/engine-focus.svg +0 -1
  176. data/app/assets/icons/lesli/engine-kb.svg +0 -1
  177. data/app/assets/icons/lesli/engine-leaf.svg +0 -1
  178. data/app/assets/icons/lesli/engine-lesli.svg +0 -1
  179. data/app/assets/icons/lesli/engine-letter.svg +0 -1
  180. data/app/assets/icons/lesli/engine-mailer.svg +0 -1
  181. data/app/assets/icons/lesli/engine-one.svg +0 -1
  182. data/app/assets/icons/lesli/engine-profile.svg +0 -1
  183. data/app/assets/icons/lesli/engine-proposal.svg +0 -1
  184. data/app/assets/icons/lesli/engine-scraper.svg +0 -1
  185. data/app/assets/icons/lesli/engine-security.svg +0 -1
  186. data/app/assets/icons/lesli/engine-shared.svg +0 -1
  187. data/app/assets/icons/lesli/engine-shield.svg +0 -1
  188. data/app/assets/icons/lesli/engine-storage.svg +0 -1
  189. data/app/assets/icons/lesli/engine-support.svg +0 -1
  190. data/app/assets/icons/lesli/engine-talk.svg +0 -1
  191. data/app/assets/icons/lesli/engine-team.svg +0 -1
  192. data/app/assets/icons/lesli/engine-time.svg +0 -1
  193. data/app/assets/icons/lesli/locale-en.svg +0 -1
  194. data/app/assets/icons/lesli/locale-es.svg +0 -1
  195. data/app/assets/icons/lesli/locale-fr.svg +0 -1
  196. data/app/assets/icons/lesli/locale-it.svg +0 -1
  197. data/app/assets/icons/lesli/locale-pt.svg +0 -1
  198. data/app/assets/icons/readme.md +0 -10
  199. data/app/assets/stylesheets/lesli/templates/application.css +0 -23499
  200. data/app/assets/stylesheets/lesli/templates/public.css +0 -19098
  201. data/app/assets/stylesheets/lesli/users/confirmations.css +0 -19219
  202. data/app/assets/stylesheets/lesli/users/passwords.css +0 -19202
  203. data/app/assets/stylesheets/lesli/users/registrations.css +0 -19594
  204. data/app/assets/stylesheets/lesli/users/sessions.css +0 -19594
  205. data/app/controllers/lesli/interfaces/application/authorization.rb +0 -107
  206. data/app/controllers/lesli/interfaces/application/customization.rb +0 -46
  207. data/app/controllers/lesli/interfaces/application/logger.rb +0 -134
  208. data/app/controllers/lesli/interfaces/application/requester.rb +0 -84
  209. data/app/controllers/lesli/interfaces/application/responder.rb +0 -132
  210. data/app/controllers/lesli/interfaces/controllers/actions.rb +0 -250
  211. data/app/controllers/lesli/interfaces/controllers/activities.rb +0 -215
  212. data/app/controllers/lesli/interfaces/controllers/discussions.rb +0 -270
  213. data/app/controllers/lesli/interfaces/controllers/files.rb +0 -467
  214. data/app/controllers/lesli/interfaces/controllers/subscribers.rb +0 -234
  215. data/app/lib/lesli/system.rb +0 -98
  216. data/app/models/lesli/cloud_object/action.rb +0 -70
  217. data/app/models/lesli/cloud_object/activity.rb +0 -311
  218. data/app/models/lesli/cloud_object/custom_field.rb +0 -158
  219. data/app/models/lesli/cloud_object/discussion.rb +0 -219
  220. data/app/models/lesli/cloud_object/subscriber.rb +0 -186
  221. data/app/operators/lesli/descriptor_privilege_operator.rb +0 -75
  222. data/app/views/lesli/emails/devise_mailer/confirmation_instructions.html.erb +0 -23
  223. data/app/views/lesli/emails/devise_mailer/reset_password_instructions.html.erb +0 -23
  224. data/app/views/lesli/partials/_application-lesli-icons.html.erb +0 -1
  225. data/config/initializers/devise.rb +0 -336
  226. data/db/seed/development/users.rb +0 -52
  227. data/db/seed/production/accounts.rb +0 -50
  228. data/db/structure/00000000_people.json +0 -34
  229. data/db/structure/00000003_actions.json +0 -14
  230. data/db/structure/00000004_activities.json +0 -20
  231. data/db/structure/00000005_discussions.json +0 -8
  232. data/db/structure/00000006_files.json +0 -32
  233. data/db/structure/00000007_subscribers.json +0 -11
  234. data/db/structure/00000501_dashboards.json +0 -14
  235. data/db/structure/00000502_dashboard_components.json +0 -23
  236. data/db/tables/0010003410_create_user_activities.rb +0 -51
  237. data/db/tables/0010003710_create_user_codes.rb +0 -43
  238. data/db/tables/0010004110_create_user_tokens.rb +0 -45
  239. data/db/tables/0010005610_create_role_activities.rb +0 -50
  240. data/db/tables/0010009010_create_feedbacks.rb +0 -56
  241. data/lib/mailer_previews/devise_mailer_preview.rb +0 -49
  242. data/lib/scss/bulma/loader.scss +0 -92
  243. data/lib/scss/cloud-objects/discussion.scss +0 -80
  244. data/lib/scss/cloud-objects/file.scss +0 -138
  245. data/lib/scss/components/keypad.scss +0 -109
  246. data/lib/scss/elements/autocomplete.scss +0 -72
  247. data/lib/scss/elements/card.scss +0 -37
  248. data/lib/scss/elements/empty.scss +0 -43
  249. data/lib/scss/elements/file-uploader.scss +0 -74
  250. data/lib/scss/elements/gallery.scss +0 -98
  251. data/lib/scss/elements/input-tag.scss +0 -73
  252. data/lib/scss/elements/loading.scss +0 -63
  253. data/lib/scss/elements/map.scss +0 -107
  254. data/lib/scss/elements/navbar.scss +0 -115
  255. data/lib/scss/elements/table.scss +0 -118
  256. data/lib/scss/elements/toolbar.scss +0 -66
  257. data/lib/scss/fonts/families.scss +0 -47
  258. data/lib/scss/fonts/mdicons.scss +0 -82
  259. data/lib/scss/fonts/remixicons.scss +0 -2602
  260. data/lib/scss/helpers/display.scss +0 -44
  261. data/lib/scss/helpers/tooltip.scss +0 -91
  262. data/lib/scss/layouts/application-announcements.scss +0 -40
  263. data/lib/scss/layouts/application-component.scss +0 -39
  264. data/lib/scss/layouts/application-engines.scss +0 -125
  265. data/lib/scss/layouts/application-footer.scss +0 -102
  266. data/lib/scss/layouts/application-header.scss +0 -163
  267. data/lib/scss/layouts/application-navbar.scss +0 -62
  268. data/lib/scss/layouts/application-search.scss +0 -71
  269. data/lib/scss/layouts/application-sidebar.scss +0 -219
  270. data/lib/scss/overrides/notification.scss +0 -75
  271. data/lib/scss/overrides/sweetalert.scss +0 -106
  272. data/lib/scss/pages/devise-simple.scss +0 -89
  273. data/lib/scss/pages/devise.scss +0 -179
  274. data/lib/scss/pages/invites.scss +0 -81
  275. data/lib/scss/panels/panel-announcements.scss +0 -56
  276. data/lib/scss/panels/panel-notification.scss +0 -67
  277. data/lib/scss/panels/panel-profile.scss +0 -62
  278. data/lib/scss/panels/panel-support-ticket.scss +0 -56
  279. data/lib/scss/panels/panel-tasks.scss +0 -41
  280. data/lib/scss/settings/variables.scss +0 -148
  281. data/lib/scss/shared/workflow-status-progress.scss +0 -135
  282. data/lib/scss/templates/application.scss +0 -156
  283. data/lib/scss/templates/component.scss +0 -39
  284. data/lib/scss/templates/dashboards.scss +0 -53
  285. data/lib/scss/templates/empty.scss +0 -42
  286. data/lib/scss/templates/pdf.scss +0 -45
  287. data/lib/scss/templates/public.scss +0 -70
  288. data/lib/vue/application.js +0 -283
  289. data/lib/vue/cloudobjects/discussion/content.vue +0 -62
  290. data/lib/vue/cloudobjects/discussion/element.vue +0 -170
  291. data/lib/vue/cloudobjects/discussion/filters.vue +0 -108
  292. data/lib/vue/cloudobjects/discussion/new.vue +0 -134
  293. data/lib/vue/cloudobjects/discussion.vue +0 -99
  294. data/lib/vue/cloudobjects/stores/discussion.js +0 -212
  295. data/lib/vue/layouts/application-announcements.vue +0 -78
  296. data/lib/vue/layouts/application-component.vue +0 -38
  297. data/lib/vue/layouts/application-container.vue +0 -48
  298. data/lib/vue/layouts/application-engines.vue +0 -66
  299. data/lib/vue/layouts/application-footer.vue +0 -123
  300. data/lib/vue/layouts/application-header.vue +0 -231
  301. data/lib/vue/layouts/application-navbar.vue +0 -110
  302. data/lib/vue/layouts/application-search.vue +0 -86
  303. data/lib/vue/layouts/application-sidebar.vue +0 -63
  304. data/lib/vue/pages/errors/app.js +0 -32
  305. data/lib/vue/pages/invites/app.js +0 -76
  306. data/lib/vue/pages/mfas/application.js +0 -77
  307. data/lib/vue/pages/onboarding/application.js +0 -45
  308. data/lib/vue/pages/onboarding/components/address.vue +0 -120
  309. data/lib/vue/pages/onboarding/components/buttons.vue +0 -67
  310. data/lib/vue/pages/onboarding/components/contact.vue +0 -148
  311. data/lib/vue/pages/onboarding/components/date-time.vue +0 -265
  312. data/lib/vue/pages/onboarding/components/finish.vue +0 -62
  313. data/lib/vue/pages/onboarding/components/general-info.vue +0 -93
  314. data/lib/vue/pages/onboarding/components/indicators.vue +0 -78
  315. data/lib/vue/pages/onboarding/components/welcome.vue +0 -66
  316. data/lib/vue/pages/onboarding/show.vue +0 -67
  317. data/lib/vue/pages/onboarding/store.js +0 -165
  318. data/lib/vue/pages/otps/application.js +0 -90
  319. data/lib/vue/pages/passes/application.js +0 -80
  320. data/lib/vue/pages/websites/application.js +0 -34
  321. data/lib/vue/panels/panel-announcements.vue +0 -248
  322. data/lib/vue/panels/panel-bell-notifications.vue +0 -102
  323. data/lib/vue/panels/panel-files.vue +0 -281
  324. data/lib/vue/panels/panel-profile.vue +0 -76
  325. data/lib/vue/panels/panel-support-tickets.vue +0 -161
  326. data/lib/vue/panels/panel-tasks.vue +0 -124
  327. data/lib/vue/panels/stores/bell-notifications.js +0 -46
  328. data/lib/vue/panels/stores/support-tickets.js +0 -103
  329. data/lib/vue/public.js +0 -83
  330. data/lib/vue/refactor/shared/cloudobjects/action.vue +0 -193
  331. data/lib/vue/refactor/shared/cloudobjects/file/grid.vue +0 -215
  332. data/lib/vue/refactor/shared/cloudobjects/file/list.vue +0 -106
  333. data/lib/vue/refactor/shared/cloudobjects/file.vue +0 -145
  334. data/lib/vue/refactor/shared/workflows2/apps/actions/form.vue +0 -232
  335. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/chatroom-form.vue +0 -103
  336. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/cloud-object-clone-form.vue +0 -125
  337. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/cloud-object-file-form.vue +0 -102
  338. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/email-form.vue +0 -190
  339. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/notification-form.vue +0 -124
  340. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/send-cloud-object-file.vue +0 -170
  341. data/lib/vue/refactor/shared/workflows2/apps/actions/forms/task-form.vue +0 -258
  342. data/lib/vue/refactor/shared/workflows2/apps/actions/index.vue +0 -146
  343. data/lib/vue/refactor/shared/workflows2/apps/checks/form.vue +0 -200
  344. data/lib/vue/refactor/shared/workflows2/apps/checks/index.vue +0 -160
  345. data/lib/vue/refactor/shared/workflows2/apps/index.vue +0 -177
  346. data/lib/vue/refactor/shared/workflows2/apps/new.vue +0 -97
  347. data/lib/vue/refactor/shared/workflows2/apps/show.vue +0 -146
  348. data/lib/vue/refactor/shared/workflows2/components/associations.vue +0 -215
  349. data/lib/vue/refactor/shared/workflows2/components/chart.vue +0 -91
  350. data/lib/vue/refactor/shared/workflows2/components/workflow-form.vue +0 -466
  351. data/lib/vue/refactor/shared/workflows2/components/workflow-status-dropdown.vue +0 -129
  352. data/lib/vue/refactor/stores/cloudobjects/action.js +0 -181
  353. data/lib/vue/refactor/stores/cloudobjects/file.js +0 -205
  354. data/lib/vue/refactor/stores/entities/announcements.js +0 -75
  355. data/lib/vue/refactor/stores/entities/dashboard.js +0 -251
  356. data/lib/vue/refactor/stores/entities/workflow.js +0 -185
  357. data/lib/vue/refactor/stores/panels/announcements.js +0 -153
  358. data/lib/vue/refactor/stores/panels/notification.js +0 -114
  359. data/lib/vue/refactor/stores/panels/task.js +0 -66
  360. data/lib/vue/refactor/stores/panels/tickets.js +0 -129
  361. data/lib/vue/refactor/stores/role.js +0 -243
  362. data/lib/vue/refactor/stores/translations.json +0 -60
  363. data/lib/vue/refactor/stores/users.js +0 -98
  364. data/lib/vue/shared/dashboards/apps/edit.vue +0 -215
  365. data/lib/vue/shared/dashboards/apps/index.vue +0 -112
  366. data/lib/vue/shared/dashboards/apps/new.vue +0 -89
  367. data/lib/vue/shared/dashboards/apps/show.vue +0 -88
  368. data/lib/vue/shared/dashboards/components/form.vue +0 -246
  369. data/lib/vue/shared/services/firebase.js +0 -163
  370. data/lib/vue/shared/services/translator.js +0 -87
  371. data/lib/vue/shared/stores/command.js +0 -154
  372. data/lib/vue/shared/stores/dashboard.js +0 -253
  373. data/lib/vue/shared/stores/layout.js +0 -61
  374. data/lib/vue/shared/stores/systemController.js +0 -67
  375. data/lib/vue/shared/stores/users.js +0 -57
  376. data/lib/vue/stores/translations.json +0 -167
  377. data/lib/vue/translation.js +0 -45
  378. data/lib/webpack/base.js +0 -186
  379. data/lib/webpack/core.js +0 -91
  380. data/lib/webpack/engines.js +0 -165
  381. data/lib/webpack/version.js +0 -41
  382. data/vendor/bulma/LICENSE +0 -21
  383. data/vendor/bulma/bulma.sass +0 -10
  384. data/vendor/bulma/css/bulma-rtl.css +0 -11851
  385. data/vendor/bulma/css/bulma-rtl.min.css +0 -1
  386. data/vendor/bulma/css/bulma.css +0 -11851
  387. data/vendor/bulma/css/bulma.min.css +0 -1
  388. data/vendor/bulma/sass/base/_all.sass +0 -6
  389. data/vendor/bulma/sass/base/animations.sass +0 -5
  390. data/vendor/bulma/sass/base/generic.sass +0 -145
  391. data/vendor/bulma/sass/base/helpers.sass +0 -1
  392. data/vendor/bulma/sass/base/minireset.sass +0 -79
  393. data/vendor/bulma/sass/components/_all.sass +0 -15
  394. data/vendor/bulma/sass/components/breadcrumb.sass +0 -77
  395. data/vendor/bulma/sass/components/card.sass +0 -103
  396. data/vendor/bulma/sass/components/dropdown.sass +0 -83
  397. data/vendor/bulma/sass/components/level.sass +0 -79
  398. data/vendor/bulma/sass/components/media.sass +0 -59
  399. data/vendor/bulma/sass/components/menu.sass +0 -59
  400. data/vendor/bulma/sass/components/message.sass +0 -101
  401. data/vendor/bulma/sass/components/modal.sass +0 -117
  402. data/vendor/bulma/sass/components/navbar.sass +0 -446
  403. data/vendor/bulma/sass/components/pagination.sass +0 -167
  404. data/vendor/bulma/sass/components/panel.sass +0 -121
  405. data/vendor/bulma/sass/components/tabs.sass +0 -176
  406. data/vendor/bulma/sass/elements/_all.sass +0 -16
  407. data/vendor/bulma/sass/elements/box.sass +0 -26
  408. data/vendor/bulma/sass/elements/button.sass +0 -357
  409. data/vendor/bulma/sass/elements/container.sass +0 -29
  410. data/vendor/bulma/sass/elements/content.sass +0 -162
  411. data/vendor/bulma/sass/elements/form.sass +0 -1
  412. data/vendor/bulma/sass/elements/icon.sass +0 -46
  413. data/vendor/bulma/sass/elements/image.sass +0 -73
  414. data/vendor/bulma/sass/elements/notification.sass +0 -52
  415. data/vendor/bulma/sass/elements/other.sass +0 -31
  416. data/vendor/bulma/sass/elements/progress.sass +0 -73
  417. data/vendor/bulma/sass/elements/table.sass +0 -134
  418. data/vendor/bulma/sass/elements/tag.sass +0 -140
  419. data/vendor/bulma/sass/elements/title.sass +0 -70
  420. data/vendor/bulma/sass/form/_all.sass +0 -9
  421. data/vendor/bulma/sass/form/checkbox-radio.sass +0 -22
  422. data/vendor/bulma/sass/form/file.sass +0 -184
  423. data/vendor/bulma/sass/form/input-textarea.sass +0 -66
  424. data/vendor/bulma/sass/form/select.sass +0 -88
  425. data/vendor/bulma/sass/form/shared.sass +0 -60
  426. data/vendor/bulma/sass/form/tools.sass +0 -215
  427. data/vendor/bulma/sass/grid/_all.sass +0 -5
  428. data/vendor/bulma/sass/grid/columns.sass +0 -513
  429. data/vendor/bulma/sass/grid/tiles.sass +0 -36
  430. data/vendor/bulma/sass/helpers/_all.sass +0 -12
  431. data/vendor/bulma/sass/helpers/color.sass +0 -39
  432. data/vendor/bulma/sass/helpers/flexbox.sass +0 -35
  433. data/vendor/bulma/sass/helpers/float.sass +0 -10
  434. data/vendor/bulma/sass/helpers/other.sass +0 -14
  435. data/vendor/bulma/sass/helpers/overflow.sass +0 -2
  436. data/vendor/bulma/sass/helpers/position.sass +0 -7
  437. data/vendor/bulma/sass/helpers/spacing.sass +0 -31
  438. data/vendor/bulma/sass/helpers/typography.sass +0 -103
  439. data/vendor/bulma/sass/helpers/visibility.sass +0 -122
  440. data/vendor/bulma/sass/layout/_all.sass +0 -6
  441. data/vendor/bulma/sass/layout/footer.sass +0 -11
  442. data/vendor/bulma/sass/layout/hero.sass +0 -153
  443. data/vendor/bulma/sass/layout/section.sass +0 -17
  444. data/vendor/bulma/sass/utilities/_all.sass +0 -9
  445. data/vendor/bulma/sass/utilities/animations.sass +0 -1
  446. data/vendor/bulma/sass/utilities/controls.sass +0 -49
  447. data/vendor/bulma/sass/utilities/derived-variables.sass +0 -114
  448. data/vendor/bulma/sass/utilities/extends.sass +0 -25
  449. data/vendor/bulma/sass/utilities/functions.sass +0 -135
  450. data/vendor/bulma/sass/utilities/initial-variables.sass +0 -79
  451. data/vendor/bulma/sass/utilities/mixins.sass +0 -303
  452. data/vendor/lesli-css/_index.scss +0 -34
  453. data/vendor/lesli-css/lesli.scss +0 -51
  454. data/vendor/lesli-css/license +0 -28
  455. data/vendor/lesli-css/src/base/fonts.scss +0 -50
  456. data/vendor/lesli-css/src/base/normalize.scss +0 -118
  457. data/vendor/lesli-css/src/components/blockquote.scss +0 -61
  458. data/vendor/lesli-css/src/components/columns.scss +0 -92
  459. data/vendor/lesli-css/src/components/container.scss +0 -47
  460. data/vendor/lesli-css/src/components/navigation.scss +0 -59
  461. data/vendor/lesli-css/src/functions/colors.scss +0 -184
  462. data/vendor/lesli-css/src/helpers/units.scss +0 -44
  463. data/vendor/lesli-css/src/mixins/breakpoint.scss +0 -184
  464. data/vendor/lesli-css/src/mixins/flex.scss +0 -80
  465. data/vendor/lesli-css/src/mixins/scrollbar.scss +0 -46
  466. data/vendor/lesli-css/src/settings/variables.scss +0 -26
  467. data/vendor/lesli-css/tests/base/normalize.spec.scss +0 -125
  468. data/vendor/lesli-css/tests/functions/colors.spec.scss +0 -117
  469. data/vendor/lesli-css/tests/mixins/breakpoint.spec.scss +0 -429
  470. data/vendor/lesli-css/tests/mixins/scrollbar.spec.scss +0 -82
  471. data/vendor/lesli-css/vendor/normalize.scss +0 -351
  472. data/vendor/remixicon/License +0 -201
  473. data/vendor/remixicon/fonts/remixicon.css +0 -2583
  474. /data/{vendor/lesli-css/src/components/grid.scss → app/assets/stylesheets/lesli/application.css} +0 -0
  475. /data/db/migrate/v1/{0010001010_create_lesli_account_details.rb → 0000110210_create_lesli_account_details.rb} +0 -0
  476. /data/db/structure/{00000008_custom_fields.json → 00000300_custom_fields.json} +0 -0
  477. /data/lib/assets/javascripts/lesli/{i18n.js → i18n_js} +0 -0
@@ -1,246 +0,0 @@
1
- <script setup>
2
- /*
3
-
4
- Lesli
5
-
6
- Copyright (c) 2023, Lesli Technologies, S. A.
7
-
8
- This program is free software: you can redistribute it and/or modify
9
- it under the terms of the GNU General Public License as published by
10
- the Free Software Foundation, either version 3 of the License, or
11
- (at your option) any later version.
12
-
13
- This program is distributed in the hope that it will be useful,
14
- but WITHOUT ANY WARRANTY; without even the implied warranty of
15
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
- GNU General Public License for more details.
17
-
18
- You should have received a copy of the GNU General Public License
19
- along with this program. If not, see http://www.gnu.org/licenses/.
20
-
21
- Lesli · Your Smart Business Assistant.
22
-
23
- Made with ♥ by https://www.lesli.tech
24
- Building a better future, one line of code at a time.
25
-
26
- @contact hello@lesli.tech
27
- @website https://lesli.tech
28
- @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
29
-
30
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
31
- // ·
32
-
33
- */
34
-
35
-
36
- // · import vue tools
37
- import { inject, onMounted, watch } from "vue"
38
-
39
-
40
- // · import stores
41
- import { useDashboard } from "Lesli/vue/shared/stores/dashboard"
42
-
43
-
44
- // · import vue router composable
45
- import { useRouter, useRoute } from "vue-router"
46
-
47
-
48
- // · implement stores
49
- const storeDashboard = useDashboard()
50
-
51
-
52
- // · initialize/inject plugins
53
- const router = useRouter()
54
- const url = inject("url")
55
- const msg = inject("msg")
56
- const route = useRoute()
57
-
58
-
59
- // ·
60
- const props = defineProps({
61
- isEditable: {
62
- type: Boolean,
63
- require: false
64
- }
65
- })
66
-
67
-
68
- // · translations
69
- const translations = {
70
- shared: i18n.t("lesli.shared"),
71
- dashboards: i18n.t("lesli.dashboards"),
72
-
73
- components: I18n.t('core.dashboard/components'),
74
- core: I18n.t('core.shared'),
75
- roles: I18n.t('core.roles'),
76
- main: I18n.t(`${storeDashboard.engine}.dashboards`),
77
- main_components: I18n.t(`${storeDashboard.engine}.dashboard/components`)
78
- }
79
-
80
-
81
- // ·
82
- const default_options = {
83
- yes: {
84
- label: translations.core.view_text_yes,
85
- value: true
86
- },
87
- no: {
88
- label: translations.core.view_text_no,
89
- value: false
90
- }
91
- }
92
-
93
-
94
- // ·
95
- const layout_options = [{
96
- label: '25%',
97
- value: 3
98
- }, {
99
- label: '33%',
100
- value: 4
101
- }, {
102
- label: '50%',
103
- value: 6
104
- }, {
105
- label: '66%',
106
- value: 8
107
- }, {
108
- label: '75%',
109
- value: 9
110
- }, {
111
- label: '100%',
112
- value: 12
113
- }]
114
-
115
-
116
- // ·
117
- const onUpdate = () => {
118
- storeDashboard.updateDashboard()
119
- }
120
-
121
-
122
- // ·
123
- const onCreate = () => {
124
- storeDashboard.postDashboard().then(()=> {
125
- router.push(url[storeDashboard.engine]('dashboards').s)
126
- })
127
- }
128
-
129
-
130
- // ·
131
- function addComponent(){
132
- msg.warning(translations.dashboards.messages_warning_save_changes_reminder)
133
-
134
- let new_component = {
135
- //id: `${storeDashboard.new_component_id}-${storeDashboard.default_component_configuration.index}`,
136
- name: '',
137
- component_id: storeDashboard.new_component_id.replaceAll("_", "-"),
138
- layout: storeDashboard.default_component_configuration.layout,
139
- index: storeDashboard.default_component_configuration.index++,
140
- query_configuration: {
141
- filters: {},
142
- pagination: {}
143
- },
144
- custom_configuration: {
145
- arrangement: {}
146
- }
147
- }
148
- storeDashboard.dashboard.components.push(new_component)
149
- }
150
-
151
-
152
- // ·
153
- function selectDashboardComponent(selected_component){
154
- if(storeDashboard.dashboard.components.find( component => component.id == selected_component.id)){
155
- storeDashboard.selected_dashboard_component = selected_component
156
- }
157
- }
158
-
159
-
160
- // ·
161
- function removeComponent(deleted_component){
162
- msg.warning(translations.dashboards.messages_warning_save_changes_reminder)
163
- storeDashboard.dashboard.components = storeDashboard.dashboard.components.filter((component)=> {
164
- return component.id != deleted_component.id
165
- })
166
-
167
- // We check if the component id is a real number. If it is, de stage it to delete it when saved
168
- if(! isNaN(deleted_component.id)){
169
- deleted_component._destroy = true
170
- storeDashboard.deleted_components.push(deleted_component)
171
- }
172
- }
173
-
174
-
175
- // ·
176
- function onDeleteDashboard() {
177
- storeDashboard.deleteDashboard().then(()=> {
178
- router.push(url[props.engine]('dashboards').s)
179
- })
180
- }
181
-
182
-
183
- // ·
184
- onMounted(() => {
185
- if (!props.isEditable){
186
- storeDashboard.resetDashboard()
187
- }
188
- })
189
- </script>
190
- <template>
191
- <lesli-form class="mb-6" @submit="isEditable ? onUpdate() : onCreate()">
192
- <div class="columns">
193
-
194
- <!-- Name -->
195
- <div class="column is-4">
196
- <div class="field">
197
- <label class="label">
198
- {{ translations.dashboards.column_name }}
199
- </label>
200
- <div class="control">
201
- <input class="input" type="text" v-model="storeDashboard.dashboard.name" required>
202
- </div>
203
- </div>
204
- </div>
205
-
206
- <!-- Default -->
207
- <div class="column is-4">
208
- <div class="field">
209
- <label class="label">{{ translations.dashboards.column_default }}</label>
210
- <lesli-select
211
- v-model="storeDashboard.dashboard.default"
212
- :options="default_options">
213
- </lesli-select>
214
- </div>
215
- </div>
216
-
217
- <!-- Components -->
218
- <div class="column is-4">
219
- <div class="field">
220
- <label class="label">
221
- {{ translations.dashboards.view_add_component }}
222
- </label>
223
- <div class="control">
224
- <lesli-select
225
- v-model="storeDashboard.new_component_id"
226
- :options="storeDashboard.options.component_ids"
227
- @change="addComponent">
228
- </lesli-select>
229
- </div>
230
- </div>
231
- </div>
232
- </div>
233
-
234
- <!-- Save button -->
235
- <div class="buttons">
236
- <lesli-button icon="save" :loading="storeDashboard.loading">
237
- {{ translations.shared.button_save }}
238
- </lesli-button>
239
- <!--
240
- <lesli-button danger icon="delete" @click="onDeleteDashboard">
241
- {{ translations.dashboards.view_btn_delete_dashboard }}
242
- </lesli-button>
243
- -->
244
- </div>
245
- </lesli-form>
246
- </template>
@@ -1,163 +0,0 @@
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 · Your Smart Business Assistant.
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://lesli.tech
27
- @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
-
29
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
- // ·
31
-
32
- */
33
-
34
-
35
-
36
- // · Import pinia tools
37
- import { ref } from "vue"
38
- import { defineStore } from "pinia"
39
-
40
-
41
- // · Import firebase tools
42
- import { getFirestore } from "firebase/firestore"
43
- import { getApp, initializeApp, getApps } from "firebase/app"
44
- import { getAuth, signInWithEmailAndPassword } from "firebase/auth"
45
- import { collection, query, where, onSnapshot, documentId, doc } from "firebase/firestore"
46
- import { getStorage } from "firebase/storage"
47
-
48
-
49
-
50
- // ·
51
- export const useFirebase = defineStore("core.firebase", {
52
-
53
- state: () => {
54
-
55
- // check if we have at least a valid structure of credentials for firebase
56
- if (
57
- !lesli.providers.firebase.config ||
58
- !lesli.providers.firebase.user.email ||
59
- !lesli.providers.firebase.user.password
60
- ) {
61
- return debug.error("No valid provider credentials found for firebase")
62
- }
63
-
64
- var user = null
65
-
66
- // · When the store is created, the firebase app is initialized
67
- if (getApps().length === 0) {
68
- initializeApp(lesli.providers.firebase.config)
69
- }
70
-
71
-
72
- // try to login if user is empty
73
- if (!user) {
74
-
75
- // if user is not logged, try to login
76
- signInWithEmailAndPassword(
77
- getAuth(),
78
- lesli.providers.firebase.user.email,
79
- lesli.providers.firebase.user.password
80
- ).then((result) => {
81
- user = result
82
- }).catch((error) => {
83
- console.log(error)
84
- user = null
85
- })
86
-
87
- }
88
-
89
- // initialize the firestore client
90
- const firestore = getFirestore()
91
-
92
- // Create a root reference to firebase storage
93
- const storage = getStorage()
94
-
95
- // initialize the user with static information
96
- const currentUser = ref({
97
- id: lesli.current_user.id.toString(),
98
- email: lesli.current_user.email,
99
- roles: lesli.current_user.roles,
100
- full_name: lesli.current_user.full_name,
101
- locale: lesli.current_user.settings.find((setting) => setting.name === "locale")?.value || "en",
102
- active: true,
103
- implementation: lesli.implementation
104
- })
105
-
106
-
107
- // get the users docs and keep listening for any change
108
- onSnapshot(query(
109
- collection(firestore, "instances", lesli.implementation, "users"),
110
- where(documentId(), "==", lesli.current_user.id.toString())
111
- ), querySnapshot => {
112
-
113
- // here we expect to receive only one document due we want to work only with one user
114
- let data = querySnapshot?.docs.at(0)?.data()
115
-
116
- // if you need to add more information to the currentUser
117
- // this is the place to add those custom properties
118
- currentUser.value.locale = data?.locale || currentUser.locale
119
- currentUser.value.full_name = data?.full_name || currentUser.full_name
120
-
121
- })
122
-
123
-
124
- // return the state of the app :)
125
- return {
126
- firebase: getApp(),
127
- firestore: firestore,
128
- storage: storage,
129
- currentUser: currentUser,
130
- implementation: lesli.implementation,
131
- users: []
132
- }
133
- },
134
-
135
- actions: {
136
-
137
- /**
138
- * Return a reference to a firestore collection
139
- * @param {...any} collectionPath
140
- * @returns firebase collection
141
- * @example
142
- * getCollection("users")
143
- * getCollection("chatrooms")
144
- * getCollection("chatrooms", chatroom.id, "message")
145
- */
146
- getCollection(...collectionPath) {
147
- return collection(this.firestore, "instances", this.implementation, ...collectionPath)
148
- },
149
-
150
- /**
151
- * Return a reference to a firestore doc
152
- * @param {...any} docPath
153
- * @returns firebase doc
154
- * @example
155
- * getDoc("chatrooms", chatroom.id)
156
- */
157
- getDoc(...docPath) {
158
- return doc(this.firestore, "instances", this.implementation, ...docPath)
159
- }
160
-
161
- }
162
-
163
- })
@@ -1,87 +0,0 @@
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 · Your Smart Business Assistant.
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://lesli.tech
27
- @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
-
29
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
- // ·
31
-
32
- */
33
-
34
-
35
- // This store is used to manage the traslations
36
-
37
- import { defineStore } from "pinia"
38
-
39
- import { ref } from "vue"
40
-
41
-
42
- import axios from "axios"
43
-
44
- export const useServiceTranslator = defineStore("services.translator", () => {
45
-
46
- const httpClient = axios.create({ baseURL: "https://www.googleapis.com" })
47
-
48
- const loading = ref(false)
49
-
50
- function getTranslation(message, source, target) {
51
-
52
- if (!(message || source)) return
53
-
54
- var translatedMessage = {
55
- translatedText: message,
56
- originalLang: target
57
- }
58
-
59
- if (source == target) {
60
- return translatedMessage
61
- }
62
-
63
- return httpClient.get("/language/translate/v2", {
64
- params: {
65
- q: message,
66
- target,
67
- source,
68
- key: lesli.providers.google_translate.api_key
69
- },
70
- headers: {
71
- 'Content-Type': 'application/json',
72
- 'Accept': 'application/json',
73
- }
74
- }).then((response) => {
75
- translatedMessage.translatedText = response.data.data.translations[0].translatedText
76
- return translatedMessage
77
- }).catch((error) => {
78
- console.error(error)
79
- })
80
-
81
- }
82
-
83
- return {
84
- loading,
85
- getTranslation,
86
- }
87
- })
@@ -1,154 +0,0 @@
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 · Your Smart Business Assistant.
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://lesli.tech
27
- @license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
28
-
29
- // · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
30
- // ·
31
-
32
- */
33
-
34
-
35
-
36
- // ·
37
- import { defineStore } from "pinia"
38
- import { reactive } from "vue"
39
-
40
-
41
- // ·
42
- export const useSearch = defineStore("search", {
43
- state: () => {
44
- return {
45
- text: "",
46
- timer: null,
47
- loading: false,
48
- showResults: false,
49
-
50
- pagination: {},
51
- columns: [],
52
- records: []
53
- }
54
- },
55
- actions: {
56
-
57
- doSearch() {
58
-
59
- if (this.text == "") {
60
- this.showResults = false
61
- return
62
- }
63
-
64
- this.loading = true
65
-
66
- clearTimeout(this.timer)
67
-
68
- this.timer = setTimeout(() => this.fetchSearch(), 800)
69
-
70
- },
71
-
72
- fetchSearch() {
73
- this.loading = true
74
-
75
- // filter german characteres and replace for strings
76
- // that will be replaced in the highlight method
77
- var wordsToHighlight = this.text.toLowerCase()
78
- .split(/(\s+)/)
79
- .filter( e => e.trim().length > 0)
80
- .map(e => this.filterNonEnglishLetters(e))
81
-
82
- // TODO: this url must be dynamically, according to the engine where we are searching
83
- let url = this.url.dl("search").search(this.text)
84
-
85
- // searching... :)
86
- this.http.get(url).then(result => {
87
- this.pagination = result.pagination
88
- this.columns = result.columns
89
- this.records = result.records.map(record => {
90
-
91
- // iterate over every column in the search result
92
- for(var key in record) {
93
-
94
- // do not highlight the id column
95
- if (key == 'id') continue;
96
-
97
- // highlight the text in the search result if match with the text
98
- // we want to search
99
- record[key] = this.doHighlightText(record[key], wordsToHighlight)
100
- }
101
-
102
- return record
103
- })
104
- }).catch(error => {
105
- console.log(error)
106
- }).finally(() => {
107
- this.loading = false
108
- })
109
- },
110
-
111
- doHighlightText(textToHighlight, wordsToHighlight) {
112
-
113
- if (!textToHighlight) return ;
114
-
115
- // return same string if search tearm is not present
116
- if (wordsToHighlight.length === 0) {
117
- return text_to_highlight
118
- }
119
-
120
- // working with german characteres
121
- let iQuery = new RegExp(`${wordsToHighlight.join('|')}`, 'ig');
122
-
123
- textToHighlight = textToHighlight.toString()
124
- // replace the matched strings in the results with the text search term
125
- // with a tag, so we can highlight the matching results
126
- .replace(iQuery, (matchedText, _a, _b)=>{
127
- return `<span class="tag is-primary">${matchedText}</span>`
128
- })
129
-
130
- return textToHighlight
131
-
132
- },
133
-
134
- filterNonEnglishLetters(text) {
135
-
136
- if (text.includes("ä")){
137
- return text.replace("ä", "(ä|ae)")
138
- } else if (text.includes("ae")){
139
- return text.replace("ae", "(ä|ae)")
140
- } else if (text.includes("ü")){
141
- return text.replace("ü", "(ü|ue)")
142
- }else if (text.includes("ue")){
143
- return text.replace("ue", "(ü|ue)")
144
- }else if (text.includes("ö")){
145
- return text.replace("ö", "(ö|oe)")
146
- }else if (text.includes("oe")){
147
- return text.replace("oe", "(ö|oe)")
148
- } else {
149
- return text
150
- }
151
-
152
- }
153
- }
154
- })