summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorChristophe Matthieu <chm@odoo.com>2016-08-09 16:52:37 +0200
committerqsm-odoo <qsm@odoo.com>2016-08-26 13:39:55 +0200
commitec85e6ecd3fa10394ef5251b342f150e0a45653e (patch)
tree51c17b346ad25fc100368d50303f77b8e5870261 /addons
parenta12080384339ae1f59b274a5e730373a41031734 (diff)
[IMP] web_tour: add keydown action helper
(used by web_editor tours)
Diffstat (limited to 'addons')
-rw-r--r--addons/web_tour/static/src/js/tour_manager.js20
1 files changed, 19 insertions, 1 deletions
diff --git a/addons/web_tour/static/src/js/tour_manager.js b/addons/web_tour/static/src/js/tour_manager.js
index e9b4400b434..73c988ab1b1 100644
--- a/addons/web_tour/static/src/js/tour_manager.js
+++ b/addons/web_tour/static/src/js/tour_manager.js
@@ -52,6 +52,9 @@ var RunningTourActionHelper = core.Class.extend({
drag_and_drop: function (to, element) {
this._drag_and_drop(this._get_action_values(element), to);
},
+ keydown: function (keyCodes, element) {
+ this._keydown(this._get_action_values(element), keyCodes.split(/[,\s]+/));
+ },
auto: function (element) {
var values = this._get_action_values(element);
if (values.consume_event === "input") {
@@ -108,6 +111,21 @@ var RunningTourActionHelper = core.Class.extend({
values.$element.trigger($.Event("mousemove", {which: 1, pageX: toCenter.left, pageY: toCenter.top}));
values.$element.trigger($.Event("mouseup", {which: 1, pageX: toCenter.left, pageY: toCenter.top}));
},
+ _keydown: function (values, keyCodes) {
+ while (keyCodes.length) {
+ var keyCode = +keyCodes.shift();
+ values.$element.trigger({type: "keydown", keyCode: keyCode});
+ if ((keyCode > 47 && keyCode < 58) // number keys
+ || keyCode === 32 // spacebar
+ || (keyCode > 64 && keyCode < 91) // letter keys
+ || (keyCode > 95 && keyCode < 112) // numpad keys
+ || (keyCode > 185 && keyCode < 193) // ;=,-./` (in order)
+ || (keyCode > 218 && keyCode < 223)) { // [\]' (in order))
+ document.execCommand("insertText", 0, String.fromCharCode(keyCode));
+ }
+ values.$element.trigger({type: "keyup", keyCode: keyCode});
+ }
+ },
});
return core.Class.extend({
@@ -367,7 +385,7 @@ return core.Class.extend({
if (typeof tip.run === "function") {
tip.run.call(tip.widget, action_helper);
} else if (tip.run !== undefined) {
- var m = tip.run.match(/^(click|text|drag_and_drop) *(?:\(? *["']?(.+)["']? *\)?)?$/);
+ var m = tip.run.match(/^([a-zA-Z0-9_]+) *(?:\(? *(.+?) *\)?)?$/);
action_helper[m[1]](m[2]);
} else {
action_helper.auto();