[REF] web_editor: do some linting and ES6 adaptation before UI refactor
This commit aims at linting and converting to ES6 some parts of web_editor JS to avoid as much noise as possible in UI refactor in next commit. Part of https://github.com/odoo/odoo/pull/36068 task-1942370
This commit is contained in:
@@ -10,9 +10,9 @@ var Wysiwyg = require('web_editor.wysiwyg');
|
||||
var _t = core._t;
|
||||
|
||||
var globalSelector = {
|
||||
closest: function () { return $(); },
|
||||
all: function () { return $(); },
|
||||
is: function () { return false; },
|
||||
closest: () => $(),
|
||||
all: () => $(),
|
||||
is: () => false,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -29,14 +29,14 @@ var SnippetEditor = Widget.extend({
|
||||
},
|
||||
custom_events: {
|
||||
cover_update: '_onCoverUpdate',
|
||||
option_update: '_onOptionUpdate',
|
||||
'option_update': '_onOptionUpdate',
|
||||
},
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @param {Widget} parent
|
||||
* @param {Element} target
|
||||
* @param templateOptions
|
||||
* @param {Object} templateOptions
|
||||
* @param {jQuery} $editable
|
||||
* @param {Object} options
|
||||
*/
|
||||
@@ -404,14 +404,20 @@ var SnippetEditor = Widget.extend({
|
||||
self.$el.addClass('d-none');
|
||||
|
||||
var $selectorSiblings;
|
||||
for (var i = 0 ; i < self.selectorSiblings.length ; i++) {
|
||||
if (!$selectorSiblings) $selectorSiblings = self.selectorSiblings[i].all();
|
||||
else $selectorSiblings = $selectorSiblings.add(self.selectorSiblings[i].all());
|
||||
for (var i = 0; i < self.selectorSiblings.length; i++) {
|
||||
if (!$selectorSiblings) {
|
||||
$selectorSiblings = self.selectorSiblings[i].all();
|
||||
} else {
|
||||
$selectorSiblings = $selectorSiblings.add(self.selectorSiblings[i].all());
|
||||
}
|
||||
}
|
||||
var $selectorChildren;
|
||||
for (i = 0 ; i < self.selectorChildren.length ; i++) {
|
||||
if (!$selectorChildren) $selectorChildren = self.selectorChildren[i].all();
|
||||
else $selectorChildren = $selectorChildren.add(self.selectorChildren[i].all());
|
||||
for (i = 0; i < self.selectorChildren.length; i++) {
|
||||
if (!$selectorChildren) {
|
||||
$selectorChildren = self.selectorChildren[i].all();
|
||||
} else {
|
||||
$selectorChildren = $selectorChildren.add(self.selectorChildren[i].all());
|
||||
}
|
||||
}
|
||||
|
||||
this.trigger_up('go_to_parent', {$snippet: this.$target});
|
||||
@@ -572,14 +578,14 @@ var SnippetsMenu = Widget.extend({
|
||||
cacheSnippetTemplate: {},
|
||||
activeSnippets: [],
|
||||
custom_events: {
|
||||
activate_insertion_zones: '_onActivateInsertionZones',
|
||||
call_for_each_child_snippet: '_onCallForEachChildSnippet',
|
||||
deactivate_snippet: '_onDeactivateSnippet',
|
||||
drag_and_drop_stop: '_onDragAndDropStop',
|
||||
go_to_parent: '_onGoToParent',
|
||||
remove_snippet: '_onRemoveSnippet',
|
||||
snippet_removed: '_onSnippetRemoved',
|
||||
reload_snippet_dropzones: '_disableUndroppableSnippets',
|
||||
'activate_insertion_zones': '_onActivateInsertionZones',
|
||||
'call_for_each_child_snippet': '_onCallForEachChildSnippet',
|
||||
'deactivate_snippet': '_onDeactivateSnippet',
|
||||
'drag_and_drop_stop': '_onDragAndDropStop',
|
||||
'go_to_parent': '_onGoToParent',
|
||||
'remove_snippet': '_onRemoveSnippet',
|
||||
'snippet_removed': '_onSnippetRemoved',
|
||||
'reload_snippet_dropzones': '_disableUndroppableSnippets',
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -635,22 +641,22 @@ var SnippetsMenu = Widget.extend({
|
||||
}).insertAfter(this.$el);
|
||||
|
||||
// Active snippet editor on click in the page
|
||||
var lastClickedElement;
|
||||
this.$document.on('click.snippets_menu', '*', function (ev) {
|
||||
var lastElement;
|
||||
this.$document.on('click.snippets_menu', '*', ev => {
|
||||
var srcElement = ev.target || (ev.originalEvent && (ev.originalEvent.target || ev.originalEvent.originalTarget)) || ev.srcElement;
|
||||
if (lastClickedElement === srcElement || !srcElement) {
|
||||
if (!srcElement || lastElement === srcElement) {
|
||||
return;
|
||||
}
|
||||
lastClickedElement = srcElement;
|
||||
lastElement = srcElement;
|
||||
_.defer(function () {
|
||||
lastClickedElement = false;
|
||||
lastElement = false;
|
||||
});
|
||||
|
||||
var $target = $(srcElement);
|
||||
if ($target.closest('.oe_overlay, .note-popover').length) {
|
||||
return;
|
||||
}
|
||||
self._activateSnippet($target);
|
||||
this._activateSnippet($target);
|
||||
});
|
||||
|
||||
core.bus.on('deactivate_snippet', this, this._onDeactivateSnippet);
|
||||
@@ -804,7 +810,7 @@ var SnippetsMenu = Widget.extend({
|
||||
*/
|
||||
_activateInsertionZones: function ($selectorSiblings, $selectorChildren) {
|
||||
var self = this;
|
||||
var zone_template = $('<div/>', {
|
||||
var zoneTemplate = $('<div/>', {
|
||||
class: 'oe_drop_zone oe_insert',
|
||||
});
|
||||
|
||||
@@ -820,11 +826,11 @@ var SnippetsMenu = Widget.extend({
|
||||
var float = css.float || css.cssFloat;
|
||||
var parentDisplay = parentCss.display;
|
||||
var parentFlex = parentCss.flexDirection;
|
||||
var $drop = zone_template.clone();
|
||||
var $drop = zoneTemplate.clone();
|
||||
|
||||
$zone.append($drop);
|
||||
var node = $drop[0].previousSibling;
|
||||
var test = !!(node && ((!node.tagName && node.textContent.match(/\S/)) || node.tagName === 'BR'));
|
||||
var test = !!(node && ((!node.tagName && node.textContent.match(/\S/)) || node.tagName === 'BR'));
|
||||
if (test) {
|
||||
$drop.addClass('oe_vertical').css({
|
||||
height: parseInt(self.window.getComputedStyle($zone[0]).lineHeight),
|
||||
@@ -842,7 +848,7 @@ var SnippetsMenu = Widget.extend({
|
||||
|
||||
$zone.prepend($drop);
|
||||
node = $drop[0].nextSibling;
|
||||
test = !!(node && ((!node.tagName && node.textContent.match(/\S/)) || node.tagName === 'BR'));
|
||||
test = !!(node && ((!node.tagName && node.textContent.match(/\S/)) || node.tagName === 'BR'));
|
||||
if (test) {
|
||||
$drop.addClass('oe_vertical').css({
|
||||
height: parseInt(self.window.getComputedStyle($zone[0]).lineHeight),
|
||||
@@ -875,7 +881,7 @@ var SnippetsMenu = Widget.extend({
|
||||
var parentFlex = parentCss.flexDirection;
|
||||
|
||||
if ($zone.prev('.oe_drop_zone:visible').length === 0) {
|
||||
$drop = zone_template.clone();
|
||||
$drop = zoneTemplate.clone();
|
||||
if (float === 'left' || float === 'right' || (parentDisplay === 'flex' && parentFlex === 'row')) {
|
||||
$drop.css('float', float);
|
||||
if (!isFullWidth($zone)) {
|
||||
@@ -885,7 +891,7 @@ var SnippetsMenu = Widget.extend({
|
||||
$zone.before($drop);
|
||||
}
|
||||
if ($zone.next('.oe_drop_zone:visible').length === 0) {
|
||||
$drop = zone_template.clone();
|
||||
$drop = zoneTemplate.clone();
|
||||
if (float === 'left' || float === 'right' || (parentDisplay === 'flex' && parentFlex === 'row')) {
|
||||
$drop.css('float', float);
|
||||
if (!isFullWidth($zone)) {
|
||||
@@ -918,15 +924,15 @@ var SnippetsMenu = Widget.extend({
|
||||
zone.remove();
|
||||
return;
|
||||
}
|
||||
var float_prev = prev.css('float') || 'none';
|
||||
var float_next = next.css('float') || 'none';
|
||||
var disp_prev = prev.css('display') || null;
|
||||
var disp_next = next.css('display') || null;
|
||||
if ((float_prev === 'left' || float_prev === 'right')
|
||||
&& (float_next === 'left' || float_next === 'right')) {
|
||||
var floatPrev = prev.css('float') || 'none';
|
||||
var floatNext = next.css('float') || 'none';
|
||||
var dispPrev = prev.css('display') || null;
|
||||
var dispNext = next.css('display') || null;
|
||||
if ((floatPrev === 'left' || floatPrev === 'right')
|
||||
&& (floatNext === 'left' || floatNext === 'right')) {
|
||||
zone.remove();
|
||||
} else if (disp_prev !== null && disp_next !== null
|
||||
&& disp_prev.indexOf('inline') >= 0 && disp_next.indexOf('inline') >= 0) {
|
||||
} else if (dispPrev !== null && dispNext !== null
|
||||
&& dispPrev.indexOf('inline') >= 0 && dispNext.indexOf('inline') >= 0) {
|
||||
zone.remove();
|
||||
}
|
||||
});
|
||||
@@ -1040,7 +1046,7 @@ var SnippetsMenu = Widget.extend({
|
||||
* considered (@see noCheck), this is true if the DOM elements'
|
||||
* parent must also be in an editable environment to be considered.
|
||||
*/
|
||||
_computeSelectorFunctions : function (include, exclude, target, noCheck, isChildren) {
|
||||
_computeSelectorFunctions: function (include, exclude, target, noCheck, isChildren) {
|
||||
var self = this;
|
||||
|
||||
// Convert the selector for elements to include into a list
|
||||
@@ -1064,7 +1070,7 @@ var SnippetsMenu = Widget.extend({
|
||||
}
|
||||
|
||||
// (Re)join the subselectors
|
||||
var selector =_.map(selectorList, function (s) {
|
||||
var selector = _.map(selectorList, function (s) {
|
||||
return s + selectorConditions;
|
||||
}).join(', ');
|
||||
|
||||
@@ -1087,7 +1093,7 @@ var SnippetsMenu = Widget.extend({
|
||||
return $from.closest(selector, parentNode).filter(function () {
|
||||
var node = this;
|
||||
while (node.parentNode) {
|
||||
if (parents.indexOf(node)!==-1) {
|
||||
if (parents.indexOf(node) !== -1) {
|
||||
return true;
|
||||
}
|
||||
node = node.parentNode;
|
||||
@@ -1131,9 +1137,9 @@ var SnippetsMenu = Widget.extend({
|
||||
var exclude = $style.data('exclude') || '';
|
||||
var target = $style.data('target');
|
||||
var noCheck = $style.data('no-check');
|
||||
var option_id = $style.data('js');
|
||||
var optionID = $style.data('js');
|
||||
var option = {
|
||||
'option': option_id,
|
||||
'option': optionID,
|
||||
'base_selector': selector,
|
||||
'base_exclude': exclude,
|
||||
'base_target': target,
|
||||
@@ -1151,7 +1157,7 @@ var SnippetsMenu = Widget.extend({
|
||||
globalSelector.closest = function ($from) {
|
||||
var $temp;
|
||||
var $target;
|
||||
for (var i = 0, len = selectors.length ; i < len ; i++) {
|
||||
for (var i = 0, len = selectors.length; i < len; i++) {
|
||||
$temp = selectors[i].closest($from, $target && $target[0]);
|
||||
if ($temp.length) {
|
||||
$target = $temp;
|
||||
@@ -1161,13 +1167,13 @@ var SnippetsMenu = Widget.extend({
|
||||
};
|
||||
globalSelector.all = function ($from) {
|
||||
var $target = $();
|
||||
for (var i = 0, len = selectors.length ; i < len ; i++) {
|
||||
for (var i = 0, len = selectors.length; i < len; i++) {
|
||||
$target = $target.add(selectors[i].all($from));
|
||||
}
|
||||
return $target;
|
||||
};
|
||||
globalSelector.is = function ($from) {
|
||||
for (var i = 0, len = selectors.length ; i < len ; i++) {
|
||||
for (var i = 0, len = selectors.length; i < len; i++) {
|
||||
if (selectors[i].is($from)) {
|
||||
return true;
|
||||
}
|
||||
@@ -1197,9 +1203,9 @@ var SnippetsMenu = Widget.extend({
|
||||
return; // Compatibility with elements which do not use 't-snippet'
|
||||
}
|
||||
var $thumbnail = $(_.str.sprintf(
|
||||
'<div class="oe_snippet_thumbnail">'+
|
||||
'<div class="oe_snippet_thumbnail_img" style="background-image: url(%s);"/>'+
|
||||
'<span class="oe_snippet_thumbnail_title">%s</span>'+
|
||||
'<div class="oe_snippet_thumbnail">' +
|
||||
'<div class="oe_snippet_thumbnail_img" style="background-image: url(%s);"/>' +
|
||||
'<span class="oe_snippet_thumbnail_title">%s</span>' +
|
||||
'</div>',
|
||||
$snippet.find('[data-oe-thumbnail]').data('oeThumbnail'),
|
||||
name
|
||||
@@ -1231,7 +1237,7 @@ var SnippetsMenu = Widget.extend({
|
||||
|
||||
// Remove branding from template
|
||||
_.each($html.find('[data-oe-model], [data-oe-type]'), function (el) {
|
||||
for (var k = 0 ; k < el.attributes.length ; k++) {
|
||||
for (var k = 0; k < el.attributes.length; k++) {
|
||||
if (el.attributes[k].name.indexOf('data-oe-') === 0) {
|
||||
$(el).removeAttr(el.attributes[k].name);
|
||||
k--;
|
||||
@@ -1296,11 +1302,13 @@ var SnippetsMenu = Widget.extend({
|
||||
var cache = {};
|
||||
this.$snippets.each(function () {
|
||||
var $snippet = $(this);
|
||||
var $snippet_body = $snippet.find('.oe_snippet_body');
|
||||
var $snippetBody = $snippet.find('.oe_snippet_body');
|
||||
|
||||
var check = false;
|
||||
_.each(self.templateOptions, function (option, k) {
|
||||
if (check || !($snippet_body.is(option.base_selector) && !$snippet_body.is(option.base_exclude))) return;
|
||||
if (check || !($snippetBody.is(option.base_selector) && !$snippetBody.is(option.base_exclude))) {
|
||||
return;
|
||||
}
|
||||
|
||||
cache[k] = cache[k] || {
|
||||
'drop-near': option['drop-near'] ? option['drop-near'].all().length : 0,
|
||||
@@ -1321,8 +1329,8 @@ var SnippetsMenu = Widget.extend({
|
||||
_makeSnippetDraggable: function ($snippets) {
|
||||
var self = this;
|
||||
var $tumb = $snippets.find('.oe_snippet_thumbnail_img:first');
|
||||
var left = $tumb.outerWidth()/2;
|
||||
var top = $tumb.outerHeight()/2;
|
||||
var left = $tumb.outerWidth() / 2;
|
||||
var top = $tumb.outerHeight() / 2;
|
||||
var $toInsert, dropped, $snippet;
|
||||
|
||||
$snippets.draggable({
|
||||
@@ -1339,12 +1347,12 @@ var SnippetsMenu = Widget.extend({
|
||||
start: function () {
|
||||
dropped = false;
|
||||
$snippet = $(this);
|
||||
var $base_body = $snippet.find('.oe_snippet_body');
|
||||
var $baseBody = $snippet.find('.oe_snippet_body');
|
||||
var $selectorSiblings = $();
|
||||
var $selectorChildren = $();
|
||||
var temp = self.templateOptions;
|
||||
for (var k in temp) {
|
||||
if ($base_body.is(temp[k].base_selector) && !$base_body.is(temp[k].base_exclude)) {
|
||||
if ($baseBody.is(temp[k].base_selector) && !$baseBody.is(temp[k].base_exclude)) {
|
||||
if (temp[k]['drop-near']) {
|
||||
$selectorSiblings = $selectorSiblings.add(temp[k]['drop-near'].all());
|
||||
}
|
||||
@@ -1354,7 +1362,7 @@ var SnippetsMenu = Widget.extend({
|
||||
}
|
||||
}
|
||||
|
||||
$toInsert = $base_body.clone().data('name', $base_body.data('name'));
|
||||
$toInsert = $baseBody.clone().data('name', $baseBody.data('name'));
|
||||
|
||||
if (!$selectorSiblings.length && !$selectorChildren.length) {
|
||||
console.warn($snippet.find('.oe_snippet_thumbnail_title').text() + " have not insert action: data-drop-near or data-drop-in");
|
||||
|
||||
@@ -65,7 +65,7 @@ var SnippetOption = Widget.extend({
|
||||
*
|
||||
* @abstract
|
||||
*/
|
||||
onFocus : function () {},
|
||||
onFocus: function () {},
|
||||
/**
|
||||
* Called when the parent edition overlay is covering the associated snippet
|
||||
* for the first time, when it is a new snippet dropped from the d&d snippet
|
||||
@@ -80,7 +80,7 @@ var SnippetOption = Widget.extend({
|
||||
*
|
||||
* @abstract
|
||||
*/
|
||||
onBlur : function () {},
|
||||
onBlur: function () {},
|
||||
/**
|
||||
* Called when the associated snippet is the result of the cloning of
|
||||
* another snippet (so `this.$target` is a cloned element).
|
||||
@@ -257,16 +257,16 @@ var SnippetOption = Widget.extend({
|
||||
} while (this.$el.parent().has(el).length);
|
||||
|
||||
// Call the found method in the right order (parents -> child)
|
||||
_.each(methods.reverse(), function (data) {
|
||||
methods.reverse().forEach(data => {
|
||||
var $el = $(data[0]);
|
||||
var methods = data[1];
|
||||
|
||||
_.each(methods, function (value, methodName) {
|
||||
if (self[methodName]) {
|
||||
Object.keys(methods).forEach(methodName => {
|
||||
if (this[methodName]) {
|
||||
if (previewMode === true) {
|
||||
self.__methodNames.push(methodName);
|
||||
this.__methodNames.push(methodName);
|
||||
}
|
||||
self[methodName](previewMode, value, $el);
|
||||
this[methodName](previewMode, methods[methodName], $el);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -463,22 +463,22 @@ registry.sizing = SnippetOption.extend({
|
||||
$body.addClass(cursor);
|
||||
|
||||
var xy = ev['page' + XY];
|
||||
var body_mousemove = function (ev) {
|
||||
var bodyMouseMove = function (ev) {
|
||||
ev.preventDefault();
|
||||
|
||||
var dd = ev['page' + XY] - xy + resize[1][begin];
|
||||
var next = current + (current+1 === resize[1].length ? 0 : 1);
|
||||
var prev = current ? (current-1) : 0;
|
||||
var next = current + (current + 1 === resize[1].length ? 0 : 1);
|
||||
var prev = current ? (current - 1) : 0;
|
||||
|
||||
var change = false;
|
||||
if (dd > (2*resize[1][next] + resize[1][current])/3) {
|
||||
self.$target.attr('class', (self.$target.attr('class')||'').replace(regClass, ''));
|
||||
if (dd > (2 * resize[1][next] + resize[1][current]) / 3) {
|
||||
self.$target.attr('class', (self.$target.attr('class') || '').replace(regClass, ''));
|
||||
self.$target.addClass(resize[0][next]);
|
||||
current = next;
|
||||
change = true;
|
||||
}
|
||||
if (prev !== current && dd < (2*resize[1][prev] + resize[1][current])/3) {
|
||||
self.$target.attr('class', (self.$target.attr('class')||'').replace(regClass, ''));
|
||||
if (prev !== current && dd < (2 * resize[1][prev] + resize[1][current]) / 3) {
|
||||
self.$target.attr('class', (self.$target.attr('class') || '').replace(regClass, ''));
|
||||
self.$target.addClass(resize[0][prev]);
|
||||
current = prev;
|
||||
change = true;
|
||||
@@ -490,9 +490,9 @@ registry.sizing = SnippetOption.extend({
|
||||
$handle.addClass('o_active');
|
||||
}
|
||||
};
|
||||
var body_mouseup = function () {
|
||||
$body.off('mousemove', body_mousemove);
|
||||
$body.off('mouseup', body_mouseup);
|
||||
var bodyMouseUp = function () {
|
||||
$body.off('mousemove', bodyMouseMove);
|
||||
$body.off('mouseup', bodyMouseUp);
|
||||
$body.removeClass(cursor);
|
||||
$handle.removeClass('o_active');
|
||||
|
||||
@@ -512,8 +512,8 @@ registry.sizing = SnippetOption.extend({
|
||||
});
|
||||
}, 0);
|
||||
};
|
||||
$body.on('mousemove', body_mousemove);
|
||||
$body.on('mouseup', body_mouseup);
|
||||
$body.on('mousemove', bodyMouseMove);
|
||||
$body.on('mouseup', bodyMouseUp);
|
||||
});
|
||||
|
||||
return def;
|
||||
@@ -607,7 +607,7 @@ registry.sizing = SnippetOption.extend({
|
||||
/**
|
||||
* Handles the edition of padding-top and padding-bottom.
|
||||
*/
|
||||
registry.sizing_y = registry.sizing.extend({
|
||||
registry['sizing_y'] = registry.sizing.extend({
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Private
|
||||
@@ -629,13 +629,13 @@ registry.sizing_y = registry.sizing.extend({
|
||||
}
|
||||
|
||||
var grid = [];
|
||||
for (var i = 0 ; i <= 256/8 ; i++) {
|
||||
for (var i = 0; i <= (256 / 8); i++) {
|
||||
grid.push(i * 8);
|
||||
}
|
||||
grid.splice(1, 0, 4);
|
||||
this.grid = {
|
||||
n: [_.map(grid, function (v) { return nClass + v; }), grid, nProp],
|
||||
s: [_.map(grid, function (v) { return sClass + v; }), grid, sProp],
|
||||
n: [grid.map(v => nClass + v), grid, nProp],
|
||||
s: [grid.map(v => sClass + v), grid, sProp],
|
||||
};
|
||||
return this.grid;
|
||||
},
|
||||
@@ -851,10 +851,10 @@ registry.background = SnippetOption.extend({
|
||||
|
||||
var $editable = this.$target.closest('.o_editable');
|
||||
var _editor = new weWidgets.MediaDialog(this, {
|
||||
onlyImages: true,
|
||||
firstFilters: ['background'],
|
||||
res_model: $editable.data('oe-model'),
|
||||
res_id: $editable.data('oe-id'),
|
||||
'onlyImages': true,
|
||||
'firstFilters': ['background'],
|
||||
'res_model': $editable.data('oe-model'),
|
||||
'res_id': $editable.data('oe-id'),
|
||||
}, $image[0]).open();
|
||||
|
||||
_editor.on('save', this, function () {
|
||||
@@ -881,7 +881,9 @@ registry.background = SnippetOption.extend({
|
||||
this.$target.off('.background-option')
|
||||
.on('background-color-event.background-option', (function (e, previewMode) {
|
||||
e.stopPropagation();
|
||||
if (e.currentTarget !== e.target) return;
|
||||
if (e.currentTarget !== e.target) {
|
||||
return;
|
||||
}
|
||||
if (previewMode === false) {
|
||||
this.__customImageSrc = undefined;
|
||||
}
|
||||
@@ -952,7 +954,7 @@ registry.background = SnippetOption.extend({
|
||||
/**
|
||||
* Handles the edition of snippet's background image position.
|
||||
*/
|
||||
registry.background_position = SnippetOption.extend({
|
||||
registry['background_position'] = SnippetOption.extend({
|
||||
xmlDependencies: ['/web_editor/static/src/xml/editor.xml'],
|
||||
|
||||
/**
|
||||
@@ -984,10 +986,10 @@ registry.background_position = SnippetOption.extend({
|
||||
backgroundPosition: function (previewMode, value, $opt) {
|
||||
var self = this;
|
||||
|
||||
this.previous_state = [this.$target.attr('class'), this.$target.css('background-size'), this.$target.css('background-position')];
|
||||
this.previousState = [this.$target.attr('class'), this.$target.css('background-size'), this.$target.css('background-position')];
|
||||
|
||||
this.bg_pos = self.$target.css('background-position').split(' ');
|
||||
this.bg_siz = self.$target.css('background-size').split(' ');
|
||||
this.bgPos = self.$target.css('background-position').split(' ');
|
||||
this.bgSize = self.$target.css('background-size').split(' ');
|
||||
|
||||
this.modal = new Dialog(null, {
|
||||
title: _t("Background Image Sizing"),
|
||||
@@ -1000,7 +1002,7 @@ registry.background_position = SnippetOption.extend({
|
||||
|
||||
this.modal.opened().then(function () {
|
||||
// Fetch data form $target
|
||||
var value = ((self.$target.hasClass('o_bg_img_opt_contain'))? 'contain' : ((self.$target.hasClass('o_bg_img_opt_custom'))? 'custom' : 'cover'));
|
||||
var value = ((self.$target.hasClass('o_bg_img_opt_contain')) ? 'contain' : ((self.$target.hasClass('o_bg_img_opt_custom')) ? 'custom' : 'cover'));
|
||||
self.modal.$('> label > input[value=' + value + ']').prop('checked', true);
|
||||
|
||||
if (self.$target.hasClass('o_bg_img_opt_repeat')) {
|
||||
@@ -1012,26 +1014,26 @@ registry.background_position = SnippetOption.extend({
|
||||
self.modal.$('#o_bg_img_opt_custom_repeat').val('o_bg_img_opt_repeat_y');
|
||||
}
|
||||
|
||||
if (self.bg_pos.length > 1) {
|
||||
self.bg_pos = {
|
||||
x: self.bg_pos[0],
|
||||
y: self.bg_pos[1],
|
||||
if (self.bgPos.length > 1) {
|
||||
self.bgPos = {
|
||||
x: self.bgPos[0],
|
||||
y: self.bgPos[1],
|
||||
};
|
||||
self.modal.$('#o_bg_img_opt_custom_pos_x').val(self.bg_pos.x.replace('%', ''));
|
||||
self.modal.$('#o_bg_img_opt_custom_pos_y').val(self.bg_pos.y.replace('%', ''));
|
||||
self.modal.$('#o_bg_img_opt_custom_pos_x').val(self.bgPos.x.replace('%', ''));
|
||||
self.modal.$('#o_bg_img_opt_custom_pos_y').val(self.bgPos.y.replace('%', ''));
|
||||
}
|
||||
if (self.bg_siz.length > 1) {
|
||||
self.modal.$('#o_bg_img_opt_custom_size_x').val(self.bg_siz[0].replace('%', ''));
|
||||
self.modal.$('#o_bg_img_opt_custom_size_y').val(self.bg_siz[1].replace('%', ''));
|
||||
if (self.bgSize.length > 1) {
|
||||
self.modal.$('#o_bg_img_opt_custom_size_x').val(self.bgSize[0].replace('%', ''));
|
||||
self.modal.$('#o_bg_img_opt_custom_size_y').val(self.bgSize[1].replace('%', ''));
|
||||
}
|
||||
|
||||
// Focus Point
|
||||
self.$focus = self.modal.$('.o_focus_point');
|
||||
self.$focus = self.modal.$('.o_focus_point');
|
||||
self._updatePosInformation();
|
||||
|
||||
var img_url = /\(['"]?([^'"]+)['"]?\)/g.exec(self.$target.css('background-image'));
|
||||
img_url = (img_url && img_url[1]) || '';
|
||||
var $img = $('<img/>', {class: 'img img-fluid', src: img_url});
|
||||
var imgURL = /\(['"]?([^'"]+)['"]?\)/g.exec(self.$target.css('background-image'));
|
||||
imgURL = (imgURL && imgURL[1]) || '';
|
||||
var $img = $('<img/>', {class: 'img img-fluid', src: imgURL});
|
||||
$img.on('load', function () {
|
||||
self._bindImageEvents($img);
|
||||
});
|
||||
@@ -1085,9 +1087,9 @@ registry.background_position = SnippetOption.extend({
|
||||
function _update(e) {
|
||||
var posX = e.pageX - $(e.target).offset().left;
|
||||
var posY = e.pageY - $(e.target).offset().top;
|
||||
self.bg_pos = {
|
||||
x: clipValue(posX/$img.width()*100).toFixed(2) + '%',
|
||||
y: clipValue(posY/$img.height()*100).toFixed(2) + '%',
|
||||
self.bgPos = {
|
||||
x: clipValue(posX / $img.width() * 100).toFixed(2) + '%',
|
||||
y: clipValue(posY / $img.height() * 100).toFixed(2) + '%',
|
||||
};
|
||||
self._updatePosInformation();
|
||||
self._saveChanges();
|
||||
@@ -1116,10 +1118,10 @@ registry.background_position = SnippetOption.extend({
|
||||
*/
|
||||
_discardChanges: function () {
|
||||
this._clean();
|
||||
if (this.previous_state) {
|
||||
this.$target.addClass(this.previous_state[0]).css({
|
||||
'background-size': this.previous_state[1],
|
||||
'background-position': this.previous_state[2],
|
||||
if (this.previousState) {
|
||||
this.$target.addClass(this.previousState[0]).css({
|
||||
'background-size': this.previousState[1],
|
||||
'background-position': this.previousState[2],
|
||||
});
|
||||
}
|
||||
},
|
||||
@@ -1129,11 +1131,11 @@ registry.background_position = SnippetOption.extend({
|
||||
* @private
|
||||
*/
|
||||
_updatePosInformation: function () {
|
||||
this.modal.$('.o_bg_img_opt_ui_info .o_x').text(this.bg_pos.x);
|
||||
this.modal.$('.o_bg_img_opt_ui_info .o_y').text(this.bg_pos.y);
|
||||
this.modal.$('.o_bg_img_opt_ui_info .o_x').text(this.bgPos.x);
|
||||
this.modal.$('.o_bg_img_opt_ui_info .o_y').text(this.bgPos.y);
|
||||
this.$focus.css({
|
||||
left: this.bg_pos.x,
|
||||
top: this.bg_pos.y,
|
||||
left: this.bgPos.x,
|
||||
top: this.bgPos.y,
|
||||
});
|
||||
},
|
||||
/**
|
||||
@@ -1144,10 +1146,10 @@ registry.background_position = SnippetOption.extend({
|
||||
_saveChanges: function () {
|
||||
this._clean();
|
||||
|
||||
var bg_img_size = this.modal.$('> :not(label):not(.o_hidden)').data('value') || 'cover';
|
||||
switch (bg_img_size) {
|
||||
var bgImgSize = this.modal.$('> :not(label):not(.o_hidden)').data('value') || 'cover';
|
||||
switch (bgImgSize) {
|
||||
case 'cover':
|
||||
this.$target.css('background-position', this.bg_pos.x + ' ' + this.bg_pos.y);
|
||||
this.$target.css('background-position', this.bgPos.x + ' ' + this.bgPos.y);
|
||||
break;
|
||||
case 'contain':
|
||||
this.$target.addClass('o_bg_img_opt_contain');
|
||||
@@ -1161,8 +1163,8 @@ registry.background_position = SnippetOption.extend({
|
||||
var posY = this.modal.$('#o_bg_img_opt_custom_pos_y').val();
|
||||
this.$target.addClass(this.modal.$('#o_bg_img_opt_custom_repeat').val())
|
||||
.css({
|
||||
'background-size': ((sizeX)? sizeX + '%' : 'auto') + ' ' + ((sizeY)? sizeY + '%' : 'auto'),
|
||||
'background-position': ((posX)? posX + '%' : 'auto') + ' ' + ((posY)? posY + '%' : 'auto'),
|
||||
'background-size': (sizeX ? sizeX + '%' : 'auto') + ' ' + (sizeY ? sizeY + '%' : 'auto'),
|
||||
'background-position': (posX ? posX + '%' : 'auto') + ' ' + (posY ? posY + '%' : 'auto'),
|
||||
});
|
||||
break;
|
||||
}
|
||||
@@ -1288,7 +1290,7 @@ registry.many2one = SnippetOption.extend({
|
||||
},
|
||||
}).then(function (result) {
|
||||
self.$search.siblings().remove();
|
||||
self.$search.after(qweb.render('web_editor.many2one.search',{contacts:result}));
|
||||
self.$search.after(qweb.render('web_editor.many2one.search', {contacts: result}));
|
||||
});
|
||||
},
|
||||
/**
|
||||
@@ -1308,10 +1310,10 @@ registry.many2one = SnippetOption.extend({
|
||||
|
||||
if (self.$target.data('oe-type') === 'contact') {
|
||||
$('[data-oe-contact-options]')
|
||||
.filter('[data-oe-model="'+self.$target.data('oe-model')+'"]')
|
||||
.filter('[data-oe-id="'+self.$target.data('oe-id')+'"]')
|
||||
.filter('[data-oe-field="'+self.$target.data('oe-field')+'"]')
|
||||
.filter('[data-oe-contact-options!="'+self.$target.data('oe-contact-options')+'"]')
|
||||
.filter('[data-oe-model="' + self.$target.data('oe-model') + '"]')
|
||||
.filter('[data-oe-id="' + self.$target.data('oe-id') + '"]')
|
||||
.filter('[data-oe-field="' + self.$target.data('oe-field') + '"]')
|
||||
.filter('[data-oe-contact-options!="' + self.$target.data('oe-contact-options') + '"]')
|
||||
.add(self.$target)
|
||||
.attr('data-oe-many2one-id', self.ID).data('oe-many2one-id', self.ID)
|
||||
.each(function () {
|
||||
|
||||
Reference in New Issue
Block a user