simpledomcontrol 0.158.8__tar.gz → 0.158.9__tar.gz
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.
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/PKG-INFO +1 -1
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/pyproject.toml +1 -1
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/consumers.py +4 -1
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/package.json +1 -1
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_model_form/sdc_model_form.js +8 -4
- {simpledomcontrol-0.158.8/sdc_tools/Assets/src → simpledomcontrol-0.158.9/sdc_tools/Assets/bin}/sdc_tools/controller/sdc_navigator/sdc_navigator.js +8 -4
- simpledomcontrol-0.158.9/sdc_tools/Assets/bin/sdc_tools/sdc_tools.organizer.js +1 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_model_form/sdc_model_form.js +8 -4
- {simpledomcontrol-0.158.8/sdc_tools/Assets/bin → simpledomcontrol-0.158.9/sdc_tools/Assets/src}/sdc_tools/controller/sdc_navigator/sdc_navigator.js +8 -4
- simpledomcontrol-0.158.8/sdc_tools/Assets/bin/sdc_tools/sdc_tools.organizer.js +0 -1
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/README.md +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/__init__.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/apps.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/jwt_utils.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/__init__.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/__init__.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/_private.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/init_add/__init__.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/init_add/add_controller_manager.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/init_add/add_model_manager.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/init_add/options.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/init_add/sdc_core_manager.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/init_add/settings_manager.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/init_add/utils.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_cc.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_db_tools.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_get_controller_infos.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_get_controller_url.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_get_model_infos.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_init.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_is_installed.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_make_model_js.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_new_model.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_open_api.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_overwrite_lib_file.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_shell_execute_script.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_update_links.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_update_url.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/utils/__init__.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/rest_api.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/sdc_extentions/__init__.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/sdc_extentions/forms.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/sdc_extentions/import_manager.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/sdc_extentions/models.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/sdc_extentions/response.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/sdc_extentions/search.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/sdc_extentions/views.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/signals.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/.devcontainer/Dockerfile +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/.devcontainer/devcontainer.json +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/.devcontainer/on_create.sh +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/.devcontainer/on_startup.sh +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/babel.config.json +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/gulpfile.jsx +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/src/index.organizer.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/src/index.style.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/static/img/favicon.png +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/tests/config/post-test-teardown.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/tests/config/pre-test-setup.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/tests/config/test-setup.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/webpack.config/webpack.bundle.config.jsx +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/webpack.config/webpack.default.config.jsx +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/webpack.config/webpack.development.config.jsx +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/webpack.config/webpack.production.config.jsx +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/asgi.py.txt +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/controller/template_controller.js.txt +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/controller/template_css.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/controller/template_test.js.txt +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/controller/template_view.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/js_test.js.txt +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/models/detail.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/models/list.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/routing.py.txt +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/sdc_urls.py.txt +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/sdc_views.py.txt +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/settings_extension.py.txt +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/templates/base.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/templates/elements/form.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/templates/elements/inline_form.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/templates/index.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/urls.py.txt +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/templatetags/__init__.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/templatetags/addclass.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/templatetags/indexfilter.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/templatetags/sdc_filter.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_alert_messenger/sdc_alert_messenger.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_auto_submit/sdc_auto_submit.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_detail_view/sdc_detail_view.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_dummy/sdc_dummy.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_error/sdc_error.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_list_view/sdc_list_view.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_navigation_client/sdc_navigation_client.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_search_select/sdc_search_select.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_search_view/sdc_search_view.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/controller/sdc_update_on_change/sdc_update_on_change.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/bin/sdc_tools/sdc_tools.style.css +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_alert_messenger/sdc_alert_messenger.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_alert_messenger/sdc_alert_messenger.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_auto_submit/sdc_auto_submit.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_detail_view/sdc_detail_view.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_detail_view/sdc_detail_view.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_dummy/sdc_dummy.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_dummy/sdc_dummy.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_error/sdc_error.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_error/sdc_error.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_list_view/sdc_list_view.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_list_view/sdc_list_view.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_model_form/sdc_model_form.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_navigation_client/sdc_navigation_client.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_navigator/sdc_navigator.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_search_select/sdc_search_select.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_search_select/sdc_search_select.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_search_view/sdc_search_view.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_search_view/sdc_search_view.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/controller/sdc_update_on_change/sdc_update_on_change.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/sdc_tools.organizer.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/src/sdc_tools/sdc_tools.style.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/tests/sdc_tools.test.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/__init__.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/admin.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/apps.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/migrations/__init__.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/models.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/sdc_urls.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/sdc_views.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/email/base.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/sdc_tools/sdc/dummy_sdc.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/sdc_tools/sdc/sdc_alert_messenger.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/sdc_tools/sdc/sdc_detail_view.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/sdc_tools/sdc/sdc_dummy.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/sdc_tools/sdc/sdc_error.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/sdc_tools/sdc/sdc_list_view.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/sdc_tools/sdc/sdc_model_form.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/sdc_tools/sdc/sdc_navigator.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/sdc_tools/sdc/sdc_search_select.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/sdc_tools/sdc/sdc_search_view.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/templates/widgets/searchable_select.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/tests.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/views.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/widgets.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/bin/sdc_user/controller/register/register.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/bin/sdc_user/controller/sdc_change_password/sdc_change_password.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/bin/sdc_user/controller/sdc_confirm_email/sdc_confirm_email.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/bin/sdc_user/controller/sdc_login/sdc_login.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/bin/sdc_user/controller/sdc_logout/sdc_logout.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/bin/sdc_user/controller/sdc_password_forgotten/sdc_password_forgotten.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/bin/sdc_user/controller/sdc_reset_password/sdc_reset_password.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/bin/sdc_user/controller/sdc_user/sdc_user.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/bin/sdc_user/controller/sdc_user_nav_btn/sdc_user_nav_btn.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/bin/sdc_user/sdc_user.organizer.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/bin/sdc_user/sdc_user.style.css +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/register/register.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/register/register.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_change_password/sdc_change_password.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_change_password/sdc_change_password.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_confirm_email/sdc_confirm_email.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_confirm_email/sdc_confirm_email.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_login/sdc_login.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_login/sdc_login.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_logout/sdc_logout.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_logout/sdc_logout.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_password_forgotten/sdc_password_forgotten.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_password_forgotten/sdc_password_forgotten.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_reset_password/sdc_reset_password.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_reset_password/sdc_reset_password.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_user/sdc_user.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_user/sdc_user.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_user_nav_btn/sdc_user_nav_btn.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/controller/sdc_user_nav_btn/sdc_user_nav_btn.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/sdc_user.organizer.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/src/sdc_user/sdc_user.style.scss +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/tests/sdc_user.test.js +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/__init__.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/admin.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/apps.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/forms.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/mails.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/migrations/0001_initial.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/migrations/__init__.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/models.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/sdc_urls.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/sdc_views.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/email/confirm.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/email/reset_password.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/models/SdcUser/SdcUser_details.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/models/SdcUser/SdcUser_list.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/sdc/register.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/sdc/sdc_change_password.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/sdc/sdc_confirm_email.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/sdc/sdc_login.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/sdc/sdc_logout.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/sdc/sdc_password_forgotten.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/sdc/sdc_reset_password.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/sdc/sdc_user_nav_btn.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/widgets/read_only_password_hash.html +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/tests.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/views.py +0 -0
- {simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/widgets.py +0 -0
|
@@ -287,7 +287,9 @@ class SDCModelConsumer(WebsocketConsumer):
|
|
|
287
287
|
except Exception as e:
|
|
288
288
|
extracted_list = traceback.extract_tb(e.__traceback__)
|
|
289
289
|
e_text = [e.__str__()] + [item for item in traceback.StackSummary.from_list(extracted_list).format()]
|
|
290
|
+
|
|
290
291
|
if settings.DEBUG:
|
|
292
|
+
logger.error(e_text[0])
|
|
291
293
|
traceback.print_tb(e.__traceback__)
|
|
292
294
|
else:
|
|
293
295
|
logger.error(e_text)
|
|
@@ -476,7 +478,8 @@ class SDCModelConsumer(WebsocketConsumer):
|
|
|
476
478
|
loaded_data = self._load_model()
|
|
477
479
|
view_name = json_data['args']['view_name']
|
|
478
480
|
if not hasattr(self.model.SdcMeta, view_name):
|
|
479
|
-
|
|
481
|
+
text = f'"{view_name}" is not implemented in "{loaded_data.__class__.__name__}.SdcMeta".'
|
|
482
|
+
raise Exception(text)
|
|
480
483
|
self.send(text_data=json.dumps({
|
|
481
484
|
'type': json_data['event_type'],
|
|
482
485
|
'event_id': json_data['event_id'],
|
|
@@ -118,10 +118,14 @@ export class SdcModelFormController extends AbstractSDC {
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
async onLoad($html) {
|
|
121
|
-
await this.onInitForm(this.params)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
121
|
+
await this.onInitForm(this.params).catch((e) => {
|
|
122
|
+
this.model = null;
|
|
123
|
+
console.error(e);
|
|
124
|
+
});
|
|
125
|
+
if (this.model) {
|
|
126
|
+
this.form = this.formGenerator(this.model).addClass('container-fluid');
|
|
127
|
+
$html.find('.form-container').append(this.form);
|
|
128
|
+
}
|
|
125
129
|
// $html.find(`.not-${this.type}`).remove();
|
|
126
130
|
return super.onLoad($html);
|
|
127
131
|
}
|
|
@@ -182,7 +182,7 @@ export class SdcNavigatorController extends AbstractSDC {
|
|
|
182
182
|
}
|
|
183
183
|
this._is_processing = false;
|
|
184
184
|
this._updateBreadcrumb();
|
|
185
|
-
this._checkProcessQueue();
|
|
185
|
+
this._checkProcessQueue(controller);
|
|
186
186
|
this.refresh();
|
|
187
187
|
return;
|
|
188
188
|
}
|
|
@@ -237,7 +237,7 @@ export class SdcNavigatorController extends AbstractSDC {
|
|
|
237
237
|
} else {
|
|
238
238
|
this._updateBreadcrumb();
|
|
239
239
|
if (!this._manageDefault(last_view_array.empty_container)) {
|
|
240
|
-
this._checkProcessQueue();
|
|
240
|
+
this._checkProcessQueue(controller);
|
|
241
241
|
}
|
|
242
242
|
setTimeout(() => {
|
|
243
243
|
this.$container.find('.header-loading').removeClass('active');
|
|
@@ -264,12 +264,16 @@ export class SdcNavigatorController extends AbstractSDC {
|
|
|
264
264
|
return c_list.join('~').split('~~').join('~');
|
|
265
265
|
}
|
|
266
266
|
|
|
267
|
-
_checkProcessQueue() {
|
|
267
|
+
_checkProcessQueue(controller) {
|
|
268
268
|
let next = this._process_queue.shift();
|
|
269
269
|
this._current_process = null;
|
|
270
270
|
if (next) {
|
|
271
271
|
this._pushState(next[0], next[1]);
|
|
272
|
-
} else if (this._redirectAfterCurrentProcess) {
|
|
272
|
+
} else if (this._redirectAfterCurrentProcess || controller.autoRedirect) {
|
|
273
|
+
if(controller.autoRedirect) {
|
|
274
|
+
this._RedirectOnView(controller.autoRedirect);
|
|
275
|
+
}
|
|
276
|
+
|
|
273
277
|
const temp = this._redirectAfterCurrentProcess;
|
|
274
278
|
this._redirectAfterCurrentProcess = null;
|
|
275
279
|
this.goTo(temp);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(()=>{"use strict";const t=sdc_client;class SdcSearchSelectController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_search_select",this._state=0,this._searchIdx={},this._searchtimer=null,this._currentOption=[],this.startValues=[],this.value=[],this._allowDelete=!1,this.model=null,this.events.unshift({click:{".option-container":function(t){this.onSelect(t)}}})}onInitSearchSelect({name:t="unknown",required:e,value:i=[""],modelName:s,multiple:n,ids:r}){this.required=Boolean("true"===e?.toLocaleLowerCase()),this.multi=Boolean("true"===n?.toLocaleLowerCase()),this._allowDelete=!this.required||this.multi,this.startValues=i instanceof Array?i:JSON.parse(i.replaceAll("'",'"')),this.name=t,s&&(this.model=r?this.newModel(s,{pk__in:r}):this.newModel(s))}onLoad(t){if(this.onInitSearchSelect(this.params),!this.model){let e=this;const i=$('<div class="all-option-container"></div>');t.find(".main-select-options").append(i),this.find(".option-container").each((function(){e._prepareOption(this),i.append(this)}))}return super.onLoad(t)}willShow(){return this.model?new Promise((t=>{const e=this,i=this.model.view({viewName:"html_select_template",cbResolve:()=>{e.find(".option-container").each((function(){e._prepareOption(this)})),t(super.willShow())}});i.removeClass("container-fluid").addClass("all-option-container"),this.find(".main-select-options").append(i)})):super.willShow()}_prepareOption(t){const e=$(t),i=String(e.data("value")),s=i.replace(/[^a-zA-Z0-9_-]+/g,"__");this._searchIdx[s]=e.data("search").toLowerCase().split(",").map((t=>t.replaceAll(" ",""))),this._searchIdx[s].push(e.data("search")),e.addClass(`oc-${s}`).addClass("oc-style"),this.startValues.includes(i)&&this._storeSelectedOption(e)}onRefresh(){return 1===this._state?(setTimeout((()=>this.find(".search-term-input").focus()),100),this.find(".main-select-options").addClass("active").find(".search-term-input").val(""),this.find(".option-container").addClass("found")):this.find(".main-select-options").removeClass("active"),super.onRefresh()}current_val(){if(0===this._state){if(0===this.value.length)return sdcDom("div",null,sdcDom("p",{sdc_click:"onActivate",className:"mb-2 custom-select form-control"},sdcDom("span",{className:"select-label"},gettext("Search & select...")),sdcDom("span",{className:"select-arrow"})),sdcDom("input",{type:"hidden",className:"timer-change",name:this.name,value:""}));let t;return t=this.multi?`[${this.value.join(",")}]`:this.value[0],sdcDom("div",{sdc_click:"onActivate",className:this.multi?"multi custom-select-selected":"custom-select-selected"},this._currentOption.map(this._optionBtnToSelected.bind(this)),sdcDom("input",{className:"timer-change",type:"hidden",name:this.name,value:t}),sdcDom("span",{className:"select-arrow"}))}}onActivate(){this._state=1,this.refresh()}onDeactivate(t,e){const i=document.elementFromPoint(e.clientX,e.clientY);$(i).hasClass("background-event")&&this._deactivate()}_deactivate(){return new Promise((t=>{setTimeout((()=>{this._state=0,t(this.refresh())}),100)}))}_optionBtnToSelected(t){const e=t.clone()[0];Array.from(e.attributes).forEach((t=>e.removeAttribute(t.name))),e.className="selected-option";const i=String(t.data("value"));if(this._allowDelete){const t=$('<button type="button" sdc_click="remove_selection" class="delete-btn" aria-label="Remove Bouldering">×</button>');t.data("value",i),e.append(t[0])}return e}_storeSelectedOption(t){const e=String(t.data("value"));t.addClass("selected"),this.multi?this.value.includes(e)||(this.value.push(e),this._currentOption.push(t)):(this.value=[e],this._currentOption.forEach((t=>t.removeClass("selected"))),this._currentOption=[t])}remove_selection(t,e){e.stopPropagation();const i=this.value.indexOf(t.data("value"));this.value.splice(i,1);const[s]=this._currentOption.splice(i,1);s.removeClass("selected"),this.refresh().then((()=>{this.find(".timer-change").trigger("change")}))}onSelect(t){this._storeSelectedOption(t),this._deactivate().then((()=>{this.find(".timer-change").trigger("change")}))}updateSearch(t){this._searchtimer&&clearTimeout(this._searchtimer),this._searchtimer=setTimeout((()=>{this.find(".option-container").removeClass("found");const e=t.val().toLowerCase().split(/[,\s]+/);e&&Object.entries(this._searchIdx).forEach((([t,i])=>{e.every((t=>i.some((e=>e.includes(t)))))&&this.find(`.oc-${t}`).addClass("found")}))}),500)}}t.app.register(SdcSearchSelectController);class SdcDummyController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_dummy"}onInitDummy({text:t}){this._text=t}onLoad(t){return this.onInitDummy(this.params),t.find(".origen_content").append(this.$container.html()),super.onLoad(t)}willShow(){return super.willShow()}onRefresh(){return super.onRefresh()}page_text(){return sdcDom("p",{className:"col"},this._text||"")}}t.app.register(SdcDummyController);class SdcAutoSubmitController extends t.AbstractSDC{constructor(){super(),this.events.unshift({submit:{".ajax-form":function(e,i){i.preventDefault();const s=e[0];this.submitForm(s).then((e=>{(e.msg||e.header)&&(0,t.trigger)("pushMsg",e.header||"",e.msg||""),(0,t.clearErrorsInForm)($(s)),this.onSubmit(e)})).catch((i=>{let s=i.responseJSON;s&&(s.html&&(0,t.setErrorsInForm)(e,$(s.html)),(s.msg||s.header)&&(0,t.trigger)("pushErrorMsg",s.header||"",s.msg||"")),this.onErrorSubmit(i)}))}}})}onLoad(t){return super.onLoad(t)}willShow(){return super.willShow()}onRefresh(){return super.onRefresh()}onSubmit(){}onErrorSubmit(){}onChange(t){t.closest(".ajax-form").submit()}}t.app.register(SdcAutoSubmitController);class SdcErrorController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_error/%(code)s"}onLoad(t){return t.find(".error_content").append(this.$container.html()),super.onLoad(t)}willShow(){return super.willShow()}onRefresh(){return super.onRefresh()}}t.app.register(SdcErrorController);class SdcNavigationClientController extends t.AbstractSDC{constructor(){super(),this.menu_id=0,this._navController=null}onLoad(e){return(0,t.on)("_onResize",this),super.onLoad(e)}willShow(){return this.confirmPageLoaded(),super.willShow()}_onResize(){this.onResize()}onResize(){}confirmPageLoaded(){(0,t.trigger)("navLoaded",this),(0,t.trigger)("changeMenu",this.menu_id)}get navController(){return this._navController?.deref()}get activeController(){return this._navController?.deref().activeController}get navControllerPath(){return this._navController?.deref()._origin_target}}t.app.register(SdcNavigationClientController);class SdcAlertMessengerController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_alert_messenger",this.msgCounter=0}onLoad(e){return(0,t.on)("pushMsg",this),(0,t.on)("pushErrorMsg",this),super.onLoad(e)}willShow(){return super.willShow()}onRefresh(){return super.onRefresh()}pushMsg(t,e){return this._pushMsg(t,e,!1)}pushErrorMsg(t,e){return this._pushMsg(t,e,!0)}_pushMsg(t,e,i){"string"==typeof e&&(e=[e]),this._pushMsgArray(t,e,i)}_pushMsgArray(t,e,i){let s=this.find(".dummy_row");if(0===s.length)return;let n=s.clone();n.removeClass("dummy_row"),i&&n.addClass("error_box"),n.find(".msg_header").text(t),n.find(".msg_body")[0].innerHTML=e;let r=new Date,o=r.getMinutes();o=o<10?"0"+o:o,n.find(".msg_date").text(r.getHours()+":"+o),n.insertAfter(s);let a=this;var l;this.msgCounter++,this.find(".alert_msg_container").addClass("active"),l=n,setTimeout((()=>{l.remove(),a.msgCounter--,0===a.msgCounter&&a.find(".alert_msg_container").removeClass("active")}),2e3)}}t.app.registerGlobal(SdcAlertMessengerController);class SdcUpdateOnChangeController extends t.AbstractSDC{constructor(){super(),this._timer=null,this.isAutoChange=!0,this._isNotReady=!0,this._isChanged=!1,this._lastTimeChanged="",this.events.unshift({change:{".timer-change":this.change},keydown:{".timer-change":this.startTimer}})}onLoad(t){return super.onLoad(t)}willShow(){return this._isNotReady=!0,super.willShow()}onRefresh(){return setTimeout((()=>{this._isNotReady=!1}),500),super.onRefresh()}change(t){this.isAutoChange&&!this._isNotReady&&(this._timer&&(clearTimeout(this._timer),this._timer=null),!this._lastTimeChanged!==t.name&&(this.onChange($(t)),this._isChanged=!0,this._lastTimeChanged=""))}startTimer(t){this.isAutoChange&&!this._isNotReady&&(this._timer&&(clearTimeout(this._timer),this._timer=null),this._lastTimeChanged="",this._isChanged=!1,this._timer=setTimeout((()=>{this._isChanged||(this.onChange($(t)),this._lastTimeChanged=t.name)}),1e3))}}t.app.register(SdcUpdateOnChangeController);class SdcSearchViewController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_search_view",this.isRange=!0,this.isTotalCount=!0,this.dataIdxKey="next-idx",this.id=`${(new Date).getTime()}_${Math.random().toString(36).substring(7)}`,this.$form=null,this.events.unshift({submit:{".search-form":(t,e)=>{e.preventDefault()}},click:{".page-number-control-btn":function(t){this.$form[0].range_start.value=$(t).data(this.dataIdxKey),this.onChange()}}})}onInitSearch({url:t,rangeSize:e,rangeStart:i,rangeEnd:s,totalCount:n,removeLabels:r}){this.url=t||"",void 0===i||void 0===s?this.isRange=!1:(void 0===e&&(e=s-i),void 0===n&&(this.isTotalCount=!1),this.totalCount=n,this.rangeSize=e,this.range=[i-e-1,i,s],i<=1&&s>=n&&(this.isRange=!1)),this.removeLabels=r||!1}onLoad(t){return this.onInitSearch(this.params),this.$form=$(document.createElement("form")),t.find(".inner-form.search-form").append(this.$container.html()),this.$form.append(this.$container.html()),this.$form.attr("action",this.url),this.$form.attr("method","post"),this.$form.attr("id",this.id),super.onLoad(t)}willShow(){let t=this.find(".page-number-control");return this.find(".form-group").addClass("form-group-sm"),this.removeLabels&&(this.find(".form-input-container").removeClass("col-md-7"),this.find(".form-group").addClass("no-label")),this.isRange?(t.find(".range-span").text(this.range[1]+" - "+this.range[2]),this.isTotalCount?t.find(".total-amount-span").text(" / "+this.totalCount):t.find(".total-amount-span").remove(),this.range[1]>1?t.find(".page-number-control-btn-prev").data(this.dataIdxKey,this.range[0]):t.find(".page-number-control-btn-prev").addClass("disabled").prop("disabled",!0),this.range[2]<this.totalCount?t.find(".page-number-control-btn-next").data(this.dataIdxKey,this.range[2]):t.find(".page-number-control-btn-next").addClass("disabled").prop("disabled",!0),super.willShow()):(t.remove(),super.willShow())}onRefresh(){return super.onRefresh()}onChange(){let t=this.find(".inner-form.search-form");this.$form.find(".form-control").each((function(){if(""!==this.id){let e=t.find(`#${this.id}`);if("SELECT"===this.tagName){let t=$(this);t.empty(),t.append(`<option value="${e.val()}" selected">`)}else $(this).val(e.val())}})),this._parentController.onSearch?this._parentController.onSearch(this.$form[0]):console.error("SearchController parent needs to implement onSearch(form)")}}t.app.register(SdcSearchViewController).addMixin("sdc-update-on-change");class SdcDetailViewController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_detail_view",this.template_context=null,this.model=null}async onInitDetails({model:e,pk:i,id:s}){if(this.id??=s??i,this.model&&(e=this.model),e instanceof Promise&&(e=await e),"object"==typeof e&&e instanceof t.SdcModel)return this.model=e,void(this.querySetInstance=e.querySet);"object"==typeof e&&e instanceof t.SdcQuerySet&&(this.querySetInstance=e),"object"!=typeof e&&(this.querySetInstance=this.querySet(this.model_name||e,{id:this.id})),this.model=await this.querySetInstance.get()}async onLoad(t){await this.onInitDetails(this.params);const e=this.model.detailView({cbResolve:()=>{this.find(".detail-container").append(e),this.refresh().then((t=>null)),this._onUpdate.bind(this)},templateContext:this.template_context});return this.querySetInstance&&(this.querySetInstance.onUpdate=async()=>{await this._updateView(),this._onUpdate()}),super.onLoad(t)}willShow(){return super.willShow()}onRefresh(){return this.find('[data-bs-toggle="tooltip"]').each((function(){new Tooltip(this)})),super.onRefresh()}_onUpdate(){this.on_update&&this.model.update().then((()=>{this.on_update(this.model)}))}_updateView(){return new Promise((e=>{const i=this.model.detailView({cbResolve:()=>{$(".tooltip.fade.show").remove(),t.app.reconcile(this,i,this.find(".detail-container").children()),e()},templateContext:this.template_context})}))}}t.app.register(SdcDetailViewController);class SdcModelFormController extends t.AbstractSDC{constructor(){super(),this.id=null,this.contentUrl="/sdc_view/sdc_tools/sdc_model_form",this.model_name=null,this.isKeepEditing=null,this.isReset=null,this._isLoaded=!1,this.autoSave=null,this.model=null,this.formHeader=null,this.buttonText=null}async onInitForm({model:e,pk:i,id:s,next:n,filter:r=null,on_update:o,on_error:a,form_header:l,button_text:h,form_name:d=!1,reset_on_save:c=!1,editing_after_save:u=!1,auto_save:p=!0}){if(this.on_update??=o,this.on_error??=a,this.next??=n,this.buttonText??=h||gettext("Save"),this.formHeader??=l,this.autoSave??=p,this.isReset??=c,this.isKeepEditing??=u,this.id??=s??i,this.form_name??=d,this.id?r={id:this.id}:"function"==typeof r&&(r=r()),this.model&&(e=this.model),e instanceof Promise&&(e=await e),"object"==typeof e&&e instanceof t.SdcModel?(this.model=e,this.id??=e.id):"object"!=typeof e?this.model=this.querySet(this.model_name||e,r):"object"==typeof e&&e instanceof t.SdcQuerySet&&(this.model=e),"object"==typeof this.model&&this.model instanceof t.SdcQuerySet)if(0===Object.keys(this.model.modelQuery).length)this.id=null,this.model=this.model.new();else try{this.model=await this.model.get(),this.id=this.model.id}catch(t){this.id=null,this.model=this.model.new()}void 0===this.id||null===this.id?(this.isAutoChange=!1,this.type="create",this.formGenerator=t=>t.form({cbResolve:this._onFormLoaded.bind(this)})):this.form_name?(this.isAutoChange=this.autoSave,this.type="edit",this.formGenerator=t=>t.namedForm({formName:this.form_name,cbResolve:this._onFormLoaded.bind(this)})):(this.isAutoChange=!0,this.type="edit",this.formGenerator=t=>t.form({cbResolve:this._onFormLoaded.bind(this)}))}async onLoad(t){return await this.onInitForm(this.params).catch((t=>{this.model=null,console.error(t)})),this.model&&(this.form=this.formGenerator(this.model).addClass("container-fluid"),t.find(".form-container").append(this.form)),super.onLoad(t)}onChange(){this.form?.closest("form").submit()}willShow(){return super.willShow()}onRefresh(){return super.onRefresh()}_onFormLoaded(){this._isLoaded||this.refresh(),this._isLoaded=!0}_createFormToEditForm(){this.id=this.model.id,this.type="edit",this.isAutoChange=!0;const t=this.form?.closest("form"),e=t.clone(),i=e.find(".form-container").safeEmpty(),s=this.model.form({cbResolve:()=>{this.reconcile(e,t)}}).addClass("container-fluid");i.append(s)}submitModelForm(e,i){let s=this;return super.defaultSubmitModelForm(e,i).then((function(i){let n=!0;i&&"create"===i.type&&(n=!1,s.isReset?e[0].reset():s.isKeepEditing?(s.model.querySet.setIds(s.model.id),s._createFormToEditForm()):(0,t.trigger)("goTo",s.next||"..")),s.on_update&&s.on_update(i),n&&s.next&&(0,t.trigger)("goTo",s.next)})).catch((t=>{s.on_error&&s.on_error(t)}))}controller_name(){return`${this.type.replace(/^./g,(t=>t.toUpperCase()))} ${this.model.constructor.name.replace(/[A-Z]/g,(t=>" "+t)).replace(/^./g,(t=>t.toUpperCase()))}`}save_btn(){return this._isLoaded?this.autoSave||"edit"!==this.type?sdcDom("span",null):sdcDom("button",{className:"btn btn-success"},this.buttonText):sdcDom("h3",null,gettext("Loading..."))}header_top(){return this.formHeader?sdcDom("h3",null,this.formHeader):sdcDom("span",null)}}t.app.register(SdcModelFormController).addMixin("sdc-update-on-change");class SdcListViewController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_list_view",this.search_values={},this.model_name=null,this.template_context=null}async onInitList({model:e,filter:i,onUpdate:s}){this.model&&(e=this.model),e instanceof Promise&&(e=await e),this.filter??=i,this.model_name??=e,this.on_update??=s,"function"==typeof this.filter&&(this.filter=this.filter()),"object"==typeof e&&e instanceof t.SdcQuerySet&&(this.model=e),"object"!=typeof e&&(this.model=this.querySet(this.model_name)),this.filter&&this.model.setFilter(this.filter),this.on_update&&this.model.load().then((()=>{this.on_update(this.model)}))}onLoad(t){this.onInitList(this.params);let e=t.filter(".list-container");return 0===e.length&&(e=t.find(".list-container")),e.append(this.model.listView({modelQuery:this.search_values,templateContext:this.template_context})),this.model.onUpdate=this.model.onCreate=()=>{this.on_update&&this.model.update().then((()=>{this.on_update(this.model)})),this._updateView()},super.onLoad(t)}willShow(){return super.willShow()}onRefresh(){return this.find('[data-bs-toggle="tooltip"]').each((function(){new Tooltip(this)})),super.onRefresh()}removeInstance(t){this.model.delete({id:t.data("instance-pk")})}onSearch(t){new FormData(t).forEach(((t,e)=>this.search_values[e]=t)),this._updateView()}_updateView(){const e=this.model.listView({searchValues:this.search_values,templateContext:this.template_context,cbResolve:()=>{$(".tooltip.fade.show").remove(),t.app.reconcile(this,e,this.find(".list-container .container-fluid").first()).then((t=>null))}})}}t.app.register(SdcListViewController);const e="sdc_sub_detail_container",i="sdc_detail_view";class SdcNavigatorController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_navigator",this._setup(),this.events.unshift({click:{".navigation-links":function(t,e){e.preventDefault(),this.onNavLink(t,e)}}})}_setup(){this._isLoggedIn=!1,this._history_path=[],this._breadcrumb=[],this._activeContorller=[],this._history_idx=0,this._origin_target=[],this._$detail_view_container=[],this._default_controller=null,this._previous_args=[],this._is_processing=!1,this._process_queue=[],this._current_process=null,this._redirectAfterCurrentProcess=null,this._non_controller_path_prefix="/",this._menu_id=0}onInitNav({defaultController:t}){this._default_controller=t}onLoad(e){return this.onInitNav(this.params),(0,t.on)("onNavLink",this),(0,t.on)("onNavigateToController",this),(0,t.on)("_RedirectOnView",this),(0,t.on)("goTo",this),(0,t.on)("changeMenu",this),(0,t.on)("navigateToPage",this),(0,t.on)("navLoaded",this),(0,t.on)("login",this),(0,t.on)("logout",this),e.find(".main-nav-import-container").append(this.$container.html()),this._isLoggedIn=e.data("user"),super.onLoad(e)}willShow(){let e=this;$(window).resize((function(){(0,t.trigger)("_onResize",e)})),this._setupButton();let i=this._handleUrl(window.location.pathname);return history.replaceState(i,"",i.url,i),super.willShow()}onRefresh(){return super.onRefresh()}get activeController(){return this._activeContorller}get default_controller(){return this._default_controller?this._default_controller:(console.error(`Set the property data-default-controller in < ${this.tagName}> (tag name of the default controller)`),"")}onNavLink(t,e){e&&e.preventDefault(),this.goTo($(t).attr("href"))}goTo(t,e=null){return t=this._prepareUrl(t),this.onNavigateToController(t,e)}onNavigateToController(t,e=null){if(Array.isArray(t)&&(t=t.join("~")),e){if(Array.isArray(e))e=e.join("&");else if("object"==typeof e){const t=[];for(const[i,s]of Object.entries(e))t.push(`${i}=${s}`);e=t.join("&")}t+="~&"+e}this._pushState(t)}navigateToPage(e,i,s){this._current_process=[e,i],s&&this._updateButton(s.buttonSelector),this._is_processing=!0,this._origin_target=e;let n=this._getSubViewObj(i);if(this._previous_args=i,n.container.container.data("modal")){if(!this._currentModal){this._currentModal=new Modal(n.container.empty_container.closest(n.container.container.data("modal"))[0],{keyboard:!1}),this._currentModal.show(),this._currentModal.off=()=>{this.addEvent("hide.bs.modal",n.container.container.data("modal"),(()=>{}))};const t="/"+"~*".repeat(n.idx);this.addEvent("hide.bs.modal",n.container.container.data("modal"),(()=>{this._currentModal.off(),this.onNavigateToController(t)}))}}else this._currentModal&&(this._currentModal.off(),this._currentModal.hide(),this._currentModal=null);if(n.isBack){n.container.active_sub_container.removeClass("active loading"),n.container.empty_container.addClass("empty").removeClass("active loading"),n.container.active_container.addClass("active").removeClass("empty loading"),n.container.deeper_sub_container.safeEmpty().removeClass("empty loading");let e=t.app.getController(n.container.active_container.find("> ._sdc_controller_"));return this._manageDefault(n.container.active_container),"function"==typeof e.onBack&&e.onBack(),this._is_processing=!1,this._updateBreadcrumb(),this._checkProcessQueue(e),void this.refresh()}n.container.empty_container.addClass("loading"),n.container.active_sub_container.addClass("loading"),n.container.active_container.addClass("loading");let r=$(`<${n.target}_sdc-navigation-client></${n.target}_sdc-navigation-client>`);for(let[t,e]of Object.entries(i)){let i=t.split(".");i.length>0&&(t=i.at(-1));const s=t.replace(/([A-Z])/g,(t=>"-"+t.toLowerCase()));(1===i.length||i.length>1&&parseInt(i[0])===n.idx+1)&&r.data(s,e)}n.container.empty_container.safeEmpty().append(r),this.refresh(),this.find(".header-loading").addClass("active"),r.hasClass("_sdc_controller_")||(n.container.empty_container.empty().append('<sdc-error_sdc-navigation-client data-code="404"></sdc-error_sdc-navigation-client>'),this.refresh())}navLoaded(t){let e=this._history_path.length-1,i=this._preparedLastViewContainer(e);i.active_container.removeClass("active loading").addClass("empty"),i.active_sub_container.removeClass("active loading"),i.empty_container.addClass("active").removeClass("empty loading"),i.deeper_sub_container.safeEmpty().removeClass("empty loading"),this._breadcrumb.splice(e),this._activeContorller.splice(e),this._is_processing=!1,$(".tooltip.fade.show").remove(),this._breadcrumb[e]=t.controller_name(),this._activeContorller[e]=t,t._navController=new WeakRef(this),this._origin_target.length!==this._history_path.length?this._current_process&&this.navigateToPage(this._current_process[0],this._current_process[1]):(this._updateBreadcrumb(),this._manageDefault(i.empty_container)||this._checkProcessQueue(t),setTimeout((()=>{this.$container.find(".header-loading").removeClass("active")}),100))}_prepareUrl(t){Array.isArray(t)&&(0!==t.length&&[".","..",""].includes(t[0])||t.unshift(""),t=t.join("~"));let e=t.split("~").map((t=>t.split("/"))).flat().filter(((t,e)=>e<1||t.length>0));if(!e[0].startsWith(".")&&"*"!==e[0]&&""!==e[0]){for(let t=0;t<this._history_path.length;++t)e.unshift("*");e.unshift("")}return e.join("~").split("~~").join("~")}_checkProcessQueue(t){let e=this._process_queue.shift();if(this._current_process=null,e)this._pushState(e[0],e[1]);else if(this._redirectAfterCurrentProcess||t.autoRedirect){t.autoRedirect&&this._RedirectOnView(t.autoRedirect);const e=this._redirectAfterCurrentProcess;this._redirectAfterCurrentProcess=null,this.goTo(e)}}_RedirectOnView(t){let e=Array(this._history_path.length).fill("~*").join(""),{href:i}=this._handleUrl(e);this._redirectAfterCurrentProcess=$(t).attr("href").replace("next=..",`next=${i}`)}_updateBreadcrumb(){this._breadcrumb.splice(this._history_path.length),this._activeContorller.splice(this._history_path.length);const t=this.find(".breadcrumb"),e=this;t.each((function(){const t=$(this);t.safeEmpty();let i=t.data("offset");i=i?parseInt(i):0;let s=[];e._breadcrumb.length-i-1>0&&(s=Array(e._breadcrumb.length-i-1).fill(".."));for(let n=i;n<e._breadcrumb.length-1;++n)t.append(`<li class="breadcrumb-item"><a class="navigation-links" href="${s.join("~")}">${e._breadcrumb[n]}</a></li>`),s.pop();t.append(`<li class="breadcrumb-item">${e._breadcrumb.at(-1)}</li>`)}))}_preparedLastViewContainer(){let t=this._$detail_view_container.at(-1);const s=this._$detail_view_container.length-1;0===t.length&&console.error(`sdc-navigation only works if you have a <div class="${i}"></div>`),t.hasClass("prepared")||t.addClass("prepared").safeEmpty(),t.hasClass(`prepared${s}`)||t.addClass(`prepared${s}`).append(`<div data-nav-idx="${s}" class="${e} ${s}_${e} empty"></div>`).append(`<div data-nav-idx="${s}" class="${e} ${s}_${e} active"></div>`);let n=t.find(`> .${s}_${e}`).eq(1),r=t.find(`> .${s}_${e}`).first();return r.hasClass("empty")||([r,n]=[n,r]),{container:t,empty_container:r,active_container:n,active_sub_container:t.find(`.${e}.active`).filter((function(){return parseInt($(this).data("nav-idx"))!==s})),deeper_sub_container:t.find(`.${e}`).filter((function(){return parseInt($(this).data("nav-idx"))>s}))}}_getViewContainer(t=0){0===this._$detail_view_container.length&&this._$detail_view_container.push(this.find(`.${i}`)),this._$detail_view_container.splice(t+1).map((t=>t.addClass("sdc_nav_to_remove").find(`> .${e}`).addClass("loading")));let s=this._preparedLastViewContainer();if(this._$detail_view_container.length!==t+1){let t=s.active_container.find(`.${i}`);0!==t.length?this._$detail_view_container.push(t.first()):this._$detail_view_container.push(this._$detail_view_container.at(-1)),s=this._preparedLastViewContainer()}return s}_getSubViewObj(t){const e=this._origin_target;let i=0,s=!1;for(;i<Math.min(e.length,this._history_path.length)&&e[i]===this._history_path[i];)i++;return i>=e.length&&e[i-1]===this._history_path[i-1]?(i=e.length-1,s=e.length<this._history_path.length&&_.isMatch(this._previous_args,t),this._history_path=[...e]):i>=e.length?(i=e.length-1,this._history_path=[...e]):this._history_path=[...e].slice(0,i+1),{idx:i,container:this._getViewContainer(i),target:e[i],isBack:s}}changeMenu(t){t>0&&this._menu_id!==t&&(this._menu_id=t,this.find(".nav-menu-set").removeClass("active"),this.find(`.nav-menu-set.menu-${t}`).addClass("active"))}_setupButton(){let t=this;this.find(".navigation-links").each((function(){let e=$(this);if(!this.hasAttribute("href"))return;e.hasClass("_link-done")||(e.data("_origin_href",t._prepareUrl(e.attr("href"))),e.addClass("_link-done")),e.addClass("_link-done");let i=t._handleUrl(e.data("_origin_href"));e.attr("href",i.href),e.addClass(`nav-family-${i.path.at(-1)}`)}))}_updateButton(t){let e;return t&&(this._currentButton=t),e=this.find(this._currentButton.join(", ")),e&&(this.find(".navigation-links").removeClass("active"),e.addClass("active")),this._isLoggedIn?(this.find(".navigation-links.only-logged-in").show(),this.find(".navigation-links.only-logged-out").hide()):(this.find(".navigation-links.only-logged-in").hide(),this.find(".navigation-links.only-logged-out").show()),e}_handleUrl(t){let e,i,s,n=t.match(/[&?]/);n?(e=t.substring(n.index+1),i=t.substring(0,n.index).split(/[~]/)):(i=t.split(/[~]/),e="");let r=0;t.startsWith(".")?s=[...this._history_path]:(r=-1,this._non_controller_path_prefix=i.shift(),""===this._non_controller_path_prefix&&(this._non_controller_path_prefix="/"),s=[]);for(let t of i)".."===t?s.pop():"*"===t?this._history_path.length>s.length&&s.push(this._history_path[s.length]):"."!==t&&""!==t&&s.push(t);if(0!==i.length&&i.at(-1)!==s.at(-1)&&(r=0),0===s.length&&""!==this.default_controller)return this._handleUrl(`~${this.default_controller}`);t=this._non_controller_path_prefix+"~"+s.join("~"),e=this._parseArgs(e,s.length);let o=[];r+=s.length;for(const[t,i]of Object.entries(this._previous_args)){let s=t.split(".");!e.hasOwnProperty(t)&&(1===s.length||parseInt(s[0])<=r)&&(e[t]=i)}for(const[t,i]of Object.entries(e))o.push(`${t}=${i}`);o.length>0&&(t+="~&"+o.join("&"));let a=`${window.location.protocol}//${window.location.host}${t}`,l=s.map((t=>`.navigation-links.nav-family-${t}`));return{contentName:s.at(-1),args:e,path:s,buttonSelector:l,url:a,href:t}}_parseArgs(e,i=null){if(!e||""===e)return{};let s={},n=e.split("&");for(var r=0;r<n.length;r++){let e=n[r].split("="),o=e.shift();i&&o.split(".").length<2&&(o=`${i}.${o}`);let a=e.join("=");s.hasOwnProperty(o)&&console.error("Duplication of url params: "+o),s[o]=(0,t.checkIfParamNumberBoolOrString)(decodeURIComponent(a))}return s}_manageDefault(t){const e=t.find(`.${i}`).data("default-controller");return!!e&&(this._pushState(`.~${e}`,!0),!0)}_pushState(t,e=!0){if(this._is_processing)return void this._process_queue.push([t,e]);let i=this._handleUrl(t);e?history.pushState(i,"",i.url):this.navigateToPage(i.path,i.args,i)}login(){location.reload()}logout(){this.login()}}t.app.register(SdcNavigatorController),function(e){function updateStateFunc(i){let s=e[i];e[i]=function(n,r,o){let a=Array.apply(null,arguments);if("function"==typeof e["on"+i.toLowerCase()]&&e["on"+i.toLowerCase()]({state:n}),t.trigger.apply(t.app.events,["navigateToPage",n.path,n.args,n]),"function"==typeof s)return s.apply(e,a)}}updateStateFunc("replaceState"),updateStateFunc("pushState"),updateStateFunc("popState"),window.onpopstate=function(t){e.popState(t.state)}}(window.history)})();
|
|
@@ -118,10 +118,14 @@ export class SdcModelFormController extends AbstractSDC {
|
|
|
118
118
|
}
|
|
119
119
|
|
|
120
120
|
async onLoad($html) {
|
|
121
|
-
await this.onInitForm(this.params)
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
121
|
+
await this.onInitForm(this.params).catch((e) => {
|
|
122
|
+
this.model = null;
|
|
123
|
+
console.error(e);
|
|
124
|
+
});
|
|
125
|
+
if (this.model) {
|
|
126
|
+
this.form = this.formGenerator(this.model).addClass('container-fluid');
|
|
127
|
+
$html.find('.form-container').append(this.form);
|
|
128
|
+
}
|
|
125
129
|
// $html.find(`.not-${this.type}`).remove();
|
|
126
130
|
return super.onLoad($html);
|
|
127
131
|
}
|
|
@@ -182,7 +182,7 @@ export class SdcNavigatorController extends AbstractSDC {
|
|
|
182
182
|
}
|
|
183
183
|
this._is_processing = false;
|
|
184
184
|
this._updateBreadcrumb();
|
|
185
|
-
this._checkProcessQueue();
|
|
185
|
+
this._checkProcessQueue(controller);
|
|
186
186
|
this.refresh();
|
|
187
187
|
return;
|
|
188
188
|
}
|
|
@@ -237,7 +237,7 @@ export class SdcNavigatorController extends AbstractSDC {
|
|
|
237
237
|
} else {
|
|
238
238
|
this._updateBreadcrumb();
|
|
239
239
|
if (!this._manageDefault(last_view_array.empty_container)) {
|
|
240
|
-
this._checkProcessQueue();
|
|
240
|
+
this._checkProcessQueue(controller);
|
|
241
241
|
}
|
|
242
242
|
setTimeout(() => {
|
|
243
243
|
this.$container.find('.header-loading').removeClass('active');
|
|
@@ -264,12 +264,16 @@ export class SdcNavigatorController extends AbstractSDC {
|
|
|
264
264
|
return c_list.join('~').split('~~').join('~');
|
|
265
265
|
}
|
|
266
266
|
|
|
267
|
-
_checkProcessQueue() {
|
|
267
|
+
_checkProcessQueue(controller) {
|
|
268
268
|
let next = this._process_queue.shift();
|
|
269
269
|
this._current_process = null;
|
|
270
270
|
if (next) {
|
|
271
271
|
this._pushState(next[0], next[1]);
|
|
272
|
-
} else if (this._redirectAfterCurrentProcess) {
|
|
272
|
+
} else if (this._redirectAfterCurrentProcess || controller.autoRedirect) {
|
|
273
|
+
if(controller.autoRedirect) {
|
|
274
|
+
this._RedirectOnView(controller.autoRedirect);
|
|
275
|
+
}
|
|
276
|
+
|
|
273
277
|
const temp = this._redirectAfterCurrentProcess;
|
|
274
278
|
this._redirectAfterCurrentProcess = null;
|
|
275
279
|
this.goTo(temp);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(()=>{"use strict";const t=sdc_client;class SdcSearchSelectController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_search_select",this._state=0,this._searchIdx={},this._searchtimer=null,this._currentOption=[],this.startValues=[],this.value=[],this._allowDelete=!1,this.model=null,this.events.unshift({click:{".option-container":function(t){this.onSelect(t)}}})}onInitSearchSelect({name:t="unknown",required:e,value:i=[""],modelName:s,multiple:n,ids:r}){this.required=Boolean("true"===e?.toLocaleLowerCase()),this.multi=Boolean("true"===n?.toLocaleLowerCase()),this._allowDelete=!this.required||this.multi,this.startValues=i instanceof Array?i:JSON.parse(i.replaceAll("'",'"')),this.name=t,s&&(this.model=r?this.newModel(s,{pk__in:r}):this.newModel(s))}onLoad(t){if(this.onInitSearchSelect(this.params),!this.model){let e=this;const i=$('<div class="all-option-container"></div>');t.find(".main-select-options").append(i),this.find(".option-container").each((function(){e._prepareOption(this),i.append(this)}))}return super.onLoad(t)}willShow(){return this.model?new Promise((t=>{const e=this,i=this.model.view({viewName:"html_select_template",cbResolve:()=>{e.find(".option-container").each((function(){e._prepareOption(this)})),t(super.willShow())}});i.removeClass("container-fluid").addClass("all-option-container"),this.find(".main-select-options").append(i)})):super.willShow()}_prepareOption(t){const e=$(t),i=String(e.data("value")),s=i.replace(/[^a-zA-Z0-9_-]+/g,"__");this._searchIdx[s]=e.data("search").toLowerCase().split(",").map((t=>t.replaceAll(" ",""))),this._searchIdx[s].push(e.data("search")),e.addClass(`oc-${s}`).addClass("oc-style"),this.startValues.includes(i)&&this._storeSelectedOption(e)}onRefresh(){return 1===this._state?(setTimeout((()=>this.find(".search-term-input").focus()),100),this.find(".main-select-options").addClass("active").find(".search-term-input").val(""),this.find(".option-container").addClass("found")):this.find(".main-select-options").removeClass("active"),super.onRefresh()}current_val(){if(0===this._state){if(0===this.value.length)return sdcDom("div",null,sdcDom("p",{sdc_click:"onActivate",className:"mb-2 custom-select form-control"},sdcDom("span",{className:"select-label"},gettext("Search & select...")),sdcDom("span",{className:"select-arrow"})),sdcDom("input",{type:"hidden",className:"timer-change",name:this.name,value:""}));let t;return t=this.multi?`[${this.value.join(",")}]`:this.value[0],sdcDom("div",{sdc_click:"onActivate",className:this.multi?"multi custom-select-selected":"custom-select-selected"},this._currentOption.map(this._optionBtnToSelected.bind(this)),sdcDom("input",{className:"timer-change",type:"hidden",name:this.name,value:t}),sdcDom("span",{className:"select-arrow"}))}}onActivate(){this._state=1,this.refresh()}onDeactivate(t,e){const i=document.elementFromPoint(e.clientX,e.clientY);$(i).hasClass("background-event")&&this._deactivate()}_deactivate(){return new Promise((t=>{setTimeout((()=>{this._state=0,t(this.refresh())}),100)}))}_optionBtnToSelected(t){const e=t.clone()[0];Array.from(e.attributes).forEach((t=>e.removeAttribute(t.name))),e.className="selected-option";const i=String(t.data("value"));if(this._allowDelete){const t=$('<button type="button" sdc_click="remove_selection" class="delete-btn" aria-label="Remove Bouldering">×</button>');t.data("value",i),e.append(t[0])}return e}_storeSelectedOption(t){const e=String(t.data("value"));t.addClass("selected"),this.multi?this.value.includes(e)||(this.value.push(e),this._currentOption.push(t)):(this.value=[e],this._currentOption.forEach((t=>t.removeClass("selected"))),this._currentOption=[t])}remove_selection(t,e){e.stopPropagation();const i=this.value.indexOf(t.data("value"));this.value.splice(i,1);const[s]=this._currentOption.splice(i,1);s.removeClass("selected"),this.refresh().then((()=>{this.find(".timer-change").trigger("change")}))}onSelect(t){this._storeSelectedOption(t),this._deactivate().then((()=>{this.find(".timer-change").trigger("change")}))}updateSearch(t){this._searchtimer&&clearTimeout(this._searchtimer),this._searchtimer=setTimeout((()=>{this.find(".option-container").removeClass("found");const e=t.val().toLowerCase().split(/[,\s]+/);e&&Object.entries(this._searchIdx).forEach((([t,i])=>{e.every((t=>i.some((e=>e.includes(t)))))&&this.find(`.oc-${t}`).addClass("found")}))}),500)}}t.app.register(SdcSearchSelectController);class SdcDummyController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_dummy"}onInitDummy({text:t}){this._text=t}onLoad(t){return this.onInitDummy(this.params),t.find(".origen_content").append(this.$container.html()),super.onLoad(t)}willShow(){return super.willShow()}onRefresh(){return super.onRefresh()}page_text(){return sdcDom("p",{className:"col"},this._text||"")}}t.app.register(SdcDummyController);class SdcAutoSubmitController extends t.AbstractSDC{constructor(){super(),this.events.unshift({submit:{".ajax-form":function(e,i){i.preventDefault();const s=e[0];this.submitForm(s).then((e=>{(e.msg||e.header)&&(0,t.trigger)("pushMsg",e.header||"",e.msg||""),(0,t.clearErrorsInForm)($(s)),this.onSubmit(e)})).catch((i=>{let s=i.responseJSON;s&&(s.html&&(0,t.setErrorsInForm)(e,$(s.html)),(s.msg||s.header)&&(0,t.trigger)("pushErrorMsg",s.header||"",s.msg||"")),this.onErrorSubmit(i)}))}}})}onLoad(t){return super.onLoad(t)}willShow(){return super.willShow()}onRefresh(){return super.onRefresh()}onSubmit(){}onErrorSubmit(){}onChange(t){t.closest(".ajax-form").submit()}}t.app.register(SdcAutoSubmitController);class SdcErrorController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_error/%(code)s"}onLoad(t){return t.find(".error_content").append(this.$container.html()),super.onLoad(t)}willShow(){return super.willShow()}onRefresh(){return super.onRefresh()}}t.app.register(SdcErrorController);class SdcNavigationClientController extends t.AbstractSDC{constructor(){super(),this.menu_id=0,this._navController=null}onLoad(e){return(0,t.on)("_onResize",this),super.onLoad(e)}willShow(){return this.confirmPageLoaded(),super.willShow()}_onResize(){this.onResize()}onResize(){}confirmPageLoaded(){(0,t.trigger)("navLoaded",this),(0,t.trigger)("changeMenu",this.menu_id)}get navController(){return this._navController?.deref()}get activeController(){return this._navController?.deref().activeController}get navControllerPath(){return this._navController?.deref()._origin_target}}t.app.register(SdcNavigationClientController);class SdcAlertMessengerController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_alert_messenger",this.msgCounter=0}onLoad(e){return(0,t.on)("pushMsg",this),(0,t.on)("pushErrorMsg",this),super.onLoad(e)}willShow(){return super.willShow()}onRefresh(){return super.onRefresh()}pushMsg(t,e){return this._pushMsg(t,e,!1)}pushErrorMsg(t,e){return this._pushMsg(t,e,!0)}_pushMsg(t,e,i){"string"==typeof e&&(e=[e]),this._pushMsgArray(t,e,i)}_pushMsgArray(t,e,i){let s=this.find(".dummy_row");if(0===s.length)return;let n=s.clone();n.removeClass("dummy_row"),i&&n.addClass("error_box"),n.find(".msg_header").text(t),n.find(".msg_body")[0].innerHTML=e;let r=new Date,o=r.getMinutes();o=o<10?"0"+o:o,n.find(".msg_date").text(r.getHours()+":"+o),n.insertAfter(s);let a=this;var l;this.msgCounter++,this.find(".alert_msg_container").addClass("active"),l=n,setTimeout((()=>{l.remove(),a.msgCounter--,0===a.msgCounter&&a.find(".alert_msg_container").removeClass("active")}),2e3)}}t.app.registerGlobal(SdcAlertMessengerController);class SdcUpdateOnChangeController extends t.AbstractSDC{constructor(){super(),this._timer=null,this.isAutoChange=!0,this._isNotReady=!0,this._isChanged=!1,this._lastTimeChanged="",this.events.unshift({change:{".timer-change":this.change},keydown:{".timer-change":this.startTimer}})}onLoad(t){return super.onLoad(t)}willShow(){return this._isNotReady=!0,super.willShow()}onRefresh(){return setTimeout((()=>{this._isNotReady=!1}),500),super.onRefresh()}change(t){this.isAutoChange&&!this._isNotReady&&(this._timer&&(clearTimeout(this._timer),this._timer=null),!this._lastTimeChanged!==t.name&&(this.onChange($(t)),this._isChanged=!0,this._lastTimeChanged=""))}startTimer(t){this.isAutoChange&&!this._isNotReady&&(this._timer&&(clearTimeout(this._timer),this._timer=null),this._lastTimeChanged="",this._isChanged=!1,this._timer=setTimeout((()=>{this._isChanged||(this.onChange($(t)),this._lastTimeChanged=t.name)}),1e3))}}t.app.register(SdcUpdateOnChangeController);class SdcSearchViewController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_search_view",this.isRange=!0,this.isTotalCount=!0,this.dataIdxKey="next-idx",this.id=`${(new Date).getTime()}_${Math.random().toString(36).substring(7)}`,this.$form=null,this.events.unshift({submit:{".search-form":(t,e)=>{e.preventDefault()}},click:{".page-number-control-btn":function(t){this.$form[0].range_start.value=$(t).data(this.dataIdxKey),this.onChange()}}})}onInitSearch({url:t,rangeSize:e,rangeStart:i,rangeEnd:s,totalCount:n,removeLabels:r}){this.url=t||"",void 0===i||void 0===s?this.isRange=!1:(void 0===e&&(e=s-i),void 0===n&&(this.isTotalCount=!1),this.totalCount=n,this.rangeSize=e,this.range=[i-e-1,i,s],i<=1&&s>=n&&(this.isRange=!1)),this.removeLabels=r||!1}onLoad(t){return this.onInitSearch(this.params),this.$form=$(document.createElement("form")),t.find(".inner-form.search-form").append(this.$container.html()),this.$form.append(this.$container.html()),this.$form.attr("action",this.url),this.$form.attr("method","post"),this.$form.attr("id",this.id),super.onLoad(t)}willShow(){let t=this.find(".page-number-control");return this.find(".form-group").addClass("form-group-sm"),this.removeLabels&&(this.find(".form-input-container").removeClass("col-md-7"),this.find(".form-group").addClass("no-label")),this.isRange?(t.find(".range-span").text(this.range[1]+" - "+this.range[2]),this.isTotalCount?t.find(".total-amount-span").text(" / "+this.totalCount):t.find(".total-amount-span").remove(),this.range[1]>1?t.find(".page-number-control-btn-prev").data(this.dataIdxKey,this.range[0]):t.find(".page-number-control-btn-prev").addClass("disabled").prop("disabled",!0),this.range[2]<this.totalCount?t.find(".page-number-control-btn-next").data(this.dataIdxKey,this.range[2]):t.find(".page-number-control-btn-next").addClass("disabled").prop("disabled",!0),super.willShow()):(t.remove(),super.willShow())}onRefresh(){return super.onRefresh()}onChange(){let t=this.find(".inner-form.search-form");this.$form.find(".form-control").each((function(){if(""!==this.id){let e=t.find(`#${this.id}`);if("SELECT"===this.tagName){let t=$(this);t.empty(),t.append(`<option value="${e.val()}" selected">`)}else $(this).val(e.val())}})),this._parentController.onSearch?this._parentController.onSearch(this.$form[0]):console.error("SearchController parent needs to implement onSearch(form)")}}t.app.register(SdcSearchViewController).addMixin("sdc-update-on-change");class SdcDetailViewController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_detail_view",this.template_context=null,this.model=null}async onInitDetails({model:e,pk:i,id:s}){if(this.id??=s??i,this.model&&(e=this.model),e instanceof Promise&&(e=await e),"object"==typeof e&&e instanceof t.SdcModel)return this.model=e,void(this.querySetInstance=e.querySet);"object"==typeof e&&e instanceof t.SdcQuerySet&&(this.querySetInstance=e),"object"!=typeof e&&(this.querySetInstance=this.querySet(this.model_name||e,{id:this.id})),this.model=await this.querySetInstance.get()}async onLoad(t){await this.onInitDetails(this.params);const e=this.model.detailView({cbResolve:()=>{this.find(".detail-container").append(e),this.refresh().then((t=>null)),this._onUpdate.bind(this)},templateContext:this.template_context});return this.querySetInstance&&(this.querySetInstance.onUpdate=async()=>{await this._updateView(),this._onUpdate()}),super.onLoad(t)}willShow(){return super.willShow()}onRefresh(){return this.find('[data-bs-toggle="tooltip"]').each((function(){new Tooltip(this)})),super.onRefresh()}_onUpdate(){this.on_update&&this.model.update().then((()=>{this.on_update(this.model)}))}_updateView(){return new Promise((e=>{const i=this.model.detailView({cbResolve:()=>{$(".tooltip.fade.show").remove(),t.app.reconcile(this,i,this.find(".detail-container").children()),e()},templateContext:this.template_context})}))}}t.app.register(SdcDetailViewController);class SdcModelFormController extends t.AbstractSDC{constructor(){super(),this.id=null,this.contentUrl="/sdc_view/sdc_tools/sdc_model_form",this.model_name=null,this.isKeepEditing=null,this.isReset=null,this._isLoaded=!1,this.autoSave=null,this.model=null,this.formHeader=null,this.buttonText=null}async onInitForm({model:e,pk:i,id:s,next:n,filter:r=null,on_update:o,on_error:a,form_header:l,button_text:h,form_name:d=!1,reset_on_save:c=!1,editing_after_save:u=!1,auto_save:p=!0}){if(this.on_update??=o,this.on_error??=a,this.next??=n,this.buttonText??=h||gettext("Save"),this.formHeader??=l,this.autoSave??=p,this.isReset??=c,this.isKeepEditing??=u,this.id??=s??i,this.form_name??=d,this.id?r={id:this.id}:"function"==typeof r&&(r=r()),this.model&&(e=this.model),e instanceof Promise&&(e=await e),"object"==typeof e&&e instanceof t.SdcModel?(this.model=e,this.id??=e.id):"object"!=typeof e?this.model=this.querySet(this.model_name||e,r):"object"==typeof e&&e instanceof t.SdcQuerySet&&(this.model=e),"object"==typeof this.model&&this.model instanceof t.SdcQuerySet)if(0===Object.keys(this.model.modelQuery).length)this.id=null,this.model=this.model.new();else try{this.model=await this.model.get(),this.id=this.model.id}catch(t){this.id=null,this.model=this.model.new()}void 0===this.id||null===this.id?(this.isAutoChange=!1,this.type="create",this.formGenerator=t=>t.form({cbResolve:this._onFormLoaded.bind(this)})):this.form_name?(this.isAutoChange=this.autoSave,this.type="edit",this.formGenerator=t=>t.namedForm({formName:this.form_name,cbResolve:this._onFormLoaded.bind(this)})):(this.isAutoChange=!0,this.type="edit",this.formGenerator=t=>t.form({cbResolve:this._onFormLoaded.bind(this)}))}async onLoad(t){return await this.onInitForm(this.params),this.form=this.formGenerator(this.model).addClass("container-fluid"),t.find(".form-container").append(this.form),super.onLoad(t)}onChange(){this.form?.closest("form").submit()}willShow(){return super.willShow()}onRefresh(){return super.onRefresh()}_onFormLoaded(){this._isLoaded||this.refresh(),this._isLoaded=!0}_createFormToEditForm(){this.id=this.model.id,this.type="edit",this.isAutoChange=!0;const t=this.form?.closest("form"),e=t.clone(),i=e.find(".form-container").safeEmpty(),s=this.model.form({cbResolve:()=>{this.reconcile(e,t)}}).addClass("container-fluid");i.append(s)}submitModelForm(e,i){let s=this;return super.defaultSubmitModelForm(e,i).then((function(i){let n=!0;i&&"create"===i.type&&(n=!1,s.isReset?e[0].reset():s.isKeepEditing?(s.model.querySet.setIds(s.model.id),s._createFormToEditForm()):(0,t.trigger)("goTo",s.next||"..")),s.on_update&&s.on_update(i),n&&s.next&&(0,t.trigger)("goTo",s.next)})).catch((t=>{s.on_error&&s.on_error(t)}))}controller_name(){return`${this.type.replace(/^./g,(t=>t.toUpperCase()))} ${this.model.constructor.name.replace(/[A-Z]/g,(t=>" "+t)).replace(/^./g,(t=>t.toUpperCase()))}`}save_btn(){return this._isLoaded?this.autoSave||"edit"!==this.type?sdcDom("span",null):sdcDom("button",{className:"btn btn-success"},this.buttonText):sdcDom("h3",null,gettext("Loading..."))}header_top(){return this.formHeader?sdcDom("h3",null,this.formHeader):sdcDom("span",null)}}t.app.register(SdcModelFormController).addMixin("sdc-update-on-change");class SdcListViewController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_list_view",this.search_values={},this.model_name=null,this.template_context=null}async onInitList({model:e,filter:i,onUpdate:s}){this.model&&(e=this.model),e instanceof Promise&&(e=await e),this.filter??=i,this.model_name??=e,this.on_update??=s,"function"==typeof this.filter&&(this.filter=this.filter()),"object"==typeof e&&e instanceof t.SdcQuerySet&&(this.model=e),"object"!=typeof e&&(this.model=this.querySet(this.model_name)),this.filter&&this.model.setFilter(this.filter),this.on_update&&this.model.load().then((()=>{this.on_update(this.model)}))}onLoad(t){this.onInitList(this.params);let e=t.filter(".list-container");return 0===e.length&&(e=t.find(".list-container")),e.append(this.model.listView({modelQuery:this.search_values,templateContext:this.template_context})),this.model.onUpdate=this.model.onCreate=()=>{this.on_update&&this.model.update().then((()=>{this.on_update(this.model)})),this._updateView()},super.onLoad(t)}willShow(){return super.willShow()}onRefresh(){return this.find('[data-bs-toggle="tooltip"]').each((function(){new Tooltip(this)})),super.onRefresh()}removeInstance(t){this.model.delete({id:t.data("instance-pk")})}onSearch(t){new FormData(t).forEach(((t,e)=>this.search_values[e]=t)),this._updateView()}_updateView(){const e=this.model.listView({searchValues:this.search_values,templateContext:this.template_context,cbResolve:()=>{$(".tooltip.fade.show").remove(),t.app.reconcile(this,e,this.find(".list-container .container-fluid").first()).then((t=>null))}})}}t.app.register(SdcListViewController);const e="sdc_sub_detail_container",i="sdc_detail_view";class SdcNavigatorController extends t.AbstractSDC{constructor(){super(),this.contentUrl="/sdc_view/sdc_tools/sdc_navigator",this._setup(),this.events.unshift({click:{".navigation-links":function(t,e){e.preventDefault(),this.onNavLink(t,e)}}})}_setup(){this._isLoggedIn=!1,this._history_path=[],this._breadcrumb=[],this._activeContorller=[],this._history_idx=0,this._origin_target=[],this._$detail_view_container=[],this._default_controller=null,this._previous_args=[],this._is_processing=!1,this._process_queue=[],this._current_process=null,this._redirectAfterCurrentProcess=null,this._non_controller_path_prefix="/",this._menu_id=0}onInitNav({defaultController:t}){this._default_controller=t}onLoad(e){return this.onInitNav(this.params),(0,t.on)("onNavLink",this),(0,t.on)("onNavigateToController",this),(0,t.on)("_RedirectOnView",this),(0,t.on)("goTo",this),(0,t.on)("changeMenu",this),(0,t.on)("navigateToPage",this),(0,t.on)("navLoaded",this),(0,t.on)("login",this),(0,t.on)("logout",this),e.find(".main-nav-import-container").append(this.$container.html()),this._isLoggedIn=e.data("user"),super.onLoad(e)}willShow(){let e=this;$(window).resize((function(){(0,t.trigger)("_onResize",e)})),this._setupButton();let i=this._handleUrl(window.location.pathname);return history.replaceState(i,"",i.url,i),super.willShow()}onRefresh(){return super.onRefresh()}get activeController(){return this._activeContorller}get default_controller(){return this._default_controller?this._default_controller:(console.error(`Set the property data-default-controller in < ${this.tagName}> (tag name of the default controller)`),"")}onNavLink(t,e){e&&e.preventDefault(),this.goTo($(t).attr("href"))}goTo(t,e=null){return t=this._prepareUrl(t),this.onNavigateToController(t,e)}onNavigateToController(t,e=null){if(Array.isArray(t)&&(t=t.join("~")),e){if(Array.isArray(e))e=e.join("&");else if("object"==typeof e){const t=[];for(const[i,s]of Object.entries(e))t.push(`${i}=${s}`);e=t.join("&")}t+="~&"+e}this._pushState(t)}navigateToPage(e,i,s){this._current_process=[e,i],s&&this._updateButton(s.buttonSelector),this._is_processing=!0,this._origin_target=e;let n=this._getSubViewObj(i);if(this._previous_args=i,n.container.container.data("modal")){if(!this._currentModal){this._currentModal=new Modal(n.container.empty_container.closest(n.container.container.data("modal"))[0],{keyboard:!1}),this._currentModal.show(),this._currentModal.off=()=>{this.addEvent("hide.bs.modal",n.container.container.data("modal"),(()=>{}))};const t="/"+"~*".repeat(n.idx);this.addEvent("hide.bs.modal",n.container.container.data("modal"),(()=>{this._currentModal.off(),this.onNavigateToController(t)}))}}else this._currentModal&&(this._currentModal.off(),this._currentModal.hide(),this._currentModal=null);if(n.isBack){n.container.active_sub_container.removeClass("active loading"),n.container.empty_container.addClass("empty").removeClass("active loading"),n.container.active_container.addClass("active").removeClass("empty loading"),n.container.deeper_sub_container.safeEmpty().removeClass("empty loading");let e=t.app.getController(n.container.active_container.find("> ._sdc_controller_"));return this._manageDefault(n.container.active_container),"function"==typeof e.onBack&&e.onBack(),this._is_processing=!1,this._updateBreadcrumb(),this._checkProcessQueue(),void this.refresh()}n.container.empty_container.addClass("loading"),n.container.active_sub_container.addClass("loading"),n.container.active_container.addClass("loading");let r=$(`<${n.target}_sdc-navigation-client></${n.target}_sdc-navigation-client>`);for(let[t,e]of Object.entries(i)){let i=t.split(".");i.length>0&&(t=i.at(-1));const s=t.replace(/([A-Z])/g,(t=>"-"+t.toLowerCase()));(1===i.length||i.length>1&&parseInt(i[0])===n.idx+1)&&r.data(s,e)}n.container.empty_container.safeEmpty().append(r),this.refresh(),this.find(".header-loading").addClass("active"),r.hasClass("_sdc_controller_")||(n.container.empty_container.empty().append('<sdc-error_sdc-navigation-client data-code="404"></sdc-error_sdc-navigation-client>'),this.refresh())}navLoaded(t){let e=this._history_path.length-1,i=this._preparedLastViewContainer(e);i.active_container.removeClass("active loading").addClass("empty"),i.active_sub_container.removeClass("active loading"),i.empty_container.addClass("active").removeClass("empty loading"),i.deeper_sub_container.safeEmpty().removeClass("empty loading"),this._breadcrumb.splice(e),this._activeContorller.splice(e),this._is_processing=!1,$(".tooltip.fade.show").remove(),this._breadcrumb[e]=t.controller_name(),this._activeContorller[e]=t,t._navController=new WeakRef(this),this._origin_target.length!==this._history_path.length?this._current_process&&this.navigateToPage(this._current_process[0],this._current_process[1]):(this._updateBreadcrumb(),this._manageDefault(i.empty_container)||this._checkProcessQueue(),setTimeout((()=>{this.$container.find(".header-loading").removeClass("active")}),100))}_prepareUrl(t){Array.isArray(t)&&(0!==t.length&&[".","..",""].includes(t[0])||t.unshift(""),t=t.join("~"));let e=t.split("~").map((t=>t.split("/"))).flat().filter(((t,e)=>e<1||t.length>0));if(!e[0].startsWith(".")&&"*"!==e[0]&&""!==e[0]){for(let t=0;t<this._history_path.length;++t)e.unshift("*");e.unshift("")}return e.join("~").split("~~").join("~")}_checkProcessQueue(){let t=this._process_queue.shift();if(this._current_process=null,t)this._pushState(t[0],t[1]);else if(this._redirectAfterCurrentProcess){const t=this._redirectAfterCurrentProcess;this._redirectAfterCurrentProcess=null,this.goTo(t)}}_RedirectOnView(t){let e=Array(this._history_path.length).fill("~*").join(""),{href:i}=this._handleUrl(e);this._redirectAfterCurrentProcess=$(t).attr("href").replace("next=..",`next=${i}`)}_updateBreadcrumb(){this._breadcrumb.splice(this._history_path.length),this._activeContorller.splice(this._history_path.length);const t=this.find(".breadcrumb"),e=this;t.each((function(){const t=$(this);t.safeEmpty();let i=t.data("offset");i=i?parseInt(i):0;let s=[];e._breadcrumb.length-i-1>0&&(s=Array(e._breadcrumb.length-i-1).fill(".."));for(let n=i;n<e._breadcrumb.length-1;++n)t.append(`<li class="breadcrumb-item"><a class="navigation-links" href="${s.join("~")}">${e._breadcrumb[n]}</a></li>`),s.pop();t.append(`<li class="breadcrumb-item">${e._breadcrumb.at(-1)}</li>`)}))}_preparedLastViewContainer(){let t=this._$detail_view_container.at(-1);const s=this._$detail_view_container.length-1;0===t.length&&console.error(`sdc-navigation only works if you have a <div class="${i}"></div>`),t.hasClass("prepared")||t.addClass("prepared").safeEmpty(),t.hasClass(`prepared${s}`)||t.addClass(`prepared${s}`).append(`<div data-nav-idx="${s}" class="${e} ${s}_${e} empty"></div>`).append(`<div data-nav-idx="${s}" class="${e} ${s}_${e} active"></div>`);let n=t.find(`> .${s}_${e}`).eq(1),r=t.find(`> .${s}_${e}`).first();return r.hasClass("empty")||([r,n]=[n,r]),{container:t,empty_container:r,active_container:n,active_sub_container:t.find(`.${e}.active`).filter((function(){return parseInt($(this).data("nav-idx"))!==s})),deeper_sub_container:t.find(`.${e}`).filter((function(){return parseInt($(this).data("nav-idx"))>s}))}}_getViewContainer(t=0){0===this._$detail_view_container.length&&this._$detail_view_container.push(this.find(`.${i}`)),this._$detail_view_container.splice(t+1).map((t=>t.addClass("sdc_nav_to_remove").find(`> .${e}`).addClass("loading")));let s=this._preparedLastViewContainer();if(this._$detail_view_container.length!==t+1){let t=s.active_container.find(`.${i}`);0!==t.length?this._$detail_view_container.push(t.first()):this._$detail_view_container.push(this._$detail_view_container.at(-1)),s=this._preparedLastViewContainer()}return s}_getSubViewObj(t){const e=this._origin_target;let i=0,s=!1;for(;i<Math.min(e.length,this._history_path.length)&&e[i]===this._history_path[i];)i++;return i>=e.length&&e[i-1]===this._history_path[i-1]?(i=e.length-1,s=e.length<this._history_path.length&&_.isMatch(this._previous_args,t),this._history_path=[...e]):i>=e.length?(i=e.length-1,this._history_path=[...e]):this._history_path=[...e].slice(0,i+1),{idx:i,container:this._getViewContainer(i),target:e[i],isBack:s}}changeMenu(t){t>0&&this._menu_id!==t&&(this._menu_id=t,this.find(".nav-menu-set").removeClass("active"),this.find(`.nav-menu-set.menu-${t}`).addClass("active"))}_setupButton(){let t=this;this.find(".navigation-links").each((function(){let e=$(this);if(!this.hasAttribute("href"))return;e.hasClass("_link-done")||(e.data("_origin_href",t._prepareUrl(e.attr("href"))),e.addClass("_link-done")),e.addClass("_link-done");let i=t._handleUrl(e.data("_origin_href"));e.attr("href",i.href),e.addClass(`nav-family-${i.path.at(-1)}`)}))}_updateButton(t){let e;return t&&(this._currentButton=t),e=this.find(this._currentButton.join(", ")),e&&(this.find(".navigation-links").removeClass("active"),e.addClass("active")),this._isLoggedIn?(this.find(".navigation-links.only-logged-in").show(),this.find(".navigation-links.only-logged-out").hide()):(this.find(".navigation-links.only-logged-in").hide(),this.find(".navigation-links.only-logged-out").show()),e}_handleUrl(t){let e,i,s,n=t.match(/[&?]/);n?(e=t.substring(n.index+1),i=t.substring(0,n.index).split(/[~]/)):(i=t.split(/[~]/),e="");let r=0;t.startsWith(".")?s=[...this._history_path]:(r=-1,this._non_controller_path_prefix=i.shift(),""===this._non_controller_path_prefix&&(this._non_controller_path_prefix="/"),s=[]);for(let t of i)".."===t?s.pop():"*"===t?this._history_path.length>s.length&&s.push(this._history_path[s.length]):"."!==t&&""!==t&&s.push(t);if(0!==i.length&&i.at(-1)!==s.at(-1)&&(r=0),0===s.length&&""!==this.default_controller)return this._handleUrl(`~${this.default_controller}`);t=this._non_controller_path_prefix+"~"+s.join("~"),e=this._parseArgs(e,s.length);let o=[];r+=s.length;for(const[t,i]of Object.entries(this._previous_args)){let s=t.split(".");!e.hasOwnProperty(t)&&(1===s.length||parseInt(s[0])<=r)&&(e[t]=i)}for(const[t,i]of Object.entries(e))o.push(`${t}=${i}`);o.length>0&&(t+="~&"+o.join("&"));let a=`${window.location.protocol}//${window.location.host}${t}`,l=s.map((t=>`.navigation-links.nav-family-${t}`));return{contentName:s.at(-1),args:e,path:s,buttonSelector:l,url:a,href:t}}_parseArgs(e,i=null){if(!e||""===e)return{};let s={},n=e.split("&");for(var r=0;r<n.length;r++){let e=n[r].split("="),o=e.shift();i&&o.split(".").length<2&&(o=`${i}.${o}`);let a=e.join("=");s.hasOwnProperty(o)&&console.error("Duplication of url params: "+o),s[o]=(0,t.checkIfParamNumberBoolOrString)(decodeURIComponent(a))}return s}_manageDefault(t){const e=t.find(`.${i}`).data("default-controller");return!!e&&(this._pushState(`.~${e}`,!0),!0)}_pushState(t,e=!0){if(this._is_processing)return void this._process_queue.push([t,e]);let i=this._handleUrl(t);e?history.pushState(i,"",i.url):this.navigateToPage(i.path,i.args,i)}login(){location.reload()}logout(){this.login()}}t.app.register(SdcNavigatorController),function(e){function updateStateFunc(i){let s=e[i];e[i]=function(n,r,o){let a=Array.apply(null,arguments);if("function"==typeof e["on"+i.toLowerCase()]&&e["on"+i.toLowerCase()]({state:n}),t.trigger.apply(t.app.events,["navigateToPage",n.path,n.args,n]),"function"==typeof s)return s.apply(e,a)}}updateStateFunc("replaceState"),updateStateFunc("pushState"),updateStateFunc("popState"),window.onpopstate=function(t){e.popState(t.state)}}(window.history)})();
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/__init__.py
RENAMED
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/_private.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/init_add/utils.py
RENAMED
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_cc.py
RENAMED
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_db_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_init.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_new_model.py
RENAMED
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_open_api.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/sdc_update_url.py
RENAMED
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/management/commands/utils/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/sdc_extentions/import_manager.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/Assets/gulpfile.jsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/js_test.js.txt
RENAMED
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/models/detail.html
RENAMED
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/models/list.html
RENAMED
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/routing.py.txt
RENAMED
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/sdc_urls.py.txt
RENAMED
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/sdc_views.py.txt
RENAMED
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/templates/base.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_core/template_files/templates/index.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_tools/Assets/tests/sdc_tools.test.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/Assets/tests/sdc_user.test.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/email/reset_password.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/sdc/register.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{simpledomcontrol-0.158.8 → simpledomcontrol-0.158.9}/sdc_user/templates/sdc_user/sdc/sdc_login.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|