Browse Source

Address PR review: restore private visibility, keep @Valid, fix test script dialog

- Restore private on TEST_SCRIPT_EXPRESSION in CalculatedFieldController
- Restore @Valid on deprecated alarms field in DeviceProfileData
- Remove broken type guard in getTestScriptDialog (AlarmRuleDefinition
  DTO has no type field, causing the dialog to never open)
pull/15326/head
Viacheslav Klimov 6 months ago
parent
commit
7ab9b931a7
Failed to extract signature
  1. 16
      application/src/main/java/org/thingsboard/server/controller/CalculatedFieldController.java
  2. 1
      common/data/src/main/java/org/thingsboard/server/common/data/device/profile/DeviceProfileData.java
  3. 62
      ui-ngx/src/app/modules/home/components/alarm-rules/alarm-rules-table-config.ts

16
application/src/main/java/org/thingsboard/server/controller/CalculatedFieldController.java

@ -88,7 +88,7 @@ public class CalculatedFieldController extends BaseController {
public static final String CALCULATED_FIELD_ID = "calculatedFieldId"; public static final String CALCULATED_FIELD_ID = "calculatedFieldId";
static final String TEST_SCRIPT_EXPRESSION = private static final String TEST_SCRIPT_EXPRESSION =
"Execute the Script expression and return the result. The format of request: \n\n" "Execute the Script expression and return the result. The format of request: \n\n"
+ MARKDOWN_CODE_BLOCK_START + MARKDOWN_CODE_BLOCK_START
+ "{\n" + + "{\n" +
@ -150,13 +150,13 @@ public class CalculatedFieldController extends BaseController {
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN')") @PreAuthorize("hasAnyAuthority('TENANT_ADMIN')")
@GetMapping(value = "/{entityType}/{entityId}/calculatedFields", params = {"pageSize", "page"}) @GetMapping(value = "/{entityType}/{entityId}/calculatedFields", params = {"pageSize", "page"})
public PageData<CalculatedField> getCalculatedFieldsByEntityIdV1(@PathVariable("entityType") String entityType, public PageData<CalculatedField> getCalculatedFieldsByEntityIdV1(@PathVariable("entityType") String entityType,
@PathVariable("entityId") String entityIdStr, @PathVariable("entityId") String entityIdStr,
@RequestParam int pageSize, @RequestParam int pageSize,
@RequestParam int page, @RequestParam int page,
@RequestParam(required = false) CalculatedFieldType type, @RequestParam(required = false) CalculatedFieldType type,
@RequestParam(required = false) String textSearch, @RequestParam(required = false) String textSearch,
@RequestParam(required = false) String sortProperty, @RequestParam(required = false) String sortProperty,
@RequestParam(required = false) String sortOrder) throws ThingsboardException { @RequestParam(required = false) String sortOrder) throws ThingsboardException {
PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder); PageLink pageLink = createPageLink(pageSize, page, textSearch, sortProperty, sortOrder);
checkParameter("entityId", entityIdStr); checkParameter("entityId", entityIdStr);
EntityId entityId = EntityIdFactory.getByTypeAndUuid(entityType, entityIdStr); EntityId entityId = EntityIdFactory.getByTypeAndUuid(entityType, entityIdStr);

1
common/data/src/main/java/org/thingsboard/server/common/data/device/profile/DeviceProfileData.java

@ -35,6 +35,7 @@ public class DeviceProfileData implements Serializable {
private DeviceProfileTransportConfiguration transportConfiguration; private DeviceProfileTransportConfiguration transportConfiguration;
@Schema(description = "JSON object of provisioning strategy type per device profile") @Schema(description = "JSON object of provisioning strategy type per device profile")
private DeviceProfileProvisionConfiguration provisionConfiguration; private DeviceProfileProvisionConfiguration provisionConfiguration;
@Valid
@Schema(hidden = true) @Schema(hidden = true)
private List<DeviceProfileAlarm> alarms; private List<DeviceProfileAlarm> alarms;

62
ui-ngx/src/app/modules/home/components/alarm-rules/alarm-rules-table-config.ts

@ -382,40 +382,36 @@ export class AlarmRulesTableConfig extends EntityTableConfig<AlarmRuleTableEntit
} }
getTestScriptDialog(calculatedField: AlarmRuleTableEntity, argumentsObj?: CalculatedFieldEventArguments, openCalculatedFieldEdit = true, expression?: string): Observable<string> { getTestScriptDialog(calculatedField: AlarmRuleTableEntity, argumentsObj?: CalculatedFieldEventArguments, openCalculatedFieldEdit = true, expression?: string): Observable<string> {
if (calculatedField.type === CalculatedFieldType.ALARM) { const resultArguments = Object.keys(calculatedField.configuration.arguments).reduce((acc, key) => {
const resultArguments = Object.keys(calculatedField.configuration.arguments).reduce((acc, key) => { const type = calculatedField.configuration.arguments[key].refEntityKey.type;
const type = calculatedField.configuration.arguments[key].refEntityKey.type; acc[key] = isObject(argumentsObj) && argumentsObj.hasOwnProperty(key)
acc[key] = isObject(argumentsObj) && argumentsObj.hasOwnProperty(key) ? {...argumentsObj[key], type}
? {...argumentsObj[key], type} : type === ArgumentType.Rolling ? {values: [], type} : {value: '', type, ts: new Date().getTime()};
: type === ArgumentType.Rolling ? {values: [], type} : {value: '', type, ts: new Date().getTime()}; return acc;
return acc; }, {});
}, {}); return this.dialog.open<CalculatedFieldScriptTestDialogComponent, CalculatedFieldTestScriptDialogData, string>(CalculatedFieldScriptTestDialogComponent,
return this.dialog.open<CalculatedFieldScriptTestDialogComponent, CalculatedFieldTestScriptDialogData, string>(CalculatedFieldScriptTestDialogComponent, {
{ disableClose: true,
disableClose: true, panelClass: ['tb-dialog', 'tb-fullscreen-dialog', 'tb-fullscreen-dialog-gt-xs'],
panelClass: ['tb-dialog', 'tb-fullscreen-dialog', 'tb-fullscreen-dialog-gt-xs'], data: {
data: { arguments: resultArguments,
arguments: resultArguments, expression,
expression, argumentsEditorCompleter: getCalculatedFieldArgumentsEditorCompleter(calculatedField.configuration.arguments),
argumentsEditorCompleter: getCalculatedFieldArgumentsEditorCompleter(calculatedField.configuration.arguments), argumentsHighlightRules: getCalculatedFieldArgumentsHighlights(calculatedField.configuration.arguments),
argumentsHighlightRules: getCalculatedFieldArgumentsHighlights(calculatedField.configuration.arguments), openCalculatedFieldEdit
openCalculatedFieldEdit }
}).afterClosed()
.pipe(
filter(Boolean),
tap(expression => {
if (openCalculatedFieldEdit) {
this.editCalculatedField(null, {
entityId: this.entityId, ...calculatedField,
configuration: {...calculatedField.configuration, expression} as any
}, true)
} }
}).afterClosed() }),
.pipe( );
filter(Boolean),
tap(expression => {
if (openCalculatedFieldEdit) {
this.editCalculatedField(null, {
entityId: this.entityId, ...calculatedField,
configuration: {...calculatedField.configuration, expression} as any
}, true)
}
}),
);
} else {
return of(null);
}
} }
private openCalculatedField($event: Event, entity: AlarmRuleTableEntity) { private openCalculatedField($event: Event, entity: AlarmRuleTableEntity) {

Loading…
Cancel
Save