aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/components/TimeLine.vue34
-rw-r--r--src/store.ts2
2 files changed, 20 insertions, 16 deletions
diff --git a/src/components/TimeLine.vue b/src/components/TimeLine.vue
index e7ba9f8..f1188cc 100644
--- a/src/components/TimeLine.vue
+++ b/src/components/TimeLine.vue
@@ -55,7 +55,7 @@
</div>
</div>
<!-- Timeline position label -->
- <div class="absolute top-2 left-2 z-20 text-lg" :class="[current ? 'text-yellow-300' : 'text-stone-50']"
+ <div class="absolute top-1 left-2 z-20 text-lg" :class="[current ? 'text-yellow-300' : 'text-stone-50']"
style="text-shadow: 0px 0px 5px black">
{{timelinePosStr}}
</div>
@@ -505,30 +505,34 @@ function getEventLayout(): Map<number, [number, number, number, number]> {
let afterMainlineIdx: number | null = null; // Index of first column after the mainline, if there is one
if (!sideMainline.value){
// Get columns before mainline area
- let columnOffset = availBreadth.value / 2 - store.mainlineBreadth / 2 - store.spacing - eventMinorSz.value;
- while (columnOffset >= store.spacing){
+ let colArea = availBreadth.value / 2 - store.mainlineBreadth / 2 - store.spacing * 2;
+ let numCols = Math.floor(colArea / eventMinorSz.value);
+ let colSep = Math.floor((colArea % eventMinorSz.value) / (numCols + 1));
+ let colOffset = store.spacing + colSep;
+ for (let i = 0; i < numCols; i++){
cols.push([]);
- colOffsets.push(columnOffset);
- columnOffset -= eventMinorSz.value + store.spacing;
+ colOffsets.push(colOffset);
+ colOffset += eventMinorSz.value + colSep;
}
- colOffsets.reverse();
afterMainlineIdx = cols.length;
// Get columns after mainline area
- columnOffset = availBreadth.value / 2 + store.mainlineBreadth / 2 + store.spacing;
- while (columnOffset + eventMinorSz.value + store.spacing < availBreadth.value){
+ colOffset = availBreadth.value / 2 + store.mainlineBreadth / 2 + store.spacing;
+ for (let i = 0; i < numCols; i++){
cols.push([]);
- colOffsets.push(columnOffset);
- columnOffset += eventMinorSz.value + store.spacing;
+ colOffsets.push(colOffset);
+ colOffset += eventMinorSz.value + colSep;
}
} else {
// Get columns before mainline area
- let columnOffset = mainlineOffset.value - store.spacing - eventMinorSz.value - store.spacing;
- while (columnOffset >= store.spacing){
+ let colArea = availBreadth.value - store.mainlineBreadth - store.spacing * 2;
+ let numCols = Math.floor(colArea / eventMinorSz.value);
+ let colSep = Math.floor((colArea % eventMinorSz.value) / (numCols + 1));
+ let colOffset = store.spacing + colSep;
+ for (let i = 0; i < numCols; i++){
cols.push([]);
- colOffsets.push(columnOffset);
- columnOffset -= eventMinorSz.value + store.spacing;
+ colOffsets.push(colOffset);
+ colOffset += eventMinorSz.value + colSep;
}
- colOffsets.reverse();
}
if (cols.length == 0){
console.log('WARNING: No space for events');
diff --git a/src/store.ts b/src/store.ts
index 695d3a9..d65dbcf 100644
--- a/src/store.ts
+++ b/src/store.ts
@@ -97,7 +97,7 @@ function getDefaultState(): StoreState {
defaultEndTickOffset: 0.5,
showMinorTicks: true,
// Mainline and event display
- mainlineBreadth: 80,
+ mainlineBreadth: 70,
eventImgSz: 100,
eventLabelHeight: 20,
spacing: 10,