|
@@ -58,9 +58,11 @@ const _flatSteps = <T extends DataStep>(
|
|
|
return lonelySteps;
|
|
|
};
|
|
|
|
|
|
+const start: any = { displayName: "开始", type: "startEnd" };
|
|
|
+const end: any = { displayName: "结束", type: "startEnd" };
|
|
|
export const flatSteps = <T extends DataStep>(steps: DataStepTree<T>[]) => {
|
|
|
const nsteps: NStep<DataStepTree<T>>[] = [];
|
|
|
- _flatSteps(steps, nsteps);
|
|
|
+ _flatSteps([start, ...steps, end] as any, nsteps);
|
|
|
return nsteps;
|
|
|
};
|
|
|
|
|
@@ -155,7 +157,14 @@ const setGroupOffset = <T>(
|
|
|
const offsetLYs: number[] = [];
|
|
|
for (let i = 0; i < groupSteps.length; i++) {
|
|
|
const groupStep = groupSteps[i];
|
|
|
- if (i > 0) {
|
|
|
+ if (start === groupStep.raw) {
|
|
|
+ offsetYs[i] = 0;
|
|
|
+ offsetLYs[i] = 0;
|
|
|
+ // offsetLYs[i] = -groupStep.box.size.h + margin;
|
|
|
+ } else if (end === groupStep.raw) {
|
|
|
+ offsetYs[i] = offsetYs[i - 1];
|
|
|
+ offsetLYs[i] = offsetLYs[i - 1];
|
|
|
+ } else if (i > 0) {
|
|
|
offsetYs[i] = -groupStep.box.size.h + offsetYs[i - 1] + margin;
|
|
|
offsetLYs[i] = offsetLYs[i - 1] - groupStep.box.size.h + margin;
|
|
|
} else {
|
|
@@ -165,8 +174,10 @@ const setGroupOffset = <T>(
|
|
|
|
|
|
groupStep.box.offset.y += margin;
|
|
|
}
|
|
|
+
|
|
|
let offsetNdx = offsetYs.length - 1;
|
|
|
let offsetLNdx = offsetYs.length - 1;
|
|
|
+ let prevG = null;
|
|
|
|
|
|
levelTraversalSteps(
|
|
|
steps,
|
|
@@ -177,8 +188,10 @@ const setGroupOffset = <T>(
|
|
|
}
|
|
|
|
|
|
for (const current of currents) {
|
|
|
- if (offsetNdx === -1) {
|
|
|
+ if (end === prevG || offsetNdx <= 0) {
|
|
|
current.box.lines = [];
|
|
|
+ }
|
|
|
+ if (offsetNdx === -1) {
|
|
|
break;
|
|
|
}
|
|
|
current.box.offset.y += offsetYs[offsetNdx];
|
|
@@ -188,6 +201,7 @@ const setGroupOffset = <T>(
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ prevG = currents[0].raw;
|
|
|
if (isBorder) {
|
|
|
offsetLNdx -= 1;
|
|
|
}
|
|
@@ -222,6 +236,7 @@ export const getStepsTreeCtx = <T extends DataStep>(
|
|
|
const ctx = getStepsTreeCtxRaw(steps, margin, getStepSize) as StepsCtx<
|
|
|
DataStepTree<T>
|
|
|
>;
|
|
|
+ groups = [start, ...groups, end];
|
|
|
const groupSteps = groups.map((group) =>
|
|
|
steps.find((step) => group === step.raw)
|
|
|
);
|