Skip to content

Commit f84fbf8

Browse files
authored
Merge pull request #39 from r-40021/duration
バグ修正
2 parents 4adc233 + 025be68 commit f84fbf8

6 files changed

Lines changed: 98 additions & 53 deletions

File tree

dist/main.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/style.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

index.html

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -83,11 +83,22 @@
8383

8484
<div class="status">
8585
<div class="alarmTime">
86-
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
87-
class="icons bi bi-bell-fill" viewBox="0 0 16 16">
88-
<path
89-
d="M8 16a2 2 0 0 0 2-2H6a2 2 0 0 0 2 2zm.995-14.901a1 1 0 1 0-1.99 0A5.002 5.002 0 0 0 3 6c0 1.098-.5 6-2 7h14c-1.5-1-2-5.902-2-7 0-2.42-1.72-4.44-4.005-4.901z" />
90-
</svg><a id="alarmTimeValue">未設定</a>
86+
<svg xmlns="http://www.w3.org/2000/svg" width="16"
87+
height="16" fill="currentColor" class="icons bi bi-calendar-event"
88+
viewBox="0 0 16 16" id="targetIcon">
89+
<path
90+
d="M11 6.5a.5.5 0 0 1 .5-.5h1a.5.5 0 0 1 .5.5v1a.5.5 0 0 1-.5.5h-1a.5.5 0 0 1-.5-.5v-1z" />
91+
<path
92+
d="M3.5 0a.5.5 0 0 1 .5.5V1h8V.5a.5.5 0 0 1 1 0V1h1a2 2 0 0 1 2 2v11a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h1V.5a.5.5 0 0 1 .5-.5zM1 4v10a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1V4H1z" />
93+
</svg><svg xmlns="http://www.w3.org/2000/svg" width="20"
94+
height="20" fill="currentColor" class="icons bi bi-clock-history"
95+
viewBox="0 0 16 16" id="durationIcon">
96+
<path
97+
d="M8.515 1.019A7 7 0 0 0 8 1V0a8 8 0 0 1 .589.022l-.074.997zm2.004.45a7.003 7.003 0 0 0-.985-.299l.219-.976c.383.086.76.2 1.126.342l-.36.933zm1.37.71a7.01 7.01 0 0 0-.439-.27l.493-.87a8.025 8.025 0 0 1 .979.654l-.615.789a6.996 6.996 0 0 0-.418-.302zm1.834 1.79a6.99 6.99 0 0 0-.653-.796l.724-.69c.27.285.52.59.747.91l-.818.576zm.744 1.352a7.08 7.08 0 0 0-.214-.468l.893-.45a7.976 7.976 0 0 1 .45 1.088l-.95.313a7.023 7.023 0 0 0-.179-.483zm.53 2.507a6.991 6.991 0 0 0-.1-1.025l.985-.17c.067.386.106.778.116 1.17l-1 .025zm-.131 1.538c.033-.17.06-.339.081-.51l.993.123a7.957 7.957 0 0 1-.23 1.155l-.964-.267c.046-.165.086-.332.12-.501zm-.952 2.379c.184-.29.346-.594.486-.908l.914.405c-.16.36-.345.706-.555 1.038l-.845-.535zm-.964 1.205c.122-.122.239-.248.35-.378l.758.653a8.073 8.073 0 0 1-.401.432l-.707-.707z" />
98+
<path d="M8 1a7 7 0 1 0 4.95 11.95l.707.707A8.001 8.001 0 1 1 8 0v1z" />
99+
<path
100+
d="M7.5 3a.5.5 0 0 1 .5.5v5.21l3.248 1.856a.5.5 0 0 1-.496.868l-3.5-2A.5.5 0 0 1 7 9V3.5a.5.5 0 0 1 .5-.5z" />
101+
</svg><a id="alarmTimeValue">未設定</a>
91102
</div>
92103
<div class="volumeStatus noiphone">
93104
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor"
@@ -210,17 +221,17 @@
210221
<div class="collapsible-body" id="duration">
211222
<form onsubmit="document.getElementById('durationSetBtn').click();return false;">
212223
<div class="input-field duration content">
213-
<input id="hour" type="number" class="validate durationSet" pattern="\d*" min="0" value="0" maxlength="20">
224+
<input id="hour" type="number" class="validate durationSet" pattern="\d*" min="0" value="0" maxlength="20" onfocus="this.select()">
214225
<label for="hour">時間</label>
215226
</div> :
216227
<div class="input-field duration content">
217228
<input id="minute" type="number" class="validate durationSet" pattern="\d*" min="0" max="59"
218-
value="5" maxlength="2">
229+
value="5" maxlength="2" onfocus="this.select()">
219230
<label for="minute"></label>
220231
</div> :
221232
<div class="input-field duration content">
222233
<input id="seconds" type="number" class="validate durationSet" pattern="\d*" min="0" max="59"
223-
value="0" maxlength="2">
234+
value="0" maxlength="2" onfocus="this.select()">
224235
<label for="seconds"></label>
225236
</div>
226237
<div class="easySet">

