Browse Source

Merge pull request #8026 from volodymyr-babak/filter-type-multiple-types

Filter type alias - add possibility to specify multiple types, instead of single one
bug/update-service-content-type
Andrew Shvayka 4 years ago
committed by GitHub
parent
commit
b952360055
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/DashboardImportService.java
  2. 14
      application/src/test/java/org/thingsboard/server/controller/BaseEntityQueryControllerTest.java
  3. 4
      application/src/test/java/org/thingsboard/server/controller/BaseEntityViewControllerTest.java
  4. 38
      application/src/test/java/org/thingsboard/server/controller/BaseWebsocketApiTest.java
  5. 2
      application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv3/attributes/AbstractMqttAttributesIntegrationTest.java
  6. 32
      common/data/src/main/java/org/thingsboard/server/common/data/query/AssetTypeFilter.java
  7. 38
      common/data/src/main/java/org/thingsboard/server/common/data/query/DeviceTypeFilter.java
  8. 32
      common/data/src/main/java/org/thingsboard/server/common/data/query/EdgeTypeFilter.java
  9. 32
      common/data/src/main/java/org/thingsboard/server/common/data/query/EntityViewTypeFilter.java
  10. 27
      dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultEntityQueryRepository.java
  11. 28
      dao/src/test/java/org/thingsboard/server/dao/service/BaseEntityServiceTest.java
  12. 41
      ui-ngx/src/app/core/services/dashboard-utils.service.ts
  13. 40
      ui-ngx/src/app/modules/home/components/entity/entity-filter-view.component.ts
  14. 32
      ui-ngx/src/app/modules/home/components/entity/entity-filter.component.html
  15. 8
      ui-ngx/src/app/modules/home/components/entity/entity-filter.component.ts
  16. 16
      ui-ngx/src/app/shared/models/alias.models.ts
  17. 16
      ui-ngx/src/assets/locale/locale.constant-ca_ES.json
  18. 16
      ui-ngx/src/assets/locale/locale.constant-cs_CZ.json
  19. 14
      ui-ngx/src/assets/locale/locale.constant-de_DE.json
  20. 12
      ui-ngx/src/assets/locale/locale.constant-el_GR.json
  21. 16
      ui-ngx/src/assets/locale/locale.constant-en_US.json
  22. 16
      ui-ngx/src/assets/locale/locale.constant-es_ES.json
  23. 12
      ui-ngx/src/assets/locale/locale.constant-fa_IR.json
  24. 16
      ui-ngx/src/assets/locale/locale.constant-fr_FR.json
  25. 10
      ui-ngx/src/assets/locale/locale.constant-it_IT.json
  26. 8
      ui-ngx/src/assets/locale/locale.constant-ja_JP.json
  27. 12
      ui-ngx/src/assets/locale/locale.constant-ka_GE.json
  28. 12
      ui-ngx/src/assets/locale/locale.constant-ko_KR.json
  29. 12
      ui-ngx/src/assets/locale/locale.constant-lv_LV.json
  30. 12
      ui-ngx/src/assets/locale/locale.constant-pt_BR.json
  31. 12
      ui-ngx/src/assets/locale/locale.constant-ro_RO.json
  32. 12
      ui-ngx/src/assets/locale/locale.constant-ru_RU.json
  33. 12
      ui-ngx/src/assets/locale/locale.constant-sl_SI.json
  34. 16
      ui-ngx/src/assets/locale/locale.constant-tr_TR.json
  35. 12
      ui-ngx/src/assets/locale/locale.constant-uk_UA.json
  36. 16
      ui-ngx/src/assets/locale/locale.constant-zh_CN.json
  37. 16
      ui-ngx/src/assets/locale/locale.constant-zh_TW.json

3
application/src/main/java/org/thingsboard/server/service/sync/ie/importing/impl/DashboardImportService.java

@ -22,9 +22,6 @@ import org.thingsboard.common.util.JacksonUtil;
import org.thingsboard.server.common.data.Dashboard;
import org.thingsboard.server.common.data.EntityType;
import org.thingsboard.server.common.data.ShortCustomerInfo;
import org.thingsboard.server.common.data.User;
import org.thingsboard.server.common.data.edge.EdgeEventActionType;
import org.thingsboard.server.common.data.exception.ThingsboardException;
import org.thingsboard.server.common.data.id.CustomerId;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.TenantId;

14
application/src/test/java/org/thingsboard/server/controller/BaseEntityQueryControllerTest.java

