mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-22 09:30:14 +01:00
♻️ update date
This commit is contained in:
parent
aa2b52bad9
commit
c70031ed3a
3 changed files with 47 additions and 120 deletions
|
|
@ -516,7 +516,10 @@ export const updateCellsValue = (protyle: IProtyle, nodeElement: HTMLElement, va
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cellElements.forEach((item: HTMLElement) => {
|
cellElements.forEach((item: HTMLElement, elementIndex) => {
|
||||||
|
if (!nodeElement.contains(item)) {
|
||||||
|
item = cellElements[elementIndex] = nodeElement.querySelector(`.av__cell[data-id="${item.dataset.id}"]`) as HTMLElement;
|
||||||
|
}
|
||||||
const rowElement = hasClosestByClassName(item, "av__row");
|
const rowElement = hasClosestByClassName(item, "av__row");
|
||||||
if (!rowElement) {
|
if (!rowElement) {
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,6 @@
|
||||||
import {transaction} from "../../wysiwyg/transaction";
|
|
||||||
import * as dayjs from "dayjs";
|
import * as dayjs from "dayjs";
|
||||||
import {updateAttrViewCellAnimation} from "./action";
|
|
||||||
import {genAVValueHTML} from "./blockAttr";
|
|
||||||
import {hasClosestByClassName} from "../../util/hasClosest";
|
import {hasClosestByClassName} from "../../util/hasClosest";
|
||||||
import {genCellValueByElement, getTypeByCellElement} from "./cell";
|
import {updateCellsValue} from "./cell";
|
||||||
|
|
||||||
export const getDateHTML = (data: IAVTable, cellElements: HTMLElement[]) => {
|
export const getDateHTML = (data: IAVTable, cellElements: HTMLElement[]) => {
|
||||||
let hasEndDate = true;
|
let hasEndDate = true;
|
||||||
|
|
@ -70,31 +67,25 @@ export const bindDateEvent = (options: {
|
||||||
const inputElements: NodeListOf<HTMLInputElement> = options.menuElement.querySelectorAll("input");
|
const inputElements: NodeListOf<HTMLInputElement> = options.menuElement.querySelectorAll("input");
|
||||||
inputElements[0].addEventListener("change", () => {
|
inputElements[0].addEventListener("change", () => {
|
||||||
inputElements[0].dataset.value = inputElements[0].value.length > 10 ? inputElements[0].value : inputElements[0].value + " 00:00";
|
inputElements[0].dataset.value = inputElements[0].value.length > 10 ? inputElements[0].value : inputElements[0].value + " 00:00";
|
||||||
setDateValue({
|
updateCellsValue(options.protyle, options.blockElement as HTMLElement, {
|
||||||
cellElements: options.cellElements,
|
content: new Date(inputElements[0].dataset.value).getTime(),
|
||||||
data: options.data,
|
isNotEmpty: inputElements[0].value !== "",
|
||||||
protyle: options.protyle,
|
content2: new Date(inputElements[1].dataset.value).getTime(),
|
||||||
blockElement: options.blockElement,
|
isNotEmpty2: inputElements[1].value !== "",
|
||||||
value: {
|
hasEndDate: inputElements[2].checked,
|
||||||
isNotEmpty: inputElements[0].value !== "",
|
isNotTime: !inputElements[3].checked,
|
||||||
content: new Date(inputElements[0].dataset.value).getTime(),
|
}, options.cellElements);
|
||||||
isNotTime: !inputElements[3].checked
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
inputElements[1].addEventListener("change", () => {
|
inputElements[1].addEventListener("change", () => {
|
||||||
inputElements[1].dataset.value = inputElements[1].value.length > 10 ? inputElements[1].value : inputElements[1].value + " 00:00";
|
inputElements[1].dataset.value = inputElements[1].value.length > 10 ? inputElements[1].value : inputElements[1].value + " 00:00";
|
||||||
setDateValue({
|
updateCellsValue(options.protyle, options.blockElement as HTMLElement, {
|
||||||
cellElements: options.cellElements,
|
content: new Date(inputElements[0].dataset.value).getTime(),
|
||||||
data: options.data,
|
isNotEmpty: inputElements[0].value !== "",
|
||||||
protyle: options.protyle,
|
content2: new Date(inputElements[1].dataset.value).getTime(),
|
||||||
blockElement: options.blockElement,
|
isNotEmpty2: inputElements[1].value !== "",
|
||||||
value: {
|
hasEndDate: inputElements[2].checked,
|
||||||
isNotEmpty2: inputElements[1].value !== "",
|
isNotTime: !inputElements[3].checked,
|
||||||
content2: new Date(inputElements[1].dataset.value).getTime(),
|
}, options.cellElements);
|
||||||
isNotTime: !inputElements[3].checked
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
inputElements[2].addEventListener("change", () => {
|
inputElements[2].addEventListener("change", () => {
|
||||||
if (inputElements[2].checked) {
|
if (inputElements[2].checked) {
|
||||||
|
|
@ -102,16 +93,14 @@ export const bindDateEvent = (options: {
|
||||||
} else {
|
} else {
|
||||||
inputElements[1].classList.add("fn__none");
|
inputElements[1].classList.add("fn__none");
|
||||||
}
|
}
|
||||||
setDateValue({
|
updateCellsValue(options.protyle, options.blockElement as HTMLElement, {
|
||||||
cellElements: options.cellElements,
|
content: new Date(inputElements[0].dataset.value).getTime(),
|
||||||
data: options.data,
|
isNotEmpty: inputElements[0].value !== "",
|
||||||
blockElement: options.blockElement,
|
content2: new Date(inputElements[1].dataset.value).getTime(),
|
||||||
protyle: options.protyle,
|
isNotEmpty2: inputElements[1].value !== "",
|
||||||
value: {
|
hasEndDate: inputElements[2].checked,
|
||||||
hasEndDate: inputElements[2].checked,
|
isNotTime: !inputElements[3].checked,
|
||||||
isNotTime: !inputElements[3].checked
|
}, options.cellElements);
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
inputElements[3].addEventListener("change", () => {
|
inputElements[3].addEventListener("change", () => {
|
||||||
if (inputElements[3].checked) {
|
if (inputElements[3].checked) {
|
||||||
|
|
@ -129,73 +118,13 @@ export const bindDateEvent = (options: {
|
||||||
inputElements[0].value = inputElements[0].dataset.value.substring(0, 10);
|
inputElements[0].value = inputElements[0].dataset.value.substring(0, 10);
|
||||||
inputElements[1].value = inputElements[1].dataset.value.substring(0, 10);
|
inputElements[1].value = inputElements[1].dataset.value.substring(0, 10);
|
||||||
}
|
}
|
||||||
setDateValue({
|
updateCellsValue(options.protyle, options.blockElement as HTMLElement, {
|
||||||
cellElements: options.cellElements,
|
content: new Date(inputElements[0].dataset.value).getTime(),
|
||||||
data: options.data,
|
isNotEmpty: inputElements[0].value !== "",
|
||||||
blockElement: options.blockElement,
|
content2: new Date(inputElements[1].dataset.value).getTime(),
|
||||||
protyle: options.protyle,
|
isNotEmpty2: inputElements[1].value !== "",
|
||||||
value: {
|
hasEndDate: inputElements[2].checked,
|
||||||
isNotTime: !inputElements[3].checked
|
isNotTime: !inputElements[3].checked,
|
||||||
}
|
}, options.cellElements);
|
||||||
});
|
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export const setDateValue = (options: {
|
|
||||||
cellElements: HTMLElement[],
|
|
||||||
data: IAV
|
|
||||||
protyle: IProtyle,
|
|
||||||
value: IAVCellDateValue,
|
|
||||||
blockElement: Element
|
|
||||||
}) => {
|
|
||||||
const colId = options.cellElements[0].dataset.colId;
|
|
||||||
const cellDoOperations: IOperation[] = [];
|
|
||||||
const cellUndoOperations: IOperation[] = [];
|
|
||||||
options.cellElements.forEach((item, elementIndex) => {
|
|
||||||
if (!options.blockElement.contains(item)) {
|
|
||||||
item = options.cellElements[elementIndex] = options.blockElement.querySelector(`.av__cell[data-id="${item.dataset.id}"]`) as HTMLElement;
|
|
||||||
}
|
|
||||||
const cellValue = genCellValueByElement(getTypeByCellElement(item) || item.dataset.type as TAVCol, item);
|
|
||||||
const oldValue = JSON.parse(JSON.stringify(cellValue))
|
|
||||||
const rowID = (hasClosestByClassName(item, "av__row") as HTMLElement).dataset.id;
|
|
||||||
if (elementIndex === 0) {
|
|
||||||
cellValue.date = Object.assign(cellValue.date || {
|
|
||||||
isNotEmpty2: false,
|
|
||||||
isNotEmpty: false
|
|
||||||
}, options.value);
|
|
||||||
}
|
|
||||||
cellDoOperations.push({
|
|
||||||
action: "updateAttrViewCell",
|
|
||||||
id: cellValue.id,
|
|
||||||
keyID: colId,
|
|
||||||
rowID,
|
|
||||||
avID: options.data.id,
|
|
||||||
data: cellValue
|
|
||||||
});
|
|
||||||
cellUndoOperations.push({
|
|
||||||
action: "updateAttrViewCell",
|
|
||||||
id: cellValue.id,
|
|
||||||
keyID: colId,
|
|
||||||
rowID,
|
|
||||||
avID: options.data.id,
|
|
||||||
data: oldValue
|
|
||||||
});
|
|
||||||
options.data.view.rows.find(row => {
|
|
||||||
if (row.id === rowID) {
|
|
||||||
row.cells.find(cell => {
|
|
||||||
if (cell.id === cellValue.id) {
|
|
||||||
cell.value = cellValue;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (item.classList.contains("custom-attr__avvalue")) {
|
|
||||||
item.innerHTML = genAVValueHTML(cellValue);
|
|
||||||
} else {
|
|
||||||
updateAttrViewCellAnimation(item, cellValue);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
transaction(options.protyle, cellDoOperations, cellUndoOperations);
|
|
||||||
};
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import {hasClosestByAttribute, hasClosestByClassName} from "../../util/hasCloses
|
||||||
import {bindSelectEvent, getSelectHTML, addColOptionOrCell, setColOption, removeCellOption} from "./select";
|
import {bindSelectEvent, getSelectHTML, addColOptionOrCell, setColOption, removeCellOption} from "./select";
|
||||||
import {addFilter, getFiltersHTML, setFilter} from "./filter";
|
import {addFilter, getFiltersHTML, setFilter} from "./filter";
|
||||||
import {addSort, bindSortsEvent, getSortsHTML} from "./sort";
|
import {addSort, bindSortsEvent, getSortsHTML} from "./sort";
|
||||||
import {bindDateEvent, getDateHTML, setDateValue} from "./date";
|
import {bindDateEvent, getDateHTML} from "./date";
|
||||||
import {formatNumber} from "./number";
|
import {formatNumber} from "./number";
|
||||||
import {removeAttrViewColAnimation, updateAttrViewCellAnimation} from "./action";
|
import {removeAttrViewColAnimation, updateAttrViewCellAnimation} from "./action";
|
||||||
import {addAssetLink, bindAssetEvent, editAssetItem, getAssetHTML, updateAssetCell} from "./asset";
|
import {addAssetLink, bindAssetEvent, editAssetItem, getAssetHTML, updateAssetCell} from "./asset";
|
||||||
|
|
@ -28,6 +28,7 @@ import {avRender} from "./render";
|
||||||
import {setPageSize} from "./row";
|
import {setPageSize} from "./row";
|
||||||
import {bindRelationEvent, getRelationHTML, openSearchAV, setRelationCell, updateRelation} from "./relation";
|
import {bindRelationEvent, getRelationHTML, openSearchAV, setRelationCell, updateRelation} from "./relation";
|
||||||
import {goSearchRollupCalc, goSearchRollupCol, goSearchRollupTarget} from "./rollup";
|
import {goSearchRollupCalc, goSearchRollupCol, goSearchRollupTarget} from "./rollup";
|
||||||
|
import {updateCellsValue} from "./cell";
|
||||||
|
|
||||||
export const openMenuPanel = (options: {
|
export const openMenuPanel = (options: {
|
||||||
protyle: IProtyle,
|
protyle: IProtyle,
|
||||||
|
|
@ -1009,20 +1010,14 @@ export const openMenuPanel = (options: {
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
break;
|
break;
|
||||||
} else if (type === "clearDate") {
|
} else if (type === "clearDate") {
|
||||||
setDateValue({
|
updateCellsValue(options.protyle, options.blockElement as HTMLElement, {
|
||||||
cellElements: options.cellElements,
|
isNotEmpty2: false,
|
||||||
data,
|
isNotEmpty: false,
|
||||||
protyle: options.protyle,
|
content: null,
|
||||||
blockElement: options.blockElement,
|
content2: null,
|
||||||
value: {
|
hasEndDate: false,
|
||||||
isNotEmpty2: false,
|
isNotTime: true,
|
||||||
isNotEmpty: false,
|
}, options.cellElements);
|
||||||
content: null,
|
|
||||||
content2: null,
|
|
||||||
hasEndDate: false,
|
|
||||||
isNotTime: true,
|
|
||||||
}
|
|
||||||
});
|
|
||||||
avPanelElement.remove();
|
avPanelElement.remove();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue