Merge branch 'rc' into feature/add_show_total_legend_setting_to_latest-chart-widgets

This commit is contained in:
Paolo Cristiani 2025-08-28 19:48:20 +02:00 committed by GitHub
commit 876a672c0a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
12 changed files with 27 additions and 20 deletions

View File

@ -953,7 +953,7 @@ public class EntityQueryControllerTest extends AbstractControllerTest {
});
EntityCountQuery countQuery = new EntityCountQuery(entityTypeFilter);
EntityCountQuery countQuery = new EntityCountQuery(entityTypeFilter, keyFilters);
countByQueryAndCheck(countQuery, 97);
}

View File

@ -18,6 +18,7 @@ package org.thingsboard.server.dao.sql.cf;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.thingsboard.server.common.data.id.CalculatedFieldId;
import org.thingsboard.server.dao.model.sql.CalculatedFieldEntity;
@ -36,7 +37,10 @@ public interface CalculatedFieldRepository extends JpaRepository<CalculatedField
Page<CalculatedFieldEntity> findAllByTenantId(UUID tenantId, Pageable pageable);
Page<CalculatedFieldEntity> findAllByTenantIdAndEntityId(UUID tenantId, UUID entityId, Pageable pageable);
@Query("SELECT cf FROM CalculatedFieldEntity cf WHERE cf.tenantId = :tenantId " +
"AND cf.entityId = :entityId " +
"AND (:textSearch IS NULL OR ilike(cf.name, CONCAT('%', :textSearch, '%')) = true)")
Page<CalculatedFieldEntity> findAllByTenantIdAndEntityId(UUID tenantId, UUID entityId, String textSearch, Pageable pageable);
List<CalculatedFieldEntity> findAllByTenantId(UUID tenantId);

View File

@ -85,7 +85,7 @@ public class JpaCalculatedFieldDao extends JpaAbstractDao<CalculatedFieldEntity,
@Override
public PageData<CalculatedField> findAllByEntityId(TenantId tenantId, EntityId entityId, PageLink pageLink) {
log.debug("Try to find calculated fields by entityId[{}] and pageLink [{}]", entityId, pageLink);
return DaoUtil.toPageData(calculatedFieldRepository.findAllByTenantIdAndEntityId(tenantId.getId(), entityId.getId(), DaoUtil.toPageable(pageLink)));
return DaoUtil.toPageData(calculatedFieldRepository.findAllByTenantIdAndEntityId(tenantId.getId(), entityId.getId(), pageLink.getTextSearch(), DaoUtil.toPageable(pageLink)));
}
@Override

View File

