diff --git a/src/js/src/tracker/app.js b/src/js/src/tracker/app.js index d431596..a21abb0 100644 --- a/src/js/src/tracker/app.js +++ b/src/js/src/tracker/app.js @@ -60,8 +60,8 @@ memo: memo, start: new Date(), end: "", - interval: "", - } + interval: intervalLog, + }; } function getLatestLog() { @@ -71,21 +71,16 @@ // 新しい記録を始める。古い記録は終了される。 function startLog(memo, start) { const log = domain.log; - const secondary = log.private.latest; // 実質Logオブジェクトを生成している箇所 const primary = { memo: memo, start: start, end: "", - interval: "", + interval: intervalLog, }; - secondary.end = start; - // ここが開始-終了の引き算とラップタイムが合わない理由 - secondary.interval = Date.now() - domain.latest; domain.latest = Date.now(); - log.private.latest = primary; return new Promise((resolve, reject) => { @@ -96,6 +91,10 @@ } + function intervalLog() { + return this.end - this.start; + } + function endLog(end) { } @@ -198,41 +197,28 @@ const newEvent = q(tracker.ui.tmpl.eventRec.content.cloneNode(true), "tr"); let tr = q(tracker.ui.eventLogs, "tbody tr "); + //新しい行の設定 q(newEvent, "td.col-position-start").textContent = newTime; q(newEvent, "td.col-memo").textContent = newMemo; - if (tr instanceof Element) { // i.e. 行数1行 - insertNewEvent(newEvent, tr, newTime); + + if (tr instanceof Element) { // i.e. 行数1行 + insertNewEvent(newEvent, tr, secondLog); } else if (tr.length > 0) { // i.e. 行数2行以上 - insertNewEvent(newEvent, tr[0], newTime); + insertNewEvent(newEvent, tr[0], secondLog); } else { // i.e. 行数0行 q(tracker.ui.eventLogs, "tbody").appendChild(newEvent); } - function insertNewEvent(first, second, endTime) { - // second行の開始列は作成時に入っている。 - const startTime = q(second, "td.col-position-start").textContent; - q(second, "td.col-position-end").textContent = endTime; - q(second, "td.col-interval").textContent = getInterval(startTime, endTime); + function insertNewEvent(first, second, secondaryLog) { + // second行の残りを埋めていく、開始列は作成時に入っている。 + q(second, "td.col-position-end").textContent = secondaryLog.end.toLocaleTimeString(); + //秒で表示するためにミリ秒を秒に変換 + const interval = Math.floor(secondaryLog.interval() / 1000); + q(second, "td.col-interval").textContent = interval + q(tracker.ui.eventLogs, "tbody").insertBefore(first, second); } - - - function getInterval(start, end) { - const old = tracker.data.domain.latest - tracker.data.domain.latest = Date.now(); - let interval = tracker.data.domain.latest - old; - //秒単位にする。ミリ秒以下の数字を先に0にすることで割り切れるようにしてる。 - interval = (interval - (interval % 1000)) / 1000 - /* - const date = (new Date()).toLocaleDateString("ja-JP"); - const before = new Date(date.replaceAll('/', '-') + "T" + start); - const after = new Date(date.replaceAll('/', '-') + "T" + end); - // Dateの起算が1970/1/1/ 00:00:00 (UTC)のため、時刻として時間を求められる。 - const interval = before.getTime() - after.getTime(); - */ - return interval; - } } }