diff --git a/front_end/src/app/(main)/questions/[id]/components/forecast_maker/continuous_slider.tsx b/front_end/src/app/(main)/questions/[id]/components/forecast_maker/continuous_slider.tsx index 93ecc71a3b..31a77eff0a 100644 --- a/front_end/src/app/(main)/questions/[id]/components/forecast_maker/continuous_slider.tsx +++ b/front_end/src/app/(main)/questions/[id]/components/forecast_maker/continuous_slider.tsx @@ -92,11 +92,11 @@ const ContinuousSlider: FC = ({ defaultValue={weights[index]} round={true} onChange={(value) => { - const newWeights = normWeights([ + const newWeights = [ ...weights.slice(0, index), value, ...weights.slice(index + 1, forecast.length), - ]); + ]; onChange(forecast, newWeights); }} disabled={disabled} @@ -110,10 +110,10 @@ const ContinuousSlider: FC = ({ ...forecast.slice(0, index), ...forecast.slice(index + 1, forecast.length), ]; - const newWeights = normWeights([ + const newWeights = [ ...weights.slice(0, index), ...weights.slice(index + 1, forecast.length), - ]); + ]; onChange(newForecast, newWeights); }} /> @@ -126,8 +126,4 @@ const ContinuousSlider: FC = ({ ); }; -function normWeights(weights: number[]) { - return weights.map((x) => x / weights.reduce((a, b) => a + b)); -} - export default ContinuousSlider; diff --git a/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_conditional/forecast_maker_conditional_continuous.tsx b/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_conditional/forecast_maker_conditional_continuous.tsx index b502a43895..7913a1ea89 100644 --- a/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_conditional/forecast_maker_conditional_continuous.tsx +++ b/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_conditional/forecast_maker_conditional_continuous.tsx @@ -15,7 +15,6 @@ import { Quartiles, QuestionWithNumericForecasts } from "@/types/question"; import { extractPrevNumericForecastValue, getNumericForecastDataset, - normalizeWeights, } from "@/utils/forecasts"; import { computeQuartilesFromCDF } from "@/utils/math"; @@ -194,7 +193,7 @@ const ForecastMakerConditionalContinuous: FC = ({ ...prevChoice.sliderForecast, { left: 0.4, center: 0.5, right: 0.6 }, ], - weights: normalizeWeights([...prevChoice.weights, 1]), + weights: [...prevChoice.weights, 1], isDirty: true, }; } diff --git a/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_group/forecast_maker_group_continuous.tsx b/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_group/forecast_maker_group_continuous.tsx index 43b75edeb4..f0bd349ec0 100644 --- a/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_group/forecast_maker_group_continuous.tsx +++ b/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_group/forecast_maker_group_continuous.tsx @@ -18,7 +18,6 @@ import { QuestionWithNumericForecasts } from "@/types/question"; import { extractPrevNumericForecastValue, getNumericForecastDataset, - normalizeWeights, } from "@/utils/forecasts"; import { computeQuartilesFromCDF } from "@/utils/math"; import { extractQuestionGroupName, formatResolution } from "@/utils/questions"; @@ -133,7 +132,7 @@ const ForecastMakerGroupContinuous: FC = ({ ...prevChoice.userForecast, { left: 0.4, center: 0.5, right: 0.6 }, ]; - const newWeights = normalizeWeights([...prevChoice.userWeights, 1]); + const newWeights = [...prevChoice.userWeights, 1]; const newUserQuartiles = getUserQuartiles( newUserForecast, newWeights diff --git a/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_question/forecast_maker_continuous.tsx b/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_question/forecast_maker_continuous.tsx index 9e7b769fb8..16a1cc2197 100644 --- a/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_question/forecast_maker_continuous.tsx +++ b/front_end/src/app/(main)/questions/[id]/components/forecast_maker/forecast_maker_question/forecast_maker_continuous.tsx @@ -12,7 +12,6 @@ import { QuestionWithNumericForecasts } from "@/types/question"; import { extractPrevNumericForecastValue, getNumericForecastDataset, - normalizeWeights, } from "@/utils/forecasts"; import { computeQuartilesFromCDF } from "@/utils/math"; @@ -84,7 +83,7 @@ const ForecastMakerContinuous: FC = ({ center: 0.5, }, ]); - setWeights(normalizeWeights([...weights, 1])); + setWeights([...weights, 1]); }; const handlePredictSubmit = async () => { diff --git a/front_end/src/utils/forecasts.ts b/front_end/src/utils/forecasts.ts index a46398cf52..efdf71caaf 100644 --- a/front_end/src/utils/forecasts.ts +++ b/front_end/src/utils/forecasts.ts @@ -94,24 +94,23 @@ export function extractPrevNumericForecastValue(prevForecast: any): { return result; } -export function normalizeWeights(weights: number[]) { - return weights.map((x) => x / weights.reduce((a, b) => a + b)); -} - export function getNumericForecastDataset( forecast: MultiSliderValue[], weights: number[], lowerOpen: boolean, upperOpen: boolean ) { + const normalizedWeights = weights.map( + (x) => x / weights.reduce((a, b) => a + b) + ); const result: { cdf: number[]; pmf: number[] } = forecast .map((x) => binWeightsFromSliders(x.left, x.center, x.right, lowerOpen, upperOpen) ) .map((x, index) => { return { - pmf: math.multiply(x.pmf, weights[index]) as number[], - cdf: math.multiply(x.cdf, weights[index]) as number[], + pmf: math.multiply(x.pmf, normalizedWeights[index]) as number[], + cdf: math.multiply(x.cdf, normalizedWeights[index]) as number[], }; }) .reduce((acc, curr) => {