lesli 5.0.13 → 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.
- checksums.yaml +4 -4
- data/app/assets/config/lesli_manifest.js +3 -6
- data/app/assets/images/lesli/brand/app-icon.svg +45 -39
- data/app/assets/javascripts/lesli/application.js +1 -0
- data/app/controllers/lesli/abouts_controller.rb +16 -14
- data/app/controllers/lesli/application_controller.rb +13 -0
- data/app/controllers/lesli/application_devise_controller.rb +10 -12
- data/app/controllers/lesli/application_lesli_controller.rb +12 -11
- data/app/controllers/lesli/apps_controller.rb +6 -0
- data/app/controllers/lesli/roles_controller.rb +2 -2
- data/app/helpers/lesli/general_helper.rb +18 -5
- data/app/helpers/lesli/html_helper.rb +8 -0
- data/app/helpers/lesli/navigation_helper.rb +30 -11
- data/app/helpers/lesli/system_helper.rb +2 -2
- data/app/helpers/lesli/turbo_helper.rb +58 -0
- data/app/interfaces/lesli/customization_interface.rb +42 -0
- data/app/interfaces/lesli/requester_interface.rb +103 -0
- data/app/interfaces/lesli/responder_interface.rb +127 -0
- data/app/lib/date2.rb +1 -199
- data/app/lib/lesli/courier.rb +54 -0
- data/app/mailers/lesli/application_lesli_mailer.rb +32 -59
- data/app/mailers/lesli/devise_mailer.rb +16 -8
- data/app/models/concerns/account_initializer.rb +27 -68
- data/app/models/concerns/lesli/has_activities.rb +29 -0
- data/app/models/concerns/user_extensions.rb +34 -19
- data/app/models/concerns/user_security.rb +4 -4
- data/app/models/lesli/account.rb +13 -20
- data/{lib/scss/layouts/application-container.scss → app/models/lesli/item/activity.rb} +11 -8
- data/app/models/lesli/role/{power.rb → action.rb} +6 -4
- data/app/models/lesli/role.rb +7 -15
- data/app/models/lesli/shared/catalog.rb +20 -0
- data/app/models/lesli/shared/dashboard.rb +1 -1
- data/app/models/lesli/user/activity.rb +5 -0
- data/app/models/lesli/user/detail.rb +5 -5
- data/app/models/lesli/user/{log.rb → journal.rb} +3 -3
- data/app/models/lesli/user/{power.rb → role.rb} +2 -3
- data/app/models/lesli/user/session.rb +3 -4
- data/app/models/lesli/user.rb +50 -46
- data/app/operators/lesli/controller_operator.rb +3 -1
- data/app/operators/lesli/{role_descriptor_operator.rb → role_operator.rb} +51 -28
- data/app/operators/lesli/user_registration_operator.rb +3 -2
- data/app/services/lesli/application_lesli_service.rb +8 -4
- data/app/services/lesli/role/action_service.rb +58 -0
- data/app/services/lesli/role_service.rb +232 -0
- data/app/services/lesli/{user_session_service.rb → user/session_service.rb} +23 -14
- data/app/services/lesli/user_service.rb +85 -1
- data/app/views/lesli/apps/show.html.erb +52 -0
- data/app/views/lesli/layouts/application-devise.html.erb +5 -7
- data/app/views/lesli/layouts/application-lesli.html.erb +18 -24
- data/app/views/lesli/partials/_application-analytics.html.erb +2 -2
- data/app/views/lesli/partials/_application-data.html.erb +3 -77
- data/app/views/lesli/partials/_application-head.html.erb +7 -4
- data/app/views/lesli/partials/_application-lesli-annoouncements.html.erb +49 -0
- data/app/views/lesli/partials/_application-lesli-header.html.erb +73 -49
- data/app/views/lesli/partials/_application-lesli-javascript.html.erb +3 -16
- data/app/views/lesli/partials/_application-lesli-navigation.html.erb +12 -9
- data/app/views/lesli/partials/{_application-lesli-notices.html.erb → _application-lesli-notifications.html.erb} +10 -8
- data/app/views/lesli/partials/_application-lesli-scss.html.erb +1 -1
- data/app/views/lesli/partials/_application-lesli-sidebar.html.erb +1 -1
- data/app/views/lesli/partials/_application-public-javascript.html.erb +1 -4
- data/app/views/lesli/shared/dashboards/_show.html.erb +63 -0
- data/app/views/lesli/wrappers/_application-devise.html.erb +4 -6
- data/config/importmap.rb +14 -0
- data/config/initializers/lesli.rb +20 -12
- data/config/initializers/lesli_migration_helpers.rb +61 -0
- data/config/locales/translations.en.yml +1 -26
- data/config/locales/translations.es.yml +1 -26
- data/config/locales/translations.fr.yml +1 -26
- data/config/locales/translations.it.yml +1 -26
- data/config/locales/translations.pt.yml +1 -26
- data/config/routes.rb +3 -1
- data/db/migrate/v1/{0010000110_create_lesli_accounts.rb → 0000000110_create_lesli_accounts.rb} +13 -12
- data/db/migrate/v1/0000000210_create_lesli_roles.rb +65 -0
- data/db/migrate/v1/0000000310_create_lesli_users.rb +99 -0
- data/db/migrate/v1/{0010000610_create_lesli_system_controllers.rb → 0000100110_create_lesli_system_controllers.rb} +3 -3
- data/db/migrate/v1/{0010000710_create_lesli_system_controller_actions.rb → 0000100210_create_lesli_system_controller_actions.rb} +3 -4
- data/{lib/scss/layouts/application-content.scss → db/migrate/v1/0000110310_create_lesli_account_settings.rb} +8 -6
- data/{app/models/lesli/user/agent.rb → db/migrate/v1/0000110410_create_lesli_account_activities.rb} +3 -3
- data/db/migrate/v1/0000120210_create_lesli_role_actions.rb +45 -0
- data/db/migrate/v1/{0010001410_create_lesli_account_logs.rb → 0000120310_create_lesli_role_privileges.rb} +8 -8
- data/db/{tables/0010003810_create_user_shortcuts.rb → migrate/v1/0000130210_create_lesli_user_roles.rb} +9 -12
- data/db/migrate/v1/0000130310_create_lesli_user_sessions.rb +56 -0
- data/db/{seed/production.rb → migrate/v1/0000130410_create_lesli_user_activities.rb} +7 -4
- data/db/{tables/0010001110_create_account_locations.rb → migrate2/0000100510_create_lesli_account_locations.rb} +6 -6
- data/db/{tables/0010001510_create_account_currencies.rb → migrate2/0000100610_create_lesli_account_currencies.rb} +4 -4
- data/db/seed/{development/accounts.rb → accounts.rb} +6 -2
- data/db/seed/{production/users.rb → users.rb} +4 -10
- data/db/seed/{tools.rb → xyz.rb} +2 -7
- data/db/seeds.rb +3 -2
- data/db/structure/00000020_catalogs.json +0 -0
- data/lib/generators/{application_lesli_generator.rb → application_lesli_generator_base.rb} +4 -4
- data/lib/generators/lesli/spec/spec_generator.rb +2 -2
- data/lib/generators/lesli/view/USAGE +8 -0
- data/lib/generators/lesli/view/templates/spec-factory.template +17 -0
- data/lib/generators/lesli/view/templates/spec-model.template +70 -0
- data/lib/generators/lesli/view/view_generator.rb +25 -0
- data/lib/lesli/configuration.rb +7 -10
- data/lib/lesli/engine.rb +22 -3
- data/lib/lesli/r_spec.rb +5 -2
- data/lib/lesli/routing.rb +42 -9
- data/lib/lesli/version.rb +2 -2
- data/lib/lesli.rb +11 -0
- data/lib/migrate/common.rb +94 -0
- data/lib/migrate/items/action_structure.rb +51 -0
- data/{db/migrate/v1/0010001210_create_lesli_account_activities.rb → lib/migrate/items/activity_structure.rb} +18 -16
- data/lib/migrate/items/attachment_structure.rb +62 -0
- data/{app/views/lesli/partials/_application-lesli-engines.html.erb → lib/migrate/items/discussion_structure.rb} +19 -27
- data/lib/migrate/items/subscriber_structure.rb +49 -0
- data/lib/migrate/items/version_structure.rb +53 -0
- data/lib/migrate/shared/account_structure.rb +21 -0
- data/lib/migrate/shared/catalog_structure.rb +30 -0
- data/lib/migrate/shared/dashboard_structure.rb +54 -0
- data/lib/migrate/shared/setting_structure.rb +20 -0
- data/lib/rspec/config/spec_coverage.rb +95 -0
- data/{db/migrate/v1/0010001110_create_lesli_account_settings.rb → lib/rspec/factories/lesli_account.rb} +10 -7
- data/{db/seed/development.rb → lib/rspec/factories/lesli_role.rb} +30 -3
- data/{db/seed/test.rb → lib/rspec/factories/lesli_user.rb} +32 -3
- data/lib/rspec/fixtures/files/lesli-icon.png +0 -0
- data/lib/rspec/fixtures/files/test_file_1.docx +0 -0
- data/{db/tables/0010001610_create_account_currency_exchange_rates.rb → lib/rspec/helpers/lesli_helper.rb} +21 -21
- data/lib/rspec/helpers/rails_helper.rb +134 -0
- data/lib/rspec/helpers/response_request_helper.rb +214 -0
- data/lib/rspec/helpers/response_service_helper.rb +66 -0
- data/lib/rspec/helpers/spec_helper.rb +99 -0
- data/lib/rspec/lesli_api_tester.rb +133 -0
- data/lib/rspec/lesli_service_tester.rb +46 -0
- data/{db/tables/0010001410_create_account_files.rb → lib/rspec/testers/controller.rb} +31 -20
- data/lib/rspec/testers/model.rb +36 -0
- data/lib/rspec/testers/request.rb +84 -0
- data/lib/tasks/lesli/db.rake +5 -3
- data/lib/tasks/lesli/git.rake +28 -32
- data/lib/tasks/lesli/github.rake +89 -0
- data/lib/tasks/lesli_tasks.rake +3 -3
- data/readme.md +28 -17
- metadata +134 -394
- data/app/assets/fonts/lesli/Domine/Domine-Variable.ttf +0 -0
- data/app/assets/fonts/lesli/Domine/OFL.txt +0 -97
- data/app/assets/fonts/lesli/MaterialDesign/icons.woff2 +0 -0
- data/app/assets/fonts/lesli/Montserrat/Montserrat-Variable.ttf +0 -0
- data/app/assets/fonts/lesli/OpenSans/OpenSans-Variable.ttf +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.eot +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.glyph.json +0 -1
- data/app/assets/fonts/lesli/Remix/remixicon.svg +0 -7633
- data/app/assets/fonts/lesli/Remix/remixicon.symbol.svg +0 -11
- data/app/assets/fonts/lesli/Remix/remixicon.ttf +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.woff +0 -0
- data/app/assets/fonts/lesli/Remix/remixicon.woff2 +0 -0
- data/app/assets/fonts/lesli/Roboto/LICENSE.txt +0 -202
- data/app/assets/fonts/lesli/Roboto/Roboto-Black.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-BlackItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Bold.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-BoldItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Italic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Light.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-LightItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Medium.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-MediumItalic.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Regular.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-Thin.ttf +0 -0
- data/app/assets/fonts/lesli/Roboto/Roboto-ThinItalic.ttf +0 -0
- data/app/assets/icons/lesli/engine-admin.svg +0 -1
- data/app/assets/icons/lesli/engine-audit.svg +0 -1
- data/app/assets/icons/lesli/engine-babel.svg +0 -1
- data/app/assets/icons/lesli/engine-bell.svg +0 -1
- data/app/assets/icons/lesli/engine-books.svg +0 -1
- data/app/assets/icons/lesli/engine-calendar.svg +0 -1
- data/app/assets/icons/lesli/engine-dashboard.svg +0 -1
- data/app/assets/icons/lesli/engine-dispatcher.svg +0 -1
- data/app/assets/icons/lesli/engine-focus.svg +0 -1
- data/app/assets/icons/lesli/engine-kb.svg +0 -1
- data/app/assets/icons/lesli/engine-leaf.svg +0 -1
- data/app/assets/icons/lesli/engine-lesli.svg +0 -1
- data/app/assets/icons/lesli/engine-letter.svg +0 -1
- data/app/assets/icons/lesli/engine-mailer.svg +0 -1
- data/app/assets/icons/lesli/engine-one.svg +0 -1
- data/app/assets/icons/lesli/engine-profile.svg +0 -1
- data/app/assets/icons/lesli/engine-proposal.svg +0 -1
- data/app/assets/icons/lesli/engine-scraper.svg +0 -1
- data/app/assets/icons/lesli/engine-security.svg +0 -1
- data/app/assets/icons/lesli/engine-shared.svg +0 -1
- data/app/assets/icons/lesli/engine-shield.svg +0 -1
- data/app/assets/icons/lesli/engine-storage.svg +0 -1
- data/app/assets/icons/lesli/engine-support.svg +0 -1
- data/app/assets/icons/lesli/engine-talk.svg +0 -1
- data/app/assets/icons/lesli/engine-team.svg +0 -1
- data/app/assets/icons/lesli/engine-time.svg +0 -1
- data/app/assets/icons/lesli/locale-en.svg +0 -1
- data/app/assets/icons/lesli/locale-es.svg +0 -1
- data/app/assets/icons/lesli/locale-fr.svg +0 -1
- data/app/assets/icons/lesli/locale-it.svg +0 -1
- data/app/assets/icons/lesli/locale-pt.svg +0 -1
- data/app/assets/icons/readme.md +0 -10
- data/app/assets/javascripts/lesli/templates/application.js +0 -14
- data/app/assets/javascripts/lesli/templates/public.js +0 -14
- data/app/assets/stylesheets/lesli/templates/application.css +0 -2918
- data/app/assets/stylesheets/lesli/templates/public.css +0 -1
- data/app/controllers/lesli/interfaces/application/authorization.rb +0 -107
- data/app/controllers/lesli/interfaces/application/customization.rb +0 -46
- data/app/controllers/lesli/interfaces/application/logger.rb +0 -134
- data/app/controllers/lesli/interfaces/application/requester.rb +0 -84
- data/app/controllers/lesli/interfaces/application/responder.rb +0 -132
- data/app/controllers/lesli/interfaces/controllers/actions.rb +0 -250
- data/app/controllers/lesli/interfaces/controllers/activities.rb +0 -215
- data/app/controllers/lesli/interfaces/controllers/discussions.rb +0 -270
- data/app/controllers/lesli/interfaces/controllers/files.rb +0 -467
- data/app/controllers/lesli/interfaces/controllers/subscribers.rb +0 -234
- data/app/lib/lesli/system.rb +0 -110
- data/app/models/lesli/cloud_object/action.rb +0 -70
- data/app/models/lesli/cloud_object/activity.rb +0 -311
- data/app/models/lesli/cloud_object/custom_field.rb +0 -158
- data/app/models/lesli/cloud_object/discussion.rb +0 -219
- data/app/models/lesli/cloud_object/subscriber.rb +0 -186
- data/app/operators/lesli/descriptor_privilege_operator.rb +0 -75
- data/app/views/lesli/emails/devise_mailer/confirmation_instructions.html.erb +0 -23
- data/app/views/lesli/emails/devise_mailer/reset_password_instructions.html.erb +0 -23
- data/app/views/lesli/partials/_application-lesli-icons.html.erb +0 -1
- data/config/initializers/devise.rb +0 -336
- data/db/seed/development/users.rb +0 -52
- data/db/seed/production/accounts.rb +0 -50
- data/db/structure/00000000_people.json +0 -34
- data/db/structure/00000003_actions.json +0 -14
- data/db/structure/00000004_activities.json +0 -20
- data/db/structure/00000005_discussions.json +0 -8
- data/db/structure/00000006_files.json +0 -32
- data/db/structure/00000007_subscribers.json +0 -11
- data/db/structure/00000501_dashboards.json +0 -14
- data/db/structure/00000502_dashboard_components.json +0 -23
- data/db/tables/0010003410_create_user_activities.rb +0 -51
- data/db/tables/0010003710_create_user_codes.rb +0 -43
- data/db/tables/0010004110_create_user_tokens.rb +0 -45
- data/db/tables/0010005610_create_role_activities.rb +0 -50
- data/db/tables/0010009010_create_feedbacks.rb +0 -56
- data/lib/mailer_previews/devise_mailer_preview.rb +0 -49
- data/lib/scss/cloud-objects/discussion.scss +0 -80
- data/lib/scss/cloud-objects/file.scss +0 -138
- data/lib/scss/components/keypad.scss +0 -109
- data/lib/scss/elements/autocomplete.scss +0 -72
- data/lib/scss/elements/card.scss +0 -37
- data/lib/scss/elements/empty.scss +0 -43
- data/lib/scss/elements/file-uploader.scss +0 -74
- data/lib/scss/elements/gallery.scss +0 -98
- data/lib/scss/elements/input-tag.scss +0 -73
- data/lib/scss/elements/loading.scss +0 -63
- data/lib/scss/elements/map.scss +0 -107
- data/lib/scss/elements/navbar.scss +0 -115
- data/lib/scss/elements/table.scss +0 -118
- data/lib/scss/elements/toolbar.scss +0 -66
- data/lib/scss/fonts/families.scss +0 -47
- data/lib/scss/fonts/mdicons.scss +0 -82
- data/lib/scss/fonts/remixicons.scss +0 -2602
- data/lib/scss/helpers/display.scss +0 -44
- data/lib/scss/helpers/tooltip.scss +0 -91
- data/lib/scss/layouts/application-announcements.scss +0 -40
- data/lib/scss/layouts/application-component.scss +0 -39
- data/lib/scss/layouts/application-engines.scss +0 -125
- data/lib/scss/layouts/application-footer.scss +0 -102
- data/lib/scss/layouts/application-header.scss +0 -91
- data/lib/scss/layouts/application-navigation.scss +0 -79
- data/lib/scss/layouts/application-search.scss +0 -71
- data/lib/scss/layouts/application-sidebar.scss +0 -219
- data/lib/scss/overrides/notification.scss +0 -75
- data/lib/scss/overrides/sweetalert.scss +0 -106
- data/lib/scss/pages/devise-simple.scss +0 -89
- data/lib/scss/pages/devise.scss +0 -179
- data/lib/scss/pages/invites.scss +0 -81
- data/lib/scss/panels/panel-announcements.scss +0 -56
- data/lib/scss/panels/panel-notification.scss +0 -67
- data/lib/scss/panels/panel-profile.scss +0 -62
- data/lib/scss/panels/panel-support-ticket.scss +0 -56
- data/lib/scss/panels/panel-tasks.scss +0 -41
- data/lib/scss/settings/variables.scss +0 -148
- data/lib/scss/shared/workflow-status-progress.scss +0 -135
- data/lib/scss/templates/application.scss +0 -127
- data/lib/scss/templates/component.scss +0 -39
- data/lib/scss/templates/dashboards.scss +0 -53
- data/lib/scss/templates/empty.scss +0 -42
- data/lib/scss/templates/pdf.scss +0 -45
- data/lib/scss/templates/public.scss +0 -72
- data/lib/vue/application.js +0 -285
- data/lib/vue/cloudobjects/discussion/content.vue +0 -62
- data/lib/vue/cloudobjects/discussion/element.vue +0 -170
- data/lib/vue/cloudobjects/discussion/filters.vue +0 -108
- data/lib/vue/cloudobjects/discussion/new.vue +0 -134
- data/lib/vue/cloudobjects/discussion.vue +0 -99
- data/lib/vue/cloudobjects/stores/discussion.js +0 -212
- data/lib/vue/layouts/application-announcements.vue +0 -78
- data/lib/vue/layouts/application-component.vue +0 -38
- data/lib/vue/layouts/application-container.vue +0 -48
- data/lib/vue/layouts/application-engines.vue +0 -66
- data/lib/vue/layouts/application-footer.vue +0 -123
- data/lib/vue/layouts/application-header.vue +0 -252
- data/lib/vue/layouts/application-navbar.vue +0 -110
- data/lib/vue/layouts/application-search.vue +0 -86
- data/lib/vue/layouts/application-sidebar.vue +0 -63
- data/lib/vue/pages/errors/app.js +0 -32
- data/lib/vue/pages/invites/app.js +0 -76
- data/lib/vue/pages/mfas/application.js +0 -77
- data/lib/vue/pages/onboarding/application.js +0 -45
- data/lib/vue/pages/onboarding/components/address.vue +0 -120
- data/lib/vue/pages/onboarding/components/buttons.vue +0 -67
- data/lib/vue/pages/onboarding/components/contact.vue +0 -148
- data/lib/vue/pages/onboarding/components/date-time.vue +0 -265
- data/lib/vue/pages/onboarding/components/finish.vue +0 -62
- data/lib/vue/pages/onboarding/components/general-info.vue +0 -93
- data/lib/vue/pages/onboarding/components/indicators.vue +0 -78
- data/lib/vue/pages/onboarding/components/welcome.vue +0 -66
- data/lib/vue/pages/onboarding/show.vue +0 -67
- data/lib/vue/pages/onboarding/store.js +0 -165
- data/lib/vue/pages/otps/application.js +0 -90
- data/lib/vue/pages/passes/application.js +0 -80
- data/lib/vue/pages/websites/application.js +0 -34
- data/lib/vue/panels/panel-announcements.vue +0 -248
- data/lib/vue/panels/panel-bell-notifications.vue +0 -102
- data/lib/vue/panels/panel-files.vue +0 -281
- data/lib/vue/panels/panel-profile.vue +0 -76
- data/lib/vue/panels/panel-support-tickets.vue +0 -163
- data/lib/vue/panels/panel-tasks.vue +0 -124
- data/lib/vue/panels/stores/bell-notifications.js +0 -46
- data/lib/vue/panels/stores/support-tickets.js +0 -103
- data/lib/vue/public.js +0 -83
- data/lib/vue/refactor/shared/cloudobjects/action.vue +0 -193
- data/lib/vue/refactor/shared/cloudobjects/file/grid.vue +0 -215
- data/lib/vue/refactor/shared/cloudobjects/file/list.vue +0 -106
- data/lib/vue/refactor/shared/cloudobjects/file.vue +0 -145
- data/lib/vue/refactor/shared/workflows2/apps/actions/form.vue +0 -232
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/chatroom-form.vue +0 -103
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/cloud-object-clone-form.vue +0 -125
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/cloud-object-file-form.vue +0 -102
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/email-form.vue +0 -190
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/notification-form.vue +0 -124
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/send-cloud-object-file.vue +0 -170
- data/lib/vue/refactor/shared/workflows2/apps/actions/forms/task-form.vue +0 -258
- data/lib/vue/refactor/shared/workflows2/apps/actions/index.vue +0 -146
- data/lib/vue/refactor/shared/workflows2/apps/checks/form.vue +0 -200
- data/lib/vue/refactor/shared/workflows2/apps/checks/index.vue +0 -160
- data/lib/vue/refactor/shared/workflows2/apps/index.vue +0 -177
- data/lib/vue/refactor/shared/workflows2/apps/new.vue +0 -97
- data/lib/vue/refactor/shared/workflows2/apps/show.vue +0 -146
- data/lib/vue/refactor/shared/workflows2/components/associations.vue +0 -215
- data/lib/vue/refactor/shared/workflows2/components/chart.vue +0 -91
- data/lib/vue/refactor/shared/workflows2/components/workflow-form.vue +0 -466
- data/lib/vue/refactor/shared/workflows2/components/workflow-status-dropdown.vue +0 -129
- data/lib/vue/refactor/stores/cloudobjects/action.js +0 -181
- data/lib/vue/refactor/stores/cloudobjects/file.js +0 -205
- data/lib/vue/refactor/stores/entities/announcements.js +0 -75
- data/lib/vue/refactor/stores/entities/dashboard.js +0 -251
- data/lib/vue/refactor/stores/entities/workflow.js +0 -185
- data/lib/vue/refactor/stores/panels/announcements.js +0 -153
- data/lib/vue/refactor/stores/panels/notification.js +0 -114
- data/lib/vue/refactor/stores/panels/task.js +0 -66
- data/lib/vue/refactor/stores/panels/tickets.js +0 -129
- data/lib/vue/refactor/stores/role.js +0 -243
- data/lib/vue/refactor/stores/translations.json +0 -60
- data/lib/vue/refactor/stores/users.js +0 -98
- data/lib/vue/shared/dashboards/apps/edit.vue +0 -215
- data/lib/vue/shared/dashboards/apps/index.vue +0 -112
- data/lib/vue/shared/dashboards/apps/new.vue +0 -89
- data/lib/vue/shared/dashboards/apps/show.vue +0 -88
- data/lib/vue/shared/dashboards/components/form.vue +0 -246
- data/lib/vue/shared/services/firebase.js +0 -163
- data/lib/vue/shared/services/translator.js +0 -87
- data/lib/vue/shared/stores/command.js +0 -154
- data/lib/vue/shared/stores/dashboard.js +0 -253
- data/lib/vue/shared/stores/layout.js +0 -61
- data/lib/vue/shared/stores/systemController.js +0 -67
- data/lib/vue/shared/stores/users.js +0 -57
- data/lib/vue/stores/translations.json +0 -177
- data/lib/vue/translation.js +0 -45
- data/lib/webpack/base.js +0 -191
- data/lib/webpack/core.js +0 -93
- data/lib/webpack/engines.js +0 -167
- data/lib/webpack/root.js +0 -105
- data/lib/webpack/version.js +0 -78
- data/vendor/bulma/LICENSE +0 -21
- data/vendor/bulma/bulma.sass +0 -10
- data/vendor/bulma/css/bulma-rtl.css +0 -11851
- data/vendor/bulma/css/bulma-rtl.min.css +0 -1
- data/vendor/bulma/css/bulma.css +0 -11851
- data/vendor/bulma/css/bulma.min.css +0 -1
- data/vendor/bulma/sass/base/_all.sass +0 -6
- data/vendor/bulma/sass/base/animations.sass +0 -5
- data/vendor/bulma/sass/base/generic.sass +0 -145
- data/vendor/bulma/sass/base/helpers.sass +0 -1
- data/vendor/bulma/sass/base/minireset.sass +0 -79
- data/vendor/bulma/sass/components/_all.sass +0 -15
- data/vendor/bulma/sass/components/breadcrumb.sass +0 -77
- data/vendor/bulma/sass/components/card.sass +0 -103
- data/vendor/bulma/sass/components/dropdown.sass +0 -83
- data/vendor/bulma/sass/components/level.sass +0 -79
- data/vendor/bulma/sass/components/media.sass +0 -59
- data/vendor/bulma/sass/components/menu.sass +0 -59
- data/vendor/bulma/sass/components/message.sass +0 -101
- data/vendor/bulma/sass/components/modal.sass +0 -117
- data/vendor/bulma/sass/components/navbar.sass +0 -446
- data/vendor/bulma/sass/components/pagination.sass +0 -167
- data/vendor/bulma/sass/components/panel.sass +0 -121
- data/vendor/bulma/sass/components/tabs.sass +0 -176
- data/vendor/bulma/sass/elements/_all.sass +0 -16
- data/vendor/bulma/sass/elements/box.sass +0 -26
- data/vendor/bulma/sass/elements/button.sass +0 -357
- data/vendor/bulma/sass/elements/container.sass +0 -29
- data/vendor/bulma/sass/elements/content.sass +0 -162
- data/vendor/bulma/sass/elements/form.sass +0 -1
- data/vendor/bulma/sass/elements/icon.sass +0 -46
- data/vendor/bulma/sass/elements/image.sass +0 -73
- data/vendor/bulma/sass/elements/notification.sass +0 -52
- data/vendor/bulma/sass/elements/other.sass +0 -31
- data/vendor/bulma/sass/elements/progress.sass +0 -73
- data/vendor/bulma/sass/elements/table.sass +0 -134
- data/vendor/bulma/sass/elements/tag.sass +0 -140
- data/vendor/bulma/sass/elements/title.sass +0 -70
- data/vendor/bulma/sass/form/_all.sass +0 -9
- data/vendor/bulma/sass/form/checkbox-radio.sass +0 -22
- data/vendor/bulma/sass/form/file.sass +0 -184
- data/vendor/bulma/sass/form/input-textarea.sass +0 -66
- data/vendor/bulma/sass/form/select.sass +0 -88
- data/vendor/bulma/sass/form/shared.sass +0 -60
- data/vendor/bulma/sass/form/tools.sass +0 -215
- data/vendor/bulma/sass/grid/_all.sass +0 -5
- data/vendor/bulma/sass/grid/columns.sass +0 -513
- data/vendor/bulma/sass/grid/tiles.sass +0 -36
- data/vendor/bulma/sass/helpers/_all.sass +0 -12
- data/vendor/bulma/sass/helpers/color.sass +0 -39
- data/vendor/bulma/sass/helpers/flexbox.sass +0 -35
- data/vendor/bulma/sass/helpers/float.sass +0 -10
- data/vendor/bulma/sass/helpers/other.sass +0 -14
- data/vendor/bulma/sass/helpers/overflow.sass +0 -2
- data/vendor/bulma/sass/helpers/position.sass +0 -7
- data/vendor/bulma/sass/helpers/spacing.sass +0 -31
- data/vendor/bulma/sass/helpers/typography.sass +0 -103
- data/vendor/bulma/sass/helpers/visibility.sass +0 -122
- data/vendor/bulma/sass/layout/_all.sass +0 -6
- data/vendor/bulma/sass/layout/footer.sass +0 -11
- data/vendor/bulma/sass/layout/hero.sass +0 -153
- data/vendor/bulma/sass/layout/section.sass +0 -17
- data/vendor/bulma/sass/utilities/_all.sass +0 -9
- data/vendor/bulma/sass/utilities/animations.sass +0 -1
- data/vendor/bulma/sass/utilities/controls.sass +0 -49
- data/vendor/bulma/sass/utilities/derived-variables.sass +0 -114
- data/vendor/bulma/sass/utilities/extends.sass +0 -25
- data/vendor/bulma/sass/utilities/functions.sass +0 -135
- data/vendor/bulma/sass/utilities/initial-variables.sass +0 -79
- data/vendor/bulma/sass/utilities/mixins.sass +0 -303
- data/vendor/lesli-css/_index.scss +0 -34
- data/vendor/lesli-css/lesli.scss +0 -51
- data/vendor/lesli-css/license +0 -28
- data/vendor/lesli-css/src/base/fonts.scss +0 -50
- data/vendor/lesli-css/src/base/normalize.scss +0 -118
- data/vendor/lesli-css/src/components/blockquote.scss +0 -61
- data/vendor/lesli-css/src/components/columns.scss +0 -92
- data/vendor/lesli-css/src/components/container.scss +0 -47
- data/vendor/lesli-css/src/components/navigation.scss +0 -59
- data/vendor/lesli-css/src/functions/colors.scss +0 -184
- data/vendor/lesli-css/src/helpers/units.scss +0 -44
- data/vendor/lesli-css/src/mixins/breakpoint.scss +0 -184
- data/vendor/lesli-css/src/mixins/flex.scss +0 -80
- data/vendor/lesli-css/src/mixins/scrollbar.scss +0 -46
- data/vendor/lesli-css/src/settings/variables.scss +0 -26
- data/vendor/lesli-css/tests/base/normalize.spec.scss +0 -125
- data/vendor/lesli-css/tests/functions/colors.spec.scss +0 -117
- data/vendor/lesli-css/tests/mixins/breakpoint.spec.scss +0 -429
- data/vendor/lesli-css/tests/mixins/scrollbar.spec.scss +0 -82
- data/vendor/lesli-css/vendor/normalize.scss +0 -351
- data/vendor/remixicon/License +0 -201
- data/vendor/remixicon/fonts/remixicon.css +0 -2583
- /data/{vendor/lesli-css/src/components/grid.scss → app/assets/stylesheets/lesli/application.css} +0 -0
- /data/db/migrate/v1/{0010001010_create_lesli_account_details.rb → 0000110210_create_lesli_account_details.rb} +0 -0
- /data/db/structure/{00000008_custom_fields.json → 00000300_custom_fields.json} +0 -0
- /data/lib/assets/javascripts/lesli/{i18n.js → i18n_js} +0 -0
@@ -1,251 +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 { defineStore } from "pinia"
|
37
|
-
|
38
|
-
|
39
|
-
// ·
|
40
|
-
export const useDashboard = defineStore("shared.dashboard", {
|
41
|
-
state: () => {
|
42
|
-
return {
|
43
|
-
loading: false,
|
44
|
-
engine: null,
|
45
|
-
|
46
|
-
dashboard: {
|
47
|
-
components: []
|
48
|
-
},
|
49
|
-
dashboards: [],
|
50
|
-
|
51
|
-
options: [],
|
52
|
-
selected_dashboard_component: {},
|
53
|
-
deleted_components: [],
|
54
|
-
default_component_configuration:{
|
55
|
-
index: 1,
|
56
|
-
layout: 4
|
57
|
-
},
|
58
|
-
new_component_id: ""
|
59
|
-
}
|
60
|
-
},
|
61
|
-
actions: {
|
62
|
-
/**
|
63
|
-
* @description This action is used to get the default dashboard
|
64
|
-
*/
|
65
|
-
getDashboard() {
|
66
|
-
this.http.get(this.url[this.engine]('dashboards/default')).then(result => {
|
67
|
-
let components = result.components
|
68
|
-
this.dashboard = result
|
69
|
-
this.dashboard.components = []
|
70
|
-
|
71
|
-
// Parse components so they can be rendered
|
72
|
-
components.forEach((component) => {
|
73
|
-
component.component_id = component.component_id.replaceAll('_','-')
|
74
|
-
this.dashboard.components.push(component)
|
75
|
-
})
|
76
|
-
})
|
77
|
-
},
|
78
|
-
/**
|
79
|
-
* @description This action is used to fetch the list of dashboards
|
80
|
-
*/
|
81
|
-
fetchDashboards(url) {
|
82
|
-
this.loading = true
|
83
|
-
|
84
|
-
if (!url) url = this.url[this.engine]('dashboards')
|
85
|
-
|
86
|
-
this.http.get(url).then(result => {
|
87
|
-
this.loading = false
|
88
|
-
this.dashboards = result.dashboards.map(dashboard => {
|
89
|
-
dashboard.created_at = this.date2(dashboard.created_at).dateTime().toString()
|
90
|
-
dashboard.updated_at = this.date2(dashboard.updated_at).dateTime().toString()
|
91
|
-
return dashboard
|
92
|
-
})
|
93
|
-
}).catch(error => {
|
94
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
95
|
-
})
|
96
|
-
},
|
97
|
-
/**
|
98
|
-
* @param {string} search_string String to search for
|
99
|
-
* @description This action is used to search for a string in the dashboards
|
100
|
-
*/
|
101
|
-
searchDashboards(search_string){
|
102
|
-
const url = this.url[this.engine]('dashboards').search(search_string)
|
103
|
-
this.fetchDashboards(url)
|
104
|
-
},
|
105
|
-
/**
|
106
|
-
* @description This action is used to reset the dashboard
|
107
|
-
*/
|
108
|
-
resetDashboard(){
|
109
|
-
this.dashboard = {
|
110
|
-
components: []
|
111
|
-
}
|
112
|
-
this.deleted_components = []
|
113
|
-
this.selected_dashboard_component = {}
|
114
|
-
this.new_component_id = ""
|
115
|
-
},
|
116
|
-
/**
|
117
|
-
* @description This action is used to update a dashboard
|
118
|
-
*/
|
119
|
-
updateDashboard(){
|
120
|
-
this.loading = true
|
121
|
-
let data = {
|
122
|
-
dashboard: {
|
123
|
-
name: this.dashboard.name,
|
124
|
-
default: this.dashboard.default,
|
125
|
-
roles_id: this.dashboard.roles_id,
|
126
|
-
components_attributes: this.dashboard.components.map((component)=>{
|
127
|
-
let parsed_component = {...component}
|
128
|
-
// We check if the id is a valid integer or a placeholder. If it is a placeholder, we set it to null
|
129
|
-
if(isNaN(parsed_component.id)){
|
130
|
-
parsed_component.id = null
|
131
|
-
}
|
132
|
-
|
133
|
-
return parsed_component
|
134
|
-
})
|
135
|
-
}
|
136
|
-
}
|
137
|
-
|
138
|
-
data.dashboard.components_attributes = data.dashboard.components_attributes.concat(this.deleted_components)
|
139
|
-
|
140
|
-
const url = this.url[this.engine](`dashboards/${this.dashboard.id}`)
|
141
|
-
|
142
|
-
return this.http.put(url, data).then(result => {
|
143
|
-
this.msg.success(I18n.t("core.users.messages_success_operation"))
|
144
|
-
this.loading = false
|
145
|
-
}).catch(error => {
|
146
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
147
|
-
})
|
148
|
-
},
|
149
|
-
/**
|
150
|
-
* @description This action is used to post a dashboard
|
151
|
-
*/
|
152
|
-
async postDashboard(){
|
153
|
-
this.loading = true
|
154
|
-
let data = {
|
155
|
-
dashboard: {
|
156
|
-
name: this.dashboard.name,
|
157
|
-
default: this.dashboard.default,
|
158
|
-
roles_id: this.dashboard.roles_id,
|
159
|
-
components_attributes: this.dashboard.components.map((component)=>{
|
160
|
-
let parsed_component = {...component}
|
161
|
-
parsed_component.id = null
|
162
|
-
|
163
|
-
return parsed_component
|
164
|
-
})
|
165
|
-
}
|
166
|
-
}
|
167
|
-
|
168
|
-
const url = this.url[this.engine]('dashboards')
|
169
|
-
|
170
|
-
return this.http.post(url, data).then(result => {
|
171
|
-
this.msg.success(I18n.t("core.users.messages_success_operation"))
|
172
|
-
this.loading = false
|
173
|
-
}).catch(error => {
|
174
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
175
|
-
})
|
176
|
-
},
|
177
|
-
/**
|
178
|
-
* @description This action is used to get dashboard options
|
179
|
-
*/
|
180
|
-
getDashboardOptions(){
|
181
|
-
|
182
|
-
this.options = {
|
183
|
-
component_ids: [],
|
184
|
-
roles: [],
|
185
|
-
components_configuration_options: {}
|
186
|
-
}
|
187
|
-
|
188
|
-
const url = this.url[this.engine]('dashboards/options')
|
189
|
-
|
190
|
-
this.http.get(url).then(result => {
|
191
|
-
|
192
|
-
result["roles"].forEach((role)=>{
|
193
|
-
this.options["roles"].push({
|
194
|
-
label: role.text,
|
195
|
-
value: role.value
|
196
|
-
})
|
197
|
-
})
|
198
|
-
result["component_ids"].forEach((component)=>{
|
199
|
-
this.options["component_ids"].push({
|
200
|
-
label: component.text.replaceAll('_','-'),
|
201
|
-
value: component.value
|
202
|
-
})
|
203
|
-
})
|
204
|
-
|
205
|
-
this.options["components_configuration_options"] = result["components_configuration_options"]
|
206
|
-
|
207
|
-
}).catch(error => {
|
208
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
209
|
-
})
|
210
|
-
},
|
211
|
-
/**
|
212
|
-
* @description This action is used to get the information for a dashboard
|
213
|
-
*/
|
214
|
-
fetchDashboard(dashboard_id){
|
215
|
-
this.loading = true
|
216
|
-
|
217
|
-
const url = this.url[this.engine]('dashboards/:dashboardId', { dashboardId: dashboard_id })
|
218
|
-
|
219
|
-
return this.http.get(url).then(result => {
|
220
|
-
|
221
|
-
let components = result.components
|
222
|
-
this.dashboard = result
|
223
|
-
this.dashboard.components = []
|
224
|
-
|
225
|
-
// Parse components so they can be rendered
|
226
|
-
components.forEach((component) => {
|
227
|
-
component.component_id = component.component_id.replaceAll('_','-')
|
228
|
-
this.dashboard.components.push(component)
|
229
|
-
})
|
230
|
-
|
231
|
-
this.loading = false
|
232
|
-
}).catch(error => {
|
233
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
234
|
-
})
|
235
|
-
},
|
236
|
-
/**
|
237
|
-
* @description This action is used to delete a dashboard
|
238
|
-
*/
|
239
|
-
async deleteDashboard(){
|
240
|
-
this.loading = true
|
241
|
-
const url = this.url[this.engine]('dashboards/:dashboardId', { dashboardId: this.dashboard.id })
|
242
|
-
|
243
|
-
return this.http.delete(url).then(result => {
|
244
|
-
this.msg.success(I18n.t("core.users.messages_success_operation"))
|
245
|
-
this.loading = false
|
246
|
-
}).catch(error => {
|
247
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
248
|
-
})
|
249
|
-
}
|
250
|
-
}
|
251
|
-
})
|
@@ -1,185 +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 needed to make http requests, manage the reactivity
|
36
|
-
// · of a workflow.
|
37
|
-
|
38
|
-
import { defineStore } from "pinia"
|
39
|
-
|
40
|
-
|
41
|
-
export const useWorkflow = defineStore("core.shared.workflow", {
|
42
|
-
state: () => {
|
43
|
-
return {
|
44
|
-
|
45
|
-
tab: 0,
|
46
|
-
panelNew: false,
|
47
|
-
panelNext: false,
|
48
|
-
|
49
|
-
// store the list of available workflows
|
50
|
-
workflows: {
|
51
|
-
loading: false,
|
52
|
-
pagination: {},
|
53
|
-
records: []
|
54
|
-
},
|
55
|
-
|
56
|
-
// stores the current working workflow
|
57
|
-
workflow: {
|
58
|
-
name: ""
|
59
|
-
},
|
60
|
-
|
61
|
-
// temporary status selected to work on
|
62
|
-
selectedStatus: {},
|
63
|
-
|
64
|
-
// working with statuses, create, update, delete
|
65
|
-
status: {
|
66
|
-
next_statuses: [],
|
67
|
-
status_type: "normal",
|
68
|
-
number: 0,
|
69
|
-
name: ""
|
70
|
-
},
|
71
|
-
|
72
|
-
}
|
73
|
-
},
|
74
|
-
actions: {
|
75
|
-
|
76
|
-
// get all the available workflows
|
77
|
-
fetchWorkflows(url) {
|
78
|
-
this.workflows.loading = true
|
79
|
-
|
80
|
-
if (!url) url = this.url[this.cloudModule](this.cloudObject)
|
81
|
-
|
82
|
-
this.http.get(url).then(result => {
|
83
|
-
this.workflows.records = result.workflows.map(workflow => {
|
84
|
-
return {
|
85
|
-
id: workflow.id,
|
86
|
-
name: workflow.name,
|
87
|
-
validation: 4, //getValidation(workflow),
|
88
|
-
default: workflow.default,
|
89
|
-
connectedTo: 2 //getConnectedTo(workflow),
|
90
|
-
}
|
91
|
-
})
|
92
|
-
}).catch(error => {
|
93
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
94
|
-
}).finally(() => {
|
95
|
-
this.loading = false
|
96
|
-
})
|
97
|
-
},
|
98
|
-
|
99
|
-
|
100
|
-
// Create a workflow with the minimal information
|
101
|
-
postWorkflow() {
|
102
|
-
|
103
|
-
let url = this.url[this.cloudModule](`${this.cloudObject}`)
|
104
|
-
|
105
|
-
return this.http.post(url, {
|
106
|
-
workflow: {
|
107
|
-
name: this.workflow.name
|
108
|
-
}
|
109
|
-
}).then(result => {
|
110
|
-
this.workflow = result
|
111
|
-
this.msg.success(I18n.t("core.users.messages_success_operation"))
|
112
|
-
// TODO: Redirect to show view
|
113
|
-
}).catch(error => {
|
114
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
115
|
-
})
|
116
|
-
},
|
117
|
-
|
118
|
-
|
119
|
-
// Get specific workflow
|
120
|
-
fetchWorkflow (worfkflow_id){
|
121
|
-
const url = this.url[this.cloudModule](`${this.cloudObject}/:workflowId`, { workflowId: worfkflow_id })
|
122
|
-
|
123
|
-
this.http.get(url).then(result => {
|
124
|
-
this.workflow = result
|
125
|
-
|
126
|
-
this.workflow.statuses = this.workflow.statuses.map(status => {
|
127
|
-
return {
|
128
|
-
id: status.id,
|
129
|
-
name: status.name,
|
130
|
-
number: status.number,
|
131
|
-
status_type: status.status_type,
|
132
|
-
next_statuses: status?.next_statuses || []
|
133
|
-
}
|
134
|
-
})
|
135
|
-
|
136
|
-
this.loading = false
|
137
|
-
}).catch(error => {
|
138
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
139
|
-
})
|
140
|
-
},
|
141
|
-
|
142
|
-
|
143
|
-
// Full workflow update
|
144
|
-
putWorkflow() {
|
145
|
-
|
146
|
-
//let statuses_attributes = Object.values(this.workflow.statuses).concat(this.deleted_workflow_statuses)
|
147
|
-
|
148
|
-
let url = this.url[this.cloudModule](`${this.cloudObject}/:workflowId`, { workflowId: this.workflow.id })
|
149
|
-
|
150
|
-
let statuses_attributes = Object.values(this.workflow.statuses)
|
151
|
-
|
152
|
-
this.http.put(url, {
|
153
|
-
workflow: {
|
154
|
-
name: this.workflow.name,
|
155
|
-
statuses_attributes: statuses_attributes
|
156
|
-
}
|
157
|
-
}).then(result => {
|
158
|
-
this.msg.success(I18n.t("core.users.messages_success_operation"))
|
159
|
-
//this.deleted_workflow_statuses = []
|
160
|
-
}).catch(error => {
|
161
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
162
|
-
}).finally(()=>{
|
163
|
-
this.loading = false
|
164
|
-
})
|
165
|
-
|
166
|
-
},
|
167
|
-
|
168
|
-
|
169
|
-
// Create a new status for the current workflow
|
170
|
-
postStatus() {
|
171
|
-
|
172
|
-
let url = this.url[this.cloudModule](`${this.cloudObject}/:workflowId/statuses`, { workflowId: this.workflow.id })
|
173
|
-
|
174
|
-
return this.http.post(url, {
|
175
|
-
workflow_status: this.status
|
176
|
-
}).then(result => {
|
177
|
-
result.next_statuses = []
|
178
|
-
this.workflow.statuses.push(result)
|
179
|
-
this.status.name = ""
|
180
|
-
}).catch(error => {
|
181
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
182
|
-
})
|
183
|
-
}
|
184
|
-
}
|
185
|
-
})
|
@@ -1,153 +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 { useRouter } from 'vue-router'
|
39
|
-
import dayjs from 'dayjs'
|
40
|
-
|
41
|
-
|
42
|
-
// ·
|
43
|
-
export const useAnnouncements = defineStore("core.panel.announcements", {
|
44
|
-
state: () => {
|
45
|
-
return {
|
46
|
-
loading: false,
|
47
|
-
loaded: false,
|
48
|
-
announcement: { can_be_closed: true },
|
49
|
-
announcements: {},
|
50
|
-
router: useRouter()
|
51
|
-
}
|
52
|
-
},
|
53
|
-
actions: {
|
54
|
-
/**
|
55
|
-
* @description This action is used to create a new announcement
|
56
|
-
*/
|
57
|
-
postAnnouncement(){
|
58
|
-
this.loading = true
|
59
|
-
|
60
|
-
// Workaround to get the right url for the announcemets even if the url
|
61
|
-
// is changed outside the vue 3 router, after everything is running in vue3
|
62
|
-
// we can use the router to get the path
|
63
|
-
this.announcement.base_path = window.location.pathname
|
64
|
-
|
65
|
-
this.http.post(this.url.bell("announcements"), {
|
66
|
-
announcement: this.announcement
|
67
|
-
}).then(() => {
|
68
|
-
this.msg.success(I18n.t("core.users.messages_success_operation"))
|
69
|
-
}).catch(error => {
|
70
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
71
|
-
}).finally(() => {
|
72
|
-
this.getAnnouncements()
|
73
|
-
this.announcement = {}
|
74
|
-
this.loading = false
|
75
|
-
})
|
76
|
-
},
|
77
|
-
/**
|
78
|
-
* @description This action is used to get announcements
|
79
|
-
*/
|
80
|
-
getAnnouncements(){
|
81
|
-
this.announcements = {}
|
82
|
-
this.loading = true
|
83
|
-
|
84
|
-
let url = this.url.bell('announcements').filter({
|
85
|
-
base_path: [this.router.currentRoute.path]
|
86
|
-
})
|
87
|
-
|
88
|
-
this.http.get(url).then(result => {
|
89
|
-
this.loading = false
|
90
|
-
this.announcements = result.records
|
91
|
-
}).catch(error => {
|
92
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
93
|
-
})
|
94
|
-
},
|
95
|
-
/**
|
96
|
-
* @description This action is used to clear the announcement from the panel
|
97
|
-
*/
|
98
|
-
clearForm(){
|
99
|
-
this.announcement = {
|
100
|
-
name: '',
|
101
|
-
can_be_closed: true,
|
102
|
-
category: 'normal',
|
103
|
-
status: true,
|
104
|
-
message: ''
|
105
|
-
}
|
106
|
-
},
|
107
|
-
/**
|
108
|
-
* @description This action is used to delete an announcement
|
109
|
-
*/
|
110
|
-
deleteAnnouncement(announcement_id){
|
111
|
-
let url = this.url.bell('announcements/:id', {id: announcement_id})
|
112
|
-
this.http.delete(url).then(result => {
|
113
|
-
this.announcements = this.announcements.filter(e => e.id !== announcement_id)
|
114
|
-
this.msg.success(I18n.t("core.users.messages_success_operation"))
|
115
|
-
}).catch(error => {
|
116
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
117
|
-
})
|
118
|
-
},
|
119
|
-
/**
|
120
|
-
* @description This action is used to show the information of the announcement selected
|
121
|
-
*/
|
122
|
-
showAnnouncement(announcement){
|
123
|
-
announcement = this.announcements.find(e => e.id === announcement.id)
|
124
|
-
this.announcement = announcement
|
125
|
-
this.announcement.start_at= dayjs(this.announcement.start_at).format('YYYY-MM-DD') //Change date format to show in date selector
|
126
|
-
this.announcement.end_at= dayjs(this.announcement.end_at).format('YYYY-MM-DD') //Change date format to show in date selector
|
127
|
-
},
|
128
|
-
/**
|
129
|
-
* @description This action is used to check if the announcement exists to create or update the announcement
|
130
|
-
*/
|
131
|
-
formSubmit() {
|
132
|
-
if (this.announcement.id) {
|
133
|
-
this.putAnnouncement()
|
134
|
-
} else {
|
135
|
-
this.postAnnouncement()
|
136
|
-
}
|
137
|
-
},
|
138
|
-
/**
|
139
|
-
* @description This action is used to update an announcement
|
140
|
-
*/
|
141
|
-
putAnnouncement() {
|
142
|
-
this.loading = true
|
143
|
-
this.http.put(this.url.bell("announcements/:id", { id: this.announcement.id }), {
|
144
|
-
announcement: this.announcement
|
145
|
-
}).then(result => {
|
146
|
-
this.msg.success(I18n.t("core.users.messages_success_operation"))
|
147
|
-
this.loading = false
|
148
|
-
}).catch(error => {
|
149
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
150
|
-
})
|
151
|
-
},
|
152
|
-
}
|
153
|
-
})
|
@@ -1,114 +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 needed to make http requests, manage the reactivity
|
36
|
-
// · of a workflow.
|
37
|
-
|
38
|
-
import { defineStore } from "pinia"
|
39
|
-
|
40
|
-
export const useNotification = defineStore("core.shared.bell.notification", {
|
41
|
-
state: () => {
|
42
|
-
return {
|
43
|
-
loading: false,
|
44
|
-
notification: {
|
45
|
-
subject: "",
|
46
|
-
body: "",
|
47
|
-
channel: "",
|
48
|
-
user_receiver_id: ""
|
49
|
-
},
|
50
|
-
options: {
|
51
|
-
categories: [],
|
52
|
-
channels: [],
|
53
|
-
}
|
54
|
-
}
|
55
|
-
},
|
56
|
-
actions: {
|
57
|
-
/**
|
58
|
-
* @description This action is used to send a Notification
|
59
|
-
*/
|
60
|
-
sendNotification(){
|
61
|
-
this.loading = true
|
62
|
-
|
63
|
-
this.http.post(this.url.bell("notifications"), {
|
64
|
-
notification: this.notification
|
65
|
-
}).then(() => {
|
66
|
-
this.msg.success(I18n.t("core.users.messages_success_operation"))
|
67
|
-
}).catch(error => {
|
68
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
69
|
-
}).finally(() => {
|
70
|
-
this.loading = false
|
71
|
-
this.notification["subject"] = ""
|
72
|
-
this.notification["body"] = ""
|
73
|
-
this.notification["channel"] = ""
|
74
|
-
})
|
75
|
-
|
76
|
-
},
|
77
|
-
|
78
|
-
/**
|
79
|
-
* @description This action is used to get options for notifications
|
80
|
-
*/
|
81
|
-
getOptions(){
|
82
|
-
this.options = {
|
83
|
-
categories: [],
|
84
|
-
channels: [],
|
85
|
-
}
|
86
|
-
|
87
|
-
this.loading = true
|
88
|
-
|
89
|
-
this.http.get(this.url.bell("notifications/options")).then(result => {
|
90
|
-
|
91
|
-
result["categories"].forEach((category)=>{
|
92
|
-
this.options["categories"].push({
|
93
|
-
label: category.text,
|
94
|
-
value: category.value
|
95
|
-
})
|
96
|
-
})
|
97
|
-
|
98
|
-
result["channels"].forEach((channel)=>{
|
99
|
-
this.options["channels"].push({
|
100
|
-
label: channel.text,
|
101
|
-
value: channel.value
|
102
|
-
})
|
103
|
-
})
|
104
|
-
|
105
|
-
}).catch(error => {
|
106
|
-
this.msg.danger(I18n.t("core.shared.messages_danger_internal_error"))
|
107
|
-
}).finally(()=>{
|
108
|
-
this.loading = false
|
109
|
-
})
|
110
|
-
},
|
111
|
-
|
112
|
-
|
113
|
-
}
|
114
|
-
})
|