diff --git a/optuna_dashboard/ts/trialFilter.ts b/tslib/react/src/utils/trialFilter.ts similarity index 81% rename from optuna_dashboard/ts/trialFilter.ts rename to tslib/react/src/utils/trialFilter.ts index 329b42a1..24a34ba8 100644 --- a/optuna_dashboard/ts/trialFilter.ts +++ b/tslib/react/src/utils/trialFilter.ts @@ -1,6 +1,5 @@ import * as Optuna from "@optuna/types" import { useMemo, useState } from "react" -import { SearchSpaceItem, StudyDetail, Trial } from "./types/optuna" type TargetKind = "objective" | "user_attr" | "params" @@ -41,11 +40,11 @@ export class Target { return objectiveNames[objectiveId] } return `Objective ${objectiveId}` - } else if (this.kind === "user_attr") { - return `User Attribute ${this.key}` - } else { - return `Param ${this.key}` } + if (this.kind === "user_attr") { + return `User Attribute ${this.key}` + } + return `Param ${this.key}` } getObjectiveId(): number | null { @@ -55,7 +54,7 @@ export class Target { return this.key as number } - getTargetValue(trial: Trial): number | null { + getTargetValue(trial: Optuna.Trial): number | null { if (!this.validate()) { return null } @@ -73,7 +72,8 @@ export class Target { return null } return value - } else if (this.kind === "user_attr") { + } + if (this.kind === "user_attr") { const attr = trial.user_attrs.find((attr) => attr.key === this.key) if (attr === undefined) { return null @@ -83,7 +83,8 @@ export class Target { return null } return value - } else if (this.kind === "params") { + } + if (this.kind === "params") { const param = trial.params.find((p) => p.name === this.key) if (param === undefined) { return null @@ -95,10 +96,10 @@ export class Target { } const filterTrials = ( - study: StudyDetail | null, + study: Optuna.Study | null, targets: Target[], filterPruned: boolean -): Trial[] => { +): Optuna.Trial[] => { if (study === null) { return [] } @@ -114,37 +115,39 @@ const filterTrials = ( } export const useFilteredTrials = ( - study: StudyDetail | null, + study: Optuna.Study | null, targets: Target[], filterPruned: boolean -): Trial[] => - useMemo(() => { +): Optuna.Trial[] => + // biome-ignore lint/correctness/useExhaustiveDependencies: + useMemo(() => { return filterTrials(study, targets, filterPruned) }, [study?.trials, targets, filterPruned]) export const useFilteredTrialsFromStudies = ( - studies: StudyDetail[], + studies: Optuna.Study[], targets: Target[], filterPruned: boolean -): Trial[][] => - useMemo(() => { +): Optuna.Trial[][] => + useMemo(() => { return studies.map((s) => filterTrials(s, targets, filterPruned)) }, [studies, targets, filterPruned]) export const useObjectiveTargets = ( - study: StudyDetail | null + study: Optuna.Study | null ): [Target[], Target, (ident: string) => void] => { const defaultTarget = new Target("objective", 0) const [selected, setTargetIdent] = useState( defaultTarget.identifier() ) + // biome-ignore lint/correctness/useExhaustiveDependencies: const targetList = useMemo(() => { if (study !== null) { - return study.directions.map((v, i) => new Target("objective", i)) - } else { - return [defaultTarget] + return study.directions.map((_v, i) => new Target("objective", i)) } + return [defaultTarget] }, [study?.directions]) + // biome-ignore lint/correctness/useExhaustiveDependencies: const selectedTarget = useMemo( () => targetList.find((t) => t.identifier() === selected) || defaultTarget, [targetList, selected] @@ -153,9 +156,10 @@ export const useObjectiveTargets = ( } export const useParamTargets = ( - searchSpace: SearchSpaceItem[] + searchSpace: Optuna.SearchSpaceItem[] ): [Target[], Target | null, (ident: string) => void] => { const [selected, setTargetIdent] = useState("") + // biome-ignore lint/correctness/useExhaustiveDependencies: const targetList = useMemo(() => { const targets = searchSpace.map((s) => new Target("params", s.name)) if (selected === "" && targets.length > 0) @@ -170,24 +174,25 @@ export const useParamTargets = ( } export const useObjectiveAndUserAttrTargets = ( - study: StudyDetail | null + study: Optuna.Study | null ): [Target[], Target, (ident: string) => void] => { const defaultTarget = new Target("objective", 0) const [selected, setTargetIdent] = useState( defaultTarget.identifier() ) + // biome-ignore lint/correctness/useExhaustiveDependencies: const targetList = useMemo(() => { if (study !== null) { return [ - ...study.directions.map((v, i) => new Target("objective", i)), + ...study.directions.map((_v, i) => new Target("objective", i)), ...study.union_user_attrs .filter((attr) => attr.sortable) .map((attr) => new Target("user_attr", attr.key)), ] - } else { - return [defaultTarget] } + return [defaultTarget] }, [study?.directions, study?.union_user_attrs]) + // biome-ignore lint/correctness/useExhaustiveDependencies: const selectedTarget = useMemo( () => targetList.find((t) => t.identifier() === selected) || defaultTarget, [targetList, selected] @@ -196,7 +201,7 @@ export const useObjectiveAndUserAttrTargets = ( } export const useObjectiveAndUserAttrTargetsFromStudies = ( - studies: StudyDetail[] + studies: Optuna.Study[] ): [Target[], Target, (ident: string) => void] => { const defaultTarget = new Target("objective", 0) const [selected, setTargetIdent] = useState( @@ -223,6 +228,7 @@ export const useObjectiveAndUserAttrTargetsFromStudies = ( ) } + // biome-ignore lint/correctness/useExhaustiveDependencies: const attrTargets = useMemo(() => { if (studies.length === 0) { return [] @@ -235,6 +241,7 @@ export const useObjectiveAndUserAttrTargetsFromStudies = ( .map((attr) => new Target("user_attr", attr.key)) }, [studies]) + // biome-ignore lint/correctness/useExhaustiveDependencies: const targetList = useMemo(() => { if (studies !== null) { return [ @@ -244,11 +251,11 @@ export const useObjectiveAndUserAttrTargetsFromStudies = ( ), ...attrTargets, ] - } else { - return [defaultTarget] } + return [defaultTarget] }, [minDirections, attrTargets]) + // biome-ignore lint/correctness/useExhaustiveDependencies: const selectedTarget = useMemo( () => targetList.find((t) => t.identifier() === selected) || defaultTarget, [targetList, selected]