@c8y/ng1-modules 1021.31.4 → 1021.34.1

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.
@@ -3,7 +3,7 @@ msgstr ""
3
3
  "Project-Id-Version: c8y-cumulocity-ui\n"
4
4
  "Report-Msgid-Bugs-To: \n"
5
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2025-01-13 18:13\n"
6
+ "PO-Revision-Date: 2025-01-22 18:11\n"
7
7
  "Last-Translator: \n"
8
8
  "Language: de\n"
9
9
  "Language-Team: German\n"
@@ -1355,7 +1355,7 @@ msgid "After clicking \"Download\":<br>\n"
1355
1355
  " </ul>\n"
1356
1356
  " <p>The total number of data points that can be exported is: <strong>{{$totalExportableDatapointsCount}} out of {{$totalDatapointsSelectedForExportCount}}</strong>.\n"
1357
1357
  " <p><strong>Note:</strong> The file name convention of files within zip file is: <code>[source]_[fragment_series].[csv/xls]</code></p>"
1358
- msgstr "Nachdem Sie auf \"Herunterladen\"geklickt haben, werden folgende Aktionen ausgeführt:<br>\n"
1358
+ msgstr "Nachdem Sie auf \"Herunterladen\" geklickt haben, werden folgende Aktionen ausgeführt:<br>\n"
1359
1359
  " <ul>\n"
1360
1360
  " <li><strong>{{$browserDownloadableCount}}</strong> Datenpunkt(e)-Exporte werden direkt in einer Datei heruntergeladen: <em>exported_[csv/excel].zip</em></li>\n"
1361
1361
  " <li><strong>{{$emailDeliverableCount}}</strong> Datenpunkt(e)-Exporte müssen weiter verarbeitet werden. Die Dateien werden Ihnen nach Abschluss der Verarbeitung in einer separaten E-Mails gesendet. Dies kann einige Zeit in Anspruch nehmen.</li>\n"
@@ -4395,6 +4395,9 @@ msgstr "Benutzerdefiniertes CSS"
4395
4395
  msgid "Custom action"
4396
4396
  msgstr "Benutzerdefiniertes Kommando"
4397
4397
 
4398
+ msgid "Custom alarm type"
4399
+ msgstr "Benutzerdefinierter Alarmtyp"
4400
+
4398
4401
  msgid "Custom applications"
4399
4402
  msgstr "Benutzerdefinierte Anwendungen"
4400
4403
 
@@ -4438,7 +4441,7 @@ msgid "Customer"
4438
4441
  msgstr "Kunde"
4439
4442
 
4440
4443
  msgid "Cycle data connection status"
4441
- msgstr "Datenverbindung neustarten"
4444
+ msgstr "Status des Datenverbindungszyklus"
4442
4445
 
4443
4446
  msgid "Cycle detected for route {{route}}."
4444
4447
  msgstr "Kreislauf in Route {{route}} festgestellt."
@@ -8144,9 +8147,6 @@ msgstr "Wenn kein Produktzertifikatsschlüssel angegeben wird, wird das Gerät a
8144
8147
  msgid "If not specified, LWM2M Agent generates the URL"
8145
8148
  msgstr "Falls nicht anders festgelegt wird die URL durch den LWM2M-Agenten generiert"
8146
8149
 
8147
- msgid "If selected, it ignores empty values on all resources below."
8148
- msgstr "Wenn diese Option ausgewählt ist, werden leere Werte bei allen nachfolgenden Ressourcen ignoriert."
8149
-
8150
8150
  msgid "If selected, it will process the result of the request using response templates."
8151
8151
  msgstr "Wenn diese Option ausgewählt ist, wird das Ergebnis der Anfrage mithilfe von Antwort-Templates verarbeitet."
8152
8152
 
@@ -11450,6 +11450,9 @@ msgstr "Das Passwort muss die unten aufgeführten Anforderungen erfüllen:"
11450
11450
  msgid "Password only"
11451
11451
  msgstr "Nur Passwort"
11452
11452
 
11453
+ msgid "Password options"
11454
+ msgstr "Optionen für das Passwort"
11455
+
11453
11456
  msgid "Password reset"
11454
11457
  msgstr "Zurücksetzen des Passworts"
11455
11458
 
@@ -12684,9 +12687,6 @@ msgstr "Widgets zurücksetzen"
12684
12687
  msgid "Reset`dashboard`"
12685
12688
  msgstr "Zurücksetzen"
12686
12689
 
12687
- msgid "Resource update complete."
12688
- msgstr "Aktualisierung der Ressourcen abgeschlossen."
12689
-
12690
12690
  msgid "Resources"
12691
12691
  msgstr "Ressourcen"
12692
12692
 
@@ -14166,6 +14166,12 @@ msgstr "Operation auf ERFOLGREICH setzen"
14166
14166
  msgid "Set password"
14167
14167
  msgstr "Passwort festlegen"
14168
14168
 
14169
+ msgid "Set password for the user (no change required)"
14170
+ msgstr "Passwort für den Benutzer festlegen (keine Änderung erforderlich)"
14171
+
14172
+ msgid "Set password that must be changed on the first login"
14173
+ msgstr "Passwort festlegen, das bei der ersten Anmeldung geändert werden muss"
14174
+
14169
14175
  msgid "Set pullup voltage (in volts)"
14170
14176
  msgstr "Pull-up setzen (in Volt)"
14171
14177
 
@@ -16955,8 +16961,8 @@ msgstr "Zurücksetzen des Passworts"
16955
16961
  msgid "User menu"
16956
16962
  msgstr "Benutzermenü"
16957
16963
 
16958
- msgid "User must reset password on next login"
16959
- msgstr "Benutzer muss sein Passwort beim nächsten Anmelden zurücksetzen"
16964
+ msgid "User must change password on the next login"
16965
+ msgstr "Benutzer muss Passwort beim nächsten Anmelden ändern"
16960
16966
 
16961
16967
  msgid "User password update"
16962
16968
  msgstr "Benutzerpasswort aktualisieren"
@@ -19103,6 +19109,9 @@ msgstr "{{ intervalInSeconds }} s"
19103
19109
  msgid "{{ label }} properties"
19104
19110
  msgstr "{{ label }}-Attribute"
19105
19111
 
19112
+ msgid "{{ lastUpdated }} by {{ user }}"
19113
+ msgstr "{{ lastUpdated }} von {{ user }}"
19114
+
19106
19115
  msgid "{{ name }} (v. {{ version }}) is already installed on this device"
19107
19116
  msgstr "{{ name }} (v. {{ version }}) ist bereits auf Ihrem Gerät installiert"
19108
19117
 
@@ -3,7 +3,7 @@ msgstr ""
3
3
  "Project-Id-Version: c8y-cumulocity-ui\n"
4
4
  "Report-Msgid-Bugs-To: \n"
5
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2025-01-13 18:13\n"
6
+ "PO-Revision-Date: 2025-01-22 12:16\n"
7
7
  "Last-Translator: \n"
8
8
  "Language: es\n"
9
9
  "Language-Team: Spanish\n"
@@ -4401,6 +4401,9 @@ msgstr "CSS personalizado"
4401
4401
  msgid "Custom action"
4402
4402
  msgstr "Acción personalizada"
4403
4403
 
4404
+ msgid "Custom alarm type"
4405
+ msgstr "Tipo de Alarma Personalizada"
4406
+
4404
4407
  msgid "Custom applications"
4405
4408
  msgstr "Aplicaciones personalizadas"
4406
4409
 
@@ -8162,9 +8165,6 @@ msgstr "Si no se ha indicado ninguna clave de certificado, se considera que el d
8162
8165
  msgid "If not specified, LWM2M Agent generates the URL"
8163
8166
  msgstr "Si no se especifica de otro modo, el agente LWM2M genera la dirección URL"
8164
8167
 
8165
- msgid "If selected, it ignores empty values on all resources below."
8166
- msgstr "Si se selecciona, los valores vacíos se ignorarán en todos los recursos a continuación."
8167
-
8168
8168
  msgid "If selected, it will process the result of the request using response templates."
8169
8169
  msgstr "Si se ha seleccionado, procesará el resultado de la solicitud utilizando las plantillas de respuesta."
8170
8170
 
@@ -11470,6 +11470,9 @@ msgstr "La contraseña debe cumplir los requisitos siguientes:"
11470
11470
  msgid "Password only"
11471
11471
  msgstr "Sólo contraseña"
11472
11472
 
11473
+ msgid "Password options"
11474
+ msgstr "Opciones de contraseña"
11475
+
11473
11476
  msgid "Password reset"
11474
11477
  msgstr "Restablecer contraseña"
11475
11478
 
@@ -12705,9 +12708,6 @@ msgstr "Restablecer widgets"
12705
12708
  msgid "Reset`dashboard`"
12706
12709
  msgstr "Restablecer"
12707
12710
 
12708
- msgid "Resource update complete."
12709
- msgstr "Actualización de recursos completa."
12710
-
12711
12711
  msgid "Resources"
12712
12712
  msgstr "Recursos"
12713
12713
 
@@ -14187,6 +14187,12 @@ msgstr "Establecer operación para ÉXITO"
14187
14187
  msgid "Set password"
14188
14188
  msgstr "Establecer contraseña"
14189
14189
 
14190
+ msgid "Set password for the user (no change required)"
14191
+ msgstr "Definir contraseña para el usuario (no es obligatorio cambiarla)"
14192
+
14193
+ msgid "Set password that must be changed on the first login"
14194
+ msgstr "Definir contraseña que debe cambiarse en el primer Inicio de Sesiòn"
14195
+
14190
14196
  msgid "Set pullup voltage (in volts)"
14191
14197
  msgstr "Establecer subida de voltaje (en voltios)"
14192
14198
 
@@ -16976,8 +16982,8 @@ msgstr "Restablecimiento de contraseña de administración de usuario"
16976
16982
  msgid "User menu"
16977
16983
  msgstr "Menú de usuario"
16978
16984
 
16979
- msgid "User must reset password on next login"
16980
- msgstr "El usuario debe restablecer la contraseña en el próximo inicio de sesión"
16985
+ msgid "User must change password on the next login"
16986
+ msgstr "El usuario debe Cambiar contraseña en el siguiente inicio de sesión."
16981
16987
 
16982
16988
  msgid "User password update"
16983
16989
  msgstr "Actualización de contraseña de usuario"
@@ -19124,6 +19130,9 @@ msgstr "{{ intervalInSeconds }} seg"
19124
19130
  msgid "{{ label }} properties"
19125
19131
  msgstr "Propiedades de {{ label }}"
19126
19132
 
19133
+ msgid "{{ lastUpdated }} by {{ user }}"
19134
+ msgstr "{{ lastUpdated }} por {{ user }}"
19135
+
19127
19136
  msgid "{{ name }} (v. {{ version }}) is already installed on this device"
19128
19137
  msgstr "{{ name }} (v. {{ version }}) ya se ha instalado en este dispositivo"
19129
19138
 
@@ -3,7 +3,7 @@ msgstr ""
3
3
  "Project-Id-Version: c8y-cumulocity-ui\n"
4
4
  "Report-Msgid-Bugs-To: \n"
5
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2025-01-13 18:13\n"
6
+ "PO-Revision-Date: 2025-01-22 12:16\n"
7
7
  "Last-Translator: \n"
8
8
  "Language: fr\n"
9
9
  "Language-Team: French\n"
@@ -4401,6 +4401,9 @@ msgstr "CSS Personnalisé"
4401
4401
  msgid "Custom action"
4402
4402
  msgstr "Action personnalisée"
4403
4403
 
4404
+ msgid "Custom alarm type"
4405
+ msgstr "Type d'Alarme Personnalisé"
4406
+
4404
4407
  msgid "Custom applications"
4405
4408
  msgstr "Applications personnalisées"
4406
4409
 
@@ -8162,9 +8165,6 @@ msgstr "Si aucune clé du certificat du produit n'est indiquée, l'appareil est
8162
8165
  msgid "If not specified, LWM2M Agent generates the URL"
