Skip to content

Commit

Permalink
Fix MathOperandType assigning to the wrong param
Browse files Browse the repository at this point in the history
  • Loading branch information
Doomse committed Dec 23, 2024
1 parent e3d76ce commit 0e99b28
Show file tree
Hide file tree
Showing 4 changed files with 262 additions and 172 deletions.
21 changes: 9 additions & 12 deletions src/components/ParamInputs.vue
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@
import type { ParamData } from '@/types/types'
import TypeParam from './param_inputs/TypeParam.vue'
import JSONInput from './JSONInput.vue'
import MathOperationParam from './param_inputs/MathOperationParam.vue'
import MathOperatorParam from './param_inputs/MathOperatorParam.vue'
import MathOperandParam from './param_inputs/MathOperandParam.vue'
import { computed } from 'vue'
import { useEditNodeStore } from '@/stores/edit_node'
import { useEditorStore } from '@/stores/editor'
Expand Down Expand Up @@ -160,34 +161,30 @@ function onFocus() {
:category="props.category"
:data_key="props.data_key"
/>

<MathOperationParam
<MathOperatorParam
v-else-if="param.value.type === 'ros_bt_py.helpers.MathUnaryOperator'"
:category="props.category"
:data_key="props.data_key"
:op_type="'unary'"
:val_type="'operator'"
/>
<MathOperationParam
v-else-if="param.value.type === 'ros_bt_py.helpers.MathBinaryOperator'"
<MathOperandParam
v-else-if="param.value.type === 'ros_bt_py.helpers.MathOperandType'"
:category="props.category"
:data_key="props.data_key"
:op_type="'binary'"
:val_type="'operator'"
/>
<MathOperationParam
v-else-if="param.value.type === 'ros_bt_py.helpers.MathOperandType'"
<MathOperatorParam
v-else-if="param.value.type === 'ros_bt_py.helpers.MathBinaryOperator'"
:category="props.category"
:data_key="props.data_key"
:op_type="'binary'"
:val_type="'operand'"
/>
<MathOperationParam
<MathOperandParam
v-else-if="param.value.type === 'ros_bt_py.helpers.MathUnaryOperandType'"
:category="props.category"
:data_key="props.data_key"
:op_type="'unary'"
:val_type="'operand'"
/>

<div v-else class="form-group">
Expand Down
99 changes: 99 additions & 0 deletions src/components/param_inputs/MathOperandParam.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<!--
* Copyright 2024 FZI Forschungszentrum Informatik
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* * Neither the name of the {copyright_holder} nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
-->
<script setup lang="ts">
import { useEditNodeStore } from '@/stores/edit_node';
import { useEditorStore } from '@/stores/editor';
import type { ParamData, PyOperand } from '@/types/types';
import { computed } from 'vue';


const editor_store = useEditorStore()
const edit_node_store = useEditNodeStore()

const props = defineProps<{
category: 'options',
data_key: string,
op_type: 'unary' | 'binary'
}>()

const param = computed<ParamData | undefined>(() =>
edit_node_store.new_node_options.find((x) => x.key === props.data_key)
)

function handleChange(event: Event) {
if (param.value === undefined) {
console.error("Undefined parameter")
return
}

const target = event.target as HTMLSelectElement

let operand_obj = param.value.value.value as PyOperand
operand_obj.operand_type = target.value

edit_node_store.updateParamValue(param.value.value.type, param.value.key, operand_obj)
}

// Lookup for all possible values for operators and operands
const options = {
unary: [
'int',
'float'
],
binary: [
'int',
'float',
'bool'
]
}


</script>

<template>
<div v-if="param !== undefined" class="form-group">
<label class="d-block">
{{ param.key }}
</label>
<select @change="handleChange" class="form-select"
:value="(param.value.value as PyOperand).operand_type"
:disabled="editor_store.selected_subtree.is_subtree"
>
<option v-for="operator_option in options[props.op_type]"
:key="operator_option" :value="operator_option"
>
{{ operator_option }}
</option>
</select>
</div>
<div v-else>
Error loading param data
</div>
</template>
160 changes: 0 additions & 160 deletions src/components/param_inputs/MathOperationParam.vue

This file was deleted.

Loading

0 comments on commit 0e99b28

Please sign in to comment.