You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
201 lines
6.9 KiB
201 lines
6.9 KiB
import Store from '../store';
|
|
import { replaceHtml,transformRangeToAbsolute,openSelfModel } from '../utils/util';
|
|
import { modelHTML } from './constant';
|
|
import sheetmanage from './sheetmanage';
|
|
import menuButton from './menuButton';
|
|
import {checkProtectionNotEnable} from './protection';
|
|
import { jfrefreshgrid } from '../global/refresh';
|
|
import locale from '../locale/locale';
|
|
import { setcellvalue } from '../global/setdata';
|
|
|
|
|
|
let isInitialCellFormatModel = false;
|
|
|
|
function initialCellFormatModelEvent(){
|
|
const _locale = locale();
|
|
const local_cellFormat = _locale.cellFormat;
|
|
|
|
$("#luckysheet-cellFormat-confirm").click(function(){
|
|
let locked = $("#luckysheet-protection-check-locked").is(':checked');
|
|
let hidden = $("#luckysheet-protection-check-hidden").is(':checked');
|
|
|
|
locked = locked==true?1:0;
|
|
hidden = hidden==true?1:0;
|
|
|
|
let d = recycleSeletion(
|
|
function(cell, r, c, data){
|
|
if(cell==null){
|
|
setcellvalue(r, c, data, {
|
|
lo:locked,
|
|
hi:hidden
|
|
});
|
|
}
|
|
else{
|
|
cell.lo = locked;
|
|
cell.hi = hidden;
|
|
}
|
|
},
|
|
function(){
|
|
alert(local_cellFormat.sheetDataIsNullAlert);
|
|
}
|
|
);
|
|
|
|
jfrefreshgrid(d, undefined, undefined, false);
|
|
|
|
$("#luckysheet-cellFormat-config").hide();
|
|
$("#luckysheet-modal-dialog-mask").hide();
|
|
});
|
|
}
|
|
|
|
function recycleSeletion(cycleFunction, dataIsNullFunction){
|
|
if(Store.luckysheet_select_save != null && Store.luckysheet_select_save.length > 0){
|
|
let sheetFile = sheetmanage.getSheetByIndex(), data=sheetFile.data;
|
|
if(data!=null){
|
|
|
|
for(let i=0;i<Store.luckysheet_select_save.length;i++){
|
|
let selection = Store.luckysheet_select_save[i];
|
|
let row = selection.row, column = selection.column;
|
|
for(let r=row[0];r<=row[1];r++){
|
|
for(let c=column[0];c<=column[1];c++){
|
|
let cell;
|
|
|
|
let margeset = menuButton.mergeborer(data, r, c);
|
|
if (!!margeset) {
|
|
// row = margeset.row[1];
|
|
// row_pre = margeset.row[0];
|
|
let row_index = margeset.row[2];
|
|
// row_index_ed = margeset.row[3];
|
|
|
|
// col = margeset.column[1];
|
|
// col_pre = margeset.column[0];
|
|
let col_index = margeset.column[2];
|
|
// col_index_ed = margeset.column[3];
|
|
|
|
cell = data[row_index][col_index];
|
|
}
|
|
else{
|
|
cell = data[r][c];
|
|
}
|
|
|
|
// if(cell.lo==null || cell.lo==1){
|
|
// locked = true;
|
|
// lockedCount++;
|
|
// }
|
|
|
|
// if(cell.hi==1){
|
|
// hidden = true;
|
|
// hiddenCount++;
|
|
// }
|
|
|
|
// count++;
|
|
|
|
cycleFunction(cell, r, c, data);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
else{
|
|
// locked = true;
|
|
dataIsNullFunction();
|
|
}
|
|
|
|
return data;
|
|
}
|
|
}
|
|
|
|
function initialCellFormatModel(){
|
|
if(isInitialCellFormatModel){
|
|
return;
|
|
}
|
|
|
|
isInitialCellFormatModel = true;
|
|
const _locale = locale();
|
|
const local_cellFormat = _locale.cellFormat;
|
|
const locale_button = _locale.button;
|
|
|
|
//Password input initial
|
|
$("body").first().append(replaceHtml(modelHTML, {
|
|
"id": "luckysheet-cellFormat-config",
|
|
"addclass": "luckysheet-cellFormat-config",
|
|
"title": local_cellFormat.cellFormatTitle,
|
|
"content": `
|
|
<div class="luckysheet-cellFormat-menu-c">
|
|
<div class="luckysheet-cellFormat-menu luckysheet-cellFormat-menu-active" id="luckysheet-cellFormat-protection">
|
|
${local_cellFormat.protection}
|
|
</div>
|
|
</div>
|
|
<div id="luckysheet-cellFormat-protection-content" class="luckysheet-cellFormat-content">
|
|
<div class="luckysheet-cellFormat-protection">
|
|
<p>
|
|
${local_cellFormat.protectionTips}
|
|
</p>
|
|
<label for="luckysheet-protection-check-locked"><input id="luckysheet-protection-check-locked" name="luckysheet-protection-check-locked" type="checkbox">${local_cellFormat.locked}</label><span>部分选中</span>
|
|
<br/>
|
|
<label for="luckysheet-protection-check-hidden"><input id="luckysheet-protection-check-hidden" name="luckysheet-protection-check-hidden" type="checkbox">${local_cellFormat.hidden}</label><span>全部选中</span>
|
|
</div>
|
|
</div>
|
|
`,
|
|
"botton": `<button id="luckysheet-cellFormat-confirm" class="btn btn-primary">${locale_button.confirm}</button>
|
|
<button class="btn btn-default luckysheet-model-close-btn">${locale_button.cancel}</button>`,
|
|
"style": "z-index:100003"
|
|
}));
|
|
|
|
initialCellFormatModelEvent();
|
|
}
|
|
|
|
export function openCellFormatModel(){
|
|
initialCellFormatModel();
|
|
|
|
const _locale = locale();
|
|
const local_cellFormat = _locale.cellFormat;
|
|
const locale_button = _locale.button;
|
|
|
|
$("#luckysheet-rightclick-menu").hide();
|
|
|
|
if(!checkProtectionNotEnable(Store.currentSheetIndex)){
|
|
return;
|
|
}
|
|
|
|
let locked =false, hidden=false;
|
|
let lockedCount=0, hiddenCount=0, count=0;
|
|
if(Store.luckysheet_select_save != null && Store.luckysheet_select_save.length > 0){
|
|
recycleSeletion(
|
|
function(cell){
|
|
// let cell = data[r][c];
|
|
if(cell==null || cell.lo==null || cell.lo==1){
|
|
locked = true;
|
|
lockedCount++;
|
|
}
|
|
|
|
if(cell!=null && cell.hi==1){
|
|
hidden = true;
|
|
hiddenCount++;
|
|
}
|
|
|
|
count++;
|
|
},
|
|
function(){
|
|
locked = true;
|
|
}
|
|
);
|
|
}
|
|
else{
|
|
alert(local_cellFormat.selectionIsNullAlert);
|
|
return;
|
|
}
|
|
|
|
let tipsLock="", tipshidden="";
|
|
if(locked){
|
|
tipsLock = lockedCount==count?local_cellFormat.tipsAll:local_cellFormat.tipsPart;
|
|
}
|
|
|
|
if(hidden){
|
|
tipshidden = hiddenCount==count?local_cellFormat.tipsAll:local_cellFormat.tipsPart;
|
|
}
|
|
|
|
$("#luckysheet-protection-check-locked").prop('checked',locked).parent().next().html(tipsLock);
|
|
$("#luckysheet-protection-check-hidden").prop('checked',hidden).parent().next().html(tipshidden);
|
|
|
|
|
|
openSelfModel("luckysheet-cellFormat-config");
|
|
}
|