diff --git a/addons/mrp/__manifest__.py b/addons/mrp/__manifest__.py index 78b3a6e6c03..a69d9582136 100644 --- a/addons/mrp/__manifest__.py +++ b/addons/mrp/__manifest__.py @@ -66,6 +66,7 @@ Dashboard / Reports for MRP will include: 'demo': [ 'data/mrp_demo.xml', 'data/mrp_lot_demo.yml'], + 'qweb': ['static/src/xml/mrp.xml'], 'test': [], 'application': True, } diff --git a/addons/mrp/data/mrp_demo.xml b/addons/mrp/data/mrp_demo.xml index 70da69628f8..787eb2eaea9 100644 --- a/addons/mrp/data/mrp_demo.xml +++ b/addons/mrp/data/mrp_demo.xml @@ -90,7 +90,7 @@ Manual Assembly 60 5 - + @@ -99,7 +99,7 @@ Long time assembly 180 15 - + @@ -108,7 +108,7 @@ Testing 60 10 - + @@ -117,7 +117,7 @@ Packing 30 5 - + @@ -126,7 +126,7 @@ 120 5 Manual Assembly - + @@ -135,7 +135,7 @@ 120 10 Cutting - + @@ -144,7 +144,7 @@ 120 15 Drilling - + @@ -153,7 +153,7 @@ 120 20 Assembly - + diff --git a/addons/mrp/static/img/assebly-worksheet.jpg b/addons/mrp/static/img/assebly-worksheet.jpg deleted file mode 100644 index 8d2e4b65440..00000000000 Binary files a/addons/mrp/static/img/assebly-worksheet.jpg and /dev/null differ diff --git a/addons/mrp/static/img/assebly-worksheet.pdf b/addons/mrp/static/img/assebly-worksheet.pdf new file mode 100644 index 00000000000..c5975da4a5d Binary files /dev/null and b/addons/mrp/static/img/assebly-worksheet.pdf differ diff --git a/addons/mrp/static/img/cutting-worksheet.jpg b/addons/mrp/static/img/cutting-worksheet.jpg deleted file mode 100644 index 3ecc631c4a6..00000000000 Binary files a/addons/mrp/static/img/cutting-worksheet.jpg and /dev/null differ diff --git a/addons/mrp/static/img/cutting-worksheet.pdf b/addons/mrp/static/img/cutting-worksheet.pdf new file mode 100644 index 00000000000..a6bbd4ebe39 Binary files /dev/null and b/addons/mrp/static/img/cutting-worksheet.pdf differ diff --git a/addons/mrp/static/img/drill-worksheet.jpg b/addons/mrp/static/img/drill-worksheet.jpg deleted file mode 100644 index 27c62c2b894..00000000000 Binary files a/addons/mrp/static/img/drill-worksheet.jpg and /dev/null differ diff --git a/addons/mrp/static/img/drill-worksheet.pdf b/addons/mrp/static/img/drill-worksheet.pdf new file mode 100644 index 00000000000..86d58a6cd2f Binary files /dev/null and b/addons/mrp/static/img/drill-worksheet.pdf differ diff --git a/addons/mrp/static/src/js/mrp.js b/addons/mrp/static/src/js/mrp.js index 1f1a42f1950..3c94517173c 100644 --- a/addons/mrp/static/src/js/mrp.js +++ b/addons/mrp/static/src/js/mrp.js @@ -5,6 +5,8 @@ var core = require('web.core'); var common = require('web.form_common'); var Model = require('web.Model'); var time = require('web.time'); +var utils = require('web.utils'); +var FieldBinaryFile = core.form_widget_registry.get('binary'); var _t = core._t; @@ -72,6 +74,74 @@ var TimeCounter = common.AbstractField.extend(common.ReinitializeFieldMixin, { }, }); -core.form_widget_registry.add('bullet_state', SetBulletStatus) - .add('mrp_time_counter', TimeCounter); +var FieldPdfViewer = FieldBinaryFile.extend({ + template: 'FieldPdfViewer', + init: function(){ + this._super.apply(this, arguments); + this.PDFViewerApplication = false; + }, + get_uri: function(){ + var query_obj = { + model: this.view.dataset.model, + field: this.name, + id: this.view.datarecord.id + }; + var query_string = $.param(query_obj); + var url = encodeURIComponent('/web/image?' + query_string); + var viewer_url = '/web/static/lib/pdfjs/web/viewer.html?file='; + return viewer_url + url; + }, + on_file_change: function(ev) { + this._super.apply(this, arguments); + if(this.PDFViewerApplication){ + var files = ev.target.files; + if (!files || files.length === 0) { + return; + } + var file = files[0]; + // TOCheck: is there requirement to fallback on FileReader if browser don't support URL + this.PDFViewerApplication.open(URL.createObjectURL(file), 0); + } + }, + render_value: function() { + var $pdf_viewer = this.$('.o_form_pdf_controls').children().add(this.$('.o_pdfview_iframe')), + $select_upload_el = this.$('.o_select_file_button').first(), + $iFrame = this.$('.o_pdfview_iframe'), + value = this.get('value'), + self = this; + + var bin_size = utils.is_bin_size(value); + $iFrame.on('load', function(){ + self.PDFViewerApplication = this.contentWindow.window.PDFViewerApplication; + self.disable_buttons(this); + }); + if (this.get("effective_readonly")) { + if (value) { + this.$el.off('click'); // off click event(on_save_as) of FieldBinaryFile + $iFrame.attr('src', this.get_uri()); + } + } else { + if (value) { + $pdf_viewer.removeClass('o_hidden'); + $select_upload_el.addClass('o_hidden'); + if(bin_size){ + $iFrame.attr('src', this.get_uri()); + } + } else { + $pdf_viewer.addClass('o_hidden'); + $select_upload_el.removeClass('o_hidden'); + } + } + }, + disable_buttons: function(iframe){ + if (this.get("effective_readonly")){ + $(iframe).contents().find('button#download').hide(); + } + $(iframe).contents().find('button#openFile').hide(); + } + +}); +core.form_widget_registry.add('bullet_state', SetBulletStatus) + .add('mrp_time_counter', TimeCounter) + .add('pdf_viewer', FieldPdfViewer); }); diff --git a/addons/mrp/static/src/less/mrp.less b/addons/mrp/static/src/less/mrp.less new file mode 100644 index 00000000000..e6acf64b9fc --- /dev/null +++ b/addons/mrp/static/src/less/mrp.less @@ -0,0 +1,8 @@ +.o_form_view { + .o_form_field_pdfviewer { + width: 100%; + height: 450px; + border: 0; + margin-top: 10px; + } +} diff --git a/addons/mrp/static/src/xml/mrp.xml b/addons/mrp/static/src/xml/mrp.xml new file mode 100644 index 00000000000..7f86a6a20dd --- /dev/null +++ b/addons/mrp/static/src/xml/mrp.xml @@ -0,0 +1,23 @@ + + + + + + Uploading... + Upload your file + + + + + + + overflow-x: hidden + + + + + + + + + diff --git a/addons/mrp/views/mrp_routing_views.xml b/addons/mrp/views/mrp_routing_views.xml index 457ab131718..d2ab573944a 100644 --- a/addons/mrp/views/mrp_routing_views.xml +++ b/addons/mrp/views/mrp_routing_views.xml @@ -47,7 +47,7 @@ - + diff --git a/addons/mrp/views/mrp_templates.xml b/addons/mrp/views/mrp_templates.xml index 0ab68e6f9f9..7cf706e0bf4 100644 --- a/addons/mrp/views/mrp_templates.xml +++ b/addons/mrp/views/mrp_templates.xml @@ -3,6 +3,7 @@ + diff --git a/addons/mrp/views/mrp_workorder_views.xml b/addons/mrp/views/mrp_workorder_views.xml index 437a9608160..c82e6e39ce8 100644 --- a/addons/mrp/views/mrp_workorder_views.xml +++ b/addons/mrp/views/mrp_workorder_views.xml @@ -140,7 +140,7 @@ - +