{"version":3,"sources":["identity.pdf.utils.js","identity.pdf.product.js","identity.pdf.measurement-chart.js"],"names":["identity","pdfUtils","settings","pdfmakeVersion","pageSize","pageMargins","save","features","colsPerRow","iconSize","certificates","packs","defaultFont","load","fnCallback","e4","require","js","ecom","pdfmakeUrl","vfsfontsUrl","translations","_data","_pending","_queue","get","async","length","Promise","resolve","reject","push","designFolderName","document","body","dataset","design","culture","response","await","fetch","ok","Error","data","json","shift","error","getValues","keys","returnValue","Object","forEach","translation","find","t","Key","key","Value","DefaultValue","console","warn","model","indexOf","objReturnValue","objSource","arrProperties","split","i","strCurrentPropertyName","strRemainingPropertyPathAsPropertyName","slice","join","hasOwnProperty","undefined","set","value","reduce","objPropertyPath","intPropertyPathDepth","image","getDataUri","strUrl","Image","onload","canvas","createElement","width","this","naturalWidth","height","naturalHeight","getContext","drawImage","toDataURL","onerror","err","fallback","src","handler","size","replace","fillArray","a","concat","getSvgAndTrim","svgPath","jQuery","ajax","url","cleanTableLayout","paddingLeft","paddingRight","hLineWidth","vLineWidth","loader","boolLoad","addClass","removeClass","setFont","OpenSans","normal","bold","italics","bolditalics","measureText","text","opts","let","options","assign","fontSize","ctx","font","resizeText","currentFontSize","targetWidth","productDataPdf","build","cornerBracket","placement","objPosition","x","y","arrMargin","svg","fit","relativePosition","margin","strImageUri","intWidth","strAlignment","strFillColor","fillColor","alignment","strSvg","line","type","x1","y1","x2","y2","lineWidth","color","footer","userStack","stack","style","columns","columnGap","styles","default","productName","date","productNumber","disclaimerText","header","tableHeaderLeft","tableHeaderRight","spec","specBold","copy","small","tableHeader","_base","reset","destinationObject","logo","name","number","imageDetails","imagePrimary","descriptionLong","highlightedFeatures","compositionHeader","composition","colors","brand","colorVariantText","sizes","user","specs","transfer","careSymbols","colorVariantCount","facilities","productMaterials","init","bindEvents","getTranslations","on","event","preventDefault","productData","colorsHeader","featuresHeader","descriptionHeader","washingHeadwer","certificateHeader","weightHeader","sizeHeader","fittingHeader","brandHeader","transferHeader","productionCountryHeader","productMaterialsHeader","weightUnit","jsonpublisher","getJsonFromUrl","product","done","jsonData","map","extend","prepareImages","counter","secondaryImagesArr","careSymbolsArr","colorsArr","featuresArr","certificatesArr","values","Array","isArray","obj","item","depth","original","img","Label","label","val","icon","productId","extendPdfData","deferredImages","primaryImage","secondaryImages","userImage","imageKey","imageObj","index","when","apply","isSvg","serializer","deferred","Deferred","XMLSerializer","deferImages","convertSvg","cleanedSvg","updateSvg","insertIntoModel","serializeToString","fallbackImage","navigator","userAgent","toLowerCase","promise","dataUri","elements","querySelectorAll","setAttribute","constructor","bodyData","dataRow","isEmptyObject","each","element","mainImages","stacks","detailImages","alignmentCounter","ratio","Math","min","marginTop","hasValues","filter","feature","careRow","specWeight","fields","id","specFit","sizeSpan","facility","column","Name","Country","rightColumn","hasColorPacks","colorPacks","layout","table","widths","descriptionObj","highlights","hasFeatures","hasCertificates","ul","leftColumn","paddingTop","paddingBottom","hLineColor","vLineColor","titleFontSize","arrPdf","objContent","create","pdfMake","fonts","docDefinition","content","defaultStyle","pdfDocGenerator","createPdf","download","getDataUrl","measurementChart","_toleranceDimensions","toleranceImage","drawingImage","measurementDate","measurements","howToMeasureHeader","toleranceHeader","measurementTableHeader","measurementFooterText","dateText","measurementText","log","getMeasurementTable","measurementData","Charts","sort","b","Position","e","Sizes","sortedHeaderSizes","ComputedValue","headers","sizeObj","rowData","sortedRowSizes","row","Description","rowIndex","node","headerRows","pdfName"],"mappings":"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","file":"identity.pdf.js","sourcesContent":["var identity = identity || {};\r\n\r\nidentity.pdfUtils = {\r\n settings: function() {\r\n return {\r\n pdfmakeVersion: '0.1.62',\r\n\r\n pageSize: 535,\r\n pageMargins: [\r\n 30,\r\n 20,\r\n 30,\r\n 80,\r\n ],\r\n save: false,\r\n features: {\r\n colsPerRow: 3,\r\n iconSize: 40,\r\n },\r\n certificates: {\r\n colsPerRow: 3,\r\n iconSize: 40,\r\n },\r\n packs: {\r\n colsPerRow: 5,\r\n },\r\n defaultFont: 'OpenSans',\r\n };\r\n },\r\n load: function( fnCallback ) {\r\n //Load vendor-scripts for pdf-generator - nested as the pdfMake.js needs to load first\r\n e4.require.js( e4.settings.ecom.pdfmakeUrl, function() {\r\n e4.require.js( e4.settings.ecom.vfsfontsUrl, function() {\r\n if ( typeof fnCallback === 'function' ) {\r\n fnCallback();\r\n }\r\n } );\r\n } );\r\n },\r\n translations: {\r\n _data: [],\r\n _pending: false,\r\n _queue: [],\r\n get: async () => {\r\n \r\n if ( identity.pdfUtils.translations._pending === false && identity.pdfUtils.translations._data.length > 0 ) {\r\n return identity.pdfUtils.translations._data;\r\n }\r\n \r\n if ( identity.pdfUtils.translations._pending ) {\r\n return new Promise( ( resolve, reject ) => {\r\n identity.pdfUtils.translations._queue.push( { resolve, reject } );\r\n } );\r\n }\r\n\r\n identity.pdfUtils.translations._pending = true;\r\n\r\n try {\r\n const designFolderName = document.body.dataset.design;\r\n const culture = document.body.dataset.culture;\r\n const response = await fetch( `/dwapi/translations/${ designFolderName }/${ culture }` );\r\n if ( !response.ok ) {\r\n throw new Error( 'Network response was not ok' );\r\n }\r\n const data = await response.json();\r\n identity.pdfUtils.translations._data = [...data];\r\n while ( identity.pdfUtils.translations._queue.length > 0 ) {\r\n const { resolve } = identity.pdfUtils.translations._queue.shift();\r\n resolve( data );\r\n }\r\n return data;\r\n } catch ( error ) {\r\n while ( identity.pdfUtils.translations._queue.length > 0 ) {\r\n const { reject } = identity.pdfUtils.translations._queue.shift();\r\n reject( error );\r\n }\r\n throw error;\r\n } finally {\r\n identity.pdfUtils.translations._pending = false;\r\n }\r\n },\r\n getValues: async ( keys ) => {\r\n const translations = await identity.pdfUtils.translations.get();\r\n let returnValue = {};\r\n Object.keys( keys ).forEach( ( key ) => {\r\n const translation = translations.find( t => t.Key === keys[key] );\r\n if(translation){\r\n returnValue[key] = translation.Value !== '' ? translation.Value : translation.DefaultValue;\r\n } else{\r\n returnValue[key] = keys[key];\r\n console.warn(`-- Translation with key \"${keys[key]}\" is missing --`)\r\n }\r\n \r\n } );\r\n return returnValue;\r\n },\r\n },\r\n model: {\r\n get: function( key, model ) {\r\n if ( key.indexOf( '.' ) === -1 ) {\r\n return model[key];\r\n } else if ( key.indexOf( '.' ) > -1 ) {\r\n var objSource = model,\r\n arrProperties = key.split( '.' ),\r\n objReturnValue;\r\n for ( var i = 0; i < arrProperties.length; i++ ) {\r\n var strCurrentPropertyName = arrProperties[i],\r\n strRemainingPropertyPathAsPropertyName = arrProperties.slice( i ).join( '.' );\r\n if ( objSource.hasOwnProperty( strRemainingPropertyPathAsPropertyName ) === true ) {\r\n objReturnValue = objSource[strRemainingPropertyPathAsPropertyName];\r\n break;\r\n } else {\r\n if ( objSource.hasOwnProperty( strCurrentPropertyName ) === true ) {\r\n objSource = objSource[strCurrentPropertyName];\r\n } else {\r\n objReturnValue = undefined;\r\n break;\r\n }\r\n }\r\n }\r\n return objReturnValue;\r\n }\r\n },\r\n set: function( key, value, model ) {\r\n if ( key.indexOf( '.' ) === -1 ) {\r\n model[key] = value;\r\n } else if ( key.indexOf( '.' ) > -1 ) {\r\n var arrProperties = key.split( '.' );\r\n return arrProperties.reduce( function( objPropertyPath, strCurrentPropertyName, intPropertyPathDepth ) {\r\n if ( intPropertyPathDepth === arrProperties.length - 1 ) {\r\n\r\n objPropertyPath[strCurrentPropertyName] = value;\r\n } else {\r\n if ( objPropertyPath.hasOwnProperty( strCurrentPropertyName ) === false ) {\r\n\r\n objPropertyPath[strCurrentPropertyName] = {};\r\n }\r\n }\r\n return objPropertyPath[strCurrentPropertyName];\r\n }, model );\r\n }\r\n },\r\n },\r\n image: {\r\n getDataUri: function( strUrl, fnCallback ) {\r\n var image = new Image();\r\n image.onload = function() {\r\n var canvas = document.createElement( 'canvas' );\r\n canvas.width = this.naturalWidth;\r\n canvas.height = this.naturalHeight;\r\n canvas.getContext( '2d' ).drawImage( this, 0, 0 );\r\n if ( typeof fnCallback === 'function' ) {\r\n fnCallback( canvas.toDataURL( 'image/png' ) );\r\n }\r\n };\r\n image.onerror = function( err ) {\r\n console.error( err );\r\n if ( typeof fnCallback === 'function' ) {\r\n fnCallback( identity.pdfUtils.image.fallback() );\r\n }\r\n\r\n };\r\n image.src = strUrl;\r\n },\r\n handler: function( image, size ) {\r\n if ( image.indexOf( '.svg' ) > -1 ) {\r\n return image;\r\n }\r\n return '/admin/public/getimage.ashx?crop=0&image={image}&Height={height}&Width={width}'.replace( '{image}', image )\r\n .replace( '{width}', size.width )\r\n .replace( '{height}', size.height );\r\n },\r\n fallback: function() {\r\n return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII=';\r\n }\r\n },\r\n fillArray: function( value, length ) {\r\n if ( length === 0 ) {\r\n return [];\r\n }\r\n var a = [value];\r\n while ( a.length * 2 <= length ) {\r\n a = a.concat( a );\r\n }\r\n if ( a.length < length ) {\r\n a = a.concat( a.slice( 0, length - a.length ) );\r\n }\r\n return a;\r\n },\r\n getSvgAndTrim: function( svgPath ) {\r\n return jQuery.ajax( {\r\n url: svgPath,\r\n } );\r\n },\r\n cleanTableLayout: function( paddingLeft = 0, paddingRight = 0 ) {\r\n return {\r\n hLineWidth: function() {\r\n return 0;\r\n },\r\n vLineWidth: function() {\r\n return 0;\r\n },\r\n paddingLeft: function() {\r\n return paddingLeft;\r\n },\r\n paddingRight: function() {\r\n return paddingRight;\r\n },\r\n };\r\n },\r\n loader: function( boolLoad ) {\r\n if ( boolLoad === true ) {\r\n jQuery( '.js-e-page-loading-overlay' ).addClass( 'is-loading' );\r\n } else {\r\n jQuery( '.js-e-page-loading-overlay' ).removeClass( 'is-loading' );\r\n }\r\n },\r\n setFont: function() {\r\n return {\r\n OpenSans: {\r\n normal: 'OpenSans-Regular.ttf',\r\n bold: 'OpenSans-Bold.ttf',\r\n italics: 'OpenSans-Italic.ttf',\r\n bolditalics: 'OpenSans-BoldItalic.ttf',\r\n },\r\n };\r\n },\r\n measureText: async function( text, opts = {} ) {\r\n let options = Object.assign( {\r\n fontSize: 12,\r\n }, opts );\r\n\r\n const canvas = document.createElement( 'canvas' );\r\n const ctx = canvas.getContext( '2d' );\r\n ctx.font = `${ options.fontSize }px Arial`;\r\n return ctx.measureText( text ).width;\r\n },\r\n resizeText: async function( text, currentFontSize, targetWidth = 0 ) {\r\n if ( targetWidth === 0 ) {\r\n return currentFontSize;\r\n }\r\n currentFontSize -= 1;\r\n const titleWidth = await identity.pdfUtils.measureText( identity.productDataPdf.model.get( 'name' ), {\r\n fontSize: currentFontSize,\r\n } );\r\n if ( titleWidth <= targetWidth ) {\r\n return currentFontSize;\r\n }\r\n return await identity.pdfUtils.resizeText( text, currentFontSize, targetWidth );\r\n },\r\n\r\n build: {\r\n cornerBracket: function( placement = 'bottom', objPosition = { x: 0, y: 0 }, arrMargin = [0, 0, 0, 0] ) {\r\n var svgMarkup = placement === 'bottom' ?\r\n '' :\r\n '';\r\n return {\r\n svg: svgMarkup,\r\n fit: [14, 14],\r\n relativePosition: objPosition,\r\n margin: arrMargin,\r\n };\r\n },\r\n image: function( strImageUri, intWidth, arrMargin, strAlignment, strFillColor ) {\r\n var image = {\r\n image: strImageUri,\r\n width: intWidth,\r\n margin: arrMargin,\r\n fillColor: strFillColor,\r\n alignment: strAlignment,\r\n };\r\n\r\n if ( intWidth === 0 ) {\r\n delete image.width;\r\n }\r\n\r\n return image;\r\n },\r\n svg: function( strSvg, intWidth, margin = [0, 0, 0, 0], alignment = 'left' ) {\r\n return {\r\n svg: strSvg,\r\n width: intWidth,\r\n margin: margin,\r\n alignment: alignment,\r\n };\r\n },\r\n line: function() {\r\n return {\r\n canvas: [\r\n {\r\n type: 'line',\r\n x1: 0,\r\n y1: 0,\r\n x2: identity.productDataPdf.settings.pageSize,\r\n y2: 0,\r\n lineWidth: 1,\r\n color: '#888',\r\n }],\r\n };\r\n },\r\n footer: function() {\r\n var userStack = '';\r\n if ( identity.productDataPdf.model.get( 'user.hasUser' ) === true ) {\r\n userStack = {\r\n width: (identity.productDataPdf.settings.pageSize - 60) / 2,\r\n stack: [\r\n { text: identity.productDataPdf.model.get( 'user.name' ), style: 'small' },\r\n { text: identity.productDataPdf.model.get( 'user.address' ), style: 'small' },\r\n {\r\n text: identity.productDataPdf.model.get( 'user.zip' ) + ' - ' + identity.productDataPdf.model.get( 'user.city' ),\r\n style: 'small',\r\n },\r\n { text: identity.productDataPdf.model.get( 'user.country' ), style: 'small' },\r\n { text: identity.productDataPdf.model.get( 'user.email' ), style: 'small' },\r\n ],\r\n fontSize: 6,\r\n };\r\n }\r\n return {\r\n margin: [\r\n 30,\r\n 0,\r\n 30,\r\n 0],\r\n columns: [\r\n {\r\n width: (identity.productDataPdf.settings.pageSize - 60) / 2,\r\n text: identity.productDataPdf.model.get( 'url' ),\r\n fontSize: 8,\r\n },\r\n {\r\n columns: [\r\n identity.pdfUtils.build.image( identity.productDataPdf.model.get( 'user.image' ), 50, [0, 0, 0, 0], 'right' ),\r\n userStack,\r\n ],\r\n columnGap: 10,\r\n alignment: 'right',\r\n },\r\n ],\r\n\r\n };\r\n },\r\n },\r\n styles: {\r\n default: function() {\r\n return {\r\n productName: {\r\n fontSize: 22,\r\n bold: true,\r\n alignment: 'left',\r\n },\r\n date: {\r\n fontSize: 10,\r\n color: '#1f1f1f',\r\n bold: false,\r\n alignment: 'center',\r\n },\r\n productNumber: {\r\n fontSize: 20,\r\n },\r\n disclaimerText: {\r\n fontSize: 8,\r\n alignment: 'left',\r\n },\r\n header: {\r\n fontSize: 12,\r\n bold: true,\r\n },\r\n tableHeaderLeft: {\r\n fontSize: 9,\r\n alignment: 'left',\r\n bold: true,\r\n fillColor: '#fff',\r\n },\r\n tableHeaderRight: {\r\n fontSize: 9,\r\n alignment: 'right',\r\n bold: true,\r\n fillColor: '#fff',\r\n },\r\n spec: {\r\n fontSize: 9,\r\n },\r\n specBold: {\r\n fontSize: 9,\r\n bold: true,\r\n },\r\n copy: {\r\n fontSize: 9,\r\n margin: [\r\n 0,\r\n 15,\r\n 0,\r\n 15,\r\n ],\r\n },\r\n small: {\r\n fontSize: 9,\r\n },\r\n tableHeader: {\r\n bold: true,\r\n fontSize: 10,\r\n color: 'black',\r\n alignment: 'center',\r\n },\r\n };\r\n },\r\n },\r\n};\r\n","var identity = identity || {};\r\n(function() {\r\n 'use strict';\r\n identity.productDataPdf = {\r\n settings: identity.pdfUtils.settings(),\r\n _base: null,\r\n model: {\r\n get: function( key ) {\r\n return identity.pdfUtils.model.get( key, identity.productDataPdf.model );\r\n },\r\n set: function( key, value ) {\r\n return identity.pdfUtils.model.set( key, value, identity.productDataPdf.model );\r\n },\r\n reset: function() {\r\n Object.keys( identity.productDataPdf._base ).forEach( ( key ) => {\r\n identity.productDataPdf.model[key] = identity.productDataPdf._base[key];\r\n } );\r\n },\r\n save: function() {\r\n let destinationObject = {};\r\n Object.keys( identity.productDataPdf.model ).forEach( ( key ) => {\r\n if ( typeof identity.productDataPdf.model[key] !== 'function' ) {\r\n destinationObject[key] = identity.productDataPdf.model[key];\r\n }\r\n } );\r\n return destinationObject;\r\n },\r\n logo: '',\r\n name: '',\r\n number: '',\r\n imageDetails: [],\r\n imagePrimary: {},\r\n url: '',\r\n descriptionLong: '',\r\n highlightedFeatures: [],\r\n compositionHeader: '',\r\n composition: '',\r\n colors: [],\r\n brand: '',\r\n colorVariantText: '',\r\n sizes: [],\r\n user: [],\r\n date: '',\r\n specs: {},\r\n transfer: [],\r\n translations: [],\r\n features: [],\r\n certificates: [],\r\n careSymbols: [],\r\n colorVariantCount: 0,\r\n facilities: [],\r\n productMaterials: [],\r\n },\r\n init: function() {\r\n identity.productDataPdf._base = identity.productDataPdf.model.save();\r\n identity.productDataPdf.bindEvents();\r\n identity.productDataPdf.getTranslations();\r\n },\r\n bindEvents: function() {\r\n jQuery( '.js-identity-download-product-sheet' ).on( 'click', function( event ) {\r\n event.preventDefault();\r\n identity.pdfUtils.loader( true );\r\n identity.productDataPdf.productData.get();\r\n } );\r\n },\r\n getTranslations: async () => {\r\n const translations = await identity.pdfUtils.translations.getValues( {\r\n disclaimerText: 'PDF Generation OBS Text',\r\n colorsHeader: 'PDF Generation Color Text',\r\n featuresHeader: 'PDF Generation Features Text',\r\n descriptionHeader: 'PDF Generation Description',\r\n washingHeadwer: 'PDF Generation Washing',\r\n certificateHeader: 'PDF Generation Certificate',\r\n weightHeader: 'Weight',\r\n sizeHeader: 'Size',\r\n fittingHeader: 'Fit',\r\n brandHeader: 'PDF Generation - Brand',\r\n compositionHeader: 'PDF Generation Composition',\r\n transferHeader: 'PDF Generation Transfer Types',\r\n productionCountryHeader: 'PDF Generation Production Country',\r\n productMaterialsHeader: 'Composition and Materials - Product Materials - Label',\r\n weightUnit: 'WeightUnit - g'\r\n }\r\n );\r\n Object.keys( translations ).forEach( ( key ) => {\r\n identity.productDataPdf.model.set( `translations.${ key }`, translations[key] );\r\n } );\r\n },\r\n productData: {\r\n get: function() {\r\n e4.jsonpublisher.getJsonFromUrl(\r\n e4.settings.ecom.product.url,\r\n jQuery( '.js-e-product' ).data(),\r\n ).done( function( jsonData ) {\r\n identity.productDataPdf.productData.map( jsonData.product );\r\n identity.productDataPdf.productData.extend();\r\n identity.pdfUtils.load( identity.productDataPdf.prepareImages.init );\r\n } );\r\n },\r\n extend: function() {\r\n var secondaryImagesArr = identity.productDataPdf.model.get( 'imageDetails' ),\r\n careSymbolsArr = identity.productDataPdf.model.get( 'careSymbols' ),\r\n colorsArr = identity.productDataPdf.model.get( 'colors' ),\r\n featuresArr = identity.productDataPdf.model.get( 'features' ),\r\n certificatesArr = identity.productDataPdf.model.get( 'certificates' );\r\n\r\n if ( certificatesArr !== null ) {\r\n certificatesArr = Object.values( certificatesArr );\r\n }\r\n\r\n if ( Array.isArray( secondaryImagesArr ) === true ) {\r\n identity.productDataPdf.model.imageDetails = secondaryImagesArr.reduce( function( obj, item, depth ) {\r\n if ( item.original !== identity.productDataPdf.model.get( 'imagePrimary' ).original ) {\r\n obj['index' + depth] = {\r\n img: item.original,\r\n };\r\n }\r\n return obj;\r\n }, {} );\r\n }\r\n\r\n if ( Array.isArray( colorsArr ) === true ) {\r\n if ( colorsArr.length < identity.productDataPdf.model.get( 'colorVariantCount' ) ) {\r\n colorsArr.push(\r\n {\r\n Label: identity.productDataPdf.model.get( 'colorVariantText' ),\r\n Image: identity.productDataPdf.model.get( 'imagePrimary' ),\r\n },\r\n );\r\n }\r\n\r\n identity.productDataPdf.model.colors = colorsArr.reduce( function( obj, item, depth ) {\r\n obj['index' + depth] = {\r\n img: item.Image.original,\r\n label: item.Label,\r\n };\r\n return obj;\r\n }, {} );\r\n }\r\n\r\n if ( Array.isArray( careSymbolsArr ) === true ) {\r\n identity.productDataPdf.model.careSymbols = careSymbolsArr.reduce( function( obj, item, depth ) {\r\n obj['index' + depth] = {\r\n img: item.value,\r\n };\r\n return obj;\r\n }, {} );\r\n }\r\n if ( featuresArr !== null ) {\r\n var counter = 0;\r\n Object.keys( featuresArr ).forEach( ( key ) => {\r\n if ( featuresArr[key] !== null ) {\r\n Object.values( featuresArr[key] ).forEach( ( val ) => {\r\n\r\n if ( val !== null && val !== undefined ) {\r\n identity.productDataPdf.model.features['index' + counter] = {\r\n img: val.icon,\r\n };\r\n }\r\n counter++;\r\n delete featuresArr[key];\r\n } );\r\n } else {\r\n delete featuresArr[key];\r\n }\r\n } );\r\n }\r\n if ( certificatesArr !== null && Array.isArray( certificatesArr ) === true ) {\r\n identity.productDataPdf.model.certificates = certificatesArr.reduce( function( obj, item, depth ) {\r\n obj['index' + depth] = {\r\n img: item.icon,\r\n };\r\n return obj;\r\n }, {} );\r\n }\r\n },\r\n map: function( productData ) {\r\n var productId = jQuery( '.js-e-product' ).data( 'productId' ),\r\n extendPdfData = e4.data.get( [productId, 'PdfData'].join( '_' ) );\r\n Object.assign( productData, extendPdfData );\r\n for ( var key in productData ) {\r\n if ( identity.productDataPdf.model.hasOwnProperty( key ) === true ) {\r\n identity.productDataPdf.model.set( key, productData[key] );\r\n }\r\n }\r\n },\r\n },\r\n prepareImages: {\r\n deferredImages: [],\r\n init: function() {\r\n var logo = {\r\n key: 'logo',\r\n img: identity.productDataPdf.model.get( 'logo' ),\r\n size: {\r\n width: 200,\r\n height: 0,\r\n },\r\n },\r\n primaryImage = {\r\n key: 'imagePrimary',\r\n img: identity.productDataPdf.model.get( 'imagePrimary' ).original,\r\n size: {\r\n width: 500,\r\n height: 0,\r\n },\r\n },\r\n secondaryImages = {\r\n key: 'imageDetails',\r\n img: identity.productDataPdf.model.get( 'imageDetails' ),\r\n size: {\r\n width: 500,\r\n height: 0,\r\n },\r\n },\r\n colors = {\r\n key: 'colors',\r\n img: identity.productDataPdf.model.get( 'colors' ),\r\n size: {\r\n width: 200,\r\n height: 0,\r\n },\r\n },\r\n features = {\r\n key: 'features',\r\n img: identity.productDataPdf.model.get( 'features' ),\r\n size: {\r\n width: 50,\r\n height: 50,\r\n },\r\n },\r\n certificates = {\r\n key: 'certificates',\r\n img: identity.productDataPdf.model.get( 'certificates' ),\r\n size: {\r\n width: 50,\r\n height: 50,\r\n },\r\n },\r\n careSymbols = {\r\n key: 'careSymbols',\r\n img: identity.productDataPdf.model.get( 'careSymbols' ),\r\n size: {\r\n width: 40,\r\n height: 40,\r\n },\r\n },\r\n userImage = {\r\n key: 'user.image',\r\n img: identity.productDataPdf.model.get( 'user.image' ),\r\n size: {\r\n width: 200,\r\n height: 0,\r\n },\r\n };\r\n identity.pdfUtils.loader( true );\r\n if ( logo.img.indexOf( 'data:image/png;base64' ) === -1 ) {\r\n identity.productDataPdf.prepareImages.deferredImages.push( identity.productDataPdf.prepareImages.load( logo, false ) );\r\n }\r\n if ( userImage.img.indexOf( 'data:image/png;base64' ) === -1 ) {\r\n identity.productDataPdf.prepareImages.deferredImages.push( identity.productDataPdf.prepareImages.load( userImage, false ) );\r\n }\r\n if ( primaryImage.img.indexOf( 'data:image/png;base64' ) === -1 ) {\r\n identity.productDataPdf.prepareImages.deferredImages.push( identity.productDataPdf.prepareImages.load( primaryImage, false ) );\r\n }\r\n\r\n if ( Object.keys( secondaryImages.img ).length > 0 ) {\r\n Object.keys( secondaryImages.img ).forEach( function( imageKey ) {\r\n if ( imageKey !== undefined && imageKey !== '' ) {\r\n var imageObj = {\r\n key: 'imageDetails',\r\n index: imageKey,\r\n img: secondaryImages.img[imageKey].img,\r\n size: secondaryImages.size,\r\n };\r\n identity.productDataPdf.prepareImages.deferredImages.push( identity.productDataPdf.prepareImages.load( imageObj, false ) );\r\n }\r\n } );\r\n }\r\n\r\n if ( Object.keys( colors.img ).length > 0 ) {\r\n Object.keys( colors.img ).forEach( function( imageKey ) {\r\n if ( imageKey !== undefined && imageKey !== '' ) {\r\n var imageObj = {\r\n key: 'colors',\r\n index: imageKey,\r\n img: colors.img[imageKey].img === null ? identity.pdfUtils.image.fallback() : colors.img[imageKey].img,\r\n size: colors.size,\r\n };\r\n identity.productDataPdf.prepareImages.deferredImages.push( identity.productDataPdf.prepareImages.load( imageObj, false ) );\r\n }\r\n } );\r\n }\r\n\r\n if ( careSymbols.img !== null && Object.keys( careSymbols.img ).length > 0 ) {\r\n Object.keys( careSymbols.img ).forEach( function( imageKey ) {\r\n\r\n if ( imageKey !== undefined && imageKey !== '' ) {\r\n var imageObj = {\r\n key: 'careSymbols',\r\n index: imageKey,\r\n img: '/files/images/products/WashIcon/' + careSymbols.img[imageKey].img.replace( ',', '' ) + '.svg',\r\n size: careSymbols.size,\r\n };\r\n identity.productDataPdf.prepareImages.deferredImages.push( identity.productDataPdf.prepareImages.load( imageObj, true ) );\r\n }\r\n } );\r\n }\r\n\r\n if ( certificates.img !== null && Object.keys( certificates.img ).length > 0 ) {\r\n Object.keys( certificates.img ).forEach( function( imageKey ) {\r\n if ( imageKey !== undefined && imageKey !== '' ) {\r\n var imageObj = {\r\n key: 'certificates',\r\n index: imageKey,\r\n img: certificates.img[imageKey].img,\r\n size: certificates.size,\r\n };\r\n identity.productDataPdf.prepareImages.deferredImages.push( identity.productDataPdf.prepareImages.load( imageObj, false ) );\r\n\r\n }\r\n } );\r\n }\r\n\r\n if ( Object.keys( features.img ).length > 0 ) {\r\n\r\n Object.keys( features.img ).forEach( function( imageKey ) {\r\n\r\n if ( imageKey !== undefined && imageKey !== '' && features.img[imageKey].img !== null ) {\r\n var imageObj = {\r\n key: 'features',\r\n index: imageKey,\r\n img: features.img[imageKey].img,\r\n size: features.size,\r\n };\r\n identity.productDataPdf.prepareImages.deferredImages.push( identity.productDataPdf.prepareImages.load( imageObj, true ) );\r\n }\r\n } );\r\n }\r\n\r\n jQuery.when.apply( null, identity.productDataPdf.prepareImages.deferredImages ).done( function() {\r\n identity.productDataPdf.prepareImages.deferredImages = [];\r\n identity.productDataPdf.build();\r\n } );\r\n },\r\n load: function( imageObj, isSvg ) {\r\n var image = new Image(),\r\n deferred = jQuery.Deferred();\r\n if ( isSvg === true ) {\r\n var serializer = new XMLSerializer();\r\n jQuery.when( identity.deferImages.convertSvg( imageObj.img ) ).done( function( svg ) {\r\n var cleanedSvg = identity.productDataPdf.prepareImages.updateSvg( svg.get( 0 ) );\r\n identity.productDataPdf.prepareImages.insertIntoModel( imageObj, serializer.serializeToString( cleanedSvg ) );\r\n deferred.resolve();\r\n } );\r\n } else {\r\n image.onload = function() {\r\n var canvas = document.createElement( 'canvas' );\r\n canvas.width = this.naturalWidth === 0 ? imageObj.size.width : this.naturalWidth;\r\n canvas.height = this.naturalHeight === 0 ? imageObj.size.height : this.naturalHeight;\r\n canvas.getContext( '2d' ).drawImage( this, 0, 0 );\r\n imageObj.size.width = image.width;\r\n imageObj.size.height = image.height;\r\n identity.productDataPdf.prepareImages.insertIntoModel( imageObj, canvas.toDataURL() );\r\n\r\n deferred.resolve();\r\n };\r\n image.onerror = function() {\r\n var fallbackImage = identity.pdfUtils.image.fallback();\r\n identity.productDataPdf.prepareImages.insertIntoModel( imageObj, fallbackImage );\r\n deferred.resolve();\r\n };\r\n if ( navigator.userAgent.toLowerCase().indexOf( 'firefox' ) > -1 ) {\r\n image.width = imageObj.size.width;\r\n image.height = imageObj.size.height;\r\n }\r\n image.src = identity.pdfUtils.image.handler( imageObj.img, imageObj.size );\r\n }\r\n\r\n return deferred.promise();\r\n },\r\n insertIntoModel: function( imageObj, dataUri ) {\r\n if ( imageObj.index ) {\r\n identity.productDataPdf.model.set( imageObj.key + '.' + imageObj.index + '.img', dataUri );\r\n identity.productDataPdf.model.set( imageObj.key + '.' + imageObj.index + '.size.width', imageObj.size.width );\r\n identity.productDataPdf.model.set( imageObj.key + '.' + imageObj.index + '.size.height', imageObj.size.height );\r\n } else {\r\n identity.productDataPdf.model.set( imageObj.key, dataUri );\r\n }\r\n },\r\n updateSvg: function( svg ) {\r\n var elements = svg.querySelectorAll( 'path, polyline, polygon' );\r\n\r\n for ( var i = 0; i < elements.length; i++ ) {\r\n elements[i].setAttribute( 'style', 'fill:#6D6F70!important' );\r\n }\r\n return svg;\r\n },\r\n },\r\n constructor: {\r\n color: function() {\r\n return identity.productDataPdf.model.get( 'imagePrimary' );\r\n },\r\n packs: function() {\r\n var bodyData = [],\r\n dataRow = [],\r\n counter = 1,\r\n packs = identity.productDataPdf.model.get( 'colors' ),\r\n flags = {};\r\n if ( jQuery.isEmptyObject( packs ) === false ) {\r\n jQuery.each( packs, function( key ) {\r\n dataRow.push( [\r\n identity.pdfUtils.build.image( packs[key].img, 40, [0, 0, 0, 0], 'center' ), {\r\n text: packs[key].label, style: {\r\n fontSize: 8,\r\n color: '#888',\r\n bold: false,\r\n alignment: 'center',\r\n },\r\n }] );\r\n if ( counter % identity.productDataPdf.settings.packs.colsPerRow === 0 ) {\r\n bodyData.push( dataRow );\r\n dataRow = [];\r\n }\r\n flags[packs[key].label] = true;\r\n counter++;\r\n } );\r\n\r\n if ( dataRow.length ) {\r\n bodyData.push( dataRow );\r\n }\r\n\r\n bodyData.forEach( function( element ) {\r\n if ( element.length < identity.productDataPdf.settings.packs.colsPerRow ) {\r\n while ( element.length < identity.productDataPdf.settings.packs.colsPerRow ) {\r\n element.push( '' );\r\n }\r\n }\r\n } );\r\n } else {\r\n bodyData.push( identity.pdfUtils.fillArray( '', identity.productDataPdf.settings.packs.colsPerRow ) );\r\n }\r\n\r\n return bodyData;\r\n },\r\n mainImages: function() {\r\n var columns = [],\r\n stacks = [],\r\n detailImages = identity.productDataPdf.model.get( 'imageDetails' ),\r\n counter = 0;\r\n\r\n columns.push( identity.pdfUtils.build.image( identity.productDataPdf.model.get( 'imagePrimary' ), 190, [0, 0, 0, 0], 'left' ) );\r\n\r\n jQuery.each( detailImages, function( key ) {\r\n if ( counter < 2 ) {\r\n stacks.push( identity.pdfUtils.build.image( detailImages[key].img, 80, [0, 10, 0, 0] ) );\r\n }\r\n\r\n counter++;\r\n } );\r\n columns.push( {\r\n stack: stacks,\r\n } );\r\n //return bodyData;\r\n return columns;\r\n },\r\n certificates: function() {\r\n var bodyData = [],\r\n dataRow = [],\r\n counter = 1,\r\n alignmentCounter = 1,\r\n certificates = identity.productDataPdf.model.get( 'certificates' );\r\n if ( jQuery.isEmptyObject( certificates ) === false ) {\r\n var alignment = 'left';\r\n\r\n jQuery.each( certificates, function( key ) {\r\n var ratio = Math.min( identity.productDataPdf.settings.certificates.iconSize / certificates[key].size.width,\r\n identity.productDataPdf.settings.certificates.iconSize / certificates[key].size.height ),\r\n height = certificates[key].size.height * ratio,\r\n marginTop = (identity.productDataPdf.settings.certificates.iconSize - height) / 2;\r\n\r\n switch ( alignmentCounter ) {\r\n case 1:\r\n alignment = 'left';\r\n break;\r\n case 2:\r\n alignment = 'center';\r\n break;\r\n case 3:\r\n alignment = 'right';\r\n break;\r\n }\r\n\r\n var imageObj = identity.pdfUtils.build.image(\r\n certificates[key].img,\r\n 75,\r\n [0, marginTop, 0, 0],\r\n alignment,\r\n );\r\n\r\n dataRow.push( [imageObj] );\r\n\r\n if ( counter % identity.productDataPdf.settings.certificates.colsPerRow === 0 ) {\r\n bodyData.push( dataRow );\r\n dataRow = [];\r\n alignmentCounter = 0;\r\n }\r\n alignmentCounter++;\r\n counter++;\r\n } );\r\n\r\n if ( dataRow.length ) {\r\n bodyData.push( dataRow );\r\n }\r\n\r\n bodyData.forEach( function( element ) {\r\n if ( element.length < identity.productDataPdf.settings.certificates.colsPerRow ) {\r\n while ( element.length < identity.productDataPdf.settings.certificates.colsPerRow ) {\r\n element.push( '' );\r\n }\r\n }\r\n } );\r\n } else {\r\n bodyData.push( identity.pdfUtils.fillArray( '', identity.productDataPdf.settings.certificates.colsPerRow ) );\r\n }\r\n\r\n return bodyData;\r\n },\r\n\r\n features: function() {\r\n var bodyData = [],\r\n dataRow = [],\r\n counter = 1,\r\n alignmentCounter = 1,\r\n features = identity.productDataPdf.model.get( 'features' ),\r\n hasValues = Object.values( identity.productDataPdf.model.get( 'features' ) ).filter( function( feature ) {\r\n return feature.img !== null;\r\n } ).length > 0;\r\n\r\n if ( jQuery.isEmptyObject( features ) === false && hasValues === true ) {\r\n var alignment = 'left';\r\n\r\n jQuery.each( features, function( key ) {\r\n\r\n switch ( alignmentCounter ) {\r\n case 1:\r\n alignment = 'left';\r\n break;\r\n case 2:\r\n alignment = 'center';\r\n break;\r\n case 3:\r\n alignment = 'right';\r\n break;\r\n }\r\n\r\n var imageObj = identity.pdfUtils.build.svg(\r\n features[key].img,\r\n 75,\r\n [0, 0, 0, 0],\r\n alignment,\r\n );\r\n\r\n dataRow.push( [imageObj] );\r\n if ( counter % identity.productDataPdf.settings.features.colsPerRow === 0 ) {\r\n bodyData.push( dataRow );\r\n dataRow = [];\r\n alignmentCounter = 0;\r\n }\r\n alignmentCounter++;\r\n counter++;\r\n } );\r\n\r\n if ( dataRow.length ) {\r\n bodyData.push( dataRow );\r\n }\r\n\r\n bodyData.forEach( function( element ) {\r\n if ( element.length < identity.productDataPdf.settings.features.colsPerRow ) {\r\n while ( element.length < identity.productDataPdf.settings.features.colsPerRow ) {\r\n element.push( '' );\r\n }\r\n }\r\n } );\r\n } else {\r\n bodyData.push( identity.pdfUtils.fillArray( '', identity.productDataPdf.settings.features.colsPerRow ) );\r\n }\r\n\r\n return bodyData;\r\n },\r\n specs: function() {\r\n var bodyData = [],\r\n specs = identity.productDataPdf.model.get( 'specs' ),\r\n specWeight = specs.fields.find( function( obj ) {\r\n return obj.id.indexOf( 'gm2' ) > -1;\r\n } ),\r\n specFit = specs.fields.find( function( obj ) {\r\n return obj.id === 'StyleFit';\r\n } ),\r\n composition = identity.productDataPdf.model.get( 'composition' ),\r\n transfer = identity.productDataPdf.model.get( 'transfer' ),\r\n sizes = identity.productDataPdf.model.get( 'sizes' ),\r\n brand = identity.productDataPdf.model.get( 'brand' ),\r\n sizeSpan = sizes.length === 1 ? sizes[0] : sizes[0] + ' - ' + sizes[sizes.length - 1],\r\n careSymbolsArr = identity.productDataPdf.model.get( 'careSymbols' ),\r\n facilities = identity.productDataPdf.model.get( 'facilities' ),\r\n facility = facilities.length > 0 ? facilities[0] : null,\r\n productMaterials = identity.productDataPdf.model.get( 'productMaterials' );\r\n\r\n if ( composition ) {\r\n bodyData.push( [\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.compositionHeader' ),\r\n style: 'specBold',\r\n }, {\r\n text: composition,\r\n style: 'spec',\r\n }] );\r\n }\r\n if ( specWeight ) {\r\n bodyData.push( [\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.weightHeader' ),\r\n style: 'specBold',\r\n }, {\r\n text: specWeight.value + ' ' + identity.productDataPdf.model.get( 'translations.weightUnit' ),\r\n style: 'spec',\r\n }] );\r\n }\r\n if ( sizeSpan ) {\r\n bodyData.push( [\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.sizeHeader' ),\r\n style: 'specBold',\r\n }, {\r\n text: sizeSpan,\r\n style: 'spec',\r\n }] );\r\n }\r\n if ( specFit ) {\r\n bodyData.push( [\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.fittingHeader' ),\r\n style: 'specBold',\r\n }, {\r\n text: specFit.value,\r\n style: 'spec',\r\n }] );\r\n }\r\n\r\n if ( brand !== '' ) {\r\n bodyData.push( [\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.brandHeader' ),\r\n style: 'specBold',\r\n }, {\r\n text: brand,\r\n style: 'spec',\r\n }] );\r\n }\r\n\r\n if ( jQuery.isEmptyObject( careSymbolsArr ) === false ) {\r\n var careRow = [];\r\n jQuery.each( careSymbolsArr, function( key ) {\r\n careRow.push( identity.pdfUtils.build.svg( careSymbolsArr[key].img, 15 ) );\r\n } );\r\n var column = {\r\n columns: careRow,\r\n columnGap: 2,\r\n };\r\n if ( careRow.length ) {\r\n bodyData.push( [\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.washingHeadwer' ),\r\n style: 'specBold',\r\n }, column] );\r\n }\r\n\r\n }\r\n\r\n if ( transfer.length > 0 ) {\r\n bodyData.push( [\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.transferHeader' ),\r\n style: 'specBold',\r\n }, {\r\n text: transfer.map( function( t ) {\r\n return t.Name;\r\n } ).join( ', ' ),\r\n style: 'spec',\r\n }] );\r\n }\r\n if ( facility !== null ) {\r\n bodyData.push( [\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.productionCountryHeader' ),\r\n style: 'specBold',\r\n }, {\r\n text: facility.Country !== '' ? facility.Country : '-',\r\n style: 'spec',\r\n }] );\r\n }\r\n\r\n if ( productMaterials.length > 0 ) {\r\n bodyData.push( [\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.productMaterialsHeader' ),\r\n style: 'specBold',\r\n }, {\r\n text: productMaterials.join( '\\r\\n' ),\r\n style: 'spec',\r\n }] );\r\n }\r\n\r\n return bodyData;\r\n },\r\n rightColumn: function() {\r\n var hasColorPacks = jQuery.isEmptyObject( identity.productDataPdf.model.get( 'colors' ) ) === false,\r\n colorPacks = [\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.colorsHeader' ),\r\n style: 'header',\r\n margin: [32, 17, 0, 10],\r\n }, {\r\n margin: [32, 0, 0, 0],\r\n layout: identity.pdfUtils.cleanTableLayout(),\r\n table: {\r\n widths: identity.pdfUtils.fillArray( '*', identity.productDataPdf.settings.packs.colsPerRow ),\r\n body: identity.productDataPdf.constructor.packs(),\r\n },\r\n\r\n }];\r\n\r\n if ( hasColorPacks === false ) {\r\n colorPacks = '';\r\n }\r\n\r\n var descriptionObj = {\r\n text: identity.productDataPdf.model.get( 'descriptionLong' ),\r\n margin: [32, 0, 15, 0],\r\n style: 'small',\r\n alignment: 'left',\r\n };\r\n\r\n var highlights = identity.productDataPdf.model.get( 'highlightedFeatures' );\r\n var hasFeatures = Object.values( identity.productDataPdf.model.get( 'features' ) ).filter( function( feature ) {\r\n return feature.img !== null;\r\n } ).length > 0;\r\n var certificates = identity.productDataPdf.model.get( 'certificates' );\r\n ;\r\n var hasCertificates = jQuery.isEmptyObject( certificates ) === false;\r\n\r\n if ( highlights.length > 0 ) {\r\n descriptionObj = {\r\n ul: highlights,\r\n margin: [32, 0, 15, 0],\r\n style: 'small',\r\n alignment: 'left',\r\n };\r\n }\r\n\r\n return [\r\n colorPacks,\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.descriptionHeader' ),\r\n style: 'header',\r\n margin: [32, (hasColorPacks ? 20 : 0), 0, 10],\r\n },\r\n descriptionObj,\r\n hasCertificates ? {\r\n text: identity.productDataPdf.model.get( 'translations.certificateHeader' ),\r\n style: 'header',\r\n margin: [32, 20, 0, 10],\r\n } : '',\r\n hasCertificates ? {\r\n margin: [32, 0, 0, 0],\r\n layout: identity.pdfUtils.cleanTableLayout(),\r\n table: {\r\n widths: identity.pdfUtils.fillArray( '*', identity.productDataPdf.settings.certificates.colsPerRow ),\r\n body: identity.productDataPdf.constructor.certificates(),\r\n },\r\n } : '',\r\n hasFeatures ? {\r\n text: identity.productDataPdf.model.get( 'translations.featuresHeader' ),\r\n style: 'header',\r\n margin: [32, 10, 0, 10],\r\n } : '',\r\n hasFeatures ? {\r\n margin: [32, 0, 0, 0],\r\n layout: identity.pdfUtils.cleanTableLayout(),\r\n table: {\r\n widths: identity.pdfUtils.fillArray( '*', identity.productDataPdf.settings.features.colsPerRow ),\r\n body: identity.productDataPdf.constructor.features(),\r\n },\r\n } : '',\r\n ];\r\n\r\n },\r\n leftColumn: function() {\r\n return [\r\n {\r\n layout: identity.pdfUtils.cleanTableLayout(),\r\n table: {\r\n widths: ['*', '*'],\r\n body: [\r\n [\r\n {\r\n columns: [\r\n identity.pdfUtils.build.image( identity.productDataPdf.constructor.color(), 12, [0, 0, 10, 0] ),\r\n {\r\n text: identity.productDataPdf.model.get( 'colorVariantText' ),\r\n fontSize: 10,\r\n margin: [10, 0, 0, 10],\r\n },\r\n ],\r\n margin: [0, 10, 0, 10],\r\n },\r\n ],\r\n ],\r\n },\r\n },\r\n {\r\n columns: identity.productDataPdf.constructor.mainImages(),\r\n },\r\n {\r\n margin: [0, 20, 0, 0],\r\n table: {\r\n widths: ['*', '*'],\r\n body: identity.productDataPdf.constructor.specs(),\r\n },\r\n layout: {\r\n paddingLeft: function() {\r\n return 5;\r\n },\r\n paddingRight: function() {\r\n return 5;\r\n },\r\n paddingTop: function() {\r\n return 8;\r\n },\r\n paddingBottom: function() {\r\n return 8;\r\n },\r\n hLineColor: function() {\r\n return '#888';\r\n },\r\n vLineWidth: function( i ) {\r\n return 0;\r\n },\r\n vLineColor: function() {\r\n return '#888';\r\n },\r\n },\r\n },\r\n {\r\n text: identity.productDataPdf.model.get( 'translations.disclaimerText' ),\r\n style: 'disclaimerText',\r\n margin: [5, 15, 0, 10],\r\n },\r\n ];\r\n },\r\n\r\n },\r\n build: async function() {\r\n let titleFontSize = 22;\r\n const titleWidth = await identity.pdfUtils.measureText( identity.productDataPdf.model.get( 'name' ), {\r\n fontSize: titleFontSize,\r\n } );\r\n if ( titleWidth > 340 ) {\r\n titleFontSize = await identity.pdfUtils.resizeText( identity.productDataPdf.model.get( 'name' ), titleFontSize, 350 );\r\n }\r\n var arrPdf = [],\r\n objContent = [\r\n {\r\n text: identity.productDataPdf.model.get( 'date' ), style: 'date', margin: [0, 0, 0, 30],\r\n },\r\n identity.pdfUtils.build.cornerBracket( 'top', { x: 0, y: -2 } ),\r\n identity.pdfUtils.build.cornerBracket( 'bottom', { x: 0, y: 25 } ),\r\n {\r\n layout: identity.pdfUtils.cleanTableLayout(),\r\n\r\n table: {\r\n widths: ['auto', '*', 50],\r\n\r\n body: [\r\n [\r\n {\r\n text: `NO. ${ identity.productDataPdf.model.get( 'number' ) }`,\r\n style: 'productNumber',\r\n margin: [8, 2, 0, 20],\r\n },\r\n {\r\n text: identity.productDataPdf.model.get( 'name' ),\r\n style: {\r\n fontSize: titleFontSize,\r\n bold: true,\r\n alignment: 'left',\r\n },\r\n margin: [8, (22 - titleFontSize), 0, 20],\r\n },\r\n identity.pdfUtils.build.image( identity.productDataPdf.model.get( 'logo' ), 50, [0, -10, 0, 0] ),\r\n ],\r\n ],\r\n },\r\n },\r\n identity.pdfUtils.build.line(),\r\n {\r\n layout: identity.pdfUtils.cleanTableLayout(),\r\n table: {\r\n widths: ['*', '*'],\r\n body: [\r\n [\r\n identity.productDataPdf.constructor.leftColumn(),\r\n identity.productDataPdf.constructor.rightColumn(),\r\n\r\n ],\r\n ],\r\n },\r\n },\r\n ];\r\n arrPdf.push( objContent );\r\n identity.productDataPdf.create( arrPdf );\r\n },\r\n create: function( arrPdf ) {\r\n pdfMake.fonts = identity.pdfUtils.setFont();\r\n var docDefinition = {\r\n pageSize: 'A4',\r\n pageMargins: identity.productDataPdf.settings.pageMargins,\r\n content: arrPdf,\r\n fonts: identity.pdfUtils.setFont(),\r\n defaultStyle: {\r\n font: identity.productDataPdf.settings.defaultFont,\r\n },\r\n footer: identity.pdfUtils.build.footer(),\r\n styles: identity.pdfUtils.styles.default(),\r\n },\r\n pdfDocGenerator = pdfMake.createPdf( docDefinition, null, identity.pdfUtils.setFont() );\r\n pdfDocGenerator.download( identity.productDataPdf.model.get( 'name' ).replace( / /g, '_' ) + '.pdf' );\r\n pdfDocGenerator.getDataUrl( function() {\r\n identity.pdfUtils.loader( false );\r\n identity.productDataPdf.model.reset();\r\n } );\r\n },\r\n };\r\n}());\r\n","var identity = identity || {};\r\n(function() {\r\n 'use strict';\r\n identity.measurementChart = {\r\n settings: identity.pdfUtils.settings(),\r\n _base: null,\r\n _toleranceDimensions: {width:0,height:0},\r\n model: {\r\n get: function( key ) {\r\n return identity.pdfUtils.model.get( key, identity.measurementChart.model );\r\n },\r\n set: function( key, value ) {\r\n return identity.pdfUtils.model.set( key, value, identity.measurementChart.model );\r\n },\r\n reset: function() {\r\n Object.keys( identity.measurementChart._base ).forEach( ( key ) => {\r\n identity.measurementChart.model[key] = identity.measurementChart._base[key];\r\n } );\r\n },\r\n save: function() {\r\n let destinationObject = {};\r\n Object.keys( identity.measurementChart.model ).forEach( ( key ) => {\r\n if ( typeof identity.measurementChart.model[key] !== 'function' ) {\r\n destinationObject[key] = identity.measurementChart.model[key];\r\n }\r\n } );\r\n return destinationObject;\r\n },\r\n logo: '',\r\n name: '',\r\n number: '',\r\n toleranceImage: '',\r\n drawingImage: '',\r\n measurementDate: '',\r\n measurements: {},\r\n translations: [],\r\n },\r\n init: function() {\r\n identity.measurementChart._base = identity.measurementChart.model.save();\r\n identity.measurementChart.bindEvents();\r\n identity.measurementChart.getTranslations();\r\n },\r\n bindEvents: function() {\r\n jQuery( '.js-identity-download-measurement-chart' ).on( 'click', function( event ) {\r\n event.preventDefault();\r\n identity.pdfUtils.loader( true );\r\n identity.measurementChart.productData.get();\r\n\r\n } );\r\n },\r\n getTranslations: async () => {\r\n const translations = await identity.pdfUtils.translations.getValues( {\r\n howToMeasureHeader: 'PDF Generation - How to measure - Header',\r\n toleranceHeader: 'PDF Generation - Tolerance - Header',\r\n measurementTableHeader: 'PDF Generation - Measurement Table - Header',\r\n measurementFooterText: 'PDF Generation - Measurement Footer - Text',\r\n dateText: 'PDF Generation Date Text',\r\n measurementText: 'PDF Generation Measurement Chart Text',\r\n },\r\n );\r\n Object.keys( translations ).forEach( ( key ) => {\r\n identity.measurementChart.model.set( `translations.${ key }`, translations[key] );\r\n } );\r\n },\r\n productData: {\r\n get: function() {\r\n e4.jsonpublisher.getJsonFromUrl(\r\n e4.settings.ecom.product.url,\r\n jQuery( '.js-e-product' ).data(),\r\n ).done( function( jsonData ) {\r\n identity.measurementChart.productData.map( jsonData.product );\r\n identity.measurementChart.productData.extend();\r\n identity.pdfUtils.load( identity.measurementChart.prepareImages.init );\r\n } );\r\n },\r\n extend: function() {\r\n\r\n },\r\n map: function( productData ) {\r\n var productId = jQuery( '.js-e-product' ).data( 'productId' ),\r\n extendPdfData = e4.data.get( [productId, 'PdfData'].join( '_' ) );\r\n Object.assign( productData, extendPdfData );\r\n for ( var key in productData ) {\r\n if ( identity.measurementChart.model.hasOwnProperty( key ) === true ) {\r\n identity.measurementChart.model.set( key, productData[key] );\r\n }\r\n }\r\n },\r\n },\r\n prepareImages: {\r\n deferredImages: [],\r\n init: function() {\r\n if ( identity.measurementChart.model.get( 'toleranceImage' ) === null ) {\r\n identity.measurementChart.model.set( 'toleranceImage', identity.pdfUtils.image.fallback() );\r\n }\r\n if ( identity.measurementChart.model.get( 'drawingImage' ) === null ) {\r\n identity.measurementChart.model.set( 'drawingImage', identity.pdfUtils.image.fallback() );\r\n }\r\n var logo = {\r\n key: 'logo',\r\n img: identity.measurementChart.model.get( 'logo' ),\r\n size: {\r\n width: 200,\r\n height: 0,\r\n },\r\n },\r\n drawingImage = {\r\n key: 'drawingImage',\r\n img: identity.measurementChart.model.get( 'drawingImage' ),\r\n size: {\r\n width: 800,\r\n height: 0,\r\n },\r\n },\r\n toleranceImage = {\r\n key: 'toleranceImage',\r\n img: identity.measurementChart.model.get( 'toleranceImage' ),\r\n size: {\r\n width: 219,\r\n height: 73,\r\n },\r\n };\r\n identity.pdfUtils.loader( true );\r\n if ( logo.img.indexOf( 'data:image/png;base64' ) === -1 ) {\r\n identity.measurementChart.prepareImages.deferredImages.push( identity.measurementChart.prepareImages.load( logo, false ) );\r\n }\r\n\r\n if ( drawingImage.img.indexOf( 'data:image/png;base64' ) === -1 ) {\r\n identity.measurementChart.prepareImages.deferredImages.push( identity.measurementChart.prepareImages.load( drawingImage, false ) );\r\n }\r\n\r\n if ( toleranceImage.img.indexOf( 'data:image/png;base64' ) === -1 ) {\r\n identity.measurementChart.prepareImages.deferredImages.push( identity.measurementChart.prepareImages.load( toleranceImage, false ) );\r\n }\r\n\r\n jQuery.when.apply( null, identity.measurementChart.prepareImages.deferredImages ).done( function() {\r\n identity.measurementChart.prepareImages.deferredImages = [];\r\n identity.measurementChart.build();\r\n } );\r\n },\r\n load: function( imageObj, isSvg ) {\r\n var image = new Image(),\r\n deferred = jQuery.Deferred();\r\n if ( isSvg === true ) {\r\n var serializer = new XMLSerializer();\r\n jQuery.when( identity.deferImages.convertSvg( imageObj.img ) ).done( function( svg ) {\r\n var cleanedSvg = identity.measurementChart.prepareImages.updateSvg( svg.get( 0 ) );\r\n identity.measurementChart.prepareImages.insertIntoModel( imageObj, serializer.serializeToString( cleanedSvg ) );\r\n deferred.resolve();\r\n } );\r\n } else {\r\n image.onload = function() {\r\n var canvas = document.createElement( 'canvas' );\r\n canvas.width = this.naturalWidth === 0 ? imageObj.size.width : this.naturalWidth;\r\n canvas.height = this.naturalHeight === 0 ? imageObj.size.height : this.naturalHeight;\r\n canvas.getContext( '2d' ).drawImage( this, 0, 0 );\r\n if(imageObj.key === 'toleranceImage'){\r\n identity.measurementChart._toleranceDimensions.height = canvas.height;\r\n identity.measurementChart._toleranceDimensions.width = canvas.width;\r\n \r\n console.log(identity.measurementChart._toleranceDimensions);\r\n }\r\n imageObj.size.width = image.width;\r\n imageObj.size.height = image.height;\r\n identity.measurementChart.prepareImages.insertIntoModel( imageObj, canvas.toDataURL() );\r\n deferred.resolve();\r\n };\r\n image.onerror = function() {\r\n var fallbackImage = identity.pdfUtils.image.fallback();\r\n identity.measurementChart.prepareImages.insertIntoModel( imageObj, fallbackImage );\r\n deferred.resolve();\r\n };\r\n if ( navigator.userAgent.toLowerCase().indexOf( 'firefox' ) > -1 ) {\r\n image.width = imageObj.size.width;\r\n image.height = imageObj.size.height;\r\n }\r\n image.src = identity.pdfUtils.image.handler( imageObj.img, imageObj.size );\r\n }\r\n\r\n return deferred.promise();\r\n },\r\n insertIntoModel: function( imageObj, dataUri ) {\r\n if ( imageObj.index ) {\r\n identity.measurementChart.model.set( imageObj.key + '.' + imageObj.index + '.img', dataUri );\r\n identity.measurementChart.model.set( imageObj.key + '.' + imageObj.index + '.size.width', imageObj.size.width );\r\n identity.measurementChart.model.set( imageObj.key + '.' + imageObj.index + '.size.height', imageObj.size.height );\r\n } else {\r\n identity.measurementChart.model.set( imageObj.key, dataUri );\r\n }\r\n },\r\n updateSvg: function( svg ) {\r\n var elements = svg.querySelectorAll( 'path, polyline, polygon' );\r\n\r\n for ( var i = 0; i < elements.length; i++ ) {\r\n elements[i].setAttribute( 'style', 'fill:#6D6F70!important' );\r\n }\r\n return svg;\r\n },\r\n },\r\n constructor: {\r\n getMeasurementTable: () => {\r\n const measurementData = identity.measurementChart.model.get( 'measurements' );\r\n const data = Object.values( measurementData.Charts ).sort( ( a, b ) => a.Position - b.Position );\r\n const sizes = data.map( e => e.Sizes ).map( e => Object.values( e ) );\r\n const sortedHeaderSizes = Object.values( sizes[0] ).sort( ( a, b ) => a.ComputedValue - b.ComputedValue );\r\n\r\n let widths = ['auto'];\r\n let headers = [\r\n {\r\n text: identity.measurementChart.model.get( 'translations.measurementTableHeader' ),\r\n style: ['tableHeader', { alignment: 'left' }],\r\n }];\r\n\r\n sortedHeaderSizes.forEach( ( sizeObj ) => {\r\n widths.push( '*' );\r\n headers.push( {\r\n text: sizeObj.Name,\r\n style: ['tableHeader', { alignment: 'center' }],\r\n } );\r\n } );\r\n const bodyData = [];\r\n bodyData.push( headers );\r\n data.forEach( ( row ) => {\r\n const rowData = [];\r\n const sortedRowSizes = Object.values( row.Sizes ).sort( ( a, b ) => a.ComputedValue - b.ComputedValue );\r\n rowData.push( {\r\n text: row.Description,\r\n style: { alignment: 'left' },\r\n } );\r\n sortedRowSizes.forEach( ( size ) => {\r\n rowData.push( {\r\n text: size.ComputedValue,\r\n style: { alignment: 'center' },\r\n } );\r\n } );\r\n bodyData.push( rowData );\r\n } );\r\n\r\n return {\r\n layout: {\r\n fillColor: function( rowIndex ) {\r\n return (rowIndex % 2 === 0) ? '#f1f1f1' : null;\r\n },\r\n hLineWidth: function (i, node) {\r\n return 0.5;\r\n },\r\n vLineWidth: function (i, node) {\r\n return 0.5;\r\n },\r\n hLineColor: function (i, node) {\r\n return 'gray';\r\n },\r\n vLineColor: function (i, node) {\r\n return 'gray';\r\n },\r\n },\r\n table: {\r\n headerRows: 1,\r\n widths: widths,\r\n body: bodyData,\r\n },\r\n margin: [0, 20, 0, 0],\r\n style: {\r\n fontSize: 10,\r\n },\r\n };\r\n },\r\n },\r\n build: async function() {\r\n let titleFontSize = 22;\r\n const titleWidth = await identity.pdfUtils.measureText( identity.measurementChart.model.get( 'name' ), {\r\n fontSize: titleFontSize,\r\n } );\r\n if ( titleWidth > 340 ) {\r\n titleFontSize = await identity.pdfUtils.resizeText( identity.measurementChart.model.get( 'name' ), titleFontSize, 350 );\r\n }\r\n const dateText = `${ identity.measurementChart.model.get( 'translations.dateText' ) } ${ identity.measurementChart.model.get(\r\n 'measurementDate' ) } - ${ identity.measurementChart.model.get( 'translations.measurementText' ) }`;\r\n \r\n var arrPdf = [],\r\n objContent = [\r\n {\r\n text: dateText, style: 'date', margin: [0, 0, 0, 30],\r\n },\r\n identity.pdfUtils.build.cornerBracket( 'top', { x: 0, y: -2 } ),\r\n identity.pdfUtils.build.cornerBracket( 'bottom', { x: 0, y: 25 } ),\r\n {\r\n layout: identity.pdfUtils.cleanTableLayout(),\r\n\r\n table: {\r\n widths: ['auto', '*', 50],\r\n\r\n body: [\r\n [\r\n {\r\n text: `NO. ${ identity.measurementChart.model.get( 'number' ) }`,\r\n style: 'productNumber',\r\n margin: [8, 2, 0, 20],\r\n },\r\n {\r\n text: identity.measurementChart.model.get( 'name' ),\r\n style: {\r\n fontSize: titleFontSize,\r\n bold: true,\r\n alignment: 'left',\r\n },\r\n margin: [8, (22 - titleFontSize), 0, 20],\r\n },\r\n identity.pdfUtils.build.image( identity.measurementChart.model.get( 'logo' ), 50, [0, -10, 0, 0] ),\r\n ],\r\n ],\r\n },\r\n },\r\n identity.pdfUtils.build.line(),\r\n identity.measurementChart.constructor.getMeasurementTable(),\r\n {\r\n text: identity.measurementChart.model.get( 'translations.howToMeasureHeader' ),\r\n style: {\r\n fontSize: 12,\r\n bold: true,\r\n alignment: 'left',\r\n },\r\n margin: [0, 40, 0, 10],\r\n },\r\n identity.pdfUtils.build.image( identity.measurementChart.model.get( 'drawingImage' ), 400, [0, 0, 0, 0], 'center' ),\r\n {\r\n text: identity.measurementChart.model.get( 'translations.toleranceHeader' ),\r\n style: {\r\n fontSize: 12,\r\n bold: true,\r\n alignment: 'left',\r\n },\r\n margin: [0, 20, 0, 10],\r\n },\r\n identity.pdfUtils.build.image( identity.measurementChart.model.get( 'toleranceImage' ), 150, [0, 0, 0, 0] ),\r\n ];\r\n arrPdf.push( objContent );\r\n identity.measurementChart.create( arrPdf );\r\n },\r\n create: function( arrPdf ) {\r\n pdfMake.fonts = identity.pdfUtils.setFont();\r\n var docDefinition = {\r\n pageSize: 'A4',\r\n pageMargins: [\r\n 30,\r\n 20,\r\n 30,\r\n 70,\r\n ],\r\n content: arrPdf,\r\n fonts: identity.pdfUtils.setFont(),\r\n defaultStyle: {\r\n font: identity.measurementChart.settings.defaultFont,\r\n },\r\n styles: identity.pdfUtils.styles.default(),\r\n footer: {\r\n margin: [\r\n 30,\r\n 0,\r\n 30,\r\n 0,\r\n ],\r\n columns: [\r\n {\r\n text: identity.measurementChart.model.get( 'translations.measurementFooterText' ),\r\n alignment: 'center',\r\n fontSize: 8,\r\n },\r\n ],\r\n },\r\n },\r\n pdfDocGenerator = pdfMake.createPdf( docDefinition, null, identity.pdfUtils.setFont() );\r\n const pdfName = `${ identity.measurementChart.model.get( 'name' ).replace( / /g, '_' ) }_${ identity.measurementChart.model.get( 'translations.measurementText' ) }.pdf`;\r\n pdfDocGenerator.download( pdfName );\r\n pdfDocGenerator.getDataUrl( function() {\r\n identity.pdfUtils.loader( false );\r\n identity.measurementChart.model.reset();\r\n } );\r\n },\r\n };\r\n}());\r\n"]}