198 files
This commit is contained in:
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Název (nepovinné)",
|
||||
"doc_open": "Otevřít",
|
||||
"doc_delete_confirm": "Smazat „{name}“?",
|
||||
"doc_too_large": "Soubor je příliš velký (max. 25 MB).",
|
||||
"doc_too_large": "Soubor je příliš velký (max. 100 MB).",
|
||||
"doc_upload_failed": "Nahrání selhalo.",
|
||||
"docs_archive_too_large": "Archiv je příliš velký (max. {max}).",
|
||||
"docs_archive_no_manifest": "Tento ZIP neobsahuje manifest.json, takže obnovení neví, ke kterému dokumentu soubor patří. Při opětovném zabalení ponechte manifest.json vedle složek.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Odebrat",
|
||||
"doc_deduped": "Již uloženo jinde — sdíleno, bez dalšího místa.",
|
||||
"doc_dup_in_object": "Tento soubor je již připojen k tomuto objektu.",
|
||||
"doc_link_invalid": "Povoleny jsou pouze odkazy http/https.",
|
||||
"doc_link_not_allowed": "Tento odkaz není povolen: odkazy, které spouštějí skripty nebo otevírají místní soubory (javascript:, data:, file: …), jsou odmítnuty.",
|
||||
"doc_cat_manual": "Návod",
|
||||
"doc_cat_warranty": "Záruka",
|
||||
"doc_cat_invoice": "Faktura",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Množství k doplnění (balení)",
|
||||
"part_package_hint": "Kupuje se po baleních, spotřebovává po jednotkách: zásoba, spotřeba na úkol a hranice objednání počítají jednotky; množství k doplnění a cena platí za balení.",
|
||||
"part_auto_buy": "Úkol nákupu při nízké zásobě",
|
||||
"part_reuse": "Po použití",
|
||||
"part_reuse_none": "Spotřebován",
|
||||
"part_reuse_charge": "Nabito",
|
||||
"part_reuse_sharpen": "Nabroušeno",
|
||||
"part_reuse_clean": "Vyčištěno",
|
||||
"part_reuse_dry": "Vysušeno",
|
||||
"part_reuse_refill": "Doplněno",
|
||||
"part_reuse_restore": "Obnoveno",
|
||||
"part_waiting_charge": "{count} k nabití",
|
||||
"part_waiting_sharpen": "{count} k nabroušení",
|
||||
"part_waiting_clean": "{count} k vyčištění",
|
||||
"part_waiting_dry": "{count} k vysušení",
|
||||
"part_waiting_refill": "{count} k doplnění",
|
||||
"part_waiting_restore": "{count} k obnovení",
|
||||
"part_restoring": "Použité, zatím nepřipravené",
|
||||
"part_ready_again_hint": "Všechny použité jsou opět připravené",
|
||||
"part_reuse_hint": "Použitý kus nezmizí: čeká, až bude znovu připravený, a dál se počítá jako vlastněný, takže se znovu nekupuje.",
|
||||
"part_restock": "Upravit zásobu",
|
||||
"parts_used_by": "Používá",
|
||||
"restock_quantity_label": "Zakoupené množství",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Řadit podle názvu",
|
||||
"battery_fleet_sort_urgency": "Řadit podle naléhavosti",
|
||||
"battery_fleet_mark_recharged": "Označit jako nabitou",
|
||||
"battery_fleet_charging": "Náhradní akumulátory",
|
||||
"battery_fleet_ready": "{count} připraveno",
|
||||
"battery_fleet_sparkline_hint": "Stav baterie za posledních 30 dní — tečkovaně: projekce k prahu vybití",
|
||||
"battery_fleet_filter_type": "Zobrazit pouze tento typ baterie",
|
||||
"battery_fleet_record_replacement": "Stav poskočil kolem {date} — zaznamenat tuto výměnu do Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Titel (valgfri)",
|
||||
"doc_open": "Åbn",
|
||||
"doc_delete_confirm": "Slet \"{name}\"?",
|
||||
"doc_too_large": "Filen er for stor (maks. 25 MB).",
|
||||
"doc_too_large": "Filen er for stor (maks. 100 MB).",
|
||||
"doc_upload_failed": "Upload mislykkedes.",
|
||||
"docs_archive_too_large": "Arkivet er for stort (maks. {max}).",
|
||||
"docs_archive_no_manifest": "Denne ZIP har ingen manifest.json, så gendannelsen ved ikke, hvilket dokument en fil hører til. Lad manifest.json ligge ved siden af mapperne, når du zipper igen.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Fjern",
|
||||
"doc_deduped": "Allerede gemt et andet sted — delt, ingen ekstra plads.",
|
||||
"doc_dup_in_object": "Denne fil er allerede vedhæftet dette objekt.",
|
||||
"doc_link_invalid": "Kun http/https-links er tilladt.",
|
||||
"doc_link_not_allowed": "Dette link er ikke tilladt: links, der kører scripts eller åbner lokale filer (javascript:, data:, file: …), afvises.",
|
||||
"doc_cat_manual": "Vejledning",
|
||||
"doc_cat_warranty": "Garanti",
|
||||
"doc_cat_invoice": "Faktura",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Genopfyldningsmængde (pakninger)",
|
||||
"part_package_hint": "Købes i pakninger, bruges i enheden: lager, forbrug pr. opgave og genbestillingsgrænse tæller enheder; genopfyldningsmængde og pris gælder pr. pakning.",
|
||||
"part_auto_buy": "Købsopgave ved lav beholdning",
|
||||
"part_reuse": "Efter brug",
|
||||
"part_reuse_none": "Brugt op",
|
||||
"part_reuse_charge": "Opladet",
|
||||
"part_reuse_sharpen": "Slebet",
|
||||
"part_reuse_clean": "Rengjort",
|
||||
"part_reuse_dry": "Tørret",
|
||||
"part_reuse_refill": "Genopfyldt",
|
||||
"part_reuse_restore": "Istandsat",
|
||||
"part_waiting_charge": "{count} skal oplades",
|
||||
"part_waiting_sharpen": "{count} skal slibes",
|
||||
"part_waiting_clean": "{count} skal rengøres",
|
||||
"part_waiting_dry": "{count} skal tørres",
|
||||
"part_waiting_refill": "{count} skal genopfyldes",
|
||||
"part_waiting_restore": "{count} skal istandsættes",
|
||||
"part_restoring": "Brugte, ikke klar endnu",
|
||||
"part_ready_again_hint": "Alle brugte er klar igen",
|
||||
"part_reuse_hint": "En brugt er ikke væk: den venter, til den er klar igen, og tæller stadig som ejet, så den bliver ikke købt igen.",
|
||||
"part_restock": "Justér lager",
|
||||
"parts_used_by": "Bruges af",
|
||||
"restock_quantity_label": "Købt mængde",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Sortér efter navn",
|
||||
"battery_fleet_sort_urgency": "Sortér efter hastende grad",
|
||||
"battery_fleet_mark_recharged": "Markér som genopladet",
|
||||
"battery_fleet_charging": "Genopladelige reserver",
|
||||
"battery_fleet_ready": "{count} klar",
|
||||
"battery_fleet_sparkline_hint": "Batteriniveau de seneste 30 dage — stiplet: fremskrivning ned til lav-tærsklen",
|
||||
"battery_fleet_filter_type": "Vis kun denne batteritype",
|
||||
"battery_fleet_record_replacement": "Niveauet sprang omkring {date} — registrér denne udskiftning i Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Titel (optional)",
|
||||
"doc_open": "Öffnen",
|
||||
"doc_delete_confirm": "„{name}“ löschen?",
|
||||
"doc_too_large": "Datei ist zu groß (max. 25 MB).",
|
||||
"doc_too_large": "Datei ist zu groß (max. 100 MB).",
|
||||
"doc_upload_failed": "Upload fehlgeschlagen.",
|
||||
"docs_archive_too_large": "Das Archiv ist zu groß (max. {max}).",
|
||||
"docs_archive_no_manifest": "Dieses ZIP enthält keine manifest.json, daher weiß die Wiederherstellung nicht, zu welchem Dokument eine Datei gehört. Lass die manifest.json beim erneuten Zippen neben den Ordnern liegen.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Entfernen",
|
||||
"doc_deduped": "Bereits anderswo gespeichert — geteilt, kein zusätzlicher Speicher.",
|
||||
"doc_dup_in_object": "Diese Datei ist bereits an diesem Objekt angehängt.",
|
||||
"doc_link_invalid": "Nur http/https-Links sind erlaubt.",
|
||||
"doc_link_not_allowed": "Dieser Link ist nicht erlaubt: Links, die Skripte ausführen oder lokale Dateien öffnen (javascript:, data:, file: …), werden abgelehnt.",
|
||||
"doc_cat_manual": "Anleitung",
|
||||
"doc_cat_warranty": "Garantie",
|
||||
"doc_cat_invoice": "Rechnung",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Nachkaufmenge (Packungen)",
|
||||
"part_package_hint": "Gekauft in Packungen, verbraucht in der Einheit: Bestand, Verbrauch pro Aufgabe und Nachbestellgrenze zählen Einheiten; Nachkaufmenge und Preis gelten pro Packung.",
|
||||
"part_auto_buy": "Kauf-Task bei Niedrigbestand",
|
||||
"part_reuse": "Nach Gebrauch",
|
||||
"part_reuse_none": "Verbraucht",
|
||||
"part_reuse_charge": "Geladen",
|
||||
"part_reuse_sharpen": "Geschärft",
|
||||
"part_reuse_clean": "Gereinigt",
|
||||
"part_reuse_dry": "Getrocknet",
|
||||
"part_reuse_refill": "Nachgefüllt",
|
||||
"part_reuse_restore": "Aufbereitet",
|
||||
"part_waiting_charge": "{count} zu laden",
|
||||
"part_waiting_sharpen": "{count} zu schärfen",
|
||||
"part_waiting_clean": "{count} zu reinigen",
|
||||
"part_waiting_dry": "{count} zu trocknen",
|
||||
"part_waiting_refill": "{count} nachzufüllen",
|
||||
"part_waiting_restore": "{count} aufzubereiten",
|
||||
"part_restoring": "Gebraucht, noch nicht bereit",
|
||||
"part_ready_again_hint": "Alle gebrauchten sind wieder bereit",
|
||||
"part_reuse_hint": "Ein gebrauchtes ist nicht weg: Es wartet, bis es wieder bereit ist, und zählt weiter zum Bestand, wird also nicht neu gekauft.",
|
||||
"part_restock": "Bestand anpassen",
|
||||
"parts_used_by": "Verwendet von",
|
||||
"restock_quantity_label": "Gekaufte Menge",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Nach Name sortieren",
|
||||
"battery_fleet_sort_urgency": "Nach Dringlichkeit sortieren",
|
||||
"battery_fleet_mark_recharged": "Als aufgeladen markieren",
|
||||
"battery_fleet_charging": "Akku-Vorrat",
|
||||
"battery_fleet_ready": "{count} bereit",
|
||||
"battery_fleet_sparkline_hint": "Batteriestand der letzten 30 Tage — gepunktet: Prognose bis zur Low-Schwelle",
|
||||
"battery_fleet_filter_type": "Nur diesen Batterietyp anzeigen",
|
||||
"battery_fleet_record_replacement": "Der Batteriestand ist um den {date} gesprungen — diesen Wechsel in Battery Notes nachtragen",
|
||||
|
||||
@@ -895,7 +895,7 @@
|
||||
"doc_link_title": "Title (optional)",
|
||||
"doc_open": "Open",
|
||||
"doc_delete_confirm": "Delete \"{name}\"?",
|
||||
"doc_too_large": "File is too large (max 25 MB).",
|
||||
"doc_too_large": "File is too large (max 100 MB).",
|
||||
"doc_upload_failed": "Upload failed.",
|
||||
"docs_archive_too_large": "The archive is too large (max {max}).",
|
||||
"docs_archive_no_manifest": "This ZIP has no manifest.json, so the restore cannot tell which document a file belongs to. Keep manifest.json next to the folders when zipping again.",
|
||||
@@ -910,7 +910,7 @@
|
||||
"remove": "Remove",
|
||||
"doc_deduped": "Already stored elsewhere — shared, no extra space used.",
|
||||
"doc_dup_in_object": "This file is already attached to this object.",
|
||||
"doc_link_invalid": "Only http/https links are allowed.",
|
||||
"doc_link_not_allowed": "This link is not allowed: links that run scripts or open local files (javascript:, data:, file: …) are refused.",
|
||||
"doc_cat_manual": "Manual",
|
||||
"doc_cat_warranty": "Warranty",
|
||||
"doc_cat_invoice": "Invoice",
|
||||
@@ -1085,6 +1085,23 @@
|
||||
"part_restock_packages": "Restock amount (packages)",
|
||||
"part_package_hint": "Bought in packages, used in the unit: stock, the amount a task uses and the reorder threshold count units; the restock amount and the price are per package.",
|
||||
"part_auto_buy": "Auto-create buy task when low",
|
||||
"part_reuse": "After use",
|
||||
"part_reuse_none": "Used up",
|
||||
"part_reuse_charge": "Charged",
|
||||
"part_reuse_sharpen": "Sharpened",
|
||||
"part_reuse_clean": "Cleaned",
|
||||
"part_reuse_dry": "Dried",
|
||||
"part_reuse_refill": "Refilled",
|
||||
"part_reuse_restore": "Restored",
|
||||
"part_waiting_charge": "{count} to charge",
|
||||
"part_waiting_sharpen": "{count} to sharpen",
|
||||
"part_waiting_clean": "{count} to clean",
|
||||
"part_waiting_dry": "{count} to dry",
|
||||
"part_waiting_refill": "{count} to refill",
|
||||
"part_waiting_restore": "{count} to restore",
|
||||
"part_restoring": "Used, not ready yet",
|
||||
"part_ready_again_hint": "All used ones are ready again",
|
||||
"part_reuse_hint": "A used one is not gone: it waits until it is ready again and still counts as owned, so it is not bought again.",
|
||||
"part_restock": "Adjust stock",
|
||||
"parts_used_by": "Used by",
|
||||
"restock_quantity_label": "Quantity bought",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Sort by name",
|
||||
"battery_fleet_sort_urgency": "Sort by urgency",
|
||||
"battery_fleet_mark_recharged": "Mark as recharged",
|
||||
"battery_fleet_charging": "Rechargeable spares",
|
||||
"battery_fleet_ready": "{count} ready",
|
||||
"battery_fleet_sparkline_hint": "Battery level over the last 30 days — dotted: projected until the low threshold",
|
||||
"battery_fleet_filter_type": "Show only this battery type",
|
||||
"battery_fleet_record_replacement": "The level jumped around {date} — record this replacement in Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Título (opcional)",
|
||||
"doc_open": "Abrir",
|
||||
"doc_delete_confirm": "¿Eliminar «{name}»?",
|
||||
"doc_too_large": "El archivo es demasiado grande (máx. 25 MB).",
|
||||
"doc_too_large": "El archivo es demasiado grande (máx. 100 MB).",
|
||||
"doc_upload_failed": "Error al subir.",
|
||||
"docs_archive_too_large": "El archivo comprimido es demasiado grande (máx. {max}).",
|
||||
"docs_archive_no_manifest": "Este ZIP no contiene manifest.json, así que la restauración no sabe a qué documento pertenece cada archivo. Deja manifest.json junto a las carpetas al volver a comprimir.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Quitar",
|
||||
"doc_deduped": "Ya almacenado en otro lugar — compartido, sin espacio adicional.",
|
||||
"doc_dup_in_object": "Este archivo ya está adjunto a este objeto.",
|
||||
"doc_link_invalid": "Solo se permiten enlaces http/https.",
|
||||
"doc_link_not_allowed": "Este enlace no está permitido: se rechazan los enlaces que ejecutan scripts o abren archivos locales (javascript:, data:, file: …).",
|
||||
"doc_cat_manual": "Manual",
|
||||
"doc_cat_warranty": "Garantía",
|
||||
"doc_cat_invoice": "Factura",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Cantidad de reposición (envases)",
|
||||
"part_package_hint": "Se compra por envases y se usa por unidades: el stock, el consumo por tarea y el umbral de pedido cuentan unidades; la cantidad de reposición y el precio son por envase.",
|
||||
"part_auto_buy": "Crear tarea de compra si bajo",
|
||||
"part_reuse": "Tras el uso",
|
||||
"part_reuse_none": "Consumido",
|
||||
"part_reuse_charge": "Recargado",
|
||||
"part_reuse_sharpen": "Afilado",
|
||||
"part_reuse_clean": "Limpiado",
|
||||
"part_reuse_dry": "Secado",
|
||||
"part_reuse_refill": "Rellenado",
|
||||
"part_reuse_restore": "Restaurado",
|
||||
"part_waiting_charge": "{count} por recargar",
|
||||
"part_waiting_sharpen": "{count} por afilar",
|
||||
"part_waiting_clean": "{count} por limpiar",
|
||||
"part_waiting_dry": "{count} por secar",
|
||||
"part_waiting_refill": "{count} por rellenar",
|
||||
"part_waiting_restore": "{count} por restaurar",
|
||||
"part_restoring": "Usados, aún no listos",
|
||||
"part_ready_again_hint": "Todos los usados vuelven a estar listos",
|
||||
"part_reuse_hint": "Una pieza usada no se pierde: espera hasta estar lista de nuevo y sigue contando como propia, así que no se vuelve a comprar.",
|
||||
"part_restock": "Ajustar existencias",
|
||||
"parts_used_by": "Usado por",
|
||||
"restock_quantity_label": "Cantidad comprada",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Ordenar por nombre",
|
||||
"battery_fleet_sort_urgency": "Ordenar por urgencia",
|
||||
"battery_fleet_mark_recharged": "Marcar como recargada",
|
||||
"battery_fleet_charging": "Repuestos recargables",
|
||||
"battery_fleet_ready": "{count} listas",
|
||||
"battery_fleet_sparkline_hint": "Nivel de batería de los últimos 30 días — punteado: proyección hasta el umbral bajo",
|
||||
"battery_fleet_filter_type": "Mostrar solo este tipo de pila",
|
||||
"battery_fleet_record_replacement": "El nivel dio un salto hacia el {date} — registrar esta sustitución en Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Otsikko (valinnainen)",
|
||||
"doc_open": "Avaa",
|
||||
"doc_delete_confirm": "Poistetaanko \"{name}\"?",
|
||||
"doc_too_large": "Tiedosto on liian suuri (enint. 25 Mt).",
|
||||
"doc_too_large": "Tiedosto on liian suuri (enint. 100 Mt).",
|
||||
"doc_upload_failed": "Lataus epäonnistui.",
|
||||
"docs_archive_too_large": "Arkisto on liian suuri (enintään {max}).",
|
||||
"docs_archive_no_manifest": "Tässä ZIP-tiedostossa ei ole manifest.json-tiedostoa, joten palautus ei tiedä, mihin asiakirjaan tiedosto kuuluu. Pidä manifest.json kansioiden vieressä, kun pakkaat uudelleen.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Poista",
|
||||
"doc_deduped": "Jo tallennettu muualle — jaettu, ei lisätilaa.",
|
||||
"doc_dup_in_object": "Tämä tiedosto on jo liitetty tähän kohteeseen.",
|
||||
"doc_link_invalid": "Vain http/https-linkit ovat sallittuja.",
|
||||
"doc_link_not_allowed": "Tämä linkki ei ole sallittu: linkit, jotka suorittavat skriptejä tai avaavat paikallisia tiedostoja (javascript:, data:, file: …), hylätään.",
|
||||
"doc_cat_manual": "Käyttöohje",
|
||||
"doc_cat_warranty": "Takuu",
|
||||
"doc_cat_invoice": "Lasku",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Täydennysmäärä (pakkausta)",
|
||||
"part_package_hint": "Ostetaan pakkauksina, kulutetaan yksikköinä: varasto, tehtävän kulutus ja tilausraja lasketaan yksikköinä; täydennysmäärä ja hinta ovat pakkauskohtaisia.",
|
||||
"part_auto_buy": "Ostotehtävä kun vähissä",
|
||||
"part_reuse": "Käytön jälkeen",
|
||||
"part_reuse_none": "Kulutettu",
|
||||
"part_reuse_charge": "Ladattu",
|
||||
"part_reuse_sharpen": "Teroitettu",
|
||||
"part_reuse_clean": "Puhdistettu",
|
||||
"part_reuse_dry": "Kuivattu",
|
||||
"part_reuse_refill": "Täytetty",
|
||||
"part_reuse_restore": "Kunnostettu",
|
||||
"part_waiting_charge": "{count} ladattavana",
|
||||
"part_waiting_sharpen": "{count} teroitettavana",
|
||||
"part_waiting_clean": "{count} puhdistettavana",
|
||||
"part_waiting_dry": "{count} kuivattavana",
|
||||
"part_waiting_refill": "{count} täytettävänä",
|
||||
"part_waiting_restore": "{count} kunnostettavana",
|
||||
"part_restoring": "Käytetyt, ei vielä valmiina",
|
||||
"part_ready_again_hint": "Kaikki käytetyt ovat taas valmiina",
|
||||
"part_reuse_hint": "Käytetty ei katoa: se odottaa, kunnes se on taas valmiina, ja lasketaan yhä omistetuksi, joten sitä ei osteta uudelleen.",
|
||||
"part_restock": "Muuta varastoa",
|
||||
"parts_used_by": "Käyttäjät",
|
||||
"restock_quantity_label": "Ostettu määrä",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Lajittele nimen mukaan",
|
||||
"battery_fleet_sort_urgency": "Lajittele kiireellisyyden mukaan",
|
||||
"battery_fleet_mark_recharged": "Merkitse ladatuksi",
|
||||
"battery_fleet_charging": "Ladattavat varaosat",
|
||||
"battery_fleet_ready": "{count} valmiina",
|
||||
"battery_fleet_sparkline_hint": "Akun varaustaso viimeisten 30 päivän ajalta — pisteviiva: ennuste alarajaan asti",
|
||||
"battery_fleet_filter_type": "Näytä vain tämä paristotyyppi",
|
||||
"battery_fleet_record_replacement": "Varaustaso hyppäsi noin {date} — kirjaa tämä vaihto Battery Notesiin",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Titre (facultatif)",
|
||||
"doc_open": "Ouvrir",
|
||||
"doc_delete_confirm": "Supprimer « {name} » ?",
|
||||
"doc_too_large": "Fichier trop volumineux (max. 25 Mo).",
|
||||
"doc_too_large": "Fichier trop volumineux (max. 100 Mo).",
|
||||
"doc_upload_failed": "Échec du téléversement.",
|
||||
"docs_archive_too_large": "Archive trop volumineuse (max. {max}).",
|
||||
"docs_archive_no_manifest": "Ce ZIP ne contient pas de manifest.json : la restauration ne peut pas savoir à quel document appartient un fichier. Gardez manifest.json à côté des dossiers lorsque vous recompressez.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Retirer",
|
||||
"doc_deduped": "Déjà stocké ailleurs — partagé, aucun espace supplémentaire.",
|
||||
"doc_dup_in_object": "Ce fichier est déjà attaché à cet objet.",
|
||||
"doc_link_invalid": "Seuls les liens http/https sont autorisés.",
|
||||
"doc_link_not_allowed": "Ce lien n'est pas autorisé : les liens qui exécutent des scripts ou ouvrent des fichiers locaux (javascript:, data:, file: …) sont refusés.",
|
||||
"doc_cat_manual": "Manuel",
|
||||
"doc_cat_warranty": "Garantie",
|
||||
"doc_cat_invoice": "Facture",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Quantité de réapprovisionnement (conditionnements)",
|
||||
"part_package_hint": "Acheté par conditionnement, utilisé à l'unité : le stock, la quantité utilisée par tâche et le seuil de réapprovisionnement comptent des unités ; la quantité de réapprovisionnement et le prix sont par conditionnement.",
|
||||
"part_auto_buy": "Tâche d'achat auto si bas",
|
||||
"part_reuse": "Après usage",
|
||||
"part_reuse_none": "Consommé",
|
||||
"part_reuse_charge": "Rechargé",
|
||||
"part_reuse_sharpen": "Affûté",
|
||||
"part_reuse_clean": "Nettoyé",
|
||||
"part_reuse_dry": "Séché",
|
||||
"part_reuse_refill": "Rempli",
|
||||
"part_reuse_restore": "Remis en état",
|
||||
"part_waiting_charge": "{count} à recharger",
|
||||
"part_waiting_sharpen": "{count} à affûter",
|
||||
"part_waiting_clean": "{count} à nettoyer",
|
||||
"part_waiting_dry": "{count} à sécher",
|
||||
"part_waiting_refill": "{count} à remplir",
|
||||
"part_waiting_restore": "{count} à remettre en état",
|
||||
"part_restoring": "Utilisés, pas encore prêts",
|
||||
"part_ready_again_hint": "Tous les usagés sont de nouveau prêts",
|
||||
"part_reuse_hint": "Un exemplaire utilisé n'est pas perdu : il attend d'être de nouveau prêt et compte toujours comme possédé, il n'est donc pas racheté.",
|
||||
"part_restock": "Ajuster le stock",
|
||||
"parts_used_by": "Utilisé par",
|
||||
"restock_quantity_label": "Quantité achetée",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Trier par nom",
|
||||
"battery_fleet_sort_urgency": "Trier par urgence",
|
||||
"battery_fleet_mark_recharged": "Marquer comme rechargée",
|
||||
"battery_fleet_charging": "Piles rechargeables de réserve",
|
||||
"battery_fleet_ready": "{count} prêtes",
|
||||
"battery_fleet_sparkline_hint": "Niveau de batterie des 30 derniers jours — pointillé : projection jusqu'au seuil bas",
|
||||
"battery_fleet_filter_type": "Afficher uniquement ce type de pile",
|
||||
"battery_fleet_record_replacement": "Le niveau a bondi vers le {date} — enregistrer ce remplacement dans Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "शीर्षक (वैकल्पिक)",
|
||||
"doc_open": "खोलें",
|
||||
"doc_delete_confirm": "\"{name}\" हटाएँ?",
|
||||
"doc_too_large": "फ़ाइल बहुत बड़ी है (अधिकतम 25 MB)।",
|
||||
"doc_too_large": "फ़ाइल बहुत बड़ी है (अधिकतम 100 MB)।",
|
||||
"doc_upload_failed": "अपलोड विफल रहा।",
|
||||
"docs_archive_too_large": "आर्काइव बहुत बड़ा है (अधिकतम {max})।",
|
||||
"docs_archive_no_manifest": "इस ZIP में manifest.json नहीं है, इसलिए पुनर्स्थापना यह नहीं जान सकती कि कोई फ़ाइल किस दस्तावेज़ की है। दोबारा ज़िप करते समय manifest.json को फ़ोल्डरों के साथ रखें।",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "हटाएँ",
|
||||
"doc_deduped": "पहले से कहीं और संग्रहीत — साझा, कोई अतिरिक्त स्थान नहीं।",
|
||||
"doc_dup_in_object": "यह फ़ाइल पहले से इस ऑब्जेक्ट से जुड़ी है।",
|
||||
"doc_link_invalid": "केवल http/https लिंक की अनुमति है।",
|
||||
"doc_link_not_allowed": "यह लिंक अनुमत नहीं है: स्क्रिप्ट चलाने वाले या स्थानीय फ़ाइलें खोलने वाले लिंक (javascript:, data:, file: …) अस्वीकार किए जाते हैं।",
|
||||
"doc_cat_manual": "मैनुअल",
|
||||
"doc_cat_warranty": "वारंटी",
|
||||
"doc_cat_invoice": "चालान",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "दोबारा भरने की मात्रा (पैकेट)",
|
||||
"part_package_hint": "पैकेट में खरीदा, इकाई में इस्तेमाल: स्टॉक, हर काम की खपत और दोबारा मंगाने की सीमा इकाइयों में गिनी जाती हैं; दोबारा भरने की मात्रा और कीमत प्रति पैकेट हैं।",
|
||||
"part_auto_buy": "कम होने पर खरीद कार्य",
|
||||
"part_reuse": "उपयोग के बाद",
|
||||
"part_reuse_none": "खत्म",
|
||||
"part_reuse_charge": "चार्ज किया गया",
|
||||
"part_reuse_sharpen": "धार लगाई गई",
|
||||
"part_reuse_clean": "साफ किया गया",
|
||||
"part_reuse_dry": "सुखाया गया",
|
||||
"part_reuse_refill": "फिर से भरा गया",
|
||||
"part_reuse_restore": "फिर से तैयार",
|
||||
"part_waiting_charge": "{count} चार्ज करने हैं",
|
||||
"part_waiting_sharpen": "{count} पर धार लगानी है",
|
||||
"part_waiting_clean": "{count} साफ करने हैं",
|
||||
"part_waiting_dry": "{count} सुखाने हैं",
|
||||
"part_waiting_refill": "{count} फिर से भरने हैं",
|
||||
"part_waiting_restore": "{count} फिर से तैयार करने हैं",
|
||||
"part_restoring": "इस्तेमाल हुए, अभी तैयार नहीं",
|
||||
"part_ready_again_hint": "सभी इस्तेमाल हुए फिर से तैयार हैं",
|
||||
"part_reuse_hint": "इस्तेमाल किया हुआ खत्म नहीं होता: यह फिर से तैयार होने तक इंतज़ार करता है और आपके पास गिना जाता है, इसलिए दोबारा नहीं खरीदा जाता।",
|
||||
"part_restock": "स्टॉक समायोजित करें",
|
||||
"parts_used_by": "द्वारा उपयोग",
|
||||
"restock_quantity_label": "खरीदी गई मात्रा",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "नाम के अनुसार क्रमबद्ध करें",
|
||||
"battery_fleet_sort_urgency": "तात्कालिकता के अनुसार क्रमबद्ध करें",
|
||||
"battery_fleet_mark_recharged": "रिचार्ज हो गई के रूप में चिह्नित करें",
|
||||
"battery_fleet_charging": "रिचार्जेबल अतिरिक्त",
|
||||
"battery_fleet_ready": "{count} तैयार",
|
||||
"battery_fleet_sparkline_hint": "पिछले 30 दिनों का बैटरी स्तर — बिंदीदार: लो थ्रेशोल्ड तक का अनुमान",
|
||||
"battery_fleet_filter_type": "केवल यही बैटरी प्रकार दिखाएँ",
|
||||
"battery_fleet_record_replacement": "स्तर लगभग {date} को उछला — इस बदलाव को Battery Notes में दर्ज करें",
|
||||
|
||||
@@ -895,7 +895,7 @@
|
||||
"doc_link_title": "Cím (opcionális)",
|
||||
"doc_open": "Megnyitás",
|
||||
"doc_delete_confirm": "Törli a(z) „{name}” elemet?",
|
||||
"doc_too_large": "A fájl túl nagy (max. 25 MB).",
|
||||
"doc_too_large": "A fájl túl nagy (max. 100 MB).",
|
||||
"doc_upload_failed": "A feltöltés nem sikerült.",
|
||||
"docs_archive_too_large": "Az archívum túl nagy (max. {max}).",
|
||||
"docs_archive_no_manifest": "Ebben a ZIP-ben nincs manifest.json, ezért a visszaállítás nem tudja, melyik dokumentumhoz tartozik egy fájl. Újratömörítéskor hagyd a manifest.json fájlt a mappák mellett.",
|
||||
@@ -910,7 +910,7 @@
|
||||
"remove": "Eltávolítás",
|
||||
"doc_deduped": "Már máshol is tárolva — megosztott, nem foglal extra helyet.",
|
||||
"doc_dup_in_object": "Ez a fájl már csatolva van ehhez az objektumhoz.",
|
||||
"doc_link_invalid": "Csak http/https hivatkozás engedélyezett.",
|
||||
"doc_link_not_allowed": "Ez a hivatkozás nem engedélyezett: a szkripteket futtató vagy helyi fájlokat megnyitó hivatkozásokat (javascript:, data:, file: …) elutasítjuk.",
|
||||
"doc_cat_manual": "Kézikönyv",
|
||||
"doc_cat_warranty": "Garancia",
|
||||
"doc_cat_invoice": "Számla",
|
||||
@@ -1085,6 +1085,23 @@
|
||||
"part_restock_packages": "Utántöltési mennyiség (kiszerelés)",
|
||||
"part_package_hint": "Kiszerelésben vásárolva, egységben felhasználva: a készlet, a feladatonkénti fogyás és az újrarendelési küszöb egységet számol; az utántöltési mennyiség és az ár kiszerelésenként értendő.",
|
||||
"part_auto_buy": "Vásárlási feladat automatikus létrehozása, ha kevés van",
|
||||
"part_reuse": "Használat után",
|
||||
"part_reuse_none": "Elhasználva",
|
||||
"part_reuse_charge": "Feltöltve",
|
||||
"part_reuse_sharpen": "Megélezve",
|
||||
"part_reuse_clean": "Megtisztítva",
|
||||
"part_reuse_dry": "Kiszárítva",
|
||||
"part_reuse_refill": "Utántöltve",
|
||||
"part_reuse_restore": "Felújítva",
|
||||
"part_waiting_charge": "{count} töltendő",
|
||||
"part_waiting_sharpen": "{count} élezendő",
|
||||
"part_waiting_clean": "{count} tisztítandó",
|
||||
"part_waiting_dry": "{count} szárítandó",
|
||||
"part_waiting_refill": "{count} utántöltendő",
|
||||
"part_waiting_restore": "{count} felújítandó",
|
||||
"part_restoring": "Használt, még nem kész",
|
||||
"part_ready_again_hint": "Az összes használt újra kész",
|
||||
"part_reuse_hint": "A használt darab nem vész el: megvárja, amíg újra kész, és továbbra is a készlethez számít, így nem kell újra megvenni.",
|
||||
"part_restock": "Készlet módosítása",
|
||||
"parts_used_by": "Használja",
|
||||
"restock_quantity_label": "Vásárolt mennyiség",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Rendezés név szerint",
|
||||
"battery_fleet_sort_urgency": "Rendezés sürgősség szerint",
|
||||
"battery_fleet_mark_recharged": "Megjelölés feltöltöttként",
|
||||
"battery_fleet_charging": "Tartalék akkuk",
|
||||
"battery_fleet_ready": "{count} kész",
|
||||
"battery_fleet_sparkline_hint": "Akkumulátorszint az elmúlt 30 napban — pontozott: előrejelzés az alacsony küszöbig",
|
||||
"battery_fleet_filter_type": "Csak ez az elemtípus megjelenítése",
|
||||
"battery_fleet_record_replacement": "A szint {date} körül megugrott — rögzítse ezt a cserét a Battery Notes-ban",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Titolo (facoltativo)",
|
||||
"doc_open": "Apri",
|
||||
"doc_delete_confirm": "Eliminare «{name}»?",
|
||||
"doc_too_large": "File troppo grande (max 25 MB).",
|
||||
"doc_too_large": "File troppo grande (max 100 MB).",
|
||||
"doc_upload_failed": "Caricamento non riuscito.",
|
||||
"docs_archive_too_large": "L'archivio è troppo grande (max {max}).",
|
||||
"docs_archive_no_manifest": "Questo ZIP non contiene manifest.json, quindi il ripristino non sa a quale documento appartiene un file. Lascia manifest.json accanto alle cartelle quando lo comprimi di nuovo.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Rimuovi",
|
||||
"doc_deduped": "Già archiviato altrove — condiviso, nessuno spazio aggiuntivo.",
|
||||
"doc_dup_in_object": "Questo file è già allegato a questo oggetto.",
|
||||
"doc_link_invalid": "Sono consentiti solo link http/https.",
|
||||
"doc_link_not_allowed": "Questo link non è consentito: i link che eseguono script o aprono file locali (javascript:, data:, file: …) vengono rifiutati.",
|
||||
"doc_cat_manual": "Manuale",
|
||||
"doc_cat_warranty": "Garanzia",
|
||||
"doc_cat_invoice": "Fattura",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Quantità di riordino (confezioni)",
|
||||
"part_package_hint": "Acquistato a confezioni, usato a unità: scorte, consumo per attività e soglia di riordino contano unità; quantità di riordino e prezzo sono per confezione.",
|
||||
"part_auto_buy": "Task d'acquisto se scarso",
|
||||
"part_reuse": "Dopo l'uso",
|
||||
"part_reuse_none": "Consumato",
|
||||
"part_reuse_charge": "Ricaricato",
|
||||
"part_reuse_sharpen": "Affilato",
|
||||
"part_reuse_clean": "Pulito",
|
||||
"part_reuse_dry": "Asciugato",
|
||||
"part_reuse_refill": "Riempito",
|
||||
"part_reuse_restore": "Ripristinato",
|
||||
"part_waiting_charge": "{count} da ricaricare",
|
||||
"part_waiting_sharpen": "{count} da affilare",
|
||||
"part_waiting_clean": "{count} da pulire",
|
||||
"part_waiting_dry": "{count} da asciugare",
|
||||
"part_waiting_refill": "{count} da riempire",
|
||||
"part_waiting_restore": "{count} da ripristinare",
|
||||
"part_restoring": "Usati, non ancora pronti",
|
||||
"part_ready_again_hint": "Tutti quelli usati sono di nuovo pronti",
|
||||
"part_reuse_hint": "Un pezzo usato non è perso: aspetta di essere di nuovo pronto e conta ancora come posseduto, quindi non viene ricomprato.",
|
||||
"part_restock": "Correggi scorta",
|
||||
"parts_used_by": "Usato da",
|
||||
"restock_quantity_label": "Quantità acquistata",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Ordina per nome",
|
||||
"battery_fleet_sort_urgency": "Ordina per urgenza",
|
||||
"battery_fleet_mark_recharged": "Segna come ricaricata",
|
||||
"battery_fleet_charging": "Ricambi ricaricabili",
|
||||
"battery_fleet_ready": "{count} pronte",
|
||||
"battery_fleet_sparkline_hint": "Livello batteria degli ultimi 30 giorni — tratteggiato: proiezione fino alla soglia di batteria scarica",
|
||||
"battery_fleet_filter_type": "Mostra solo questo tipo di batteria",
|
||||
"battery_fleet_record_replacement": "Il livello è balzato intorno al {date} — registra questa sostituzione in Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "タイトル(任意)",
|
||||
"doc_open": "開く",
|
||||
"doc_delete_confirm": "「{name}」を削除しますか?",
|
||||
"doc_too_large": "ファイルが大きすぎます(最大 25 MB)。",
|
||||
"doc_too_large": "ファイルが大きすぎます(最大 100 MB)。",
|
||||
"doc_upload_failed": "アップロードに失敗しました。",
|
||||
"docs_archive_too_large": "アーカイブが大きすぎます(最大 {max})。",
|
||||
"docs_archive_no_manifest": "この ZIP には manifest.json がないため、復元時にファイルがどのドキュメントのものか判断できません。再度圧縮するときは manifest.json をフォルダーと同じ場所に置いてください。",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "削除",
|
||||
"doc_deduped": "既に別の場所に保存済み — 共有され、追加容量はかかりません。",
|
||||
"doc_dup_in_object": "このファイルは既にこのオブジェクトに添付されています。",
|
||||
"doc_link_invalid": "http/https のリンクのみ許可されています。",
|
||||
"doc_link_not_allowed": "このリンクは使用できません。スクリプトを実行したりローカルファイルを開いたりするリンク(javascript:、data:、file: …)は拒否されます。",
|
||||
"doc_cat_manual": "取扱説明書",
|
||||
"doc_cat_warranty": "保証書",
|
||||
"doc_cat_invoice": "請求書",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "補充数(包装単位)",
|
||||
"part_package_hint": "包装単位で購入し、単位で使います。在庫、タスクごとの使用量、発注しきい値は単位で数え、補充数と価格は包装単位です。",
|
||||
"part_auto_buy": "在庫少で購入タスク",
|
||||
"part_reuse": "使用後",
|
||||
"part_reuse_none": "使い切り",
|
||||
"part_reuse_charge": "充電済み",
|
||||
"part_reuse_sharpen": "研ぎ済み",
|
||||
"part_reuse_clean": "清掃済み",
|
||||
"part_reuse_dry": "乾燥済み",
|
||||
"part_reuse_refill": "補充済み",
|
||||
"part_reuse_restore": "再生済み",
|
||||
"part_waiting_charge": "充電待ち {count}",
|
||||
"part_waiting_sharpen": "研ぎ待ち {count}",
|
||||
"part_waiting_clean": "清掃待ち {count}",
|
||||
"part_waiting_dry": "乾燥待ち {count}",
|
||||
"part_waiting_refill": "補充待ち {count}",
|
||||
"part_waiting_restore": "再生待ち {count}",
|
||||
"part_restoring": "使用済み・未準備",
|
||||
"part_ready_again_hint": "使用済みのものがすべて再び使えます",
|
||||
"part_reuse_hint": "使用済みのものはなくなりません。再び使えるようになるまで待機し、所有数に含まれるため、買い直しは不要です。",
|
||||
"part_restock": "在庫を調整",
|
||||
"parts_used_by": "使用タスク",
|
||||
"restock_quantity_label": "購入数量",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "名前順に並べ替え",
|
||||
"battery_fleet_sort_urgency": "緊急度順に並べ替え",
|
||||
"battery_fleet_mark_recharged": "充電済みにする",
|
||||
"battery_fleet_charging": "予備の充電池",
|
||||
"battery_fleet_ready": "準備済み {count}",
|
||||
"battery_fleet_sparkline_hint": "過去30日間のバッテリー残量——点線:低残量しきい値までの予測",
|
||||
"battery_fleet_filter_type": "この電池タイプのみ表示",
|
||||
"battery_fleet_record_replacement": "{date}頃に残量が急上昇——この交換をBattery Notesに記録する",
|
||||
|
||||
@@ -895,7 +895,7 @@
|
||||
"doc_link_title": "제목 (선택)",
|
||||
"doc_open": "열기",
|
||||
"doc_delete_confirm": "\"{name}\"을(를) 삭제할까요?",
|
||||
"doc_too_large": "파일이 너무 큽니다 (최대 25 MB).",
|
||||
"doc_too_large": "파일이 너무 큽니다 (최대 100 MB).",
|
||||
"doc_upload_failed": "업로드에 실패했습니다.",
|
||||
"docs_archive_too_large": "아카이브가 너무 큽니다(최대 {max}).",
|
||||
"docs_archive_no_manifest": "이 ZIP에는 manifest.json이 없어 복원 시 파일이 어느 문서에 속하는지 알 수 없습니다. 다시 압축할 때 manifest.json을 폴더 옆에 두세요.",
|
||||
@@ -910,7 +910,7 @@
|
||||
"remove": "제거",
|
||||
"doc_deduped": "이미 다른 곳에 저장됨 — 공유되어 추가 공간을 쓰지 않습니다.",
|
||||
"doc_dup_in_object": "이 파일은 이미 이 객체에 첨부되어 있습니다.",
|
||||
"doc_link_invalid": "http/https 링크만 허용됩니다.",
|
||||
"doc_link_not_allowed": "이 링크는 허용되지 않습니다. 스크립트를 실행하거나 로컬 파일을 여는 링크(javascript:, data:, file: …)는 거부됩니다.",
|
||||
"doc_cat_manual": "설명서",
|
||||
"doc_cat_warranty": "보증서",
|
||||
"doc_cat_invoice": "영수증",
|
||||
@@ -1085,6 +1085,23 @@
|
||||
"part_restock_packages": "보충 수량(포장)",
|
||||
"part_package_hint": "포장 단위로 사고 단위로 씁니다. 재고, 작업당 사용량, 재주문 기준은 단위로 세고, 보충 수량과 가격은 포장 기준입니다.",
|
||||
"part_auto_buy": "재고 부족 시 구매 작업 자동 생성",
|
||||
"part_reuse": "사용 후",
|
||||
"part_reuse_none": "소모됨",
|
||||
"part_reuse_charge": "충전됨",
|
||||
"part_reuse_sharpen": "연마됨",
|
||||
"part_reuse_clean": "세척됨",
|
||||
"part_reuse_dry": "건조됨",
|
||||
"part_reuse_refill": "리필됨",
|
||||
"part_reuse_restore": "복원됨",
|
||||
"part_waiting_charge": "충전 대기 {count}",
|
||||
"part_waiting_sharpen": "연마 대기 {count}",
|
||||
"part_waiting_clean": "세척 대기 {count}",
|
||||
"part_waiting_dry": "건조 대기 {count}",
|
||||
"part_waiting_refill": "리필 대기 {count}",
|
||||
"part_waiting_restore": "복원 대기 {count}",
|
||||
"part_restoring": "사용됨, 아직 준비 안 됨",
|
||||
"part_ready_again_hint": "사용한 것이 모두 다시 준비됨",
|
||||
"part_reuse_hint": "사용한 것은 없어지지 않습니다. 다시 준비될 때까지 대기하며 보유 수량에 계속 포함되므로 다시 구매하지 않습니다.",
|
||||
"part_restock": "재고 조정",
|
||||
"parts_used_by": "사용처",
|
||||
"restock_quantity_label": "구매 수량",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "이름순 정렬",
|
||||
"battery_fleet_sort_urgency": "긴급도순 정렬",
|
||||
"battery_fleet_mark_recharged": "충전 완료로 표시",
|
||||
"battery_fleet_charging": "예비 충전지",
|
||||
"battery_fleet_ready": "준비됨 {count}",
|
||||
"battery_fleet_sparkline_hint": "지난 30일간의 배터리 잔량 — 점선: 낮음 임계값까지의 예측",
|
||||
"battery_fleet_filter_type": "이 배터리 유형만 표시",
|
||||
"battery_fleet_record_replacement": "{date}쯤 잔량이 급상승했습니다 — 이 교체를 Battery Notes에 기록",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Tittel (valgfritt)",
|
||||
"doc_open": "Åpne",
|
||||
"doc_delete_confirm": "Slette \"{name}\"?",
|
||||
"doc_too_large": "Filen er for stor (maks. 25 MB).",
|
||||
"doc_too_large": "Filen er for stor (maks. 100 MB).",
|
||||
"doc_upload_failed": "Opplasting mislyktes.",
|
||||
"docs_archive_too_large": "Arkivet er for stort (maks. {max}).",
|
||||
"docs_archive_no_manifest": "Denne ZIP-filen har ingen manifest.json, så gjenopprettingen vet ikke hvilket dokument en fil hører til. La manifest.json ligge ved siden av mappene når du zipper på nytt.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Fjern",
|
||||
"doc_deduped": "Allerede lagret et annet sted — delt, ingen ekstra plass.",
|
||||
"doc_dup_in_object": "Denne filen er allerede knyttet til dette objektet.",
|
||||
"doc_link_invalid": "Kun http/https-lenker er tillatt.",
|
||||
"doc_link_not_allowed": "Denne lenken er ikke tillatt: lenker som kjører skript eller åpner lokale filer (javascript:, data:, file: …), avvises.",
|
||||
"doc_cat_manual": "Bruksanvisning",
|
||||
"doc_cat_warranty": "Garanti",
|
||||
"doc_cat_invoice": "Faktura",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Påfyllingsmengde (pakninger)",
|
||||
"part_package_hint": "Kjøpes i pakninger, brukes i enheten: lager, forbruk per oppgave og bestillingsgrense teller enheter; påfyllingsmengde og pris gjelder per pakning.",
|
||||
"part_auto_buy": "Kjøpsoppgave ved lavt lager",
|
||||
"part_reuse": "Etter bruk",
|
||||
"part_reuse_none": "Brukt opp",
|
||||
"part_reuse_charge": "Ladet",
|
||||
"part_reuse_sharpen": "Slipt",
|
||||
"part_reuse_clean": "Rengjort",
|
||||
"part_reuse_dry": "Tørket",
|
||||
"part_reuse_refill": "Etterfylt",
|
||||
"part_reuse_restore": "Satt i stand",
|
||||
"part_waiting_charge": "{count} skal lades",
|
||||
"part_waiting_sharpen": "{count} skal slipes",
|
||||
"part_waiting_clean": "{count} skal rengjøres",
|
||||
"part_waiting_dry": "{count} skal tørkes",
|
||||
"part_waiting_refill": "{count} skal etterfylles",
|
||||
"part_waiting_restore": "{count} skal settes i stand",
|
||||
"part_restoring": "Brukte, ikke klare ennå",
|
||||
"part_ready_again_hint": "Alle brukte er klare igjen",
|
||||
"part_reuse_hint": "En brukt er ikke borte: den venter til den er klar igjen og teller fortsatt som eid, så den kjøpes ikke på nytt.",
|
||||
"part_restock": "Juster lager",
|
||||
"parts_used_by": "Brukes av",
|
||||
"restock_quantity_label": "Kjøpt mengde",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Sorter etter navn",
|
||||
"battery_fleet_sort_urgency": "Sorter etter hastegrad",
|
||||
"battery_fleet_mark_recharged": "Merk som oppladet",
|
||||
"battery_fleet_charging": "Oppladbare reserver",
|
||||
"battery_fleet_ready": "{count} klare",
|
||||
"battery_fleet_sparkline_hint": "Batterinivå de siste 30 dagene — stiplet: fremskrevet ned til lavnivåterskelen",
|
||||
"battery_fleet_filter_type": "Vis bare denne batteritypen",
|
||||
"battery_fleet_record_replacement": "Nivået hoppet rundt {date} — registrer dette byttet i Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Titel (optioneel)",
|
||||
"doc_open": "Openen",
|
||||
"doc_delete_confirm": "\"{name}\" verwijderen?",
|
||||
"doc_too_large": "Bestand is te groot (max. 25 MB).",
|
||||
"doc_too_large": "Bestand is te groot (max. 100 MB).",
|
||||
"doc_upload_failed": "Uploaden mislukt.",
|
||||
"docs_archive_too_large": "Het archief is te groot (max. {max}).",
|
||||
"docs_archive_no_manifest": "Deze ZIP bevat geen manifest.json, dus het herstel weet niet bij welk document een bestand hoort. Laat manifest.json naast de mappen staan als je opnieuw zipt.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Weghalen",
|
||||
"doc_deduped": "Al elders opgeslagen — gedeeld, geen extra ruimte.",
|
||||
"doc_dup_in_object": "Dit bestand is al aan dit object gekoppeld.",
|
||||
"doc_link_invalid": "Alleen http/https-links zijn toegestaan.",
|
||||
"doc_link_not_allowed": "Deze link is niet toegestaan: links die scripts uitvoeren of lokale bestanden openen (javascript:, data:, file: …) worden geweigerd.",
|
||||
"doc_cat_manual": "Handleiding",
|
||||
"doc_cat_warranty": "Garantie",
|
||||
"doc_cat_invoice": "Factuur",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Bijvulhoeveelheid (verpakkingen)",
|
||||
"part_package_hint": "Gekocht per verpakking, gebruikt per eenheid: voorraad, verbruik per taak en bestelgrens tellen eenheden; bijvulhoeveelheid en prijs gelden per verpakking.",
|
||||
"part_auto_buy": "Kooptaak bij lage voorraad",
|
||||
"part_reuse": "Na gebruik",
|
||||
"part_reuse_none": "Verbruikt",
|
||||
"part_reuse_charge": "Opgeladen",
|
||||
"part_reuse_sharpen": "Geslepen",
|
||||
"part_reuse_clean": "Gereinigd",
|
||||
"part_reuse_dry": "Gedroogd",
|
||||
"part_reuse_refill": "Bijgevuld",
|
||||
"part_reuse_restore": "Opgeknapt",
|
||||
"part_waiting_charge": "{count} op te laden",
|
||||
"part_waiting_sharpen": "{count} te slijpen",
|
||||
"part_waiting_clean": "{count} te reinigen",
|
||||
"part_waiting_dry": "{count} te drogen",
|
||||
"part_waiting_refill": "{count} bij te vullen",
|
||||
"part_waiting_restore": "{count} op te knappen",
|
||||
"part_restoring": "Gebruikt, nog niet klaar",
|
||||
"part_ready_again_hint": "Alle gebruikte zijn weer klaar",
|
||||
"part_reuse_hint": "Een gebruikt exemplaar is niet weg: het wacht tot het weer klaar is en telt nog mee als bezit, dus het wordt niet opnieuw gekocht.",
|
||||
"part_restock": "Voorraad aanpassen",
|
||||
"parts_used_by": "Gebruikt door",
|
||||
"restock_quantity_label": "Gekochte hoeveelheid",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Sorteren op naam",
|
||||
"battery_fleet_sort_urgency": "Sorteren op urgentie",
|
||||
"battery_fleet_mark_recharged": "Markeren als opgeladen",
|
||||
"battery_fleet_charging": "Oplaadbare reserves",
|
||||
"battery_fleet_ready": "{count} klaar",
|
||||
"battery_fleet_sparkline_hint": "Batterijniveau van de afgelopen 30 dagen — gestippeld: prognose tot de lage drempel",
|
||||
"battery_fleet_filter_type": "Alleen dit batterijtype tonen",
|
||||
"battery_fleet_record_replacement": "Het niveau maakte rond {date} een sprong — deze vervanging vastleggen in Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Tytuł (opcjonalnie)",
|
||||
"doc_open": "Otwórz",
|
||||
"doc_delete_confirm": "Usunąć „{name}”?",
|
||||
"doc_too_large": "Plik jest za duży (maks. 25 MB).",
|
||||
"doc_too_large": "Plik jest za duży (maks. 100 MB).",
|
||||
"doc_upload_failed": "Przesyłanie nie powiodło się.",
|
||||
"docs_archive_too_large": "Archiwum jest za duże (maks. {max}).",
|
||||
"docs_archive_no_manifest": "Ten ZIP nie zawiera pliku manifest.json, więc przywracanie nie wie, do którego dokumentu należy plik. Przy ponownym pakowaniu zostaw manifest.json obok folderów.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Usuń",
|
||||
"doc_deduped": "Już zapisany gdzie indziej — współdzielony, bez dodatkowego miejsca.",
|
||||
"doc_dup_in_object": "Ten plik jest już dołączony do tego obiektu.",
|
||||
"doc_link_invalid": "Dozwolone są tylko linki http/https.",
|
||||
"doc_link_not_allowed": "Ten link jest niedozwolony: linki uruchamiające skrypty lub otwierające pliki lokalne (javascript:, data:, file: …) są odrzucane.",
|
||||
"doc_cat_manual": "Instrukcja",
|
||||
"doc_cat_warranty": "Gwarancja",
|
||||
"doc_cat_invoice": "Faktura",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Ilość uzupełnienia (opakowania)",
|
||||
"part_package_hint": "Kupowane w opakowaniach, zużywane w jednostkach: stan, zużycie na zadanie i próg zamówienia liczą jednostki; ilość uzupełnienia i cena dotyczą opakowania.",
|
||||
"part_auto_buy": "Zadanie zakupu przy niskim stanie",
|
||||
"part_reuse": "Po użyciu",
|
||||
"part_reuse_none": "Zużyty",
|
||||
"part_reuse_charge": "Naładowany",
|
||||
"part_reuse_sharpen": "Naostrzony",
|
||||
"part_reuse_clean": "Wyczyszczony",
|
||||
"part_reuse_dry": "Wysuszony",
|
||||
"part_reuse_refill": "Napełniony",
|
||||
"part_reuse_restore": "Odnowiony",
|
||||
"part_waiting_charge": "{count} do naładowania",
|
||||
"part_waiting_sharpen": "{count} do naostrzenia",
|
||||
"part_waiting_clean": "{count} do wyczyszczenia",
|
||||
"part_waiting_dry": "{count} do wysuszenia",
|
||||
"part_waiting_refill": "{count} do napełnienia",
|
||||
"part_waiting_restore": "{count} do odnowienia",
|
||||
"part_restoring": "Zużyte, jeszcze niegotowe",
|
||||
"part_ready_again_hint": "Wszystkie zużyte są znów gotowe",
|
||||
"part_reuse_hint": "Zużyta część nie przepada: czeka, aż znów będzie gotowa, i nadal liczy się jako posiadana, więc nie kupuje się jej ponownie.",
|
||||
"part_restock": "Koryguj stan",
|
||||
"parts_used_by": "Używane przez",
|
||||
"restock_quantity_label": "Kupiona ilość",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Sortuj według nazwy",
|
||||
"battery_fleet_sort_urgency": "Sortuj według pilności",
|
||||
"battery_fleet_mark_recharged": "Oznacz jako naładowaną",
|
||||
"battery_fleet_charging": "Zapasowe akumulatorki",
|
||||
"battery_fleet_ready": "{count} gotowe",
|
||||
"battery_fleet_sparkline_hint": "Poziom baterii z ostatnich 30 dni — kropkowana linia: prognoza do progu niskiego poziomu",
|
||||
"battery_fleet_filter_type": "Pokaż tylko ten typ baterii",
|
||||
"battery_fleet_record_replacement": "Poziom skoczył około {date} — zapisz tę wymianę w Battery Notes",
|
||||
|
||||
@@ -895,7 +895,7 @@
|
||||
"doc_link_title": "Título (opcional)",
|
||||
"doc_open": "Abrir",
|
||||
"doc_delete_confirm": "Excluir \"{name}\"?",
|
||||
"doc_too_large": "O arquivo é muito grande (máx. 25 MB).",
|
||||
"doc_too_large": "O arquivo é muito grande (máx. 100 MB).",
|
||||
"doc_upload_failed": "Falha no envio.",
|
||||
"docs_archive_too_large": "O arquivo é grande demais (máx. {max}).",
|
||||
"docs_archive_no_manifest": "Este ZIP não tem manifest.json, então a restauração não sabe a qual documento cada arquivo pertence. Mantenha o manifest.json junto às pastas ao compactar de novo.",
|
||||
@@ -910,7 +910,7 @@
|
||||
"remove": "Remover",
|
||||
"doc_deduped": "Já armazenado em outro lugar — compartilhado, sem uso de espaço extra.",
|
||||
"doc_dup_in_object": "Este arquivo já está anexado a este objeto.",
|
||||
"doc_link_invalid": "Apenas links http/https são permitidos.",
|
||||
"doc_link_not_allowed": "Este link não é permitido: links que executam scripts ou abrem arquivos locais (javascript:, data:, file: …) são recusados.",
|
||||
"doc_cat_manual": "Manual",
|
||||
"doc_cat_warranty": "Garantia",
|
||||
"doc_cat_invoice": "Nota fiscal",
|
||||
@@ -1085,6 +1085,23 @@
|
||||
"part_restock_packages": "Quantidade de reposição (embalagens)",
|
||||
"part_package_hint": "Comprado em embalagens, usado por unidade: estoque, consumo por tarefa e limite de reposição contam unidades; quantidade de reposição e preço são por embalagem.",
|
||||
"part_auto_buy": "Criar tarefa de compra automaticamente quando estiver baixo",
|
||||
"part_reuse": "Após o uso",
|
||||
"part_reuse_none": "Consumido",
|
||||
"part_reuse_charge": "Carregado",
|
||||
"part_reuse_sharpen": "Afiado",
|
||||
"part_reuse_clean": "Limpo",
|
||||
"part_reuse_dry": "Seco",
|
||||
"part_reuse_refill": "Reabastecido",
|
||||
"part_reuse_restore": "Restaurado",
|
||||
"part_waiting_charge": "{count} para carregar",
|
||||
"part_waiting_sharpen": "{count} para afiar",
|
||||
"part_waiting_clean": "{count} para limpar",
|
||||
"part_waiting_dry": "{count} para secar",
|
||||
"part_waiting_refill": "{count} para reabastecer",
|
||||
"part_waiting_restore": "{count} para restaurar",
|
||||
"part_restoring": "Usados, ainda não prontos",
|
||||
"part_ready_again_hint": "Todos os usados estão prontos de novo",
|
||||
"part_reuse_hint": "Uma peça usada não se perde: aguarda até ficar pronta de novo e continua contando como sua, então não é comprada de novo.",
|
||||
"part_restock": "Ajustar estoque",
|
||||
"parts_used_by": "Usado por",
|
||||
"restock_quantity_label": "Quantidade comprada",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Ordenar por nome",
|
||||
"battery_fleet_sort_urgency": "Ordenar por urgência",
|
||||
"battery_fleet_mark_recharged": "Marcar como recarregada",
|
||||
"battery_fleet_charging": "Reservas recarregáveis",
|
||||
"battery_fleet_ready": "{count} prontas",
|
||||
"battery_fleet_sparkline_hint": "Nível da bateria dos últimos 30 dias — pontilhado: projeção até o limite baixo",
|
||||
"battery_fleet_filter_type": "Mostrar apenas este tipo de pilha",
|
||||
"battery_fleet_record_replacement": "O nível deu um salto por volta de {date} — registrar esta substituição no Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Título (opcional)",
|
||||
"doc_open": "Abrir",
|
||||
"doc_delete_confirm": "Eliminar «{name}»?",
|
||||
"doc_too_large": "Ficheiro demasiado grande (máx. 25 MB).",
|
||||
"doc_too_large": "Ficheiro demasiado grande (máx. 100 MB).",
|
||||
"doc_upload_failed": "Falha no carregamento.",
|
||||
"docs_archive_too_large": "O arquivo é demasiado grande (máx. {max}).",
|
||||
"docs_archive_no_manifest": "Este ZIP não contém manifest.json, pelo que o restauro não sabe a que documento pertence cada ficheiro. Mantenha o manifest.json junto às pastas ao comprimir novamente.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Remover",
|
||||
"doc_deduped": "Já armazenado noutro local — partilhado, sem espaço extra.",
|
||||
"doc_dup_in_object": "Este ficheiro já está anexado a este objeto.",
|
||||
"doc_link_invalid": "Apenas ligações http/https são permitidas.",
|
||||
"doc_link_not_allowed": "Esta ligação não é permitida: ligações que executam scripts ou abrem ficheiros locais (javascript:, data:, file: …) são recusadas.",
|
||||
"doc_cat_manual": "Manual",
|
||||
"doc_cat_warranty": "Garantia",
|
||||
"doc_cat_invoice": "Fatura",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Quantidade de reposição (embalagens)",
|
||||
"part_package_hint": "Comprado em embalagens, usado à unidade: o stock, o consumo por tarefa e o limite de encomenda contam unidades; a quantidade de reposição e o preço são por embalagem.",
|
||||
"part_auto_buy": "Tarefa de compra se baixo",
|
||||
"part_reuse": "Após o uso",
|
||||
"part_reuse_none": "Consumido",
|
||||
"part_reuse_charge": "Carregado",
|
||||
"part_reuse_sharpen": "Afiado",
|
||||
"part_reuse_clean": "Limpo",
|
||||
"part_reuse_dry": "Seco",
|
||||
"part_reuse_refill": "Reabastecido",
|
||||
"part_reuse_restore": "Restaurado",
|
||||
"part_waiting_charge": "{count} por carregar",
|
||||
"part_waiting_sharpen": "{count} por afiar",
|
||||
"part_waiting_clean": "{count} por limpar",
|
||||
"part_waiting_dry": "{count} por secar",
|
||||
"part_waiting_refill": "{count} por reabastecer",
|
||||
"part_waiting_restore": "{count} por restaurar",
|
||||
"part_restoring": "Usados, ainda não prontos",
|
||||
"part_ready_again_hint": "Todos os usados estão prontos de novo",
|
||||
"part_reuse_hint": "Uma peça usada não se perde: aguarda até estar pronta de novo e continua a contar como sua, por isso não volta a ser comprada.",
|
||||
"part_restock": "Ajustar estoque",
|
||||
"parts_used_by": "Usado por",
|
||||
"restock_quantity_label": "Quantidade comprada",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Ordenar por nome",
|
||||
"battery_fleet_sort_urgency": "Ordenar por urgência",
|
||||
"battery_fleet_mark_recharged": "Marcar como recarregada",
|
||||
"battery_fleet_charging": "Sobressalentes recarregáveis",
|
||||
"battery_fleet_ready": "{count} prontas",
|
||||
"battery_fleet_sparkline_hint": "Nível da bateria dos últimos 30 dias — pontilhado: projeção até ao limiar baixo",
|
||||
"battery_fleet_filter_type": "Mostrar apenas este tipo de pilha",
|
||||
"battery_fleet_record_replacement": "O nível deu um salto por volta de {date} — registar esta substituição no Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Название (необязательно)",
|
||||
"doc_open": "Открыть",
|
||||
"doc_delete_confirm": "Удалить «{name}»?",
|
||||
"doc_too_large": "Файл слишком большой (макс. 25 МБ).",
|
||||
"doc_too_large": "Файл слишком большой (макс. 100 МБ).",
|
||||
"doc_upload_failed": "Не удалось загрузить.",
|
||||
"docs_archive_too_large": "Архив слишком большой (макс. {max}).",
|
||||
"docs_archive_no_manifest": "В этом ZIP нет manifest.json, поэтому при восстановлении неизвестно, к какому документу относится файл. При повторной упаковке оставляйте manifest.json рядом с папками.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Убрать",
|
||||
"doc_deduped": "Уже сохранён в другом месте — общий, без доп. места.",
|
||||
"doc_dup_in_object": "Этот файл уже прикреплён к этому объекту.",
|
||||
"doc_link_invalid": "Разрешены только ссылки http/https.",
|
||||
"doc_link_not_allowed": "Эта ссылка не разрешена: ссылки, которые запускают скрипты или открывают локальные файлы (javascript:, data:, file: …), отклоняются.",
|
||||
"doc_cat_manual": "Инструкция",
|
||||
"doc_cat_warranty": "Гарантия",
|
||||
"doc_cat_invoice": "Счёт",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Количество для пополнения (упаковок)",
|
||||
"part_package_hint": "Покупается упаковками, расходуется единицами: запас, расход на задачу и порог дозаказа считаются в единицах; количество для пополнения и цена — за упаковку.",
|
||||
"part_auto_buy": "Задача покупки при малом запасе",
|
||||
"part_reuse": "После использования",
|
||||
"part_reuse_none": "Израсходован",
|
||||
"part_reuse_charge": "Заряжен",
|
||||
"part_reuse_sharpen": "Заточен",
|
||||
"part_reuse_clean": "Очищен",
|
||||
"part_reuse_dry": "Высушен",
|
||||
"part_reuse_refill": "Заправлен",
|
||||
"part_reuse_restore": "Восстановлен",
|
||||
"part_waiting_charge": "{count} на зарядку",
|
||||
"part_waiting_sharpen": "{count} на заточку",
|
||||
"part_waiting_clean": "{count} на очистку",
|
||||
"part_waiting_dry": "{count} на сушку",
|
||||
"part_waiting_refill": "{count} на заправку",
|
||||
"part_waiting_restore": "{count} на восстановление",
|
||||
"part_restoring": "Использованы, ещё не готовы",
|
||||
"part_ready_again_hint": "Все использованные снова готовы",
|
||||
"part_reuse_hint": "Использованная деталь не пропадает: она ждёт, пока снова будет готова, и по-прежнему считается в наличии, поэтому её не покупают заново.",
|
||||
"part_restock": "Изменить запас",
|
||||
"parts_used_by": "Используется",
|
||||
"restock_quantity_label": "Куплено, шт.",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Сортировать по имени",
|
||||
"battery_fleet_sort_urgency": "Сортировать по срочности",
|
||||
"battery_fleet_mark_recharged": "Отметить как заряженную",
|
||||
"battery_fleet_charging": "Запасные аккумуляторы",
|
||||
"battery_fleet_ready": "{count} готово",
|
||||
"battery_fleet_sparkline_hint": "Уровень заряда за последние 30 дней — пунктир: прогноз до порога разряда",
|
||||
"battery_fleet_filter_type": "Показать только этот тип батарей",
|
||||
"battery_fleet_record_replacement": "Уровень резко вырос примерно {date} — записать эту замену в Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Titel (valfritt)",
|
||||
"doc_open": "Öppna",
|
||||
"doc_delete_confirm": "Ta bort \"{name}\"?",
|
||||
"doc_too_large": "Filen är för stor (max 25 MB).",
|
||||
"doc_too_large": "Filen är för stor (max 100 MB).",
|
||||
"doc_upload_failed": "Uppladdningen misslyckades.",
|
||||
"docs_archive_too_large": "Arkivet är för stort (max {max}).",
|
||||
"docs_archive_no_manifest": "Den här ZIP-filen saknar manifest.json, så återställningen vet inte vilket dokument en fil hör till. Låt manifest.json ligga bredvid mapparna när du zippar igen.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Ta bort",
|
||||
"doc_deduped": "Redan lagrad någon annanstans — delad, inget extra utrymme.",
|
||||
"doc_dup_in_object": "Den här filen är redan kopplad till detta objekt.",
|
||||
"doc_link_invalid": "Endast http/https-länkar tillåts.",
|
||||
"doc_link_not_allowed": "Den här länken är inte tillåten: länkar som kör skript eller öppnar lokala filer (javascript:, data:, file: …) avvisas.",
|
||||
"doc_cat_manual": "Manual",
|
||||
"doc_cat_warranty": "Garanti",
|
||||
"doc_cat_invoice": "Faktura",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Påfyllningsmängd (förpackningar)",
|
||||
"part_package_hint": "Köps i förpackningar, används i enheten: lager, åtgång per uppgift och beställningsgräns räknar enheter; påfyllningsmängd och pris gäller per förpackning.",
|
||||
"part_auto_buy": "Köpuppgift vid lågt lager",
|
||||
"part_reuse": "Efter användning",
|
||||
"part_reuse_none": "Förbrukad",
|
||||
"part_reuse_charge": "Laddad",
|
||||
"part_reuse_sharpen": "Slipad",
|
||||
"part_reuse_clean": "Rengjord",
|
||||
"part_reuse_dry": "Torkad",
|
||||
"part_reuse_refill": "Påfylld",
|
||||
"part_reuse_restore": "Återställd",
|
||||
"part_waiting_charge": "{count} att ladda",
|
||||
"part_waiting_sharpen": "{count} att slipa",
|
||||
"part_waiting_clean": "{count} att rengöra",
|
||||
"part_waiting_dry": "{count} att torka",
|
||||
"part_waiting_refill": "{count} att fylla på",
|
||||
"part_waiting_restore": "{count} att återställa",
|
||||
"part_restoring": "Använda, inte klara än",
|
||||
"part_ready_again_hint": "Alla använda är klara igen",
|
||||
"part_reuse_hint": "En använd är inte borta: den väntar tills den är klar igen och räknas fortfarande som ägd, så den köps inte igen.",
|
||||
"part_restock": "Justera lager",
|
||||
"parts_used_by": "Används av",
|
||||
"restock_quantity_label": "Köpt antal",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Sortera efter namn",
|
||||
"battery_fleet_sort_urgency": "Sortera efter angelägenhet",
|
||||
"battery_fleet_mark_recharged": "Markera som uppladdad",
|
||||
"battery_fleet_charging": "Laddbara reserver",
|
||||
"battery_fleet_ready": "{count} klara",
|
||||
"battery_fleet_sparkline_hint": "Batterinivå de senaste 30 dagarna — prickad: prognos ner till lågnivåtröskeln",
|
||||
"battery_fleet_filter_type": "Visa endast denna batterityp",
|
||||
"battery_fleet_record_replacement": "Nivån hoppade omkring {date} — registrera detta byte i Battery Notes",
|
||||
|
||||
@@ -895,7 +895,7 @@
|
||||
"doc_link_title": "Başlık (isteğe bağlı)",
|
||||
"doc_open": "Aç",
|
||||
"doc_delete_confirm": "\"{name}\" silinsin mi?",
|
||||
"doc_too_large": "Dosya çok büyük (en fazla 25 MB).",
|
||||
"doc_too_large": "Dosya çok büyük (en fazla 100 MB).",
|
||||
"doc_upload_failed": "Yükleme başarısız oldu.",
|
||||
"docs_archive_too_large": "Arşiv çok büyük (en fazla {max}).",
|
||||
"docs_archive_no_manifest": "Bu ZIP'te manifest.json yok, bu yüzden geri yükleme bir dosyanın hangi belgeye ait olduğunu bilemez. Yeniden sıkıştırırken manifest.json dosyasını klasörlerin yanında tutun.",
|
||||
@@ -910,7 +910,7 @@
|
||||
"remove": "Kaldır",
|
||||
"doc_deduped": "Zaten başka bir yerde saklı — paylaşıldı, ek alan kullanılmadı.",
|
||||
"doc_dup_in_object": "Bu dosya zaten bu nesneye ekli.",
|
||||
"doc_link_invalid": "Yalnızca http/https bağlantılarına izin verilir.",
|
||||
"doc_link_not_allowed": "Bu bağlantıya izin verilmiyor: betik çalıştıran veya yerel dosyaları açan bağlantılar (javascript:, data:, file: …) reddedilir.",
|
||||
"doc_cat_manual": "Kılavuz",
|
||||
"doc_cat_warranty": "Garanti",
|
||||
"doc_cat_invoice": "Fatura",
|
||||
@@ -1085,6 +1085,23 @@
|
||||
"part_restock_packages": "Yeniden stok miktarı (paket)",
|
||||
"part_package_hint": "Paketle alınır, birimle kullanılır: stok, görev başına kullanım ve yeniden sipariş eşiği birim sayar; yeniden stok miktarı ve fiyat paket başınadır.",
|
||||
"part_auto_buy": "Azaldığında otomatik satın alma görevi oluştur",
|
||||
"part_reuse": "Kullanımdan sonra",
|
||||
"part_reuse_none": "Tükendi",
|
||||
"part_reuse_charge": "Şarj edildi",
|
||||
"part_reuse_sharpen": "Bilendi",
|
||||
"part_reuse_clean": "Temizlendi",
|
||||
"part_reuse_dry": "Kurutuldu",
|
||||
"part_reuse_refill": "Yeniden dolduruldu",
|
||||
"part_reuse_restore": "Yenilendi",
|
||||
"part_waiting_charge": "{count} şarj edilecek",
|
||||
"part_waiting_sharpen": "{count} bilenecek",
|
||||
"part_waiting_clean": "{count} temizlenecek",
|
||||
"part_waiting_dry": "{count} kurutulacak",
|
||||
"part_waiting_refill": "{count} doldurulacak",
|
||||
"part_waiting_restore": "{count} yenilenecek",
|
||||
"part_restoring": "Kullanılmış, henüz hazır değil",
|
||||
"part_ready_again_hint": "Kullanılanların hepsi yeniden hazır",
|
||||
"part_reuse_hint": "Kullanılan parça kaybolmaz: yeniden hazır olana kadar bekler ve hâlâ sahip olunan sayılır, bu yüzden yeniden satın alınmaz.",
|
||||
"part_restock": "Stoku ayarla",
|
||||
"parts_used_by": "Kullanan",
|
||||
"restock_quantity_label": "Satın alınan miktar",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Ada göre sırala",
|
||||
"battery_fleet_sort_urgency": "Aciliyete göre sırala",
|
||||
"battery_fleet_mark_recharged": "Şarj edildi olarak işaretle",
|
||||
"battery_fleet_charging": "Yedek şarjlı piller",
|
||||
"battery_fleet_ready": "{count} hazır",
|
||||
"battery_fleet_sparkline_hint": "Son 30 günün pil seviyesi — noktalı: düşük eşiğe kadar projeksiyon",
|
||||
"battery_fleet_filter_type": "Yalnızca bu pil türünü göster",
|
||||
"battery_fleet_record_replacement": "Seviye {date} civarında sıçradı — bu değişimi Battery Notes'a kaydet",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "Назва (необов'язково)",
|
||||
"doc_open": "Відкрити",
|
||||
"doc_delete_confirm": "Видалити «{name}»?",
|
||||
"doc_too_large": "Файл завеликий (макс. 25 МБ).",
|
||||
"doc_too_large": "Файл завеликий (макс. 100 МБ).",
|
||||
"doc_upload_failed": "Не вдалося завантажити.",
|
||||
"docs_archive_too_large": "Архів завеликий (макс. {max}).",
|
||||
"docs_archive_no_manifest": "У цьому ZIP немає manifest.json, тому під час відновлення невідомо, до якого документа належить файл. Під час повторного пакування залишайте manifest.json поруч із теками.",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "Прибрати",
|
||||
"doc_deduped": "Уже збережено в іншому місці — спільний, без додаткового місця.",
|
||||
"doc_dup_in_object": "Цей файл уже прикріплено до цього об'єкта.",
|
||||
"doc_link_invalid": "Дозволені лише посилання http/https.",
|
||||
"doc_link_not_allowed": "Це посилання не дозволено: посилання, які запускають скрипти або відкривають локальні файли (javascript:, data:, file: …), відхиляються.",
|
||||
"doc_cat_manual": "Інструкція",
|
||||
"doc_cat_warranty": "Гарантія",
|
||||
"doc_cat_invoice": "Рахунок",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "Кількість для поповнення (упаковок)",
|
||||
"part_package_hint": "Купується упаковками, витрачається одиницями: запас, витрата на завдання та поріг дозамовлення рахуються в одиницях; кількість для поповнення та ціна — за упаковку.",
|
||||
"part_auto_buy": "Завдання купівлі при малому запасі",
|
||||
"part_reuse": "Після використання",
|
||||
"part_reuse_none": "Витрачено",
|
||||
"part_reuse_charge": "Заряджено",
|
||||
"part_reuse_sharpen": "Заточено",
|
||||
"part_reuse_clean": "Очищено",
|
||||
"part_reuse_dry": "Висушено",
|
||||
"part_reuse_refill": "Заправлено",
|
||||
"part_reuse_restore": "Відновлено",
|
||||
"part_waiting_charge": "{count} на заряджання",
|
||||
"part_waiting_sharpen": "{count} на заточування",
|
||||
"part_waiting_clean": "{count} на очищення",
|
||||
"part_waiting_dry": "{count} на сушіння",
|
||||
"part_waiting_refill": "{count} на заправку",
|
||||
"part_waiting_restore": "{count} на відновлення",
|
||||
"part_restoring": "Використані, ще не готові",
|
||||
"part_ready_again_hint": "Усі використані знову готові",
|
||||
"part_reuse_hint": "Використана деталь не зникає: вона чекає, доки знову буде готова, і далі рахується як наявна, тож її не купують знову.",
|
||||
"part_restock": "Змінити запас",
|
||||
"parts_used_by": "Використовується",
|
||||
"restock_quantity_label": "Куплена кількість",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "Сортувати за назвою",
|
||||
"battery_fleet_sort_urgency": "Сортувати за терміновістю",
|
||||
"battery_fleet_mark_recharged": "Позначити як заряджену",
|
||||
"battery_fleet_charging": "Запасні акумулятори",
|
||||
"battery_fleet_ready": "{count} готово",
|
||||
"battery_fleet_sparkline_hint": "Рівень заряду за останні 30 днів — пунктир: прогноз до порогу розряду",
|
||||
"battery_fleet_filter_type": "Показати лише цей тип батарей",
|
||||
"battery_fleet_record_replacement": "Рівень різко зріс приблизно {date} — записати цю заміну в Battery Notes",
|
||||
|
||||
@@ -888,7 +888,7 @@
|
||||
"doc_link_title": "标题(可选)",
|
||||
"doc_open": "打开",
|
||||
"doc_delete_confirm": "删除“{name}”?",
|
||||
"doc_too_large": "文件过大(最大 25 MB)。",
|
||||
"doc_too_large": "文件过大(最大 100 MB)。",
|
||||
"doc_upload_failed": "上传失败。",
|
||||
"docs_archive_too_large": "压缩包过大(最大 {max})。",
|
||||
"docs_archive_no_manifest": "此 ZIP 中没有 manifest.json,因此恢复时无法判断文件属于哪个文档。重新压缩时请把 manifest.json 放在各文件夹旁边。",
|
||||
@@ -903,7 +903,7 @@
|
||||
"remove": "移除",
|
||||
"doc_deduped": "已在别处存储——共享,不占用额外空间。",
|
||||
"doc_dup_in_object": "此文件已附加到该对象。",
|
||||
"doc_link_invalid": "仅允许 http/https 链接。",
|
||||
"doc_link_not_allowed": "不允许使用此链接:运行脚本或打开本地文件的链接(javascript:、data:、file: …)会被拒绝。",
|
||||
"doc_cat_manual": "手册",
|
||||
"doc_cat_warranty": "保修",
|
||||
"doc_cat_invoice": "发票",
|
||||
@@ -1078,6 +1078,23 @@
|
||||
"part_restock_packages": "补货数量(包)",
|
||||
"part_package_hint": "按包购买、按单位使用:库存、每项任务用量和补货阈值都按单位计;补货数量和价格按包计。",
|
||||
"part_auto_buy": "库存低时自动建购买任务",
|
||||
"part_reuse": "使用后",
|
||||
"part_reuse_none": "已用完",
|
||||
"part_reuse_charge": "已充电",
|
||||
"part_reuse_sharpen": "已磨利",
|
||||
"part_reuse_clean": "已清洁",
|
||||
"part_reuse_dry": "已烘干",
|
||||
"part_reuse_refill": "已重新灌装",
|
||||
"part_reuse_restore": "已修复",
|
||||
"part_waiting_charge": "{count} 个待充电",
|
||||
"part_waiting_sharpen": "{count} 个待磨利",
|
||||
"part_waiting_clean": "{count} 个待清洁",
|
||||
"part_waiting_dry": "{count} 个待烘干",
|
||||
"part_waiting_refill": "{count} 个待灌装",
|
||||
"part_waiting_restore": "{count} 个待修复",
|
||||
"part_restoring": "已用,尚未就绪",
|
||||
"part_ready_again_hint": "所有已用的都已重新就绪",
|
||||
"part_reuse_hint": "用过的不会消失:它会等待重新就绪,并仍计入已有数量,因此不会被再次购买。",
|
||||
"part_restock": "调整库存",
|
||||
"parts_used_by": "使用于",
|
||||
"restock_quantity_label": "购买数量",
|
||||
@@ -1255,6 +1272,8 @@
|
||||
"battery_fleet_sort_name": "按名称排序",
|
||||
"battery_fleet_sort_urgency": "按紧急程度排序",
|
||||
"battery_fleet_mark_recharged": "标记为已充电",
|
||||
"battery_fleet_charging": "备用充电电池",
|
||||
"battery_fleet_ready": "{count} 个就绪",
|
||||
"battery_fleet_sparkline_hint": "过去 30 天的电池电量——虚线:外推至低电量阈值",
|
||||
"battery_fleet_filter_type": "仅显示此电池类型",
|
||||
"battery_fleet_record_replacement": "电量在 {date} 前后跳升——将此次更换记录到 Battery Notes",
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{e as y}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-QKL6SKIH.js";import{d as m}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-M2CMCNR4.js";import{a as h}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-5USKKRUA.js";import{H as b,a as o,b as u,c as n,f as l,h as v,l as g,m as d,s as r,u as f}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";var a=class extends v{constructor(){super(...arguments);this._open=!1;this._loading=!1;this._adopting=!1;this._error="";this._sensors=[];this._selected=new Set;this._objectNames={};this._objects=[];this._covered={};this._users=[];this._responsible="";this._forMinutes="0";this._localeReady=!1;this._userService=null;this._toggle=t=>{let i=new Set(this._selected);i.has(t)?i.delete(t):i.add(t),this._selected=i};this._toggleAll=()=>{this._selected.size===this._sensors.length?this._selected=new Set:this._selected=new Set(this._sensors.map(t=>t.entity_id))};this._adopt=async()=>{if(this._selected.size===0||this._adopting)return;this._error="";let t=this._sensors.filter(e=>this._selected.has(e.entity_id)).map(e=>({entity_id:e.entity_id,name:e.name,entry_id:this._existingEntryFor(e)??void 0,object_name:this._effectiveName(e),device_id:e.device_id??void 0,part_id:e.suggested_part_id??void 0,responsible_user_id:this._responsible||void 0,for_minutes:parseInt(this._forMinutes,10)>0?parseInt(this._forMinutes,10):void 0})),i=await h(this,{type:"maintenance_supporter/problem_sensors/adopt",selections:t},{busy:e=>{this._adopting=e},onError:e=>{this._error=e}});i!==void 0&&(this.dispatchEvent(new CustomEvent("problem-sensors-adopted",{bubbles:!0,composed:!0,detail:i})),this._open=!1)}}get _lang(){return b(this.hass)}updated(t){t.has("hass")&&this.hass&&!this._localeReady&&(this._localeReady=!0,f(this._lang).then(()=>this.requestUpdate()))}async open(){this._open=!0,this._loading=!0,this._error="",this._sensors=[],this._selected=new Set,this._objectNames={},this._responsible="",this._forMinutes="0",this._userService?this._userService.updateHass(this.hass):this._userService=new y(this.hass);let[t,i,e]=await Promise.all([h(this,{type:"maintenance_supporter/problem_sensors/discover"},{onError:s=>{this._error=s}}),this._userService.getUsers().catch(()=>[]),this.hass.connection.sendMessagePromise({type:"maintenance_supporter/objects"}).catch(()=>({objects:[]}))]);this._loading=!1,t!==void 0&&(this._objects=(e?.objects||[]).filter(s=>!s.object.archived_at).map(s=>({entry_id:s.entry_id,name:s.object.name,tasks:(s.tasks||[]).length})),this._sensors=t?.sensors||[],this._covered=Object.fromEntries(this._sensors.map(s=>[s.entity_id,s.covered_by??null])),this._selected=new Set(this._sensors.filter(s=>!s.covered_by).map(s=>s.entity_id)),this._users=i)}_defaultName(t){return t.suggested_entry_id?t.suggested_object_name:t.candidate?.name??t.suggested_object_name}_effectiveName(t){return(this._objectNames[t.entity_id]??"").trim()||this._defaultName(t)}_existingEntryFor(t){let i=this._effectiveName(t),e=t.suggested_entry_id||t.target_entry_id||null;if(i===this._defaultName(t)&&e)return e;let s=this._objects.find(c=>c.name.trim().toLowerCase()===i.toLowerCase());return s?s.entry_id:null}_schedulePreview(){clearTimeout(this._previewTimer),this._previewTimer=setTimeout(()=>{this._preview()},350)}async _preview(){let t=this._sensors.map(e=>({entity_id:e.entity_id,name:e.name,entry_id:this._existingEntryFor(e)})),i=await h(this,{type:"maintenance_supporter/problem_sensors/preview",selections:t},{onError:()=>{}});i?.covered&&(this._covered={...this._covered,...i.covered})}_summary(t){let i=new Map;for(let e of this._sensors){if(!this._selected.has(e.entity_id))continue;let s=this._existingEntryFor(e),c=this._effectiveName(e),_=s??`new:${c.toLowerCase()}`,p=i.get(_)??{name:c,entry:s,adding:0};p.adding+=1,i.set(_,p)}return i.size===0?l:n`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{e as y}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-KFG47RQD.js";import{d as m}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-UKOBV3FF.js";import{a as h}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-RIYW54TU.js";import{H as b,a as o,b as u,c as n,f as l,h as v,l as g,m as d,s as r,u as f}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";var a=class extends v{constructor(){super(...arguments);this._open=!1;this._loading=!1;this._adopting=!1;this._error="";this._sensors=[];this._selected=new Set;this._objectNames={};this._objects=[];this._covered={};this._users=[];this._responsible="";this._forMinutes="0";this._localeReady=!1;this._userService=null;this._toggle=t=>{let i=new Set(this._selected);i.has(t)?i.delete(t):i.add(t),this._selected=i};this._toggleAll=()=>{this._selected.size===this._sensors.length?this._selected=new Set:this._selected=new Set(this._sensors.map(t=>t.entity_id))};this._adopt=async()=>{if(this._selected.size===0||this._adopting)return;this._error="";let t=this._sensors.filter(e=>this._selected.has(e.entity_id)).map(e=>({entity_id:e.entity_id,name:e.name,entry_id:this._existingEntryFor(e)??void 0,object_name:this._effectiveName(e),device_id:e.device_id??void 0,part_id:e.suggested_part_id??void 0,responsible_user_id:this._responsible||void 0,for_minutes:parseInt(this._forMinutes,10)>0?parseInt(this._forMinutes,10):void 0})),i=await h(this,{type:"maintenance_supporter/problem_sensors/adopt",selections:t},{busy:e=>{this._adopting=e},onError:e=>{this._error=e}});i!==void 0&&(this.dispatchEvent(new CustomEvent("problem-sensors-adopted",{bubbles:!0,composed:!0,detail:i})),this._open=!1)}}get _lang(){return b(this.hass)}updated(t){t.has("hass")&&this.hass&&!this._localeReady&&(this._localeReady=!0,f(this._lang).then(()=>this.requestUpdate()))}async open(){this._open=!0,this._loading=!0,this._error="",this._sensors=[],this._selected=new Set,this._objectNames={},this._responsible="",this._forMinutes="0",this._userService?this._userService.updateHass(this.hass):this._userService=new y(this.hass);let[t,i,e]=await Promise.all([h(this,{type:"maintenance_supporter/problem_sensors/discover"},{onError:s=>{this._error=s}}),this._userService.getUsers().catch(()=>[]),this.hass.connection.sendMessagePromise({type:"maintenance_supporter/objects"}).catch(()=>({objects:[]}))]);this._loading=!1,t!==void 0&&(this._objects=(e?.objects||[]).filter(s=>!s.object.archived_at).map(s=>({entry_id:s.entry_id,name:s.object.name,tasks:(s.tasks||[]).length})),this._sensors=t?.sensors||[],this._covered=Object.fromEntries(this._sensors.map(s=>[s.entity_id,s.covered_by??null])),this._selected=new Set(this._sensors.filter(s=>!s.covered_by).map(s=>s.entity_id)),this._users=i)}_defaultName(t){return t.suggested_entry_id?t.suggested_object_name:t.candidate?.name??t.suggested_object_name}_effectiveName(t){return(this._objectNames[t.entity_id]??"").trim()||this._defaultName(t)}_existingEntryFor(t){let i=this._effectiveName(t),e=t.suggested_entry_id||t.target_entry_id||null;if(i===this._defaultName(t)&&e)return e;let s=this._objects.find(c=>c.name.trim().toLowerCase()===i.toLowerCase());return s?s.entry_id:null}_schedulePreview(){clearTimeout(this._previewTimer),this._previewTimer=setTimeout(()=>{this._preview()},350)}async _preview(){let t=this._sensors.map(e=>({entity_id:e.entity_id,name:e.name,entry_id:this._existingEntryFor(e)})),i=await h(this,{type:"maintenance_supporter/problem_sensors/preview",selections:t},{onError:()=>{}});i?.covered&&(this._covered={...this._covered,...i.covered})}_summary(t){let i=new Map;for(let e of this._sensors){if(!this._selected.has(e.entity_id))continue;let s=this._existingEntryFor(e),c=this._effectiveName(e),_=s??`new:${c.toLowerCase()}`,p=i.get(_)??{name:c,entry:s,adding:0};p.adding+=1,i.set(_,p)}return i.size===0?l:n`
|
||||
<div class="summary">
|
||||
<div class="summary-title">${r("adopt_summary_title",t)}</div>
|
||||
${[...i.values()].map(e=>{if(!e.entry)return n`<div class="summary-line new">
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as X}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-W3SEDH34.js";import{a as o}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-UO7KFJ6R.js";import{f as E,g as M,h as z,i as Q,j as U,k as Y,l as q,m as G,n as R,o as A,p as W}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZFJHBIVS.js";import{a as B}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-JFENKV7A.js";import{e as P,f as K}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-GN3YV45M.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-U7674FZW.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-Q7CGGH4O.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-PO272ATG.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-C6NCKN5O.js";import{B as S,H as F,K as g,L as v,O as N,P as I,U as w,W as T,a as $,c as p,f as y,h as H,l as k,m as j,n as C,q as D,s as a,u as L,y as O}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";function J(b,i,t,s){let l=b.entries.filter(e=>e.type==="completed").sort((e,n)=>e.ts-n.ts),d=`${b.from?t.date(b.from):"\u2026"} \u2013 ${b.to?t.date(b.to):"\u2026"}`,r=b.totals,h=[[i.completions,t.number(r.completions)],[i.totalCost,t.cost(r.totalCost)],[i.avgCost,r.avgCost!=null?t.cost(r.avgCost):i.none],[i.totalTime,r.totalDuration?t.duration(r.totalDuration):i.none]].map(([e,n])=>`<div class="kpi"><div class="k">${o(e)}</div><div class="v">${o(n)}</div></div>`).join(""),u=b.byObject.map(e=>`<tr>
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as X}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-VWOWFA6G.js";import{a as o}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-GH6PGWHU.js";import{f as E,g as M,h as z,i as Q,j as U,k as Y,l as q,m as G,n as R,o as A,p as W}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-7W4GNWDJ.js";import{a as B}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-DVPW5S27.js";import{e as P,f as K}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-XWO2WENS.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZXKKAVZ3.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-7SOUIRZ7.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-OGIYAEPJ.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-U4NJYI3P.js";import{B as S,H as F,K as g,L as v,O as N,P as I,U as w,W as T,a as $,c as p,f as y,h as H,l as k,m as j,n as C,q as D,s as a,u as L,y as O}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";function J(b,i,t,s){let l=b.entries.filter(e=>e.type==="completed").sort((e,n)=>e.ts-n.ts),d=`${b.from?t.date(b.from):"\u2026"} \u2013 ${b.to?t.date(b.to):"\u2026"}`,r=b.totals,h=[[i.completions,t.number(r.completions)],[i.totalCost,t.cost(r.totalCost)],[i.avgCost,r.avgCost!=null?t.cost(r.avgCost):i.none],[i.totalTime,r.totalDuration?t.duration(r.totalDuration):i.none]].map(([e,n])=>`<div class="kpi"><div class="k">${o(e)}</div><div class="v">${o(n)}</div></div>`).join(""),u=b.byObject.map(e=>`<tr>
|
||||
<td>${o(e.objectName)}</td>
|
||||
<td class="num">${o(t.number(e.completions))}</td>
|
||||
<td class="num">${o(t.cost(e.cost))}</td>
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as O}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-W3SEDH34.js";import{q as j,r as E,s as L,t as R,u as C}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZFJHBIVS.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-U7674FZW.js";import{a as _,b as S,c as A}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-HFUWDHSL.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-Q7CGGH4O.js";import{H as g,K as k,L as v,O as w,a as l,c as a,f as m,h as y,l as p,m as b,s as r,u as $,y as f}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";var q=[{key:"name",label:"area",num:!1},{key:"objects",label:"objects",num:!0},{key:"tasks",label:"tasks",num:!0},{key:"overdue",label:"overdue",num:!0},{key:"due_soon",label:"due_soon",num:!0},{key:"cost_year",label:"area_cost_year",num:!0},{key:"cost_total",label:"total_cost",num:!0},{key:"last",label:"last_performed",num:!1}],i=class extends y{constructor(){super(...arguments);this.objects=[];this.showArchived=!1;this.currencySymbol="";this._query="";this._sort=E(S(_.areaSort));this._histories=new O(this);this._localeReady=!1;this._memo=null}createRenderRoot(){return this}get _lang(){return g(this.hass)}willUpdate(t){if(super.willUpdate(t),t.has("objects")||t.has("showArchived")||t.has("hass")&&t.get("hass")===void 0){let o=this.objects.filter(s=>this.showArchived||!s.object.archived).flatMap(s=>s.tasks.map(n=>({entryId:s.entry_id,task:n})));this._histories.sync(this.hass,o)}}updated(t){super.updated(t),!this._localeReady&&this.hass&&(this._localeReady=!0,$(this._lang).then(()=>this.requestUpdate()))}_rows(t){let o=this._lang,s=[this.objects,this.showArchived,this._histories.version,this.hass?.areas,o,t];if(this._memo&&this._memo.deps.every((c,h)=>c===s[h]))return this._memo.rows;let n=j(this.objects,{showArchived:this.showArchived,areas:this.hass?.areas,noAreaLabel:r("no_area",o),year:t,historyOf:(c,h)=>this._histories.historyOf(c,h)});return this._memo={deps:s,rows:n},n}_setSort(t){this._sort=L(this._sort,t),A(_.areaSort,`${this._sort.key}:${this._sort.dir}`)}_open(t){this.dispatchEvent(new CustomEvent("open-area",{detail:{areaKey:t},bubbles:!0,composed:!0}))}_toggleArchived(){this.dispatchEvent(new CustomEvent("archived-toggle",{bubbles:!0,composed:!0}))}_headerLabel(t,o,s){return t==="area_cost_year"?r("area_cost_year",s).replace("{year}",String(o)):r(t,s)}render(){if(!this.hass)return m;let t=this._lang,o=Number(f().slice(0,4)),s=this.currencySymbol,n=this._rows(o),c=R(C(n,this._query),this._sort),h=this.objects.filter(e=>e.object.archived).length,d=e=>k(e,t);return a`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as O}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-VWOWFA6G.js";import{q as j,r as E,s as L,t as R,u as C}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-7W4GNWDJ.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZXKKAVZ3.js";import{a as _,b as S,c as A}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-Y6A3V724.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-7SOUIRZ7.js";import{H as g,K as k,L as v,O as w,a as l,c as a,f as m,h as y,l as p,m as b,s as r,u as $,y as f}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";var q=[{key:"name",label:"area",num:!1},{key:"objects",label:"objects",num:!0},{key:"tasks",label:"tasks",num:!0},{key:"overdue",label:"overdue",num:!0},{key:"due_soon",label:"due_soon",num:!0},{key:"cost_year",label:"area_cost_year",num:!0},{key:"cost_total",label:"total_cost",num:!0},{key:"last",label:"last_performed",num:!1}],i=class extends y{constructor(){super(...arguments);this.objects=[];this.showArchived=!1;this.currencySymbol="";this._query="";this._sort=E(S(_.areaSort));this._histories=new O(this);this._localeReady=!1;this._memo=null}createRenderRoot(){return this}get _lang(){return g(this.hass)}willUpdate(t){if(super.willUpdate(t),t.has("objects")||t.has("showArchived")||t.has("hass")&&t.get("hass")===void 0){let o=this.objects.filter(s=>this.showArchived||!s.object.archived).flatMap(s=>s.tasks.map(n=>({entryId:s.entry_id,task:n})));this._histories.sync(this.hass,o)}}updated(t){super.updated(t),!this._localeReady&&this.hass&&(this._localeReady=!0,$(this._lang).then(()=>this.requestUpdate()))}_rows(t){let o=this._lang,s=[this.objects,this.showArchived,this._histories.version,this.hass?.areas,o,t];if(this._memo&&this._memo.deps.every((c,h)=>c===s[h]))return this._memo.rows;let n=j(this.objects,{showArchived:this.showArchived,areas:this.hass?.areas,noAreaLabel:r("no_area",o),year:t,historyOf:(c,h)=>this._histories.historyOf(c,h)});return this._memo={deps:s,rows:n},n}_setSort(t){this._sort=L(this._sort,t),A(_.areaSort,`${this._sort.key}:${this._sort.dir}`)}_open(t){this.dispatchEvent(new CustomEvent("open-area",{detail:{areaKey:t},bubbles:!0,composed:!0}))}_toggleArchived(){this.dispatchEvent(new CustomEvent("archived-toggle",{bubbles:!0,composed:!0}))}_headerLabel(t,o,s){return t==="area_cost_year"?r("area_cost_year",s).replace("{year}",String(o)):r(t,s)}render(){if(!this.hass)return m;let t=this._lang,o=Number(f().slice(0,4)),s=this.currencySymbol,n=this._rows(o),c=R(C(n,this._query),this._sort),h=this.objects.filter(e=>e.object.archived).length,d=e=>k(e,t);return a`
|
||||
<div class="filter-bar area-filter-bar">
|
||||
<input
|
||||
type="search"
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import"/maintenance_supporter_panelfiles/panel-chunks/chunk-TX5O4PHL.js";import{H as u,a as n,b as _,c as o,f as p,h as c,l as g,m as a,s}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";var d=["round_robin","least_completed","random"],v=["low","normal","high"],m=365,i=class extends c{constructor(){super(...arguments);this._open=!1;this._mode="assign";this._count=0;this._users=[];this._present=[];this._assignKind="one";this._person="";this._pool=new Set;this._rotation=d[0];this._addText="";this._remove=new Set;this._setWarning=!1;this._warning=7;this._setPriority=!1;this._priority="normal";this._setMute=!1;this._mute=!1;this._resolve=null}get _lang(){return u(this.hass)}open(t,e,r){return this._resolve?.(null),this._mode=t,this._count=e.length,this._users=[...r].sort((l,h)=>l.name.localeCompare(h.name)),this._present=[...new Set(e.flatMap(l=>l.labels||[]))].sort((l,h)=>l.localeCompare(h)),this._assignKind="one",this._person="",this._pool=new Set,this._rotation=d[0],this._addText="",this._remove=new Set,this._setWarning=!1,this._warning=7,this._setPriority=!1,this._priority="normal",this._setMute=!1,this._mute=!1,this._open=!0,new Promise(l=>{this._resolve=l})}_finish(t){this._open=!1;let e=this._resolve;this._resolve=null,e?.(t)}changes(){if(this._mode==="assign"){if(this._assignKind==="one")return{responsible_user_id:this._person||null,assignee_pool:null,rotation_strategy:null};let e=this._users.map(r=>r.id).filter(r=>this._pool.has(r));return e.length<2?null:{assignee_pool:e,rotation_strategy:this._rotation,responsible_user_id:null}}if(this._mode==="labels"){let e=[...new Set(this._addText.split(",").map(l=>l.trim()).filter(Boolean))],r=[...this._remove];return e.length||r.length?{labels_add:e,labels_remove:r}:null}let t={};return this._setWarning&&(t.warning_days=this._warning),this._setPriority&&(t.priority=this._priority),this._setMute&&(t.notify_enabled=!this._mute),Object.keys(t).length?t:null}_toggle(t,e){let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r}_renderAssign(t){return o`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import"/maintenance_supporter_panelfiles/panel-chunks/chunk-I7RCCBTV.js";import{H as u,a as n,b as _,c as o,f as p,h as c,l as g,m as a,s}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";var d=["round_robin","least_completed","random"],v=["low","normal","high"],m=365,i=class extends c{constructor(){super(...arguments);this._open=!1;this._mode="assign";this._count=0;this._users=[];this._present=[];this._assignKind="one";this._person="";this._pool=new Set;this._rotation=d[0];this._addText="";this._remove=new Set;this._setWarning=!1;this._warning=7;this._setPriority=!1;this._priority="normal";this._setMute=!1;this._mute=!1;this._resolve=null}get _lang(){return u(this.hass)}open(t,e,r){return this._resolve?.(null),this._mode=t,this._count=e.length,this._users=[...r].sort((l,h)=>l.name.localeCompare(h.name)),this._present=[...new Set(e.flatMap(l=>l.labels||[]))].sort((l,h)=>l.localeCompare(h)),this._assignKind="one",this._person="",this._pool=new Set,this._rotation=d[0],this._addText="",this._remove=new Set,this._setWarning=!1,this._warning=7,this._setPriority=!1,this._priority="normal",this._setMute=!1,this._mute=!1,this._open=!0,new Promise(l=>{this._resolve=l})}_finish(t){this._open=!1;let e=this._resolve;this._resolve=null,e?.(t)}changes(){if(this._mode==="assign"){if(this._assignKind==="one")return{responsible_user_id:this._person||null,assignee_pool:null,rotation_strategy:null};let e=this._users.map(r=>r.id).filter(r=>this._pool.has(r));return e.length<2?null:{assignee_pool:e,rotation_strategy:this._rotation,responsible_user_id:null}}if(this._mode==="labels"){let e=[...new Set(this._addText.split(",").map(l=>l.trim()).filter(Boolean))],r=[...this._remove];return e.length||r.length?{labels_add:e,labels_remove:r}:null}let t={};return this._setWarning&&(t.warning_days=this._warning),this._setPriority&&(t.priority=this._priority),this._setMute&&(t.notify_enabled=!this._mute),Object.keys(t).length?t:null}_toggle(t,e){let r=new Set(t);return r.has(e)?r.delete(e):r.add(e),r}_renderAssign(t){return o`
|
||||
<div class="hint">${s("bulk_assign_hint",t)}</div>
|
||||
<label class="choice">
|
||||
<input type="radio" name="kind" .checked=${this._assignKind==="one"} @change=${()=>this._assignKind="one"} />
|
||||
+21
-4
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as q}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-C6NCKN5O.js";import{H as k,a,b as f,c as n,f as u,h as x,l as h,m as c,s as e}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";function d(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function _(r){return!r.startsWith("data:image/svg+xml,")&&!r.startsWith("data:image/png;base64,")?"":d(r)}function y(r){return r.replace(/[/\\:*?"<>|#%]+/g,"").replace(/\s+/g,"-").toLowerCase().substring(0,100)}var l=class extends x{constructor(){super(...arguments);this.lang="";this._open=!1;this._loading=!1;this._error="";this._viewResult=null;this._completeResult=null;this._quickResult=null;this._urlMode="companion";this._entryId="";this._taskId=null;this._objectName="";this._taskName="";this._generateSeq=0}get _dialogLang(){return this.lang||k(this.hass)}openForObject(t,i){this._entryId=t,this._taskId=null,this._objectName=i,this._taskName="",this._urlMode="companion",this._error="",this._viewResult=null,this._completeResult=null,this._quickResult=null,this._open=!0,this._generate()}openForTask(t,i,s,o){this._entryId=t,this._taskId=i,this._objectName=s,this._taskName=o,this._urlMode="companion",this._error="",this._viewResult=null,this._completeResult=null,this._quickResult=null,this._open=!0,this._generate()}async _generate(){let t=++this._generateSeq;this._loading=!0,this._error="",this._viewResult=null,this._completeResult=null,this._quickResult=null;try{let i={type:"maintenance_supporter/qr/generate",entry_id:this._entryId,url_mode:this._urlMode};this._taskId&&(i.task_id=this._taskId);let s=[this.hass.connection.sendMessagePromise({...i,action:"view"})];this._taskId&&(s.push(this.hass.connection.sendMessagePromise({...i,action:"complete"})),await this._hasQuickCompleteDefaults()&&s.push(this.hass.connection.sendMessagePromise({...i,action:"quick_complete"})));let o=await Promise.all(s);if(t!==this._generateSeq)return;this._viewResult=o[0],o.length>1&&(this._completeResult=o[1]),o.length>2&&(this._quickResult=o[2])}catch(i){if(t!==this._generateSeq)return;let s=i?.code,o=i?.message;this._error=s==="no_url"||typeof o=="string"&&o.includes("No Home Assistant URL")?e("qr_error_no_url",this._dialogLang):e("qr_error",this._dialogLang)}finally{t===this._generateSeq&&(this._loading=!1)}}async _hasQuickCompleteDefaults(){try{let i=((await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/object",entry_id:this._entryId})).tasks||[]).find(s=>s.id===this._taskId);return!!i?.quick_complete_defaults&&Object.keys(i.quick_complete_defaults).length>0}catch{return!1}}_setUrlMode(t){this._urlMode!==t&&(this._urlMode=t,this._generate())}_print(){if(!this._viewResult)return;let t=this._viewResult,i=t.label.task_name?`${t.label.object_name} \u2014 ${t.label.task_name}`:t.label.object_name,s=[t.label.manufacturer,t.label.model].filter(Boolean).join(" "),o=window.open("","_blank","width=600,height=500");if(!o)return;let p=this._dialogLang,m=d(i),g=d(s),v=!!this._completeResult,b=!!this._quickResult,w=d(e("qr_action_view",p)),$=d(e("qr_action_complete",p)),R=d(e("qr_action_quick_complete",p));o.document.write(`<!DOCTYPE html><html><head><meta charset="utf-8">
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as q}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-U4NJYI3P.js";import{H as k,a,b as f,c as n,f as u,h as x,l as h,m as c,s as e}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";function d(r){return r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""")}function _(r){return!r.startsWith("data:image/svg+xml,")&&!r.startsWith("data:image/png;base64,")?"":d(r)}function y(r){return r.replace(/[/\\:*?"<>|#%]+/g,"").replace(/\s+/g,"-").toLowerCase().substring(0,100)}var l=class extends x{constructor(){super(...arguments);this.lang="";this._open=!1;this._loading=!1;this._error="";this._viewResult=null;this._completeResult=null;this._quickResult=null;this._urlMode="companion";this._entryId="";this._taskId=null;this._objectName="";this._taskName="";this._generateSeq=0}get _dialogLang(){return this.lang||k(this.hass)}openForObject(t,i){this._entryId=t,this._taskId=null,this._objectName=i,this._taskName="",this._urlMode="companion",this._error="",this._viewResult=null,this._completeResult=null,this._quickResult=null,this._open=!0,this._generate()}openForTask(t,i,s,o){this._entryId=t,this._taskId=i,this._objectName=s,this._taskName=o,this._urlMode="companion",this._error="",this._viewResult=null,this._completeResult=null,this._quickResult=null,this._open=!0,this._generate()}async _generate(){let t=++this._generateSeq;this._loading=!0,this._error="",this._viewResult=null,this._completeResult=null,this._quickResult=null;try{let i={type:"maintenance_supporter/qr/generate",entry_id:this._entryId,url_mode:this._urlMode};this._taskId&&(i.task_id=this._taskId);let s=[this.hass.connection.sendMessagePromise({...i,action:"view"})];this._taskId&&(s.push(this.hass.connection.sendMessagePromise({...i,action:"complete"})),await this._hasQuickCompleteDefaults()&&s.push(this.hass.connection.sendMessagePromise({...i,action:"quick_complete"})));let o=await Promise.all(s);if(t!==this._generateSeq)return;this._viewResult=o[0],o.length>1&&(this._completeResult=o[1]),o.length>2&&(this._quickResult=o[2])}catch(i){if(t!==this._generateSeq)return;let s=i?.code,o=i?.message;this._error=s==="no_url"||typeof o=="string"&&o.includes("No Home Assistant URL")?e("qr_error_no_url",this._dialogLang):e("qr_error",this._dialogLang)}finally{t===this._generateSeq&&(this._loading=!1)}}async _hasQuickCompleteDefaults(){try{let i=((await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/object",entry_id:this._entryId})).tasks||[]).find(s=>s.id===this._taskId);return!!i?.quick_complete_defaults&&Object.keys(i.quick_complete_defaults).length>0}catch{return!1}}_setUrlMode(t){this._urlMode!==t&&(this._urlMode=t,this._generate())}_print(){if(!this._viewResult)return;let t=this._viewResult,i=t.label.task_name?`${t.label.object_name} \u2014 ${t.label.task_name}`:t.label.object_name,s=[t.label.manufacturer,t.label.model].filter(Boolean).join(" "),o=window.open("","_blank","width=600,height=500");if(!o)return;let p=this._dialogLang,m=d(i),g=d(s),v=!!this._completeResult,b=!!this._quickResult,w=d(e("qr_action_view",p)),$=d(e("qr_action_complete",p)),R=d(e("qr_action_quick_complete",p));o.document.write(`<!DOCTYPE html><html><head><meta charset="utf-8">
|
||||
<meta name="color-scheme" content="light">
|
||||
<title>${m}</title>
|
||||
<style>
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
function c(n){return n==="use"?"use":"purchase"}var s=n=>typeof n=="number"&&Number.isFinite(n)?n:null;function a(n){let t=s(n?.cost);if(t===null)return null;let o=s(n?.package_size);return o&&o>0?t/o:t}function p(n,t){let o=s(t)&&t>0?t:s(n.restock_quantity)||1,e=s(n.package_size);return Math.round(o*(e&&e>0?e:1)*100)/100}function l(n){let t=s(n.cost);if(n.cost_basis!=="use")return t;let o=s(n.parts_cost),e=n.purchase?null:t;return e===null&&o===null?null:(e??0)+(o??0)}function _(n){if(!n)return[];let t=[],o=n.photo_doc_id;typeof o=="string"&&t.push(o);let e=n.photo_doc_ids;Array.isArray(e)&&t.push(...e);let r=[];for(let u of t){if(typeof u!="string")continue;let i=u.trim();if(!(!i||r.includes(i))&&(r.push(i),r.length>=10))break}return r}export{_ as a,c as b,a as c,p as d,l as e};
|
||||
+2
-2
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{O as n,s as o}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";var l={"Completed from dashboard button":"hist_note_button","Completed from the To-do list":"hist_note_todo","Completed by voice":"hist_note_voice","Completed from the notification":"hist_note_notification","Completed via NFC tag":"hist_note_nfc","Completed from the shopping list":"hist_note_shopping_list","Completed from a mirrored to-do list":"hist_note_todo_mirror","Skipped from notification":"hist_note_skipped_notification","Skipped from dashboard button":"hist_note_skipped_button","Sensor trigger activated":"hist_note_sensor_triggered","Initial value set during task creation":"hist_note_initial"},m=[[/^Auto-completed: sensor recovered \((.+)\)$/,"hist_note_auto_recovered",t=>({value:t[1]})],[/^Reset to (\d{4}-\d{2}-\d{2})$/,"hist_note_reset",(t,e)=>({date:n(t[1],e)})],[/^Trigger entity replaced: (.+) → (.+)$/,"hist_note_trigger_replaced",t=>({old:t[1],new:t[2]})],[/^Sensor trigger removed \(entity was: (.+)\)\. Schedule converted to (\w+)\.$/,"hist_note_trigger_removed",(t,e)=>({entity:t[1],schedule:o(t[2],e)})],[/^Entity (.+) removed from compound trigger; (\d+) conditions remain\.$/,"hist_note_compound_removed",t=>({entity:t[1],count:t[2]})]];function h(t,e){if(!t)return"";let i=l[t.trim()];if(i)return o(i,e);for(let[s,d,_]of m){let r=t.trim().match(s);if(r){let c=_(r,e);return o(d,e).replace(/\{(\w+)\}/g,(a,g)=>c[g]??a)}}return t}export{h as a};
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{O as n,s as o}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";var l={"Completed from dashboard button":"hist_note_button","Completed from the To-do list":"hist_note_todo","Completed by voice":"hist_note_voice","Completed from the notification":"hist_note_notification","Completed via NFC tag":"hist_note_nfc","Completed from the shopping list":"hist_note_shopping_list","Completed from a mirrored to-do list":"hist_note_todo_mirror","Skipped from notification":"hist_note_skipped_notification","Skipped from dashboard button":"hist_note_skipped_button","Sensor trigger activated":"hist_note_sensor_triggered","Initial value set during task creation":"hist_note_initial"},m=[[/^Auto-completed: sensor recovered \((.+)\)$/,"hist_note_auto_recovered",t=>({value:t[1]})],[/^Reset to (\d{4}-\d{2}-\d{2})$/,"hist_note_reset",(t,e)=>({date:n(t[1],e)})],[/^Trigger entity replaced: (.+) → (.+)$/,"hist_note_trigger_replaced",t=>({old:t[1],new:t[2]})],[/^Sensor trigger removed \(entity was: (.+)\)\. Schedule converted to (\w+)\.$/,"hist_note_trigger_removed",(t,e)=>({entity:t[1],schedule:o(t[2],e)})],[/^Entity (.+) removed from compound trigger; (\d+) conditions remain\.$/,"hist_note_compound_removed",t=>({entity:t[1],count:t[2]})]];function h(t,e){if(!t)return"";let i=l[t.trim()];if(i)return o(i,e);for(let[s,d,_]of m){let r=t.trim().match(s);if(r){let c=_(r,e);return o(d,e).replace(/\{(\w+)\}/g,(a,g)=>c[g]??a)}}return t}export{h as a};
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as p}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-5USKKRUA.js";import{H as v,a as r,b as _,c as l,f as o,h,l as c,m as n,s as i}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";var s=class extends h{constructor(){super(...arguments);this.objects=[];this.placesEnabled=!1;this._open=!1;this._loading=!1;this._error="";this._name="";this._manufacturer="";this._model="";this._serialNumber="";this._areaId="";this._installationDate="";this._warrantyExpiry="";this._documentationUrl="";this._notes="";this._haDeviceId="";this._parentEntryId="";this._place="";this._remindOnSite=!1;this._entryId=null;this._replacing=!1;this._oldDeviceId="";this._replaceDevice="keep"}get _lang(){return v(this.hass)}openCreate(){this._entryId=null,this._name="",this._manufacturer="",this._model="",this._serialNumber="",this._areaId="",this._installationDate="",this._warrantyExpiry="",this._documentationUrl="",this._notes="",this._haDeviceId="",this._parentEntryId="",this._place="",this._remindOnSite=!1,this._replacing=!1,this._error="",this._open=!0}openReplace(e,a){this._entryId=e,this._replacing=!0,this._name=a.name||"",this._oldDeviceId=a.ha_device_id||"",this._haDeviceId="",this._replaceDevice="keep",this._error="",this._open=!0}openEdit(e,a){this._entryId=e,this._name=a.name||"",this._manufacturer=a.manufacturer||"",this._model=a.model||"",this._serialNumber=a.serial_number||"",this._areaId=a.area_id||"",this._installationDate=a.installation_date||"",this._warrantyExpiry=a.warranty_expiry||"",this._documentationUrl=a.documentation_url||"",this._notes=a.notes||"",this._haDeviceId=a.ha_device_id||"",this._parentEntryId=a.parent_entry_id||"",this._place=a.place||"",this._remindOnSite=!!a.remind_on_site,this._replacing=!1,this._error="",this._open=!0}async _replace(){if(this._loading||!this._entryId)return;let e={type:"maintenance_supporter/object/replace",entry_id:this._entryId,name:this._name.trim()||null};this._oldDeviceId?(this._replaceDevice==="other"&&(e.ha_device_id=this._haDeviceId),this._replaceDevice==="none"&&(e.ha_device_id=null)):this._haDeviceId&&(e.ha_device_id=this._haDeviceId);let a=await p(this,e,{busy:t=>{this._loading=t},fallbackKey:"save_error",onError:t=>{this._error=t}});a!==void 0&&(this._open=!1,this.dispatchEvent(new CustomEvent("object-replaced",{detail:{entry_id:a?.entry_id,device_swap:a?.device_swap}})))}_deviceName(e){let t=this.hass?.devices?.[e];return t?.name_by_user||t?.name||e}_deviceSelector(e){return l`<ha-form
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as p}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-RIYW54TU.js";import{H as v,a as r,b as _,c as l,f as o,h,l as c,m as n,s as i}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";var s=class extends h{constructor(){super(...arguments);this.objects=[];this.placesEnabled=!1;this._open=!1;this._loading=!1;this._error="";this._name="";this._manufacturer="";this._model="";this._serialNumber="";this._areaId="";this._installationDate="";this._warrantyExpiry="";this._documentationUrl="";this._notes="";this._haDeviceId="";this._parentEntryId="";this._place="";this._remindOnSite=!1;this._entryId=null;this._replacing=!1;this._oldDeviceId="";this._replaceDevice="keep"}get _lang(){return v(this.hass)}openCreate(){this._entryId=null,this._name="",this._manufacturer="",this._model="",this._serialNumber="",this._areaId="",this._installationDate="",this._warrantyExpiry="",this._documentationUrl="",this._notes="",this._haDeviceId="",this._parentEntryId="",this._place="",this._remindOnSite=!1,this._replacing=!1,this._error="",this._open=!0}openReplace(e,a){this._entryId=e,this._replacing=!0,this._name=a.name||"",this._oldDeviceId=a.ha_device_id||"",this._haDeviceId="",this._replaceDevice="keep",this._error="",this._open=!0}openEdit(e,a){this._entryId=e,this._name=a.name||"",this._manufacturer=a.manufacturer||"",this._model=a.model||"",this._serialNumber=a.serial_number||"",this._areaId=a.area_id||"",this._installationDate=a.installation_date||"",this._warrantyExpiry=a.warranty_expiry||"",this._documentationUrl=a.documentation_url||"",this._notes=a.notes||"",this._haDeviceId=a.ha_device_id||"",this._parentEntryId=a.parent_entry_id||"",this._place=a.place||"",this._remindOnSite=!!a.remind_on_site,this._replacing=!1,this._error="",this._open=!0}async _replace(){if(this._loading||!this._entryId)return;let e={type:"maintenance_supporter/object/replace",entry_id:this._entryId,name:this._name.trim()||null};this._oldDeviceId?(this._replaceDevice==="other"&&(e.ha_device_id=this._haDeviceId),this._replaceDevice==="none"&&(e.ha_device_id=null)):this._haDeviceId&&(e.ha_device_id=this._haDeviceId);let a=await p(this,e,{busy:t=>{this._loading=t},fallbackKey:"save_error",onError:t=>{this._error=t}});a!==void 0&&(this._open=!1,this.dispatchEvent(new CustomEvent("object-replaced",{detail:{entry_id:a?.entry_id,device_swap:a?.device_swap}})))}_deviceName(e){let t=this.hass?.devices?.[e];return t?.name_by_user||t?.name||e}_deviceSelector(e){return l`<ha-form
|
||||
.hass=${this.hass}
|
||||
.data=${{device:this._haDeviceId||void 0}}
|
||||
.schema=${[{name:"device",selector:{device:{}}}]}
|
||||
+2
-2
File diff suppressed because one or more lines are too long
@@ -1,2 +0,0 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{b as i}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-Q7CGGH4O.js";import{a as l}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-M2CMCNR4.js";var a={operatorWriteEnabled:!1,operatorIds:[]};function m(e,t=a){return e?e.is_admin?!0:t.operatorWriteEnabled&&t.operatorIds.includes(e.id):!1}var _=["buttons_compact","buttons","icons"];function p(e){let[t,n]=l.default_warning_days,s=e?.general?.default_warning_days,r=e?.general?.row_action_style;return{features:{...o.features,...e?.features??{}},defaultWarningDays:typeof s=="number"&&Number.isFinite(s)&&s>=t&&s<=n?s:o.defaultWarningDays,rowActionStyle:_.includes(r??"")?r:o.rowActionStyle,access:{operatorWriteEnabled:e?.operator_write_enabled===!0,operatorIds:Array.isArray(e?.admin_panel_user_ids)?e.admin_panel_user_ids.filter(d=>typeof d=="string"):[]},budget:e?.budget??null,rowActionNoticePending:e?.general?.row_action_notice_pending===!0,refsInLists:e?.general?.ref_numbers_in_lists===!0,objectsTableColumns:Array.isArray(e?.objects_table_columns)?e.objects_table_columns:void 0,partsCostMode:i(e?.budget?.parts_cost_mode)}}var o={features:{adaptive:!1,seasonal:!1,environmental:!1,budget:!1,groups:!1,checklists:!1,schedule_time:!1,completion_actions:!1,places:!1},defaultWarningDays:7,rowActionStyle:"buttons_compact",access:a,budget:null,rowActionNoticePending:!1,refsInLists:!1,objectsTableColumns:void 0,partsCostMode:"purchase"};function c(){let e=window;return e.__msSettingsCache??={promise:null}}function S(e){let t=c();if(t.promise)return t.promise;let n=e.connection.sendMessagePromise({type:"maintenance_supporter/settings"}).then(s=>p(s)).catch(()=>(t.promise===n&&(t.promise=null),o));return t.promise=n,n}function y(){c().promise=null}var u=class{constructor(){this._handle=null}schedule(t,n=4e3){this.clear(),this._handle=setTimeout(()=>{this._handle=null,t()},n)}clear(){this._handle!==null&&(clearTimeout(this._handle),this._handle=null)}get pending(){return this._handle!==null}};export{a,m as b,_ as c,p as d,S as e,y as f,u as g};
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
function r(t){return String(t??"").replace(/[&<>"']/g,n=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[n])}export{r as a};
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as r,b as l,c as i,f as o,h as n,l as t}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";var e=class extends n{constructor(){super(...arguments);this.label="";this.value="";this.placeholder="";this.type="text";this.required=!1;this.disabled=!1;this.multiline=!1;this.rows=3}_onInput(s){let a=s.target.value;this.value=a,this.dispatchEvent(new CustomEvent("input",{bubbles:!0,composed:!0,detail:{value:a}}))}render(){return i`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as r,b as l,c as i,f as o,h as n,l as t}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";var e=class extends n{constructor(){super(...arguments);this.label="";this.value="";this.placeholder="";this.type="text";this.required=!1;this.disabled=!1;this.multiline=!1;this.rows=3}_onInput(s){let a=s.target.value;this.value=a,this.dispatchEvent(new CustomEvent("input",{bubbles:!0,composed:!0,detail:{value:a}}))}render(){return i`
|
||||
<label class="field">
|
||||
${this.label?i`<span class="label">${this.label}${this.required?i`<span class="req">*</span>`:o}</span>`:o}
|
||||
${this.multiline?i`
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{c as r,f as i}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";var a=["#c62828","#ad1457","#6a1b9a","#4527a0","#283593","#1565c0","#00838f","#2e7d32","#558b2f","#ef6c00","#6d4c41","#546e7a"];function u(e){let s=(e||"").split(/\s+/).filter(Boolean);return s.length===0?"?":s.length===1?s[0][0].toUpperCase():(s[0][0]+s[s.length-1][0]).toUpperCase()}function c(e){let s=0;for(let n of e)s=s*31+n.charCodeAt(0)>>>0;return a[s%a.length]}function o(e){return e?{id:e.id,name:e.name,initials:e.initials||u(e.name),color:e.color||c(e.id)}:null}function h(e){return e?r`<span class="person-avatar" style="--person-color: ${e.color}" title=${e.name}>${e.initials}</span>`:i}function m(e,s=""){return e?r`<span class="person-chip ${s}" title=${e.name}>${h(e)}<span class="person-name">${e.name}</span></span>`:i}var l=class{constructor(s){this.usersCache=null;this.cacheTimestamp=0;this.CACHE_TTL_MS=6e4;this.hass=s}updateHass(s){this.hass=s}async getUsers(s=!1){let n=Date.now();if(!s&&this.usersCache&&n-this.cacheTimestamp<this.CACHE_TTL_MS)return this.usersCache;try{let t=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/users/list"});return this.usersCache=t.users,this.cacheTimestamp=n,this.usersCache}catch(t){return console.error("Failed to fetch users:",t),this.usersCache||[]}}async assignUser(s,n,t){await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/task/assign_user",entry_id:s,task_id:n,user_id:t})}async getTasksByUser(s){return(await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/tasks/by_user",user_id:s})).tasks}getUserName(s){return!s||!this.usersCache?null:this.usersCache.find(t=>t.id===s)?.name||null}getPerson(s){return o(this.getUser(s))}getUser(s){return!s||!this.usersCache?null:this.usersCache.find(n=>n.id===s)||null}getCurrentUserId(){return this.hass.user?.id||null}isCurrentUser(s){return s?s===this.getCurrentUserId():!1}clearCache(){this.usersCache=null,this.cacheTimestamp=0}};export{a,o as b,h as c,m as d,l as e};
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{c as r,f as i}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";var a=["#c62828","#ad1457","#6a1b9a","#4527a0","#283593","#1565c0","#00838f","#2e7d32","#558b2f","#ef6c00","#6d4c41","#546e7a"];function u(e){let s=(e||"").split(/\s+/).filter(Boolean);return s.length===0?"?":s.length===1?s[0][0].toUpperCase():(s[0][0]+s[s.length-1][0]).toUpperCase()}function c(e){let s=0;for(let n of e)s=s*31+n.charCodeAt(0)>>>0;return a[s%a.length]}function o(e){return e?{id:e.id,name:e.name,initials:e.initials||u(e.name),color:e.color||c(e.id)}:null}function h(e){return e?r`<span class="person-avatar" style="--person-color: ${e.color}" title=${e.name}>${e.initials}</span>`:i}function m(e,s=""){return e?r`<span class="person-chip ${s}" title=${e.name}>${h(e)}<span class="person-name">${e.name}</span></span>`:i}var l=class{constructor(s){this.usersCache=null;this.cacheTimestamp=0;this.CACHE_TTL_MS=6e4;this.hass=s}updateHass(s){this.hass=s}async getUsers(s=!1){let n=Date.now();if(!s&&this.usersCache&&n-this.cacheTimestamp<this.CACHE_TTL_MS)return this.usersCache;try{let t=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/users/list"});return this.usersCache=t.users,this.cacheTimestamp=n,this.usersCache}catch(t){return console.error("Failed to fetch users:",t),this.usersCache||[]}}async assignUser(s,n,t){await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/task/assign_user",entry_id:s,task_id:n,user_id:t})}async getTasksByUser(s){return(await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/tasks/by_user",user_id:s})).tasks}getUserName(s){return!s||!this.usersCache?null:this.usersCache.find(t=>t.id===s)?.name||null}getPerson(s){return o(this.getUser(s))}getUser(s){return!s||!this.usersCache?null:this.usersCache.find(n=>n.id===s)||null}getCurrentUserId(){return this.hass.user?.id||null}isCurrentUser(s){return s?s===this.getCurrentUserId():!1}clearCache(){this.usersCache=null,this.cacheTimestamp=0}};export{a,o as b,h as c,m as d,l as e};
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{A as k,K as R,M as x,a as m,aa as w,b as h,c as g,f as v,h as b,l as y,m as _,s as l}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";function E(i){return`${i.entry_id??""}\0${i.part_id}`}function S(i,t,e,o){let n=!!i.entry_id&&i.entry_id!==t,r=n?i.entry_id:t,s=e.find(p=>p.entry_id===r),a=(s?.parts||[]).find(p=>p.id===i.part_id)||null,c=n&&s?.object?.name||"",u=a?.name||l("shared_part_unknown",o);return{part:a,foreign:n,ownerName:c,label:c?`${u} (${c})`:u}}function N(i,t,e,o){let{part:n,label:r}=S(i,t,e,o),s=n&&n.stock!==null&&n.stock!==void 0?` (${x(n.stock,n.unit,o)})`:"",a=n?.storage_location?` \u2014 ${n.storage_location}`:"";return`${R(i.quantity,o)}\xD7 ${r}${s}${a}`}function V(i,t,e,o){let r=(e.find(a=>a.entry_id===t)?.parts||[]).map(a=>({...a})),s=new Set(r.map(a=>E({part_id:a.id})));for(let a of i?.consumes_parts||[]){if(!a.entry_id||a.entry_id===t)continue;let c=E(a);if(s.has(c))continue;s.add(c);let{part:u,ownerName:p}=S(a,t,e,o);r.push({id:a.part_id,name:u?.name||l("shared_part_unknown",o),unit:u?.unit,stock:u?.stock??null,storage_location:u?.storage_location,entry_id:a.entry_id,owner_name:p})}return r}var L=20;function T(){let i=new Uint8Array(4);return(globalThis.crypto??{getRandomValues:t=>t.map(()=>Math.floor(Math.random()*256))}).getRandomValues(i),Array.from(i,t=>t.toString(16).padStart(2,"0")).join("")}function f(i){let t=i?.reading_values;if(!Array.isArray(t))return[];let e=[],o=new Set;for(let n of t){if(!n||typeof n!="object")continue;let r=n;typeof r.id!="string"||!r.id||o.has(r.id)||typeof r.value!="number"||!Number.isFinite(r.value)||(o.add(r.id),e.push({id:r.id,name:typeof r.name=="string"?r.name:r.id,unit:typeof r.unit=="string"?r.unit:null,value:r.value}))}return e}function P(i){return i.filter(t=>t.type==="completed"&&(t.reading_value!=null||f(t).length>0)).sort((t,e)=>t.timestamp.localeCompare(e.timestamp))}function M(i){return P(i??[]).map(t=>({timestamp:t.timestamp,values:f(t)})).filter(t=>t.values.length>0)}function A(i,t,e){let o;for(let n of i){if(e!==void 0){let s=k(n.timestamp);if(!isNaN(s)&&s>=e)break}let r=n.values.find(s=>s.id===t);r&&(o=r)}return o}function C(i,t,e){let o=f(t).find(r=>r.id===e);if(!o)return null;let n=null;for(let r of P(i)){if(r.timestamp>=t.timestamp)break;let s=f(r).find(a=>a.id===e);s&&(n=s.value)}return n==null?null:o.value-n}function D(i){let t=new Set,e=new Set;for(let o of i){let n=(o.name||"").trim().toLowerCase();n&&(t.has(n)?e.add(o.id):t.add(n))}return e}function F(i){let t=[],e=new Set,o=new Set;for(let n of i){let r=(n.name||"").trim();if(!(!r||e.has(n.id)||o.has(r.toLowerCase()))&&(e.add(n.id),o.add(r.toLowerCase()),t.push({id:n.id,name:r,unit:(n.unit||"").trim()||null}),t.length>=L))break}return t}function j(i){let t=(i??"").trim();if(t==="")return null;let e=Number(t.replace(",","."));return!Number.isFinite(e)||e<0?null:Math.round(e)}var B=["notes","cost","duration","photo","user"],I={notes:"notes_label",cost:"cost",duration:"duration",photo:"photo_label",user:"user_label"};var d=class extends b{constructor(){super(...arguments);this.value="";this.lang="en";this._credit=!1;this._amount=""}willUpdate(e){if(!e.has("value"))return;let o=(this.value??"").trim();if(o===this._signed())return;let n=parseFloat(o);if(o===""||Number.isNaN(n)){this._amount="",this._credit=!1;return}this._credit=n<0,this._amount=String(Math.abs(n))}_signed(){let e=this._amount.trim();return e===""?"":this._credit?`-${e}`:e}_emit(){this.value=this._signed(),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.value},bubbles:!0,composed:!0}))}_setCredit(e){this._credit!==e&&(this._credit=e,this._emit())}_onInput(e){let o=e.target.value;o.startsWith("-")&&(this._credit=!0),this._amount=o.replace(/^-+/,""),this._emit()}render(){let e=this.lang;return g`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{A as k,K as R,M as x,a as m,aa as w,b as h,c as g,f as v,h as b,l as y,m as _,s as l}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";function E(i){return`${i.entry_id??""}\0${i.part_id}`}function S(i,t,e,o){let n=!!i.entry_id&&i.entry_id!==t,r=n?i.entry_id:t,s=e.find(p=>p.entry_id===r),a=(s?.parts||[]).find(p=>p.id===i.part_id)||null,c=n&&s?.object?.name||"",u=a?.name||l("shared_part_unknown",o);return{part:a,foreign:n,ownerName:c,label:c?`${u} (${c})`:u}}function N(i,t,e,o){let{part:n,label:r}=S(i,t,e,o),s=n&&n.stock!==null&&n.stock!==void 0?` (${x(n.stock,n.unit,o)})`:"",a=n?.storage_location?` \u2014 ${n.storage_location}`:"";return`${R(i.quantity,o)}\xD7 ${r}${s}${a}`}function V(i,t,e,o){let r=(e.find(a=>a.entry_id===t)?.parts||[]).map(a=>({...a})),s=new Set(r.map(a=>E({part_id:a.id})));for(let a of i?.consumes_parts||[]){if(!a.entry_id||a.entry_id===t)continue;let c=E(a);if(s.has(c))continue;s.add(c);let{part:u,ownerName:p}=S(a,t,e,o);r.push({id:a.part_id,name:u?.name||l("shared_part_unknown",o),unit:u?.unit,stock:u?.stock??null,storage_location:u?.storage_location,entry_id:a.entry_id,owner_name:p})}return r}var L=20;function T(){let i=new Uint8Array(4);return(globalThis.crypto??{getRandomValues:t=>t.map(()=>Math.floor(Math.random()*256))}).getRandomValues(i),Array.from(i,t=>t.toString(16).padStart(2,"0")).join("")}function f(i){let t=i?.reading_values;if(!Array.isArray(t))return[];let e=[],o=new Set;for(let n of t){if(!n||typeof n!="object")continue;let r=n;typeof r.id!="string"||!r.id||o.has(r.id)||typeof r.value!="number"||!Number.isFinite(r.value)||(o.add(r.id),e.push({id:r.id,name:typeof r.name=="string"?r.name:r.id,unit:typeof r.unit=="string"?r.unit:null,value:r.value}))}return e}function P(i){return i.filter(t=>t.type==="completed"&&(t.reading_value!=null||f(t).length>0)).sort((t,e)=>t.timestamp.localeCompare(e.timestamp))}function M(i){return P(i??[]).map(t=>({timestamp:t.timestamp,values:f(t)})).filter(t=>t.values.length>0)}function A(i,t,e){let o;for(let n of i){if(e!==void 0){let s=k(n.timestamp);if(!isNaN(s)&&s>=e)break}let r=n.values.find(s=>s.id===t);r&&(o=r)}return o}function C(i,t,e){let o=f(t).find(r=>r.id===e);if(!o)return null;let n=null;for(let r of P(i)){if(r.timestamp>=t.timestamp)break;let s=f(r).find(a=>a.id===e);s&&(n=s.value)}return n==null?null:o.value-n}function D(i){let t=new Set,e=new Set;for(let o of i){let n=(o.name||"").trim().toLowerCase();n&&(t.has(n)?e.add(o.id):t.add(n))}return e}function F(i){let t=[],e=new Set,o=new Set;for(let n of i){let r=(n.name||"").trim();if(!(!r||e.has(n.id)||o.has(r.toLowerCase()))&&(e.add(n.id),o.add(r.toLowerCase()),t.push({id:n.id,name:r,unit:(n.unit||"").trim()||null}),t.length>=L))break}return t}function j(i){let t=(i??"").trim();if(t==="")return null;let e=Number(t.replace(",","."));return!Number.isFinite(e)||e<0?null:Math.round(e)}var B=["notes","cost","duration","photo","user"],I={notes:"notes_label",cost:"cost",duration:"duration",photo:"photo_label",user:"user_label"};var d=class extends b{constructor(){super(...arguments);this.value="";this.lang="en";this._credit=!1;this._amount=""}willUpdate(e){if(!e.has("value"))return;let o=(this.value??"").trim();if(o===this._signed())return;let n=parseFloat(o);if(o===""||Number.isNaN(n)){this._amount="",this._credit=!1;return}this._credit=n<0,this._amount=String(Math.abs(n))}_signed(){let e=this._amount.trim();return e===""?"":this._credit?`-${e}`:e}_emit(){this.value=this._signed(),this.dispatchEvent(new CustomEvent("value-changed",{detail:{value:this.value},bubbles:!0,composed:!0}))}_setCredit(e){this._credit!==e&&(this._credit=e,this._emit())}_onInput(e){let o=e.target.value;o.startsWith("-")&&(this._credit=!0),this._amount=o.replace(/^-+/,""),this._emit()}render(){let e=this.lang;return g`
|
||||
<div class="wrap">
|
||||
<div class="sign" role="group">
|
||||
<button type="button" class="kind cost ${this._credit?"":"on"}" aria-pressed=${String(!this._credit)}
|
||||
@@ -1,2 +0,0 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
async function i(o,n,e){let t=o.auth;if(t?.expired&&t.refreshAccessToken)try{await t.refreshAccessToken()}catch{}return fetch(n,{...e,headers:{...e.headers??{},Authorization:`Bearer ${t?.data?.access_token??""}`}})}var u=500*1024*1024;async function d(o,n,e,t="doc_too_large",s=[]){let r=await i(o,n,{method:"POST",body:e});if(r.status===413)throw new Error(t);if(!r.ok){let a=await r.json().catch(()=>null);throw typeof a?.code=="string"&&s.includes(a.code)?new Error(a.code):new Error("doc_upload_failed")}return await r.json()}async function c(o,n,e,t){let s=new FormData;s.append("entry_id",n);for(let a of t)s.append("tags",a);s.append("file",e,e.name);let r=await d(o,"/api/maintenance_supporter/document/upload",s);if(!r.id)throw new Error("doc_upload_failed");return{id:r.id,deduped:!!r.deduped,duplicate_in_object:r.duplicate_in_object??null}}async function l(o,n,e){return(await c(o,n,e,["photo"])).id}async function m(o,n,e){await Promise.all(e.map(t=>o.connection.sendMessagePromise({type:"maintenance_supporter/documents/discard_upload",entry_id:n,doc_id:t}).catch(()=>{})))}export{u as a,d as b,c,l as d,m as e};
|
||||
@@ -0,0 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
async function i(o,n,e){let t=o.auth;if(t?.expired&&t.refreshAccessToken)try{await t.refreshAccessToken()}catch{}return fetch(n,{...e,headers:{...e.headers??{},Authorization:`Bearer ${t?.data?.access_token??""}`}})}var d=100*1024*1024,l=500*1024*1024;async function c(o,n,e,t="doc_too_large",s=[]){let r=await i(o,n,{method:"POST",body:e});if(r.status===413)throw new Error(t);if(!r.ok){let a=await r.json().catch(()=>null);throw typeof a?.code=="string"&&s.includes(a.code)?new Error(a.code):new Error("doc_upload_failed")}return await r.json()}async function p(o,n,e,t){if(e.size>d)throw new Error("doc_too_large");let s=new FormData;s.append("entry_id",n);for(let a of t)s.append("tags",a);s.append("file",e,e.name);let r=await c(o,"/api/maintenance_supporter/document/upload",s);if(!r.id)throw new Error("doc_upload_failed");return{id:r.id,deduped:!!r.deduped,duplicate_in_object:r.duplicate_in_object??null}}async function m(o,n,e){return(await p(o,n,e,["photo"])).id}async function _(o,n,e){await Promise.all(e.map(t=>o.connection.sendMessagePromise({type:"maintenance_supporter/documents/discard_upload",entry_id:n,doc_id:t}).catch(()=>{})))}export{l as a,c as b,p as c,m as d,_ as e};
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{O as m,a,b as y,c as s,f as l,h as g,l as o,m as f,s as d}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";function $(n){let t=m("2001-02-03",n).match(/\d+/g)||[],e=v=>t.findIndex(_=>Number(_)===v),h=e(2001),c=e(2),u=e(3);return h===0?"YMD":c>=0&&u>=0&&c<u?"MDY":"DMY"}function p(n,i,t){if(n<1e3||n>9999||i<1||i>12||t<1||t>31)return null;let e=new Date(n,i-1,t);return e.getFullYear()!==n||e.getMonth()!==i-1||e.getDate()!==t?null:`${n}-${String(i).padStart(2,"0")}-${String(t).padStart(2,"0")}`}function b(n,i){let t=n.trim(),e;if(e=t.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/))return p(+e[1],+e[2],+e[3]);if(e=t.match(/^(\d{4})$/))return p(+e[1],1,1);if(e=t.match(/^(\d{1,2})[./](\d{4})$/))return p(+e[2],+e[1],1);if(e=t.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/))return p(+e[3],+e[2],+e[1]);if(e=t.match(/^(\d{1,2})[/-](\d{1,2})[/-](\d{4})$/)){let h=+e[1],c=+e[2],u=+e[3];return $(i)==="MDY"?p(u,h,c):p(u,c,h)}return null}function x(n,i){if(i)switch(n){case"date":return i.split("T")[0];case"time":return i.length===5?`${i}:00`:i;case"datetime":{let[t,e="00:00:00"]=i.split("T");return`${t} ${e.length===5?`${e}:00`:e}`}}}function k(n,i){if(typeof i!="string"||!i)return"";switch(n){case"date":return i.slice(0,10);case"time":return i.slice(0,5);case"datetime":{let[t,e="00:00:00"]=i.split(" ");return`${t}T${e.length===5?`${e}:00`:e}`}}}var r=class extends g{constructor(){super(...arguments);this.kind="date";this.label="";this.value="";this.clearable=!1;this.disabled=!1;this.required=!1;this.lang="en";this._typing=!1;this._typed="";this._typedInvalid=!1}_startTyping(){this._typed=this.value,this._typedInvalid=!1,this._typing=!0,this.updateComplete.then(()=>this.shadowRoot?.querySelector("input.typed")?.focus())}_commitTyped(){if(!this._typed.trim()){this._typing=!1;return}let t=b(this._typed,this.lang);if(!t){this._typedInvalid=!0;return}this._typing=!1,this._typedInvalid=!1,this._emit(t)}_onTypedKey(t){t.key==="Enter"?(t.preventDefault(),this._commitTyped()):t.key==="Escape"&&(t.preventDefault(),this._typing=!1,this._typedInvalid=!1)}_selector(){switch(this.kind){case"date":return{date:{}};case"time":return{time:{no_second:!0}};case"datetime":return{datetime:{}}}}_onSelectorChange(t){t.stopPropagation(),this._emit(k(this.kind,t.detail?.value))}_clear(){this._emit("")}_emit(t){t!==this.value&&(this.value=t,this.dispatchEvent(new CustomEvent("value-changed",{bubbles:!0,composed:!0,detail:{value:t}})))}render(){return s`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{O as m,a,b as y,c as s,f as l,h as g,l as o,m as f,s as d}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";function $(n){let t=m("2001-02-03",n).match(/\d+/g)||[],e=v=>t.findIndex(_=>Number(_)===v),h=e(2001),c=e(2),u=e(3);return h===0?"YMD":c>=0&&u>=0&&c<u?"MDY":"DMY"}function p(n,i,t){if(n<1e3||n>9999||i<1||i>12||t<1||t>31)return null;let e=new Date(n,i-1,t);return e.getFullYear()!==n||e.getMonth()!==i-1||e.getDate()!==t?null:`${n}-${String(i).padStart(2,"0")}-${String(t).padStart(2,"0")}`}function b(n,i){let t=n.trim(),e;if(e=t.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/))return p(+e[1],+e[2],+e[3]);if(e=t.match(/^(\d{4})$/))return p(+e[1],1,1);if(e=t.match(/^(\d{1,2})[./](\d{4})$/))return p(+e[2],+e[1],1);if(e=t.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/))return p(+e[3],+e[2],+e[1]);if(e=t.match(/^(\d{1,2})[/-](\d{1,2})[/-](\d{4})$/)){let h=+e[1],c=+e[2],u=+e[3];return $(i)==="MDY"?p(u,h,c):p(u,c,h)}return null}function x(n,i){if(i)switch(n){case"date":return i.split("T")[0];case"time":return i.length===5?`${i}:00`:i;case"datetime":{let[t,e="00:00:00"]=i.split("T");return`${t} ${e.length===5?`${e}:00`:e}`}}}function k(n,i){if(typeof i!="string"||!i)return"";switch(n){case"date":return i.slice(0,10);case"time":return i.slice(0,5);case"datetime":{let[t,e="00:00:00"]=i.split(" ");return`${t}T${e.length===5?`${e}:00`:e}`}}}var r=class extends g{constructor(){super(...arguments);this.kind="date";this.label="";this.value="";this.clearable=!1;this.disabled=!1;this.required=!1;this.lang="en";this._typing=!1;this._typed="";this._typedInvalid=!1}_startTyping(){this._typed=this.value,this._typedInvalid=!1,this._typing=!0,this.updateComplete.then(()=>this.shadowRoot?.querySelector("input.typed")?.focus())}_commitTyped(){if(!this._typed.trim()){this._typing=!1;return}let t=b(this._typed,this.lang);if(!t){this._typedInvalid=!0;return}this._typing=!1,this._typedInvalid=!1,this._emit(t)}_onTypedKey(t){t.key==="Enter"?(t.preventDefault(),this._commitTyped()):t.key==="Escape"&&(t.preventDefault(),this._typing=!1,this._typedInvalid=!1)}_selector(){switch(this.kind){case"date":return{date:{}};case"time":return{time:{no_second:!0}};case"datetime":return{datetime:{}}}}_onSelectorChange(t){t.stopPropagation(),this._emit(k(this.kind,t.detail?.value))}_clear(){this._emit("")}_emit(t){t!==this.value&&(this.value=t,this.dispatchEvent(new CustomEvent("value-changed",{bubbles:!0,composed:!0,detail:{value:t}})))}render(){return s`
|
||||
<div class="field">
|
||||
${this.label?s`<span class="label">${this.label}${this.required?s`<span class="req">*</span>`:l}</span>`:l}
|
||||
<div class="row">
|
||||
+2
-2
File diff suppressed because one or more lines are too long
+2
-2
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
function c(o,t,e){let l=new Blob([o],{type:e}),d=URL.createObjectURL(l),n=document.createElement("a");n.href=d,n.download=t,n.target="_blank",n.rel="noopener",n.style.display="none",document.body.appendChild(n),n.dispatchEvent(new MouseEvent("click")),document.body.removeChild(n),setTimeout(()=>URL.revokeObjectURL(d),6e4)}function r(o,t){let e=document.createElement("a");e.href=o,e.download=t,e.target="_blank",e.rel="noopener",e.style.display="none",document.body.appendChild(e),e.dispatchEvent(new MouseEvent("click")),document.body.removeChild(e)}export{c as a,r as b};
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
var n={default_warning_days:[0,365],default_consumable_threshold:[1,90],battery_low_percent:[1,90],battery_recovered_percent:[20,100],archive_oneoff_days:[0,3650],delete_archived_oneoff_days:[0,3650],notify_due_soon_interval_hours:[0,720],notify_overdue_interval_hours:[0,720],notify_triggered_interval_hours:[0,720],max_notifications_per_day:[0,1e3],notification_bundle_threshold:[2,20],snooze_duration_hours:[1,168],warranty_reminder_days:[1,365],budget_alert_threshold:[10,100],currency_decimals:[0,3]};function o(e){let r=n[e];if(!r)throw new Error(`not an int-ranged setting: ${e}`);return r}var t=[0,14],_=[0,1440],u=[1,1e4],a=[0,365],d=15,s=[.1,.9],b=[0,365],A=[.01,1e4],E=[.01,1e5],i=[.1,5];export{n as a,o as b,t as c,_ as d,u as e,a as f,d as g,s as h,b as i,A as j,E as k,i as l};
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as y}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZFJHBIVS.js";var l=6;async function g(e,i,n){let r=new Array(e.length),a=0,t=async()=>{for(;a<e.length;){let s=a++;r[s]=await n(e[s],s)}},o=Math.min(Math.max(1,i),e.length);return await Promise.all(Array.from({length:o},t)),r}function u(e){let i=e.history?.length??0;return typeof e.history_count!="number"||e.history_count>i}function d(e){return JSON.stringify([e.history_count??null,e.history??[]])}function h(e,i){return`${e}:${i}`}var c=class{constructor(i){this._host=i;this._cache=new Map;this._inFlight=new Map;this._running=0;this._pending=Promise.resolve();this.version=0;i.addController(this)}hostConnected(){}get loading(){return this._running>0}get capped(){for(let i of this._cache.values())if(i.entries.length>=y)return!0;return!1}historyOf(i,n){return this._cache.get(h(i,n.id))?.entries??n.history??[]}sync(i,n){if(!i?.connection)return this._pending;let r=n.filter(t=>u(t.task)).map(t=>({...t,key:h(t.entryId,t.task.id),sig:d(t.task)})).filter(t=>this._cache.get(t.key)?.sig!==t.sig&&this._inFlight.get(t.key)!==t.sig);if(!r.length)return this._pending;for(let t of r)this._inFlight.set(t.key,t.sig);this._running++,this._host.requestUpdate();let a=g(r,l,async t=>{let o;try{let s=await i.connection.sendMessagePromise({type:"maintenance_supporter/task/history",entry_id:t.entryId,task_id:t.task.id});o=Array.isArray(s?.history)?s.history:t.task.history??[]}catch{o=t.task.history??[]}this._inFlight.get(t.key)===t.sig&&(this._inFlight.delete(t.key),this._cache.set(t.key,{sig:t.sig,entries:o}))}).then(()=>{this._running--,this.version++,this._host.requestUpdate()});return this._pending=Promise.all([this._pending,a]).then(()=>{}),this._pending}settled(){return this._pending}};export{c as a};
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as y}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-7W4GNWDJ.js";var l=6;async function g(e,i,n){let r=new Array(e.length),a=0,t=async()=>{for(;a<e.length;){let s=a++;r[s]=await n(e[s],s)}},o=Math.min(Math.max(1,i),e.length);return await Promise.all(Array.from({length:o},t)),r}function u(e){let i=e.history?.length??0;return typeof e.history_count!="number"||e.history_count>i}function d(e){return JSON.stringify([e.history_count??null,e.history??[]])}function h(e,i){return`${e}:${i}`}var c=class{constructor(i){this._host=i;this._cache=new Map;this._inFlight=new Map;this._running=0;this._pending=Promise.resolve();this.version=0;i.addController(this)}hostConnected(){}get loading(){return this._running>0}get capped(){for(let i of this._cache.values())if(i.entries.length>=y)return!0;return!1}historyOf(i,n){return this._cache.get(h(i,n.id))?.entries??n.history??[]}sync(i,n){if(!i?.connection)return this._pending;let r=n.filter(t=>u(t.task)).map(t=>({...t,key:h(t.entryId,t.task.id),sig:d(t.task)})).filter(t=>this._cache.get(t.key)?.sig!==t.sig&&this._inFlight.get(t.key)!==t.sig);if(!r.length)return this._pending;for(let t of r)this._inFlight.set(t.key,t.sig);this._running++,this._host.requestUpdate();let a=g(r,l,async t=>{let o;try{let s=await i.connection.sendMessagePromise({type:"maintenance_supporter/task/history",entry_id:t.entryId,task_id:t.task.id});o=Array.isArray(s?.history)?s.history:t.task.history??[]}catch{o=t.task.history??[]}this._inFlight.get(t.key)===t.sig&&(this._inFlight.delete(t.key),this._cache.set(t.key,{sig:t.sig,entries:o}))}).then(()=>{this._running--,this.version++,this._host.requestUpdate()});return this._pending=Promise.all([this._pending,a]).then(()=>{}),this._pending}settled(){return this._pending}};export{c as a};
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{s as a}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";var _=[{key:"name",labelKey:"name",required:!0},{key:"ref_no",labelKey:"ref_number"},{key:"manufacturer",labelKey:"manufacturer"},{key:"model",labelKey:"model"},{key:"serial_number",labelKey:"serial_number_label"},{key:"installation_date",labelKey:"installed"},{key:"warranty_expiry",labelKey:"warranty"},{key:"area_id",labelKey:"area"},{key:"documentation_url",labelKey:"documentation_url_label"},{key:"notes",labelKey:"object_notes_label"},{key:"task_count",labelKey:"tasks"},{key:"actions",labelKey:"actions"}],u=_.map(e=>e.key),i=["name","manufacturer","model","serial_number","installation_date","warranty_expiry","area_id","task_count","actions"];function g(e){if(!Array.isArray(e))return[...i];let n=new Set,r=[];for(let t of e)typeof t=="string"&&u.includes(t)&&!n.has(t)&&(n.add(t),r.push(t));return r.length?(r.includes("name")||r.unshift("name"),r):[...i]}function f(e,n){return a(`home_dwelling_${e==="house"||e==="apartment"?e:"unknown"}`,n)}function m(e,n){if(!e)return"";try{return new Intl.DisplayNames([n],{type:"region"}).of(e)||e}catch{return e}}var l={floors:"home_reason_floors",basement_floor:"home_reason_basement",area_basement:"home_reason_basement",area_garden:"home_reason_garden",area_shed:"home_reason_shed",area_driveway:"home_reason_driveway",area_garage:"home_reason_garage",entity_garage:"home_reason_garage",area_attic:"home_reason_attic",entity_lawn_mower:"home_reason_lawn_mower",entity_gate:"home_reason_gate",area_balcony:"home_reason_balcony",small_home:"home_reason_small_home"},c={ups:"home_reason_ups"};function d(e,n){let r=[];for(let t of e){let o=l[t];if(!o)continue;let s=a(o,n);r.includes(s)||r.push(s)}return r.join(", ")}function b(e,n,r){if(e==="starter")return a("home_reason_starter",n);if(e==="country")return a("home_reason_country",n).replace("{country}",m(r,n));if(e.startsWith("feature_")){let t=e.slice(8),o=l[`area_${t}`]??c[t];return a("home_reason_feature",n).replace("{feature}",o?a(o,n):e)}return a(`home_trait_${e}`,n)}export{_ as a,i as b,g as c,f as d,m as e,d as f,b as g};
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{s as a}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";var _=[{key:"name",labelKey:"name",required:!0},{key:"ref_no",labelKey:"ref_number"},{key:"manufacturer",labelKey:"manufacturer"},{key:"model",labelKey:"model"},{key:"serial_number",labelKey:"serial_number_label"},{key:"installation_date",labelKey:"installed"},{key:"warranty_expiry",labelKey:"warranty"},{key:"area_id",labelKey:"area"},{key:"documentation_url",labelKey:"documentation_url_label"},{key:"notes",labelKey:"object_notes_label"},{key:"task_count",labelKey:"tasks"},{key:"actions",labelKey:"actions"}],u=_.map(e=>e.key),i=["name","manufacturer","model","serial_number","installation_date","warranty_expiry","area_id","task_count","actions"];function g(e){if(!Array.isArray(e))return[...i];let n=new Set,r=[];for(let t of e)typeof t=="string"&&u.includes(t)&&!n.has(t)&&(n.add(t),r.push(t));return r.length?(r.includes("name")||r.unshift("name"),r):[...i]}function f(e,n){return a(`home_dwelling_${e==="house"||e==="apartment"?e:"unknown"}`,n)}function m(e,n){if(!e)return"";try{return new Intl.DisplayNames([n],{type:"region"}).of(e)||e}catch{return e}}var l={floors:"home_reason_floors",basement_floor:"home_reason_basement",area_basement:"home_reason_basement",area_garden:"home_reason_garden",area_shed:"home_reason_shed",area_driveway:"home_reason_driveway",area_garage:"home_reason_garage",entity_garage:"home_reason_garage",area_attic:"home_reason_attic",entity_lawn_mower:"home_reason_lawn_mower",entity_gate:"home_reason_gate",area_balcony:"home_reason_balcony",small_home:"home_reason_small_home"},c={ups:"home_reason_ups"};function d(e,n){let r=[];for(let t of e){let o=l[t];if(!o)continue;let s=a(o,n);r.includes(s)||r.push(s)}return r.join(", ")}function b(e,n,r){if(e==="starter")return a("home_reason_starter",n);if(e==="country")return a("home_reason_country",n).replace("{country}",m(r,n));if(e.startsWith("feature_")){let t=e.slice(8),o=l[`area_${t}`]??c[t];return a("home_reason_feature",n).replace("{feature}",o?a(o,n):e)}return a(`home_trait_${e}`,n)}export{_ as a,i as b,g as c,f as d,m as e,d as f,b as g};
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{b as s}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-C6NCKN5O.js";async function a(o,n,t=300){return(await o.connection.sendMessagePromise({type:"auth/sign_path",path:n,expires:t})).path}async function r(o,n,t=300){return a(o,`/api/maintenance_supporter/document/${n}`,t)}async function p(o,n,t=""){let e=window.open("about:blank","_blank");try{let i=await r(o,n);e&&(e.location.href=new URL(i+t,window.location.origin).href)}catch(i){throw e&&e.close(),i}}async function l(o,n,t){s(await r(o,n,30),t)}function m(o,n=null){let t=URL.createObjectURL(new Blob([o],{type:"text/html"}));n&&!n.closed?n.location.href=t:window.open(t,"_blank"),setTimeout(()=>URL.revokeObjectURL(t),6e4)}function u(){return window.open("about:blank","_blank")}export{a,r as b,p as c,l as d,m as e,u as f};
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{b as s}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-U4NJYI3P.js";async function a(o,n,t=300){return(await o.connection.sendMessagePromise({type:"auth/sign_path",path:n,expires:t})).path}async function r(o,n,t=300){return a(o,`/api/maintenance_supporter/document/${n}`,t)}async function p(o,n,t=""){let e=window.open("about:blank","_blank");try{let i=await r(o,n);e&&(e.location.href=new URL(i+t,window.location.origin).href)}catch(i){throw e&&e.close(),i}}async function l(o,n,t){s(await r(o,n,30),t)}function m(o,n=null){let t=URL.createObjectURL(new Blob([o],{type:"text/html"}));n&&!n.closed?n.location.href=t:window.open(t,"_blank"),setTimeout(()=>URL.revokeObjectURL(t),6e4)}function u(){return window.open("about:blank","_blank")}export{a,r as b,p as c,l as d,m as e,u as f};
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
var r={objectSections:"msp-object-sections",printOptions:"msp-print-options",batteryRosterOpen:"msp-bf-roster-open",docSort:"msp-doc-sort",cameraLabel:"msp-camera-label",overviewTab:"msp-overview-tab",collapsedSections:"msp-collapsed-sections",chartRange:"msp-chart-range",chartHideOutliers:"msp-chart-hide-outliers",taskSort:"maintenance_supporter_sort",objectSort:"maintenance_supporter_object_sort",groupBy:"maintenance_supporter_groupby",objectView:"maintenance_supporter_object_view",objectsCache:"msp-objects-cache",gettingStartedDismissed:"msp-gs-dismissed",batteryRosterSort:"ms_bf_roster_sort",areaSort:"msp-area-sort"};function s(t){try{return localStorage.getItem(t)}catch{return null}}function o(t,e){try{localStorage.setItem(t,e)}catch{}}export{r as a,s as b,o as c};
|
||||
@@ -0,0 +1,18 @@
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{b as l}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-7SOUIRZ7.js";import{a as c}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-UKOBV3FF.js";import{g as a}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";var i={operatorWriteEnabled:!1,operatorIds:[]};function b(e,t=i){return e?e.is_admin?!0:t.operatorWriteEnabled&&t.operatorIds.includes(e.id):!1}var m=["buttons_compact","buttons","icons"];function f(e){let[t,s]=c.default_warning_days,n=e?.general?.default_warning_days,r=e?.general?.row_action_style;return{features:{...o.features,...e?.features??{}},defaultWarningDays:typeof n=="number"&&Number.isFinite(n)&&n>=t&&n<=s?n:o.defaultWarningDays,rowActionStyle:m.includes(r??"")?r:o.rowActionStyle,access:{operatorWriteEnabled:e?.operator_write_enabled===!0,operatorIds:Array.isArray(e?.admin_panel_user_ids)?e.admin_panel_user_ids.filter(p=>typeof p=="string"):[]},budget:e?.budget??null,rowActionNoticePending:e?.general?.row_action_notice_pending===!0,refsInLists:e?.general?.ref_numbers_in_lists===!0,objectsTableColumns:Array.isArray(e?.objects_table_columns)?e.objects_table_columns:void 0,partsCostMode:l(e?.budget?.parts_cost_mode)}}var o={features:{adaptive:!1,seasonal:!1,environmental:!1,budget:!1,groups:!1,checklists:!1,schedule_time:!1,completion_actions:!1,places:!1},defaultWarningDays:7,rowActionStyle:"buttons_compact",access:i,budget:null,rowActionNoticePending:!1,refsInLists:!1,objectsTableColumns:void 0,partsCostMode:"purchase"};function u(){let e=window;return e.__msSettingsCache??={promise:null}}function S(e){let t=u();if(t.promise)return t.promise;let s=e.connection.sendMessagePromise({type:"maintenance_supporter/settings"}).then(n=>f(n)).catch(()=>(t.promise===s&&(t.promise=null),o));return t.promise=s,s}function $(){u().promise=null}var _=class{constructor(){this._handle=null}schedule(t,s=4e3){this.clear(),this._handle=setTimeout(()=>{this._handle=null,t()},s)}clear(){this._handle!==null&&(clearTimeout(this._handle),this._handle=null)}get pending(){return this._handle!==null}};var{I:E}=a;var M=e=>e.strings===void 0;var g={},x=(e,t=g)=>e._$AH=t;var P={ATTRIBUTE:1,CHILD:2,PROPERTY:3,BOOLEAN_ATTRIBUTE:4,EVENT:5,ELEMENT:6},N=e=>(...t)=>({_$litDirective$:e,values:t}),d=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,s,n){this._$Ct=t,this._$AM=s,this._$Ci=n}_$AS(t,s){return this.update(t,s)}update(t,s){return this.render(...s)}};export{M as a,x as b,P as c,N as d,d as e,i as f,b as g,m as h,f as i,S as j,$ as k,_ as l};
|
||||
/*! Bundled license information:
|
||||
|
||||
lit-html/directive-helpers.js:
|
||||
(**
|
||||
* @license
|
||||
* Copyright 2020 Google LLC
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*)
|
||||
|
||||
lit-html/directive.js:
|
||||
(**
|
||||
* @license
|
||||
* Copyright 2017 Google LLC
|
||||
* SPDX-License-Identifier: BSD-3-Clause
|
||||
*)
|
||||
*/
|
||||
+202
-181
File diff suppressed because one or more lines are too long
+1
-1
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
var E={\u00DF:"s","\u1E9E":"s",\u00E6:"a",\u0153:"o",\u00F8:"o",\u0111:"d",\u00F0:"d",\u00FE:"t",\u0142:"l",\u0131:"i"},d=10,R=7,g=4,h=2,S=5,x=3,_=/[a-z0-9]+/g;function u(r){let e="";for(let t of r.toLowerCase()){if(t.charCodeAt(0)<128&&t.length===1){e+=t;continue}let n=E[t];if(n){e+=n;continue}let o=t.normalize("NFKD")[0]||t;e+=o.charCodeAt(0)<128?o:t}return e}function m(r){return u(r).match(_)||[]}function C(r){return u(r).replace(/[^a-z0-9]+/g,"")}function b(r){return r.replace(/ue/g,"u").replace(/oe/g,"o").replace(/ae/g,"a").replace(/ss/g,"s")}function F(r){let e=[];for(let t of m(r)){let n=[t],o=b(t);o&&o!==t&&n.push(o),e.push(n)}return e}function p(r,e){if(r===e)return!0;let t=r.length,n=e.length;if(Math.abs(t-n)>1)return!1;if(t===n){let l=[];for(let i=0;i<t;i++)r[i]!==e[i]&&l.push(i);if(l.length===1)return!0;if(l.length===2&&l[1]===l[0]+1){let i=l[0];return r[i]===e[i+1]&&r[i+1]===e[i]}return!1}let[o,s]=t>n?[r,e]:[e,r],c=0,f=0,a=!1;for(;c<o.length&&f<s.length;)if(o[c]===s[f])c++,f++;else{if(a)return!1;a=!0,c++}return!0}function N(r,e){let t=0;for(let n of r)if(n){if(e===n)return d;if(e.startsWith(n)){t=Math.max(t,R);continue}if(n.length>=x&&e.includes(n)){t=Math.max(t,g);continue}n.length>=S&&t<h&&(p(n,e)||e.length>n.length&&p(n,e.slice(0,n.length)))&&(t=h)}return t}function I(r,e){let t=0;for(let n of m(e))if(t=Math.max(t,N(r,n)),t===d)return t;if(t<g){let n=C(e);for(let o of r)if(o.length>=x&&n.includes(o))return g}return t}function O(r,e){if(!r)return!1;let t=F(e);if(!t.length){let n=u(e.trim());return n.length>0&&u(r).includes(n)}return M(t,[{text:r,weight:1}])>0}function M(r,e){if(!r.length)return 0;let t=e.filter(o=>o.text),n=0;for(let o of r){let s=0;for(let c of t){let f=I(o,c.text)*c.weight;f>s&&(s=f)}if(s===0)return 0;n+=s}return n}export{F as a,O as b,M as c};
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{d as a}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-HWRCQ6GH.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-KW7DNTG7.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-HFUWDHSL.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-Q7CGGH4O.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-QGXKAHG5.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-PO272ATG.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-M2CMCNR4.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-5USKKRUA.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";export{a as MaintenanceCompleteDialog};
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{d as a}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-QEWK3JB2.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-LW5W5IM2.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-Y6A3V724.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-7SOUIRZ7.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-KPORY5EL.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-OGIYAEPJ.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-UKOBV3FF.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-RIYW54TU.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";export{a as MaintenanceCompleteDialog};
|
||||
@@ -0,0 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{H as a,I as b,J as c,K as d,L as e,M as f,N as g,O as h,P as i,Q as j,R as k}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZNX3QIU5.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-YAGODM2Y.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-DVPW5S27.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-XWO2WENS.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZXKKAVZ3.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-E4FFPJAU.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-EALOT5GP.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-I7RCCBTV.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-QEWK3JB2.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-LW5W5IM2.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-Y6A3V724.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-7SOUIRZ7.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-KPORY5EL.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-OGIYAEPJ.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-5FRUENVF.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-U4NJYI3P.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-KFG47RQD.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-UKOBV3FF.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-RIYW54TU.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";export{b as __resetSettingsCacheForTests,a as getRowActionStyle,h as openCompleteDialog,c as openCreateObjectDialog,e as openCreateTaskDialog,d as openEditObjectDialog,f as openEditTaskDialog,g as openHistoryEditDialog,k as openObjectQuickActions,i as openQrDialog,j as openTaskQuickActions};
|
||||
@@ -1,2 +0,0 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{G as a,H as b,I as c,J as d,K as e,L as f,M as g,N as h,O as i,P as j,Q as k}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-BY3VP2I5.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-FJSDFRAZ.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-JFENKV7A.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-GN3YV45M.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-U7674FZW.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZXDIHJGM.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-GXXE2CW6.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-TX5O4PHL.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-HWRCQ6GH.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-KW7DNTG7.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-HFUWDHSL.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-Q7CGGH4O.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-QGXKAHG5.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-PO272ATG.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-IYMIR5HJ.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-C6NCKN5O.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-QKL6SKIH.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-M2CMCNR4.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-5USKKRUA.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";export{b as __resetSettingsCacheForTests,a as getRowActionStyle,h as openCompleteDialog,c as openCreateObjectDialog,e as openCreateTaskDialog,d as openEditObjectDialog,f as openEditTaskDialog,g as openHistoryEditDialog,k as openObjectQuickActions,i as openQrDialog,j as openTaskQuickActions};
|
||||
-2
@@ -1,2 +0,0 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZXDIHJGM.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-TX5O4PHL.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-PO272ATG.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-5USKKRUA.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";export{a as MaintenanceObjectDialog};
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-E4FFPJAU.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-I7RCCBTV.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-OGIYAEPJ.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-RIYW54TU.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";export{a as MaintenanceObjectDialog};
|
||||
@@ -0,0 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-5FRUENVF.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-U4NJYI3P.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";export{a as MaintenanceQrDialog};
|
||||
@@ -1,2 +0,0 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-IYMIR5HJ.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-C6NCKN5O.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";export{a as MaintenanceQrDialog};
|
||||
+44
-46
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as g}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-5USKKRUA.js";import{H as k,a as d,b,c as n,f as p,h as x,l as y,m as l,s as r,u as w}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";var m=u=>`${u.entry_id}/${u.task_id}`,_="__new__",o=class extends x{constructor(){super(...arguments);this._open=!1;this._loading=!1;this._adopting=!1;this._error="";this._setups=[];this._selected=new Set;this._baselines=new Map;this._targets=new Map;this._tasks=new Map;this._objects=[];this._offers=[];this._offerTicks=new Set;this._wiring=!1;this._localeReady=!1;this._wire=async()=>{if(this._wiring)return;let e=this._offers.filter(s=>this._offerTicks.has(m(s))).map(s=>({entry_id:s.entry_id,task_id:s.task_id}));if(e.length===0)return;this._error="";let t=await g(this,{type:"maintenance_supporter/integration_setups/wire_resets",items:e},{busy:s=>{this._wiring=s},onError:s=>{this._error=s}});t!==void 0&&(this.dispatchEvent(new CustomEvent("reset-counters-wired",{bubbles:!0,composed:!0,detail:t})),await this._loadOffers())};this._toggle=e=>{let t=new Set(this._selected);t.has(e)?t.delete(e):t.add(e),this._selected=t};this._adopt=async()=>{if(this._adopting)return;this._error="";let e=[...this._selected].map(s=>{let a=[...this._tasks.get(s)??[]],c={device_id:s,task_names:a},i=this._targets.get(s);i&&i!==_&&(c.entry_id=i);for(let f of a){let h=this._baselines.get(`${s} ${f}`),v=h?parseFloat(h):NaN;!isNaN(v)&&v>=0&&((c.baselines??={})[f]=v)}return c}).filter(s=>s.task_names.length>0);if(e.length===0)return;let t=await g(this,{type:"maintenance_supporter/integration_setups/adopt",selections:e},{busy:s=>{this._adopting=s},onError:s=>{this._error=s}});t!==void 0&&(this.dispatchEvent(new CustomEvent("integration-setups-adopted",{bubbles:!0,composed:!0,detail:t})),this._open=!1)}}get _lang(){return k(this.hass)}updated(e){e.has("hass")&&this.hass&&!this._localeReady&&(this._localeReady=!0,w(this._lang).then(()=>this.requestUpdate()))}_defaultTicks(e){return new Set(e.tasks.filter(t=>!t.covered_by).map(t=>t.task_name))}async open(){this._open=!0,this._loading=!0,this._error="",this._setups=[],this._selected=new Set,this._offers=[],this._loadOffers();let e=await g(this,{type:"maintenance_supporter/integration_setups/discover"},{onError:t=>{this._error=t}});if(e!==void 0){this._setups=e?.setups||[],this._selected=new Set(this._setups.map(t=>t.device_id)),this._baselines=new Map,this._targets=new Map(this._setups.map(t=>[t.device_id,t.target_entry_id||_])),this._tasks=new Map(this._setups.map(t=>[t.device_id,this._defaultTicks(t)]));try{let t=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/objects"});this._objects=(t.objects||[]).filter(s=>!s.object?.archived_at).map(s=>({entry_id:s.entry_id,name:s.object?.name||s.entry_id})).sort((s,a)=>s.name.localeCompare(a.name))}catch{this._objects=[]}}this._loading=!1}_close(){this._open=!1}async _loadOffers(){try{let e=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/integration_setups/reset_offers"});this._offers=e.offers||[],this._offerTicks=new Set(this._offers.filter(t=>!t.renamed).map(m))}catch{this._offers=[]}}_toggleOffer(e){let t=new Set(this._offerTicks),s=m(e);t.has(s)?t.delete(s):t.add(s),this._offerTicks=t}_renderOffers(e){if(this._offers.length===0)return p;let t=this._offers.filter(s=>this._offerTicks.has(m(s))).length;return n`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as g}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-RIYW54TU.js";import{H as k,a as d,b,c as n,f as p,h as x,l as y,m as l,s as r,u as w}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";var m=u=>`${u.entry_id}/${u.task_id}`,_="__new__",o=class extends x{constructor(){super(...arguments);this._open=!1;this._loading=!1;this._adopting=!1;this._error="";this._setups=[];this._selected=new Set;this._baselines=new Map;this._targets=new Map;this._tasks=new Map;this._objects=[];this._offers=[];this._offerTicks=new Set;this._wiring=!1;this._localeReady=!1;this._wire=async()=>{if(this._wiring)return;let e=this._offers.filter(s=>this._offerTicks.has(m(s))).map(s=>({entry_id:s.entry_id,task_id:s.task_id}));if(e.length===0)return;this._error="";let t=await g(this,{type:"maintenance_supporter/integration_setups/wire_resets",items:e},{busy:s=>{this._wiring=s},onError:s=>{this._error=s}});t!==void 0&&(this.dispatchEvent(new CustomEvent("reset-counters-wired",{bubbles:!0,composed:!0,detail:t})),await this._loadOffers())};this._toggle=e=>{let t=new Set(this._selected);t.has(e)?t.delete(e):t.add(e),this._selected=t};this._adopt=async()=>{if(this._adopting)return;this._error="";let e=[...this._selected].map(s=>{let a=[...this._tasks.get(s)??[]],c={device_id:s,task_names:a},i=this._targets.get(s);i&&i!==_&&(c.entry_id=i);for(let f of a){let h=this._baselines.get(`${s} ${f}`),v=h?parseFloat(h):NaN;!isNaN(v)&&v>=0&&((c.baselines??={})[f]=v)}return c}).filter(s=>s.task_names.length>0);if(e.length===0)return;let t=await g(this,{type:"maintenance_supporter/integration_setups/adopt",selections:e},{busy:s=>{this._adopting=s},onError:s=>{this._error=s}});t!==void 0&&(this.dispatchEvent(new CustomEvent("integration-setups-adopted",{bubbles:!0,composed:!0,detail:t})),this._open=!1)}}get _lang(){return k(this.hass)}updated(e){e.has("hass")&&this.hass&&!this._localeReady&&(this._localeReady=!0,w(this._lang).then(()=>this.requestUpdate()))}_defaultTicks(e){return new Set(e.tasks.filter(t=>!t.covered_by).map(t=>t.task_name))}async open(){this._open=!0,this._loading=!0,this._error="",this._setups=[],this._selected=new Set,this._offers=[],this._loadOffers();let e=await g(this,{type:"maintenance_supporter/integration_setups/discover"},{onError:t=>{this._error=t}});if(e!==void 0){this._setups=e?.setups||[],this._selected=new Set(this._setups.map(t=>t.device_id)),this._baselines=new Map,this._targets=new Map(this._setups.map(t=>[t.device_id,t.target_entry_id||_])),this._tasks=new Map(this._setups.map(t=>[t.device_id,this._defaultTicks(t)]));try{let t=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/objects"});this._objects=(t.objects||[]).filter(s=>!s.object?.archived_at).map(s=>({entry_id:s.entry_id,name:s.object?.name||s.entry_id})).sort((s,a)=>s.name.localeCompare(a.name))}catch{this._objects=[]}}this._loading=!1}_close(){this._open=!1}async _loadOffers(){try{let e=await this.hass.connection.sendMessagePromise({type:"maintenance_supporter/integration_setups/reset_offers"});this._offers=e.offers||[],this._offerTicks=new Set(this._offers.filter(t=>!t.renamed).map(m))}catch{this._offers=[]}}_toggleOffer(e){let t=new Set(this._offerTicks),s=m(e);t.has(s)?t.delete(s):t.add(s),this._offerTicks=t}_renderOffers(e){if(this._offers.length===0)return p;let t=this._offers.filter(s=>this._offerTicks.has(m(s))).length;return n`
|
||||
<div class="offers">
|
||||
<div class="offers-title">${r("reset_offers_title",e)}</div>
|
||||
<div class="hint">${r("reset_offers_hint",e)}</div>
|
||||
@@ -1,2 +0,0 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{c as a,d as b,e as c}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-GXXE2CW6.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-TX5O4PHL.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-QGXKAHG5.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-PO272ATG.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-QKL6SKIH.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-M2CMCNR4.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-5USKKRUA.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-ZW2EWBUR.js";export{c as MaintenanceTaskDialog,b as applyTypeFields,a as typeFieldsFromConfig};
|
||||
@@ -0,0 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{c as a,d as b,e as c}from"/maintenance_supporter_panelfiles/panel-chunks/chunk-EALOT5GP.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-I7RCCBTV.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-KPORY5EL.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-OGIYAEPJ.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-KFG47RQD.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-UKOBV3FF.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-RIYW54TU.js";import"/maintenance_supporter_panelfiles/panel-chunks/chunk-4CECVKQ7.js";export{c as MaintenanceTaskDialog,b as applyTypeFields,a as typeFieldsFromConfig};
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as w,b as $}from"./chunk-JDDRFTDX.js";import{B as u,a as h,b as o,d as m,e as y,f as v,g as l,h as g,i as _,j as f,k as x,n as p}from"./chunk-5FHGCMEA.js";import{a as n,g as i}from"./chunk-TAYZJBPE.js";var E=80,s=class extends y{constructor(){super(...arguments);this._config={type:""};this._status=null;this._busy=!1;this._error="";this._localMonthly="";this._localYearly="";this._dirty=!1;this._loaded=!1}setConfig(t){this._config=t}getCardSize(){return 2}get _lang(){return f(this.hass)}get _isAdmin(){return this.hass?.user?.is_admin??!0}updated(t){super.updated(t),_(this,t),t.has("hass")&&this.hass&&!this._loaded&&(this._loaded=!0,this._load())}async _load(){let t=await u(this,{type:"maintenance_supporter/budget_status"},{onError:e=>{this._error=e}});t&&(this._status=t,x(t),this._localMonthly=t.monthly_budget?String(t.monthly_budget):"",this._localYearly=t.yearly_budget?String(t.yearly_budget):"",this._dirty=!1)}async _save(){if(!this._isAdmin)return;this._error="";let t=this._localMonthly.trim()===""?0:parseFloat(this._localMonthly),e=this._localYearly.trim()===""?0:parseFloat(this._localYearly),a={};!isNaN(t)&&t>=0&&(a.budget_monthly=t),!isNaN(e)&&e>=0&&(a.budget_yearly=e),await u(this,{type:"maintenance_supporter/global/update",settings:a},{busy:d=>{this._busy=d},reload:()=>this._load(),onError:d=>{this._error=d}})}_onDeepLink(){history.pushState(null,"","/maintenance-supporter?ms_action=open_budget"),window.dispatchEvent(new CustomEvent("location-changed"))}render(){let t=this._lang,e=this._status;if(!e)return o`<ha-card><div class="loading">${i("loading",t)}</div></ha-card>`;let a=g(e),d=e.alert_threshold_pct??E,k=[{label:i("budget_monthly",t),spent:e.monthly_spent||0,budget:e.monthly_budget||0},{label:i("budget_yearly",t),spent:e.yearly_spent||0,budget:e.yearly_budget||0}];return o`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as w,b as $}from"./chunk-2E6THN76.js";import{C as u,a as h,b as o,d as m,f as y,g as v,h as l,i as g,j as _,k as f,l as x,o as p}from"./chunk-XJSTERIM.js";import{a as n,g as i}from"./chunk-IUWFIZIT.js";var E=80,s=class extends y{constructor(){super(...arguments);this._config={type:""};this._status=null;this._busy=!1;this._error="";this._localMonthly="";this._localYearly="";this._dirty=!1;this._loaded=!1}setConfig(t){this._config=t}getCardSize(){return 2}get _lang(){return f(this.hass)}get _isAdmin(){return this.hass?.user?.is_admin??!0}updated(t){super.updated(t),_(this,t),t.has("hass")&&this.hass&&!this._loaded&&(this._loaded=!0,this._load())}async _load(){let t=await u(this,{type:"maintenance_supporter/budget_status"},{onError:e=>{this._error=e}});t&&(this._status=t,x(t),this._localMonthly=t.monthly_budget?String(t.monthly_budget):"",this._localYearly=t.yearly_budget?String(t.yearly_budget):"",this._dirty=!1)}async _save(){if(!this._isAdmin)return;this._error="";let t=this._localMonthly.trim()===""?0:parseFloat(this._localMonthly),e=this._localYearly.trim()===""?0:parseFloat(this._localYearly),a={};!isNaN(t)&&t>=0&&(a.budget_monthly=t),!isNaN(e)&&e>=0&&(a.budget_yearly=e),await u(this,{type:"maintenance_supporter/global/update",settings:a},{busy:d=>{this._busy=d},reload:()=>this._load(),onError:d=>{this._error=d}})}_onDeepLink(){history.pushState(null,"","/maintenance-supporter?ms_action=open_budget"),window.dispatchEvent(new CustomEvent("location-changed"))}render(){let t=this._lang,e=this._status;if(!e)return o`<ha-card><div class="loading">${i("loading",t)}</div></ha-card>`;let a=g(e),d=e.alert_threshold_pct??E,k=[{label:i("budget_monthly",t),spent:e.monthly_spent||0,budget:e.monthly_budget||0},{label:i("budget_yearly",t),spent:e.yearly_spent||0,budget:e.yearly_budget||0}];return o`
|
||||
<ha-card>
|
||||
<div class="card-content">
|
||||
<div class="header">
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as t}from"./chunk-5FHGCMEA.js";function e(o){let r=window;r.customCards=r.customCards||[],r.customCards.some(a=>a.type===o.type)||r.customCards.push(o)}var d=t`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as t}from"./chunk-XJSTERIM.js";function e(o){let r=window;r.customCards=r.customCards||[],r.customCards.some(a=>a.type===o.type)||r.customCards.push(o)}var d=t`
|
||||
ha-card { overflow: hidden; }
|
||||
.card-content {
|
||||
padding: 16px;
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as y,b as s,d,e as g,f as o,g as f,q as m}from"./chunk-5FHGCMEA.js";import{a,g as l}from"./chunk-TAYZJBPE.js";function $(n){let t=m("2001-02-03",n).match(/\d+/g)||[],e=v=>t.findIndex(_=>Number(_)===v),h=e(2001),c=e(2),u=e(3);return h===0?"YMD":c>=0&&u>=0&&c<u?"MDY":"DMY"}function p(n,i,t){if(n<1e3||n>9999||i<1||i>12||t<1||t>31)return null;let e=new Date(n,i-1,t);return e.getFullYear()!==n||e.getMonth()!==i-1||e.getDate()!==t?null:`${n}-${String(i).padStart(2,"0")}-${String(t).padStart(2,"0")}`}function b(n,i){let t=n.trim(),e;if(e=t.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/))return p(+e[1],+e[2],+e[3]);if(e=t.match(/^(\d{4})$/))return p(+e[1],1,1);if(e=t.match(/^(\d{1,2})[./](\d{4})$/))return p(+e[2],+e[1],1);if(e=t.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/))return p(+e[3],+e[2],+e[1]);if(e=t.match(/^(\d{1,2})[/-](\d{1,2})[/-](\d{4})$/)){let h=+e[1],c=+e[2],u=+e[3];return $(i)==="MDY"?p(u,h,c):p(u,c,h)}return null}function x(n,i){if(i)switch(n){case"date":return i.split("T")[0];case"time":return i.length===5?`${i}:00`:i;case"datetime":{let[t,e="00:00:00"]=i.split("T");return`${t} ${e.length===5?`${e}:00`:e}`}}}function k(n,i){if(typeof i!="string"||!i)return"";switch(n){case"date":return i.slice(0,10);case"time":return i.slice(0,5);case"datetime":{let[t,e="00:00:00"]=i.split(" ");return`${t}T${e.length===5?`${e}:00`:e}`}}}var r=class extends g{constructor(){super(...arguments);this.kind="date";this.label="";this.value="";this.clearable=!1;this.disabled=!1;this.required=!1;this.lang="en";this._typing=!1;this._typed="";this._typedInvalid=!1}_startTyping(){this._typed=this.value,this._typedInvalid=!1,this._typing=!0,this.updateComplete.then(()=>this.shadowRoot?.querySelector("input.typed")?.focus())}_commitTyped(){if(!this._typed.trim()){this._typing=!1;return}let t=b(this._typed,this.lang);if(!t){this._typedInvalid=!0;return}this._typing=!1,this._typedInvalid=!1,this._emit(t)}_onTypedKey(t){t.key==="Enter"?(t.preventDefault(),this._commitTyped()):t.key==="Escape"&&(t.preventDefault(),this._typing=!1,this._typedInvalid=!1)}_selector(){switch(this.kind){case"date":return{date:{}};case"time":return{time:{no_second:!0}};case"datetime":return{datetime:{}}}}_onSelectorChange(t){t.stopPropagation(),this._emit(k(this.kind,t.detail?.value))}_clear(){this._emit("")}_emit(t){t!==this.value&&(this.value=t,this.dispatchEvent(new CustomEvent("value-changed",{bubbles:!0,composed:!0,detail:{value:t}})))}render(){return s`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as y,b as s,d,f as g,g as o,h as f,r as m}from"./chunk-XJSTERIM.js";import{a,g as l}from"./chunk-IUWFIZIT.js";function $(n){let t=m("2001-02-03",n).match(/\d+/g)||[],e=v=>t.findIndex(_=>Number(_)===v),h=e(2001),c=e(2),u=e(3);return h===0?"YMD":c>=0&&u>=0&&c<u?"MDY":"DMY"}function p(n,i,t){if(n<1e3||n>9999||i<1||i>12||t<1||t>31)return null;let e=new Date(n,i-1,t);return e.getFullYear()!==n||e.getMonth()!==i-1||e.getDate()!==t?null:`${n}-${String(i).padStart(2,"0")}-${String(t).padStart(2,"0")}`}function b(n,i){let t=n.trim(),e;if(e=t.match(/^(\d{4})-(\d{1,2})-(\d{1,2})$/))return p(+e[1],+e[2],+e[3]);if(e=t.match(/^(\d{4})$/))return p(+e[1],1,1);if(e=t.match(/^(\d{1,2})[./](\d{4})$/))return p(+e[2],+e[1],1);if(e=t.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/))return p(+e[3],+e[2],+e[1]);if(e=t.match(/^(\d{1,2})[/-](\d{1,2})[/-](\d{4})$/)){let h=+e[1],c=+e[2],u=+e[3];return $(i)==="MDY"?p(u,h,c):p(u,c,h)}return null}function x(n,i){if(i)switch(n){case"date":return i.split("T")[0];case"time":return i.length===5?`${i}:00`:i;case"datetime":{let[t,e="00:00:00"]=i.split("T");return`${t} ${e.length===5?`${e}:00`:e}`}}}function k(n,i){if(typeof i!="string"||!i)return"";switch(n){case"date":return i.slice(0,10);case"time":return i.slice(0,5);case"datetime":{let[t,e="00:00:00"]=i.split(" ");return`${t}T${e.length===5?`${e}:00`:e}`}}}var r=class extends g{constructor(){super(...arguments);this.kind="date";this.label="";this.value="";this.clearable=!1;this.disabled=!1;this.required=!1;this.lang="en";this._typing=!1;this._typed="";this._typedInvalid=!1}_startTyping(){this._typed=this.value,this._typedInvalid=!1,this._typing=!0,this.updateComplete.then(()=>this.shadowRoot?.querySelector("input.typed")?.focus())}_commitTyped(){if(!this._typed.trim()){this._typing=!1;return}let t=b(this._typed,this.lang);if(!t){this._typedInvalid=!0;return}this._typing=!1,this._typedInvalid=!1,this._emit(t)}_onTypedKey(t){t.key==="Enter"?(t.preventDefault(),this._commitTyped()):t.key==="Escape"&&(t.preventDefault(),this._typing=!1,this._typedInvalid=!1)}_selector(){switch(this.kind){case"date":return{date:{}};case"time":return{time:{no_second:!0}};case"datetime":return{datetime:{}}}}_onSelectorChange(t){t.stopPropagation(),this._emit(k(this.kind,t.detail?.value))}_clear(){this._emit("")}_emit(t){t!==this.value&&(this.value=t,this.dispatchEvent(new CustomEvent("value-changed",{bubbles:!0,composed:!0,detail:{value:t}})))}render(){return s`
|
||||
<div class="field">
|
||||
${this.label?s`<span class="label">${this.label}${this.required?s`<span class="req">*</span>`:d}</span>`:d}
|
||||
<div class="row">
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as u,b as s,d as r,e as _,f as m,g as o,j as d,z as c}from"./chunk-5FHGCMEA.js";import{a as i,g as p}from"./chunk-TAYZJBPE.js";var g={default_warning_days:[0,365],default_consumable_threshold:[1,90],battery_low_percent:[1,90],battery_recovered_percent:[20,100],archive_oneoff_days:[0,3650],delete_archived_oneoff_days:[0,3650],notify_due_soon_interval_hours:[0,720],notify_overdue_interval_hours:[0,720],notify_triggered_interval_hours:[0,720],max_notifications_per_day:[0,1e3],notification_bundle_threshold:[2,20],snooze_duration_hours:[1,168],warranty_reminder_days:[1,365],budget_alert_threshold:[10,100],currency_decimals:[0,3]};var b=[0,14],x=[0,1440],y=[1,1e4],R=[0,365],A=15,E=[.1,.9],T=[0,365],$=[.01,1e4],G=[.01,1e5];var n=class extends _{constructor(){super(...arguments);this._open=!1;this._title="";this._message="";this._confirmText="";this._danger=!1;this._inputLabel="";this._inputType="";this._options=null;this._inputValue="";this._resolve=null;this._promptResolve=null}confirm(e){return this._title=e.title,this._message=e.message,this._confirmText=e.confirmText||"OK",this._danger=e.danger||!1,this._inputLabel="",this._inputType="",this._options=null,this._inputValue="",this._open=!0,new Promise(t=>{this._resolve=t,this._promptResolve=null})}prompt(e){return this._title=e.title,this._message=e.message,this._confirmText=e.confirmText||"OK",this._danger=e.danger||!1,this._inputLabel=e.inputLabel||"",this._inputType=e.inputType||"text",this._options=e.options&&e.options.length?e.options:null,this._inputValue=e.inputValue||"",this._open=!0,new Promise(t=>{this._promptResolve=t,this._resolve=null})}_cancel(){this._open=!1,this._promptResolve&&(this._promptResolve({confirmed:!1,value:""}),this._promptResolve=null),this._resolve?.(!1),this._resolve=null}_confirmAction(){this._open=!1,this._promptResolve&&(this._promptResolve({confirmed:!0,value:this._inputValue}),this._promptResolve=null),this._resolve?.(!0),this._resolve=null}render(){if(!this._open)return r;let e=d(this.hass);return s`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{A as c,a as u,b as s,d as r,f as _,g as m,h as o,k as d}from"./chunk-XJSTERIM.js";import{a as i,g as p}from"./chunk-IUWFIZIT.js";var g={default_warning_days:[0,365],default_consumable_threshold:[1,90],battery_low_percent:[1,90],battery_recovered_percent:[20,100],archive_oneoff_days:[0,3650],delete_archived_oneoff_days:[0,3650],notify_due_soon_interval_hours:[0,720],notify_overdue_interval_hours:[0,720],notify_triggered_interval_hours:[0,720],max_notifications_per_day:[0,1e3],notification_bundle_threshold:[2,20],snooze_duration_hours:[1,168],warranty_reminder_days:[1,365],budget_alert_threshold:[10,100],currency_decimals:[0,3]};var b=[0,14],x=[0,1440],y=[1,1e4],R=[0,365],A=15,E=[.1,.9],T=[0,365],$=[.01,1e4],G=[.01,1e5];var n=class extends _{constructor(){super(...arguments);this._open=!1;this._title="";this._message="";this._confirmText="";this._danger=!1;this._inputLabel="";this._inputType="";this._options=null;this._inputValue="";this._resolve=null;this._promptResolve=null}confirm(e){return this._title=e.title,this._message=e.message,this._confirmText=e.confirmText||"OK",this._danger=e.danger||!1,this._inputLabel="",this._inputType="",this._options=null,this._inputValue="",this._open=!0,new Promise(t=>{this._resolve=t,this._promptResolve=null})}prompt(e){return this._title=e.title,this._message=e.message,this._confirmText=e.confirmText||"OK",this._danger=e.danger||!1,this._inputLabel=e.inputLabel||"",this._inputType=e.inputType||"text",this._options=e.options&&e.options.length?e.options:null,this._inputValue=e.inputValue||"",this._open=!0,new Promise(t=>{this._promptResolve=t,this._resolve=null})}_cancel(){this._open=!1,this._promptResolve&&(this._promptResolve({confirmed:!1,value:""}),this._promptResolve=null),this._resolve?.(!1),this._resolve=null}_confirmAction(){this._open=!1,this._promptResolve&&(this._promptResolve({confirmed:!0,value:this._inputValue}),this._promptResolve=null),this._resolve?.(!0),this._resolve=null}render(){if(!this._open)return r;let e=d(this.hass);return s`
|
||||
<ha-dialog open @closed=${this._cancel}>
|
||||
<div class="dialog-title">${this._title}</div>
|
||||
<div class="content">
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
var w=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var B=(n,e,t,r)=>{for(var o=r>1?void 0:r?y(e,t):e,i=n.length-1,s;i>=0;i--)(s=n[i])&&(o=(r?s(e,t,o):s(o))||o);return r&&o&&w(e,t,o),o};var W={ok:"var(--success-color, #4caf50)",due_soon:"var(--warning-color, #ff9800)",overdue:"var(--error-color, #f44336)",triggered:"var(--deep-orange-color, #ff5722)",archived:"var(--disabled-color, #9e9e9e)",paused:"var(--info-color, #2196f3)"},C=["overdue","triggered","due_soon","ok"],j=["overdue","triggered","due_soon"],Y=Object.fromEntries(C.map((n,e)=>[n,e]));var z={ok:"mdi:check-circle",due_soon:"mdi:alert-circle",overdue:"mdi:alert-octagon",triggered:"mdi:bell-alert",archived:"mdi:archive-outline",paused:"mdi:pause-circle-outline",completed:"mdi:check-circle",skipped:"mdi:skip-next",missed:"mdi:calendar-remove",reset:"mdi:refresh"};var D="2.100.0";var b="en",x=(()=>{let n=window;return n.__msLocales||(n.__msLocales={store:{},inflight:{}}),n.__msLocales})(),l=x.store,m=x.inflight;function q(n){l.en=Object.assign({},n,l.en??{})}var O=new Set(["de","nl","fr","it","es","pt","pt-br","ru","uk","pl","cs","sv","zh","da","fi","nb","ja","hi","hu","ko","tr"]),R="/maintenance_supporter_locales";function _(n){let e=(n||b).toLowerCase();return e.startsWith("pt")&&e.endsWith("br")?"pt-br":e.substring(0,2)}function J(n,e,t){let r=_(e);return l[r]?.[n]??l.en?.[n]??t??n}function Q(n){let e=_(n);return e===b||e in l}function X(n){let e=_(n);return e===b||e in l||!O.has(e)?Promise.resolve():(e in m||(m[e]=fetch(`${R}/${e}.json?v=${D}`).then(t=>t.ok?t.json():null).then(t=>{t?l[e]=t:delete m[e]}).catch(()=>{delete m[e]})),m[e])}var L=window.__msDateTimePrefs??={},$=864e5,a=(n,e=2)=>String(n).padStart(e,"0"),A=new Map;function d(n){let e=A.get(n);if(e===void 0){try{e=new Intl.DateTimeFormat("en-US",{timeZone:n,hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{e=null}A.set(n,e)}return e}var S;function v(){if(S===void 0){let n;try{n=new Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}S=n&&d(n)?n:null}return S}function E(){return v()??"UTC"}function f(){let n=L.serverTimeZone;return n&&d(n)?n:E()}function en(){let n=v();return L.timeZone!=="server"&&n?n:f()}function p(n,e){let t=d(e)??d(E())??d("UTC"),r={};for(let o of t.formatToParts(n))o.type!=="literal"&&(r[o.type]=Number(o.value));return{y:r.year,mo:r.month,d:r.day,h:r.hour%24,mi:r.minute,s:r.second}}var N=n=>`${a(n.y,4)}-${a(n.mo)}-${a(n.d)}`;function M(n,e){return N(p(+n,e))}function I(n,e){let t=p(+n,e);return`${N(t)}T${a(t.h)}:${a(t.mi)}`}function tn(){return M(Date.now(),f())}function rn(){return I(Date.now(),f())}function h(n,e){let t=p(n,e);return Date.UTC(t.y,t.mo-1,t.d,t.h,t.mi,t.s)-Math.floor(n/1e3)*1e3}function P(n,e,t,r,o,i,s){let u=Date.UTC(n,e-1,t,r,o,i),c=h(u-$,s),g=h(u+$,s);for(let T of c===g?[c]:[c,g])if(h(u-T,s)===T)return u-T;return u-c}var U=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?)?$/;var Z=new Map,F=2e4;function k(n,e,t){if(n.has(e))return n.get(e);n.size>=F&&n.clear();let r=t();return n.set(e,r),r}function on(n){if(typeof n!="string"||!n)return NaN;let e=U.exec(n);if(!e)return Date.parse(n);let t=f();return k(Z,`${t}|${n}`,()=>{let[r,o,i,s,u,c]=[e[1],e[2],e[3],e[4]??"0",e[5]??"0",e[6]??"0"].map(Number);if(o<1||o>12||new Date(Date.UTC(r,o-1,i)).getUTCDate()!==i||s>23||u>59||c>59)return NaN;let g=e[7]?Math.floor(+`0.${e[7]}`*1e3):0;return P(r,o,i,s,u,c,t)+g})}function sn(n){if(typeof n!="string"||!n)return"";let e=U.exec(n);if(e)return`${e[1]}-${e[2]}-${e[3]}T${e[4]??"00"}:${e[5]??"00"}:${e[6]??"00"}`;let t=Date.parse(n);if(!Number.isFinite(t))return"";let r=p(t,f());return`${N(r)}T${a(r.h)}:${a(r.mi)}:${a(r.s)}`}export{B as a,W as b,j as c,z as d,q as e,_ as f,J as g,Q as h,X as i,f as j,en as k,M as l,I as m,tn as n,rn as o,on as p,sn as q};
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
var w=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var B=(n,e,t,r)=>{for(var o=r>1?void 0:r?y(e,t):e,i=n.length-1,s;i>=0;i--)(s=n[i])&&(o=(r?s(e,t,o):s(o))||o);return r&&o&&w(e,t,o),o};var W={ok:"var(--success-color, #4caf50)",due_soon:"var(--warning-color, #ff9800)",overdue:"var(--error-color, #f44336)",triggered:"var(--deep-orange-color, #ff5722)",archived:"var(--disabled-color, #9e9e9e)",paused:"var(--info-color, #2196f3)"},C=["overdue","triggered","due_soon","ok"],j=["overdue","triggered","due_soon"],Y=Object.fromEntries(C.map((n,e)=>[n,e]));var z={ok:"mdi:check-circle",due_soon:"mdi:alert-circle",overdue:"mdi:alert-octagon",triggered:"mdi:bell-alert",archived:"mdi:archive-outline",paused:"mdi:pause-circle-outline",completed:"mdi:check-circle",skipped:"mdi:skip-next",missed:"mdi:calendar-remove",reset:"mdi:refresh"};var D="2.102.0";var b="en",x=(()=>{let n=window;return n.__msLocales||(n.__msLocales={store:{},inflight:{}}),n.__msLocales})(),l=x.store,m=x.inflight;function q(n){l.en=Object.assign({},n,l.en??{})}var O=new Set(["de","nl","fr","it","es","pt","pt-br","ru","uk","pl","cs","sv","zh","da","fi","nb","ja","hi","hu","ko","tr"]),R="/maintenance_supporter_locales";function _(n){let e=(n||b).toLowerCase();return e.startsWith("pt")&&e.endsWith("br")?"pt-br":e.substring(0,2)}function J(n,e,t){let r=_(e);return l[r]?.[n]??l.en?.[n]??t??n}function Q(n){let e=_(n);return e===b||e in l}function X(n){let e=_(n);return e===b||e in l||!O.has(e)?Promise.resolve():(e in m||(m[e]=fetch(`${R}/${e}.json?v=${D}`).then(t=>t.ok?t.json():null).then(t=>{t?l[e]=t:delete m[e]}).catch(()=>{delete m[e]})),m[e])}var L=window.__msDateTimePrefs??={},$=864e5,a=(n,e=2)=>String(n).padStart(e,"0"),A=new Map;function d(n){let e=A.get(n);if(e===void 0){try{e=new Intl.DateTimeFormat("en-US",{timeZone:n,hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{e=null}A.set(n,e)}return e}var S;function v(){if(S===void 0){let n;try{n=new Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}S=n&&d(n)?n:null}return S}function E(){return v()??"UTC"}function f(){let n=L.serverTimeZone;return n&&d(n)?n:E()}function en(){let n=v();return L.timeZone!=="server"&&n?n:f()}function p(n,e){let t=d(e)??d(E())??d("UTC"),r={};for(let o of t.formatToParts(n))o.type!=="literal"&&(r[o.type]=Number(o.value));return{y:r.year,mo:r.month,d:r.day,h:r.hour%24,mi:r.minute,s:r.second}}var N=n=>`${a(n.y,4)}-${a(n.mo)}-${a(n.d)}`;function M(n,e){return N(p(+n,e))}function I(n,e){let t=p(+n,e);return`${N(t)}T${a(t.h)}:${a(t.mi)}`}function tn(){return M(Date.now(),f())}function rn(){return I(Date.now(),f())}function h(n,e){let t=p(n,e);return Date.UTC(t.y,t.mo-1,t.d,t.h,t.mi,t.s)-Math.floor(n/1e3)*1e3}function P(n,e,t,r,o,i,s){let u=Date.UTC(n,e-1,t,r,o,i),c=h(u-$,s),g=h(u+$,s);for(let T of c===g?[c]:[c,g])if(h(u-T,s)===T)return u-T;return u-c}var U=/^(\d{4})-(\d{2})-(\d{2})(?:[T ](\d{2}):(\d{2})(?::(\d{2})(?:\.(\d+))?)?)?$/;var Z=new Map,F=2e4;function k(n,e,t){if(n.has(e))return n.get(e);n.size>=F&&n.clear();let r=t();return n.set(e,r),r}function on(n){if(typeof n!="string"||!n)return NaN;let e=U.exec(n);if(!e)return Date.parse(n);let t=f();return k(Z,`${t}|${n}`,()=>{let[r,o,i,s,u,c]=[e[1],e[2],e[3],e[4]??"0",e[5]??"0",e[6]??"0"].map(Number);if(o<1||o>12||new Date(Date.UTC(r,o-1,i)).getUTCDate()!==i||s>23||u>59||c>59)return NaN;let g=e[7]?Math.floor(+`0.${e[7]}`*1e3):0;return P(r,o,i,s,u,c,t)+g})}function sn(n){if(typeof n!="string"||!n)return"";let e=U.exec(n);if(e)return`${e[1]}-${e[2]}-${e[3]}T${e[4]??"00"}:${e[5]??"00"}:${e[6]??"00"}`;let t=Date.parse(n);if(!Number.isFinite(t))return"";let r=p(t,f());return`${N(r)}T${a(r.h)}:${a(r.mi)}:${a(r.s)}`}export{B as a,W as b,j as c,z as d,q as e,_ as f,J as g,Q as h,X as i,f as j,en as k,M as l,I as m,tn as n,rn as o,on as p,sn as q};
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as i}from"./chunk-FC7BLTBL.js";var r={operatorWriteEnabled:!1,operatorIds:[]};function f(e,t=r){return e?e.is_admin?!0:t.operatorWriteEnabled&&t.operatorIds.includes(e.id):!1}function l(e){return e==="use"?"use":"purchase"}var c=e=>typeof e=="number"&&Number.isFinite(e)?e:null;function b(e){let t=c(e?.cost);if(t===null)return null;let n=c(e?.package_size);return n&&n>0?t/n:t}var d=["buttons_compact","buttons","icons"];function _(e){let[t,n]=i.default_warning_days,s=e?.general?.default_warning_days,a=e?.general?.row_action_style;return{features:{...o.features,...e?.features??{}},defaultWarningDays:typeof s=="number"&&Number.isFinite(s)&&s>=t&&s<=n?s:o.defaultWarningDays,rowActionStyle:d.includes(a??"")?a:o.rowActionStyle,access:{operatorWriteEnabled:e?.operator_write_enabled===!0,operatorIds:Array.isArray(e?.admin_panel_user_ids)?e.admin_panel_user_ids.filter(p=>typeof p=="string"):[]},budget:e?.budget??null,rowActionNoticePending:e?.general?.row_action_notice_pending===!0,refsInLists:e?.general?.ref_numbers_in_lists===!0,objectsTableColumns:Array.isArray(e?.objects_table_columns)?e.objects_table_columns:void 0,partsCostMode:l(e?.budget?.parts_cost_mode)}}var o={features:{adaptive:!1,seasonal:!1,environmental:!1,budget:!1,groups:!1,checklists:!1,schedule_time:!1,completion_actions:!1,places:!1},defaultWarningDays:7,rowActionStyle:"buttons_compact",access:r,budget:null,rowActionNoticePending:!1,refsInLists:!1,objectsTableColumns:void 0,partsCostMode:"purchase"};function u(){let e=window;return e.__msSettingsCache??={promise:null}}function w(e){let t=u();if(t.promise)return t.promise;let n=e.connection.sendMessagePromise({type:"maintenance_supporter/settings"}).then(s=>_(s)).catch(()=>(t.promise===n&&(t.promise=null),o));return t.promise=n,n}function h(){u().promise=null}export{r as a,f as b,b as c,w as d,h as e};
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as i}from"./chunk-DGKPZQYM.js";var r={operatorWriteEnabled:!1,operatorIds:[]};function f(e,t=r){return e?e.is_admin?!0:t.operatorWriteEnabled&&t.operatorIds.includes(e.id):!1}function l(e){return e==="use"?"use":"purchase"}var c=e=>typeof e=="number"&&Number.isFinite(e)?e:null;function b(e){let t=c(e?.cost);if(t===null)return null;let n=c(e?.package_size);return n&&n>0?t/n:t}var d=["buttons_compact","buttons","icons"];function _(e){let[t,n]=i.default_warning_days,s=e?.general?.default_warning_days,a=e?.general?.row_action_style;return{features:{...o.features,...e?.features??{}},defaultWarningDays:typeof s=="number"&&Number.isFinite(s)&&s>=t&&s<=n?s:o.defaultWarningDays,rowActionStyle:d.includes(a??"")?a:o.rowActionStyle,access:{operatorWriteEnabled:e?.operator_write_enabled===!0,operatorIds:Array.isArray(e?.admin_panel_user_ids)?e.admin_panel_user_ids.filter(p=>typeof p=="string"):[]},budget:e?.budget??null,rowActionNoticePending:e?.general?.row_action_notice_pending===!0,refsInLists:e?.general?.ref_numbers_in_lists===!0,objectsTableColumns:Array.isArray(e?.objects_table_columns)?e.objects_table_columns:void 0,partsCostMode:l(e?.budget?.parts_cost_mode)}}var o={features:{adaptive:!1,seasonal:!1,environmental:!1,budget:!1,groups:!1,checklists:!1,schedule_time:!1,completion_actions:!1,places:!1},defaultWarningDays:7,rowActionStyle:"buttons_compact",access:r,budget:null,rowActionNoticePending:!1,refsInLists:!1,objectsTableColumns:void 0,partsCostMode:"purchase"};function u(){let e=window;return e.__msSettingsCache??={promise:null}}function w(e){let t=u();if(t.promise)return t.promise;let n=e.connection.sendMessagePromise({type:"maintenance_supporter/settings"}).then(s=>_(s)).catch(()=>(t.promise===n&&(t.promise=null),o));return t.promise=n,n}function h(){u().promise=null}export{r as a,f as b,b as c,w as d,h as e};
|
||||
+2
-2
@@ -1,2 +1,2 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{p as l}from"./chunk-TAYZJBPE.js";function c(r){if(!r)return[];let n=[],i=r.photo_doc_id;typeof i=="string"&&n.push(i);let o=r.photo_doc_ids;Array.isArray(o)&&n.push(...o);let t=[];for(let e of n){if(typeof e!="string")continue;let s=e.trim();if(!(!s||t.includes(s))&&(t.push(s),t.length>=10))break}return t}var f=20;function _(){let r=new Uint8Array(4);return(globalThis.crypto??{getRandomValues:n=>n.map(()=>Math.floor(Math.random()*256))}).getRandomValues(r),Array.from(r,n=>n.toString(16).padStart(2,"0")).join("")}function d(r){let n=r?.reading_values;if(!Array.isArray(n))return[];let i=[],o=new Set;for(let t of n){if(!t||typeof t!="object")continue;let e=t;typeof e.id!="string"||!e.id||o.has(e.id)||typeof e.value!="number"||!Number.isFinite(e.value)||(o.add(e.id),i.push({id:e.id,name:typeof e.name=="string"?e.name:e.id,unit:typeof e.unit=="string"?e.unit:null,value:e.value}))}return i}function y(r){return r.filter(n=>n.type==="completed"&&(n.reading_value!=null||d(n).length>0)).sort((n,i)=>n.timestamp.localeCompare(i.timestamp))}function R(r){return y(r??[]).map(n=>({timestamp:n.timestamp,values:d(n)})).filter(n=>n.values.length>0)}function h(r,n,i){let o;for(let t of r){if(i!==void 0){let s=l(t.timestamp);if(!isNaN(s)&&s>=i)break}let e=t.values.find(s=>s.id===n);e&&(o=e)}return o}function k(r,n,i){let o=d(n).find(e=>e.id===i);if(!o)return null;let t=null;for(let e of y(r)){if(e.timestamp>=n.timestamp)break;let s=d(e).find(a=>a.id===i);s&&(t=s.value)}return t==null?null:o.value-t}function w(r){let n=new Set,i=new Set;for(let o of r){let t=(o.name||"").trim().toLowerCase();t&&(n.has(t)?i.add(o.id):n.add(t))}return i}function S(r){let n=[],i=new Set,o=new Set;for(let t of r){let e=(t.name||"").trim();if(!(!e||i.has(t.id)||o.has(e.toLowerCase()))&&(i.add(t.id),o.add(e.toLowerCase()),n.push({id:t.id,name:e,unit:(t.unit||"").trim()||null}),n.length>=f))break}return n}function g(r,n,i,o){let t=i,e=u=>typeof u=="string"?u:null,s=u=>typeof u=="number"?u:null,a=e(t.timestamp)??"";return{entry_id:r,task_id:n,original_timestamp:a,type:e(t.type)||"completed",timestamp:a,notes:e(t.notes),cost:s(t.cost),duration:s(t.duration),completed_by:e(t.completed_by),used_parts:Array.isArray(t.used_parts)?t.used_parts:null,photo_doc_ids:c(t),reading_value:s(t.reading_value),reading_values:d(t),readings:o?.readings??[],task_type:o?.type??null,reading_unit:o?.reading_unit??null}}async function v(r,n,i,o){let e=(await r.connection.sendMessagePromise({type:"maintenance_supporter/object",entry_id:n})).tasks?.find(a=>a.id===i);if(!e)return null;let s=e.history?.find(a=>a.timestamp===o);return s||(s=(await r.connection.sendMessagePromise({type:"maintenance_supporter/task/history",entry_id:n,task_id:i})).history?.find(u=>u.timestamp===o)),s?g(n,i,s,e):null}export{c as a,f as b,_ as c,d,R as e,h as f,k as g,w as h,S as i,g as j,v as k};
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{p as l}from"./chunk-IUWFIZIT.js";function c(r){if(!r)return[];let n=[],i=r.photo_doc_id;typeof i=="string"&&n.push(i);let o=r.photo_doc_ids;Array.isArray(o)&&n.push(...o);let t=[];for(let e of n){if(typeof e!="string")continue;let s=e.trim();if(!(!s||t.includes(s))&&(t.push(s),t.length>=10))break}return t}var f=20;function _(){let r=new Uint8Array(4);return(globalThis.crypto??{getRandomValues:n=>n.map(()=>Math.floor(Math.random()*256))}).getRandomValues(r),Array.from(r,n=>n.toString(16).padStart(2,"0")).join("")}function d(r){let n=r?.reading_values;if(!Array.isArray(n))return[];let i=[],o=new Set;for(let t of n){if(!t||typeof t!="object")continue;let e=t;typeof e.id!="string"||!e.id||o.has(e.id)||typeof e.value!="number"||!Number.isFinite(e.value)||(o.add(e.id),i.push({id:e.id,name:typeof e.name=="string"?e.name:e.id,unit:typeof e.unit=="string"?e.unit:null,value:e.value}))}return i}function y(r){return r.filter(n=>n.type==="completed"&&(n.reading_value!=null||d(n).length>0)).sort((n,i)=>n.timestamp.localeCompare(i.timestamp))}function R(r){return y(r??[]).map(n=>({timestamp:n.timestamp,values:d(n)})).filter(n=>n.values.length>0)}function h(r,n,i){let o;for(let t of r){if(i!==void 0){let s=l(t.timestamp);if(!isNaN(s)&&s>=i)break}let e=t.values.find(s=>s.id===n);e&&(o=e)}return o}function k(r,n,i){let o=d(n).find(e=>e.id===i);if(!o)return null;let t=null;for(let e of y(r)){if(e.timestamp>=n.timestamp)break;let s=d(e).find(a=>a.id===i);s&&(t=s.value)}return t==null?null:o.value-t}function w(r){let n=new Set,i=new Set;for(let o of r){let t=(o.name||"").trim().toLowerCase();t&&(n.has(t)?i.add(o.id):n.add(t))}return i}function S(r){let n=[],i=new Set,o=new Set;for(let t of r){let e=(t.name||"").trim();if(!(!e||i.has(t.id)||o.has(e.toLowerCase()))&&(i.add(t.id),o.add(e.toLowerCase()),n.push({id:t.id,name:e,unit:(t.unit||"").trim()||null}),n.length>=f))break}return n}function g(r,n,i,o){let t=i,e=u=>typeof u=="string"?u:null,s=u=>typeof u=="number"?u:null,a=e(t.timestamp)??"";return{entry_id:r,task_id:n,original_timestamp:a,type:e(t.type)||"completed",timestamp:a,notes:e(t.notes),cost:s(t.cost),duration:s(t.duration),completed_by:e(t.completed_by),used_parts:Array.isArray(t.used_parts)?t.used_parts:null,photo_doc_ids:c(t),reading_value:s(t.reading_value),reading_values:d(t),readings:o?.readings??[],task_type:o?.type??null,reading_unit:o?.reading_unit??null}}async function v(r,n,i,o){let e=(await r.connection.sendMessagePromise({type:"maintenance_supporter/object",entry_id:n})).tasks?.find(a=>a.id===i);if(!e)return null;let s=e.history?.find(a=>a.timestamp===o);return s||(s=(await r.connection.sendMessagePromise({type:"maintenance_supporter/task/history",entry_id:n,task_id:i})).history?.find(u=>u.timestamp===o)),s?g(n,i,s,e):null}export{c as a,f as b,_ as c,d,R as e,h as f,k as g,w as h,S as i,g as j,v as k};
|
||||
+27
-10
File diff suppressed because one or more lines are too long
+131
-108
File diff suppressed because one or more lines are too long
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as v,b as y}from"./chunk-JDDRFTDX.js";import{a as f,b as x,d as k}from"./chunk-B4IMAOHY.js";import{k as b}from"./chunk-FC7BLTBL.js";import{B as l,a as h,b as a,d as c,e as g,f as _,g as o,j as m}from"./chunk-5FHGCMEA.js";import{a as n,g as i,i as u}from"./chunk-TAYZJBPE.js";var e=class extends g{constructor(){super(...arguments);this._config={type:""};this._groups={};this._loaded=!1;this._busy=!1;this._error="";this._newName="";this._editingId=null;this._editingName="";this._access=f;this._hasInitiallyLoaded=!1}setConfig(t){this._config=t}getCardSize(){return 2}get _lang(){return m(this.hass)}get _canWrite(){return x(this.hass?.user,this._access)}updated(t){super.updated(t),t.has("hass")&&this.hass&&!this._hasInitiallyLoaded&&(this._hasInitiallyLoaded=!0,this._load(),k(this.hass).then(r=>{this._access=r.access}),u(this._lang).then(()=>this.requestUpdate()))}async _load(){let t=await l(this,{type:"maintenance_supporter/groups"},{onError:r=>{this._error=r}});t!==void 0&&(this._groups=t?.groups||{},this._loaded=!0)}async _act(t,r){this._error="",await l(this,t,{busy:s=>{this._busy=s},reload:async()=>{r?.(),await this._load()},onError:s=>{this._error=s}})}async _addGroup(){if(!this._canWrite)return;let t=this._newName.trim();t&&await this._act({type:"maintenance_supporter/group/create",name:t},()=>{this._newName=""})}_startEdit(t){this._editingId=t,this._editingName=this._groups[t]?.name||""}async _saveEdit(){if(!this._canWrite||!this._editingId)return;let t=this._editingName.trim();t&&await this._act({type:"maintenance_supporter/group/update",group_id:this._editingId,name:t},()=>{this._editingId=null,this._editingName=""})}async _deleteGroup(t,r){!this._canWrite||!await b(this.hass,{title:i("delete",this._lang),message:i("delete_group_confirm",this._lang).replace("{name}",r),confirmText:i("delete",this._lang),danger:!0})||await this._act({type:"maintenance_supporter/group/delete",group_id:t})}_onDeepLink(){history.pushState(null,"","/maintenance-supporter?ms_action=open_groups"),window.dispatchEvent(new CustomEvent("location-changed"))}_onKeyDown(t,r){t.key==="Enter"?(t.preventDefault(),r()):t.key==="Escape"&&(t.preventDefault(),this._editingId=null,this._editingName="")}render(){let t=this._lang;if(!this._loaded)return a`<ha-card><div class="loading">${i("loading",t)}</div></ha-card>`;let r=Object.keys(this._groups);return a`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as v,b as y}from"./chunk-2E6THN76.js";import{a as f,b as x,d as k}from"./chunk-N4RJZ6Z2.js";import{k as b}from"./chunk-DGKPZQYM.js";import{C as l,a as h,b as a,d as c,f as g,g as _,h as o,k as m}from"./chunk-XJSTERIM.js";import{a as n,g as i,i as u}from"./chunk-IUWFIZIT.js";var e=class extends g{constructor(){super(...arguments);this._config={type:""};this._groups={};this._loaded=!1;this._busy=!1;this._error="";this._newName="";this._editingId=null;this._editingName="";this._access=f;this._hasInitiallyLoaded=!1}setConfig(t){this._config=t}getCardSize(){return 2}get _lang(){return m(this.hass)}get _canWrite(){return x(this.hass?.user,this._access)}updated(t){super.updated(t),t.has("hass")&&this.hass&&!this._hasInitiallyLoaded&&(this._hasInitiallyLoaded=!0,this._load(),k(this.hass).then(r=>{this._access=r.access}),u(this._lang).then(()=>this.requestUpdate()))}async _load(){let t=await l(this,{type:"maintenance_supporter/groups"},{onError:r=>{this._error=r}});t!==void 0&&(this._groups=t?.groups||{},this._loaded=!0)}async _act(t,r){this._error="",await l(this,t,{busy:s=>{this._busy=s},reload:async()=>{r?.(),await this._load()},onError:s=>{this._error=s}})}async _addGroup(){if(!this._canWrite)return;let t=this._newName.trim();t&&await this._act({type:"maintenance_supporter/group/create",name:t},()=>{this._newName=""})}_startEdit(t){this._editingId=t,this._editingName=this._groups[t]?.name||""}async _saveEdit(){if(!this._canWrite||!this._editingId)return;let t=this._editingName.trim();t&&await this._act({type:"maintenance_supporter/group/update",group_id:this._editingId,name:t},()=>{this._editingId=null,this._editingName=""})}async _deleteGroup(t,r){!this._canWrite||!await b(this.hass,{title:i("delete",this._lang),message:i("delete_group_confirm",this._lang).replace("{name}",r),confirmText:i("delete",this._lang),danger:!0})||await this._act({type:"maintenance_supporter/group/delete",group_id:t})}_onDeepLink(){history.pushState(null,"","/maintenance-supporter?ms_action=open_groups"),window.dispatchEvent(new CustomEvent("location-changed"))}_onKeyDown(t,r){t.key==="Enter"?(t.preventDefault(),r()):t.key==="Escape"&&(t.preventDefault(),this._editingId=null,this._editingName="")}render(){let t=this._lang;if(!this._loaded)return a`<ha-card><div class="loading">${i("loading",t)}</div></ha-card>`;let r=Object.keys(this._groups);return a`
|
||||
<ha-card>
|
||||
<div class="card-content">
|
||||
<div class="header">
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*! maintenance_supporter frontend 2.100.0 */
|
||||
import{a as y,b as x}from"./chunk-JDDRFTDX.js";import"./chunk-LEI6V6UO.js";import{b as p,k as $}from"./chunk-FC7BLTBL.js";import{B as u,a as v,b as r,d as c,e as f,f as m,g as n,i as b,j as g}from"./chunk-5FHGCMEA.js";import{a as s,g as a,i as h}from"./chunk-TAYZJBPE.js";var i=class extends f{constructor(){super(...arguments);this._config={type:""};this._state=null;this._busy=!1;this._error="";this._localStart="";this._localEnd="";this._localBuffer="3";this._dirty=!1;this._loaded=!1}setConfig(t){this._config=t}getCardSize(){return 2}get _lang(){return g(this.hass)}get _isAdmin(){return this.hass?.user?.is_admin??!0}updated(t){super.updated(t),b(this,t),t.has("hass")&&this.hass&&!this._loaded&&(this._loaded=!0,this._load(),h(this._lang).then(()=>this.requestUpdate()))}async _load(){let t=await u(this,{type:"maintenance_supporter/vacation/state"},{onError:e=>{this._error=e}});t&&(this._state=t,this._localStart=t.start||"",this._localEnd=t.end||"",this._localBuffer=String(t.buffer_days??3),this._dirty=!1)}_act(t){return this._error="",u(this,t,{busy:e=>{this._busy=e},onError:e=>{this._error=e}})}async _toggleEnabled(t){let e=await this._act({type:"maintenance_supporter/vacation/update",enabled:t});e&&(this._state=e)}async _save(){if(!this._isAdmin)return;let[t,e]=p,o=Number(this._localBuffer);if(this._localBuffer.trim()===""||!Number.isInteger(o)||o<t||o>e){this._error=a("settings_value_out_of_range",this._lang).replace("{min}",String(t)).replace("{max}",String(e));return}let l=await this._act({type:"maintenance_supporter/vacation/update",start:this._localStart||null,end:this._localEnd||null,buffer_days:o});l&&(this._state=l,this._dirty=!1)}async _endNow(){if(!this._isAdmin||!await $(this.hass,{title:a("vacation_end_now",this._lang),message:a("vacation_end_now_confirm",this._lang),confirmText:a("vacation_end_now",this._lang)}))return;let e=await this._act({type:"maintenance_supporter/vacation/end_now"});e&&(this._state=e,this._localStart=e.start||"",this._localEnd=e.end||"")}_onDeepLink(){history.pushState(null,"","/maintenance-supporter?ms_action=open_vacation"),window.dispatchEvent(new CustomEvent("location-changed"))}render(){let t=this._lang,e=this._state;if(!e)return r`<ha-card><div class="loading">${a("loading",t)}</div></ha-card>`;let o=e.is_active===!0,l=e.enabled===!0,_=e.exempt_task_ids?.length??0,w=o?a("vacation_status_active",t):l?a("vacation_status_scheduled",t):a("vacation_status_inactive",t),k=o?"active":l?"scheduled":"inactive";return r`
|
||||
/*! maintenance_supporter frontend 2.102.0 */
|
||||
import{a as y,b as x}from"./chunk-2E6THN76.js";import"./chunk-AOWCK2OJ.js";import{b as p,k as $}from"./chunk-DGKPZQYM.js";import{C as u,a as v,b as r,d as c,f,g as m,h as n,j as b,k as g}from"./chunk-XJSTERIM.js";import{a as s,g as a,i as h}from"./chunk-IUWFIZIT.js";var i=class extends f{constructor(){super(...arguments);this._config={type:""};this._state=null;this._busy=!1;this._error="";this._localStart="";this._localEnd="";this._localBuffer="3";this._dirty=!1;this._loaded=!1}setConfig(t){this._config=t}getCardSize(){return 2}get _lang(){return g(this.hass)}get _isAdmin(){return this.hass?.user?.is_admin??!0}updated(t){super.updated(t),b(this,t),t.has("hass")&&this.hass&&!this._loaded&&(this._loaded=!0,this._load(),h(this._lang).then(()=>this.requestUpdate()))}async _load(){let t=await u(this,{type:"maintenance_supporter/vacation/state"},{onError:e=>{this._error=e}});t&&(this._state=t,this._localStart=t.start||"",this._localEnd=t.end||"",this._localBuffer=String(t.buffer_days??3),this._dirty=!1)}_act(t){return this._error="",u(this,t,{busy:e=>{this._busy=e},onError:e=>{this._error=e}})}async _toggleEnabled(t){let e=await this._act({type:"maintenance_supporter/vacation/update",enabled:t});e&&(this._state=e)}async _save(){if(!this._isAdmin)return;let[t,e]=p,o=Number(this._localBuffer);if(this._localBuffer.trim()===""||!Number.isInteger(o)||o<t||o>e){this._error=a("settings_value_out_of_range",this._lang).replace("{min}",String(t)).replace("{max}",String(e));return}let l=await this._act({type:"maintenance_supporter/vacation/update",start:this._localStart||null,end:this._localEnd||null,buffer_days:o});l&&(this._state=l,this._dirty=!1)}async _endNow(){if(!this._isAdmin||!await $(this.hass,{title:a("vacation_end_now",this._lang),message:a("vacation_end_now_confirm",this._lang),confirmText:a("vacation_end_now",this._lang)}))return;let e=await this._act({type:"maintenance_supporter/vacation/end_now"});e&&(this._state=e,this._localStart=e.start||"",this._localEnd=e.end||"")}_onDeepLink(){history.pushState(null,"","/maintenance-supporter?ms_action=open_vacation"),window.dispatchEvent(new CustomEvent("location-changed"))}render(){let t=this._lang,e=this._state;if(!e)return r`<ha-card><div class="loading">${a("loading",t)}</div></ha-card>`;let o=e.is_active===!0,l=e.enabled===!0,_=e.exempt_task_ids?.length??0,w=o?a("vacation_status_active",t):l?a("vacation_status_scheduled",t):a("vacation_status_inactive",t),k=o?"active":l?"scheduled":"inactive";return r`
|
||||
<ha-card>
|
||||
<div class="card-content">
|
||||
<div class="header">
|
||||
+3
-3
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user