Browse Source

apply output strategy to entity aggregation cf

pull/14225/head
IrynaMatveieva 7 months ago
parent
commit
f45b03a1b4
  1. 1
      application/src/main/java/org/thingsboard/server/service/cf/ctx/state/aggregation/single/EntityAggregationCalculatedFieldState.java
  2. 5
      application/src/test/java/org/thingsboard/server/cf/EntityAggregationCalculatedFieldTest.java
  3. 8
      common/data/src/test/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/EntityAggregationCalculatedFieldConfigurationTest.java
  4. 6
      ui-ngx/src/app/modules/home/components/calculated-fields/components/entity-aggregation-configuration/entity-aggregation-component.component.ts

1
application/src/main/java/org/thingsboard/server/service/cf/ctx/state/aggregation/single/EntityAggregationCalculatedFieldState.java

@ -105,6 +105,7 @@ public class EntityAggregationCalculatedFieldState extends BaseCalculatedFieldSt
return Futures.immediateFuture(TelemetryCalculatedFieldResult.EMPTY);
}
return Futures.immediateFuture(TelemetryCalculatedFieldResult.builder()
.outputStrategy(output.getStrategy())
.type(output.getType())
.scope(output.getScope())
.result(result)

5
application/src/test/java/org/thingsboard/server/cf/EntityAggregationCalculatedFieldTest.java

@ -29,8 +29,8 @@ import org.thingsboard.server.common.data.cf.CalculatedFieldType;
import org.thingsboard.server.common.data.cf.configuration.Argument;
import org.thingsboard.server.common.data.cf.configuration.ArgumentType;
import org.thingsboard.server.common.data.cf.configuration.Output;
import org.thingsboard.server.common.data.cf.configuration.OutputType;
import org.thingsboard.server.common.data.cf.configuration.ReferencedEntityKey;
import org.thingsboard.server.common.data.cf.configuration.TimeSeriesOutput;
import org.thingsboard.server.common.data.cf.configuration.aggregation.AggFunction;
import org.thingsboard.server.common.data.cf.configuration.aggregation.AggKeyInput;
import org.thingsboard.server.common.data.cf.configuration.aggregation.AggMetric;
@ -209,8 +209,7 @@ public class EntityAggregationCalculatedFieldTest extends AbstractControllerTest
consumption.setDefaultValue(9999L);
aggMetrics.put("consumption", consumption);
Output output = new Output();
output.setType(OutputType.TIME_SERIES);
TimeSeriesOutput output = new TimeSeriesOutput();
output.setDecimalsByDefault(0);
return createAggCf("Consumption per minute", entityId,

8
common/data/src/test/java/org/thingsboard/server/common/data/cf/configuration/aggregation/single/EntityAggregationCalculatedFieldConfigurationTest.java

@ -21,8 +21,8 @@ import org.junit.jupiter.params.provider.ValueSource;
import org.thingsboard.server.common.data.cf.CalculatedFieldType;
import org.thingsboard.server.common.data.cf.configuration.Argument;
import org.thingsboard.server.common.data.cf.configuration.ArgumentType;
import org.thingsboard.server.common.data.cf.configuration.Output;
import org.thingsboard.server.common.data.cf.configuration.ReferencedEntityKey;
import org.thingsboard.server.common.data.cf.configuration.TimeSeriesOutput;
import org.thingsboard.server.common.data.cf.configuration.aggregation.AggFunctionInput;
import org.thingsboard.server.common.data.cf.configuration.aggregation.AggKeyInput;
import org.thingsboard.server.common.data.cf.configuration.aggregation.AggMetric;
@ -74,7 +74,7 @@ public class EntityAggregationCalculatedFieldConfigurationTest {
cfg.setMetrics(Map.of("m", metric));
cfg.setInterval(new HourInterval("Europe/Kiev", null));
cfg.setOutput(new Output());
cfg.setOutput(new TimeSeriesOutput());
assertThatThrownBy(cfg::validate)
.isInstanceOf(IllegalArgumentException.class)
@ -92,7 +92,7 @@ public class EntityAggregationCalculatedFieldConfigurationTest {
cfg.setMetrics(Map.of("m", metric));
cfg.setInterval(new HourInterval("Europe/Kiev", null));
cfg.setOutput(new Output());
cfg.setOutput(new TimeSeriesOutput());
assertThatThrownBy(cfg::validate)
.isInstanceOf(IllegalArgumentException.class)
@ -106,7 +106,7 @@ public class EntityAggregationCalculatedFieldConfigurationTest {
cfg.setArguments(Map.of("k", validArgument(ArgumentType.TS_LATEST)));
cfg.setMetrics(Map.of("m", validMetric()));
cfg.setInterval(null);
cfg.setOutput(new Output());
cfg.setOutput(new TimeSeriesOutput());
assertThatThrownBy(cfg::validate)
.isInstanceOf(IllegalArgumentException.class)

6
ui-ngx/src/app/modules/home/components/calculated-fields/components/entity-aggregation-configuration/entity-aggregation-component.component.ts

@ -32,8 +32,8 @@ import {
CalculatedFieldEntityAggregationConfiguration,
CalculatedFieldOutput,
CalculatedFieldType,
defaultCalculatedFieldOutput,
notEmptyObjectValidator,
OutputType
} from '@shared/models/calculated-field.models';
import { filter, map } from 'rxjs/operators';
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
@ -102,9 +102,7 @@ export class EntityAggregationComponentComponent implements ControlValueAccessor
watermark: this.fb.group({
duration: [HOUR/SECOND, Validators.required],
}),
output: this.fb.control<CalculatedFieldOutput>({
type: OutputType.Timeseries,
}),
output: this.fb.control<CalculatedFieldOutput>(defaultCalculatedFieldOutput),
});
arguments$ = this.entityAggregationConfiguration.get('arguments').valueChanges.pipe(

Loading…
Cancel
Save