iobroker.time-tracker 0.7.2 → 0.7.4

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/io-package.json CHANGED
@@ -1,9 +1,35 @@
1
1
  {
2
2
  "common": {
3
3
  "name": "time-tracker",
4
- "version": "0.7.2",
4
+ "version": "0.7.4",
5
5
  "nogit": true,
6
6
  "news": {
7
+ "0.7.4": {
8
+ "en": "fix: the subscription link of the company (`calendar.feedUrl`) carries the API prefix now (`/api/calendar.ics?token=…`) — without it the browser showed the web app and its login instead of the calendar. The written calendar file sits in `files/time-tracker.<n>/calendar.ics`, where a `web` instance hands it out as a download while the `ical` adapter keeps reading it as a local file.",
9
+ "de": "fix: Der Abo-Link der Firma (`calendar.feedUrl`) trägt jetzt das API-Präfix (`/api/calendar.ics?token=…`) – ohne es zeigte der Browser die Web-Oberfläche samt Anmeldung statt des Kalenders. Die geschriebene Kalenderdatei liegt in `files/time-tracker.<n>/calendar.ics`, wo eine `web`-Instanz sie als Download ausliefert, während der `ical`-Adapter sie weiter als lokale Datei liest.",
10
+ "ru": "исправление: ссылка подписки фирмы (`calendar.feedUrl`) теперь содержит префикс API (`/api/calendar.ics?token=…`) — без него браузер показывал веб-интерфейс с входом вместо календаря. Записываемый файл календаря лежит в `files/time-tracker.<n>/calendar.ics`, откуда экземпляр `web` отдаёт его на скачивание, а адаптер `ical` по-прежнему читает его как локальный файл.",
11
+ "pt": "correção: a ligação de subscrição da empresa (`calendar.feedUrl`) passa a levar o prefixo da API (`/api/calendar.ics?token=…`) — sem ele o navegador mostrava a aplicação web e o seu login em vez do calendário. O ficheiro de calendário escrito fica em `files/time-tracker.<n>/calendar.ics`, de onde uma instância `web` o entrega como download enquanto o adaptador `ical` continua a lê-lo como ficheiro local.",
12
+ "nl": "fix: de abonnementslink van het bedrijf (`calendar.feedUrl`) bevat nu het API-voorvoegsel (`/api/calendar.ics?token=…`) — zonder dat toonde de browser de webapp en zijn login in plaats van de kalender. Het geschreven kalenderbestand staat in `files/time-tracker.<n>/calendar.ics`, waar een `web`-instantie het als download aanbiedt terwijl de `ical`-adapter het als lokaal bestand blijft lezen.",
13
+ "fr": "correctif : le lien d'abonnement de l'entreprise (`calendar.feedUrl`) porte désormais le préfixe de l'API (`/api/calendar.ics?token=…`) — sans lui, le navigateur affichait l'application web et sa connexion au lieu du calendrier. Le fichier de calendrier écrit se trouve dans `files/time-tracker.<n>/calendar.ics`, où une instance `web` le propose en téléchargement tandis que l'adaptateur `ical` continue à le lire comme fichier local.",
14
+ "it": "correzione: il link di sottoscrizione dell'azienda (`calendar.feedUrl`) ora porta il prefisso dell'API (`/api/calendar.ics?token=…`) — senza di esso il browser mostrava l'app web e il suo login invece del calendario. Il file di calendario scritto si trova in `files/time-tracker.<n>/calendar.ics`, da dove un'istanza `web` lo offre come download mentre l'adattatore `ical` continua a leggerlo come file locale.",
15
+ "es": "corrección: el enlace de suscripción de la empresa (`calendar.feedUrl`) ahora lleva el prefijo de la API (`/api/calendar.ics?token=…`) — sin él el navegador mostraba la aplicación web y su inicio de sesión en lugar del calendario. El archivo de calendario escrito está en `files/time-tracker.<n>/calendar.ics`, desde donde una instancia `web` lo entrega como descarga mientras que el adaptador `ical` sigue leyéndolo como archivo local.",
16
+ "pl": "poprawka: link subskrypcji firmy (`calendar.feedUrl`) zawiera teraz prefiks API (`/api/calendar.ics?token=…`) — bez niego przeglądarka pokazywała aplikację web z logowaniem zamiast kalendarza. Zapisywany plik kalendarza znajduje się w `files/time-tracker.<n>/calendar.ics`, skąd instancja `web` udostępnia go do pobrania, a adapter `ical` nadal czyta go jako plik lokalny.",
17
+ "uk": "виправлення: посилання підписки компанії (`calendar.feedUrl`) тепер містить префікс API (`/api/calendar.ics?token=…`) — без нього браузер показував веб-застосунок із входом замість календаря. Записуваний файл календаря лежить у `files/time-tracker.<n>/calendar.ics`, звідки екземпляр `web` віддає його на завантаження, а адаптер `ical` далі читає його як локальний файл.",
18
+ "zh-cn": "修复:公司的订阅链接(`calendar.feedUrl`)现在带有 API 前缀(`/api/calendar.ics?token=…`)—— 否则浏览器显示的是 Web 应用及其登录页而非日历。写出的日历文件位于 `files/time-tracker.<n>/calendar.ics`,由 `web` 实例提供下载,而 `ical` 适配器仍将其作为本地文件读取。"
19
+ },
20
+ "0.7.3": {
21
+ "en": "new: the calendar goes to ioBroker. The adapter writes `calendar.ics` into its instance folder — the `ical` adapter reads that as a local file, without URL, token or network — and publishes the subscription link of the company in `calendar.feedUrl` plus the same days as JSON in `calendar.absences` (`calendar.updatedAt` says how fresh they are). That link opens the absences of all employees, so nothing happens by itself: `commands.rotateCalendarToken` creates the token and replaces it on every further call, which kills an old link at once. Besides, the guard `requireInsideEditWindow` is gone — it had been unreachable since times belong to the administration (`edit_window_days` only feeds the offline queue).",
22
+ "de": "neu: Der Kalender geht an ioBroker. Der Adapter schreibt `calendar.ics` in seinen Instanz-Ordner — der `ical`-Adapter liest das als lokale Datei, ohne URL, Token und Netz — und veröffentlicht den Abo-Link der Firma als `calendar.feedUrl` sowie dieselben Tage als JSON in `calendar.absences` (`calendar.updatedAt` sagt, wie frisch sie sind). Dieser Link öffnet die Abwesenheiten aller Mitarbeiter, deshalb passiert nichts von selbst: `commands.rotateCalendarToken` erzeugt den Token und ersetzt ihn bei jedem weiteren Aufruf, womit ein alter Link sofort tot ist. Außerdem ist die Prüfung `requireInsideEditWindow` entfernt: sie war seit „Zeiten gehören der Verwaltung“ nicht mehr erreichbar (`edit_window_days` wirkt nur noch auf die Offline-Warteschlange).",
23
+ "ru": "новое: календарь передаётся в ioBroker. Адаптер пишет `calendar.ics` в папку своего экземпляра — адаптер `ical` читает его как локальный файл, без URL, токена и сети — и публикует ссылку подписки фирмы в `calendar.feedUrl`, а те же дни в JSON — в `calendar.absences` (`calendar.updatedAt` показывает, насколько они свежие). Эта ссылка открывает отсутствия всех сотрудников, поэтому ничего не происходит само: `commands.rotateCalendarToken` создаёт токен и заменяет его при каждом следующем вызове, отчего старая ссылка сразу перестаёт работать. Кроме того, удалена проверка `requireInsideEditWindow`: она была недостижима с момента «время принадлежит администрации» (`edit_window_days` влияет только на офлайн-очередь).",
24
+ "pt": "novo: o calendário vai para o ioBroker. O adaptador escreve `calendar.ics` na pasta da sua instância — o adaptador `ical` lê-o como ficheiro local, sem URL, token nem rede — e publica a ligação de subscrição da empresa em `calendar.feedUrl` e os mesmos dias em JSON em `calendar.absences` (`calendar.updatedAt` diz quão recentes são). Essa ligação abre as ausências de todos os funcionários, por isso nada acontece por si: `commands.rotateCalendarToken` cria o token e substitui-o a cada chamada seguinte, o que mata logo uma ligação antiga. Além disso, a verificação `requireInsideEditWindow` desapareceu: era inalcançável desde que «os tempos pertencem à administração» (`edit_window_days` só alimenta a fila offline).",
25
+ "nl": "nieuw: de kalender gaat naar ioBroker. De adapter schrijft `calendar.ics` in de map van zijn instantie — de `ical`-adapter leest dat als lokaal bestand, zonder URL, token of netwerk — en publiceert de abonnementslink van het bedrijf in `calendar.feedUrl` plus dezelfde dagen als JSON in `calendar.absences` (`calendar.updatedAt` zegt hoe vers ze zijn). Die link opent de afwezigheden van alle medewerkers, dus er gebeurt niets vanzelf: `commands.rotateCalendarToken` maakt de token aan en vervangt hem bij elke volgende aanroep, waardoor een oude link meteen dood is. Daarnaast is de controle `requireInsideEditWindow` verdwenen: die was onbereikbaar sinds „tijden zijn van de administratie“ (`edit_window_days` voedt alleen de offline wachtrij).",
26
+ "fr": "nouveau : le calendrier va vers ioBroker. L'adaptateur écrit `calendar.ics` dans le dossier de son instance — l'adaptateur `ical` le lit comme fichier local, sans URL, jeton ni réseau — et publie le lien d'abonnement de l'entreprise dans `calendar.feedUrl` ainsi que les mêmes jours en JSON dans `calendar.absences` (`calendar.updatedAt` dit leur fraîcheur). Ce lien ouvre les absences de tous les employés, donc rien ne se fait tout seul : `commands.rotateCalendarToken` crée le jeton et le remplace à chaque appel suivant, ce qui tue aussitôt un ancien lien. En outre, le contrôle `requireInsideEditWindow` a disparu : il était inatteignable depuis « les horaires appartiennent à l'administration » (`edit_window_days` n'alimente que la file hors ligne).",
27
+ "it": "novità: il calendario va a ioBroker. L'adattatore scrive `calendar.ics` nella cartella della sua istanza — l'adattatore `ical` lo legge come file locale, senza URL, token o rete — e pubblica il link di sottoscrizione dell'azienda in `calendar.feedUrl` e gli stessi giorni in JSON in `calendar.absences` (`calendar.updatedAt` dice quanto sono freschi). Quel link apre le assenze di tutti i dipendenti, quindi non succede nulla da solo: `commands.rotateCalendarToken` crea il token e lo sostituisce a ogni chiamata successiva, il che rende subito inutile un vecchio link. Inoltre il controllo `requireInsideEditWindow` è stato rimosso: era irraggiungibile da quando «gli orari appartengono all'amministrazione» (`edit_window_days` alimenta solo la coda offline).",
28
+ "es": "novedad: el calendario va a ioBroker. El adaptador escribe `calendar.ics` en la carpeta de su instancia — el adaptador `ical` lo lee como archivo local, sin URL, token ni red — y publica el enlace de suscripción de la empresa en `calendar.feedUrl` y los mismos días como JSON en `calendar.absences` (`calendar.updatedAt` dice su antigüedad). Ese enlace abre las ausencias de todos los empleados, así que nada ocurre por sí solo: `commands.rotateCalendarToken` crea el token y lo sustituye en cada llamada posterior, lo que anula al instante un enlace antiguo. Además se ha eliminado la comprobación `requireInsideEditWindow`: era inalcanzable desde «los horarios pertenecen a la administración» (`edit_window_days` solo alimenta la cola sin conexión).",
29
+ "pl": "nowość: kalendarz trafia do ioBroker. Adapter zapisuje `calendar.ics` w folderze swojej instancji — adapter `ical` czyta go jako plik lokalny, bez URL, tokenu i sieci — i publikuje link subskrypcji firmy w `calendar.feedUrl` oraz te same dni jako JSON w `calendar.absences` (`calendar.updatedAt` mówi, jak świeże są). Ten link otwiera nieobecności wszystkich pracowników, więc nic nie dzieje się samo: `commands.rotateCalendarToken` tworzy token i zastępuje go przy każdym kolejnym wywołaniu, co natychmiast unieważnia stary link. Dodatkowo usunięto kontrolę `requireInsideEditWindow`: była nieosiągalna od czasu „czas należy do administracji” (`edit_window_days` zasila tylko kolejkę offline).",
30
+ "uk": "новинка: календар передається в ioBroker. Адаптер пише `calendar.ics` у папці свого екземпляра — адаптер `ical` читає його як локальний файл, без URL, токена й мережі — і публікує посилання підписки компанії в `calendar.feedUrl`, а ті самі дні як JSON — у `calendar.absences` (`calendar.updatedAt` показує, наскільки вони свіжі). Це посилання відкриває відсутності всіх працівників, тому нічого не відбувається саме собою: `commands.rotateCalendarToken` створює токен і замінює його за кожного наступного виклику, від чого старе посилання одразу перестає працювати. Крім того, прибрано перевірку `requireInsideEditWindow`: вона була недосяжною відколи «час належить адміністрації» (`edit_window_days` живить лише офлайн-чергу).",
31
+ "zh-cn": "新增:日历接入 ioBroker。适配器把 `calendar.ics` 写入其实例文件夹 —— `ical` 适配器可将其作为本地文件读取,无需网址、令牌或网络 —— 并把公司的订阅链接发布在 `calendar.feedUrl`,同样的日期以 JSON 形式发布在 `calendar.absences`(`calendar.updatedAt` 显示其新鲜度)。该链接会打开所有员工的缺勤,因此不会自动生成:`commands.rotateCalendarToken` 创建令牌,并在之后每次调用时替换它,旧链接立即失效。此外移除了 `requireInsideEditWindow` 检查:自「时间属于管理方」以来它已无法触发(`edit_window_days` 现在只影响离线队列)。"
32
+ },
7
33
  "0.7.2": {
8
34
  "en": "security: the administration cannot lock itself out any more. Deactivating or taking the admin role away from the last active administrator is refused (409 `last_administrator`), and the web app warns before it is tried on the own account — the switch of the own account explains why an account cannot deactivate itself. The PDF statement writes the absences left aligned on lines of their own, and the list of the absence types shows “visible for everybody” on a line of its own so that “reduces vacation” cannot push it out of the row any more.",
9
35
  "de": "Sicherheit: Die Verwaltung kann sich nicht mehr aussperren – das Deaktivieren und das Entziehen der Administrator-Rolle wird abgelehnt, wenn es den letzten aktiven Administrator treffen würde (409 `last_administrator`), und die App warnt, wenn man es beim eigenen Konto versucht – der Schalter des eigenen Kontos erklärt, warum ein Konto sich nicht selbst deaktivieren kann. Der PDF-Stundennachweis schreibt die Abwesenheiten linksbündig in eigenen Zeilen, und die Liste der Abwesenheitsarten zeigt „Für alle sichtbar“ in einer eigenen Zeile, damit „Zieht vom Urlaub ab“ sie nicht mehr aus der Zeile drängt.",
@@ -68,32 +94,6 @@
68
94
  "pl": "nowość: własne nieobecności można zaprenumerować w dowolnej aplikacji kalendarza. POST /calendar/token wydaje osobisty link (GET /calendar.ics?token=…, publiczny i z limitem częstości), którego token można odświeżyć — stary link przestaje wtedy działać. Kanał to prawdziwy iCalendar: DTEND jest wyłączny, aby żadne wydarzenie nie traciło ostatniego dnia, pół dnia niesie swój udział w podsumowaniu, wniosek czekający na decyzję jest TENTATIVE, a stan zatwierdzenia jedzie w STATUS. Dodatkowo administracja znajdzie przegląd roku na karcie nieobecności: zatwierdzone dni według pracownika i miesiąca",
69
95
  "uk": "новинка: власні відсутності можна підписати в будь-якому календарі. POST /calendar/token видає особисте посилання (GET /calendar.ics?token=…, публічне й з обмеженням частоти), токен якого можна оновити — тоді старе посилання перестає працювати. Потік — справжній iCalendar: DTEND виключний, щоб жодна подія не втрачала останній день, половинні дні несуть свою частку в описі, заявка, що чекає рішення, позначена TENTATIVE, а стан схвалення передається в STATUS. Додатково адміністрація знаходить огляд року на вкладці відсутностей: схвалені дні за працівниками й місяцями",
70
96
  "zh-cn": "新功能:自己的缺勤可在任意日历应用中订阅。POST /calendar/token 发放个人链接(GET /calendar.ics?token=…,公开且限流),其令牌可更新 —— 旧链接随之失效。该订阅是标准 iCalendar:DTEND 为排他值,任何事件都不会丢掉最后一天;半天会在摘要中带上份额;等待决定的申请标记为 TENTATIVE;审批状态通过 STATUS 传递。此外管理员在缺勤标签页中可看到年度总览:按员工与月份统计的已批准天数"
71
- },
72
- "0.4.4": {
73
- "en": "fix: the browser tests moved from e2e/ to test/e2e/. The repository checker looks at the packages the sources import and skips the test directory only, so it saw @playwright/test — a dev dependency of the specs — as used but not declared. The Playwright config, the e2e workflow and the docs follow the new path, and the test server points at the repository root one level deeper",
74
- "de": "fix: die Browser-Tests sind von e2e/ nach test/e2e/ umgezogen. Der Repository-Checker prüft die Pakete, die die Quellen importieren, und überspringt nur das test-Verzeichnis — deshalb sah er @playwright/test (eine dev-Abhängigkeit der Specs) als benutzt, aber nicht deklariert. Playwright-Konfiguration, e2e-Workflow und Doku folgen dem neuen Pfad, und der Testserver zeigt eine Ebene tiefer auf die Repository-Wurzel",
75
- "ru": "исправление: браузерные тесты переехали из e2e/ в test/e2e/. Проверка репозитория смотрит на пакеты, которые импортируют исходники, и пропускает только каталог test — поэтому @playwright/test (dev-зависимость спецификаций) выглядел используемым, но не объявленным. Конфигурация Playwright, workflow e2e и документация следуют новому пути, а тестовый сервер указывает на корень репозитория на уровень глубже",
76
- "pt": "correção: os testes de navegador passaram de e2e/ para test/e2e/. O verificador de repositório olha para os pacotes que os fontes importam e ignora apenas o diretório test — por isso via @playwright/test (uma dependência de desenvolvimento das especificações) como usado mas não declarado. A configuração do Playwright, o workflow e2e e a documentação seguem o novo caminho, e o servidor de teste aponta para a raiz do repositório um nível mais fundo",
77
- "nl": "fix: de browsertests zijn verhuisd van e2e/ naar test/e2e/. De repositorychecker kijkt naar de pakketten die de bron importeert en slaat alleen de map test over — daarom zag hij @playwright/test (een dev-afhankelijkheid van de specs) als gebruikt maar niet gedeclareerd. De Playwright-configuratie, de e2e-workflow en de documentatie volgen het nieuwe pad, en de testserver wijst een niveau dieper naar de repositorywortel",
78
- "fr": "correctif : les tests de navigateur ont déménagé de e2e/ vers test/e2e/. Le vérificateur de dépôt regarde les paquets que les sources importent et n'ignore que le dossier test — il voyait donc @playwright/test (une dépendance de développement des spécifications) comme utilisé mais non déclaré. La configuration Playwright, le workflow e2e et la documentation suivent le nouveau chemin, et le serveur de test pointe un niveau plus bas vers la racine du dépôt",
79
- "it": "correzione: i test del browser si sono spostati da e2e/ a test/e2e/. Il verificatore del repository guarda i pacchetti importati dai sorgenti e salta solo la cartella test — perciò vedeva @playwright/test (una dipendenza di sviluppo delle specifiche) come usato ma non dichiarato. La configurazione di Playwright, il workflow e2e e la documentazione seguono il nuovo percorso, e il server di test punta un livello più in basso alla radice del repository",
80
- "es": "corrección: los tests de navegador se han movido de e2e/ a test/e2e/. El verificador del repositorio mira los paquetes que importan las fuentes y omite solo la carpeta test — por eso veía @playwright/test (una dependencia de desarrollo de las especificaciones) como usado pero no declarado. La configuración de Playwright, el workflow e2e y la documentación siguen el nuevo camino, y el servidor de pruebas apunta un nivel más abajo a la raíz del repositorio",
81
- "pl": "poprawka: testy przeglądarkowe przeniesiono z e2e/ do test/e2e/. Weryfikator repozytorium patrzy na pakiety importowane przez źródła i pomija tylko katalog test — dlatego widział @playwright/test (zależność deweloperską specyfikacji) jako użyty, ale niezadeklarowany. Konfiguracja Playwright, workflow e2e i dokumentacja podążają za nową ścieżką, a serwer testowy wskazuje o poziom niżej na katalog główny repozytorium",
82
- "uk": "виправлення: браузерні тести переїхали з e2e/ до test/e2e/. Перевірка репозиторію дивиться на пакети, які імпортують джерела, і пропускає лише каталог test — тому @playwright/test (dev-залежність специфікацій) виглядав використаним, але не оголошеним. Конфігурація Playwright, workflow e2e та документація йдуть за новим шляхом, а тестовий сервер вказує на корінь репозиторію на рівень глибше",
83
- "zh-cn": "修复:浏览器测试已从 e2e/ 迁移到 test/e2e/。仓库检查器会查看源码导入的包,并且只跳过 test 目录 —— 因此它把 @playwright/test(规格说明的开发依赖)视为已使用但未声明。Playwright 配置、e2e 工作流与文档都已跟随新路径,测试服务器也向上一级指向仓库根目录"
84
- },
85
- "0.4.3": {
86
- "en": "change: “active” of an absence type now reads “visible for everybody” and means exactly that. Switched on, the employees pick the type in the app and request it (vacation, further training); switched off, the type belongs to the administration alone (sickness, accident, military service — such a note reaches a company on the same day and is booked, not requested). The server refuses an employee a type that is not public, sickness, accident and military service start switched off (migration 22), and the hint in the card explains the switch",
87
- "de": "Änderung: „Aktiv“ einer Abwesenheitsart heißt jetzt „Für alle sichtbar“ und bedeutet genau das. Eingeschaltet wählen die Mitarbeiter die Art in der App und beantragen sie (Urlaub, Weiterbildung); ausgeschaltet gehört die Art nur der Verwaltung (Krankheit, Unfall, Militär — so eine Meldung erreicht das Unternehmen am selben Tag und wird gebucht, nicht beantragt). Der Server verweigert dem Mitarbeiter eine nicht öffentliche Art, Krankheit, Unfall und Militär starten ausgeschaltet (Migration 22), und der Hinweis in der Karte erklärt den Schalter",
88
- "ru": "изменение: «активно» для вида отсутствия теперь называется «видно всем» и означает именно это. Включено — сотрудники выбирают вид в приложении и запрашивают его (отпуск, повышение квалификации); выключено — вид принадлежит только администрированию (болезнь, несчастный случай, военная служба — такая справка приходит на предприятие в тот же день и оформляется, а не запрашивается). Сервер отказывает сотруднику в непубличном виде, болезнь, несчастный случай и военная служба стартуют выключенными (миграция 22), а подсказка в карточке объясняет переключатель",
89
- "pt": "alteração: «ativo» de um tipo de ausência passa a «visível para todos» e significa exatamente isso. Ligado, os funcionários escolhem o tipo na aplicação e pedem-no (férias, formação); desligado, o tipo pertence apenas à administração (doença, acidente, serviço militar — essa nota chega à empresa no mesmo dia e é registada, não pedida). O servidor recusa ao funcionário um tipo não público, doença, acidente e serviço militar começam desligados (migração 22), e a dica no cartão explica o interruptor",
90
- "nl": "wijziging: “actief” van een afwezigheidstype heet nu “zichtbaar voor iedereen” en betekent precies dat. Ingeschakeld kiezen medewerkers het type in de app en vragen het aan (vakantie, opleiding); uitgeschakeld hoort het type alleen bij het beheer (ziekte, ongeval, militaire dienst — zo'n melding bereikt het bedrijf dezelfde dag en wordt geboekt, niet aangevraagd). De server weigert een medewerker een niet-openbaar type, ziekte, ongeval en militaire dienst starten uitgeschakeld (migratie 22), en de hint in de kaart verklaart de schakelaar",
91
- "fr": "changement : « actif » d'un type d'absence devient « visible pour tous » et signifie exactement cela. Activé, les employés choisissent le type dans l'application et le demandent (vacances, formation) ; désactivé, le type appartient uniquement à l'administration (maladie, accident, service militaire — un tel avis arrive dans l'entreprise le jour même et est enregistré, pas demandé). Le serveur refuse à un employé un type non public, maladie, accident et service militaire démarrent désactivés (migration 22), et l'indication dans la carte explique l'interrupteur",
92
- "it": "modifica: «attivo» di un tipo di assenza ora si chiama «visibile a tutti» e significa esattamente questo. Attivato, i dipendenti scelgono il tipo nell'app e lo richiedono (ferie, formazione); disattivato, il tipo appartiene solo all'amministrazione (malattia, infortunio, servizio militare — un simile avviso arriva in azienda lo stesso giorno e viene registrato, non richiesto). Il server rifiuta al dipendente un tipo non pubblico, malattia, infortunio e servizio militare partono disattivati (migrazione 22), e il suggerimento nella scheda spiega l'interruttore",
93
- "es": "cambio: «activo» de un tipo de ausencia ahora se llama «visible para todos» y significa exactamente eso. Activado, los empleados eligen el tipo en la aplicación y lo solicitan (vacaciones, formación); desactivado, el tipo pertenece solo a la administración (enfermedad, accidente, servicio militar — tal aviso llega a la empresa el mismo día y se registra, no se solicita). El servidor rechaza al empleado un tipo no público, enfermedad, accidente y servicio militar empiezan desactivados (migración 22), y la sugerencia de la tarjeta explica el interruptor",
94
- "pl": "zmiana: „aktywny” rodzaju nieobecności nazywa się teraz „widoczny dla wszystkich” i dokładnie to oznacza. Włączony — pracownicy wybierają rodzaj w aplikacji i składają wniosek (urlop, szkolenie); wyłączony — rodzaj należy tylko do administracji (choroba, wypadek, służba wojskowa — takie zgłoszenie trafia do firmy tego samego dnia i jest księgowane, nie wnioskowane). Serwer odmawia pracownikowi niepublicznego rodzaju, choroba, wypadek i służba wojskowa startują wyłączone (migracja 22), a podpowiedź na karcie wyjaśnia przełącznik",
95
- "uk": "зміна: «активно» для виду відсутності тепер називається «видно всім» і означає саме це. Увімкнено — працівники вибирають вид у застосунку й запитують його (відпустка, підвищення кваліфікації); вимкнено — вид належить лише адмініструванню (хвороба, нещасний випадок, військова служба — така довідка надходить на підприємство того ж дня й оформлюється, а не запитується). Сервер відмовляє працівникові в непублічному виді, хвороба, нещасний випадок і військова служба стартують вимкненими (міграція 22), а підказка на картці пояснює перемикач",
96
- "zh-cn": "变更:缺勤类型的「启用」现在称为「所有人可见」,并且正是指这一点。开启时,员工可在应用中选择该类型并申请(如休假、进修);关闭时该类型仅属于管理方(如疾病、事故、兵役 —— 此类通知当天就到达企业,是登记而非申请)。服务器会拒绝员工使用非公开类型;疾病、事故与兵役默认为关闭(迁移 22),卡片中的提示说明了该开关"
97
97
  }
98
98
  },
99
99
  "titleLang": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iobroker.time-tracker",
3
- "version": "0.7.2",
3
+ "version": "0.7.4",
4
4
  "description": "Time tracking (clock-in/out) for ioBroker with web app, badge terminal and reports",
5
5
  "author": {
6
6
  "name": "Alex",
@@ -50,7 +50,6 @@
50
50
  "month.worked": "Gearbeitet",
51
51
  "month.target": "Soll",
52
52
  "month.balance": "Saldo",
53
- "error.edit_window_closed": "Außerhalb des Bearbeitungsfensters",
54
53
  "admin.profile.pauseRules": "Eigene Pausenregeln",
55
54
  "admin.profile.pauseRulesHint": "Regeln nur für diesen Mitarbeiter: sie ersetzen die Firmenregel mit demselben „ab Minuten“. Ohne eigene Regeln gilt die Firmenstaffel.",
56
55
  "report.csv": "Rohdaten (CSV)",
@@ -50,7 +50,6 @@
50
50
  "month.worked": "Worked",
51
51
  "month.target": "Target",
52
52
  "month.balance": "Balance",
53
- "error.edit_window_closed": "Outside the edit window",
54
53
  "admin.profile.pauseRules": "Own break rules",
55
54
  "admin.profile.pauseRulesHint": "Rules for this employee only: they replace the company rule with the same “from minutes”. Without own rules the company table applies.",
56
55
  "report.csv": "Raw data (CSV)",
@@ -71,7 +71,6 @@
71
71
  "login.title": "Iniciar sesión",
72
72
  "month.absence": "Ausencia",
73
73
  "month.balance": "Saldo",
74
- "error.edit_window_closed": "Fuera de la ventana de corrección",
75
74
  "admin.profile.pauseRules": "Reglas de pausa propias",
76
75
  "admin.profile.pauseRulesHint": "Reglas solo para este empleado: sustituyen la regla de la empresa con el mismo «desde minutos». Sin reglas propias se aplica la escala de la empresa.",
77
76
  "report.csv": "Datos brutos (CSV)",
@@ -71,7 +71,6 @@
71
71
  "login.title": "Se connecter",
72
72
  "month.absence": "Absence",
73
73
  "month.balance": "Équilibre",
74
- "error.edit_window_closed": "Hors de la fenêtre de correction",
75
74
  "admin.profile.pauseRules": "Règles de pause propres",
76
75
  "admin.profile.pauseRulesHint": "Règles pour ce collaborateur uniquement : elles remplacent la règle d'entreprise avec le même « à partir de minutes ». Sans règle propre, le barème de l'entreprise s'applique.",
77
76
  "report.csv": "Données brutes (CSV)",
@@ -71,7 +71,6 @@
71
71
  "login.title": "Registrazione",
72
72
  "month.absence": "Assenza",
73
73
  "month.balance": "Bilancia",
74
- "error.edit_window_closed": "Fuori dalla finestra di correzione",
75
74
  "admin.profile.pauseRules": "Regole di pausa proprie",
76
75
  "admin.profile.pauseRulesHint": "Regole solo per questo dipendente: sostituiscono la regola aziendale con lo stesso «da minuti». Senza regole proprie vale la scala aziendale.",
77
76
  "report.csv": "Dati grezzi (CSV)",
@@ -71,7 +71,6 @@
71
71
  "login.title": "Log in",
72
72
  "month.absence": "Afwezigheid",
73
73
  "month.balance": "Evenwicht",
74
- "error.edit_window_closed": "Buiten het correctievenster",
75
74
  "admin.profile.pauseRules": "Eigen pauzeregels",
76
75
  "admin.profile.pauseRulesHint": "Regels alleen voor deze medewerker: ze vervangen de bedrijfsregel met dezelfde “vanaf minuten”. Zonder eigen regels geldt de bedrijfsstaffel.",
77
76
  "report.csv": "Ruwe gegevens (CSV)",
@@ -71,7 +71,6 @@
71
71
  "login.title": "Zalogować się",
72
72
  "month.absence": "Brak",
73
73
  "month.balance": "Balansować",
74
- "error.edit_window_closed": "Poza oknem edycji",
75
74
  "admin.profile.pauseRules": "Własne zasady przerw",
76
75
  "admin.profile.pauseRulesHint": "Zasady tylko dla tego pracownika: zastępują zasadę firmy z tym samym „od minut”. Bez własnych zasad obowiązuje tabela firmy.",
77
76
  "report.csv": "Dane surowe (CSV)",
@@ -71,7 +71,6 @@
71
71
  "login.title": "Entrar",
72
72
  "month.absence": "Ausência",
73
73
  "month.balance": "Equilíbrio",
74
- "error.edit_window_closed": "Fora da janela de correção",
75
74
  "admin.profile.pauseRules": "Regras de pausa próprias",
76
75
  "admin.profile.pauseRulesHint": "Regras só para este trabalhador: substituem a regra da empresa com o mesmo «a partir de minutos». Sem regras próprias aplica-se a escala da empresa.",
77
76
  "report.csv": "Dados brutos (CSV)",
@@ -71,7 +71,6 @@
71
71
  "login.title": "Войти",
72
72
  "month.absence": "Отсутствие",
73
73
  "month.balance": "Баланс",
74
- "error.edit_window_closed": "Вне окна редактирования",
75
74
  "admin.profile.pauseRules": "Свои правила перерывов",
76
75
  "admin.profile.pauseRulesHint": "Правила только для этого сотрудника: они заменяют правило компании с тем же «с минут». Без своих правил действует шкала компании.",
77
76
  "report.csv": "Исходные данные (CSV)",
@@ -71,7 +71,6 @@
71
71
  "login.title": "Увійдіть",
72
72
  "month.absence": "Відсутність",
73
73
  "month.balance": "Баланс",
74
- "error.edit_window_closed": "Поза вікном редагування",
75
74
  "admin.profile.pauseRules": "Власні правила перерв",
76
75
  "admin.profile.pauseRulesHint": "Правила лише для цього працівника: вони замінюють правило компанії з тим самим «з хвилин». Без власних правил діє шкала компанії.",
77
76
  "report.csv": "Початкові дані (CSV)",
@@ -71,7 +71,6 @@
71
71
  "login.title": "登入",
72
72
  "month.absence": "缺席",
73
73
  "month.balance": "平衡",
74
- "error.edit_window_closed": "超出编辑窗口",
75
74
  "admin.profile.pauseRules": "个人休息规则",
76
75
  "admin.profile.pauseRulesHint": "仅适用于该员工的规则:它们会替换相同“从分钟”的公司规则。没有个人规则时适用公司阶梯。",
77
76
  "report.csv": "原始数据(CSV)",