{"version":3,"sources":["webpack:////Users/owenli/Documents/workspace/awi-wool-fe/src/views/blocks/chartBlock/js/chartBlock.js","webpack:////Users/owenli/Documents/workspace/awi-wool-fe/src/views/blocks/marketEmiChartBlock/js/marketEmiChartBlock.js","webpack:///./wool/mediaQuery.js","webpack:///./wool/numberFormatter.js","webpack:///./wool/colorGenerator.js","webpack:////Users/owenli/Documents/workspace/awi-wool-fe/node_modules/moment/locale sync ^\\.\\/.*$"],"names":["CLS","d3","require","uuidv4","moment","ChartBlock","element","_this","this","className","arguments","length","undefined","_classCallCheck","$element","$","$chart","find","setChartId","setEmptyMessages","setEmptyData","isDataEmpty","margin","top","right","bottom","left","mediaQuery","numberFormatter","colorGenerator","heightRatio","on","concat","event","params","updateChartData","key","value","data","_","isNil","isEmpty","cloneDeep","emptyData","initChart","removeMessage","appendMessage","chartId","attr","select","emptyMessage","errorMessage","values","i","push","xValue","yValue","isError","append","remove","_this2","css","visibility","drawChart","window","debounce","clearSvg","setChartDimensions","drawSvg","defineXAxesScales","defineYAxesScales","drawXAxes","drawYAxes","width","height","svg","xAxisBottom","scaleLinear","range","domain","extent","datum","nice","yAxisLeft","call","axisBottom","axisLeft","date","format","textElement","maxWidth","x","y","words","text","tspan","textLength","node","getComputedTextLength","slice","power","tickCount","intervals","Math","pow","getLinearTick","MarketEmiChartBlock","_ChartBlock","_callSuper","api","dotRadius","dotFocusRadius","urlParams","$filtersSelect","setFilterValueEvent","initFilterChangeEvent","getChartDataFromApi","_inherits","each","index","filterKey","val","isArray","join","_this3","currentTarget","_this4","url","param","ajax","type","dataType","success","response","trigger","error","placeholderData","label","month","day","$tooltip","drawTooltip","drawAreaAesthetic","drawPaths","drawPoints","tooltip","getChartNode","forEach","_this5","getXAxisBottomData","xMinTickValue","xMaxTickValue","add","subtract","scaleTime","getMomentDate","toDate","xMinTickDate","xMaxTickDate","duration","diff","asMonths","getYAxisLeftData","yMinTickValue","minBy","yMaxTickValue","maxBy","yTickValue","ceil","floor","toString","outerIndex","_this6","ticks","timeDay","every","tickFormat","asYears","selectAll","nodes","style","breakpointMaxWidth","BREAKPOINTS","SM","_this7","toFixed","tickSize","tickPadding","tickValues","_this8","line","innerDatum","_this9","enter","innerIndex","parentNode","filter","innerInnerDatum","innerInnerIndex","classed","html","valueLabel","diffPercentLabel","difference","cssClass","tooltipWidth","outerWidth","tooltipHeight","outerHeight","leftPosition","mouse","topPosition","_this10","asDays","area","y0","y1","firstNodeValue","lastNodeValue","abs","MediaQuery","XS","MD","LG","XL","breakpoint","max","document","documentElement","clientWidth","innerWidth","isFinite","NumberFormatter","number","parts","split","replace","ColorGenerator","colors","cycleIndex","goldenRatioConjugate","blue","red","green","orange","yellow","purple","selectedColor","hsl","object","r","g","b","h","s","l","min","d","rgbToHsl","hexColor","RegExp","test","parseInt","substr","oldHue","hueWheel","offset","getNewSaturation","getNewLumination","componentToHex","color","hue2rgb","p","q","t","round","hslToRgb","hex","map","./af","./af.js","./ar","./ar-dz","./ar-dz.js","./ar-kw","./ar-kw.js","./ar-ly","./ar-ly.js","./ar-ma","./ar-ma.js","./ar-ps","./ar-ps.js","./ar-sa","./ar-sa.js","./ar-tn","./ar-tn.js","./ar.js","./az","./az.js","./be","./be.js","./bg","./bg.js","./bm","./bm.js","./bn","./bn-bd","./bn-bd.js","./bn.js","./bo","./bo.js","./br","./br.js","./bs","./bs.js","./ca","./ca.js","./cs","./cs.js","./cv","./cv.js","./cy","./cy.js","./da","./da.js","./de","./de-at","./de-at.js","./de-ch","./de-ch.js","./de.js","./dv","./dv.js","./el","./el.js","./en-au","./en-au.js","./en-ca","./en-ca.js","./en-gb","./en-gb.js","./en-ie","./en-ie.js","./en-il","./en-il.js","./en-in","./en-in.js","./en-nz","./en-nz.js","./en-sg","./en-sg.js","./eo","./eo.js","./es","./es-do","./es-do.js","./es-mx","./es-mx.js","./es-us","./es-us.js","./es.js","./et","./et.js","./eu","./eu.js","./fa","./fa.js","./fi","./fi.js","./fil","./fil.js","./fo","./fo.js","./fr","./fr-ca","./fr-ca.js","./fr-ch","./fr-ch.js","./fr.js","./fy","./fy.js","./ga","./ga.js","./gd","./gd.js","./gl","./gl.js","./gom-deva","./gom-deva.js","./gom-latn","./gom-latn.js","./gu","./gu.js","./he","./he.js","./hi","./hi.js","./hr","./hr.js","./hu","./hu.js","./hy-am","./hy-am.js","./id","./id.js","./is","./is.js","./it","./it-ch","./it-ch.js","./it.js","./ja","./ja.js","./jv","./jv.js","./ka","./ka.js","./kk","./kk.js","./km","./km.js","./kn","./kn.js","./ko","./ko.js","./ku","./ku-kmr","./ku-kmr.js","./ku.js","./ky","./ky.js","./lb","./lb.js","./lo","./lo.js","./lt","./lt.js","./lv","./lv.js","./me","./me.js","./mi","./mi.js","./mk","./mk.js","./ml","./ml.js","./mn","./mn.js","./mr","./mr.js","./ms","./ms-my","./ms-my.js","./ms.js","./mt","./mt.js","./my","./my.js","./nb","./nb.js","./ne","./ne.js","./nl","./nl-be","./nl-be.js","./nl.js","./nn","./nn.js","./oc-lnc","./oc-lnc.js","./pa-in","./pa-in.js","./pl","./pl.js","./pt","./pt-br","./pt-br.js","./pt.js","./ro","./ro.js","./ru","./ru.js","./sd","./sd.js","./se","./se.js","./si","./si.js","./sk","./sk.js","./sl","./sl.js","./sq","./sq.js","./sr","./sr-cyrl","./sr-cyrl.js","./sr.js","./ss","./ss.js","./sv","./sv.js","./sw","./sw.js","./ta","./ta.js","./te","./te.js","./tet","./tet.js","./tg","./tg.js","./th","./th.js","./tk","./tk.js","./tl-ph","./tl-ph.js","./tlh","./tlh.js","./tr","./tr.js","./tzl","./tzl.js","./tzm","./tzm-latn","./tzm-latn.js","./tzm.js","./ug-cn","./ug-cn.js","./uk","./uk.js","./ur","./ur.js","./uz","./uz-latn","./uz-latn.js","./uz.js","./vi","./vi.js","./x-pseudo","./x-pseudo.js","./yo","./yo.js","./zh-cn","./zh-cn.js","./zh-hk","./zh-hk.js","./zh-mo","./zh-mo.js","./zh-tw","./zh-tw.js","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports"],"mappings":"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ACAC,aAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,QAAA,IACAC,WAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,gBAAA,IACAC,aAAA,IACAC,gBAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,UAAA,IACAC,aAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,WAAA,IACAC,cAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,WAAA,IACAC,cAAA,IACAC,UAAA,IACAC,aAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,YAAA,IACAC,eAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,QAAA,IACAC,WAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,UAAA,IACAC,aAAA,IACAC,QAAA,IACAC,WAAA,IACAC,OAAA,IACAC,UAAA,IACAC,QAAA,IACAC,WAAA,IACAC,QAAA,IACAC,aAAA,IACAC,gBAAA,IACAC,WAAA,IACAC,UAAA,IACAC,aAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,OAAA,IACAC,YAAA,IACAC,eAAA,IACAC,UAAA,IACAC,OAAA,IACAC,UAAA,IACAC,aAAA,IACAC,gBAAA,IACAC,OAAA,IACAC,UAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,IACAC,UAAA,IACAC,aAAA,KAIA,SAAAC,EAAAC,GACA,IAAAC,EAAAC,EAAAF,GACA,OAAAG,EAAAF,GAEA,SAAAC,EAAAF,GACA,IAAAG,EAAAC,EAAAxR,EAAAoR,GAAA,CACA,IAAAK,EAAA,IAAAC,MAAA,uBAAAN,EAAA,KAEA,MADAK,EAAAE,KAAA,mBACAF,EAEA,OAAAzR,EAAAoR,GAEAD,EAAAS,KAAA,WACA,OAAAC,OAAAD,KAAA5R,IAEAmR,EAAAW,QAAAR,EACAS,EAAAC,QAAAb,EACAA,EAAAE,GAAA","file":"block-10.430117f348aedc9992ce.js","sourcesContent":["const NS = 'ChartBlock';\nconst CLS = 'chartBlock';\n\nlet d3 = require('d3');\nlet uuidv4 = require('uuid/v4');\nlet moment = require('moment');\n\nimport { mediaQuery } from '../../../../global/js/wool/mediaQuery';\nimport { numberFormatter } from '../../../../global/js/wool/numberFormatter';\nimport { colorGenerator } from '../../../../global/js/wool/colorGenerator';\n\nexport class ChartBlock {\n\tconstructor(element, className = CLS) {\n\t\tthis.element = element;\n\t\tthis.$element = $(element);\n\t\tthis.$chart = this.$element.find(`.chart`);\n\n\t\tthis.setChartId();\n\t\tthis.setEmptyMessages();\n\t\tthis.setEmptyData();\n\n\t\tthis.isDataEmpty = false;\n\t\tthis.margin = {\n\t\t\ttop: 30,\n\t\t\tright: 30,\n\t\t\tbottom: 50,\n\t\t\tleft: 50\n\t\t};\n\n\t\tthis.mediaQuery = mediaQuery;\n\t\tthis.numberFormatter = numberFormatter;\n\t\tthis.colorGenerator = colorGenerator;\n\n\t\tthis.heightRatio = 0.66; // Height ratio relative to width, in this case it would be 3:2\n\n\t\t// Updates the chart from an external source\n\t\tthis.$element.on(`${className}.update`, (event, params) => {\n\t\t\tthis.updateChartData(params);\n\t\t});\n\t}\n\n\tupdateChartData(params) {\n\t\tlet data = params.data;\n\n\t\tif(!_.isNil(data)) {\n\t\t\tthis.isDataEmpty = false;\n\t\t\tthis.data = data;\n\t\t\tthis.removeMessage();\n\t\t\tthis.initChart();\n\t\t}\n\t\telse {\n\t\t\tif(!params.isEmpty) {\n\t\t\t\tconsole.error(`${NS}::Error`, 'Chart data could not be loaded.');\n\t\t\t}\n\t\t\tthis.isDataEmpty = true;\n\t\t\tthis.data = _.cloneDeep(this.emptyData);\n\t\t\tthis.initChart();\n\t\t\tthis.removeMessage();\n\n\t\t\tif(params.isEmpty) {\n\t\t\t\tthis.appendMessage(false);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.appendMessage(true);\n\t\t\t}\n\t\t}\n\t}\n\n\t// Ensures that the chart contains a unique id\n\tsetChartId() {\n\t\tthis.chartId = uuidv4();\n\t\tthis.$chart.attr('data-uuid', this.chartId);\n\t}\n\n\tgetChartNode() {\n\t\treturn d3.select(`[data-uuid=\"${this.chartId}\"]`);\n\t}\n\n\t// Sets the generic error messages\n\tsetEmptyMessages() {\n\t\tthis.emptyMessage = !_.isNil(this.$chart.attr('data-empty-message')) ? this.$chart.attr('data-empty-message') : 'No items loaded';\n\t\tthis.errorMessage = !_.isNil(this.$chart.attr('data-error-message')) ? this.$chart.attr('data-error-message') : 'Error in loading chart…';\n\t}\n\n\t// Sets empty data for the chart to render. Overridable\n\tsetEmptyData() {\n\t\tlet values = [];\n\n\t\tfor(let i = 0; i < 6; i++) {\n\t\t\tvalues.push({\n\t\t\t\txValue: i + 1,\n\t\t\t\tyValue: i + 1\n\t\t\t});\n\t\t}\n\n\t\tthis.emptyData = values;\n\t}\n\n\tappendMessage(isError) {\n\t\tlet emptyMessage = '';\n\t\tif(isError) {\n\t\t\temptyMessage = this.errorMessage;\n\t\t}\n\t\telse {\n\t\t\temptyMessage = this.emptyMessage;\n\t\t}\n\n\t\tthis.$chart.append(`
`);\n\t}\n\n\tremoveMessage() {\n\t\tthis.$chart.remove(`.chart-message`);\n\t}\n\n\t// Initializes the chart by revealing it, drawing it and implementing an event that redraws it when the window resizes\n\tinitChart() {\n\t\tthis.$chart.css({ visibility: 'visible' });\n\t\tthis.drawChart();\n\t\t$(window).on('resize', _.debounce(() => {\n\t\t\tthis.drawChart();\n\t\t}, 500));\n\t}\n\n\t// Overridable draw chart function\n\tdrawChart() {\n\t\tthis.clearSvg();\n\t\tthis.setChartDimensions();\n\t\tthis.drawSvg();\n\n\t\tthis.defineXAxesScales();\n\t\tthis.defineYAxesScales();\n\n\t\tthis.drawXAxes();\n\t\tthis.drawYAxes();\n\t}\n\n\tclearSvg() {\n\t\td3.select(`[data-uuid=\"${this.chartId}\"]`).select('svg').remove(); // Removes the chart\n\t}\n\n\tsetChartDimensions() {\n\t\tthis.width = this.$element.width() - this.margin.left - this.margin.right;\n\t\tthis.height = (this.$element.width() * this.heightRatio) - this.margin.top - this.margin.bottom;\n\t}\n\n\tdrawSvg() {\n\t\tthis.svg = d3.select(`[data-uuid=\"${this.chartId}\"]`)\n\t\t\t.append('svg')\n\t\t\t.attr('width', this.width + this.margin.left + this.margin.right)\n\t\t\t.attr('height', this.height + this.margin.top + this.margin.bottom)\n\t\t\t.append('g')\n\t\t\t.attr('transform', `translate(${this.margin.left},${this.margin.top})`);\n\t}\n\n\tdefineXAxesScales() {\n\t\tthis.xAxisBottom = d3.scaleLinear()\n\t\t\t.range([0, this.width])\n\t\t\t.domain(d3.extent(this.data, (datum) => {\n\t\t\t\treturn datum.xValue;\n\t\t\t})).nice();\n\t}\n\n\tdefineYAxesScales() {\n\t\tthis.yAxisLeft = d3.scaleLinear()\n\t\t\t.range([this.height, 0])\n\t\t\t.domain(d3.extent(this.data, (datum) => {\n\t\t\t\treturn datum.yValue;\n\t\t\t})).nice();\n\t}\n\n\tdrawXAxes() {\n\t\tthis.svg.append('g')\n\t\t\t.attr('class', 'x-axis x-axis--bottom')\n\t\t\t.attr('transform', `translate(0, ${this.height})`)\n\t\t\t.call(d3.axisBottom(this.xAxisBottom));\n\t}\n\n\tdrawYAxes() {\n\t\tthis.svg.append('g')\n\t\t\t.attr('class', 'y-axis')\n\t\t\t.call(d3.axisLeft(this.yAxisLeft));\n\t}\n\n\t// Util method to format moment dates\n\tgetMomentDate(date, format = 'DD/MM/YYYY') {\n\t\treturn moment(date, format);\n\t}\n\n\t// Creates an inner tspan element for the text element and clips the text\n\ttextWrap(textElement, maxWidth, x, y) {\n\t\tlet words = textElement.text();\n\t\tlet tspan = textElement.text(null).append('tspan').text(words).attr('x', x).attr('y', y);\n\n\t\tlet textLength = tspan.node().getComputedTextLength();\n\t\tlet text = tspan.text();\n\t\twhile(textLength > maxWidth && text.length > 0) {\n\t\t\ttext = text.slice(0, -1);\n\t\t\ttspan.text(text + '…');\n\t\t\ttextLength = tspan.node().getComputedTextLength();\n\t\t}\n\t}\n\n\t// Gets an appropriate tick interval depending on the range\n\tgetLinearTick(range, power = 0, tickCount = 20) {\n\t\tif(range !== 0) {\n\t\t\tlet intervals = [0.1, 0.2, 0.5, 1, 2, 5];\n\t\t\tfor(let i = 0; i < intervals.length; i++) {\n\t\t\t\tif((range / (intervals[i] * Math.pow(10, power))) > tickCount) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn intervals[i] * Math.pow(10, power);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpower += 1;\n\t\t\treturn this.getLinearTick(range, power, tickCount);\n\t\t}\n\t\treturn 1;\n\t}\n}\n","const NS = 'MarketEmiChartBlock';\nconst CLS = 'marketEmiChartBlock';\n\nimport { ChartBlock } from '../../chartBlock/js/chartBlock';\n\nlet moment = require('moment');\nlet d3 = require('d3');\n\nexport class MarketEmiChartBlock extends ChartBlock {\n\tconstructor(element) {\n\t\tsuper(element, CLS);\n\n\t\tthis.api = this.$element.attr('data-api');\n\n\t\tthis.margin = {\n\t\t\ttop: 10,\n\t\t\tright: 10,\n\t\t\tbottom: 50,\n\t\t\tleft: 60\n\t\t};\n\n\t\tthis.heightRatio = 0.55;\n\n\t\tthis.dotRadius = 3;\n\t\tthis.dotFocusRadius = 3;\n\n\t\tthis.urlParams = {};\n\n\t\tthis.$filtersSelect = this.$element.find(`.${CLS}-filters-select`);\n\n\t\tif(this.$filtersSelect && this.$filtersSelect.length > 0) {\n\t\t\tthis.setFilterValueEvent();\n\t\t\tthis.initFilterChangeEvent();\n\t\t}\n\n\t\tthis.getChartDataFromApi();\n\t}\n\n\tsetFilterValueEvent() {\n\t\tthis.$filtersSelect.each((index, element) => {\n\t\t\tlet $element = $(element);\n\t\t\tlet filterKey = $element.data('filter-key');\n\n\t\t\tif(!(_.isNil(this.urlParams[filterKey]) && $element.val() === '')) {\n\t\t\t\tif(_.isNil($element.val()) || $element.val() === '') {\n\t\t\t\t\tdelete this.urlParams[filterKey];\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(_.isArray($element.val()) && $element.val().length > 0) {\n\t\t\t\t\t\tthis.urlParams[filterKey] = $element.val().join(',');\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.urlParams[filterKey] = $element.val();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tinitFilterChangeEvent() {\n\t\tthis.$filtersSelect.on('change', (event) => {\n\t\t\tlet $element = $(event.currentTarget);\n\t\t\tlet filterKey = $element.data('filter-key');\n\n\t\t\tif(!(_.isNil(this.urlParams[filterKey]) && $element.val() === '')) {\n\t\t\t\t// Ensure that the filterKey does not match the current select value\n\t\t\t\tif(this.urlParams[filterKey] !== $element.val()) {\n\t\t\t\t\tif(_.isNil($element.val()) || $element.val() === '') {\n\t\t\t\t\t\tdelete this.urlParams[filterKey];\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif(_.isArray($element.val())) {\n\t\t\t\t\t\t\tthis.urlParams[filterKey] = $element.val().join(',');\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tthis.urlParams[filterKey] = $element.val();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.getChartDataFromApi(true);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\t// Retrieves the data from the API\n\tgetChartDataFromApi() {\n\t\tlet url = this.api;\n\n\t\tif(!_.isEmpty(this.urlParams)) {\n\t\t\turl += `?${$.param(this.urlParams)}`;\n\t\t}\n\n\t\tif(this.api) {\n\t\t\t$.ajax({\n\t\t\t\ttype: 'GET',\n\t\t\t\turl: url,\n\t\t\t\tdataType: 'json',\n\t\t\t\tsuccess: (response) => {\n\t\t\t\t\tif(response && response.length > 0) {\n\t\t\t\t\t\tthis.$element.trigger(`${CLS}.update`, {\n\t\t\t\t\t\t\tdata: response\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis.$element.trigger(`${CLS}.update`, {\n\t\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\t\tisEmpty: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\terror: () => {\n\t\t\t\t\tthis.$element.trigger(`${CLS}.update`, {\n\t\t\t\t\t\tdata: null\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse {\n\t\t\tconsole.error(`${NS}::Error`, 'API is not set.');\n\t\t\tthis.$element.trigger(`${CLS}.update`, {\n\t\t\t\tdata: null\n\t\t\t});\n\t\t}\n\t}\n\n\t// Have placeholder data that generates a generic x-y axes.\n\tsetEmptyData() {\n\t\t// Placeholder data used, when there are no actual values…\n\t\tlet placeholderData = [\n\t\t\t{\n\t\t\t\tkey: 'AUD',\n\t\t\t\tlabel: 'AUD',\n\t\t\t\tvalues: []\n\t\t\t}\n\t\t];\n\t\tlet initialPlaceholderDataValue = 1200;\n\t\tlet initialPlaceholderIncrementValue = 125;\n\n\t\tfor(let i = 0; i < 6; i++) {\n\t\t\tplaceholderData[0].values.push({\n\t\t\t\tvalue: initialPlaceholderDataValue + (i * initialPlaceholderIncrementValue),\n\t\t\t\tdate: moment().month(i).day(1)\n\t\t\t});\n\t\t}\n\n\t\tthis.emptyData = placeholderData;\n\t}\n\n\tdrawChart() {\n\t\tthis.clearSvg();\n\t\tthis.setChartDimensions();\n\n\t\tif(this.$tooltip && this.$tooltip.length > 0) {\n\t\t\tthis.$tooltip.remove(); // Removes the tooltip\n\t\t}\n\n\t\tthis.drawSvg();\n\t\tthis.drawTooltip();\n\n\t\tthis.defineXAxesScales();\n\t\tthis.defineYAxesScales();\n\n\t\tthis.drawXAxes();\n\t\tthis.drawYAxes();\n\n\t\tif(!this.isDataEmpty) {\n\t\t\tthis.drawAreaAesthetic();\n\t\t\tthis.drawPaths();\n\t\t\tthis.drawPoints();\n\t\t}\n\t}\n\n\tdrawTooltip() {\n\t\tthis.tooltip = this.getChartNode()\n\t\t\t.append('div')\n\t\t\t.attr('class', `${CLS}-chart-tooltip`);\n\n\t\tthis.$tooltip = this.$chart.find(`.${CLS}-chart-tooltip`);\n\t}\n\n\tgetXAxisBottomData() {\n\t\tlet data = [];\n\t\t_.forEach(this.data, (datum) => {\n\t\t\t_.forEach(datum.values, (value) => {\n\t\t\t\tif(!_.isNil(value.date)) {\n\t\t\t\t\tdata.push(value.date);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tgetYAxisLeftData() {\n\t\tlet data = [];\n\n\t\t_.forEach(this.data, (datum) => {\n\t\t\t_.forEach(datum.values, (value) => {\n\t\t\t\tif(!_.isNil(value.value)) {\n\t\t\t\t\tdata.push(value.value);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\treturn data;\n\t}\n\n\tdefineXAxesScales() {\n\t\tlet data = this.getXAxisBottomData();\n\t\tthis.xMinTickValue = data[0];\n\t\tthis.xMaxTickValue = data[data.length - 1];\n\n\t\tif(this.xMinTickValue === this.xMaxTickValue) {\n\t\t\tthis.xMaxTickValue = moment(this.xMinTickValue, 'DD/MM/YYYY').add(1, 'years').subtract(2, 'months').format('DD/MM/YYYY');\n\t\t\tdata.push(this.xMaxTickValue);\n\t\t}\n\n\t\tthis.xAxisBottom = d3.scaleTime()\n\t\t\t.range([0, this.width])\n\t\t\t.domain(d3.extent(data, (datum) => {\n\t\t\t\treturn this.getMomentDate(datum).toDate();\n\t\t\t}));\n\n\t\tlet xMinTickDate = moment(this.xMinTickValue, 'DD/MM/YYYY');\n\t\tlet xMaxTickDate = moment(this.xMaxTickValue, 'DD/MM/YYYY');\n\t\tlet duration = moment.duration(xMaxTickDate.diff(xMinTickDate));\n\n\t\t// Don’t round the dates when months < 3\n\t\tif(!(duration.asMonths() <= 3)) {\n\t\t\tthis.xAxisBottom = this.xAxisBottom.nice();\n\t\t}\n\t}\n\n\tdefineYAxesScales() {\n\t\tlet data = this.getYAxisLeftData();\n\t\tlet yMinTickValue = _.minBy(data, (datum) => {\n\t\t\treturn datum;\n\t\t});\n\n\t\tlet yMaxTickValue = _.maxBy(data, (datum) => {\n\t\t\treturn datum;\n\t\t});\n\n\t\tif(yMinTickValue !== yMaxTickValue) {\n\t\t\tlet range = yMaxTickValue - yMinTickValue;\n\t\t\tthis.yTickValue = this.getLinearTick(range);\n\n\t\t\tthis.yMaxTickValue = Math.ceil((yMaxTickValue) / this.yTickValue) * this.yTickValue;\n\t\t\tthis.yMinTickValue = Math.floor((yMinTickValue / this.yTickValue)) * this.yTickValue;\n\t\t}\n\t\telse {\n\t\t\tthis.yMaxTickValue = Math.ceil(yMaxTickValue);\n\t\t\tthis.yMinTickValue = Math.floor(yMinTickValue);\n\t\t\tthis.yTickValue = _.floor(this.yMaxTickValue, (((this.yMaxTickValue + '').toString().length) * -1) + 1); // Rounds to the negative {x} sf.; // Rounds to the negative {x} sf.\n\t\t\tif(this.yTickValue !== 0) {\n\t\t\t\tthis.yMaxTickValue *= 2.05;\n\t\t\t\tthis.yMinTickValue = 0;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.yMinTickValue = -1;\n\t\t\t\tthis.yTickValue = 1;\n\t\t\t\tthis.yMaxTickValue = 1.05;\n\t\t\t}\n\t\t}\n\n\t\tthis.yAxisLeft = d3.scaleLinear()\n\t\t\t.range([this.height, 0])\n\t\t\t.domain([\n\t\t\t\tthis.yMinTickValue,\n\t\t\t\tthis.yMaxTickValue\n\t\t\t]).nice();\n\t}\n\n\tdrawXAxes() {\n\t\tlet tickOffset = 10;\n\n\t\tlet xMinTickDate = moment(this.xMinTickValue, 'DD/MM/YYYY');\n\t\tlet xMaxTickDate = moment(this.xMaxTickValue, 'DD/MM/YYYY');\n\t\tlet duration = moment.duration(xMaxTickDate.diff(xMinTickDate));\n\n\t\t// Render x-axes text values\n\t\t(() => {\n\t\t\tlet outerIndex = 0;\n\t\t\tthis.svg.append('g')\n\t\t\t\t.attr('class', 'x-axis')\n\t\t\t\t.attr('transform', `translate(0,${this.height + tickOffset})`)\n\t\t\t\t.call(d3.axisBottom(this.xAxisBottom).ticks(d3.timeDay.every(1)).tickFormat((value, index) => {\n\t\t\t\t\tif(duration.asMonths() <= 12) {\n\t\t\t\t\t\tif(duration.asMonths() <= 3) {\n\t\t\t\t\t\t\t// Return weekly date format if months <= 3\n\t\t\t\t\t\t\tif(index % 7 === 0) {\n\t\t\t\t\t\t\t\treturn moment(value).format('DD/MM');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// Return every first day of the month\n\t\t\t\t\t\t\tif(moment(value).date() === 1) {\n\t\t\t\t\t\t\t\treturn moment(value).format('MMM YY');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// Return every first day of the month\n\t\t\t\t\t\tif(moment(value).date() === 1) {\n\t\t\t\t\t\t\t// Return {x} monthly value based on {x} yearly value\n\t\t\t\t\t\t\tif(outerIndex % (Math.floor(duration.asYears()) * 2) === 0) {\n\t\t\t\t\t\t\t\touterIndex++;\n\t\t\t\t\t\t\t\treturn moment(value).format('MMM YY');\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\touterIndex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn '';\n\t\t\t\t}));\n\t\t})();\n\n\t\t// Render lines\n\t\t(() => {\n\t\t\tlet outerIndex = 0;\n\t\t\tthis.getChartNode().select('.x-axis').selectAll('line').attr('y2', (value, index, nodes) => {\n\t\t\t\tif(duration.asMonths() <= 12) {\n\t\t\t\t\tif(duration.asMonths() <= 3) {\n\t\t\t\t\t\t// Return weekly tick when if months <= 3\n\t\t\t\t\t\tif(index % 7 === 0) {\n\t\t\t\t\t\t\treturn -(this.height + tickOffset);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\t// Return monthly tick value\n\t\t\t\t\t\tif(moment(value).date() === 1) {\n\t\t\t\t\t\t\treturn -(this.height + tickOffset);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(moment(value).date() === 1) {\n\t\t\t\t\t\t// Return {x} monthly tick based on {x} yearly value\n\t\t\t\t\t\tif(outerIndex % (Math.floor(duration.asYears())) === 0) {\n\t\t\t\t\t\t\treturn -(this.height + tickOffset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\touterIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t\t});\n\t\t})();\n\n\t\t// Conceal x-axes text values for mobile devices\n\t\t(() => {\n\t\t\tlet ticks = this.getChartNode().select('.x-axis').selectAll('text');\n\t\t\tlet outerIndex = 0;\n\t\t\tticks.each((value, index, nodes) => {\n\t\t\t\tnodes[index].style.visibility = 'hidden';\n\t\t\t\tif(duration.asMonths() <= 12) {\n\t\t\t\t\tif(duration.asMonths() <= 3) {\n\t\t\t\t\t\tif(duration.asMonths() <= 1) {\n\t\t\t\t\t\t\tif(index % 7 === 0) {\n\t\t\t\t\t\t\t\tnodes[index].style.visibility = 'visible';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t// Return forntlightly on mobile for excess of one month\n\t\t\t\t\t\t\tif(this.mediaQuery.breakpointMaxWidth(this.mediaQuery.BREAKPOINTS.SM)) {\n\t\t\t\t\t\t\t\tif(index % 14 === 0) {\n\t\t\t\t\t\t\t\t\tnodes[index].style.visibility = 'visible';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tif(index % 7 === 0) {\n\t\t\t\t\t\t\t\t\tnodes[index].style.visibility = 'visible';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif(moment(value).date() === 1) {\n\t\t\t\t\t\t\tif(duration.asMonths() > 8) {\n\t\t\t\t\t\t\t\t// Returns every other month on mobile when months > 8\n\t\t\t\t\t\t\t\tif(this.mediaQuery.breakpointMaxWidth(this.mediaQuery.BREAKPOINTS.SM)) {\n\t\t\t\t\t\t\t\t\tif(outerIndex % 3 === 0) {\n\t\t\t\t\t\t\t\t\t\tnodes[index].style.visibility = 'visible';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\touterIndex++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tif(outerIndex % 2 === 0) {\n\t\t\t\t\t\t\t\t\t\tnodes[index].style.visibility = 'visible';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\touterIndex++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if(duration.asMonths() > 4) {\n\t\t\t\t\t\t\t\tif(this.mediaQuery.breakpointMaxWidth(this.mediaQuery.BREAKPOINTS.SM)) {\n\t\t\t\t\t\t\t\t\tif(outerIndex % 2 === 0) {\n\t\t\t\t\t\t\t\t\t\tnodes[index].style.visibility = 'visible';\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\touterIndex++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\tnodes[index].style.visibility = 'visible';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tnodes[index].style.visibility = 'visible';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(moment(value).date() === 1) {\n\t\t\t\t\t\tif(this.mediaQuery.breakpointMaxWidth(this.mediaQuery.BREAKPOINTS.SM)) {\n\t\t\t\t\t\t\tif(outerIndex % (Math.floor(duration.asYears()) * 4) === 0) {\n\t\t\t\t\t\t\t\tnodes[index].style.visibility = 'visible';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif(outerIndex % (Math.floor(duration.asYears()) * 2) === 0) {\n\t\t\t\t\t\t\t\tnodes[index].style.visibility = 'visible';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\touterIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t})();\n\t}\n\n\tdrawYAxes() {\n\t\tlet data = this.getYAxisLeftData();\n\t\tlet yMinTickValue = _.minBy(data, (datum) => {\n\t\t\treturn datum;\n\t\t});\n\n\t\tlet yMaxTickValue = _.maxBy(data, (datum) => {\n\t\t\treturn datum;\n\t\t});\n\t\t\n\t\tthis.svg.append('g')\n\t\t\t.attr('class', 'y-axis')\n\t\t\t.attr('transform', `translate(-5, 0)`)\n\t\t\t.call(d3.axisLeft(this.yAxisLeft).tickFormat((value, index) => {\n\t\t\t\tif(data.length > 1 && yMinTickValue !== yMaxTickValue) {\n\t\t\t\t\t// If mobile devices and the modulo by 4 is 1\n\t\t\t\t\tif(this.mediaQuery.breakpointMaxWidth(this.mediaQuery.BREAKPOINTS.SM)) {\n\t\t\t\t\t\tif(index % 4 === 1) {\n\t\t\t\t\t\t\treturn value%1==0 ? value : value.toFixed(2);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif(index % 3 === 1) {\n\t\t\t\t\t\t\treturn value%1==0 ? value : value.toFixed(2);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\treturn value%1==0 ? value : value.toFixed(2);\n\t\t\t\t}\n\t\t\t}).tickSize(-20).tickPadding(15).tickValues(d3.range(this.yMinTickValue, this.yMaxTickValue, this.yTickValue)));\n\n\t\tthis.getChartNode().select('.y-axis').selectAll('line').attr('x2', (value, index) => {\n\t\t\tif(data.length > 1 && yMinTickValue !== yMaxTickValue) {\n\t\t\t\tif(this.mediaQuery.breakpointMaxWidth(this.mediaQuery.BREAKPOINTS.SM)) {\n\t\t\t\t\tif(index === 0) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\t\t\t\t\telse if(index % 4 === 1) {\n\t\t\t\t\t\treturn -20;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tif(index === 0) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\t\t\t\t\telse if(index % 3 === 1) {\n\t\t\t\t\t\treturn -20;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -10;\n\t\t});\n\t}\n\n\tdrawPaths() {\n\t\t_.forEach(this.data, (datum) => {\n\t\t\tthis.svg.append('path')\n\t\t\t\t.datum(datum.values)\n\t\t\t\t.attr('class', 'plot-line')\n\t\t\t\t.attr('d', d3.line()\n\t\t\t\t\t.x((innerDatum) => {\n\t\t\t\t\t\treturn this.xAxisBottom(this.getMomentDate(innerDatum.date).toDate());\n\t\t\t\t\t})\n\t\t\t\t\t.y((innerDatum) => {\n\t\t\t\t\t\treturn this.yAxisLeft(innerDatum.value);\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t});\n\t}\n\n\tdrawPoints() {\n\t\t_.forEach(this.data, (datum) => {\n\t\t\tthis.svg.append('g')\n\t\t\t\t.selectAll('dot')\n\t\t\t\t.data(datum.values)\n\t\t\t\t.enter()\n\t\t\t\t.append('circle')\n\t\t\t\t.attr('class', 'plot-circle')\n\t\t\t\t.attr('cx', (innerDatum) => {\n\t\t\t\t\treturn this.xAxisBottom(this.getMomentDate(innerDatum.date).toDate());\n\t\t\t\t})\n\t\t\t\t.attr('cy', (innerDatum) => {\n\t\t\t\t\treturn this.yAxisLeft(innerDatum.value);\n\t\t\t\t})\n\t\t\t\t.attr('r', this.dotRadius)\n\t\t\t\t.on('mouseover', (innerDatum, innerIndex, nodes) => {\n\t\t\t\t\tthis.tooltip.style('display', 'block');\n\n\t\t\t\t\t// Have the dots grow\n\t\t\t\t\tlet circle = d3.select(nodes[innerIndex]);\n\n\t\t\t\t\tcircle.attr('r', this.dotFocusRadius)\n\t\t\t\t\t\t.attr('cx', () => {\n\t\t\t\t\t\t\treturn this.xAxisBottom(this.getMomentDate(innerDatum.date).toDate());\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.attr('cy', () => {\n\t\t\t\t\t\t\treturn this.yAxisLeft(innerDatum.value);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t// Add active class to the related tick\n\t\t\t\t\td3.select(nodes[innerIndex].parentNode.parentNode)\n\t\t\t\t\t\t.selectAll('.tick')\n\t\t\t\t\t\t.filter((innerInnerDatum, innerInnerIndex) => {\n\t\t\t\t\t\t\treturn innerDatum.date === innerInnerDatum && innerIndex === innerInnerIndex;\n\t\t\t\t\t\t}).select('line').classed('active', true);\n\t\t\t\t})\n\t\t\t\t.on('mousemove', (innerDatum, innerIndex, nodes) => {\n\t\t\t\t\tthis.tooltip.html(`\n\t\t\t\t\t\t