@c8y/ng1-modules 1019.22.0 → 1019.23.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -242,8 +242,8 @@ msgid ""
242
242
  " inventory."
243
243
  msgstr ""
244
244
  "Eine <strong> globale Rolle </strong> enthält allgemein anwendbare Berechtigungen. \n"
245
- " Wählen Sie zum Beispiel \"Lesen\" in der Zeile \"Inventar\" aus, damit Benutzer mit dieser Rolle\n"
246
- " alle Objekte im Inventar lesen können."
245
+ " Wählen Sie zum Beispiel \"Lesen\" in der Zeile \"Stammdaten\" aus, damit Benutzer mit dieser Rolle\n"
246
+ " alle Objekte im Stammdaten lesen können."
247
247
 
248
248
  msgid "A bulk registration CSV template for NO_SEC devices with all optional fields"
249
249
  msgstr "Ein CSV-Template mit allen optionalen Feldern für die Bulk-Registrierung mehrerer NO_SEC-Geräte"
@@ -2558,7 +2558,7 @@ msgid ""
2558
2558
  " needs to have inventory write permission."
2559
2559
  msgstr ""
2560
2560
  "Änderungen, die am Start-Dashboard vorgenommen werden, sind nur für den aktuellen Benutzer sichtbar.\n"
2561
- " HINWEIS: Dieser Benutzer muss über eine Schreibberechtigung für das Inventar verfügen."
2561
+ " HINWEIS: Dieser Benutzer muss über eine Schreibberechtigung für das Stammdaten verfügen."
2562
2562
 
2563
2563
  msgid "Changes done to the home dashboard are reflected only in the current application."
2564
2564
  msgstr "Änderungen, die am Start-Dashboard vorgenommen werden, sind nur in der aktuellen Anwendung sichtbar."
@@ -3550,12 +3550,21 @@ msgstr "Das Modul \"{{moduleName}}\" konnte nicht eingerichtet werden. Die Kompi
3550
3550
  msgid "Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already."
3551
3551
  msgstr "Die Anwendung konnte nicht bereitgestellt werden, da bereits eine Anwendung mit demselben name, context-path oder key existiert."
3552
3552
 
3553
+ msgid "Could not download data for \"{{name}}\": access denied."
3554
+ msgstr "Die Daten für \"{{name}}\" konnten nicht heruntergeladen werden: Zugriff verweigert."
3555
+
3553
3556
  msgid "Could not download the file: object with ID \"{{ id }}\" is not a valid binary."
3554
3557
  msgstr "Die Datei konnte nicht heruntergeladen werden, weil das Objekt mit der ID \"{{ id }}\" keine gültige Binärdatei ist."
3555
3558
 
3556
3559
  msgid "Could not download the log file."
3557
3560
  msgstr "Logdatei konnte nicht heruntergeladen werden."
3558
3561
 
3562
+ msgid "Could not download the report. You need this global role to download reports: Measurement Read."
3563
+ msgstr "Der Bericht konnte nicht heruntergeladen werden. Sie benötigen die folgende globale Rolle, um Berichte herunterzuladen: Messwerte Lesen."
3564
+
3565
+ msgid "Could not enable the \"Ignore case when logging in\" feature. Duplicate usernames or aliases were detected when ignoring case sensitivity. Resolve conflicting names and try again."
3566
+ msgstr "Die Funktion \"Groß- und Kleinschreibung während des Einloggens ignorieren\" konnte nicht aktiviert werden. Beim Ignorieren der Groß- und Kleinschreibung wurden doppelte Benutzernamen oder Aliasnamen erkannt. Lösen Sie widersprüchliche Namen auf und versuchen Sie es erneut."
3567
+
3559
3568
  msgid "Could not execute bulk operation on an empty group. Group with ID \"{{groupId}}\" has no child assets."
3560
3569
  msgstr "Bulk-Operationen können nicht für leere Gruppen ausgeführt werden. Die Gruppe mit der ID \"{{groupId}}\" hat keine Kind-Assets."
3561
3570
 
@@ -7603,6 +7612,9 @@ msgstr "Wenn diese Option ausgewählt ist, werden leere Werte bei allen nachfolg
7603
7612
  msgid "If selected, it will process the result of the request using response templates."
7604
7613
  msgstr "Wenn diese Option ausgewählt ist, wird das Ergebnis der Anfrage mithilfe von Antwort-Templates verarbeitet."
7605
7614
 
7615
+ msgid "If selected, the letter case of the username does not matter during login."
7616
+ msgstr "Wenn diese Option ausgewählt ist, istdie Groß- und Kleinschreibung des Benutzernamens während des Einloggens nicht relevant."
7617
+
7606
7618
  msgid "If selected, then every request needs to use the same \"User-Agent\" header as the first request which initiated the session."
7607
7619
  msgstr "Wird diese Option gewählt, muss jede Anfrage denselben \"User-Agent\"-Header wie die erste Anfrage, die die Sitzung eingeleitet hat, verwenden."
7608
7620
 
@@ -7612,6 +7624,9 @@ msgstr "Wenn der Filter gesetzt ist, wird die Firmware nur für Geräte dieses T
7612
7624
  msgid "If the filter is set, the software will show up for installation only for devices of that type. If no filter is set, it will be available for all devices."
7613
7625
  msgstr "Wenn der Filter gesetzt ist, wird die Software nur für Geräte dieses Typs zur Installation angezeigt. Wenn kein Filter gesetzt ist, ist sie für alle Geräte verfügbar."
7614
7626
 
7627
+ msgid "Ignore case when logging in"
7628
+ msgstr "Groß- und Kleinschreibung während des Einloggens ignorieren"
7629
+
7615
7630
  msgid "Ignore empty values"
7616
7631
  msgstr "Leere Werte ignorieren"
7617
7632
 
@@ -10311,6 +10326,9 @@ msgstr "Online"
10311
10326
  msgid "Online`type of checking`"
10312
10327
  msgstr "Online"
10313
10328
 
10329
+ msgid "Only a tenant administrator can configure the \"Ignore case when logging in\" option."
10330
+ msgstr "Nur ein Administrator des Mandanten kann die Option \"Groß- und Kleinschreibung während des Einloggens ignorieren\" konfigurieren."
10331
+
10314
10332
  msgid "Only active contracts with free slots are displayed."
10315
10333
  msgstr "Es werden nur aktive Verträge mit freien Slots angezeigt."
10316
10334
 
@@ -12601,7 +12619,7 @@ msgid "Select from available extension packages"
12601
12619
  msgstr "Wählen Sie eines der verfügbaren Erweiterungspakete"
12602
12620
 
12603
12621
  msgid "Select from inventory"
12604
- msgstr "Aus Inventar auswählen"
12622
+ msgstr "Aus Stammdaten auswählen"
12605
12623
 
12606
12624
  msgid "Select from predefined"
12607
12625
  msgstr "Aus Vordefinierten auswählen"
@@ -14808,6 +14826,9 @@ msgstr ""
14808
14826
  "\n"
14809
14827
  "Durch diesen Prozess bleibt die neue Hardware mit der Information des Vorgängers verknüpft."
14810
14828
 
14829
+ msgid "The feature \"Ignore case when logging in\" is not available."
14830
+ msgstr "Die Funktion \"Groß- und Kleinschreibung während des Einloggens ignorieren\" ist nicht verfügbar."
14831
+
14811
14832
  msgid "The file is empty."
14812
14833
  msgstr "Die Datei ist leer."
14813
14834
 
@@ -3558,12 +3558,21 @@ msgstr "El módulo \"{{moduleName}}\" no ha podido desplegarse. La compilación
3558
3558
  msgid "Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already."
3559
3559
  msgstr "La aplicación no ha podido implementarse puesto que ya existe una aplicación con el mismo name, context-path o key."
3560
3560
 
3561
+ msgid "Could not download data for \"{{name}}\": access denied."
3562
+ msgstr "No se han podido descargar datos para \"{{name}}\": acceso denegado."
3563
+
3561
3564
  msgid "Could not download the file: object with ID \"{{ id }}\" is not a valid binary."
3562
3565
  msgstr "No ha podido descargarse el archivo: El objeto con el ID \"{{ id }}\" no es un archivo binario válido."
3563
3566
 
3564
3567
  msgid "Could not download the log file."
3565
3568
  msgstr "El archivo de registro no ha podido descargarse."
3566
3569
 
3570
+ msgid "Could not download the report. You need this global role to download reports: Measurement Read."
3571
+ msgstr "No se ha podido descargar el informe. Necesita este rol global para descargar informes: Estadísticas Leer."
3572
+
3573
+ msgid "Could not enable the \"Ignore case when logging in\" feature. Duplicate usernames or aliases were detected when ignoring case sensitivity. Resolve conflicting names and try again."
3574
+ msgstr "No se ha podido activar la función \"Ignorar mayúsculas y minúsculas al iniciar sesión\". Se han detectado nombres de usuario o alias duplicados al ignorar mayúsculas y minúsculas. Resuelve los nombres conflictivos e inténtalo de nuevo."
3575
+
3567
3576
  msgid "Could not execute bulk operation on an empty group. Group with ID \"{{groupId}}\" has no child assets."
3568
3577
  msgstr "No se puede ejecutar la operación en masa en un grupo vacío. El grupo con el ID \"{{groupId}}\" no tiene activos secundarios."
3569
3578
 
@@ -7629,6 +7638,9 @@ msgstr "Si se selecciona, los valores vacíos se ignorarán en todos los recurso
7629
7638
  msgid "If selected, it will process the result of the request using response templates."
7630
7639
  msgstr "Si se ha seleccionado, procesará el resultado de la solicitud utilizando las plantillas de respuesta."
7631
7640
 
7641
+ msgid "If selected, the letter case of the username does not matter during login."
7642
+ msgstr "Si se selecciona esta opción, el nombre de usuario no tendrá importancia durante el inicio de sesión."
7643
+
7632
7644
  msgid "If selected, then every request needs to use the same \"User-Agent\" header as the first request which initiated the session."
7633
7645
  msgstr "Si se selecciona, todas las solicitudes deberán usar el mismo encabezado \"User-Agent\" que la primera solicitud que inició la sesión."
