Browse Source

feat(hide column): hide column

hide column
master
wpxp123456 5 years ago
parent
commit
9f05959d4d
  1. 10
      src/controllers/constant.js
  2. 20
      src/controllers/controlHistory.js
  3. 88
      src/controllers/rowColumnOperation.js
  4. 164
      src/global/draw.js
  5. 29
      src/global/rhchInit.js
  6. 2
      src/locale/en.js

10
src/controllers/constant.js

@ -395,6 +395,16 @@ function rightclickHTML(){
${rightclick.showHide}${rightclick.row}
</div>
</div>
<div id="luckysheet-hidCols" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
<div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
${rightclick.hideSelected}${rightclick.column}
</div>
</div>
<div id="luckysheet-showHidCols" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">
<div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">
${rightclick.showHide}${rightclick.column}
</div>
</div>
</div>
<div id="luckysheetCellsHandleDel_sub" class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel">
<div id="luckysheet-delCellsMoveLeft" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel">

20
src/controllers/controlHistory.js

@ -154,6 +154,16 @@ const controlHistory = {
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
}
else if (ctr.type == "showHidCols") { // 隐藏、显示列 撤销操作
//config
Store.config = ctr.config;
Store.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = ctr.config;
server.saveParam("cg", ctr.sheetIndex, ctr.config["colhidden"], { "k": "colhidden" });
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
}
else if (ctr.type == "datachangeAll") {
formula.execFunctionGroup();
jfrefreshgridall(ctr.data[0].length, ctr.data.length, ctr.data, null, ctr.range, "datachangeAll", ctr.ctrlValue);
@ -405,6 +415,16 @@ const controlHistory = {
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
}
else if (ctr.type == "showHidCols") { // 隐藏、显示列 重做操作
//config
Store.config = ctr.curconfig;
Store.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = ctr.curconfig;
server.saveParam("cg", ctr.sheetIndex, ctr.curconfig["colhidden"], { "k": "colhidden" });
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
}
else if (ctr.type == "datachangeAll") {
formula.execFunctionGroup();
jfrefreshgridall(ctr.curdata[0].length, ctr.curdata.length, ctr.curdata, null, ctr.currange, "datachangeAll", ctr.ctrlValue);

88
src/controllers/rowColumnOperation.js

@ -1295,9 +1295,7 @@ export function rowColumnOperationInitial(){
for(let s = 0; s < Store.luckysheet_select_save.length; s++){
let r1 = Store.luckysheet_select_save[s].row[0],
r2 = Store.luckysheet_select_save[s].row[1],
c1 = Store.luckysheet_select_save[s].column[0],
c2 = Store.luckysheet_select_save[s].column[1];
r2 = Store.luckysheet_select_save[s].row[1];
for(let r = r1; r <= r2; r++){
cfg["rowhidden"][r] = 0;
@ -1336,9 +1334,7 @@ export function rowColumnOperationInitial(){
for(let s = 0; s < Store.luckysheet_select_save.length; s++){
let r1 = Store.luckysheet_select_save[s].row[0],
r2 = Store.luckysheet_select_save[s].row[1],
c1 = Store.luckysheet_select_save[s].column[0],
c2 = Store.luckysheet_select_save[s].column[1];
r2 = Store.luckysheet_select_save[s].row[1];
for(let r = r1; r <= r2; r++){
delete cfg["rowhidden"][r];
@ -1367,6 +1363,86 @@ export function rowColumnOperationInitial(){
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
})
//隐藏、显示列
$("#luckysheet-hidCols").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
let cfg = $.extend(true, {}, Store.config);
if(cfg["colhidden"] == null){
cfg["colhidden"] = {};
}
for(let s = 0; s < Store.luckysheet_select_save.length; s++){
let c1 = Store.luckysheet_select_save[s].column[0],
c2 = Store.luckysheet_select_save[s].column[1];
for(let c = c1; c <= c2; c++){
cfg["colhidden"][c] = 0;
}
}
//保存撤销
if(Store.clearjfundo){
let redo = {};
redo["type"] = "showHidCols";
redo["sheetIndex"] = Store.currentSheetIndex;
redo["config"] = $.extend(true, {}, Store.config);
redo["curconfig"] = cfg;
Store.jfundo = [];
Store.jfredo.push(redo);
}
//config
Store.config = cfg;
Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
server.saveParam("cg", Store.currentSheetIndex, cfg["colhidden"], { "k": "colhidden" });
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
})
$("#luckysheet-showHidCols").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
luckysheetContainerFocus();
let cfg = $.extend(true, {}, Store.config);
if(cfg["colhidden"] == null){
return;
}
for(let s = 0; s < Store.luckysheet_select_save.length; s++){
let c1 = Store.luckysheet_select_save[s].column[0],
c2 = Store.luckysheet_select_save[s].column[1];
for(let c = c1; c <= c2; c++){
delete cfg["colhidden"][c];
}
}
//保存撤销
if(Store.clearjfundo){
let redo = {};
redo["type"] = "showHidCols";
redo["sheetIndex"] = Store.currentSheetIndex;
redo["config"] = $.extend(true, {}, Store.config);
redo["curconfig"] = cfg;
Store.jfundo = [];
Store.jfredo.push(redo);
}
//config
Store.config = cfg;
Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].config = Store.config;
server.saveParam("cg", Store.currentSheetIndex, cfg["colhidden"], { "k": "colhidden" });
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
})
//删除单元格(左移、上移)
$("#luckysheet-delCellsMoveLeft").click(function (event) {
$("#luckysheet-rightclick-menu").hide();

164
src/global/draw.js

@ -223,28 +223,33 @@ function luckysheetDrawgridColumnTitle(scrollWidth, drawWidth, offsetLeft) {
// if(end_c > scrollWidth + drawWidth+1){
// break;
// }
if (Store.config["colhidden"] != null && Store.config["colhidden"][c] != null) {
luckysheetTableContent.fillStyle = "#ffffff";
luckysheetTableContent.fillRect(
(start_c + offsetLeft - 1) ,
0,
(end_c - start_c) ,
Store.columeHeaderHeight -1
)
luckysheetTableContent.fillStyle = "#000000";
}
else {
luckysheetTableContent.fillStyle = "#ffffff";
luckysheetTableContent.fillRect(
(start_c + offsetLeft - 1) ,
0,
(end_c - start_c) ,
Store.columeHeaderHeight -1
)
luckysheetTableContent.fillStyle = "#000000";
//列标题栏序列号
luckysheetTableContent.save();//save scale before draw text
luckysheetTableContent.scale(Store.zoomRatio,Store.zoomRatio);
let abc = chatatABC(c);
let textMetrics = getMeasureText(abc, luckysheetTableContent);
//luckysheetTableContent.measureText(abc);
//列标题栏序列号
luckysheetTableContent.save();//save scale before draw text
luckysheetTableContent.scale(Store.zoomRatio,Store.zoomRatio);
let abc = chatatABC(c);
let textMetrics = getMeasureText(abc, luckysheetTableContent);
//luckysheetTableContent.measureText(abc);
let horizonAlignPos = Math.round((start_c + (end_c - start_c) / 2 + offsetLeft) - textMetrics.width / 2);
let verticalAlignPos = Math.round(Store.columeHeaderHeight / 2 );
luckysheetTableContent.fillText(abc, horizonAlignPos/Store.zoomRatio, verticalAlignPos/Store.zoomRatio);
luckysheetTableContent.restore();//restore scale after draw text
let horizonAlignPos = Math.round((start_c + (end_c - start_c) / 2 + offsetLeft) - textMetrics.width / 2);
let verticalAlignPos = Math.round(Store.columeHeaderHeight / 2 );
luckysheetTableContent.fillText(abc, horizonAlignPos/Store.zoomRatio, verticalAlignPos/Store.zoomRatio);
luckysheetTableContent.restore();//restore scale after draw text
}
//列标题栏竖线 vertical
luckysheetTableContent.beginPath();
@ -465,6 +470,10 @@ function luckysheetDrawMain(scrollWidth, scrollHeight, drawWidth, drawHeight, of
}
let end_r = Store.visibledatarow[r] - scrollHeight;
if (Store.config["rowhidden"] != null && Store.config["rowhidden"][r] != null) {
continue;
}
for (let c = dataset_col_st; c <= dataset_col_ed; c++) {
let start_c;
@ -477,78 +486,77 @@ function luckysheetDrawMain(scrollWidth, scrollHeight, drawWidth, drawHeight, of
let end_c = Store.visibledatacolumn[c] - scrollWidth;
if (Store.config["rowhidden"] != null && Store.config["rowhidden"][r] != null) {
if (Store.config["colhidden"] != null && Store.config["colhidden"][c] != null) {
continue
}
let firstcolumnlen = Store.defaultcollen;
if (Store.config["columnlen"] != null && Store.config["columnlen"][c] != null) {
firstcolumnlen = Store.config["columnlen"][c];
}
else {
let firstcolumnlen = Store.defaultcollen;
if (Store.config["columnlen"] != null && Store.config["columnlen"][c] != null) {
firstcolumnlen = Store.config["columnlen"][c];
}
if (Store.flowdata[r] != null && Store.flowdata[r][c] != null) {
let value = Store.flowdata[r][c];
if (Store.flowdata[r] != null && Store.flowdata[r][c] != null) {
let value = Store.flowdata[r][c];
if(getObjType(value) == "object" && ("mc" in value)){
borderOffset[r + "_" + c] = {
"start_r": start_r,
"start_c": start_c,
"end_r": end_r,
"end_c": end_c
};
if(getObjType(value) == "object" && ("mc" in value)){
borderOffset[r + "_" + c] = {
"start_r": start_r,
"start_c": start_c,
"end_r": end_r,
"end_c": end_c
};
if("rs" in value["mc"]){
let key = "r"+ r + "c" + c;
if("rs" in value["mc"]){
let key = "r"+ r + "c" + c;
mergeCache[key] = cellupdate.length;
}
else{
let key = "r"+ value["mc"].r + "c" + value["mc"].c;
let margeMain = cellupdate[mergeCache[key]];
if(margeMain == null){
mergeCache[key] = cellupdate.length;
cellupdate.push({
"r": r,
"c": c,
"start_c": start_c,
"start_r": start_r,
"end_r": end_r,
"end_c": end_c,
"firstcolumnlen": firstcolumnlen,
});
}
else{
let key = "r"+ value["mc"].r + "c" + value["mc"].c;
let margeMain = cellupdate[mergeCache[key]];
if(margeMain == null){
mergeCache[key] = cellupdate.length;
cellupdate.push({
"r": r,
"c": c,
"start_c": start_c,
"start_r": start_r,
"end_r": end_r,
"end_c": end_c,
"firstcolumnlen": firstcolumnlen,
});
if(margeMain.c == c){
margeMain.end_r += (end_r - start_r - 1);
}
else{
if(margeMain.c == c){
margeMain.end_r += (end_r - start_r - 1);
}
if(margeMain.r == r){
margeMain.end_c += (end_c - start_c);
margeMain.firstcolumnlen += firstcolumnlen;
}
if(margeMain.r == r){
margeMain.end_c += (end_c - start_c);
margeMain.firstcolumnlen += firstcolumnlen;
}
continue;
}
continue;
}
}
cellupdate.push({
"r": r,
"c": c,
"start_r": start_r,
"start_c": start_c,
"end_r": end_r,
"end_c": end_c,
"firstcolumnlen": firstcolumnlen,
});
borderOffset[r + "_" + c] = {
"start_r": start_r,
"start_c": start_c,
"end_r": end_r,
"end_c": end_c
};
}
cellupdate.push({
"r": r,
"c": c,
"start_r": start_r,
"start_c": start_c,
"end_r": end_r,
"end_c": end_c,
"firstcolumnlen": firstcolumnlen,
});
borderOffset[r + "_" + c] = {
"start_r": start_r,
"start_c": start_c,
"end_r": end_r,
"end_c": end_c
};
}
}

29
src/global/rhchInit.js

@ -8,21 +8,19 @@ export default function rhchInit(rowheight, colwidth) {
Store.visibledatarow = [];
Store.rh_height = 0;
for (let i = 0; i < rowheight; i++) {
for (let r = 0; r < rowheight; r++) {
let rowlen = Store.defaultrowlen;
if (Store.config["rowlen"] != null && Store.config["rowlen"][i] != null) {
rowlen = Store.config["rowlen"][i];
if (Store.config["rowlen"] != null && Store.config["rowlen"][r] != null) {
rowlen = Store.config["rowlen"][r];
}
if (Store.config["rowhidden"] != null && Store.config["rowhidden"][i] != null) {
rowlen = Store.config["rowhidden"][i];
if (Store.config["rowhidden"] != null && Store.config["rowhidden"][r] != null) {
Store.visibledatarow.push(Store.rh_height);
continue;
}
else {
Store.rh_height += Math.round((rowlen + 1)*Store.zoomRatio);
}
Store.rh_height += Math.round((rowlen + 1) * Store.zoomRatio);
Store.visibledatarow.push(Store.rh_height); //行的临时长度分布
}
@ -37,14 +35,14 @@ export default function rhchInit(rowheight, colwidth) {
let maxColumnlen = 120;
for (let i = 0; i < colwidth; i++) {
for (let c = 0; c < colwidth; c++) {
let firstcolumnlen = Store.defaultcollen;
if (Store.config["columnlen"] != null && Store.config["columnlen"][i] != null) {
firstcolumnlen = Store.config["columnlen"][i];
if (Store.config["columnlen"] != null && Store.config["columnlen"][c] != null) {
firstcolumnlen = Store.config["columnlen"][c];
}
else {
if (Store.flowdata[0] != null && Store.flowdata[0][i] != null) {
if (Store.flowdata[0] != null && Store.flowdata[0][c] != null) {
if (firstcolumnlen > 300) {
firstcolumnlen = 300;
}
@ -57,11 +55,16 @@ export default function rhchInit(rowheight, colwidth) {
Store.config["columnlen"] = {};
}
Store.config["columnlen"][i] = firstcolumnlen;
Store.config["columnlen"][c] = firstcolumnlen;
}
}
}
if(Store.config["colhidden"] != null && Store.config["colhidden"][c] != null){
Store.visibledatacolumn.push(Store.ch_width);
continue;
}
Store.ch_width += Math.round((firstcolumnlen + 1)*Store.zoomRatio);
Store.visibledatacolumn.push(Store.ch_width);//列的临时长度分布

2
src/locale/en.js

@ -496,7 +496,7 @@ export default {
deleteSelected: 'Delete selected ',
hide: 'Hide',
hideSelected: 'Hide selected ',
showHide: 'Show hide',
showHide: 'Show hide ',
to: 'Towards',
left: 'Left',
right: 'Right',

Loading…
Cancel
Save