|
@@ -4,6 +4,8 @@ import { CircleData, defaultStyle as circleDefaultStyle } from "../circle";
|
|
import { InteractiveFix, InteractiveTo, MatResponseProps } from "../index.ts";
|
|
import { InteractiveFix, InteractiveTo, MatResponseProps } from "../index.ts";
|
|
import { DrawStore } from "@/core/store/index.ts";
|
|
import { DrawStore } from "@/core/store/index.ts";
|
|
import { Pos } from "@/utils/math.ts";
|
|
import { Pos } from "@/utils/math.ts";
|
|
|
|
+import { TableData } from "../table/index.ts";
|
|
|
|
+import { copy } from "@/utils/shared.ts";
|
|
|
|
|
|
export {
|
|
export {
|
|
getMouseStyle,
|
|
getMouseStyle,
|
|
@@ -25,7 +27,7 @@ export const defaultTableStyle = {
|
|
nameColWidth: 100,
|
|
nameColWidth: 100,
|
|
valueColWidth: 180,
|
|
valueColWidth: 180,
|
|
repColCount: 1,
|
|
repColCount: 1,
|
|
- tableStrokeWidth: 1
|
|
|
|
|
|
+ tableStrokeWidth: 1,
|
|
};
|
|
};
|
|
export const shapeName = "序号";
|
|
export const shapeName = "序号";
|
|
export const addMode = "dot";
|
|
export const addMode = "dot";
|
|
@@ -49,20 +51,22 @@ export const getSerialFontSizeByFontW = (data: SerialData, w: number) => {
|
|
return (w - pad * 2) / len;
|
|
return (w - pad * 2) / len;
|
|
};
|
|
};
|
|
|
|
|
|
-export const getCurrentNdx = (store: DrawStore) => {
|
|
|
|
- const cs = store
|
|
|
|
- .getTypeItems("serial")
|
|
|
|
- .map((item) => Number(item.content || 0));
|
|
|
|
- let max = Math.max(...cs, 0) + 1
|
|
|
|
- let i = 1
|
|
|
|
|
|
+export const getCurrentNdxRaw = (serials: SerialData[]) => {
|
|
|
|
+ const cs = serials.map((item) => Number(item.content || 0));
|
|
|
|
+ let max = Math.max(...cs, 0) + 1;
|
|
|
|
+ let i = 1;
|
|
for (; i < max; i++) {
|
|
for (; i < max; i++) {
|
|
if (!cs.includes(i)) {
|
|
if (!cs.includes(i)) {
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
- }
|
|
|
|
|
|
+ }
|
|
return i.toString();
|
|
return i.toString();
|
|
};
|
|
};
|
|
|
|
|
|
|
|
+export const getCurrentNdx = (store: DrawStore) => {
|
|
|
|
+ return getCurrentNdxRaw(store.getTypeItems("serial"));
|
|
|
|
+};
|
|
|
|
+
|
|
export const interactiveToData: InteractiveTo<"serial"> = ({
|
|
export const interactiveToData: InteractiveTo<"serial"> = ({
|
|
info,
|
|
info,
|
|
preset = {},
|
|
preset = {},
|
|
@@ -78,7 +82,6 @@ export const interactiveToData: InteractiveTo<"serial"> = ({
|
|
content: getCurrentNdx(store),
|
|
content: getCurrentNdx(store),
|
|
...preset,
|
|
...preset,
|
|
} as unknown as SerialData;
|
|
} as unknown as SerialData;
|
|
-
|
|
|
|
return interactiveFixData({ ...args, info, store, data: item });
|
|
return interactiveFixData({ ...args, info, store, data: item });
|
|
}
|
|
}
|
|
};
|
|
};
|
|
@@ -94,21 +97,18 @@ export const interactiveFixData: InteractiveFix<"serial"> = ({
|
|
return data;
|
|
return data;
|
|
};
|
|
};
|
|
|
|
|
|
-export const joinKey = "serial-table";
|
|
|
|
-export const delItem = (store: DrawStore, item: SerialData) => {
|
|
|
|
- const table = store
|
|
|
|
- .getTypeItems("table")
|
|
|
|
- .find((item) => item.key === joinKey)!;
|
|
|
|
- const data = store.getTypeItems("serial");
|
|
|
|
|
|
+export const delItemRaw = (
|
|
|
|
+ table: TableData,
|
|
|
|
+ data: SerialData[],
|
|
|
|
+ item: SerialData
|
|
|
|
+) => {
|
|
const ndx = data.indexOf(item);
|
|
const ndx = data.indexOf(item);
|
|
-
|
|
|
|
const getPosition = (itemNdx: number) => {
|
|
const getPosition = (itemNdx: number) => {
|
|
const colCount = table.content[0].length / 2;
|
|
const colCount = table.content[0].length / 2;
|
|
const rowNdx = 1 + Math.floor(itemNdx / colCount);
|
|
const rowNdx = 1 + Math.floor(itemNdx / colCount);
|
|
const colNdx = itemNdx % colCount;
|
|
const colNdx = itemNdx % colCount;
|
|
return [rowNdx, colNdx * colCount, colCount] as const;
|
|
return [rowNdx, colNdx * colCount, colCount] as const;
|
|
};
|
|
};
|
|
-
|
|
|
|
if (table && ~ndx) {
|
|
if (table && ~ndx) {
|
|
let i = ndx + 1;
|
|
let i = ndx + 1;
|
|
let s = getPosition(i - 1);
|
|
let s = getPosition(i - 1);
|
|
@@ -118,7 +118,8 @@ export const delItem = (store: DrawStore, item: SerialData) => {
|
|
r = s;
|
|
r = s;
|
|
s = getPosition(i);
|
|
s = getPosition(i);
|
|
for (let j = 0; j < s[2]; j++) {
|
|
for (let j = 0; j < s[2]; j++) {
|
|
- table.content[r[0]][r[1] + j] = table.content[s[0]][s[1] + j];
|
|
|
|
|
|
+ Object.assign(table.content[r[0]][r[1] + j], table.content[s[0]][s[1] + j])
|
|
|
|
+ // table.content[r[0]][r[1] + j] = copy(table.content[s[0]][s[1] + j]);
|
|
// if (j === 0) {
|
|
// if (j === 0) {
|
|
// table.content[r[0]][r[1] + j].content = oldItem.content!;
|
|
// table.content[r[0]][r[1] + j].content = oldItem.content!;
|
|
// } else {
|
|
// } else {
|
|
@@ -139,7 +140,19 @@ export const delItem = (store: DrawStore, item: SerialData) => {
|
|
// store.setItem("serial", { id: data[i].id, value: { ...data[i] } });
|
|
// store.setItem("serial", { id: data[i].id, value: { ...data[i] } });
|
|
// oldItem = cur;
|
|
// oldItem = cur;
|
|
}
|
|
}
|
|
- table.content[s[0]][s[1]].content = "";
|
|
|
|
|
|
+
|
|
|
|
+ console.log(copy(table))
|
|
|
|
+ for (let j = 0; j < s[2]; j++) {
|
|
|
|
+ console.log({...table.content[s[0]][s[1] + j]})
|
|
|
|
+ table.content[s[0]][s[1] + j].content = "";
|
|
|
|
+ // if (j === 0) {
|
|
|
|
+ // table.content[r[0]][r[1] + j].content = oldItem.content!;
|
|
|
|
+ // } else {
|
|
|
|
+ // table.content[r[0]][r[1] + j].content =
|
|
|
|
+ // table.content[s[0]][s[1] + j].content!;
|
|
|
|
+ // }
|
|
|
|
+ }
|
|
|
|
+ console.log(copy(table))
|
|
const cols = table.content.flatMap((row) => {
|
|
const cols = table.content.flatMap((row) => {
|
|
const cols = [];
|
|
const cols = [];
|
|
for (let i = 0; i < row.length; i += 2) {
|
|
for (let i = 0; i < row.length; i += 2) {
|
|
@@ -147,13 +160,26 @@ export const delItem = (store: DrawStore, item: SerialData) => {
|
|
}
|
|
}
|
|
return cols;
|
|
return cols;
|
|
});
|
|
});
|
|
|
|
+
|
|
const delRowCount = Math.floor(
|
|
const delRowCount = Math.floor(
|
|
cols.filter((item) => item.content === "").length / 2
|
|
cols.filter((item) => item.content === "").length / 2
|
|
);
|
|
);
|
|
|
|
+ console.log('delRowCount', delRowCount, cols.filter((item) => item.content === "").length)
|
|
for (let i = 0; i < delRowCount; i++) {
|
|
for (let i = 0; i < delRowCount; i++) {
|
|
table.height -= table.content.pop()![0].height;
|
|
table.height -= table.content.pop()![0].height;
|
|
}
|
|
}
|
|
|
|
+ }
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+export const joinKey = "serial-table";
|
|
|
|
+export const delItem = (store: DrawStore, item: SerialData) => {
|
|
|
|
+ const table = store
|
|
|
|
+ .getTypeItems("table")
|
|
|
|
+ .find((item) => item.key === joinKey)!;
|
|
|
|
+ const data = store.getTypeItems("serial");
|
|
|
|
|
|
|
|
+ delItemRaw(table, data, item);
|
|
|
|
+ if (table) {
|
|
if (data.length === 1) {
|
|
if (data.length === 1) {
|
|
store.delItem("table", table.id);
|
|
store.delItem("table", table.id);
|
|
} else {
|
|
} else {
|
|
@@ -187,7 +213,7 @@ export const matResponse = (
|
|
export const getPredefine = (key: keyof CircleData) => {
|
|
export const getPredefine = (key: keyof CircleData) => {
|
|
if (key === "fill") {
|
|
if (key === "fill") {
|
|
return { canun: true };
|
|
return { canun: true };
|
|
- } else if (key === 'strokeWidth') {
|
|
|
|
- return { proportion: true }
|
|
|
|
|
|
+ } else if (key === "strokeWidth") {
|
|
|
|
+ return { proportion: true };
|
|
}
|
|
}
|
|
};
|
|
};
|