8163
8166
  msgstr "Si rien n'est indiqué, l'agent LWM2M génère l'URL"
8164
8167
 
8165
- msgid "If selected, it ignores empty values on all resources below."
8166
- msgstr "Si cette option est sélectionnée, les valeurs vides de toutes les ressources ci-dessous sont ignorées."
8167
-
8168
8168
  msgid "If selected, it will process the result of the request using response templates."
8169
8169
  msgstr "Si cette option est sélectionnée, le résultat de la requête sera traité avec des modèles de réponse."
8170
8170
 
@@ -11470,6 +11470,9 @@ msgstr "Le mot de passe doit répondre aux exigences ci-dessous :"
11470
11470
  msgid "Password only"
11471
11471
  msgstr "Mot de passe uniquement"
11472
11472
 
11473
+ msgid "Password options"
11474
+ msgstr "Options du mot de passe"
11475
+
11473
11476
  msgid "Password reset"
11474
11477
  msgstr "Réinitialisation du mot de passe"
11475
11478
 
@@ -12705,9 +12708,6 @@ msgstr "Réinitialiser les widgets"
12705
12708
  msgid "Reset`dashboard`"
12706
12709
  msgstr "Réinitialiser"
12707
12710
 
12708
- msgid "Resource update complete."
12709
- msgstr "Mise à jour des ressources terminée."
12710
-
12711
12711
  msgid "Resources"
12712
12712
  msgstr "Ressources"
12713
12713
 
@@ -14187,6 +14187,12 @@ msgstr "Définir l'opération comme RÉUSSIE"
14187
14187
  msgid "Set password"
14188
14188
  msgstr "Définir le mot de passe"
14189
14189
 
14190
+ msgid "Set password for the user (no change required)"
14191
+ msgstr "Modifier le mot de passe de l'utilisateur (Aucun mot requis)."
14192
+
14193
+ msgid "Set password that must be changed on the first login"
14194
+ msgstr "Modifier le mot de passe qui doit être changé lors de la première connexion."
14195
+
14190
14196
  msgid "Set pullup voltage (in volts)"
14191
14197
  msgstr "Définir la tension pullup (volts)"
14192
14198
 
@@ -16976,8 +16982,8 @@ msgstr "Réinitialisation de mot de passe de la gestion des utilisateurs"
16976
16982
  msgid "User menu"
16977
16983
  msgstr "Menu utilisateur"
16978
16984
 
16979
- msgid "User must reset password on next login"
16980
- msgstr "L'utilisateur doit réinitialiser son mot de passe à la prochaine connexion"
16985
+ msgid "User must change password on the next login"
16986
+ msgstr "L'utilisateur doit modifier son mot de passe lors de la Connexion suivante."
16981
16987
 
16982
16988
  msgid "User password update"
16983
16989
  msgstr "Mise à jour du mot de passe utilisateur"
@@ -19124,6 +19130,9 @@ msgstr "{{ intervalInSeconds }} s."
19124
19130
  msgid "{{ label }} properties"
19125
19131
  msgstr "Propriétés {{ label }}"
19126
19132
 
19133
+ msgid "{{ lastUpdated }} by {{ user }}"
19134
+ msgstr "{{ lastUpdated }} par {{ user }}"
19135
+
19127
19136
  msgid "{{ name }} (v. {{ version }}) is already installed on this device"
19128
19137
  msgstr "{{ name }} (v. {{ version }}) est déjà installé sur cet appareil"
19129
19138
 
@@ -3,7 +3,7 @@ msgstr ""
3
3
  "Project-Id-Version: c8y-cumulocity-ui\n"
4
4
  "Report-Msgid-Bugs-To: \n"
5
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2025-01-13 18:13\n"
6
+ "PO-Revision-Date: 2025-01-22 12:16\n"
7
7
  "Last-Translator: \n"
8
8
  "Language: ja_JP\n"
9
9
  "Language-Team: Japanese\n"
@@ -4323,6 +4323,9 @@ msgstr "カスタム CSS"
4323
4323
  msgid "Custom action"
4324
4324
  msgstr "カスタム アクション"
4325
4325
 
4326
+ msgid "Custom alarm type"
4327
+ msgstr ""
4328
+
4326
4329
  msgid "Custom applications"
4327
4330
  msgstr "カスタム アプリケーション"
4328
4331
 
@@ -8077,9 +8080,6 @@ msgstr "製品の証明書キーが指定されていない場合、デバイス
8077
8080
  msgid "If not specified, LWM2M Agent generates the URL"
8078
8081
  msgstr "指定されていない場合は、LWM2M エージェントにより URL が生成されます"
8079
8082
 
8080
- msgid "If selected, it ignores empty values on all resources below."
8081
- msgstr "選択されている場合は、下のすべてのリソースの空の値は無視されます。"
8082
-
8083
8083
  msgid "If selected, it will process the result of the request using response templates."
8084
8084
  msgstr "選択された場合は、レスポンス テンプレートを使用してリクエストの結果を処理します。"
8085
8085
 
@@ -11382,6 +11382,9 @@ msgstr "パスワードは下の要件を満たす必要があります:"
11382
11382
  msgid "Password only"
11383
11383
  msgstr "パスワードのみ"
11384
11384
 
11385
+ msgid "Password options"
11386
+ msgstr ""
11387
+
11385
11388
  msgid "Password reset"
11386
11389
  msgstr "パスワード リセット"
11387
11390
 
@@ -12617,9 +12620,6 @@ msgstr "ウィジェットのリセット"
12617
12620
  msgid "Reset`dashboard`"
12618
12621
  msgstr "リセット"
12619
12622
 
12620
- msgid "Resource update complete."
12621
- msgstr "リソースの更新が完了しました。"
12622
-
12623
12623
  msgid "Resources"
12624
12624
  msgstr "リソース"
12625
12625
 
@@ -14099,6 +14099,12 @@ msgstr "操作を「成功」に設定"
14099
14099
  msgid "Set password"
14100
14100
  msgstr "パスワードを設定"
14101
14101
 
14102
+ msgid "Set password for the user (no change required)"
14103
+ msgstr ""
14104
+
14105
+ msgid "Set password that must be changed on the first login"
14106
+ msgstr ""
14107
+
14102
14108
  msgid "Set pullup voltage (in volts)"
14103
14109
  msgstr "プルアップ電圧を設定 (ボルト)"
14104
14110
 
@@ -16886,8 +16892,8 @@ msgstr "ユーザー管理パスワードのリセット"
16886
16892
  msgid "User menu"
16887
16893
  msgstr "ユーザー メニュー"
16888
16894
 
16889
- msgid "User must reset password on next login"
16890
- msgstr "次回ログイン時にパスワード リセットを強制する"
16895
+ msgid "User must change password on the next login"
16896
+ msgstr ""
16891
16897
 
16892
16898
  msgid "User password update"
16893
16899
  msgstr "ユーザー パスワードの更新"
@@ -19030,6 +19036,9 @@ msgstr "{{ intervalInSeconds }} 秒"
19030
19036
  msgid "{{ label }} properties"
19031
19037
  msgstr "{{ label }} プロパティ"
19032
19038
 
19039
+ msgid "{{ lastUpdated }} by {{ user }}"
19040
+ msgstr ""
19041
+
19033
19042
  msgid "{{ name }} (v. {{ version }}) is already installed on this device"
19034
19043
  msgstr "{{ name }} (v. {{ version }}) はすでにこのデバイスにインストールされています"
19035
19044
 
@@ -3,7 +3,7 @@ msgstr ""
3
3
  "Project-Id-Version: c8y-cumulocity-ui\n"
4
4
  "Report-Msgid-Bugs-To: \n"
5
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2025-01-13 18:13\n"
6
+ "PO-Revision-Date: 2025-01-22 12:16\n"
7
7
  "Last-Translator: \n"
8
8
  "Language: ko\n"
9
9
  "Language-Team: Korean\n"
@@ -4300,6 +4300,9 @@ msgstr "사용자 지정 CSS"
4300
4300
  msgid "Custom action"
4301
4301
  msgstr "사용자 지정 작업"
4302
4302
 
4303
+ msgid "Custom alarm type"
4304
+ msgstr ""
4305
+
4303
4306
  msgid "Custom applications"
4304
4307
  msgstr "사용자 지정 애플리케이션"
4305
4308
 
@@ -8054,9 +8057,6 @@ msgstr "지정된 제품 인증 키가 없는 경우 디바이스는 프로토
8054
8057
  msgid "If not specified, LWM2M Agent generates the URL"
8055
8058
  msgstr "지정하지 않으면 LWM2M 에이전트가 URL을 생성합니다."
8056
8059
 
8057
- msgid "If selected, it ignores empty values on all resources below."
8058
- msgstr "선택하면, 아래의 모든 리소스에 대한 빈 값을 무시합니다."
8059
-
8060
8060
  msgid "If selected, it will process the result of the request using response templates."
8061
8061
  msgstr "선택한 경우 응답 템플릿을 사용하여 요청의 결과를 처리합니다."
8062
8062
 
@@ -11359,6 +11359,9 @@ msgstr "비밀번호는 아래의 요구 사항을 충족해야 합니다."
11359
11359
  msgid "Password only"
11360
11360
  msgstr "비밀번호만"
11361
11361
 
11362
+ msgid "Password options"
11363
+ msgstr ""
11364
+
11362
11365
  msgid "Password reset"
11363
11366
  msgstr "비밀번호가 재설정됨"
11364
11367
 
@@ -12594,9 +12597,6 @@ msgstr "위젯 재설정"
12594
12597
  msgid "Reset`dashboard`"
12595
12598
  msgstr "재설정"
12596
12599
 
12597
- msgid "Resource update complete."
12598
- msgstr "리소스 업데이트가 완료되었습니다."
12599
-
12600
12600
  msgid "Resources"
12601
12601
  msgstr "리소스"
12602
12602
 
@@ -14076,6 +14076,12 @@ msgstr "작업을 성공으로 설정"
14076
14076
  msgid "Set password"
14077
14077
  msgstr "비밀번호 설정"
14078
14078
 
14079
+ msgid "Set password for the user (no change required)"
14080
+ msgstr ""
14081
+
14082
+ msgid "Set password that must be changed on the first login"
14083
+ msgstr ""
14084
+
14079
14085
  msgid "Set pullup voltage (in volts)"
14080
14086
  msgstr "풀업 전압 설정(V)"
14081
14087
 
@@ -16863,8 +16869,8 @@ msgstr "사용자 관리 비밀번호 재설정"
16863
16869
  msgid "User menu"
16864
16870
  msgstr "사용자 메뉴"
16865
16871
 
16866
- msgid "User must reset password on next login"
16867
- msgstr "사용자가 다음 번 로그인 시 비밀번호를 재설정해야 함"
16872
+ msgid "User must change password on the next login"
16873
+ msgstr ""
16868
16874
 
16869
16875
  msgid "User password update"
16870
16876
  msgstr "사용자 비밀번호 업데이트"
@@ -19007,6 +19013,9 @@ msgstr "{{ intervalInSeconds }}초"
19007
19013
  msgid "{{ label }} properties"
19008
19014
  msgstr "{{ label }} 속성"
19009
19015
 
19016
+ msgid "{{ lastUpdated }} by {{ user }}"
19017
+ msgstr ""
19018
+
19010
19019
  msgid "{{ name }} (v. {{ version }}) is already installed on this device"
19011
19020
  msgstr "{{ name }} (v. {{ version }})이(가) 이 디바이스에 이미 설치되어 있습니다"
19012
19021
 
@@ -3,7 +3,7 @@ msgstr ""
3
3
  "Project-Id-Version: c8y-cumulocity-ui\n"
4
4
  "Report-Msgid-Bugs-To: \n"
5
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2025-01-13 18:13\n"
6
+ "PO-Revision-Date: 2025-01-22 12:16\n"
7
7
  "Last-Translator: \n"
8
8
  "Language: nl\n"
9
9
  "Language-Team: Dutch\n"
@@ -4401,6 +4401,9 @@ msgstr "Aangepaste CSS"
4401
4401
  msgid "Custom action"
