Browse Source

国际化,修复font

master
liuyang 5 years ago
parent
commit
29ab9fd7cc
  1. 17
      src/controllers/constant.js
  2. 13
      src/controllers/freezen.js
  3. 57
      src/controllers/handler.js
  4. 189
      src/controllers/menuButton.js
  5. 11
      src/controllers/server.js
  6. 4
      src/global/createdom.js
  7. 106
      src/locale/en.js
  8. 98
      src/locale/zh.js

17
src/controllers/constant.js

@ -448,14 +448,27 @@ const pivottableconfigHTML = '<div class="luckysheet-cols-menu luckysheet-rightg
modelHTML = '<div id="${id}" style="${style}" class="luckysheet-modal-dialog ${addclass}" tabindex="0" role="dialog" aria-labelledby=":41e" dir="ltr"> <div class="luckysheet-modal-dialog-title luckysheet-modal-dialog-title-draggable"> <span class="luckysheet-modal-dialog-title-text" role="heading">${title}</span> <span class="luckysheet-modal-dialog-title-close" role="button" tabindex="0" aria-label="关闭"><i class="fa fa-times" aria-hidden="true"></i></span> </div> <div class="luckysheet-modal-dialog-content">${content}</div> <div class="luckysheet-modal-dialog-buttons"> ${botton} </div></div>',
maskHTML = '<div class="luckysheet-modal-dialog-mask" id="luckysheet-modal-dialog-mask"></div>',
filtermenuHTML = '<div class="luckysheet-cols-menu luckysheet-mousedown-cancel luckysheet-filter-menu" id="luckysheet-${menuid}-menu"><div id="luckysheet-${menuid}-orderby-asc" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">以A-Z升序排列</div></div><div id="luckysheet-${menuid}-orderby-desc" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><div style="width:205px;" class="luckysheet-mousedown-cancel">以Z-A降序排列</div></div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div><div id="luckysheet-${menuid}-orderby-color" class="luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="position: relative;">按颜色筛选<span class="luckysheet-submenu-arrow" style="user-select: none;right: 0;">►</span></div></div><div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheet-${menuid}-bycondition" style="padding-top:0px;padding-bottom:0px;"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><i class="fa fa-caret-right" aria-hidden="true"></i> 按条件过滤</div></div> <div class="luckysheet-${menuid}-bycondition" style="display:none;"><div class="luckysheet-flat-menu-button luckysheet-mousedown-cancel" id="luckysheet-${menuid}-selected"><span class="luckysheet-mousedown-cancel" data-value="null" data-type="0">无</span><div class="luckysheet-mousedown-cancel"><i class="fa fa-sort" aria-hidden="true"></i></div></div><div class="luckysheet-${menuid}-selected-input"><input type="text" placeholder="输入筛选值" class="luckysheet-mousedown-cancel" /></div><div class="luckysheet-${menuid}-selected-input luckysheet-${menuid}-selected-input2"><span>从</span><input type="text" placeholder="范围开始" class="luckysheet-mousedown-cancel" /><span>到</span><input type="text" placeholder="范围结束" class="luckysheet-mousedown-cancel" /></div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheet-${menuid}-byvalue" style="padding-top:0px;padding-bottom:0px;"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><i class="fa fa-caret-right" aria-hidden="true"></i> 按值过滤</div></div> <div class="luckysheet-${menuid}-byvalue"><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel luckysheet-mousedown-${menuid}-byvalue-btn"><span id="luckysheet-${menuid}-byvalue-btn-all" class="luckysheet-mousedown-cancel">全选</span> - <span id="luckysheet-${menuid}-byvalue-btn-clear" class="luckysheet-mousedown-cancel">清除</span> - <span id="luckysheet-${menuid}-byvalue-btn-contra" class="luckysheet-mousedown-cancel">反选</span> <div><i class="fa fa-${menuid} luckysheet-mousedown-cancel" aria-hidden="true"></i></div></div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="padding-left:3px; padding-right:3px;"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><input type="text" placeholder="按照值进行筛选" class="luckysheet-mousedown-cancel" id="luckysheet-${menuid}-byvalue-input" /><div class="luckysheet-${menuid}-byvalue-input-icon luckysheet-mousedown-cancel"><i class="fa fa-search luckysheet-mousedown-cancel" aria-hidden="true"></i></div></div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div id="luckysheet-${menuid}-byvalue-select" class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"></div></div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><div class="btn btn-primary luckysheet-mousedown-cancel" id="luckysheet-${menuid}-confirm">确 认</div> <div class="btn btn-default luckysheet-mousedown-cancel" id="luckysheet-${menuid}-cancel">取 消</div> <div class="btn btn-danger luckysheet-mousedown-cancel" id="luckysheet-${menuid}-initial">清除筛选</div></div></div> </div>',
filtersubmenuHTML = '<div style="z-index:1004;overflow-y:auto;" class="luckysheet-filter-submenu luckysheet-cols-menu luckysheet-mousedown-cancel" id="luckysheet-${menuid}-submenu"><div data-value="null" data-type="0" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">无</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="cellnull" data-type="0"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">单元格为空</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="cellnonull" data-type="0"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">单元格有数据</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textinclude"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">文本包含</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textnotinclude"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">文本不包含</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textstart"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">文本开头为</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textend"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">文本结尾为</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textequal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">文本等于</div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="dateequal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">日期等于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="datelessthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">日期早于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="datemorethan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">日期晚于</div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="morethan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">大于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="moreequalthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">大于等于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="lessthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">小于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="lessequalthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">小于等于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="equal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">等于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="noequal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">不等于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="include" data-type="2"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">介于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="noinclude" data-type="2"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">不在其中</div></div> </div>',
sheetconfigHTML = ' <div class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-mousedown-cancel" id="luckysheet-rightclick-sheet-menu"> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheetsheetconfigdelete"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">删除</div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheetsheetconfigcopy"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">复制</div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheetsheetconfigrename"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">重命名</div> </div> <div class="luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel" id="luckysheetsheetconfigcolor"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"> 更改颜色 <span class="luckysheet-submenu-arrow" style="user-select: none;">►</span> </div> </div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheetsheetconfighide"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">隐藏</div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheetsheetconfigshow"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">取消隐藏</div> </div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div id="luckysheetsheetconfigmoveleft" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">向左移</div> </div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheetsheetconfigmoveright"> <div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">向右移</div> </div> </div> <div class="luckysheet-cols-menu luckysheet-rightgclick-menu luckysheet-rightgclick-menu-sub luckysheet-mousedown-cancel" id="luckysheetsheetconfigcolor_sub"><div id="luckysheetsheetconfigcolorreset" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">重置颜色</div></div> <div class="luckysheet-mousedown-cancel"> <div class="luckysheet-mousedown-cancel"> <input type="text" id="luckysheetsheetconfigcolorur" /> </div> </div> </div>';
const luckysheetPivotTableHTML = '<div id="luckysheet-modal-dialog-slider-pivot" class="luckysheet-modal-dialog-slider luckysheet-modal-dialog-slider-pivot"> <div class="luckysheet-modal-dialog-slider-title"> <span>数据透视表</span> <span id="luckysheet-modal-dialog-slider-close" title="关闭"><i class="fa fa-times" aria-hidden="true"></i></span> </div> <div class="luckysheet-modal-dialog-slider-content"> <div class="luckysheet-modal-dialog-slider-range"> <div id="luckysheet-dialog-pivotTable-range"></div> <div id="luckysheet-dialog-pivotTable-range-seleted">编辑范围</div> </div> <div class="luckysheet-modal-dialog-slider-list-title"> 选择需要添加到数据透视表的字段 <span title="清除所有已选字段" id="luckysheet-dialog-pivotTable-clearitem">清除</span></div> <div id="luckysheet-modal-dialog-pivotTable-list" class="luckysheet-modal-dialog-slider-list luckysheet-scrollbars"> </div> <div class="luckysheet-modal-dialog-slider-config-c"> <div class="luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-filter"> <div> <span><i class="fa fa-filter luckysheet-mousedown-cancel" aria-hidden="true"></i> 筛选</span> </div> <div id="luckysheet-modal-dialog-config-filter" class="luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars"> </div> </div> <div class="luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-row"> <div> <span><i class="fa fa-list-alt" aria-hidden="true"></i> 行</span> </div> <div id="luckysheet-modal-dialog-config-row" class="luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars"> </div> </div> <div class="luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-column"> <div> <span><i class="fa fa-indent" aria-hidden="true"></i> 列</span> </div> <div id="luckysheet-modal-dialog-config-column" class="luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars"> </div> </div> <div class="luckysheet-modal-dialog-slider-config luckysheet-modal-dialog-config-value"> <div> <span><i class="fa fa-cube" aria-hidden="true"></i> 数值</span> <span style="float: right;margin-right: 10px;display:none;" id="luckysheetpivottablevaluecolrowshow"><label style="padding:0px 5px;margin:0px;font-size:12px;height:15px;line-height:15px;" title="统计字段显示为列" for="luckysheetpivottablevaluecolrow">列</label> <input type="radio" checked="checked" value="1" name="luckysheetpivottablevaluecolrow" id="luckysheetpivottablevaluecolrow" /> <label style="padding:0px 5px;margin:0px;font-size:12px;height:15px;line-height:15px;" title="统计字段显示为行" for="luckysheetpivottablevaluecolrow1">行</label> <input type="radio" value="0" name="luckysheetpivottablevaluecolrow" id="luckysheetpivottablevaluecolrow1" /></span></div> <div id="luckysheet-modal-dialog-config-value" class="luckysheet-modal-dialog-slider-config-list luckysheet-scrollbars"> </div> </div> </div> </div> </div>';
function filtermenuHTML() {
const _locale = locale();
const locale_filter = _locale.filter;
return `<div class="luckysheet-cols-menu luckysheet-mousedown-cancel luckysheet-filter-menu" id="luckysheet-\${menuid}-menu"><div id="luckysheet-\${menuid}-orderby-asc" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.sortByAsc}</div></div><div id="luckysheet-\${menuid}-orderby-desc" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><div style="width:205px;" class="luckysheet-mousedown-cancel">${locale_filter.sortByDesc}</div></div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div><div id="luckysheet-\${menuid}-orderby-color" class="luckysheet-cols-menuitem luckysheet-cols-submenu luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel" style="position: relative;">${locale_filter.filterByColor}<span class="luckysheet-submenu-arrow" style="user-select: none;right: 0;">►</span></div></div><div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-bycondition" style="padding-top:0px;padding-bottom:0px;"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><i class="fa fa-caret-right" aria-hidden="true"></i> ${locale_filter.filterByCondition}</div></div> <div class="luckysheet-\${menuid}-bycondition" style="display:none;"><div class="luckysheet-flat-menu-button luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-selected"><span class="luckysheet-mousedown-cancel" data-value="null" data-type="0">${locale_filter.filiterInputNone}</span><div class="luckysheet-mousedown-cancel"><i class="fa fa-sort" aria-hidden="true"></i></div></div><div class="luckysheet-\${menuid}-selected-input"><input type="text" placeholder="${locale_filter.filiterInputTip}" class="luckysheet-mousedown-cancel" /></div><div class="luckysheet-\${menuid}-selected-input luckysheet-\${menuid}-selected-input2"><span>从</span><input type="text" placeholder="${locale_filter.filiterRangeStartTip}" class="luckysheet-mousedown-cancel" /><span>到</span><input type="text" placeholder="${locale_filter.filiterRangeEndTip}" class="luckysheet-mousedown-cancel" /></div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-byvalue" style="padding-top:0px;padding-bottom:0px;"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><i class="fa fa-caret-right" aria-hidden="true"></i> ${locale_filter.filterByValues}</div></div> <div class="luckysheet-\${menuid}-byvalue"><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel luckysheet-mousedown-\${menuid}-byvalue-btn"><span id="luckysheet-\${menuid}-byvalue-btn-all" class="luckysheet-mousedown-cancel">${locale_filter.filterValueByAllBtn}</span> - <span id="luckysheet-\${menuid}-byvalue-btn-clear" class="luckysheet-mousedown-cancel">${locale_filter.filterValueByClearBtn}</span> - <span id="luckysheet-\${menuid}-byvalue-btn-contra" class="luckysheet-mousedown-cancel">${locale_filter.filterValueByInverseBtn}</span> <div><i class="fa fa-\${menuid} luckysheet-mousedown-cancel" aria-hidden="true"></i></div></div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" style="padding-left:3px; padding-right:3px;"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><input type="text" placeholder="${locale_filter.filterValueByTip}" class="luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-byvalue-input" /><div class="luckysheet-\${menuid}-byvalue-input-icon luckysheet-mousedown-cancel"><i class="fa fa-search luckysheet-mousedown-cancel" aria-hidden="true"></i></div></div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div id="luckysheet-\${menuid}-byvalue-select" class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"></div></div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel"><div class="btn btn-primary luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-confirm">${locale_filter.filterConform}</div> <div class="btn btn-default luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-cancel">${locale_filter.filterCancel}</div> <div class="btn btn-danger luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-initial">${locale_filter.clearFilter}</div></div></div> </div>`
}
function filtersubmenuHTML() {
const _locale = locale();
const locale_filter = _locale.filter;
return `<div style="z-index:1004;overflow-y:auto;" class="luckysheet-filter-submenu luckysheet-cols-menu luckysheet-mousedown-cancel" id="luckysheet-\${menuid}-submenu"><div data-value="null" data-type="0" class="luckysheet-cols-menuitem luckysheet-mousedown-cancel"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionNone}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="cellnull" data-type="0"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellIsNull}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="cellnonull" data-type="0"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellNotNull}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textinclude"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellTextContain}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textnotinclude"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellTextNotContain}</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textstart"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">${locale_filter.conditionCellTextStart}文本开头为</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textend"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">文本结尾为</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="textequal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">文本等于</div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="dateequal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">日期等于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="datelessthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">日期早于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="datemorethan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">日期晚于</div></div> <div class="luckysheet-menuseparator luckysheet-mousedown-cancel" role="separator"></div> <div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="morethan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">大于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="moreequalthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">大于等于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="lessthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">小于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="lessequalthan"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">小于等于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="equal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">等于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="noequal"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">不等于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="include" data-type="2"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">介于</div></div><div class="luckysheet-cols-menuitem luckysheet-mousedown-cancel" data-value="noinclude" data-type="2"><div class="luckysheet-cols-menuitem-content luckysheet-mousedown-cancel">不在其中</div></div> </div>`
}
function luckysheetAlternateformatHtml(){
const _locale = locale()

13
src/controllers/freezen.js

@ -7,7 +7,8 @@ import menuButton from './menuButton';
import luckysheetPostil from './postil';
import luckysheetDropCell from './dropCell';
import { rowLocationByIndex, colLocationByIndex } from '../global/location';
import Store from '../store'
import Store from '../store';
import locale from '../locale/locale';
const luckysheetFreezen = {
freezenHorizontalHTML: '<div id="luckysheet-freezebar-horizontal" class="luckysheet-freezebar" tabindex="0"><div class="luckysheet-freezebar-handle luckysheet-freezebar-horizontal-handle" ><div class="luckysheet-freezebar-handle-bar luckysheet-freezebar-horizontal-handle-title" ></div><div class="luckysheet-freezebar-handle-bar luckysheet-freezebar-horizontal-handle-bar" ></div></div><div class="luckysheet-freezebar-drop luckysheet-freezebar-horizontal-drop" ><div class="luckysheet-freezebar-drop-bar luckysheet-freezebar-horizontal-drop-title" ></div><div class="luckysheet-freezebar-drop-bar luckysheet-freezebar-horizontal-drop-bar" >&nbsp;</div></div></div>',
@ -115,7 +116,9 @@ const luckysheetFreezen = {
_this.freezenverticaldata = freezenverticaldata;
$("#luckysheet-freezen-btn-horizontal").html('<i class="fa fa-indent"></i> 取消冻结');
$("#luckysheet-freezen-btn-horizontal").html('<i class="fa fa-indent"></i> '+locale().freezen.freezenCancel);
$("#luckysheet-freezebar-vertical").show().find(".luckysheet-freezebar-vertical-handle").css({ "left": left }).end().find(".luckysheet-freezebar-vertical-drop").css({ "left": left });
},
@ -235,7 +238,9 @@ const luckysheetFreezen = {
cancelFreezenHorizontal: function (sheetIndex) {
let _this = this;
$("#luckysheet-freezen-btn-horizontal").html('<i class="fa fa-list-alt"></i> 冻结首行');
$("#luckysheet-freezen-btn-horizontal").html('<i class="fa fa-list-alt"></i> '+locale().freezen.default);
_this.freezenhorizontaldata = null;
let ishorizontal = $("#luckysheet-freezebar-horizontal").is(":visible");
$("#luckysheet-freezebar-horizontal").hide();
@ -309,7 +314,7 @@ const luckysheetFreezen = {
_this.freezenhorizontaldata = freezenhorizontaldata;
$("#luckysheet-freezen-btn-horizontal").html('<i class="fa fa-list-alt"></i> 取消冻结');
$("#luckysheet-freezen-btn-horizontal").html('<i class="fa fa-list-alt"></i> '+locale().freezen.freezenCancel);
$("#luckysheet-freezebar-horizontal").show().find(".luckysheet-freezebar-horizontal-handle").css({ "top": top }).end().find(".luckysheet-freezebar-horizontal-drop").css({ "top": top });
},
createAssistCanvas: function(){

57
src/controllers/handler.js

@ -72,6 +72,7 @@ import method from '../global/method';
import { getBorderInfoCompute } from '../global/border';
import { luckysheetDrawMain } from '../global/draw';
import Store from '../store';
import locale from '../locale/locale';
//, columeflowset, rowflowset
export default function luckysheetHandler() {
@ -3791,7 +3792,7 @@ export default function luckysheetHandler() {
//冻结行列
$("#luckysheet-freezen-btn-horizontal").click(function () {
if($.trim($(this).text())=="取消冻结"){
if($.trim($(this).text())==locale().freezen.freezenCancel){
if (luckysheetFreezen.freezenverticaldata != null) {
luckysheetFreezen.cancelFreezenVertical();
luckysheetFreezen.createAssistCanvas();
@ -7496,13 +7497,14 @@ export default function luckysheetHandler() {
let luckysheet_sort_initial = true;
$("#luckysheetorderby").click(function () {
$("body .luckysheet-cols-menu").hide();
const _locale = locale();
const locale_sort = _locale.sort;
if(Store.luckysheet_select_save.length > 1){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
alert(locale_sort.noRangeError);
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
tooltip.info(locale_sort.noRangeError, "");
}
return;
}
@ -7513,9 +7515,10 @@ export default function luckysheetHandler() {
if (luckysheet_sort_initial) {
luckysheet_sort_initial = false;
let content = '<div style="overflow: hidden;" class="luckysheet-sort-modal"><div><label><input type="checkbox" id="luckysheet-sort-haveheader"/><span>数据具有标题行</span></label></div><div style="overflow-y:auto;" id="luckysheet-sort-dialog-tablec"><table data-itemcount="0" cellspacing="0"> <tr><td>排序依据 <select name="sort_0"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </td> <td> <div><label><input value="asc" type="radio" checked="checked" name="sort_0"><span>正序A-Z</span></label></div> <div><label><input value="desc" type="radio" name="sort_0"><span>倒序Z-A</span></label></div></td></tr></table></div><div style="background: #e5e5e5;border-top: 1px solid #f5f5f5; height: 1px; width: 100%;margin:2px 0px;margin-bottom:10px;"></div> <div> <span style="font-weight: bold; text-decoration: underline;text-align:center;color: blue;cursor: pointer;" class="luckysheet-sort-dialog-additem">+ 添加其他排序列</span> </div> </div>';
let content = `<div style="overflow: hidden;" class="luckysheet-sort-modal"><div><label><input type="checkbox" id="luckysheet-sort-haveheader"/><span>${locale_sort.hasTitle}</span></label></div><div style="overflow-y:auto;" id="luckysheet-sort-dialog-tablec"><table data-itemcount="0" cellspacing="0"> <tr><td>${locale_sort.hasTitle} <select name="sort_0"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> </td> <td> <div><label><input value="asc" type="radio" checked="checked" name="sort_0"><span>${locale_sort.asc}A-Z</span></label></div> <div><label><input value="desc" type="radio" name="sort_0"><span>${locale_sort.desc}Z-A</span></label></div></td></tr></table></div><div style="background: #e5e5e5;border-top: 1px solid #f5f5f5; height: 1px; width: 100%;margin:2px 0px;margin-bottom:10px;"></div> <div> <span style="font-weight: bold; text-decoration: underline;text-align:center;color: blue;cursor: pointer;" class="luckysheet-sort-dialog-additem">+ ${locale_sort.addOthers}</span> </div> </div>`;
$("body").append(replaceHtml(modelHTML, { "id": "luckysheet-sort-dialog", "addclass": "", "title": "排序范围", "content": content, "botton": '<button id="luckysheet-sort-modal-confirm" class="btn btn-primary">排序</button><button class="btn btn-default luckysheet-model-close-btn">关闭</button>' }));
$("body").append(replaceHtml(modelHTML, { "id": "luckysheet-sort-dialog", "addclass": "", "title": "排序范围", "content": content, "botton": `<button id="luckysheet-sort-modal-confirm" class="btn btn-primary">${locale_sort.confirm}</button><button class="btn btn-default luckysheet-model-close-btn">${locale_sort.close}</button>`}));
$("#luckysheet-sort-dialog .luckysheet-sort-dialog-additem").click(function () {
let last = Store.luckysheet_select_save[0];
@ -7530,7 +7533,7 @@ export default function luckysheetHandler() {
let v = getcellvalue(r1, c, Store.flowdata, "m");
if(v == null){
v = "列" + (c - c1 + 1);
v = locale_sort.columnOperation + (c - c1 + 1);
}
option += '<option value="' + c + '">' + v + '</option>';
@ -7540,7 +7543,19 @@ export default function luckysheetHandler() {
}
}
$("#luckysheet-sort-dialog table").append('<tr class="luckysheet-sort-dialog-tr"><td><span class="luckysheet-sort-item-close" onclick="$(this).parent().parent().remove();"><i class="fa fa-times" aria-hidden="true"></i></span>次要排序 <select name="sort_' + i + '">' + option + '</select> </td> <td> <div><label><input value="asc" type="radio" checked="checked" name="sort_' + i + '"><span>正序A-Z</span></label></div> <div><label><input value="desc" type="radio" name="sort_' + i + '"><span>倒序Z-A</span></label></div></td></tr>');
$("#luckysheet-sort-dialog table").append(`
<tr class="luckysheet-sort-dialog-tr">
<td><span class="luckysheet-sort-item-close" onclick="$(this).parent().parent().remove();"><i class="fa fa-times"
aria-hidden="true"></i></span>${locale_sort.secondaryTitle} <select
name="sort_${i}">${option}</select> </td>
<td>
<div><label><input value="asc" type="radio" checked="checked"
name="sort_${i}"><span>${locale_sort.asc}A-Z</span></label></div>
<div><label><input value="desc" type="radio" name="sort_${i}"><span>${locale_sort.desc}Z-A</span></label>
</div>
</td>
</tr>
`);
$("#luckysheet-sort-dialog table").data("itemcount", i);
});
@ -7557,7 +7572,7 @@ export default function luckysheetHandler() {
let v = getcellvalue(r1, c, Store.flowdata, "m");
if(v == null){
v = "列" + (c - c1 + 1);
v = locale_sort.columnOperation + (c - c1 + 1);
}
option += '<option value="' + c + '">' + v + '</option>';
@ -7572,14 +7587,14 @@ export default function luckysheetHandler() {
});
});
//自定义排序
//Custom sort
$("#luckysheet-sort-modal-confirm").click(function () {
if(Store.luckysheet_select_save.length > 1){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
alert(locale_sort.noRangeError);
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
tooltip.info(locale_sort.noRangeError, "");
}
return;
@ -7591,7 +7606,7 @@ export default function luckysheetHandler() {
let r1 = last["row"][0], r2 = last["row"][1];
let c1 = last["column"][0], c2 = last["column"][1];
//数据具有标题行
//Data has header row
let t = $("#luckysheet-sort-haveheader").is(':checked');
let str;
@ -7602,7 +7617,8 @@ export default function luckysheetHandler() {
str = r1;
}
let hasMc = false; //排序选区是否有合并单元格
let hasMc = false; //Whether the sort selection has merged cells
let data = [];
for(let r = str; r <= r2; r++){
@ -7622,10 +7638,10 @@ export default function luckysheetHandler() {
if(hasMc){
if(isEditMode()){
alert("选区有合并单元格,无法执行此操作!");
alert(locale_sort.mergeError);
}
else{
tooltip.info("选区有合并单元格,无法执行此操作!", "");
tooltip.info(locale_sort.mergeError, "");
}
return;
@ -7680,7 +7696,7 @@ export default function luckysheetHandler() {
$("#luckysheet-sort-haveheader").prop("checked", false);
$("#luckysheet-sort-dialog input:radio:first").prop("checked", "checked");
$("#luckysheet-sort-dialog .luckysheet-modal-dialog-title-text").html("排序范围从<span>" + chatatABC(c1) + (r1 + 1) + "</span><span>" + chatatABC(c2) + (r2 + 1) + "</span>");
$("#luckysheet-sort-dialog .luckysheet-modal-dialog-title-text").html(locale_sort.sortRangeTitle+"<span>" + chatatABC(c1) + (r1 + 1) + "</span>"+ locale_sort.sortRangeTitleTo +"<span>" + chatatABC(c2) + (r2 + 1) + "</span>");
let $t = $("#luckysheet-sort-dialog"), myh = $t.outerHeight(), myw = $t.outerWidth();
let winw = $(window).width(), winh = $(window).height();
@ -7712,7 +7728,7 @@ export default function luckysheetHandler() {
}
});
//筛选事件处理
//filter event handler
let hidefilersubmenu = null;
$("#luckysheetfilter").click(createFilter);
@ -9708,6 +9724,9 @@ export default function luckysheetHandler() {
}
}
const locale_fontjson = locale().fontjson;
if(txtdata.indexOf("luckysheet_copy_action_table") >- 1 && Store.luckysheet_copy_save["copyRange"] != null && Store.luckysheet_copy_save["copyRange"].length > 0 && isEqual){
//剪切板内容 和 luckysheet本身复制的内容 一致
if(Store.luckysheet_paste_iscut){
@ -9785,7 +9804,7 @@ export default function luckysheetHandler() {
let ffs = ff.split(",");
for(let i = 0; i < ffs.length; i++){
let fa = $.trim(ffs[i].toLowerCase());
fa = menuButton.fontjson[fa];
fa = locale_fontjson[fa];
if(fa == null){
cell.ff = 0;
}

189
src/controllers/menuButton.js

@ -600,10 +600,10 @@ const menuButton = {
if(Store.luckysheet_select_save.length > 1){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
alert(locale_alternatingColors.errorInfo);
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
tooltip.info(locale_alternatingColors.errorInfo, "");
}
return;
}
@ -653,8 +653,14 @@ const menuButton = {
if($menuButton.length == 0){
let subid = "cell-color-self";
let coloritem = replaceHtml(_this.coloritem, { "class": "luckysheet-icon-alternateformat", "name": "交替颜色..." });
let menu = replaceHtml(_this.color, { "id": menuButtonId, "coloritem": coloritem, "colorself": subid, "sub": "" });
const _locale = locale();
const locale_toolbar = _locale.toolbar;
const locale_button = _locale.button;
const locale_alternatingColors = _locale.alternatingColors;
let coloritem = replaceHtml(_this.coloritem, { "class": "luckysheet-icon-alternateformat", "name": locale_toolbar.alternatingColors+"..." });
let menu = replaceHtml(_this.color, { "id": menuButtonId, "coloritem": coloritem, "colorself": subid, "sub": "","resetColor":locale_toolbar.resetColor });
$("body").append(menu);
$menuButton = $("#" + menuButtonId);
@ -672,13 +678,13 @@ const menuButton = {
maxPaletteSize: 8,
maxSelectionSize: 8,
color: "#fff",
cancelText: "取消",
chooseText: "确定颜色",
togglePaletteMoreText: "自定义",
togglePaletteLessText: "收起",
cancelText: locale_button.cancel,
chooseText: locale_button.confirm,
togglePaletteMoreText: locale_toolbar.customColor,
togglePaletteLessText: locale_toolbar.collapse,
togglePaletteOnly: true,
clearText: "清除颜色选择",
noColorSelectedText: "没有颜色被选择",
clearText: locale_toolbar.clearText,
noColorSelectedText: locale_toolbar.noColorSelectedText,
localStorageKey: "spectrum.bgcolor" + server.gridKey,
palette: [
["#000", "#444", "#666", "#999", "#ccc", "#eee", "#f3f3f3", "#fff"],
@ -732,10 +738,10 @@ const menuButton = {
if(Store.luckysheet_select_save.length > 1){
if(isEditMode()){
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
alert(locale_alternatingColors.errorInfo);
}
else{
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
tooltip.info(locale_alternatingColors.errorInfo, "");
}
return;
}
@ -904,23 +910,26 @@ const menuButton = {
if($menuButton.length == 0){
let canvasH = 10, canvasW = 120;
const _locale = locale();
const locale_border = _locale.border;
const locale_toolbar = _locale.toolbar;
const locale_button = _locale.button;
let itemdata = [
{"text": "上框线", "value": "border-top", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-top" style="user-select: none;"> </div> </div>'},
{"text": "下框线", "value":"border-bottom", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-bottom" style="user-select: none;"> </div> </div>'},
{"text": "左框线", "value":"border-left", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-left" style="user-select: none;"> </div> </div>'},
{"text": "右框线", "value":"border-right", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-right" style="user-select: none;"> </div> </div>'},
{"text": locale_border.borderTop, "value": "border-top", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-top" style="user-select: none;"> </div> </div>'},
{"text": locale_border.borderBottom, "value":"border-bottom", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-bottom" style="user-select: none;"> </div> </div>'},
{"text": locale_border.borderLeft, "value":"border-left", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-left" style="user-select: none;"> </div> </div>'},
{"text": locale_border.borderRight, "value":"border-right", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-right" style="user-select: none;"> </div> </div>'},
{"text": "", "value": "split", "example":""},
{"text": "无", "value": "border-none", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-none" style="user-select: none;"> </div> </div>'},
{"text": "所有", "value": "border-all", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-all" style="user-select: none;"> </div> </div>'},
{"text": "外侧", "value": "border-outside", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-outside" style="user-select: none;"> </div> </div>'},
{"text": locale_border.borderNone, "value": "border-none", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-none" style="user-select: none;"> </div> </div>'},
{"text": locale_border.borderAll, "value": "border-all", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-all" style="user-select: none;"> </div> </div>'},
{"text": locale_border.borderOutside, "value": "border-outside", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-outside" style="user-select: none;"> </div> </div>'},
{"text": "", "value": "split", "example": ""},
{"text": "内侧", "value": "border-inside", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-inside" style="user-select: none;"> </div> </div>'},
{"text": "内侧横线", "value": "border-horizontal", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-horizontal" style="user-select: none;"> </div> </div>'},
{"text": "内侧竖线", "value": "border-vertical", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-vertical" style="user-select: none;"> </div> </div>'},
{"text": locale_border.borderInside, "value": "border-inside", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-inside" style="user-select: none;"> </div> </div>'},
{"text": locale_border.borderHorizontal, "value": "border-horizontal", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-horizontal" style="user-select: none;"> </div> </div>'},
{"text": locale_border.borderVertical, "value": "border-vertical", "example": '<div class="luckysheet-icon luckysheet-inline-block luckysheet-material-icon luckysheet-mousedown-cancel" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-border-vertical" style="user-select: none;"> </div> </div>'},
{"text": "", "value": "split", "example": ""},
{"text": "<span id='luckysheet-icon-borderColor-linecolor' class='luckysheet-mousedown-cancel' style='border-bottom:3px solid #000;'>边框颜色</span>", "value":"borderColor", "example":"more"},
{"text": "边框粗细<img id='luckysheetborderSizepreview' width=100 height=10 src='data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==' style='position:absolute;bottom:-5px;right:0px;width:100px;height:10px;'>", "value":"borderSize", "example":"more"}
{"text": "<span id='luckysheet-icon-borderColor-linecolor' class='luckysheet-mousedown-cancel' style='border-bottom:3px solid #000;'>"+ locale_border.borderColor +"</span>", "value":"borderColor", "example":"more"},
{"text": ""+ locale_border.borderSize +"<img id='luckysheetborderSizepreview' width=100 height=10 src='data:image/gif;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVQImWNgYGBgAAAABQABh6FO1AAAAABJRU5ErkJggg==' style='position:absolute;bottom:-5px;right:0px;width:100px;height:10px;'>", "value":"borderSize", "example":"more"}
];
let itemset = _this.createButtonMenu(itemdata);
@ -928,7 +937,7 @@ const menuButton = {
let menu = replaceHtml(_this.menu, { "id": "border-menu", "item": itemset, "subclass": "", "sub": "" });
let subitemdata = [
{"text": "无边框", "value": "0", "example": ""},
{"text": locale_border.borderNone, "value": "0", "example": ""},
{"text": "<canvas type='Thin' class='border-Thin' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "1", "example": ""},
{"text": "<canvas type='Hair' class='border-Hair' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "2", "example": ""},
{"text": "<canvas type='Dotted' class='border-Dotted' width="+ canvasW +" height="+ canvasH +" style='width:"+ canvasW +"px;height:"+ canvasH +"px;position:static;'></canvas>", "value": "3", "example": ""},
@ -948,10 +957,10 @@ const menuButton = {
let submenu = replaceHtml(_this.menu, { "id": "borderSize", "item": subitemset, "subclass": "luckysheet-menuButton-sub" });
let submenuid = "luckysheet-icon-borderSize-menuButton";
let subcolormenuid = "luckysheet-icon-borderColor-menuButton";
let colormenu = replaceHtml(_this.color, { "id": subcolormenuid, "coloritem": "", "colorself": "", "sub": "luckysheet-menuButton-sub" });
let colormenu = replaceHtml(_this.color, { "id": subcolormenuid, "coloritem": "", "colorself": "", "sub": "luckysheet-menuButton-sub",resetColor:locale_toolbar.resetColor });
$("body").append(menu + colormenu + submenu);
$menuButton = $("#" + menuButtonId).width(150);
$menuButton = $("#" + menuButtonId).width(160);
_this.focus($menuButton, "border-all");
$("#" + submenuid + " canvas").each(function(i){
@ -1066,13 +1075,13 @@ const menuButton = {
maxPaletteSize: 8,
maxSelectionSize: 8,
color: "#000",
cancelText: "取消",
chooseText: "确定颜色",
togglePaletteMoreText: "自定义",
togglePaletteLessText: "收起",
cancelText: locale_button.cancel,
chooseText: locale_button.confirm,
togglePaletteMoreText: locale_toolbar.customColor,
togglePaletteLessText: locale_toolbar.collapse,
togglePaletteOnly: true,
clearText: "清除颜色选择",
noColorSelectedText: "没有颜色被选择",
clearText: locale_toolbar.clearText,
noColorSelectedText:locale_toolbar.noColorSelectedText,
localStorageKey: "spectrum.bordercolor" + server.gridKey,
palette: [
["#000", "#444", "#666", "#999", "#ccc", "#eee", "#f3f3f3", "#fff"],
@ -1166,11 +1175,14 @@ const menuButton = {
let $menuButton = $("#" + menuButtonId);
if($menuButton.length == 0){
const _locale = locale();
const locale_merge = _locale.merge;
let itemdata = [
{"text": "全部合并", "value": "mergeAll", "example": ""},
{"text": "垂直合并", "value": "mergeV", "example": ""},
{"text": "水平合并", "value": "mergeH", "example": ""},
{"text": "取消合并", "value": "mergeCancel", "example": ""}
{"text": locale_merge.mergeAll, "value": "mergeAll", "example": ""},
{"text": locale_merge.mergeV, "value": "mergeV", "example": ""},
{"text": locale_merge.mergeH, "value": "mergeH", "example": ""},
{"text": locale_merge.mergeCancel, "value": "mergeCancel", "example": ""}
];
let itemset = _this.createButtonMenu(itemdata);
@ -1187,10 +1199,10 @@ const menuButton = {
if(selectIsOverlap()){
if(isEditMode()){
alert("不能合并重叠区域");
alert(locale_merge.overlappingError);
}
else{
tooltip.info("不能合并重叠区域", "");
tooltip.info(locale_merge.overlappingError, "");
}
return;
}
@ -1213,10 +1225,10 @@ const menuButton = {
if(has_PartMC){
if(isEditMode()){
alert("无法对部分合并单元格执行此操作");
alert(locale_merge.partiallyError);
}
else{
tooltip.info("无法对部分合并单元格执行此操作", "");
tooltip.info(locale_merge.partiallyError, "");
}
return;
}
@ -1256,10 +1268,12 @@ const menuButton = {
let $menuButton = $("#" + menuButtonId);
if($menuButton.length == 0){
const _locale = locale();
const locale_align = _locale.align;
let itemdata = [
{"text": "左对齐", "value": "left", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-left" style="user-select: none;"> </div> </div>'},
{"text": "中间对齐", "value": "center", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-center" style="user-select: none;"> </div> </div>'},
{"text": "右对齐", "value": "right", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-right" style="user-select: none;"> </div> </div>'}
{"text": locale_align.left, "value": "left", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-left" style="user-select: none;"> </div> </div>'},
{"text": locale_align.center, "value": "center", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-center" style="user-select: none;"> </div> </div>'},
{"text": locale_align.right, "value": "right", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-align-right" style="user-select: none;"> </div> </div>'}
];
let itemset = _this.createButtonMenu(itemdata);
@ -1309,12 +1323,13 @@ const menuButton = {
$("#luckysheet-icon-valign-menu").click(function(){
let menuButtonId = $(this).attr("id") + "-menuButton";
let $menuButton = $("#" + menuButtonId);
const _locale = locale();
const locale_align = _locale.align;
if($menuButton.length == 0){
let itemdata = [
{"text": "顶部对齐", "value": "top", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-top" style="user-select: none;"> </div> </div>'},
{"text": "居中对齐", "value": "middle", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-middle" style="user-select: none;"> </div> </div>'},
{"text": "底部对齐", "value": "bottom", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-bottom" style="user-select: none;"> </div> </div>'}
{"text": locale_align.top, "value": "top", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-top" style="user-select: none;"> </div> </div>'},
{"text": locale_align.middle, "value": "middle", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-middle" style="user-select: none;"> </div> </div>'},
{"text": locale_align.bottom, "value": "bottom", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-valign-bottom" style="user-select: none;"> </div> </div>'}
];
let itemset = _this.createButtonMenu(itemdata);
@ -1356,10 +1371,12 @@ const menuButton = {
let $menuButton = $("#" + menuButtonId);
if($menuButton.length == 0){
const _locale = locale();
const locale_textWrap = _locale.textWrap;
let itemdata = [
{"text": "溢出", "value": "overflow", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-overflow" style="user-select: none;"> </div> </div>'},
{"text": "自动换行", "value": "wrap", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-wrap" style="user-select: none;"> </div> </div>'},
{"text": "截断", "value": "clip", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-clip" style="user-select: none;"> </div> </div>'}
{"text": locale_textWrap.overflow, "value": "overflow", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-overflow" style="user-select: none;"> </div> </div>'},
{"text": locale_textWrap.wrap, "value": "wrap", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-wrap" style="user-select: none;"> </div> </div>'},
{"text": locale_textWrap.clip, "value": "clip", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-textwrap-clip" style="user-select: none;"> </div> </div>'}
];
let itemset = _this.createButtonMenu(itemdata);
@ -1401,13 +1418,15 @@ const menuButton = {
let $menuButton = $("#" + menuButtonId);
if($menuButton.length == 0){
const _locale = locale();
const locale_rotation = _locale.rotation;
let itemdata = [
{"text": "无旋转", "value": "none", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none" style="user-select: none;"> </div> </div>'},
{"text": "向上倾斜", "value": "angleup", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-angleup" style="user-select: none;"> </div> </div>'},
{"text": "向下倾斜", "value": "angledown", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-angledown" style="user-select: none;"> </div> </div>'},
{"text": "竖排文字", "value": "vertical", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-vertical" style="user-select: none;"> </div> </div>'},
{"text": "向上90°", "value": "rotation-up", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-rotation-up" style="user-select: none;"> </div> </div>'},
{"text": "向下90°", "value": "rotation-down", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-rotation-down" style="user-select: none;"> </div> </div>'},
{"text": locale_rotation.none, "value": "none", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-none" style="user-select: none;"> </div> </div>'},
{"text": locale_rotation.angleup, "value": "angleup", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-angleup" style="user-select: none;"> </div> </div>'},
{"text": locale_rotation.angledown, "value": "angledown", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-angledown" style="user-select: none;"> </div> </div>'},
{"text": locale_rotation.vertical, "value": "vertical", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-vertical" style="user-select: none;"> </div> </div>'},
{"text": locale_rotation.rotationUp, "value": "rotation-up", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-rotation-up" style="user-select: none;"> </div> </div>'},
{"text": locale_rotation.rotationDown, "value": "rotation-down", "example": '<div class="luckysheet-icon luckysheet-inline-block" style="user-select: none;opacity:1;"> <div aria-hidden="true" class="luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-rotation-rotation-down" style="user-select: none;"> </div> </div>'},
];
let itemset = _this.createButtonMenu(itemdata);
@ -1449,16 +1468,18 @@ const menuButton = {
let $menuButton = $("#" + menuButtonId);
if($menuButton.length == 0){
const _locale = locale();
const locale_freezen = _locale.freezen;
let itemdata = [
{"text": "冻结首行", "value": "freezenRow", "example": ''},
{"text": "冻结首列", "value": "freezenColumn", "example": ''},
{"text": "冻结行列", "value": "freezenRC", "example": ''},
{"text": locale_freezen.freezenRow, "value": "freezenRow", "example": ''},
{"text": locale_freezen.freezenColumn, "value": "freezenColumn", "example": ''},
{"text": locale_freezen.freezenRC, "value": "freezenRC", "example": ''},
{"text": "", "value": "split", "example": ""},
{"text": "冻结行到选区", "value": "freezenRowRange", "example": ''},
{"text": "冻结列到选区", "value": "freezenColumnRange", "example": ''},
{"text": "冻结行列到选区", "value": "freezenRCRange", "example": ''},
{"text": locale_freezen.freezenRowRange, "value": "freezenRowRange", "example": ''},
{"text": locale_freezen.freezenColumnRange, "value": "freezenColumnRange", "example": ''},
{"text": locale_freezen.freezenRCRange, "value": "freezenRCRange", "example": ''},
{"text": "", "value": "split", "example": ""},
{"text": "取消冻结", "value": "freezenCancel", "example": ''}
{"text": locale_freezen.freezenCancel, "value": "freezenCancel", "example": ''}
];
let itemset = _this.createButtonMenu(itemdata);
@ -1466,7 +1487,7 @@ const menuButton = {
let menu = replaceHtml(_this.menu, { "id": "freezen-menu", "item": itemset, "subclass": "", "sub": "" });
$("body").append(menu);
$menuButton = $("#" + menuButtonId).width(130);
$menuButton = $("#" + menuButtonId).width(160);
$menuButton.find(".luckysheet-cols-menuitem").click(function(){
$menuButton.hide();
@ -1544,10 +1565,10 @@ const menuButton = {
else if(itemvalue == "freezenRowRange"){ //选区行冻结
if(Store.luckysheet_select_save == null || Store.luckysheet_select_save.length == 0){
if(isEditMode()){
alert("没有选区");
alert(locale_freezen.noSeletionError);
}
else{
tooltip.info("没有选区", "");
tooltip.info(locale_freezen.noSeletionError, "");
}
return;
@ -1584,10 +1605,10 @@ const menuButton = {
else if(itemvalue == "freezenColumnRange"){ //选区列冻结
if(Store.luckysheet_select_save == null || Store.luckysheet_select_save.length == 0){
if(isEditMode()){
alert("没有选区");
alert(locale_freezen.noSeletionError);
}
else{
tooltip.info("没有选区","");
tooltip.info(locale_freezen.noSeletionError,"");
}
return;
@ -1624,10 +1645,10 @@ const menuButton = {
else if(itemvalue == "freezenRCRange"){ //选区行列冻结
if(Store.luckysheet_select_save == null || Store.luckysheet_select_save.length == 0){
if(isEditMode()){
alert("没有选区");
alert(locale_freezen.noSeletionError);
}
else{
tooltip.info("没有选区","");
tooltip.info(locale_freezen.noSeletionError,"");
}
return;
@ -1675,7 +1696,7 @@ const menuButton = {
luckysheetFreezen.createAssistCanvas();
luckysheetrefreshgrid();
}
else if(itemvalue == "freezenCancel"){ //取消冻结
else if(itemvalue == "freezenCancel"){ //Cancel freezen
if (luckysheetFreezen.freezenverticaldata != null) {
luckysheetFreezen.cancelFreezenVertical();
luckysheetFreezen.createAssistCanvas();
@ -1713,13 +1734,16 @@ const menuButton = {
let $menuButton = $("#" + menuButtonId);
if($menuButton.length == 0){
const _locale = locale();
const locale_sort = _locale.sort;
const locale_filter = _locale.filter;
let itemdata = [
{"text": "升序", "value": "asc", "example": '<i style="font-size:14px;" class="fa fa-sort-numeric-asc" aria-hidden="true"></i>'},
{"text": "降序", "value": "desc", "example": '<i style="font-size:14px;" class="fa fa-sort-numeric-desc" aria-hidden="true"></i>'},
{"text": "自定义排序...", "value": "diysort", "example": '<i style="font-size:14px;" class="fa fa-sort" aria-hidden="true"></i>'},
{"text": locale_sort.asc, "value": "asc", "example": '<i style="font-size:14px;" class="fa fa-sort-numeric-asc" aria-hidden="true"></i>'},
{"text": locale_sort.desc, "value": "desc", "example": '<i style="font-size:14px;" class="fa fa-sort-numeric-desc" aria-hidden="true"></i>'},
{"text": locale_sort.custom+"...", "value": "diysort", "example": '<i style="font-size:14px;" class="fa fa-sort" aria-hidden="true"></i>'},
{"text": "", "value": "split", "example": ""},
{"text": "筛选", "value": "filter", "example": '<i style="font-size:14px;" class="fa fa-filter" aria-hidden="true"></i>'},
{"text": "清除筛选", "value": "clearfilter", "example": '<i style="font-size:14px;" class="fa fa-window-close" aria-hidden="true"></i>'}
{"text": locale_filter.filter, "value": "filter", "example": '<i style="font-size:14px;" class="fa fa-filter" aria-hidden="true"></i>'},
{"text": locale_filter.clearFilter, "value": "clearfilter", "example": '<i style="font-size:14px;" class="fa fa-window-close" aria-hidden="true"></i>'}
];
let itemset = _this.createButtonMenu(itemdata);
@ -3307,8 +3331,9 @@ const menuButton = {
menuButtonFocus: function(d, r, c){
let _this = this;
let foucsList = ["bl", "it", "cl", "ff", "ht", "vt", "fs", "tb", "tr"];
const locale_fontarray = locale().fontarray;
const _locale = locale();
const locale_fontarray = _locale.fontarray;
const locale_fontjson = _locale.fontjson;
for(let i = 0; i < foucsList.length; i++){
let attr = foucsList[i];
let foucsStatus = _this.checkstatus(d, r, c, attr);
@ -3340,7 +3365,7 @@ const menuButton = {
else if(attr == "ff"){
let menuButtonId = "luckysheet-icon-font-family-menuButton";
let $menuButton = $("#" + menuButtonId);
const locale_fontarray = locale().fontarray;
// const locale_fontarray = locale().fontarray;
let itemname = locale_fontarray[0], itemvalue = 0;
if(foucsStatus != null){
if(isdatatypemulti(foucsStatus)["num"]){
@ -3348,7 +3373,7 @@ const menuButton = {
itemname = locale_fontarray[itemvalue];
}
else{
itemvalue = _this.fontjson[foucsStatus];
itemvalue = locale_fontjson[foucsStatus];
itemname = locale_fontarray[itemvalue];
}
}

11
src/controllers/server.js

@ -9,6 +9,7 @@ import luckysheetPostil from './postil';
import { getObjType, replaceHtml, getByteLen } from '../utils/util';
import { getSheetIndex } from '../methods/get';
import Store from '../store';
import locale from '../locale/locale';
const server = {
gridKey: null,
@ -322,13 +323,15 @@ const server = {
currentSheetItem.append('<div class="luckysheet-sheets-item-color" style=" position: absolute; width: 100%; height: 3px; bottom: 0px; left: 0px; background-color: ' + value + ';"></div>');
}
}
else if(k == "pivotTable"){ //数据透视表
else if(k == "pivotTable"){ //PivotTable
// luckysheet.pivotTable.changePivotTable(index);
}
else if(k == "freezen"){ //冻结行列
else if(k == "freezen"){ //freezen row and column
if(index == Store.currentSheetIndex){
const _locale = locale();
const locale_freezen = _locale.freezen;
if(file["freezen"].horizontal == null){
$("#luckysheet-freezen-btn-horizontal").html('<i class="fa fa-list-alt"></i> 冻结首行');
$("#luckysheet-freezen-btn-horizontal").html('<i class="fa fa-list-alt"></i> '+locale_freezen.freezenRow);
luckysheetFreezen.freezenhorizontaldata = null;
$("#luckysheet-freezebar-horizontal").hide();
}
@ -337,7 +340,7 @@ const server = {
}
if(file["freezen"].vertical == null){
$("#luckysheet-freezen-btn-vertical").html('<i class="fa fa-indent"></i> 冻结首列');
$("#luckysheet-freezen-btn-vertical").html('<i class="fa fa-indent"></i> '+locale_freezen.freezenColumn);
luckysheetFreezen.freezenverticaldata = null;
$("#luckysheet-freezebar-vertical").hide();
}

4
src/global/createdom.js

@ -99,8 +99,8 @@ export default function luckysheetcreatedom(colwidth, rowheight, data, menu, tit
$("body").append(colsmenuHTML);
$("body").append(rightclickHTML);
$("body").append(inputHTML);
$("body").append(replaceHtml(filtermenuHTML, { "menuid": "filter" }));
$("body").append(replaceHtml(filtersubmenuHTML, { "menuid": "filter" }));
$("body").append(replaceHtml(filtermenuHTML(), { "menuid": "filter" }));
$("body").append(replaceHtml(filtersubmenuHTML(), { "menuid": "filter" }));
$("body").append(sheetconfigHTML);
//批注

106
src/locale/en.js

@ -312,6 +312,110 @@ export default {
MicrosoftYaHei:"YaHei",
},
fontarray: ["Times New Roman","Arial","Tahoma","Verdana"],
fontjson: {"arial":1,"times new roman":0,"tahoma":2,"verdana":3}
fontjson: {"arial":1,"times new roman":0,"tahoma":2,"verdana":3},
border:{
borderTop:'borderTop',
borderBottom:'borderBottom',
borderLeft:'borderLeft',
borderRight:'borderRight',
borderNone:'borderNone',
borderAll:'borderAll',
borderOutside:'borderOutside',
borderInside:'borderInside',
borderHorizontal:'borderHorizontal',
borderVertical:'borderVertical',
borderColor:'borderColor',
borderSize:'borderSize',
},
merge:{
mergeAll:"Merge all",
mergeV:"Vertically",
mergeH:"Horizentally",
mergeCancel:"Unmerge",
overlappingError:"Cannot merge overlapping areas",
partiallyError:"Cannot perform this operation on partially merged cells",
},
align:{
left:"left",
center:"center",
right:"right",
top:"Top",
middle:"Middle",
bottom:"Bottom",
},
textWrap:{
"overflow":"Overflow",
"wrap":"Wrap",
"clip":"Clip",
},
rotation:{
"none":"None",
"angleup":"Tilt Up",
"angledown":"Tilt down",
"vertical":"Stack Vertically",
"rotationUp":"Rotate Up",
"rotationDown":"Rotate down"
},
freezen:{
default:"Freezen",
freezenRow:"First Row",
freezenColumn:"First column",
freezenRC:"Both",
freezenRowRange:"Freezen row range",
freezenColumnRange:"Freezen column range",
freezenRCRange:"Freezen both range",
freezenCancel:"Cancel",
noSeletionError:"No Range to be selected",
},
sort:{
"asc":"Ascending ",
"desc":"Descending ",
"custom":"Custom sort",
"hasTitle":"Data has header row",
"sortBy":"Sort by",
"addOthers":"Add another sort column",
"close":"close",
"confirm":"sort",
"columnOperation":"Column",
"secondaryTitle":"then by",
"sortRangeTitle":"Sort range from",
"sortRangeTitleTo":"to",
"noRangeError":"Cannot perform this operation on multiple selection areas, please select a single range and try again",
"mergeError":"There are merged cells in the selection, this operation cannot be performed!",
},
filter:{
"filter":"create filter",
"clearFilter":"Cancel filter",
sortByAsc:"Sort A-Z",
sortByDesc:"Sort Z-A",
filterByColor:"Filter by color",
filterByCondition:"Filter by condition",
filterByValues:"Filter by values",
filiterInputNone:"None",
filiterInputTip:"Enter filter value",
filiterRangeStartTip:"Value for formula",
filiterRangeEndTip:"Value for formula",
filterValueByAllBtn:"Check all",
filterValueByClearBtn:"Clear",
filterValueByInverseBtn:"Inverse",
filterValueByTip:"filter By Values",
filterConform:"Confirm",
filterCancel:"Cancel",
clearFilter:"Clear filter",
}
};

98
src/locale/zh.js

@ -333,6 +333,102 @@ export default {
MicrosoftYaHei:"Microsoft YaHei",
},
fontarray: ["微软雅黑","宋体","黑体","楷体","仿宋","新宋体","华文新魏","华文行楷","华文隶书","Arial","Times New Roman","Tahoma","Verdana"],
fontjson: {"微软雅黑":0,"microsoft yahei":0,"宋体":1,"simsun":1,"黑体":2,"simhei":2,"楷体":3,"kaiti":3,"仿宋":4,"fangsong":4,"新宋体":5,"nsimsun":5,"华文新魏":6,"stxinwei":6,"华文行楷":7,"stxingkai":7,"华文隶书":8,"stliti":8,"arial":9,"times new roman":10,"tahoma":11,"verdana":12}
fontjson: {"微软雅黑":0,"microsoft yahei":0,"宋体":1,"simsun":1,"黑体":2,"simhei":2,"楷体":3,"kaiti":3,"仿宋":4,"fangsong":4,"新宋体":5,"nsimsun":5,"华文新魏":6,"stxinwei":6,"华文行楷":7,"stxingkai":7,"华文隶书":8,"stliti":8,"arial":9,"times new roman":10,"tahoma":11,"verdana":12},
border:{
borderTop:'上框线',
borderBottom:'下框线',
borderLeft:'左框线',
borderRight:'右框线',
borderNone:'无',
borderAll:'所有',
borderOutside:'外侧',
borderInside:'内侧',
borderHorizontal:'内侧横线',
borderVertical:'内侧竖线',
borderColor:'边框颜色',
borderSize:'边框粗细'
},
merge:{
mergeAll:"全部合并",
mergeV:"垂直合并",
mergeH:"水平合并",
mergeCancel:"取消合并",
overlappingError:"不能合并重叠区域",
partiallyError:"无法对部分合并单元格执行此操作",
},
align:{
left:"左对齐",
center:"中间对齐",
right:"右对齐",
top:"顶部对齐",
middle:"居中对齐",
bottom:"底部对齐",
},
textWrap:{
"overflow":"溢出",
"wrap":"自动换行",
"clip":"截断",
},
freezen:{
default:"冻结首行",
freezenRow:"冻结首行",
freezenColumn:"冻结首列",
freezenRC:"冻结行列",
freezenRowRange:"冻结行到选区",
freezenColumnRange:"冻结列到选区",
freezenRCRange:"冻结行列到选区",
freezenCancel:"取消冻结",
noSeletionError:"没有选区",
},
sort:{
"asc":"升序",
"desc":"降序",
"custom":"自定义排序",
"hasTitle":"数据具有标题行",
"sortBy":"排序依据",
"addOthers":"添加其他排序列",
"close":"关闭",
"confirm":"排序",
"columnOperation":"列",
"secondaryTitle":"次要排序",
"sortRangeTitle":"排序范围从",
"sortRangeTitleTo":"到",
"noRangeError":"不能对多重选择区域执行此操作,请选择单个区域,然后再试",
"mergeError":"选区有合并单元格,无法执行此操作!",
},
filter:{
"filter":"筛选",
"clearFilter":"清除筛选",
sortByAsc:"以A-Z升序排列",
sortByDesc:"以Z-A降序排列",
filterByColor:"按颜色筛选",
filterByCondition:"按条件过滤",
filterByValues:"按值过滤",
filiterInputNone:"无",
filiterInputTip:"输入筛选值",
filiterRangeStartTip:"范围开始",
filiterRangeEndTip:"范围结束",
filterValueByAllBtn:"全选",
filterValueByClearBtn:"清除",
filterValueByInverseBtn:"反选",
filterValueByTip:"按照值进行筛选",
filterConform:"确 认",
filterCancel:"取 消",
clearFilter:"清除筛选",
conditionNone:"无",
}
};

Loading…
Cancel
Save