From 028f122244f45963ce13dbdfba30d266cd0687a5 Mon Sep 17 00:00:00 2001 From: bazylevnik0 Date: Mon, 6 May 2024 20:02:46 +0300 Subject: [PATCH 01/14] added barcode-svg --- templates/web/common/site_layout.tt.html | 8 ++++++++ templates/web/pages/product/product_page.tt.html | 14 +++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/templates/web/common/site_layout.tt.html b/templates/web/common/site_layout.tt.html index b93734399ecc1..697104910ff28 100644 --- a/templates/web/common/site_layout.tt.html +++ b/templates/web/common/site_layout.tt.html @@ -26,6 +26,7 @@ [% styles %] [% google_analytics %] + @@ -490,6 +491,13 @@

[% lang('footer_discover_the_project') %]

[% END %] + diff --git a/templates/web/pages/product/product_page.tt.html b/templates/web/pages/product/product_page.tt.html index 47e142e791911..9835d085e7f18 100755 --- a/templates/web/pages/product/product_page.tt.html +++ b/templates/web/pages/product/product_page.tt.html @@ -1,5 +1,4 @@ - [% IF product_changes_saved %]
lang('product_changes_saved') @@ -163,8 +162,17 @@

[% title %]

[% IF upc_code == 'defined' %]

- [% lang("barcode") %]: [% code %] [% upc %] + [% lang("barcode") %]:
+ [% code %] + [% upc %]

+ +
[% ELSE %] [%# put in DOM for folksonomy %] @@ -373,4 +381,4 @@

[% lang('data_sources_p') FILTER ucfir [% INCLUDE web/common/includes/folksonomy_script.tt.html %] - + \ No newline at end of file From a0e6845d58bf378295bed5af9522062c5f31c774 Mon Sep 17 00:00:00 2001 From: bazylevnik0 Date: Mon, 6 May 2024 21:38:52 +0300 Subject: [PATCH 02/14] moved barcode-svg library to local folder --- html/js/JsBarcode.all.min.js | 2 ++ templates/web/common/site_layout.tt.html | 4 ++-- templates/web/pages/product/product_page.tt.html | 2 -- 3 files changed, 4 insertions(+), 4 deletions(-) create mode 100644 html/js/JsBarcode.all.min.js diff --git a/html/js/JsBarcode.all.min.js b/html/js/JsBarcode.all.min.js new file mode 100644 index 0000000000000..64c0dc6e44181 --- /dev/null +++ b/html/js/JsBarcode.all.min.js @@ -0,0 +1,2 @@ +/*! JsBarcode v3.11.6 | (c) Johan Lindell | MIT license */ +!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=15)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.data=e,this.text=n.text||e,this.options=n}},function(t,e,n){"use strict";var r;function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(e,"__esModule",{value:!0});var i=e.SET_A=0,a=e.SET_B=1,u=e.SET_C=2,f=(e.SHIFT=98,e.START_A=103),c=e.START_B=104,s=e.START_C=105;e.MODULO=103,e.STOP=106,e.FNC1=207,e.SET_BY_CODE=(o(r={},f,i),o(r,c,a),o(r,s,u),r),e.SWAP={101:i,100:a,99:u},e.A_START_CHAR=String.fromCharCode(208),e.B_START_CHAR=String.fromCharCode(209),e.C_START_CHAR=String.fromCharCode(210),e.A_CHARS="[\0-_È-Ï]",e.B_CHARS="[ -È-Ï]",e.C_CHARS="(Ï*[0-9]{2}Ï*)",e.BARS=[11011001100,11001101100,11001100110,10010011e3,10010001100,10001001100,10011001e3,10011000100,10001100100,11001001e3,11001000100,11000100100,10110011100,10011011100,10011001110,10111001100,10011101100,10011100110,11001110010,11001011100,11001001110,11011100100,11001110100,11101101110,11101001100,11100101100,11100100110,11101100100,11100110100,11100110010,11011011e3,11011000110,11000110110,10100011e3,10001011e3,10001000110,10110001e3,10001101e3,10001100010,11010001e3,11000101e3,11000100010,10110111e3,10110001110,10001101110,10111011e3,10111000110,10001110110,11101110110,11010001110,11000101110,11011101e3,11011100010,11011101110,11101011e3,11101000110,11100010110,11101101e3,11101100010,11100011010,11101111010,11001000010,11110001010,1010011e4,10100001100,1001011e4,10010000110,10000101100,10000100110,1011001e4,10110000100,1001101e4,10011000010,10000110100,10000110010,11000010010,1100101e4,11110111010,11000010100,10001111010,10100111100,10010111100,10010011110,10111100100,10011110100,10011110010,11110100100,11110010100,11110010010,11011011110,11011110110,11110110110,10101111e3,10100011110,10001011110,10111101e3,10111100010,11110101e3,11110100010,10111011110,10111101110,11101011110,11110101110,11010000100,1101001e4,11010011100,1100011101011]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.SIDE_BIN="101",e.MIDDLE_BIN="01010",e.BINARIES={L:["0001101","0011001","0010011","0111101","0100011","0110001","0101111","0111011","0110111","0001011"],G:["0100111","0110011","0011011","0100001","0011101","0111001","0000101","0010001","0001001","0010111"],R:["1110010","1100110","1101100","1000010","1011100","1001110","1010000","1000100","1001000","1110100"],O:["0001101","0011001","0010011","0111101","0100011","0110001","0101111","0111011","0110111","0001011"],E:["0100111","0110011","0011011","0100001","0011101","0111001","0000101","0010001","0001001","0010111"]},e.EAN2_STRUCTURE=["LL","LG","GL","GG"],e.EAN5_STRUCTURE=["GGLLL","GLGLL","GLLGL","GLLLG","LGGLL","LLGGL","LLLGG","LGLGL","LGLLG","LLGLG"],e.EAN13_STRUCTURE=["LLLLLL","LLGLGG","LLGGLG","LLGGGL","LGLLGG","LGGLLG","LGGGLL","LGLGLG","LGLGGL","LGGLGL"]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(2);e.default=function(t,e,n){var o=t.split("").map((function(t,n){return r.BINARIES[e[n]]})).map((function(e,n){return e?e[t[n]]:""}));if(n){var i=t.length-1;o=o.map((function(t,e){return e=200){i=t.shift()-105;var a=u.SWAP[i];void 0!==a?o=e.next(t,n+1,a):(r!==u.SET_A&&r!==u.SET_B||i!==u.SHIFT||(t[0]=r===u.SET_A?t[0]>95?t[0]-96:t[0]:t[0]<32?t[0]+96:t[0]),o=e.next(t,n+1,r))}else i=e.correctIndex(t,r),o=e.next(t,n+1,r);var f=i*n;return{result:e.getBar(i)+o.result,checksum:f+o.checksum}}}]),e}(a.default);e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mod10=function(t){for(var e=0,n=0;n10*n.width?10*n.width:n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"encode",value:function(){return this.options.flat?this.encodeFlat():this.encodeGuarded()}},{key:"leftText",value:function(t,e){return this.text.substr(t,e)}},{key:"leftEncode",value:function(t,e){return(0,i.default)(t,e)}},{key:"rightText",value:function(t,e){return this.text.substr(t,e)}},{key:"rightEncode",value:function(t,e){return(0,i.default)(t,e)}},{key:"encodeGuarded",value:function(){var t={fontSize:this.fontSize},e={height:this.guardHeight};return[{data:o.SIDE_BIN,options:e},{data:this.leftEncode(),text:this.leftText(),options:t},{data:o.MIDDLE_BIN,options:e},{data:this.rightEncode(),text:this.rightText(),options:t},{data:o.SIDE_BIN,options:e}]}},{key:"encodeFlat",value:function(){return{data:[o.SIDE_BIN,this.leftEncode(),o.MIDDLE_BIN,this.rightEncode(),o.SIDE_BIN].join(""),text:this.text}}}]),e}(a(n(0)).default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n10*n.width?r.fontSize=10*n.width:r.fontSize=n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"valid",value:function(){return-1!==this.data.search(/^[0-9]{12}$/)&&this.data[11]==u(this.data)}},{key:"encode",value:function(){return this.options.flat?this.flatEncoding():this.guardedEncoding()}},{key:"flatEncoding",value:function(){var t="";return t+="101",t+=(0,o.default)(this.data.substr(0,6),"LLLLLL"),t+="01010",t+=(0,o.default)(this.data.substr(6,6),"RRRRRR"),{data:t+="101",text:this.text}}},{key:"guardedEncoding",value:function(){var t=[];return this.displayValue&&t.push({data:"00000000",text:this.text.substr(0,1),options:{textAlign:"left",fontSize:this.fontSize}}),t.push({data:"101"+(0,o.default)(this.data[0],"L"),options:{height:this.guardHeight}}),t.push({data:(0,o.default)(this.data.substr(1,5),"LLLLL"),text:this.text.substr(1,5),options:{fontSize:this.fontSize}}),t.push({data:"01010",options:{height:this.guardHeight}}),t.push({data:(0,o.default)(this.data.substr(6,5),"RRRRR"),text:this.text.substr(6,5),options:{fontSize:this.fontSize}}),t.push({data:(0,o.default)(this.data[11],"R")+"101",options:{height:this.guardHeight}}),this.displayValue&&t.push({data:"00000000",text:this.text.substr(11,1),options:{textAlign:"right",fontSize:this.fontSize}}),t}}]),e}(i(n(0)).default);function u(t){var e,n=0;for(e=1;e<11;e+=2)n+=parseInt(t[e]);for(e=0;e<11;e+=2)n+=3*parseInt(t[e]);return(10-n%10)%10}e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n0?e.fontSize+e.textMargin:0)+e.marginTop+e.marginBottom}function u(t,e,n){if(n.displayValue&&ee&&(e=t[n].height);return e},e.getEncodingHeight=a,e.getBarcodePadding=u,e.calculateEncodingAttributes=function(t,e,n){for(var r=0;r=i(t);return e+String.fromCharCode(r?206:205)+u(t,r)}e.default=function(t){var e=void 0;if(a(t).length>=2)e=r.C_START_CHAR+f(t);else{var n=o(t)>i(t);e=(n?r.A_START_CHAR:r.B_START_CHAR)+u(t,n)}return e.replace(/[\xCD\xCE]([^])[\xCD\xCE]/,(function(t,e){return String.fromCharCode(203)+e}))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n10*n.width?r.fontSize=10*n.width:r.fontSize=n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"valid",value:function(){return this.isValid}},{key:"encode",value:function(){return this.options.flat?this.flatEncoding():this.guardedEncoding()}},{key:"flatEncoding",value:function(){var t="";return t+="101",t+=this.encodeMiddleDigits(),{data:t+="010101",text:this.text}}},{key:"guardedEncoding",value:function(){var t=[];return this.displayValue&&t.push({data:"00000000",text:this.text[0],options:{textAlign:"left",fontSize:this.fontSize}}),t.push({data:"101",options:{height:this.guardHeight}}),t.push({data:this.encodeMiddleDigits(),text:this.text.substring(1,7),options:{fontSize:this.fontSize}}),t.push({data:"010101",options:{height:this.guardHeight}}),this.displayValue&&t.push({data:"00000000",text:this.text[7],options:{textAlign:"right",fontSize:this.fontSize}}),t}},{key:"encodeMiddleDigits",value:function(){var t=this.upcA[0],e=this.upcA[this.upcA.length-1],n=s[parseInt(e)][parseInt(t)];return(0,o.default)(this.middleDigits,n)}}]),e}(i.default);function p(t,e){for(var n=parseInt(t[t.length-1]),r=c[n],o="",i=0,u=0;u=3&&this.number<=131070}}]),e}(((r=i)&&r.__esModule?r:{default:r}).default);e.pharmacode=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.codabar=void 0;var r,o=function(){function t(t,e){for(var n=0;n0?(n=0,o.textAlign="left"):"right"==t.textAlign?(n=e.width-1,o.textAlign="right"):(n=e.width/2,o.textAlign="center"),o.fillText(e.text,n,r))}},{key:"moveCanvasDrawing",value:function(t){this.canvas.getContext("2d").translate(t.width,0)}},{key:"restoreCanvas",value:function(){this.canvas.getContext("2d").restore()}}]),t}();e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n0&&(this.drawRect(a-e.width*i,r,e.width*i,e.height,t),i=0);i>0&&this.drawRect(a-e.width*(i-1),r,e.width*i,e.height,t)}},{key:"drawSVGText",value:function(t,e,n){var r,o,i=this.document.createElementNS(f,"text");e.displayValue&&(i.setAttribute("style","font:"+e.fontOptions+" "+e.fontSize+"px "+e.font),o="top"==e.textPosition?e.fontSize-e.textMargin:e.height+e.textMargin+e.fontSize,"left"==e.textAlign||n.barcodePadding>0?(r=0,i.setAttribute("text-anchor","start")):"right"==e.textAlign?(r=n.width-1,i.setAttribute("text-anchor","end")):(r=n.width/2,i.setAttribute("text-anchor","middle")),i.setAttribute("x",r),i.setAttribute("y",o),i.appendChild(this.document.createTextNode(n.text)),t.appendChild(i))}},{key:"setSvgAttributes",value:function(t,e){var n=this.svg;n.setAttribute("width",t+"px"),n.setAttribute("height",e+"px"),n.setAttribute("x","0px"),n.setAttribute("y","0px"),n.setAttribute("viewBox","0 0 "+t+" "+e),n.setAttribute("xmlns",f),n.setAttribute("version","1.1"),n.setAttribute("style","transform: translate(0,0)")}},{key:"createGroup",value:function(t,e,n){var r=this.document.createElementNS(f,"g");return r.setAttribute("transform","translate("+t+", "+e+")"),n.appendChild(r),r}},{key:"setGroupOptions",value:function(t,e){t.setAttribute("style","fill:"+e.lineColor+";")}},{key:"drawRect",value:function(t,e,n,r,o){var i=this.document.createElementNS(f,"rect");return i.setAttribute("x",t),i.setAttribute("y",e),i.setAttribute("width",n),i.setAttribute("height",r),o.appendChild(i),i}}]),t}();e.default=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n [% google_analytics %] - @@ -491,6 +490,7 @@