7634
7646
 
@@ -7638,6 +7650,9 @@ msgstr "Si se configura un filtro, sólo los dispositivos de este tipo podrán i
7638
7650
  msgid "If the filter is set, the software will show up for installation only for devices of that type. If no filter is set, it will be available for all devices."
7639
7651
  msgstr "Si se configura un filtro, sólo los dispositivos de este tipo podrán instalar el software. Si no se configura ningún filtro, estará disponible para todos los dispositivos."
7640
7652
 
7653
+ msgid "Ignore case when logging in"
7654
+ msgstr "Ignorar mayúsculas y minúsculas al iniciar sesión"
7655
+
7641
7656
  msgid "Ignore empty values"
7642
7657
  msgstr "Ignorar valores vacíos"
7643
7658
 
@@ -10339,6 +10354,9 @@ msgstr "En línea"
10339
10354
  msgid "Online`type of checking`"
10340
10355
  msgstr "Online"
10341
10356
 
10357
+ msgid "Only a tenant administrator can configure the \"Ignore case when logging in\" option."
10358
+ msgstr "Sólo un administrador de tenant puede configurar la opción \"Ignorar mayúsculas y minúsculas al iniciar sesión\"."
10359
+
10342
10360
  msgid "Only active contracts with free slots are displayed."
10343
10361
  msgstr "Sólo se muestran contratos activos con ranuras libres."
10344
10362
 
@@ -14837,6 +14855,9 @@ msgstr ""
14837
14855
  "\n"
14838
14856
  "Con este procedimiento el nuevo hardware sigue enlazado a la información creada por su predecesor."
14839
14857
 
14858
+ msgid "The feature \"Ignore case when logging in\" is not available."
14859
+ msgstr "La función \"Ignorar mayúsculas y minúsculas al iniciar sesión\" no está disponible."
14860
+
14840
14861
  msgid "The file is empty."
14841
14862
  msgstr "El archivo está vacío."
14842
14863
 
@@ -3558,12 +3558,21 @@ msgstr "Impossible de déployer le module \"{{moduleName}}\". Échec de compilat
3558
3558
  msgid "Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already."
3559
3559
  msgstr "Impossible de déployer l'application avec les mêmes name, context-path ou la key existe déjà."
3560
3560
 
3561
+ msgid "Could not download data for \"{{name}}\": access denied."
3562
+ msgstr "Impossible de télécharger les données pour \"{{name}}\" : accès refusé."
3563
+
3561
3564
  msgid "Could not download the file: object with ID \"{{ id }}\" is not a valid binary."
3562
3565
  msgstr "Chargement du fichier impossible : l'objet avec l'ID \"{{ id }}\" n'est pas un binaire valide."
3563
3566
 
3564
3567
  msgid "Could not download the log file."
3565
3568
  msgstr "Téléchargement du fichier journal impossible."
3566
3569
 
3570
+ msgid "Could not download the report. You need this global role to download reports: Measurement Read."
3571
+ msgstr "Impossible de télécharger le rapport. Vous avez besoin de ce rôle global pour télécharger les rapports : Mesure Lire."
3572
+
3573
+ msgid "Could not enable the \"Ignore case when logging in\" feature. Duplicate usernames or aliases were detected when ignoring case sensitivity. Resolve conflicting names and try again."
3574
+ msgstr "Impossible d'activer la fonction \"Ignorer casse lors de la connexion\". Des doublons de noms d'utilisateur ou d'alias ont été détectés lorsque la sensibilité à la casse a été ignorée. Résolvez les conflits de noms et réessayez."
3575
+
3567
3576
  msgid "Could not execute bulk operation on an empty group. Group with ID \"{{groupId}}\" has no child assets."
3568
3577
  msgstr "Impossible d'exécuter l'opération en masse sur un groupe vide. Le groupe avec l'ID \"{{groupId}}\" n'a pas d'actif enfant."
3569
3578
 
@@ -7629,6 +7638,9 @@ msgstr "Si cette option est sélectionnée, les valeurs vides de toutes les ress
7629
7638
  msgid "If selected, it will process the result of the request using response templates."
7630
7639
  msgstr "Si cette option est sélectionnée, le résultat de la requête sera traité avec des modèles de réponse."
7631
7640
 
7641
+ msgid "If selected, the letter case of the username does not matter during login."
7642
+ msgstr "Si cette option est sélectionnée, la casse du nom d'utilisateur n'a pas d'importance lors de la connexion."
7643
+
7632
7644
  msgid "If selected, then every request needs to use the same \"User-Agent\" header as the first request which initiated the session."
7633
7645
  msgstr "Si cette option est sélectionnée, toutes les demandes doivent utiliser le même en-tête \"User-Agent\" comme première demande qui a initié la session."
7634
7646
 
@@ -7638,6 +7650,9 @@ msgstr "Si le filtre est activé, le microprogramme s'affiche uniquement lors de
7638
7650
  msgid "If the filter is set, the software will show up for installation only for devices of that type. If no filter is set, it will be available for all devices."
7639
7651
  msgstr "Si le filtre est activé, le logiciel s'affiche uniquement lors de l'installation des appareils de même type. Si aucun filtre n'est activé, le logiciel est disponible pour tous les appareils."
7640
7652
 
7653
+ msgid "Ignore case when logging in"
7654
+ msgstr "Ignorer la casse lors de la connexion"
7655
+
7641
7656
  msgid "Ignore empty values"
7642
7657
  msgstr "Ignorer les valeurs vides"
7643
7658
 
@@ -10339,6 +10354,9 @@ msgstr "En ligne"
10339
10354
  msgid "Online`type of checking`"
10340
10355
  msgstr "En ligne"
10341
10356
 
10357
+ msgid "Only a tenant administrator can configure the \"Ignore case when logging in\" option."
10358
+ msgstr "Seul un administrateur gérant peut configurer l'option \"Ignorer casse lors de la connexion\"."
10359
+
10342
10360
  msgid "Only active contracts with free slots are displayed."
10343
10361
  msgstr "Seuls les contrats actifs avec des emplacements libres sont affichés."
10344
10362
 
@@ -14837,6 +14855,9 @@ msgstr ""
14837
14855
  "\n"
14838
14856
  "Avec cette prodécure, le nouveau matériel est toujours relié aux informations créées par son prédécesseur."
14839
14857
 
14858
+ msgid "The feature \"Ignore case when logging in\" is not available."
14859
+ msgstr "La fonction \"Ignorer la casse lors de la connexion\" n'est pas disponible."
14860
+
14840
14861
  msgid "The file is empty."
14841
14862
  msgstr "Ce fichier est vide."
14842
14863
 
@@ -3532,12 +3532,21 @@ msgstr "モジュール \"{{moduleName}}\" をデプロイできませんでし
3532
3532
  msgid "Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already."
3533
3533
  msgstr "同じ name、context-path、または key を持つアプリケーションが既に存在するため、アプリケーションをデプロイできませんでした。"
3534
3534
 
3535
+ msgid "Could not download data for \"{{name}}\": access denied."
3536
+ msgstr \"{{name}}\"のデータをダウンロードできませんでした。:アクセスが拒否されました。"
3537
+
3535
3538
  msgid "Could not download the file: object with ID \"{{ id }}\" is not a valid binary."
3536
3539
  msgstr "ファイルをダウンロードできませんでした: ID \"{{ id }}\" のオブジェクトは有効なバイナリではありません。"
3537
3540
 
3538
3541
  msgid "Could not download the log file."
3539
3542
  msgstr "ログ ファイルをダウンロードできませんでした。"
3540
3543
 
3544
+ msgid "Could not download the report. You need this global role to download reports: Measurement Read."
3545
+ msgstr "レポートをダウンロードできませんでした。レポートをダウンロードするには、このグローバル・ロールが必要です:計測読み取り"
3546
+
3547
+ msgid "Could not enable the \"Ignore case when logging in\" feature. Duplicate usernames or aliases were detected when ignoring case sensitivity. Resolve conflicting names and try again."
3548
+ msgstr "[ログインの際に大文字と小文字の区別を無視] 機能を有効化できませんでした。大文字と小文字の区別を無視すると、重複するユーザー名またはエイリアスが検出されました。競合する名前を解決してから、もう一度試してください。"
3549
+
3541
3550
  msgid "Could not execute bulk operation on an empty group. Group with ID \"{{groupId}}\" has no child assets."
3542
3551
  msgstr "空のグループで一括操作を実行できませんでした。ID \"{{groupId}}\" のグループには子アセットがありません。"
3543
3552
 
@@ -3558,12 +3558,21 @@ msgstr "Kon module \"{{moduleName}}\" niet gebruiken. Compilatie mislukt in expr
3558
3558
  msgid "Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already."
3559
3559
  msgstr "De applicatie kan niet worden geïmplementeerd, omdat er al een applicatie bestaat met dezelfde name, context-path of key."
3560
3560
 
3561
+ msgid "Could not download data for \"{{name}}\": access denied."
3562
+ msgstr "Kan gegevens voor \"{{name}}\" niet downloaden: toegang geweigerd."
3563
+
3561
3564
  msgid "Could not download the file: object with ID \"{{ id }}\" is not a valid binary."
3562
3565
  msgstr "Kan het bestand niet downloaden: object met ID \"{{ id }}\" is geen geldige binary."
3563
3566
 
3564
3567
  msgid "Could not download the log file."
3565
3568
  msgstr "Kon het logbestand niet downloaden."
3566
3569
 
3570
+ msgid "Could not download the report. You need this global role to download reports: Measurement Read."
3571
+ msgstr "Kan het rapport niet downloaden. U hebt deze globale rol nodig om rapporten te downloaden: Metingen Lezen."
3572
+
3573
+ msgid "Could not enable the \"Ignore case when logging in\" feature. Duplicate usernames or aliases were detected when ignoring case sensitivity. Resolve conflicting names and try again."
3574
+ msgstr "De functie \"Hoofdletters negeren bij aanmelden\" kon niet worden ingeschakeld. Er werden dubbele gebruikersnamen of aliassen gedetecteerd bij het negeren van hoofdlettergevoeligheid. Los conflicterende namen op en probeer het opnieuw."
3575
+
3567
3576
  msgid "Could not execute bulk operation on an empty group. Group with ID \"{{groupId}}\" has no child assets."
3568
3577
  msgstr "Kon bulkbewerking niet uitvoeren voor een lege groep. Groep met ID \"{{groupId}}\" heeft geen onderliggende assets."
3569
3578
 
@@ -7628,6 +7637,9 @@ msgstr "Als dit is ingeschakeld, worden lege waarden genegeerd voor alle onderst
7628
7637
  msgid "If selected, it will process the result of the request using response templates."
7629
7638
  msgstr "Indien geselecteerd, zal het resultaat van het verzoek met behulp van antwoordsjablonen worden verwerkt."
7630
7639
 
7640
+ msgid "If selected, the letter case of the username does not matter during login."
7641
+ msgstr "Indien geselecteerd, maakt het bij aanmelden niet uit of de gebruikersnaam hoofdletters bevat."
7642
+
7631
7643
  msgid "If selected, then every request needs to use the same \"User-Agent\" header as the first request which initiated the session."
7632
7644
  msgstr "Als dit is geselecteerd, moet elke aanvraag dezelfde \"User-Agent\"-kopregel gebruiken als de eerste aanvraag die de sessie heeft geïnitieerd."
7633
7645
 
@@ -7637,6 +7649,9 @@ msgstr "Als de filter is ingesteld, zal de firmware alleen verschijnen voor inst
7637
7649
  msgid "If the filter is set, the software will show up for installation only for devices of that type. If no filter is set, it will be available for all devices."
7638
7650
  msgstr "Als de filter is ingesteld, zal de software alleen verschijnen voor installatie bij apparaten van dat type. Als geen filter is ingesteld, zal hij voor all apparaten beschikbaar zijn."
7639
7651
 
7652
+ msgid "Ignore case when logging in"
7653
+ msgstr "Hoofdletters negeren bij aanmelden"
7654
+
7640
7655
  msgid "Ignore empty values"
7641
7656
  msgstr "Lege waarden negeren"
7642
7657
 
@@ -10338,6 +10353,9 @@ msgstr "Online"
10338
10353
  msgid "Online`type of checking`"
10339
10354
  msgstr "Online"
10340
10355
 
10356
+ msgid "Only a tenant administrator can configure the \"Ignore case when logging in\" option."
10357
+ msgstr "Alleen een tenant administrator kan de optie \"Hoofdletters negeren bij aanmelden\" configureren."
10358
+
10341
10359
  msgid "Only active contracts with free slots are displayed."
10342
10360
  msgstr "Er worden actieve contracten met vrije slots weergegeven."
10343
10361
 
@@ -14836,6 +14854,9 @@ msgstr ""
14836
14854
  "\n"
14837
14855
  "Bij deze procedure is de nieuwe hardware nog gekoppeld aan de informatie die door zijn voorganger werd gemaakt."
14838
14856
 
14857
+ msgid "The feature \"Ignore case when logging in\" is not available."
14858
+ msgstr "De functie \"Hoofdletters negeren bij aanmelden\" is niet beschikbaar."
14859
+
14839
14860
  msgid "The file is empty."
14840
14861
  msgstr "Het bestand is leeg."
14841
14862
 
@@ -3578,12 +3578,21 @@ msgstr "Nie można wdrożyć modułu „{{moduleName}}”. Błąd kompilacji wys
3578
3578
  msgid "Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already."
3579
3579
  msgstr "Nie można wdrożyć aplikacji, ponieważ istnieje już aplikacja o takich samych parametrach name, context-path lub key."
3580
3580
 
3581
+ msgid "Could not download data for \"{{name}}\": access denied."
3582
+ msgstr "Nie można pobrać danych dla \"{{name}}\": odmowa dostępu."
3583
+
3581
3584
  msgid "Could not download the file: object with ID \"{{ id }}\" is not a valid binary."
3582
3585
  msgstr "Nie udało się pobrać pliku: obiekt o ID „{{ id }}” nie jest prawidłowym plikiem binarnym."
3583
3586
 
3584
3587
  msgid "Could not download the log file."
3585
3588
  msgstr "Nie można pobrać pliku dziennika."
3586
3589
 
3590
+ msgid "Could not download the report. You need this global role to download reports: Measurement Read."
3591
+ msgstr "Nie można pobrać raportu. Do pobierania raportów potrzebna jest rola globalna: Odczyt pomiarów."
3592
+
3593
+ msgid "Could not enable the \"Ignore case when logging in\" feature. Duplicate usernames or aliases were detected when ignoring case sensitivity. Resolve conflicting names and try again."
3594
+ msgstr "Nie można było włączyć funkcji \"Ignoruj wielkość liter podczas logowania\". Wykryto zduplikowane nazwy użytkowników lub aliasy podczas ignorowania wielkości liter. Rozwiąż konflikt nazw i spróbuj ponownie."
3595
+
3587
3596
  msgid "Could not execute bulk operation on an empty group. Group with ID \"{{groupId}}\" has no child assets."
3588
3597
  msgstr "Nie można wykonać operacji zbiorczej na pustej grupie. Grupa o identyfikatorze „{{groupId}}” nie ma zasobów podrzędnych."
3589
3598
 
@@ -7649,6 +7658,9 @@ msgstr "W przypadku zaznaczenia tej opcji puste wartości będą ignorowane we w
7649
7658
  msgid "If selected, it will process the result of the request using response templates."
7650
7659
  msgstr "W przypadku zaznaczenia tej opcji wynik żądania będzie przetwarzany przy użyciu szablonów odpowiedzi."
7651
7660
 
7661
+ msgid "If selected, the letter case of the username does not matter during login."
7662
+ msgstr "W przypadku zaznaczenia tej opcji wielkość liter nazwy użytkownika nie ma znaczenia podczas logowania."
7663
+
7652
7664
  msgid "If selected, then every request needs to use the same \"User-Agent\" header as the first request which initiated the session."
7653
7665
  msgstr "W przypadku zaznaczenia tej opcji każde żądanie musi używać tego samego nagłówka „User-Agent” co pierwsze żądanie, które zainicjowało sesję."
7654
7666
 
@@ -7658,6 +7670,9 @@ msgstr "W przypadku ustawienia filtru oprogramowanie sprzętowe będzie wyświet
7658
7670
  msgid "If the filter is set, the software will show up for installation only for devices of that type. If no filter is set, it will be available for all devices."
7659
7671
  msgstr "W przypadku ustawienia filtru oprogramowanie będzie wyświetlane na potrzeby instalacji jedynie dla urządzeń tego typu. Jeśli nie zostanie ustawiony żaden filtr, będzie dostępne dla wszystkich urządzeń."
7660
7672
 
7673
+ msgid "Ignore case when logging in"
7674
+ msgstr "Ignoruj wielkość liter podczas logowania"
7675
+
7661
7676
  msgid "Ignore empty values"
7662
7677
  msgstr "Ignoruj puste wartości"
7663
7678
 
@@ -10362,6 +10377,9 @@ msgstr "Online"
10362
10377
  msgid "Online`type of checking`"
10363
10378
  msgstr "Online"
10364
10379
 
10380
+ msgid "Only a tenant administrator can configure the \"Ignore case when logging in\" option."
10381
+ msgstr "Tylko administrator tenanta może skonfigurować opcję \"Ignoruj wielkość liter podczas logowania\"."
10382
+
10365
10383
  msgid "Only active contracts with free slots are displayed."
10366
10384
  msgstr "Wyświetlane są tylko aktywne kontrakty z wolnymi miejscami."
10367
10385
 
@@ -14862,6 +14880,9 @@ msgstr ""
14862
14880
  "\n"
14863
14881
  "Dzięki tej procedurze nowy sprzęt będzie powiązany z danymi wytworzonymi przez sprzęt poprzedni."
14864
14882
 
14883
+ msgid "The feature \"Ignore case when logging in\" is not available."
14884
+ msgstr "Funkcja \"Ignoruj wielkość liter podczas logowania\" jest niedostępna."
14885
+
14865
14886
  msgid "The file is empty."
14866
14887
  msgstr "Plik jest pusty."
14867
14888
 
@@ -3558,12 +3558,21 @@ msgstr "Não foi possível implantar o módulo \"{{moduleName}}\". A compilaçã
3558
3558
  msgid "Could not deploy the application, as an application with the same name`KEEP_ORIGINAL`, context-path`KEEP_ORIGINAL` or key`KEEP_ORIGINAL` exists already."
3559
3559
  msgstr "Não foi possível implantar a aplicação, pois já existe uma aplicação com os mesmos name, context-path ou key."
3560
3560
 
3561
+ msgid "Could not download data for \"{{name}}\": access denied."
3562
+ msgstr "Não foi possível baixar os dados de \"{{name}}\": acesso negado."
3563
+
3561
3564
  msgid "Could not download the file: object with ID \"{{ id }}\" is not a valid binary."
3562
3565
  msgstr "Não foi possível baixar o arquivo: o objeto com a ID \"{{ id }}\" não é um binário válido."
3563
3566
 
3564
3567
  msgid "Could not download the log file."
3565
3568
  msgstr "Não foi possível baixar o arquivo de log."
3566
3569
 
3570
+ msgid "Could not download the report. You need this global role to download reports: Measurement Read."
3571
+ msgstr "Não foi possível baixar o relatório. Você precisa dessa função global para baixar relatórios: Medição Ler."
3572
+
3573
+ msgid "Could not enable the \"Ignore case when logging in\" feature. Duplicate usernames or aliases were detected when ignoring case sensitivity. Resolve conflicting names and try again."
3574
+ msgstr "Não foi possível ativar o recurso \"Ignorar maiúsculas e minúsculas ao fazer login\". Nomes de usuário ou aliases duplicados foram detectados ao ignorar a distinção entre maiúsculas e minúsculas. Resolva os nomes em conflito e tente novamente."
3575
+
3567
3576
  msgid "Could not execute bulk operation on an empty group. Group with ID \"{{groupId}}\" has no child assets."
3568
3577
  msgstr "Não é possível executar a operação em massa em um grupo vazio. O grupo com a ID \"{{groupId}}\" não tem ativos secundários."
