如何在Angular2 +中的autoTable jspdf中根据条件更改单元格的文本颜色
How to change the text color of the cell on condition in autoTable jspdf in Angular2+
如果 'Target Data Type' 和 'Data Type Verified' 标题列的值不同,我想将文本颜色更改为红色并使用 autoTable jspdf 将其设为粗体。我尝试了一个代码,但它不起作用。我是用Angular2+写的。
capture() {
var doc = new jspdf('l', 'pt', 'a4');
var cols= [ { title: 'Target Data Type', dataKey: 'tdataType' }, { title: 'Source Field Name', dataKey: 'sourceFieldName' },
{ title: 'Data Type Verified', dataKey: 'datatypeVerified' }]
var tableData =[];
for(var i = 0 ; i <this.responseData.length; i ++){
tableData.push(
'tdataType': this.responseData[i].tdataType ,
'sourceFieldName' :this.responseData[i]. sourceFieldName ,'datatypeVerified' :this.responseData[i].datatypeVerified })
}
doc.autoTable(cols,tableData, {
didParseCell: function(cell,data) {
var tdElement;
var tdElement2 ;
if(cell.raw == 'Target Data Type'){
tdElement = cell.raw.tdataType;
}
if ( cell.raw == 'Data Type Verified' ) {
tdElement2 = cell.raw.datatypeVerified;
}
if(tdElement != tdElement2){
cell.styles.textColor = [255,0,0];
cell.styles.fontStyle = 'bold';
}
}
})
document.getElementById('obj').dataset.data = doc.output("datauristring");
var blob = doc.output("blob");
window.open(URL.createObjectURL(blob));
}
我解决了这个问题。通过遵循此代码 -
capture() {
var doc = new jspdf('l', 'pt', 'a4');
var cols= [{ title: 'Id', dataKey: 'id' },
{ title: 'Source-Field Resolved Path', dataKey: 'sourceName' }, { title: 'Target Data Type', dataKey: 'tdataType' },
{ title: 'Data Type Verified', dataKey: 'datatypeVerified' }]
var tableData =[];
for(var i = 0 ; i <this.responseData.length; i ++){
tableData.push({'id':this.responseData[i].id, 'sourceName': this.responseData[i]. sourceName ,'tdataType': this.responseData[i].tdataType , 'datatypeVerified' :this.responseData[i].datatypeVerified,'backgroundColor': this.responseData[i].backgroundColor })
}
doc.autoTable(cols,tableData, {
didParseCell: function(cell,data) {
console.log("Data = ", data)
console.log("cell = ", cell)
var tdElement;
tdElement = cell.row.raw.backgroundColor
console.log("tdElement = ", tdElement)
if(tdElement == false && cell.column.raw.dataKey =="datatypeVerified" ){
cell.cell.styles.fontStyle = 'bold';
cell.cell.styles.textColor = [255,0,0]
}
}
}
document.getElementById('obj').dataset.data = doc.output("datauristring");
var blob = doc.output("blob");
window.open(URL.createObjectURL(blob));
}
如果 'Target Data Type' 和 'Data Type Verified' 标题列的值不同,我想将文本颜色更改为红色并使用 autoTable jspdf 将其设为粗体。我尝试了一个代码,但它不起作用。我是用Angular2+写的。
capture() {
var doc = new jspdf('l', 'pt', 'a4');
var cols= [ { title: 'Target Data Type', dataKey: 'tdataType' }, { title: 'Source Field Name', dataKey: 'sourceFieldName' },
{ title: 'Data Type Verified', dataKey: 'datatypeVerified' }]
var tableData =[];
for(var i = 0 ; i <this.responseData.length; i ++){
tableData.push(
'tdataType': this.responseData[i].tdataType ,
'sourceFieldName' :this.responseData[i]. sourceFieldName ,'datatypeVerified' :this.responseData[i].datatypeVerified })
}
doc.autoTable(cols,tableData, {
didParseCell: function(cell,data) {
var tdElement;
var tdElement2 ;
if(cell.raw == 'Target Data Type'){
tdElement = cell.raw.tdataType;
}
if ( cell.raw == 'Data Type Verified' ) {
tdElement2 = cell.raw.datatypeVerified;
}
if(tdElement != tdElement2){
cell.styles.textColor = [255,0,0];
cell.styles.fontStyle = 'bold';
}
}
})
document.getElementById('obj').dataset.data = doc.output("datauristring");
var blob = doc.output("blob");
window.open(URL.createObjectURL(blob));
}
我解决了这个问题。通过遵循此代码 -
capture() {
var doc = new jspdf('l', 'pt', 'a4');
var cols= [{ title: 'Id', dataKey: 'id' },
{ title: 'Source-Field Resolved Path', dataKey: 'sourceName' }, { title: 'Target Data Type', dataKey: 'tdataType' },
{ title: 'Data Type Verified', dataKey: 'datatypeVerified' }]
var tableData =[];
for(var i = 0 ; i <this.responseData.length; i ++){
tableData.push({'id':this.responseData[i].id, 'sourceName': this.responseData[i]. sourceName ,'tdataType': this.responseData[i].tdataType , 'datatypeVerified' :this.responseData[i].datatypeVerified,'backgroundColor': this.responseData[i].backgroundColor })
}
doc.autoTable(cols,tableData, {
didParseCell: function(cell,data) {
console.log("Data = ", data)
console.log("cell = ", cell)
var tdElement;
tdElement = cell.row.raw.backgroundColor
console.log("tdElement = ", tdElement)
if(tdElement == false && cell.column.raw.dataKey =="datatypeVerified" ){
cell.cell.styles.fontStyle = 'bold';
cell.cell.styles.textColor = [255,0,0]
}
}
}
document.getElementById('obj').dataset.data = doc.output("datauristring");
var blob = doc.output("blob");
window.open(URL.createObjectURL(blob));
}