产品一张表luckysheet前端代码库
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

271 lines
10 KiB

5 years ago
import { getSheetIndex } from '../methods/get';
import editor from '../global/editor';
import { isRealNull, isEditMode } from '../global/validate';
import tooltip from '../global/tooltip';
import { orderbydata } from '../global/sort';
import { rowlenByRange } from '../global/getRowlen';
import { jfrefreshgrid } from '../global/refresh';
import { selectHightlightShow } from './select';
import { luckysheetMoveEndCell } from './sheetMove';
5 years ago
import server from './server';
5 years ago
import Store from '../store';
//筛选配置状态
function labelFilterOptionState($top, optionstate, rowhidden, caljs, notSave, str, edr, cindex, stc, edc) {
5 years ago
if (optionstate) {
$top.addClass("luckysheet-filter-options-active").data("rowhidden", JSON.stringify(rowhidden)).data("caljs", JSON.stringify(caljs)).html('<i class="fa fa-filter luckysheet-mousedown-cancel" aria-hidden="true"></i>');
if (caljs != null) {
$top.data("byconditionvalue", caljs["value"]).data("byconditiontype", caljs["type"]).data("byconditiontext", caljs["text"]);
if (caljs["value1"] != null) {
$top.data("byconditionvalue1", caljs["value1"]);
}
if (caljs["value2"] != null) {
$top.data("byconditionvalue2", caljs["value2"]);
}
}
}
else {
$top.removeClass("luckysheet-filter-options-active").data("rowhidden", "").data("caljs", "").html('<i class="fa fa-caret-down luckysheet-mousedown-cancel" aria-hidden="true"></i>');
$top.data("byconditionvalue", "null").data("byconditiontype", "0").data("byconditiontext", "无").data("byconditionvalue1", "").data("byconditionvalue2", "");
}
if(!!notSave){
5 years ago
let file = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)];
5 years ago
if(file.filter == null){
file.filter = {};
}
if (optionstate) {
5 years ago
let param = {
5 years ago
"caljs": caljs,
"rowhidden": rowhidden,
"optionstate": optionstate,
"str": str,
"edr": edr,
"cindex": cindex,
"stc": stc,
"edc": edc
};
file.filter[cindex - stc] = param;
}
else {
delete file.filter[cindex - stc];
}
5 years ago
server.saveParam("all", Store.currentSheetIndex, file.filter, { "k": "filter" });
5 years ago
}
}
5 years ago
//筛选排序
function orderbydatafiler(str, stc, edr, edc, index, asc) {
let d = editor.deepCopyFlowData(Store.flowdata);
5 years ago
str = str + 1;
5 years ago
let hasMc = false; //排序选区是否有合并单元格
let data = [];
5 years ago
5 years ago
for(let r = str; r <= edr; r++){
let data_row = [];
5 years ago
5 years ago
for(let c = stc; c <= edc; c++){
5 years ago
if(d[r][c] != null && d[r][c].mc != null){
hasMc = true;
break;
}
data_row.push(d[r][c]);
}
data.push(data_row);
}
if(hasMc){
5 years ago
if(isEditMode()){
5 years ago
alert("筛选选区有合并单元格,无法执行此操作!");
}
else{
5 years ago
tooltip.info("筛选选区有合并单元格,无法执行此操作!", "");
5 years ago
}
return;
}
5 years ago
data = orderbydata(data, index - stc, asc);
5 years ago
5 years ago
for(let r = str; r <= edr; r++){
for(let c = stc; c <= edc; c++){
5 years ago
d[r][c] = data[r - str][c - stc];
}
}
5 years ago
if(Store.config["rowlen"] != null){
let cfg = $.extend(true, {}, Store.config);
cfg = rowlenByRange(d, str, edr, cfg);
5 years ago
5 years ago
jfrefreshgrid(d, [{ "row": [str, edr], "column": [stc, edc] }], cfg, null, true);
5 years ago
}
else{
5 years ago
jfrefreshgrid(d, [{ "row": [str, edr], "column": [stc, edc] }]);
5 years ago
}
}
//创建筛选按钮
5 years ago
function createFilter() {
if(Store.luckysheet_select_save.length > 1){
5 years ago
$("#luckysheet-rightclick-menu").hide();
$("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
$("#" + container).attr("tabindex", 0).focus();
5 years ago
if(isEditMode()){
5 years ago
alert("不能对多重选择区域执行此操作,请选择单个区域,然后再试");
}
else{
5 years ago
tooltip.info("不能对多重选择区域执行此操作,请选择单个区域,然后再试", "");
5 years ago
}
return;
}
5 years ago
if(Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)].isPivotTable){
5 years ago
return;
}
5 years ago
$('#luckysheet-filter-selected-sheet' + Store.currentSheetIndex + ', #luckysheet-filter-options-sheet' + Store.currentSheetIndex).remove();
5 years ago
5 years ago
let last = Store.luckysheet_select_save[0];
5 years ago
if (last["row"][0] == last["row"][1] && last["column"][0] == last["column"][1]) {
5 years ago
let st_c, ed_c, curR = last["row"][1];
5 years ago
5 years ago
for (let c = 0; c < Store.flowdata[curR].length; c++) {
let cell = Store.flowdata[curR][c];
5 years ago
5 years ago
if (cell != null && !isRealNull(cell.v)) {
5 years ago
if (st_c == null) {
st_c = c;
}
}
else if (st_c != null) {
ed_c = c - 1;
break;
}
}
if (ed_c == null) {
5 years ago
ed_c = Store.flowdata[curR].length - 1;
5 years ago
}
5 years ago
Store.luckysheet_select_save = [{ "row": [curR, curR], "column": [st_c, ed_c] }];
selectHightlightShow();
5 years ago
5 years ago
Store.luckysheet_shiftpositon = $.extend(true, {}, last);
5 years ago
luckysheetMoveEndCell("down", "range");
}
else if (last["row"][1] - last["row"][0] < 2) {
5 years ago
Store.luckysheet_shiftpositon = $.extend(true, {}, last);
5 years ago
luckysheetMoveEndCell("down", "range");
}
5 years ago
Store.luckysheet_filter_save = $.extend(true, {}, Store.luckysheet_select_save[0]);
5 years ago
5 years ago
createFilterOptions(Store.luckysheet_filter_save);
5 years ago
5 years ago
server.saveParam("all", Store.currentSheetIndex, Store.luckysheet_filter_save, { "k": "filter_select" });
5 years ago
5 years ago
if (Store.filterchage) {
Store.jfredo.push({
5 years ago
"type": "filtershow",
"data": [],
"curdata": [],
5 years ago
"sheetIndex": Store.currentSheetIndex,
"filter_save": Store.luckysheet_filter_save
5 years ago
});
}
}
5 years ago
//创建筛选配置
function createFilterOptions(luckysheet_filter_save, filterObj) {
$("#luckysheet-filter-selected-sheet" + Store.currentSheetIndex).remove();
$("#luckysheet-filter-options-sheet" + Store.currentSheetIndex).remove();
5 years ago
5 years ago
if(Store.luckysheet_filter_save == null || JSON.stringify(Store.luckysheet_filter_save) == "{}"){
5 years ago
return;
}
5 years ago
let r1 = Store.luckysheet_filter_save.row[0],
r2 = Store.luckysheet_filter_save.row[1];
let c1 = Store.luckysheet_filter_save.column[0],
c2 = Store.luckysheet_filter_save.column[1];
5 years ago
5 years ago
let row = Store.visibledatarow[r2],
row_pre = r1 - 1 == -1 ? 0 : Store.visibledatarow[r1 - 1];
let col = Store.visibledatacolumn[c2],
col_pre = c1 - 1 == -1 ? 0 : Store.visibledatacolumn[c1 - 1];
5 years ago
5 years ago
let newSelectedHTML = '<div id="luckysheet-filter-selected-sheet'+ Store.currentSheetIndex +'" class="luckysheet-cell-selected luckysheet-filter-selected" style="left:'+ col_pre +'px;width:'+ (col - col_pre - 1) +'px;top:'+ row_pre +'px;height:'+ (row - row_pre - 1) +'px;display:block;border-color:#897BFF;z-index:20;background:none;"></div>';
5 years ago
$("#luckysheet-cell-main").append(newSelectedHTML);
5 years ago
let optionHTML = "";
5 years ago
5 years ago
for (let c = c1; c <= c2; c++) {
5 years ago
if(filterObj == null || filterObj[c - c1] == null){
5 years ago
optionHTML += '<div data-rowhidden="" data-str="'+ r1 +'" data-edr="'+ r2 +'" data-cindex="'+ c +'" data-stc="'+ c1 +'" data-edc="'+ c2 +'" class="luckysheet-filter-options" style="left:'+ (Store.visibledatacolumn[c] - 20) +'px;top:'+ row_pre +'px;display:block;"><i class="fa fa-caret-down" aria-hidden="true"></i></div>';
5 years ago
}
else{
5 years ago
let caljs_data;
5 years ago
if(filterObj[c - c1].caljs != null){
5 years ago
let caljs_value1_data;
5 years ago
if (filterObj[c - c1].caljs["value1"] != null) {
5 years ago
caljs_value1_data = 'data-byconditionvalue1="'+ filterObj[c - c1].caljs["value1"] +'" ';
5 years ago
}
else{
5 years ago
caljs_value1_data = '';
5 years ago
}
5 years ago
let caljs_value2_data;
5 years ago
if (filterObj[c - c1].caljs["value2"] != null) {
5 years ago
caljs_value2_data = 'data-byconditionvalue2="'+ filterObj[c - c1].caljs["value2"] +'" ';
5 years ago
}
else{
5 years ago
caljs_value2_data = '';
5 years ago
}
5 years ago
caljs_data = 'data-caljs="'+ JSON.stringify(filterObj[c - c1].caljs) +'" ' +
5 years ago
'data-byconditionvalue="'+ filterObj[c - c1].caljs["value"] +'" ' +
'data-byconditiontype="'+ filterObj[c - c1].caljs["type"] +'" ' +
'data-byconditiontext="'+ filterObj[c - c1].caljs["text"] +'" ' +
caljs_value1_data + caljs_value2_data;
}
else{
5 years ago
caljs_data = '';
5 years ago
}
5 years ago
optionHTML += '<div data-rowhidden="'+ JSON.stringify(filterObj[c - c1].rowhidden).replace(/\"/g, "'") +'" '+ caljs_data +' data-str="'+ r1 +'" data-edr="'+ r2 +'" data-cindex="'+ c +'" data-stc="'+ c1 +'" data-edc="'+ c2 +'" class="luckysheet-filter-options luckysheet-filter-options-active" style="left:'+ (Store.visibledatacolumn[c] - 20) +'px;top:'+ row_pre +'px;display:block;"><i class="fa fa-filter luckysheet-mousedown-cancel" aria-hidden="true"></i></div>';
5 years ago
}
}
5 years ago
$("#luckysheet-cell-main").append('<div id="luckysheet-filter-options-sheet'+ Store.currentSheetIndex +'" class="luckysheet-filter-options-c">' + optionHTML + '</div>');
5 years ago
$("#luckysheet-rightclick-menu").hide();
$("#luckysheet-filter-menu, #luckysheet-filter-submenu").hide();
5 years ago
if ($("#luckysheet-cell-main").scrollTop() > Store.luckysheet_filter_save["top_move"]) {
$("#luckysheet-scrollbar-y").scrollTop(Store.luckysheet_filter_save["top_move"]);
5 years ago
}
5 years ago
let file = Store.luckysheetfile[getSheetIndex(Store.currentSheetIndex)];
5 years ago
5 years ago
file.filter_select = Store.luckysheet_filter_save;
5 years ago
}
5 years ago
export {
labelFilterOptionState,
orderbydatafiler,
createFilter,
createFilterOptions
}