Merge remote-tracking branch 'deaflynx/develop/2.6-edge' into develop/2.6-edge

This commit is contained in:
deaflynx 2021-01-20 11:29:25 +02:00
commit 164ebe5c25
9 changed files with 235 additions and 44 deletions

View File

@ -132,12 +132,6 @@
} }
} }
&.tb-edge-group {
&::before {
content: "router";
}
}
&.tb-rule-chain-group { &.tb-rule-chain-group {
&::before { &::before {
content: "settings_ethernet"; content: "settings_ethernet";

View File

@ -19,7 +19,7 @@
<md-button ng-click="onManageAssets({event: $event})" ng-show="!isEdit" class="md-raised md-primary">{{ 'customer.manage-assets' | translate }}</md-button> <md-button ng-click="onManageAssets({event: $event})" ng-show="!isEdit" class="md-raised md-primary">{{ 'customer.manage-assets' | translate }}</md-button>
<md-button ng-click="onManageDevices({event: $event})" ng-show="!isEdit" class="md-raised md-primary">{{ 'customer.manage-devices' | translate }}</md-button> <md-button ng-click="onManageDevices({event: $event})" ng-show="!isEdit" class="md-raised md-primary">{{ 'customer.manage-devices' | translate }}</md-button>
<md-button ng-click="onManageDashboards({event: $event})" ng-show="!isEdit" class="md-raised md-primary">{{ 'customer.manage-dashboards' | translate }}</md-button> <md-button ng-click="onManageDashboards({event: $event})" ng-show="!isEdit" class="md-raised md-primary">{{ 'customer.manage-dashboards' | translate }}</md-button>
<md-button ng-click="onManageEdges({event: $event})" ng-show="!isEdit" class="md-raised md-primary">{{ 'customer.manage-edges' | translate }}</md-button> <md-button ng-click="onManageEdges({event: $event})" ng-show="!isEdit && vm.isEdgesSupportEnabled" class="md-raised md-primary">{{ 'customer.manage-edges' | translate }}</md-button>
<md-button ng-click="onDeleteCustomer({event: $event})" ng-show="!isEdit && !isPublic" class="md-raised md-primary">{{ 'customer.delete' | translate }}</md-button> <md-button ng-click="onDeleteCustomer({event: $event})" ng-show="!isEdit && !isPublic" class="md-raised md-primary">{{ 'customer.delete' | translate }}</md-button>
<div layout="row"> <div layout="row">

View File

@ -21,7 +21,7 @@ import customerCard from './customer-card.tpl.html';
/* eslint-enable import/no-unresolved, import/default */ /* eslint-enable import/no-unresolved, import/default */
/*@ngInject*/ /*@ngInject*/
export default function CustomerController(customerService, $state, $stateParams, $translate, types) { export default function CustomerController(customerService, $state, $stateParams, $translate, types, userService) {
var customerActionsList = [ var customerActionsList = [
{ {
@ -76,7 +76,10 @@ export default function CustomerController(customerService, $state, $stateParams
} }
}, },
icon: "dashboard" icon: "dashboard"
}, }];
if (userService.isEdgesSupportEnabled()) {
customerActionsList.push(
{ {
onAction: function ($event, item) { onAction: function ($event, item) {
openCustomerEdges($event, item); openCustomerEdges($event, item);
@ -89,8 +92,13 @@ export default function CustomerController(customerService, $state, $stateParams
return $translate.instant('customer.manage-customer-edges') return $translate.instant('customer.manage-customer-edges')
} }
}, },
icon: "router" icon: "router",
}, isEnabled: false
}
)
}
customerActionsList.push(
{ {
onAction: function ($event, item) { onAction: function ($event, item) {
vm.grid.deleteItem($event, item); vm.grid.deleteItem($event, item);
@ -102,12 +110,14 @@ export default function CustomerController(customerService, $state, $stateParams
return customer && (!customer.additionalInfo || !customer.additionalInfo.isPublic); return customer && (!customer.additionalInfo || !customer.additionalInfo.isPublic);
} }
} }
]; );
var vm = this; var vm = this;
vm.types = types; vm.types = types;
vm.isEdgesSupportEnabled = userService.isEdgesSupportEnabled();
vm.customerGridConfig = { vm.customerGridConfig = {
refreshParamsFunc: null, refreshParamsFunc: null,

View File

@ -58,7 +58,7 @@
<md-button ngclipboard data-clipboard-action="copy" <md-button ngclipboard data-clipboard-action="copy"
ngclipboard-success="onEdgeInfoCopied('key')" ngclipboard-success="onEdgeInfoCopied('key')"
data-clipboard-text="{{edge.routingKey}}" data-clipboard-text="{{edge.routingKey}}"
ng-show="!isEdit && edgeScope === 'tenant'" ng-show="!isEdit"
ng-if="isTenantAdmin" ng-if="isTenantAdmin"
class="md-raised"> class="md-raised">
<md-icon md-svg-icon="mdi:clipboard-arrow-left"></md-icon> <md-icon md-svg-icon="mdi:clipboard-arrow-left"></md-icon>
@ -67,14 +67,14 @@
<md-button ngclipboard data-clipboard-action="copy" <md-button ngclipboard data-clipboard-action="copy"
ngclipboard-success="onEdgeInfoCopied('secret')" ngclipboard-success="onEdgeInfoCopied('secret')"
data-clipboard-text="{{edge.secret}}" data-clipboard-text="{{edge.secret}}"
ng-show="!isEdit && edgeScope === 'tenant'" ng-show="!isEdit"
ng-if="isTenantAdmin" ng-if="isTenantAdmin"
class="md-raised"> class="md-raised">
<md-icon md-svg-icon="mdi:clipboard-arrow-left"></md-icon> <md-icon md-svg-icon="mdi:clipboard-arrow-left"></md-icon>
<span translate>edge.copy-edge-secret</span> <span translate>edge.copy-edge-secret</span>
</md-button> </md-button>
<md-button ng-click="onEdgeSync(edge.id)" <md-button ng-click="onEdgeSync(edge.id)"
ng-show="!isEdit && edgeScope === 'tenant'" ng-show="!isEdit"
ng-if="isTenantAdmin" ng-if="isTenantAdmin"
class="md-raised"> class="md-raised">
<md-icon md-svg-icon="mdi:sync"></md-icon> <md-icon md-svg-icon="mdi:sync"></md-icon>

View File

@ -811,7 +811,66 @@
"event-action": "Ereignisaktion", "event-action": "Ereignisaktion",
"load-entity-error": "Entität nicht gefunden. Fehler beim Laden der Informationen", "load-entity-error": "Entität nicht gefunden. Fehler beim Laden der Informationen",
"unassign-edges-text": "Nach der Bestätigung werden alle ausgewählten Kanten nicht zugewiesen und sind für den Kunden nicht zugänglich.", "unassign-edges-text": "Nach der Bestätigung werden alle ausgewählten Kanten nicht zugewiesen und sind für den Kunden nicht zugänglich.",
"unassign-edges-title": "Sind Sie sicher, dass Sie die Zuordnung aufheben möchten { count, plural, 1 {1 Rand} other {# Rand} }?" "unassign-edges-title": "Sind Sie sicher, dass Sie die Zuordnung aufheben möchten { count, plural, 1 {1 Rand} other {# Rand} }?",
"edge-file": "Edge-Datei",
"name-starts-with": "Der Kantenname beginnt mit",
"rulechain-templates": "Regelkettenvorlagen",
"rulechain-template": "Regelkettenvorlage",
"unassign-edges-action-title": "Heben Sie die Zuordnung von {count, plural, 1 {1 edge} other {# edge}} vom Kunden auf",
"enter-edge-type": "Geben Sie den Kantentyp ein",
"no-edge-types-matching": "Es wurden keine Kantentypen gefunden, die mit '{{entitySubtype}}' übereinstimmen.",
"edge-type-list-empty": "Keine Kantentypen ausgewählt.",
"edge-types": "Kantentypen",
"license-key-hint": "Um Ihre Lizenz zu erhalten, navigieren Sie zur <a href='https://thingsboard.io/pricing/?active=thingsboard-edge'arget='_blank'> Preisseite </a> und wählen Sie die beste Lizenzoption für Ihre aus Fall.",
"cloud-endpoint-hint": "Edge erfordert HTTP-Zugriff auf die Cloud (ThingsBoard CE / PE), um den Lizenzschlüssel zu überprüfen. Bitte geben Sie die Cloud-URL an, zu der Edge eine Verbindung herstellen kann.",
"missing-related-rule-chains-title": "In Edge fehlen verwandte Regelketten.",
"missing-related-rule-chains-text": "Randregelkette (n) zugewiesen Verwenden Sie Regelknoten, die Nachrichten an Regelkette (n) weiterleiten, die dieser Kante nicht zugeordnet sind. <br> <br> Liste der fehlenden Regelketten: <br> {{missingRuleChains}}",
"downlinks": "Downlinks",
"no-downlinks-prompt": "Keine Downlinks gefunden",
"assigned-to-customer-widget": "Zugewiesen an: {{customerTitle}}",
"widget-datasource-error": "Dieses Widget unterstützt nur EDGE-Entitätsdatenquellen"
},
"edge-event": {
"type-dashboard": "Dashboard",
"type-asset": "Asset",
"type-device": "Device",
"type-device-profile": "Device Profile",
"type-entity-view": "Entity View",
"type-alarm": "Alar",
"type-rule-chain": "Rule Chain",
"type-rule-chain-metadata": "Rule Chain Metadata",
"type-edge": "Edge",
"type-entity-group": "Entity Group",
"type-scheduler-event": "Scheduler Event",
"type-white-labeling": "White Labeling",
"type-login-white-labeling": "White Labeling Login",
"type-user": "User",
"type-tenant": "Tenant",
"type-customer": "Customer",
"type-custom-translation": "Custom Translation",
"type-relation": "Relation",
"type-widgets-bundle": "Widgets Bundle",
"type-widgets-type": "Widgets Type",
"type-admin-settings": "Admin Settings",
"action-type-added": "Added",
"action-type-deleted": "Deleted",
"action-type-updated": "Updated",
"action-type-post-attributes": "Post Attributes",
"action-type-attributes-updated": "Attributes Updated",
"action-type-attributes-deleted": "Attributes Deleted",
"action-type-timeseries-updated": "Timeseries Updated",
"action-type-credentials-updated": "Credentials Updated",
"action-type-assigned-to-customer": "Assigned to Customer",
"action-type-unassigned-from-customer": "Unassigned from Customer",
"action-type-relation-add-or-update": "Relation Add or Update",
"action-type-relation-deleted": "Relation Deleted",
"action-type-rpc-call": "RPC Call",
"action-type-alarm-ack": "Alarm Ack",
"action-type-alarm-clear": "Alarm Clear",
"action-type-assigned-to-edge": "Assigned to Edge",
"action-type-unassigned-from-edge": "Unassigned from Edge",
"action-type-credentials-request": "Credentials Request",
"action-type-entity-merge-request": "Entity Merge Request"
}, },
"error": { "error": {
"unable-to-connect": "Es konnte keine Verbindung zum Server hergestellt werden! Bitte überprüfen Sie Ihre Internetverbindung.", "unable-to-connect": "Es konnte keine Verbindung zum Server hergestellt werden! Bitte überprüfen Sie Ihre Internetverbindung.",
@ -1409,7 +1468,11 @@
"unset-auto-assign-to-edge": "Weisen Sie Kanten bei der Erstellung keine Regelkette zu", "unset-auto-assign-to-edge": "Weisen Sie Kanten bei der Erstellung keine Regelkette zu",
"unset-auto-assign-to-edge-title": "Sind Sie sicher, dass Sie die Kantenregelkette '{{ruleChainName}}' bei der Erstellung nicht den Kanten zuweisen möchten?", "unset-auto-assign-to-edge-title": "Sind Sie sicher, dass Sie die Kantenregelkette '{{ruleChainName}}' bei der Erstellung nicht den Kanten zuweisen möchten?",
"unset-auto-assign-to-edge-text": "Nach der Bestätigung wird die Kantenregelkette bei der Erstellung nicht mehr automatisch den Kanten zugewiesen.", "unset-auto-assign-to-edge-text": "Nach der Bestätigung wird die Kantenregelkette bei der Erstellung nicht mehr automatisch den Kanten zugewiesen.",
"edge-template-root": "Vorlagenstamm" "edge-template-root": "Vorlagenstamm",
"set-auto-assign-to-edge-card": "Bei der Erstellung den Kanten zuweisen",
"set-default-root-edge": "Machen Sie die Regelkette zum Standardstamm",
"set-default-root-edge-rulechain-title": "Sind Sie sicher, dass Sie die Standardkettenwurzel der Regelkette '{{ruleChainName}}' festlegen möchten?",
"set-default-root-edge-rulechain-text": "Nach der Bestätigung wird die Regelkette zum Standard-Edge-Root und verarbeitet alle eingehenden Transportnachrichten."
}, },
"rulenode": { "rulenode": {
"details": "Details", "details": "Details",

View File

@ -769,7 +769,6 @@
"management": "Edge management", "management": "Edge management",
"no-edges-matching": "No edges matching '{{entity}}' were found.", "no-edges-matching": "No edges matching '{{entity}}' were found.",
"add": "Add Edge", "add": "Add Edge",
"view": "View Edge",
"no-edges-text": "No edges found", "no-edges-text": "No edges found",
"edge-details": "Edge details", "edge-details": "Edge details",
"add-edge-text": "Add new edge", "add-edge-text": "Add new edge",
@ -794,7 +793,6 @@
"id-copied-message": "Edge Id has been copied to clipboard", "id-copied-message": "Edge Id has been copied to clipboard",
"sync": "Sync Edge", "sync": "Sync Edge",
"sync-message": "Edge has been synchronized", "sync-message": "Edge has been synchronized",
"permissions": "Permissions",
"edge-required": "Edge required", "edge-required": "Edge required",
"edge-type": "Edge type", "edge-type": "Edge type",
"edge-type-required": "Edge type is required.", "edge-type-required": "Edge type is required.",

View File

@ -747,7 +747,6 @@
"management": "Gestión de bordes", "management": "Gestión de bordes",
"no-edges-matching": "No se encontraron bordes que coincidan con '{{entity}}'", "no-edges-matching": "No se encontraron bordes que coincidan con '{{entity}}'",
"add": "Agregar borde", "add": "Agregar borde",
"view": "Ver borde",
"no-edges-text": "No se encontraron bordes", "no-edges-text": "No se encontraron bordes",
"edge-details": "Detalles del borde", "edge-details": "Detalles del borde",
"add-edge-text": "Agregar nuevo borde", "add-edge-text": "Agregar nuevo borde",
@ -771,7 +770,6 @@
"id-copied-message": "El ID de borde se ha copiado al portapapeles", "id-copied-message": "El ID de borde se ha copiado al portapapeles",
"sync": "Sinc Edge", "sync": "Sinc Edge",
"sync-message": "Edge se ha sincronizado", "sync-message": "Edge se ha sincronizado",
"permissions": "Permisos",
"edge-required": "Edge required", "edge-required": "Edge required",
"edge-type": "Type de la bordure", "edge-type": "Type de la bordure",
"edge-type-required": "El tipo de borde es requerido.", "edge-type-required": "El tipo de borde es requerido.",
@ -824,7 +822,66 @@
"event-action": "Información de la entidad", "event-action": "Información de la entidad",
"load-entity-error": "Entidad no encontrada. No se pudo cargar la información", "load-entity-error": "Entidad no encontrada. No se pudo cargar la información",
"unassign-edges-text": "Después de la confirmación de todos los bordes seleccionados, se anulará la asignación y el cliente no podrá acceder a ellos.", "unassign-edges-text": "Después de la confirmación de todos los bordes seleccionados, se anulará la asignación y el cliente no podrá acceder a ellos.",
"unassign-edges-title": "¿Está seguro de que desea anular la asignación de {count, plural, 1 {1 borde} other {# bordes}}?" "unassign-edges-title": "¿Está seguro de que desea anular la asignación de {count, plural, 1 {1 borde} other {# bordes}}?",
"edge-file": "Archivo de borde",
"name-starts-with": "Edge name starts with",
"rulechain-templates": "Plantillas de cadena de reglas",
"rulechain-template": "Plantilla de cadena de reglas",
"unassign-edges-action-title": "Anular la asignación de {count, plural, 1 {1 borde} other {# bordes}} del cliente",
"enter-edge-type": "Ingrese el tipo de borde",
"no-edge-types-matching": "No se encontraron tipos de aristas que coincidan con '{{entitySubtype}}'.",
"edge-type-list-empty": "No se seleccionó ningún tipo de borde.",
"edge-types": "Tipos de bordes",
"license-key-hint": "Para obtener su licencia, vaya a la <a href='https://thingsboard.io/pricing/?active=thingsboard-edge' target='_blank'> página de precios </a> y seleccione la mejor opción de licencia para su caso.",
"cloud-endpoint-hint": "Edge requiere acceso HTTP (s) a la nube (ThingsBoard CE / PE) para verificar la clave de licencia. Especifique la URL de la nube a la que Edge puede conectarse.",
"missing-related-rule-chains-title": "Al borde le faltan cadenas de reglas relacionadas",
"missing-related-rule-chains-text": "Asignado a la (s) cadena (s) de reglas de borde usa nodos de reglas que reenvían mensajes a cadenas de reglas que no están asignadas a este borde. <br> <br> Lista de cadenas de reglas faltantes: <br> {{missingRuleChains}}",
"downlinks": "Enlaces descendentes",
"no-downlinks-prompt": "No se encontraron enlaces descendentes",
"assigned-to-customer-widget": "Asignado a: {{customerTitle}}",
"widget-datasource-error": "Este widget solo admite la fuente de datos de la entidad EDGE"
},
"edge-event": {
"type-dashboard": "Dashboard",
"type-asset": "Asset",
"type-device": "Device",
"type-device-profile": "Device Profile",
"type-entity-view": "Entity View",
"type-alarm": "Alar",
"type-rule-chain": "Rule Chain",
"type-rule-chain-metadata": "Rule Chain Metadata",
"type-edge": "Edge",
"type-entity-group": "Entity Group",
"type-scheduler-event": "Scheduler Event",
"type-white-labeling": "White Labeling",
"type-login-white-labeling": "White Labeling Login",
"type-user": "User",
"type-tenant": "Tenant",
"type-customer": "Customer",
"type-custom-translation": "Custom Translation",
"type-relation": "Relation",
"type-widgets-bundle": "Widgets Bundle",
"type-widgets-type": "Widgets Type",
"type-admin-settings": "Admin Settings",
"action-type-added": "Added",
"action-type-deleted": "Deleted",
"action-type-updated": "Updated",
"action-type-post-attributes": "Post Attributes",
"action-type-attributes-updated": "Attributes Updated",
"action-type-attributes-deleted": "Attributes Deleted",
"action-type-timeseries-updated": "Timeseries Updated",
"action-type-credentials-updated": "Credentials Updated",
"action-type-assigned-to-customer": "Assigned to Customer",
"action-type-unassigned-from-customer": "Unassigned from Customer",
"action-type-relation-add-or-update": "Relation Add or Update",
"action-type-relation-deleted": "Relation Deleted",
"action-type-rpc-call": "RPC Call",
"action-type-alarm-ack": "Alarm Ack",
"action-type-alarm-clear": "Alarm Clear",
"action-type-assigned-to-edge": "Assigned to Edge",
"action-type-unassigned-from-edge": "Unassigned from Edge",
"action-type-credentials-request": "Credentials Request",
"action-type-entity-merge-request": "Entity Merge Request"
}, },
"error": { "error": {
"unable-to-connect": "¡No se puede conectar al servidor! Por favor, revise su conexión a Internet.", "unable-to-connect": "¡No se puede conectar al servidor! Por favor, revise su conexión a Internet.",
@ -1477,7 +1534,11 @@
"unset-auto-assign-to-edge": "No asigne una cadena de reglas a los bordes en la creación", "unset-auto-assign-to-edge": "No asigne una cadena de reglas a los bordes en la creación",
"unset-auto-assign-to-edge-title": "¿Está seguro de que no desea asignar la cadena de reglas de borde '{{ruleChainName}}' a los bordes en la creación?", "unset-auto-assign-to-edge-title": "¿Está seguro de que no desea asignar la cadena de reglas de borde '{{ruleChainName}}' a los bordes en la creación?",
"unset-auto-assign-to-edge-text": "Después de la confirmación, la cadena de reglas de borde ya no se asignará automáticamente a los bordes en la creación.", "unset-auto-assign-to-edge-text": "Después de la confirmación, la cadena de reglas de borde ya no se asignará automáticamente a los bordes en la creación.",
"edge-template-root": "Raíz de plantilla" "edge-template-root": "Raíz de plantilla",
"set-auto-assign-to-edge-card": "Asignar a borde (s) en la creación",
"set-default-root-edge": "Hacer raíz predeterminada de la cadena de reglas",
"set-default-root-edge-rulechain-title": "¿Está seguro de que desea que la cadena de reglas '{{ruleChainName}}' sea la raíz del borde predeterminada?",
"set-default-root-edge-rulechain-text": "Después de la confirmación, la cadena de reglas se convertirá en la raíz del borde predeterminada y manejará todos los mensajes de transporte entrantes."
}, },
"rulenode": { "rulenode": {
"details": "Detalles", "details": "Detalles",

View File

@ -830,7 +830,66 @@
"event-action": "Action d'événement", "event-action": "Action d'événement",
"load-entity-error": "Entité introuvable. Échec du chargement des informations", "load-entity-error": "Entité introuvable. Échec du chargement des informations",
"unassign-edges-text": "Après la confirmation, tous les bordures sélectionnés ne seront plus attribués et ne seront pas accessibles par le client.", "unassign-edges-text": "Après la confirmation, tous les bordures sélectionnés ne seront plus attribués et ne seront pas accessibles par le client.",
"unassign-edges-title": "Voulez-vous vraiment annuler l'attribution de {count, plural, 1 {1 bordure} other {# bordures}}?" "unassign-edges-title": "Voulez-vous vraiment annuler l'attribution de {count, plural, 1 {1 bordure} other {# bordures}}?",
"edge-file": "Fichier Edge",
"name-starts-with": "Le nom du bord commence par",
"rulechain-templates": "Modèles de chaîne de règles",
"rulechain-template": "Modèle de chaîne de règles",
"unassign-edges-action-title": "Annuler l'attribution de {count, plural, 1 {1 edge} other {# bords}} au client",
"enter-edge-type": "Entrez le type d'arête",
"no-edge-types-matching": "Aucun type d'arête correspondant à '{{entitySubtype}}' n'a été trouvé.",
"edge-type-list-empty": "Aucun type d'arête sélectionné.",
"edge-types": "Types de bords",
"license-key-hint": "Pour obtenir votre licence, accédez à la <a href='https://thingsboard.io/pricing/?active=thingsboard-edge' target='_blank'> page de tarification </a> et sélectionnez la meilleure option de licence pour votre Cas.",
"cloud-endpoint-hint": "Edge nécessite un accès HTTP (s) au Cloud (ThingsBoard CE / PE) pour vérifier la clé de licence. Veuillez spécifier l'URL cloud à laquelle Edge peut se connecter.",
"missing-related-rule-chains-title": "Edge n'a pas de chaîne (s) de règles associées",
"missing-related-rule-chains-text": "Les chaînes de règles affectées aux tronçons utilisent des nœuds de règles qui transfèrent les messages aux chaînes de règles non affectées à ce tronçon. <br> <br> Liste des chaînes de règles manquantes: <br> {{missingRuleChains}}",
"downlinks": "Liens descendants",
"no-downlinks-prompt": "Aucun lien descendant trouvé",
"assigned-to-customer-widget": "Attribué à: {{customerTitle}}",
"widget-datasource-error": "Ce widget prend en charge uniquement la source de données d'entité EDGE"
},
"edge-event": {
"type-dashboard": "Dashboard",
"type-asset": "Asset",
"type-device": "Device",
"type-device-profile": "Device Profile",
"type-entity-view": "Entity View",
"type-alarm": "Alar",
"type-rule-chain": "Rule Chain",
"type-rule-chain-metadata": "Rule Chain Metadata",
"type-edge": "Edge",
"type-entity-group": "Entity Group",
"type-scheduler-event": "Scheduler Event",
"type-white-labeling": "White Labeling",
"type-login-white-labeling": "White Labeling Login",
"type-user": "User",
"type-tenant": "Tenant",
"type-customer": "Customer",
"type-custom-translation": "Custom Translation",
"type-relation": "Relation",
"type-widgets-bundle": "Widgets Bundle",
"type-widgets-type": "Widgets Type",
"type-admin-settings": "Admin Settings",
"action-type-added": "Added",
"action-type-deleted": "Deleted",
"action-type-updated": "Updated",
"action-type-post-attributes": "Post Attributes",
"action-type-attributes-updated": "Attributes Updated",
"action-type-attributes-deleted": "Attributes Deleted",
"action-type-timeseries-updated": "Timeseries Updated",
"action-type-credentials-updated": "Credentials Updated",
"action-type-assigned-to-customer": "Assigned to Customer",
"action-type-unassigned-from-customer": "Unassigned from Customer",
"action-type-relation-add-or-update": "Relation Add or Update",
"action-type-relation-deleted": "Relation Deleted",
"action-type-rpc-call": "RPC Call",
"action-type-alarm-ack": "Alarm Ack",
"action-type-alarm-clear": "Alarm Clear",
"action-type-assigned-to-edge": "Assigned to Edge",
"action-type-unassigned-from-edge": "Unassigned from Edge",
"action-type-credentials-request": "Credentials Request",
"action-type-entity-merge-request": "Entity Merge Request"
}, },
"entity": { "entity": {
"add-alias": "Ajouter un alias d'entité", "add-alias": "Ajouter un alias d'entité",
@ -1455,7 +1514,11 @@
"unset-auto-assign-to-edge": "N'attribuez pas de chaîne de règles aux arêtes lors de la création", "unset-auto-assign-to-edge": "N'attribuez pas de chaîne de règles aux arêtes lors de la création",
"unset-auto-assign-to-edge-title": "Êtes-vous sûr de ne pas vouloir attribuer la chaîne de règles d'arête '{{ruleChainName}}' à l'arête (s) lors de la création?", "unset-auto-assign-to-edge-title": "Êtes-vous sûr de ne pas vouloir attribuer la chaîne de règles d'arête '{{ruleChainName}}' à l'arête (s) lors de la création?",
"unset-auto-assign-to-edge-text": "Après la confirmation, la chaîne de règles d'arêtes ne sera plus automatiquement affectée aux arêtes lors de la création.", "unset-auto-assign-to-edge-text": "Après la confirmation, la chaîne de règles d'arêtes ne sera plus automatiquement affectée aux arêtes lors de la création.",
"edge-template-root": "Racine du modèle" "edge-template-root": "Racine du modèle",
"set-auto-assign-to-edge-card": "Affecter aux arêtes lors de la création",
"set-default-root-edge": "Rendre la chaîne de règles racine par défaut",
"set-default-root-edge-rulechain-title": "Voulez-vous vraiment définir la racine de périphérie par défaut de la chaîne de règles '{{ruleChainName}}'?",
"set-default-root-edge-rulechain-text": "Après la confirmation, la chaîne de règles deviendra la racine périphérique par défaut et gérera tous les messages de transport entrants."
}, },
"rulenode": { "rulenode": {
"add": "Ajouter un noeud de règle", "add": "Ajouter un noeud de règle",

View File

@ -201,6 +201,7 @@ function EdgesOverviewWidgetController($scope, $translate, types, utils, entityS
function getCustomerTitle(edgeId) { function getCustomerTitle(edgeId) {
edgeService.getEdge(edgeId, true).then( edgeService.getEdge(edgeId, true).then(
function success(edge) { function success(edge) {
if (edge.customerId.id !== types.id.nullUid) {
customerService.getCustomer(edge.customerId.id, { ignoreErrors: true }).then( customerService.getCustomer(edge.customerId.id, { ignoreErrors: true }).then(
function success(customer) { function success(customer) {
vm.customerTitle = $translate.instant('edge.assigned-to-customer-widget', { customerTitle: customer.title }); vm.customerTitle = $translate.instant('edge.assigned-to-customer-widget', { customerTitle: customer.title });
@ -208,6 +209,7 @@ function EdgesOverviewWidgetController($scope, $translate, types, utils, entityS
function fail() { function fail() {
} }
); );
}
}, },
function fail() { function fail() {
} }