src/index.js

Lines changed: 64 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,17 @@ var noSleep = new NoSleep();
2727

2828
document.addEventListener("DOMContentLoaded", function () {
2929
device();
30+
// Theme
31+
if (localStorage.getItem("theme") === "dark") {
32+
// ローカルストレージを読み込み、テーマを反映
33+
toggleTheme("d");
34+
} else if (localStorage.getItem("theme") === "light") {
35+
toggleTheme("l");
36+
} else if (localStorage.getItem("theme") === "auto") {
37+
toggleTheme("a");
38+
} else {
39+
toggleTheme(isDark);
40+
}
3041
let params = new URL(window.location.href).searchParams;
3142
if (params.get("date") && params.get("time")) {
3243
paramStatus = 0;
@@ -185,17 +196,6 @@ function onload() {
185196
/*パラメータ取得*/
186197
showVolume();
187198
countTimes = 0;
188-
// Theme
189-
if (localStorage.getItem("theme") === "dark") {
190-
// ローカルストレージを読み込み、テーマを反映
191-
toggleTheme("d");
192-
} else if (localStorage.getItem("theme") === "light") {
193-
toggleTheme("l");
194-
} else if (localStorage.getItem("theme") === "auto") {
195-
toggleTheme("a");
196-
} else {
197-
toggleTheme(isDark);
198-
}
199199
var param = location.search;
200200
var paramObject = new Object();
201201
param = param.substring(1);
@@ -216,20 +216,21 @@ function onload() {
216216
title = localStorage.getItem("ct-title");
217217
document.getElementById("title").value = title;
218218
}
219-
if ((setType === "duration") || (firstLoad === 0 && localStorage.getItem("ct-lastType") == "1") && !paramObject.date && !paramObject.time) {
219+
console.log(myDate + " " + myTime);
220+
console.log(setType);
221+
if ((setType === "duration") || ((firstLoad === 0 && localStorage.getItem("ct-lastType") == "1") && !paramObject.date && !paramObject.time)) {
220222
durationStatus = 1;
221223
if (!document.getElementById("durationHeader").classList.contains("active")) {
222224
window.addEventListener("load", clickHeader, false);
223225
}
224-
localStorage.setItem("ct-lastType", 1);
225226
changeURL();
226-
if ((((localStorage.getItem("ct-lastType") && !firstLoad) && (localStorage.getItem("ct-lastSet") !== "0")) || durationStop) && !durationChange) {
227+
if ((((localStorage.getItem("ct-lastType") === "1" && !firstLoad) && (Number(localStorage.getItem("ct-lastSet")) >= 1000)) || durationStop) && !durationChange) {
227228
let localSet = localStorage.getItem("ct-lastSet");
228229
let localSetHour = Math.floor(localSet / (1000 * 60 * 60));
229230
let localSetMin = Math.floor((localSet - localSetHour * 1000 * 60 * 60) / (1000 * 60));
230231
let localSetSec = (localSet - localSetHour * 1000 * 60 * 60 - localSetMin * 1000 * 60) / 1000;
231232
afterTime(localSetHour, localSetMin, localSetSec);
232-
} else {
233+
} else if (firstLoad) {
233234
let elementList = document.getElementsByClassName("durationSet");
234235
for (let i = 0; i < elementList.length; i++) {
235236
let element = elementList[i];
@@ -239,10 +240,16 @@ function onload() {
239240
}
240241
afterTime(document.getElementById("hour").value, document.getElementById("minute").value, document.getElementById("seconds").value);
241242
}
243+
if (((((localStorage.getItem("ct-lastType") === "1" && !firstLoad) && (Number(localStorage.getItem("ct-lastSet")) >= 1000)) || durationStop) && !durationChange) || firstLoad) {
242244
localStorage.setItem("ct-lastDuration", document.getElementById("hour").value + ":" + document.getElementById("minute").value + ":" + document.getElementById("seconds").value);
243245
durationStop = false;
244246
durationChange = false;
247+
localStorage.setItem("ct-lastType", 1);
248+
setType = "duration";
245249
down = setInterval(myCount, 200);
250+
} else {
251+
noParams();
252+
}
246253
function afterTime(hour, minute, second) {
247254
let now = new Date();
248255
now.setHours(now.getHours() + Number(hour));
@@ -300,8 +307,36 @@ function myCount() {
300307
var displayPlace = document.getElementById("displayTime");
301308
var date = new Date();
302309
var diffTime = target.getTime() - date.getTime(); //時間の差を計算
303-
if (diffTime) {
310+
if (diffTime || diffTime === 0) {
304311
localStorage.setItem("ct-lastSet", diffTime);
312+
if (setType === "duration") {
313+
document.getElementById("durationIcon").style.display = "inline";
314+
document.getElementById("targetIcon").style.display = "none";
315+
} else {
316+
document.getElementById("durationIcon").style.display = "";
317+
document.getElementById("targetIcon").style.display = "";
318+
}
319+
let newMyDate = new Date(myDate);
320+
let myDisplayTime;
321+
if (durationStatus) {
322+
let myTimeSplit = myTime.split(":");
323+
if (Number(myTimeSplit[1]) < 10) {
324+
myTimeSplit[1] = "0" + myTimeSplit[1];
325+
}
326+
myDisplayTime = myTimeSplit[0] + ":" + myTimeSplit[1];
327+
} else {
328+
myDisplayTime = myTime;
329+
}
330+
if (newMyDate.getFullYear() === date.getFullYear()) {
331+
if (newMyDate.getMonth() === date.getMonth() && newMyDate.getDate() === date.getDate()) {
332+
document.getElementById("alarmTimeValue").textContent = myDisplayTime;
333+
} else {
334+
document.getElementById("alarmTimeValue").textContent = newMyDate.getMonth() + 1 + "/" + newMyDate.getDate() + " " + myDisplayTime;
335+
}
336+
} else {
337+
document.getElementById("alarmTimeValue").textContent =
338+
myDate + " " + myDisplayTime;
339+
}
305340
}
306341
var diffHour = Math.floor(diffTime / (1000 * 60 * 60)); //時間に変換
307342
var diffMinute = Math.floor(
@@ -317,6 +352,10 @@ function myCount() {
317352
diffSecond = "0" + diffSecond;
318353
}
319354
var display = diffHour + ":" + diffMinute + ":" + diffSecond;
355+
if (countTimes === 0) {
356+
document.getElementById("stopTimer").style.display = "inline-flex";
357+
document.getElementById("setTimer").style.display = "none";
358+
}
320359
if (display === "0:00:00") {
321360
display = "0:00:00";
322361
displayPlace.textContent = display;
@@ -342,6 +381,10 @@ function myCount() {
342381

343382
alarm.play();
344383
stop();
384+
if (setType === "duration") {
385+
durationChange = true;
386+
setType = "duration";
387+
}
345388
document.title = "やまだのタイマー";
346389
displayEnd = setInterval(function () {
347390
document.title = "時間です!";
@@ -365,29 +408,8 @@ function myCount() {
365408
noParams();
366409
} else {
367410
if (countTimes === 0) {
368-
let newMyDate = new Date(myDate);
369-
let myDisplayTime;
370-
if (durationStatus) {
371-
let myTimeSplit = myTime.split(":");
372-
if (Number(myTimeSplit[1]) < 10) {
373-
myTimeSplit[1] = "0" + myTimeSplit[1];
374-
}
375-
myDisplayTime = myTimeSplit[0] + ":" + myTimeSplit[1];
376-
} else {
377-
myDisplayTime = myTime;
378-
}
379-
if (newMyDate.getFullYear() === date.getFullYear()) {
380-
if (newMyDate.getMonth() === date.getMonth() && newMyDate.getDate() === date.getDate()) {
381-
document.getElementById("alarmTimeValue").textContent = myDisplayTime;
382-
} else {
383-
document.getElementById("alarmTimeValue").textContent = newMyDate.getMonth() + 1 + "/" + newMyDate.getDate() + " " + myDisplayTime;
384-
}
385-
} else {
386-
document.getElementById("alarmTimeValue").textContent =
387-
myDate + " " + myDisplayTime;
388-
}
389-
document.getElementById("stopTimer").style.display = "inline-flex";
390-
document.getElementById("setTimer").style.display = "none";
411+
412+
391413
if (paramStatus) {
392414
if (!durationStatus) {
393415
localStorage.setItem("ct-date", myDate);
@@ -430,6 +452,8 @@ function noParams() {
430452
document.getElementById("Time").value;
431453
document.getElementById("alarmTimeValue").textContent =
432454
defaultTime + " (自動設定)";
455+
localStorage.setItem("ct-lastType", 0);
456+
durationStatus = 0;
433457
}
434458
function set() {
435459
/*SETボタンを押したときの挙動*/
@@ -885,9 +909,7 @@ document.addEventListener("DOMContentLoaded", () => {
885909
set();
886910
}, false);
887911
document.getElementById("targetSetBtn").addEventListener("click", () => {
888-
if (setType === "duration") {
889-
setType = "target";
890-
}
912+
setType = "target";
891913
set();
892914
}, false);
893915
document.getElementById("setTimer").addEventListener("click", set, false);

src/style.scss

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,14 @@ body:fullscreen #fullscreen {
100100
body:not(:fullscreen) #escFullscreen {
101101
display: none;
102102
}
103+
.share{
104+
width: 100%;
105+
height: 100%;
106+
margin: 0;
107+
padding: 0;
108+
overflow-x: auto;
109+
white-space: nowrap;
110+
}
103111
.share .btn-flat {
104112
padding: 0 7px;
105113
color: var(--grayText);
@@ -282,6 +290,7 @@ input[type="text"]:not(.browser-default)[readonly="readonly"] {
282290
.fullscreenIcons div {
283291
display: inline-block;
284292
cursor: pointer;
293+
margin: 0 0.5em;
285294
}
286295
#settings .modal-content {
287296
padding: 0 5px;
@@ -347,6 +356,9 @@ input[type="text"]:not(.browser-default)[readonly="readonly"] {
347356
align-items: center;
348357
font-size: medium;
349358
}
359+
#durationIcon {
360+
display: none;
361+
}
350362
.status a {
351363
color: var(--grayText);
352364
}

sw.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var CACHE_NAME = 'ct-20210530v4';
1+
var CACHE_NAME = 'ct-20210531';
22
var urlsToCache = [
33
'./index.html',
44
'./dist/style.css',

0 commit comments

Comments
 (0)