mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-24 02:20:13 +01:00
This commit is contained in:
parent
ecd8dd66b9
commit
6fea6311dd
2 changed files with 23 additions and 39 deletions
|
|
@ -60,32 +60,27 @@ export const renderGallery = (options: {
|
|||
viewID: newViewID,
|
||||
query: query.trim()
|
||||
}, (response) => {
|
||||
const data = response.data.view as IAVTable;
|
||||
const data = response.data;
|
||||
if (!options.blockElement.dataset.pageSize) {
|
||||
options.blockElement.dataset.pageSize = data.pageSize.toString();
|
||||
options.blockElement.dataset.pageSize = data.view.pageSize.toString();
|
||||
}
|
||||
let galleryHTML = "";
|
||||
// body
|
||||
debugger
|
||||
data.rows.forEach((row: IAVRow, rowIndex: number) => {
|
||||
row.cells.forEach((cell, index) => {
|
||||
if (data.columns[index].hidden) {
|
||||
return;
|
||||
}
|
||||
// https://github.com/siyuan-note/siyuan/issues/10262
|
||||
data.view.cards.forEach((item: IAVGalleryItem, rowIndex: number) => {
|
||||
galleryHTML += `<div class="av__gallery-item${selectItemIds.includes(item.id) ? " av__gallery-item--select" : ""}">`;
|
||||
item.values.forEach(cell => {
|
||||
let checkClass = "";
|
||||
if (cell.valueType === "checkbox") {
|
||||
checkClass = cell.value?.checkbox?.checked ? " av__cell-check" : " av__cell-uncheck";
|
||||
}
|
||||
galleryHTML += `<div class="av__cell${checkClass}" data-id="${cell.id}" data-col-id="${data.columns[index].id}"
|
||||
${cell.valueType === "block" ? 'data-block-id="' + (cell.value.block.id || "") + '"' : ""} data-wrap="${data.columns[index].wrap}"
|
||||
data-dtype="${data.columns[index].type}"
|
||||
galleryHTML += `<div class="av__cell${checkClass}" data-id="${cell.id}"
|
||||
${cell.valueType === "block" ? 'data-block-id="' + (cell.value.block.id || "") + '"' : ""}
|
||||
data-dtype="${cell.valueType}"
|
||||
${cell.value?.isDetached ? ' data-detached="true"' : ""}
|
||||
style="width: ${data.columns[index].width || "200px"};
|
||||
${cell.valueType === "number" ? "text-align: right;" : ""}
|
||||
${cell.bgColor ? `background-color:${cell.bgColor};` : ""}
|
||||
style="${cell.bgColor ? `background-color:${cell.bgColor};` : ""}
|
||||
${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value, rowIndex)}</div>`;
|
||||
});
|
||||
galleryHTML += "</div>";
|
||||
});
|
||||
let tabHTML = "";
|
||||
let viewData: IAVView;
|
||||
|
|
@ -99,18 +94,7 @@ ${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value, rowIndex)}
|
|||
}
|
||||
});
|
||||
if (options.renderAll) {
|
||||
let hasFilter = false;
|
||||
data.columns.forEach((item) => {
|
||||
if (!hasFilter) {
|
||||
data.filters.find(filterItem => {
|
||||
if (filterItem.value.type === item.type && item.id === filterItem.column) {
|
||||
hasFilter = true;
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
options.blockElement.firstElementChild.outerHTML = `<div class="av__container">
|
||||
options.blockElement.firstElementChild.outerHTML = `<div class="av__container fn__block">
|
||||
<div class="av__header">
|
||||
<div class="fn__flex av__views${isSearching || query ? " av__views--show" : ""}">
|
||||
<div class="layout-tab-bar fn__flex">
|
||||
|
|
@ -122,17 +106,17 @@ ${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value, rowIndex)}
|
|||
</span>
|
||||
<div class="fn__flex-1"></div>
|
||||
<div class="fn__space"></div>
|
||||
<span data-type="av-switcher" class="block__icon${response.data.views.length > 0 ? "" : " fn__none"}">
|
||||
<span data-type="av-switcher" class="block__icon${data.views.length > 0 ? "" : " fn__none"}">
|
||||
<svg><use xlink:href="#iconDown"></use></svg>
|
||||
<span class="fn__space"></span>
|
||||
<small>${response.data.views.length}</small>
|
||||
<small>${data.views.length}</small>
|
||||
</span>
|
||||
<div class="fn__space"></div>
|
||||
<span data-type="av-filter" class="block__icon${hasFilter ? " block__icon--active" : ""}">
|
||||
<span data-type="av-filter" class="block__icon${data.view.filters.length > 0 ? " block__icon--active" : ""}">
|
||||
<svg><use xlink:href="#iconFilter"></use></svg>
|
||||
</span>
|
||||
<div class="fn__space"></div>
|
||||
<span data-type="av-sort" class="block__icon${data.sorts.length > 0 ? " block__icon--active" : ""}">
|
||||
<span data-type="av-sort" class="block__icon${data.view.sorts.length > 0 ? " block__icon--active" : ""}">
|
||||
<svg><use xlink:href="#iconSort"></use></svg>
|
||||
</span>
|
||||
<div class="fn__space"></div>
|
||||
|
|
@ -151,10 +135,10 @@ ${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value, rowIndex)}
|
|||
<svg><use xlink:href="#iconAdd"></use></svg>
|
||||
</span>
|
||||
<div class="fn__space"></div>
|
||||
${response.data.isMirror ? ` <span data-av-id="${response.data.id}" data-popover-url="/api/av/getMirrorDatabaseBlocks" class="popover__block block__icon block__icon--show ariaLabel" data-position="8south" aria-label="${window.siyuan.languages.mirrorTip}">
|
||||
${data.isMirror ? ` <span data-av-id="${data.id}" data-popover-url="/api/av/getMirrorDatabaseBlocks" class="popover__block block__icon block__icon--show ariaLabel" data-position="8south" aria-label="${window.siyuan.languages.mirrorTip}">
|
||||
<svg><use xlink:href="#iconSplitLR"></use></svg></span><div class="fn__space"></div>` : ""}
|
||||
</div>
|
||||
<div contenteditable="${options.protyle.disabled || hasClosestByAttribute(options.blockElement, "data-type", "NodeBlockQueryEmbed") ? "false" : "true"}" spellcheck="${window.siyuan.config.editor.spellcheck.toString()}" class="av__title${viewData.hideAttrViewName ? " fn__none" : ""}" data-title="${response.data.name || ""}" data-tip="${window.siyuan.languages.title}">${response.data.name || ""}</div>
|
||||
<div contenteditable="${options.protyle.disabled || hasClosestByAttribute(options.blockElement, "data-type", "NodeBlockQueryEmbed") ? "false" : "true"}" spellcheck="${window.siyuan.config.editor.spellcheck.toString()}" class="av__title${viewData.hideAttrViewName ? " fn__none" : ""}" data-title="${response.data.name || ""}" data-tip="${window.siyuan.languages.title}">${data.name || ""}</div>
|
||||
<div class="av__counter fn__none"></div>
|
||||
</div>
|
||||
<div class="av__gallery">
|
||||
|
|
@ -169,12 +153,6 @@ ${cell.color ? `color:${cell.color};` : ""}">${renderCell(cell.value, rowIndex)}
|
|||
if (alignSelf) {
|
||||
options.blockElement.style.alignSelf = alignSelf;
|
||||
}
|
||||
selectItemIds.forEach((selectRowId) => {
|
||||
const rowElement = options.blockElement.querySelector(`.av__gallery-cell[data-id="${selectRowId}"]`) as HTMLElement;
|
||||
if (rowElement) {
|
||||
rowElement.classList.add("av__gallery-cell--select");
|
||||
}
|
||||
});
|
||||
if (getSelection().rangeCount > 0) {
|
||||
// 修改表头后光标重新定位
|
||||
const range = getSelection().getRangeAt(0);
|
||||
|
|
|
|||
6
app/src/types/index.d.ts
vendored
6
app/src/types/index.d.ts
vendored
|
|
@ -889,6 +889,12 @@ interface IAVRow {
|
|||
cells: IAVCell[]
|
||||
}
|
||||
|
||||
interface IAVGalleryItem {
|
||||
coverURL?: string;
|
||||
id: string;
|
||||
values: IAVCell[];
|
||||
}
|
||||
|
||||
interface IAVCell {
|
||||
id: string,
|
||||
color: string,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue