I tried to print different sheet which i selected cell on the same pdf,
so I tried to rewrite webix.print().
It is fail because the print windows always showed the window show,
can you help me with th failure?
My print window show like
type or paste code here
let view = $$("ssheet");
let views = [];
let order = {};
let active = view._activeSheet;
//var html = buildHtml($$("ssheet"));
let doc = webix.html.create("div", {
"class": "webix_ssheet_print"
});
let options = {
"borderless": 1,
"data": "full",
"external": 1,
"fit": "page",
"footer": false,
"header": false,
"margin": {
"top": 72,
"bottom": 72,
"right": 72,
"left": 72
},
"mode": "portrait",
"paper": "A4",
"scroll": false,
"sheetnames": 0,
"sheets":[
'沖壓1',
'沖壓1模具成本'
],
"size": {
"width": 8.27,
"height": 11.7
},
"skiprows": 0,
"trim": true,
"xCorrection": 1,
//"disabled": false
};
var baseIndex = view.$index;
var pageSize = getPageSize(options);
var sheets = options.sheets; // backward compatibility, options.data can be only "selection"
// "current" and "all" are deprecated
var data = options.data;
if (!sheets || data == "current" || data == "selection") {
sheets = ['sheet1,'sheet2'];
} else if (typeof sheets == "string") sheets = [sheets];else if (sheets === true || data == "all") sheets = view._sheets.map(function (sheet) {
return sheet.name;
});
sheets = sheets.filter(function (sheet) {
return isVisible(view, sheet);
});
sheets.forEach(function (name, i) {
view.$index = baseIndex + "_" + i;
var grid = view.$$("cells");
view.showSheet(name);
if(name == "sheet1"){
grid.addSelectArea({
row: 2,
column: 2
}, {
row: 46,
column: 13
});
}else{
grid.addSelectArea({
row: 1,
column: 1
}, {
row: 53,
column: 20
});
}
var prefix = "wss_" + view.$index;
view._print = true;
var table = grid.$customPrint(options, true);
delete view._print;
var tbl = table.firstChild;
var _tbl$children = _slicedToArray(tbl.children, 2),
header = _tbl$children[0],
body = _tbl$children[1];
var topSplit = header.childElementCount;
var sheetName = options.sheetnames ? 20 : 0;
var splitHeight = sheetName;
for (var s = 1; s <= topSplit; s++) {
splitHeight += grid.getItem(s).$height || grid.config.rowHeight;
}
if (splitHeight > pageSize.height / 4) for (var _i = topSplit - 1; _i >= 0; _i--) {
if (body.firstChild) webix.html.insertBefore(header.children[_i], body.firstChild);else body.appendChild(header.children[_i]);
}
if (sheetName) {
var sheetNode = webix.html.create("tr", {
class: "webix_ssheet_sheetname"
}, "<td>".concat(name, ":</td>"));
if (header.firstChild) webix.html.insertBefore(sheetNode, header.firstChild);else header.appendChild(sheetNode);
} //for empty sheet we don't have any HTML
var node = table.firstChild;
if (node && name != active) {
webix.html.removeCss(node, "wss_" + baseIndex);
webix.html.addCss(node, prefix);
}
doc.appendChild(table);
if (options.external) for (var id in view.views._pull) {
var innerView = view.views._pull[id];
if (innerView.type == "image") {
(function () {
var img = webix.html.create("IMG", {
src: innerView.data,
width: (innerView.config.width*2 || 500) + "px",
height: (innerView.config.height*2 || 300) + "px"
});
var promise = webix.promise.defer();
views.push(promise);
img.onload = function () {
return promise.resolve();
};
doc.appendChild(img);
})();
} else {
var externalUI = webix.$$(id).getBody();
if (externalUI.$customPrint) {
var customPrint = externalUI.$customPrint({
size: options.size
}, true);
if (customPrint.then) {
order[views.length] = doc.childElementCount;
views.push(customPrint);
} else doc.appendChild(customPrint);
} else doc.appendChild(printInnerView(webix.$$(id).getBody()));
}
}
if (i + 1 < view._sheets.length) {
var br = webix.html.create("DIV", {
"class": "webix_print_pagebreak"
});
doc.appendChild(br);
}
});
view.$index = baseIndex;
view.showSheet(active);
var html = doc;
var promise = webix.promise.defer();
webix.promise.all(views).then(function (res) {
var keys = Object.keys(order).sort(view.$$("cells").data.sorting.as.int);
for (var i = keys.length - 1; i >= 0; i--) {
var index = keys[i];
doc.insertBefore(res[index], doc.childNodes[order[index]]);
}
webix.html.insertBefore(html, true, document.body);
window.print();
_cleanHtml(view, html);
promise.resolve();
});