Vanessa 2024-03-11 23:36:39 +08:00
parent 8675b49daa
commit 0949236b45
2 changed files with 18 additions and 28 deletions

View file

@ -26,17 +26,22 @@ export const getDateHTML = (data: IAVTable, cellElements: HTMLElement[]) => {
}
const isNotTime = !cellValue || cellValue?.value?.date?.isNotTime;
let value = "";
const currentDate = new Date().getTime()
if (cellValue?.value?.date?.isNotEmpty) {
value = dayjs(cellValue.value.date.content).format(isNotTime ? "YYYY-MM-DD" : "YYYY-MM-DD HH:mm");
} else {
value = dayjs(currentDate).format(isNotTime ? "YYYY-MM-DD" : "YYYY-MM-DD HH:mm");
}
let value2 = "";
if (cellValue?.value?.date?.isNotEmpty2) {
value2 = dayjs(cellValue.value.date.content2).format(isNotTime ? "YYYY-MM-DD" : "YYYY-MM-DD HH:mm");
} else if (hasEndDate) {
value2 = dayjs(currentDate).format(isNotTime ? "YYYY-MM-DD" : "YYYY-MM-DD HH:mm");
}
return `<div class="b3-menu__items">
<div>
<input type="${isNotTime ? "date" : "datetime-local"}" max="${isNotTime ? "9999-12-31" : "9999-12-31 23:59"}" value="${value}" data-value="${value ? dayjs(cellValue.value.date.content).format("YYYY-MM-DD HH:mm") : ""}" class="b3-text-field fn__size200" style="margin-top: 4px;"><br>
<input type="${isNotTime ? "date" : "datetime-local"}" max="${isNotTime ? "9999-12-31" : "9999-12-31 23:59"}" value="${value2}" data-value="${value2 ? dayjs(cellValue.value.date.content2).format("YYYY-MM-DD HH:mm") : ""}" style="margin-top: 8px;margin-bottom: 4px" class="b3-text-field fn__size200${hasEndDate ? "" : " fn__none"}">
<input type="${isNotTime ? "date" : "datetime-local"}" max="${isNotTime ? "9999-12-31" : "9999-12-31 23:59"}" value="${value}" data-value="${dayjs(cellValue?.value?.date?.content || currentDate).format("YYYY-MM-DD HH:mm")}" class="b3-text-field fn__size200" style="margin-top: 4px;"><br>
<input type="${isNotTime ? "date" : "datetime-local"}" max="${isNotTime ? "9999-12-31" : "9999-12-31 23:59"}" value="${value2}" data-value="${cellValue?.value?.date?.isNotEmpty2 ? dayjs(cellValue.value.date.content2).format("YYYY-MM-DD HH:mm") : ""}" style="margin-top: 8px;margin-bottom: 4px" class="b3-text-field fn__size200${hasEndDate ? "" : " fn__none"}">
<button class="b3-menu__separator"></button>
<label class="b3-menu__item">
<span class="fn__flex-center">${window.siyuan.languages.endDate}</span>
@ -67,40 +72,21 @@ export const bindDateEvent = (options: {
const inputElements: NodeListOf<HTMLInputElement> = options.menuElement.querySelectorAll("input");
inputElements[0].addEventListener("change", () => {
inputElements[0].dataset.value = inputElements[0].value.length > 10 ? inputElements[0].value : inputElements[0].value + " 00:00";
updateCellsValue(options.protyle, options.blockElement as HTMLElement, {
content: new Date(inputElements[0].dataset.value).getTime(),
isNotEmpty: inputElements[0].value !== "",
content2: new Date(inputElements[1].dataset.value).getTime(),
isNotEmpty2: inputElements[1].value !== "",
hasEndDate: inputElements[2].checked,
isNotTime: !inputElements[3].checked,
}, options.cellElements);
});
inputElements[1].addEventListener("change", () => {
inputElements[1].dataset.value = inputElements[1].value.length > 10 ? inputElements[1].value : inputElements[1].value + " 00:00";
updateCellsValue(options.protyle, options.blockElement as HTMLElement, {
content: new Date(inputElements[0].dataset.value).getTime(),
isNotEmpty: inputElements[0].value !== "",
content2: new Date(inputElements[1].dataset.value).getTime(),
isNotEmpty2: inputElements[1].value !== "",
hasEndDate: inputElements[2].checked,
isNotTime: !inputElements[3].checked,
}, options.cellElements);
});
inputElements[2].addEventListener("change", () => {
if (inputElements[2].checked) {
if (!inputElements[1].dataset.value) {
const currentDate = new Date().getTime()
inputElements[1].dataset.value = dayjs(currentDate).format("YYYY-MM-DD HH:mm")
inputElements[1].value = dayjs(currentDate).format(inputElements[3].checked ? "YYYY-MM-DD HH:mm" : "YYYY-MM-DD");
}
inputElements[1].classList.remove("fn__none");
} else {
inputElements[1].classList.add("fn__none");
}
updateCellsValue(options.protyle, options.blockElement as HTMLElement, {
content: new Date(inputElements[0].dataset.value).getTime(),
isNotEmpty: inputElements[0].value !== "",
content2: new Date(inputElements[1].dataset.value).getTime(),
isNotEmpty2: inputElements[1].value !== "",
hasEndDate: inputElements[2].checked,
isNotTime: !inputElements[3].checked,
}, options.cellElements);
});
inputElements[3].addEventListener("change", () => {
if (inputElements[3].checked) {
@ -118,6 +104,8 @@ export const bindDateEvent = (options: {
inputElements[0].value = inputElements[0].dataset.value.substring(0, 10);
inputElements[1].value = inputElements[1].dataset.value.substring(0, 10);
}
});
return () => {
updateCellsValue(options.protyle, options.blockElement as HTMLElement, {
content: new Date(inputElements[0].dataset.value).getTime(),
isNotEmpty: inputElements[0].value !== "",
@ -126,5 +114,5 @@ export const bindDateEvent = (options: {
hasEndDate: inputElements[2].checked,
isNotTime: !inputElements[3].checked,
}, options.cellElements);
});
}
};

View file

@ -111,6 +111,7 @@ export const openMenuPanel = (options: {
<div class="b3-menu">${html}</div>
</div>`);
avPanelElement = document.querySelector(".av__panel");
let closeCB: () => void;
const menuElement = avPanelElement.lastElementChild as HTMLElement;
const tabRect = options.blockElement.querySelector(`.av__views, .av__row[data-col-id="${options.colId}"] > .block__logo`)?.getBoundingClientRect();
if (["select", "date", "asset", "relation", "rollup"].includes(options.type)) {
@ -118,7 +119,7 @@ export const openMenuPanel = (options: {
if (options.type === "select") {
bindSelectEvent(options.protyle, data, menuElement, options.cellElements, options.blockElement);
} else if (options.type === "date") {
bindDateEvent({
closeCB = bindDateEvent({
protyle: options.protyle,
data,
menuElement,
@ -465,6 +466,7 @@ export const openMenuPanel = (options: {
// 过滤面板先关闭过滤条件
window.siyuan.menus.menu.remove();
} else {
closeCB?.();
avPanelElement.remove();
focusBlock(options.blockElement);
}