4402
4402
  msgstr "Aangepaste actie"
4403
4403
 
4404
+ msgid "Custom alarm type"
4405
+ msgstr "Aangepast alarmtype"
4406
+
4404
4407
  msgid "Custom applications"
4405
4408
  msgstr "Aangepaste applicaties"
4406
4409
 
@@ -8161,9 +8164,6 @@ msgstr "Als geen productcertificaatsleutel wordt gespecificeerd, wordt het appar
8161
8164
  msgid "If not specified, LWM2M Agent generates the URL"
8162
8165
  msgstr "Als dit niet is opgegeven, wordt de URL gegenereerd door LWM2M-agent"
8163
8166
 
8164
- msgid "If selected, it ignores empty values on all resources below."
8165
- msgstr "Als dit is ingeschakeld, worden lege waarden genegeerd voor alle onderstaande resources."
8166
-
8167
8167
  msgid "If selected, it will process the result of the request using response templates."
8168
8168
  msgstr "Indien geselecteerd, zal het resultaat van het verzoek met behulp van antwoordsjablonen worden verwerkt."
8169
8169
 
@@ -11469,6 +11469,9 @@ msgstr "Het wachtwoord moet aan de onderstaande vereisten voldoen:"
11469
11469
  msgid "Password only"
11470
11470
  msgstr "Alleen wachtwoord"
11471
11471
 
11472
+ msgid "Password options"
11473
+ msgstr "Opties voor wachtwoorden"
11474
+
11472
11475
  msgid "Password reset"
11473
11476
  msgstr "Wachtwoord opnieuw instellen"
11474
11477
 
@@ -12704,9 +12707,6 @@ msgstr "Widgets resetten"
12704
12707
  msgid "Reset`dashboard`"
12705
12708
  msgstr "Resetten"
12706
12709
 
12707
- msgid "Resource update complete."
12708
- msgstr "Resource-update voltooid."
12709
-
12710
12710
  msgid "Resources"
12711
12711
  msgstr "Resources"
12712
12712
 
@@ -14186,6 +14186,12 @@ msgstr "Bewerking op GESLAAGD zetten"
14186
14186
  msgid "Set password"
14187
14187
  msgstr "Wachtwoord instellen"
14188
14188
 
14189
+ msgid "Set password for the user (no change required)"
14190
+ msgstr "Wachtwoord instellen voor de gebruiker (geen wijziging vereist)"
14191
+
14192
+ msgid "Set password that must be changed on the first login"
14193
+ msgstr "Wachtwoord instellen dat moet worden gewijzigd bij de eerste keer inloggen"
14194
+
14189
14195
  msgid "Set pullup voltage (in volts)"
14190
14196
  msgstr "Pull-up spanning (in volts) instellen"
14191
14197
 
@@ -16975,8 +16981,8 @@ msgstr "Reset wachtwoord gebruikersbeheer"
16975
16981
  msgid "User menu"
16976
16982
  msgstr "Gebruikersmenu"
16977
16983
 
16978
- msgid "User must reset password on next login"
16979
- msgstr "Gebruiker moet wachtwoord resetten bij volgende login"
16984
+ msgid "User must change password on the next login"
16985
+ msgstr "Gebruiker moet Wachtwoord wijzigen bij de volgende aanmelding"
16980
16986
 
16981
16987
  msgid "User password update"
16982
16988
  msgstr "Gebruikerswachtwoord bijwerken"
@@ -19123,6 +19129,9 @@ msgstr "{{ intervalInSeconds }} s"
19123
19129
  msgid "{{ label }} properties"
19124
19130
  msgstr "{{ label }}-eigenschappen"
19125
19131
 
19132
+ msgid "{{ lastUpdated }} by {{ user }}"
19133
+ msgstr "{{ lastUpdated }} door {{ user }}"
19134
+
19126
19135
  msgid "{{ name }} (v. {{ version }}) is already installed on this device"
19127
19136
  msgstr "{{ name }} (v. {{ version }}) is al geïnstalleerd op dit apparaat"
19128
19137
 
@@ -3,7 +3,7 @@ msgstr ""
3
3
  "Project-Id-Version: c8y-cumulocity-ui\n"
4
4
  "Report-Msgid-Bugs-To: \n"
5
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2025-01-14 06:12\n"
6
+ "PO-Revision-Date: 2025-01-22 12:16\n"
7
7
  "Last-Translator: \n"
8
8
  "Language: pl\n"
9
9
  "Language-Team: Polish\n"
@@ -3968,7 +3968,7 @@ msgid "Could not create the device in the LoRa platform."
3968
3968
  msgstr "Nie można utworzyć urządzenia na platformie LoRa."
3969
3969
 
3970
3970
  msgid "Could not create zip file."
3971
- msgstr "Nie utworzono pliku zip."
3971
+ msgstr "Nie można utworzyć pliku zip."
3972
3972
 
3973
3973
  msgid "Could not deactivate smart rules."
3974
3974
  msgstr "Nie można dezaktywować reguł inteligentnych."
@@ -4442,6 +4442,9 @@ msgstr "Niestandardowy CSS"
4442
4442
  msgid "Custom action"
4443
4443
  msgstr "Czynność niestandardowa"
4444
4444
 
4445
+ msgid "Custom alarm type"
4446
+ msgstr "Niestandardowy typ alarmu"
4447
+
4445
4448
  msgid "Custom applications"
4446
4449
  msgstr "Aplikacje niestandardowe"
4447
4450
 
@@ -4476,7 +4479,7 @@ msgid "Custom properties saved."
4476
4479
  msgstr "Zapisano właściwości niestandardowe."
4477
4480
 
4478
4481
  msgid "Custom properties values saved."
4479
- msgstr "Zapisane wartości właściwości niestandardowych."
4482
+ msgstr "Zapisano wartości właściwości niestandardowych."
4480
4483
 
4481
4484
  msgid "Custom`application`"
4482
4485
  msgstr "Niestandardowa"
@@ -5596,7 +5599,7 @@ msgid "Display a configurable SVG."
5596
5599
  msgstr "Wyświetl konfigurowalny plik SVG."
5597
5600
 
5598
5601
  msgid "Display a link to the Dashboard manager under the Configuration navigator menu."
5599
- msgstr "Wyświetl łącze do Menedżera pulpitów w menu Nawigator konfiguracji."
5602
+ msgstr "Wyświetl łącze do Menedżera pulpitów w menu Konfiguracja."
5600
5603
 
5601
5604
  msgid "Display a link to the Data point library under the Configuration navigator menu."
5602
5605
  msgstr "Wyświetl łącze do Biblioteki punktów danych w menu nawigatora Konfiguracja."
@@ -8203,9 +8206,6 @@ msgstr "Jeśli nie określono klucza certyfikatu produktu, urządzenie jest uwa
8203
8206
  msgid "If not specified, LWM2M Agent generates the URL"
8204
8207
  msgstr "Jeśli wartość nie zostanie określona, agent LWM2M wygeneruje adres URL"
8205
8208
 
8206
- msgid "If selected, it ignores empty values on all resources below."
8207
- msgstr "W przypadku zaznaczenia tej opcji puste wartości będą ignorowane we wszystkich zasobach poniżej."
8208
-
8209
8209
  msgid "If selected, it will process the result of the request using response templates."
8210
8210
  msgstr "W przypadku zaznaczenia tej opcji wynik żądania będzie przetwarzany przy użyciu szablonów odpowiedzi."
8211
8211
 
@@ -11517,6 +11517,9 @@ msgstr "Hasło musi spełniać poniższe wymagania:"
11517
11517
  msgid "Password only"
11518
11518
  msgstr "Tylko hasło"
11519
11519
 
11520
+ msgid "Password options"
11521
+ msgstr "Opcje hasła"
11522
+
11520
11523
  msgid "Password reset"
11521
11524
  msgstr "Zresetowano hasło"
11522
11525
 
@@ -12752,9 +12755,6 @@ msgstr "Resetuj widżety"
12752
12755
  msgid "Reset`dashboard`"
12753
12756
  msgstr "Resetuj"
12754
12757
 
12755
- msgid "Resource update complete."
12756
- msgstr "Zakończono aktualizację zasobu."
12757
-
12758
12758
  msgid "Resources"
12759
12759
  msgstr "Zasoby"
12760
12760
 
@@ -14234,6 +14234,12 @@ msgstr "Ustaw operację na zakończoną POMYŚLNIE"
14234
14234
  msgid "Set password"
14235
14235
  msgstr "Ustaw hasło"
14236
14236
 
14237
+ msgid "Set password for the user (no change required)"
14238
+ msgstr "Ustaw hasło dla użytkownika (nie jest wymagana zmiana)"
14239
+
14240
+ msgid "Set password that must be changed on the first login"
14241
+ msgstr "Ustaw hasło, które musi zostać zmienione przy pierwszym logowaniu."
14242
+
14237
14243
  msgid "Set pullup voltage (in volts)"
14238
14244
  msgstr "Ustaw napięcie podwyższające (w woltach)"
14239
14245
 
@@ -17024,8 +17030,8 @@ msgstr "Resetowanie hasła zarządzania użytkownikami"
17024
17030
  msgid "User menu"
17025
17031
  msgstr "Menu użytkownika"
17026
17032
 
17027
- msgid "User must reset password on next login"
17028
- msgstr "Użytkownik musi zresetować hasło przy następnym logowaniu"
17033
+ msgid "User must change password on the next login"
17034
+ msgstr "Użytkownik musi zmienić hasło przy następnym logowaniu"
17029
17035
 
17030
17036
  msgid "User password update"
17031
17037
  msgstr "Aktualizacja hasła użytkownika"
@@ -19180,6 +19186,9 @@ msgstr "{{ intervalInSeconds }} s"
19180
19186
  msgid "{{ label }} properties"
19181
19187
  msgstr "{{ label }} - właściwości"
19182
19188
 
19189
+ msgid "{{ lastUpdated }} by {{ user }}"
19190
+ msgstr "{{ lastUpdated }} przez {{ user }}"
19191
+
19183
19192
  msgid "{{ name }} (v. {{ version }}) is already installed on this device"
19184
19193
  msgstr "{{ name }} (wer. {{ version }}) – już zainstalowano na tym urządzeniu."
19185
19194
 
@@ -3,7 +3,7 @@ msgstr ""
3
3
  "Project-Id-Version: c8y-cumulocity-ui\n"
4
4
  "Report-Msgid-Bugs-To: \n"
5
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2025-01-13 18:13\n"
6
+ "PO-Revision-Date: 2025-01-22 12:16\n"
7
7
  "Last-Translator: \n"
8
8
  "Language: pt_BR\n"
9
9
  "Language-Team: Portuguese, Brazilian\n"
@@ -4401,6 +4401,9 @@ msgstr "CSS personalizado"
4401
4401
  msgid "Custom action"
4402
4402
  msgstr "Ação personalizada"
4403
4403
 
4404
+ msgid "Custom alarm type"
4405
+ msgstr "Tipo de alarme personalizado"
4406
+
4404
4407
  msgid "Custom applications"
4405
4408
  msgstr "Aplicações personalizadas"
4406
4409
 
@@ -8162,9 +8165,6 @@ msgstr "Se nenhuma chave de certificado de produto for especificada, o dispositi
8162
8165
  msgid "If not specified, LWM2M Agent generates the URL"
8163
8166
  msgstr "Se não for especificado, o Agente LWM2M gera o URL"
8164
8167
 
8165
- msgid "If selected, it ignores empty values on all resources below."
8166
- msgstr "Se selecionado, ignorará valores vazios em todos os recursos abaixo."
8167
-
8168
8168
  msgid "If selected, it will process the result of the request using response templates."
8169
8169
  msgstr "Se selecionado, processará o resultado da solicitação usando templates de resposta."
8170
8170
 
@@ -11470,6 +11470,9 @@ msgstr "A senha deve atender aos requisitos abaixo:"
11470
11470
  msgid "Password only"
11471
11471
  msgstr "Apenas senha"
11472
11472
 
