Skip to content

Commit af5739d

Browse files
authored
Merge pull request #73 from kshetline/development
Fix forecast day click action for iOS.
2 parents cc029e6 + 6dc9528 commit af5739d

8 files changed

Lines changed: 37 additions & 15 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 3.1.2
2+
3+
* Fix forecast day click action for iOS. (This fix might also help with other touchscreens.)
4+
15
## 3.1.1
26

37
* Improved touch/swipe interface for daily forecast.

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aw-clock",
3-
"version": "3.1.1",
3+
"version": "3.1.2",
44
"license": "MIT",
55
"author": "Kerry Shetline <kerry@shetline.com>",
66
"scripts": {

sass/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

sass/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aw-clock-sass",
3-
"version": "3.1.1",
3+
"version": "3.1.2",
44
"description": "SASS builder for aw-clock",
55
"keywords": [
66
"sass"

server/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

server/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "aw-clock-server",
3-
"version": "3.1.1",
3+
"version": "3.1.2",
44
"license": "MIT",
55
"author": "Kerry Shetline <kerry@shetline.com>",
66
"private": true,

src/forecast.ts

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -240,11 +240,13 @@ export class Forecast {
240240

241241
let usingTouch = false;
242242
let maxInc = 4;
243+
let downTime = Number.MIN_SAFE_INTEGER;
243244
const mouseDown = (x: number): void => {
244245
dragging = true;
245246
lastX = downX = x;
246247
maxMove = 0;
247248
maxInc = 4;
249+
downTime = processMillis();
248250
};
249251
window.addEventListener('mousedown', event => eventInside(event, forecastRect) ? usingTouch || mouseDown(event.pageX) : null);
250252
window.addEventListener('touchstart', event => event.touches.length > 0 && eventInside(event.touches[0], forecastRect) ?
@@ -376,15 +378,31 @@ export class Forecast {
376378
usingTouch = false;
377379

378380
if (maxMove >= 0) {
379-
const dx = (x ?? downX) - downX;
381+
if (maxMove < dragStartThreshold && processMillis() < downTime + 500) {
382+
const dayClickers = Array.from(document.querySelectorAll('[id$="-clicker"]')).filter(elem => /^day\d-clicker$/.test(elem.id));
383+
384+
for (const clicker of dayClickers) {
385+
const r = clicker.getBoundingClientRect();
386+
387+
if ((r.left <= x && x <= r.right)) {
388+
(clicker as HTMLElement).click();
389+
break;
390+
}
391+
}
380392

381-
if (abs(dx) >= swipeThreshold)
382-
doSwipe(dx);
383-
else
384393
restorePosition();
394+
}
395+
else {
396+
const dx = (x ?? downX) - downX;
397+
398+
if (abs(dx) >= swipeThreshold)
399+
doSwipe(dx);
400+
else
401+
restorePosition();
385402

386-
if (maxMove >= dragStartThreshold)
387-
dragEndTime = processMillis();
403+
if (maxMove >= dragStartThreshold)
404+
dragEndTime = processMillis();
405+
}
388406
}
389407
else
390408
restorePosition();

0 commit comments

Comments
 (0)