@ -107,7 +107,7 @@ public abstract class BaseEntityQueryControllerTest extends AbstractControllerTe
Thread.sleep(1);
}
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
EntityCountQuery countQuery = new EntityCountQuery(filter);
@ -115,11 +115,11 @@ public abstract class BaseEntityQueryControllerTest extends AbstractControllerTe
Long count = doPostWithResponse("/api/entitiesQuery/count", countQuery, Long.class);
Assert.assertEquals(97, count.longValue());
filter.setDeviceType("unknown");
filter.setDeviceTypes(List.of("unknown"));
count = doPostWithResponse("/api/entitiesQuery/count", countQuery, Long.class);
Assert.assertEquals(0, count.longValue());
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("Device1");
count = doPostWithResponse("/api/entitiesQuery/count", countQuery, Long.class);
@ -341,7 +341,7 @@ public abstract class BaseEntityQueryControllerTest extends AbstractControllerTe
}
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
EntityDataSortOrder sortOrder = new EntityDataSortOrder(
@ -442,7 +442,7 @@ public abstract class BaseEntityQueryControllerTest extends AbstractControllerTe
Thread.sleep(1000);
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
EntityDataSortOrder sortOrder = new EntityDataSortOrder(
@ -521,7 +521,7 @@ public abstract class BaseEntityQueryControllerTest extends AbstractControllerTe
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
KeyFilter highTemperatureFilter = new KeyFilter();
@ -576,7 +576,7 @@ public abstract class BaseEntityQueryControllerTest extends AbstractControllerTe
@Test
public void givenInvalidEntityDataPageLink_thenReturnError() throws Exception {
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
String invalidSortProperty = "created(Time)";

4
application/src/test/java/org/thingsboard/server/controller/BaseEntityViewControllerTest.java

@ -585,7 +585,7 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
@Test
public void testGetTelemetryWhenEntityViewTimeRangeInsideTimestampRange() throws Exception {
DeviceTypeFilter dtf = new DeviceTypeFilter(testDevice.getType(), testDevice.getName());
DeviceTypeFilter dtf = new DeviceTypeFilter(List.of(testDevice.getType()), testDevice.getName());
List<String> tsKeys = List.of("tsKey1", "tsKey2", "tsKey3");
DeviceCredentials deviceCredentials = doGet("/api/device/" + testDevice.getId().getId() + "/credentials", DeviceCredentials.class);
@ -684,7 +684,7 @@ public abstract class BaseEntityViewControllerTest extends AbstractControllerTes
}
private Set<String> putAttributesAndWait(String stringKV, Set<String> expectedKeySet) throws Exception {
DeviceTypeFilter dtf = new DeviceTypeFilter(testDevice.getType(), testDevice.getName());
DeviceTypeFilter dtf = new DeviceTypeFilter(List.of(testDevice.getType()), testDevice.getName());
List<EntityKey> keysToSubscribe = expectedKeySet.stream()
.map(key -> new EntityKey(EntityKeyType.CLIENT_ATTRIBUTE, key))
.collect(Collectors.toList());

38
application/src/test/java/org/thingsboard/server/controller/BaseWebsocketApiTest.java

@ -16,6 +16,8 @@
package org.thingsboard.server.controller;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ArrayNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.util.concurrent.FutureCallback;
import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.nullness.qual.Nullable;
@ -87,7 +89,7 @@ public abstract class BaseWebsocketApiTest extends AbstractControllerTest {
device.setType("default");
device.setLabel("testLabel" + (int) (Math.random() * 1000));
device = doPost("/api/device", device, Device.class);
dtf = new DeviceTypeFilter(device.getType(), device.getName());
dtf = new DeviceTypeFilter(List.of(device.getType()), device.getName());
}
@After
@ -195,7 +197,7 @@ public abstract class BaseWebsocketApiTest extends AbstractControllerTest {
Assert.assertEquals(1, update1.getCmdId());
Assert.assertEquals(1, update1.getCount());
DeviceTypeFilter dtf2 = new DeviceTypeFilter("non-existing-device-type", "D");
DeviceTypeFilter dtf2 = new DeviceTypeFilter(List.of("non-existing-device-type"), "D");
EntityCountQuery edq2 = new EntityCountQuery(dtf2, Collections.emptyList());
EntityCountCmd cmd2 = new EntityCountCmd(2, edq2);
@ -214,7 +216,7 @@ public abstract class BaseWebsocketApiTest extends AbstractControllerTest {
highTemperatureFilter.setPredicate(predicate);
highTemperatureFilter.setValueType(EntityKeyValueType.NUMERIC);
DeviceTypeFilter dtf3 = new DeviceTypeFilter("default", "D");
DeviceTypeFilter dtf3 = new DeviceTypeFilter(List.of("default"), "D");
EntityCountQuery edq3 = new EntityCountQuery(dtf3, Collections.singletonList(highTemperatureFilter));
EntityCountCmd cmd3 = new EntityCountCmd(3, edq3);
getWsClient().send(cmd3);
@ -231,7 +233,7 @@ public abstract class BaseWebsocketApiTest extends AbstractControllerTest {
highTemperatureFilter2.setPredicate(predicate2);
highTemperatureFilter2.setValueType(EntityKeyValueType.NUMERIC);
DeviceTypeFilter dtf4 = new DeviceTypeFilter("default", "D");
DeviceTypeFilter dtf4 = new DeviceTypeFilter(List.of("default"), "D");
EntityCountQuery edq4 = new EntityCountQuery(dtf4, Collections.singletonList(highTemperatureFilter2));
EntityCountCmd cmd4 = new EntityCountCmd(4, edq4);
@ -637,6 +639,34 @@ public abstract class BaseWebsocketApiTest extends AbstractControllerTest {
assertThat(update.get("data").get("attr").get(0).get(1).asText()).isEqualTo(expectedAttrValue);
}
@Test
public void testEntityCountCmd_filterTypeSingularCompatibilityTest() {
ObjectNode oldFormatDeviceTypeFilterSingular = JacksonUtil.OBJECT_MAPPER.createObjectNode();
oldFormatDeviceTypeFilterSingular.put("type", "deviceType");
oldFormatDeviceTypeFilterSingular.put("deviceType", "default");
oldFormatDeviceTypeFilterSingular.put("deviceNameFilter", "Device");
ObjectNode query = JacksonUtil.OBJECT_MAPPER.createObjectNode();
query.set("entityFilter", oldFormatDeviceTypeFilterSingular);
ObjectNode entityCountCmd = JacksonUtil.OBJECT_MAPPER.createObjectNode();
entityCountCmd.put("cmdId", 1);
entityCountCmd.set("query", query);
ArrayNode entityCountCmds = JacksonUtil.OBJECT_MAPPER.createArrayNode();
entityCountCmds.add(entityCountCmd);
ObjectNode wrapperNode = JacksonUtil.OBJECT_MAPPER.createObjectNode();
wrapperNode.set("entityCountCmds", entityCountCmds);
getWsClient().send(JacksonUtil.toString(wrapperNode));
EntityCountUpdate update = getWsClient().parseCountReply(getWsClient().waitForReply());
Assert.assertEquals(1, update.getCmdId());
Assert.assertEquals(1, update.getCount());
}
private void sendTelemetry(Device device, List<TsKvEntry> tsData) throws InterruptedException {
CountDownLatch latch = new CountDownLatch(1);
tsService.saveAndNotify(device.getTenantId(), null, device.getId(), tsData, 0, new FutureCallback<Void>() {

2
application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv3/attributes/AbstractMqttAttributesIntegrationTest.java

@ -370,7 +370,7 @@ public abstract class AbstractMqttAttributesIntegrationTest extends AbstractMqtt
protected void processProtoTestRequestAttributesValuesFromTheServer(String attrPubTopic, String attrSubTopic, String attrReqTopicPrefix) throws Exception {
MqttTestClient client = new MqttTestClient();
client.connectAndWait(accessToken);
DeviceTypeFilter dtf = new DeviceTypeFilter(savedDevice.getType(), savedDevice.getName());
DeviceTypeFilter dtf = new DeviceTypeFilter(List.of(savedDevice.getType()), savedDevice.getName());
String clientKeysStr = "clientStr,clientBool,clientDbl,clientLong,clientJson";
String sharedKeysStr = "sharedStr,sharedBool,sharedDbl,sharedLong,sharedJson";
List<String> clientKeysList = List.of(clientKeysStr.split(","));

32
common/data/src/main/java/org/thingsboard/server/common/data/query/AssetTypeFilter.java

@ -15,18 +15,38 @@
*/
package org.thingsboard.server.common.data.query;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.util.CollectionUtils;
@Data
import java.util.Collections;
import java.util.List;
@ToString
@EqualsAndHashCode
@Setter
public class AssetTypeFilter implements EntityFilter {
/**
* Replaced by {@link AssetTypeFilter#getAssetTypes()} instead.
*/
@Deprecated(since = "3.5", forRemoval = true)
private String assetType;
private List<String> assetTypes;
public List<String> getAssetTypes() {
return !CollectionUtils.isEmpty(assetTypes) ? assetTypes : Collections.singletonList(assetType);
}
@Getter
private String assetNameFilter;
@Override
public EntityFilterType getType() {
return EntityFilterType.ASSET_TYPE;
}
private String assetType;
private String assetNameFilter;
}

38
common/data/src/main/java/org/thingsboard/server/common/data/query/DeviceTypeFilter.java

@ -16,21 +16,45 @@
package org.thingsboard.server.common.data.query;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.springframework.util.CollectionUtils;
import java.util.Collections;
import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
@Data
@ToString
@EqualsAndHashCode
@Setter
public class DeviceTypeFilter implements EntityFilter {
@Override
public EntityFilterType getType() {
return EntityFilterType.DEVICE_TYPE;
}
/**
* Replaced by {@link DeviceTypeFilter#getDeviceTypes()} instead.
*/
@Deprecated(since = "3.5", forRemoval = true)
private String deviceType;
private List<String> deviceTypes;
public List<String> getDeviceTypes() {
return !CollectionUtils.isEmpty(deviceTypes) ? deviceTypes : Collections.singletonList(deviceType);
}
@Getter
private String deviceNameFilter;
public DeviceTypeFilter(List<String> deviceTypes, String deviceNameFilter) {
this.deviceTypes = deviceTypes;
this.deviceNameFilter = deviceNameFilter;
}
@Override
public EntityFilterType getType() {
return EntityFilterType.DEVICE_TYPE;
}
}

32
common/data/src/main/java/org/thingsboard/server/common/data/query/EdgeTypeFilter.java

@ -15,18 +15,38 @@
*/
package org.thingsboard.server.common.data.query;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.util.CollectionUtils;
@Data
import java.util.Collections;
import java.util.List;
@ToString
@EqualsAndHashCode
@Setter
public class EdgeTypeFilter implements EntityFilter {
/**
* Replaced by {@link EdgeTypeFilter#getEdgeTypes()} instead.
*/
@Deprecated(since = "3.5", forRemoval = true)
private String edgeType;
private List<String> edgeTypes;
public List<String> getEdgeTypes() {
return !CollectionUtils.isEmpty(edgeTypes) ? edgeTypes : Collections.singletonList(edgeType);
}
@Getter
private String edgeNameFilter;
@Override
public EntityFilterType getType() {
return EntityFilterType.EDGE_TYPE;
}
private String edgeType;
private String edgeNameFilter;
}

32
common/data/src/main/java/org/thingsboard/server/common/data/query/EntityViewTypeFilter.java

@ -15,18 +15,38 @@
*/
package org.thingsboard.server.common.data.query;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.util.CollectionUtils;
@Data
import java.util.Collections;
import java.util.List;
@ToString
@EqualsAndHashCode
@Setter
public class EntityViewTypeFilter implements EntityFilter {
/**
* Replaced by {@link EntityViewTypeFilter#getEntityViewTypes()} instead.
*/
@Deprecated(since = "3.5", forRemoval = true)
private String entityViewType;
private List<String> entityViewTypes;
public List<String> getEntityViewTypes() {
return !CollectionUtils.isEmpty(entityViewTypes) ? entityViewTypes : Collections.singletonList(entityViewType);
}
@Getter
private String entityViewNameFilter;
@Override
public EntityFilterType getType() {
return EntityFilterType.ENTITY_VIEW_TYPE;
}
private String entityViewType;
private String entityViewNameFilter;
}

27
dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultEntityQueryRepository.java

@ -816,36 +816,39 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository {
}
private String typeQuery(QueryContext ctx, EntityFilter filter) {
String type;
List<String> types;
String name;
switch (filter.getType()) {
case ASSET_TYPE:
type = ((AssetTypeFilter) filter).getAssetType();
types = ((AssetTypeFilter) filter).getAssetTypes();
name = ((AssetTypeFilter) filter).getAssetNameFilter();
break;
case DEVICE_TYPE:
type = ((DeviceTypeFilter) filter).getDeviceType();
types = ((DeviceTypeFilter) filter).getDeviceTypes();
name = ((DeviceTypeFilter) filter).getDeviceNameFilter();
break;
case ENTITY_VIEW_TYPE:
type = ((EntityViewTypeFilter) filter).getEntityViewType();
types = ((EntityViewTypeFilter) filter).getEntityViewTypes();
name = ((EntityViewTypeFilter) filter).getEntityViewNameFilter();
break;
case EDGE_TYPE:
type = ((EdgeTypeFilter) filter).getEdgeType();
types = ((EdgeTypeFilter) filter).getEdgeTypes();
name = ((EdgeTypeFilter) filter).getEdgeNameFilter();
break;
default:
throw new RuntimeException("Not supported!");
}
ctx.addStringParameter("entity_filter_type_query_type", type);
ctx.addStringParameter("entity_filter_type_query_name", name);
if (name.startsWith("%") || name.endsWith("%")) {
return "e.type = :entity_filter_type_query_type and lower(e.search_text) like lower(:entity_filter_type_query_name)";
String typesFilter = "e.type in (:entity_filter_type_query_types)";
ctx.addStringListParameter("entity_filter_type_query_types", types);
if (!StringUtils.isEmpty(name)) {
ctx.addStringParameter("entity_filter_type_query_name", name);
if (name.startsWith("%") || name.endsWith("%")) {
return typesFilter + " and lower(e.search_text) like lower(:entity_filter_type_query_name)";
}
return typesFilter + " and lower(e.search_text) like lower(concat(:entity_filter_type_query_name, '%%'))";
} else {
return typesFilter;
}
return "e.type = :entity_filter_type_query_type and lower(e.search_text) like lower(concat(:entity_filter_type_query_name, '%%'))";
}
public static EntityType resolveEntityType(EntityFilter entityFilter) {

28
dao/src/test/java/org/thingsboard/server/dao/service/BaseEntityServiceTest.java

@ -131,7 +131,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
}
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
EntityCountQuery countQuery = new EntityCountQuery(filter);
@ -139,11 +139,11 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
long count = entityService.countEntitiesByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), countQuery);
Assert.assertEquals(97, count);
filter.setDeviceType("unknown");
filter.setDeviceTypes(List.of("unknown"));
count = entityService.countEntitiesByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), countQuery);
Assert.assertEquals(0, count);
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("Device1");
count = entityService.countEntitiesByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), countQuery);
Assert.assertEquals(11, count);
@ -235,7 +235,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
}
EdgeTypeFilter filter = new EdgeTypeFilter();
filter.setEdgeType("default");
filter.setEdgeTypes(List.of("default"));
filter.setEdgeNameFilter("");
EntityCountQuery countQuery = new EntityCountQuery(filter);
@ -243,11 +243,11 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
long count = entityService.countEntitiesByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), countQuery);
Assert.assertEquals(97, count);
filter.setEdgeType("unknown");
filter.setEdgeTypes(List.of("unknown"));
count = entityService.countEntitiesByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), countQuery);
Assert.assertEquals(0, count);
filter.setEdgeType("default");
filter.setEdgeTypes(List.of("default"));
filter.setEdgeNameFilter("Edge1");
count = entityService.countEntitiesByQuery(tenantId, new CustomerId(CustomerId.NULL_UUID), countQuery);
Assert.assertEquals(11, count);
@ -813,7 +813,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
}
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
EntityDataSortOrder sortOrder = new EntityDataSortOrder(
@ -1337,7 +1337,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
private EntityDataQuery createDeviceSearchQuery(String deviceField, StringOperation operation, String searchQuery) {
DeviceTypeFilter deviceTypeFilter = new DeviceTypeFilter();
deviceTypeFilter.setDeviceType("default");
deviceTypeFilter.setDeviceTypes(List.of("default"));
deviceTypeFilter.setDeviceNameFilter("");
EntityDataSortOrder sortOrder = new EntityDataSortOrder(
@ -1402,7 +1402,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
Futures.allAsList(attributeFutures).get();
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
EntityDataSortOrder sortOrder = new EntityDataSortOrder(
@ -1502,7 +1502,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
Futures.allAsList(attributeFutures).get();
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
EntityDataSortOrder sortOrder = new EntityDataSortOrder(
@ -1648,7 +1648,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
Futures.allAsList(timeseriesFutures).get();
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
EntityDataSortOrder sortOrder = new EntityDataSortOrder(
@ -1780,7 +1780,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
Futures.allAsList(attributeFutures).get();
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
EntityDataSortOrder sortOrder = new EntityDataSortOrder(
@ -1912,7 +1912,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
}
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
EntityDataSortOrder sortOrder = new EntityDataSortOrder(
@ -2029,7 +2029,7 @@ public abstract class BaseEntityServiceTest extends AbstractServiceTest {
}
DeviceTypeFilter filter = new DeviceTypeFilter();
filter.setDeviceType("default");
filter.setDeviceTypes(List.of("default"));
filter.setDeviceNameFilter("");
EntityDataSortOrder sortOrder = new EntityDataSortOrder(new EntityKey(EntityKeyType.ENTITY_FIELD, "name"), EntityDataSortOrder.Direction.DESC);

41
ui-ngx/src/app/core/services/dashboard-utils.service.ts

@ -604,6 +604,47 @@ export class DashboardUtilsService {
delete entityAlias.entityType;
delete entityAlias.entityFilter;
}
entityAlias = this.validateAndUpdateEntityAliasSingleTypeFilters(entityAlias);
return entityAlias;
}
private validateAndUpdateEntityAliasSingleTypeFilters(entityAlias: EntityAlias): EntityAlias {
if (entityAlias.filter.type === AliasFilterType.deviceType) {
if (entityAlias.filter.deviceType) {
if (!entityAlias.filter.deviceTypes) {
entityAlias.filter.deviceTypes = [];
}
entityAlias.filter.deviceTypes.push(entityAlias.filter.deviceType);
delete entityAlias.filter.deviceType;
}
}
if (entityAlias.filter.type === AliasFilterType.assetType) {
if (entityAlias.filter.assetType) {
if (!entityAlias.filter.assetTypes) {
entityAlias.filter.assetTypes = [];
}
entityAlias.filter.assetTypes.push(entityAlias.filter.assetType);
delete entityAlias.filter.assetType;
}
}
if (entityAlias.filter.type === AliasFilterType.entityViewType) {
if (entityAlias.filter.entityViewType) {
if (!entityAlias.filter.entityViewTypes) {
entityAlias.filter.entityViewTypes = [];
}
entityAlias.filter.entityViewTypes.push(entityAlias.filter.entityViewType);
delete entityAlias.filter.entityViewType;
}
}
if (entityAlias.filter.type === AliasFilterType.edgeType) {
if (entityAlias.filter.edgeType) {
if (!entityAlias.filter.edgeTypes) {
entityAlias.filter.edgeTypes = [];
}
entityAlias.filter.edgeTypes.push(entityAlias.filter.edgeType);
delete entityAlias.filter.edgeType;
}
}
return entityAlias;
}

40
ui-ngx/src/app/modules/home/components/entity/entity-filter-view.component.ts

@ -84,47 +84,63 @@ export class EntityFilterViewComponent implements ControlValueAccessor {
this.filterDisplayValue = this.translate.instant('alias.filter-type-state-entity-description');
break;
case AliasFilterType.assetType:
const assetType = this.filter.assetType;
const assetTypesQuoted = [];
this.filter.assetTypes.forEach((filterAssetType) => {
assetTypesQuoted.push(`'${filterAssetType}'`);
});
const assetTypes = assetTypesQuoted.join(', ');
prefix = this.filter.assetNameFilter;
if (prefix && prefix.length) {
this.filterDisplayValue = this.translate.instant('alias.filter-type-asset-type-and-name-description',
{assetType, prefix});
{assetTypes, prefix});
} else {
this.filterDisplayValue = this.translate.instant('alias.filter-type-asset-type-description',
{assetType});
{assetTypes});
}
break;
case AliasFilterType.deviceType:
const deviceType = this.filter.deviceType;
const deviceTypesQuoted = [];
this.filter.deviceTypes.forEach((filterDeviceType) => {
deviceTypesQuoted.push(`'${filterDeviceType}'`);
});
const deviceTypes = deviceTypesQuoted.join(', ');
prefix = this.filter.deviceNameFilter;
if (prefix && prefix.length) {
this.filterDisplayValue = this.translate.instant('alias.filter-type-device-type-and-name-description',
{deviceType, prefix});
{deviceTypes, prefix});
} else {
this.filterDisplayValue = this.translate.instant('alias.filter-type-device-type-description',
{deviceType});
{deviceTypes});
}
break;
case AliasFilterType.edgeType:
const edgeType = this.filter.edgeType;
const edgeTypesQuoted = [];
this.filter.edgeTypes.forEach((filterEdgeType) => {
edgeTypesQuoted.push(`'${filterEdgeType}'`);
});
const edgeTypes = edgeTypesQuoted.join(', ');
prefix = this.filter.edgeNameFilter;
if (prefix && prefix.length) {
this.filterDisplayValue = this.translate.instant('alias.filter-type-edge-type-and-name-description',
{edgeType, prefix});
{edgeTypes, prefix});
} else {
this.filterDisplayValue = this.translate.instant('alias.filter-type-edge-type-description',
{edgeType});
{edgeTypes});
}
break;
case AliasFilterType.entityViewType:
const entityView = this.filter.entityViewType;
const entityViewTypesQuoted = [];
this.filter.entityViewTypes.forEach((entityViewType) => {
entityViewTypesQuoted.push(`'${entityViewType}'`);
});
const entityViewTypes = entityViewTypesQuoted.join(', ');
prefix = this.filter.entityViewNameFilter;
if (prefix && prefix.length) {
this.filterDisplayValue = this.translate.instant('alias.filter-type-entity-view-type-and-name-description',
{entityView, prefix});
{entityViewTypes, prefix});
} else {
this.filterDisplayValue = this.translate.instant('alias.filter-type-entity-view-type-description',
{entityView});
{entityViewTypes});
}
break;
case AliasFilterType.relationsQuery:

32
ui-ngx/src/app/modules/home/components/entity/entity-filter.component.html

@ -83,10 +83,10 @@
</div>
</ng-template>
<ng-template [ngSwitchCase]="aliasFilterType.assetType">
<tb-entity-subtype-autocomplete required
formControlName="assetType"
[entityType]="entityType.ASSET">
</tb-entity-subtype-autocomplete>
<tb-entity-subtype-list required
[entityType]="entityType.ASSET"
formControlName="assetTypes">
</tb-entity-subtype-list>
<mat-form-field class="mat-block">
<mat-label translate>asset.name-starts-with</mat-label>
<mat-icon class="mat-primary" aria-hidden="false" aria-label="help-icon" matSuffix style="cursor:pointer;"
@ -95,10 +95,10 @@
</mat-form-field>
</ng-template>
<ng-template [ngSwitchCase]="aliasFilterType.deviceType">
<tb-entity-subtype-autocomplete required
formControlName="deviceType"
[entityType]="entityType.DEVICE">
</tb-entity-subtype-autocomplete>
<tb-entity-subtype-list required
[entityType]="entityType.DEVICE"
formControlName="deviceTypes">
</tb-entity-subtype-list>
<mat-form-field class="mat-block">
<mat-label translate>device.name-starts-with</mat-label>
<mat-icon class="mat-primary" aria-hidden="false" aria-label="help-icon" matSuffix style="cursor:pointer;"
@ -107,10 +107,10 @@
</mat-form-field>
</ng-template>
<ng-template [ngSwitchCase]="aliasFilterType.entityViewType">
<tb-entity-subtype-autocomplete required
formControlName="entityViewType"
[entityType]="entityType.ENTITY_VIEW">
</tb-entity-subtype-autocomplete>
<tb-entity-subtype-list required
[entityType]="entityType.ENTITY_VIEW"
formControlName="entityViewTypes">
</tb-entity-subtype-list>
<mat-form-field class="mat-block">
<mat-label translate>entity-view.name-starts-with</mat-label>
<mat-icon class="mat-primary" aria-hidden="false" aria-label="help-icon" matSuffix style="cursor:pointer;"
@ -119,10 +119,10 @@
</mat-form-field>
</ng-template>
<ng-template [ngSwitchCase]="aliasFilterType.edgeType">
<tb-entity-subtype-autocomplete required
formControlName="edgeType"
[entityType]="entityType.EDGE">
</tb-entity-subtype-autocomplete>
<tb-entity-subtype-list required
[entityType]="entityType.EDGE"
formControlName="edgeTypes">
</tb-entity-subtype-list>
<mat-form-field class="mat-block">
<mat-label translate>edge.name-starts-with</mat-label>
<input matInput formControlName="edgeNameFilter">