11473
+ msgid "Password options"
11474
+ msgstr "Opções de senha"
11475
+
11473
11476
  msgid "Password reset"
11474
11477
  msgstr "Redefinição de senha"
11475
11478
 
@@ -12705,9 +12708,6 @@ msgstr "Reinicializar widgets"
12705
12708
  msgid "Reset`dashboard`"
12706
12709
  msgstr "Reinicializar"
12707
12710
 
12708
- msgid "Resource update complete."
12709
- msgstr "Atualização de recursos concluída."
12710
-
12711
12711
  msgid "Resources"
12712
12712
  msgstr "Recursos"
12713
12713
 
@@ -14187,6 +14187,12 @@ msgstr "Definir operação como BEM-SUCEDIDA"
14187
14187
  msgid "Set password"
14188
14188
  msgstr "Definir senha"
14189
14189
 
14190
+ msgid "Set password for the user (no change required)"
14191
+ msgstr "Definir a senha do usuário (não é necessária nenhuma alteração)"
14192
+
14193
+ msgid "Set password that must be changed on the first login"
14194
+ msgstr "Definir a senha que deve ser alterada no primeiro login"
14195
+
14190
14196
  msgid "Set pullup voltage (in volts)"
14191
14197
  msgstr "Definir voltagem de pullup (em volts)"
14192
14198
 
@@ -16976,8 +16982,8 @@ msgstr "Redefinição de senha de gerenciamento de usuários"
16976
16982
  msgid "User menu"
16977
16983
  msgstr "Menu de usuário"
16978
16984
 
16979
- msgid "User must reset password on next login"
16980
- msgstr "O usuário deve redefinir a senha no próximo login"
16985
+ msgid "User must change password on the next login"
16986
+ msgstr "O usuário deve alterar a senha no próximo login"
16981
16987
 
16982
16988
  msgid "User password update"
16983
16989
  msgstr "Atualização da senha do usuário"
@@ -19124,6 +19130,9 @@ msgstr "{{ intervalInSeconds }} s"
19124
19130
  msgid "{{ label }} properties"
19125
19131
  msgstr "{{ label }} propriedades"
19126
19132
 
19133
+ msgid "{{ lastUpdated }} by {{ user }}"
19134
+ msgstr "{{ lastUpdated }} por {{ user }}"
19135
+
19127
19136
  msgid "{{ name }} (v. {{ version }}) is already installed on this device"
19128
19137
  msgstr "{{ name }} (v. {{ version }}) já está instalado neste dispositivo"
19129
19138
 
@@ -3,7 +3,7 @@ msgstr ""
3
3
  "Project-Id-Version: c8y-cumulocity-ui\n"
4
4
  "Report-Msgid-Bugs-To: \n"
5
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2025-01-13 18:13\n"
6
+ "PO-Revision-Date: 2025-01-22 12:16\n"
7
7
  "Last-Translator: \n"
8
8
  "Language: zh_CN\n"
9
9
  "Language-Team: Chinese Simplified\n"
@@ -4305,6 +4305,9 @@ msgstr "自定义 CSS"
4305
4305
  msgid "Custom action"
4306
4306
  msgstr "自定义操作"
4307
4307
 
4308
+ msgid "Custom alarm type"
4309
+ msgstr ""
4310
+
4308
4311
  msgid "Custom applications"
4309
4312
  msgstr "自定义应用程序"
4310
4313
 
@@ -8059,9 +8062,6 @@ msgstr "如果未指定产品证书密钥,则认为设备是原型。"
8059
8062
  msgid "If not specified, LWM2M Agent generates the URL"
8060
8063
  msgstr "如果未指定,LWM2M 代理将生成 URL"
8061
8064
 
8062
- msgid "If selected, it ignores empty values on all resources below."
8063
- msgstr "如果选中,则将忽略以下所有资源上的空值。"
8064
-
8065
8065
  msgid "If selected, it will process the result of the request using response templates."
8066
8066
  msgstr "如果选定,将使用响应模板处理请求的结果。"
8067
8067
 
@@ -11364,6 +11364,9 @@ msgstr "密码必须满足以下要求:"
11364
11364
  msgid "Password only"
11365
11365
  msgstr "仅密码"
11366
11366
 
11367
+ msgid "Password options"
11368
+ msgstr ""
11369
+
11367
11370
  msgid "Password reset"
11368
11371
  msgstr "密码重置"
11369
11372
 
@@ -12599,9 +12602,6 @@ msgstr "重置小组件"
12599
12602
  msgid "Reset`dashboard`"
12600
12603
  msgstr "重置"
12601
12604
 
12602
- msgid "Resource update complete."
12603
- msgstr "资源更新完成。"
12604
-
12605
12605
  msgid "Resources"
12606
12606
  msgstr "资源"
12607
12607
 
@@ -14081,6 +14081,12 @@ msgstr "操作设置为成功"
14081
14081
  msgid "Set password"
14082
14082
  msgstr "设置密码"
14083
14083
 
14084
+ msgid "Set password for the user (no change required)"
14085
+ msgstr ""
14086
+
14087
+ msgid "Set password that must be changed on the first login"
14088
+ msgstr ""
14089
+
14084
14090
  msgid "Set pullup voltage (in volts)"
14085
14091
  msgstr "设置上拉电压(伏)"
14086
14092
 
@@ -16868,8 +16874,8 @@ msgstr "用户管理密码重置"
16868
16874
  msgid "User menu"
16869
16875
  msgstr "用户菜单"
16870
16876
 
16871
- msgid "User must reset password on next login"
16872
- msgstr "用户必须在下次登录时重置密码"
16877
+ msgid "User must change password on the next login"
16878
+ msgstr ""
16873
16879
 
16874
16880
  msgid "User password update"
16875
16881
  msgstr "用户密码更新"
@@ -19012,6 +19018,9 @@ msgstr "{{ intervalInSeconds }} 秒"
19012
19018
  msgid "{{ label }} properties"
19013
19019
  msgstr "{{ label }} 属性"
19014
19020
 
19021
+ msgid "{{ lastUpdated }} by {{ user }}"
19022
+ msgstr ""
19023
+
19015
19024
  msgid "{{ name }} (v. {{ version }}) is already installed on this device"
19016
19025
  msgstr "此设备上已安装 {{ name }} (v. {{ version }})"
19017
19026
 
@@ -3,7 +3,7 @@ msgstr ""
3
3
  "Project-Id-Version: c8y-cumulocity-ui\n"
4
4
  "Report-Msgid-Bugs-To: \n"
5
5
  "POT-Creation-Date: \n"
6
- "PO-Revision-Date: 2025-01-13 18:13\n"
6
+ "PO-Revision-Date: 2025-01-22 12:16\n"
7
7
  "Last-Translator: \n"
8
8
  "Language: zh_TW\n"
9
9
  "Language-Team: Chinese Traditional\n"
@@ -4305,6 +4305,9 @@ msgstr "自訂 CSS"
4305
4305
  msgid "Custom action"
4306
4306
  msgstr "自定义操作"
4307
4307
 
4308
+ msgid "Custom alarm type"
4309
+ msgstr ""
4310
+
4308
4311
  msgid "Custom applications"
4309
4312
  msgstr "自定义应用程序"
4310
4313
 
@@ -8059,9 +8062,6 @@ msgstr "如果未指定产品证书密钥,则认为设备是原型。"
8059
8062
  msgid "If not specified, LWM2M Agent generates the URL"
8060
8063
  msgstr "如果未指定,LWM2M 代理將生成 URL"
8061
8064
 
8062
- msgid "If selected, it ignores empty values on all resources below."
8063
- msgstr "如果選中,則將忽略以下所有資源上的空值。"
8064
-
8065
8065
  msgid "If selected, it will process the result of the request using response templates."
8066
8066
  msgstr "如果选定,将使用响应模板处理请求的结果。"
8067
8067
 
@@ -11364,6 +11364,9 @@ msgstr "密碼必須滿足以下要求:"
11364
11364
  msgid "Password only"
11365
11365
  msgstr "仅密碼"
11366
11366
 
11367
+ msgid "Password options"
11368
+ msgstr ""
11369
+
11367
11370
  msgid "Password reset"
11368
11371
  msgstr "密碼重置"
11369
11372
 
@@ -12599,9 +12602,6 @@ msgstr "重置小組件"
12599
12602
  msgid "Reset`dashboard`"
12600
12603
  msgstr "重置"
12601
12604
 
12602
- msgid "Resource update complete."
12603
- msgstr "資源更新完成。"
12604
-
12605
12605
  msgid "Resources"
12606
12606
  msgstr "資源"
12607
12607
 
@@ -14081,6 +14081,12 @@ msgstr "操作设置为成功"
14081
14081
  msgid "Set password"
14082
14082
  msgstr "设置密码"
14083
14083
 
14084
+ msgid "Set password for the user (no change required)"
14085
+ msgstr ""
14086
+
14087
+ msgid "Set password that must be changed on the first login"
14088
+ msgstr ""
14089
+
14084
14090
  msgid "Set pullup voltage (in volts)"
14085
14091
  msgstr "设置上拉电压(伏)"
14086
14092
 
@@ -16868,8 +16874,8 @@ msgstr "用戶管理密码重置"
16868
16874
  msgid "User menu"
16869
16875
  msgstr "用戶功能表"
16870
16876
 
16871
- msgid "User must reset password on next login"
16872
- msgstr "用戶必须在下次登录时重置密码"
16877
+ msgid "User must change password on the next login"
16878
+ msgstr ""
16873
16879
 
16874
16880
  msgid "User password update"
16875
16881
  msgstr "用戶密码更新"
@@ -19012,6 +19018,9 @@ msgstr "{{ intervalInSeconds }} 秒"
19012
19018
  msgid "{{ label }} properties"
19013
19019
  msgstr "{{ label }} 属性"
19014
19020
 
19021
+ msgid "{{ lastUpdated }} by {{ user }}"
19022
+ msgstr ""
19023
+
19015
19024
  msgid "{{ name }} (v. {{ version }}) is already installed on this device"
19016
19025
  msgstr "此設備上已安裝 {{ name }} (v. {{ version }})"
19017
19026
 
@@ -1,16 +1,13 @@
1
- <div title="{{ 'Display as' | translate }}" class="form-group">
2
- <label class="m-r-4" for="displayControl">{{ 'Display as' | translate }}</label>
3
- <div class="input-group">
4
- <div class="c8y-select-wrapper">
5
- <select
6
- id="displayControl"
7
- name="displayControl"
8
- class="form-control"
9
- ng-model="vm.selectedOption"
10
- ng-options="option as (option.label | translate) for option in vm.options | orderBy:vm.optionOrder"
11
- ng-change="vm.selectOption(vm.selectedOption)"
12
- ></select>
13
- <span></span>
14
- </div>
1
+ <div title="{{ 'Display as' | translate }}" class="form-group d-flex m-b-0">
2
+ <label class="m-r-8 text-nowrap" for="displayControl">{{ 'Display as' | translate }}</label>
3
+ <div class="c8y-select-wrapper">
4
+ <select
5
+ id="displayControl"
6
+ name="displayControl"
7
+ class="form-control"
8
+ ng-model="vm.selectedOption"
9
+ ng-options="option as (option.label | translate) for option in vm.options | orderBy:vm.optionOrder"
10
+ ng-change="vm.selectOption(vm.selectedOption)"
11
+ ></select>
15
12
  </div>
16
13
  </div>
@@ -564,37 +564,68 @@
564
564
  </label>
565
565
  </div>
566
566
 
567
- <div ng-hide="hidePasswordReset || disabledEdit">
567
+ <div ng-show="user.id">
568
+ <div ng-hide="hidePasswordReset || disabledEdit || !notCurrentUser">
569
+ <label
570
+ class="c8y-checkbox"
571
+ ng-class="{ disabled: user.sendPasswordResetEmail }"
572
+ title="{{ 'User must change password on the next login' | translate }}"
573
+ >
574
+ <input
575
+ type="checkbox"
576
+ name="shouldResetPassword"
577
+ ng-model="user.shouldResetPassword"
578
+ ng-disabled="user.sendPasswordResetEmail"
579
+ />
580
+ <span></span>
581
+ <span>{{ 'User must change password on the next login' | translate }}</span>
582
+ </label>
583
+ </div>
584
+ </div>
585
+
586
+ <div class="m-t-16" ng-hide="user.id">
587
+ <label class="control-label">{{ 'Password options' | translate }}</label>
568
588
  <label
