diff --git a/api/src/main/java/io/kafbat/ui/config/ReadOnlyModeFilter.java b/api/src/main/java/io/kafbat/ui/config/ReadOnlyModeFilter.java index 81165e988..ac7c6747f 100644 --- a/api/src/main/java/io/kafbat/ui/config/ReadOnlyModeFilter.java +++ b/api/src/main/java/io/kafbat/ui/config/ReadOnlyModeFilter.java @@ -25,7 +25,7 @@ public class ReadOnlyModeFilter implements WebFilter { Pattern.compile("/api/clusters/(?[^/]++)"); private static final Set SAFE_ENDPOINTS = Set.of( - Pattern.compile("/api/clusters/[^/]+/topics/[^/]+/(smartfilters)$") + Pattern.compile("/api/clusters/[^/]+/topics/[^/]+/(smartfilters|analysis)$") ); private final ClustersStorage clustersStorage; diff --git a/api/src/main/java/io/kafbat/ui/model/InternalBrokerConfig.java b/api/src/main/java/io/kafbat/ui/model/InternalBrokerConfig.java index 496c8bfe5..5f87b0487 100644 --- a/api/src/main/java/io/kafbat/ui/model/InternalBrokerConfig.java +++ b/api/src/main/java/io/kafbat/ui/model/InternalBrokerConfig.java @@ -16,12 +16,12 @@ public class InternalBrokerConfig { private final boolean isReadOnly; private final List synonyms; - public static InternalBrokerConfig from(ConfigEntry configEntry) { + public static InternalBrokerConfig from(ConfigEntry configEntry, boolean readOnlyCluster) { InternalBrokerConfig.InternalBrokerConfigBuilder builder = InternalBrokerConfig.builder() .name(configEntry.name()) .value(configEntry.value()) .source(configEntry.source()) - .isReadOnly(configEntry.isReadOnly()) + .isReadOnly(readOnlyCluster || configEntry.isReadOnly()) .isSensitive(configEntry.isSensitive()) .synonyms(configEntry.synonyms()); return builder.build(); diff --git a/api/src/main/java/io/kafbat/ui/service/BrokerService.java b/api/src/main/java/io/kafbat/ui/service/BrokerService.java index fd9c4c8ab..198685b93 100644 --- a/api/src/main/java/io/kafbat/ui/service/BrokerService.java +++ b/api/src/main/java/io/kafbat/ui/service/BrokerService.java @@ -59,7 +59,7 @@ private Flux getBrokersConfig(KafkaCluster cluster, Intege } return loadBrokersConfig(cluster, brokerId) .map(list -> list.stream() - .map(InternalBrokerConfig::from) + .map(configEntry -> InternalBrokerConfig.from(configEntry, cluster.isReadOnly())) .collect(Collectors.toList())) .flatMapMany(Flux::fromIterable); } diff --git a/frontend/src/components/Brokers/Broker/Configs/TableComponents/InputCell/InputCellViewMode.tsx b/frontend/src/components/Brokers/Broker/Configs/TableComponents/InputCell/InputCellViewMode.tsx index 1ddfa2b03..0fd2bad12 100644 --- a/frontend/src/components/Brokers/Broker/Configs/TableComponents/InputCell/InputCellViewMode.tsx +++ b/frontend/src/components/Brokers/Broker/Configs/TableComponents/InputCell/InputCellViewMode.tsx @@ -31,8 +31,10 @@ const InputCellViewMode: FC = ({ ); return ( - - {displayValue} + + + {displayValue} + ` +export const ValueWrapper = styled.div` display: flex; justify-content: space-between; - font-weight: ${({ $isDynamic }) => ($isDynamic ? 600 : 400)}; + font-weight: 400; button { margin: 0 10px; } `; -export const Value = styled.span` +export const Value = styled.span<{ $isDynamic?: boolean }>` line-height: 24px; margin-right: 10px; text-overflow: ellipsis; max-width: 400px; overflow: hidden; white-space: nowrap; + font-weight: ${({ $isDynamic }) => ($isDynamic ? 600 : 400)}; `; export const ButtonsWrapper = styled.div`