OSDN Git Service

資材グラフの差分の全期間のプロットを月単位にする
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 8 Jul 2017 12:50:08 +0000 (21:50 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 9 Jul 2017 08:17:17 +0000 (17:17 +0900)
LogViewer/tags.html

index 95cc399..d32ec45 100644 (file)
@@ -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 };
+};
 </script>
 </differential-chart>