8
ui-ngx/src/app/modules/home/components/entity/entity-filter.component.ts

@ -136,25 +136,25 @@ export class EntityFilterComponent implements ControlValueAccessor, OnInit {
break;
case AliasFilterType.assetType:
this.filterFormGroup = this.fb.group({
assetType: [filter ? filter.assetType : null, [Validators.required]],
assetTypes: [filter ? filter.assetTypes : null, [Validators.required]],
assetNameFilter: [filter ? filter.assetNameFilter : '', []],
});
break;
case AliasFilterType.deviceType:
this.filterFormGroup = this.fb.group({
deviceType: [filter ? filter.deviceType : null, [Validators.required]],
deviceTypes: [filter ? filter.deviceTypes : null, [Validators.required]],
deviceNameFilter: [filter ? filter.deviceNameFilter : '', []],
});
break;
case AliasFilterType.edgeType:
this.filterFormGroup = this.fb.group({
edgeType: [filter ? filter.edgeType : null, [Validators.required]],
edgeTypes: [filter ? filter.edgeTypes : null, [Validators.required]],
edgeNameFilter: [filter ? filter.edgeNameFilter : '', []],
});
break;
case AliasFilterType.entityViewType:
this.filterFormGroup = this.fb.group({
entityViewType: [filter ? filter.entityViewType : null, [Validators.required]],
entityViewTypes: [filter ? filter.entityViewTypes : null, [Validators.required]],
entityViewNameFilter: [filter ? filter.entityViewNameFilter : '', []],
});
break;

16
ui-ngx/src/app/shared/models/alias.models.ts

@ -86,22 +86,38 @@ export interface StateEntityFilter {
}
export interface AssetTypeFilter {
/**
* @deprecated
*/
assetType?: string;
assetTypes?: string[];
assetNameFilter?: string;
}
export interface DeviceTypeFilter {
/**
* @deprecated
*/
deviceType?: string;
deviceTypes?: string[];
deviceNameFilter?: string;
}
export interface EdgeTypeFilter {
/**
* @deprecated
*/
edgeType?: string;
edgeTypes?: string[];
edgeNameFilter?: string;
}
export interface EntityViewFilter {
/**
* @deprecated
*/
entityViewType?: string;
entityViewTypes?: string[];
entityViewNameFilter?: string;
}

16
ui-ngx/src/assets/locale/locale.constant-ca_ES.json

@ -497,17 +497,17 @@
"filter-type-state-entity-owner": "Propietari de l'entitat des de l'estat del tauler",
"filter-type-state-entity-owner-description": "Propietari de l'entitat presa dels paràmetres d'estat del tauler de control",
"filter-type-asset-type": "Tipus d'actiu",
"filter-type-asset-type-description": "Actius del tipus '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Actius del tipus '{{assetType}}' i el nom del qual comenci per '{{prefix}}'",
"filter-type-asset-type-description": "Actius del tipus '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "Actius del tipus '{{assetTypes}}' i el nom del qual comenci per '{{prefix}}'",
"filter-type-device-type": "Tipus de dispositiu",
"filter-type-device-type-description": "Dispositius de tipus '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Dispositius de tipus '{{deviceType}}' i el nom del qual comenci per '{{prefix}}'",
"filter-type-device-type-description": "Dispositius de tipus '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Dispositius de tipus '{{deviceTypes}}' i el nom del qual comenci per '{{prefix}}'",
"filter-type-entity-view-type": "Tipus de vista d'entitat",
"filter-type-entity-view-type-description": "Vistes d'entitat del tipus '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Vistes d'entitat del tipus '{{entityView}}' i el nom del qual comenci per '{{prefix}}'",
"filter-type-entity-view-type-description": "Vistes d'entitat del tipus '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Vistes d'entitat del tipus '{{entityViewTypes}}' i el nom del qual comenci per '{{prefix}}'",
"filter-type-edge-type": "Tipus de vora",
"filter-type-edge-type-description": "Vores del tipus '{{edgeType}}'",
"filter-type-edge-type-and-name-description": "Vores del tipus '{{edgeType}}' i el nom del qual comenci per '{{prefix}}'",
"filter-type-edge-type-description": "Vores del tipus '{{edgeTypes}}'",
"filter-type-edge-type-and-name-description": "Vores del tipus '{{edgeTypes}}' i el nom del qual comenci per '{{prefix}}'",
"filter-type-relations-query": "Consulta de relacions",
"filter-type-relations-query-description": "{{entities}} que tenen {{relationType}} relació {{direction}} {{rootEntity}}",
"filter-type-edge-search-query": "Consultar cerca de vora",

16
ui-ngx/src/assets/locale/locale.constant-cs_CZ.json

@ -324,17 +324,17 @@
"filter-type-state-entity": "Entita ze stavu dashboardu",
"filter-type-state-entity-description": "Entita převzata z parametrů stavu dashboardu",
"filter-type-asset-type": "Typ aktiva",
"filter-type-asset-type-description": "Aktiva typu '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Aktiva typu '{{assetType}}' s názvem začínajícím '{{prefix}}'",
"filter-type-asset-type-description": "Aktiva typu '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "Aktiva typu '{{assetTypes}}' s názvem začínajícím '{{prefix}}'",
"filter-type-device-type": "Typ zařízení",
"filter-type-device-type-description": "Zařízení typu '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Zařízení typu '{{deviceType}}' s názvem začínajícím '{{prefix}}'",
"filter-type-device-type-description": "Zařízení typu '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Zařízení typu '{{deviceTypes}}' s názvem začínajícím '{{prefix}}'",
"filter-type-entity-view-type": "Typ entitního pohledu",
"filter-type-entity-view-type-description": "Entitní pohledy typu '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Entitní pohledy typu '{{entityView}}' s názvem začínajícím '{{prefix}}'",
"filter-type-entity-view-type-description": "Entitní pohledy typu '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Entitní pohledy typu '{{entityViewTypes}}' s názvem začínajícím '{{prefix}}'",
"filter-type-edge-type": "Typ edge",
"filter-type-edge-type-description": "Edge typu '{{edgeType}}'",
"filter-type-edge-type-and-name-description": "Edge typu '{{edgeType}}' s názvem začínajícím '{{prefix}}'",
"filter-type-edge-type-description": "Edge typu '{{edgeTypes}}'",
"filter-type-edge-type-and-name-description": "Edge typu '{{edgeTypes}}' s názvem začínajícím '{{prefix}}'",
"filter-type-relations-query": "Dotaz na vztahy",
"filter-type-relations-query-description": "{{entities}} se {{relationType}} vztahem {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Dotaz na vyhledání aktiva",

14
ui-ngx/src/assets/locale/locale.constant-de_DE.json

@ -212,16 +212,16 @@
"filter-type-state-entity": "Entität aus dem Dashboard Status",
"filter-type-state-entity-description": "Entität aus den Dashboard Status Parametern",
"filter-type-asset-type": "Objekttyp",
"filter-type-asset-type-description": "Objekte vom Typ '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Objekte vom Typ '{{assetType}}' und Name beginnend mit '{{prefix}}'",
"filter-type-asset-type-description": "Objekte vom Typ '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "Objekte vom Typ '{{assetTypes}}' und Name beginnend mit '{{prefix}}'",
"filter-type-device-type": "Gerätetyp",
"filter-type-device-type-description": "Geräte vom Typ '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Geräte vom Typ '{{deviceType}}' und Name beginnend mit '{{prefix}}'",
"filter-type-device-type-description": "Geräte vom Typ '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Geräte vom Typ '{{deviceTypes}}' und Name beginnend mit '{{prefix}}'",
"filter-type-entity-view-type": "Entitätsansichtstyp",
"filter-type-entity-view-type-description": "Entitätsansichten vom Typ '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Entitätsansichten vom Typ '{{entityView}}' und Name beginnend mit '{{prefix}}'",
"filter-type-entity-view-type-description": "Entitätsansichten vom Typ '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Entitätsansichten vom Typ '{{entityViewTypes}}' und Name beginnend mit '{{prefix}}'",
"filter-type-edge-type": "Randtyp",
"filter-type-edge-type-description": "Rand vom Typ '{{edgeType}}'",
"filter-type-edge-type-description": "Rand vom Typ '{{edgeTypes}}'",
"filter-type-relations-query": "Beziehungsabfrage",
"filter-type-relations-query-description": "{{entities}} mit {{relationType}} Beziehung {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Objektabfrage",

12
ui-ngx/src/assets/locale/locale.constant-el_GR.json

@ -179,14 +179,14 @@
"filter-type-state-entity": "Οντότητα από την κατάσταση του dashboard",
"filter-type-state-entity-description": "Οντότητα που λαμβάνεται από τις παραμέτρους κατάστασης του dashboard",
"filter-type-asset-type": "Τύπος Asset",
"filter-type-asset-type-description": "Assets του τύπου '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Assets του τύπου '{{assetType}}' με όνομα που αρχίζει από '{{prefix}}'",
"filter-type-asset-type-description": "Assets του τύπου '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "Assets του τύπου '{{assetTypes}}' με όνομα που αρχίζει από '{{prefix}}'",
"filter-type-device-type": "Τύπος Συσκευής",
"filter-type-device-type-description": "Συσκευές του τύπου '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Συσκευές του τύπου '{{deviceType}}' με όνομα που αρχίζει από '{{prefix}}'",
"filter-type-device-type-description": "Συσκευές του τύπου '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Συσκευές του τύπου '{{deviceTypes}}' με όνομα που αρχίζει από '{{prefix}}'",
"filter-type-entity-view-type": "Τύπος προβολής Οντοτήτων",
"filter-type-entity-view-type-description": "Τύπος προβολής Οντοτήτων '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Τύπος προβολής Οντοτήτων '{{entityView}}' με όνομα που αρχίζει από '{{prefix}}'",
"filter-type-entity-view-type-description": "Τύπος προβολής Οντοτήτων '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Τύπος προβολής Οντοτήτων '{{entityViewTypes}}' με όνομα που αρχίζει από '{{prefix}}'",
"filter-type-relations-query": "Ερώτημα Σχέσεων",
"filter-type-relations-query-description": "{{entities}} που έχουν σχέση {{relationType}} {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Ερώτημα αναζήτησης Asset",

16
ui-ngx/src/assets/locale/locale.constant-en_US.json

@ -534,17 +534,17 @@
"filter-type-state-entity": "Entity from dashboard state",
"filter-type-state-entity-description": "Entity taken from dashboard state parameters",
"filter-type-asset-type": "Asset type",
"filter-type-asset-type-description": "Assets of type '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Assets of type '{{assetType}}' and with name starting with '{{prefix}}'",
"filter-type-asset-type-description": "Assets of type '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "Assets of type '{{assetTypes}}' and with name starting with '{{prefix}}'",
"filter-type-device-type": "Device type",
"filter-type-device-type-description": "Devices of type '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Devices of type '{{deviceType}}' and with name starting with '{{prefix}}'",
"filter-type-device-type-description": "Devices of type '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Devices of types '{{deviceTypes}}' and with name starting with '{{prefix}}'",
"filter-type-entity-view-type": "Entity View type",
"filter-type-entity-view-type-description": "Entity Views of type '{{entityViewType}}'",
"filter-type-entity-view-type-and-name-description": "Entity Views of type '{{entityViewType}}' and with name starting with '{{prefix}}'",
"filter-type-entity-view-type-description": "Entity Views of type '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Entity Views of type '{{entityViewTypes}}' and with name starting with '{{prefix}}'",
"filter-type-edge-type": "Edge type",
"filter-type-edge-type-description": "Edges of type '{{edgeType}}'",
"filter-type-edge-type-and-name-description": "Edges of type '{{edgeType}}' and with name starting with '{{prefix}}'",
"filter-type-edge-type-description": "Edges of type '{{edgeTypes}}'",
"filter-type-edge-type-and-name-description": "Edges of type '{{edgeTypes}}' and with name starting with '{{prefix}}'",
"filter-type-relations-query": "Relations query",
"filter-type-relations-query-description": "{{entities}} that have {{relationType}} relation {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Asset search query",

16
ui-ngx/src/assets/locale/locale.constant-es_ES.json

@ -465,17 +465,17 @@
"filter-type-state-entity": "Entidad desde estado de panel",
"filter-type-state-entity-description": "Entidad tomada de los parámetros de panel",
"filter-type-asset-type": "Tipo de activo",
"filter-type-asset-type-description": "Activos del tipo '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Activos del tipo '{{assetType}}' y cuyo nombre comience por '{{prefix}}'",
"filter-type-asset-type-description": "Activos del tipo '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "Activos del tipo '{{assetTypes}}' y cuyo nombre comience por '{{prefix}}'",
"filter-type-device-type": "Tipo de dispositivo",
"filter-type-device-type-description": "Dispositivos de tipo '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Dispositivos de tipo '{{deviceType}}' y cuyo nombre comience por '{{prefix}}'",
"filter-type-device-type-description": "Dispositivos de tipo '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Dispositivos de tipo '{{deviceTypes}}' y cuyo nombre comience por '{{prefix}}'",
"filter-type-entity-view-type": "Tipo de vista de entidad",
"filter-type-entity-view-type-description": "Vistas de entidad del tipo '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Vistas de entidad del tipo '{{entityView}}' y cuyo nombre comience por '{{prefix}}'",
"filter-type-entity-view-type-description": "Vistas de entidad del tipo '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Vistas de entidad del tipo '{{entityViewTypes}}' y cuyo nombre comience por '{{prefix}}'",
"filter-type-edge-type": "Tipo de borde",
"filter-type-edge-type-description": "Bordes del tipo '{{edgeType}}'",
"filter-type-edge-type-and-name-description": "Vistas de entidad del tipo '{{entityViewType}}' y cuyo nombre comience por '{{prefix}}'",
"filter-type-edge-type-description": "Bordes del tipo '{{edgeTypes}}'",
"filter-type-edge-type-and-name-description": "Vistas de entidad del tipo '{{edgeTypes}}' y cuyo nombre comience por '{{prefix}}'",
"filter-type-relations-query": "Consulta de relaciones",
"filter-type-relations-query-description": "{{entities}} que tienen {{relationType}} relación {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Búsqueda de activos",

12
ui-ngx/src/assets/locale/locale.constant-fa_IR.json

@ -154,14 +154,14 @@
"filter-type-state-entity": "موجودي از وضعيت داشبورد",
"filter-type-state-entity-description": "پارامترهاي موجودي گرفته شده از وضعيت داشبورد",
"filter-type-asset-type": "نوع دارايي",
"filter-type-asset-type-description": "'{{assetType}}' دارايي هاي نوع",
"filter-type-asset-type-and-name-description": ".شروع مي شود '{{prefix}}' که نامشان با '{{assetType}}' دارايي هاي نوع",
"filter-type-asset-type-description": "'{{assetTypes}}' دارايي هاي نوع",
"filter-type-asset-type-and-name-description": ".شروع مي شود '{{prefix}}' که نامشان با '{{assetTypes}}' دارايي هاي نوع",
"filter-type-device-type": "نوع دستگاه",
"filter-type-device-type-description": "'{{deviceType}}' دستگاه هاي نوع",
"filter-type-device-type-and-name-description": ".شروع مي شود '{{prefix}}' که نامشان با '{{deviceType}}' دستگاه هاي نوع",
"filter-type-device-type-description": "'{{deviceTypes}}' دستگاه هاي نوع",
"filter-type-device-type-and-name-description": ".شروع مي شود '{{prefix}}' که نامشان با '{{deviceTypes}}' دستگاه هاي نوع",
"filter-type-entity-view-type": "نوع نمايش موجودي",
"filter-type-entity-view-type-description": "'{{entityView}}' نمايش هاي موجودي نوع ",
"filter-type-entity-view-type-and-name-description": ".شروع مي شود '{{prefix}}' که نامشان با '{{entityView}}' نمايش هاي موجودي نوع",
"filter-type-entity-view-type-description": "'{{entityViewTypes}}' نمايش هاي موجودي نوع ",
"filter-type-entity-view-type-and-name-description": ".شروع مي شود '{{prefix}}' که نامشان با '{{entityViewTypes}}' نمايش هاي موجودي نوع",
"filter-type-relations-query": "پرس و جو درمورد ارتباطات",
"filter-type-relations-query-description": ". دارند {{direction}} {{rootEntity}} را {{relationType}} که ارتباط {{entities}}",
"filter-type-asset-search-query": "پرس و جو درمورد جستجوي دارايي",

16
ui-ngx/src/assets/locale/locale.constant-fr_FR.json

@ -324,13 +324,13 @@
"filter-type-asset-search-query": "Requête de recherche d'actifs",
"filter-type-asset-search-query-description": "Actifs de types {{assetTypes}} ayant {{relationType}} relation {{direction}} {{rootEntity}}",
"filter-type-asset-type": "type d'actif",
"filter-type-asset-type-and-name-description": "Actifs de type '{{assetType}}' et dont le nom commence par '{{prefix}}'",
"filter-type-asset-type-description": "Actifs de type '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Actifs de type '{{assetTypes}}' et dont le nom commence par '{{prefix}}'",
"filter-type-asset-type-description": "Actifs de type '{{assetTypes}}'",
"filter-type-device-search-query": "Requête de recherche de dispositif",
"filter-type-device-search-query-description": "Dispositifs de types {{deviceTypes}} ayant {{relationType}} relation {{direction}} {{rootEntity}}",
"filter-type-device-type": "Type de dispositif",
"filter-type-device-type-and-name-description": "Dispositifs de type '{{deviceType}}' et dont le nom commence par '{{prefix}}'",
"filter-type-device-type-description": "Dispositifs de type '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Dispositifs de type '{{deviceTypes}}' et dont le nom commence par '{{prefix}}'",
"filter-type-device-type-description": "Dispositifs de type '{{deviceTypes}}'",
"filter-type-entity-list": "Liste d'entités",
"filter-type-entity-name": "Nom d'entité",
"filter-type-entity-view-search-query": "Requête de recherche vue d'entité",
@ -338,10 +338,10 @@
"filter-type-edge-search-query": "Requête de recherche de Edge",
"filter-type-edge-search-query-description": "Edges avec types {{edgeTypes}} qui ont {{relationType}} relation {{direction}} {{rootEntity}}",
"filter-type-entity-view-type": "Type de vue d'entité",
"filter-type-entity-view-type-and-name-description": "Vues d'entité de type '{{entityView}}' et dont le nom commence par '{{prefix}}'",
"filter-type-entity-view-type-description": "Vues d'entité de type '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Vues d'entité de type '{{entityViewTypes}}' et dont le nom commence par '{{prefix}}'",
"filter-type-entity-view-type-description": "Vues d'entité de type '{{entityViewTypes}}'",
"filter-type-edge-type": "Types de Edge",
"filter-type-edge-type-description": "Edges de type '{{edgeType}}'",
"filter-type-edge-type-description": "Edges de type '{{edgeTypes}}'",
"filter-type-relations-query": "Interrogation des relations",
"filter-type-relations-query-description": "{{entities}} ayant {{relationType}} relation {{direction}} {{rootEntity}}",
"filter-type-required": "Le type de filtre est requis.",
@ -359,7 +359,7 @@
"state-entity-parameter-name": "Nom du paramétre d'entité d'état",
"unlimited-level": "Niveau illimité",
"filter-type-entity-type": "Type d'entité",
"filter-type-edge-type-and-name-description": "Edges de type '{{edgeType}}' et dont le nom commence par '{{prefix}}'",
"filter-type-edge-type-and-name-description": "Edges de type '{{edgeTypes}}' et dont le nom commence par '{{prefix}}'",
"filter-type-apiUsageState": "État d'utilisation de l'API",
"last-level-relation": "Récupérer uniquement la relation de dernier niveau"
},

