Я создаю PDF с jspdf и autoTable, а сборка таблицы с рулями из JSON.
Я пытаюсь получить цвет фона для определенных строк, которые основаны на определенных значениях в столбце. До сих пор мне удавалось окрашивать фон ячеек с определенными значениями. К сожалению, сейчас я застреваю с окрашиванием всех строк этих определенных ячеек.
Примечание: я использую код для построения визуалов в Postman
Это мой код таблицы руля:
<body>
<div id="container" class="container">
<table id = "${pm.info.requestId}" table class="row-border" style="width:100%">
<thead>
<th>Event Type</th>
<th>eventId</th>
<th>validTime</th>
<th>knowledgeTime</th>
<th>assetType</th>
<th>symbol</th>
<th>longShort</th>
<th>custodianAccount</th>
<th>strategy</th>
<th>manager</th>
<th>basket</th>
<th>quantity</th>
<th>nativeCost</th>
<th>commission</th>
<th>fee</th>
<th>Source</th>
<th>Lot<br>Identifier</th>
<th>System<br>Action</th>
<th>COA</th>
<th>financial<br>Account</th>
<th>Inventory State</th>
<th>book cost</th>
</thead>
<tbody>
{{#each response.ledgers}}
<tr>
<td>{{eventType}}</td>
<td>{{eventId}}</td>
<td>{{validTime}}</td>
<td>{{knowledgeTime}}</td>
<td>{{assetType}}</td>
<td>{{symbol}}</td>
<td>{{longShort}}</td>
<td>{{custodianAccount}}</td>
<td>{{strategy}}</td>
<td>{{manager}}</td>
<td>{{basket}}</td>
<td>{{quantity}}</td>
<td>{{nativeCost}}</td>
<td>{{commission}}</td>
<td>{{fee}}</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
{{#each journalEntries}}
{{#each lines}}
<td>Journal Entries</td>
<td>{{../../eventId}}</td>
<td>{{../time}}</td>
<td>{{../../knowledgeTime}}</td>
<td>{{assetType}}</td>
<td>{{symbol}}</td>
<td>{{longShort}}</td>
<td>{{custodianAccount}}</td>
<td>{{strategy}}</td>
<td>{{manager}}</td>
<td>{{basket}}</td>
<td>{{quantity}}</td>
<td>{{nativeCost}}</td>
<td></td>
<td></td>
<td>{{icap}}</td>
<td>{{lotId}}</td>
<td>{{factType}}</td>
<td>{{financialAccountType}}</td>
<td>{{financialAccount}}</td>
<td>{{inventoryState}}</td>
<td>{{bookCost}}</td>
</tr>
{{/each}}
{{/each}}
{{/each}}
</tbody>
</table>
</div>
</body>
И мой код PDF
<script>
function generate() {
//Creation of PDF document
let doc = new jsPDF('l', 'pt');
const totalPagesExp = '{total_pages_count_string}';
var elem = document.getElementById('${pm.info.requestId}');
var data = doc.autoTableHtmlToJson(elem);
doc.autoTable(data.columns, data.rows, {
theme: 'plain',
styles: {
fontSize: 10,
font: 'Montserrat'
},
didParseCell: function (data) {
if(data.cell.text.indexOf('EQUITY_CLOSE_LONG') > -1) {
data.cell.styles.fillColor = [216, 78, 75];
}
if(data.cell.text.indexOf('EQUITY_CLOSE_SHORT') > -1) {
data.cell.styles.fillColor = [216, 78, 75];
}
},
// Footer
var str = "Page " + doc.internal.getNumberOfPages()
// Total page number plugin only available in jspdf v1.0+
if (typeof doc.putTotalPages === 'function') {
str = str + " of " + totalPagesExp;
}
doc.setFontSize(10);
// jsPDF 1.4+ uses getWidth, <1.4 uses .width
var pageSize = doc.internal.pageSize;
var pageHeight = pageSize.height ? pageSize.height : pageSize.getHeight();
doc.text(str, data.settings.margin.left, pageHeight - 10);
},
margin: {top: 100}
});
// Total page number plugin only available in jspdf v1.0+
if (typeof doc.putTotalPages === 'function') {
doc.putTotalPages(totalPagesExp);
}
doc.save('tabled.pdf');
}
</script>
Надеюсь, у кого-то есть идея, спасибо!
РЕДАКТИРОВАТЬ: Вот фотографии того, что у меня есть сейчас и что я хотел бы иметь в качестве конечного результата.
Результат сейчас
Желаемый результат, когда вся строка имеет цвет, основанный на значении ячейки