569
- class="c8y-checkbox"
570
- ng-class="{ disabled: !notCurrentUser || user.sendPasswordResetEmail }"
571
- title="{{ 'User must reset password on next login' | translate }}"
589
+ title="{{ 'Send password reset link as email' | translate }}"
590
+ class="c8y-radio input-sm"
572
591
  >
573
592
  <input
574
- type="checkbox"
575
- name="shouldResetPassword"
576
- ng-model="user.shouldResetPassword"
577
- ng-disabled="!notCurrentUser || user.sendPasswordResetEmail"
593
+ type="radio"
594
+ id="sendPasswordByEmailRadio"
595
+ name="setUserPasswordRadio"
596
+ ng-value="'sendPasswordByEmail'"
597
+ ng-model="userPasswordAction"
578
598
  />
579
599
  <span></span>
580
- <span>{{ 'User must reset password on next login' | translate }}</span>
600
+ <span>{{ 'Send password reset link as email' | translate }}</span>
581
601
  </label>
582
- </div>
583
-
584
- <div ng-hide="hidePasswordReset || disabledEdit || user.id">
585
602
  <label
586
- class="c8y-checkbox"
587
- ng-class="{ disabled: user.id }"
588
- title="{{ 'Send password reset link as email' | translate }}"
603
+ title="{{ 'Set password that must be changed on the first login' | translate }}"
604
+ class="c8y-radio input-sm"
589
605
  >
590
606
  <input
591
- type="checkbox"
592
- name="sendPasswordResetEmail"
593
- ng-model="user.sendPasswordResetEmail"
594
- ng-change="user.shouldResetPassword = !user.sendPasswordResetEmail"
607
+ type="radio"
608
+ id="setPasswordAndForceToResetRadio"
609
+ name="setUserPasswordRadio"
610
+ ng-value="'setUserPasswordAndForceToReset'"
611
+ ng-model="userPasswordAction"
595
612
  />
596
613
  <span></span>
597
- <span>{{ 'Send password reset link as email' | translate }}</span>
614
+ <span>{{ 'Set password that must be changed on the first login' | translate }}</span>
615
+ </label>
616
+ <label
617
+ title="{{ 'Set password for the user (no change required)' | translate }}"
618
+ class="c8y-radio input-sm"
619
+ >
620
+ <input
621
+ type="radio"
622
+ id="setUserPasswordRadio"
623
+ name="setUserPasswordRadio"
624
+ ng-value="'setUserPassword'"
625
+ ng-model="userPasswordAction"
626
+ />
627
+ <span></span>
628
+ <span>{{ 'Set password for the user (no change required)' | translate }}</span>
598
629
  </label>
599
630
  </div>
600
631
  </div>