3569
3578
 
@@ -7628,6 +7637,9 @@ msgstr "Se selecionado, ignorará valores vazios em todos os recursos abaixo."
7628
7637
  msgid "If selected, it will process the result of the request using response templates."
7629
7638
  msgstr "Se selecionado, processará o resultado da solicitação usando templates de resposta."
7630
7639
 
7640
+ msgid "If selected, the letter case of the username does not matter during login."
7641
+ msgstr "Se selecionada, as letras maiúsculas e minúsculas do nome de usuário não importam durante o login."
7642
+
7631
7643
  msgid "If selected, then every request needs to use the same \"User-Agent\" header as the first request which initiated the session."
7632
7644
  msgstr "Se selecionado, então cada solicitação precisa usar o mesmo cabeçalho\"User-Agent\" como a primeira solicitação que iniciou a sessão."
7633
7645
 
@@ -7637,6 +7649,9 @@ msgstr "Se o filtro estiver configurado, o firmware aparecerá para instalação
7637
7649
  msgid "If the filter is set, the software will show up for installation only for devices of that type. If no filter is set, it will be available for all devices."
7638
7650
  msgstr "Se o filtro estiver configurado, o software aparecerá para instalação apenas para dispositivos desse tipo. Se nenhum filtro estiver configurado, ele estará disponível para todos os dispositivos."
7639
7651
 
7652
+ msgid "Ignore case when logging in"
7653
+ msgstr "Ignorar maiúsculas e minúsculas ao fazer login"
7654
+
7640
7655
  msgid "Ignore empty values"
7641
7656
  msgstr "Ignorar valores vazios"
7642
7657
 
@@ -10338,6 +10353,9 @@ msgstr "Online"
10338
10353
  msgid "Online`type of checking`"
10339
10354
  msgstr "Online"
10340
10355
 
10356
+ msgid "Only a tenant administrator can configure the \"Ignore case when logging in\" option."
10357
+ msgstr "Somente um administrador de tenant pode configurar a opção \"Ignorar maiúsculas e minúsculas ao fazer login\"."
10358
+
10341
10359
  msgid "Only active contracts with free slots are displayed."
10342
10360
  msgstr "Somente são exibidos contratos com slots livres."
10343
10361
 
@@ -14836,6 +14854,9 @@ msgstr ""
14836
14854
  "\n"
14837
14855
  "Com este procedimento, o novo hardware pode continuar vinculado à informação que foi criada pelo seu antecessor."
14838
14856
 
14857
+ msgid "The feature \"Ignore case when logging in\" is not available."
14858
+ msgstr "O recurso \"Ignorar maiúsculas e minúsculas ao fazer login\" não está disponível."
14859
+
14839
14860
  msgid "The file is empty."
14840
14861
  msgstr "O arquivo está vazio."
14841
14862
 
