Browse Source

feat(rightclick menu perfect): add rows and cols delete rows and cols hide rows and cols

rightclick
master
wpxp123456 5 years ago
parent
commit
32f94a7228
  1. 2
      src/config.js
  2. 364
      src/controllers/constant.js
  3. 20
      src/controllers/controlHistory.js
  4. 324
      src/controllers/handler.js
  5. 1
      src/core.js
  6. 4
      src/css/luckysheet-core.css
  7. 5
      src/global/extend.js
  8. 23
      src/locale/en.js
  9. 25
      src/locale/zh.js

2
src/config.js

@ -22,7 +22,7 @@ export default {
config: {}, //表格行高、列宽、合并单元格、公式等设置
fullscreenmode: true, //是否全屏模式,非全屏模式下,标记框不会强制选中。
devicePixelRatio: window.devicePixelRatio, //设备比例,比例越大表格分标率越高
allowEdit: true, //是否允许前台编辑
allowEdit: false, //是否允许前台编辑
loadUrl: "", // 配置loadUrl的地址,luckysheet会通过ajax请求表格数据,默认载入status为1的sheet数据中的所有data,其余的sheet载入除data字段外的所有字段
loadSheetUrl: "", //配置loadSheetUrl的地址,参数为gridKey(表格主键) 和 index(sheet主键合集,格式为[1,2,3]),返回的数据为sheet的data字段数据集合
gridKey: "", // 表格唯一标识符

364
src/controllers/constant.js

File diff suppressed because one or more lines are too long

20
src/controllers/controlHistory.js

@ -139,6 +139,16 @@ const controlHistory = {
jfrefreshgrid_adRC(ctr.data, ctr.config, "addRC", ctrlValue, ctr.calc, ctr.filterObj, ctr.cf, ctr.af, ctr.freezen);
}
else if (ctr.type == "showHidRows") { // 隐藏、显示行 撤销操作
//config
Store.config = ctr.config;
Store.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = ctr.config;
server.saveParam("cg", ctr.sheetIndex, ctr.config["rowhidden"], { "k": "rowhidden" });
//行高、列宽 刷新
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);
@ -371,6 +381,16 @@ const controlHistory = {
else if (ctr.type == "delRC") { //删除行列重做操作
jfrefreshgrid_adRC(ctr.curData, ctr.curConfig, "delRC", ctr.ctrlValue, ctr.curCalc, ctr.curFilterObj, ctr.curCf, ctr.curAf, ctr.curFreezen);
}
else if (ctr.type == "showHidRows") { // 隐藏、显示行 重做操作
//config
Store.config = ctr.curconfig;
Store.luckysheetfile[getSheetIndex(ctr.sheetIndex)].config = ctr.curconfig;
server.saveParam("cg", ctr.sheetIndex, ctr.curconfig["rowhidden"], { "k": "rowhidden" });
//行高、列宽 刷新
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);

324
src/controllers/handler.js

@ -185,6 +185,11 @@ export default function luckysheetHandler() {
}
});
// //禁止前台编辑
// if(!Store.allowEdit){
// return;
// }
//选区拖动替换
$("#luckysheet-cell-main div.luckysheet-cs-draghandle").mousedown(function (event) {
if(isEditMode()){//此模式下禁用选区拖动
@ -1077,6 +1082,7 @@ export default function luckysheetHandler() {
let obj_s = Store.luckysheet_select_save[0];
$("#luckysheet-cols-rows-data").show();
$("#luckysheet-cols-rows-handleincell").show();
$("#luckysheet-cols-rows-add, #luckysheet-cols-rows-shift").hide();
if (obj_s["row"] != null && obj_s["row"][0] == 0 && obj_s["row"][1] == Store.flowdata.length - 1) {
@ -1090,6 +1096,7 @@ export default function luckysheetHandler() {
$("#luckysheet-cols-rows-add").show();
$("#luckysheet-cols-rows-data").show();
$("#luckysheet-cols-rows-shift").hide();
$("#luckysheet-cols-rows-handleincell").hide();
Store.luckysheet_cols_menu_status = true;
@ -1134,6 +1141,7 @@ export default function luckysheetHandler() {
$("#luckysheet-cols-rows-add").show();
$("#luckysheet-cols-rows-data").show();
$("#luckysheet-cols-rows-shift").hide();
$("#luckysheet-cols-rows-handleincell").hide();
Store.luckysheet_cols_menu_status = true;
@ -4469,6 +4477,7 @@ export default function luckysheetHandler() {
$("#luckysheet-cols-rows-add").show();
$("#luckysheet-cols-rows-data").show();
$("#luckysheet-cols-rows-shift").hide();
$("#luckysheet-cols-rows-handleincell").hide();
showrightclickmenu($("#luckysheet-rightclick-menu"), $(this).offset().left + 46, event.pageY);
Store.luckysheet_cols_menu_status = true;
@ -4856,6 +4865,7 @@ export default function luckysheetHandler() {
$("#luckysheet-cols-rows-add").show();
$("#luckysheet-cols-rows-data").show();
$("#luckysheet-cols-rows-shift").hide();
$("#luckysheet-cols-rows-handleincell").hide();
showrightclickmenu($("#luckysheet-rightclick-menu"), event.pageX, $(this).offset().top + 18);
Store.luckysheet_cols_menu_status = true;
@ -5122,6 +5132,7 @@ export default function luckysheetHandler() {
$("#luckysheet-cols-rows-add").show();
$("#luckysheet-cols-rows-data").hide();
$("#luckysheet-cols-rows-shift").show();
$("#luckysheet-cols-rows-handleincell").hide();
showrightclickmenu($menu, offset.left, offset.top + 18);
Store.luckysheet_cols_menu_status = true;
@ -6843,6 +6854,90 @@ export default function luckysheetHandler() {
let st_index = Store.luckysheet_select_save[0][Store.luckysheetRightHeadClickIs][0];
luckysheetextendtable(Store.luckysheetRightHeadClickIs, st_index, value, "lefttop");
});
$("#luckysheet-addTopRows").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
$("#" + Store.container).attr("tabindex", 0).focus();
if(Store.luckysheet_select_save.length > 1){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
}
return;
}
let $t = $(this), value = $t.parent().find("input").val();
if (!isRealNum(value)) {
if(isEditMode()){
alert("增加错误, 请输入数字");
}
else{
tooltip.info("增加错误, 请输入数字", "");
}
return;
}
value = parseInt(value);
if (value < 1 || value > 100) {
if(isEditMode()){
alert("增加错误, 增加范围限制在1-100");
}
else{
tooltip.info("增加错误, 增加范围限制在1-100", "");
}
return;
}
let st_index = Store.luckysheet_select_save[0].row[0];
luckysheetextendtable('row', st_index, value, "lefttop");
})
$("#luckysheet-addLeftCols").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
$("#" + Store.container).attr("tabindex", 0).focus();
if(Store.luckysheet_select_save.length > 1){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
}
return;
}
let $t = $(this), value = $t.parent().find("input").val();
if (!isRealNum(value)) {
if(isEditMode()){
alert("增加错误, 请输入数字");
}
else{
tooltip.info("增加错误, 请输入数字", "");
}
return;
}
value = parseInt(value);
if (value < 1 || value > 100) {
if(isEditMode()){
alert("增加错误, 增加范围限制在1-100");
}
else{
tooltip.info("增加错误, 增加范围限制在1-100", "");
}
return;
}
let st_index = Store.luckysheet_select_save[0].column[0];
luckysheetextendtable('column', st_index, value, "lefttop");
})
//向右增加列,向下增加行
$("#luckysheet-add-rightbottom, #luckysheet-add-rightbottom_t").click(function (event) {
@ -6888,6 +6983,92 @@ export default function luckysheetHandler() {
let st_index = Store.luckysheet_select_save[0][Store.luckysheetRightHeadClickIs][1];
luckysheetextendtable(Store.luckysheetRightHeadClickIs, st_index, value, "rightbottom");
});
$("#luckysheet-addBottomRows").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
$("#" + Store.container).attr("tabindex", 0).focus();
if(Store.luckysheet_select_save.length > 1){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
}
return;
}
let $t = $(this), value = $t.parent().find("input").val();
if (!isRealNum(value)) {
if(isEditMode()){
alert("增加错误, 请输入数字");
}
else{
tooltip.info("增加错误, 请输入数字", "");
}
return;
}
value = parseInt(value);
if (value < 1 || value > 100) {
if(isEditMode()){
alert("增加错误, 增加范围限制在1-100");
}
else{
tooltip.info("增加错误, 增加范围限制在1-100", "");
}
return;
}
let st_index = Store.luckysheet_select_save[0].row[1];
luckysheetextendtable('row', st_index, value, "rightbottom");
});
$("#luckysheet-addRightCols").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
$("#" + Store.container).attr("tabindex", 0).focus();
if(Store.luckysheet_select_save.length > 1){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
}
return;
}
let $t = $(this), value = $t.parent().find("input").val();
if (!isRealNum(value)) {
if(isEditMode()){
alert("增加错误, 请输入数字");
}
else{
tooltip.info("增加错误, 请输入数字", "");
}
return;
}
value = parseInt(value);
if (value < 1 || value > 100) {
if(isEditMode()){
alert("增加错误, 增加范围限制在1-100");
}
else{
tooltip.info("增加错误, 增加范围限制在1-100", "");
}
return;
}
let st_index = Store.luckysheet_select_save[0].column[1];
luckysheetextendtable('column', st_index, value, "rightbottom");
});
//删除选中行列
$("#luckysheet-del-selected, #luckysheet-del-selected_t").click(function (event) {
@ -6914,9 +7095,150 @@ export default function luckysheetHandler() {
return;
}
let st_index = Store.luckysheet_select_save[0][Store.luckysheetRightHeadClickIs][0], ed_index = Store.luckysheet_select_save[0][Store.luckysheetRightHeadClickIs][1];
let st_index = Store.luckysheet_select_save[0][Store.luckysheetRightHeadClickIs][0],
ed_index = Store.luckysheet_select_save[0][Store.luckysheetRightHeadClickIs][1];
luckysheetdeletetable(Store.luckysheetRightHeadClickIs, st_index, ed_index);
});
$("#luckysheet-delRows").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
$("#" + Store.container).attr("tabindex", 0).focus();
if(Store.luckysheet_select_save.length > 1){
if(Store.luckysheetRightHeadClickIs == "row"){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
}
}
else if(Store.luckysheetRightHeadClickIs == "column"){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
}
}
return;
}
let st_index = Store.luckysheet_select_save[0].row[0],
ed_index = Store.luckysheet_select_save[0].row[1];
luckysheetdeletetable('row', st_index, ed_index);
})
$("#luckysheet-delCols").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
$("#" + Store.container).attr("tabindex", 0).focus();
if(Store.luckysheet_select_save.length > 1){
if(Store.luckysheetRightHeadClickIs == "row"){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
}
}
else if(Store.luckysheetRightHeadClickIs == "column"){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
}
}
return;
}
let st_index = Store.luckysheet_select_save[0].column[0],
ed_index = Store.luckysheet_select_save[0].column[1];
luckysheetdeletetable('column', st_index, ed_index);
})
//隐藏、显示行
$("#luckysheet-hidRows").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
$("#" + Store.container).attr("tabindex", 0).focus();
let cfg = $.extend(true, {}, Store.config);
if(cfg["rowhidden"] == null){
cfg["rowhidden"] = {};
}
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];
for(let r = r1; r <= r2; r++){
cfg["rowhidden"][r] = 0;
}
}
//保存撤销
if(Store.clearjfundo){
let redo = {};
redo["type"] = "showHidRows";
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["rowhidden"], { "k": "rowhidden" });
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
})
$("#luckysheet-showHidRows").click(function (event) {
$("#luckysheet-rightclick-menu").hide();
$("#" + Store.container).attr("tabindex", 0).focus();
let cfg = $.extend(true, {}, Store.config);
if(cfg["rowhidden"] == null){
return;
}
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];
for(let r = r1; r <= r2; r++){
delete cfg["rowhidden"][r];
}
}
//保存撤销
if(Store.clearjfundo){
let redo = {};
redo["type"] = "showHidRows";
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["rowhidden"], { "k": "rowhidden" });
//行高、列宽 刷新
jfrefreshgrid_rhcw(Store.flowdata.length, Store.flowdata[0].length);
})
//清除单元格内容
$("#luckysheet-delete-text").click(function(){

1
src/core.js

@ -25,6 +25,7 @@ luckysheet.create = function (setting) {
Store.defaultrowNum = extendsetting.row;
Store.fullscreenmode = extendsetting.fullscreenmode;
Store.lang = extendsetting.lang; //language
Store.allowEdit = extendsetting.allowEdit;
server.gridKey = extendsetting.gridKey;
server.loadUrl = extendsetting.loadUrl;

4
src/css/luckysheet-core.css

@ -2452,10 +2452,10 @@ body:not(.ewa-ipad) .luckysheet-cols-h-cell-nosel:hover, body:not(.ewa-ipad) .lu
padding-left: 999999px;
}
#luckysheet-copy-btn {
/* #luckysheet-copy-btn {
position: absolute;
visibility: hidden;
}
} */
.btn {

5
src/global/extend.js

@ -459,8 +459,9 @@ function luckysheetextendtable(type, index, value, direction) {
newFreezen.freezenverticaldata = luckysheetFreezen.freezenverticaldata;
}
let type1;
if (type == "row") {
let type1 = "r";
type1 = "r";
//行高配置变动
if(cfg["rowlen"] != null){
@ -586,7 +587,7 @@ function luckysheetextendtable(type, index, value, direction) {
}
}
else {
let type1 = "c";
type1 = "c";
//行高配置变动
if(cfg["columlen"] != null){

23
src/locale/en.js

@ -22,6 +22,29 @@ export default {
cancelColor: 'Cancel',
collapse: 'Collapse',
fillColor: 'Fill color',
border: 'Border',
borderStyle: 'Border style',
mergeCell: 'Merge cells',
chooseMergeType: 'Choose merge type',
horizontalAlign: 'Horizontal align',
verticalAlign: 'Vertical align',
alignment: 'Alignment',
textWrap: 'Text wrap',
textWrapMode: 'Text wrap mode',
textRotate: 'Text rotate',
textRotateMode: 'Text rotate mode',
freezeTopRow: 'Freeze top row',
sortAndFilter: 'Sort and filter',
findAndReplace: 'Find and replace',
sum: 'SUM',
autoSum: 'Auto SUM',
moreFunction: 'More function',
conditionalFormat: 'Conditional format',
postil: 'Postil',
pivotTable: 'PivotTable',
chart: 'Chart',
screenshot: 'Screenshot',
splitColumn: 'Split column',
},
alternatingColors:{
applyRange: 'Apply to range',

25
src/locale/zh.js

@ -11,7 +11,7 @@ export default {
font: '字体',
fontSize: '字号大小',
bold: '粗体 (Ctrl+B)',
Italic: '斜体 (Ctrl+I)',
italic: '斜体 (Ctrl+I)',
strikethrough: '删除线 (Alt+Shift+5)',
textColor: '文本颜色',
chooseColor: '颜色选择',
@ -21,6 +21,29 @@ export default {
confirmColor: '确定颜色',
collapse: '收起',
fillColor: '单元格颜色',
border: '边框',
borderStyle: '边框类型',
mergeCell: '合并单元格',
chooseMergeType: '选择合并类型',
horizontalAlign: '水平对齐',
verticalAlign: '垂直对齐',
alignment: '对齐方式',
textWrap: '文本换行',
textWrapMode: '换行方式',
textRotate: '文本旋转',
textRotateMode: '旋转方式',
freezeTopRow: '冻结首行',
sortAndFilter: '排序和筛选',
findAndReplace: '查找替换',
sum: '求和',
autoSum: '自动求和',
moreFunction: '更多函数',
conditionalFormat: '条件格式',
postil: '批注',
pivotTable: '数据透视表',
chart: '图表',
screenshot: '截图',
splitColumn: '分列',
},
alternatingColors:{
applyRange: '应用范围',

Loading…
Cancel
Save