10
ui-ngx/src/assets/locale/locale.constant-it_IT.json

@ -177,13 +177,13 @@
"filter-type-state-entity-description": "Entità prelevata dai parametri di stato della dashboard",
"filter-type-asset-type": "Tipo di Asset",
"filter-type-asset-type-description": "Asset di tipo '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Asset di tipo '{{assetType}}' e con un nome che inizia per '{{prefix}}'",
"filter-type-asset-type-and-name-description": "Asset di tipo '{{assetTypes}}' e con un nome che inizia per '{{prefix}}'",
"filter-type-device-type": "Tipo di dispositivo",
"filter-type-device-type-description": "Dispositivi di tipo '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Dispositivi di tipo '{{deviceType}}' e con un nome che inizia per '{{prefix}}'",
"filter-type-device-type-description": "Dispositivi di tipo '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Dispositivi di tipo '{{deviceTypes}}' e con un nome che inizia per '{{prefix}}'",
"filter-type-entity-view-type": "Tipo vista entità",
"filter-type-entity-view-type-description": "Viste entità di tipo '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Viste entità di tipo '{{entityView}}' e con un nome che inizia per '{{prefix}}'",
"filter-type-entity-view-type-description": "Viste entità di tipo '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Viste entità di tipo '{{entityViewTypes}}' e con un nome che inizia per '{{prefix}}'",
"filter-type-relations-query": "Query relazioni",
"filter-type-relations-query-description": "{{entities}} che hanno una relazione {{relationType}} {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Query ricerca asset",

