fix: optimize separator + missing css

This commit is contained in:
Matthieu CAILLEAUX
2021-10-19 01:43:48 +02:00
parent e28eb3cd12
commit b35284768e
10 changed files with 274 additions and 182 deletions

View File

@@ -18,7 +18,9 @@ export class Column extends AbstractElement {
element.x = Math.max(element.x, this.x);
element.y = currentY;
element.prepareRender(doc);
currentY += element.getHeight(doc) + 2;
const elementHeight = element.getHeight(doc);
currentY +=
elementHeight > 0 ? element.getHeight(doc) + 2 : elementHeight;
}
return doc;
}
@@ -53,4 +55,8 @@ export class Column extends AbstractElement {
}
return elements;
}
public isEmpty(): boolean {
return this.elements.length === 0;
}
}

View File

@@ -25,50 +25,52 @@ export class LabelledValues extends Row {
const labelPercent = 100 - valuePercent;
const widthPercent = [labelPercent, valuePercent];
let currentIndex = 0;
if (this.nbrOfCol > 1) {
const nbrPerCol = Math.floor(labelledValues.length / this.nbrOfCol);
const rest = labelledValues.length - nbrPerCol * this.nbrOfCol;
const nbrPerCols = [
rest > 0 ? nbrPerCol + 1 : nbrPerCol,
rest > 1 ? nbrPerCol + 1 : nbrPerCol,
rest > 2 ? nbrPerCol + 1 : nbrPerCol,
];
for (let i = 0; i < this.nbrOfCol; i++) {
this.elements[i] = new Column(0, 0, []);
}
for (let i = 0; i < labelledValues.length; i++) {
if (i < nbrPerCols[0]) {
currentIndex = 0;
} else if (i < nbrPerCols[0] + nbrPerCols[1]) {
currentIndex = 1;
} else {
currentIndex = 2;
if (labelledValues.length > 0) {
if (this.nbrOfCol > 1) {
const nbrPerCol = Math.floor(labelledValues.length / this.nbrOfCol);
const rest = labelledValues.length - nbrPerCol * this.nbrOfCol;
const nbrPerCols = [
rest > 0 ? nbrPerCol + 1 : nbrPerCol,
rest > 1 ? nbrPerCol + 1 : nbrPerCol,
rest > 2 ? nbrPerCol + 1 : nbrPerCol,
];
for (let i = 0; i < this.nbrOfCol; i++) {
this.elements[i] = new Column(0, 0, []);
}
(<Column>this.elements[currentIndex]).elements.push(
new LabelledValue(
labelledValues[i].label,
labelledValues[i].value,
widthPercent,
multiline
for (let i = 0; i < labelledValues.length; i++) {
if (i < nbrPerCols[0]) {
currentIndex = 0;
} else if (i < nbrPerCols[0] + nbrPerCols[1]) {
currentIndex = 1;
} else {
currentIndex = 2;
}
(<Column>this.elements[currentIndex]).elements.push(
new LabelledValue(
labelledValues[i].label,
labelledValues[i].value,
widthPercent,
multiline
)
);
}
} else {
this.elements.push(
new Column(
0,
0,
labelledValues.map(
(libelledValue) =>
new LabelledValue(
libelledValue.label,
libelledValue.value,
widthPercent,
multiline
)
)
)
);
}
} else {
this.elements.push(
new Column(
0,
0,
labelledValues.map(
(libelledValue) =>
new LabelledValue(
libelledValue.label,
libelledValue.value,
widthPercent,
multiline
)
)
)
);
}
}

View File

@@ -83,4 +83,8 @@ export class Row extends AbstractElement {
}
return elements;
}
public isEmpty(): boolean {
return this.elements.length === 0;
}
}

View File

@@ -23,51 +23,53 @@ export class Texts extends Row {
this.nbrOfCol = 4;
}
let currentIndex = 0;
if (this.nbrOfCol > 1) {
const nbrPerCol = Math.floor(texts.length / this.nbrOfCol);
const rest = texts.length - nbrPerCol * this.nbrOfCol;
const nbrPerCols = [
rest > 0 ? nbrPerCol + 1 : nbrPerCol,
rest > 1 ? nbrPerCol + 1 : nbrPerCol,
rest > 2 ? nbrPerCol + 1 : nbrPerCol,
rest > 3 ? nbrPerCol + 1 : nbrPerCol,
];
for (let i = 0; i < this.nbrOfCol; i++) {
this.elements[i] = new Column(0, 0, []);
}
for (let i = 0; i < texts.length; i++) {
if (i < nbrPerCols[0]) {
currentIndex = 0;
} else if (i < nbrPerCols[0] + nbrPerCols[1]) {
currentIndex = 1;
} else if (i < nbrPerCols[0] + nbrPerCols[1] + nbrPerCols[2]) {
currentIndex = 2;
} else {
currentIndex = 3;
if (texts.length > 0) {
if (this.nbrOfCol > 1) {
const nbrPerCol = Math.floor(texts.length / this.nbrOfCol);
const rest = texts.length - nbrPerCol * this.nbrOfCol;
const nbrPerCols = [
rest > 0 ? nbrPerCol + 1 : nbrPerCol,
rest > 1 ? nbrPerCol + 1 : nbrPerCol,
rest > 2 ? nbrPerCol + 1 : nbrPerCol,
rest > 3 ? nbrPerCol + 1 : nbrPerCol,
];
for (let i = 0; i < this.nbrOfCol; i++) {
this.elements[i] = new Column(0, 0, []);
}
(<Column>this.elements[currentIndex]).elements.push(
new Row(0, 0, [
multiline
? new MultilineText(0, 0, texts[i])
: new Text(0, 0, texts[i]),
])
for (let i = 0; i < texts.length; i++) {
if (i < nbrPerCols[0]) {
currentIndex = 0;
} else if (i < nbrPerCols[0] + nbrPerCols[1]) {
currentIndex = 1;
} else if (i < nbrPerCols[0] + nbrPerCols[1] + nbrPerCols[2]) {
currentIndex = 2;
} else {
currentIndex = 3;
}
(<Column>this.elements[currentIndex]).elements.push(
new Row(0, 0, [
multiline
? new MultilineText(0, 0, texts[i])
: new Text(0, 0, texts[i]),
])
);
}
} else {
this.elements.push(
new Column(
0,
0,
texts.map(
(text) =>
new Row(0, 0, [
multiline
? new MultilineText(0, 0, text)
: new Text(0, 0, text),
])
)
)
);
}
} else {
this.elements.push(
new Column(
0,
0,
texts.map(
(text) =>
new Row(0, 0, [
multiline
? new MultilineText(0, 0, text)
: new Text(0, 0, text),
])
)
)
);
}
}