xiangpei
2024-03-26 88c2acd1b100f9b047a35b6ff0dbaa827fd08568
1
!function(h){function s(t,e){this.init(t,e)}var c=h.each;h.extend(s.prototype,{init:function(t,e){this.options=t,this.chartOptions=e,this.columns=t.columns||this.rowsToColumns(t.rows)||[],this.columns.length?this.dataFound():(this.parseCSV(),this.parseTable(),this.parseGoogleSpreadsheet())},getColumnDistribution:function(){var t=this.chartOptions,e=t&&t.chart&&t.chart.type,s=[];c(t&&t.series||[],function(t){s.push((h.seriesTypes[t.type||e||"line"].prototype.pointArrayMap||[0]).length)}),this.valueCount={global:(h.seriesTypes[e||"line"].prototype.pointArrayMap||[0]).length,individual:s}},dataFound:function(){this.parseTypes(),this.findHeaderRow(),this.parsed(),this.complete()},parseCSV:function(){var n=this,o=this.options,t=o.csv,r=this.columns,a=o.startRow||0,l=o.endRow||Number.MAX_VALUE,u=o.startColumn||0,h=o.endColumn||Number.MAX_VALUE,p=0;t&&(t=t.replace(/\r\n/g,"\n").replace(/\r/g,"\n").split(o.lineDelimiter||"\n"),c(t,function(t,e){var s=n.trim(t),i=0===s.indexOf("#");a<=e&&e<=l&&!i&&""!==s&&(s=t.split(o.itemDelimiter||","),c(s,function(t,e){u<=e&&e<=h&&(r[e-u]||(r[e-u]=[]),r[e-u][p]=t)}),p+=1)}),this.dataFound())},parseTable:function(){var s,t=this.options,e=t.table,i=this.columns,n=t.startRow||0,o=t.endRow||Number.MAX_VALUE,r=t.startColumn||0,a=t.endColumn||Number.MAX_VALUE;e&&("string"==typeof e&&(e=document.getElementById(e)),c(e.getElementsByTagName("tr"),function(t,e){s=0,n<=e&&e<=o&&c(t.childNodes,function(t){("TD"===t.tagName||"TH"===t.tagName)&&r<=s&&s<=a&&(i[s]||(i[s]=[]),i[s][e-n]=t.innerHTML,s+=1)})}),this.dataFound())},parseGoogleSpreadsheet:function(){var r,a,l=this,t=this.options,e=t.googleSpreadsheetKey,u=this.columns,h=t.startRow||0,p=t.endRow||Number.MAX_VALUE,c=t.startColumn||0,m=t.endColumn||Number.MAX_VALUE;e&&jQuery.getJSON("https://spreadsheets.google.com/feeds/cells/"+e+"/"+(t.googleSpreadsheetWorksheet||"od6")+"/public/values?alt=json-in-script&callback=?",function(t){var e,s,i=(t=t.feed.entry).length,n=0,o=0;for(s=0;s<i;s++)e=t[s],n=Math.max(n,e.gs$cell.col),o=Math.max(o,e.gs$cell.row);for(s=0;s<n;s++)c<=s&&s<=m&&(u[s-c]=[],u[s-c].length=Math.min(o,p-h));for(s=0;s<i;s++)e=t[s],r=e.gs$cell.row-1,a=e.gs$cell.col-1,c<=a&&a<=m&&h<=r&&r<=p&&(u[a-c][r-h]=e.content.$t);l.dataFound()})},findHeaderRow:function(){c(this.columns,function(){}),this.headerRow=0},trim:function(t){return"string"==typeof t?t.replace(/^\s+|\s+$/g,""):t},parseTypes:function(){for(var t,e,s,i,n=this.columns,o=n.length;o--;)for(t=n[o].length;t--;)e=n[o][t],s=parseFloat(e),(i=this.trim(e))==s?31536e6<(n[o][t]=s)?n[o].isDatetime=!0:n[o].isNumeric=!0:(e=this.parseDate(e),0!==o||"number"!=typeof e||isNaN(e)?n[o][t]=""===i?null:i:(n[o][t]=e,n[o].isDatetime=!0))},dateFormats:{"YYYY-mm-dd":{regex:"^([0-9]{4})-([0-9]{2})-([0-9]{2})$",parser:function(t){return Date.UTC(+t[1],t[2]-1,+t[3])}}},parseDate:function(t){var e,s,i,n=this.options.parseDate;if(n&&(e=n(t)),"string"==typeof t)for(s in this.dateFormats)n=this.dateFormats[s],(i=t.match(n.regex))&&(e=n.parser(i));return e},rowsToColumns:function(t){var e,s,i,n,o;if(t)for(o=[],s=t.length,e=0;e<s;e++)for(n=t[e].length,i=0;i<n;i++)o[i]||(o[i]=[]),o[i][e]=t[e][i];return o},parsed:function(){this.options.parsed&&this.options.parsed.call(this,this.columns)},complete:function(){var t,e,s,i,n,o,r,a,l=this.columns,u=this.options;if(u.complete){for(this.getColumnDistribution(),1<l.length&&(t=l.shift(),0===this.headerRow&&t.shift(),t.isDatetime?e="datetime":t.isNumeric||(e="category")),o=0;o<l.length;o++)0===this.headerRow&&(l[o].name=l[o].shift());for(i=[],a=o=0;o<l.length;a++){for(s=h.pick(this.valueCount.individual[a],this.valueCount.global),n=[],r=0;r<l[o].length;r++)n[r]=[t[r],void 0!==l[o][r]?l[o][r]:null],1<s&&n[r].push(void 0!==l[o+1][r]?l[o+1][r]:null),2<s&&n[r].push(void 0!==l[o+2][r]?l[o+2][r]:null),3<s&&n[r].push(void 0!==l[o+3][r]?l[o+3][r]:null),4<s&&n[r].push(void 0!==l[o+4][r]?l[o+4][r]:null);i[a]={name:l[o].name,data:n},o+=s}u.complete({xAxis:{type:e},series:i})}}}),h.Data=s,h.data=function(t,e){return new s(t,e)},h.wrap(h.Chart.prototype,"init",function(t,i,e){var n=this;i&&i.data?h.data(h.extend(i.data,{complete:function(s){i.series&&c(i.series,function(t,e){i.series[e]=h.merge(t,s.series[e])}),i=h.merge(s,i),t.call(n,i,e)}}),i):t.call(n,i,e)})}(Highcharts);