fix(webui): stabilize and localize timespiral
This commit is contained in:
@@ -17,6 +17,8 @@ SERVICE_WORKER="$WEBUI_DIR/service-worker.js"
|
|||||||
TS=$(date +%Y%m%d%H%M%S)
|
TS=$(date +%Y%m%d%H%M%S)
|
||||||
TRENDS_NEEDLE='this.activityStore.query_category_time_by_period(r)'
|
TRENDS_NEEDLE='this.activityStore.query_category_time_by_period(r)'
|
||||||
TRENDS_REPLACEMENT='this.activityStore.ensure_loaded(r)'
|
TRENDS_REPLACEMENT='this.activityStore.ensure_loaded(r)'
|
||||||
|
TIMESPIRAL_NEEDLE='start:new Date("2022-08-08")'
|
||||||
|
TIMESPIRAL_REPLACEMENT='start:new Date(Date.now()-12*36e5)'
|
||||||
|
|
||||||
[[ -f "$PATCH_JS_SRC" ]] || { echo "missing $PATCH_JS_SRC" >&2; exit 1; }
|
[[ -f "$PATCH_JS_SRC" ]] || { echo "missing $PATCH_JS_SRC" >&2; exit 1; }
|
||||||
[[ -f "$SW_CLEANUP_SRC" ]] || { echo "missing $SW_CLEANUP_SRC" >&2; exit 1; }
|
[[ -f "$SW_CLEANUP_SRC" ]] || { echo "missing $SW_CLEANUP_SRC" >&2; exit 1; }
|
||||||
@@ -53,4 +55,25 @@ else
|
|||||||
echo "Trends hotfix skipped: chunk not found"
|
echo "Trends hotfix skipped: chunk not found"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
timespiral_chunk="$(grep -Rsl "$TIMESPIRAL_NEEDLE" "$WEBUI_DIR/js"/*.js 2>/dev/null | head -n 1 || true)"
|
||||||
|
if [[ -n "$timespiral_chunk" ]]; then
|
||||||
|
cp "$timespiral_chunk" "$timespiral_chunk.bak.$TS"
|
||||||
|
python3 - "$timespiral_chunk" "$TIMESPIRAL_NEEDLE" "$TIMESPIRAL_REPLACEMENT" <<'PY'
|
||||||
|
from pathlib import Path
|
||||||
|
import sys
|
||||||
|
|
||||||
|
path = Path(sys.argv[1])
|
||||||
|
old = sys.argv[2]
|
||||||
|
new = sys.argv[3]
|
||||||
|
content = path.read_text()
|
||||||
|
if old in content:
|
||||||
|
path.write_text(content.replace(old, new, 1))
|
||||||
|
print(f"Timespiral hotfix applied to {path}")
|
||||||
|
else:
|
||||||
|
print(f"Timespiral hotfix already present in {path}")
|
||||||
|
PY
|
||||||
|
else
|
||||||
|
echo "Timespiral hotfix skipped: chunk not found"
|
||||||
|
fi
|
||||||
|
|
||||||
echo "RU patch applied to $WEBUI_DIR"
|
echo "RU patch applied to $WEBUI_DIR"
|
||||||
|
|||||||
@@ -14,6 +14,7 @@
|
|||||||
["Search", "Поиск"],
|
["Search", "Поиск"],
|
||||||
["Buckets", "Бакеты"],
|
["Buckets", "Бакеты"],
|
||||||
["Stopwatch", "Секундомер"],
|
["Stopwatch", "Секундомер"],
|
||||||
|
["Timespiral", "Временная спираль"],
|
||||||
["Categorization helper", "Помощник категоризации"],
|
["Categorization helper", "Помощник категоризации"],
|
||||||
["Categorization", "Категоризация"],
|
["Categorization", "Категоризация"],
|
||||||
["Tools", "Инструменты"],
|
["Tools", "Инструменты"],
|
||||||
@@ -147,6 +148,9 @@
|
|||||||
["30 days", "30 дней"],
|
["30 days", "30 дней"],
|
||||||
["Time active:", "Активное время:"],
|
["Time active:", "Активное время:"],
|
||||||
["This feature is still in early development.", "Эта функция пока находится на ранней стадии разработки."],
|
["This feature is still in early development.", "Эта функция пока находится на ранней стадии разработки."],
|
||||||
|
["This is a work-in-progress experiment.", "Это экспериментальная функция, она ещё не доведена до готового состояния."],
|
||||||
|
["Bucket: ", "Бакет: "],
|
||||||
|
["Events: ", "События: "],
|
||||||
["This tool will help you create categories from your uncategorized time.", "Этот инструмент поможет создавать категории из некатегоризированного времени."],
|
["This tool will help you create categories from your uncategorized time.", "Этот инструмент поможет создавать категории из некатегоризированного времени."],
|
||||||
["Note: These settings are meant for developers who (hopefully) know what they are doing, and as such, may break things unexpectedly.", "Примечание: эти настройки предназначены для разработчиков, которые понимают, что делают, и поэтому могут неожиданно что-нибудь сломать."],
|
["Note: These settings are meant for developers who (hopefully) know what they are doing, and as such, may break things unexpectedly.", "Примечание: эти настройки предназначены для разработчиков, которые понимают, что делают, и поэтому могут неожиданно что-нибудь сломать."],
|
||||||
["It works by fetching all uncategorized time for a recent timeperiod, and then finds the most common words (by time, not count) each of which may then either be ignored (if too broad/irrelevant), or used to create a new (sub)category, or to append the word to a pre-existing category rule. Words with less than 60s of time will not be shown.", "Инструмент получает некатегоризированное время за недавний период и ищет самые частые слова по длительности, а не по количеству. Их можно игнорировать, если они слишком общие, использовать для создания новой подкатегории или добавить в уже существующее правило. Слова с длительностью меньше 60 секунд не показываются."],
|
["It works by fetching all uncategorized time for a recent timeperiod, and then finds the most common words (by time, not count) each of which may then either be ignored (if too broad/irrelevant), or used to create a new (sub)category, or to append the word to a pre-existing category rule. Words with less than 60s of time will not be shown.", "Инструмент получает некатегоризированное время за недавний период и ищет самые частые слова по длительности, а не по количеству. Их можно игнорировать, если они слишком общие, использовать для создания новой подкатегории или добавить в уже существующее правило. Слова с длительностью меньше 60 секунд не показываются."],
|
||||||
|
|||||||
Reference in New Issue
Block a user