Merge branch 'master' of github.com:thingsboard/thingsboard
This commit is contained in:
commit
3d8b2cbbbf
@ -210,7 +210,7 @@ public class DefaultEntityQueryRepository implements EntityQueryRepository {
|
|||||||
entityTableMap.put(EntityType.CUSTOMER, "customer");
|
entityTableMap.put(EntityType.CUSTOMER, "customer");
|
||||||
entityTableMap.put(EntityType.USER, "tb_user");
|
entityTableMap.put(EntityType.USER, "tb_user");
|
||||||
entityTableMap.put(EntityType.TENANT, "tenant");
|
entityTableMap.put(EntityType.TENANT, "tenant");
|
||||||
entityTableMap.put(EntityType.API_USAGE_STATE, "(select aus.id, aus.created_time, aus.tenant_id, '' as name, '' as additional_info from api_usage_state as aus)");
|
entityTableMap.put(EntityType.API_USAGE_STATE, "api_usage_state");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EntityType[] RELATION_QUERY_ENTITY_TYPES = new EntityType[]{
|
public static EntityType[] RELATION_QUERY_ENTITY_TYPES = new EntityType[]{
|
||||||
|
|||||||
@ -80,6 +80,7 @@ public class EntityKeyMapping {
|
|||||||
public static final List<String> labeledEntityFields = Arrays.asList(CREATED_TIME, ENTITY_TYPE, NAME, TYPE, LABEL, ADDITIONAL_INFO);
|
public static final List<String> labeledEntityFields = Arrays.asList(CREATED_TIME, ENTITY_TYPE, NAME, TYPE, LABEL, ADDITIONAL_INFO);
|
||||||
public static final List<String> contactBasedEntityFields = Arrays.asList(CREATED_TIME, ENTITY_TYPE, EMAIL, TITLE, COUNTRY, STATE, CITY, ADDRESS, ADDRESS_2, ZIP, PHONE, ADDITIONAL_INFO);
|
public static final List<String> contactBasedEntityFields = Arrays.asList(CREATED_TIME, ENTITY_TYPE, EMAIL, TITLE, COUNTRY, STATE, CITY, ADDRESS, ADDRESS_2, ZIP, PHONE, ADDITIONAL_INFO);
|
||||||
|
|
||||||
|
public static final Set<String> apiUsageStateEntityFields = Collections.singleton(CREATED_TIME);
|
||||||
public static final Set<String> commonEntityFieldsSet = new HashSet<>(commonEntityFields);
|
public static final Set<String> commonEntityFieldsSet = new HashSet<>(commonEntityFields);
|
||||||
public static final Set<String> relationQueryEntityFieldsSet = new HashSet<>(Arrays.asList(CREATED_TIME, ENTITY_TYPE, NAME, TYPE, LABEL, FIRST_NAME, LAST_NAME, EMAIL, REGION, TITLE, COUNTRY, STATE, CITY, ADDRESS, ADDRESS_2, ZIP, PHONE, ADDITIONAL_INFO));
|
public static final Set<String> relationQueryEntityFieldsSet = new HashSet<>(Arrays.asList(CREATED_TIME, ENTITY_TYPE, NAME, TYPE, LABEL, FIRST_NAME, LAST_NAME, EMAIL, REGION, TITLE, COUNTRY, STATE, CITY, ADDRESS, ADDRESS_2, ZIP, PHONE, ADDITIONAL_INFO));
|
||||||
|
|
||||||
@ -99,6 +100,7 @@ public class EntityKeyMapping {
|
|||||||
allowedEntityFieldMap.put(EntityType.RULE_NODE, new HashSet<>(commonEntityFields));
|
allowedEntityFieldMap.put(EntityType.RULE_NODE, new HashSet<>(commonEntityFields));
|
||||||
allowedEntityFieldMap.put(EntityType.WIDGET_TYPE, new HashSet<>(widgetEntityFields));
|
allowedEntityFieldMap.put(EntityType.WIDGET_TYPE, new HashSet<>(widgetEntityFields));
|
||||||
allowedEntityFieldMap.put(EntityType.WIDGETS_BUNDLE, new HashSet<>(widgetEntityFields));
|
allowedEntityFieldMap.put(EntityType.WIDGETS_BUNDLE, new HashSet<>(widgetEntityFields));
|
||||||
|
allowedEntityFieldMap.put(EntityType.API_USAGE_STATE, apiUsageStateEntityFields);
|
||||||
|
|
||||||
entityFieldColumnMap.put(CREATED_TIME, ModelConstants.CREATED_TIME_PROPERTY);
|
entityFieldColumnMap.put(CREATED_TIME, ModelConstants.CREATED_TIME_PROPERTY);
|
||||||
entityFieldColumnMap.put(ENTITY_TYPE, ModelConstants.ENTITY_TYPE_PROPERTY);
|
entityFieldColumnMap.put(ENTITY_TYPE, ModelConstants.ENTITY_TYPE_PROPERTY);
|
||||||
|
|||||||
@ -17,6 +17,7 @@ package org.thingsboard.server.dao.usagerecord;
|
|||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
import org.thingsboard.server.common.data.ApiFeature;
|
||||||
import org.thingsboard.server.common.data.ApiUsageRecordKey;
|
import org.thingsboard.server.common.data.ApiUsageRecordKey;
|
||||||
import org.thingsboard.server.common.data.ApiUsageState;
|
import org.thingsboard.server.common.data.ApiUsageState;
|
||||||
import org.thingsboard.server.common.data.ApiUsageStateValue;
|
import org.thingsboard.server.common.data.ApiUsageStateValue;
|
||||||
@ -27,6 +28,7 @@ import org.thingsboard.server.common.data.id.ApiUsageStateId;
|
|||||||
import org.thingsboard.server.common.data.id.TenantId;
|
import org.thingsboard.server.common.data.id.TenantId;
|
||||||
import org.thingsboard.server.common.data.kv.BasicTsKvEntry;
|
import org.thingsboard.server.common.data.kv.BasicTsKvEntry;
|
||||||
import org.thingsboard.server.common.data.kv.LongDataEntry;
|
import org.thingsboard.server.common.data.kv.LongDataEntry;
|
||||||
|
import org.thingsboard.server.common.data.kv.StringDataEntry;
|
||||||
import org.thingsboard.server.common.data.kv.TsKvEntry;
|
import org.thingsboard.server.common.data.kv.TsKvEntry;
|
||||||
import org.thingsboard.server.common.data.tenant.profile.TenantProfileConfiguration;
|
import org.thingsboard.server.common.data.tenant.profile.TenantProfileConfiguration;
|
||||||
import org.thingsboard.server.dao.entity.AbstractEntityService;
|
import org.thingsboard.server.dao.entity.AbstractEntityService;
|
||||||
@ -83,7 +85,19 @@ public class ApiUsageStateServiceImpl extends AbstractEntityService implements A
|
|||||||
Tenant tenant = tenantDao.findById(tenantId, tenantId.getId());
|
Tenant tenant = tenantDao.findById(tenantId, tenantId.getId());
|
||||||
TenantProfile tenantProfile = tenantProfileDao.findById(tenantId, tenant.getTenantProfileId().getId());
|
TenantProfile tenantProfile = tenantProfileDao.findById(tenantId, tenant.getTenantProfileId().getId());
|
||||||
TenantProfileConfiguration configuration = tenantProfile.getProfileData().getConfiguration();
|
TenantProfileConfiguration configuration = tenantProfile.getProfileData().getConfiguration();
|
||||||
|
List<TsKvEntry> apiUsageStates = new ArrayList<>();
|
||||||
|
apiUsageStates.add(new BasicTsKvEntry(saved.getCreatedTime(),
|
||||||
|
new StringDataEntry(ApiFeature.TRANSPORT.getApiStateKey(), ApiUsageStateValue.ENABLED.name())));
|
||||||
|
apiUsageStates.add(new BasicTsKvEntry(saved.getCreatedTime(),
|
||||||
|
new StringDataEntry(ApiFeature.DB.getApiStateKey(), ApiUsageStateValue.ENABLED.name())));
|
||||||
|
apiUsageStates.add(new BasicTsKvEntry(saved.getCreatedTime(),
|
||||||
|
new StringDataEntry(ApiFeature.RE.getApiStateKey(), ApiUsageStateValue.ENABLED.name())));
|
||||||
|
apiUsageStates.add(new BasicTsKvEntry(saved.getCreatedTime(),
|
||||||
|
new StringDataEntry(ApiFeature.JS.getApiStateKey(), ApiUsageStateValue.ENABLED.name())));
|
||||||
|
tsService.save(tenantId, saved.getId(), apiUsageStates, 0L);
|
||||||
|
|
||||||
List<TsKvEntry> profileThresholds = new ArrayList<>();
|
List<TsKvEntry> profileThresholds = new ArrayList<>();
|
||||||
|
|
||||||
for (ApiUsageRecordKey key : ApiUsageRecordKey.values()) {
|
for (ApiUsageRecordKey key : ApiUsageRecordKey.values()) {
|
||||||
profileThresholds.add(new BasicTsKvEntry(saved.getCreatedTime(), new LongDataEntry(key.getApiLimitKey(), configuration.getProfileThreshold(key))));
|
profileThresholds.add(new BasicTsKvEntry(saved.getCreatedTime(), new LongDataEntry(key.getApiLimitKey(), configuration.getProfileThreshold(key))));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -422,6 +422,12 @@ export class DashboardUtilsService {
|
|||||||
widgetLayout.row = row;
|
widgetLayout.row = row;
|
||||||
widgetLayout.col = 0;
|
widgetLayout.col = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
widgetLayout.sizeX = Math.floor(widgetLayout.sizeX);
|
||||||
|
widgetLayout.sizeY = Math.floor(widgetLayout.sizeY);
|
||||||
|
widgetLayout.row = Math.floor(widgetLayout.row);
|
||||||
|
widgetLayout.col = Math.floor(widgetLayout.col);
|
||||||
|
|
||||||
layout.widgets[widget.id] = widgetLayout;
|
layout.widgets[widget.id] = widgetLayout;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -47,7 +47,8 @@ export enum EntityType {
|
|||||||
RULE_NODE = 'RULE_NODE',
|
RULE_NODE = 'RULE_NODE',
|
||||||
ENTITY_VIEW = 'ENTITY_VIEW',
|
ENTITY_VIEW = 'ENTITY_VIEW',
|
||||||
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE',
|
WIDGETS_BUNDLE = 'WIDGETS_BUNDLE',
|
||||||
WIDGET_TYPE = 'WIDGET_TYPE'
|
WIDGET_TYPE = 'WIDGET_TYPE',
|
||||||
|
API_USAGE_STATE = 'API_USAGE_STATE'
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum AliasEntityType {
|
export enum AliasEntityType {
|
||||||
@ -238,6 +239,12 @@ export const entityTypeTranslations = new Map<EntityType | AliasEntityType, Enti
|
|||||||
selectedEntities: 'alarm.selected-alarms'
|
selectedEntities: 'alarm.selected-alarms'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
[
|
||||||
|
EntityType.API_USAGE_STATE,
|
||||||
|
{
|
||||||
|
type: 'entity.type-api-usage-state'
|
||||||
|
}
|
||||||
|
],
|
||||||
[
|
[
|
||||||
EntityType.WIDGETS_BUNDLE,
|
EntityType.WIDGETS_BUNDLE,
|
||||||
{
|
{
|
||||||
|
|||||||
@ -1099,7 +1099,8 @@
|
|||||||
"details": "Entity details",
|
"details": "Entity details",
|
||||||
"no-entities-prompt": "No entities found",
|
"no-entities-prompt": "No entities found",
|
||||||
"no-data": "No data to display",
|
"no-data": "No data to display",
|
||||||
"columns-to-display": "Columns to Display"
|
"columns-to-display": "Columns to Display",
|
||||||
|
"type-api-usage-state": "Api Usage State"
|
||||||
},
|
},
|
||||||
"entity-field": {
|
"entity-field": {
|
||||||
"created-time": "Created time",
|
"created-time": "Created time",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user