Dushusir 4 years ago
parent
commit
df900ff4a9
  1. 12
      src/controllers/handler.js
  2. 2
      src/controllers/hyperlinkCtrl.js
  3. 2
      src/controllers/keyboard.js
  4. 87
      src/controllers/menuButton.js
  5. 2
      src/controllers/protection.js
  6. 23
      src/controllers/rowColumnOperation.js
  7. 2
      src/controllers/server.js
  8. 2
      src/css/luckysheet-core.css
  9. 2
      src/function/functionImplementation.js
  10. 52
      src/global/extend.js
  11. 15
      src/global/validate.js

12
src/controllers/handler.js

@ -45,7 +45,7 @@ import {
mouseposition
} from '../global/location';
import { rowlenByRange } from '../global/getRowlen';
import { isRealNull, hasPartMC, isEditMode } from '../global/validate';
import { isRealNull, hasPartMC, isEditMode, checkIsAllowEdit } from '../global/validate';
import { countfunc } from '../global/count';
import browser from '../global/browser';
import formula from '../global/formula';
@ -4863,6 +4863,11 @@ export default function luckysheetHandler() {
//菜单栏 插入图片按钮
$("#luckysheet-insertImg-btn-title").click(function () {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
tooltip.info("", locale().pivotTable.errorNotAllowEdit);
return
}
if(!checkProtectionAuthorityNormal(Store.currentSheetIndex, "editObjects")){
return;
}
@ -4888,6 +4893,11 @@ export default function luckysheetHandler() {
//菜单栏 插入链接按钮
$("#luckysheet-insertLink-btn-title").click(function () {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
tooltip.info("", locale().pivotTable.errorNotAllowEdit);
return
}
if(!checkProtectionNotEnable(Store.currentSheetIndex)){
return;
}

2
src/controllers/hyperlinkCtrl.js

@ -353,7 +353,7 @@ const hyperlinkCtrl = {
//共享编辑模式
if(server.allowUpdate){
server.saveParam("all", sheetIndex, currentHyperlink, { "k": "hyperlink" });
server.historyParam(Store.flowdata, sheetIndex, range);
server.historyParam(Store.flowdata, sheetIndex, range[0]);
}
setTimeout(function () {

2
src/controllers/keyboard.js

@ -587,7 +587,7 @@ export function keyboardInitial(){
$("#luckysheet-icon-italic").click();
}
else if (kcode == 86) {//Ctrl + V 粘贴
if(isEditMode()){//此模式下禁用粘贴
if (isEditMode() || Store.allowEdit === false){//此模式下禁用粘贴
return;
}

87
src/controllers/menuButton.js

@ -16,7 +16,7 @@ import {luckysheetupdateCell} from './updateCell';
import insertFormula from './insertFormula';
import sheetmanage from './sheetmanage';
import luckysheetPostil from './postil';
import { isRealNum, isRealNull, isEditMode, hasPartMC } from '../global/validate';
import { isRealNum, isRealNull, isEditMode, hasPartMC, checkIsAllowEdit } from '../global/validate';
import tooltip from '../global/tooltip';
import editor from '../global/editor';
import { genarate, update, is_date } from '../global/format';
@ -119,6 +119,11 @@ const menuButton = {
//格式刷
$("#luckysheet-icon-paintformat").click(function(e){
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
tooltip.info("", locale().pivotTable.errorNotAllowEdit);
return
}
e.stopPropagation();
let _locale = locale();
let locale_paint = _locale.paint;
@ -174,6 +179,11 @@ const menuButton = {
_this.luckysheetPaintSingle = true;
});
$("#luckysheet-icon-paintformat").dblclick(function(){
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
tooltip.info("", locale().pivotTable.errorNotAllowEdit);
return
}
let _locale = locale();
let locale_paint = _locale.paint;
if(Store.luckysheet_select_save == null || Store.luckysheet_select_save.length == 0){
@ -779,6 +789,11 @@ const menuButton = {
//交替颜色
$menuButton.find(".luckysheet-icon-alternateformat").click(function(){
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
tooltip.info("", locale().pivotTable.errorNotAllowEdit);
return
}
$menuButton.hide();
luckysheetContainerFocus();
@ -927,7 +942,11 @@ const menuButton = {
//边框设置
$("#luckysheet-icon-border-all").click(function(){
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
tooltip.info("", locale().pivotTable.errorNotAllowEdit);
return
}
if(!checkProtectionFormatCells(Store.currentSheetIndex)){
return;
}
@ -1085,6 +1104,11 @@ const menuButton = {
// border choose menu
$menuButton.find(".luckysheet-cols-menuitem").click(function(){
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
tooltip.info("", locale().pivotTable.errorNotAllowEdit);
return
}
$menuButton.hide();
luckysheetContainerFocus();
@ -1226,7 +1250,6 @@ const menuButton = {
//合并单元格
$("#luckysheet-icon-merge-button").click(function(){
if(!checkProtectionNotEnable(Store.currentSheetIndex)){
return;
}
@ -1292,7 +1315,7 @@ const menuButton = {
let menu = replaceHtml(_this.menu, { "id": "merge-menu", "item": itemset, "subclass": "", "sub": "" });
$("body").append(menu);
$menuButton = $("#"+menuButtonId).width(110);
$menuButton = $("#"+menuButtonId);
_this.focus($menuButton);
$menuButton.find(".luckysheet-cols-menuitem").click(function(){
@ -1739,9 +1762,14 @@ const menuButton = {
if(row_st == -1){
row_st = 0;
}
let top = Store.visibledatarow[row_st] - 2 - scrollTop + Store.columnHeaderHeight;
let freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
let top,freezenhorizontaldata;
if (luckysheetFreezen.freezenRealFirstRowColumn) {
top = Store.visibledatarow[row_st] - 2 + Store.columnHeaderHeight;
freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, 0, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
} else {
top = Store.visibledatarow[row_st] - 2 - scrollTop + Store.columnHeaderHeight;
freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
}
luckysheetFreezen.saveFreezen(freezenhorizontaldata, top, null, null);
if (luckysheetFreezen.freezenverticaldata != null) {
@ -1783,9 +1811,14 @@ const menuButton = {
if(col_st == -1){
col_st = 0;
}
let left = Store.visibledatacolumn[col_st] - 2 - scrollLeft + Store.rowHeaderWidth;
let freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
let left,freezenverticaldata;
if (luckysheetFreezen.freezenRealFirstRowColumn) {
left = Store.visibledatacolumn[col_st] - 2 + Store.rowHeaderWidth;
freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, 0, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
} else {
left = Store.visibledatacolumn[col_st] - 2 - scrollLeft + Store.rowHeaderWidth;
freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
}
luckysheetFreezen.saveFreezen(null, null, freezenverticaldata, left);
if (luckysheetFreezen.freezenhorizontaldata != null) {
@ -1830,10 +1863,16 @@ const menuButton = {
if(row_st == -1){
row_st = 0;
}
let top = Store.visibledatarow[row_st] - 2 - scrollTop + Store.columnHeaderHeight;
let freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
luckysheetFreezen.saveFreezen(freezenhorizontaldata, top, null, null);
let top,freezenhorizontaldata;
if (luckysheetFreezen.freezenRealFirstRowColumn) {
top = Store.visibledatarow[row_st] - 2 + Store.columnHeaderHeight;
freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, 0, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
luckysheetFreezen.saveFreezen(freezenhorizontaldata, top, null, null);
} else {
top = Store.visibledatarow[row_st] - 2 - scrollTop + Store.columnHeaderHeight;
freezenhorizontaldata = [Store.visibledatarow[row_st], row_st + 1, scrollTop, luckysheetFreezen.cutVolumn(Store.visibledatarow, row_st + 1), top];
luckysheetFreezen.saveFreezen(freezenhorizontaldata, top, null, null);
}
luckysheetFreezen.createFreezenHorizontal(freezenhorizontaldata, top);
@ -1849,9 +1888,14 @@ const menuButton = {
if(col_st == -1){
col_st = 0;
}
let left = Store.visibledatacolumn[col_st] - 2 - scrollLeft + Store.rowHeaderWidth;
let freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
let left,freezenverticaldata;
if (luckysheetFreezen.freezenRealFirstRowColumn) {
left = Store.visibledatacolumn[col_st] - 2 + Store.rowHeaderWidth;
freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, 0, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
} else {
left = Store.visibledatacolumn[col_st] - 2 - scrollLeft + Store.rowHeaderWidth;
freezenverticaldata = [Store.visibledatacolumn[col_st], col_st + 1, scrollLeft, luckysheetFreezen.cutVolumn(Store.visibledatacolumn, col_st + 1), left];
}
luckysheetFreezen.saveFreezen(null, null, freezenverticaldata, left);
luckysheetFreezen.createFreezenVertical(freezenverticaldata, left);
@ -3128,7 +3172,9 @@ const menuButton = {
return;
}
if(Store.allowEdit===false){
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
tooltip.info("", locale().pivotTable.errorNotAllowEdit);
return;
}
@ -3175,6 +3221,11 @@ const menuButton = {
jfrefreshgrid(d, Store.luckysheet_select_save, allParam, false);
},
updateFormat_mc: function(d, foucsStatus){
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
tooltip.info("", locale().pivotTable.errorNotAllowEdit);
return
}
let cfg = $.extend(true, {}, Store.config);
if(cfg["merge"] == null){
cfg["merge"] = {};

2
src/controllers/protection.js

@ -555,7 +555,7 @@ function initialProtectionRIghtBar(file){
</div>
<div class="luckysheet-slider-protection-row" style="height:47px;margin-top:4px;">
<div class="luckysheet-slider-protection-column" style="width:98%;">
<textarea class="luckysheet-protection-textarea" id="protection-hint" placeHolder="${local_protection.enterHintTitle}"></textarea>
<textarea class="luckysheet-protection-textarea" id="protection-hint" placeHolder="${local_protection.enterHint}"></textarea>
</div>
</div>
</div>

23
src/controllers/rowColumnOperation.js

@ -21,7 +21,7 @@ import {
colLocationByIndex,
mouseposition
} from '../global/location';
import { isRealNull, isRealNum, hasPartMC, isEditMode } from '../global/validate';
import { isRealNull, isRealNum, hasPartMC, isEditMode, checkIsAllowEdit } from '../global/validate';
import { countfunc } from '../global/count';
import formula from '../global/formula';
import { luckysheetextendtable, luckysheetdeletetable, luckysheetDeleteCell } from '../global/extend';
@ -381,6 +381,10 @@ export function rowColumnOperationInitial(){
$("#luckysheet-rows-change-size").css("opacity", 0);
}).mouseup(function (event) {
if (event.which == 3) {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
return
}
if(isEditMode()){ //非编辑模式下禁止右键功能框
return;
}
@ -815,6 +819,10 @@ export function rowColumnOperationInitial(){
$("#luckysheet-cols-change-size").css("opacity", 0);
}).mouseup(function (event) {
if (event.which == 3) {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
return
}
if(isEditMode()){ //非编辑模式下禁止右键功能框
return;
}
@ -904,6 +912,10 @@ export function rowColumnOperationInitial(){
//表格行标题 改变行高按钮
$("#luckysheet-rows-change-size").mousedown(function (event) {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
return
}
//有批注在编辑时
luckysheetPostil.removeActivePs();
@ -948,6 +960,10 @@ export function rowColumnOperationInitial(){
//表格列标题 改变列宽按钮
$("#luckysheet-cols-change-size").mousedown(function (event) {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
return
}
//有批注在编辑时
luckysheetPostil.removeActivePs();
@ -996,6 +1012,11 @@ export function rowColumnOperationInitial(){
// 列标题的下拉箭头
$("#luckysheet-cols-menu-btn").click(function (event) {
// *如果禁止前台编辑,则中止下一步操作
if (!checkIsAllowEdit()) {
tooltip.info("", locale().pivotTable.errorNotAllowEdit);
return
}
let $menu = $("#luckysheet-rightclick-menu");
let offset = $(this).offset();
$("#luckysheet-cols-rows-shift").show();

2
src/controllers/server.js

@ -255,7 +255,7 @@ const server = {
if(flag) {
Store.cooperativeEdit.changeCollaborationSize.forEach(val => {
if(val.id == id) {
val.v = item.v[0]
val.v = item.v[0] || item.range[0]
val.i = index
}
})

2
src/css/luckysheet-core.css

@ -7132,7 +7132,7 @@ fieldset[disabled] .btn-danger.focus {
}
#luckysheet-insertLink-dialog .box-item label{
display: inline-block;
width: 80px;
width: 90px;
text-align: right;
margin-right: 10px;
}

2
src/function/functionImplementation.js

@ -1,5 +1,5 @@
import luckysheetConfigsetting from '../controllers/luckysheetConfigsetting';
import { luckysheet_getcelldata, luckysheet_parseData, luckysheet_getValue } from './func';
import { luckysheet_getcelldata, luckysheet_parseData, luckysheet_getValue, luckysheet_calcADPMM } from './func';
import { inverse } from './matrix_methods';
import { getSheetIndex, getluckysheetfile,getRangetxt } from '../methods/get';
import menuButton from '../controllers/menuButton';

52
src/global/extend.js

@ -55,7 +55,8 @@ function luckysheetextendtable(type, index, value, direction, sheetIndex) {
if(index < r){
merge_new[(r + value) + "_" + c] = { "r": r + value, "c": c, "rs": rs, "cs": cs };
}
else if(index == r){
// *这里要判断一下rs是否等于1,因为如果这个合并单元格的行数只有一行时r = r+ rs-1,这种情况不应该进行单元格的加高
else if (index == r && rs != 1) {
if(direction == "lefttop"){
merge_new[(r + value) + "_" + c] = { "r": r + value, "c": c, "rs": rs, "cs": cs };
}
@ -68,7 +69,11 @@ function luckysheetextendtable(type, index, value, direction, sheetIndex) {
}
else if(index == r + rs - 1){
if(direction == "lefttop"){
merge_new[r + "_" + c] = { "r": r, "c": c, "rs": rs + value, "cs": cs };
if(rs == 1){
merge_new[(r + value) + "_" + c] = { "r": r + value, "c": c, "rs": rs, "cs": cs };
} else {
merge_new[r + "_" + c] = { "r": r, "c": c, "rs": rs + value, "cs": cs };
}
}
else{
merge_new[r + "_" + c] = { "r": r, "c": c, "rs": rs, "cs": cs };
@ -82,7 +87,7 @@ function luckysheetextendtable(type, index, value, direction, sheetIndex) {
if(index < c){
merge_new[r + "_" + (c + value)] = { "r": r, "c": c + value, "rs": rs, "cs": cs };
}
else if(index == c){
else if(index == c && cs != 1){
if(direction == "lefttop"){
merge_new[r + "_" + (c + value)] = { "r": r, "c": c + value, "rs": rs, "cs": cs };
}
@ -95,7 +100,12 @@ function luckysheetextendtable(type, index, value, direction, sheetIndex) {
}
else if(index == c + cs - 1){
if(direction == "lefttop"){
merge_new[r + "_" + c] = { "r": r, "c": c, "rs": rs, "cs": cs + value };
// *这是要判断一下这个合并单元格的列宽是否=1,如果cs等于1的情况下,向左插入列,这个合并单元格会右移
if(cs == 1){
merge_new[r + "_" + (c + value)] = { "r": r, "c": c + value, "rs": rs, "cs": cs };
} else {
merge_new[r + "_" + c] = { "r": r, "c": c, "rs": rs, "cs": cs + value };
}
}
else{
merge_new[r + "_" + c] = { "r": r, "c": c, "rs": rs, "cs": cs };
@ -634,15 +644,12 @@ function luckysheetextendtable(type, index, value, direction, sheetIndex) {
cfg["rowhidden"] = rowhidden_new;
}
//空行模板
let row = [],
curRow = [...d][index]
for(let c = 0; c < d[0].length; c++){
let cell = curRow[c],
templateCell = cell ? {...cell, v: '', m: ''} : Store.defaultCell;
delete templateCell.ps;
row.push(templateCell);
// *添加空行模板这里请保持为push null;
let row = [];
for (let c = 0; c < d[0].length; c++) {
row.push(null);
}
var cellBorderConfig = [];
//边框
if(cfg["borderInfo"] && cfg["borderInfo"].length > 0){
@ -808,15 +815,12 @@ function luckysheetextendtable(type, index, value, direction, sheetIndex) {
cfg["colhidden"] = colhidden_new;
}
//空列模板
let col = [],
curd= [...d];
for(let r = 0; r < d.length; r++){
let cell = curd[r][index],
templateCell = cell ? {...cell, v: '', m: ''} : Store.defaultCell;
delete templateCell.ps;
col.push(templateCell);
// *添加空列模板这里请保持为push null;
let col = [];
for (let r = 0; r < d.length; r++) {
col.push(null);
}
var cellBorderConfig = [];
//边框
if(cfg["borderInfo"] && cfg["borderInfo"].length > 0){
@ -917,16 +921,18 @@ function luckysheetextendtable(type, index, value, direction, sheetIndex) {
let row = d[r];
for(let i = 0; i < value; i++){
// *这里不能是引用,不然添加多列时添加的都是同一个引用,修改一个cell会同步到多个
const COLR = JSON.parse(JSON.stringify(col[r]))
if(direction == "lefttop"){
if(index == 0){
row.unshift(col[r]);
row.unshift(COLR);
}
else{
row.splice(index, 0, col[r]);
row.splice(index, 0, COLR);
}
}
else{
row.splice((index + 1), 0, col[r]);
row.splice((index + 1), 0, COLR);
}
}
}

15
src/global/validate.js

@ -76,6 +76,20 @@ function isEditMode() {
}
}
/**
* @description: 检查是否允许前台进行表格编辑
* @param {*}
* @return {Boolean} true:允许编辑 fasle:不允许
*/
function checkIsAllowEdit(){
if (Store.allowEdit) {
return true;
}
else {
return false;
}
}
//范围是否只包含部分合并单元格
function hasPartMC(cfg, r1, r2, c1, c2) {
let hasPartMC = false;
@ -200,6 +214,7 @@ export {
valueIsError,
hasChinaword,
isEditMode,
checkIsAllowEdit,
hasPartMC,
checkWordByteLength
}
Loading…
Cancel
Save