add promising tracking for progress bar
This commit is contained in:
parent
8e6a1e5747
commit
0e46b58876
3 changed files with 40 additions and 10 deletions
|
|
@ -31,7 +31,18 @@
|
||||||
out.push(from);
|
out.push(from);
|
||||||
}
|
}
|
||||||
return out;
|
return out;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
async function pwait(promises, tracker) {
|
||||||
|
let count = 0;
|
||||||
|
if (tracker)
|
||||||
|
for (let p of promises) {
|
||||||
|
p.then(() => {
|
||||||
|
tracker(count++, promises.length);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
await Promise.all(promises);
|
||||||
|
}
|
||||||
|
|
||||||
function numOrDefault(num, def) {
|
function numOrDefault(num, def) {
|
||||||
return num !== undefined ? num : def;
|
return num !== undefined ? num : def;
|
||||||
|
|
@ -492,6 +503,7 @@
|
||||||
time,
|
time,
|
||||||
round,
|
round,
|
||||||
area2,
|
area2,
|
||||||
|
pwait,
|
||||||
center2d,
|
center2d,
|
||||||
center2pr,
|
center2pr,
|
||||||
thetaDiff,
|
thetaDiff,
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
||||||
UTIL = BASE.util,
|
UTIL = BASE.util,
|
||||||
POLY = BASE.polygons,
|
POLY = BASE.polygons,
|
||||||
time = UTIL.time,
|
time = UTIL.time,
|
||||||
|
tracker = UTIL.pwait,
|
||||||
newSlice = KIRI.newSlice,
|
newSlice = KIRI.newSlice,
|
||||||
newOrderedLine = BASE.newOrderedLine;
|
newOrderedLine = BASE.newOrderedLine;
|
||||||
|
|
||||||
|
|
@ -280,7 +281,7 @@
|
||||||
zIndexes[i] -= -0.001;
|
zIndexes[i] -= -0.001;
|
||||||
}
|
}
|
||||||
bucketZ(i, zIndexes[i], zHeights[i], onFlat, onLine, zThick[i]);
|
bucketZ(i, zIndexes[i], zHeights[i], onFlat, onLine, zThick[i]);
|
||||||
onupdate(i / zIndexes.length);
|
onupdate((i / zIndexes.length) * 0.1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// create slices from each bucketed region
|
// create slices from each bucketed region
|
||||||
|
|
@ -316,12 +317,15 @@
|
||||||
for (let bucket of buckets) {
|
for (let bucket of buckets) {
|
||||||
promises.push(KIRI.minions.sliceBucket(bucket, options, output));
|
promises.push(KIRI.minions.sliceBucket(bucket, options, output));
|
||||||
}
|
}
|
||||||
await Promise.all(promises);
|
await tracker(promises, (i,t) => {
|
||||||
|
onupdate(0.1 + (i / t) * 0.9);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return output;
|
return output;
|
||||||
}
|
}
|
||||||
|
|
||||||
function sliceBucketsLocal(buckets, output) {
|
function sliceBucketsLocal(buckets, output) {
|
||||||
|
let count = 0;
|
||||||
for (let bucket of buckets) {
|
for (let bucket of buckets) {
|
||||||
for (let slice of bucket.slices) {
|
for (let slice of bucket.slices) {
|
||||||
let { index, z, height, thick } = slice;
|
let { index, z, height, thick } = slice;
|
||||||
|
|
@ -331,6 +335,7 @@
|
||||||
slice.index = index;
|
slice.index = index;
|
||||||
slice.thick = thick;
|
slice.thick = thick;
|
||||||
output.push(slice);
|
output.push(slice);
|
||||||
|
onupdate(0.1 + (count++ / zIndexes.length) * 0.9);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,6 +15,7 @@
|
||||||
fillArea = POLY.fillArea,
|
fillArea = POLY.fillArea,
|
||||||
newPoint = BASE.newPoint,
|
newPoint = BASE.newPoint,
|
||||||
newSlice = KIRI.newSlice,
|
newSlice = KIRI.newSlice,
|
||||||
|
tracker = UTIL.pwait,
|
||||||
FILL = KIRI.fill,
|
FILL = KIRI.fill,
|
||||||
FILLFIXED = KIRI.fill_fixed,
|
FILLFIXED = KIRI.fill_fixed,
|
||||||
COLOR = {
|
COLOR = {
|
||||||
|
|
@ -243,7 +244,12 @@
|
||||||
|
|
||||||
// calculate % complete and call onupdate()
|
// calculate % complete and call onupdate()
|
||||||
function doupdate(index, from, to, msg) {
|
function doupdate(index, from, to, msg) {
|
||||||
onupdate(0.5 + (from + ((index/slices.length) * (to-from))) * 0.5, msg);
|
// onupdate(0.5 + (from + ((index/slices.length) * (to-from))) * 0.5, msg);
|
||||||
|
trackupdate(index / slices.length, from, to, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
function trackupdate(pct, from, to, msg) {
|
||||||
|
onupdate(0.5 + (from + (pct * (to - from))) * 0.5, msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
// for each slice, performe a function and call doupdate()
|
// for each slice, performe a function and call doupdate()
|
||||||
|
|
@ -267,7 +273,7 @@
|
||||||
|
|
||||||
let promises = doConcurrent ? [] : undefined;
|
let promises = doConcurrent ? [] : undefined;
|
||||||
// create shells and diff inner fillable areas
|
// create shells and diff inner fillable areas
|
||||||
forSlices(0.0, 0.15, slice => {
|
forSlices(0.0, promises ? 0.05 : 0.15, slice => {
|
||||||
let params = slice.params = getRangeParameters(settings, slice.index);
|
let params = slice.params = getRangeParameters(settings, slice.index);
|
||||||
let shellFrac = (params.sliceShells - (params.sliceShells | 0));
|
let shellFrac = (params.sliceShells - (params.sliceShells | 0));
|
||||||
let sliceShells = params.sliceShells | 0;
|
let sliceShells = params.sliceShells | 0;
|
||||||
|
|
@ -301,7 +307,10 @@
|
||||||
}, promises);
|
}, promises);
|
||||||
}, "shells");
|
}, "shells");
|
||||||
if (promises) {
|
if (promises) {
|
||||||
await Promise.all(promises);
|
// await Promise.all(promises);
|
||||||
|
await tracker(promises, (i, t) => {
|
||||||
|
trackupdate(i / t, 0.05, 0.15);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// just the top/bottom special solid layers
|
// just the top/bottom special solid layers
|
||||||
|
|
@ -430,7 +439,7 @@
|
||||||
projectBridges(slice, solidLayers);
|
projectBridges(slice, solidLayers);
|
||||||
}, "project solids");
|
}, "project solids");
|
||||||
let promises = doConcurrent ? [] : undefined;
|
let promises = doConcurrent ? [] : undefined;
|
||||||
forSlices(0.35, 0.5, slice => {
|
forSlices(0.35, promises ? 0.4 : 0.5, slice => {
|
||||||
let params = slice.params;
|
let params = slice.params;
|
||||||
let first = slice.index === 0;
|
let first = slice.index === 0;
|
||||||
let solidWidth = params.sliceFillWidth || 1;
|
let solidWidth = params.sliceFillWidth || 1;
|
||||||
|
|
@ -440,7 +449,9 @@
|
||||||
sliceFillAngle += 90.0;
|
sliceFillAngle += 90.0;
|
||||||
}, "fill solids");
|
}, "fill solids");
|
||||||
if (promises) {
|
if (promises) {
|
||||||
await Promise.all(promises);
|
await tracker(promises, (i, t) => {
|
||||||
|
trackupdate(i / t, 0.4, 0.5);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -448,7 +459,7 @@
|
||||||
if (!isSynth) {
|
if (!isSynth) {
|
||||||
let lastType;
|
let lastType;
|
||||||
let promises = doConcurrent ? [] : undefined;
|
let promises = doConcurrent ? [] : undefined;
|
||||||
forSlices(0.5, 0.7, slice => {
|
forSlices(0.5, promises ? 0.55 : 0.7, slice => {
|
||||||
let params = slice.params;
|
let params = slice.params;
|
||||||
if (vaseMode || !params.sliceFillSparse) {
|
if (vaseMode || !params.sliceFillSparse) {
|
||||||
return;
|
return;
|
||||||
|
|
@ -470,7 +481,9 @@
|
||||||
lastType = newType;
|
lastType = newType;
|
||||||
}, "infill");
|
}, "infill");
|
||||||
if (promises) {
|
if (promises) {
|
||||||
await Promise.all(promises);
|
await tracker(promises, (i, t) => {
|
||||||
|
trackupdate(i / t, 0.55, 0.7);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
} else if (isSynth) {
|
} else if (isSynth) {
|
||||||
forSlices(0.5, 0.7, slice => {
|
forSlices(0.5, 0.7, slice => {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue