Browse Source

Updated filter types - add possibility to select multiple subtypes

pull/8026/head
Volodymyr Babak 4 years ago
parent
commit
d534fb31e1
  1. 1
      application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java
  2. 100
      application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java
  3. 15
      application/src/test/java/org/thingsboard/server/controller/BaseEntityQueryControllerTest.java
  4. 4
      application/src/test/java/org/thingsboard/server/controller/BaseEntityViewControllerTest.java
  5. 8
      application/src/test/java/org/thingsboard/server/controller/BaseWebsocketApiTest.java
  6. 2
      application/src/test/java/org/thingsboard/server/transport/mqtt/mqttv3/attributes/AbstractMqttAttributesIntegrationTest.java
  7. 4
      common/data/src/main/java/org/thingsboard/server/common/data/query/AssetTypeFilter.java
  8. 4
      common/data/src/main/java/org/thingsboard/server/common/data/query/DeviceTypeFilter.java
  9. 4
      common/data/src/main/java/org/thingsboard/server/common/data/query/EdgeTypeFilter.java
  10. 4
      common/data/src/main/java/org/thingsboard/server/common/data/query/EntityViewTypeFilter.java
  11. 14
      dao/src/main/java/org/thingsboard/server/dao/sql/query/DefaultEntityQueryRepository.java
  12. 28
      dao/src/test/java/org/thingsboard/server/dao/service/BaseEntityServiceTest.java
  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. 8
      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

1
application/src/main/java/org/thingsboard/server/install/ThingsboardInstallService.java

@ -236,6 +236,7 @@ public class ThingsboardInstallService {
case "3.4.3":
log.info("Upgrading ThingsBoard from version 3.4.3 to 3.5.0 ...");
databaseEntitiesUpgradeService.upgradeDatabase("3.4.3");
dataUpdateService.updateData("3.4.3");
log.info("Updating system data...");
systemDataLoaderService.updateSystemWidgets();
break;

100
application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java

@ -16,6 +16,7 @@
package org.thingsboard.server.service.install.update;
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.Futures;
import com.google.common.util.concurrent.ListenableFuture;
@ -30,6 +31,7 @@ import org.thingsboard.rule.engine.flow.TbRuleChainInputNode;
import org.thingsboard.rule.engine.flow.TbRuleChainInputNodeConfiguration;
import org.thingsboard.rule.engine.profile.TbDeviceProfileNode;
import org.thingsboard.rule.engine.profile.TbDeviceProfileNodeConfiguration;
import org.thingsboard.server.common.data.DashboardInfo;
import org.thingsboard.server.common.data.DataConstants;
import org.thingsboard.server.common.data.EntityView;
import org.thingsboard.server.common.data.Tenant;
@ -38,6 +40,7 @@ import org.thingsboard.server.common.data.alarm.Alarm;
import org.thingsboard.server.common.data.alarm.AlarmInfo;
import org.thingsboard.server.common.data.alarm.AlarmQuery;
import org.thingsboard.server.common.data.alarm.AlarmSeverity;
import org.thingsboard.server.common.data.id.DashboardId;
import org.thingsboard.server.common.data.id.EntityViewId;
import org.thingsboard.server.common.data.id.RuleChainId;
import org.thingsboard.server.common.data.id.RuleNodeId;
@ -65,6 +68,7 @@ import org.thingsboard.server.common.data.tenant.profile.TenantProfileQueueConfi
import org.thingsboard.server.dao.DaoUtil;
import org.thingsboard.server.dao.alarm.AlarmDao;
import org.thingsboard.server.dao.audit.AuditLogDao;
import org.thingsboard.server.dao.dashboard.DashboardService;
import org.thingsboard.server.dao.edge.EdgeEventDao;
import org.thingsboard.server.dao.entity.EntityService;
import org.thingsboard.server.dao.entityview.EntityViewService;
@ -110,6 +114,9 @@ public class DefaultDataUpdateService implements DataUpdateService {
@Autowired
private EntityViewService entityViewService;
@Autowired
private DashboardService dashboardService;
@Autowired
private TimeseriesService tsService;
@ -203,6 +210,10 @@ public class DefaultDataUpdateService implements DataUpdateService {
log.info("Skipping edge events migration");
}
break;
case "3.4.3":
log.info("Updating data from version 3.4.3 to 3.5.0 ...");
tenantsDashboardsFiltersUpdater.updateEntities();
break;
default:
throw new RuntimeException("Unable to update data, unsupported fromVersion: " + fromVersion);
}
@ -681,4 +692,93 @@ public class DefaultDataUpdateService implements DataUpdateService {
}
}
private final PaginatedUpdater<String, Tenant> tenantsDashboardsFiltersUpdater =
new PaginatedUpdater<>() {
@Override
protected String getName() {
return "Tenants dashboards filters updater";
}
@Override
protected boolean forceReportTotal() {
return true;
}
@Override
protected PageData<Tenant> findEntities(String region, PageLink pageLink) {
return tenantService.findTenants(pageLink);
}
@Override
protected void updateEntity(Tenant tenant) {
updateTenantDashboardsFilters(tenant.getId());
}
};
private void updateTenantDashboardsFilters(TenantId tenantId) {
PageLink pageLink = new PageLink(100);
PageData<DashboardInfo> pageData = dashboardService.findDashboardsByTenantId(tenantId, pageLink);
boolean hasNext = true;
while (hasNext) {
List<ListenableFuture<List<Void>>> updateFutures = new ArrayList<>();
for (DashboardInfo dashboardInfo : pageData.getData()) {
updateFutures.add(updateDashboardFilters(tenantId, dashboardInfo));
}
try {
Futures.allAsList(updateFutures).get();
} catch (InterruptedException | ExecutionException e) {
log.error("Failed to update dashboards filters", e);
}
if (pageData.hasNext()) {
pageLink = pageLink.nextPageLink();
pageData = dashboardService.findDashboardsByTenantId(tenantId, pageLink);
} else {
hasNext = false;
}
}
}
private ListenableFuture<List<Void>> updateDashboardFilters(TenantId tenantId, DashboardInfo dashboardInfo) {
DashboardId dashboardId = dashboardInfo.getId();
return Futures.transform(dashboardService.findDashboardByIdAsync(tenantId, dashboardId), dashboard -> {
if (dashboard == null || dashboard.getConfiguration() == null) {
return null;
}
try {
JsonNode configuration = dashboard.getConfiguration();
JsonNode entityAliases = configuration.get("entityAliases");
if (entityAliases == null) {
return null;
}
for (JsonNode entityAlias : entityAliases) {
JsonNode filter = entityAlias.get("filter");
updateFilterIfRequired(filter, "assetType", "assetType", "assetTypes");
updateFilterIfRequired(filter, "deviceType", "deviceType", "deviceTypes");
updateFilterIfRequired(filter, "entityViewType", "entityViewType", "entityViewTypes");
updateFilterIfRequired(filter, "edgeType", "edgeType", "edgeTypes");
}
dashboardService.saveDashboard(dashboard);
} catch (Exception e) {
log.warn("Failed to update dashboard filters. Dashboard {} ", dashboard, e);
}
return null;
}, MoreExecutors.directExecutor());
}
private static void updateFilterIfRequired(JsonNode filter, String filterType, String oldParameterName, String newParameterName) {
if (filter == null || filter.get("type") == null) {
return;
}
if (filterType.equals(filter.get("type").asText())) {
if (filter.get(oldParameterName) != null) {
ArrayNode arrayNode = JacksonUtil.OBJECT_MAPPER.createArrayNode();
arrayNode.add(filter.get(oldParameterName).asText());
((ObjectNode) filter).set(newParameterName, arrayNode);
((ObjectNode) filter).remove(oldParameterName);
}
}
}
}

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

