Resolve conflicts

This commit is contained in:
Garrett Mills 2022-04-10 00:23:46 -05:00
commit 619d768cc3
3 changed files with 129 additions and 5 deletions

73
Logo/logo.scad Normal file
View File

@ -0,0 +1,73 @@
length = 10;
n = 5;
// Draw all geometry
//translate([0,0]) polygon(ngon(n, length));
translate([0,0]) hollow_ngon(n, length);
// Simple list comprehension for creating N-gon vertices
function ngon(num, r) =
[for (i=[0:num-1], a=i*360/num) [ r*cos(a), r*sin(a) ]];
module hollow_ngon(num, r, width = 1) {
difference() {
translate([0,0]) polygon(ngon(num, r));
translate([0,0]) polygon(ngon(num, r-width));
}
}
l = 10;
CubePoints = [
[ 0, 0, 0 ], //0
[ 10, 0, 0 ], //1
[ 10, 7, 0 ], //2
[ 0, 7, 0 ], //3
[ 0, 0, 5 ], //4
[ 10, 0, 5 ], //5
[ 10, 7, 5 ], //6
[ 0, 7, 5 ]]; //7
CubeFaces = [
[0,1,2,3], // bottom
[4,5,1,0], // front
[7,6,5,4], // top
[5,6,2,1], // right
[6,7,3,2], // back
[7,4,0,3]]; // left
polyhedron( CubePoints, CubeFaces );
//The coordinates of the 12 additional vertices are (0, ±(1 + h), ±(1 h2)), (±(1 + h), ±(1 h2), 0) and (±(1 h2), 0, ±(1 + h)).
// (0, ±(1 + h), ±(1 h2)),
// (0, (1 + h), (1 h2) ),
// (±(1 + h), ±(1 h2), 0)
// (±(1 h2), 0, ±(1 + h))
steps = 50;
sides = 5;
vert = [
]
points = [
// first expression generating the points in the positive Y quadrant
//(0, ±(1 + h), ±(1 h2)),
for (a = [0 : sides]) [ a, 10 * sin(a * 360 / steps) + 10 ],
// second expression generating the points in the negative Y quadrant
for (a = [steps : -1 : 0]) [ a, 10 * cos(a * 360 / steps) - 20 ],
// additional list of fixed points
[ 10, -3 ], [ 3, 0 ], [ 10, 3 ]
];
polygon(points);

View File

@ -4,12 +4,41 @@ import { RichTextBox } from "../support/types";
import { stepX, stepY } from "../support/const"; import { stepX, stepY } from "../support/const";
const props = defineProps<{value: RichTextBox}>(); const props = defineProps<{value: RichTextBox}>();
const emit = defineEmits<{
(eventName: 'move', x: number,y:number): void,
(eventName: 'edit',): void,
(eventName: 'remove',): void,
}>()
function onControlledDrag(e: {event: MouseEvent, data: {x: number, y: number}}) {
// const x = e.x;
// const y = e.y;
const { x, y } = e.data;
props.value.x = x;
props.value.y = y;
console.log(e)
}
function onControlledDragStop(e: {event: MouseEvent, data: {x: number, y: number}}) {
// console.log(typeof(e))
const { x, y } = e.data;
// const x = e.x;
// const y = e.y;
console.log(self)
emit('move', x, y);
onControlledDrag(e);
}
</script> </script>
<template> <template>
<Draggable <Draggable
:grid="[stepX, stepY]" :grid="[stepX, stepY]"
:default-position="{ x: props.value.x, y: props.value.y }" :default-position="{ x: props.value.x, y: props.value.y }"
:position="{ x: props.value.x, y: props.value.y }"
@stop="onControlledDragStop"
> >
<div> <div>
<q-card flat bordered> <q-card flat bordered>
@ -21,7 +50,9 @@ const props = defineProps<{value: RichTextBox}>();
<q-menu cover auto-close> <q-menu cover auto-close>
<q-list> <q-list>
<q-item clickable> <q-item clickable>
<q-item-section @click="() => $emit('edit')" <q-item-section @click="() => $emit('edit')">
<q-icon name="edit" />
<q-item-label>Edit</q-item-label>
>Edit</q-item-section >Edit</q-item-section
> >
</q-item> </q-item>