@ -31,7 +31,7 @@ import java.util.concurrent.TimeUnit;
public class AbstractRedisClusterContainer {
static final String NODES = "127.0.0.1:6371,127.0.0.1:6372,127.0.0.1:6373,127.0.0.1:6374,127.0.0.1:6375,127.0.0.1:6376";
static final String IMAGE = "bitnami/valkey-cluster:8.0";
static final String IMAGE = "bitnamilegacy/valkey-cluster:8.0";
static final Map<String,String> ENVS = Map.of(
"VALKEY_CLUSTER_ANNOUNCE_IP", "127.0.0.1",
"VALKEY_CLUSTER_DYNAMIC_IPS", "no",

View File

@ -27,7 +27,7 @@ import java.util.List;
public class AbstractRedisContainer {
@ClassRule(order = 0)
public static GenericContainer redis = new GenericContainer("bitnami/valkey:8.0")
public static GenericContainer redis = new GenericContainer("bitnamilegacy/valkey:8.0")
.withEnv("ALLOW_EMPTY_PASSWORD","yes")
.withLogConsumer(s -> log.warn(((OutputFrame) s).getUtf8String().trim()))
.withExposedPorts(6379);

View File

@ -33,7 +33,7 @@ import static org.assertj.core.api.Assertions.assertThat;
public class RedisJUnit5Test {
@Container
private static final GenericContainer REDIS = new GenericContainer("bitnami/valkey:8.0")
private static final GenericContainer REDIS = new GenericContainer("bitnamilegacy/valkey:8.0")
.withEnv("ALLOW_EMPTY_PASSWORD","yes")
.withLogConsumer(s -> log.error(((OutputFrame) s).getUtf8String().trim()))
.withExposedPorts(6379);

View File

@ -17,7 +17,7 @@
services:
kafka:
restart: always
image: "bitnami/kafka:4.0"
image: "bitnamilegacy/kafka:4.0"
ports:
- "9092:9092"
env_file:

View File

@ -18,7 +18,7 @@ services:
# Valkey cluster
# The latest version of Valkey compatible with ThingsBoard is 8.0
valkey-node-0:
image: bitnami/valkey-cluster:8.0
image: bitnamilegacy/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-0:/bitnami/valkey/data
environment:
@ -26,7 +26,7 @@ services:
- 'VALKEY_NODES=valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5'
valkey-node-1:
image: bitnami/valkey-cluster:8.0
image: bitnamilegacy/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-1:/bitnami/valkey/data
depends_on:
@ -36,7 +36,7 @@ services:
- 'VALKEY_NODES=valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5'
valkey-node-2:
image: bitnami/valkey-cluster:8.0
image: bitnamilegacy/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-2:/bitnami/valkey/data
depends_on:
@ -46,7 +46,7 @@ services:
- 'VALKEY_NODES=valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5'
valkey-node-3:
image: bitnami/valkey-cluster:8.0
image: bitnamilegacy/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-3:/bitnami/valkey/data
depends_on:
@ -56,7 +56,7 @@ services:
- 'VALKEY_NODES=valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5'
valkey-node-4:
image: bitnami/valkey-cluster:8.0
image: bitnamilegacy/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-4:/bitnami/valkey/data
depends_on:
@ -66,7 +66,7 @@ services:
- 'VALKEY_NODES=valkey-node-0 valkey-node-1 valkey-node-2 valkey-node-3 valkey-node-4 valkey-node-5'
valkey-node-5:
image: bitnami/valkey-cluster:8.0
image: bitnamilegacy/valkey-cluster:8.0
volumes:
- ./tb-node/valkey-cluster-data-5:/bitnami/valkey/data
depends_on:

View File

@ -18,7 +18,7 @@ services:
# Valkey sentinel
# The latest version of Valkey compatible with ThingsBoard is 8.0
valkey-primary:
image: 'bitnami/valkey:8.0'
image: 'bitnamilegacy/valkey:8.0'
volumes:
- ./tb-node/valkey-sentinel-data-primary:/bitnami/valkey/data
environment:
@ -26,7 +26,7 @@ services:
- 'VALKEY_PASSWORD=thingsboard'
valkey-replica:
image: 'bitnami/valkey:8.0'
image: 'bitnamilegacy/valkey:8.0'
volumes:
- ./tb-node/valkey-sentinel-data-replica:/bitnami/valkey/data
environment:
@ -38,7 +38,7 @@ services:
- valkey-primary
valkey-sentinel:
image: 'bitnami/valkey-sentinel:8.0'
image: 'bitnamilegacy/valkey-sentinel:8.0'
volumes:
- ./tb-node/valkey-sentinel-data-sentinel:/bitnami/valkey/data
environment:

View File

@ -19,7 +19,7 @@ services:
# The latest version of Valkey compatible with ThingsBoard is 8.0
valkey:
restart: always
image: bitnami/valkey:8.0
image: bitnamilegacy/valkey:8.0
environment:
# ALLOW_EMPTY_PASSWORD is recommended only for development.
ALLOW_EMPTY_PASSWORD: "yes"

View File

@ -19,7 +19,7 @@ services:
# The latest version of Valkey compatible with ThingsBoard is 8.0
valkey:
restart: always
image: bitnami/valkey:8.0
image: bitnamilegacy/valkey:8.0
environment:
# ALLOW_EMPTY_PASSWORD is recommended only for development.
- 'ALLOW_EMPTY_PASSWORD=yes'

View File

@ -79,6 +79,9 @@ export class AiConfigComponent extends RuleNodeConfigurationComponent {
if (!this.aiConfigForm.get('systemPrompt').value) {
delete config.systemPrompt;
}
if (this.aiConfigForm.get('responseFormat.type').value !== ResponseFormat.JSON_SCHEMA) {
delete config.responseFormat.schema;
}
return deepTrim(config);
}
@ -88,10 +91,10 @@ export class AiConfigComponent extends RuleNodeConfigurationComponent {
if (this.aiConfigForm.get('responseFormat.type').value !== ResponseFormat.TEXT) {
this.aiConfigForm.get('responseFormat.type').patchValue(ResponseFormat.TEXT, {emitEvent: true});
}
this.aiConfigForm.get('responseFormat.type').disable();
this.aiConfigForm.get('responseFormat.type').disable({emitEvent: false});
}
} else {
this.aiConfigForm.get('responseFormat.type').enable();
this.aiConfigForm.get('responseFormat.type').enable({emitEvent: false});
}
}