@ -51,6 +51,7 @@ import org.thingsboard.server.common.data.query.TsValue;
import org.thingsboard.server.common.data.security.Authority;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.TimeUnit;
@ -103,7 +104,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);
@ -111,11 +112,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);
@ -152,7 +153,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(
@ -253,7 +254,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(
@ -332,7 +333,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();
@ -387,7 +388,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

@ -584,7 +584,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);
@ -683,7 +683,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());

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

@ -82,7 +82,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
@ -190,7 +190,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);
@ -209,7 +209,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);
@ -226,7 +226,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);

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

@ -351,7 +351,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(","));

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

@ -17,6 +17,8 @@ package org.thingsboard.server.common.data.query;
import lombok.Data;
import java.util.List;
@Data
public class AssetTypeFilter implements EntityFilter {
@ -25,7 +27,7 @@ public class AssetTypeFilter implements EntityFilter {
return EntityFilterType.ASSET_TYPE;
}
private String assetType;
private List<String> assetTypes;
private String assetNameFilter;

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

@ -19,6 +19,8 @@ import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@AllArgsConstructor
@Data
@ -29,7 +31,7 @@ public class DeviceTypeFilter implements EntityFilter {
return EntityFilterType.DEVICE_TYPE;
}
private String deviceType;
private List<String> deviceTypes;
private String deviceNameFilter;

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

@ -17,6 +17,8 @@ package org.thingsboard.server.common.data.query;
import lombok.Data;
import java.util.List;
@Data
public class EdgeTypeFilter implements EntityFilter {
@ -25,7 +27,7 @@ public class EdgeTypeFilter implements EntityFilter {
return EntityFilterType.EDGE_TYPE;
}
private String edgeType;
private List<String> edgeTypes;
private String edgeNameFilter;

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

@ -17,6 +17,8 @@ package org.thingsboard.server.common.data.query;
import lombok.Data;
import java.util.List;
@Data
public class EntityViewTypeFilter implements EntityFilter {
@ -25,7 +27,7 @@ public class EntityViewTypeFilter implements EntityFilter {
return EntityFilterType.ENTITY_VIEW_TYPE;
}
private String entityViewType;
private List<String> entityViewTypes;
private String entityViewNameFilter;

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

@ -809,31 +809,31 @@ 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.addStringListParameter("entity_filter_type_query_types", types);
ctx.addStringParameter("entity_filter_type_query_name", name);
return "e.type = :entity_filter_type_query_type and lower(e.search_text) like lower(concat(:entity_filter_type_query_name, '%%'))";
return "e.type in (:entity_filter_type_query_types) 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

@ -140,7 +140,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);
@ -148,11 +148,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);
@ -244,7 +244,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);
@ -252,11 +252,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);
@ -822,7 +822,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(
@ -992,7 +992,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(
@ -1057,7 +1057,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(
@ -1157,7 +1157,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(
@ -1303,7 +1303,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(
@ -1435,7 +1435,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(
@ -1567,7 +1567,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(
@ -1684,7 +1684,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);

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;

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

@ -86,22 +86,22 @@ export interface StateEntityFilter {
}
export interface AssetTypeFilter {
assetType?: string;
assetTypes?: string[];
assetNameFilter?: string;
}
export interface DeviceTypeFilter {
deviceType?: string;
deviceTypes?: string[];
deviceNameFilter?: string;
}
export interface EdgeTypeFilter {
edgeType?: string;
edgeTypes?: string[];
edgeNameFilter?: string;
}
export interface EntityViewFilter {
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

@ -489,17 +489,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