产品一张表luckysheet前端代码库
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.
 
 
 

1226 lines
50 KiB

import { getSheetIndex, getRangetxt } from '../methods/get';
import { replaceHtml } from '../utils/util';
import formula from '../global/formula';
import { isEditMode } from '../global/validate';
import tooltip from '../global/tooltip';
import { luckysheetrefreshgrid } from '../global/refresh';
import { luckysheetAlternateformatHtml, modelHTML } from './constant';
import luckysheetsizeauto from './resize';
import server from './server';
import { selectHightlightShow } from './select';
import Store from '../store';
import locale from '../locale/locale';
//交替颜色
const alternateformat = {
rangefocus: false,
modelfocusIndex: null,
FixedModelColor: [
{
"head": { "fc": "#000", "bc": "#bfbdbe" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#f8f3f7" },
"foot": { "fc": "#000", "bc": "#dde2de" }
},
{
"head": { "fc": "#000", "bc": "#4bd4e7" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#eaf7ff" },
"foot": { "fc": "#000", "bc": "#aae9f8" }
},
{
"head": { "fc": "#000", "bc": "#5ed593" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#e5fbee" },
"foot": { "fc": "#000", "bc": "#a5efcc" }
},
{
"head": { "fc": "#000", "bc": "#f6cb4b" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#fff9e7" },
"foot": { "fc": "#000", "bc": "#ffebac" }
},
{
"head": { "fc": "#000", "bc": "#f96420" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#ffe5d9" },
"foot": { "fc": "#000", "bc": "#ffcfba" }
},
{
"head": { "fc": "#000", "bc": "#5599fc" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#ecf2fe" },
"foot": { "fc": "#000", "bc": "#afcbfa" }
},
{
"head": { "fc": "#000", "bc": "#22a69b" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#dff2f8" },
"foot": { "fc": "#000", "bc": "#8dd4d0" }
},
{
"head": { "fc": "#000", "bc": "#7a939a" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#f0eff7" },
"foot": { "fc": "#000", "bc": "#bdcad0" }
},
{
"head": { "fc": "#000", "bc": "#d7a270" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#fdf3f1" },
"foot": { "fc": "#000", "bc": "#ead2b6" }
},
{
"head": { "fc": "#000", "bc": "#89c54b" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#f1f7e9" },
"foot": { "fc": "#000", "bc": "#c5e3a7" }
},
{
"head": { "fc": "#000", "bc": "#8f88f0" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#f0e5ff" },
"foot": { "fc": "#000", "bc": "#c6c4f6" }
},
{
"head": { "fc": "#000", "bc": "#fd1664" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#feddee" },
"foot": { "fc": "#000", "bc": "#f98ab5" }
},
{
"head": { "fc": "#000", "bc": "#da96d3" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#fce8fb" },
"foot": { "fc": "#000", "bc": "#f2caee" }
},
{
"head": { "fc": "#000", "bc": "#b49191" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#f5ebe8" },
"foot": { "fc": "#000", "bc": "#d8c3c3" }
},
{
"head": { "fc": "#000", "bc": "#91b493" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#f0fbf0" },
"foot": { "fc": "#000", "bc": "#b4cfb6" }
},
{
"head": { "fc": "#000", "bc": "#b4a891" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#f8f6f1" },
"foot": { "fc": "#000", "bc": "#d3cab8" }
},
{
"head": { "fc": "#000", "bc": "#91abb4" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#eff7fa" },
"foot": { "fc": "#000", "bc": "#b7cbd3" }
},
{
"head": { "fc": "#000", "bc": "#b7ba82" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#fafbeb" },
"foot": { "fc": "#000", "bc": "#dadcb4" }
},
{
"head": { "fc": "#000", "bc": "#df3e3e" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#fde9e9" },
"foot": { "fc": "#000", "bc": "#f89292" }
},
{
"head": { "fc": "#000", "bc": "#f2711c" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#fef0d7" },
"foot": { "fc": "#000", "bc": "#fbb335" }
},
{
"head": { "fc": "#000", "bc": "#b5cc18" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#f9fbd4" },
"foot": { "fc": "#000", "bc": "#e2ed2a" }
},
{
"head": { "fc": "#000", "bc": "#00b5ad" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#ccfaf9" },
"foot": { "fc": "#000", "bc": "#00e4df" }
},
{
"head": { "fc": "#000", "bc": "#2185d0" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#d8f3fc" },
"foot": { "fc": "#000", "bc": "#3cc4f0" }
},
{
"head": { "fc": "#000", "bc": "#a5673f" },
"one": { "fc": "#000", "bc": "#ffffff" },
"two": { "fc": "#000", "bc": "#f6ede5" },
"foot": { "fc": "#000", "bc": "#d3a47c" }
}
],
getModelBox: function(hasRowHeader, hasRowFooter){
let _this = this;
$("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelList").empty();
$("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelCustom").empty();
//格式样式 模板
let modelListHtml = '';
for(let i = 0; i < _this.FixedModelColor.length; i++){
let obj = _this.FixedModelColor[i];
let color1, color2, color3, color4;
if(hasRowHeader && hasRowFooter){
color1 = obj["head"];
color2 = obj["one"];
color3 = obj["two"];
color4 = obj["foot"];
}
else if(hasRowHeader){
color1 = obj["head"];
color2 = obj["one"];
color3 = obj["two"];
color4 = obj["one"];
}
else if(hasRowFooter){
color1 = obj["one"];
color2 = obj["two"];
color3 = obj["one"];
color4 = obj["foot"];
}
else{
color1 = obj["one"];
color2 = obj["two"];
color3 = obj["one"];
color4 = obj["two"];
}
modelListHtml += '<div class="modelbox">'+
'<div class="box">'+
'<span style="color:'+ color1["fc"] +';background-color:'+ color1["bc"] +'"> — </span>'+
'<span style="color:'+ color2["fc"] +';background-color:'+ color2["bc"] +'"> — </span>'+
'<span style="color:'+ color3["fc"] +';background-color:'+ color3["bc"] +'"> — </span>'+
'<span style="color:'+ color4["fc"] +';background-color:'+ color4["bc"] +'"> — </span>'+
'</div>'+
'</div>';
}
$("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelList").append(modelListHtml);
//自定义 模板
let modelCustom = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)]["luckysheet_alternateformat_save_modelCustom"];
if(modelCustom != null && modelCustom.length > 0){
let modelCustomHtml = '';
for(let i = 0; i < modelCustom.length; i++){
let obj = modelCustom[i];
let color1, color2, color3, color4;
if(hasRowHeader && hasRowFooter){
color1 = obj["head"];
color2 = obj["one"];
color3 = obj["two"];
color4 = obj["foot"];
}
else if(hasRowHeader){
color1 = obj["head"];
color2 = obj["one"];
color3 = obj["two"];
color4 = obj["one"];
}
else if(hasRowFooter){
color1 = obj["one"];
color2 = obj["two"];
color3 = obj["one"];
color4 = obj["foot"];
}
else{
color1 = obj["one"];
color2 = obj["two"];
color3 = obj["one"];
color4 = obj["two"];
}
modelCustomHtml += '<div class="modelbox">'+
'<div class="box">'+
'<span style="color:'+ color1["fc"] +';background-color:'+ color1["bc"] +'"> — </span>'+
'<span style="color:'+ color2["fc"] +';background-color:'+ color2["bc"] +'"> — </span>'+
'<span style="color:'+ color3["fc"] +';background-color:'+ color3["bc"] +'"> — </span>'+
'<span style="color:'+ color4["fc"] +';background-color:'+ color4["bc"] +'"> — </span>'+
'</div>'+
'</div>';
}
$("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-modelCustom").append(modelCustomHtml);
}
},
init: function(){
let _this = this;
$("#luckysheet-modal-dialog-slider-alternateformat").remove();
$("body").append(luckysheetAlternateformatHtml());
luckysheetsizeauto();
//关闭
$("#luckysheet-modal-dialog-slider-alternateformat .luckysheet-model-close-btn").click(function () {
$("#luckysheet-modal-dialog-slider-alternateformat").hide();
luckysheetsizeauto();
});
//应用范围
$(document).off("focus.AFrangeInput").on("focus.AFrangeInput", "#luckysheet-alternateformat-range input", function(){
_this.rangefocus = true;
});
$(document).off("blur.AFrangeInput").on("blur.AFrangeInput", "#luckysheet-alternateformat-range input", function(){
_this.rangefocus = false;
});
$(document).off("keydown.AFrangeInput").on("keydown.AFrangeInput", "#luckysheet-alternateformat-range input", function(e){
let rangeValue = $(this).val().trim();
if(e.keyCode == 13){
_this.update();
}
});
$(document).off("click.AFrangeIcon").on("click.AFrangeIcon", "#luckysheet-alternateformat-range .fa-table", function(){
$("#luckysheet-modal-dialog-slider-alternateformat").hide();
luckysheetsizeauto();
let rangeValue = $(this).parents("#luckysheet-alternateformat-range").find("input").val().trim();
_this.rangeDialog(rangeValue);
});
$(document).off("click.AFrDCf").on("click.AFrDCf", "#luckysheet-alternateformat-rangeDialog-confirm", function(){
let rangeValue = $(this).parents("#luckysheet-alternateformat-rangeDialog").find("input").val().trim();
$("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-range input").val(rangeValue);
$(this).parents("#luckysheet-alternateformat-rangeDialog").hide();
$("#luckysheet-modal-dialog-slider-alternateformat").show();
luckysheetsizeauto();
_this.update();
});
$(document).off("click.AFrDCl").on("click.AFrDCl", "#luckysheet-alternateformat-rangeDialog-close", function(){
$(this).parents("#luckysheet-alternateformat-rangeDialog").hide();
$("#luckysheet-modal-dialog-slider-alternateformat").show();
luckysheetsizeauto();
});
$(document).off("click.AFrDTitle").on("click.AFrDTitle", "#luckysheet-alternateformat-rangeDialog .luckysheet-modal-dialog-title-close", function(){
$(this).parents("#luckysheet-alternateformat-rangeDialog").hide();
$("#luckysheet-modal-dialog-slider-alternateformat").show();
luckysheetsizeauto();
});
//页眉、页脚选中
$(document).off("change.AFrowHeader").on("change.AFrowHeader", "#luckysheet-alternateformat-rowHeader", function(){
let hasRowHeader;
if($(this).is(":checked")){
hasRowHeader = true;
}
else{
hasRowHeader = false;
}
let hasRowFooter;
if($("#luckysheet-alternateformat-rowFooter").is(":checked")){
hasRowFooter = true;
}
else{
hasRowFooter = false;
}
_this.checkboxChange(hasRowHeader, hasRowFooter);
_this.modelboxOn();
_this.update();
});
$(document).off("change.AFrowFooter").on("change.AFrowFooter", "#luckysheet-alternateformat-rowFooter", function(){
let hasRowHeader;
if($("#luckysheet-alternateformat-rowHeader").is(":checked")){
hasRowHeader = true;
}
else{
hasRowHeader = false;
}
let hasRowFooter;
if($(this).is(":checked")){
hasRowFooter = true;
}
else{
hasRowFooter = false;
}
_this.checkboxChange(hasRowHeader, hasRowFooter);
_this.modelboxOn();
_this.update();
});
//点击样式模板
$(document).off("click.AFmodelbox").on("click.AFmodelbox", "#luckysheet-modal-dialog-slider-alternateformat .modelbox", function(){
let index = $(this).index();
let $id = $(this).parents(".cf").attr("id");
if($id == "luckysheet-alternateformat-modelList"){
_this.modelfocusIndex = index;
}
else if($id == "luckysheet-alternateformat-modelCustom"){
let len = _this.FixedModelColor.length;
_this.modelfocusIndex = index + len;
}
_this.modelboxOn();
_this.update();
});
//点击选择文本/单元格颜色
$(document).off("click.AFselectColor").on("click.AFselectColor", "#luckysheet-modal-dialog-slider-alternateformat .luckysheet-color-menu-button-indicator", function(){
let $parent = $(this).closest(".toningbox");
let colorType, currenColor;
if($(this).find(".luckysheet-icon-img").hasClass("luckysheet-icon-text-color")){
colorType = "fc";
currenColor = $parent.find(".toningShow").data("fc");
}
else if($(this).find(".luckysheet-icon-img").hasClass("luckysheet-icon-cell-color")){
colorType = "bc";
currenColor = $parent.find(".toningShow").data("bc");
}
//source
let source;
if($parent.hasClass("header")){
source = "0";
}
else if($parent.hasClass("ctOne")){
source = "1";
}
else if($parent.hasClass("ctTwo")){
source = "2";
}
else if($parent.hasClass("footer")){
source = "3";
}
_this.colorSelectDialog(currenColor, colorType, source);
});
//选择颜色 确定 添加自定义模板
$(document).off("click.AFselectColorConfirm").on("click.AFselectColorConfirm", "#luckysheet-alternateformat-colorSelect-dialog-confirm", function(){
let $parent = $(this).parents("#luckysheet-alternateformat-colorSelect-dialog");
const _locale = locale()
const alternatingColors =_locale.alternatingColors;
$("#luckysheet-modal-dialog-mask").hide();
$parent.hide();
//获取currenColor colorType source
let currenColor = $parent.find(".currenColor span").attr("title");
let colorType;
if($parent.find(".luckysheet-modal-dialog-title-text").text() == alternatingColors.selectionTextColor){
colorType = "fc";
}
else if($parent.find(".luckysheet-modal-dialog-title-text").text() == alternatingColors.selectionCellColor){
colorType = "bc";
}
let source = $parent.find(".currenColor").attr("data-source");
//赋给颜色
if(source == "0"){
if(colorType == "fc"){
$("#luckysheet-alternateformat-modelToning .header .toningShow").css("color", currenColor);
$("#luckysheet-alternateformat-modelToning .header .toningShow").data("fc", currenColor);
$("#luckysheet-alternateformat-modelToning .header .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
}
if(colorType == "bc"){
$("#luckysheet-alternateformat-modelToning .header .toningShow").css("background-color", currenColor);
$("#luckysheet-alternateformat-modelToning .header .toningShow").data("bc", currenColor);
$("#luckysheet-alternateformat-modelToning .header .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
}
}
else if(source == "1"){
if(colorType == "fc"){
$("#luckysheet-alternateformat-modelToning .ctOne .toningShow").css("color", currenColor);
$("#luckysheet-alternateformat-modelToning .ctOne .toningShow").data("fc", currenColor);
$("#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
}
if(colorType == "bc"){
$("#luckysheet-alternateformat-modelToning .ctOne .toningShow").css("background-color", currenColor);
$("#luckysheet-alternateformat-modelToning .ctOne .toningShow").data("bc", currenColor);
$("#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
}
}
else if(source == "2"){
if(colorType == "fc"){
$("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").css("color", currenColor);
$("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").data("fc", currenColor);
$("#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
}
if(colorType == "bc"){
$("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").css("background-color", currenColor);
$("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").data("bc", currenColor);
$("#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
}
}
else if(source == "3"){
if(colorType == "fc"){
$("#luckysheet-alternateformat-modelToning .footer .toningShow").css("color", currenColor);
$("#luckysheet-alternateformat-modelToning .footer .toningShow").data("fc", currenColor);
$("#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
}
if(colorType == "bc"){
$("#luckysheet-alternateformat-modelToning .footer .toningShow").css("background-color", currenColor);
$("#luckysheet-alternateformat-modelToning .footer .toningShow").data("bc", currenColor);
$("#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", currenColor);
}
}
//若模板聚焦在固有模板,则新加模板;若模板聚焦在自定义模板,则修改该模板
let hasRowHeader;
if($("#luckysheet-alternateformat-rowHeader").is(":checked")){
hasRowHeader = true;
}
else{
hasRowHeader = false;
}
let hasRowFooter;
if($("#luckysheet-alternateformat-rowFooter").is(":checked")){
hasRowFooter = true;
}
else{
hasRowFooter = false;
}
let index = _this.modelfocusIndex;
let len = _this.FixedModelColor.length;
let format, file;
if(index < len){
format = $.extend(true, {}, _this.getFormatByIndex());
}
else{
file = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)];
let modelCustom = file["luckysheet_alternateformat_save_modelCustom"];
format = $.extend(true, {}, modelCustom[index - len]);
}
if(source == "0"){
if(colorType == "fc"){
format["head"]["fc"] = currenColor;
}
else if(colorType == "bc"){
format["head"]["bc"] = currenColor;
}
}
else if(source == "1"){
if(colorType == "fc"){
format["one"]["fc"] = currenColor;
}
else if(colorType == "bc"){
format["one"]["bc"] = currenColor;
}
}
else if(source == "2"){
if(colorType == "fc"){
format["two"]["fc"] = currenColor;
}
else if(colorType == "bc"){
format["two"]["bc"] = currenColor;
}
}
else if(source == "3"){
if(colorType == "fc"){
format["foot"]["fc"] = currenColor;
}
if(colorType == "bc"){
format["foot"]["bc"] = currenColor;
}
}
if(_this.modelfocusIndex < len){
_this.addCustomModel(format);
_this.modelfocusIndex = _this.getIndexByFormat(format);
}
else{
file["luckysheet_alternateformat_save_modelCustom"][index - len] = format;
if(server.allowUpdate){
server.saveParam("all", Store.currentSheetIndex, file["luckysheet_alternateformat_save_modelCustom"], { "k": "luckysheet_alternateformat_save_modelCustom" });
}
}
_this.getModelBox(hasRowHeader, hasRowFooter);
_this.modelboxOn();
_this.update();
});
//点击 移除交替颜色 按钮
$(document).off("click.AFremove").on("click.AFremove", "#luckysheet-alternateformat-remove", function(){
let dataIndex = $(this).data("index");
let file = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)];
let ruleArr = file["luckysheet_alternateformat_save"];
//保存之前的规则
let historyRules = $.extend(true, [], ruleArr);
//保存当前的规则
if(ruleArr.length > 1){
ruleArr.splice(dataIndex, 1);
}
else{
ruleArr = [];
}
let currentRules = $.extend(true, [], ruleArr);
//刷新一次表格
_this.ref(historyRules, currentRules);
if(server.allowUpdate){
server.saveParam("all", Store.currentSheetIndex, ruleArr, { "k": "luckysheet_alternateformat_save" });
}
//隐藏一些dom
$("#luckysheet-modal-dialog-mask").hide();
$("#luckysheet-modal-dialog-slider-alternateformat").hide();
luckysheetsizeauto();
});
},
perfect: function(){
let _this = this;
let range = $.extend(true, {}, Store.luckysheet_select_save[0]);
let existsIndex = _this.rangeIsExists(range)[1];
let obj = $.extend(true, {}, Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)]["luckysheet_alternateformat_save"][existsIndex]);
//应用范围
let cellrange = obj["cellrange"];
$("#luckysheet-alternateformat-range input").val(getRangetxt(Store.currentSheetIndex, { "row": cellrange["row"], "column": cellrange["column"] }, Store.currentSheetIndex));
Store.luckysheet_select_save = [{ "row": cellrange["row"], "column": cellrange["column"] }];
selectHightlightShow();
//页眉、页脚
let hasRowHeader = obj["hasRowHeader"];
let hasRowFooter = obj["hasRowFooter"];
//模板聚焦
let format = obj["format"];
_this.modelfocusIndex = _this.getIndexByFormat(format);
if(_this.modelfocusIndex == null){
_this.addCustomModel(format);
_this.modelfocusIndex = _this.getIndexByFormat(format);
}
_this.checkboxChange(hasRowHeader, hasRowFooter);
_this.modelboxOn();
//标识 交替颜色的index
$("#luckysheet-alternateformat-remove").data("index", existsIndex);
},
checkboxChange: function(hasRowHeader, hasRowFooter){
if(hasRowHeader){
$("#luckysheet-alternateformat-rowHeader").prop("checked", true);
$("#luckysheet-alternateformat-modelToning .header").show();
}
else{
$("#luckysheet-alternateformat-rowHeader").removeAttr("checked");
$("#luckysheet-alternateformat-modelToning .header").hide();
}
if(hasRowFooter){
$("#luckysheet-alternateformat-rowFooter").prop("checked", true);
$("#luckysheet-alternateformat-modelToning .footer").show();
}
else{
$("#luckysheet-alternateformat-rowFooter").removeAttr("checked");
$("#luckysheet-alternateformat-modelToning .footer").hide();
}
this.getModelBox(hasRowHeader, hasRowFooter);
},
modelboxOn: function(){
let _this = this;
//模板 foucs
$("#luckysheet-modal-dialog-slider-alternateformat .modelbox").removeClass("on");
let index = _this.modelfocusIndex;
let len = _this.FixedModelColor.length;
if(index < len){
$("#luckysheet-alternateformat-modelList .modelbox").eq(index).addClass("on");
}
else{
$("#luckysheet-alternateformat-modelCustom .modelbox").eq(index - len).addClass("on");
}
//编辑 对应颜色改变
_this.modelToningColor();
},
modelToningColor: function(){
let format = this.getFormatByIndex();
//页眉
$("#luckysheet-alternateformat-modelToning .header .toningShow").css({"color": format["head"].fc, "background-color": format["head"].bc});
$("#luckysheet-alternateformat-modelToning .header .toningShow").data("fc", format["head"].fc).data("bc", format["head"].bc);
$("#luckysheet-alternateformat-modelToning .header .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["head"].fc);
$("#luckysheet-alternateformat-modelToning .header .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["head"].bc);
//颜色1
$("#luckysheet-alternateformat-modelToning .ctOne .toningShow").css({"color": format["one"].fc, "background-color": format["one"].bc});
$("#luckysheet-alternateformat-modelToning .ctOne .toningShow").data("fc", format["one"].fc).data("bc", format["one"].bc);
$("#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["one"].fc);
$("#luckysheet-alternateformat-modelToning .ctOne .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["one"].bc);
//颜色2
$("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").css({"color": format["two"].fc, "background-color": format["two"].bc});
$("#luckysheet-alternateformat-modelToning .ctTwo .toningShow").data("fc", format["two"].fc).data("bc", format["two"].bc);
$("#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["two"].fc);
$("#luckysheet-alternateformat-modelToning .ctTwo .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["two"].bc);
//页脚
$("#luckysheet-alternateformat-modelToning .footer .toningShow").css({"color": format["foot"].fc, "background-color": format["foot"].bc});
$("#luckysheet-alternateformat-modelToning .footer .toningShow").data("fc", format["foot"].fc).data("bc", format["foot"].bc);
$("#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-text-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["foot"].fc);
$("#luckysheet-alternateformat-modelToning .footer .luckysheet-icon-cell-color").parents(".luckysheet-color-menu-button-indicator").css("border-bottom-color", format["foot"].bc);
},
addCustomModel: function(format){
let file = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)];
if(file["luckysheet_alternateformat_save_modelCustom"] == null){
file["luckysheet_alternateformat_save_modelCustom"] = [];
}
file["luckysheet_alternateformat_save_modelCustom"].push(format);
if(server.allowUpdate){
server.saveParam("all", Store.currentSheetIndex, file["luckysheet_alternateformat_save_modelCustom"], { "k": "luckysheet_alternateformat_save_modelCustom" });
}
},
colorSelectDialog: function(currenColor, colorType, source){
$("#luckysheet-modal-dialog-mask").show();
$("#luckysheet-alternateformat-colorSelect-dialog").remove();
const _locale = locale()
const alternatingColors =_locale.alternatingColors;
const locale_button = _locale.button;
const locale_toolbar = _locale.toolbar;
let title;
if(colorType == "fc"){
title = alternatingColors.selectionTextColor;
}
else if(colorType == "bc"){
title = alternatingColors.selectionCellColor;
}
$("body").append(replaceHtml(modelHTML, {
"id": "luckysheet-alternateformat-colorSelect-dialog",
"addclass": "luckysheet-alternateformat-colorSelect-dialog",
"title": title,
"content": "<div class='currenColor' data-source='"+ source +"'>"+ alternatingColors.currentColor +":<span title='"+ currenColor +"' style='background-color:"+ currenColor +"'></span></div><div class='colorshowbox'></div>",
"botton": '<button id="luckysheet-alternateformat-colorSelect-dialog-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"
}));
let $t = $("#luckysheet-alternateformat-colorSelect-dialog")
.find(".luckysheet-modal-dialog-content")
.css("min-width", 300)
.end(),
myh = $t.outerHeight(),
myw = $t.outerWidth();
let winw = $(window).width(), winh = $(window).height();
let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
$("#luckysheet-alternateformat-colorSelect-dialog").css({
"left": (winw + scrollLeft - myw) / 2,
"top": (winh + scrollTop - myh) / 3
}).show();
//初始化选择颜色插件
$("#luckysheet-alternateformat-colorSelect-dialog").find(".colorshowbox").spectrum({
showPalette: true,
showPaletteOnly: true,
preferredFormat: "hex",
clickoutFiresChange: false,
showInitial: true,
showInput: true,
flat: true,
hideAfterPaletteSelect: true,
showSelectionPalette: true,
showButtons: false,//隐藏选择取消按钮
maxPaletteSize: 8,
maxSelectionSize: 8,
color: currenColor,
cancelText: locale_button.cancel,
chooseText: locale_toolbar.confirmColor,
togglePaletteMoreText: locale_toolbar.customColor,
togglePaletteLessText: locale_toolbar.collapse,
togglePaletteOnly: true,
clearText: locale_toolbar.clearText,
noColorSelectedText: locale_toolbar.noColorSelectedText,
localStorageKey: "spectrum.textcolor" + server.gridKey,
palette: [
["#000", "#444", "#666", "#999", "#ccc", "#eee", "#f3f3f3", "#fff"],
["#f00", "#f90", "#ff0", "#0f0", "#0ff", "#00f", "#90f", "#f0f"],
["#f4cccc", "#fce5cd", "#fff2cc", "#d9ead3", "#d0e0e3", "#cfe2f3", "#d9d2e9", "#ead1dc"],
["#ea9999", "#f9cb9c", "#ffe599", "#b6d7a8", "#a2c4c9", "#9fc5e8", "#b4a7d6", "#d5a6bd"],
["#e06666", "#f6b26b", "#ffd966", "#93c47d", "#76a5af", "#6fa8dc", "#8e7cc3", "#c27ba0"],
["#c00", "#e69138", "#f1c232", "#6aa84f", "#45818e", "#3d85c6", "#674ea7", "#a64d79"],
["#900", "#b45f06", "#bf9000", "#38761d", "#134f5c", "#0b5394", "#351c75", "#741b47"],
["#600", "#783f04", "#7f6000", "#274e13", "#0c343d", "#073763", "#20124d", "#4c1130"]
],
move: function(color){
if (color != null) {
color = color.toHexString();
}
else {
color = "#000";
}
$("#luckysheet-alternateformat-colorSelect-dialog .currenColor span").css("background-color", color).attr("title", color);
}
});
},
rangeDialog: function(value){
$("#luckysheet-modal-dialog-mask").hide();
$("#luckysheet-alternateformat-rangeDialog").remove();
const _locale = locale()
const alternatingColors =_locale.alternatingColors;
const locale_button = _locale.button;
$("body").append(replaceHtml(modelHTML, {
"id": "luckysheet-alternateformat-rangeDialog",
"addclass": "luckysheet-alternateformat-rangeDialog",
"title": alternatingColors.selectRange,
"content": '<input readonly="readonly" placeholder="'+alternatingColors.tipSelectRange+'" value="'+value+'"/>',
"botton": '<button id="luckysheet-alternateformat-rangeDialog-confirm" class="btn btn-primary">'+locale_button.confirm+'</button><button id="luckysheet-alternateformat-rangeDialog-close" class="btn btn-default">'+locale_button.cancel+'</button>',
"style": "z-index:100003"
}));
let $t = $("#luckysheet-alternateformat-rangeDialog")
.find(".luckysheet-modal-dialog-content")
.css("min-width", 300)
.end(),
myh = $t.outerHeight(),
myw = $t.outerWidth();
let winw = $(window).width(), winh = $(window).height();
let scrollLeft = $(document).scrollLeft(), scrollTop = $(document).scrollTop();
$("#luckysheet-alternateformat-rangeDialog").css({
"left": (winw + scrollLeft - myw) / 2,
"top": (winh + scrollTop - myh) / 3
}).show();
},
rangeIsExists: function(range, index){
let _this = this;
let isExists = false;
let existsIndex = null;
//获取已有交替颜色所有应用范围
let AFarr = $.extend(true, [], Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)]["luckysheet_alternateformat_save"]);
if(index != undefined && index != null){
if(AFarr.length > 1){
AFarr.splice(index, 1);
}
else{
AFarr = [];
}
}
if(AFarr.length > 0){
let arr = [];
for(let i = 0; i < AFarr.length; i++){
let obj = {
"index": i,
"map": _this.getRangeMap(AFarr[i]["cellrange"]["row"], AFarr[i]["cellrange"]["column"])
}
arr.push(obj);
}
//获取当前选区
let rangeMap = _this.getRangeMap(range["row"], range["column"]);
//遍历
for(let x in rangeMap){
if(isExists){
break;
}
for(let j = 0; j < arr.length; j++){
if(x in arr[j]["map"]){
isExists = true;
existsIndex = arr[j]["index"];
break;
}
}
}
}
return [isExists, existsIndex];
},
getRangeMap: function(row, column){
let map = {};
let st_r = row[0], ed_r = row[1], st_c = column[0], ed_c = column[1];
for(let r = st_r; r <= ed_r; r++){
for(let c = st_c; c <= ed_c; c++){
map[r + "_" + c] = 0;
}
}
return map;
},
getIndexByFormat: function(format){
let _this = this;
let index = null;
//格式样式 模板
let modelList = _this.FixedModelColor;
for(let i = 0; i < modelList.length; i++){
let obj = modelList[i];
if(format["head"].fc == obj["head"].fc && format["head"].bc == obj["head"].bc){
if(format["one"].fc == obj["one"].fc && format["one"].bc == obj["one"].bc){
if(format["two"].fc == obj["two"].fc && format["two"].bc == obj["two"].bc){
if(format["foot"].fc == obj["foot"].fc && format["foot"].bc == obj["foot"].bc){
index = i;
break;
}
}
}
}
}
//自定义 模板
let modelCustom = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)]["luckysheet_alternateformat_save_modelCustom"];
if(modelCustom != null && modelCustom.length > 0){
for(let j = 0; j < modelCustom.length; j++){
let obj = modelCustom[j];
if(format["head"].fc == obj["head"].fc && format["head"].bc == obj["head"].bc){
if(format["one"].fc == obj["one"].fc && format["one"].bc == obj["one"].bc){
if(format["two"].fc == obj["two"].fc && format["two"].bc == obj["two"].bc){
if(format["foot"].fc == obj["foot"].fc && format["foot"].bc == obj["foot"].bc){
index = modelList.length + j;
break;
}
}
}
}
}
}
return index;
},
getFormatByIndex: function(){
let _this = this;
let index = _this.modelfocusIndex;
let len = _this.FixedModelColor.length;
let format = {};
if(index < len){
format = _this.FixedModelColor[index];
}
else{
format = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)]["luckysheet_alternateformat_save_modelCustom"][index - len];
}
return format;
},
new: function(cellrange){
let _this = this;
let format = _this.getFormatByIndex();
let file = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)];
let ruleArr = file["luckysheet_alternateformat_save"];
if(ruleArr == null){
ruleArr = [];
}
//保存之前的规则
let historyRules = $.extend(true, [], ruleArr);
//保存当前的规则
let obj = {
"cellrange": {
"row": cellrange["row"],
"column": cellrange["column"]
},
"format": format,
"hasRowHeader": true,
"hasRowFooter": false
}
ruleArr.push(obj);
let currentRules = $.extend(true, [], ruleArr);
//刷新一次表格
_this.ref(historyRules, currentRules);
if(server.allowUpdate){
server.saveParam("all", Store.currentSheetIndex, ruleArr, { "k": "luckysheet_alternateformat_save" });
}
},
update: function(){
let _this = this;
const _locale = locale()
const alternatingColors =_locale.alternatingColors;
//获取标识
let dataIndex = $("#luckysheet-alternateformat-remove").data("index");
//应用范围
let rangeValue = $("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-range input").val().trim();
if(!formula.iscelldata(rangeValue)){
if(isEditMode()){
alert(alternatingColors.errorNoRange);
}
else{
tooltip.info(alternatingColors.errorNoRange, "");
}
return;
}
let cellrange = formula.getcellrange(rangeValue);
let isExists = _this.rangeIsExists(cellrange, dataIndex)[0];
if(isExists){
if(isEditMode()){
alert(alternatingColors.errorExistColors);
}
else{
tooltip.info(alternatingColors.errorExistColors, "");
}
return;
}
//页眉、页脚
let hasRowHeader;
if($("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-rowHeader").is(":checked")){
hasRowHeader = true;
}
else{
hasRowHeader = false;
}
let hasRowFooter;
if($("#luckysheet-modal-dialog-slider-alternateformat #luckysheet-alternateformat-rowFooter").is(":checked")){
hasRowFooter = true;
}
else{
hasRowFooter = false;
}
//获取选中样式模板的颜色
let format = _this.getFormatByIndex();
let file = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)];
let ruleArr = file["luckysheet_alternateformat_save"];
if(ruleArr == null){
ruleArr = [];
}
//保存之前的规则
let historyRules = $.extend(true, [], ruleArr);
//保存当前的规则
let obj = {
"cellrange": {
"row": cellrange["row"],
"column": cellrange["column"]
},
"format": format,
"hasRowHeader": hasRowHeader,
"hasRowFooter": hasRowFooter
}
ruleArr[dataIndex] = obj;
let currentRules = $.extend(true, [], ruleArr);
//刷新一次表格
_this.ref(historyRules, currentRules);
if(server.allowUpdate){
server.saveParam("all", Store.currentSheetIndex, ruleArr, { "k": "luckysheet_alternateformat_save" });
}
},
checksAF: function(r, c, computeMap){
if((r + "_" + c) in computeMap){
//返回值(fc bc)
return computeMap[r + "_" + c];
}
else{
return null;
}
},
getComputeMap: function(){
let file = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)];
let ruleArr = file["luckysheet_alternateformat_save"];
let computeMap = this.compute(ruleArr);
return computeMap;
},
compute: function(obj){
//计算存储
let computeMap = {};
if(obj != null && obj.length > 0){
for(let i = 0; i < obj.length; i++){
let cellrange = obj[i]["cellrange"];
let format = obj[i]["format"];
let hasRowHeader = obj[i]["hasRowHeader"];
let hasRowFooter = obj[i]["hasRowFooter"];
let st_r = cellrange["row"][0],
ed_r = cellrange["row"][1],
st_c = cellrange["column"][0],
ed_c = cellrange["column"][1];
if(hasRowHeader && hasRowFooter){
//页眉所在行
for(let c = st_c; c <= ed_c; c++){
computeMap[st_r + "_" + c] = [format["head"].fc, format["head"].bc];
}
//中间行
if(ed_r - st_r > 1){
for(let r = st_r + 1; r < ed_r; r++){
let fc, bc;
if((r - st_r) % 2 != 0){
fc = format["one"].fc;
bc = format["one"].bc;
}
else{
fc = format["two"].fc;
bc = format["two"].bc;
}
for(let c = st_c; c <= ed_c; c++){
computeMap[r + "_" + c] = [fc, bc];
}
}
}
//页脚所在行
if(ed_r > st_r){
for(let c = st_c; c <= ed_c; c++){
computeMap[ed_r + "_" + c] = [format["foot"].fc, format["foot"].bc];
}
}
}
else if(hasRowHeader){
//页眉所在行
for(let c = st_c; c <= ed_c; c++){
computeMap[st_r + "_" + c] = [format["head"].fc, format["head"].bc];
}
//中间行
if(ed_r > st_r){
for(let r = st_r + 1; r <= ed_r; r++){
let fc, bc;
if((r - st_r) % 2 != 0){
fc = format["one"].fc;
bc = format["one"].bc;
}
else{
fc = format["two"].fc;
bc = format["two"].bc;
}
for(let c = st_c; c <= ed_c; c++){
computeMap[r + "_" + c] = [fc, bc];
}
}
}
}
else if(hasRowFooter){
//中间行
if(ed_r > st_r){
for(let r = st_r; r < ed_r; r++){
let fc, bc;
if((r - st_r) % 2 == 0){
fc = format["one"].fc;
bc = format["one"].bc;
}
else{
fc = format["two"].fc;
bc = format["two"].bc;
}
for(let c = st_c; c <= ed_c; c++){
computeMap[r + "_" + c] = [fc, bc];
}
}
}
//页脚所在行
for(let c = st_c; c <= ed_c; c++){
computeMap[ed_r + "_" + c] = [format["foot"].fc, format["foot"].bc];
}
}
else{
//中间行
for(let r = st_r; r <= ed_r; r++){
let fc, bc;
if((r - st_r) % 2 == 0){
fc = format["one"].fc;
bc = format["one"].bc;
}
else{
fc = format["two"].fc;
bc = format["two"].bc;
}
for(let c = st_c; c <= ed_c; c++){
computeMap[r + "_" + c] = [fc, bc];
}
}
}
}
}
return computeMap;
},
ref: function(historyRules, currentRules){
if (Store.clearjfundo) {
Store.jfundo = [];
let redo = {};
redo["type"] = "updateAF";
redo["sheetIndex"] = Store.currentSheetIndex;
redo["data"] = {"historyRules": historyRules, "currentRules": currentRules};
Store.jfredo.push(redo);
}
let index = getSheetIndex(Store.currentSheetIndex);
Store.luckysheetfile[index]["luckysheet_alternateformat_save"] = currentRules;
setTimeout(function () {
luckysheetrefreshgrid();
}, 1);
}
}
export default alternateformat;