mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-03-05 12:20:16 +01:00
This commit is contained in:
parent
0f0cab91ca
commit
a681dcaf17
5 changed files with 115 additions and 213 deletions
103
app/src/protyle/render/av/addToDatabase.ts
Normal file
103
app/src/protyle/render/av/addToDatabase.ts
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
import {openSearchAV} from "./relation";
|
||||
import {transaction} from "../../wysiwyg/transaction";
|
||||
import {focusByRange} from "../../util/selection";
|
||||
import {hasClosestBlock} from "../../util/hasClosest";
|
||||
import * as dayjs from "dayjs";
|
||||
|
||||
export const addFilesToDatabase = (fileLiElements: Element[]) => {
|
||||
const srcs: IOperationSrcs[] = [];
|
||||
fileLiElements.forEach(item => {
|
||||
const id = item.getAttribute("data-node-id");
|
||||
if (id) {
|
||||
srcs.push({
|
||||
id,
|
||||
isDetached: false
|
||||
});
|
||||
}
|
||||
});
|
||||
if (srcs.length > 0) {
|
||||
openSearchAV("", fileLiElements[0] as HTMLElement, (listItemElement) => {
|
||||
const avID = listItemElement.dataset.avId;
|
||||
transaction(undefined, [{
|
||||
action: "insertAttrViewBlock",
|
||||
avID,
|
||||
ignoreFillFilter: true,
|
||||
srcs,
|
||||
blockID: listItemElement.dataset.blockId
|
||||
}, {
|
||||
action: "doUpdateUpdated",
|
||||
id: listItemElement.dataset.blockId,
|
||||
data: dayjs().format("YYYYMMDDHHmmss"),
|
||||
}]);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
export const addEditorToDatabase = (protyle: IProtyle, range: Range, type?: string) => {
|
||||
if (protyle.title?.editElement.contains(range.startContainer) || type === "title") {
|
||||
openSearchAV("", protyle.breadcrumb.element, (listItemElement) => {
|
||||
const avID = listItemElement.dataset.avId;
|
||||
transaction(protyle, [{
|
||||
action: "insertAttrViewBlock",
|
||||
avID,
|
||||
ignoreFillFilter: true,
|
||||
srcs: [{
|
||||
id: protyle.block.rootID,
|
||||
isDetached: false
|
||||
}],
|
||||
blockID: listItemElement.dataset.blockId
|
||||
}, {
|
||||
action: "doUpdateUpdated",
|
||||
id: listItemElement.dataset.blockId,
|
||||
data: dayjs().format("YYYYMMDDHHmmss"),
|
||||
}], [{
|
||||
action: "removeAttrViewBlock",
|
||||
srcIDs: [protyle.block.rootID],
|
||||
avID,
|
||||
}]);
|
||||
focusByRange(range);
|
||||
});
|
||||
} else {
|
||||
const selectElement: Element[] = [];
|
||||
protyle.wysiwyg.element.querySelectorAll(".protyle-wysiwyg--select").forEach(item => {
|
||||
selectElement.push(item);
|
||||
});
|
||||
if (selectElement.length === 0) {
|
||||
const nodeElement = hasClosestBlock(range.startContainer);
|
||||
if (nodeElement) {
|
||||
selectElement.push(nodeElement);
|
||||
}
|
||||
}
|
||||
if (selectElement.length === 0) {
|
||||
return;
|
||||
}
|
||||
openSearchAV("", selectElement[0] as HTMLElement, (listItemElement) => {
|
||||
const srcIDs: string[] = [];
|
||||
const srcs: IOperationSrcs[] = [];
|
||||
selectElement.forEach(item => {
|
||||
srcIDs.push(item.getAttribute("data-node-id"));
|
||||
srcs.push({
|
||||
id: item.getAttribute("data-node-id"),
|
||||
isDetached: false
|
||||
});
|
||||
});
|
||||
const avID = listItemElement.dataset.avId;
|
||||
transaction(protyle, [{
|
||||
action: "insertAttrViewBlock",
|
||||
avID,
|
||||
ignoreFillFilter: true,
|
||||
srcs,
|
||||
blockID: listItemElement.dataset.blockId
|
||||
}, {
|
||||
action: "doUpdateUpdated",
|
||||
id: listItemElement.dataset.blockId,
|
||||
data: dayjs().format("YYYYMMDDHHmmss"),
|
||||
}], [{
|
||||
action: "removeAttrViewBlock",
|
||||
srcIDs,
|
||||
avID,
|
||||
}]);
|
||||
focusByRange(range);
|
||||
});
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue