diff --git a/dist.zip b/dist.zip new file mode 100644 index 0000000..d0ebd0e Binary files /dev/null and b/dist.zip differ diff --git a/index.html b/index.html index 4f58a3e..be19b64 100644 --- a/index.html +++ b/index.html @@ -3,6 +3,7 @@ + ALADIN + + diff --git a/src/components/taskComponents/Bild.vue b/src/components/taskComponents/Bild.vue new file mode 100644 index 0000000..79b561f --- /dev/null +++ b/src/components/taskComponents/Bild.vue @@ -0,0 +1,314 @@ + + + + + + + \ No newline at end of file diff --git a/src/components/taskComponents/Charts/Chart.vue b/src/components/taskComponents/Charts/Chart.vue new file mode 100644 index 0000000..aba83da --- /dev/null +++ b/src/components/taskComponents/Charts/Chart.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/src/components/taskComponents/CheckboxGroup.vue b/src/components/taskComponents/CheckboxGroup.vue new file mode 100644 index 0000000..40bb4c7 --- /dev/null +++ b/src/components/taskComponents/CheckboxGroup.vue @@ -0,0 +1,185 @@ + + + + + \ No newline at end of file diff --git a/src/components/taskComponents/Diagramm/diagramm.vue b/src/components/taskComponents/Diagramm/diagramm.vue new file mode 100644 index 0000000..4b6a3cc --- /dev/null +++ b/src/components/taskComponents/Diagramm/diagramm.vue @@ -0,0 +1,168 @@ + + + + + + \ No newline at end of file diff --git a/src/components/taskComponents/EchtButton.vue b/src/components/taskComponents/EchtButton.vue new file mode 100644 index 0000000..a40e615 --- /dev/null +++ b/src/components/taskComponents/EchtButton.vue @@ -0,0 +1,51 @@ + + + + + + \ No newline at end of file diff --git a/src/components/taskComponents/LatexFormula.vue b/src/components/taskComponents/LatexFormula.vue new file mode 100644 index 0000000..b4f4dbb --- /dev/null +++ b/src/components/taskComponents/LatexFormula.vue @@ -0,0 +1,497 @@ + + + + + + + \ No newline at end of file diff --git a/src/components/taskComponents/LatexFormular2.vue b/src/components/taskComponents/LatexFormular2.vue new file mode 100644 index 0000000..fbf87e3 --- /dev/null +++ b/src/components/taskComponents/LatexFormular2.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/src/components/taskComponents/TaskConfiguration.vue b/src/components/taskComponents/TaskConfiguration.vue index 5aae054..ef3b7fc 100644 --- a/src/components/taskComponents/TaskConfiguration.vue +++ b/src/components/taskComponents/TaskConfiguration.vue @@ -10,6 +10,7 @@ import { computed, watch } from "vue"; import DifficultyPicker from "@/components/taskComponents/DifficultyPicker.vue"; import ParameterSelection from "@/components/taskComponents/ParameterSelection.vue"; + export default { props: { componentID: Number, @@ -17,7 +18,7 @@ export default { }, components: { DifficultyPicker, - ParameterSelection + ParameterSelection, }, setup(props) { const { store, getProperty, setProperty } = props.storeObject; @@ -25,12 +26,16 @@ export default { const currentNode = computed(() => getProperty("currentNode")); const taskData = computed(() => getProperty("taskData")); - + + + watch(taskData, () => { setProperty({ path: `nodes__${currentNode.value}__components__${props.componentID}__isValid`, value: true }); }); - return { isAdvancedUser, props }; + return { isAdvancedUser, + props, + }; } }; diff --git a/src/components/taskComponents/TaskViewer.vue b/src/components/taskComponents/TaskViewer.vue new file mode 100644 index 0000000..09de04f --- /dev/null +++ b/src/components/taskComponents/TaskViewer.vue @@ -0,0 +1,134 @@ + + + + + \ No newline at end of file diff --git a/src/components/taskComponents/absolutInputsOnImage.vue b/src/components/taskComponents/absolutInputsOnImage.vue new file mode 100644 index 0000000..27b591b --- /dev/null +++ b/src/components/taskComponents/absolutInputsOnImage.vue @@ -0,0 +1,253 @@ + + + + + diff --git a/src/components/taskComponents/form/DropdownFormField.vue b/src/components/taskComponents/form/DropdownFormField.vue index 88d3b66..fc35ecf 100644 --- a/src/components/taskComponents/form/DropdownFormField.vue +++ b/src/components/taskComponents/form/DropdownFormField.vue @@ -1,13 +1,16 @@ @@ -51,4 +114,5 @@ select { text-align-last: center; text-align: center; } + diff --git a/src/components/taskComponents/form/DualSlider.vue b/src/components/taskComponents/form/DualSlider.vue index 178c248..904c0c3 100644 --- a/src/components/taskComponents/form/DualSlider.vue +++ b/src/components/taskComponents/form/DualSlider.vue @@ -1,11 +1,28 @@ + + + @@ -39,12 +111,13 @@ export default { diff --git a/src/components/taskComponents/form/ValueFormField.vue b/src/components/taskComponents/form/ValueFormField.vue index 1747cb4..111e271 100644 --- a/src/components/taskComponents/form/ValueFormField.vue +++ b/src/components/taskComponents/form/ValueFormField.vue @@ -6,11 +6,13 @@ :step="element.step" oninput="this.reportValidity()" @keyup="emitEvent" + @focus="selectText" + :readonly="isreadOnly === true ? true : false" /> diff --git a/src/components/taskComponents/form/validation.ts b/src/components/taskComponents/form/validation.ts index 006b1a3..01cf966 100644 --- a/src/components/taskComponents/form/validation.ts +++ b/src/components/taskComponents/form/validation.ts @@ -28,6 +28,7 @@ export const evaluateValue = (props: { elementId: number; element: any }) => { const input: HTMLInputElement = document.querySelector(`.${props.elementId}__value`); const value = parseFloat(input.value.replace(",", ".")); const condition = value >= min && value <= max; - + //console.error(min,max); + //console.error(input.value,value); setValidity(input, condition); }; diff --git a/src/components/taskComponents/math/LinearAlgebra/Matrix.vue b/src/components/taskComponents/math/LinearAlgebra/Matrix.vue index ad4d099..ca98a40 100644 --- a/src/components/taskComponents/math/LinearAlgebra/Matrix.vue +++ b/src/components/taskComponents/math/LinearAlgebra/Matrix.vue @@ -1,48 +1,63 @@ diff --git a/src/components/taskComponents/math/LinearAlgebra/Matrix/Matrix.vue b/src/components/taskComponents/math/LinearAlgebra/Matrix/Matrix.vue index 1515a6f..2e5f8f4 100644 --- a/src/components/taskComponents/math/LinearAlgebra/Matrix/Matrix.vue +++ b/src/components/taskComponents/math/LinearAlgebra/Matrix/Matrix.vue @@ -116,4 +116,4 @@ th { input[disabled] { background: lightgrey; } - + \ No newline at end of file diff --git a/src/components/taskComponents/math/LinearAlgebra/Matrix/MatrixField.vue b/src/components/taskComponents/math/LinearAlgebra/Matrix/MatrixField.vue index ec2885b..c21ead1 100644 --- a/src/components/taskComponents/math/LinearAlgebra/Matrix/MatrixField.vue +++ b/src/components/taskComponents/math/LinearAlgebra/Matrix/MatrixField.vue @@ -94,4 +94,4 @@ watch( text-align: center; padding: 5px; } - + \ No newline at end of file diff --git a/src/components/taskComponents/math/LinearAlgebra/MatrixField.vue b/src/components/taskComponents/math/LinearAlgebra/MatrixField.vue index 4635988..c98b708 100644 --- a/src/components/taskComponents/math/LinearAlgebra/MatrixField.vue +++ b/src/components/taskComponents/math/LinearAlgebra/MatrixField.vue @@ -2,11 +2,13 @@ @@ -18,10 +20,13 @@ export default { rowIndex: Number, columnIndex: Number, isReadOnly: Boolean, + isFieldReadOnly: Boolean, element: Number, storeObject: Object, componentID: Number, - inputType: String + inputType: String, + min: Number, + max: Number }, setup(props) { const { store, getProperty, setProperty } = props.storeObject; @@ -46,8 +51,24 @@ export default { const element = event.target; const { index } = <{ index: string }>element.dataset; const [column, row] = index.split(","); - let value = element.value === "" ? null : props.inputType === "number" ? parseInt(element.value) : element.value; + let value = element.value === "" ? null : props.inputType === "number" ? parseFloat(element.value) : element.value; + if (value !== null && props.inputType === "number") { + value = value.toString(); + if (value.includes(",")) { + // Ersetze das Komma mit einem Punkt, um es in eine gültige Zahl umzuwandeln + value = value.replace(",", "."); + } + // Versuche nun, den Wert als Zahl zu parsen + value = parseFloat(value); + } + else { + element.value = element.min; + value = element.value; + } + //Zum Test + console.log("Test MatrixField: ",value); setProperty({ path: `${componentPath}__userData__${column}__${row}`, value }); + checkValidity(event); }; const setVisualCorrectness = (isCorrect: boolean, isSet: boolean, rowIndex: number, columnIndex: number) => { @@ -127,13 +148,37 @@ export default { } } ); - - return { updateField }; + const checkValidity = (event: Event) => { + const element = event.target; + const value = element.value ? parseFloat(element.value) : null; + + if (value < props.min || value > props.max) { + element.classList.add('out-of-range'); + element.classList.remove('in-range'); + let value:boolean = false; + setProperty({ path: `nodes__${currentNode.value}__components__${props.componentID}__isValid`, value }); + } else { + element.classList.remove('out-of-range'); + element.classList.add('in-range'); + let value:boolean = true; + setProperty({ path: `nodes__${currentNode.value}__components__${props.componentID}__isValid`, value }); + } + }; + + + return { updateField , checkValidity }; } };