feat: integrate luckysheet inline and fullscreen
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
import menuButton from './menuButton';
|
||||
import formula from '../global/formula';
|
||||
import Store from '../store';
|
||||
import flatpickr from 'flatpickr'
|
||||
import dayjs from "dayjs";
|
||||
import { update, datenum_local } from '../global/format';
|
||||
import { setCellValue, setCellFormat } from '../global/api';
|
||||
|
||||
const fitFormat = (formatStr) => {
|
||||
let dateFormat = formatStr.replace(/y/g, 'Y');
|
||||
dateFormat = dateFormat.replace(/d/g, 'D');
|
||||
dateFormat = dateFormat.replace(/h/g, 'H');
|
||||
|
||||
dateFormat = dateFormat.replace(/上午\/下午/g, 'A');
|
||||
dateFormat = dateFormat.replace(/上午/g, 'A');
|
||||
dateFormat = dateFormat.replace(/下午/g, 'A');
|
||||
|
||||
dateFormat = dateFormat.replace(/AM\/PM/g, 'A');
|
||||
dateFormat = dateFormat.replace(/AM/g, 'A');
|
||||
dateFormat = dateFormat.replace(/PM/g, 'A');
|
||||
dateFormat = dateFormat.replace(/\"/g, '');
|
||||
|
||||
if (dateFormat.includes('A')) {
|
||||
dateFormat = dateFormat.replace(/H/g, 'h');
|
||||
}
|
||||
return dateFormat
|
||||
}
|
||||
|
||||
const cellDatePickerCtrl = {
|
||||
cellFocus: function (r, c, cell) {
|
||||
let row = Store.visibledatarow[r],
|
||||
row_pre = r == 0 ? 0 : Store.visibledatarow[r - 1];
|
||||
let col = Store.visibledatacolumn[c],
|
||||
col_pre = c == 0 ? 0 : Store.visibledatacolumn[c - 1];
|
||||
|
||||
let margeset = menuButton.mergeborer(Store.flowdata, r, c);
|
||||
let type = cell.ct.fa || 'YYYY-MM-DD';
|
||||
let defaultDate = update('yyyy-MM-dd hh:mm:ss', cell.v);
|
||||
let dateFormat = fitFormat(type);
|
||||
let enableTime = false;
|
||||
let noCalendar = false;
|
||||
let enableSeconds = false;
|
||||
let time_24hr = true;
|
||||
let hasChineseTime = false;
|
||||
|
||||
|
||||
if (!!margeset) {
|
||||
row = margeset.row[1];
|
||||
row_pre = margeset.row[0];
|
||||
|
||||
col = margeset.column[1];
|
||||
col_pre = margeset.column[0];
|
||||
}
|
||||
|
||||
$(".cell-date-picker").show().css({
|
||||
width: col - col_pre + 1,
|
||||
height: row - row_pre + 1,
|
||||
left: col_pre,
|
||||
top: row_pre
|
||||
})
|
||||
|
||||
if (/[上午下午]/.test(type)) {
|
||||
hasChineseTime = true
|
||||
}
|
||||
if (/[Hhms]/.test(dateFormat)) {
|
||||
enableTime = true;
|
||||
}
|
||||
if (!/[YMD]/.test(dateFormat)) {
|
||||
noCalendar = true;
|
||||
}
|
||||
if (/s/.test(dateFormat)) {
|
||||
enableSeconds = true;
|
||||
}
|
||||
if (/A/.test(dateFormat)) {
|
||||
time_24hr = false;
|
||||
}
|
||||
|
||||
const fp = flatpickr('#luckysheet-input-box', {
|
||||
allowInput: false,
|
||||
noCalendar,
|
||||
enableSeconds,
|
||||
enableTime,
|
||||
dateFormat,
|
||||
time_24hr,
|
||||
defaultDate,
|
||||
onClose() {
|
||||
setTimeout(() => {
|
||||
fp.destroy()
|
||||
}, 0);
|
||||
},
|
||||
parseDate: (datestr, format) => {
|
||||
return dayjs(datestr).toDate();
|
||||
},
|
||||
formatDate: (date, format, locale) => {
|
||||
if (hasChineseTime) {
|
||||
return dayjs(date).format(format).replace('AM', '上午').replace('PM', '下午')
|
||||
}
|
||||
return dayjs(date).format(format);
|
||||
},
|
||||
onChange: function (selectedDates, dateStr) {
|
||||
let currentVal = datenum_local(new Date(selectedDates))
|
||||
$("#luckysheet-rich-text-editor").html(dateStr);
|
||||
setCellValue(r, c, currentVal, { isRefresh: false })
|
||||
setCellFormat(r, c, 'ct', cell.ct)
|
||||
if (!enableTime) {
|
||||
formula.updatecell(Store.luckysheetCellUpdate[0], Store.luckysheetCellUpdate[1]);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$("#luckysheet-input-box").click();
|
||||
},
|
||||
}
|
||||
|
||||
export default cellDatePickerCtrl;
|
||||
Reference in New Issue
Block a user