@@ -1 +1 @@
1
- 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 e(u,l,g,f,m,p,h,w,A,E,S,y,v){return e.$inject=["$scope","$q"],{restrict:"EA",scope:{user:"=",forms:"=",password:"=",hideUsername:"=?",hideActive:"=?",hideFirstName:"=?",hideLastName:"=?",hideEmail:"=?",hideTelephone:"=?",hideCustomProperties:"=?",hideTfaOption:"=?",hidePasswordReset:"=?",hideChangePassword:"=?",hideOwner:"=?",hideDelegate:"=?",disabledEdit:"=?",hideLanguage:"=?",userTfaEnforced:"=?",topLevelTfaEnforced:"=?"},templateUrl:":::PLUGIN_PATH:::/ui/user/editUser.directive.html",controller:e,controllerAs:"vm",link:function(e,t){$(t).find("input[name=email]").bind("blur",function(){e.emailWarning=!(e.user&&e.user.email)})}};function e(o,r){var e="maxlength",a=y("Messaging application is not subscribed."),i={NEWUSERNAME:{type:"validation",text:y('Username "new" is not allowed.')},PATTERN:{type:"pattern",text:y("Invalid pattern.")},PATTERN_PASSWORD:{type:"pattern",text:v.getString(A.validation.password.message)},PATTERN_USERNAME:{type:"pattern",text:v.getString(A.validation.user.message)},PATTERN_DISPLAYNAME:{type:"pattern",text:v.getString(A.validation.loginAlias.message)},SAME_AS_CURRENT_PASSWORD:{type:"same_as_current",text:y("New password can't be the same as current one.")},PASSWORD_MISSMATCH:{type:"password_missmatch",text:y("Passwords do not match.")},REQUIRED:{type:"required",text:y("This field is required.")},EMAIL:{type:"email",text:y("Invalid email address.")},PASSWORD_STRENGTH:{type:"password_strength",text:A.validation.passwordStrengthChecklist.message},INTERNATIONALPHONENUMBER_PHONE:{type:"internationalPhoneNumber",text:v.getString(A.validation.internationalPhoneNumber.message)},MAXLENGTH_FIRSTNAME:{type:e,text:"".concat(v.getString("Max length:")," 50")},MAXLENGTH_LASTNAME:{type:e,text:"".concat(v.getString("Max length:")," 50")},MAXLENGTH_USERNAME:{type:e,text:"".concat(v.getString("Max length:")," 254")},MAXLENGTH_DISPLAYNAME:{type:e,text:"".concat(v.getString("Max length:")," 254")},MAXLENGTH_PHONE:{type:e,text:"".concat(v.getString("Max length:")," 254")},MAXLENGTH_EMAIL:{type:e,text:"".concat(v.getString("Max length:")," 254")}},d=this,c=(_.assign(o,{confirmPassword:"",invalid:angular.bind(u,u.invalid,o.forms,"userForm"),isInvalidConfirmPassword:function(){var e=o.forms.userForm,t=e.password.$pristine,e=e.confirmPassword.$touched&&e.confirmPassword.$invalid;return!t&&e},changePasswordConfirm:function(){o.forms.userForm.confirmPassword&&o.forms.userForm.confirmPassword.$setValidity(i.PASSWORD_MISSMATCH.type,o.forms.userForm.confirmPassword.$viewValue===o.user.password)},getErrorFeedback:function(n){var a=o.forms.userForm[n]||{},s=[];return _.forEach(a.$error||{},function(e,t){var r;"parse"===t?o.forms.userForm.phone.$setValidity(t,!0):(t=t.toUpperCase(),r="".concat(t,"_").concat(n.toUpperCase()),e&&a.$touched&&(e=i[r]||i[t],s.push(v.getString(e.text))))}),s.join("<br>")},getUserCustomProperties:function(e){var r={};e&&e.customProperties&&_.forEach(e.customProperties,function(e,t){"userOrigin"!==t&&(r[t]="object"===_typeof(e)?angular.toJson(e):e)});return r},humanize:u.humanizeFragment,passwordRegex:A.validation.password.pattern,resetPasswords:function(e){var t=v.getString("A user managed via your authorization server cannot change the password of the user.");l.current().then(function(e){e=l.hasExternalOrigin(e);o.password.showPassword&&e&&S.add({text:t,type:"warning"})}),o.password.showPassword=!o.password.showPassword,e.passwordStrength=o.password.strength,e.password=null,o.confirmPassword=""},tfaAvailable:!1,delegateTo:function(){l.current().then(function(e){o.user.delegatedBy=e.id}),n()},undelegate:function(){o.user.delegatedBy=null,n()},setOwner:function(e){o.user.owner=e,d.isParentDropDownOpen=!1,d.ownerHiddenForm.$setDirty()},userCanChangePasswordAndEmail:!1,requirementsFulfilled:!0,onRequirementsFulfilledChange:function(e){e=o.requirementsFulfilled=e;e||o.forms.userForm.password.$setValidity(i.PATTERN_PASSWORD.type,!0),o.forms.userForm.password.$setValidity(i.PASSWORD_STRENGTH.type,e)}}),_.assign(d,{onToggleDropdown:function(e){e&&(d.ownerDropDownInitialized=!0)},twoFactorAuthenticationCheckboxDisabled:function(){return o.topLevelTfaEnforced||o.disabledEdit||"TOTP"===d.tfaStrategy||!o.smsMicroserviceAvailable||!o.notCurrentUser&&"SMS"===d.tfaStrategy},enforceTfaCheckboxDisbaled:function(){return o.topLevelTfaEnforced||o.disabledEdit||!o.notCurrentUser||s()},messagingWarningVisible:function(){return!o.smsMicroserviceAvailable&&"SMS"===d.tfaStrategy},shouldEnableRevokeTOTPSecretButton:s}),m.getStrongPasswordSettings().then(t),o.$watch("user",function(e,t){var n,s;e&&e!==t&&(s=!(n=e).id,o.password.strength=n.passwordStrength,o.changePasswordBtn=!o.password.showPassword,o.emailWarning=!n.email,o.smsWarningPopover=a,s&&(n.sendPasswordResetEmail=!0),delete o.confirmPassword,o.notCurrentUser=null,t=/.*/,(e=n)&&!e.id&&(t=A.validation.user.pattern),o.userNamePattern=t,o.loginAliasPattern=A.validation.loginAlias.pattern,o.hideLanguage||g.get("language").then(function(e){e&&(o.user.language={name:w.getLanguageNativeName(e),code:e}),o.languages=_.map(p.getSupportedLanguages(),function(e){return Object.assign({name:w.getLanguageNativeName(e),code:e},{})})}),E.isActivatedFor("units-conversion")&&(o.unitsConversionActive=!0),r.all({tfaAvailable:l.isTfaAvailable(),smsMicroserviceAvailable:h.isAvailable({contextPath:"messaging"}),twoFactorAuthenticationEnabled:l.isTfaActive(n),tfaStrategy:l.getTfaStrategy(),isCurrentUser:l.checkIfCurrent(n)}).then(function(e){var t=e.tfaAvailable,r=e.smsMicroserviceAvailable,n=e.twoFactorAuthenticationEnabled,a=e.tfaStrategy,e=e.isCurrentUser;o.notCurrentUser=!e,o.tfaAvailable=t,o.smsMicroserviceAvailable=!!r,d.tfaStrategy=a,o.user.twoFactorAuthenticationEnabled=!s&&n,o.userCanChangePasswordAndEmail=s||!l.hasExternalOrigin(o.user)&&e}),o.hideOwner||(o.ownerEditDisabled=!1,l.current().then(function(e){var t=f.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN"),r=f.hasRole(e,"ROLE_USER_MANAGEMENT_CREATE");!t&&r&&(d.rootOwner=[e],d.currentOwner=e.id,d.defaultOwner=e,s)&&(o.ownerEditDisabled=!0,n.owner=d.currentOwner)})),c())}));function t(e){var t=e.enforceStrength;o.passwordStrengthEnforced=t||e.strengthValidity}function n(){o.delegationHiddenForm.$setDirty()}function s(){return"TOTP"===d.tfaStrategy&&o.user.twoFactorAuthenticationEnabled}o.$watch("user.password",function(){o.forms.userForm&&o.forms.userForm.password&&o.forms.userForm.password.$setValidity(i.SAME_AS_CURRENT_PASSWORD.type,!o.notCurrentUser&&!l.isCurrentPassword(o.forms.userForm.password.$viewValue)||o.notCurrentUser)})}}e.$inject=["c8yBase","c8yUser","c8yUserPreferences","c8yPermissions","c8yLoginOptions","c8yLocales","c8yApplication","LocalesUtil","c8yConfig","c8yBeta","c8yAlert","gettext","gettextCatalog"],angular.module("c8y.ui").directive("c8yEditUser",e).directive("c8yUiEditUser",e)})();
1
+ 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 e(l,c,g,m,w,f,p,h,E,P,A,S,y){return e.$inject=["$scope","$q"],{restrict:"EA",scope:{user:"=",forms:"=",password:"=",hideUsername:"=?",hideActive:"=?",hideFirstName:"=?",hideLastName:"=?",hideEmail:"=?",hideTelephone:"=?",hideCustomProperties:"=?",hideTfaOption:"=?",hidePasswordReset:"=?",hideChangePassword:"=?",hideOwner:"=?",hideDelegate:"=?",disabledEdit:"=?",hideLanguage:"=?",userTfaEnforced:"=?",topLevelTfaEnforced:"=?"},templateUrl:":::PLUGIN_PATH:::/ui/user/editUser.directive.html",controller:e,controllerAs:"vm",link:function(e,t){$(t).find("input[name=email]").bind("blur",function(){e.emailWarning=!(e.user&&e.user.email)})}};function e(o,r){var e="maxlength",a=S("Messaging application is not subscribed."),i={NEWUSERNAME:{type:"validation",text:S('Username "new" is not allowed.')},PATTERN:{type:"pattern",text:S("Invalid pattern.")},PATTERN_PASSWORD:{type:"pattern",text:y.getString(E.validation.password.message)},PATTERN_USERNAME:{type:"pattern",text:y.getString(E.validation.user.message)},PATTERN_DISPLAYNAME:{type:"pattern",text:y.getString(E.validation.loginAlias.message)},SAME_AS_CURRENT_PASSWORD:{type:"same_as_current",text:S("New password can't be the same as current one.")},PASSWORD_MISSMATCH:{type:"password_missmatch",text:S("Passwords do not match.")},REQUIRED:{type:"required",text:S("This field is required.")},EMAIL:{type:"email",text:S("Invalid email address.")},PASSWORD_STRENGTH:{type:"password_strength",text:E.validation.passwordStrengthChecklist.message},INTERNATIONALPHONENUMBER_PHONE:{type:"internationalPhoneNumber",text:y.getString(E.validation.internationalPhoneNumber.message)},MAXLENGTH_FIRSTNAME:{type:e,text:"".concat(y.getString("Max length:")," 50")},MAXLENGTH_LASTNAME:{type:e,text:"".concat(y.getString("Max length:")," 50")},MAXLENGTH_USERNAME:{type:e,text:"".concat(y.getString("Max length:")," 254")},MAXLENGTH_DISPLAYNAME:{type:e,text:"".concat(y.getString("Max length:")," 254")},MAXLENGTH_PHONE:{type:e,text:"".concat(y.getString("Max length:")," 254")},MAXLENGTH_EMAIL:{type:e,text:"".concat(y.getString("Max length:")," 254")}},d=this,u=(_.assign(o,{confirmPassword:"",invalid:angular.bind(l,l.invalid,o.forms,"userForm"),isInvalidConfirmPassword:function(){var e=o.forms.userForm,t=e.password.$pristine,e=e.confirmPassword.$touched&&e.confirmPassword.$invalid;return!t&&e},changePasswordConfirm:function(){o.forms.userForm.confirmPassword&&o.forms.userForm.confirmPassword.$setValidity(i.PASSWORD_MISSMATCH.type,o.forms.userForm.confirmPassword.$viewValue===o.user.password)},getErrorFeedback:function(s){var a=o.forms.userForm[s]||{},n=[];return _.forEach(a.$error||{},function(e,t){var r;"parse"===t?o.forms.userForm.phone.$setValidity(t,!0):(t=t.toUpperCase(),r="".concat(t,"_").concat(s.toUpperCase()),e&&a.$touched&&(e=i[r]||i[t],n.push(y.getString(e.text))))}),n.join("<br>")},getUserCustomProperties:function(e){var r={};e&&e.customProperties&&_.forEach(e.customProperties,function(e,t){"userOrigin"!==t&&(r[t]="object"===_typeof(e)?angular.toJson(e):e)});return r},humanize:l.humanizeFragment,passwordRegex:E.validation.password.pattern,resetPasswords:function(e){var t=y.getString("A user managed via your authorization server cannot change the password of the user.");c.current().then(function(e){e=c.hasExternalOrigin(e);o.password.showPassword&&e&&A.add({text:t,type:"warning"})}),o.password.showPassword=!o.password.showPassword,e.passwordStrength=o.password.strength,e.password=null,o.confirmPassword=""},tfaAvailable:!1,delegateTo:function(){c.current().then(function(e){o.user.delegatedBy=e.id}),s()},undelegate:function(){o.user.delegatedBy=null,s()},setOwner:function(e){o.user.owner=e,d.isParentDropDownOpen=!1,d.ownerHiddenForm.$setDirty()},userCanChangePasswordAndEmail:!1,requirementsFulfilled:!0,onRequirementsFulfilledChange:function(e){e=o.requirementsFulfilled=e;e||o.forms.userForm.password.$setValidity(i.PATTERN_PASSWORD.type,!0),o.forms.userForm.password.$setValidity(i.PASSWORD_STRENGTH.type,e)}}),_.assign(d,{onToggleDropdown:function(e){e&&(d.ownerDropDownInitialized=!0)},twoFactorAuthenticationCheckboxDisabled:function(){return o.topLevelTfaEnforced||o.disabledEdit||"TOTP"===d.tfaStrategy||!o.smsMicroserviceAvailable||!o.notCurrentUser&&"SMS"===d.tfaStrategy},enforceTfaCheckboxDisbaled:function(){return o.topLevelTfaEnforced||o.disabledEdit||!o.notCurrentUser||n()},messagingWarningVisible:function(){return!o.smsMicroserviceAvailable&&"SMS"===d.tfaStrategy},shouldEnableRevokeTOTPSecretButton:n}),w.getStrongPasswordSettings().then(t),o.$watch("user",function(e,t){var s,n;e&&e!==t&&(n=!(s=e).id,o.password.strength=s.passwordStrength,o.changePasswordBtn=!o.password.showPassword,o.emailWarning=!s.email,o.smsWarningPopover=a,n&&(o.userPasswordAction="sendPasswordByEmail"),delete o.confirmPassword,o.notCurrentUser=null,t=/.*/,(e=s)&&!e.id&&(t=E.validation.user.pattern),o.userNamePattern=t,o.loginAliasPattern=E.validation.loginAlias.pattern,o.hideLanguage||g.get("language").then(function(e){e&&(o.user.language={name:h.getLanguageNativeName(e),code:e}),o.languages=_.map(f.getSupportedLanguages(),function(e){return Object.assign({name:h.getLanguageNativeName(e),code:e},{})})}),P.isActivatedFor("units-conversion")&&(o.unitsConversionActive=!0),r.all({tfaAvailable:c.isTfaAvailable(),smsMicroserviceAvailable:p.isAvailable({contextPath:"messaging"}),twoFactorAuthenticationEnabled:c.isTfaActive(s),tfaStrategy:c.getTfaStrategy(),isCurrentUser:c.checkIfCurrent(s)}).then(function(e){var t=e.tfaAvailable,r=e.smsMicroserviceAvailable,s=e.twoFactorAuthenticationEnabled,a=e.tfaStrategy,e=e.isCurrentUser;o.notCurrentUser=!e,o.tfaAvailable=t,o.smsMicroserviceAvailable=!!r,d.tfaStrategy=a,o.user.twoFactorAuthenticationEnabled=!n&&s,o.userCanChangePasswordAndEmail=n||!c.hasExternalOrigin(o.user)&&e}),o.hideOwner||(o.ownerEditDisabled=!1,c.current().then(function(e){var t=m.hasRole(e,"ROLE_USER_MANAGEMENT_ADMIN"),r=m.hasRole(e,"ROLE_USER_MANAGEMENT_CREATE");!t&&r&&(d.rootOwner=[e],d.currentOwner=e.id,d.defaultOwner=e,n)&&(o.ownerEditDisabled=!0,s.owner=d.currentOwner)})),u())}));function t(e){var t=e.enforceStrength;o.passwordStrengthEnforced=t||e.strengthValidity}function s(){o.delegationHiddenForm.$setDirty()}function n(){return"TOTP"===d.tfaStrategy&&o.user.twoFactorAuthenticationEnabled}o.$watch("user.password",function(){o.forms.userForm&&o.forms.userForm.password&&o.forms.userForm.password.$setValidity(i.SAME_AS_CURRENT_PASSWORD.type,!o.notCurrentUser&&!c.isCurrentPassword(o.forms.userForm.password.$viewValue)||o.notCurrentUser)}),o.$watch("userPasswordAction",function(e,t){e!==t&&(t={setUserPasswordAndForceToReset:{sendPasswordResetEmail:!1,shouldResetPassword:!0,showPassword:!0},setUserPassword:{sendPasswordResetEmail:!1,shouldResetPassword:!1,showPassword:!0},sendPasswordByEmail:{sendPasswordResetEmail:!0,shouldResetPassword:!1,showPassword:!1}}[e])&&(o.user.sendPasswordResetEmail=t.sendPasswordResetEmail,o.user.shouldResetPassword=t.shouldResetPassword,o.password.showPassword=t.showPassword)})}}e.$inject=["c8yBase","c8yUser","c8yUserPreferences","c8yPermissions","c8yLoginOptions","c8yLocales","c8yApplication","LocalesUtil","c8yConfig","c8yBeta","c8yAlert","gettext","gettextCatalog"],angular.module("c8y.ui").directive("c8yEditUser",e).directive("c8yUiEditUser",e)})();
@@ -8,7 +8,6 @@
8
8
  "lwm2m.provider.js",
9
9
  "lwm2mUploadStep.component.js",
10
10
  "lwm2mFinalStep.component.js",
11
- "lwm2mDetail.component.js",
12
11
  "lwm2mResource.component.js",
13
12
  "lwm2mValidationRules/lwm2mValidationRules.component.js",
14
13
  "lwm2mValidationRules/lwm2mValidationRule.component.js"
@@ -1 +1 @@
1
- (()=>{e.$inject=["gettext","c8yDeviceProtocolUiProvider","c8yViewsProvider"];var r="c8yLwm2m";function e(p,e,t){a.$inject=["c8yBase","c8yInventory","c8yTenant","c8yObjectMappings","c8yLwm2mPluginCheckerService","$http","$upload"],i.$inject=["$routeParams"];var n={service:r,id:"lwm2m",name:p("LWM2M")},g={path:"/deviceprotocols/".concat(n.id,"/:id"),template:'<c8y-lwm2m-detail id="vm.id"></c8y-lwm2m-detail>',controllerAs:"vm",controller:i};return{initUi:function(){e.register(n),t.when(g.path,g)},$get:a};function i(e){_.assign(this,e)}function a(n,i,e,a,r,o,t){var c,u=n.url("service/lwm2m-agent/"),s="".concat(u,"objectResourceMappings");return{flow:function(){return["c8yLwm2mUploadStep","c8yLwm2mFinalStep"]},list:function(){return o.get(s,{silentError:!0}).then(n.getResData)},detail:function(e){var t=n.getId(e);return r.isLwm2mPluginInstalled().then(function(e){return e?null:i.detail(t).then(n.getResData)})},detailPath:function(e){e=d(e);return g.path.replace(/:id$/,e)},upload:function(e){return t.upload({url:"".concat(s,"/ddf"),method:"POST",headers:{Accept:"application/json"},file:e,fileName:e.name.replace(/\s+/g,"_")})},remove:function(e){e=d(e);return i.remove(e)},getName:function(e){var t=a.getName(e),e=a.getObjectId(e);return"".concat(e," ").concat(t)},updateMapping:function(e,t){e="".concat(s,"/").concat(e,"/add");return o.put(e,t)},getPostRegistrationOptions:function(){var e={url:"".concat(u,"postRegistrationOptions"),method:"GET",silentError:!0};return o(e).then(n.getResData)},setPostRegistrationOptions:function(e){e={url:"".concat(u,"postRegistrationOptions"),method:"PUT",data:{commands:e}};return o(e)},helpTexts:{minPeriod:p("The minimum period attribute indicates the minimum time in seconds the LWM2M client MUST wait between two notifications."),maxPeriod:p("The maximum period attribute indicates the maximum time in seconds the LWM2M client MAY wait between two notifications."),greaterThan:p("This greater than attribute defines a threshold high value."),lessThan:p("This less than attribute defines a threshold low value."),step:p("This step attribute defines a minimum change value between two notifications.")},isServiceSubscribed:l,showIf:m,listRowInfoComponent:"c8yDeviceProtocolRowCountResources",getCustomActions:function(){c=c||o.get("".concat(u,"mappingActions/resourceactions")).then(n.getResData).then(h);return c},Validation:{RuleType:{LT:"lt",GT:"gt",EQ:"eq",NEQ:"neq",GTE:"gte",LTE:"lte",AND:"and",OR:"or"},ValueType:{NUMBER:"number",DATE:"date",STRING:"string",REGEX:"regex",OBJECTLINK:"objectLink"},ResourceDataType:{INTEGER:"INTEGER",FLOAT:"FLOAT",STRING:"STRING",BOOLEAN:"BOOLEAN",TIME:"TIME",OBJECTLINK:"OBJECTLINK"},RuleName:{GT:"Greater than",LT:"Lower than",GTE:"Greater or equals than",LTE:"Lower or equals than",EQ:"Equals",NEQ:"Equals not"}}};function l(){return e.isSubscribed({name:"lwm2m-agent",type:"MICROSERVICE"})}function m(){return m._cached=m._cached?m._cached:l()}function d(e){return _.get(e,"id")}function h(e){return _.reduce(e,function(e,t){var n=t.name,t=t.args,t=_.get(t,"length")?t.map(function(e){return"".concat(n,":").concat(e)}):[n];return e.concat(t)},[])}}}angular.module("c8y.lwm2m").provider(r,e)})();
1
+ (()=>{e.$inject=["gettext","c8yDeviceProtocolUiProvider","c8yViewsProvider"];var o="c8yLwm2m";function e(h,e,t){a.$inject=["c8yBase","c8yInventory","c8yTenant","c8yObjectMappings","$http","$upload"],i.$inject=["$routeParams"];var n={service:o,id:"lwm2m",name:h("LWM2M")},p={path:"/deviceprotocols/".concat(n.id,"/:id"),template:'<c8y-lwm2m-detail id="vm.id"></c8y-lwm2m-detail>',controllerAs:"vm",controller:i};return{initUi:function(){e.register(n),t.when(p.path,p)},$get:a};function i(e){_.assign(this,e)}function a(t,n,e,i,a,o){var r,c=t.url("service/lwm2m-agent/"),s="".concat(c,"objectResourceMappings");return{flow:function(){return["c8yLwm2mUploadStep","c8yLwm2mFinalStep"]},list:function(){return a.get(s,{silentError:!0}).then(t.getResData)},detailPath:function(e){e=l(e);return p.path.replace(/:id$/,e)},upload:function(e){return o.upload({url:"".concat(s,"/ddf"),method:"POST",headers:{Accept:"application/json"},file:e,fileName:e.name.replace(/\s+/g,"_")})},remove:function(e){e=l(e);return n.remove(e)},getName:function(e){var t=i.getName(e),e=i.getObjectId(e);return"".concat(e," ").concat(t)},updateMapping:function(e,t){e="".concat(s,"/").concat(e,"/add");return a.put(e,t)},getPostRegistrationOptions:function(){var e={url:"".concat(c,"postRegistrationOptions"),method:"GET",silentError:!0};return a(e).then(t.getResData)},setPostRegistrationOptions:function(e){e={url:"".concat(c,"postRegistrationOptions"),method:"PUT",data:{commands:e}};return a(e)},helpTexts:{minPeriod:h("The minimum period attribute indicates the minimum time in seconds the LWM2M client MUST wait between two notifications."),maxPeriod:h("The maximum period attribute indicates the maximum time in seconds the LWM2M client MAY wait between two notifications."),greaterThan:h("This greater than attribute defines a threshold high value."),lessThan:h("This less than attribute defines a threshold low value."),step:h("This step attribute defines a minimum change value between two notifications.")},isServiceSubscribed:u,showIf:m,listRowInfoComponent:"c8yDeviceProtocolRowCountResources",getCustomActions:function(){r=r||a.get("".concat(c,"mappingActions/resourceactions")).then(t.getResData).then(d);return r},Validation:{RuleType:{LT:"lt",GT:"gt",EQ:"eq",NEQ:"neq",GTE:"gte",LTE:"lte",AND:"and",OR:"or"},ValueType:{NUMBER:"number",DATE:"date",STRING:"string",REGEX:"regex",OBJECTLINK:"objectLink"},ResourceDataType:{INTEGER:"INTEGER",FLOAT:"FLOAT",STRING:"STRING",BOOLEAN:"BOOLEAN",TIME:"TIME",OBJECTLINK:"OBJECTLINK"},RuleName:{GT:"Greater than",LT:"Lower than",GTE:"Greater or equals than",LTE:"Lower or equals than",EQ:"Equals",NEQ:"Equals not"}}};function u(){return e.isSubscribed({name:"lwm2m-agent",type:"MICROSERVICE"})}function m(){return m._cached=m._cached?m._cached:u()}function l(e){return _.get(e,"id")}function d(e){return _.reduce(e,function(e,t){var n=t.name,t=t.args,t=_.get(t,"length")?t.map(function(e){return"".concat(n,":").concat(e)}):[n];return e.concat(t)},[])}}}angular.module("c8y.lwm2m").provider(o,e)})();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@c8y/ng1-modules",
3
- "version": "1021.31.4",
3
+ "version": "1021.34.1",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Cumulocity",
6
6
  "description": "AngularJS modules for Cumulocity IoT applications.",
@@ -1 +1 @@
1
- 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 n,o=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),o.push.apply(o,n)),o}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(n),!0).forEach(function(e){_defineProperty(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function _defineProperty(e,t,n){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"==_typeof(e)?e:e+""}function _toPrimitive(e,t){if("object"!=_typeof(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0===n)return("string"===t?String:Number)(e);n=n.call(e,t||"default");if("object"!=_typeof(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}(()=>{function e(n,r,e,a,i,c,t,s,o,l,u,p){var d="service/remoteaccess",y="127.0.0.1",f=":::PLUGIN_PATH:::/clients/terminal/index.html",m="top=30,left=30,height=933,width=1350,location=no,menubar=no,toolbar=no,status=no,resizable=no",b=a.url("".concat(d,"/keypair/generate")),S={http:"ws:",https:"wss:"}[e.protocol()]||"ws:",e="wss:"===S,v="XSRF-TOKEN",P={category:"remoteaccess",key:"pass-through.enabled"},g=a.createEnum([{name:"NONE",value:"NONE",label:l("No password")},{name:"USER_PASS",value:"USER_PASS",label:l("Username and password")},{name:"PASS_ONLY",value:"PASS_ONLY",label:l("Password only")},{name:"KEY_PAIR",value:"KEY_PAIR",label:l("Public/private keys")},{name:"CERTIFICATE",value:"CERTIFICATE",label:l("Certificate")}]),h=[{name:"VNC",value:"VNC",label:l("VNC"),supportedCredentialsTypes:[g.NONE,g.PASS_ONLY],defaults:{host:y,port:5900},clientWindowPath:":::PLUGIN_PATH:::/clients/vnc/vncClient.html",clientWindowParams:"top=0,left=0,location=no,menubar=no,toolbar=no,status=no,resizable=yes",extraConnectionParams:{encrypt:e,true_color:!0,local_cursor:!1,viewport:!0,shared:!0,view_only:!1,disconnectTimeout:10,repeaterID:"",port:443,password:""}},{name:"TELNET",value:"TELNET",label:l("Telnet"),supportedCredentialsTypes:[g.NONE],defaults:{host:y,port:23},clientWindowPath:f,clientWindowParams:m},{name:"SSH",value:"SSH",label:l("SSH"),supportedCredentialsTypes:[g.USER_PASS,g.KEY_PAIR,g.CERTIFICATE],defaults:{host:y,port:22},clientWindowPath:f,clientWindowParams:m},{name:"PASSTHROUGH",value:"PASSTHROUGH",label:l("PASSTHROUGH"),supportedCredentialsTypes:[],defaults:{host:y,port:22},isConnectDissalowed:!0,tooltipConnectDissalowed:l("PASSTHROUGH protocol configuration should be used with native client only."),showIf:function(){return p.getSystemOptionValue(P)}}];return{DEFAULT_HOST:y,getProtocols:function(){return n.all(_.map(h,function(e){return s.configureVisibility(e,"visible")})).then(function(e){return _.filter(e,"visible")})},CREDENTIALS_TYPES:g,save:function(t,n){try{return((e,t)=>{var n=_.includes([g.USER_PASS.value,g.PASS_ONLY.value],t.credentialsType),o=_.includes([g.KEY_PAIR.value],t.credentialsType),n=(_.defaults(t,{password:n?_.get(t,"credentials.password"):void 0,privateKey:o?_.get(t,"credentials.privateKey"):void 0}),_.unset(t,"credentials"),_.unset(t,"attrs"),E(e,t));return r.put(n,t).then(a.getResData)})(t,n)}catch(e){return((e,t)=>(e=w(e),r.post(e,t).then(a.getResData)))(t,n)}},list:function(e){e=w(e);return r.get(e).then(a.getResData)},detail:function(e,t){e=E(e,t);return r.get(e).then(a.getResData)},remove:function(e,t){e=E(e,t);return r.delete(e)},getConnectionParams:function(e,t){return n.all({title:u.getString("Connected to: {{name}}",t),protocol:_.find(h,{value:t.protocol}),host:n.resolve(window.location.host),path:((n,o)=>c.current().then(function(e){var e={deviceId:a.getId(n),configurationId:o.id,token:i.encodeToken(e.userName,i.getPassword(),e.tenant)},e="service/remoteaccess/client/".concat(e.deviceId,"/configurations/").concat(e.configurationId,"?token=").concat(e.token),t=s.getCookieValue(v);return t&&(t=encodeURIComponent(t),e="".concat(e,"&").concat(v,"=").concat(t)),e}))(e,t),wsProtocol:S}).then(function(e){return _objectSpread(_objectSpread({},e),e.protocol.extraConnectionParams)})},isMicroServiceAvailable:function(t){return o.isAvailable({name:"cloud-remote-access",type:"MICROSERVICE"}).then(function(e){e=e?r.head(w(t),{silentError:!0}).then(_.constant(!0),_.constant(!1)):n.resolve(e);return e})},parseSshKeyFile:function(o){return n(function(t,e){var n=new FileReader;n.onload=function(e){e=e.target;return t(e.result)},n.onerror=function(){return e({feedback:{type:"error",summary:l("Could not read file.")}})},n.readAsText(o)})},generateKeys:function(e){return r.post(b,{hostname:e}).then(a.getResData)},exportSshKey:function(e){e=new Blob([e],{type:"text/plain"});window.saveAs(e,"key.pub")}};function w(e){e=[d,"devices",a.getId(e),"configurations"].join("/");return a.url(e)}function E(e,t){return[w(e),a.getId(t)].join("/")}}e.$inject=["$q","$http","$location","c8yBase","c8yAuth","c8yUser","c8yTenant","c8yUiUtil","c8yApplication","gettext","gettextCatalog","c8ySettings"],angular.module("c8y.remoteAccess").factory("c8yRemoteAccess",e)})();
1
+ 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 n,o=Object.keys(t);return Object.getOwnPropertySymbols&&(n=Object.getOwnPropertySymbols(t),e&&(n=n.filter(function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable})),o.push.apply(o,n)),o}function _objectSpread(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?ownKeys(Object(n),!0).forEach(function(e){_defineProperty(t,e,n[e])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))})}return t}function _defineProperty(e,t,n){return(t=_toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function _toPropertyKey(e){e=_toPrimitive(e,"string");return"symbol"==_typeof(e)?e:e+""}function _toPrimitive(e,t){if("object"!=_typeof(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0===n)return("string"===t?String:Number)(e);n=n.call(e,t||"default");if("object"!=_typeof(n))return n;throw new TypeError("@@toPrimitive must return a primitive value.")}(()=>{function e(n,r,e,a,i,c,l,o,s,u){var t="service/remoteaccess",p="127.0.0.1",d=":::PLUGIN_PATH:::/clients/terminal/index.html",f="top=30,left=30,height=933,width=1350,location=no,menubar=no,toolbar=no,status=no,resizable=no",y=a.url("".concat(t,"/keypair/generate")),b={http:"ws:",https:"wss:"}[e.protocol()]||"ws:",e="wss:"===b,m="XSRF-TOKEN",S=a.createEnum([{name:"NONE",value:"NONE",label:s("No password")},{name:"USER_PASS",value:"USER_PASS",label:s("Username and password")},{name:"PASS_ONLY",value:"PASS_ONLY",label:s("Password only")},{name:"KEY_PAIR",value:"KEY_PAIR",label:s("Public/private keys")},{name:"CERTIFICATE",value:"CERTIFICATE",label:s("Certificate")}]),v=[{name:"VNC",value:"VNC",label:s("VNC"),supportedCredentialsTypes:[S.NONE,S.PASS_ONLY],defaults:{host:p,port:5900},clientWindowPath:":::PLUGIN_PATH:::/clients/vnc/vncClient.html",clientWindowParams:"top=0,left=0,location=no,menubar=no,toolbar=no,status=no,resizable=yes",extraConnectionParams:{encrypt:e,true_color:!0,local_cursor:!1,viewport:!0,shared:!0,view_only:!1,disconnectTimeout:10,repeaterID:"",port:443,password:""}},{name:"TELNET",value:"TELNET",label:s("Telnet"),supportedCredentialsTypes:[S.NONE],defaults:{host:p,port:23},clientWindowPath:d,clientWindowParams:f},{name:"SSH",value:"SSH",label:s("SSH"),supportedCredentialsTypes:[S.USER_PASS,S.KEY_PAIR,S.CERTIFICATE],defaults:{host:p,port:22},clientWindowPath:d,clientWindowParams:f},{name:"PASSTHROUGH",value:"PASSTHROUGH",label:s("PASSTHROUGH"),supportedCredentialsTypes:[],defaults:{host:p,port:22},isConnectDissalowed:!0,tooltipConnectDissalowed:s("PASSTHROUGH protocol configuration should be used with native client only.")}];return{DEFAULT_HOST:p,getProtocols:function(){return n.all(_.map(v,function(e){return l.configureVisibility(e,"visible")})).then(function(e){return _.filter(e,"visible")})},CREDENTIALS_TYPES:S,save:function(t,n){try{return((e,t)=>{var n=_.includes([S.USER_PASS.value,S.PASS_ONLY.value],t.credentialsType),o=_.includes([S.KEY_PAIR.value],t.credentialsType),n=(_.defaults(t,{password:n?_.get(t,"credentials.password"):void 0,privateKey:o?_.get(t,"credentials.privateKey"):void 0}),_.unset(t,"credentials"),_.unset(t,"attrs"),g(e,t));return r.put(n,t).then(a.getResData)})(t,n)}catch(e){return((e,t)=>(e=P(e),r.post(e,t).then(a.getResData)))(t,n)}},list:function(e){e=P(e);return r.get(e).then(a.getResData)},detail:function(e,t){e=g(e,t);return r.get(e).then(a.getResData)},remove:function(e,t){e=g(e,t);return r.delete(e)},getConnectionParams:function(e,t){return n.all({title:u.getString("Connected to: {{name}}",t),protocol:_.find(v,{value:t.protocol}),host:n.resolve(window.location.host),path:((n,o)=>c.current().then(function(e){var e={deviceId:a.getId(n),configurationId:o.id,token:i.encodeToken(e.userName,i.getPassword(),e.tenant)},e="service/remoteaccess/client/".concat(e.deviceId,"/configurations/").concat(e.configurationId,"?token=").concat(e.token),t=l.getCookieValue(m);return t&&(t=encodeURIComponent(t),e="".concat(e,"&").concat(m,"=").concat(t)),e}))(e,t),wsProtocol:b}).then(function(e){return _objectSpread(_objectSpread({},e),e.protocol.extraConnectionParams)})},isMicroServiceAvailable:function(t){return o.isAvailable({name:"cloud-remote-access",type:"MICROSERVICE"}).then(function(e){e=e?r.head(P(t),{silentError:!0}).then(_.constant(!0),_.constant(!1)):n.resolve(e);return e})},parseSshKeyFile:function(o){return n(function(t,e){var n=new FileReader;n.onload=function(e){e=e.target;return t(e.result)},n.onerror=function(){return e({feedback:{type:"error",summary:s("Could not read file.")}})},n.readAsText(o)})},generateKeys:function(e){return r.post(y,{hostname:e}).then(a.getResData)},exportSshKey:function(e){e=new Blob([e],{type:"text/plain"});window.saveAs(e,"key.pub")}};function P(e){e=[t,"devices",a.getId(e),"configurations"].join("/");return a.url(e)}function g(e,t){return[P(e),a.getId(t)].join("/")}}e.$inject=["$q","$http","$location","c8yBase","c8yAuth","c8yUser","c8yUiUtil","c8yApplication","gettext","gettextCatalog"],angular.module("c8y.remoteAccess").factory("c8yRemoteAccess",e)})();
@@ -1 +0,0 @@
1
- (()=>{function e(t,e,n,c){var i=this;function u(){t.detail(i.id).then(s),t.getCustomActions().then(r)}function o(){var e=i.getMappings(),t=Object.values(i.getResources());return!((e?Object.values(e):[]).length<t.length)&&e&&Object.values(e).every(function(e){return!0===e.skipIfEmpty})}function s(e){(i.object=e)&&(i.title=t.getName(e),i.skipIfEmptyAll=o())}function r(e){i.customActions=e}function a(){return e.getMappings(i.object)}_.assign(i,{$onChanges:function(e){e.id&&u()},updateMapping:function(e){return t.updateMapping(i.object.id,e).then(u)},getMappings:a,getResources:function(){return e.getResources(i.object)},getMainObject:function(){return e.getMainObject(i.object)},getMappingForResource:function(e){return _.get(a(),e)},setAllResources:function(){var e=i.getResources(),t=i.getMappings(),e=e?Object.values(e):[];t=t||{};e.forEach(function(e){null!=e.id&&(t[e.id]||(t[e.id]={resourceID:e.id}),t[e.id].skipIfEmpty=i.skipIfEmptyAll)}),t&&0<Object.entries(t).length&&i.updateMapping(t).then(function(){return n.success(c("Resource update complete."))})},isIgnoreEmptyValuesMasterToggleOn:o})}e.$inject=["c8yLwm2m","c8yObjectMappings","c8yAlert","gettext"],angular.module("c8y.lwm2m").component("c8yLwm2mDetail",{templateUrl:":::PLUGIN_PATH:::/lwm2mDetail.html",controller:e,controllerAs:"vm",bindings:{id:"<"}})})();
@@ -1,155 +0,0 @@
1
- <c8y-ui-title-set ng-if="vm.object" title="vm.title"></c8y-ui-title-set>
2
- <c8y-device-protocol-breadcrumb ng-if="vm.object"></c8y-device-protocol-breadcrumb>
3
-
4
- <div class="row" ng-if="vm.object">
5
- <div class="col-lg-12 col-lg-max">
6
- <div class="card card--fullpage">
7
- <div class="card-block bg-level-1 flex-no-shrink p-t-24 p-b-24">
8
- <div class="content-flex-70">
9
- <div class="text-center">
10
- <i class="c8y-icon-duocolor icon-48 c8y-icon c8y-icon-device-protocols"></i>
11
- <p ng-if="!vm.isNew()">
12
- <small class="label label-info">LWM2M</small>
13
- </p>
14
- </div>
15
- <div class="flex-grow col-10">
16
- <div class="content-flex-80">
17
- <div class="col-9">
18
- <form class="form form-read-only">
19
- <div class="form-group">
20
- <label
21
- for="name"
22
- class="sr-only"
23
- translate
24
- >
25
- Name
26
- </label>
27
- <input
28
- class="form-control input-lg"
29
- id="name"
30
- ng-model="vm.getMainObject().name"
31
- />
32
- </div>
33
- <div class="form-group">
34
- <label
35
- for="description"
36
- class="sr-only"
37
- translate
38
- >
39
- Description
40
- </label>
41
- <textarea
42
- class="form-control"
43
- id="description"
44
- ng-model="vm.getMainObject().description"
45
- ></textarea>
46
- </div>
47
- </form>
48
- </div>
49
-
50
- <div class="flex-grow">
51
- <ul class="list-unstyled small">
52
- <li class="p-t-4 p-b-4 d-flex separator-bottom text-nowrap">
53
- <label
54
- class="small m-b-0 m-r-8"
55
- translate
56
- >
57
- ID
58
- </label>
59
- <span class="m-l-auto">{{ vm.getMainObject().id }}</span>
60
- </li>
61
- <li class="p-t-4 p-b-4 d-flex separator-bottom text-nowrap">
62
- <label
63
- class="small m-b-0 m-r-8"
64
- translate
65
- >
66
- Date created
67
- </label>
68
- <span class="m-l-auto">{{ vm.object.creationTime | absoluteDate }}</span>
69
- </li>
70
- <li class="p-t-4 p-b-4 d-flex separator-bottom text-nowrap">
71
- <label
72
- class="small m-b-0 m-r-8"
73
- translate
74
- >
75
- Last update
76
- </label>
77
- <span class="m-l-auto">{{ vm.object.lastUpdated | absoluteDate }}</span>
78
- </li>
79
- </ul>
80
- </div>
81
- </div>
82
- </div>
83
- </div>
84
- </div>
85
- <div class="card-header separator-top-bottom sticky-top">
86
- <div class="card-title">
87
- {{ 'Resources' | translate }}
88
- </div>
89
- </div>
90
- <div class="inner-scroll">
91
- <div class="sticky-top hidden-xs">
92
- <div class="c8y-list__item">
93
- <div class="c8y-list__item__block">
94
- <div class="c8y-list__item__icon">
95
- <i class="p-l-16 p-r-4"></i>
96
- </div>
97
- <div class="c8y-list__item__body text-medium">
98
- <div class="content-flex-60">
99
- <div class="col-4">
100
- {{ 'Name' | translate }}
101
- </div>
102
- <div class="col-3">
103
- {{ 'Functionalities' | translate }}
104
- </div>
105
- <div class="col-3 d-flex">
106
- <div class="list-item-switch">
107
- <label class="c8y-switch c8y-switch--inline">
108
- <input
109
- type="checkbox"
110
- ng-model="vm.skipIfEmptyAll"
111
- ng-change="vm.setAllResources()"
112
- />
113
- <span></span>
114
- <span class="sr-only">
115
- {{ 'If selected, it ignores empty values on all resources below.' | translate }}
116
- </span>
117
- </label>
118
- </div>
119
- {{ 'Ignore empty values' | translate }}
120
-
121
- <div class="list-item-icon">
122
- <button
123
- class="btn-help btn-help--sm"
124
- aria-label="{{ 'Help' | translate }}"
125
- type="button"
126
- uib-popover="{{ 'If selected, it ignores empty values on all resources below.' | translate }}"
127
- popover-placement="right"
128
- popover-trigger="'focus'"
129
- popover-append-to-body="true"
130
- ></button>
131
- </div>
132
- </div>
133
- <div class="col-2">
134
- {{ 'Validation rules' | translate }}
135
- </div>
136
- </div>
137
- </div>
138
- <div class="c8y-list__item__actions">
139
- <div class="c8y-list__item--empty-actions"></div>
140
- </div>
141
- </div>
142
- </div>
143
- </div>
144
- <div class="c8y-list__group">
145
- <c8y-lwm2m-resource
146
- ng-repeat="(resourceId, resource) in vm.getResources()"
147
- resource="resource"
148
- mapping="vm.getMappingForResource(resourceId)"
149
- on-update="vm.updateMapping(mapping)"
150
- ></c8y-lwm2m-resource>
151
- </div>
152
- </div>
153
- </div>
154
- </div>
155
- </div>