import { getSheetIndex } from '../methods/get' ;
import { luckysheet_searcharray } from './sheetSearch' ;
import { selectHightlightShow } from './select' ;
import { createFilterOptions } from './filter' ;
import server from './server' ;
import menuButton from './menuButton' ;
import luckysheetPostil from './postil' ;
import luckysheetDropCell from './dropCell' ;
import { rowLocationByIndex , colLocationByIndex } from '../global/location' ;
import Store from '../store' ;
import locale from '../locale/locale' ;
import { luckysheetrefreshgrid } from '../global/refresh' ;
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" > </div></div></div>' ,
freezenVerticalHTML : '<div id="luckysheet-freezebar-vertical" class="luckysheet-freezebar" tabindex="0"><div class="luckysheet-freezebar-handle luckysheet-freezebar-vertical-handle" ><div class="luckysheet-freezebar-handle-bar luckysheet-freezebar-vertical-handle-title" ></div><div class="luckysheet-freezebar-handle-bar luckysheet-freezebar-vertical-handle-bar" ></div></div><div class="luckysheet-freezebar-drop luckysheet-freezebar-vertical-drop" ><div class="luckysheet-freezebar-drop-bar luckysheet-freezebar-vertical-drop-title" ></div><div class="luckysheet-freezebar-drop-bar luckysheet-freezebar-vertical-drop-bar" > </div></div></div>' ,
initialHorizontal : true ,
initialVertical : true ,
horizontalmovestate : false ,
horizontalmoveposition : null ,
verticalmovestate : false ,
verticalmoveposition : null ,
windowHeight : null ,
windowWidth : null ,
freezenhorizontaldata : null ,
freezenverticaldata : null ,
// 定义冻结首行、首列是实际的第一行第一列还是当前视图的第一行第一列
// excel 为视图的第一行第一列,但此处实现有问题,如滚动到15行冻结首行,当前冻结了15行,保存再进去实际冻结了第一行
// 冻结真实的第一行、第一列更符合直觉
freezenRealFirstRowColumn : true ,
cutVolumn : function ( arr , cutindex ) {
if ( cutindex <= 0 ) {
return arr ;
}
let pre = arr . slice ( 0 , cutindex ) ;
let premax = pre [ pre . length - 1 ] ;
let ret = arr . slice ( cutindex ) ;
// for (let i = 0; i < ret.length; i++) {
// ret[i] -= premax;
// }
return ret ;
} ,
cancelFreezenVertical : function ( sheetIndex ) {
let _ this = this ;
const _ locale = locale ( ) ;
const locale_freezen = _ locale . freezen ;
$ ( "#luckysheet-freezen-btn-vertical" ) . html ( '<i class="fa fa-indent"></i> ' + locale_freezen . freezenColumn ) ;
_ this . freezenverticaldata = null ;
let isvertical = $ ( "#luckysheet-freezebar-vertical" ) . is ( ":visible" ) ;
$ ( "#luckysheet-freezebar-vertical" ) . hide ( ) ;
if ( sheetIndex == null ) {
sheetIndex = Store . currentSheetIndex ;
}
let currentSheet = Store . luckysheetfile [ getSheetIndex ( sheetIndex ) ] ;
if ( currentSheet . freezen != null ) {
currentSheet . freezen . vertical = null ;
}
if ( currentSheet . frozen != null && isvertical ) {
server . saveParam ( "all" , sheetIndex , currentSheet . frozen , { "k" : "frozen" } ) ;
}
} ,
createFreezenVertical : function ( freezenverticaldata , left ) {
let _ this = this ;
if ( _ this . initialVertical ) {
_ this . initialVertical = false ;
$ ( "#luckysheet-grid-window-1" ) . append ( _ this . freezenVerticalHTML ) ;
$ ( "#luckysheet-freezebar-vertical" ) . find ( ".luckysheet-freezebar-vertical-drop" ) . hover ( function ( ) {
$ ( this ) . parent ( ) . addClass ( "luckysheet-freezebar-hover" ) ;
} , function ( ) {
$ ( this ) . parent ( ) . removeClass ( "luckysheet-freezebar-hover" ) ;
} ) ;
$ ( "#luckysheet-freezebar-vertical" ) . find ( ".luckysheet-freezebar-vertical-drop" ) . mousedown ( function ( ) {
_ this . verticalmovestate = true ;
_ this . verticalmoveposition = $ ( this ) . position ( ) . left ;
_ this . windowWidth = $ ( "#luckysheet-grid-window-1" ) . width ( ) ;
$ ( this ) . parent ( ) . addClass ( "luckysheet-freezebar-active" ) ;
$ ( "#luckysheet-freezebar-vertical" ) . find ( ".luckysheet-freezebar-vertical-handle" ) . css ( "cursor" , "-webkit-grabbing" ) ;
} ) ;
let gridheight = $ ( "#luckysheet-grid-window-1" ) . height ( ) ;
$ ( "#luckysheet-freezebar-vertical" ) . find ( ".luckysheet-freezebar-vertical-handle" ) . css ( {
"height" : gridheight - 10 ,
"width" : "4px" ,
"cursor" : "-webkit-grab" ,
"top" : "0px"
} ) . end ( ) . find ( ".luckysheet-freezebar-vertical-drop" ) . css ( {
"height" : gridheight - 10 ,
"width" : "4px" ,
"top" : "0px" ,
"cursor" : "-webkit-grab"
} ) ;
}
if ( freezenverticaldata == null ) {
if ( _ this . freezenRealFirstRowColumn ) {
let dataset_col_st = 0 ;
left = Store . visibledatacolumn [ dataset_col_st ] - 2 + Store . rowHeaderWidth ;
freezenverticaldata = [
Store . visibledatacolumn [ dataset_col_st ] ,
dataset_col_st + 1 ,
0 ,
_ this . cutVolumn ( Store . visibledatacolumn , dataset_col_st + 1 ) ,
left
] ;
} else {
let scrollLeft = $ ( "#luckysheet-cell-main" ) . scrollLeft ( ) ;
let dataset_col_st = luckysheet_searcharray ( Store . visibledatacolumn , scrollLeft ) ;
if ( dataset_col_st == - 1 ) {
dataset_col_st = 0 ;
}
left = Store . visibledatacolumn [ dataset_col_st ] - 2 - scrollLeft + Store . rowHeaderWidth ;
freezenverticaldata = [
Store . visibledatacolumn [ dataset_col_st ] ,
dataset_col_st + 1 ,
scrollLeft ,
_ this . cutVolumn ( Store . visibledatacolumn , dataset_col_st + 1 ) ,
left
] ;
}
_ this . saveFreezen ( null , null , freezenverticaldata , left ) ;
}
_ this . freezenverticaldata = freezenverticaldata ;
// $("#luckysheet-freezen-btn-horizontal").html('<i class="luckysheet-icon-img-container iconfont luckysheet-iconfont-dongjie1"></i> '+locale().freezen.freezenCancel);
// 解决freeze 不垂直居中的问题
const freezeHTML = `
< div class = "luckysheet-toolbar-button-outer-box luckysheet-inline-block"
style = "user-select: none;" >
< div class = "luckysheet-toolbar-button-inner-box luckysheet-inline-block"
style = "user-select: none;" >
< div class = "luckysheet-icon luckysheet-inline-block " style = "user-select: none;" >
< div aria - hidden = "true" class = "luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont luckysheet-iconfont-dongjie1"
style = "user-select: none;" >
< / d i v >
< / d i v >
< div class = "luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
style = "user-select: none;" >
$ { locale ( ) . freezen . freezenCancel }
< / d i v >
< / d i v >
< / d i v >
`
$ ( "#luckysheet-freezen-btn-horizontal" ) . html ( freezeHTML ) ;
$ ( "#luckysheet-freezebar-vertical" ) . show ( ) . find ( ".luckysheet-freezebar-vertical-handle" ) . css ( { "left" : left } ) . end ( ) . find ( ".luckysheet-freezebar-vertical-drop" ) . css ( { "left" : left } ) ;
} ,
saveFreezen : function ( freezenhorizontaldata , top , freezenverticaldata , left ) {
let currentSheet = Store . luckysheetfile [ getSheetIndex ( Store . currentSheetIndex ) ] ;
if ( currentSheet . freezen == null ) {
currentSheet . freezen = { } ;
}
if ( freezenhorizontaldata != null ) {
if ( currentSheet . freezen . horizontal == null ) {
currentSheet . freezen . horizontal = { } ;
}
currentSheet . freezen . horizontal . freezenhorizontaldata = freezenhorizontaldata ;
currentSheet . freezen . horizontal . top = top ;
}
if ( freezenverticaldata != null ) {
if ( currentSheet . freezen . vertical == null ) {
currentSheet . freezen . vertical = { } ;
}
currentSheet . freezen . vertical . freezenverticaldata = freezenverticaldata ;
currentSheet . freezen . vertical . left = left ;
}
// if(currentSheet.freezen != null){
// server.saveParam("all", Store.currentSheetIndex, currentSheet.freezen, { "k": "freezen" });
// }
// use new property frozen
if ( currentSheet . frozen != null ) {
server . saveParam ( "all" , Store . currentSheetIndex , currentSheet . frozen , { "k" : "frozen" } ) ;
}
} ,
initialFreezen : function ( sheetIndex ) {
let _ this = this ;
// when init ,we get frozen, but here, we need freezen,so tranform it
_ this . frozenTofreezen ( ) ;
let currentSheet = Store . luckysheetfile [ getSheetIndex ( sheetIndex ) ] ;
if ( currentSheet . freezen != null && currentSheet . freezen . horizontal != null && currentSheet . freezen . horizontal . freezenhorizontaldata != null ) {
_ this . createFreezenHorizontal ( currentSheet . freezen . horizontal . freezenhorizontaldata , currentSheet . freezen . horizontal . top ) ;
}
else {
_ this . cancelFreezenHorizontal ( sheetIndex ) ;
}
if ( currentSheet . freezen != null && currentSheet . freezen . vertical != null && currentSheet . freezen . vertical . freezenverticaldata != null ) {
_ this . createFreezenVertical ( currentSheet . freezen . vertical . freezenverticaldata , currentSheet . freezen . vertical . left ) ;
}
else {
_ this . cancelFreezenVertical ( sheetIndex ) ;
}
_ this . createAssistCanvas ( ) ;
} ,
changeFreezenIndex : function ( originindex , type ) {
let _ this = this ;
if ( type == "v" && _ this . freezenverticaldata != null ) {
let freezen_colindex = _ this . freezenverticaldata [ 1 ] ;
let offset = luckysheet_searcharray ( Store . visibledatacolumn , $ ( "#luckysheet-cell-main" ) . scrollLeft ( ) ) ;
if ( originindex - offset < freezen_colindex ) {
originindex = originindex - offset ;
}
}
else if ( type == "h" && _ this . freezenhorizontaldata != null ) {
let freezen_rowindex = _ this . freezenhorizontaldata [ 1 ] ;
let offset = luckysheet_searcharray ( Store . visibledatarow , $ ( "#luckysheet-cell-main" ) . scrollTop ( ) ) ;
if ( originindex - offset < freezen_rowindex ) {
originindex = originindex - offset ;
}
}
return originindex ;
} ,
scrollFreezen : function ( ) {
let _ this = this ;
let row ;
let row_focus = Store . luckysheet_select_save [ 0 ] [ "row_focus" ] ;
if ( row_focus == Store . luckysheet_select_save [ 0 ] [ "row" ] [ 0 ] ) {
row = Store . luckysheet_select_save [ 0 ] [ "row" ] [ 1 ] ;
}
else if ( row_focus == Store . luckysheet_select_save [ 0 ] [ "row" ] [ 1 ] ) {
row = Store . luckysheet_select_save [ 0 ] [ "row" ] [ 0 ] ;
}
let column ;
let column_focus = Store . luckysheet_select_save [ 0 ] [ "column_focus" ] ;
if ( column_focus == Store . luckysheet_select_save [ 0 ] [ "column" ] [ 0 ] ) {
column = Store . luckysheet_select_save [ 0 ] [ "column" ] [ 1 ] ;
}
else if ( column_focus == Store . luckysheet_select_save [ 0 ] [ "column" ] [ 1 ] ) {
column = Store . luckysheet_select_save [ 0 ] [ "column" ] [ 0 ] ;
}
if ( _ this . freezenverticaldata != null ) {
let freezen_colindex = _ this . freezenverticaldata [ 1 ] ;
let offset = luckysheet_searcharray ( _ this . freezenverticaldata [ 3 ] , $ ( "#luckysheet-cell-main" ) . scrollLeft ( ) ) ;
let top = _ this . freezenverticaldata [ 4 ] ;
freezen_colindex += offset ;
if ( column >= Store . visibledatacolumn . length ) {
column = Store . visibledatacolumn . length - 1 ;
}
if ( freezen_colindex >= Store . visibledatacolumn . length ) {
freezen_colindex = Store . visibledatacolumn . length - 1 ;
}
let column_px = Store . visibledatacolumn [ column ] , freezen_px = Store . visibledatacolumn [ freezen_colindex ] ;
if ( column_px <= freezen_px + top ) {
setTimeout ( function ( ) { $ ( "#luckysheet-scrollbar-x" ) . scrollLeft ( 0 ) ; } , 100 ) ;
}
}
if ( _ this . freezenhorizontaldata != null ) {
let freezen_rowindex = _ this . freezenhorizontaldata [ 1 ] ;
let offset = luckysheet_searcharray ( _ this . freezenhorizontaldata [ 3 ] , $ ( "#luckysheet-cell-main" ) . scrollTop ( ) ) ;
let left = _ this . freezenhorizontaldata [ 4 ] ;
freezen_rowindex += offset ;
if ( row >= Store . visibledatarow . length ) {
row = Store . visibledatarow . length - 1 ;
}
if ( freezen_rowindex >= Store . visibledatarow . length ) {
freezen_rowindex = Store . visibledatarow . length - 1 ;
}
let row_px = Store . visibledatarow [ row ] , freezen_px = Store . visibledatarow [ freezen_rowindex ] ;
if ( row_px <= freezen_px + left ) {
setTimeout ( function ( ) { $ ( "#luckysheet-scrollbar-y" ) . scrollTop ( 0 ) ; } , 100 ) ;
}
}
} ,
cancelFreezenHorizontal : function ( sheetIndex ) {
let _ this = this ;
// $("#luckysheet-freezen-btn-horizontal").html('<i class="luckysheet-icon-img-container iconfont luckysheet-iconfont-dongjie1"></i> '+locale().freezen.default);
// 解决freeze 不垂直居中的问题
const freezeHTML = `
< div class = "luckysheet-toolbar-button-outer-box luckysheet-inline-block"
style = "user-select: none;" >
< div class = "luckysheet-toolbar-button-inner-box luckysheet-inline-block"
style = "user-select: none;" >
< div class = "luckysheet-icon luckysheet-inline-block " style = "user-select: none;" >
< div aria - hidden = "true" class = "luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont luckysheet-iconfont-dongjie1"
style = "user-select: none;" >
< / d i v >
< / d i v >
< div class = "luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
style = "user-select: none;" >
$ { locale ( ) . freezen . default }
< / d i v >
< / d i v >
< / d i v >
`
$ ( "#luckysheet-freezen-btn-horizontal" ) . html ( freezeHTML ) ;
_ this . freezenhorizontaldata = null ;
let ishorizontal = $ ( "#luckysheet-freezebar-horizontal" ) . is ( ":visible" ) ;
$ ( "#luckysheet-freezebar-horizontal" ) . hide ( ) ;
if ( sheetIndex == null ) {
sheetIndex = Store . currentSheetIndex ;
}
let currentSheet = Store . luckysheetfile [ getSheetIndex ( sheetIndex ) ] ;
if ( currentSheet . freezen != null ) {
currentSheet . freezen . horizontal = null ;
}
if ( currentSheet . frozen != null && ishorizontal ) {
server . saveParam ( "all" , sheetIndex , currentSheet . frozen , { "k" : "frozen" } ) ;
}
} ,
createFreezenHorizontal : function ( freezenhorizontaldata , top ) {
let _ this = this ;
if ( _ this . initialHorizontal ) {
_ this . initialHorizontal = false ;
$ ( "#luckysheet-grid-window-1" ) . append ( _ this . freezenHorizontalHTML ) ;
$ ( "#luckysheet-freezebar-horizontal" ) . find ( ".luckysheet-freezebar-horizontal-drop" ) . hover ( function ( ) {
$ ( this ) . parent ( ) . addClass ( "luckysheet-freezebar-hover" ) ;
} , function ( ) {
$ ( this ) . parent ( ) . removeClass ( "luckysheet-freezebar-hover" ) ;
} ) ;
$ ( "#luckysheet-freezebar-horizontal" ) . find ( ".luckysheet-freezebar-horizontal-drop" ) . mousedown ( function ( ) {
_ this . horizontalmovestate = true ;
_ this . horizontalmoveposition = $ ( this ) . position ( ) . top ;
_ this . windowHeight = $ ( "#luckysheet-grid-window-1" ) . height ( ) ;
$ ( this ) . parent ( ) . addClass ( "luckysheet-freezebar-active" ) ;
$ ( "#luckysheet-freezebar-horizontal" ) . find ( ".luckysheet-freezebar-horizontal-handle" ) . css ( "cursor" , "-webkit-grabbing" ) ;
} ) ;
let gridwidth = $ ( "#luckysheet-grid-window-1" ) . width ( ) ;
$ ( "#luckysheet-freezebar-horizontal" ) . find ( ".luckysheet-freezebar-horizontal-handle" ) . css ( {
"width" : gridwidth - 10 ,
"height" : "4px" ,
"cursor" : "-webkit-grab" ,
"left" : "0px"
} ) . end ( ) . find ( ".luckysheet-freezebar-horizontal-drop" ) . css ( {
"width" : gridwidth - 10 ,
"height" : "4px" ,
"left" : "0px" ,
"cursor" : "-webkit-grab"
} ) ;
}
if ( freezenhorizontaldata == null ) {
let dataset_row_st ;
if ( _ this . freezenRealFirstRowColumn ) {
dataset_row_st = 0 ;
top = Store . visibledatarow [ dataset_row_st ] - 2 + Store . columnHeaderHeight ;
freezenhorizontaldata = [
Store . visibledatarow [ dataset_row_st ] ,
dataset_row_st + 1 ,
0 ,
_ this . cutVolumn ( Store . visibledatarow , dataset_row_st + 1 ) ,
top
] ;
_ this . saveFreezen ( freezenhorizontaldata , top , null , null ) ;
// todo: 没有下面代码 如果有滚动,冻结之后首行的行号仍显示的之前滚动的行号
// todo: 不 setTimeout 这里直接刷新的话,冻结的首行显示有问题,没有列的分割线
setTimeout ( ( ) => {
luckysheetFreezen . createAssistCanvas ( ) ;
luckysheetrefreshgrid ( ) ;
} ) ;
} else {
let scrollTop = $ ( "#luckysheet-cell-main" ) . scrollTop ( ) ;
dataset_row_st = luckysheet_searcharray ( Store . visibledatarow , scrollTop ) ;
if ( dataset_row_st == - 1 ) {
dataset_row_st = 0 ;
}
top = Store . visibledatarow [ dataset_row_st ] - 2 - scrollTop + Store . columnHeaderHeight ;
freezenhorizontaldata = [
Store . visibledatarow [ dataset_row_st ] ,
dataset_row_st + 1 ,
scrollTop ,
_ this . cutVolumn ( Store . visibledatarow , dataset_row_st + 1 ) ,
top
] ;
_ this . saveFreezen ( freezenhorizontaldata , top , null , null ) ;
}
}
_ this . freezenhorizontaldata = freezenhorizontaldata ;
// $("#luckysheet-freezen-btn-horizontal").html('<i class="fa fa-list-alt"></i> '+locale().freezen.freezenCancel);
// $("#luckysheet-freezen-btn-horizontal").html('<i class="luckysheet-icon-img-container iconfont luckysheet-iconfont-dongjie1"></i> '+locale().freezen.freezenCancel);
const freezeHTML = `
< div class = "luckysheet-toolbar-button-outer-box luckysheet-inline-block"
style = "user-select: none;" >
< div class = "luckysheet-toolbar-button-inner-box luckysheet-inline-block"
style = "user-select: none;" >
< div class = "luckysheet-icon luckysheet-inline-block " style = "user-select: none;" >
< div aria - hidden = "true" class = "luckysheet-icon-img-container luckysheet-icon-img luckysheet-icon-function iconfont luckysheet-iconfont-dongjie1"
style = "user-select: none;" >
< / d i v >
< / d i v >
< div class = "luckysheet-toolbar-menu-button-caption luckysheet-inline-block"
style = "user-select: none;" >
$ { locale ( ) . freezen . freezenCancel }
< / d i v >
< / d i v >
< / d i v >
`
$ ( "#luckysheet-freezen-btn-horizontal" ) . html ( freezeHTML ) ;
$ ( "#luckysheet-freezebar-horizontal" ) . show ( ) . find ( ".luckysheet-freezebar-horizontal-handle" ) . css ( { "top" : top } ) . end ( ) . find ( ".luckysheet-freezebar-horizontal-drop" ) . css ( { "top" : top } ) ;
} ,
createAssistCanvas : function ( ) {
let _ this = this ;
_ this . removeAssistCanvas ( ) ;
if ( _ this . freezenverticaldata != null || _ this . freezenhorizontaldata != null ) {
let freezen_horizon_px , freezen_horizon_ed , freezen_horizon_scrollTop ;
let freezen_vertical_px , freezen_vertical_ed , freezen_vertical_scrollTop ;
let drawWidth = Store . luckysheetTableContentHW [ 0 ] ,
drawHeight = Store . luckysheetTableContentHW [ 1 ] ;
//双向freezen
if ( _ this . freezenverticaldata != null && _ this . freezenhorizontaldata != null ) {
freezen_horizon_px = _ this . freezenhorizontaldata [ 0 ] ;
freezen_horizon_ed = _ this . freezenhorizontaldata [ 1 ] ;
freezen_horizon_scrollTop = _ this . freezenhorizontaldata [ 2 ] ;
freezen_vertical_px = _ this . freezenverticaldata [ 0 ] ;
freezen_vertical_ed = _ this . freezenverticaldata [ 1 ] ;
freezen_vertical_scrollTop = _ this . freezenverticaldata [ 2 ] ;
//3
_ this . createCanvas ( "freezen_3" , freezen_vertical_px - freezen_vertical_scrollTop , freezen_horizon_px - freezen_horizon_scrollTop + 1 , Store . rowHeaderWidth - 1 , Store . columnHeaderHeight - 1 ) ;
//4
_ this . createCanvas ( "freezen_4" , drawWidth - freezen_vertical_px + freezen_vertical_scrollTop , freezen_horizon_px - freezen_horizon_scrollTop + 1 , freezen_vertical_px - freezen_vertical_scrollTop + Store . rowHeaderWidth - 1 , Store . columnHeaderHeight - 1 ) ;
//7
_ this . createCanvas ( "freezen_7" , freezen_vertical_px - freezen_vertical_scrollTop , drawHeight - freezen_horizon_px + freezen_horizon_scrollTop - Store . columnHeaderHeight , Store . rowHeaderWidth - 1 , freezen_horizon_px - freezen_horizon_scrollTop + Store . columnHeaderHeight - 1 ) ;
}
//水平freezen
else if ( _ this . freezenhorizontaldata != null ) {
freezen_horizon_px = _ this . freezenhorizontaldata [ 0 ] ;
freezen_horizon_ed = _ this . freezenhorizontaldata [ 1 ] ;
freezen_horizon_scrollTop = _ this . freezenhorizontaldata [ 2 ] ;
_ this . createCanvas ( "freezen_h" , drawWidth , freezen_horizon_px - freezen_horizon_scrollTop + 1 , Store . rowHeaderWidth - 1 , Store . columnHeaderHeight - 1 ) ;
}
//垂直freezen
else if ( _ this . freezenverticaldata != null ) {
freezen_vertical_px = _ this . freezenverticaldata [ 0 ] ;
freezen_vertical_ed = _ this . freezenverticaldata [ 1 ] ;
freezen_vertical_scrollTop = _ this . freezenverticaldata [ 2 ] ;
_ this . createCanvas ( "freezen_v" , freezen_vertical_px - freezen_vertical_scrollTop , drawHeight , Store . rowHeaderWidth - 1 , Store . columnHeaderHeight - 1 ) ;
}
_ this . scrollAdapt ( ) ;
}
} ,
createCanvas : function ( id , width , height , left , top ) {
let c = $ ( "<canvas/>" ) . appendTo ( "#luckysheet-grid-window-1" ) . attr ( {
"id" : id ,
"width" : Math . ceil ( width * Store . devicePixelRatio ) ,
"height" : Math . ceil ( height * Store . devicePixelRatio )
} ) . css ( {
"user-select" : "none" ,
"postion" : "absolute" ,
"left" : left ,
"top" : top ,
"width" : width ,
"height" : height ,
"z-index" : 10 ,
"pointer-events" : "none"
} ) ;
} ,
removeAssistCanvas : function ( ) {
$ ( "#luckysheet-grid-window-1 > canvas" ) . not ( $ ( "#luckysheetTableContent" ) ) . remove ( ) ;
$ ( "#luckysheet-cell-selected" ) . css ( "z-index" , 15 ) ;
} ,
scrollAdapt : function ( ) {
let _ this = this ;
//有冻结时 选区框 滚动适应
if ( Store . luckysheet_select_save != null && Store . luckysheet_select_save . length > 0 ) {
_ this . scrollAdaptOfselect ( ) ;
}
//有冻结时 图表框 滚动适应
if ( $ ( "#luckysheet-cell-main .luckysheet-data-visualization-chart" ) . length > 0 ) {
// 当前sheet有图表才需要滚动适应
const chart = Store . luckysheetfile [ getSheetIndex ( Store . currentSheetIndex ) ] [ "chart" ] ;
if ( chart != null && chart . length > 0 ) {
_ this . scrollAdaptOfchart ( ) ;
}
}
//有冻结时 批注框 滚动适应
if ( $ ( "#luckysheet-postil-showBoxs .luckysheet-postil-show" ) . length > 0 ) {
_ this . scrollAdaptOfpostil ( ) ;
}
//有冻结时 下拉选区图标 滚动适应
if ( $ ( "#luckysheet-dropCell-icon" ) . length > 0 ) {
_ this . scrollAdaptOfdpicon ( ) ;
}
//有冻结时 筛选下拉按钮 滚动适应
if ( $ ( "#luckysheet-filter-options-sheet" + Store . currentSheetIndex + " .luckysheet-filter-options" ) . length > 0 ) {
_ this . scrollAdaptOffilteroptions ( ) ;
}
} ,
scrollAdaptOfselect : function ( ) {
let _ this = this ;
if ( $ ( "#luckysheet-row-count-show" ) . is ( ":visible" ) ) {
$ ( "#luckysheet-row-count-show" ) . hide ( ) ;
}
if ( $ ( "#luckysheet-column-count-show" ) . is ( ":visible" ) ) {
$ ( "#luckysheet-column-count-show" ) . hide ( ) ;
}
$ ( "#luckysheet-rows-h-selected" ) . empty ( ) ;
$ ( "#luckysheet-cols-h-selected" ) . empty ( ) ;
let scrollTop = $ ( "#luckysheet-cell-main" ) . scrollTop ( ) ;
let scrollLeft = $ ( "#luckysheet-cell-main" ) . scrollLeft ( ) ;
if ( _ this . freezenhorizontaldata != null && _ this . freezenverticaldata != null ) {
let freezenTop = _ this . freezenhorizontaldata [ 0 ] ;
let freezen_rowindex = _ this . freezenhorizontaldata [ 1 ] ;
let offTop = scrollTop - _ this . freezenhorizontaldata [ 2 ] ;
let freezenLeft = _ this . freezenverticaldata [ 0 ] ;
let freezen_colindex = _ this . freezenverticaldata [ 1 ] ;
let offLeft = scrollLeft - _ this . freezenverticaldata [ 2 ] ;
for ( let s = 0 ; s < Store . luckysheet_select_save . length ; s ++ ) {
let obj = $ . extend ( true , { } , Store . luckysheet_select_save [ s ] ) ;
let r1 = obj . row [ 0 ] ,
r2 = obj . row [ 1 ] ;
let row = Store . visibledatarow [ r2 ] ,
row_pre = r1 - 1 == - 1 ? 0 : Store . visibledatarow [ r1 - 1 ] ;
let top_move = row_pre ;
let height_move = row - row_pre - 1 ;
let rangeshow = true ;
if ( r1 >= freezen_rowindex ) { //原选区在冻结区外
if ( top_move + height_move < freezenTop + offTop ) {
rangeshow = false ;
}
else if ( top_move < freezenTop + offTop ) {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"top" : freezenTop + offTop ,
"height" : height_move - ( freezenTop + offTop - top_move )
} ) ;
}
else {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"top" : top_move ,
"height" : height_move
} ) ;
}
}
else if ( r2 >= freezen_rowindex ) { //原选区有一部分在冻结区内
if ( top_move + height_move < freezenTop + offTop ) {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"top" : top_move + offTop ,
"height" : freezenTop - top_move
} ) ;
}
else {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"top" : top_move + offTop ,
"height" : height_move - offTop
} ) ;
}
}
else { //原选区在冻结区内
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( "top" , top_move + offTop ) ;
}
let c1 = obj . column [ 0 ] ,
c2 = obj . column [ 1 ] ;
let col = Store . visibledatacolumn [ c2 ] ,
col_pre = c1 - 1 == - 1 ? 0 : Store . visibledatacolumn [ c1 - 1 ] ;
let left_move = col_pre ;
let width_move = col - col_pre - 1 ;
if ( c1 >= freezen_colindex ) { //原选区在冻结区外
if ( left_move + width_move < freezenLeft + offLeft ) {
rangeshow = false ;
}
else if ( left_move < freezenLeft + offLeft ) {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"left" : freezenLeft + offLeft ,
"width" : width_move - ( freezenLeft + offLeft - left_move )
} ) ;
}
else {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"left" : left_move ,
"width" : width_move
} ) ;
}
}
else if ( c2 >= freezen_colindex ) { //原选区有一部分在冻结区内
if ( left_move + width_move < freezenLeft + offLeft ) {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"left" : left_move + offLeft ,
"width" : freezenLeft - left_move
} ) ;
}
else {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"left" : left_move + offLeft ,
"width" : width_move - offLeft
} ) ;
}
}
else { //原选区在冻结区内
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( "left" , left_move + offLeft ) ;
}
if ( ! rangeshow ) {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . hide ( ) ;
}
if ( s == Store . luckysheet_select_save . length - 1 ) {
let rf = obj . row_focus == null ? r1 : obj . row_focus ;
let cf = obj . column_focus == null ? c1 : obj . column_focus ;
let row_f = Store . visibledatarow [ rf ] ,
row_pre_f = rf - 1 == - 1 ? 0 : Store . visibledatarow [ rf - 1 ] ;
let col_f = Store . visibledatacolumn [ cf ] ,
col_pre_f = cf - 1 == - 1 ? 0 : Store . visibledatacolumn [ cf - 1 ] ;
let margeset = menuButton . mergeborer ( Store . flowdata , rf , cf ) ;
if ( ! ! margeset ) {
row_f = margeset . row [ 1 ] ;
row_pre_f = margeset . row [ 0 ] ;
col_f = margeset . column [ 1 ] ;
col_pre_f = margeset . column [ 0 ] ;
}
let top = row_pre_f ;
let height = row_f - row_pre_f - 1 ;
let left = col_pre_f ;
let width = col_f - col_pre_f - 1 ;
let focuscell = true ;
if ( top >= freezenTop ) {
if ( top + height < freezenTop + offTop ) {
focuscell = false ;
}
else if ( top < freezenTop + offTop ) {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"top" : freezenTop + offTop ,
"height" : height - ( freezenTop + offTop - top )
} )
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"top" : top ,
"height" : height
} ) ;
}
}
else if ( top + height >= freezenTop ) {
if ( top + height < freezenTop + offTop ) {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"top" : top + offTop ,
"height" : freezenTop - top
} )
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"top" : top + offTop ,
"height" : height - offTop
} )
}
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( "top" , top + offTop ) ;
}
if ( left >= freezenLeft ) {
if ( left + width < freezenLeft + offLeft ) {
focuscell = false ;
}
else if ( left < freezenLeft + offLeft ) {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"left" : freezenLeft + offLeft ,
"width" : width - ( freezenLeft + offLeft - left )
} )
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"left" : left ,
"width" : width
} ) ;
}
}
else if ( left + width >= freezenLeft ) {
if ( left + width < freezenLeft + offLeft ) {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"left" : left + offLeft ,
"width" : freezenLeft - left
} )
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"left" : left + offLeft ,
"width" : width - offLeft
} )
}
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( "left" , left + offLeft ) ;
}
if ( ! focuscell ) {
$ ( "#luckysheet-cell-selected-focus" ) . hide ( ) ;
}
}
}
}
else if ( _ this . freezenhorizontaldata != null ) {
let freezenTop = _ this . freezenhorizontaldata [ 0 ] ;
let freezen_rowindex = _ this . freezenhorizontaldata [ 1 ] ;
let offTop = scrollTop - _ this . freezenhorizontaldata [ 2 ] ;
for ( let s = 0 ; s < Store . luckysheet_select_save . length ; s ++ ) {
let obj = $ . extend ( true , { } , Store . luckysheet_select_save [ s ] ) ;
let r1 = obj . row [ 0 ] ,
r2 = obj . row [ 1 ] ;
let row = Store . visibledatarow [ r2 ] ,
row_pre = r1 - 1 == - 1 ? 0 : Store . visibledatarow [ r1 - 1 ] ;
let top_move = row_pre ;
let height_move = row - row_pre - 1 ;
if ( r1 >= freezen_rowindex ) { //原选区在冻结区外
if ( top_move + height_move < freezenTop + offTop ) {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . hide ( ) ;
}
else if ( top_move < freezenTop + offTop ) {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"top" : freezenTop + offTop ,
"height" : height_move - ( freezenTop + offTop - top_move )
} ) ;
}
else {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"top" : top_move ,
"height" : height_move
} ) ;
}
}
else if ( r2 >= freezen_rowindex ) { //原选区有一部分在冻结区内
if ( top_move + height_move < freezenTop + offTop ) {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"top" : top_move + offTop ,
"height" : freezenTop - top_move
} ) ;
}
else {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"top" : top_move + offTop ,
"height" : height_move - offTop
} ) ;
}
}
else { //原选区在冻结区内
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( "top" , top_move + offTop ) ;
}
if ( s == Store . luckysheet_select_save . length - 1 ) {
let rf = obj . row_focus == null ? r1 : obj . row_focus ;
let cf = obj . column_focus == null ? obj . column [ 0 ] : obj . column_focus ;
let row_f = Store . visibledatarow [ rf ] ,
row_pre_f = rf - 1 == - 1 ? 0 : Store . visibledatarow [ rf - 1 ] ;
let margeset = menuButton . mergeborer ( Store . flowdata , rf , cf ) ;
if ( ! ! margeset ) {
row_f = margeset . row [ 1 ] ;
row_pre_f = margeset . row [ 0 ] ;
}
let top = row_pre_f ;
let height = row_f - row_pre_f - 1 ;
if ( top >= freezenTop ) {
if ( top + height < freezenTop + offTop ) {
$ ( "#luckysheet-cell-selected-focus" ) . hide ( ) ;
}
else if ( top < freezenTop + offTop ) {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"top" : freezenTop + offTop ,
"height" : height - ( freezenTop + offTop - top )
} )
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"top" : top ,
"height" : height
} ) ;
}
}
else if ( top + height >= freezenTop ) {
if ( top + height < freezenTop + offTop ) {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"top" : top + offTop ,
"height" : freezenTop - top
} )
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"top" : top + offTop ,
"height" : height - offTop
} )
}
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( "top" , top + offTop ) ;
}
}
}
}
else if ( _ this . freezenverticaldata != null ) {
let freezenLeft = _ this . freezenverticaldata [ 0 ] ;
let freezen_colindex = _ this . freezenverticaldata [ 1 ] ;
let offLeft = scrollLeft - _ this . freezenverticaldata [ 2 ] ;
for ( let s = 0 ; s < Store . luckysheet_select_save . length ; s ++ ) {
let obj = $ . extend ( true , { } , Store . luckysheet_select_save [ s ] ) ;
let c1 = obj . column [ 0 ] ,
c2 = obj . column [ 1 ] ;
let col = Store . visibledatacolumn [ c2 ] ,
col_pre = c1 - 1 == - 1 ? 0 : Store . visibledatacolumn [ c1 - 1 ] ;
let left_move = col_pre ;
let width_move = col - col_pre - 1 ;
if ( c1 >= freezen_colindex ) { //原选区在冻结区外
if ( left_move + width_move < freezenLeft + offLeft ) {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . hide ( ) ;
}
else if ( left_move < freezenLeft + offLeft ) {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"left" : freezenLeft + offLeft ,
"width" : width_move - ( freezenLeft + offLeft - left_move )
} ) ;
}
else {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"left" : left_move ,
"width" : width_move
} ) ;
}
}
else if ( c2 >= freezen_colindex ) { //原选区有一部分在冻结区内
if ( left_move + width_move < freezenLeft + offLeft ) {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"left" : left_move + offLeft ,
"width" : freezenLeft - left_move
} ) ;
}
else {
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( {
"left" : left_move + offLeft ,
"width" : width_move - offLeft
} ) ;
}
}
else { //原选区在冻结区内
$ ( "#luckysheet-cell-selected-boxs" ) . find ( ".luckysheet-cell-selected" ) . eq ( s ) . show ( ) . css ( "left" , left_move + offLeft ) ;
}
if ( s == Store . luckysheet_select_save . length - 1 ) {
let rf = obj . row_focus == null ? obj . row [ 0 ] : obj . row_focus ;
let cf = obj . column_focus == null ? c1 : obj . column_focus ;
let col_f = Store . visibledatacolumn [ cf ] ,
col_pre_f = cf - 1 == - 1 ? 0 : Store . visibledatacolumn [ cf - 1 ] ;
let margeset = menuButton . mergeborer ( Store . flowdata , rf , cf ) ;
if ( ! ! margeset ) {
col_f = margeset . column [ 1 ] ;
col_pre_f = margeset . column [ 0 ] ;
}
let left = col_pre_f ;
let width = col_f - col_pre_f - 1 ;
if ( left >= freezenLeft ) {
if ( left + width < freezenLeft + offLeft ) {
$ ( "#luckysheet-cell-selected-focus" ) . hide ( ) ;
}
else if ( left < freezenLeft + offLeft ) {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"left" : freezenLeft + offLeft ,
"width" : width - ( freezenLeft + offLeft - left )
} )
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"left" : left ,
"width" : width
} ) ;
}
}
else if ( left + width >= freezenLeft ) {
if ( left + width < freezenLeft + offLeft ) {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"left" : left + offLeft ,
"width" : freezenLeft - left
} )
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( {
"left" : left + offLeft ,
"width" : width - offLeft
} )
}
}
else {
$ ( "#luckysheet-cell-selected-focus" ) . show ( ) . css ( "left" , left + offLeft ) ;
}
}
}
}
else {
selectHightlightShow ( ) ;
}
} ,
scrollAdaptOfchart : function ( ) {
let _ this = this ;
let scrollTop = $ ( "#luckysheet-cell-main" ) . scrollTop ( ) ;
let scrollLeft = $ ( "#luckysheet-cell-main" ) . scrollLeft ( ) ;
if ( _ this . freezenhorizontaldata != null && _ this . freezenverticaldata != null ) {
let freezenTop = _ this . freezenhorizontaldata [ 0 ] - _ this . freezenhorizontaldata [ 2 ] ;
let freezenLeft = _ this . freezenverticaldata [ 0 ] - _ this . freezenverticaldata [ 2 ] ;
$ ( "#luckysheet-cell-main .luckysheet-data-visualization-chart" ) . each ( function ( i , e ) {
let x = $ ( e ) . position ( ) ;
let width = $ ( e ) . width ( ) ;
let height = $ ( e ) . height ( ) ;
let $canvas_width = $ ( e ) . find ( "canvas" ) . width ( ) ;
let $canvas_height = $ ( e ) . find ( "canvas" ) . height ( ) ;
let height_diff = $canvas_height - height ;
let width_diff = $canvas_width - width ;
if ( ( x . top - height_diff ) < freezenTop ) {
let size = freezenTop - ( x . top - height_diff ) ;
if ( size > ( $canvas_height + 40 + 2 ) ) {
$ ( e ) . css ( "visibility" , "hidden" ) ;
}
else {
$ ( e ) . css ( {
"top" : freezenTop + scrollTop ,
"height" : $canvas_height - size ,
"visibility" : "visible"
} ) ;
$ ( e ) . find ( "canvas" ) . css ( "top" , - size ) ;
}
}
else {
$ ( e ) . css ( {
"top" : x . top - height_diff + scrollTop ,
"height" : $canvas_height ,
"visibility" : "visible"
} ) ;
$ ( e ) . find ( "canvas" ) . css ( "top" , 0 ) ;
}
if ( ( x . left - width_diff ) < freezenLeft ) {
let size = freezenLeft - ( x . left - width_diff ) ;
if ( size > ( $canvas_width + 20 + 2 ) ) {
$ ( e ) . css ( "visibility" , "hidden" ) ;
}
else {
$ ( e ) . css ( {
"left" : freezenLeft + scrollLeft ,
"width" : $canvas_width - size ,
"visibility" : "visible"
} ) ;
$ ( e ) . find ( "canvas" ) . css ( "left" , - size ) ;
}
}
else {
$ ( e ) . css ( {
"left" : x . left - width_diff + scrollLeft ,
"width" : $canvas_width ,
"visibility" : "visible"
} ) ;
$ ( e ) . find ( "canvas" ) . css ( "left" , 0 ) ;
}
} )
}
else if ( _ this . freezenhorizontaldata != null ) {
let freezenTop = _ this . freezenhorizontaldata [ 0 ] - _ this . freezenhorizontaldata [ 2 ] ;
$ ( "#luckysheet-cell-main .luckysheet-data-visualization-chart" ) . each ( function ( i , e ) {
let x = $ ( e ) . position ( ) ;
let height = $ ( e ) . height ( ) ;
let $canvas_height = $ ( e ) . find ( "canvas" ) . height ( ) ;
let height_diff = $canvas_height - height ;
if ( ( x . top - height_diff ) < freezenTop ) {
let size = freezenTop - ( x . top - height_diff ) ;
if ( size > ( $canvas_height + 40 + 2 ) ) {
$ ( e ) . css ( "visibility" , "hidden" ) ;
}
else {
$ ( e ) . css ( {
"top" : freezenTop + scrollTop ,
"height" : $canvas_height - size ,
"visibility" : "visible"
} ) ;
$ ( e ) . find ( "canvas" ) . css ( "top" , - size ) ;
}
}
else {
$ ( e ) . css ( {
"top" : x . top - height_diff + scrollTop ,
"height" : $canvas_height ,
"visibility" : "visible"
} ) ;
$ ( e ) . find ( "canvas" ) . css ( "top" , 0 ) ;
}
} )
}
else if ( _ this . freezenverticaldata != null ) {
let freezenLeft = _ this . freezenverticaldata [ 0 ] - _ this . freezenverticaldata [ 2 ] ;
$ ( "#luckysheet-cell-main .luckysheet-data-visualization-chart" ) . each ( function ( i , e ) {
let x = $ ( e ) . position ( ) ;
let width = $ ( e ) . width ( ) ;
let $canvas_width = $ ( e ) . find ( "canvas" ) . width ( ) ;
let width_diff = $canvas_width - width ;
if ( ( x . left - width_diff ) < freezenLeft ) {
let size = freezenLeft - ( x . left - width_diff ) ;
if ( size > ( $canvas_width + 20 + 2 ) ) {
$ ( e ) . css ( "visibility" , "hidden" ) ;
}
else {
$ ( e ) . css ( {
"left" : freezenLeft + scrollLeft ,
"width" : $canvas_width - size ,
"visibility" : "visible"
} ) ;
$ ( e ) . find ( "canvas" ) . css ( "left" , - size ) ;
}
}
else {
$ ( e ) . css ( {
"left" : x . left - width_diff + scrollLeft ,
"width" : $canvas_width ,
"visibility" : "visible"
} ) ;
$ ( e ) . find ( "canvas" ) . css ( "left" , 0 ) ;
}
} )
}
else {
$ ( "#luckysheet-cell-main .luckysheet-data-visualization-chart" ) . each ( function ( i , e ) {
let x = $ ( e ) . position ( ) ;
let width = $ ( e ) . width ( ) ;
let height = $ ( e ) . height ( ) ;
let $canvas_width = $ ( e ) . find ( "canvas" ) . width ( ) ;
let $canvas_height = $ ( e ) . find ( "canvas" ) . height ( ) ;
let height_diff = $canvas_height - height ;
let width_diff = $canvas_width - width ;
$ ( e ) . css ( {
"top" : x . top - height_diff + scrollTop ,
"height" : $canvas_height ,
"left" : x . left - width_diff + scrollLeft ,
"width" : $canvas_width ,
"visibility" : "visible"
} ) ;
$ ( e ) . find ( "canvas" ) . css ( {
"top" : 0 ,
"left" : 0
} ) ;
} )
}
} ,
scrollAdaptOfpostil : function ( ) {
let _ this = this ;
let scrollTop = $ ( "#luckysheet-cell-main" ) . scrollTop ( ) ;
let scrollLeft = $ ( "#luckysheet-cell-main" ) . scrollLeft ( ) ;
if ( _ this . freezenhorizontaldata != null && _ this . freezenverticaldata != null ) {
let freezenTop = _ this . freezenhorizontaldata [ 0 ] ;
let freezenLeft = _ this . freezenverticaldata [ 0 ] ;
let offTop = scrollTop - _ this . freezenhorizontaldata [ 2 ] ;
let offLeft = scrollLeft - _ this . freezenverticaldata [ 2 ] ;
$ ( "#luckysheet-postil-showBoxs .luckysheet-postil-show" ) . each ( function ( i , e ) {
let id = $ ( e ) . attr ( "id" ) ;
let r = id . split ( "luckysheet-postil-show_" ) [ 1 ] . split ( "_" ) [ 0 ] ;
let c = id . split ( "luckysheet-postil-show_" ) [ 1 ] . split ( "_" ) [ 1 ] ;
let postil = Store . flowdata [ r ] [ c ] . ps ;
let row = Store . visibledatarow [ r ] ,
row_pre = r - 1 == - 1 ? 0 : Store . visibledatarow [ r - 1 ] ;
let col = Store . visibledatacolumn [ c ] ,
col_pre = c - 1 == - 1 ? 0 : Store . visibledatacolumn [ c - 1 ] ;
let margeset = menuButton . mergeborer ( Store . flowdata , r , c ) ;
if ( ! ! margeset ) {
row = margeset . row [ 1 ] ;
row_pre = margeset . row [ 0 ] ;
col = margeset . column [ 1 ] ;
col_pre = margeset . column [ 0 ] ;
}
let toX = col ;
let toY = row_pre ;
let postil_left = postil [ "left" ] == null ? toX + 18 : postil [ "left" ] ;
let postil_top = postil [ "top" ] == null ? toY - 18 : postil [ "top" ] ;
let postil_width = postil [ "width" ] == null ? luckysheetPostil . defaultWidth : postil [ "width" ] ;
let postil_height = postil [ "height" ] == null ? luckysheetPostil . defaultHeight : postil [ "height" ] ;
if ( postil_top < 0 ) {
postil_top = 2 ;
}
let size = luckysheetPostil . getArrowCanvasSize ( postil_left , postil_top , toX , toY ) ;
let show = true ;
let show2 = true ;
if ( r >= _ this . freezenhorizontaldata [ 1 ] ) {
if ( postil_top + postil_height < freezenTop ) {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( "top" , postil_top + offTop ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . css ( "top" , size [ 1 ] + offTop ) ;
}
else {
if ( postil_top < freezenTop + offTop ) {
if ( postil_top + postil_height <= freezenTop + offTop ) {
show = false ;
}
else {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( { "top" : freezenTop + offTop , "height" : postil_height - ( freezenTop + offTop - postil_top ) } ) ;
$ ( e ) . show ( ) . find ( ".formulaInputFocus" ) . css ( "margin-top" , - ( freezenTop + offTop - postil_top ) ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . hide ( ) ;
show2 = false ;
}
}
else {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( {
"top" : postil_top ,
"height" : postil_height
} ) ;
$ ( e ) . show ( ) . find ( ".formulaInputFocus" ) . css ( "margin-top" , 0 ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . css ( "top" , size [ 1 ] ) ;
// luckysheetPostil.buildPs(r, c, postil);
}
}
}
else {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( "top" , postil_top + offTop ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . css ( "top" , size [ 1 ] + offTop ) ;
}
if ( c >= _ this . freezenverticaldata [ 1 ] ) {
if ( postil_left + postil_width < freezenLeft ) {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( "left" , postil_left + offLeft ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . css ( "left" , size [ 0 ] + offLeft ) ;
}
else {
if ( postil_left < freezenLeft + offLeft ) {
if ( postil_left + postil_width <= freezenLeft + offLeft ) {
show = false ;
}
else {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( { "left" : freezenLeft + offLeft , "width" : postil_width - ( freezenLeft + offLeft - postil_left ) } ) ;
$ ( e ) . show ( ) . find ( ".formulaInputFocus" ) . css ( "margin-left" , - ( freezenLeft + offLeft - postil_left ) ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . hide ( ) ;
show2 = false ;
}
}
else {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( {
"left" : postil_left ,
"width" : postil_width
} ) ;
$ ( e ) . show ( ) . find ( ".formulaInputFocus" ) . css ( "margin-left" , 0 ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . css ( "left" , size [ 0 ] ) ;
// luckysheetPostil.buildPs(r, c, postil);
}
}
}
else {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( "left" , postil_left + offLeft ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . css ( "left" , size [ 0 ] + offLeft ) ;
}
if ( ! show ) {
$ ( e ) . hide ( ) ;
}
if ( show && show2 ) {
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . show ( ) ;
}
} )
}
else if ( _ this . freezenhorizontaldata != null ) {
let freezenTop = _ this . freezenhorizontaldata [ 0 ] ;
let offTop = scrollTop - _ this . freezenhorizontaldata [ 2 ] ;
$ ( "#luckysheet-postil-showBoxs .luckysheet-postil-show" ) . each ( function ( i , e ) {
let id = $ ( e ) . attr ( "id" ) ;
let r = id . split ( "luckysheet-postil-show_" ) [ 1 ] . split ( "_" ) [ 0 ] ;
let c = id . split ( "luckysheet-postil-show_" ) [ 1 ] . split ( "_" ) [ 1 ] ;
let postil = Store . flowdata [ r ] [ c ] . ps ;
let row = Store . visibledatarow [ r ] ,
row_pre = r - 1 == - 1 ? 0 : Store . visibledatarow [ r - 1 ] ;
let col = Store . visibledatacolumn [ c ] ,
col_pre = c - 1 == - 1 ? 0 : Store . visibledatacolumn [ c - 1 ] ;
let margeset = menuButton . mergeborer ( Store . flowdata , r , c ) ;
if ( ! ! margeset ) {
row = margeset . row [ 1 ] ;
row_pre = margeset . row [ 0 ] ;
col = margeset . column [ 1 ] ;
col_pre = margeset . column [ 0 ] ;
}
let toX = col ;
let toY = row_pre ;
let postil_left = postil [ "left" ] == null ? toX + 18 : postil [ "left" ] ;
let postil_top = postil [ "top" ] == null ? toY - 18 : postil [ "top" ] ;
let postil_width = postil [ "width" ] == null ? luckysheetPostil . defaultWidth : postil [ "width" ] ;
let postil_height = postil [ "height" ] == null ? luckysheetPostil . defaultHeight : postil [ "height" ] ;
if ( postil_top < 0 ) {
postil_top = 2 ;
}
let size = luckysheetPostil . getArrowCanvasSize ( postil_left , postil_top , toX , toY ) ;
if ( r >= _ this . freezenhorizontaldata [ 1 ] ) {
if ( postil_top + postil_height < freezenTop ) {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( "top" , postil_top + offTop ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . css ( "top" , size [ 1 ] + offTop ) ;
}
else {
if ( postil_top < freezenTop + offTop ) {
if ( postil_top + postil_height <= freezenTop + offTop ) {
$ ( e ) . hide ( ) ;
}
else {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( { "top" : freezenTop + offTop , "height" : postil_height - ( freezenTop + offTop - postil_top ) } ) ;
$ ( e ) . show ( ) . find ( ".formulaInputFocus" ) . css ( "margin-top" , - ( freezenTop + offTop - postil_top ) ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . hide ( ) ;
}
}
else {
luckysheetPostil . buildPs ( r , c , postil ) ;
}
}
}
else {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( "top" , postil_top + offTop ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . css ( "top" , size [ 1 ] + offTop ) ;
}
} )
}
else if ( _ this . freezenverticaldata != null ) {
let freezenLeft = _ this . freezenverticaldata [ 0 ] ;
let offLeft = scrollLeft - _ this . freezenverticaldata [ 2 ] ;
$ ( "#luckysheet-postil-showBoxs .luckysheet-postil-show" ) . each ( function ( i , e ) {
let id = $ ( e ) . attr ( "id" ) ;
let r = id . split ( "luckysheet-postil-show_" ) [ 1 ] . split ( "_" ) [ 0 ] ;
let c = id . split ( "luckysheet-postil-show_" ) [ 1 ] . split ( "_" ) [ 1 ] ;
let postil = Store . flowdata [ r ] [ c ] . ps ;
let row = Store . visibledatarow [ r ] ,
row_pre = r - 1 == - 1 ? 0 : Store . visibledatarow [ r - 1 ] ;
let col = Store . visibledatacolumn [ c ] ,
col_pre = c - 1 == - 1 ? 0 : Store . visibledatacolumn [ c - 1 ] ;
let margeset = menuButton . mergeborer ( Store . flowdata , r , c ) ;
if ( ! ! margeset ) {
row = margeset . row [ 1 ] ;
row_pre = margeset . row [ 0 ] ;
col = margeset . column [ 1 ] ;
col_pre = margeset . column [ 0 ] ;
}
let toX = col ;
let toY = row_pre ;
let postil_left = postil [ "left" ] == null ? toX + 18 : postil [ "left" ] ;
let postil_top = postil [ "top" ] == null ? toY - 18 : postil [ "top" ] ;
let postil_width = postil [ "width" ] == null ? luckysheetPostil . defaultWidth : postil [ "width" ] ;
let postil_height = postil [ "height" ] == null ? luckysheetPostil . defaultHeight : postil [ "height" ] ;
if ( postil_top < 0 ) {
postil_top = 2 ;
}
let size = luckysheetPostil . getArrowCanvasSize ( postil_left , postil_top , toX , toY ) ;
if ( c >= _ this . freezenverticaldata [ 1 ] ) {
if ( postil_left + postil_width < freezenLeft ) {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( "left" , postil_left + offLeft ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . css ( "left" , size [ 0 ] + offLeft ) ;
}
else {
if ( postil_left < freezenLeft + offLeft ) {
if ( postil_left + postil_width <= freezenLeft + offLeft ) {
$ ( e ) . hide ( ) ;
}
else {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( { "left" : freezenLeft + offLeft , "width" : postil_width - ( freezenLeft + offLeft - postil_left ) } ) ;
$ ( e ) . show ( ) . find ( ".formulaInputFocus" ) . css ( "margin-left" , - ( freezenLeft + offLeft - postil_left ) ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . hide ( ) ;
}
}
else {
luckysheetPostil . buildPs ( r , c , postil ) ;
}
}
}
else {
$ ( e ) . show ( ) . find ( ".luckysheet-postil-show-main" ) . css ( "left" , postil_left + offLeft ) ;
$ ( e ) . show ( ) . find ( ".arrowCanvas" ) . css ( "left" , size [ 0 ] + offLeft ) ;
}
} )
}
else {
$ ( "#luckysheet-postil-showBoxs .luckysheet-postil-show" ) . each ( function ( i , e ) {
let id = $ ( e ) . attr ( "id" ) ;
let r = id . split ( "luckysheet-postil-show_" ) [ 1 ] . split ( "_" ) [ 0 ] ;
let c = id . split ( "luckysheet-postil-show_" ) [ 1 ] . split ( "_" ) [ 1 ] ;
let postil = Store . flowdata [ r ] [ c ] . ps ;
luckysheetPostil . buildPs ( r , c , postil ) ;
} )
}
} ,
scrollAdaptOfdpicon : function ( ) {
let _ this = this ;
let copy_r = luckysheetDropCell . copyRange [ "row" ] [ 1 ] ,
copy_c = luckysheetDropCell . copyRange [ "column" ] [ 1 ] ;
let apply_r = luckysheetDropCell . applyRange [ "row" ] [ 1 ] ,
apply_c = luckysheetDropCell . applyRange [ "column" ] [ 1 ] ;
let row_index , col_index ;
if ( apply_r >= copy_r && apply_c >= copy_c ) {
row_index = apply_r ;
col_index = apply_c ;
}
else {
row_index = copy_r ;
col_index = copy_c ;
}
if ( _ this . freezenhorizontaldata != null && _ this . freezenverticaldata != null ) {
let freezen_rowindex = _ this . freezenhorizontaldata [ 1 ] ;
let offsetRow = luckysheet_searcharray ( _ this . freezenhorizontaldata [ 3 ] , $ ( "#luckysheet-cell-main" ) . scrollTop ( ) - _ this . freezenhorizontaldata [ 2 ] ) ;
let freezen_colindex = _ this . freezenverticaldata [ 1 ] ;
let offsetColumn = luckysheet_searcharray ( _ this . freezenverticaldata [ 3 ] , $ ( "#luckysheet-cell-main" ) . scrollLeft ( ) - _ this . freezenverticaldata [ 2 ] ) ;
if ( row_index >= freezen_rowindex && col_index >= freezen_colindex ) {
if ( row_index < ( freezen_rowindex + offsetRow - 1 ) || col_index < ( freezen_colindex + offsetColumn - 1 ) ) {
$ ( "#luckysheet-dropCell-icon" ) . hide ( ) ;
}
else {
$ ( "#luckysheet-dropCell-icon" ) . show ( ) ;
}
}
else if ( row_index >= freezen_rowindex ) {
if ( row_index < ( freezen_rowindex + offsetRow - 1 ) ) {
$ ( "#luckysheet-dropCell-icon" ) . hide ( ) ;
}
else {
let col = colLocationByIndex ( col_index + offsetColumn ) [ 1 ] ;
$ ( "#luckysheet-dropCell-icon" ) . show ( ) . css ( "left" , col ) ;
}
}
else if ( col_index >= freezen_colindex ) {
if ( col_index < ( freezen_colindex + offsetColumn - 1 ) ) {
$ ( "#luckysheet-dropCell-icon" ) . hide ( ) ;
}
else {
let row = rowLocationByIndex ( row_index + offsetRow ) [ 1 ] ;
$ ( "#luckysheet-dropCell-icon" ) . show ( ) . css ( "top" , row ) ;
}
}
else {
let row = rowLocationByIndex ( row_index + offsetRow ) [ 1 ] ,
col = colLocationByIndex ( col_index + offsetColumn ) [ 1 ] ;
$ ( "#luckysheet-dropCell-icon" ) . show ( ) . css ( { "left" : col , "top" : row } ) ;
}
}
else if ( _ this . freezenhorizontaldata != null ) {
let freezen_rowindex = _ this . freezenhorizontaldata [ 1 ] ;
let offsetRow = luckysheet_searcharray ( _ this . freezenhorizontaldata [ 3 ] , $ ( "#luckysheet-cell-main" ) . scrollTop ( ) - _ this . freezenhorizontaldata [ 2 ] ) ;
if ( row_index >= freezen_rowindex ) {
if ( row_index < ( freezen_rowindex + offsetRow - 1 ) ) {
$ ( "#luckysheet-dropCell-icon" ) . hide ( ) ;
}
else {
$ ( "#luckysheet-dropCell-icon" ) . show ( ) ;
}
}
else {
let row = rowLocationByIndex ( row_index + offsetRow ) [ 1 ] ;
$ ( "#luckysheet-dropCell-icon" ) . show ( ) . css ( "top" , row ) ;
}
}
else if ( _ this . freezenverticaldata != null ) {
let freezen_colindex = _ this . freezenverticaldata [ 1 ] ;
let offsetColumn = luckysheet_searcharray ( _ this . freezenverticaldata [ 3 ] , $ ( "#luckysheet-cell-main" ) . scrollLeft ( ) - _ this . freezenverticaldata [ 2 ] ) ;
if ( col_index >= freezen_colindex ) {
if ( col_index < ( freezen_colindex + offsetColumn - 1 ) ) {
$ ( "#luckysheet-dropCell-icon" ) . hide ( ) ;
}
else {
$ ( "#luckysheet-dropCell-icon" ) . show ( ) ;
}
}
else {
let col = colLocationByIndex ( col_index + offsetColumn ) [ 1 ] ;
$ ( "#luckysheet-dropCell-icon" ) . show ( ) . css ( "left" , col ) ;
}
}
else {
let row = rowLocationByIndex ( row_index ) [ 1 ] ,
col = colLocationByIndex ( col_index ) [ 1 ] ;
$ ( "#luckysheet-dropCell-icon" ) . show ( ) . css ( { "left" : col , "top" : row } ) ;
}
} ,
scrollAdaptOffilteroptions : function ( ) {
let _ this = this ;
if ( _ this . freezenhorizontaldata != null && _ this . freezenverticaldata != null ) {
let freezen_rowindex = _ this . freezenhorizontaldata [ 1 ] ;
let freezen_top = _ this . freezenhorizontaldata [ 0 ] + $ ( "#luckysheet-cell-main" ) . scrollTop ( ) ;
let freezen_colindex = _ this . freezenverticaldata [ 1 ] ;
let offsetColumn = luckysheet_searcharray ( _ this . freezenverticaldata [ 3 ] , $ ( "#luckysheet-cell-main" ) . scrollLeft ( ) - _ this . freezenverticaldata [ 2 ] ) ;
$ ( "#luckysheet-filter-options-sheet" + Store . currentSheetIndex + " .luckysheet-filter-options" ) . each ( function ( i , e ) {
let row_index = $ ( e ) . data ( "str" ) ;
let top = row_index - 1 == - 1 ? 0 : Store . visibledatarow [ row_index - 1 ] ;
let col_index = $ ( e ) . data ( "cindex" ) ;
if ( row_index >= freezen_rowindex && col_index >= freezen_colindex ) {
if ( top < freezen_top || col_index < ( freezen_colindex + offsetColumn ) ) {
$ ( e ) . hide ( ) ;
}
else {
$ ( e ) . show ( ) ;
}
}
else if ( row_index >= freezen_rowindex ) {
if ( top < freezen_top ) {
$ ( e ) . hide ( ) ;
}
else {
let left = Store . visibledatacolumn [ col_index + offsetColumn ] - 20 ;
$ ( e ) . show ( ) . css ( "left" , left ) ;
}
}
else if ( col_index >= freezen_colindex ) {
if ( col_index < ( freezen_colindex + offsetColumn ) ) {
$ ( e ) . hide ( ) ;
}
else {
$ ( e ) . show ( ) . css ( "top" , top + $ ( "#luckysheet-cell-main" ) . scrollTop ( ) ) ;
}
}
else {
let left = Store . visibledatacolumn [ col_index + offsetColumn ] - 20 ;
$ ( e ) . show ( ) . css ( { "left" : left , "top" : top + $ ( "#luckysheet-cell-main" ) . scrollTop ( ) } ) ;
}
} ) ;
}
else if ( _ this . freezenhorizontaldata != null ) {
let freezen_rowindex = _ this . freezenhorizontaldata [ 1 ] ;
let freezen_top = _ this . freezenhorizontaldata [ 0 ] + $ ( "#luckysheet-cell-main" ) . scrollTop ( ) ;
$ ( "#luckysheet-filter-options-sheet" + Store . currentSheetIndex + " .luckysheet-filter-options" ) . each ( function ( i , e ) {
let row_index = $ ( e ) . data ( "str" ) ;
let top = row_index - 1 == - 1 ? 0 : Store . visibledatarow [ row_index - 1 ] ;
if ( row_index >= freezen_rowindex ) {
if ( top < freezen_top ) {
$ ( e ) . hide ( ) ;
}
else {
$ ( e ) . show ( ) ;
}
}
else {
$ ( e ) . show ( ) . css ( "top" , top + $ ( "#luckysheet-cell-main" ) . scrollTop ( ) ) ;
}
} ) ;
}
else if ( _ this . freezenverticaldata != null ) {
let freezen_colindex = _ this . freezenverticaldata [ 1 ] ;
let offsetColumn = luckysheet_searcharray ( _ this . freezenverticaldata [ 3 ] , $ ( "#luckysheet-cell-main" ) . scrollLeft ( ) - _ this . freezenverticaldata [ 2 ] ) ;
$ ( "#luckysheet-filter-options-sheet" + Store . currentSheetIndex + " .luckysheet-filter-options" ) . each ( function ( i , e ) {
let col_index = $ ( e ) . data ( "cindex" ) ;
if ( col_index >= freezen_colindex ) {
if ( col_index < ( freezen_colindex + offsetColumn ) ) {
$ ( e ) . hide ( ) ;
}
else {
$ ( e ) . show ( ) ;
}
}
else {
let left = Store . visibledatacolumn [ col_index + offsetColumn ] - 20 ;
$ ( e ) . show ( ) . css ( "left" , left ) ;
}
} ) ;
}
else {
$ ( "#luckysheet-filter-options-sheet" + Store . currentSheetIndex ) . empty ( ) ;
createFilterOptions ( Store . luckysheetfile [ getSheetIndex ( Store . currentSheetIndex ) ] . filter_select ) ;
}
} ,
/ * *
*
* @ param { string } operate "freezenRow" / "freezenColumn" ... ...
feat(api): provides an api for users
This submission provides the following apis: getCellValue, setCellValue, clearCell, deleteCell,
setCellFormat, find, replace, setHorizontalFrozen, setVerticalFrozen, setBothFrozen, cancelFrozen,
insertRow, insertColumn, deleteRow, deleteColumn, hideRow, hideColumn, showRow, showColumn,
getRange, getRangeValue.
5 years ago
* @ param { Number | String } order 工作表索引 ; 默认值为当前工作表索引
* @ param { Object } focus 冻结选区时的focus单元格行列值构成的对象 ; 格式为 { row_focus : 0 , column_focus : 0 }
* /
feat(api): provides an api for users
This submission provides the following apis: getCellValue, setCellValue, clearCell, deleteCell,
setCellFormat, find, replace, setHorizontalFrozen, setVerticalFrozen, setBothFrozen, cancelFrozen,
insertRow, insertColumn, deleteRow, deleteColumn, hideRow, hideColumn, showRow, showColumn,
getRange, getRangeValue.
5 years ago
saveFrozen : function ( operate , order , focus = { } ) {
if ( order == null ) {
order = getSheetIndex ( Store . currentSheetIndex )
}
// New configuration attribute of sheet: frozen, which stores more semantic configuration for initialization and transmission to the backend. freezenhorizontaldata is still used as local data
const select_save = Store . luckysheet_select_save [ Store . luckysheet_select_save . length - 1 ] ;
const row_focus = select_save [ "row_focus" ] == null ? select_save [ "row" ] [ 0 ] : select_save [ "row_focus" ] ;
const column_focus = select_save [ "column_focus" ] == null ? select_save [ "column" ] [ 0 ] : select_save [ "column_focus" ] ;
const range = {
feat(api): provides an api for users
This submission provides the following apis: getCellValue, setCellValue, clearCell, deleteCell,
setCellFormat, find, replace, setHorizontalFrozen, setVerticalFrozen, setBothFrozen, cancelFrozen,
insertRow, insertColumn, deleteRow, deleteColumn, hideRow, hideColumn, showRow, showColumn,
getRange, getRangeValue.
5 years ago
row_focus : focus . row_focus || row_focus ,
column_focus : focus . column_focus || column_focus
}
const frozen = {
"freezenRow" : {
type : 'row'
} ,
"freezenColumn" : {
type : 'column'
} ,
"freezenRC" : {
type : 'both'
} ,
"freezenRowRange" : {
type : 'rangeRow' ,
range : range
} ,
"freezenColumnRange" : {
type : 'rangeColumn' ,
range : range
} ,
"freezenRCRange" : {
type : 'rangeBoth' ,
range : range
} ,
"freezenCancel" : {
type : 'cancel'
}
}
// store frozen
feat(api): provides an api for users
This submission provides the following apis: getCellValue, setCellValue, clearCell, deleteCell,
setCellFormat, find, replace, setHorizontalFrozen, setVerticalFrozen, setBothFrozen, cancelFrozen,
insertRow, insertColumn, deleteRow, deleteColumn, hideRow, hideColumn, showRow, showColumn,
getRange, getRangeValue.
5 years ago
Store . luckysheetfile [ order ] [ "frozen" ] = frozen [ operate ] ;
} ,
frozenTofreezen : function ( ) {
// get frozen type
let file = Store . luckysheetfile [ getSheetIndex ( Store . currentSheetIndex ) ] ;
const frozen = file [ "frozen" ] ;
if ( frozen == null ) {
return ;
}
let freezen = null ;
// transform to freezen
if ( frozen . type === 'row' ) {
let scrollTop = 0 ;
let row_st = luckysheet_searcharray ( Store . visibledatarow , scrollTop ) ;
if ( row_st == - 1 ) {
row_st = 0 ;
}
let top = Store . visibledatarow [ row_st ] - 2 - scrollTop + Store . columnHeaderHeight ;
let freezenhorizontaldata = [ Store . visibledatarow [ row_st ] , row_st + 1 , scrollTop , luckysheetFreezen . cutVolumn ( Store . visibledatarow , row_st + 1 ) , top ] ;
freezen = {
horizontal : {
freezenhorizontaldata : freezenhorizontaldata ,
top : top
}
}
}
else if ( frozen . type === 'column' ) {
let scrollLeft = 0 ;
let col_st = luckysheet_searcharray ( Store . visibledatacolumn , scrollLeft ) ;
if ( col_st == - 1 ) {
col_st = 0 ;
}
let left = Store . visibledatacolumn [ col_st ] - 2 - scrollLeft + Store . rowHeaderWidth ;
let freezenverticaldata = [ Store . visibledatacolumn [ col_st ] , col_st + 1 , scrollLeft , luckysheetFreezen . cutVolumn ( Store . visibledatacolumn , col_st + 1 ) , left ] ;
freezen = {
vertical : {
freezenverticaldata : freezenverticaldata ,
left : left
}
}
}
else if ( frozen . type === 'both' ) {
let scrollTop = 0 ;
let row_st = luckysheet_searcharray ( Store . visibledatarow , scrollTop ) ;
if ( row_st == - 1 ) {
row_st = 0 ;
}
let top = Store . visibledatarow [ row_st ] - 2 - scrollTop + Store . columnHeaderHeight ;
let freezenhorizontaldata = [ Store . visibledatarow [ row_st ] , row_st + 1 , scrollTop , luckysheetFreezen . cutVolumn ( Store . visibledatarow , row_st + 1 ) , top ] ;
let scrollLeft = 0 ;
let col_st = luckysheet_searcharray ( Store . visibledatacolumn , scrollLeft ) ;
if ( col_st == - 1 ) {
col_st = 0 ;
}
let left = Store . visibledatacolumn [ col_st ] - 2 - scrollLeft + Store . rowHeaderWidth ;
let freezenverticaldata = [ Store . visibledatacolumn [ col_st ] , col_st + 1 , scrollLeft , luckysheetFreezen . cutVolumn ( Store . visibledatacolumn , col_st + 1 ) , left ] ;
freezen = {
horizontal : {
freezenhorizontaldata : freezenhorizontaldata ,
top : top
} ,
vertical : {
freezenverticaldata : freezenverticaldata ,
left : left
}
}
}
else if ( frozen . type === 'rangeRow' ) {
let scrollTop = 0 ;
let row_st = luckysheet_searcharray ( Store . visibledatarow , scrollTop ) ;
let row_focus = frozen . range [ "row_focus" ] ;
if ( row_focus > row_st ) {
row_st = row_focus ;
}
if ( row_st == - 1 ) {
row_st = 0 ;
}
let top = Store . visibledatarow [ row_st ] - 2 - scrollTop + Store . columnHeaderHeight ;
let freezenhorizontaldata = [ Store . visibledatarow [ row_st ] , row_st + 1 , scrollTop , luckysheetFreezen . cutVolumn ( Store . visibledatarow , row_st + 1 ) , top ] ;
freezen = {
horizontal : {
freezenhorizontaldata : freezenhorizontaldata ,
top : top
}
}
}
else if ( frozen . type === 'rangeColumn' ) {
let scrollLeft = 0 ;
let col_st = luckysheet_searcharray ( Store . visibledatacolumn , scrollLeft ) ;
let column_focus = frozen . range [ "column_focus" ] ;
if ( column_focus > col_st ) {
col_st = column_focus ;
}
if ( col_st == - 1 ) {
col_st = 0 ;
}
let left = Store . visibledatacolumn [ col_st ] - 2 - scrollLeft + Store . rowHeaderWidth ;
let freezenverticaldata = [ Store . visibledatacolumn [ col_st ] , col_st + 1 , scrollLeft , luckysheetFreezen . cutVolumn ( Store . visibledatacolumn , col_st + 1 ) , left ] ;
freezen = {
vertical : {
freezenverticaldata : freezenverticaldata ,
left : left
}
}
}
else if ( frozen . type === 'rangeBoth' ) {
let scrollTop = 0 ;
let row_st = luckysheet_searcharray ( Store . visibledatarow , scrollTop ) ;
let row_focus = frozen . range [ "row_focus" ] ;
if ( row_focus > row_st ) {
row_st = row_focus ;
}
if ( row_st == - 1 ) {
row_st = 0 ;
}
let top = Store . visibledatarow [ row_st ] - 2 - scrollTop + Store . columnHeaderHeight ;
let freezenhorizontaldata = [ Store . visibledatarow [ row_st ] , row_st + 1 , scrollTop , luckysheetFreezen . cutVolumn ( Store . visibledatarow , row_st + 1 ) , top ] ;
let scrollLeft = 0 ;
let col_st = luckysheet_searcharray ( Store . visibledatacolumn , scrollLeft ) ;
let column_focus = frozen . range [ "column_focus" ] ;
if ( column_focus > col_st ) {
col_st = column_focus ;
}
if ( col_st == - 1 ) {
col_st = 0 ;
}
let left = Store . visibledatacolumn [ col_st ] - 2 - scrollLeft + Store . rowHeaderWidth ;
let freezenverticaldata = [ Store . visibledatacolumn [ col_st ] , col_st + 1 , scrollLeft , luckysheetFreezen . cutVolumn ( Store . visibledatacolumn , col_st + 1 ) , left ] ;
freezen = {
horizontal : {
freezenhorizontaldata : freezenhorizontaldata ,
top : top
} ,
vertical : {
freezenverticaldata : freezenverticaldata ,
left : left
}
}
}
else if ( frozen . type === 'cancel' ) {
freezen = {
horizontal : null ,
vertical : null
}
}
file [ "freezen" ] = freezen ;
}
}
export default luckysheetFreezen ;