{\r
var from = DateTime.MinValue;\r
var to = DateTime.MaxValue;\r
+ var timestamp = false;\r
+\r
var request = requestLine.Split(' ');\r
if (request.Length != 3)\r
{\r
double.TryParse(query["to"], out tick);\r
to = new DateTime(1970, 1, 1).ToLocalTime().AddSeconds(tick / 1000);\r
}\r
+ if (query["number"] != null)\r
+ timestamp = query["number"] == "true";\r
}\r
\r
path = path == "/" ? "index.html" : path.Substring(1);\r
}\r
if (path.EndsWith(".json", StringComparison.OrdinalIgnoreCase))\r
{\r
- SendJsonData(client, csv, from, to);\r
+ SendJsonData(client, csv, from, to, timestamp);\r
return;\r
}\r
if (path.EndsWith(".js", StringComparison.OrdinalIgnoreCase) && File.Exists(full))\r
}\r
}\r
\r
- private static void SendJsonData(Socket client, string path, DateTime from, DateTime to)\r
+ private static void SendJsonData(Socket client, string path, DateTime from, DateTime to, bool number)\r
{\r
using (var header = new StreamWriter(new MemoryStream(), Encoding.ASCII))\r
{\r
entries = data.Take(9);\r
if (battle)\r
entries = data.Concat(Enumerable.Repeat("", 3)).Take(38);\r
- client.Send(encoding.GetBytes(delimiter + "[\"" +\r
- string.Join("\",\"", entries) + "\"]"));\r
+ if (number)\r
+ {\r
+ var stamp = ((date.ToUniversalTime().Ticks -\r
+ new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc).Ticks) /\r
+ TimeSpan.TicksPerMillisecond).ToString();\r
+ client.Send(encoding.GetBytes(delimiter + "[" + stamp + "," +\r
+ string.Join(",", entries.Skip(1)) + "]"));\r
+ }\r
+ else\r
+ {\r
+ client.Send(encoding.GetBytes(delimiter + "[\"" +\r
+ string.Join("\",\"", entries) + "\"]"));\r
+ }\r
delimiter = ",\n";\r
}\r
}\r
if (!data) {
$('#loading').show();
$.ajax({
- url: "./資材ログ.json",
+ url: "./資材ログ.json?number=true",
success: function(d) { self.drawChart(d); },
dataType: "json", cache: false
});
type: 'timeseries',
tick: {
rotate: 30,
- format: function(x) { return moment(x).format("MM-DD HH:mm"); },
+ format: "%m-%d %H:%M",
values: picked.tick
}
},
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:
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");
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;
if (!data) {
$('#loading').show();
$.ajax({
- url: "./資材ログ.json",
+ url: "./資材ログ.json?number=true",
success: function(d) { self.drawChart(d); },
dataType: "json", cache: false
});
},
data: {
x: '日付',
- xFormat: '%Y-%m-%d %X',
rows: picked.data,
axes: {
燃料: 'y',
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
}
}
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:
var prevRow;
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 && date <= last) {
if (!prevRow) {
prevRow = row;
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 };
};
var 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()) {
+ var 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();
}
}
return { monthly: true, data: newdata, tick: ticks, grid: grid, width: 0.5 };