Recently Movidea's development is diary style like this page, but the reason why they don't do it like pRegroup or pKeicho is a feeling like "the structure may occur after the fact".
In fact, I went back to my diary and said, "Oh, I thought I made a list of functions to implement," and then I thought, "This paragraph, if I'm going to refer to it over and over, I should cut it out on a separate page and have a non-date title," and MovideaFunctionality required to make it actually usable page was created.
I wonder if they're trying to write it out first with no cost, because Cypress's trial and error and feature additions are all over the place, and there's extra cognitive cost in separating them into pages.
There are a lot of meeting interrupts today, and we'll focus on looking back, etc.
The drag function I created yesterday uses HTML5 Drag&Drop API, which was a first for me, so I have a lot to write about, but I haven't written it yet.
<GroupDiv ... onDragStart={onDragStart} draggable={true}>
ts
const onDragStart = (event: React.DragEvent<HTMLDivElement>) => {
updateGlobal((g) => {
const [x, y] = value.position;
const [cx, cy] = screen_to_world([event.clientX, event.clientY]);
g.dragstart_position = [cx - x, cy - y];
g.drag_target = value.id;
});
};
<div id="canvas" onDrop={onDrop} onDragOver={allowDrop}>
ts
export const allowDrop = (event: React.DragEvent<HTMLDivElement>) => {
event.preventDefault();
};
export const onDrop = (event: React.DragEvent<HTMLDivElement>) => {
updateGlobal((g) => {
const [dsx, dsy] = g.dragstart_position;
const [x, y] = screen_to_world([event.clientX, event.clientY]);
g.itemStore[g.drag_target].position = [x - dsx, y - dsy];
});
event.preventDefault();
};
Fixed to not display plus sign when dragging
event.dataTransfer is undefined in onDragStart, so I needed to ignore it when not present.
ts const onDragStart = (event: React.DragEvent<HTMLDivElement>) => {
if (event.dataTransfer !== undefined) {
event.dataTransfer.effectAllowed = "move";
}...
ts
export const allowDrop = (event: React.DragEvent<HTMLDivElement>) => {
event.dataTransfer.dropEffect = "move";
event.preventDefault();
};
This week's summary - Update with immer and test with Cypress - TypeScripting Cypress - 2021-07-13Movidea Development Diary - 2021-07-14Movidea Development Diary - 2021-07-15Movidea Development Diary
Representation of a rectangular range by the DOM Intersection judgment with rectangular range
This page is auto-translated from /nishio/2021-07-16Movidea開発日記 using DeepL. If you looks something interesting but the auto-translated English is not good enough to understand it, feel free to let me know at @nishio_en. I'm very happy to spread my thought to non-Japanese readers.