8
ui-ngx/src/assets/locale/locale.constant-ja_JP.json

@ -149,11 +149,11 @@
"filter-type-state-entity": "ダッシュボード状態からのエンティティ",
"filter-type-state-entity-description": "ダッシュボードの状態パラメータから取得されたエンティティ",
"filter-type-asset-type": "資産の種類",
"filter-type-asset-type-description": "'{{assetType}}'",
"filter-type-asset-type-and-name-description": "'{{assetType}}''{{prefix}}'",
"filter-type-asset-type-description": "'{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "'{{assetTypes}}''{{prefix}}'",
"filter-type-device-type": "デバイスタイプ",
"filter-type-device-type-description": "'{{deviceType}}'",
"filter-type-device-type-and-name-description": "'{{deviceType}}''{{prefix}}'",
"filter-type-device-type-description": "'{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "'{{deviceTypes}}''{{prefix}}'",
"filter-type-relations-query": "関係クエリ",
"filter-type-relations-query-description": "{{entities}}{{relationType}}{{direction}}{{rootEntity}}",
"filter-type-asset-search-query": "資産検索クエリ",

12
ui-ngx/src/assets/locale/locale.constant-ka_GE.json

@ -186,14 +186,14 @@
"filter-type-state-entity": "ფილტრის ტიპის სუბიექტი",
"filter-type-state-entity-description": "ფილტრის ტიპის სუბიექტის აღწერა",
"filter-type-asset-type": "აქტივის ტიპი",
"filter-type-asset-type-description": "აქტივის ტიპის აღწერა '{{assetType}}'",
"filter-type-asset-type-and-name-description": "ტიპის ასეტები '{{assetType}}' და სახელები რომლები იწყება '{{prefix}}'",
"filter-type-asset-type-description": "აქტივის ტიპის აღწერა '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "ტიპის ასეტები '{{assetTypes}}' და სახელები რომლები იწყება '{{prefix}}'",
"filter-type-device-type": "მოწყობილობის ტიპი",
"filter-type-device-type-description": "ტიპის მოწყობილობები '{{deviceType}}'",
"filter-type-device-type-and-name-description": "ტიპის მოწყობილობები '{{deviceType}}' რომლების სახელებიც იწყება '{{prefix}}'",
"filter-type-device-type-description": "ტიპის მოწყობილობები '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "ტიპის მოწყობილობები '{{deviceTypes}}' რომლების სახელებიც იწყება '{{prefix}}'",
"filter-type-entity-view-type": "ობიექტის მოწყობილობის ტიპი",
"filter-type-entity-view-type-description": "ობიექტის ტიპის ვარიანტები '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "ობიექტის ტიპის განსაზღვრება '{{entityView}}' და დასახელება რომელიც იწყება '{{prefix}}'",
"filter-type-entity-view-type-description": "ობიექტის ტიპის ვარიანტები '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "ობიექტის ტიპის განსაზღვრება '{{entityViewTypes}}' და დასახელება რომელიც იწყება '{{prefix}}'",
"filter-type-relations-query": "მოთხოვნა რელაციის ტიპის მიხედვით",
"filter-type-relations-query-description": "{{entities}}, არსებული რელაციის ტიპი {{relationType}} {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "ძიება აქტივების მიხედვით",

12
ui-ngx/src/assets/locale/locale.constant-ko_KR.json

@ -302,14 +302,14 @@
"filter-type-state-entity": "대시보드 상태로 부터의 개체",
"filter-type-state-entity-description": "개체 taken from dashboard state parameters",
"filter-type-asset-type": "자산 유형",
"filter-type-asset-type-description": "'{{assetType}}' 유형의 자산",
"filter-type-asset-type-and-name-description": "이름이 '{{prefix}}'로 시작되는 '{{assetType}}' 유형의 자산",
"filter-type-asset-type-description": "'{{assetTypes}}' 유형의 자산",
"filter-type-asset-type-and-name-description": "이름이 '{{prefix}}'로 시작되는 '{{assetTypes}}' 유형의 자산",
"filter-type-device-type": "장치 유형",
"filter-type-device-type-description": "'{{deviceType}}' 유형의 장치",
"filter-type-device-type-and-name-description": "이름이 '{{prefix}}'로 시작되는 '{{assetType}}' 유형의 장치",
"filter-type-device-type-description": "'{{deviceTypes}}' 유형의 장치",
"filter-type-device-type-and-name-description": "이름이 '{{prefix}}'로 시작되는 '{{deviceTypes}}' 유형의 장치",
"filter-type-entity-view-type": "Entity View type",
"filter-type-entity-view-type-description": "Entity Views of type '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Entity Views of type '{{entityView}}' and with name starting with '{{prefix}}'",
"filter-type-entity-view-type-description": "Entity Views of type '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Entity Views of type '{{entityViewTypes}}' and with name starting with '{{prefix}}'",
"filter-type-relations-query": "관계 질의",
"filter-type-relations-query-description": "{{entities}} that have {{relationType}} relation {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "자산 검색 질의",

