From f7cfef83b48f15d3c34f1506ccc142358e51f099 Mon Sep 17 00:00:00 2001 From: Christophe Matthieu <chm@odoo.com> Date: Fri, 2 Sep 2016 12:15:35 +0100 Subject: [PATCH] [IMP] web, web_tour: move jquery selector feature addons from tour to web_tour --- addons/web/static/src/js/tour.js | 48 +++---------------- addons/web_tour/static/src/js/tour_manager.js | 28 +++++++++++ 2 files changed, 35 insertions(+), 41 deletions(-) diff --git a/addons/web/static/src/js/tour.js b/addons/web/static/src/js/tour.js index 7410c8fe96cb..2cde50a7f0bb 100644 --- a/addons/web/static/src/js/tour.js +++ b/addons/web/static/src/js/tour.js @@ -9,40 +9,6 @@ var qweb = core.qweb; ///////////////////////////////////////////////// - -/* jQuery selector to match exact text inside an element - * :containsExact() - case insensitive - * :containsExactCase() - case sensitive - * :containsRegex() - set by user ( use: $(el).find(':containsRegex(/(red|blue|yellow)/gi)') ) - */ -$.extend($.expr[':'],{ - containsExact: function(element, index, matches){ - return $.trim(element.innerHTML.toLowerCase()) === matches[3].toLowerCase(); - }, - containsExactCase: function(element, index, matches){ - return $.trim(element.innerHTML) === matches[3]; - }, - // Note all escaped characters need to be double escaped - // inside of the containsRegex, so "\(" needs to be "\\(" - containsRegex: function(element, index, matches){ - var regreg = /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})$/, - reg = regreg.exec(matches[3]); - return reg ? new RegExp(reg[1], reg[2]).test($.trim(element.innerHTML)) : false; - }, - propChecked: function(element, index, matches) { - return $(element).prop("checked") === true; - }, - propSelected: function(element, index, matches) { - return $(element).prop("selected") === true; - }, - propValue: function(element, index, matches) { - return $(element).prop("value") === matches[3]; - }, - propValueContains: function(element, index, matches) { - return $(element).prop("value") && $(element).prop("value").indexOf(matches[3]) !== -1; - }, -}); - $.fn.getHandlers = function () { var results = []; @@ -166,7 +132,7 @@ var Tour = { if (!step.waitFor && index > 0 && tour.steps[index-1].snippet) { step.waitFor = '.oe_overlay_options .oe_options:visible'; } - + var snippet = step.element && step.element.match(/#oe_snippets (.*) \.oe_snippet_thumbnail/); if (snippet) { step.snippet = snippet[1]; @@ -521,7 +487,7 @@ var Tour = { return; } else if(next.onerror) { - + Tour.logError(next, "error: Can't reach the next step (call next step onerror)", false); var id = next.onerror(); if (id) { @@ -533,7 +499,7 @@ var Tour = { } } - + Tour.error(next, "Can't reach the next step"); return; @@ -577,7 +543,7 @@ var Tour = { if (state.mode === "test" && state.number > 5) { return Tour.error(next, "Cycling. Can't reach the next step"); } - + Tour.saveState(state.id, state.mode, step.id, state.number, 0, state.log); if (state.number === 1) { @@ -653,9 +619,9 @@ var Tour = { if (step.snippet) { Tour.autoDragAndDropSnippet($element); - + } else if (step.keydown) { - + if (!(step.keydown instanceof Array)) { step.keydown = [step.keydown]; } @@ -712,7 +678,7 @@ var Tour = { $element.trigger($.Event("keyup", { srcElement: $element[0] })); $element.trigger($.Event("change", { srcElement: $element[0] })); }, self.defaultDelay<<1); - + } } Tour.testtimer = setTimeout(autoStep, 0); diff --git a/addons/web_tour/static/src/js/tour_manager.js b/addons/web_tour/static/src/js/tour_manager.js index 2ca7d2bfc2da..a8f748c2a985 100644 --- a/addons/web_tour/static/src/js/tour_manager.js +++ b/addons/web_tour/static/src/js/tour_manager.js @@ -11,6 +11,34 @@ var _t = core._t; var RUNNING_TOUR_TIMEOUT = 10000; +$.extend($.expr[':'],{ + containsExact: function(element, index, matches){ + return $.trim(element.innerHTML.toLowerCase()) === matches[3].toLowerCase(); + }, + containsExactCase: function(element, index, matches){ + return $.trim(element.innerHTML) === matches[3]; + }, + // Note all escaped characters need to be double escaped + // inside of the containsRegex, so "\(" needs to be "\\(" + containsRegex: function(element, index, matches){ + var regreg = /^\/((?:\\\/|[^\/])+)\/([mig]{0,3})$/, + reg = regreg.exec(matches[3]); + return reg ? new RegExp(reg[1], reg[2]).test($.trim(element.innerHTML)) : false; + }, + propChecked: function(element, index, matches) { + return $(element).prop("checked") === true; + }, + propSelected: function(element, index, matches) { + return $(element).prop("selected") === true; + }, + propValue: function(element, index, matches) { + return $(element).prop("value") === matches[3]; + }, + propValueContains: function(element, index, matches) { + return $(element).prop("value") && $(element).prop("value").indexOf(matches[3]) !== -1; + }, +}); + function get_step_key(name) { return 'tour_' + name + '_step'; } -- GitLab