@@ -1 +1 @@
1
- "use strict";!function(){function e(i,e,s,l,u,c,d,p){var m=this;this.downloadReportForDevice=function(e,t,r,n){t=_.get(t,"id",t),r=_(r).map(_.partial(m.createPairFromSeries,t)).value();return new m.Downloader(e,n,r).start()},this.downloadReportForDatapoints=function(e,t,r){t=_(t).filter(function(e){return!0===e.__active}).map(m.getDpRequestParams).value();return t.length?new m.Downloader(e,r,t).start():i.reject(new Error(d("At least 1 data point must be selected")))},this.createPairFromSeries=function(e,t){return{source:e,fragmentType:t}},this.getDpRequestParams=function(e){return{source:e.__target.id,valueFragmentType:e.fragment,valueFragmentSeries:e.series}},this.generateFileName=function(e,t){if(_.isEmpty(e.source&&t)||_.isEmpty(e.valueFragmentType||e.fragmentType))throw new Error("Unable to generate a file name for given data");var r=e.valueFragmentType?[e.valueFragmentType,e.valueFragmentSeries].join("."):e.fragmentType;return[e.source,r,t].join(".")},this.Downloader=function(r,n,e){var o=this,t=_.uniqBy(e,function(e){return JSON.stringify(e)});function a(e){return{text:d("Access denied."),type:"danger",detailedData:e}}this.downloadReports=function(){var e=_(t).map(o.downloadReportForDpRequestParams).value();return i.all(e).then(o.onDownloads).catch(o.onFail)},this.start=function(){return u({templateUrl:":::PLUGIN_PATH:::/ui/views/measurementsReport.html",title:d("Generating report"),controller:["$scope","$timeout",function(n,a){n.completed=0,n.total=t.length,n.reportFileName="report.zip",n.close=function(){var e,t,r;void 0!==window.navigator.msSaveBlob?(e=n.blob,t=n.reportFileName,window.navigator.msSaveBlob(e,t)):(r=n.url,a(function(){window.URL.revokeObjectURL(r)},5e3)),n.$close()},o.scope=n,o.downloadReports()}]})},this.downloadReportForDpRequestParams=function(t,e){e=o.getFilter(t,e);return s.list(e,r).then(function(e){return o.onDownload(t,e)}).catch(function(e){o.onAsyncResult(t,e)})},this.onDownload=function(e,t){return o.scope.completed+=1,t.name=m.generateFileName(e,r.name),t},this.onAsyncResult=function(e,t){return t.async?(o.scope.completed+=1,null):i.reject(t)},this.onFail=function(e){o.scope.$dismiss(),function(r){var n=i.defer();{var e;403===r.status?r.data instanceof Blob?((e=new FileReader).addEventListener("loadend",function(e){try{var t=JSON.parse(_.get(e,"srcElement.result"));n.resolve({type:"danger",text:p.getString(t.message),detailedData:t})}catch(e){n.resolve(a(r))}}),e.readAsText(r.data)):n.resolve(a(r)):n.resolve({type:"danger",text:d("An error occurred. Please try again later."),detailedData:r})}return n.promise}(e).then(c.add)},this.onDownloads=function(e){var t=e.filter(_.identity),e=e.length-t.length;return 0<e&&(e=p.getPlural(e,"You will get a CSV/Excel file for 1 series via email.","You will get CSV/Excel files for {{$count}} series via email.",{}),c.success(e)),0===t.length?i.when():l.zipFiles(t).then(function(e){o.scope.blob=e,o.scope.url=window.URL.createObjectURL(e)})},this.getFilter=function(e,t){t=_.isArray(n)?n[t]:n;return _.merge({},t,e)}}}e.$inject=["$q","$rootScope","c8yMeasurements","c8yZip","c8yModal","c8yAlert","gettext","gettextCatalog"],angular.module("c8y.ui").service("MeasurementsReportSvc",e)}();
1
+ "use strict";function _typeof(t){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function _regeneratorRuntime(){_regeneratorRuntime=function(){return a};var u,a={},t=Object.prototype,l=t.hasOwnProperty,s=Object.defineProperty||function(t,e,r){t[e]=r.value},e="function"==typeof Symbol?Symbol:{},n=e.iterator||"@@iterator",r=e.asyncIterator||"@@asyncIterator",o=e.toStringTag||"@@toStringTag";function i(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{i({},"")}catch(u){i=function(t,e,r){return t[e]=r}}function c(t,e,r,n){var o,i,a,c,e=e&&e.prototype instanceof g?e:g,e=Object.create(e.prototype),n=new R(n||[]);return s(e,"_invoke",{value:(o=t,i=r,a=n,c=h,function(t,e){if(c===d)throw new Error("Generator is already running");if(c===y){if("throw"===t)throw e;return{value:u,done:!0}}for(a.method=t,a.arg=e;;){var r=a.delegate;if(r){r=function t(e,r){var n=r.method,o=e.iterator[n];if(o===u)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=u,t(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a '"+n+"' method")),v;n=f(o,e.iterator,r.arg);if("throw"===n.type)return r.method="throw",r.arg=n.arg,r.delegate=null,v;o=n.arg;return o?o.done?(r[e.resultName]=o.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=u),r.delegate=null,v):o:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,v)}(r,a);if(r){if(r===v)continue;return r}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if(c===h)throw c=y,a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);c=d;r=f(o,i,a);if("normal"===r.type){if(c=a.done?y:p,r.arg===v)continue;return{value:r.arg,done:a.done}}"throw"===r.type&&(c=y,a.method="throw",a.arg=r.arg)}})}),e}function f(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}a.wrap=c;var h="suspendedStart",p="suspendedYield",d="executing",y="completed",v={};function g(){}function m(){}function w(){}var e={},b=(i(e,n,function(){return this}),Object.getPrototypeOf),b=b&&b(b(F([]))),_=(b&&b!==t&&l.call(b,n)&&(e=b),w.prototype=g.prototype=Object.create(e));function E(t){["next","throw","return"].forEach(function(e){i(t,e,function(t){return this._invoke(e,t)})})}function x(a,c){var e;s(this,"_invoke",{value:function(r,n){function t(){return new c(function(t,e){!function e(t,r,n,o){var i,t=f(a[t],a,r);if("throw"!==t.type)return(r=(i=t.arg).value)&&"object"==_typeof(r)&&l.call(r,"__await")?c.resolve(r.__await).then(function(t){e("next",t,n,o)},function(t){e("throw",t,n,o)}):c.resolve(r).then(function(t){i.value=t,n(i)},function(t){return e("throw",t,n,o)});o(t.arg)}(r,n,t,e)})}return e=e?e.then(t,t):t()}})}function L(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function S(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function R(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(L,this),this.reset(!0)}function F(e){if(e||""===e){var r,t=e[n];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length))return r=-1,(t=function t(){for(;++r<e.length;)if(l.call(e,r))return t.value=e[r],t.done=!1,t;return t.value=u,t.done=!0,t}).next=t}throw new TypeError(_typeof(e)+" is not iterable")}return s(_,"constructor",{value:m.prototype=w,configurable:!0}),s(w,"constructor",{value:m,configurable:!0}),m.displayName=i(w,o,"GeneratorFunction"),a.isGeneratorFunction=function(t){t="function"==typeof t&&t.constructor;return!!t&&(t===m||"GeneratorFunction"===(t.displayName||t.name))},a.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,w):(t.__proto__=w,i(t,o,"GeneratorFunction")),t.prototype=Object.create(_),t},a.awrap=function(t){return{__await:t}},E(x.prototype),i(x.prototype,r,function(){return this}),a.AsyncIterator=x,a.async=function(t,e,r,n,o){void 0===o&&(o=Promise);var i=new x(c(t,e,r,n),o);return a.isGeneratorFunction(e)?i:i.next().then(function(t){return t.done?t.value:i.next()})},E(_),i(_,o,"Generator"),i(_,n,function(){return this}),i(_,"toString",function(){return"[object Generator]"}),a.keys=function(t){var e,r=Object(t),n=[];for(e in r)n.push(e);return n.reverse(),function t(){for(;n.length;){var e=n.pop();if(e in r)return t.value=e,t.done=!1,t}return t.done=!0,t}},a.values=F,R.prototype={constructor:R,reset:function(t){if(this.prev=0,this.next=0,this.sent=this._sent=u,this.done=!1,this.delegate=null,this.method="next",this.arg=u,this.tryEntries.forEach(S),!t)for(var e in this)"t"===e.charAt(0)&&l.call(this,e)&&!isNaN(+e.slice(1))&&(this[e]=u)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(r){if(this.done)throw r;var n=this;function t(t,e){return i.type="throw",i.arg=r,n.next=t,e&&(n.method="next",n.arg=u),!!e}for(var e=this.tryEntries.length-1;0<=e;--e){var o=this.tryEntries[e],i=o.completion;if("root"===o.tryLoc)return t("end");if(o.tryLoc<=this.prev){var a=l.call(o,"catchLoc"),c=l.call(o,"finallyLoc");if(a&&c){if(this.prev<o.catchLoc)return t(o.catchLoc,!0);if(this.prev<o.finallyLoc)return t(o.finallyLoc)}else if(a){if(this.prev<o.catchLoc)return t(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return t(o.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;0<=r;--r){var n=this.tryEntries[r];if(n.tryLoc<=this.prev&&l.call(n,"finallyLoc")&&this.prev<n.finallyLoc){var o=n;break}}var i=(o=o&&("break"===t||"continue"===t)&&o.tryLoc<=e&&e<=o.finallyLoc?null:o)?o.completion:{};return i.type=t,i.arg=e,o?(this.method="next",this.next=o.finallyLoc,v):this.complete(i)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),v},finish:function(t){for(var e=this.tryEntries.length-1;0<=e;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),S(r),v}},catch:function(t){for(var e=this.tryEntries.length-1;0<=e;--e){var r,n,o=this.tryEntries[e];if(o.tryLoc===t)return"throw"===(r=o.completion).type&&(n=r.arg,S(o)),n}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:F(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=u),v}},a}function asyncGeneratorStep(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function _asyncToGenerator(c){return function(){var t=this,a=arguments;return new Promise(function(e,r){var n=c.apply(t,a);function o(t){asyncGeneratorStep(n,e,r,o,i,"next",t)}function i(t){asyncGeneratorStep(n,e,r,o,i,"throw",t)}o(void 0)})}}!function(){function t(c,u,l,s,f,h,p,d,o){var y=this;this.downloadReportForDevice=function(t,e,r,n){e=_.get(e,"id",e),r=_(r).map(_.partial(y.createPairFromSeries,e)).value();return new y.Downloader(t,n,r).start()},this.downloadReportForDatapoints=function(e,t,r){var n=_(t).filter(function(t){return!0===t.__active}).map(y.getDpRequestParams).value();return n.length?o.current().then(function(t){return o.hasRole(t,"ROLE_MEASUREMENT_READ")?new y.Downloader(e,r,n).start():c.reject(new Error(h("Could not download the report. You need this global role to download reports: Measurement Read.")))}):c.reject(new Error(h("At least 1 data point must be selected")))},this.createPairFromSeries=function(t,e){return{source:t,fragmentType:e}},this.getDpRequestParams=function(t){return{source:t.__target.id,valueFragmentType:t.fragment,valueFragmentSeries:t.series}},this.generateFileName=function(t,e){if(_.isEmpty(t.source&&e)||_.isEmpty(t.valueFragmentType||t.fragmentType))throw new Error("Unable to generate a file name for given data");var r=t.valueFragmentType?[t.valueFragmentType,t.valueFragmentSeries].join("."):t.fragmentType;return[t.source,r,e].join(".")},this.Downloader=function(r,n,t){var i=this,e=_.uniqBy(t,function(t){return JSON.stringify(t)});function o(){return(o=_asyncToGenerator(_regeneratorRuntime().mark(function t(r){var n,o,e;return _regeneratorRuntime().wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(n=c.defer(),403!==r.status)t.next=14;else{if(r.data instanceof Blob)return t.next=5,d.detail(r.config.params.source);t.next=11}break;case 5:o=t.sent,(e=new FileReader).addEventListener("loadend",function(t){try{var e=JSON.parse(_.get(t,"srcElement.result"));n.resolve({type:"danger",text:p.getString('Could not download data for "{{name}}": access denied.',o.data),detailedData:e})}catch(t){n.resolve(a(r))}}),e.readAsText(r.data),t.next=12;break;case 11:n.resolve(a(r));case 12:t.next=15;break;case 14:n.resolve({type:"danger",text:h("An error occurred. Please try again later."),detailedData:r});case 15:return t.abrupt("return",n.promise);case 16:case"end":return t.stop()}},t)}))).apply(this,arguments)}function a(t){return{text:h("Access denied."),type:"danger",detailedData:t}}this.downloadReports=function(){var t=_(e).map(i.downloadReportForDpRequestParams).value();return c.all(t).then(i.onDownloads)},this.start=function(){return s({templateUrl:":::PLUGIN_PATH:::/ui/views/measurementsReport.html",title:h("Generating report"),controller:["$scope","$timeout",function(n,o){n.completed=0,n.total=e.length,n.reportFileName="report.zip",n.close=function(){var t,e,r;void 0!==window.navigator.msSaveBlob?(t=n.blob,e=n.reportFileName,window.navigator.msSaveBlob(t,e)):(r=n.url,o(function(){window.URL.revokeObjectURL(r)},5e3)),n.$close()},i.scope=n,i.downloadReports()}]})},this.downloadReportForDpRequestParams=function(e,t){t=i.getFilter(e,t);return u.list(t,r).then(function(t){return i.onDownload(e,t)}).catch(function(t){return i.onDownloadError(t)})},this.onDownload=function(t,e){return i.scope.completed+=1,e.name=y.generateFileName(t,r.name),e},this.onDownloadError=function(t){return t.async?(i.scope.completed+=1,c.resolve(null)):(i.displayError(t),c.resolve(void 0))},this.displayError=function(t){!function(){return o.apply(this,arguments)}(t).then(f.add)},this.onDownloads=function(t){var t=t.filter(function(t){return void 0!==t}),e=t.filter(_.identity),t=t.length-e.length;return 0<t&&(t=p.getPlural(t,"You will get a CSV/Excel file for 1 series via email.","You will get CSV/Excel files for {{$count}} series via email.",{}),f.success(t)),0===e.length?c.when():l.zipFiles(e).then(function(t){i.scope.blob=t,i.scope.url=window.URL.createObjectURL(t)})},this.getFilter=function(t,e){e=_.isArray(n)?n[e]:n;return _.merge({},e,t)}}}t.$inject=["$q","c8yMeasurements","c8yZip","c8yModal","c8yAlert","gettext","gettextCatalog","c8yInventory","c8yUser"],angular.module("c8y.ui").service("MeasurementsReportSvc",t)}();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c8y/ng1-modules",
3
- "version": "1019.22.0",
3
+ "version": "1019.23.4",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Cumulocity",
6
6
  "description": "AngularJS modules for Cumulocity IoT applications.",
@@ -1 +1 @@
1
- "use strict";!function(){function e(o,e,t,i,n,l){var s=this;function r(e){s.role=e,c();e=e.roles;e=(e||{}).references||[],s.selectedPermissions=_.map(e,"role.id")}function c(){i.listGlobalPermissions().then(a)}function a(e){s.permissions=e}function u(){s.globalRoleDetailForm.$setDirty()}function f(e){return s.saving=!0,e.finally(function(){s.saving=!1}),e}_.assign(s,{$onInit:function(){(function(){var e=s.id,n=s.duplicateId;("new"===e?function(e){var n=i.newGlobalRole(e);return n.then(function(){e&&l(u)}),n}(n):function(e){return t.global.detail(e).then(o.getResData)}(e)).then(r)})(),c()},STRINGS:i.STRINGS,helpLink:n.getUserGuideLink(i.STRINGS.LINKS.ROLES_INVENTORY),onSaveName:function(e){return f(i.saveGlobalRoleName(s.role,e))},cancel:i.list,save:function(){return f(i.saveGlobalRole(s.role,s.selectedPermissions))},hasAppPermissions:function(){var o=/^ROLE_APPLICATION/;return _.some(s.selectedPermissions,function(e,n){return e&&o.test(n)})},onSelectedRolesChange:function(e){s.selectedPermissions=e,u()}})}e.$inject=["c8yBase","c8yPermissions","c8yRoles","c8yRolesUi","c8yDocs","$timeout"],angular.module("c8y.roles").component("c8yRoleDetailGlobal",{templateUrl:":::PLUGIN_PATH:::/detail/roleDetailGlobal.html",bindings:{id:"<",duplicateId:"<"},controllerAs:"vm",controller:e})}();
1
+ "use strict";!function(){function e(t,e,o,i,n,l){var s=this;function r(e){s.role=e,a();e=e.roles;e=(e||{}).references||[],s.selectedPermissions=_.map(e,"role.id")}function a(){i.listGlobalPermissions().then(c)}function c(e){s.permissions=e}function u(){s.globalRoleDetailForm.$setDirty()}function f(e){return s.saving=!0,e.finally(function(){s.saving=!1}),e}_.assign(s,{$onInit:function(){(function(){var e=s.id,n=s.duplicateId;("new"===e?function(e){var n=i.newGlobalRole(e);return n.then(function(){e&&l(u)}),n}(n):function(e){return o.global.detail(e).then(t.getResData)}(e)).then(r)})(),a()},STRINGS:i.STRINGS,helpLink:n.getUserGuideLink(i.STRINGS.LINKS.ROLES_INVENTORY),onSaveName:function(e){return f(i.saveGlobalRoleName(s.role,e))},cancel:i.list,save:function(){return f(i.saveGlobalRole(s.role,s.selectedPermissions))},hasAppPermissions:function(){var t=/^ROLE_APPLICATION/;return _.some(s.selectedPermissions,function(e,n){return e&&t.test(n)})},onSelectedRolesChange:function(e){s.selectedPermissions=e,u()}})}e.$inject=["c8yBase","c8yPermissions","c8yRoles","c8yRolesUi","c8yDocs","$timeout"],angular.module("c8y.roles").component("c8yRoleDetailGlobal",{templateUrl:":::PLUGIN_PATH:::/detail/roleDetailGlobal.html",bindings:{id:"<",duplicateId:"<",tabName:"<"},controllerAs:"vm",controller:e})}();
@@ -2,13 +2,10 @@
2
2
 
3
3
  <c8y-breadcrumbs-set>
4
4
  <c8y-breadcrumbs-item
5
- icon="connected-people"
6
5
  path="#roles/global_roles"
7
- label="{{ 'Global roles' | translate }}"
6
+ label="{{ vm.tabName }}"
8
7
  ></c8y-breadcrumbs-item>
9
8
  <c8y-breadcrumbs-item
10
- icon="c8y-users"
11
- path="#roles"
12
9
  label="{{ 'Roles' | translate }}"
13
10
  ></c8y-breadcrumbs-item>
14
11
  <c8y-breadcrumbs-item
@@ -1 +1 @@
1
- "use strict";!function(){function n(t,e,o,i,n){var r=this;function a(n){return r.saving=!0,n.finally(function(){r.saving=!1}),n}function l(n){return"SUPPORT"===n.name&&!r.isTopTenant}_.assign(r,{$onInit:function(){!function(){var n=r.id,e=r.duplicateId;("new"===n?i.newInventoryRole(e):o.detail(n).then(t.getResData)).then(function(n){r.role=n})}()},$onChanges:function(n){n.isTopTenant&&(r.permissionScopes=function(){var n=e.SCOPES.values();return _.reject(n,l)}())},STRINGS:i.STRINGS,helpLink:n.getUserGuideLink(i.STRINGS.LINKS.ROLES_INVENTORY),onSaveName:function(n){return a(i.saveInventoryRoleName(r.role,n))},cancel:i.list,save:function(){return a(i.saveInventoryRole(r.role))}})}n.$inject=["c8yBase","c8yPermissions","c8yRoles","c8yRolesUi","c8yDocs"],angular.module("c8y.roles").component("c8yRoleDetailInventory",{templateUrl:":::PLUGIN_PATH:::/detail/roleDetailInventory.html",bindings:{id:"<",duplicateId:"<",isTopTenant:"<"},controllerAs:"vm",controller:n})}();
1
+ "use strict";!function(){function n(t,e,o,i,n){var a=this;function r(n){return a.saving=!0,n.finally(function(){a.saving=!1}),n}function l(n){return"SUPPORT"===n.name&&!a.isTopTenant}_.assign(a,{$onInit:function(){!function(){var n=a.id,e=a.duplicateId;("new"===n?i.newInventoryRole(e):o.detail(n).then(t.getResData)).then(function(n){a.role=n})}()},$onChanges:function(n){n.isTopTenant&&(a.permissionScopes=function(){var n=e.SCOPES.values();return _.reject(n,l)}())},STRINGS:i.STRINGS,helpLink:n.getUserGuideLink(i.STRINGS.LINKS.ROLES_INVENTORY),onSaveName:function(n){return r(i.saveInventoryRoleName(a.role,n))},cancel:i.list,save:function(){return r(i.saveInventoryRole(a.role))}})}n.$inject=["c8yBase","c8yPermissions","c8yRoles","c8yRolesUi","c8yDocs"],angular.module("c8y.roles").component("c8yRoleDetailInventory",{templateUrl:":::PLUGIN_PATH:::/detail/roleDetailInventory.html",bindings:{id:"<",duplicateId:"<",isTopTenant:"<",tabName:"<"},controllerAs:"vm",controller:n})}();
@@ -2,14 +2,15 @@
2
2
 
3
3
  <c8y-breadcrumbs-set>
4
4
  <c8y-breadcrumbs-item
5
- path="#roles"
5
+ path="#roles/inventory_roles"
6
+ label="{{ vm.tabName }}"
7
+ ></c8y-breadcrumbs-item>
8
+ <c8y-breadcrumbs-item
6
9
  label="{{ 'Roles' | translate }}"
7
- icon="c8y-users"
8
10
  ></c8y-breadcrumbs-item>
9
11
  <c8y-breadcrumbs-item
10
- path="#roles/inventory_roles"
11
- label="{{ 'Inventory roles' | translate }}"
12
- icon="insurance-agent"
12
+ icon="c8y-accounts"
13
+ label="{{ 'Accounts' | translate }}"
13
14
  ></c8y-breadcrumbs-item>
14
15
  </c8y-breadcrumbs-set>
15
16
 
@@ -1 +1 @@
1
- "use strict";!function(){function e(n,o){var t=this;_.assign(t,{remove:function(e){o.removeAfterConfirmation(e).then(function(){t.onRemove({role:e})})},duplicate:o.duplicate,edit:o.edit,isUndeletable:o.isUndeletable,$onInit:function(){o.canCreate().then(function(e){t.canCreate=e})}}),n.loadNext=function(){t.onLoadNext()},n.$watch("vm.roles.paging",function(e){t.roles&&(t.roles=t.roles.sort(function(e,n){return e.name.localeCompare(n.name,void 0,{numeric:!0})})),n.paging=e,_.forEach(t.roles,function(e){e.name=e.name&&_.trim(e.name),e.description=e.description&&_.trim(e.description)})})}e.$inject=["$scope","c8yRolesUi"],angular.module("c8y.roles").component("c8yRolesList",{templateUrl:":::PLUGIN_PATH:::/list/rolesList.html",bindings:{roles:"<",addRole:"&",onRemove:"&",helpText:"<",onLoadNext:"&"},controllerAs:"vm",controller:e})}();
1
+ "use strict";!function(){function e(n,o){var t=this;_.assign(t,{remove:function(e){o.removeAfterConfirmation(e).then(function(){t.onRemove({role:e})})},duplicate:o.duplicate,edit:o.edit,isUndeletable:o.isUndeletable,$onInit:function(){o.canCreate().then(function(e){t.canCreate=e})}}),n.loadNext=function(){t.onLoadNext()},n.$watch("vm.roles.paging",function(e){t.roles&&(t.roles=t.roles.sort(function(e,n){return e.name.localeCompare(n.name,void 0,{numeric:!0})})),n.paging=e,_.forEach(t.roles,function(e){e.name=e.name&&_.trim(e.name),e.description=e.description&&_.trim(e.description)})})}e.$inject=["$scope","c8yRolesUi"],angular.module("c8y.roles").component("c8yRolesList",{templateUrl:":::PLUGIN_PATH:::/list/rolesList.html",bindings:{tabName:"<",roles:"<",addRole:"&",onRemove:"&",helpText:"<",onLoadNext:"&"},controllerAs:"vm",controller:e})}();
@@ -1,7 +1,8 @@
1
1
  <c8y-breadcrumbs-set>
2
2
  <c8y-breadcrumbs-item
3
- icon="c8y-accounts"
4
- path="#roles"
3
+ label= "{{ vm.tabName }}"
4
+ ></c8y-breadcrumbs-item>
5
+ <c8y-breadcrumbs-item
5
6
  label="{{ 'Roles' | translate }}"
6
7
  ></c8y-breadcrumbs-item>
7
8
  <c8y-breadcrumbs-item
@@ -1 +1 @@
1
- "use strict";!function(){function e(g,e,n){d.$inject=["$rootScope","$location","$q","gettextCatalog","c8yBase","c8yTitle","c8yModal","c8yAlert","c8yRoles","c8yPermissions","c8yRolesUiStrings"],c.$inject=["$routeParams","c8yTenant"];var y="roles",b="roles/inventory_roles",R="".concat(y,"/global/:roleId"),w="".concat(y,"/inventory/:roleId"),t="c8y-users",o={priority:1e3,icon:"connected-people",template:'<c8y-roles-list roles="vm.globalRoles" help-text="vm.globalHelpText" on-remove="vm.onRemove(role, vm.globalRoles)" add-role="vm.add(\'global\')" on-load-next="vm.loadNext(\'global\')"></c8y-roles-list>',name:g("Global roles"),controller:"c8yRolesOverviewCtrl",controllerAs:"vm"},r={icon:"insurance-agent",template:'<c8y-roles-list roles="vm.inventoryRoles" help-text="vm.inventoryHelpText" on-remove="vm.onRemove(role, vm.inventoryRoles)" add-role="vm.add(\'inventory\')" on-load-next="vm.loadNext(\'inventory\')"></c8y-roles-list>',name:g("Inventory roles"),controller:"c8yRolesOverviewCtrl",controllerAs:"vm"},a={template:'<c8y-role-detail-global id="vm.params.roleId" duplicate-id="vm.params.duplicate"></c8y-role-global-global>'},l={template:'<c8y-role-detail-inventory id="vm.params.roleId" duplicate-id="vm.params.duplicate" is-top-tenant="vm.isTopTenant"></c8y-role-detail-inventory>'},i={controllerAs:"vm",controller:c};function c(e,n){var t=this;_.assign(t,{isTopTenant:!1,params:e}),n.isCurrentUserTopTenant().then(function(e){t.isTopTenant=e})}var T=["READ","ADMIN","CREATE","UPDATE"],E="ROLE_USER_MANAGEMENT_ADMIN",s=["ROLE_USER_MANAGEMENT_READ",E];function u(){e.when("/".concat(y),o),e.when("/".concat(y),r),e.when("/".concat(R),_.assign(a,i)),e.when("/".concat(w),_.assign(l,i))}function d(r,t,a,l,o,e,i,c,s,n,u){return{ROUTE_LIST:y,STRINGS:u,listGlobalPermissions:function(){return n.listGlobal().then(function(e){return _.filter(e,function(e){return _.includes(T,e.access)})})},list:d,setListTitle:function(){e.changeTitle({title:g("Roles")})},add:m,edit:function(e){var n=s.isGlobal(e)?R:w;return function(e,n){e=o.getId(e),n=n.replace(/:\w+/,e);return t.search("duplicate",null),t.path(n)}(e,n)},duplicate:function(e){m(s.isGlobal(e)?"global":"inventory",e.id)},removeAfterConfirmation:function(e){var n={title:g("Delete role"),body:l.getString('You are about to delete role "{{name}}". Do you want to proceed?',e),labels:{ok:g("Delete")},status:"danger"},n=i(n),t=_.partial(s.remove,e),o=_.partial(s.global.remove,e),e=s.isGlobal(e)?o:t;return n.then(e).then(function(){return c.success(g("Role deleted."))}).catch(function(e){var n=_.get(e,"status");return n&&(422===n?c.warning(g("Role cannot be deleted because it is assigned to users.")):(n=e,n=_.get(n,"data",n),r.$emit("alert",{type:"danger",text:$("<div/>").text(l.getString(n.message)).html(),detailedData:n}))),a.reject(e)})},canCreate:function(){return n.hasAnyRole([E])},newInventoryRole:function(e){var n=a.when({name:l.getString("New inventory role"),permissions:[]});e&&(n=s.detail(e).then(function(e){var e=e.data,n={};return n.name="".concat(e.name," 2"),n.permissions=_.map(e.permissions,function(e){return _.omit(e,["id"])}),n}));return n},saveInventoryRole:function(e){var n=a.when();e.id||(n=v(e,e.name).catch(h(e.name)));return n.then(_.partial(s.save,e)).then(function(){return c.success(g("Inventory role saved."))}).then(d)},saveInventoryRoleName:function(n,t){return v(n,t).then(function(){var e;return n.id?e=s.update({id:n.id,name:t}).then(function(e){return n.name=t,e}):n.name=t,e},h(t))},newGlobalRole:function(e){var n=a.when({name:l.getString("New global role")});e&&(n=s.global.detail(e).then(function(e){e=_.pick(e.data,["name","roles","applications"]);return e.name+=" 2",e}));return n},saveGlobalRole:function(n,t){return(n.id?function(){var e=r.$new(!0);return e.role=n,i({templateUrl:":::PLUGIN_PATH:::/detail/roleGlobalSaveConfirm.html",title:g("Confirm saving changes?"),scope:e})}():a.when()).then(function(){var e=a.when();return(e=n.id?e:f(n,n.name).catch(h(n.name))).then(_.partial(s.global.save,n))}).then(function(e){return s.global.updateRoles(e,t)}).then(function(){return c.success(g("Global role saved."))}).then(d)},saveGlobalRoleName:function(n,t){return f(n,t).then(function(){var e=a.when();return n.id?e=s.global.update({id:n.id,name:t}).then(function(e){return n.name=t,e}):n.name=t,e},h(t))},isUndeletable:function(e){return s.isGlobal(e)&&("admins"===_.lowerCase(e.name)||"devices"===_.lowerCase(e.name)||n.hasRole(e,"ROLE_NO_DELETE"))}};function d(){var e=new RegExp("\\/roles\\/inventory\\/(\\w+)"),e=t.path().match(e),e="/".concat(e?b:y);t.path(e),t.search("duplicate",null)}function m(e,n){e=("global"===e?R:w).replace(/:\w+/,"new");t.path(e),n&&t.search("duplicate",n)}function v(n,t){return s.list().then(function(e){return p(e,n,t)})}function p(e,n,t){e=_.filter(e,function(e){return e.id!==n.id});return _.some(e,{name:t})&&a.reject({duplicate:!0})}function h(n){return function(e){return _.get(e,"duplicate")&&c.danger(l.getString('There is already a role with the name "{{name}}"',{name:n})),a.reject()}}function f(n,t){return s.global.list().then(function(e){return p(e,n,t)})}}return{$get:d,init:function(){u(),n.addNavigation({name:g("Roles"),parent:g("Accounts"),routerLinkExact:!1,priority:4900,path:y,icon:t,showIfPermissions:{anyRole:s}})},hookViews:u}}e.$inject=["gettext","c8yViewsProvider","c8yNavigatorProvider"],angular.module("c8y.roles").provider("c8yRolesUi",e)}();
1
+ "use strict";!function(){function e(g,e,n){v.$inject=["$rootScope","$location","$q","gettextCatalog","c8yBase","c8yTitle","c8yModal","c8yAlert","c8yRoles","c8yPermissions","c8yRolesUiStrings"],u.$inject=["$routeParams","c8yTenant"];var y="roles",b="roles/inventory_roles",R="".concat(y,"/global/:roleId"),w="".concat(y,"/inventory/:roleId"),t="c8y-users",o=g("Global roles"),a={priority:1e3,icon:"connected-people",template:"<c8y-roles-list tab-name=\"'".concat(o,'\' | translate" roles="vm.globalRoles" help-text="vm.globalHelpText" on-remove="vm.onRemove(role, vm.globalRoles)" add-role="vm.add(\'global\')" on-load-next="vm.loadNext(\'global\')"></c8y-roles-list>'),name:o,controller:"c8yRolesOverviewCtrl",controllerAs:"vm"},r=g("Inventory roles"),l={icon:"insurance-agent",template:"<c8y-roles-list tab-name=\"'".concat(r,'\' | translate" roles="vm.inventoryRoles" help-text="vm.inventoryHelpText" on-remove="vm.onRemove(role, vm.inventoryRoles)" add-role="vm.add(\'inventory\')" on-load-next="vm.loadNext(\'inventory\')"></c8y-roles-list>'),name:r,controller:"c8yRolesOverviewCtrl",controllerAs:"vm"},i={template:"<c8y-role-detail-global tab-name=\"'".concat(o,'\' | translate" id="vm.params.roleId" duplicate-id="vm.params.duplicate"></c8y-role-global-global>')},c={template:"<c8y-role-detail-inventory tab-name=\"'".concat(r,'\' | translate" id="vm.params.roleId" duplicate-id="vm.params.duplicate" is-top-tenant="vm.isTopTenant"></c8y-role-detail-inventory>')},s={controllerAs:"vm",controller:u};function u(e,n){var t=this;_.assign(t,{isTopTenant:!1,params:e}),n.isCurrentUserTopTenant().then(function(e){t.isTopTenant=e})}var T=["READ","ADMIN","CREATE","UPDATE"],E="ROLE_USER_MANAGEMENT_ADMIN",m=["ROLE_USER_MANAGEMENT_READ",E];function d(){e.when("/".concat(y),a),e.when("/".concat(y),l),e.when("/".concat(R),_.assign(i,s)),e.when("/".concat(w),_.assign(c,s))}function v(a,t,r,l,o,e,i,c,s,n,u){return{ROUTE_LIST:y,STRINGS:u,listGlobalPermissions:function(){return n.listGlobal().then(function(e){return _.filter(e,function(e){return _.includes(T,e.access)})})},list:m,setListTitle:function(){e.changeTitle({title:g("Roles")})},add:d,edit:function(e){var n=s.isGlobal(e)?R:w;return function(e,n){e=o.getId(e),n=n.replace(/:\w+/,e);return t.search("duplicate",null),t.path(n)}(e,n)},duplicate:function(e){d(s.isGlobal(e)?"global":"inventory",e.id)},removeAfterConfirmation:function(e){var n={title:g("Delete role"),body:l.getString('You are about to delete role "{{name}}". Do you want to proceed?',e),labels:{ok:g("Delete")},status:"danger"},n=i(n),t=_.partial(s.remove,e),o=_.partial(s.global.remove,e),e=s.isGlobal(e)?o:t;return n.then(e).then(function(){return c.success(g("Role deleted."))}).catch(function(e){var n=_.get(e,"status");return n&&(422===n?c.warning(g("Role cannot be deleted because it is assigned to users.")):(n=e,n=_.get(n,"data",n),a.$emit("alert",{type:"danger",text:$("<div/>").text(l.getString(n.message)).html(),detailedData:n}))),r.reject(e)})},canCreate:function(){return n.hasAnyRole([E])},newInventoryRole:function(e){var n=r.when({name:l.getString("New inventory role"),permissions:[]});e&&(n=s.detail(e).then(function(e){var e=e.data,n={};return n.name="".concat(e.name," 2"),n.permissions=_.map(e.permissions,function(e){return _.omit(e,["id"])}),n}));return n},saveInventoryRole:function(e){var n=r.when();e.id||(n=v(e,e.name).catch(h(e.name)));return n.then(_.partial(s.save,e)).then(function(){return c.success(g("Inventory role saved."))}).then(m)},saveInventoryRoleName:function(n,t){return v(n,t).then(function(){var e;return n.id?e=s.update({id:n.id,name:t}).then(function(e){return n.name=t,e}):n.name=t,e},h(t))},newGlobalRole:function(e){var n=r.when({name:l.getString("New global role")});e&&(n=s.global.detail(e).then(function(e){e=_.pick(e.data,["name","roles","applications"]);return e.name+=" 2",e}));return n},saveGlobalRole:function(n,t){return(n.id?function(){var e=a.$new(!0);return e.role=n,i({templateUrl:":::PLUGIN_PATH:::/detail/roleGlobalSaveConfirm.html",title:g("Confirm saving changes?"),scope:e})}():r.when()).then(function(){var e=r.when();return(e=n.id?e:f(n,n.name).catch(h(n.name))).then(_.partial(s.global.save,n))}).then(function(e){return s.global.updateRoles(e,t)}).then(function(){return c.success(g("Global role saved."))}).then(m)},saveGlobalRoleName:function(n,t){return f(n,t).then(function(){var e=r.when();return n.id?e=s.global.update({id:n.id,name:t}).then(function(e){return n.name=t,e}):n.name=t,e},h(t))},isUndeletable:function(e){return s.isGlobal(e)&&("admins"===_.lowerCase(e.name)||"devices"===_.lowerCase(e.name)||n.hasRole(e,"ROLE_NO_DELETE"))}};function m(){var e=new RegExp("\\/roles\\/inventory\\/(\\w+)"),e=t.path().match(e),e="/".concat(e?b:y);t.path(e),t.search("duplicate",null)}function d(e,n){e=("global"===e?R:w).replace(/:\w+/,"new");t.path(e),n&&t.search("duplicate",n)}function v(n,t){return s.list().then(function(e){return p(e,n,t)})}function p(e,n,t){e=_.filter(e,function(e){return e.id!==n.id});return _.some(e,{name:t})&&r.reject({duplicate:!0})}function h(n){return function(e){return _.get(e,"duplicate")&&c.danger(l.getString('There is already a role with the name "{{name}}"',{name:n})),r.reject()}}function f(n,t){return s.global.list().then(function(e){return p(e,n,t)})}}return{$get:v,init:function(){d(),n.addNavigation({name:g("Roles"),parent:g("Accounts"),routerLinkExact:!1,priority:4900,path:y,icon:t,showIfPermissions:{anyRole:m}})},hookViews:d}}e.$inject=["gettext","c8yViewsProvider","c8yNavigatorProvider"],angular.module("c8y.roles").provider("c8yRolesUi",e)}();
@@ -1 +1 @@
1
- "use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ownKeys(t,e){var r,n=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)),n}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(r),!0).forEach(function(e){_defineProperty(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function _defineProperty(e,t,r){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"==_typeof(e)?e:String(e)}function _toPrimitive(e,t){if("object"!=_typeof(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0===r)return("string"===t?String:Number)(e);r=r.call(e,t||"default");if("object"!=_typeof(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){var r;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(r="Object"===(r=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:r)||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,s,l=[],a=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;a=!1}else for(;!(a=(n=i.call(r)).done)&&(l.push(n.value),l.length!==t);a=!0);}catch(e){c=!0,o=e}finally{try{if(!a&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(c)throw o}}return l}}function _arrayWithHoles(e){if(Array.isArray(e))return e}!function(){function e(e,t,r,n,o,i,s,l){var a=this;function c(){t.listInventoryRoles(a.userId).then(r.getResData).then(function(e){a.assignedRoles=_.keyBy(e.inventoryAssignments,"managedObject")}),t.detail(a.userId).then(r.getResData).then(function(e){a.user=e,a.user.owner?t.listInventoryRoles(a.user.owner).then(r.getResData).then(function(e){a.ownerAssignedRoles=_.keyBy(e.inventoryAssignments,"managedObject"),_.isEmpty(a.ownerAssignedRoles)&&(a.displayNoOwnerRolesAlert=!0),a.failedToFetchOwnerInventoryRoles=!1}).catch(function(){a.failedToFetchOwnerInventoryRoles=!0}):a.failedToFetchOwnerInventoryRoles=!1})}function u(){c(),s.success(l.getPlural(y(),"Inventory role updated","Inventory roles updated",{}))}function y(){return _.filter(a.assignedRoles,"isModified").length}function f(e){var t="replace"===e.process,e=e.roles,r=_.map(a.assignedRoles);return n.copyUserRoles(e,r,a.userId,t).then(c).then(o.successUserRolesCopy)}_.assign(a,{$onChange:function(e){e.user&&c()},onChangeRoles:function(e){var t=e.roles,e=e.managedObjectId;a.assignedRoles[e]=a.assignedRoles[e]||{},_.assign(a.assignedRoles[e],{managedObject:e,roles:t,isModified:!0}),a.assignedRoles=_objectSpread({},a.assignedRoles)},onSaveInventoryRoles:function(){n.onSaveInventoryRoles(a.userId,a.assignedRoles).then(u)},copyRoles:function(){o.copyFromUserDialog(a.userId).then(f)},loadAssignedRoles:c,isUnchanged:function(){return 0===y()},pageSize:20,scrollToTop:function(){var e=_slicedToArray(angular.element(document.querySelector("#inventory-roles-container")),1)[0];e&&e.scrollTo(0,0)},helpLink:i.getUserGuideLink(_.get(o.STRINGS,"LINKS.ROLES_INVENTORY")),stopEventPropagation:function(e){e.stopPropagation()},displayNoOwnerRolesAlert:!1,failedToFetchOwnerInventoryRoles:null}),c()}e.$inject=["$q","c8yUser","c8yBase","c8yUserInventoryRoles","c8yUserRolesUi","c8yDocs","c8yAlert","gettextCatalog"],angular.module("c8y.userRoles").component("c8yUserInventoryRolesTab",{templateUrl:":::PLUGIN_PATH:::/inventoryRolesTab/inventoryRolesTab.html",controllerAs:"vm",controller:e,bindings:{userId:"<"}})}();
1
+ "use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function ownKeys(t,e){var r,n=Object.keys(t);return Object.getOwnPropertySymbols&&(r=Object.getOwnPropertySymbols(t),e&&(r=r.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),n.push.apply(n,r)),n}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var r=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(r),!0).forEach(function(e){_defineProperty(t,e,r[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(r,e))})}return t}function _defineProperty(e,t,r){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"==_typeof(e)?e:String(e)}function _toPrimitive(e,t){if("object"!=_typeof(e)||!e)return e;var r=e[Symbol.toPrimitive];if(void 0===r)return("string"===t?String:Number)(e);r=r.call(e,t||"default");if("object"!=_typeof(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray(e,t)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(e,t){var r;if(e)return"string"==typeof e?_arrayLikeToArray(e,t):"Map"===(r="Object"===(r=Object.prototype.toString.call(e).slice(8,-1))&&e.constructor?e.constructor.name:r)||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,o,i,s,a=[],l=!0,c=!1;try{if(i=(r=r.call(e)).next,0===t){if(Object(r)!==r)return;l=!1}else for(;!(l=(n=i.call(r)).done)&&(a.push(n.value),a.length!==t);l=!0);}catch(e){c=!0,o=e}finally{try{if(!l&&null!=r.return&&(s=r.return(),Object(s)!==s))return}finally{if(c)throw o}}return a}}function _arrayWithHoles(e){if(Array.isArray(e))return e}!function(){function e(e,t,r,n,o,i,s,a,l,c){var u=this,y=c("You cannot edit inventory roles for user with external origin, since it is managed via your authorization server.");function f(){t.listInventoryRoles(u.userId).then(r.getResData).then(function(e){u.assignedRoles=_.keyBy(e.inventoryAssignments,"managedObject")}),t.detail(u.userId).then(r.getResData).then(function(e){u.user=e,u.user.owner?t.listInventoryRoles(u.user.owner).then(r.getResData).then(function(e){u.ownerAssignedRoles=_.keyBy(e.inventoryAssignments,"managedObject"),_.isEmpty(u.ownerAssignedRoles)&&(u.displayNoOwnerRolesAlert=!0),u.failedToFetchOwnerInventoryRoles=!1}).catch(function(){u.failedToFetchOwnerInventoryRoles=!0}):u.failedToFetchOwnerInventoryRoles=!1})}function d(){f(),a.success(l.getPlural(p(),"Inventory role updated","Inventory roles updated",{}))}function p(){return _.filter(u.assignedRoles,"isModified").length}function g(e){var t="replace"===e.process,e=e.roles,r=_.map(u.assignedRoles);return n.copyUserRoles(e,r,u.userId,t).then(f).then(o.successUserRolesCopy)}_.assign(u,{$onInit:function(){t.detail(u.userId).then(r.getResData).then(function(e){return t.hasExternalOrigin(e)?s.isSsoClearingUserRolesOnEveryLogin().then(function(e){return u.disableEditForExternalUsers=e,u.disableEditForExternalUsers&&a.warning(y),u.disableEditForExternalUsers}):u.disableEditForExternalUsers=!1})},$onChange:function(e){e.user&&f()},onChangeRoles:function(e){var t=e.roles,e=e.managedObjectId;u.assignedRoles[e]=u.assignedRoles[e]||{},_.assign(u.assignedRoles[e],{managedObject:e,roles:t,isModified:!0}),u.assignedRoles=_objectSpread({},u.assignedRoles)},onSaveInventoryRoles:function(){n.onSaveInventoryRoles(u.userId,u.assignedRoles).then(d)},copyRoles:function(){o.copyFromUserDialog(u.userId).then(g)},loadAssignedRoles:f,isUnchanged:function(){return 0===p()},pageSize:20,scrollToTop:function(){var e=_slicedToArray(angular.element(document.querySelector("#inventory-roles-container")),1)[0];e&&e.scrollTo(0,0)},helpLink:i.getUserGuideLink(_.get(o.STRINGS,"LINKS.ROLES_INVENTORY")),stopEventPropagation:function(e){e.stopPropagation()},displayNoOwnerRolesAlert:!1,failedToFetchOwnerInventoryRoles:null,disableEditForExternalUsers:!1}),f()}e.$inject=["$q","c8yUser","c8yBase","c8yUserInventoryRoles","c8yUserRolesUi","c8yDocs","c8yLoginOptions","c8yAlert","gettextCatalog","gettext"],angular.module("c8y.userRoles").component("c8yUserInventoryRolesTab",{templateUrl:":::PLUGIN_PATH:::/inventoryRolesTab/inventoryRolesTab.html",controllerAs:"vm",controller:e,bindings:{userId:"<"}})}();
@@ -85,6 +85,7 @@
85
85
  title="{{ 'Copy inventory roles from another user' | translate }}"
86
86
  type="button"
87
87
  ng-click="vm.copyRoles()"
88
+ ng-disabled="vm.disableEditForExternalUsers"
88
89
  >
89
90
  <i c8y-icon="clipboard"></i>
90
91
  {{ 'Copy inventory roles from another user' | translate }}
@@ -164,7 +165,7 @@
164
165
  class="btn btn-primary"
165
166
  title="{{ 'Save' | translate }}"
166
167
  type="submit"
167
- ng-disabled="vm.isUnchanged()"
168
+ ng-disabled="vm.disableEditForExternalUsers || vm.isUnchanged()"
168
169
  ng-click="vm.onSaveInventoryRoles()"
169
170
  >
170
171
  {{ 'Save' | translate }}