From 623ca5ee582d6534ae2cd515f16e8e767b68065a Mon Sep 17 00:00:00 2001 From: Kazuhiro Fujieda Date: Sat, 8 Jul 2017 21:50:08 +0900 Subject: [PATCH] =?utf8?q?=E8=B3=87=E6=9D=90=E3=82=B0=E3=83=A9=E3=83=95?= =?utf8?q?=E3=81=AE=E5=B7=AE=E5=88=86=E3=81=AE=E5=85=A8=E6=9C=9F=E9=96=93?= =?utf8?q?=E3=81=AE=E3=83=97=E3=83=AD=E3=83=83=E3=83=88=E3=82=92=E6=9C=88?= =?utf8?q?=E5=8D=98=E4=BD=8D=E3=81=AB=E3=81=99=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- LogViewer/tags.html | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) 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 }; +}; -- 2.11.0