From: Kazuhiro Fujieda Date: Sat, 8 Jul 2017 12:50:08 +0000 (+0900) Subject: 資材グラフの差分の全期間のプロットを月単位にする X-Git-Tag: v9.21~12 X-Git-Url: http://git.osdn.net/view?p=kancollesniffer%2FKancolleSniffer.git;a=commitdiff_plain;h=623ca5ee582d6534ae2cd515f16e8e767b68065a 資材グラフの差分の全期間のプロットを月単位にする --- diff --git a/LogViewer/tags.html b/LogViewer/tags.html index 95cc399..d32ec45 100644 --- a/LogViewer/tags.html +++ b/LogViewer/tags.html @@ -201,7 +201,7 @@ this.diffChartRanges = [ "一か月(日)", "三か月(日)", "半年(週)", -"すべて(週)", +"すべて(月)", "期間指定" ]; @@ -528,7 +528,7 @@ this.drawDiffChart = function(picked) { type: 'timeseries', tick: { rotate: 30, - format: function(x) { return moment(x).format("MM-DD HH:mm"); }, + format: picked.monthly ? function(x) { return moment(x).format("YYYY-MM"); } : function(x) { return moment(x).format("MM-DD HH:mm"); }, values: picked.tick } } @@ -567,8 +567,7 @@ this.pickChartData = function(data, range) { first = moment(last).subtract(6, 'months').subtract(1, 'weeks').valueOf(); break; case 3: - first = moment(data[0][0]).valueOf(); - break; + return this.pickMonthlyChartData(data); case 4: var fromDate = $('#chart_from').datepicker("getDate"); var toDate = $('#chart_to').datepicker("getDate"); @@ -633,6 +632,37 @@ this.pickChartData = function(data, range) { } return { data: newdata, tick: ticks, grid: grid, width: barWidth }; }; + +this.pickMonthlyChartData = function(data) { + var newdata = []; + var ticks = []; + var grid = []; + var prevRow; + var prevMonth; + for (var i = data.length - 1; i >= 0; i--) { + var row = data[i]; + if (!prevRow) { + prevRow = row; + var eom = this.parseDate(row[0]).endOf('month'); + prevRow[0] = this.toDateString(eom); + prevMonth = eom.month(); + continue; + } + var date = this.parseDate(row[0]); + if (prevMonth !== date.month()) { + var newrow = [prevRow[0]]; + for (var r = 1; r < 5; r++) { + newrow.push(prevRow[r] - row[r]); + } + newdata.unshift(newrow); + ticks.unshift(prevRow[0]); + grid.unshift({ value: prevRow[0] }); + prevRow = row; + prevMonth = date.month(); + } + } + return { monthly: true, data: newdata, tick: ticks, grid: grid, width: 0.5 }; +};