Проблема

Важной частью моей духовной практики является повторение мантры на четках (похожих на четки). Я повторяю на четках определенное количество раз каждый день, но когда я начинал, у меня не было удобного метода отслеживания.

Решение

Я разработал мобильное веб-приложение и написал JavaScript для отображения простого счетчика. Наиболее заметным элементом дизайна является число, которое увеличивается при нажатии или постукивании по нему. Поскольку в то время моей ежедневной целью было максимум 16, число не может быть увеличено сверх этой суммы, хотя есть небольшая ссылка для уменьшения количества, если она случайно нажата.

И текущий номер, и текущий день хранятся в локальном хранилище. Это предотвращает сброс счетчика при обновлении страницы. Каждый раз, когда пользователь посещает приложение, новый текущий день сравнивается с днем, хранящимся в хранилище. Если они разные, счетчик сбрасывается. Это избавляет от необходимости каждый день вручную сбрасывать счетчик на 0, хотя при необходимости его можно сбросить вручную.

Другие соображения

Я широко использовал это приложение для своих целей, так как оно оказалось элегантным решением моей проблемы. Однако, если бы я собирался широко распространять это решение, я бы подумал о внесении некоторых изменений в пользовательский интерфейс. Может быть не сразу очевидно, что само число действует как кнопка увеличения. Кроме того, некоторым пользователям может потребоваться увеличение числа за пределы 16.

Автоматический ежедневный сброс будет работать, даже если день пропущен, потому что приложение сравнивает две строки даты и сбрасывает счетчик, если они отличаются. Однако существует пограничный случай, когда пользователь может использовать приложение только в один день и только через месяц. Если бы две даты были одинаковыми (например, 1 апреля и 1 мая), счетчик не сбрасывался бы. Я не обращался к этому, потому что это не казалось очень вероятным сценарием, а счетчик всегда можно сбросить вручную.

Наконец, я обнаружил, что при использовании этого приложения на моем телефоне страница иногда автоматически обновлялась. Если бы в то время у меня не было сигнала данных, я бы не смог перезагрузить страницу, пока не восстановил бы сигнал. Таким образом, этот проект выиграет, если станет автономным приложением, которое можно будет использовать без подключения.