iobroker.time-tracker 0.3.1 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -20
- package/io-package.json +27 -27
- package/package.json +1 -1
- package/src-pwa/src/i18n/de.json +5 -1
- package/src-pwa/src/i18n/en.json +5 -1
- package/src-pwa/src/i18n/es.json +5 -1
- package/src-pwa/src/i18n/fr.json +5 -1
- package/src-pwa/src/i18n/it.json +5 -1
- package/src-pwa/src/i18n/nl.json +5 -1
- package/src-pwa/src/i18n/pl.json +5 -1
- package/src-pwa/src/i18n/pt.json +5 -1
- package/src-pwa/src/i18n/ru.json +5 -1
- package/src-pwa/src/i18n/uk.json +5 -1
- package/src-pwa/src/i18n/zh-cn.json +5 -1
- package/www/assets/{index-BOdNralo.js → index-D7f1X_an.js} +3 -3
- package/www/assets/index-D7f1X_an.js.map +1 -0
- package/www/index.html +1 -1
- package/www/sw.js +1 -1
- package/www/sw.js.map +1 -1
- package/www/assets/index-BOdNralo.js.map +0 -1
package/README.md
CHANGED
|
@@ -36,16 +36,18 @@ PIN. All data stays on your own ioBroker host: no cloud, no subscription.
|
|
|
36
36
|
|
|
37
37
|
## Installation
|
|
38
38
|
|
|
39
|
-
1.
|
|
40
|
-
|
|
41
|
-
automatically** — `iobroker add time-tracker` is only needed if you want
|
|
42
|
-
|
|
43
|
-
part of the repository. Either use the npm package, or build once in the adapter directory
|
|
44
|
-
(`npm ci && npm run install:pwa && npm run build:pwa && npm run build`, then `iobroker install .`).
|
|
39
|
+
1. Install the adapter in the ioBroker admin: **Adapters** → filter for *time-tracker* → install. On a machine
|
|
40
|
+
without the admin the same package can be installed from the registry with `iobroker install iobroker.time-tracker`.
|
|
41
|
+
**The instance `time-tracker.0` is created automatically** — `iobroker add time-tracker` is only needed if you want
|
|
42
|
+
the instance on its own.
|
|
45
43
|
2. Start the instance and open the web app on the port of the instance settings (default **8092**):
|
|
46
44
|
`http://<ioBroker host>:8092/`
|
|
47
45
|
3. Log in with the start password (see [First start](#first-start)) and create your employees.
|
|
48
46
|
|
|
47
|
+
> **For work on the sources** the adapter is built in the repository: `npm ci && npm run install:pwa &&
|
|
48
|
+
> npm run build:pwa && npm run build`, then `iobroker install .`. `build/` and `www/` are built and not part of the
|
|
49
|
+
> repository, so a plain Git installation does not work on its own.
|
|
50
|
+
|
|
49
51
|
## First start
|
|
50
52
|
|
|
51
53
|
The first start creates the database, the roles and the settings — and **one administrator account**, because
|
|
@@ -312,7 +314,7 @@ the adapter and switch **Trust the reverse proxy** on: the adapter then takes th
|
|
|
312
314
|
|
|
313
315
|
| Problem | Cause and fix |
|
|
314
316
|
| -------------------------------------- | -------------------------------------------------------------------------------------------------------- |
|
|
315
|
-
| `/` answers `404 not_found` | the web app is missing:
|
|
317
|
+
| `/` answers `404 not_found` | the web app is missing: reinstall the adapter — the package ships the built web app in `www/` |
|
|
316
318
|
| Not installable as an app on the phone | the page is not reachable over HTTPS — see above |
|
|
317
319
|
| The PDF refuses or shows empty boxes | `report_font_path` is missing — see [Reports](#reports) |
|
|
318
320
|
| A restore seems to do nothing | it is applied on the next start: restart the instance |
|
|
@@ -353,6 +355,22 @@ local SQLite file, access is role-based, and every correction is written to an a
|
|
|
353
355
|
|
|
354
356
|
### **WORK IN PROGRESS**
|
|
355
357
|
|
|
358
|
+
### 0.3.3 (2026-09-22)
|
|
359
|
+
|
|
360
|
+
- (Alex) fix: the installation chapter no longer points to the “Install from custom URL” dialog — the repository
|
|
361
|
+
checker reports that as `E6013` (“suggests to install the adapter directly from GitHub, directly from npm or using
|
|
362
|
+
npm commands”). It now leads with the normal way through the adapter list of the ioBroker admin, names the registry
|
|
363
|
+
for a machine without the admin and keeps the build steps in a clearly marked note for work on the sources. The
|
|
364
|
+
troubleshooting row for a missing web app no longer carries npm commands either
|
|
365
|
+
|
|
366
|
+
### 0.3.2 (2026-09-22)
|
|
367
|
+
|
|
368
|
+
- (Alex) fix: the automation rules are a **list** now — one row per rule with its caption, kind, time, target and
|
|
369
|
+
weekdays, plus the buttons for *active*, *edit* and *delete* on the right. The form only opens in a dialog, for a
|
|
370
|
+
new or an edited rule, so the list stays readable. The save button of the card says “**Regeln speichern**” (it
|
|
371
|
+
carried the caption of the break rules before). New texts in all 11 languages, and an end-to-end test keeps both
|
|
372
|
+
findings
|
|
373
|
+
|
|
356
374
|
### 0.3.1 (2026-09-22)
|
|
357
375
|
|
|
358
376
|
- (Alex) fix: the presence board shows the **real running** time of the day now. Two things kept it frozen:
|
|
@@ -382,19 +400,6 @@ local SQLite file, access is role-based, and every correction is written to an a
|
|
|
382
400
|
local day (`now - 8h` fell on the day before when the suite ran shortly after midnight and left the employee
|
|
383
401
|
present for the specs that follow), and the presence spec puts its employee into a known state before it asserts
|
|
384
402
|
|
|
385
|
-
### 0.2.6 (2026-09-22)
|
|
386
|
-
|
|
387
|
-
- (Alex) fix: a punch from the presence state (`users.<id>.present`) is published like every other one now — it shows
|
|
388
|
-
up in `events.*` (`lastType`, `lastUser`, `lastDirection`, `lastSource`) and reaches the web app live. The punch was
|
|
389
|
-
stored in the database but never sent to the event bus, so the event states kept the previous punch
|
|
390
|
-
|
|
391
|
-
### 0.2.5 (2026-09-21)
|
|
392
|
-
|
|
393
|
-
- (Alex) docs: the installation chapter leads with the normal way now — install the npm package (`iobroker install
|
|
394
|
-
iobroker.time-tracker` or the admin’s “Install from custom URL”), which creates the instance `time-tracker.0`
|
|
395
|
-
automatically. Building from a checkout is only the developer path, and the chapter explains why a Git install
|
|
396
|
-
reports `cannot find start file!` (`build/` and `www/` are not part of the repository)
|
|
397
|
-
|
|
398
403
|
Older entries are kept in [`CHANGELOG_OLD.md`](CHANGELOG_OLD.md).
|
|
399
404
|
|
|
400
405
|
## Provenance
|
package/io-package.json
CHANGED
|
@@ -1,9 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"common": {
|
|
3
3
|
"name": "time-tracker",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.3",
|
|
5
5
|
"nogit": true,
|
|
6
6
|
"news": {
|
|
7
|
+
"0.3.3": {
|
|
8
|
+
"en": "fix: the installation chapter of the README no longer points to the adapter dialog for a URL — the repository checker reports that as E6013. It now describes the normal way through the adapter list of the ioBroker admin (and names the registry for machines without the admin); the build steps for work on the sources are a separate note",
|
|
9
|
+
"de": "fix: das Installationskapitel der README verweist nicht mehr auf den Adapter-Dialog für eine URL — der Repository-Checker meldet das als E6013. Es beschreibt jetzt den normalen Weg über die Adapterliste des ioBroker-Admin (und nennt die Registry für Rechner ohne Admin); die Build-Schritte für die Arbeit an den Quellen stehen in einem eigenen Hinweis",
|
|
10
|
+
"ru": "исправление: раздел установки в README больше не ссылается на диалог адаптера для URL — проверка репозитория сообщает об этом как E6013. Теперь описан обычный путь через список адаптеров ioBroker-Admin (и назван реестр для машин без админа); шаги сборки для работы с исходниками выделены отдельно",
|
|
11
|
+
"pt": "correção: o capítulo de instalação do README já não aponta para a caixa de diálogo do adaptador para um URL — o verificador do repositório assinala isso como E6013. Agora descreve o caminho normal através da lista de adaptadores do ioBroker admin (e nomeia o registo para máquinas sem admin); os passos de compilação para trabalhar nos fontes ficam numa nota separada",
|
|
12
|
+
"nl": "fix: het installatiehoofdstuk van de README verwijst niet meer naar het adaptervenster voor een URL - de repositorychecker meldt dat als E6013. Het beschrijft nu de normale weg via de adapterlijst van de ioBroker-admin (en noemt het register voor machines zonder admin); de buildstappen voor werk aan de bron staan in een aparte noot",
|
|
13
|
+
"fr": "correctif : le chapitre d'installation du README ne renvoie plus à la boîte de dialogue d'adaptateur pour une URL - le vérificateur du dépôt le signale comme E6013. Il décrit désormais la voie normale via la liste des adaptateurs de l'admin ioBroker (et nomme le registre pour les machines sans admin) ; les étapes de compilation pour travailler sur les sources sont une note à part",
|
|
14
|
+
"it": "correzione: il capitolo di installazione del README non rimanda più alla finestra dell'adattatore per un URL - il verificatore del repository lo segnala come E6013. Ora descrive il percorso normale tramite l'elenco degli adattatori dell'admin ioBroker (e indica il registro per le macchine senza admin); i passaggi di build per lavorare sui sorgenti sono una nota separata",
|
|
15
|
+
"es": "corrección: el capítulo de instalación del README ya no remite al diálogo del adaptador para una URL - el verificador del repositorio lo señala como E6013. Ahora describe la vía normal a través de la lista de adaptadores del admin de ioBroker (y nombra el registro para máquinas sin admin); los pasos de compilación para trabajar en las fuentes son una nota aparte",
|
|
16
|
+
"pl": "poprawka: rozdział instalacji w README nie odsyła już do okna adaptera dla URL - weryfikator repozytorium zgłasza to jako E6013. Teraz opisuje zwykłą drogę przez listę adapterów ioBroker admin (i podaje rejestr dla maszyn bez admina); kroki budowania do pracy nad źródłami są osobną uwagą",
|
|
17
|
+
"uk": "виправлення: розділ встановлення в README більше не посилається на діалог адаптера для URL — перевірка репозиторію позначає це як E6013. Тепер описано звичайний шлях через список адаптерів ioBroker admin (і названо реєстр для машин без адміна); кроки збірки для роботи з джерелами виділено окремо",
|
|
18
|
+
"zh-cn": "修复:README 的安装章节不再指向“通过 URL 安装适配器”的对话框 —— 仓库检查器会将其报告为 E6013。现在描述通过 ioBroker admin 适配器列表的正常方式(并说明没有 admin 时使用注册表);针对源码开发的构建步骤单独说明"
|
|
19
|
+
},
|
|
20
|
+
"0.3.2": {
|
|
21
|
+
"en": "fix: the automation rules are a compact list now - one row per rule with its caption, kind, time, target and weekdays, plus the buttons for active, edit and delete. The form only opens in a dialog, and the save button of the card says “Save rules” (it carried the caption of the break rules before)",
|
|
22
|
+
"de": "fix: die Regeln (Automatik) sind jetzt eine kompakte Liste - eine Zeile je Regel mit Bezeichnung, Art, Uhrzeit, Mitarbeiter und Wochentagen sowie den Knöpfen für Aktiv, Bearbeiten und Löschen. Das Formular öffnet sich nur noch in einem Dialog, und der Speichern-Knopf der Karte heißt „Regeln speichern“ (vorher trug er die Beschriftung der Pausenstaffel)",
|
|
23
|
+
"ru": "исправление: правила автоматики теперь компактный список — по одной строке на правило с названием, видом, временем, сотрудником и днями недели, плюс кнопки «активно», «изменить» и «удалить». Форма открывается только в диалоге, а кнопка сохранения карточки называется «Сохранить правила» (раньше на ней была подпись из правил перерывов)",
|
|
24
|
+
"pt": "correção: as regras de automação são agora uma lista compacta - uma linha por regra com designação, tipo, hora, funcionário e dias da semana, mais os botões de ativo, editar e eliminar. O formulário só abre num diálogo, e o botão de guardar do cartão diz «Guardar regras» (antes tinha a designação das regras de pausa)",
|
|
25
|
+
"nl": "fix: de automatiseringsregels zijn nu een compacte lijst - één regel per rij met naam, soort, tijd, medewerker en weekdagen, plus de knoppen voor actief, bewerken en verwijderen. Het formulier opent alleen in een dialoog, en de opslaanknop van de kaart heet “Regels opslaan” (daarvoor stond er het opschrift van de pauzeregels)",
|
|
26
|
+
"fr": "correctif : les règles d'automatisation forment désormais une liste compacte - une ligne par règle avec libellé, type, heure, employé et jours de la semaine, plus les boutons actif, modifier et supprimer. Le formulaire ne s'ouvre que dans une boîte de dialogue, et le bouton d'enregistrement de la carte s'appelle « Enregistrer les règles » (il portait auparavant le libellé des règles de pause)",
|
|
27
|
+
"it": "correzione: le regole di automazione sono ora un elenco compatto - una riga per regola con etichetta, tipo, ora, dipendente e giorni della settimana, più i pulsanti attivo, modifica ed elimina. Il modulo si apre solo in una finestra di dialogo e il pulsante di salvataggio della scheda dice «Salva regole» (prima portava la dicitura delle regole di pausa)",
|
|
28
|
+
"es": "corrección: las reglas de automatización son ahora una lista compacta - una fila por regla con denominación, tipo, hora, empleado y días de la semana, más los botones de activo, editar y eliminar. El formulario solo se abre en un diálogo, y el botón de guardar de la tarjeta dice «Guardar reglas» (antes llevaba la etiqueta de las reglas de pausa)",
|
|
29
|
+
"pl": "poprawka: reguły automatyki są teraz kompaktową listą - jeden wiersz na regułę z nazwą, rodzajem, godziną, pracownikiem i dniami tygodnia oraz przyciskami aktywna, edytuj i usuń. Formularz otwiera się tylko w oknie dialogowym, a przycisk zapisu na karcie nazywa się „Zapisz reguły” (wcześniej miał opis reguł przerw)",
|
|
30
|
+
"uk": "виправлення: правила автоматики тепер компактний список — по одному рядку на правило з назвою, видом, часом, працівником і днями тижня, а також кнопки «активно», «змінити» та «видалити». Форма відкривається лише в діалозі, а кнопка збереження на картці називається «Зберегти правила» (раніше на ній був підпис правил перерв)",
|
|
31
|
+
"zh-cn": "修复:自动化规则现在是紧凑列表 —— 每条规则一行,包含名称、类型、时间、员工和星期,以及「启用」「编辑」「删除」按钮。表单只在对话框中打开,卡片上的保存按钮现在显示「保存规则」(此前显示的是休息规则的文字)"
|
|
32
|
+
},
|
|
7
33
|
"0.3.1": {
|
|
8
34
|
"en": "fix: the presence board shows the running working time of the day now. The API adds the minutes of an open punch to its answer (the stored day aggregate only changes on a punch, so the value stood still), the tile shows that value directly and the board refreshes every 20 seconds instead of 60",
|
|
9
35
|
"de": "fix: die Anwesenheitskarte zeigt jetzt die wirklich laufende Arbeitszeit des Tages. Die API rechnet die Minuten eines offenen Stempels in ihre Antwort ein (das gespeicherte Tagesaggregat ändert sich nur bei einem Stempel, deshalb stand der Wert still), die Kachel zeigt diesen Wert direkt und die Karte aktualisiert alle 20 Sekunden statt alle 60",
|
|
@@ -68,32 +94,6 @@
|
|
|
68
94
|
"pl": "dokumentacja: rozdział o instalacji zaczyna się teraz od zwykłej drogi — instalacji pakietu npm (`iobroker install iobroker.time-tracker` lub „Zainstaluj z własnego adresu URL” w adminie), przy czym instancja `time-tracker.0` powstaje automatycznie. Budowanie ze źródeł to teraz tylko ścieżka dewelopera, a rozdział wyjaśnia, dlaczego instalacja z Git zgłasza `cannot find start file!`",
|
|
69
95
|
"uk": "документація: розділ про встановлення тепер починається зі звичайного шляху — встановити пакет npm (`iobroker install iobroker.time-tracker` або «Встановити з власного URL» в адміні), при цьому екземпляр `time-tracker.0` створюється автоматично. Збірка з коду — тепер лише шлях розробника, і розділ пояснює, чому встановлення з Git повідомляє `cannot find start file!`",
|
|
70
96
|
"zh-cn": "文档:安装章节现在先介绍常规方式 —— 安装 npm 包(`iobroker install iobroker.time-tracker` 或管理界面中的“从自定义 URL 安装”),实例 `time-tracker.0` 会自动创建。从源码构建现在只是开发者路径,章节也说明了为什么从 Git 安装会提示 `cannot find start file!`"
|
|
71
|
-
},
|
|
72
|
-
"0.2.4": {
|
|
73
|
-
"en": "`commands.punchUserId` selects the employee the punch buttons apply to now (writing `0` gives the choice back to the adapter) and the current choice is mirrored into that state. The README and `docs/erste-schritte.md` describe all six command states, with examples and the two traps: the buttons act on `true` only, and a wrong period or an unknown employee is answered with a warning in the log",
|
|
74
|
-
"de": "`commands.punchUserId` wählt jetzt den Mitarbeiter, für den die Stempel-Buttons gelten (mit `0` übernimmt der Adapter die Wahl wieder selbst), und die aktuelle Wahl wird in diesen State zurückgespiegelt. README und `docs/erste-schritte.md` beschreiben alle sechs Befehls-States — mit Beispielen und den beiden Stolpersteinen: die Buttons reagieren nur auf `true`, und ein falscher Zeitraum oder unbekannter Mitarbeiter wird als Warnung im Log beantwortet",
|
|
75
|
-
"ru": "`commands.punchUserId` теперь выбирает сотрудника, к которому относятся кнопки отметки (значение `0` возвращает выбор адаптеру), а текущий выбор отображается в этом состоянии. README и `docs/erste-schritte.md` описывают все шесть командных состояний — с примерами и двумя ловушками: кнопки срабатывают только на `true`, а неверный период или неизвестный сотрудник отмечаются предупреждением в журнале",
|
|
76
|
-
"pt": "`commands.punchUserId` passa a escolher o funcionário a que se aplicam os botões de marcação (com `0` a escolha volta para o adaptador) e a escolha atual é refletida nesse estado. README e `docs/erste-schritte.md` descrevem os seis estados de comando — com exemplos e as duas armadilhas: os botões só reagem a `true` e um período errado ou um funcionário desconhecido são respondidos com um aviso no log",
|
|
77
|
-
"nl": "`commands.punchUserId` kiest nu de medewerker waarop de stempelknoppen slaan (`0` geeft de keuze weer aan de adapter) en de huidige keuze wordt in die state teruggespiegeld. README en `docs/erste-schritte.md` beschrijven alle zes opdrachtstates — met voorbeelden en de twee valkuilen: de knoppen reageren alleen op `true` en een verkeerde periode of onbekende medewerker krijgt een waarschuwing in het log",
|
|
78
|
-
"fr": "`commands.punchUserId` sélectionne désormais l'employé auquel s'appliquent les boutons de pointage (`0` rend le choix à l'adaptateur) et le choix actuel est reflété dans cet état. Le README et `docs/erste-schritte.md` décrivent les six états de commande — avec des exemples et les deux pièges : les boutons ne réagissent qu'à `true` et une période erronée ou un employé inconnu reçoit un avertissement dans le log",
|
|
79
|
-
"it": "`commands.punchUserId` ora sceglie il dipendente a cui si applicano i pulsanti di timbratura (con `0` la scelta torna all'adattatore) e la scelta attuale viene rispecchiata in questo stato. README e `docs/erste-schritte.md` descrivono tutti e sei gli stati di comando — con esempi e le due trappole: i pulsanti reagiscono solo a `true` e un periodo errato o un dipendente sconosciuto ricevono un avviso nel log",
|
|
80
|
-
"es": "`commands.punchUserId` ahora elige el empleado al que se aplican los botones de fichaje (con `0` la elección vuelve al adaptador) y la elección actual se refleja en ese estado. El README y `docs/erste-schritte.md` describen los seis estados de comando — con ejemplos y las dos trampas: los botones solo reaccionan a `true` y un periodo erróneo o un empleado desconocido reciben un aviso en el log",
|
|
81
|
-
"pl": "`commands.punchUserId` wybiera teraz pracownika, którego dotyczą przyciski rejestracji (wartość `0` oddaje wybór adapterowi), a bieżący wybór jest odzwierciedlany w tym stanie. README i `docs/erste-schritte.md` opisują wszystkie sześć stanów poleceń — z przykładami i dwiema pułapkami: przyciski reagują tylko na `true`, a błędny okres lub nieznany pracownik kończą się ostrzeżeniem w logu",
|
|
82
|
-
"uk": "`commands.punchUserId` тепер вибирає співробітника, до якого належать кнопки відмітки (значення `0` повертає вибір адаптеру), а поточний вибір відображається в цьому стані. README і `docs/erste-schritte.md` описують усі шість командних станів — з прикладами та двома пастками: кнопки реагують лише на `true`, а хибний період або невідомий співробітник отримують попередження в журналі",
|
|
83
|
-
"zh-cn": "`commands.punchUserId` 现在用于选择打卡按钮所适用的员工(写入 `0` 则由适配器重新选择),当前选择会回写到该状态。README 与 `docs/erste-schritte.md` 描述了全部六个命令状态 —— 包含示例和两个陷阱:按钮只响应 `true`,错误的期间或未知员工会在日志中以警告回应"
|
|
84
|
-
},
|
|
85
|
-
"0.2.3": {
|
|
86
|
-
"en": "fix: a corrected object definition reaches existing installations now — `ensureObject` merges the fields the adapter owns (`name`, `type`, `role`, `read`, `write`, `unit`) instead of only the name, so `commands.punchUserId` receives the role `level` on the next start (checker `E1011`)",
|
|
87
|
-
"de": "fix: eine korrigierte Objektdefinition erreicht jetzt auch bestehende Installationen — `ensureObject` mischt die adapter-eigenen Felder (`name`, `type`, `role`, `read`, `write`, `unit`) statt nur den Namen zusammen, deshalb erhält `commands.punchUserId` beim nächsten Start die Rolle `level` (Checker `E1011`)",
|
|
88
|
-
"ru": "исправление: исправленное определение объекта теперь доходит и до существующих установок — `ensureObject` объединяет поля, которыми владеет адаптер (`name`, `type`, `role`, `read`, `write`, `unit`), а не только имя, поэтому `commands.punchUserId` получит роль `level` при следующем запуске (проверка `E1011`)",
|
|
89
|
-
"pt": "correção: uma definição de objeto corrigida chega agora também às instalações existentes — `ensureObject` junta os campos do adaptador (`name`, `type`, `role`, `read`, `write`, `unit`) em vez de apenas o nome, por isso `commands.punchUserId` recebe a função `level` no próximo arranque (verificação `E1011`)",
|
|
90
|
-
"nl": "fix: een gecorrigeerde objectdefinitie bereikt nu ook bestaande installaties — `ensureObject` voegt de velden van de adapter samen (`name`, `type`, `role`, `read`, `write`, `unit`) in plaats van alleen de naam, daarom krijgt `commands.punchUserId` bij de volgende start de rol `level` (controle `E1011`)",
|
|
91
|
-
"fr": "correctif : une définition d'objet corrigée parvient désormais aussi aux installations existantes — `ensureObject` fusionne les champs propres à l'adaptateur (`name`, `type`, `role`, `read`, `write`, `unit`) au lieu du seul nom, `commands.punchUserId` reçoit donc le rôle `level` au prochain démarrage (contrôle `E1011`)",
|
|
92
|
-
"it": "correzione: una definizione di oggetto corretta raggiunge ora anche le installazioni esistenti — `ensureObject` unisce i campi dell'adattatore (`name`, `type`, `role`, `read`, `write`, `unit`) invece del solo nome, quindi `commands.punchUserId` riceve il ruolo `level` al prossimo avvio (controllo `E1011`)",
|
|
93
|
-
"es": "corrección: una definición de objeto corregida llega ahora también a las instalaciones existentes — `ensureObject` combina los campos propios del adaptador (`name`, `type`, `role`, `read`, `write`, `unit`) en lugar de solo el nombre, por eso `commands.punchUserId` recibe el rol `level` en el próximo arranque (comprobación `E1011`)",
|
|
94
|
-
"pl": "poprawka: skorygowana definicja obiektu dociera teraz także do istniejących instalacji — `ensureObject` scala pola należące do adaptera (`name`, `type`, `role`, `read`, `write`, `unit`), a nie tylko nazwę, dlatego `commands.punchUserId` otrzyma rolę `level` przy następnym starcie (kontrola `E1011`)",
|
|
95
|
-
"uk": "виправлення: виправлене визначення об'єкта тепер доходить і до наявних установок — `ensureObject` об'єднує поля, якими володіє адаптер (`name`, `type`, `role`, `read`, `write`, `unit`), а не лише назву, тому `commands.punchUserId` отримає роль `level` під час наступного запуску (перевірка `E1011`)",
|
|
96
|
-
"zh-cn": "修复:修正后的对象定义现在也会到达已有安装 —— `ensureObject` 合并适配器拥有的字段(`name`、`type`、`role`、`read`、`write`、`unit`),而不仅是名称,因此 `commands.punchUserId` 会在下次启动时获得角色 `level`(检查 `E1011`)"
|
|
97
97
|
}
|
|
98
98
|
},
|
|
99
99
|
"titleLang": {
|
package/package.json
CHANGED
package/src-pwa/src/i18n/de.json
CHANGED
|
@@ -358,5 +358,9 @@
|
|
|
358
358
|
"admin.settings.setting.report_font_path": "PDF-Schriftdatei",
|
|
359
359
|
"presence.workedToday": "Heute gearbeitet",
|
|
360
360
|
"admin.user.workedTime": "Arbeitszeit auf der Anwesenheitskarte",
|
|
361
|
-
"admin.user.workedTimeHint": "Zeigt auf der Anwesenheitskarte die heute geleistete Arbeitszeit (z. B. 1:23). Ohne Stempel steht dort 0:00; ohne diese Freigabe bleibt die Karte bei Anwesend/Abwesend und dem Namen."
|
|
361
|
+
"admin.user.workedTimeHint": "Zeigt auf der Anwesenheitskarte die heute geleistete Arbeitszeit (z. B. 1:23). Ohne Stempel steht dort 0:00; ohne diese Freigabe bleibt die Karte bei Anwesend/Abwesend und dem Namen.",
|
|
362
|
+
"admin.automation.save": "Regeln speichern",
|
|
363
|
+
"admin.automation.edit": "Bearbeiten",
|
|
364
|
+
"admin.automation.editTitle": "Regel bearbeiten",
|
|
365
|
+
"admin.automation.newTitle": "Neue Regel"
|
|
362
366
|
}
|
package/src-pwa/src/i18n/en.json
CHANGED
|
@@ -358,5 +358,9 @@
|
|
|
358
358
|
"admin.settings.setting.report_font_path": "PDF font file",
|
|
359
359
|
"presence.workedToday": "Worked today",
|
|
360
360
|
"admin.user.workedTime": "Working time on the presence card",
|
|
361
|
-
"admin.user.workedTimeHint": "Shows the time worked today on the presence card (for example 1:23). Without a punch it reads 0:00; without this permission the card keeps present/absent and the name only."
|
|
361
|
+
"admin.user.workedTimeHint": "Shows the time worked today on the presence card (for example 1:23). Without a punch it reads 0:00; without this permission the card keeps present/absent and the name only.",
|
|
362
|
+
"admin.automation.save": "Save rules",
|
|
363
|
+
"admin.automation.edit": "Edit",
|
|
364
|
+
"admin.automation.editTitle": "Edit rule",
|
|
365
|
+
"admin.automation.newTitle": "New rule"
|
|
362
366
|
}
|
package/src-pwa/src/i18n/es.json
CHANGED
|
@@ -358,5 +358,9 @@
|
|
|
358
358
|
"admin.settings.setting.report_font_path": "Fuente para PDF",
|
|
359
359
|
"presence.workedToday": "Trabajado hoy",
|
|
360
360
|
"admin.user.workedTime": "Tiempo de trabajo en la tarjeta de presencia",
|
|
361
|
-
"admin.user.workedTimeHint": "Muestra en la tarjeta de presencia el tiempo trabajado hoy (por ejemplo, 1:23). Sin fichaje pone 0:00; sin esta autorización la tarjeta se queda en presente/ausente y el nombre."
|
|
361
|
+
"admin.user.workedTimeHint": "Muestra en la tarjeta de presencia el tiempo trabajado hoy (por ejemplo, 1:23). Sin fichaje pone 0:00; sin esta autorización la tarjeta se queda en presente/ausente y el nombre.",
|
|
362
|
+
"admin.automation.save": "Guardar reglas",
|
|
363
|
+
"admin.automation.edit": "Editar",
|
|
364
|
+
"admin.automation.editTitle": "Editar regla",
|
|
365
|
+
"admin.automation.newTitle": "Nueva regla"
|
|
362
366
|
}
|
package/src-pwa/src/i18n/fr.json
CHANGED
|
@@ -358,5 +358,9 @@
|
|
|
358
358
|
"admin.settings.setting.report_font_path": "Police pour PDF",
|
|
359
359
|
"presence.workedToday": "Travaillé aujourd'hui",
|
|
360
360
|
"admin.user.workedTime": "Temps de travail sur la carte de présence",
|
|
361
|
-
"admin.user.workedTimeHint": "Affiche sur la carte de présence le temps travaillé aujourd'hui (par exemple 1:23). Sans pointage, il y a 0:00 ; sans cette autorisation, la carte reste sur présent/absent et le nom."
|
|
361
|
+
"admin.user.workedTimeHint": "Affiche sur la carte de présence le temps travaillé aujourd'hui (par exemple 1:23). Sans pointage, il y a 0:00 ; sans cette autorisation, la carte reste sur présent/absent et le nom.",
|
|
362
|
+
"admin.automation.save": "Enregistrer les règles",
|
|
363
|
+
"admin.automation.edit": "Modifier",
|
|
364
|
+
"admin.automation.editTitle": "Modifier la règle",
|
|
365
|
+
"admin.automation.newTitle": "Nouvelle règle"
|
|
362
366
|
}
|
package/src-pwa/src/i18n/it.json
CHANGED
|
@@ -358,5 +358,9 @@
|
|
|
358
358
|
"admin.settings.setting.report_font_path": "Carattere per PDF",
|
|
359
359
|
"presence.workedToday": "Lavorato oggi",
|
|
360
360
|
"admin.user.workedTime": "Tempo di lavoro sulla scheda di presenza",
|
|
361
|
-
"admin.user.workedTimeHint": "Mostra sulla scheda di presenza il tempo lavorato oggi (per esempio 1:23). Senza timbratura c'è 0:00; senza questa autorizzazione la scheda resta con presente/assente e il nome."
|
|
361
|
+
"admin.user.workedTimeHint": "Mostra sulla scheda di presenza il tempo lavorato oggi (per esempio 1:23). Senza timbratura c'è 0:00; senza questa autorizzazione la scheda resta con presente/assente e il nome.",
|
|
362
|
+
"admin.automation.save": "Salva regole",
|
|
363
|
+
"admin.automation.edit": "Modifica",
|
|
364
|
+
"admin.automation.editTitle": "Modifica regola",
|
|
365
|
+
"admin.automation.newTitle": "Nuova regola"
|
|
362
366
|
}
|
package/src-pwa/src/i18n/nl.json
CHANGED
|
@@ -358,5 +358,9 @@
|
|
|
358
358
|
"admin.settings.setting.report_font_path": "Lettertype voor PDF",
|
|
359
359
|
"presence.workedToday": "Vandaag gewerkt",
|
|
360
360
|
"admin.user.workedTime": "Werktijd op de aanwezigheidskaart",
|
|
361
|
-
"admin.user.workedTimeHint": "Toont op de aanwezigheidskaart de vandaag gewerkte tijd (bijvoorbeeld 1:23). Zonder stempeling staat er 0:00; zonder deze vrijgave blijft de kaart bij aanwezig/afwezig en de naam."
|
|
361
|
+
"admin.user.workedTimeHint": "Toont op de aanwezigheidskaart de vandaag gewerkte tijd (bijvoorbeeld 1:23). Zonder stempeling staat er 0:00; zonder deze vrijgave blijft de kaart bij aanwezig/afwezig en de naam.",
|
|
362
|
+
"admin.automation.save": "Regels opslaan",
|
|
363
|
+
"admin.automation.edit": "Bewerken",
|
|
364
|
+
"admin.automation.editTitle": "Regel bewerken",
|
|
365
|
+
"admin.automation.newTitle": "Nieuwe regel"
|
|
362
366
|
}
|
package/src-pwa/src/i18n/pl.json
CHANGED
|
@@ -358,5 +358,9 @@
|
|
|
358
358
|
"admin.settings.setting.report_font_path": "Czcionka do PDF",
|
|
359
359
|
"presence.workedToday": "Przepracowane dzisiaj",
|
|
360
360
|
"admin.user.workedTime": "Czas pracy na karcie obecności",
|
|
361
|
-
"admin.user.workedTimeHint": "Pokazuje na karcie obecności czas przepracowany dzisiaj (np. 1:23). Bez rejestracji jest tam 0:00; bez tej zgody karta pozostaje przy obecny/nieobecny i nazwisku."
|
|
361
|
+
"admin.user.workedTimeHint": "Pokazuje na karcie obecności czas przepracowany dzisiaj (np. 1:23). Bez rejestracji jest tam 0:00; bez tej zgody karta pozostaje przy obecny/nieobecny i nazwisku.",
|
|
362
|
+
"admin.automation.save": "Zapisz reguły",
|
|
363
|
+
"admin.automation.edit": "Edytuj",
|
|
364
|
+
"admin.automation.editTitle": "Edytuj regułę",
|
|
365
|
+
"admin.automation.newTitle": "Nowa reguła"
|
|
362
366
|
}
|
package/src-pwa/src/i18n/pt.json
CHANGED
|
@@ -358,5 +358,9 @@
|
|
|
358
358
|
"admin.settings.setting.report_font_path": "Fonte para PDF",
|
|
359
359
|
"presence.workedToday": "Trabalhado hoje",
|
|
360
360
|
"admin.user.workedTime": "Tempo de trabalho no cartão de presença",
|
|
361
|
-
"admin.user.workedTimeHint": "Mostra no cartão de presença o tempo trabalhado hoje (por exemplo, 1:23). Sem marcação lê-se 0:00; sem esta permissão o cartão mantém presente/ausente e o nome."
|
|
361
|
+
"admin.user.workedTimeHint": "Mostra no cartão de presença o tempo trabalhado hoje (por exemplo, 1:23). Sem marcação lê-se 0:00; sem esta permissão o cartão mantém presente/ausente e o nome.",
|
|
362
|
+
"admin.automation.save": "Guardar regras",
|
|
363
|
+
"admin.automation.edit": "Editar",
|
|
364
|
+
"admin.automation.editTitle": "Editar regra",
|
|
365
|
+
"admin.automation.newTitle": "Nova regra"
|
|
362
366
|
}
|
package/src-pwa/src/i18n/ru.json
CHANGED
|
@@ -358,5 +358,9 @@
|
|
|
358
358
|
"admin.settings.setting.report_font_path": "Шрифт для PDF",
|
|
359
359
|
"presence.workedToday": "Отработано сегодня",
|
|
360
360
|
"admin.user.workedTime": "Рабочее время на карточке присутствия",
|
|
361
|
-
"admin.user.workedTimeHint": "Показывает на карточке присутствия отработанное сегодня время (например, 1:23). Без отметки там 0:00; без разрешения карточка остаётся с присутствует/отсутствует и именем."
|
|
361
|
+
"admin.user.workedTimeHint": "Показывает на карточке присутствия отработанное сегодня время (например, 1:23). Без отметки там 0:00; без разрешения карточка остаётся с присутствует/отсутствует и именем.",
|
|
362
|
+
"admin.automation.save": "Сохранить правила",
|
|
363
|
+
"admin.automation.edit": "Изменить",
|
|
364
|
+
"admin.automation.editTitle": "Изменить правило",
|
|
365
|
+
"admin.automation.newTitle": "Новое правило"
|
|
362
366
|
}
|
package/src-pwa/src/i18n/uk.json
CHANGED
|
@@ -358,5 +358,9 @@
|
|
|
358
358
|
"admin.settings.setting.report_font_path": "Шрифт для PDF",
|
|
359
359
|
"presence.workedToday": "Відпрацьовано сьогодні",
|
|
360
360
|
"admin.user.workedTime": "Робочий час на картці присутності",
|
|
361
|
-
"admin.user.workedTimeHint": "Показує на картці присутності відпрацьований сьогодні час (наприклад, 1:23). Без відмітки там 0:00; без цього дозволу картка залишається з присутній/відсутній і іменем."
|
|
361
|
+
"admin.user.workedTimeHint": "Показує на картці присутності відпрацьований сьогодні час (наприклад, 1:23). Без відмітки там 0:00; без цього дозволу картка залишається з присутній/відсутній і іменем.",
|
|
362
|
+
"admin.automation.save": "Зберегти правила",
|
|
363
|
+
"admin.automation.edit": "Змінити",
|
|
364
|
+
"admin.automation.editTitle": "Змінити правило",
|
|
365
|
+
"admin.automation.newTitle": "Нове правило"
|
|
362
366
|
}
|
|
@@ -358,5 +358,9 @@
|
|
|
358
358
|
"admin.settings.setting.report_font_path": "PDF 字体",
|
|
359
359
|
"presence.workedToday": "今日已工作",
|
|
360
360
|
"admin.user.workedTime": "在岗卡片上的工作时间",
|
|
361
|
-
"admin.user.workedTimeHint": "在在岗卡片上显示今天的工作时间(例如 1:23)。未打卡时显示 0:00;未授权时卡片只显示在岗/缺勤和姓名。"
|
|
361
|
+
"admin.user.workedTimeHint": "在在岗卡片上显示今天的工作时间(例如 1:23)。未打卡时显示 0:00;未授权时卡片只显示在岗/缺勤和姓名。",
|
|
362
|
+
"admin.automation.save": "保存规则",
|
|
363
|
+
"admin.automation.edit": "编辑",
|
|
364
|
+
"admin.automation.editTitle": "编辑规则",
|
|
365
|
+
"admin.automation.newTitle": "新规则"
|
|
362
366
|
}
|