|
@@ -109,6 +109,8 @@ let visualJumbo = {
|
|
|
if (cell.backColor() !== 'White') {
|
|
|
//0. 设置UI
|
|
|
$(`#visElementFonts`)[0].removeAttribute("disabled");
|
|
|
+ $("#elementBordersVis")[0].removeAttribute("disabled");
|
|
|
+ $("#elementControlsVis")[0].removeAttribute("disabled");
|
|
|
$(`#visRdIsText`)[0].removeAttribute("disabled");
|
|
|
$(`#visRdIsField`)[0].removeAttribute("disabled");
|
|
|
$(`#eleIsAutoHeightVis`)[0].removeAttribute("disabled");
|
|
@@ -117,7 +119,15 @@ let visualJumbo = {
|
|
|
//1. font
|
|
|
let fontAttr = me.bandMappingObj.fontAttr[row + "_" + col + "_font"];
|
|
|
if (fontAttr) {
|
|
|
- me.private_setup_font(fontAttr);
|
|
|
+ me._setupFont(fontAttr);
|
|
|
+ }
|
|
|
+ let borderAttr = me.bandMappingObj.borderAttr[row + "_" + col + "_border"];
|
|
|
+ if (borderAttr) {
|
|
|
+ me._setupBorder(borderAttr);
|
|
|
+ }
|
|
|
+ let ctrlAttr = me.bandMappingObj.ctrlAttr[row + "_" + col + "_ctrl"];
|
|
|
+ if (ctrlAttr) {
|
|
|
+ me._setupCtrl(ctrlAttr);
|
|
|
}
|
|
|
//2. alignment
|
|
|
switch (cell.hAlign()) {
|
|
@@ -199,6 +209,8 @@ let visualJumbo = {
|
|
|
}
|
|
|
} else {
|
|
|
$("#visElementFonts")[0].disabled = "disabled" ;
|
|
|
+ $("#elementBordersVis")[0].disabled = "disabled" ;
|
|
|
+ $("#elementControlsVis")[0].disabled = "disabled" ;
|
|
|
$("#visRdIsText")[0].disabled = "disabled" ;
|
|
|
$("#visRdIsField")[0].disabled = "disabled" ;
|
|
|
$("#eleIsAutoHeightVis")[0].disabled = "disabled" ;
|
|
@@ -500,7 +512,7 @@ let visualJumbo = {
|
|
|
fontAttr[JV.FONT_PROPS[JV.FONT_PROP_IDX_ANGLE]] = 0; //angle
|
|
|
}
|
|
|
me.bandMappingObj.fontAttr[selectedRanges[0].row + "_" + selectedRanges[0].col + "_font"] = fontAttr;
|
|
|
- me.private_setup_font(fontAttr);
|
|
|
+ me._setupFont(fontAttr);
|
|
|
if (typeof fontAttr === 'string') {
|
|
|
let idx = rpt_tpl_cfg_helper.reportCfg.fontArr.indexOf(fontAttr);
|
|
|
fontAttr = rpt_tpl_cfg_helper.reportCfg.fonts[idx];
|
|
@@ -575,6 +587,119 @@ let visualJumbo = {
|
|
|
sheet.resumePaint();
|
|
|
}
|
|
|
},
|
|
|
+ _setupCtrl: function (ctrlAttr) {
|
|
|
+ let idx = rpt_tpl_cfg_helper.reportCfg.controlArr.indexOf(ctrlAttr);
|
|
|
+ let ctrl = rpt_tpl_cfg_helper.reportCfg.ctrls[idx];
|
|
|
+ $("#elementControlsVis")[0].selectedIndex = idx;
|
|
|
+ $("#elementAlignmentHorizonVis").get(0).selectedIndex = JV.OUTPUT_ALIGN.H.indexOf(ctrl[JV.CONTROL_PROPS[2]]);
|
|
|
+ $("#elementAlignmentVerticalVis").get(0).selectedIndex = JV.OUTPUT_ALIGN.V.indexOf(ctrl[JV.CONTROL_PROPS[3]]);
|
|
|
+ $("#eleShrinkVis").get(0).checked = stringUtil.convertStrToBoolean(ctrl[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_SHRINK]]);
|
|
|
+ $("#eleShowZeroVis").get(0).checked = stringUtil.convertStrToBoolean(ctrl[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_SHOW_ZERO]]);
|
|
|
+ $("#eleAutoWrapVis").get(0).checked = stringUtil.convertStrToBoolean(ctrl[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_WRAP]]);
|
|
|
+ $("#eleIsShrinkFirstVis").get(0).checked = stringUtil.convertStrToBoolean(ctrl[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_SHRINK_FIRST]]);
|
|
|
+ $("#eleCloseOutputVis").get(0).checked = stringUtil.convertStrToBoolean(ctrl[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_CLOSE_OUTPUT]]);
|
|
|
+ },
|
|
|
+ _setupCellCtrlEx: function (ctrlObj) {
|
|
|
+ // 原:setupCellAlignment
|
|
|
+ let me = visualJumbo, sheet = me.tplWorkBook.getActiveSheet();
|
|
|
+ let selectedRanges = sheet.getSelections();
|
|
|
+ if (selectedRanges.length > 0) {
|
|
|
+ // let cell = sheet.getCell(selectedRanges[0].row, selectedRanges[0].col);
|
|
|
+ sheet.suspendPaint();
|
|
|
+ for (let iRow = 0; iRow < selectedRanges[0].rowCount; iRow++) {
|
|
|
+ for (let iCol = 0; iCol < selectedRanges[0].colCount; iCol++) {
|
|
|
+ let cell = sheet.getCell(selectedRanges[0].row + iRow, selectedRanges[0].col + iCol);
|
|
|
+ //1. horizon alignment
|
|
|
+ if (ctrlObj[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]] === 'center') {
|
|
|
+ cell.hAlign(GC.Spread.Sheets.HorizontalAlign.center);
|
|
|
+ } else if (ctrlObj[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]] === 'left') {
|
|
|
+ cell.hAlign(GC.Spread.Sheets.HorizontalAlign.left);
|
|
|
+ } else {
|
|
|
+ cell.hAlign(GC.Spread.Sheets.HorizontalAlign.right);
|
|
|
+ }
|
|
|
+ //2. vertical alignment
|
|
|
+ if (ctrlObj[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === 'center') {
|
|
|
+ cell.vAlign(GC.Spread.Sheets.VerticalAlign.center);
|
|
|
+ } else if (ctrlObj[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === 'bottom') {
|
|
|
+ cell.vAlign(GC.Spread.Sheets.VerticalAlign.bottom);
|
|
|
+ } else {
|
|
|
+ cell.vAlign(GC.Spread.Sheets.VerticalAlign.top);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sheet.resumePaint();
|
|
|
+ }
|
|
|
+ },
|
|
|
+ _setupBorder: function (borderAttr) {
|
|
|
+ let idx = rpt_tpl_cfg_helper.reportCfg.borderArr.indexOf(borderAttr);
|
|
|
+ let border = rpt_tpl_cfg_helper.reportCfg.styles[idx];
|
|
|
+ $("#elementBordersVis")[0].selectedIndex = idx;
|
|
|
+ for (let borderLine of border[JV.PROP_BORDER_STYLE]) {
|
|
|
+ switch (borderLine[JV.PROP_POSITION]) {
|
|
|
+ case JV.PROP_LEFT:
|
|
|
+ $("#eleBorderLeftVis").get(0).value = borderLine[JV.PROP_LINE_WEIGHT];
|
|
|
+ break;
|
|
|
+ case JV.PROP_RIGHT:
|
|
|
+ $("#eleBorderRightVis").get(0).value = borderLine[JV.PROP_LINE_WEIGHT];
|
|
|
+ break;
|
|
|
+ case JV.PROP_TOP:
|
|
|
+ $("#eleBorderTopVis").get(0).value = borderLine[JV.PROP_LINE_WEIGHT];
|
|
|
+ break;
|
|
|
+ case JV.PROP_BOTTOM:
|
|
|
+ $("#eleBorderBottomVis").get(0).value = borderLine[JV.PROP_LINE_WEIGHT];
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ _setupCellBorderEx: function (borderObj) {
|
|
|
+ let me = visualJumbo, sheet = me.tplWorkBook.getActiveSheet();
|
|
|
+ let selectedRanges = sheet.getSelections();
|
|
|
+ if (selectedRanges.length > 0) {
|
|
|
+ sheet.suspendPaint();
|
|
|
+ let borderLine = new GC.Spread.Sheets.LineBorder;
|
|
|
+ let borderEmpty = new GC.Spread.Sheets.LineBorder;
|
|
|
+ let borderThick = new GC.Spread.Sheets.LineBorder;
|
|
|
+ borderLine.color = "Black";
|
|
|
+ borderEmpty.color = "Black";
|
|
|
+ borderThick.color = "Black";
|
|
|
+ borderEmpty.style = GC.Spread.Sheets.LineStyle.empty;
|
|
|
+ borderLine.style = GC.Spread.Sheets.LineStyle.thin;
|
|
|
+ borderThick.style = GC.Spread.Sheets.LineStyle.thick;
|
|
|
+
|
|
|
+ let cellRange = new GC.Spread.Sheets.CellRange(sheet, selectedRanges[0].row, selectedRanges[0].col, selectedRanges[0].rowCount, selectedRanges[0].colCount);
|
|
|
+
|
|
|
+ const _setCB = function (lineThick, borderObj) {
|
|
|
+ if (lineThick === 0) {
|
|
|
+ cellRange.setBorder(borderEmpty, borderObj);
|
|
|
+ } else if (lineThick === 1) {
|
|
|
+ cellRange.setBorder(borderLine, borderObj);
|
|
|
+ } else {
|
|
|
+ cellRange.setBorder(borderThick, borderObj);
|
|
|
+ }
|
|
|
+ };
|
|
|
+ for (let borderLine of borderObj[JV.PROP_BORDER_STYLE]) {
|
|
|
+ switch (borderLine[JV.PROP_POSITION]) {
|
|
|
+ case JV.PROP_LEFT:
|
|
|
+ _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {left: true});
|
|
|
+ break;
|
|
|
+ case JV.PROP_RIGHT:
|
|
|
+ _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {right: true});
|
|
|
+ break;
|
|
|
+ case JV.PROP_TOP:
|
|
|
+ _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {top: true});
|
|
|
+ break;
|
|
|
+ case JV.PROP_BOTTOM:
|
|
|
+ _setCB(parseInt(borderLine[JV.PROP_LINE_WEIGHT]), {bottom: true});
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sheet.resumePaint();
|
|
|
+ }
|
|
|
+ },
|
|
|
setupCellBorder: function () {
|
|
|
let me = visualJumbo, sheet = me.tplWorkBook.getActiveSheet();
|
|
|
let selectedRanges = sheet.getSelections();
|
|
@@ -617,7 +742,7 @@ let visualJumbo = {
|
|
|
}
|
|
|
cell.font(fontStr);
|
|
|
},
|
|
|
- private_setup_font: function(fontAttr) {
|
|
|
+ _setupFont: function(fontAttr) {
|
|
|
if (typeof fontAttr === "string" && fontAttr !== "自定义") {
|
|
|
$("#visElementFontNames")[0].disabled = "disabled" ;
|
|
|
$("#visEleFontSize")[0].disabled = "disabled" ;
|
|
@@ -702,6 +827,37 @@ let visualJumbo = {
|
|
|
dom.className = "btn btn-sm btn-outline-secondary";
|
|
|
}
|
|
|
},
|
|
|
+ changeBorderEx: function (dom) {
|
|
|
+ let me = visualJumbo, borderAttr = dom.value,
|
|
|
+ sheet = me.tplWorkBook.getActiveSheet();
|
|
|
+ let selectedRanges = sheet.getSelections();
|
|
|
+ if (selectedRanges.length > 0) {
|
|
|
+ // let cell = sheet.getCell(selectedRanges[0].row, selectedRanges[0].col);
|
|
|
+ me.bandMappingObj.borderAttr[selectedRanges[0].row + "_" + selectedRanges[0].col + "_border"] = borderAttr;
|
|
|
+ me._setupBorder(borderAttr);
|
|
|
+ // 然后要设置相关Cell的边框
|
|
|
+ if (typeof borderAttr === 'string') {
|
|
|
+ let idx = rpt_tpl_cfg_helper.reportCfg.borderArr.indexOf(borderAttr);
|
|
|
+ borderAttr = rpt_tpl_cfg_helper.reportCfg.styles[idx];
|
|
|
+ }
|
|
|
+ me._setupCellBorderEx(borderAttr);
|
|
|
+ }
|
|
|
+ },
|
|
|
+ changeControlEx: function (dom) {
|
|
|
+ let me = visualJumbo, ctrlAttr = dom.value,
|
|
|
+ sheet = me.tplWorkBook.getActiveSheet();
|
|
|
+ let selectedRanges = sheet.getSelections();
|
|
|
+ if (selectedRanges.length > 0) {
|
|
|
+ me.bandMappingObj.ctrlAttr[selectedRanges[0].row + "_" + selectedRanges[0].col + "_ctrl"] = ctrlAttr;
|
|
|
+ me._setupCtrl(ctrlAttr);
|
|
|
+ // 然后要设置相关Cell的上下左右控制(就是原setupCellAlignment)
|
|
|
+ if (typeof ctrlAttr === 'string') {
|
|
|
+ let idx = rpt_tpl_cfg_helper.reportCfg.controlArr.indexOf(ctrlAttr);
|
|
|
+ ctrlAttr = rpt_tpl_cfg_helper.reportCfg.ctrls[idx];
|
|
|
+ }
|
|
|
+ me._setupCellCtrlEx(ctrlAttr);
|
|
|
+ }
|
|
|
+ },
|
|
|
changeHAlign: function (dom) {
|
|
|
let me = this;
|
|
|
if (dom.className === "btn btn-sm btn-outline-secondary") {
|
|
@@ -1284,62 +1440,16 @@ let visualJumbo = {
|
|
|
return rst;
|
|
|
},
|
|
|
private_getBorderByCellProperties: function (cell) {
|
|
|
- let rst = 'Default_None';
|
|
|
- let border = cell.borderLeft();
|
|
|
- if (border && border.style === GC.Spread.Sheets.LineStyle.thin) {
|
|
|
- rst = 'Default_Normal'
|
|
|
- } else {
|
|
|
- border = cell.borderBottom();
|
|
|
- if (border && border.style === GC.Spread.Sheets.LineStyle.thin) {
|
|
|
- rst = 'Label_Underline'
|
|
|
- }
|
|
|
+ let me = this, rst = 'Default_None';
|
|
|
+ if (me.bandMappingObj.borderAttr[cell.row + "_" + cell.col + "_border"]) {
|
|
|
+ rst = me.bandMappingObj.borderAttr[cell.row + "_" + cell.col + "_border"];
|
|
|
}
|
|
|
return rst;
|
|
|
},
|
|
|
private_getCtrlByCellProperties: function (cell) {
|
|
|
- let rst = 'Default';
|
|
|
- let border = cell.borderLeft();
|
|
|
- if (cell.vAlign() === GC.Spread.Sheets.VerticalAlign.center) {
|
|
|
- if (border && border.style === GC.Spread.Sheets.LineStyle.thin) {
|
|
|
- switch (cell.hAlign()) {
|
|
|
- case GC.Spread.Sheets.HorizontalAlign.center:
|
|
|
- rst = `Column`;
|
|
|
- break;
|
|
|
- case GC.Spread.Sheets.HorizontalAlign.right:
|
|
|
- rst = `Column_Right`;
|
|
|
- break;
|
|
|
- case GC.Spread.Sheets.HorizontalAlign.left:
|
|
|
- default:
|
|
|
- rst = `Column_Left`;
|
|
|
- break;
|
|
|
- }
|
|
|
- } else {
|
|
|
- switch (cell.hAlign()) {
|
|
|
- case GC.Spread.Sheets.HorizontalAlign.center:
|
|
|
- rst = `Title`;
|
|
|
- break;
|
|
|
- case GC.Spread.Sheets.HorizontalAlign.right:
|
|
|
- rst = `Header_Right`;
|
|
|
- break;
|
|
|
- case GC.Spread.Sheets.HorizontalAlign.left:
|
|
|
- default:
|
|
|
- rst = `Header`;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- } else {
|
|
|
- switch (cell.hAlign()) {
|
|
|
- case GC.Spread.Sheets.HorizontalAlign.center:
|
|
|
- rst = `Content_Center`;
|
|
|
- break;
|
|
|
- case GC.Spread.Sheets.HorizontalAlign.right:
|
|
|
- rst = `Content_Right`;
|
|
|
- break;
|
|
|
- case GC.Spread.Sheets.HorizontalAlign.left:
|
|
|
- default:
|
|
|
- rst = `Content_Left`;
|
|
|
- break;
|
|
|
- }
|
|
|
+ let me = this, rst = 'Default';
|
|
|
+ if (me.bandMappingObj.ctrlAttr[cell.row + "_" + cell.col + "_ctrl"]) {
|
|
|
+ rst = me.bandMappingObj.ctrlAttr[cell.row + "_" + cell.col + "_ctrl"];
|
|
|
}
|
|
|
return rst;
|
|
|
}
|