12
ui-ngx/src/assets/locale/locale.constant-lv_LV.json

@ -155,14 +155,14 @@
"filter-type-state-entity": "Vienība no paneļa stāvokļa",
"filter-type-state-entity-description": "Vienība ņemta no paneļa stāvokļa parametriem",
"filter-type-asset-type": "Aktīvu tips",
"filter-type-asset-type-description": "Aktīvu tipi '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Aktīvu tips '{{assetType}}' un ar vārdu sākot ar '{{prefix}}'",
"filter-type-asset-type-description": "Aktīvu tipi '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "Aktīvu tips '{{assetTypes}}' un ar vārdu sākot ar '{{prefix}}'",
"filter-type-device-type": "Iekārtas tips",
"filter-type-device-type-description": "Iekārtas tipi '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Iekārtas tipi '{{deviceType}}' un ar vārdu sākot ar '{{prefix}}'",
"filter-type-device-type-description": "Iekārtas tipi '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Iekārtas tipi '{{deviceTypes}}' un ar vārdu sākot ar '{{prefix}}'",
"filter-type-entity-view-type": "Vienības skata tips",
"filter-type-entity-view-type-description": "Vienības skats tipam '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Vienības skats tipam '{{entityView}}' un ar vārdu sākot ar '{{prefix}}'",
"filter-type-entity-view-type-description": "Vienības skats tipam '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Vienības skats tipam '{{entityViewTypes}}' un ar vārdu sākot ar '{{prefix}}'",
"filter-type-relations-query": "Attiecību vaicājums",
"filter-type-relations-query-description": "{{entities}} kam ir {{relationType}} attiecība {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Aktīvu meklēšanas vaicājums",

12
ui-ngx/src/assets/locale/locale.constant-pt_BR.json

@ -204,14 +204,14 @@
"filter-type-state-entity": "Entidade do estado do dashboard",
"filter-type-state-entity-description": "Entidade obtida dos parâmetros de estado do dashboard",
"filter-type-asset-type": "Tipo de ativo",
"filter-type-asset-type-description": "Ativos do tipo '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Ativos do tipo '{{assetType}}' cujo nome começa com '{{prefix}}'",
"filter-type-asset-type-description": "Ativos do tipo '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "Ativos do tipo '{{assetTypes}}' cujo nome começa com '{{prefix}}'",
"filter-type-device-type": "Tipo de dispositivo",
"filter-type-device-type-description": "Dispositivos do tipo '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Dispositivos do tipo '{{deviceType}}' cujo nome começa com '{{prefix}}'",
"filter-type-device-type-description": "Dispositivos do tipo '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Dispositivos do tipo '{{deviceTypes}}' cujo nome começa com '{{prefix}}'",
"filter-type-entity-view-type": "Tipo de exibições de entidades",
"filter-type-entity-view-type-description": "Exibições de entidades do tipo '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Exibições de entidades do tipo '{{entityView}}' cujo nome começa com '{{prefix}}'",
"filter-type-entity-view-type-description": "Exibições de entidades do tipo '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Exibições de entidades do tipo '{{entityViewTypes}}' cujo nome começa com '{{prefix}}'",
"filter-type-relations-query": "Consulta de relações",
"filter-type-relations-query-description": "{{entities}} que tem relação de {{relationType}} {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Consulta de pesquisa de ativo",

12
ui-ngx/src/assets/locale/locale.constant-ro_RO.json

@ -183,14 +183,14 @@
"filter-type-state-entity": "Entitate din starea panoului",
"filter-type-state-entity-description": "Entitate luată din parametrii stării panoului",
"filter-type-asset-type": "Tip Proprietate",
"filter-type-asset-type-description": "Proprietăţi de tip: '{{assetType}}'",
"filter-type-asset-type-and-name-description": "proprietăţi de tipul: '{{assetType}}' a căror denumire începe cu: '{{prefix}}'",
"filter-type-asset-type-description": "Proprietăţi de tip: '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "proprietăţi de tipul: '{{assetTypes}}' a căror denumire începe cu: '{{prefix}}'",
"filter-type-device-type": "Tip Dispozitiv",
"filter-type-device-type-description": "Dispozitive tip: '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Dispozitive Tip: '{{deviceType}}' a căror denumire începe cu: '{{prefix}}'",
"filter-type-device-type-description": "Dispozitive tip: '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Dispozitive Tip: '{{deviceTypes}}' a căror denumire începe cu: '{{prefix}}'",
"filter-type-entity-view-type": "Tip entitate definită",
"filter-type-entity-view-type-description": "Tip entități definite: '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Entități definite de tip: '{{entityView}}' a căror denumire începe cu : '{{prefix}}'",
"filter-type-entity-view-type-description": "Tip entități definite: '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Entități definite de tip: '{{entityViewTypes}}' a căror denumire începe cu : '{{prefix}}'",
"filter-type-relations-query": "Relaţii Interogare",
"filter-type-relations-query-description": "{{entities}} care au relații tip {{relationType}} în direcția {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Proprietate Asset search query",

12
ui-ngx/src/assets/locale/locale.constant-ru_RU.json

@ -209,14 +209,14 @@
"filter-type-state-entity": "Объект из состояния дашборда",
"filter-type-state-entity-description": "Объект, полученный из параметров состояния дашборда",
"filter-type-asset-type": "Тип актива",
"filter-type-asset-type-description": "Активы типа '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Активы типа '{{assetType}}' и названием, начинающимся с '{{prefix}}'",
"filter-type-asset-type-description": "Активы типа '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "Активы типа '{{assetTypes}}' и названием, начинающимся с '{{prefix}}'",
"filter-type-device-type": "Тип устройства",
"filter-type-device-type-description": "Устройства типа '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Устройства типа '{{deviceType}}' и названием, начинающимся с '{{prefix}}'",
"filter-type-device-type-description": "Устройства типа '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Устройства типа '{{deviceTypes}}' и названием, начинающимся с '{{prefix}}'",
"filter-type-entity-view-type": "Тип Представления Объекта",
"filter-type-entity-view-type-description": "Представления Объекта типа '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Представления Объекта типа '{{entityView}}' и названием, начинающимся с '{{prefix}}'",
"filter-type-entity-view-type-description": "Представления Объекта типа '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Представления Объекта типа '{{entityViewTypes}}' и названием, начинающимся с '{{prefix}}'",
"filter-type-relations-query": "Запрос по типу отношений",
"filter-type-relations-query-description": "{{entities}}, имеющие отношение типа {{relationType}} {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Поисковый запрос по активам",

12
ui-ngx/src/assets/locale/locale.constant-sl_SI.json

@ -302,14 +302,14 @@
"filter-type-state-entity": "Subjekt iz stanja nadzorne plošče",
"filter-type-state-entity-description": "Entiteta, vzeta iz parametrov stanja nadzorne plošče",
"filter-type-asset-type": "Vrsta sredstva",
"filter-type-asset-type-description": "Sredstva vrste '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Sredstva vrste '{{assetType}}' in z imenom, ki se začne z '{{prefix}}'",
"filter-type-asset-type-description": "Sredstva vrste '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "Sredstva vrste '{{assetTypes}}' in z imenom, ki se začne z '{{prefix}}'",
"filter-type-device-type": "Vrsta naprave",
"filter-type-device-type-description": "Naprave tipa '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Naprave vrste '{{deviceType}}' in z imenom, ki se začne z '{{prefix}}'",
"filter-type-device-type-description": "Naprave tipa '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Naprave vrste '{{deviceTypes}}' in z imenom, ki se začne z '{{prefix}}'",
"filter-type-entity-view-type": "Vrsta pogleda entitete",
"filter-type-entity-view-type-description": "Pogledi entitet vrste '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Pogledi entitet vrste '{{entityView}}' in z imenom, ki se začne z '{{prefix}}'",
"filter-type-entity-view-type-description": "Pogledi entitet vrste '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Pogledi entitet vrste '{{entityViewTypes}}' in z imenom, ki se začne z '{{prefix}}'",
"filter-type-relations-query": "Poizvedba odnosov",
"filter-type-relations-query-description": "{{entities}}, ki imajo {{relationType}} relacijo {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Iskalna poizvedba sredstva",

16
ui-ngx/src/assets/locale/locale.constant-tr_TR.json

