diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvironments/FeatureOverviewEnvironment/EnvironmentAccordionBody/StrategyDraggableItem/StrategyItem/StrategyExecution/hooks/useCustomStrategyParameters.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvironments/FeatureOverviewEnvironment/EnvironmentAccordionBody/StrategyDraggableItem/StrategyItem/StrategyExecution/hooks/useCustomStrategyParameters.tsx index 0a627cd036..2d7fd503a2 100644 --- a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvironments/FeatureOverviewEnvironment/EnvironmentAccordionBody/StrategyDraggableItem/StrategyItem/StrategyExecution/hooks/useCustomStrategyParameters.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvironments/FeatureOverviewEnvironment/EnvironmentAccordionBody/StrategyDraggableItem/StrategyItem/StrategyExecution/hooks/useCustomStrategyParameters.tsx @@ -15,7 +15,10 @@ import type { import type { IFeatureStrategyPayload } from 'interfaces/strategy'; export const useCustomStrategyParameters = ( - strategy: CreateFeatureStrategySchema | IFeatureStrategyPayload, + strategy: Pick< + CreateFeatureStrategySchema | IFeatureStrategyPayload, + 'parameters' | 'name' + >, strategies: StrategySchema[], ) => { const { parameters } = strategy; diff --git a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvironments/FeatureOverviewEnvironment/EnvironmentAccordionBody/StrategyDraggableItem/StrategyItem/StrategyExecution/hooks/useStrategyParameters.tsx b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvironments/FeatureOverviewEnvironment/EnvironmentAccordionBody/StrategyDraggableItem/StrategyItem/StrategyExecution/hooks/useStrategyParameters.tsx index db1555d200..f867c04a4f 100644 --- a/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvironments/FeatureOverviewEnvironment/EnvironmentAccordionBody/StrategyDraggableItem/StrategyItem/StrategyExecution/hooks/useStrategyParameters.tsx +++ b/frontend/src/component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvironments/FeatureOverviewEnvironment/EnvironmentAccordionBody/StrategyDraggableItem/StrategyItem/StrategyExecution/hooks/useStrategyParameters.tsx @@ -5,7 +5,12 @@ import type { FeatureStrategySchema } from 'openapi'; import { RolloutParameter } from '../RolloutParameter/RolloutParameter'; export const useStrategyParameters = ( - strategy: Partial, + strategy: Partial< + Pick< + FeatureStrategySchema, + 'name' | 'constraints' | 'variants' | 'parameters' + > + >, displayGroupId?: boolean, ) => { const { constraints, variants } = strategy; diff --git a/frontend/src/component/playground/Playground/PlaygroundResultsTable/FeatureResultInfoPopoverCell/FeatureStrategyList/StrategyList/StrategyItem/StrategyExecution/StrategyExecution.tsx b/frontend/src/component/playground/Playground/PlaygroundResultsTable/FeatureResultInfoPopoverCell/FeatureStrategyList/StrategyList/StrategyItem/StrategyExecution/StrategyExecution.tsx index e7f55baf32..f3d1fe2cec 100644 --- a/frontend/src/component/playground/Playground/PlaygroundResultsTable/FeatureResultInfoPopoverCell/FeatureStrategyList/StrategyList/StrategyItem/StrategyExecution/StrategyExecution.tsx +++ b/frontend/src/component/playground/Playground/PlaygroundResultsTable/FeatureResultInfoPopoverCell/FeatureStrategyList/StrategyList/StrategyItem/StrategyExecution/StrategyExecution.tsx @@ -4,35 +4,38 @@ import type { } from 'openapi'; import { ConstraintExecution } from './ConstraintExecution/ConstraintExecution'; import { SegmentExecution } from './SegmentExecution/SegmentExecution'; -import { PlaygroundResultStrategyExecutionParameters } from './StrategyExecutionParameters/StrategyExecutionParameters'; -import { CustomStrategyParams } from './CustomStrategyParams/CustomStrategyParams'; import { formattedStrategyNames } from 'utils/strategyNames'; import { StyledBoxSummary } from './StrategyExecution.styles'; import { Badge } from 'component/common/Badge/Badge'; import { ConstraintsList } from 'component/common/ConstraintsList/ConstraintsList'; import { objectId } from 'utils/objectId'; import type { FC } from 'react'; +import { useStrategyParameters } from 'component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvironments/FeatureOverviewEnvironment/EnvironmentAccordionBody/StrategyDraggableItem/StrategyItem/StrategyExecution/hooks/useStrategyParameters'; +import { useStrategies } from 'hooks/api/getters/useStrategies/useStrategies'; +import { useCustomStrategyParameters } from 'component/feature/FeatureView/FeatureOverview/FeatureOverviewEnvironments/FeatureOverviewEnvironment/EnvironmentAccordionBody/StrategyDraggableItem/StrategyItem/StrategyExecution/hooks/useCustomStrategyParameters'; -interface IStrategyExecutionProps { +type StrategyExecutionProps = { strategyResult: PlaygroundStrategySchema; percentageFill?: string; input?: PlaygroundRequestSchema; -} +}; -export const StrategyExecution: FC = ({ +export const StrategyExecution: FC = ({ strategyResult, input, }) => { const { name, constraints, segments, parameters } = strategyResult; + const params = useStrategyParameters(strategyResult); + + const { strategies } = useStrategies(); + const { isCustomStrategy, customStrategyParameters: customStrategyItems } = + useCustomStrategyParameters(strategyResult, strategies); const hasSegments = Boolean(segments && segments.length > 0); const hasConstraints = Boolean(constraints && constraints?.length > 0); const hasExecutionParameters = name !== 'default' && Object.keys(formattedStrategyNames).includes(name); - const hasCustomStrategyParameters = - Object.keys(parameters).length > 0 && - strategyResult.result.evaluationStatus === 'incomplete'; // Use of custom strategy can be more explicit from the API if (!parameters) { return null; @@ -49,16 +52,8 @@ export const StrategyExecution: FC = ({ /> )) : []), - hasExecutionParameters && ( - - ), - hasCustomStrategyParameters && ( - - ), + hasExecutionParameters && params, + isCustomStrategy && customStrategyItems, name === 'default' && ( The standard strategy is ON for