OSDN Git Service

海戦報告書に大破艦の欄を追加する
[kancollesniffer/KancolleSniffer.git] / LogViewer / tags.html
index c6a7a53..5ad2723 100644 (file)
@@ -41,7 +41,7 @@ this.on("mount", function() {
     });
 });
 
-this.enabled = false;
+this.enabled = true;
 var self = this;
 
 opts.observable.on("mainTabChanged", function(idx) {
@@ -62,7 +62,7 @@ opts.observable.on("mainTabChanged", function(idx) {
 <script>
 this.tables = [
 "<th>日付</th><th>海域</th><th>マス</th><th>ボス</th><th>ランク</th><th>ドロップ艦種</th><th>ドロップ艦娘", // ドロップ
-"<th>日付</th><th>海域</th><th>マス</th><th>ボス</th><th>ランク</th><th>艦隊行動</th><th>味方陣形</th><th>敵陣形</th><th>敵艦隊</th><th>味方艦1</th><th>味方艦1HP</th><th>味方艦2</th><th>味方艦2HP</th><th>味方艦3</th><th>味方艦3HP</th><th>味方艦4</th><th>味方艦4HP</th><th>味方艦5</th><th>味方艦5HP</th><th>味方艦6</th><th>味方艦6HP</th><th>敵艦1</th><th>敵艦1HP</th><th>敵艦2</th><th>敵艦2HP</th><th>敵艦3</th><th>敵艦3HP</th><th>敵艦4</th><th>敵艦4HP</th><th>敵艦5</th><th>敵艦5HP</th><th>敵艦6</th><th>敵艦6HP</th><th>味方制空値</th><th>敵制空値</th><th>制空状態</th>", // 海戦
+"<th>日付</th><th>海域</th><th>マス</th><th>ボス</th><th>ランク</th><th>艦隊行動</th><th>味方陣形</th><th>敵陣形</th><th>敵艦隊</th><th>味方艦1</th><th>味方艦1HP</th><th>味方艦2</th><th>味方艦2HP</th><th>味方艦3</th><th>味方艦3HP</th><th>味方艦4</th><th>味方艦4HP</th><th>味方艦5</th><th>味方艦5HP</th><th>味方艦6</th><th>味方艦6HP</th><th>大破艦</ht><th>敵艦1</th><th>敵艦1HP</th><th>敵艦2</th><th>敵艦2HP</th><th>敵艦3</th><th>敵艦3HP</th><th>敵艦4</th><th>敵艦4HP</th><th>敵艦5</th><th>敵艦5HP</th><th>敵艦6</th><th>敵艦6HP</th><th>味方制空値</th><th>敵制空値</th><th>制空状態</th>", // 海戦
 "<th>日付</th><th>結果</th><th>遠征</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>開発資材</th><th>高速修復材</th><th>高速建造材</th>", // 遠征
 "<th>日付</th><th>開発装備</th><th>種別</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>秘書艦</th><th>司令部Lv</th>", // 開発
 "<th>日付</th><th>種類</th><th>名前</th><th>艦種</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>開発資材</th><th>空きドック</th><th>秘書艦</th><th>司令部Lv</th>", // 建造
@@ -116,7 +116,7 @@ this.init = function() {
             opts.columns = [{ data: 0 }, { data: 1 }, { data: 2 }, { data: 3 }, { data: 4 }, { data: 9 }, { data: 10 }];
         } else if (t === 1) {
             var entries = [];
-            for (var i = 0; i < 38; i++) {
+            for (var i = 0; i < 39; i++) {
                 if (i === 9 || i === 10)
                     continue;
                 entries.push({ data: i });
@@ -234,10 +234,16 @@ this.useDatePicker = function() {
 
 this.init = function() {
     $('#chart_from').datepicker({
-        onClose: function() { if (self.useDatePicker()) self.drawChart(); }
+        onClose: function() {
+            if (self.useDatePicker())
+                opts.observable.trigger("chartSpecChanged");
+        }
     });
     $('#chart_to').datepicker({
-        onClose: function() { if (self.useDatePicker()) self.drawChart(); }
+        onClose: function() {
+            if (self.useDatePicker())
+                opts.observable.trigger("chartSpecChanged");
+        }
     });
 };
 
@@ -283,7 +289,7 @@ this.drawChart = function(data) {
     if (!data) {
         $('#loading').show();
         $.ajax({
-            url: "./資材ログ.json",
+            url: "./資材ログ.json?number=true",
             success: function(d) { self.drawChart(d); },
             dataType: "json", cache: false
         });
@@ -337,7 +343,7 @@ this.drawSeqChart = function(picked) {
                 type: 'timeseries',
                 tick: {
                     rotate: 30,
-                    format: function(x) { return moment(x).format("MM-DD HH:mm"); },
+                    format: "%m-%d %H:%M",
                     values: picked.tick
                 }
             },
@@ -365,8 +371,8 @@ this.pickChartData = function(data, range) {
     var newdata = [];
     var ticks = [];
     var grid = [];
-    var first = moment(data[0][0]).valueOf();
-    var last = moment(data[data.length - 1][0]).valueOf();
+    var first = data[0][0];
+    var last = data[data.length - 1][0];
     var interval, tickInterval, lastTick;
     switch (range) {
         case 0:
@@ -382,7 +388,6 @@ this.pickChartData = function(data, range) {
             first = moment(last).subtract(3, 'months').valueOf();
             break;
         case 4:
-            first = moment(data[0][0]).valueOf();
             break;
         case 5:
             var fromDate = $('#chart_from').datepicker("getDate");
@@ -412,14 +417,15 @@ this.pickChartData = function(data, range) {
         tickInterval = this.oneDay * 14;
         lastTick = this.to5am(moment(last).day(1).valueOf());
     } else {
-        interval = 3600 * 12000;
+        var years = Math.floor((last - first) / (this.oneDay * 365));
+        interval = 3600 * (years > 2 ? 24000 : 12000);
         tickInterval = this.oneDay * 28;
         lastTick = this.to5am(moment(last).day(1).valueOf());
     }
     var lastData;
     for (var i = data.length - 1; i >= 0; i--) {
         var row = data[i];
-        var date = this.parseDate(row[0]).valueOf();
+        var date = row[0];
         if (date > first) {
             if (date <= last) {
                 var v = date - date % interval;
@@ -469,7 +475,7 @@ this.drawChart = function(data) {
     if (!data) {
         $('#loading').show();
         $.ajax({
-            url: "./資材ログ.json",
+            url: "./資材ログ.json?number=true",
             success: function(d) { self.drawChart(d); },
             dataType: "json", cache: false
         });
@@ -494,7 +500,6 @@ this.drawDiffChart = function(picked) {
         },
         data: {
             x: '日付',
-            xFormat: '%Y-%m-%d %X',
             rows: picked.data,
             axes: {
                 燃料: 'y',
@@ -528,7 +533,7 @@ this.drawDiffChart = function(picked) {
                 type: 'timeseries',
                 tick: {
                     rotate: 30,
-                    format: picked.monthly ?  function(x) { return moment(x).format("YYYY-MM"); } : function(x) { return moment(x).format("MM-DD HH:mm"); },
+                    format: picked.monthly ? "%Y-%m" : "%m-%d %H:%M",
                     values: picked.tick
                 }
             }
@@ -553,8 +558,8 @@ this.pickChartData = function(data, range) {
     var newdata = [];
     var ticks = [];
     var grid = [];
-    var first = moment(data[0][0]).valueOf();
-    var last = moment(data[data.length - 1][0]).valueOf();
+    var first = data[0][0];
+    var last = data[data.length - 1][0];
     var interval, tickInterval, lastTick;
     switch (range) {
         case 0:
@@ -604,20 +609,22 @@ this.pickChartData = function(data, range) {
     var prevRow;
     for (var i = data.length - 1; i >= 0; i--) {
         var row = data[i];
-        var date = this.parseDate(row[0]).valueOf();
-        if (date > first && date <= last) {
-            if (!prevRow) {
-                prevRow = row;
-                continue;
-            }
-            if (date <= lastDate) {
-                var newrow = [prevRow[0]];
-                for (var r = 1; r < 5; r++) {
-                    newrow.push(prevRow[r] - row[r]);
+        var date = row[0];
+        if (date > first) {
+            if (date <= last) {
+                if (!prevRow) {
+                    prevRow = row;
+                    continue;
+                }
+                if (date <= lastDate) {
+                    var newrow = [lastDate];
+                    for (var r = 1; r < 5; r++) {
+                        newrow.push(prevRow[r] - row[r]);
+                    }
+                    newdata.unshift(newrow);
+                    lastDate = lastDate - interval;
+                    prevRow = row;
                 }
-                newdata.unshift(newrow);
-                lastDate = lastDate - interval;
-                prevRow = row;
             }
         } else {
             break;
@@ -626,9 +633,8 @@ this.pickChartData = function(data, range) {
     if (tickInterval >= this.oneDay * 7)
         lastTick = moment(lastTick).day(1).hour(5).minute(0).valueOf();
     for (var tick = lastTick; tick > lastDate; tick -= tickInterval) {
-        var str = self.toDateString(moment(tick));
-        ticks.unshift(str);
-        grid.unshift({ value: str });
+        ticks.unshift(tick);
+        grid.unshift({ value: tick });
     }
     return { data: newdata, tick: ticks, grid: grid, width: barWidth };
 };
@@ -639,28 +645,37 @@ this.pickMonthlyChartData = function(data) {
     var grid = [];
     var prevRow;
     var prevMonth;
+    var row;
+    var date;
     for (var i = data.length - 1; i >= 0; i--) {
-        var row = data[i];
+        row = data[i];
         if (!prevRow) {
             prevRow = row;
-            var eom = this.parseDate(row[0]).endOf('month');
-            prevRow[0] = this.toDateString(eom);
+            var eom = moment(row[0]).endOf('month');
+            prevRow[0] = eom.valueOf();
             prevMonth = eom.month();
             continue;
         }
-        var date = this.parseDate(row[0]);
-        if (prevMonth !== date.month()) {
+        date = new Date(row[0]);
+        if (prevMonth !== date.getMonth()) {
             var newrow = [prevRow[0]];
-            for (var r = 1; r < 5; r++) {
+            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();
+            prevMonth = date.getMonth();
         }
     }
+    if (prevRow && date !== prevRow[0]) {
+        newrow = [prevRow[0]];
+        for (r = 1; r < 5; r++)
+            newrow.push(prevRow[r] - row[r]);
+        newdata.unshift(newrow);
+        ticks.unshift(prevRow[0]);
+        grid.unshift({ value: prevRow[0] });
+    }
     return { monthly: true, data: newdata, tick: ticks, grid: grid, width: 0.5 };
 };
 </script>
@@ -792,13 +807,14 @@ this.calcResult = function(data) {
             if (isNewYear) {
                 endOfYear = date.clone().endOf('year').hour(22).startOf('hour');
                 if (endOfYear.isSameOrBefore(date))
-                    endOfYear.add(1, 'year').endOf('year');
+                    endOfYear.add(1, 'year');
                 yearExp = lastExp === -1 ? exp : lastExp;
             }
             if (isNewMonth) {
-                endOfMonth = date.clone().endOf('month').hour(22).startOf('hour');
-                if (endOfMonth.isSameOrBefore(date))
-                    endOfMonth.add(1, 'month').endOf('month');
+                endOfMonth = date.clone().endOf('month');
+                if (date.date() == endOfMonth.date())
+                    endOfMonth.add(1, 'months').endOf('month');
+                endOfMonth.hour(22).startOf('hour');
                 monthExp = lastExp === -1 ? exp : lastExp;
                 carryOverEo = monthEo * expPerAch / 50000;
                 carryOverAch = (monthExp - yearExp) / 50000;