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 += '
'+ '
'+ ''+ ''+ ''+ ''+ '
'+ '
'; } $("#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 += '
'+ '
'+ ''+ ''+ ''+ ''+ '
'+ '
'; } $("#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": "
"+ alternatingColors.currentColor +":
", "botton": '', "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": '', "botton": '', "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;