View File

@ -32,6 +32,15 @@ const variableListingColumns = [
}, },
] ]
const stmOnControlledDragStop = (stmt: MathStatement) => (e: {event: MouseEvent, data: {x: number, y: number}}) => {
console.log(e)
console.log("moved stm5", stmt)
const { x, y } = e.data;
stmt.x = x;
stmt.y = y;
}
const variableListingRows = ref<({name: string, value: string})[]>([]) const variableListingRows = ref<({name: string, value: string})[]>([])
const functionListingColumns = [ const functionListingColumns = [
@ -170,30 +179,37 @@ const finishEditStatement = () => {
*/ */
const makeNewRichTextBox = () => { const makeNewRichTextBox = () => {
richTextStatements.value.push(new RichTextBox("")); richTextStatements.value.push(new RichTextBox(''));
richEditID.value = richTextStatements.value.length - 1; richEditID.value = richTextStatements.value.length - 1;
richEditExpression.value = richTextStatements.value[richEditID.value].text; richEditExpression.value = richTextStatements.value[richEditID.value].text;
richEditModal.value = true; richEditModal.value = true;
console.log("editing statement",richEditID.value, richEditModal);
}; };
const richTextStatements = ref([]); const richTextStatements = ref<RichTextBox[]>([]);
const richEditModal = ref(false); const richEditModal = ref(false);
const richEditExpression = ref(""); const richEditExpression = ref("");
const richEditID = ref(0); const richEditID = ref(0);
const richEditStatement = (id: number) => { const richEditStatement = (id: number) => {
console.log("editing statement", id, richEditModal);
richEditModal.value = true; richEditModal.value = true;
richEditID.value = id; richEditID.value = id;
richEditExpression.value = richTextStatements.value[richEditID.value].text; richEditExpression.value = richTextStatements.value[richEditID.value].text;
}; };
const moveRichTextBox = (id: number,x:number,y:number) => {
richEditID.value = id;
richTextStatements.value[richEditID.value].x = x;
richTextStatements.value[richEditID.value].y = y;
};
function richUpdateValue() { function richUpdateValue() {
richTextStatements.value[richEditID.value].text = richEditExpression.value; richTextStatements.value[richEditID.value].text = richEditExpression.value;
} }
const removeRichTextBox = (id: number) => { const removeRichTextBox = (id: number) => {
console.log(richTextStatements.value[id]);
richTextStatements.value.splice(id, 1); richTextStatements.value.splice(id, 1);
}; };
</script> </script>
@ -277,6 +293,9 @@ const removeRichTextBox = (id: number) => {
<span v-for="statement in statements" style="display: flex"> <span v-for="statement in statements" style="display: flex">
<Draggable <Draggable
:grid="[stepX, stepY]" :grid="[stepX, stepY]"
:position="{ x: statement.x, y: statement.y }"
:default-position="{ x: statement.x, y: statement.y }"
@stop="(e: {event: MouseEvent, data: {x: number, y: number}}) => stmOnControlledDragStop(statement)(e)"
> >
<div> <div>
<Statement <Statement
@ -375,6 +394,7 @@ const removeRichTextBox = (id: number) => {
:value="item" :value="item"
v-on:edit="() => (item.text ? richEditStatement(index) : {})" v-on:edit="() => (item.text ? richEditStatement(index) : {})"
v-on:remove="() => removeRichTextBox(index)" v-on:remove="() => removeRichTextBox(index)"
v-on:move="(x, y) => moveRichTextBox(index, x, y)"
/> />
</div> </div>
</q-page-container> </q-page-container>