@ -324,17 +324,17 @@
"filter-type-state-entity": "Gösterge panelinden öğe",
"filter-type-state-entity-description": "Gösterge paneli durum parametrelerinden alınan öğeler",
"filter-type-asset-type": "Varlık türü",
"filter-type-asset-type-description": "'{{assetType}}' türünde varlıklar",
"filter-type-asset-type-and-name-description": "Adı '{{prefix}}' ile başlayan '{{assetType}}' türünde varlıklar",
"filter-type-asset-type-description": "'{{assetTypes}}' türünde varlıklar",
"filter-type-asset-type-and-name-description": "Adı '{{prefix}}' ile başlayan '{{assetTypes}}' türünde varlıklar",
"filter-type-device-type": "Cihaz türü",
"filter-type-device-type-description": "'{{deviceType}}' türünde cihazlar",
"filter-type-device-type-and-name-description": "Adı '{{prefix}}' ile başlayan'{{deviceType}}' türünde cihazlar",
"filter-type-device-type-description": "'{{deviceTypes}}' türünde cihazlar",
"filter-type-device-type-and-name-description": "Adı '{{prefix}}' ile başlayan'{{deviceTypes}}' türünde cihazlar",
"filter-type-entity-view-type": "Öğe Görünümü türü",
"filter-type-entity-view-type-description": "'{{entityViewType}}' türünde Öğe Görünümleri",
"filter-type-entity-view-type-and-name-description": "'{{entityViewType}}' türünde ve adı '{{prefix}}' ile başlayan Öğe Görünümleri",
"filter-type-entity-view-type-description": "'{{entityViewTypes}}' türünde Öğe Görünümleri",
"filter-type-entity-view-type-and-name-description": "'{{entityViewTypes}}' türünde ve adı '{{prefix}}' ile başlayan Öğe Görünümleri",
"filter-type-edge-type": "Uç tipi",
"filter-type-edge-type-description": "'{{edgeType}}' türünün uçları",
"filter-type-edge-type-and-name-description": "'{{edgeType}}' türü ve adı '{{prefix}}' ile başlayan kenarlar",
"filter-type-edge-type-description": "'{{edgeTypes}}' türünün uçları",
"filter-type-edge-type-and-name-description": "'{{edgeTypes}}' türü ve adı '{{prefix}}' ile başlayan kenarlar",
"filter-type-relations-query": "İlişkiler sorgusu",
"filter-type-relations-query-description": "{{relationType}} türünde ilişkili olan öğeler: {{entities}}. {{direction}}: {{rootEntity}}",
"filter-type-asset-search-query": "Varlık arama sorgusu",

12
ui-ngx/src/assets/locale/locale.constant-uk_UA.json

@ -228,14 +228,14 @@
"filter-type-state-entity": "Сутність з стану панелі пристроїв",
"filter-type-state-entity-description": "Сутність, взята з параметрів стану панелі пристроїв",
"filter-type-asset-type": "Тип активу",
"filter-type-asset-type-description": "Тип активів '{{assetType}}'",
"filter-type-asset-type-and-name-description": "Тип активів '{{assetType}}' і ім'я, що починаються з '{{prefix}}'",
"filter-type-asset-type-description": "Тип активів '{{assetTypes}}'",
"filter-type-asset-type-and-name-description": "Тип активів '{{assetTypes}}' і ім'я, що починаються з '{{prefix}}'",
"filter-type-device-type": "Тип пристрою",
"filter-type-device-type-description": "Тип пристроїв '{{deviceType}}'",
"filter-type-device-type-and-name-description": "Тип пристроїв '{{deviceType}}' і ім'я, що починаються з '{{prefix}}'",
"filter-type-device-type-description": "Тип пристроїв '{{deviceTypes}}'",
"filter-type-device-type-and-name-description": "Тип пристроїв '{{deviceTypes}}' і ім'я, що починаються з '{{prefix}}'",
"filter-type-entity-view-type": "Тип перегляду сутності",
"filter-type-entity-view-type-description": "Перегляд сутності з типом '{{entityView}}'",
"filter-type-entity-view-type-and-name-description": "Перегляд сутності з типом'{{entityView}}' і іменем, що починаються з '{{prefix}}'",
"filter-type-entity-view-type-description": "Перегляд сутності з типом '{{entityViewTypes}}'",
"filter-type-entity-view-type-and-name-description": "Перегляд сутності з типом'{{entityViewTypes}}' і іменем, що починаються з '{{prefix}}'",
"filter-type-relations-query": "Запит відносин",
"filter-type-relations-query-description": "{{entities}}, які мають {{relationType}} відношення {{direction}} {{rootEntity}}",
"filter-type-asset-search-query": "Запит пошуку активу",

16
ui-ngx/src/assets/locale/locale.constant-zh_CN.json

@ -466,17 +466,17 @@
"filter-type-state-entity": "仪表板状态实体",
"filter-type-state-entity-description": "仪表板实体令牌状态参数",
"filter-type-asset-type": "资产类型",
"filter-type-asset-type-description": "类型为 '{{assetType}}' 的资产",
"filter-type-asset-type-and-name-description": "类型为 '{{assetType}}' 且以 '{{prefix}}' 开头的资产",
"filter-type-asset-type-description": "类型为 '{{assetTypes}}' 的资产",
"filter-type-asset-type-and-name-description": "类型为 '{{assetTypes}}' 且以 '{{prefix}}' 开头的资产",
"filter-type-device-type": "设备类型",
"filter-type-device-type-description": "类型为 '{{deviceType}}' 的设备",
"filter-type-device-type-and-name-description": "类型为 '{{deviceType}}' 且以 '{{prefix}}' 开头的设备",
"filter-type-device-type-description": "类型为 '{{deviceTypes}}' 的设备",
"filter-type-device-type-and-name-description": "类型为 '{{deviceTypes}}' 且以 '{{prefix}}' 开头的设备",
"filter-type-entity-view-type": "实体视图类型",
"filter-type-entity-view-type-description": "类型为 '{{entityView}}' 的实体视图",
"filter-type-entity-view-type-and-name-description": "类型为 {{entityView}}' 且以 '{{prefix}}' 开头的实体视图",
"filter-type-entity-view-type-description": "类型为 '{{entityViewTypes}}' 的实体视图",
"filter-type-entity-view-type-and-name-description": "类型为 {{entityViewTypes}}' 且以 '{{prefix}}' 开头的实体视图",
"filter-type-edge-type": "边缘类型",
"filter-type-edge-type-description": "类型为 '{{edgeType}}' 的边缘",
"filter-type-edge-type-and-name-description": "类型为 '{{edgeType}}' 且以 '{{prefix}}' 开头的边缘",
"filter-type-edge-type-description": "类型为 '{{edgeTypes}}' 的边缘",
"filter-type-edge-type-and-name-description": "类型为 '{{edgeTypes}}' 且以 '{{prefix}}' 开头的边缘",
"filter-type-relations-query": "关联查询",
"filter-type-relations-query-description": "具有 {{relationType}} 关联 {{direction}} {{rootEntity}} 的 {{entities}} ",
"filter-type-asset-search-query": "资产搜索查询",

16
ui-ngx/src/assets/locale/locale.constant-zh_TW.json

@ -395,17 +395,17 @@
"filter-type-state-entity": "實體(儀表板狀態)",
"filter-type-state-entity-description": "實體taken(儀表板狀態參數)",
"filter-type-asset-type": "資產類型",
"filter-type-asset-type-description": "類型為 '{{assetType}}' 的資產",
"filter-type-asset-type-and-name-description": "類型為 '{{assetType}}' 且以 '{{prefix}}' 開頭的資產",
"filter-type-asset-type-description": "類型為 '{{assetTypes}}' 的資產",
"filter-type-asset-type-and-name-description": "類型為 '{{assetTypes}}' 且以 '{{prefix}}' 開頭的資產",
"filter-type-device-type": "設備類型",
"filter-type-device-type-description": "類型為 '{{deviceType}}' 的設備",
"filter-type-device-type-and-name-description": "類型為 '{{deviceType}}' 且以 '{{prefix}}' 開頭的設備",
"filter-type-device-type-description": "類型為 '{{deviceTypes}}' 的設備",
"filter-type-device-type-and-name-description": "類型為 '{{deviceTypes}}' 且以 '{{prefix}}' 開頭的設備",
"filter-type-entity-view-type": "實體視圖類型",
"filter-type-entity-view-type-description": "類型為 '{{entityView}}' 的實體視圖",
"filter-type-entity-view-type-and-name-description": "類型為 {{entityView}}' 且以 '{{prefix}}' 開頭的實體視圖",
"filter-type-entity-view-type-description": "類型為 '{{entityViewTypes}}' 的實體視圖",
"filter-type-entity-view-type-and-name-description": "類型為 {{entityViewTypes}}' 且以 '{{prefix}}' 開頭的實體視圖",
"filter-type-edge-type": "邊緣類型",
"filter-type-edge-type-description": " '類型為{{edgeType}}'的邊緣",
"filter-type-edge-type-and-name-description": "類型為 '{{edgeType}}' 且名稱以 '{{prefix}}'開頭的邊緣",
"filter-type-edge-type-description": " '類型為{{edgeTypes}}'的邊緣",
"filter-type-edge-type-and-name-description": "類型為 '{{edgeTypes}}' 且名稱以 '{{prefix}}'開頭的邊緣",
"filter-type-relations-query": "關聯查詢",
"filter-type-relations-query-description": "具有 {{relationType}} 關聯 {{direction}} {{rootEntity}} 的 {{entities}} ",
"filter-type-asset-search-query": "資產搜尋查詢",

Loading…
Cancel
Save