[% lang('footer_discover_the_project') %]

[% END %] + - + \ No newline at end of file diff --git a/templates/web/pages/product/product_page.tt.html b/templates/web/pages/product/product_page.tt.html index 9835d085e7f18..93a58ce69e5eb 100755 --- a/templates/web/pages/product/product_page.tt.html +++ b/templates/web/pages/product/product_page.tt.html @@ -169,8 +169,6 @@

[% title %]

From 513d250b056f427d62b9158318a15df973ab3245 Mon Sep 17 00:00:00 2001 From: bazylevnik0 Date: Mon, 6 May 2024 23:04:08 +0300 Subject: [PATCH 03/14] jsbarcode as npm dependency --- gulpfile.ts | 1 + html/js/JsBarcode.all.min.js | 2 -- package-lock.json | 6 ++++++ package.json | 3 ++- templates/web/common/site_layout.tt.html | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) delete mode 100644 html/js/JsBarcode.all.min.js diff --git a/gulpfile.ts b/gulpfile.ts index 24f7f4f66b7b0..e750e74b25744 100644 --- a/gulpfile.ts +++ b/gulpfile.ts @@ -78,6 +78,7 @@ export function copyJs() { "./node_modules/jsvectormap/dist/js/jsvectormap.js", "./node_modules/jsvectormap/dist/maps/world-merc.js", "./node_modules/select2/dist/js/select2.min.js", + "./node_modules/jsbarcode/dist/JsBarcode.all.min.js", ]). pipe(init()). pipe(terser()). diff --git a/html/js/JsBarcode.all.min.js b/html/js/JsBarcode.all.min.js deleted file mode 100644 index 64c0dc6e44181..0000000000000 --- a/html/js/JsBarcode.all.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! JsBarcode v3.11.6 | (c) Johan Lindell | MIT license */ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=15)}([function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.default=function t(e,n){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this.data=e,this.text=n.text||e,this.options=n}},function(t,e,n){"use strict";var r;function o(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}Object.defineProperty(e,"__esModule",{value:!0});var i=e.SET_A=0,a=e.SET_B=1,u=e.SET_C=2,f=(e.SHIFT=98,e.START_A=103),c=e.START_B=104,s=e.START_C=105;e.MODULO=103,e.STOP=106,e.FNC1=207,e.SET_BY_CODE=(o(r={},f,i),o(r,c,a),o(r,s,u),r),e.SWAP={101:i,100:a,99:u},e.A_START_CHAR=String.fromCharCode(208),e.B_START_CHAR=String.fromCharCode(209),e.C_START_CHAR=String.fromCharCode(210),e.A_CHARS="[\0-_È-Ï]",e.B_CHARS="[ -È-Ï]",e.C_CHARS="(Ï*[0-9]{2}Ï*)",e.BARS=[11011001100,11001101100,11001100110,10010011e3,10010001100,10001001100,10011001e3,10011000100,10001100100,11001001e3,11001000100,11000100100,10110011100,10011011100,10011001110,10111001100,10011101100,10011100110,11001110010,11001011100,11001001110,11011100100,11001110100,11101101110,11101001100,11100101100,11100100110,11101100100,11100110100,11100110010,11011011e3,11011000110,11000110110,10100011e3,10001011e3,10001000110,10110001e3,10001101e3,10001100010,11010001e3,11000101e3,11000100010,10110111e3,10110001110,10001101110,10111011e3,10111000110,10001110110,11101110110,11010001110,11000101110,11011101e3,11011100010,11011101110,11101011e3,11101000110,11100010110,11101101e3,11101100010,11100011010,11101111010,11001000010,11110001010,1010011e4,10100001100,1001011e4,10010000110,10000101100,10000100110,1011001e4,10110000100,1001101e4,10011000010,10000110100,10000110010,11000010010,1100101e4,11110111010,11000010100,10001111010,10100111100,10010111100,10010011110,10111100100,10011110100,10011110010,11110100100,11110010100,11110010010,11011011110,11011110110,11110110110,10101111e3,10100011110,10001011110,10111101e3,10111100010,11110101e3,11110100010,10111011110,10111101110,11101011110,11110101110,11010000100,1101001e4,11010011100,1100011101011]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});e.SIDE_BIN="101",e.MIDDLE_BIN="01010",e.BINARIES={L:["0001101","0011001","0010011","0111101","0100011","0110001","0101111","0111011","0110111","0001011"],G:["0100111","0110011","0011011","0100001","0011101","0111001","0000101","0010001","0001001","0010111"],R:["1110010","1100110","1101100","1000010","1011100","1001110","1010000","1000100","1001000","1110100"],O:["0001101","0011001","0010011","0111101","0100011","0110001","0101111","0111011","0110111","0001011"],E:["0100111","0110011","0011011","0100001","0011101","0111001","0000101","0010001","0001001","0010111"]},e.EAN2_STRUCTURE=["LL","LG","GL","GG"],e.EAN5_STRUCTURE=["GGLLL","GLGLL","GLLGL","GLLLG","LGGLL","LLGGL","LLLGG","LGLGL","LGLLG","LLGLG"],e.EAN13_STRUCTURE=["LLLLLL","LLGLGG","LLGGLG","LLGGGL","LGLLGG","LGGLLG","LGGGLL","LGLGLG","LGLGGL","LGGLGL"]},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(2);e.default=function(t,e,n){var o=t.split("").map((function(t,n){return r.BINARIES[e[n]]})).map((function(e,n){return e?e[t[n]]:""}));if(n){var i=t.length-1;o=o.map((function(t,e){return e=200){i=t.shift()-105;var a=u.SWAP[i];void 0!==a?o=e.next(t,n+1,a):(r!==u.SET_A&&r!==u.SET_B||i!==u.SHIFT||(t[0]=r===u.SET_A?t[0]>95?t[0]-96:t[0]:t[0]<32?t[0]+96:t[0]),o=e.next(t,n+1,r))}else i=e.correctIndex(t,r),o=e.next(t,n+1,r);var f=i*n;return{result:e.getBar(i)+o.result,checksum:f+o.checksum}}}]),e}(a.default);e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.mod10=function(t){for(var e=0,n=0;n10*n.width?10*n.width:n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"encode",value:function(){return this.options.flat?this.encodeFlat():this.encodeGuarded()}},{key:"leftText",value:function(t,e){return this.text.substr(t,e)}},{key:"leftEncode",value:function(t,e){return(0,i.default)(t,e)}},{key:"rightText",value:function(t,e){return this.text.substr(t,e)}},{key:"rightEncode",value:function(t,e){return(0,i.default)(t,e)}},{key:"encodeGuarded",value:function(){var t={fontSize:this.fontSize},e={height:this.guardHeight};return[{data:o.SIDE_BIN,options:e},{data:this.leftEncode(),text:this.leftText(),options:t},{data:o.MIDDLE_BIN,options:e},{data:this.rightEncode(),text:this.rightText(),options:t},{data:o.SIDE_BIN,options:e}]}},{key:"encodeFlat",value:function(){return{data:[o.SIDE_BIN,this.leftEncode(),o.MIDDLE_BIN,this.rightEncode(),o.SIDE_BIN].join(""),text:this.text}}}]),e}(a(n(0)).default);e.default=u},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n10*n.width?r.fontSize=10*n.width:r.fontSize=n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"valid",value:function(){return-1!==this.data.search(/^[0-9]{12}$/)&&this.data[11]==u(this.data)}},{key:"encode",value:function(){return this.options.flat?this.flatEncoding():this.guardedEncoding()}},{key:"flatEncoding",value:function(){var t="";return t+="101",t+=(0,o.default)(this.data.substr(0,6),"LLLLLL"),t+="01010",t+=(0,o.default)(this.data.substr(6,6),"RRRRRR"),{data:t+="101",text:this.text}}},{key:"guardedEncoding",value:function(){var t=[];return this.displayValue&&t.push({data:"00000000",text:this.text.substr(0,1),options:{textAlign:"left",fontSize:this.fontSize}}),t.push({data:"101"+(0,o.default)(this.data[0],"L"),options:{height:this.guardHeight}}),t.push({data:(0,o.default)(this.data.substr(1,5),"LLLLL"),text:this.text.substr(1,5),options:{fontSize:this.fontSize}}),t.push({data:"01010",options:{height:this.guardHeight}}),t.push({data:(0,o.default)(this.data.substr(6,5),"RRRRR"),text:this.text.substr(6,5),options:{fontSize:this.fontSize}}),t.push({data:(0,o.default)(this.data[11],"R")+"101",options:{height:this.guardHeight}}),this.displayValue&&t.push({data:"00000000",text:this.text.substr(11,1),options:{textAlign:"right",fontSize:this.fontSize}}),t}}]),e}(i(n(0)).default);function u(t){var e,n=0;for(e=1;e<11;e+=2)n+=parseInt(t[e]);for(e=0;e<11;e+=2)n+=3*parseInt(t[e]);return(10-n%10)%10}e.default=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n0?e.fontSize+e.textMargin:0)+e.marginTop+e.marginBottom}function u(t,e,n){if(n.displayValue&&ee&&(e=t[n].height);return e},e.getEncodingHeight=a,e.getBarcodePadding=u,e.calculateEncodingAttributes=function(t,e,n){for(var r=0;r=i(t);return e+String.fromCharCode(r?206:205)+u(t,r)}e.default=function(t){var e=void 0;if(a(t).length>=2)e=r.C_START_CHAR+f(t);else{var n=o(t)>i(t);e=(n?r.A_START_CHAR:r.B_START_CHAR)+u(t,n)}return e.replace(/[\xCD\xCE]([^])[\xCD\xCE]/,(function(t,e){return String.fromCharCode(203)+e}))}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n10*n.width?r.fontSize=10*n.width:r.fontSize=n.fontSize,r.guardHeight=n.height+r.fontSize/2+n.textMargin,r}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),r(e,[{key:"valid",value:function(){return this.isValid}},{key:"encode",value:function(){return this.options.flat?this.flatEncoding():this.guardedEncoding()}},{key:"flatEncoding",value:function(){var t="";return t+="101",t+=this.encodeMiddleDigits(),{data:t+="010101",text:this.text}}},{key:"guardedEncoding",value:function(){var t=[];return this.displayValue&&t.push({data:"00000000",text:this.text[0],options:{textAlign:"left",fontSize:this.fontSize}}),t.push({data:"101",options:{height:this.guardHeight}}),t.push({data:this.encodeMiddleDigits(),text:this.text.substring(1,7),options:{fontSize:this.fontSize}}),t.push({data:"010101",options:{height:this.guardHeight}}),this.displayValue&&t.push({data:"00000000",text:this.text[7],options:{textAlign:"right",fontSize:this.fontSize}}),t}},{key:"encodeMiddleDigits",value:function(){var t=this.upcA[0],e=this.upcA[this.upcA.length-1],n=s[parseInt(e)][parseInt(t)];return(0,o.default)(this.middleDigits,n)}}]),e}(i.default);function p(t,e){for(var n=parseInt(t[t.length-1]),r=c[n],o="",i=0,u=0;u=3&&this.number<=131070}}]),e}(((r=i)&&r.__esModule?r:{default:r}).default);e.pharmacode=a},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.codabar=void 0;var r,o=function(){function t(t,e){for(var n=0;n0?(n=0,o.textAlign="left"):"right"==t.textAlign?(n=e.width-1,o.textAlign="right"):(n=e.width/2,o.textAlign="center"),o.fillText(e.text,n,r))}},{key:"moveCanvasDrawing",value:function(t){this.canvas.getContext("2d").translate(t.width,0)}},{key:"restoreCanvas",value:function(){this.canvas.getContext("2d").restore()}}]),t}();e.default=f},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r,o=function(){function t(t,e){for(var n=0;n0&&(this.drawRect(a-e.width*i,r,e.width*i,e.height,t),i=0);i>0&&this.drawRect(a-e.width*(i-1),r,e.width*i,e.height,t)}},{key:"drawSVGText",value:function(t,e,n){var r,o,i=this.document.createElementNS(f,"text");e.displayValue&&(i.setAttribute("style","font:"+e.fontOptions+" "+e.fontSize+"px "+e.font),o="top"==e.textPosition?e.fontSize-e.textMargin:e.height+e.textMargin+e.fontSize,"left"==e.textAlign||n.barcodePadding>0?(r=0,i.setAttribute("text-anchor","start")):"right"==e.textAlign?(r=n.width-1,i.setAttribute("text-anchor","end")):(r=n.width/2,i.setAttribute("text-anchor","middle")),i.setAttribute("x",r),i.setAttribute("y",o),i.appendChild(this.document.createTextNode(n.text)),t.appendChild(i))}},{key:"setSvgAttributes",value:function(t,e){var n=this.svg;n.setAttribute("width",t+"px"),n.setAttribute("height",e+"px"),n.setAttribute("x","0px"),n.setAttribute("y","0px"),n.setAttribute("viewBox","0 0 "+t+" "+e),n.setAttribute("xmlns",f),n.setAttribute("version","1.1"),n.setAttribute("style","transform: translate(0,0)")}},{key:"createGroup",value:function(t,e,n){var r=this.document.createElementNS(f,"g");return r.setAttribute("transform","translate("+t+", "+e+")"),n.appendChild(r),r}},{key:"setGroupOptions",value:function(t,e){t.setAttribute("style","fill:"+e.lineColor+";")}},{key:"drawRect",value:function(t,e,n,r,o){var i=this.document.createElementNS(f,"rect");return i.setAttribute("x",t),i.setAttribute("y",e),i.setAttribute("width",n),i.setAttribute("height",r),o.appendChild(i),i}}]),t}();e.default=c},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=function(){function t(t,e){for(var n=0;n[% lang('footer_discover_the_project') %]

[% END %] - + + - \ No newline at end of file diff --git a/templates/web/pages/product/product_page.tt.html b/templates/web/pages/product/product_page.tt.html index 93a58ce69e5eb..48eda36f56cf2 100755 --- a/templates/web/pages/product/product_page.tt.html +++ b/templates/web/pages/product/product_page.tt.html @@ -161,19 +161,34 @@

[% title %]

[% IF upc_code == 'defined' %] -

- [% lang("barcode") %]:
- [% code %] - [% upc %] -

- - +
+ +
+

[% lang("barcode") %]:
[% code %][% upc %]

+
+ +
+ + +
+
+
[% ELSE %] - [%# put in DOM for folksonomy %] + [%# put in DOM for folksonomy %] [% END %] From 742925d126efc57c3febe356bd53915c0b527792 Mon Sep 17 00:00:00 2001 From: bazylevnik0 Date: Wed, 8 May 2024 16:29:45 +0300 Subject: [PATCH 05/14] add initialization of svg --- templates/web/pages/product/product_page.tt.html | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/templates/web/pages/product/product_page.tt.html b/templates/web/pages/product/product_page.tt.html index 48eda36f56cf2..1a56de397fc08 100755 --- a/templates/web/pages/product/product_page.tt.html +++ b/templates/web/pages/product/product_page.tt.html @@ -1,4 +1,5 @@ + [% IF product_changes_saved %]
lang('product_changes_saved') @@ -168,10 +169,11 @@

[% title %]

- + jsbarcode-displayValue="false" + jsbarcode-height="40">
@@ -186,6 +188,7 @@

[% title %]

} } +
[% ELSE %] [%# put in DOM for folksonomy %] From 9257cba1fabd983eae63f50585de1623623bb76f Mon Sep 17 00:00:00 2001 From: bazylevnik0 Date: Wed, 8 May 2024 17:48:06 +0300 Subject: [PATCH 06/14] fix classes --- templates/web/pages/product/product_page.tt.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/web/pages/product/product_page.tt.html b/templates/web/pages/product/product_page.tt.html index 1a56de397fc08..754423ec943f9 100755 --- a/templates/web/pages/product/product_page.tt.html +++ b/templates/web/pages/product/product_page.tt.html @@ -169,7 +169,7 @@

[% title %]

- [% title %] } } - +
[% ELSE %] [%# put in DOM for folksonomy %] From 80172d52a857f99a16e2244c4bbd2b5e0dd09d1b Mon Sep 17 00:00:00 2001 From: bazylevnik0 Date: Thu, 16 May 2024 16:26:30 +0300 Subject: [PATCH 07/14] first edit of div with banner, adding alt --- templates/web/common/includes/donate_banner.tt.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/web/common/includes/donate_banner.tt.html b/templates/web/common/includes/donate_banner.tt.html index c0b37d16e5a14..addf8021254bd 100644 --- a/templates/web/common/includes/donate_banner.tt.html +++ b/templates/web/common/includes/donate_banner.tt.html @@ -17,7 +17,7 @@ [% lang("donation_cta") %]
-
+
close
From 2104ae6204c50080b75b5c8643d51a5699c46f21 Mon Sep 17 00:00:00 2001 From: bazylevnik0 Date: Thu, 16 May 2024 16:29:59 +0300 Subject: [PATCH 08/14] adding alt to baner-image_footer --- templates/web/common/includes/donate_banner.tt.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/web/common/includes/donate_banner.tt.html b/templates/web/common/includes/donate_banner.tt.html index addf8021254bd..45b691f104f09 100644 --- a/templates/web/common/includes/donate_banner.tt.html +++ b/templates/web/common/includes/donate_banner.tt.html @@ -81,7 +81,7 @@ [% lang("donation_cta") %] - + [% END %] From deea6bf8d6b3b3121362f46549e186ece965be55 Mon Sep 17 00:00:00 2001 From: bazylevnik0 Date: Thu, 16 May 2024 16:37:15 +0300 Subject: [PATCH 09/14] add alts to div images(banner-image --- templates/web/common/includes/donate_banner.tt.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/web/common/includes/donate_banner.tt.html b/templates/web/common/includes/donate_banner.tt.html index 45b691f104f09..699089da83dc0 100644 --- a/templates/web/common/includes/donate_banner.tt.html +++ b/templates/web/common/includes/donate_banner.tt.html @@ -17,7 +17,7 @@ [% lang("donation_cta") %] -
+
close
@@ -81,7 +81,7 @@ [% lang("donation_cta") %] - + [% END %] From 8d655eedff69f416b02fbc5330d13eea7d04adbc Mon Sep 17 00:00:00 2001 From: bazylevnik0 Date: Thu, 16 May 2024 16:42:36 +0300 Subject: [PATCH 10/14] fix branches --- templates/web/common/includes/donate_banner.tt.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/web/common/includes/donate_banner.tt.html b/templates/web/common/includes/donate_banner.tt.html index 699089da83dc0..c0b37d16e5a14 100644 --- a/templates/web/common/includes/donate_banner.tt.html +++ b/templates/web/common/includes/donate_banner.tt.html @@ -17,7 +17,7 @@ [% lang("donation_cta") %] -
+
close
@@ -81,7 +81,7 @@ [% lang("donation_cta") %] - + [% END %] From 1d7a9e7a81592aae355d276fd695d7eba4fc349b Mon Sep 17 00:00:00 2001 From: bazylevnik0 Date: Thu, 16 May 2024 16:44:43 +0300 Subject: [PATCH 11/14] add alts to donation-banner divs --- templates/web/common/includes/donate_banner.tt.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/web/common/includes/donate_banner.tt.html b/templates/web/common/includes/donate_banner.tt.html index c0b37d16e5a14..ee602edd6ab7a 100644 --- a/templates/web/common/includes/donate_banner.tt.html +++ b/templates/web/common/includes/donate_banner.tt.html @@ -17,7 +17,7 @@ [% lang("donation_cta") %] -
+
close
@@ -81,7 +81,7 @@ [% lang("donation_cta") %] - + [% END %] From be36d98f0f5dec7c8ee52c446102638ba04d4200 Mon Sep 17 00:00:00 2001 From: niko bazylev <42851684+bazylevnik0@users.noreply.github.com> Date: Thu, 16 May 2024 19:20:26 +0300 Subject: [PATCH 12/14] Update donate_banner.tt.html --- templates/web/common/includes/donate_banner.tt.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/web/common/includes/donate_banner.tt.html b/templates/web/common/includes/donate_banner.tt.html index ee602edd6ab7a..c0b37d16e5a14 100644 --- a/templates/web/common/includes/donate_banner.tt.html +++ b/templates/web/common/includes/donate_banner.tt.html @@ -17,7 +17,7 @@ [% lang("donation_cta") %] -
+
close
@@ -81,7 +81,7 @@ [% lang("donation_cta") %] - + [% END %] From 1a3b0fd2fc8f2f8c817e3bde69fdfbfc3e2b9412 Mon Sep 17 00:00:00 2001 From: bazylevnik0 Date: Fri, 17 May 2024 15:39:32 +0300 Subject: [PATCH 13/14] moved styles to .scss file --- scss/_product-page.scss | 13 +++++++++++++ templates/web/pages/product/product_page.tt.html | 11 ----------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/scss/_product-page.scss b/scss/_product-page.scss index ee2de9daefe94..1c46e1f0b9825 100644 --- a/scss/_product-page.scss +++ b/scss/_product-page.scss @@ -262,3 +262,16 @@ html[dir="rtl"] .image_box figure figcaption { // This breaks the layout of the tags in the product page. This is a temporary fix until the issue is resolved. display: flex !important; } + +// It is hides SVG barcode when mobile and shows when desktop +#barcode_div_code,#barcode_div_svg{ + display: inline-block; + vertical-align: top; +} + +@media only screen and (max-width: 600px) { + #barcode_div_svg,#barcode_br { + display: none; + } +} + \ No newline at end of file diff --git a/templates/web/pages/product/product_page.tt.html b/templates/web/pages/product/product_page.tt.html index 754423ec943f9..a51d96e607587 100755 --- a/templates/web/pages/product/product_page.tt.html +++ b/templates/web/pages/product/product_page.tt.html @@ -177,17 +177,6 @@

[% title %]

-
[% ELSE %] From 2656b6050bc94df11c8c92240bb7decb09800a25 Mon Sep 17 00:00:00 2001 From: Alex Garel Date: Fri, 12 Jul 2024 18:33:07 +0200 Subject: [PATCH 14/14] test: update tests results --- .../get-auth-bad-user-password.html | 3 ++- .../post-product-auth-bad-user-password.html | 3 ++- .../expected_test_results/export/export.csv | 2 +- .../export_more_fields/export_more_fields.csv | 2 +- .../crawler-access-category-facet-page.html | 3 ++- .../crawler-access-product-page.html | 25 ++++++++++++++----- ...r-does-not-get-facet-knowledge-panels.html | 3 ++- ...ormal-user-access-category-facet-page.html | 3 ++- .../normal-user-access-editor-facet-page.html | 3 ++- .../normal-user-access-list-of-tags.html | 3 ++- .../normal-user-access-nested-facet-page.html | 3 ++- .../normal-user-access-product-page.html | 25 ++++++++++++++----- ...ormal-user-get-facet-knowledge-panels.html | 3 ++- .../normal-user-get-non-official-cc-lc.html | 3 ++- .../product_read/get-existing-product.html | 8 +++--- .../product_read/get-unexisting-product.html | 3 ++- ...-protected-product-web-form-moderator.html | 3 ++- .../edit-protected-product-web-form.html | 3 ++- .../edit-unprotected-product-web-form.html | 3 ++- .../country-cambodia-exists-but-empty.html | 3 ++- ...ountry-doesnotexist-ingredients-apple.html | 3 ++- .../country-doesnotexist-ingredients.html | 3 ++- .../unknown_tags/country-doesnotexist.html | 3 ++- .../unknown_tags/country-france-exists.html | 3 ++- .../unknown_tags/ingredient-apple-exists.html | 3 ++- ...tyingredient-does-not-exist-and-empty.html | 3 ++- ...t-does-not-exist-but-not-empty-labels.html | 3 ++- ...gredient-does-not-exist-but-not-empty.html | 3 ++- .../unknown_tags/unknown-product.html | 3 ++- .../web_html/fr-brands.html | 3 ++- .../web_html/fr-categories.html | 3 ++- .../web_html/fr-countries.html | 3 ++- .../web_html/fr-edit-product.html | 3 ++- .../web_html/fr-index.html | 3 ++- .../web_html/fr-labels.html | 3 ++- .../web_html/fr-product-2.html | 25 ++++++++++++++----- .../web_html/fr-product.html | 25 ++++++++++++++----- .../web_html/fr-search-form.html | 3 ++- .../web_html/fr-search-results-cached.html | 3 ++- .../web_html/fr-search-results-no-cache.html | 3 ++- .../web_html/fr-search-results.html | 3 ++- .../web_html/user-register.html | 3 ++- .../web_html/world-brands.html | 3 ++- .../web_html/world-categories.html | 3 ++- .../web_html/world-countries.html | 3 ++- .../web_html/world-edit-product.html | 3 ++- .../web_html/world-index-signedin.html | 3 ++- .../web_html/world-index.html | 3 ++- .../web_html/world-label-organic.html | 3 ++- .../web_html/world-labels.html | 3 ++- .../web_html/world-product-not-found.html | 3 ++- .../web_html/world-product.html | 25 ++++++++++++++----- .../web_html/world-search-form.html | 3 ++- .../web_html/world-search-results.html | 3 ++- 54 files changed, 193 insertions(+), 82 deletions(-) diff --git a/tests/integration/expected_test_results/api_v2_product_read/get-auth-bad-user-password.html b/tests/integration/expected_test_results/api_v2_product_read/get-auth-bad-user-password.html index 3f23e1f087116..43285075c730e 100644 --- a/tests/integration/expected_test_results/api_v2_product_read/get-auth-bad-user-password.html +++ b/tests/integration/expected_test_results/api_v2_product_read/get-auth-bad-user-password.html @@ -445,6 +445,7 @@

Discover the project

+ + + @@ -426,9 +426,22 @@

Only-Product - Nutella -

- Barcode: 0200000000235 (EAN / EAN-13) 200000000235 (UPC / UPC-A) -

+
+ +
+

Barcode:
0200000000235(EAN / EAN-13) 200000000235 (UPC / UPC-A)

+
+ +
+ + +
+
+
@@ -3493,7 +3506,6 @@

Data sources

- @@ -3628,6 +3640,7 @@

Discover the project

+ + + + + + @@ -426,9 +426,22 @@

Only-Product - Nutella -

- Barcode: 0200000000235 (EAN / EAN-13) 200000000235 (UPC / UPC-A) -

+
+ +
+

Barcode:
0200000000235(EAN / EAN-13) 200000000235 (UPC / UPC-A)

+
+ +
+ + +
+
+
@@ -3493,7 +3506,6 @@

Data sources

- @@ -3628,6 +3640,7 @@

Discover the project

+ + + @@ -424,7 +424,7 @@

Some product - 100 g - + @@ -4654,7 +4654,6 @@

Data sources

- @@ -4789,6 +4788,7 @@

Discover the project

+ + + + + + + + + + + + + + + + + + + + + @@ -426,9 +426,22 @@

Tarte aux pommes et aux -

- Code-barres: 3300000000002 (EAN / EAN-13) -

+
+ +
+

Code-barres:
3300000000002(EAN / EAN-13)

+
+ +
+ + +
+
+
@@ -3732,7 +3745,6 @@

Sources de données

- @@ -3867,6 +3879,7 @@

Découvrez le projet

+ @@ -426,9 +426,22 @@

Apple pie - Bob's pies -

- Code-barres: 3300000000001 (EAN / EAN-13) -

+
+ +
+

Code-barres:
3300000000001(EAN / EAN-13)

+
+ +
+ + +
+
+
@@ -3746,7 +3759,6 @@

Sources de données

- @@ -3881,6 +3893,7 @@

Découvrez le projet

+ + + + + + + + + + + + + + + @@ -426,9 +426,22 @@

Apple pie - Bob's pies -

- Barcode: 3300000000001 (EAN / EAN-13) -

+
+ +
+

Barcode:
3300000000001(EAN / EAN-13)

+
+ +
+ + +
+
+
@@ -4209,7 +4222,6 @@

Data sources

- @@ -4344,6 +4356,7 @@

Discover the project

+ + +