diff options
| author | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
|---|---|---|
| committer | stephanchrst <stephanchrst@gmail.com> | 2022-05-10 21:51:50 +0700 |
| commit | 3751379f1e9a4c215fb6eb898b4ccc67659b9ace (patch) | |
| tree | a44932296ef4a9b71d5f010906253d8c53727726 /addons/web_tour/static/src/js/tour_step_utils.js | |
| parent | 0a15094050bfde69a06d6eff798e9a8ddf2b8c21 (diff) | |
initial commit 2
Diffstat (limited to 'addons/web_tour/static/src/js/tour_step_utils.js')
| -rw-r--r-- | addons/web_tour/static/src/js/tour_step_utils.js | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/addons/web_tour/static/src/js/tour_step_utils.js b/addons/web_tour/static/src/js/tour_step_utils.js new file mode 100644 index 00000000..dc69e896 --- /dev/null +++ b/addons/web_tour/static/src/js/tour_step_utils.js @@ -0,0 +1,161 @@ +odoo.define('web_tour.TourStepUtils', function (require) { +'use strict'; + +const core = require('web.core'); +const _t = core._t; + +return core.Class.extend({ + _getHelpMessage: (functionName, ...args) => `Generated by function tour utils ${functionName}(${args.join(', ')})`, + + addDebugHelp: helpMessage => step => { + if (typeof step.debugHelp === 'string') { + step.debugHelp = step.debugHelp + '\n' + helpMessage; + } else { + step.debugHelp = helpMessage; + } + return step; + }, + + editionEnterpriseModifier(step) { + step.edition = 'enterprise'; + return step; + }, + + mobileModifier(step) { + step.mobile = true; + return step; + }, + + showAppsMenuItem() { + return { + edition: 'community', + trigger: '.o_menu_apps a', + auto: true, + position: 'bottom', + }; + }, + + toggleHomeMenu() { + return { + edition: 'enterprise', + trigger: '.o_main_navbar .o_menu_toggle', + content: _t('Click on the <i>Home icon</i> to navigate across apps.'), + position: 'bottom', + }; + }, + + autoExpandMoreButtons(extra_trigger) { + return { + trigger: '.oe_button_box', + extra_trigger: extra_trigger, + auto: true, + run: actions => { + const $more = $('.oe_button_box .o_button_more'); + if ($more.length) { + actions.click($more); + } + }, + }; + }, + + goBackBreadcrumbsMobile(description, ...extraTrigger) { + return extraTrigger.map(element => ({ + mobile: true, + trigger: '.breadcrumb-item:not(.d-none):first', + extra_trigger: element, + content: description, + position: 'bottom', + debugHelp: this._getHelpMessage('goBackBreadcrumbsMobile', description, ...extraTrigger), + })); + }, + + goToAppSteps(dataMenuXmlid, description) { + return [ + this.showAppsMenuItem(), + { + trigger: `.o_app[data-menu-xmlid="${dataMenuXmlid}"]`, + content: description, + position: 'right', + edition: 'community', + }, + { + trigger: `.o_app[data-menu-xmlid="${dataMenuXmlid}"]`, + content: description, + position: 'bottom', + edition: 'enterprise', + }, + ].map(this.addDebugHelp(this._getHelpMessage('goToApp', dataMenuXmlid, description))); + }, + + openBuggerMenu(extraTrigger) { + return { + mobile: true, + trigger: '.o_mobile_menu_toggle', + extra_trigger: extraTrigger, + content: _t('Open bugger menu.'), + position: 'bottom', + debugHelp: this._getHelpMessage('openBuggerMenu', extraTrigger), + }; + }, + + statusbarButtonsSteps(innerTextButton, description, extraTrigger) { + return [ + { + mobile: true, + auto: true, + trigger: '.o_statusbar_buttons', + extra_trigger: extraTrigger, + run: actions => { + const $action = $('.o_statusbar_buttons .btn.dropdown-toggle:contains(Action)'); + if ($action.length) { + actions.click($action); + } + }, + }, { + trigger: `.o_statusbar_buttons button:enabled:contains('${innerTextButton}')`, + content: description, + position: 'bottom', + }, + ].map(this.addDebugHelp(this._getHelpMessage('statusbarButtonsSteps', innerTextButton, description, extraTrigger))); + }, + + simulateEnterKeyboardInSearchModal() { + return { + mobile: true, + trigger: '.o_searchview_input', + extra_trigger: '.modal:not(.o_inactive_modal) .dropdown-menu.o_searchview_autocomplete', + position: 'bottom', + run: action => { + const keyEventEnter = new KeyboardEvent('keydown', { + bubbles: true, + cancelable: true, + key: 'Enter', + code: 'Enter', + which: 13, + keyCode: 13, + }); + action.tip_widget.$anchor[0].dispatchEvent(keyEventEnter); + }, + debugHelp: this._getHelpMessage('simulateEnterKeyboardInSearchModal'), + }; + }, + + mobileKanbanSearchMany2X(modalTitle, valueSearched) { + return [ + { + mobile: true, + trigger: '.o_searchview_input', + extra_trigger: `.modal:not(.o_inactive_modal) .modal-title:contains('${modalTitle}')`, + position: 'bottom', + run: `text ${valueSearched}`, + }, + this.simulateEnterKeyboardInSearchModal(), + { + mobile: true, + trigger: `.o_kanban_record .o_kanban_record_title :contains('${valueSearched}')`, + position: 'bottom', + }, + ].map(this.addDebugHelp(this._getHelpMessage('mobileKanbanSearchMany2X', modalTitle, valueSearched))); + }, +}); +}); |
