http://git-wip-us.apache.org/repos/asf/chukwa/blob/666dbb9c/src/main/web/hicc/js/chartist.min.js.map
----------------------------------------------------------------------
diff --git a/src/main/web/hicc/js/chartist.min.js.map 
b/src/main/web/hicc/js/chartist.min.js.map
new file mode 100644
index 0000000..513c272
--- /dev/null
+++ b/src/main/web/hicc/js/chartist.min.js.map
@@ -0,0 +1 @@
+{"version":3,"file":"chartist.min.js","sources":["chartist.js"],"names":["root","factory","define","amd","exports","module","this","Chartist","version","window","document","noop","n","alphaNumerate","String","fromCharCode","extend","target","sources","Array","prototype","slice","call","arguments","forEach","source","prop","replaceAll","str","subStr","newSubStr","replace","RegExp","stripUnit","value","ensureUnit","unit","querySelector","query","Node","times","length","apply","sum","previous","current","mapMultiply","factor","num","mapAdd","addend","serialMap","arr","cb","result","Math","max","map","e","index","args","roundWithPrecision","digits","precision","pow","round","escapingMap","&","<",">","\"","'","serialize","data","undefined","JSON","stringify","Object","keys","reduce","key","deserialize","parse","createSvg","container","width","height","className","svg","querySelectorAll","filter","getAttributeNS","xmlNs","prefix","removeChild","Svg","attr","addClass","style","appendChild"
 
,"_node","reverseData","labels","reverse","series","i","getDataArray","multi","recursiveConvert","isFalseyButZero","hasOwnProperty","multiValue","getNumberOrUndefined","y","x","reversed","normalizePadding","padding","fallback","top","right","bottom","left","getMetaData","meta","orderOfMagnitude","floor","log","abs","LN10","projectLength","axisLength","bounds","range","getAvailableHeight","options","chartPadding","axisX","offset","getHighLow","dimension","recursiveHighLow","findHigh","highLow","high","findLow","low","toUpperCase","Number","MAX_VALUE","referenceValue","min","isNum","isNaN","isFinite","getMultiValue","rho","gcd","p","q","f","divisor","x1","x2","getBounds","scaleMinSpace","onlyInteger","newMin","newMax","optimizationCounter","valueRange","oom","step","ceil","numberOfSteps","scaleUp","smallestFactor","Error","values","push","polarToCartesian","centerX","centerY","radius","angleInDegrees","angleInRadians","PI","cos","sin","createChartRect","fallbackPadding","hasAxis","axi
 
sY","yAxisOffset","xAxisOffset","normalizedPadding","chartRect","y1","y2","position","createGrid","axis","group","classes","eventEmitter","positionalData","units","pos","counterUnits","gridElement","elem","join","emit","type","element","createLabel","axisOffset","labelOffset","useForeignObject","labelElement","len","content","foreignObject","text","getSeriesOption","name","seriesOptions","optionsProvider","responsiveOptions","updateCurrentOptions","preventChangedEvent","previousOptions","currentOptions","baseOptions","mql","matchMedia","matches","removeMediaQueryListeners","mediaQueryListeners","removeListener","addListener","getCurrentOptions","Interpolation","none","pathCoordinates","valueData","path","Path","hole","move","line","simple","defaultOptions","d","prevX","prevY","currX","currY","prevData","currData","curve","cardinal","splitIntoSegments","segments","tension","t","c","paths","segment","z","iLen","postpone","EventEmitter","addEventHandler","event","handler","handlers","r
 
emoveEventHandler","splice","indexOf","starHandler","listToArray","list","properties","superProtoOverride","superProto","Class","proto","create","cloneDefinitions","constr","instance","fn","constructor","getOwnPropertyNames","propName","defineProperty","getOwnPropertyDescriptor","update","override","initializeTimeoutId","createChart","detach","clearTimeout","removeEventListener","resizeListener","on","off","initialize","addEventListener","bind","plugins","plugin","Base","supportsForeignObject","isSupported","supportsAnimations","__chartist__","setTimeout","attributes","parent","insertFirst","Element","createElementNS","svgNs","setAttributeNS","qualifiedName","uri","firstChild","insertBefore","ns","getAttribute","setAttribute","parentNode","SVGElement","node","nodeName","selector","foundNode","foundNodes","List","createElement","innerHTML","xhtmlNs","fnObj","createTextNode","empty","remove","newElement","replaceChild","append","trim","split","names","concat","self","removeClass","rem
 
ovedClasses","removeAllClasses","getBBoxProperty","getBBox","clientHeight","clientWidth","animate","animations","guided","attribute","createAnimate","animationDefinition","timeout","easing","attributeProperties","Easing","begin","dur","calcMode","keySplines","keyTimes","fill","from","attributeName","beginElement","err","to","params","SvgList","nodeList","svgElements","prototypeProperty","feature","implementation","hasFeature","easingCubicBeziers","easeInSine","easeOutSine","easeInOutSine","easeInQuad","easeOutQuad","easeInOutQuad","easeInCubic","easeOutCubic","easeInOutCubic","easeInQuart","easeOutQuart","easeInOutQuart","easeInQuint","easeOutQuint","easeInOutQuint","easeInExpo","easeOutExpo","easeInOutExpo","easeInCirc","easeOutCirc","easeInOutCirc","easeInBack","easeOutBack","easeInOutBack","command","pathElements","relative","pathElement","toLowerCase","forEachParam","pathElementIndex","elementDescriptions","paramName","paramIndex","SvgPath","close","count","arc","rx","ry","xAr",
 
"lAf","sf","chunks","match","pop","elements","chunk","shift","description","spliceArgs","accuracyMultiplier","accuracy","scale","translate","transform","transformFnc","transformed","clone","splitByCommand","joinedPath","j","m","l","a","Axis","ticks","axisUnits","rectEnd","rectStart","gridOffset","rectOffset","createGridAndLabels","gridGroup","labelGroup","chartOptions","axisOptions","projectedValues","projectValue","labelValues","labelInterpolationFnc","projectedValue","labelLength","showGrid","classNames","grid","dir","showLabel","label","AutoScaleAxis","axisUnit","normalized","FixedScaleAxis","stepLength","StepAxis","stretch","raw","chart","seriesGroup","fullWidth","seriesIndex","seriesElement","series-name","pathData","valueIndex","lineSmooth","showPoint","showLine","showArea","areaBase","smoothing","point","v","areaBaseProjected","pathSegment","solidPathSegments","firstElement","lastElement","areaPath","area","Line","vertical","horizontal","start","end","distributeSeries","horiz
 
ontalBars","stackBars","serialSums","prev","curr","valueAxis","labelAxisTicks","labelAxis","zeroPoint","stackedBarValues","periodHalfLength","biPol","projected","bar","previousStack","labelAxisValueIndex","seriesBarDistance","positions","Bar","determineAnchorPosition","center","direction","toTheRight","labelsGroup","labelRadius","totalDataSum","seriesGroups","startAngle","dataArray","donut","chartDonut","chartPie","total","previousValue","currentValue","donutWidth","labelPosition","hasSingleValInSeries","val","endAngle","sliceDonut","slicePie","interpolatedValue","dx","dy","text-anchor","labelDirection","Pie"],"mappings":"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","sourcesContent":["(function
 (root, factory) {\n  if (typeof define === 'function' && define.amd) {\n    // 
AMD. Register as an anonymous module unless amdModuleId is set\n    define([], 
function () {\n      return (root['Chartist'] = factory());\n    });\n  } else 
if (typeof exports === 'object') {\n    // Node. Does not work with strict 
CommonJS, but\n    // only CommonJS-like environments that support 
module.exports,\n    // like Node.\n    module.exports 
 = factory();\n  } else {\n    root['Chartist'] = factory();\n  }\n}(this, 
function () {\n\n/* Chartist.js 0.9.4\n * Copyright © 2015 Gion Kunz\n * Free 
to use under the WTFPL license.\n * http://www.wtfpl.net/\n */\n/**\n * The 
core module of Chartist that is mainly providing static functions and higher 
level functions for chart modules.\n *\n * @module Chartist.Core\n */\nvar 
Chartist = {\n  version: '0.9.4'\n};\n\n(function (window, document, Chartist) 
{\n  'use strict';\n\n  /**\n   * Helps to simplify functional style code\n   
*\n   * @memberof Chartist.Core\n   * @param {*} n This exact value will be 
returned by the noop function\n   * @return {*} The same value that was 
provided to the n parameter\n   */\n  Chartist.noop = function (n) {\n    
return n;\n  };\n\n  /**\n   * Generates a-z from a number 0 to 26\n   *\n   * 
@memberof Chartist.Core\n   * @param {Number} n A number from 0 to 26 that will 
result in a letter a-z\n   * @return {String} A character from a-z based on th
 e input number n\n   */\n  Chartist.alphaNumerate = function (n) {\n    // 
Limit to a-z\n    return String.fromCharCode(97 + n % 26);\n  };\n\n  /**\n   * 
Simple recursive object extend\n   *\n   * @memberof Chartist.Core\n   * @param 
{Object} target Target object where the source will be merged into\n   * @param 
{Object...} sources This object (objects) will be merged into target and then 
target is returned\n   * @return {Object} An object that has the same reference 
as target but is extended and merged with the properties of source\n   */\n  
Chartist.extend = function (target) {\n    target = target || {};\n\n    var 
sources = Array.prototype.slice.call(arguments, 1);\n    
sources.forEach(function(source) {\n      for (var prop in source) {\n        
if (typeof source[prop] === 'object' && source[prop] !== null && !(source[prop] 
instanceof Array)) {\n          target[prop] = Chartist.extend({}, 
target[prop], source[prop]);\n        } else {\n          target[prop] = 
source[prop];\n
         }\n      }\n    });\n\n    return target;\n  };\n\n  /**\n   * 
Replaces all occurrences of subStr in str with newSubStr and returns a new 
string.\n   *\n   * @memberof Chartist.Core\n   * @param {String} str\n   * 
@param {String} subStr\n   * @param {String} newSubStr\n   * @return {String}\n 
  */\n  Chartist.replaceAll = function(str, subStr, newSubStr) {\n    return 
str.replace(new RegExp(subStr, 'g'), newSubStr);\n  };\n\n  /**\n   * Converts 
a string to a number while removing the unit if present. If a number is passed 
then this will be returned unmodified.\n   *\n   * @memberof Chartist.Core\n   
* @param {String|Number} value\n   * @return {Number} Returns the string as 
number or NaN if the passed length could not be converted to pixel\n   */\n  
Chartist.stripUnit = function(value) {\n    if(typeof value === 'string') {\n   
   value = value.replace(/[^0-9\\+-\\.]/g, '');\n    }\n\n    return +value;\n  
};\n\n  /**\n   * Converts a number to a string with a unit. If a st
 ring is passed then this will be returned unmodified.\n   *\n   * @memberof 
Chartist.Core\n   * @param {Number} value\n   * @param {String} unit\n   * 
@return {String} Returns the passed number value with unit.\n   */\n  
Chartist.ensureUnit = function(value, unit) {\n    if(typeof value === 
'number') {\n      value = value + unit;\n    }\n\n    return value;\n  };\n\n  
/**\n   * This is a wrapper around document.querySelector that will return the 
query if it's already of type Node\n   *\n   * @memberof Chartist.Core\n   * 
@param {String|Node} query The query to use for selecting a Node or a DOM node 
that will be returned directly\n   * @return {Node}\n   */\n  
Chartist.querySelector = function(query) {\n    return query instanceof Node ? 
query : document.querySelector(query);\n  };\n\n  /**\n   * Functional style 
helper to produce array with given length initialized with undefined values\n   
*\n   * @memberof Chartist.Core\n   * @param length\n   * @return {Array}\n   
*/\n  Chartist
 .times = function(length) {\n    return Array.apply(null, new 
Array(length));\n  };\n\n  /**\n   * Sum helper to be used in reduce 
functions\n   *\n   * @memberof Chartist.Core\n   * @param previous\n   * 
@param current\n   * @return {*}\n   */\n  Chartist.sum = function(previous, 
current) {\n    return previous + (current ? current : 0);\n  };\n\n  /**\n   * 
Multiply helper to be used in `Array.map` for multiplying each value of an 
array with a factor.\n   *\n   * @memberof Chartist.Core\n   * @param {Number} 
factor\n   * @returns {Function} Function that can be used in `Array.map` to 
multiply each value in an array\n   */\n  Chartist.mapMultiply = 
function(factor) {\n    return function(num) {\n      return num * factor;\n    
};\n  };\n\n  /**\n   * Add helper to be used in `Array.map` for adding a 
addend to each value of an array.\n   *\n   * @memberof Chartist.Core\n   * 
@param {Number} addend\n   * @returns {Function} Function that can be used in 
`Array.map` to add a addend to 
 each value in an array\n   */\n  Chartist.mapAdd = function(addend) {\n    
return function(num) {\n      return num + addend;\n    };\n  };\n\n  /**\n   * 
Map for multi dimensional arrays where their nested arrays will be mapped in 
serial. The output array will have the length of the largest nested array. The 
callback function is called with variable arguments where each argument is the 
nested array value (or undefined if there are no more values).\n   *\n   * 
@memberof Chartist.Core\n   * @param arr\n   * @param cb\n   * @return 
{Array}\n   */\n  Chartist.serialMap = function(arr, cb) {\n    var result = 
[],\n        length = Math.max.apply(null, arr.map(function(e) {\n          
return e.length;\n        }));\n\n    
Chartist.times(length).forEach(function(e, index) {\n      var args = 
arr.map(function(e) {\n        return e[index];\n      });\n\n      
result[index] = cb.apply(null, args);\n    });\n\n    return result;\n  };\n\n  
/**\n   * This helper function can be used to round 
 values with certain precision level after decimal. This is used to prevent 
rounding errors near float point precision limit.\n   *\n   * @memberof 
Chartist.Core\n   * @param {Number} value The value that should be rounded with 
precision\n   * @param {Number} [digits] The number of digits after decimal 
used to do the rounding\n   * @returns {number} Rounded value\n   */\n  
Chartist.roundWithPrecision = function(value, digits) {\n    var precision = 
Math.pow(10, digits || Chartist.precision);\n    return Math.round(value * 
precision) / precision;\n  };\n\n  /**\n   * Precision level used internally in 
Chartist for rounding. If you require more decimal places you can increase this 
number.\n   *\n   * @memberof Chartist.Core\n   * @type {number}\n   */\n  
Chartist.precision = 8;\n\n  /**\n   * A map with characters to escape for 
strings to be safely used as attribute values.\n   *\n   * @memberof 
Chartist.Core\n   * @type {Object}\n   */\n  Chartist.escapingMap = {\n    '&': 
'&amp;',\n 
    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    '\\'': '&#039;'\n  
};\n\n  /**\n   * This function serializes arbitrary data to a string. In case 
of data that can't be easily converted to a string, this function will create a 
wrapper object and serialize the data using JSON.stringify. The outcoming 
string will always be escaped using Chartist.escapingMap.\n   * If called with 
null or undefined the function will return immediately with null or 
undefined.\n   *\n   * @memberof Chartist.Core\n   * @param 
{Number|String|Object} data\n   * @return {String}\n   */\n  Chartist.serialize 
= function(data) {\n    if(data === null || data === undefined) {\n      return 
data;\n    } else if(typeof data === 'number') {\n      data = ''+data;\n    } 
else if(typeof data === 'object') {\n      data = JSON.stringify({data: 
data});\n    }\n\n    return 
Object.keys(Chartist.escapingMap).reduce(function(result, key) {\n      return 
Chartist.replaceAll(result, key, Chartist.escapingMap[key])
 ;\n    }, data);\n  };\n\n  /**\n   * This function de-serializes a string 
previously serialized with Chartist.serialize. The string will always be 
unescaped using Chartist.escapingMap before it's returned. Based on the input 
value the return type can be Number, String or Object. JSON.parse is used with 
try / catch to see if the unescaped string can be parsed into an Object and 
this Object will be returned on success.\n   *\n   * @memberof Chartist.Core\n  
 * @param {String} data\n   * @return {String|Number|Object}\n   */\n  
Chartist.deserialize = function(data) {\n    if(typeof data !== 'string') {\n   
   return data;\n    }\n\n    data = 
Object.keys(Chartist.escapingMap).reduce(function(result, key) {\n      return 
Chartist.replaceAll(result, Chartist.escapingMap[key], key);\n    }, data);\n\n 
   try {\n      data = JSON.parse(data);\n      data = data.data !== undefined 
? data.data : data;\n    } catch(e) {}\n\n    return data;\n  };\n\n  /**\n   * 
Create or reinitialize the SVG
  element for the chart\n   *\n   * @memberof Chartist.Core\n   * @param {Node} 
container The containing DOM Node object that will be used to plant the SVG 
element\n   * @param {String} width Set the width of the SVG element. Default 
is 100%\n   * @param {String} height Set the height of the SVG element. Default 
is 100%\n   * @param {String} className Specify a class to be added to the SVG 
element\n   * @return {Object} The created/reinitialized SVG element\n   */\n  
Chartist.createSvg = function (container, width, height, className) {\n    var 
svg;\n\n    width = width || '100%';\n    height = height || '100%';\n\n    // 
Check if there is a previous SVG element in the container that contains the 
Chartist XML namespace and remove it\n    // Since the DOM API does not support 
namespaces we need to manually search the returned list 
http://www.w3.org/TR/selectors-api/\n    
Array.prototype.slice.call(container.querySelectorAll('svg')).filter(function 
filterChartistSvgObjects(svg) {\n    
   return svg.getAttributeNS('http://www.w3.org/2000/xmlns/', 
Chartist.xmlNs.prefix);\n    }).forEach(function removePreviousElement(svg) {\n 
     container.removeChild(svg);\n    });\n\n    // Create svg object with 
width and height or use 100% as default\n    svg = new 
Chartist.Svg('svg').attr({\n      width: width,\n      height: height\n    
}).addClass(className).attr({\n      style: 'width: ' + width + '; height: ' + 
height + ';'\n    });\n\n    // Add the DOM node to our container\n    
container.appendChild(svg._node);\n\n    return svg;\n  };\n\n\n  /**\n   * 
Reverses the series, labels and series data arrays.\n   *\n   * @memberof 
Chartist.Core\n   * @param data\n   */\n  Chartist.reverseData = function(data) 
{\n    data.labels.reverse();\n    data.series.reverse();\n    for (var i = 0; 
i < data.series.length; i++) {\n      if(typeof(data.series[i]) === 'object' && 
data.series[i].data !== undefined) {\n        data.series[i].data.reverse();\n  
    } else if(data.series[i] ins
 tanceof Array) {\n        data.series[i].reverse();\n      }\n    }\n  };\n\n  
/**\n   * Convert data series into plain array\n   *\n   * @memberof 
Chartist.Core\n   * @param {Object} data The series object that contains the 
data to be visualized in the chart\n   * @param {Boolean} reverse If true the 
whole data is reversed by the getDataArray call. This will modify the data 
object passed as first parameter. The labels as well as the series order is 
reversed. The whole series data arrays are reversed too.\n   * @param {Boolean} 
multi Create a multi dimensional array from a series data array where a value 
object with `x` and `y` values will be created.\n   * @return {Array} A plain 
array that contains the data to be visualized in the chart\n   */\n  
Chartist.getDataArray = function (data, reverse, multi) {\n    // If the data 
should be reversed but isn't we need to reverse it\n    // If it's reversed but 
it shouldn't we need to reverse it back\n    // That's required to handle data u
 pdates correctly and to reflect the responsive configurations\n    if(reverse 
&& !data.reversed || !reverse && data.reversed) {\n      
Chartist.reverseData(data);\n      data.reversed = !data.reversed;\n    }\n\n   
 // Recursively walks through nested arrays and convert string values to 
numbers and objects with value properties\n    // to values. Check the tests in 
data core -> data normalization for a detailed specification of expected 
values\n    function recursiveConvert(value) {\n      
if(Chartist.isFalseyButZero(value)) {\n        // This is a hole in data and we 
should return undefined\n        return undefined;\n      } else if((value.data 
|| value) instanceof Array) {\n        return (value.data || 
value).map(recursiveConvert);\n      } else if(value.hasOwnProperty('value')) 
{\n        return recursiveConvert(value.value);\n      } else {\n        
if(multi) {\n          var multiValue = {};\n\n          // Single series value 
arrays are assumed to specify the Y-Axis value\n 
          // For example: [1, 2] => [{x: undefined, y: 1}, {x: undefined, y: 
2}]\n          // If multi is a string then it's assumed that it specified 
which dimension should be filled as default\n          if(typeof multi === 
'string') {\n            multiValue[multi] = 
Chartist.getNumberOrUndefined(value);\n          } else {\n            
multiValue.y = Chartist.getNumberOrUndefined(value);\n          }\n\n          
multiValue.x = value.hasOwnProperty('x') ? 
Chartist.getNumberOrUndefined(value.x) : multiValue.x;\n          multiValue.y 
= value.hasOwnProperty('y') ? Chartist.getNumberOrUndefined(value.y) : 
multiValue.y;\n\n          return multiValue;\n\n        } else {\n          
return Chartist.getNumberOrUndefined(value);\n        }\n      }\n    }\n\n    
return data.series.map(recursiveConvert);\n  };\n\n  /**\n   * Converts a 
number into a padding object.\n   *\n   * @memberof Chartist.Core\n   * @param 
{Object|Number} padding\n   * @param {Number} [fallback] This value is use
 d to fill missing values if a incomplete padding object was passed\n   * 
@returns {Object} Returns a padding object containing top, right, bottom, left 
properties filled with the padding number passed in as argument. If the 
argument is something else than a number (presumably already a correct padding 
object) then this argument is directly returned.\n   */\n  
Chartist.normalizePadding = function(padding, fallback) {\n    fallback = 
fallback || 0;\n\n    return typeof padding === 'number' ? {\n      top: 
padding,\n      right: padding,\n      bottom: padding,\n      left: padding\n  
  } : {\n      top: typeof padding.top === 'number' ? padding.top : fallback,\n 
     right: typeof padding.right === 'number' ? padding.right : fallback,\n     
 bottom: typeof padding.bottom === 'number' ? padding.bottom : fallback,\n      
left: typeof padding.left === 'number' ? padding.left : fallback\n    };\n  
};\n\n  Chartist.getMetaData = function(series, index) {\n    var value = 
series.data ? seri
 es.data[index] : series[index];\n    return value ? 
Chartist.serialize(value.meta) : undefined;\n  };\n\n  /**\n   * Calculate the 
order of magnitude for the chart scale\n   *\n   * @memberof Chartist.Core\n   
* @param {Number} value The value Range of the chart\n   * @return {Number} The 
order of magnitude\n   */\n  Chartist.orderOfMagnitude = function (value) {\n   
 return Math.floor(Math.log(Math.abs(value)) / Math.LN10);\n  };\n\n  /**\n   * 
Project a data length into screen coordinates (pixels)\n   *\n   * @memberof 
Chartist.Core\n   * @param {Object} axisLength The svg element for the chart\n  
 * @param {Number} length Single data value from a series array\n   * @param 
{Object} bounds All the values to set the bounds of the chart\n   * @return 
{Number} The projected data length in pixels\n   */\n  Chartist.projectLength = 
function (axisLength, length, bounds) {\n    return length / bounds.range * 
axisLength;\n  };\n\n  /**\n   * Get the height of the area in the chart for 
the 
 data series\n   *\n   * @memberof Chartist.Core\n   * @param {Object} svg The 
svg element for the chart\n   * @param {Object} options The Object that 
contains all the optional values for the chart\n   * @return {Number} The 
height of the area in the chart for the data series\n   */\n  
Chartist.getAvailableHeight = function (svg, options) {\n    return 
Math.max((Chartist.stripUnit(options.height) || svg.height()) - 
(options.chartPadding.top +  options.chartPadding.bottom) - 
options.axisX.offset, 0);\n  };\n\n  /**\n   * Get highest and lowest value of 
data array. This Array contains the data that will be visualized in the 
chart.\n   *\n   * @memberof Chartist.Core\n   * @param {Array} data The array 
that contains the data to be visualized in the chart\n   * @param {Object} 
options The Object that contains the chart options\n   * @param {String} 
dimension Axis dimension 'x' or 'y' used to access the correct value and high / 
low configuration\n   * @return {Object} An object that conta
 ins the highest and lowest value that will be visualized on the chart.\n   
*/\n  Chartist.getHighLow = function (data, options, dimension) {\n    // TODO: 
Remove workaround for deprecated global high / low config. Axis high / low 
configuration is preferred\n    options = Chartist.extend({}, options, 
dimension ? options['axis' + dimension.toUpperCase()] : {});\n\n    var highLow 
= {\n        high: options.high === undefined ? -Number.MAX_VALUE : 
+options.high,\n        low: options.low === undefined ? Number.MAX_VALUE : 
+options.low\n      };\n    var findHigh = options.high === undefined;\n    var 
findLow = options.low === undefined;\n\n    // Function to recursively walk 
through arrays and find highest and lowest number\n    function 
recursiveHighLow(data) {\n      if(data === undefined) {\n        return 
undefined;\n      } else if(data instanceof Array) {\n        for (var i = 0; i 
< data.length; i++) {\n          recursiveHighLow(data[i]);\n        }\n      } 
else {\n        var
  value = dimension ? +data[dimension] : +data;\n\n        if (findHigh && 
value > highLow.high) {\n          highLow.high = value;\n        }\n\n        
if (findLow && value < highLow.low) {\n          highLow.low = value;\n        
}\n      }\n    }\n\n    // Start to find highest and lowest number 
recursively\n    if(findHigh || findLow) {\n      recursiveHighLow(data);\n    
}\n\n    // Overrides of high / low based on reference value, it will make sure 
that the invisible reference value is\n    // used to generate the chart. This 
is useful when the chart always needs to contain the position of the\n    // 
invisible reference value in the view i.e. for bipolar scales.\n    if 
(options.referenceValue || options.referenceValue === 0) {\n      highLow.high 
= Math.max(options.referenceValue, highLow.high);\n      highLow.low = 
Math.min(options.referenceValue, highLow.low);\n    }\n\n    // If high and low 
are the same because of misconfiguration or flat data (only the same value) we 
ne
 ed\n    // to set the high or low to 0 depending on the polarity\n    if 
(highLow.high <= highLow.low) {\n      // If both values are 0 we set high to 
1\n      if (highLow.low === 0) {\n        highLow.high = 1;\n      } else if 
(highLow.low < 0) {\n        // If we have the same negative value for the 
bounds we set bounds.high to 0\n        highLow.high = 0;\n      } else {\n     
   // If we have the same positive value for the bounds we set bounds.low to 
0\n        highLow.low = 0;\n      }\n    }\n\n    return highLow;\n  };\n\n  
/**\n   * Checks if the value is a valid number or string with a number.\n   
*\n   * @memberof Chartist.Core\n   * @param value\n   * @returns {Boolean}\n   
*/\n  Chartist.isNum = function(value) {\n    return !isNaN(value) && 
isFinite(value);\n  };\n\n  /**\n   * Returns true on all falsey values except 
the numeric value 0.\n   *\n   * @memberof Chartist.Core\n   * @param value\n   
* @returns {boolean}\n   */\n  Chartist.isFalseyButZero = function(value
 ) {\n    return !value && value !== 0;\n  };\n\n  /**\n   * Returns a number 
if the passed parameter is a valid number or the function will return 
undefined. On all other values than a valid number, this function will return 
undefined.\n   *\n   * @memberof Chartist.Core\n   * @param value\n   * 
@returns {*}\n   */\n  Chartist.getNumberOrUndefined = function(value) {\n    
return isNaN(+value) ? undefined : +value;\n  };\n\n  /**\n   * Gets a value 
from a dimension `value.x` or `value.y` while returning value directly if it's 
a valid numeric value. If the value is not numeric and it's falsey this 
function will return undefined.\n   *\n   * @param value\n   * @param 
dimension\n   * @returns {*}\n   */\n  Chartist.getMultiValue = function(value, 
dimension) {\n    if(Chartist.isNum(value)) {\n      return +value;\n    } else 
if(value) {\n      return value[dimension || 'y'] || 0;\n    } else {\n      
return 0;\n    }\n  };\n\n  /**\n   * Pollard Rho Algorithm to find smallest 
factor of 
 an integer value. There are more efficient algorithms for factorization, but 
this one is quite efficient and not so complex.\n   *\n   * @memberof 
Chartist.Core\n   * @param {Number} num An integer number where the smallest 
factor should be searched for\n   * @returns {Number} The smallest integer 
factor of the parameter num.\n   */\n  Chartist.rho = function(num) {\n    
if(num === 1) {\n      return num;\n    }\n\n    function gcd(p, q) {\n      if 
(p % q === 0) {\n        return q;\n      } else {\n        return gcd(q, p % 
q);\n      }\n    }\n\n    function f(x) {\n      return x * x + 1;\n    }\n\n  
  var x1 = 2, x2 = 2, divisor;\n    if (num % 2 === 0) {\n      return 2;\n    
}\n\n    do {\n      x1 = f(x1) % num;\n      x2 = f(f(x2)) % num;\n      
divisor = gcd(Math.abs(x1 - x2), num);\n    } while (divisor === 1);\n\n    
return divisor;\n  };\n\n  /**\n   * Calculate and retrieve all the bounds for 
the chart and return them in one array\n   *\n   * @memberof Chartist.Core\n 
   * @param {Number} axisLength The length of the Axis used for\n   * @param 
{Object} highLow An object containing a high and low property indicating the 
value range of the chart.\n   * @param {Number} scaleMinSpace The minimum 
projected length a step should result in\n   * @param {Boolean} onlyInteger\n   
* @return {Object} All the values to set the bounds of the chart\n   */\n  
Chartist.getBounds = function (axisLength, highLow, scaleMinSpace, onlyInteger) 
{\n    var i,\n      optimizationCounter = 0,\n      newMin,\n      newMax,\n   
   bounds = {\n        high: highLow.high,\n        low: highLow.low\n      
};\n\n    bounds.valueRange = bounds.high - bounds.low;\n    bounds.oom = 
Chartist.orderOfMagnitude(bounds.valueRange);\n    bounds.step = Math.pow(10, 
bounds.oom);\n    bounds.min = Math.floor(bounds.low / bounds.step) * 
bounds.step;\n    bounds.max = Math.ceil(bounds.high / bounds.step) * 
bounds.step;\n    bounds.range = bounds.max - bounds.min;\n    
bounds.numberOfSteps = M
 ath.round(bounds.range / bounds.step);\n\n    // Optimize scale step by 
checking if subdivision is possible based on horizontalGridMinSpace\n    // If 
we are already below the scaleMinSpace value we will scale up\n    var length = 
Chartist.projectLength(axisLength, bounds.step, bounds);\n    var scaleUp = 
length < scaleMinSpace;\n    var smallestFactor = onlyInteger ? 
Chartist.rho(bounds.range) : 0;\n\n    // First check if we should only use 
integer steps and if step 1 is still larger than scaleMinSpace so we can use 
1\n    if(onlyInteger && Chartist.projectLength(axisLength, 1, bounds) >= 
scaleMinSpace) {\n      bounds.step = 1;\n    } else if(onlyInteger && 
smallestFactor < bounds.step && Chartist.projectLength(axisLength, 
smallestFactor, bounds) >= scaleMinSpace) {\n      // If step 1 was too small, 
we can try the smallest factor of range\n      // If the smallest factor is 
smaller than the current bounds.step and the projected length of smallest 
factor\n      // is larger than 
 the scaleMinSpace we should go for it.\n      bounds.step = smallestFactor;\n  
  } else {\n      // Trying to divide or multiply by 2 and find the best step 
value\n      while (true) {\n        if (scaleUp && 
Chartist.projectLength(axisLength, bounds.step, bounds) <= scaleMinSpace) {\n   
       bounds.step *= 2;\n        } else if (!scaleUp && 
Chartist.projectLength(axisLength, bounds.step / 2, bounds) >= scaleMinSpace) 
{\n          bounds.step /= 2;\n          if(onlyInteger && bounds.step % 1 !== 
0) {\n            bounds.step *= 2;\n            break;\n          }\n        } 
else {\n          break;\n        }\n\n        if(optimizationCounter++ > 1000) 
{\n          throw new Error('Exceeded maximum number of iterations while 
optimizing scale step!');\n        }\n      }\n    }\n\n    // Narrow min and 
max based on new step\n    newMin = bounds.min;\n    newMax = bounds.max;\n    
while(newMin + bounds.step <= bounds.low) {\n      newMin += bounds.step;\n    
}\n    while(newMax - b
 ounds.step >= bounds.high) {\n      newMax -= bounds.step;\n    }\n    
bounds.min = newMin;\n    bounds.max = newMax;\n    bounds.range = bounds.max - 
bounds.min;\n\n    bounds.values = [];\n    for (i = bounds.min; i <= 
bounds.max; i += bounds.step) {\n      
bounds.values.push(Chartist.roundWithPrecision(i));\n    }\n\n    return 
bounds;\n  };\n\n  /**\n   * Calculate cartesian coordinates of polar 
coordinates\n   *\n   * @memberof Chartist.Core\n   * @param {Number} centerX 
X-axis coordinates of center point of circle segment\n   * @param {Number} 
centerY X-axis coordinates of center point of circle segment\n   * @param 
{Number} radius Radius of circle segment\n   * @param {Number} angleInDegrees 
Angle of circle segment in degrees\n   * @return {Number} Coordinates of point 
on circumference\n   */\n  Chartist.polarToCartesian = function (centerX, 
centerY, radius, angleInDegrees) {\n    var angleInRadians = (angleInDegrees - 
90) * Math.PI / 180.0;\n\n    return {\n      x: centerX 
 + (radius * Math.cos(angleInRadians)),\n      y: centerY + (radius * 
Math.sin(angleInRadians))\n    };\n  };\n\n  /**\n   * Initialize chart drawing 
rectangle (area where chart is drawn) x1,y1 = bottom left / x2,y2 = top right\n 
  *\n   * @memberof Chartist.Core\n   * @param {Object} svg The svg element for 
the chart\n   * @param {Object} options The Object that contains all the 
optional values for the chart\n   * @param {Number} [fallbackPadding] The 
fallback padding if partial padding objects are used\n   * @return {Object} The 
chart rectangles coordinates inside the svg element plus the rectangles 
measurements\n   */\n  Chartist.createChartRect = function (svg, options, 
fallbackPadding) {\n    var hasAxis = !!(options.axisX || options.axisY);\n    
var yAxisOffset = hasAxis ? options.axisY.offset : 0;\n    var xAxisOffset = 
hasAxis ? options.axisX.offset : 0;\n    // If width or height results in 
invalid value (including 0) we fallback to the unitless settings or even 0\n    
var w
 idth = svg.width() || Chartist.stripUnit(options.width) || 0;\n    var height 
= svg.height() || Chartist.stripUnit(options.height) || 0;\n    var 
normalizedPadding = Chartist.normalizePadding(options.chartPadding, 
fallbackPadding);\n\n    // If settings were to small to cope with offset 
(legacy) and padding, we'll adjust\n    width = Math.max(width, yAxisOffset + 
normalizedPadding.left + normalizedPadding.right);\n    height = 
Math.max(height, xAxisOffset + normalizedPadding.top + 
normalizedPadding.bottom);\n\n    var chartRect = {\n      padding: 
normalizedPadding,\n      width: function () {\n        return this.x2 - 
this.x1;\n      },\n      height: function () {\n        return this.y1 - 
this.y2;\n      }\n    };\n\n    if(hasAxis) {\n      if 
(options.axisX.position === 'start') {\n        chartRect.y2 = 
normalizedPadding.top + xAxisOffset;\n        chartRect.y1 = Math.max(height - 
normalizedPadding.bottom, chartRect.y2 + 1);\n      } else {\n        
chartRect.y2 = normalizedPa
 dding.top;\n        chartRect.y1 = Math.max(height - normalizedPadding.bottom 
- xAxisOffset, chartRect.y2 + 1);\n      }\n\n      if (options.axisY.position 
=== 'start') {\n        chartRect.x1 = normalizedPadding.left + yAxisOffset;\n  
      chartRect.x2 = Math.max(width - normalizedPadding.right, chartRect.x1 + 
1);\n      } else {\n        chartRect.x1 = normalizedPadding.left;\n        
chartRect.x2 = Math.max(width - normalizedPadding.right - yAxisOffset, 
chartRect.x1 + 1);\n      }\n    } else {\n      chartRect.x1 = 
normalizedPadding.left;\n      chartRect.x2 = Math.max(width - 
normalizedPadding.right, chartRect.x1 + 1);\n      chartRect.y2 = 
normalizedPadding.top;\n      chartRect.y1 = Math.max(height - 
normalizedPadding.bottom, chartRect.y2 + 1);\n    }\n\n    return chartRect;\n  
};\n\n  /**\n   * Creates a grid line based on a projected value.\n   *\n   * 
@memberof Chartist.Core\n   * @param position\n   * @param index\n   * @param 
axis\n   * @param offset\n   * @param leng
 th\n   * @param group\n   * @param classes\n   * @param eventEmitter\n   */\n  
Chartist.createGrid = function(position, index, axis, offset, length, group, 
classes, eventEmitter) {\n    var positionalData = {};\n    
positionalData[axis.units.pos + '1'] = position;\n    
positionalData[axis.units.pos + '2'] = position;\n    
positionalData[axis.counterUnits.pos + '1'] = offset;\n    
positionalData[axis.counterUnits.pos + '2'] = offset + length;\n\n    var 
gridElement = group.elem('line', positionalData, classes.join(' '));\n\n    // 
Event for grid draw\n    eventEmitter.emit('draw',\n      Chartist.extend({\n   
     type: 'grid',\n        axis: axis,\n        index: index,\n        group: 
group,\n        element: gridElement\n      }, positionalData)\n    );\n  
};\n\n  /**\n   * Creates a label based on a projected value and an axis.\n   
*\n   * @memberof Chartist.Core\n   * @param position\n   * @param length\n   * 
@param index\n   * @param labels\n   * @param axis\n   * @param axisOf
 fset\n   * @param labelOffset\n   * @param group\n   * @param classes\n   * 
@param useForeignObject\n   * @param eventEmitter\n   */\n  
Chartist.createLabel = function(position, length, index, labels, axis, 
axisOffset, labelOffset, group, classes, useForeignObject, eventEmitter) {\n    
var labelElement;\n    var positionalData = {};\n\n    
positionalData[axis.units.pos] = position + labelOffset[axis.units.pos];\n    
positionalData[axis.counterUnits.pos] = labelOffset[axis.counterUnits.pos];\n   
 positionalData[axis.units.len] = length;\n    
positionalData[axis.counterUnits.len] = axisOffset - 10;\n\n    
if(useForeignObject) {\n      // We need to set width and height explicitly to 
px as span will not expand with width and height being\n      // 100% in all 
browsers\n      var content = '<span class=\"' + classes.join(' ') + '\" 
style=\"' +\n        axis.units.len + ': ' + 
Math.round(positionalData[axis.units.len]) + 'px; ' +\n        
axis.counterUnits.len + ': ' + Math.round(positio
 nalData[axis.counterUnits.len]) + 'px\">' +\n        labels[index] + 
'</span>';\n\n      labelElement = group.foreignObject(content, 
Chartist.extend({\n        style: 'overflow: visible;'\n      }, 
positionalData));\n    } else {\n      labelElement = group.elem('text', 
positionalData, classes.join(' ')).text(labels[index]);\n    }\n\n    
eventEmitter.emit('draw', Chartist.extend({\n      type: 'label',\n      axis: 
axis,\n      index: index,\n      group: group,\n      element: labelElement,\n 
     text: labels[index]\n    }, positionalData));\n  };\n\n  /**\n   * Helper 
to read series specific options from options object. It automatically falls 
back to the global option if\n   * there is no option in the series options.\n  
 *\n   * @param {Object} series Series object\n   * @param {Object} options 
Chartist options object\n   * @param {string} key The options key that should 
be used to obtain the options\n   * @returns {*}\n   */\n  
Chartist.getSeriesOption = function(series, optio
 ns, key) {\n    if(series.name && options.series && 
options.series[series.name]) {\n      var seriesOptions = 
options.series[series.name];\n      return seriesOptions.hasOwnProperty(key) ? 
seriesOptions[key] : options[key];\n    } else {\n      return options[key];\n  
  }\n  };\n\n  /**\n   * Provides options handling functionality with callback 
for options changes triggered by responsive options and media query matches\n   
*\n   * @memberof Chartist.Core\n   * @param {Object} options Options set by 
user\n   * @param {Array} responsiveOptions Optional functions to add 
responsive behavior to chart\n   * @param {Object} eventEmitter The event 
emitter that will be used to emit the options changed events\n   * @return 
{Object} The consolidated options object from the defaults, base and matching 
responsive options\n   */\n  Chartist.optionsProvider = function (options, 
responsiveOptions, eventEmitter) {\n    var baseOptions = Chartist.extend({}, 
options),\n      currentOptions,\n      me
 diaQueryListeners = [],\n      i;\n\n    function 
updateCurrentOptions(preventChangedEvent) {\n      var previousOptions = 
currentOptions;\n      currentOptions = Chartist.extend({}, baseOptions);\n\n   
   if (responsiveOptions) {\n        for (i = 0; i < responsiveOptions.length; 
i++) {\n          var mql = window.matchMedia(responsiveOptions[i][0]);\n       
   if (mql.matches) {\n            currentOptions = 
Chartist.extend(currentOptions, responsiveOptions[i][1]);\n          }\n        
}\n      }\n\n      if(eventEmitter && !preventChangedEvent) {\n        
eventEmitter.emit('optionsChanged', {\n          previousOptions: 
previousOptions,\n          currentOptions: currentOptions\n        });\n      
}\n    }\n\n    function removeMediaQueryListeners() {\n      
mediaQueryListeners.forEach(function(mql) {\n        
mql.removeListener(updateCurrentOptions);\n      });\n    }\n\n    if 
(!window.matchMedia) {\n      throw 'window.matchMedia not found! Make sure 
you\\'re using a polyfill
 .';\n    } else if (responsiveOptions) {\n\n      for (i = 0; i < 
responsiveOptions.length; i++) {\n        var mql = 
window.matchMedia(responsiveOptions[i][0]);\n        
mql.addListener(updateCurrentOptions);\n        
mediaQueryListeners.push(mql);\n      }\n    }\n    // Execute initially so we 
get the correct options\n    updateCurrentOptions(true);\n\n    return {\n      
removeMediaQueryListeners: removeMediaQueryListeners,\n      getCurrentOptions: 
function getCurrentOptions() {\n        return Chartist.extend({}, 
currentOptions);\n      }\n    };\n  };\n\n}(window, document, 
Chartist));\n;/**\n * Chartist path interpolation functions.\n *\n * @module 
Chartist.Interpolation\n */\n/* global Chartist */\n(function(window, document, 
Chartist) {\n  'use strict';\n\n  Chartist.Interpolation = {};\n\n  /**\n   * 
This interpolation function does not smooth the path and the result is only 
containing lines and no curves.\n   *\n   * @memberof Chartist.Interpolation\n  
 * @return {Functi
 on}\n   */\n  Chartist.Interpolation.none = function() {\n    return function 
none(pathCoordinates, valueData) {\n      var path = new Chartist.Svg.Path();\n 
     // We need to assume that the first value is a \"hole\"\n      var hole = 
true;\n\n      for(var i = 1; i < pathCoordinates.length; i += 2) {\n        
var data = valueData[(i - 1) / 2];\n\n        // If the current value is 
undefined we should treat it as a hole start\n        if(data.value === 
undefined) {\n          hole = true;\n        } else {\n          // If this 
value is valid we need to check if we're coming out of a hole\n          
if(hole) {\n            // If we are coming out of a hole we should first make 
a move and also reset the hole flag\n            path.move(pathCoordinates[i - 
1], pathCoordinates[i], false, data);\n            hole = false;\n          } 
else {\n            path.line(pathCoordinates[i - 1], pathCoordinates[i], 
false, data);\n          }\n        }\n      }\n\n      return path;\n    };\n
   };\n\n  /**\n   * Simple smoothing creates horizontal handles that are 
positioned with a fraction of the length between two data points. You can use 
the divisor option to specify the amount of smoothing.\n   *\n   * Simple 
smoothing can be used instead of `Chartist.Smoothing.cardinal` if you'd like to 
get rid of the artifacts it produces sometimes. Simple smoothi

<TRUNCATED>

Reply via email to