{"version":3,"sources":["Libs/dom-to-image.js","Commons/script/snapshot.js","Commons/script/chartServices.js","Commons/script/basicInfoCharts.js","Commons/script/widgetLogin.js","Apps/Basic/script/appdigital.js"],"names":["global","toSvg","node","options","applyOptions","clone","bgcolor","style","backgroundColor","width","height","Object","keys","forEach","property","Promise","resolve","then","cloneNode","filter","embedFonts","inlineImages","makeSvgDataUri","util","toPixelData","draw","canvas","getContext","getImageData","data","toPng","toDataURL","toJpeg","quality","toBlob","canvasToBlob","domNode","newCanvas","document","createElement","ctx","fillStyle","fillRect","makeImage","delay","image","drawImage","root","makeNodeCopy","HTMLCanvasElement","cloneChildren","original","cloneChildrenInOrder","parent","children","done","child","childClone","appendChild","childNodes","length","asArray","processClone","cloneStyle","copyStyle","source","target","copyProperties","name","setProperty","getPropertyValue","getPropertyPriority","cssText","window","getComputedStyle","clonePseudoElements","clonePseudoElement","element","formatPseudoElementStyle","className","formatCssText","content","formatCssProperties","formatProperty","map","join","selector","createTextNode","uid","styleElement","copyUserInput","HTMLTextAreaElement","innerHTML","value","HTMLInputElement","setAttribute","fixSvg","SVGElement","SVGRectElement","attribute","getAttribute","Element","fontFaces","resolveAll","styleNode","images","inlineAll","XMLSerializer","serializeToString","escapeXhtml","xhtml","foreignObject","svg","newUtil","mimes","WOFF","JPEG","woff","woff2","ttf","eot","png","jpg","jpeg","gif","tiff","parseExtension","url","match","exec","mimeType","extension","toLowerCase","isDataUrl","search","binaryString","atob","split","binaryArray","Uint8Array","i","charCodeAt","Blob","type","resolveUrl","baseUrl","doc","implementation","createHTMLDocument","base","head","a","body","href","index","fourRandomChars","Math","random","pow","toString","slice","uri","reject","Image","onload","onerror","src","getAndEncode","TIMEOUT","request","readyState","status","fail","encoder","FileReader","onloadend","result","readAsDataURL","response","timeout","message","console","error","XMLHttpRequest","onreadystatechange","ontimeout","responseType","open","send","dataAsUrl","escape","string","replace","ms","arg","setTimeout","arrayLike","array","push","leftBorder","px","rightBorder","scrollWidth","topBorder","bottomBorder","scrollHeight","styleProperty","parseFloat","newInliner","shouldProcess","URL_REGEX","readUrls","inline","get","urlAsRegex","RegExp","dataUrl","nothingToInline","urls","impl","newFontFaces","readAll","webFonts","all","webFont","cssStrings","selectWebFontRules","cssRules","rule","CSSRule","FONT_FACE_RULE","inliner","getCssRules","styleSheets","sheet","bind","e","log","newWebFont","webFontRule","parentStyleSheet","rules","newImages","newImage","inlineBackground","background","inlined","HTMLImageElement","domtoimage","module","exports","this","define","$","calculateDimension","el","current","siblings","find","w","h","rate","undefined","getElementsByTagName","css","round","parseType","stringId","setDimension","item","attr","cloneToNewContainer","parentId","currentArticleCode","oldEl","newContainer","id","class","hasMoreChart","clonedEl","append","initialize","userId","mediaId","on","prop","domToExport","hide","ajax","JSON","stringify","contentType","success","call","renderDrillChart","chartName","settings","Highcharts","chart","title","text","xAxis","lineColor","tickLength","yAxis","min","gridLineColor","lineWidth","labels","enabled","credits","legend","plotOptions","series","borderWidth","dataLabels","format","tooltip","headerFormat","pointFormat","renderColumnChart","currentSettings","labelsFormat","labelsUseRotation","useLabelsRotation","labelsRotation","labelsCrop","labelsOverflow","labelsY","labelsX","xAxisType","xAxisTickAmount","yAxisType","yAxisTickAmount","yAxisMaxPadding","yAxisMinPadding","tickAmount","minorTickLength","autoRotation","color","cursor","fontSize","fontFamily","maxPadding","minPadding","subtitle","fontWeight","rotation","crop","overflow","y","x","renderStackedColumnChart","stackLabels","setOptions","lang","resetZoom","events","load","s","update","showInLegend","points","every","isNull","zoomType","reversed","column","stacking","theme","dataLabelsColor","renderBarChart","textOverflow","endOnTick","renderSplineChart","shared","months","shortMonths","weekdays","layout","align","verticalAlign","floating","legendBackgroundColor","areaspline","fillOpacity","marker","renderPieChart","plotBackgroundColor","plotBorderWidth","plotShadow","pie","allowPointSelect","valueDecimals","valueSuffix","itemDistance","itemWidth","renderStackedChart","connectNulls","enableMouseTracking","area","getWeekChartCategories","weekLabels","categories","difference","j","len","previous","weekAndYear","weekCategory","weekIndex","year","week","label","thousandFormat","CanvasRenderer","cachedBackground","size","translate","rotate","PI","radius","Date","now","drawCircle","percent","max","isNegative","beginPath","arc","strokeStyle","stroke","reqAnimationFrame","requestAnimationFrame","webkitRequestAnimationFrame","mozRequestAnimationFrame","callback","drawBackground","trackColor","clear","clearRect","putImageData","lineCap","barColor","animate","from","to","startTime","animation","process","duration","currentValue","easing","onStep","pieChart","userOptions","defaultOptions","t","b","c","d","renderer","hasOwnProperty","jQuery","isFunction","newValue","fn","each","chartServices","executeAdvertisersChart","executeAgeChart","executeGenderChart","cardId","chartId","calculateAdvertisersData","TSUrl","ApiUrl","dataType","res","chartSettings","expenseChartDataPoints","removeClass","ref","colorByPoint","advertiser","calculateGenderData","reachText","dataPoints","surveyName","totalReach","female","html","male","femalePercentage","femaleReach","malePercentage","maleReach","sum","reach","calculateAgeData","minorGridLineWidth","reduce","total","age","reverse","optionName","addClass","password","username","preventDefault","val","MediaUrl","crossdomain","xhrFields","withCredentials","UserName","Password","mediafactsUrl","require","_","snapshot","basicInfoCharts","widgetLogin"],"mappings":"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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACltBA,ADmtBA;ACltBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACnNA,ADoNA;ACnNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;ACttBA,ADutBA;ACttBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,AChLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AClDA,ADmDA;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"basicdigital.dist.js","sourcesContent":["(function (global) {\r\n 'use strict';\r\n\r\n var util = newUtil();\r\n var inliner = newInliner();\r\n var fontFaces = newFontFaces();\r\n var images = newImages();\r\n\r\n var domtoimage = {\r\n toSvg: toSvg,\r\n toPng: toPng,\r\n toJpeg: toJpeg,\r\n toBlob: toBlob,\r\n toPixelData: toPixelData,\r\n impl: {\r\n fontFaces: fontFaces,\r\n images: images,\r\n util: util,\r\n inliner: inliner\r\n }\r\n };\r\n\r\n if (typeof module !== 'undefined')\r\n module.exports = domtoimage;\r\n else\r\n global.domtoimage = domtoimage;\r\n\r\n\r\n /**\r\n * @param {Node} node - The DOM Node object to render\r\n * @param {Object} options - Rendering options\r\n * @param {Function} options.filter - Should return true if passed node should be included in the output\r\n * (excluding node means excluding it's children as well). Not called on the root node.\r\n * @param {String} options.bgcolor - color for the background, any valid CSS color value.\r\n * @param {Number} options.width - width to be applied to node before rendering.\r\n * @param {Number} options.height - height to be applied to node before rendering.\r\n * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\r\n * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\r\n defaults to 1.0.\r\n * @return {Promise} - A promise that is fulfilled with a SVG image data URL\r\n * */\r\n function toSvg(node, options) {\r\n options = options || {};\r\n return Promise.resolve(node)\r\n .then(function (node) {\r\n return cloneNode(node, options.filter, true);\r\n })\r\n .then(embedFonts)\r\n .then(inlineImages)\r\n .then(applyOptions)\r\n .then(function (clone) {\r\n return makeSvgDataUri(clone,\r\n options.width || util.width(node),\r\n options.height || util.height(node)\r\n );\r\n });\r\n\r\n function applyOptions(clone) {\r\n if (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\r\n\r\n if (options.width) clone.style.width = options.width + 'px';\r\n if (options.height) clone.style.height = options.height + 'px';\r\n\r\n if (options.style)\r\n Object.keys(options.style).forEach(function (property) {\r\n clone.style[property] = options.style[property];\r\n });\r\n\r\n return clone;\r\n }\r\n }\r\n\r\n /**\r\n * @param {Node} node - The DOM Node object to render\r\n * @param {Object} options - Rendering options, @see {@link toSvg}\r\n * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\r\n * */\r\n function toPixelData(node, options) {\r\n return draw(node, options || {})\r\n .then(function (canvas) {\r\n return canvas.getContext('2d').getImageData(\r\n 0,\r\n 0,\r\n util.width(node),\r\n util.height(node)\r\n ).data;\r\n });\r\n }\r\n\r\n /**\r\n * @param {Node} node - The DOM Node object to render\r\n * @param {Object} options - Rendering options, @see {@link toSvg}\r\n * @return {Promise} - A promise that is fulfilled with a PNG image data URL\r\n * */\r\n function toPng(node, options) {\r\n return draw(node, options || {})\r\n .then(function (canvas) {\r\n return canvas.toDataURL();\r\n });\r\n }\r\n\r\n /**\r\n * @param {Node} node - The DOM Node object to render\r\n * @param {Object} options - Rendering options, @see {@link toSvg}\r\n * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\r\n * */\r\n function toJpeg(node, options) {\r\n options = options || {};\r\n return draw(node, options)\r\n .then(function (canvas) {\r\n return canvas.toDataURL('image/jpeg', options.quality || 1.0);\r\n });\r\n }\r\n\r\n /**\r\n * @param {Node} node - The DOM Node object to render\r\n * @param {Object} options - Rendering options, @see {@link toSvg}\r\n * @return {Promise} - A promise that is fulfilled with a PNG image blob\r\n * */\r\n function toBlob(node, options) {\r\n return draw(node, options || {})\r\n .then(util.canvasToBlob);\r\n }\r\n\r\n function draw(domNode, options) {\r\n return toSvg(domNode, options)\r\n .then(util.makeImage)\r\n .then(util.delay(100))\r\n .then(function (image) {\r\n var canvas = newCanvas(domNode);\r\n canvas.getContext('2d').drawImage(image, 0, 0);\r\n return canvas;\r\n });\r\n\r\n function newCanvas(domNode) {\r\n var canvas = document.createElement('canvas');\r\n canvas.width = options.width || util.width(domNode);\r\n canvas.height = options.height || util.height(domNode);\r\n\r\n if (options.bgcolor) {\r\n var ctx = canvas.getContext('2d');\r\n ctx.fillStyle = options.bgcolor;\r\n ctx.fillRect(0, 0, canvas.width, canvas.height);\r\n }\r\n\r\n return canvas;\r\n }\r\n }\r\n\r\n function cloneNode(node, filter, root) {\r\n if (!root && filter && !filter(node)) return Promise.resolve();\r\n\r\n return Promise.resolve(node)\r\n .then(makeNodeCopy)\r\n .then(function (clone) {\r\n return cloneChildren(node, clone, filter);\r\n })\r\n .then(function (clone) {\r\n return processClone(node, clone);\r\n });\r\n\r\n function makeNodeCopy(node) {\r\n if (node instanceof HTMLCanvasElement) return util.makeImage(node.toDataURL());\r\n return node.cloneNode(false);\r\n }\r\n\r\n function cloneChildren(original, clone, filter) {\r\n var children = original.childNodes;\r\n if (children.length === 0) return Promise.resolve(clone);\r\n\r\n return cloneChildrenInOrder(clone, util.asArray(children), filter)\r\n .then(function () {\r\n return clone;\r\n });\r\n\r\n function cloneChildrenInOrder(parent, children, filter) {\r\n var done = Promise.resolve();\r\n children.forEach(function (child) {\r\n done = done\r\n .then(function () {\r\n return cloneNode(child, filter);\r\n })\r\n .then(function (childClone) {\r\n if (childClone) parent.appendChild(childClone);\r\n });\r\n });\r\n return done;\r\n }\r\n }\r\n\r\n function processClone(original, clone) {\r\n if (!(clone instanceof Element)) return clone;\r\n\r\n return Promise.resolve()\r\n .then(cloneStyle)\r\n .then(clonePseudoElements)\r\n .then(copyUserInput)\r\n .then(fixSvg)\r\n .then(function () {\r\n return clone;\r\n });\r\n\r\n function cloneStyle() {\r\n copyStyle(window.getComputedStyle(original), clone.style);\r\n\r\n function copyStyle(source, target) {\r\n if (source.cssText) target.cssText = source.cssText;\r\n else copyProperties(source, target);\r\n\r\n function copyProperties(source, target) {\r\n util.asArray(source).forEach(function (name) {\r\n target.setProperty(\r\n name,\r\n source.getPropertyValue(name),\r\n source.getPropertyPriority(name)\r\n );\r\n });\r\n }\r\n }\r\n }\r\n\r\n function clonePseudoElements() {\r\n [':before', ':after'].forEach(function (element) {\r\n clonePseudoElement(element);\r\n });\r\n\r\n function clonePseudoElement(element) {\r\n var style = window.getComputedStyle(original, element);\r\n var content = style.getPropertyValue('content');\r\n\r\n if (content === '' || content === 'none') return;\r\n\r\n var className = util.uid();\r\n clone.className = clone.className + ' ' + className;\r\n var styleElement = document.createElement('style');\r\n styleElement.appendChild(formatPseudoElementStyle(className, element, style));\r\n clone.appendChild(styleElement);\r\n\r\n function formatPseudoElementStyle(className, element, style) {\r\n var selector = '.' + className + ':' + element;\r\n var cssText = style.cssText ? formatCssText(style) : formatCssProperties(style);\r\n return document.createTextNode(selector + '{' + cssText + '}');\r\n\r\n function formatCssText(style) {\r\n var content = style.getPropertyValue('content');\r\n return style.cssText + ' content: ' + content + ';';\r\n }\r\n\r\n function formatCssProperties(style) {\r\n\r\n return util.asArray(style)\r\n .map(formatProperty)\r\n .join('; ') + ';';\r\n\r\n function formatProperty(name) {\r\n return name + ': ' +\r\n style.getPropertyValue(name) +\r\n (style.getPropertyPriority(name) ? ' !important' : '');\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function copyUserInput() {\r\n if (original instanceof HTMLTextAreaElement) clone.innerHTML = original.value;\r\n if (original instanceof HTMLInputElement) clone.setAttribute(\"value\", original.value);\r\n }\r\n\r\n function fixSvg() {\r\n if (!(clone instanceof SVGElement)) return;\r\n clone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\r\n\r\n if (!(clone instanceof SVGRectElement)) return;\r\n ['width', 'height'].forEach(function (attribute) {\r\n var value = clone.getAttribute(attribute);\r\n if (!value) return;\r\n\r\n clone.style.setProperty(attribute, value);\r\n });\r\n }\r\n }\r\n }\r\n\r\n function embedFonts(node) {\r\n return fontFaces.resolveAll()\r\n .then(function (cssText) {\r\n var styleNode = document.createElement('style');\r\n node.appendChild(styleNode);\r\n styleNode.appendChild(document.createTextNode(cssText));\r\n return node;\r\n });\r\n }\r\n\r\n function inlineImages(node) {\r\n return images.inlineAll(node)\r\n .then(function () {\r\n return node;\r\n });\r\n }\r\n\r\n function makeSvgDataUri(node, width, height) {\r\n return Promise.resolve(node)\r\n .then(function (node) {\r\n node.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\r\n return new XMLSerializer().serializeToString(node);\r\n })\r\n .then(util.escapeXhtml)\r\n .then(function (xhtml) {\r\n return '' + xhtml + '';\r\n })\r\n .then(function (foreignObject) {\r\n return '' +\r\n foreignObject + '';\r\n })\r\n .then(function (svg) {\r\n return 'data:image/svg+xml;charset=utf-8,' + svg;\r\n });\r\n }\r\n\r\n function newUtil() {\r\n return {\r\n escape: escape,\r\n parseExtension: parseExtension,\r\n mimeType: mimeType,\r\n dataAsUrl: dataAsUrl,\r\n isDataUrl: isDataUrl,\r\n canvasToBlob: canvasToBlob,\r\n resolveUrl: resolveUrl,\r\n getAndEncode: getAndEncode,\r\n uid: uid(),\r\n delay: delay,\r\n asArray: asArray,\r\n escapeXhtml: escapeXhtml,\r\n makeImage: makeImage,\r\n width: width,\r\n height: height\r\n };\r\n\r\n function mimes() {\r\n /*\r\n * Only WOFF and EOT mime types for fonts are 'real'\r\n * see http://www.iana.org/assignments/media-types/media-types.xhtml\r\n */\r\n var WOFF = 'application/font-woff';\r\n var JPEG = 'image/jpeg';\r\n\r\n return {\r\n 'woff': WOFF,\r\n 'woff2': WOFF,\r\n 'ttf': 'application/font-truetype',\r\n 'eot': 'application/vnd.ms-fontobject',\r\n 'png': 'image/png',\r\n 'jpg': JPEG,\r\n 'jpeg': JPEG,\r\n 'gif': 'image/gif',\r\n 'tiff': 'image/tiff',\r\n 'svg': 'image/svg+xml'\r\n };\r\n }\r\n\r\n function parseExtension(url) {\r\n var match = /\\.([^\\.\\/]*?)$/g.exec(url);\r\n if (match) return match[1];\r\n else return '';\r\n }\r\n\r\n function mimeType(url) {\r\n var extension = parseExtension(url).toLowerCase();\r\n return mimes()[extension] || '';\r\n }\r\n\r\n function isDataUrl(url) {\r\n return url.search(/^(data:)/) !== -1;\r\n }\r\n\r\n function toBlob(canvas) {\r\n return new Promise(function (resolve) {\r\n var binaryString = window.atob(canvas.toDataURL().split(',')[1]);\r\n var length = binaryString.length;\r\n var binaryArray = new Uint8Array(length);\r\n\r\n for (var i = 0; i < length; i++)\r\n binaryArray[i] = binaryString.charCodeAt(i);\r\n\r\n resolve(new Blob([binaryArray], {\r\n type: 'image/png'\r\n }));\r\n });\r\n }\r\n\r\n function canvasToBlob(canvas) {\r\n if (canvas.toBlob)\r\n return new Promise(function (resolve) {\r\n canvas.toBlob(resolve);\r\n });\r\n\r\n return toBlob(canvas);\r\n }\r\n\r\n function resolveUrl(url, baseUrl) {\r\n var doc = document.implementation.createHTMLDocument();\r\n var base = doc.createElement('base');\r\n doc.head.appendChild(base);\r\n var a = doc.createElement('a');\r\n doc.body.appendChild(a);\r\n base.href = baseUrl;\r\n a.href = url;\r\n return a.href;\r\n }\r\n\r\n function uid() {\r\n var index = 0;\r\n\r\n return function () {\r\n return 'u' + fourRandomChars() + index++;\r\n\r\n function fourRandomChars() {\r\n /* see http://stackoverflow.com/a/6248722/2519373 */\r\n return ('0000' + (Math.random() * Math.pow(36, 4) << 0).toString(36)).slice(-4);\r\n }\r\n };\r\n }\r\n\r\n function makeImage(uri) {\r\n return new Promise(function (resolve, reject) {\r\n var image = new Image();\r\n image.onload = function () {\r\n resolve(image);\r\n };\r\n image.onerror = reject;\r\n image.src = uri;\r\n });\r\n }\r\n\r\n function getAndEncode(url) {\r\n var TIMEOUT = 30000;\r\n\r\n return new Promise(function (resolve) {\r\n var request = new XMLHttpRequest();\r\n\r\n request.onreadystatechange = done;\r\n request.ontimeout = timeout;\r\n request.responseType = 'blob';\r\n request.timeout = TIMEOUT;\r\n request.open('GET', url, true);\r\n request.send();\r\n\r\n function done() {\r\n if (request.readyState !== 4) return;\r\n\r\n if (request.status !== 200) {\r\n fail('cannot fetch resource: ' + url + ', status: ' + request.status);\r\n return;\r\n }\r\n\r\n var encoder = new FileReader();\r\n encoder.onloadend = function () {\r\n var content = encoder.result.split(/,/)[1];\r\n resolve(content);\r\n };\r\n encoder.readAsDataURL(request.response);\r\n }\r\n\r\n function timeout() {\r\n fail('timeout of ' + TIMEOUT + 'ms occured while fetching resource: ' + url);\r\n }\r\n\r\n function fail(message) {\r\n console.error(message);\r\n resolve('');\r\n }\r\n });\r\n }\r\n\r\n function dataAsUrl(content, type) {\r\n return 'data:' + type + ';base64,' + content;\r\n }\r\n\r\n function escape(string) {\r\n return string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\r\n }\r\n\r\n function delay(ms) {\r\n return function (arg) {\r\n return new Promise(function (resolve) {\r\n setTimeout(function () {\r\n resolve(arg);\r\n }, ms);\r\n });\r\n };\r\n }\r\n\r\n function asArray(arrayLike) {\r\n var array = [];\r\n var length = arrayLike.length;\r\n for (var i = 0; i < length; i++) array.push(arrayLike[i]);\r\n return array;\r\n }\r\n\r\n function escapeXhtml(string) {\r\n return string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\r\n }\r\n\r\n function width(node) {\r\n var leftBorder = px(node, 'border-left-width');\r\n var rightBorder = px(node, 'border-right-width');\r\n return node.scrollWidth + leftBorder + rightBorder;\r\n }\r\n\r\n function height(node) {\r\n var topBorder = px(node, 'border-top-width');\r\n var bottomBorder = px(node, 'border-bottom-width');\r\n return node.scrollHeight + topBorder + bottomBorder;\r\n }\r\n\r\n function px(node, styleProperty) {\r\n var value = window.getComputedStyle(node).getPropertyValue(styleProperty);\r\n return parseFloat(value.replace('px', ''));\r\n }\r\n }\r\n\r\n function newInliner() {\r\n var URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\r\n\r\n return {\r\n inlineAll: inlineAll,\r\n shouldProcess: shouldProcess,\r\n impl: {\r\n readUrls: readUrls,\r\n inline: inline\r\n }\r\n };\r\n\r\n function shouldProcess(string) {\r\n return string.search(URL_REGEX) !== -1;\r\n }\r\n\r\n function readUrls(string) {\r\n var result = [];\r\n var match;\r\n while ((match = URL_REGEX.exec(string)) !== null) {\r\n result.push(match[1]);\r\n }\r\n return result.filter(function (url) {\r\n return !util.isDataUrl(url);\r\n });\r\n }\r\n\r\n function inline(string, url, baseUrl, get) {\r\n return Promise.resolve(url)\r\n .then(function (url) {\r\n return baseUrl ? util.resolveUrl(url, baseUrl) : url;\r\n })\r\n .then(get || util.getAndEncode)\r\n .then(function (data) {\r\n return util.dataAsUrl(data, util.mimeType(url));\r\n })\r\n .then(function (dataUrl) {\r\n return string.replace(urlAsRegex(url), '$1' + dataUrl + '$3');\r\n });\r\n\r\n function urlAsRegex(url) {\r\n return new RegExp('(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))', 'g');\r\n }\r\n }\r\n\r\n function inlineAll(string, baseUrl, get) {\r\n if (nothingToInline()) return Promise.resolve(string);\r\n\r\n return Promise.resolve(string)\r\n .then(readUrls)\r\n .then(function (urls) {\r\n var done = Promise.resolve(string);\r\n urls.forEach(function (url) {\r\n done = done.then(function (string) {\r\n return inline(string, url, baseUrl, get);\r\n });\r\n });\r\n return done;\r\n });\r\n\r\n function nothingToInline() {\r\n return !shouldProcess(string);\r\n }\r\n }\r\n }\r\n\r\n function newFontFaces() {\r\n return {\r\n resolveAll: resolveAll,\r\n impl: {\r\n readAll: readAll\r\n }\r\n };\r\n\r\n function resolveAll() {\r\n return readAll(document)\r\n .then(function (webFonts) {\r\n return Promise.all(\r\n webFonts.map(function (webFont) {\r\n return webFont.resolve();\r\n })\r\n );\r\n })\r\n .then(function (cssStrings) {\r\n return cssStrings.join('\\n');\r\n });\r\n }\r\n\r\n function readAll() {\r\n return Promise.resolve(util.asArray(document.styleSheets))\r\n .then(getCssRules)\r\n .then(selectWebFontRules)\r\n .then(function (rules) {\r\n return rules.map(newWebFont);\r\n });\r\n\r\n function selectWebFontRules(cssRules) {\r\n return cssRules\r\n .filter(function (rule) {\r\n return rule.type === CSSRule.FONT_FACE_RULE;\r\n })\r\n .filter(function (rule) {\r\n return inliner.shouldProcess(rule.style.getPropertyValue('src'));\r\n });\r\n }\r\n\r\n function getCssRules(styleSheets) {\r\n var cssRules = [];\r\n styleSheets.forEach(function (sheet) {\r\n try {\r\n util.asArray(sheet.cssRules || []).forEach(cssRules.push.bind(cssRules));\r\n } catch (e) {\r\n console.log('Error while reading CSS rules from ' + sheet.href, e.toString());\r\n }\r\n });\r\n return cssRules;\r\n }\r\n\r\n function newWebFont(webFontRule) {\r\n return {\r\n resolve: function resolve() {\r\n var baseUrl = (webFontRule.parentStyleSheet || {}).href;\r\n return inliner.inlineAll(webFontRule.cssText, baseUrl);\r\n },\r\n src: function () {\r\n return webFontRule.style.getPropertyValue('src');\r\n }\r\n };\r\n }\r\n }\r\n }\r\n\r\n function newImages() {\r\n return {\r\n inlineAll: inlineAll,\r\n impl: {\r\n newImage: newImage\r\n }\r\n };\r\n\r\n function newImage(element) {\r\n return {\r\n inline: inline\r\n };\r\n\r\n function inline(get) {\r\n if (util.isDataUrl(element.src)) return Promise.resolve();\r\n\r\n return Promise.resolve(element.src)\r\n .then(get || util.getAndEncode)\r\n .then(function (data) {\r\n return util.dataAsUrl(data, util.mimeType(element.src));\r\n })\r\n .then(function (dataUrl) {\r\n return new Promise(function (resolve, reject) {\r\n element.onload = resolve;\r\n element.onerror = reject;\r\n element.src = dataUrl;\r\n });\r\n });\r\n }\r\n }\r\n\r\n function inlineAll(node) {\r\n if (!(node instanceof Element)) return Promise.resolve(node);\r\n\r\n return inlineBackground(node)\r\n .then(function () {\r\n if (node instanceof HTMLImageElement)\r\n return newImage(node).inline();\r\n else\r\n return Promise.all(\r\n util.asArray(node.childNodes).map(function (child) {\r\n return inlineAll(child);\r\n })\r\n );\r\n });\r\n\r\n function inlineBackground(node) {\r\n var background = node.style.getPropertyValue('background');\r\n\r\n if (!background) return Promise.resolve(node);\r\n\r\n return inliner.inlineAll(background)\r\n .then(function (inlined) {\r\n node.style.setProperty(\r\n 'background',\r\n inlined,\r\n node.style.getPropertyPriority('background')\r\n );\r\n })\r\n .then(function () {\r\n return node;\r\n });\r\n }\r\n }\r\n }\r\n})(this);\r\n\ndefine(\"dom-to-image\", function(){});\n\n","(function () {\r\n define('commons/snapshot',[\"jquery\", \"dom-to-image\"],\n function ($) {\r\n var currentArticleCode = \"\";\n\n function calculateDimension(el) {\r\n var current;\n if (el.parent().siblings('.row').length) {\r\n current = el.parent().siblings('.row').find('.print')[0];\r\n } else {\r\n current = el.parent().siblings().find(\".print\")[0];\r\n }\n\n var w, h, rate = 0;\n if ($(current).find('.jvectormap-container')[0] != undefined) {\r\n w = $($(current).find('.jvectormap-container')[0].getElementsByTagName('svg')[0]).css('width').slice(0, -2);\n h = $($(current).find('.jvectormap-container')[0].getElementsByTagName('svg')[0]).css('height').slice(0, -2);\r\n } else if ($(current).find('.highcharts-container')[0] != undefined && !el.parent().siblings('.row').length) {\r\n w = $($(current).find('.highcharts-container')[0].getElementsByTagName('svg')[0]).css('width').slice(0, -2);\n h = $($(current).find('.highcharts-container')[0].getElementsByTagName('svg')[0]).css('height').slice(0, -2);\r\n } else {\r\n w = $(current).css('width').slice(0, -2);\n h = $(current).css('height').slice(0, -2);\r\n }\n rate = h / w;\n return { w: 700, h: Math.round(700 * rate) };\r\n }\n\n function parseType(stringId) {\r\n return stringId.match(/[^_]*$/)[0];\r\n }\n\n function setDimension(el, item, type) {\r\n if (type === 'css') {\r\n return $(item).css({\r\n width: calculateDimension(el)['w'] + \"px\",\n height: calculateDimension(el)['h'] + \"px\",\r\n });\r\n } else {\r\n return $(item).attr({\r\n width: calculateDimension(el)['w'] + \"px\",\n height: calculateDimension(el)['h'] + \"px\",\r\n });\r\n }\r\n }\n\n function cloneToNewContainer(el) {\r\n var parentId = $($(el).parent().parent()[0]).attr('id');\n currentArticleCode = parentId;\n var newContainer = $(\"
\", { id: \"newContainer\", \"class\": \"newContainer print\" });\n var hasMoreChart = false;\n var oldEl;\n\n if (el.parent().siblings('.row').length) {\r\n oldEl = el.parent().siblings('.row').find('.print')[0];\n hasMoreChart = true;\r\n } else {\r\n oldEl = el.parent().siblings().find('.print')[0];\r\n }\n\n var clonedEl = oldEl.cloneNode(true);\n\n setDimension(el, newContainer, 'css');\n setDimension(el, clonedEl, 'css');\n\n switch (parseType(parentId)) {\r\n case 'text':\n $(clonedEl).find('.button').css('display', 'none');\n break;\n case 'image':\n break;\n case 'chart':\n if (!hasMoreChart) {\r\n setDimension(el, $(clonedEl).find('.highcharts-container')[0], 'css');\n setDimension(el, $(clonedEl).children()[0], 'css');\n setDimension(el, $(clonedEl).find('svg')[0], 'attr');\r\n }\n break;\n case 'map':\n setDimension(el, $(clonedEl).find('.map')[0], 'css');\n setDimension(el, $(clonedEl).find('svg')[0], 'attr');\n break;\r\n }\n newContainer.append(clonedEl);\n document.body.append(newContainer[0]);\n return newContainer[0];\r\n }\n\n function b64toBlob(b64Data, contentType, sliceSize) {\r\n contentType = contentType || '';\n sliceSize = sliceSize || 512;\n\n var byteCharacters = atob(b64Data);\n var byteArrays = [];\n\n for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n var slice = byteCharacters.slice(offset, offset + sliceSize);\n\n var byteNumbers = new Array(slice.length);\n for (var i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\n\n var byteArray = new Uint8Array(byteNumbers);\n\n byteArrays.push(byteArray);\r\n }\n\n var blob = new Blob(byteArrays, { type: contentType });\n return blob;\r\n }\n\n function toByteArray(b64Data, sliceSize) {\r\n sliceSize = sliceSize || 512;\n\n var byteCharacters = atob(b64Data);\n var byteArrays = [];\n\n for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\r\n var slice = byteCharacters.slice(offset, offset + sliceSize);\n\n var byteNumbers = new Array(slice.length);\n for (var i = 0; i < slice.length; i++) {\r\n byteNumbers[i] = slice.charCodeAt(i);\r\n }\n\n var byteArray = new Uint8Array(byteNumbers);\n\n byteArrays.push(byteArray);\r\n }\n\n return byteArrays;\r\n }\n\n function toByteArraySimple(b64Data) {\r\n var result = [];\n for (var i = 0; i < b64Data.length; i++) {\r\n result.push(b64Data.charCodeAt(i));\r\n }\n return result;\r\n }\n\n function initialize(element, userId, mediaId) {\r\n $(element).on('click', function () {\r\n if ($(this).prop(\"checked\")) {\r\n var domToExport = cloneToNewContainer($(this));\n\n domtoimage.toPng(domToExport)\r\n .then(function (dataUrl) {\r\n $(domToExport).hide();\n\n //var base64ImageContent = dataUrl.replace(/^data:image\\/(png|jpg);base64,/, \"\");\n //var base64ImageContent = dataUrl;\n //var byteArray = toByteArraySimple(base64ImageContent);\n\n // $.ajax({\n // type: \"POST\",\n // url: \"http://api.ts.se.local/Api/Basket/AddArticleImage?userId=1&articleCode=\" + this.currentArticleCode + \"&mediaId=7\",\n // data: JSON.stringify( byteArray ),\n // contentType: \"application/json\",\n // success: function(data) {\n // console.log(\"Success!\");\n // }\n // });\n\n // $.ajax({\n // type: \"POST\",\n // url: \"http://api.ts.se.local/Api/Basket/AddArticleImage?userId=1&articleCode=\" + this.currentArticleCode + \"&mediaId=7\",\n // data: byteArray,\n // contentType: \"application/octet-stream\",\n // processData: false,\n // success: function(data) {\n // console.log(\"Success!\");\n // }\n // });\r\n\r\n // callback();\n\n $.ajax({\r\n type: \"POST\",\n url: \"https://api.ts.se.local/Api/Basket/AddArticleImage?userId=\"\n + userId + \"&articleCode=\" + currentArticleCode + \"&mediaId=\" + mediaId,\n data: JSON.stringify(dataUrl),\n contentType: \"application/json\",\n success: function (data) {\r\n console.log(\"Success!\");\r\n }\r\n });\n\n console.log(dataUrl);\r\n });\n //.catch(function (error) {\n // console.error(\"something went wrong\");\n //});\n\n //Put items into basket first (using COOKIE or HTML5 localStorage)\n //Your code is here Shakir\n //Take snapshot and POST\n } else {\n //Shakir code to remove items from the basket\n //Remove the image from the server through API\n }\r\n });\r\n }\n\r\n return {\r\n initialize: initialize\r\n }\r\n });\r\n}).call(this);\n\n\n","(function () {\r\n define('commons/chartServices',[\"jquery\"],\n function ($) {\r\n\n var CanvasRenderer = function (element, options) {\r\n var cachedBackground;\n var canvas = document.createElement(\"canvas\");\n\n element.appendChild(canvas);\n\n var ctx = canvas.getContext(\"2d\");\n\n canvas.width = canvas.height = options.size;\n\n // move 0,0 coordinates to the center\n ctx.translate(options.size / 2, options.size / 2);\n\n // rotate canvas -90deg\n ctx.rotate((-1 / 2 + options.rotate / 180) * Math.PI);\n\n var radius = (options.size - options.lineWidth) / 2;\n\n Date.now = Date.now ||\n function () {\n\n //convert to milliseconds\n return +(new Date());\r\n };\n\n var drawCircle = function (color, lineWidth, percent) {\r\n percent = Math.min(Math.max(-1, percent || 0), 1);\n var isNegative = percent <= 0 ? true : false;\n\n ctx.beginPath();\n ctx.arc(0, 0, radius, 0, Math.PI * 2 * percent, isNegative);\n\n ctx.strokeStyle = color;\n ctx.lineWidth = lineWidth;\n\n ctx.stroke();\r\n };\n\n /**\n * Return function request animation frame method or timeout fallback\n */\n var reqAnimationFrame = (function () {\r\n return window.requestAnimationFrame ||\n window.webkitRequestAnimationFrame ||\n window.mozRequestAnimationFrame ||\n function (callback) {\r\n window.setTimeout(callback, 1000 / 60);\r\n };\r\n }());\n\n /**\n * Draw the background of the plugin track\n */\n var drawBackground = function () {\r\n if (options.trackColor) drawCircle(options.trackColor, options.lineWidth, 1);\r\n };\n\n /**\n * Clear the complete canvas\n */\n this.clear = function () {\r\n ctx.clearRect(options.size / -2, options.size / -2, options.size, options.size);\r\n };\n\n /**\n * Draw the complete chart\n * param percent Percent shown by the chart between -100 and 100\n */\n this.draw = function (percent) {\r\n if (!!options.trackColor) {\n // getImageData and putImageData are supported\n if (ctx.getImageData && ctx.putImageData) {\r\n if (!cachedBackground) {\r\n drawBackground();\n cachedBackground = ctx.getImageData(0, 0, options.size, options.size);\r\n } else {\r\n ctx.putImageData(cachedBackground, 0, 0);\r\n }\r\n } else {\r\n this.clear();\n drawBackground();\r\n }\r\n } else {\r\n this.clear();\r\n }\n\n ctx.lineCap = options.lineCap;\n\n // draw bar\n drawCircle(options.barColor, options.lineWidth, percent / 100);\r\n }.bind(this);\n\n this.animate = function (from, to) {\r\n var startTime = Date.now();\n\n var animation = function () {\r\n var process = Math.min(Date.now() - startTime, options.animate.duration);\n\n var currentValue = options.easing(this, process, from, to - from, options.animate.duration);\n\n this.draw(currentValue);\n\n //Show the number at the center of the circle\n options.onStep(from, to, currentValue);\n\n if (process < options.animate.duration) {\r\n reqAnimationFrame(animation);\r\n }\n }.bind(this);\n\n reqAnimationFrame(animation);\r\n }.bind(this);\r\n };\n\n var pieChart = function (element, userOptions) {\r\n var defaultOptions = {\r\n barColor: \"#ef1e25\",\n trackColor: \"#f9f9f9\",\n lineCap: \"round\",\n lineWidth: 3,\n size: 150,\n rotate: 0,\n percent: 0,\n animate: {\r\n duration: 1000,\n enabled: true\r\n },\n easing: function (x, t, b, c, d) { //copy from jQuery easing animate\n t = t / (d / 2);\n if (t < 1) {\r\n return c / 2 * t * t + b;\r\n }\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\r\n },\n onStep: function (from, to, currentValue) {\r\n return;\r\n },\n renderer: CanvasRenderer //Maybe SVGRenderer more later\n };\n\n var options = {};\n var currentValue = 0;\n\n var init = function () {\r\n this.element = element;\n this.options = options;\n\n // merge user options into default options\n for (var i in defaultOptions) {\r\n if (defaultOptions.hasOwnProperty(i)) {\r\n options[i] = userOptions && typeof (userOptions[i]) !== \"undefined\"\n ? userOptions[i]\n : defaultOptions[i];\n if (typeof (options[i]) === \"function\") {\r\n options[i] = options[i].bind(this);\r\n }\r\n }\r\n }\n\n // check for jQuery easing, use jQuery easing first\n if (typeof (options.easing) === \"string\" &&\n typeof (jQuery) !== \"undefined\" &&\n jQuery.isFunction(jQuery.easing[options.easing])) {\r\n options.easing = jQuery.easing[options.easing];\r\n } else {\r\n options.easing = defaultOptions.easing;\r\n }\n\n // create renderer\n this.renderer = new options.renderer(element, options);\n\n // initial draw\n this.renderer.draw(currentValue);\n\n var newValue = parseFloat(options.percent);\n\n if (options.animate.enabled) {\r\n this.renderer.animate(currentValue, newValue);\r\n } else {\r\n this.renderer.draw(newValue);\r\n }\n\n currentValue = newValue;\r\n\n /*\n if (element.getAttribute && element.getAttribute('data-percent')) {\r\n var newValue = parseFloat(element.getAttribute('data-percent'));\n\n if (options.animate.enabled) {\r\n this.renderer.animate(currentValue, newValue);\r\n } else {\r\n this.renderer.draw(newValue);\r\n }\n\n currentValue = newValue;\r\n }\r\n */\r\n }.bind(this)();\r\n };\n\n $.fn.pieChart = function (options) {\n\n //Iterate all the dom to draw the pie-charts\n return this.each(function () {\r\n if (!$.data(this, \"pieChart\")) {\r\n var userOptions = options;\n //var userOptions = $.extend({}, options, $(this).data());\n $.data(this, \"pieChart\", new pieChart(this, userOptions));\r\n }\r\n });\r\n };\r\n\r\n // Highcharts should probably be required, but for now load it first in HTML\r\n\r\n function renderDrillChart(chartName, data, settings) {\r\n Highcharts.chart(chartName, {\r\n chart: {\r\n type: 'bar'\r\n\n },\n title: {\r\n text: null\r\n },\n\n xAxis: {\r\n type: 'category',\n lineColor: 'transparent',\n tickLength: 0\r\n },\n yAxis: {\r\n title: {\r\n text: null\r\n },\n min: 0,\n gridLineColor: 'transparent',\n lineWidth: 0,\n labels: {\r\n enabled: false,\r\n }\r\n },\n credits: {\r\n enabled: false\r\n },\n legend: {\r\n enabled: false\r\n },\n plotOptions: {\r\n series: {\r\n borderWidth: 0,\n dataLabels: {\r\n enabled: true,\n format: '{point.y:.1f}%'\r\n }\r\n }\r\n },\n\n tooltip: {\r\n headerFormat: '{series.name}
',\n pointFormat: '{point.name}: {point.y:.2f}% of total
'\r\n },\n\n series: data\r\n });\r\n }\n\r\n function renderColumnChart(chartName, data, settings) {\r\n var currentSettings = {\r\n labelsFormat: settings.labelsFormat || \"{point.y:,.0f}\",\r\n labelsUseRotation: settings.useLabelsRotation || false,\r\n labelsRotation: 0,\r\n labelsCrop: true,\r\n labelsOverflow: \"justify\",\r\n labelsY: 3,\r\n labelsX: 0,\r\n xAxisType: settings.xAxisType || \"category\",\r\n xAxisTickAmount : settings.xAxisTickAmount,\r\n yAxisType: settings.yAxisType || \"category\",\r\n yAxisTickAmount: settings.yAxisTickAmount,\r\n yAxisMaxPadding: settings.yAxisMaxPadding || 0.05,\r\n yAxisMinPadding: settings.yAxisMinPadding || 0.05\r\n }\r\n\r\n if (currentSettings.labelsUseRotation === true) {\r\n currentSettings.labelsRotation = 315;\r\n currentSettings.labelsCrop = false;\r\n currentSettings.labelsOverflow = \"none\";\r\n currentSettings.labelsY = -16;\r\n currentSettings.labelsX = 8;\r\n }\r\n\r\n var xAxis = settings.xAxis || {\r\n type: currentSettings.xAxisType,\r\n tickAmount: currentSettings.xAxisTickAmount,\r\n //lineColor: currentSettings.xAxisLineColor,\r\n minorTickLength: 0,\r\n tickLength: 0,\r\n labels: {\r\n autoRotation: true,\r\n style: { \"color\": \"#848484\", \"cursor\": \"default\", \"fontSize\": \"12px\", \"fontFamily\": \"'GrotesqueMTStd', Arial, sans-serif, Tahoma\" }\r\n }\r\n }\r\n\r\n var yAxis = settings.yAxis || {\r\n type: currentSettings.yAxisType,\r\n title: false,\r\n tickAmount: currentSettings.yAxisTickAmount,\r\n labels: {\r\n style: { \"color\": \"#989898\", \"cursor\": \"default\", \"fontSize\": \"12px\", \"fontFamily\": \"'GrotesqueMTStd', Arial, sans-serif, Tahoma\" }\r\n },\r\n maxPadding: currentSettings.yAxisMaxPadding,\r\n minPadding: currentSettings.yAxisMinPadding,\r\n //endOnTick: false\r\n }\r\n\r\n Highcharts.chart(chartName, {\r\n chart: {\r\n type: \"column\"\r\n },\r\n title: false,\r\n credits: {\r\n enabled: false\r\n },\r\n subtitle: false,\r\n legend: {\r\n enabled: false\r\n },\r\n plotOptions: {\r\n series: {\r\n borderWidth: 0,\r\n dataLabels: {\r\n enabled: true,\r\n format: currentSettings.labelsFormat,\r\n style: { \"color\": \"#231f20\", \"cursor\": \"default\", \"fontSize\": \"12px\", \"fontWeight\": \"normal\", \"fontFamily\": \"'GrotesqueMTStd', Arial, sans-serif, Tahoma\" },\r\n rotation: currentSettings.labelsRotation,\r\n crop: currentSettings.labelsCrop,\r\n overflow: currentSettings.labelsOverflow,\r\n y: currentSettings.labelsY,\r\n x: currentSettings.labelsX\r\n }\r\n }\r\n },\r\n xAxis: xAxis,\r\n yAxis: yAxis,\r\n tooltip: false,\r\n series: data\r\n });\r\n }\r\n\r\n function renderStackedColumnChart(chartName, data, settings) {\r\n var currentSettings = {\r\n labelsFormat: settings.labelsFormat || \"{point.y:,.0f}\",\r\n labelsUseRotation: settings.useLabelsRotation || false,\r\n labelsRotation: 0,\r\n labelsCrop: true,\r\n labelsOverflow: \"justify\",\r\n labelsY: 3,\r\n labelsX: 0,\r\n xAxisType: settings.xAxisType || \"category\",\r\n xAxisTickAmount: settings.xAxisTickAmount,\r\n yAxisType: settings.yAxisType || \"category\",\r\n yAxisTickAmount: settings.yAxisTickAmount,\r\n yAxisMaxPadding: settings.yAxisMaxPadding || 0.05,\r\n yAxisMinPadding: settings.yAxisMinPadding || 0.05\r\n }\r\n\r\n if (currentSettings.labelsUseRotation === true) {\r\n currentSettings.labelsRotation = 315;\r\n currentSettings.labelsCrop = false;\r\n currentSettings.labelsOverflow = \"none\";\r\n currentSettings.labelsY = -16;\r\n currentSettings.labelsX = 8;\r\n }\r\n\r\n var xAxis = settings.xAxis || {\r\n type: currentSettings.xAxisType,\r\n tickAmount: currentSettings.xAxisTickAmount,\r\n minorTickLength: 0,\r\n tickLength: 0,\r\n labels: { \r\n autoRotation: true,\r\n style: { \"color\": \"#848484\", \"cursor\": \"default\", \"fontSize\": \"12px\", \"fontFamily\": \"'GrotesqueMTStd', Arial, sans-serif, Tahoma\" }\r\n } \r\n }\r\n\r\n var yAxis = settings.yAxis || {\r\n type: currentSettings.yAxisType,\r\n title: false,\r\n tickAmount: currentSettings.yAxisTickAmount,\r\n labels: {\r\n style: { \"color\": \"#989898\", \"cursor\": \"default\", \"fontSize\": \"12px\", \"fontFamily\": \"'GrotesqueMTStd', Arial, sans-serif, Tahoma\" }\r\n },\r\n maxPadding: currentSettings.yAxisMaxPadding,\r\n minPadding: currentSettings.yAxisMinPadding,\r\n stackLabels: {\r\n labelsCrop: currentSettings.labelsCrop,\r\n labelsOverflow: currentSettings.labelsOverflow,\r\n x: currentSettings.labelsX,\r\n y: currentSettings.labelsY,\r\n rotation: currentSettings.labelsRotation,\r\n enabled: true,\r\n style: { \"color\": \"#231f20\", \"cursor\": \"default\", \"fontSize\": \"12px\", \"fontWeight\": \"normal\", \"fontFamily\": \"'GrotesqueMTStd', Arial, sans-serif, Tahoma\" }\r\n }\r\n }\r\n\r\n Highcharts.setOptions({\r\n lang: {\r\n resetZoom: \"Återställ\"\r\n }\r\n });\r\n\r\n Highcharts.chart(chartName, {\r\n chart: {\r\n type: \"column\",\r\n events: {\r\n load: function () {\r\n this.series.forEach(function (s) {\r\n s.update({\r\n showInLegend: !s.points.every(function(x) { return x.isNull == true })\r\n });\r\n });\r\n }\r\n },\r\n zoomType: 'xy'\r\n }, \r\n title: false,\r\n credits: {\r\n enabled: false\r\n },\r\n subtitle: false,\r\n legend: {\r\n enabled: true,\r\n reversed: true\r\n },\r\n plotOptions: {\r\n column: {\r\n stacking: 'normal',\r\n dataLabels: {\r\n enabled: true,\r\n color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white'\r\n }\r\n },\r\n series: {\r\n borderWidth: 0,\r\n dataLabels: {\r\n enabled: false,\r\n format: currentSettings.labelsFormat,\r\n style: { \"color\": \"#231f20\", \"cursor\": \"default\", \"fontSize\": \"12px\", \"fontWeight\": \"normal\", \"fontFamily\": \"'GrotesqueMTStd', Arial, sans-serif, Tahoma\" },\r\n rotation: 0,\r\n crop: currentSettings.labelsCrop,\r\n overflow: currentSettings.labelsOverflow,\r\n y: currentSettings.labelsY,\r\n x: currentSettings.labelsX\r\n } \r\n }\r\n },\r\n xAxis: xAxis,\r\n yAxis: yAxis,\r\n tooltip: {\r\n enabled: true\r\n },\r\n series: data\r\n });\r\n }\r\n\r\n function renderBarChart(chartName, data, settings) {\r\n var currentSettings = {\r\n labelsFormat: settings.labelsFormat || \"{point.y:,.0f}\",\r\n labelsUseRotation: settings.useLabelsRotation || false,\r\n labelsRotation: 0,\r\n labelsCrop: false,\r\n labelsOverflow: \"none\",\r\n labelsY: 0,\r\n labelsX: 0,\r\n xAxisType: settings.xAxisType || \"category\",\r\n xAxisTickAmount: settings.xAxisTickAmount,\r\n yAxisType: settings.yAxisType || \"category\",\r\n yAxisTickAmount: settings.yAxisTickAmount,\r\n yAxisMaxPadding: settings.yAxisMaxPadding || 0.05,\r\n yAxisMinPadding: settings.yAxisMinPadding || 0.05\r\n }\r\n \r\n var xAxis = {\r\n type: currentSettings.xAxisType,\r\n labels: {\r\n autoRotation: true,\r\n style: { \"color\": \"#231f20\", \"cursor\": \"default\", \"fontSize\": \"12px\", \"fontFamily\": \"'GrotesqueMTStd', Arial, sans-serif, Tahoma\" }\r\n }\r\n }\r\n\r\n var yAxis = {\r\n //type: currentSettings.yAxisType,\r\n title: false,\r\n tickAmount: 6,\r\n labels: {\r\n style: {\r\n \"color\": \"#989898\",\r\n \"cursor\": \"default\",\r\n \"fontSize\": \"12px\",\r\n \"fontFamily\": \"'GrotesqueMTStd', Arial, sans-serif, Tahoma\",\r\n \"textOverflow\": \"none\"\r\n },\r\n overflow: false\r\n },\r\n maxPadding: 0.17,\r\n endOnTick: false\r\n }\r\n\r\n Highcharts.chart(chartName, {\r\n chart: {\r\n type: \"bar\"\r\n },\r\n title: false,\r\n credits: {\r\n enabled: false\r\n },\r\n subtitle: false,\r\n legend: {\r\n enabled: true\r\n },\r\n plotOptions: {\r\n series: {\r\n borderWidth: 0,\r\n dataLabels: {\r\n enabled: true,\r\n format: currentSettings.labelsFormat,\r\n style: { \"color\": \"#231f20\", \"cursor\": \"default\", \"fontSize\": \"12px\", \"fontWeight\": \"normal\", \"fontFamily\": \"'GrotesqueMTStd', Arial, sans-serif, Tahoma\" },\r\n rotation: currentSettings.labelsRotation,\r\n crop: currentSettings.labelsCrop,\r\n overflow: currentSettings.labelsOverflow,\r\n y: currentSettings.labelsY,\r\n x: currentSettings.labelsX\r\n }\r\n }\r\n },\r\n xAxis: xAxis,\r\n yAxis: yAxis,\r\n tooltip: false,\r\n series: data\r\n });\r\n }\r\n\r\n function renderSplineChart(chartName, data, settings) {\r\n var currentSettings = {\r\n tooltip: settings.tooltip || { shared: true },\r\n xAxis: settings.xAxis,\r\n yAxis: settings.yAxis\r\n }\r\n\r\n Highcharts.setOptions({\r\n lang: {\r\n months: [\"Januari\", \"Februari\", \"Mars\", \"April\", \"Maj\", \"Juni\", \"Juli\", \"Augusti\", \"September\", \"Oktober\", \"November\", \"December\"],\r\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"Maj\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n weekdays: [\"Måndag\", \"Tisdag\", \"Onsdag\", \"Torsdag\", \"Fredag\", \"Lördag\", \"Söndag\"]\r\n }\r\n });\r\n\r\n Highcharts.chart(chartName, {\r\n chart: {\r\n type: \"areaspline\"\r\n },\n title: {\r\n text: \"\"\r\n },\n credits: {\r\n enabled: false\r\n },\n legend: {\r\n enabled: false,\r\n layout: \"vertical\",\n align: \"left\",\n verticalAlign: \"top\",\n x: 150,\n y: 100,\n floating: true,\n borderWidth: 1,\n backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || \"#FFFFFF\"\r\n },\n xAxis: currentSettings.xAxis,\n yAxis: currentSettings.yAxis,\r\n tooltip: currentSettings.tooltip,\n plotOptions: {\r\n areaspline: {\r\n fillOpacity: 0.5,\r\n marker: {\r\n enabled: true\r\n }\r\n }\r\n },\n series: data\r\n });\r\n }\r\n\r\n function renderPieChart(chartName, data, settings) {\r\n var currentSettings = {\r\n labelsFormat: settings.labelsFormat || \"{y}\"\r\n }\r\n\r\n Highcharts.chart(chartName, {\r\n chart: {\r\n plotBackgroundColor: null,\n plotBorderWidth: null,\n plotShadow: false,\n type: \"pie\"\r\n },\n title: {\r\n text: \"\"\r\n },\n credits: {\r\n enabled: false\r\n },\n plotOptions: {\r\n pie: {\r\n allowPointSelect: true,\n cursor: \"pointer\",\n dataLabels: {\r\n enabled: false\r\n },\n showInLegend: true\r\n }\r\n },\n tooltip: {\r\n valueDecimals: 1,\r\n valueSuffix: \"%\"\r\n },\n legend: {\r\n //enabled: true,\r\n //margin: 200,\r\n //padding: 100,\r\n itemDistance: 10,\r\n itemWidth: 200,\r\n width: 420,\r\n x: 60\r\n },\n series: data\r\n });\r\n }\r\n\r\n function renderStackedChart(chartName, data, settings) {\r\n Highcharts.chart(chartName, {\r\n chart: {\r\n type: \"area\"\r\n },\n title: {\r\n text: \"\"\r\n },\n credits: {\r\n enabled: false\r\n },\n xAxis: settings.xAxis,\n yAxis: settings.yAxis,\n tooltip: {\r\n split: false\n },\n plotOptions: {\r\n series: {\r\n marker: {\r\n enabled: true\r\n },\r\n connectNulls: false\r\n },\r\n enableMouseTracking: false,\r\n area: {\r\n connectNulls: false,\r\n stacking: \"normal\",\n lineColor: \"#666666\",\n lineWidth: 1,\n marker: {\r\n lineWidth: 1,\n lineColor: \"#666666\"\r\n }\r\n }\r\n },\n series: data\r\n });\r\n }\n\r\n function getWeekChartCategories(weekLabels) {\r\n var categories, difference, i, j, len, previous, weekAndYear, weekCategory, weekIndex;\n categories = [];\n weekIndex = 0;\n difference = 0;\n i = 0;\n for (i = j = 0, len = weekLabels.length; j < len; i = ++j) {\r\n weekAndYear = weekLabels[i];\n if (weekLabels[i - 1] != null) {\r\n previous = weekLabels[i - 1];\n if (previous.year < weekAndYear.year) {\r\n difference = (previous.week + weekAndYear.week) - previous.week;\r\n } else {\r\n difference = weekAndYear.week - previous.week;\r\n }\r\n }\n weekIndex = weekIndex + difference;\n weekCategory = {};\n weekCategory.index = weekIndex;\n weekCategory.week = weekAndYear.week;\n weekCategory.year = weekAndYear.year;\n weekCategory.label = weekAndYear.label;\n categories.push(weekCategory);\r\n }\n return categories;\r\n };\r\n\r\n function thousandFormat(value) {\r\n return value.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \" \");\r\n }\r\n\r\n return {\r\n renderDrillChart: renderDrillChart,\r\n renderColumnChart: renderColumnChart,\r\n renderSplineChart: renderSplineChart,\r\n renderPieChart: renderPieChart,\r\n renderStackedChart: renderStackedChart,\r\n renderBarChart: renderBarChart,\r\n getWeekChartCategories: getWeekChartCategories,\r\n thousandFormat: thousandFormat,\r\n renderStackedColumnChart: renderStackedColumnChart\r\n }\r\n });\r\n\r\n}).call(this);\n\n\n","(function() {\n define('commons/basicInfoCharts',[\"jquery\", \"commons/chartServices\"], function($, chartServices) {\n var executeAdvertisersChart, executeAgeChart, executeGenderChart;\n executeAdvertisersChart = function(mediaId, cardId, chartId) {\n var calculateAdvertisersData;\n $.ajax({\n url: TSUrl.ApiUrl + \"/Api/Charts/ExpenseBarChartData?mediaId=\" + mediaId,\n dataType: \"jsonp\"\n }).done(function(res) {\n var chartSettings, x;\n if (!((res != null) && res.expenseChartDataPoints.length)) {\n return;\n }\n $(cardId).removeClass(\"hide\");\n x = calculateAdvertisersData(res);\n chartSettings = {\n labelsFormat: \"{point.y:,.0f}\",\n labels: {\n style: {\n fontSize: \"12px\"\n }\n }\n };\n return chartServices.renderBarChart(chartId, x, chartSettings);\n });\n return calculateAdvertisersData = function(x) {\n var d, data, i, item, len, ref, value;\n data = [];\n item = {\n name: \"Annonsvolym brutto (SEK)\",\n colorByPoint: false,\n color: \"#7CB5EC\",\n data: []\n };\n ref = x.expenseChartDataPoints;\n for (i = 0, len = ref.length; i < len; i++) {\n d = ref[i];\n value = {\n name: d.advertiser,\n y: d.value\n };\n item.data.push(value);\n }\n data.push(item);\n return data;\n };\n };\n executeGenderChart = function(mediaId, cardId) {\n var calculateGenderData;\n $.ajax({\n url: TSUrl.ApiUrl + \"/Api/Charts/GenderBarChartData?MediaId=\" + mediaId,\n dataType: \"jsonp\"\n }).done(function(res) {\n var reachText, x;\n if (!((res != null) && res.dataPoints.length)) {\n return;\n }\n $(cardId).removeClass(\"hide\");\n x = calculateGenderData(res);\n if (res.dataPoints[0].surveyName != null) {\n $(\".reach-period\").text(res.dataPoints[0].surveyName);\n $(\".reach-period\").parent().removeClass(\"hide\");\n }\n if (x.totalReach != null) {\n reachText = chartServices.thousandFormat(x.totalReach) + \" - \";\n $(\".media-total-reach\").removeClass(\"hide\").text(reachText);\n }\n $(\"#female-pie\").pieChart({\n barColor: \"#ECBB64\",\n trackColor: \"#f4f5f9\",\n lineCap: \"square\",\n lineWidth: 5,\n rotate: 180,\n percent: x.female,\n onStep: function(from, to, percent) {\n return $(this.element).find(\".pie-value\").html(Math.round(percent) + \"%\");\n }\n });\n return $('#male-pie').pieChart({\n barColor: '#806C83',\n trackColor: '#f4f5f9',\n lineCap: 'square',\n lineWidth: 5,\n rotate: 180,\n percent: x.male,\n onStep: function(from, to, percent) {\n return $(this.element).find(\".pie-value\").html(Math.round(percent) + \"%\");\n }\n });\n });\n return calculateGenderData = function(x) {\n var femalePercentage, femaleReach, malePercentage, maleReach, sum;\n maleReach = x.dataPoints[0].reach;\n femaleReach = x.dataPoints[1].reach;\n sum = maleReach + femaleReach;\n malePercentage = (maleReach / sum) * 100;\n femalePercentage = (femaleReach / sum) * 100;\n return {\n male: malePercentage,\n female: femalePercentage,\n totalReach: x.dataPoints[0].totalReach\n };\n };\n };\n executeAgeChart = function(mediaId, cardId, chartId) {\n var calculateAgeData;\n $.ajax({\n url: TSUrl.ApiUrl + \"/Api/Charts/QuestionBarChartData?MediaId=\" + mediaId + \"&QuestionType=Age\",\n dataType: \"jsonp\"\n }).done(function(res) {\n var chartSettings, x;\n if (!((res != null) && res.dataPoints.length)) {\n return;\n }\n if ($(cardId).length <= 0) {\n return;\n }\n $(cardId).removeClass(\"hide\");\n x = calculateAgeData(res);\n if (res.dataPoints[0].surveyName != null) {\n $(\".reach-period\").text(res.dataPoints[0].surveyName);\n $(\".reach-period\").parent().removeClass(\"hide\");\n }\n chartSettings = {\n labelsFormat: \"{point.y:.0f}%\",\n yAxis: {\n title: false,\n gridLineColor: 'transparent',\n lineWidth: 0,\n minorGridLineWidth: 0,\n lineColor: 'transparent',\n labels: {\n enabled: false\n },\n minorTickLength: 0,\n tickLength: 0\n }\n };\n return chartServices.renderColumnChart(chartId, x, chartSettings);\n });\n return calculateAgeData = function(x) {\n var d, data, i, item, len, ref, sum, value;\n sum = x.dataPoints.reduce((function(total, age) {\n return total + age.reach;\n }), 0);\n data = [];\n item = {\n name: \"Alder\",\n colorByPoint: false,\n color: \"#7CB5EC\",\n data: []\n };\n ref = x.dataPoints.reverse();\n for (i = 0, len = ref.length; i < len; i++) {\n d = ref[i];\n value = {\n name: d.optionName,\n y: (d.reach / sum) * 100\n };\n item.data.push(value);\n }\n data.push(item);\n return data;\n };\n };\n return {\n executeAdvertisersChart: executeAdvertisersChart,\n executeGenderChart: executeGenderChart,\n executeAgeChart: executeAgeChart\n };\n });\n\n}).call(this);\n\n//# sourceMappingURL=basicInfoCharts.js.map\n;\n","(function() {\n define('commons/widgetLogin',[\"jquery\"], function($) {\n var initialize;\n initialize = function(mediaId) {\n $(\".mediafacts-login\").on(\"click\", function(e) {\n return $(\"#mediawidgetLogin\").removeClass(\"hide\");\n });\n $(\".login-form-close\").on(\"click\", function(e) {\n return $(\"#mediawidgetLogin\").addClass(\"hide\");\n });\n return $(\"#mediawidgetLogin\").on(\"submit\", function(e) {\n var password, url, username;\n e.preventDefault();\n username = $(\"#mediawidget-username\").val();\n password = $(\"#mediawidget-password\").val();\n url = TSUrl.MediaUrl + \"/Account/LogOnWoRedirect\";\n return $.ajax({\n url: url,\n type: \"POST\",\n crossdomain: true,\n xhrFields: {\n withCredentials: true\n },\n data: {\n UserName: username,\n Password: password\n }\n }).done(function(result) {\n var mediafactsUrl;\n if (result === \"1\") {\n mediafactsUrl = TSUrl.MediaUrl + \"/Home/Search\";\n if (mediaId !== void 0) {\n mediafactsUrl += \"#open/\" + mediaId;\n }\n window.open(mediafactsUrl, \"_blank\");\n return $(\".login-error\").addClass(\"hide\");\n } else {\n return $(\".login-error\").removeClass(\"hide\");\n }\n });\n });\n };\n return {\n initialize: initialize\n };\n });\n\n}).call(this);\n\n//# sourceMappingURL=widgetLogin.js.map\n;\n","(function() {\n require([\"jquery\", \"underscore\", \"commons/snapshot\", \"commons/basicInfoCharts\", \"commons/widgetLogin\"], function($, _, snapshot, basicInfoCharts, widgetLogin) {\n return $(function() {\n var mediaId;\n mediaId = $('#MediaId').val();\n widgetLogin.initialize(mediaId);\n basicInfoCharts.executeGenderChart(\"\" + mediaId, \"#basics_agegender_chart\");\n basicInfoCharts.executeAgeChart(\"\" + mediaId, \"#basics_agegender_chart\", \"basicinfo-agechart\");\n return basicInfoCharts.executeAdvertisersChart(\"\" + mediaId, \"#basics-advertisers-chart\", \"advertisers-top10-barchart\");\n });\n });\n\n}).call(this);\n\n//# sourceMappingURL=appdigital.js.map\n;\ndefine(\"Apps/Basic/script/appdigital\", function(){});\n\n"]}