summaryrefslogtreecommitdiff
path: root/addons/web/static
diff options
context:
space:
mode:
Diffstat (limited to 'addons/web/static')
-rw-r--r--addons/web/static/img/preview_background.pngbin0 -> 10185 bytes
-rw-r--r--addons/web/static/img/preview_boxed.pngbin0 -> 5525 bytes
-rw-r--r--addons/web/static/img/preview_clean.pngbin0 -> 5257 bytes
-rw-r--r--addons/web/static/img/preview_standard.pngbin0 -> 5686 bytes
-rw-r--r--addons/web/static/pdf/preview_background.pdfbin0 -> 197777 bytes
-rw-r--r--addons/web/static/pdf/preview_boxed.pdfbin0 -> 42109 bytes
-rw-r--r--addons/web/static/pdf/preview_clean.pdfbin0 -> 35495 bytes
-rw-r--r--addons/web/static/pdf/preview_standard.pdfbin0 -> 27399 bytes
-rw-r--r--addons/web/static/src/js/fields/basic_fields.js51
-rw-r--r--addons/web/static/src/js/fields/field_registry.js4
-rw-r--r--addons/web/static/src/js/fields/special_fields.js67
-rw-r--r--addons/web/static/src/scss/form_view.scss3
-rw-r--r--addons/web/static/tests/fields/basic_fields_tests.js41
-rw-r--r--addons/web/static/tests/fields/special_fields.js47
14 files changed, 118 insertions, 95 deletions
diff --git a/addons/web/static/img/preview_background.png b/addons/web/static/img/preview_background.png
new file mode 100644
index 00000000000..cab3eae0dd0
--- /dev/null
+++ b/addons/web/static/img/preview_background.png
Binary files differ
diff --git a/addons/web/static/img/preview_boxed.png b/addons/web/static/img/preview_boxed.png
new file mode 100644
index 00000000000..963e0b7f62b
--- /dev/null
+++ b/addons/web/static/img/preview_boxed.png
Binary files differ
diff --git a/addons/web/static/img/preview_clean.png b/addons/web/static/img/preview_clean.png
new file mode 100644
index 00000000000..0318421b016
--- /dev/null
+++ b/addons/web/static/img/preview_clean.png
Binary files differ
diff --git a/addons/web/static/img/preview_standard.png b/addons/web/static/img/preview_standard.png
new file mode 100644
index 00000000000..0bd596ed9b5
--- /dev/null
+++ b/addons/web/static/img/preview_standard.png
Binary files differ
diff --git a/addons/web/static/pdf/preview_background.pdf b/addons/web/static/pdf/preview_background.pdf
new file mode 100644
index 00000000000..d33687c16b8
--- /dev/null
+++ b/addons/web/static/pdf/preview_background.pdf
Binary files differ
diff --git a/addons/web/static/pdf/preview_boxed.pdf b/addons/web/static/pdf/preview_boxed.pdf
new file mode 100644
index 00000000000..e73c1131d04
--- /dev/null
+++ b/addons/web/static/pdf/preview_boxed.pdf
Binary files differ
diff --git a/addons/web/static/pdf/preview_clean.pdf b/addons/web/static/pdf/preview_clean.pdf
new file mode 100644
index 00000000000..4f1c42b4814
--- /dev/null
+++ b/addons/web/static/pdf/preview_clean.pdf
Binary files differ
diff --git a/addons/web/static/pdf/preview_standard.pdf b/addons/web/static/pdf/preview_standard.pdf
new file mode 100644
index 00000000000..4d537376850
--- /dev/null
+++ b/addons/web/static/pdf/preview_standard.pdf
Binary files differ
diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js
index 399647d1dbe..dfcbbc71a80 100644
--- a/addons/web/static/src/js/fields/basic_fields.js
+++ b/addons/web/static/src/js/fields/basic_fields.js
@@ -2826,56 +2826,6 @@ var AceEditor = DebouncedField.extend({
},
});
-var ImageSelection = AbstractField.extend({
- supportedFieldTypes: ['selection'],
- events: _.extend({}, AbstractField.prototype.events, {
- 'click img': '_onImgClicked',
- }),
-
- //--------------------------------------------------------------------------
- // Private
- //--------------------------------------------------------------------------
-
- /**
- * @override
- * @private
- */
- _render: function () {
- var self = this;
- this.$el.empty();
- _.each(this.nodeOptions, function (val, key) {
- var $container = $('<div>').addClass('col-3 text-center');
- var $img = $('<img>')
- .addClass('img img-fluid img-thumbnail ml16')
- .toggleClass('btn-info', key === self.value)
- .attr('src', val.image_link)
- .data('key', key);
- $container.append($img);
- if (val.preview_link) {
- var $previewLink = $('<a>')
- .text('Preview')
- .attr('href', val.preview_link)
- .attr('target', '_blank');
- $container.append($previewLink);
- }
- self.$el.append($container);
- });
- },
-
- //--------------------------------------------------------------------------
- // Handlers
- //--------------------------------------------------------------------------
-
- /**
- * @override
- * @private
- * @param {MouseEvent} event
- */
- _onImgClicked: function (event) {
- this._setValue($(event.currentTarget).data('key'));
- },
-});
-
return {
TranslatableFieldMixin: TranslatableFieldMixin,
DebouncedField: DebouncedField,
@@ -2906,7 +2856,6 @@ return {
HandleWidget: HandleWidget,
InputField: InputField,
AttachmentImage: AttachmentImage,
- ImageSelection: ImageSelection,
LabelSelection: LabelSelection,
StateSelectionWidget: StateSelectionWidget,
FavoriteWidget: FavoriteWidget,
diff --git a/addons/web/static/src/js/fields/field_registry.js b/addons/web/static/src/js/fields/field_registry.js
index df8ffc9dd5b..c94c315cfa6 100644
--- a/addons/web/static/src/js/fields/field_registry.js
+++ b/addons/web/static/src/js/fields/field_registry.js
@@ -43,7 +43,6 @@ registry
.add('percentage', basic_fields.FieldPercentage)
.add('priority', basic_fields.PriorityWidget)
.add('attachment_image', basic_fields.AttachmentImage)
- .add('image_selection', basic_fields.ImageSelection)
.add('label_selection', basic_fields.LabelSelection)
.add('state_selection', basic_fields.StateSelectionWidget)
.add('kanban_state_selection', basic_fields.StateSelectionWidget)
@@ -81,5 +80,6 @@ registry
// Special fields
registry
- .add('timezone_mismatch', special_fields.FieldTimezoneMismatch);
+ .add('timezone_mismatch', special_fields.FieldTimezoneMismatch)
+ .add('report_layout', special_fields.FieldReportLayout);
});
diff --git a/addons/web/static/src/js/fields/special_fields.js b/addons/web/static/src/js/fields/special_fields.js
index 3db57c5e158..5a6aa8cfd28 100644
--- a/addons/web/static/src/js/fields/special_fields.js
+++ b/addons/web/static/src/js/fields/special_fields.js
@@ -102,8 +102,75 @@ var FieldTimezoneMismatch = FieldSelection.extend({
},
});
+var FieldReportLayout = relational_fields.FieldMany2One.extend({
+ supportedFieldTypes: ['many2one', 'selection'],
+ events: _.extend({}, relational_fields.FieldMany2One.prototype.events, {
+ 'click img': '_onImgClicked',
+ }),
+
+ willStart: function () {
+ var self = this;
+ this.previews = {};
+ return this._super()
+ .then(function () {
+ return self._rpc({
+ model: 'report.layout',
+ method: "search_read"
+ }).then(function (values) {
+ self.previews = values;
+ });
+ });
+ },
+
+ //--------------------------------------------------------------------------
+ // Private
+ //--------------------------------------------------------------------------
+
+ /**
+ * @override
+ * @private
+ */
+ _render: function () {
+ var self = this;
+ this.$el.empty();
+ var value = _.isObject(this.value) ? this.value.data.id : this.value;
+ _.each(this.previews, function (val) {
+ var $container = $('<div>').addClass('col-3 text-center');
+ var $img = $('<img>')
+ .addClass('img img-fluid img-thumbnail ml16')
+ .toggleClass('btn-info', val.view_id[0] === value)
+ .attr('src', val.image)
+ .data('key', val.view_id[0]);
+ $container.append($img);
+ if (val.pdf) {
+ var $previewLink = $('<a>')
+ .text('Preview')
+ .attr('href', val.pdf)
+ .attr('target', '_blank');
+ $container.append($previewLink);
+ }
+ self.$el.append($container);
+ });
+ },
+
+ //--------------------------------------------------------------------------
+ // Handlers
+ //--------------------------------------------------------------------------
+
+ /**
+ * @override
+ * @private
+ * @param {MouseEvent} event
+ */
+ _onImgClicked: function (event) {
+ this._setValue($(event.currentTarget).data('key'));
+ },
+});
+
+
return {
FieldTimezoneMismatch: FieldTimezoneMismatch,
+ FieldReportLayout: FieldReportLayout,
};
});
diff --git a/addons/web/static/src/scss/form_view.scss b/addons/web/static/src/scss/form_view.scss
index 6f5e955e652..367d9854563 100644
--- a/addons/web/static/src/scss/form_view.scss
+++ b/addons/web/static/src/scss/form_view.scss
@@ -606,7 +606,8 @@
}
}
&.o_company_document_layout {
- .image_selection_container {
+ .report_layout_container {
+ display: inline-block;
div {
display: inline-block;
img {
diff --git a/addons/web/static/tests/fields/basic_fields_tests.js b/addons/web/static/tests/fields/basic_fields_tests.js
index 1855b032bf3..63e677f367d 100644
--- a/addons/web/static/tests/fields/basic_fields_tests.js
+++ b/addons/web/static/tests/fields/basic_fields_tests.js
@@ -40,8 +40,6 @@ QUnit.module('basic_fields', {
selection: {string: "Selection", type: "selection", searchable:true,
selection: [['normal', 'Normal'],['blocked', 'Blocked'],['done', 'Done']]},
document: {string: "Binary", type: "binary"},
- image_selection: {string: "Image Selection", type: "selection", searchable:true,
- selection: [['background', 'Background'],['boxed', 'Boxed'],['clean', 'Clean'],['standard', 'Standard']]},
},
records: [{
id: 1,
@@ -4828,45 +4826,6 @@ QUnit.module('basic_fields', {
form.destroy();
});
-
- QUnit.module('FieldImageSelection');
-
- QUnit.test('image selection widget in form view', function (assert) {
- assert.expect(3);
-
- var nodeOptions = {
- background: {
- image_link: '/base/static/img/preview_background.png',
- preview_link: '/base/static/pdf/preview_background.pdf',
- },
- boxed: {
- image_link: '/base/static/img/preview_boxed.png',
- preview_link: '/base/static/pdf/preview_boxed.pdf',
- },
- };
- var form = createView({
- View: FormView,
- model: 'partner',
- data: this.data,
- arch: '<form>' +
- '<field name="image_selection" widget="image_selection"' +
- ' options=\'' + JSON.stringify(nodeOptions) + '\'/> '+
- '</form>',
- res_id: 2,
- });
-
- assert.strictEqual(form.$('.img.img-fluid').length, 2,
- "Two images should be rendered");
- assert.strictEqual(form.$('.img.btn-info').length, 0,
- "No image should be selected");
-
- // select first image
- form.$(".img.img-fluid:first").click();
- assert.ok(form.$(".img.img-fluid:first").hasClass('btn-info'),
- "First image should be selected");
-
- form.destroy();
- });
});
});
});
diff --git a/addons/web/static/tests/fields/special_fields.js b/addons/web/static/tests/fields/special_fields.js
index 6786f6783b7..3592f813fae 100644
--- a/addons/web/static/tests/fields/special_fields.js
+++ b/addons/web/static/tests/fields/special_fields.js
@@ -213,6 +213,53 @@ QUnit.module('special_fields', {
form.destroy();
});
+ QUnit.module('FieldReportLayout');
+
+ QUnit.test('report_layout widget in form view', function (assert) {
+ assert.expect(3);
+
+ this.data['report.layout'] = {
+ fields: {
+ view_id: {string: "Document Template", type: "many2one", relation: "product"},
+ image: {string: "Preview image src", type: "char"},
+ pdf: {string: "Preview pdf src", type: "char"}
+ },
+ records: [{
+ id: 1,
+ view_id: 37,
+ image: "/web/static/toto.png",
+ pdf: "/web/static/toto.pdf",
+ }, {
+ id: 2,
+ view_id: 41,
+ image: "/web/static/tata.png",
+ pdf: "/web/static/tata.pdf",
+ }]
+ };
+ this.data.partner.records[1].product_id = false;
+
+ var form = createView({
+ View: FormView,
+ model: 'partner',
+ data: this.data,
+ arch: '<form>' +
+ '<field name="product_id" widget="report_layout"/> '+
+ '</form>',
+ res_id: 2,
+ });
+
+ assert.strictEqual(form.$('.img.img-fluid').length, 2,
+ "Two images should be rendered");
+ assert.strictEqual(form.$('.img.btn-info').length, 0,
+ "No image should be selected");
+
+ // select first image
+ form.$(".img.img-fluid:first").click();
+ assert.ok(form.$(".img.img-fluid:first").hasClass('btn-info'),
+ "First image should be selected");
+
+ form.destroy();
+ });
});
});
});