diff --git a/packages/client/hmi-client/src/components/workflow/ops/calibrate-ciemss/tera-calibrate-ciemss-drilldown.vue b/packages/client/hmi-client/src/components/workflow/ops/calibrate-ciemss/tera-calibrate-ciemss-drilldown.vue index 5a2fcc2110..76989609b6 100644 --- a/packages/client/hmi-client/src/components/workflow/ops/calibrate-ciemss/tera-calibrate-ciemss-drilldown.vue +++ b/packages/client/hmi-client/src/components/workflow/ops/calibrate-ciemss/tera-calibrate-ciemss-drilldown.vue @@ -83,7 +83,7 @@
- +
@@ -95,7 +95,7 @@ @@ -112,7 +112,11 @@
- +
@@ -120,7 +124,7 @@
- +
@@ -242,7 +246,6 @@ import { CalibrateMap, setupDatasetInput, setupModelInput } from '@/services/cal import TeraDrilldown from '@/components/drilldown/tera-drilldown.vue'; import TeraDrilldownSection from '@/components/drilldown/tera-drilldown-section.vue'; import TeraDrilldownPreview from '@/components/drilldown/tera-drilldown-preview.vue'; -import TeraPyciemssCancelButton from '@/components/pyciemss/tera-pyciemss-cancel-button.vue'; import TeraProgressSpinner from '@/components/widgets/tera-progress-spinner.vue'; import TeraNotebookError from '@/components/drilldown/tera-notebook-error.vue'; import TeraOperatorOutputSummary from '@/components/operator/tera-operator-output-summary.vue'; @@ -275,6 +278,7 @@ import TeraChartControl from '@/components/workflow/tera-chart-control.vue'; import { CiemssPresetTypes, DrilldownTabs } from '@/types/common'; import TeraInputText from '@/components/widgets/tera-input-text.vue'; import { displayNumber } from '@/utils/number'; +import TeraPyciemssCancelButton from '@/components/pyciemss/tera-pyciemss-cancel-button.vue'; import type { CalibrationOperationStateCiemss } from './calibrate-operation'; import { renameFnGenerator, mergeResults } from './calibrate-utils'; @@ -284,36 +288,49 @@ const props = defineProps<{ const emit = defineEmits(['close', 'select-output', 'update-state']); const toast = useToastService(); +interface BasicKnobs { + numIterations: number; + numSamples: number; + endTime: number; + stepSize: number; + learningRate: number; + method: string; +} + +const knobs = ref({ + numIterations: props.node.state.numIterations ?? 1000, + numSamples: props.node.state.numSamples ?? 100, + endTime: props.node.state.endTime ?? 100, + stepSize: props.node.state.stepSize ?? 1, + learningRate: props.node.state.learningRate ?? 0.1, + method: props.node.state.method ?? CiemssMethodOptions.dopri5 +}); + const presetType = computed(() => { - if (numSamples.value === speedValues.numSamples && method.value === speedValues.method) { + if (knobs.value.numSamples === speedPreset.numSamples && knobs.value.method === speedPreset.method) { return CiemssPresetTypes.Fast; } - if (numSamples.value === qualityValues.numSamples && method.value === qualityValues.method) { + if (knobs.value.numSamples === qualityPreset.numSamples && knobs.value.method === qualityPreset.method) { return CiemssPresetTypes.Normal; } return ''; }); -const speedValues = Object.freeze({ +const speedPreset = Object.freeze({ numSamples: 1, method: CiemssMethodOptions.euler, numIterations: 10, learningRate: 0.1 }); -const qualityValues = Object.freeze({ +const qualityPreset = Object.freeze({ numSamples: 100, method: CiemssMethodOptions.dopri5, numIterations: 1000, learningRate: 0.03 }); -const numSamples = ref(props.node.state.numSamples); -const method = ref(props.node.state.method); -const numIterations = ref(props.node.state.numIterations); -const learningRate = ref(props.node.state.learningRate); - const calibrationSettingsToolTip: string = 'TODO'; const numberOfSamplesTooltip: string = 'TODO'; const inferenceOptionsTooltip: string = 'TODO'; @@ -358,49 +375,39 @@ const mappingDropdownPlaceholder = computed(() => { const updateState = () => { const state = _.cloneDeep(props.node.state); - state.numSamples = numSamples.value; - state.method = method.value; - state.numIterations = numIterations.value; - state.learningRate = learningRate.value; + state.numSamples = knobs.value.numSamples; + state.method = knobs.value.method; + state.numIterations = knobs.value.numIterations; + state.learningRate = knobs.value.learningRate; emit('update-state', state); }; -interface BasicKnobs { - numIterations: number; - numSamples: number; - endTime: number; - stepSize: number; - learningRate: number; - method: string; -} - -const knobs = ref({ - numIterations: props.node.state.numIterations ?? 1000, - numSamples: props.node.state.numSamples ?? 100, - endTime: props.node.state.endTime ?? 100, - stepSize: props.node.state.stepSize ?? 1, - learningRate: props.node.state.learningRate ?? 0.1, - method: props.node.state.method ?? CiemssMethodOptions.dopri5 -}); - const setPresetValues = (data: CiemssPresetTypes) => { if (data === CiemssPresetTypes.Normal) { - numSamples.value = qualityValues.numSamples; - method.value = qualityValues.method; - numIterations.value = qualityValues.numIterations; - learningRate.value = qualityValues.learningRate; + knobs.value.numSamples = qualityPreset.numSamples; + knobs.value.method = qualityPreset.method; + knobs.value.numIterations = qualityPreset.numIterations; + knobs.value.learningRate = qualityPreset.learningRate; } if (data === CiemssPresetTypes.Fast) { - numSamples.value = speedValues.numSamples; - method.value = speedValues.method; - numIterations.value = speedValues.numIterations; - learningRate.value = speedValues.learningRate; + knobs.value.numSamples = speedPreset.numSamples; + knobs.value.method = speedPreset.method; + knobs.value.numIterations = speedPreset.numIterations; + knobs.value.learningRate = speedPreset.learningRate; } }; -const disableRunButton = computed( - () => !currentDatasetFileName.value || !csvAsset.value || !modelConfigId.value || !datasetId.value -); +const disableRunButton = computed(() => { + const timestampMapping = mapping.value.find((d) => d.modelVariable === 'timestamp'); + return ( + !currentDatasetFileName.value || + !csvAsset.value || + !modelConfigId.value || + !datasetId.value || + !timestampMapping || + timestampMapping.datasetVariable === '' + ); +}); const selectedOutputId = ref(); const lossChartContainer = ref(null);