mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-05-08 07:00:22 +08:00
This commit is contained in:
parent
0635af2fc5
commit
c2bc25bac7
@ -70,6 +70,7 @@ export abstract class Constants {
|
||||
public static readonly LOCAL_ZOOM = "local-zoom";
|
||||
public static readonly LOCAL_SEARCHDATA = "local-searchdata";
|
||||
public static readonly LOCAL_SEARCHKEYS = "local-searchkeys";
|
||||
public static readonly LOCAL_SEARCHASSET = "local-searchasset";
|
||||
public static readonly LOCAL_DOCINFO = "local-docinfo"; // only mobile
|
||||
public static readonly LOCAL_DAILYNOTEID = "local-dailynoteid"; // string
|
||||
public static readonly LOCAL_HISTORYNOTEID = "local-historynoteid"; // string
|
||||
|
@ -148,6 +148,16 @@ export const getLocalStorage = (cb: () => void) => {
|
||||
window.siyuan.storage = response.data;
|
||||
// 历史数据迁移
|
||||
const defaultStorage: any = {};
|
||||
defaultStorage[Constants.LOCAL_SEARCHASSET] = {
|
||||
keys: [],
|
||||
col: "",
|
||||
row: "",
|
||||
layout: 0,
|
||||
method: 0,
|
||||
types: [".txt", ".md", ".docx", ".xlsx", ".pptx"],
|
||||
sort: 0,
|
||||
k: "",
|
||||
};
|
||||
defaultStorage[Constants.LOCAL_SEARCHKEYS] = {
|
||||
keys: [],
|
||||
replaceKeys: [],
|
||||
@ -216,9 +226,10 @@ export const getLocalStorage = (cb: () => void) => {
|
||||
};
|
||||
defaultStorage[Constants.LOCAL_ZOOM] = 1;
|
||||
|
||||
[Constants.LOCAL_EXPORTIMG, Constants.LOCAL_SEARCHKEYS, Constants.LOCAL_PDFTHEME, Constants.LOCAL_BAZAAR, Constants.LOCAL_EXPORTWORD,
|
||||
Constants.LOCAL_EXPORTPDF, Constants.LOCAL_DOCINFO, Constants.LOCAL_FONTSTYLES, Constants.LOCAL_SEARCHDATA,
|
||||
Constants.LOCAL_ZOOM, Constants.LOCAL_LAYOUTS, Constants.LOCAL_AI, Constants.LOCAL_PLUGINTOPUNPIN].forEach((key) => {
|
||||
[Constants.LOCAL_EXPORTIMG, Constants.LOCAL_SEARCHKEYS, Constants.LOCAL_PDFTHEME, Constants.LOCAL_BAZAAR,
|
||||
Constants.LOCAL_EXPORTWORD, Constants.LOCAL_EXPORTPDF, Constants.LOCAL_DOCINFO, Constants.LOCAL_FONTSTYLES,
|
||||
Constants.LOCAL_SEARCHDATA, Constants.LOCAL_ZOOM, Constants.LOCAL_LAYOUTS, Constants.LOCAL_AI,
|
||||
Constants.LOCAL_PLUGINTOPUNPIN, Constants.LOCAL_SEARCHASSET].forEach((key) => {
|
||||
if (typeof response.data[key] === "string") {
|
||||
try {
|
||||
const parseData = JSON.parse(response.data[key]);
|
||||
|
@ -1,3 +1,84 @@
|
||||
export const openSearchAsset = () => {
|
||||
import {Constants} from "../constants";
|
||||
import {fetchPost} from "../util/fetch";
|
||||
|
||||
export const openSearchAsset = (element: HTMLElement, isStick: boolean) => {
|
||||
const localSearch = window.siyuan.storage[Constants.LOCAL_SEARCHASSET]
|
||||
let methodText = window.siyuan.languages.keyword;
|
||||
if (localSearch.method === 1) {
|
||||
methodText = window.siyuan.languages.querySyntax;
|
||||
} else if (localSearch.method === 2) {
|
||||
methodText = "SQL";
|
||||
} else if (localSearch.method === 3) {
|
||||
methodText = window.siyuan.languages.regex;
|
||||
}
|
||||
const loadingElement = element.nextElementSibling;
|
||||
loadingElement.classList.remove("fn__none");
|
||||
element.innerHTML = `<div class="b3-form__icon search__header">
|
||||
<span class="fn__a" id="searchHistoryBtn">
|
||||
<svg data-menu="true" class="b3-form__icon-icon"><use xlink:href="#iconSearch"></use></svg>
|
||||
<svg class="search__arrowdown"><use xlink:href="#iconDown"></use></svg>
|
||||
</span>
|
||||
<input id="searchInput" style="padding-right: 60px" class="b3-text-field b3-text-field--text" placeholder="${window.siyuan.languages.keyword}">
|
||||
<div id="searchHistoryList" data-close="false" class="fn__none b3-menu b3-list b3-list--background"></div>
|
||||
<div class="block__icons">
|
||||
<span id="searchRefresh" aria-label="${window.siyuan.languages.refresh}" class="block__icon b3-tooltips b3-tooltips__w">
|
||||
<svg><use xlink:href="#iconRefresh"></use></svg>
|
||||
</span>
|
||||
<span class="fn__space"></span>
|
||||
<span id="searchSyntaxCheck" aria-label="${window.siyuan.languages.searchMethod} ${methodText}" class="block__icon b3-tooltips b3-tooltips__w">
|
||||
<svg><use xlink:href="#iconRegex"></use></svg>
|
||||
</span>
|
||||
<span class="fn__space"></span>
|
||||
<span id="searchFilter" aria-label="${window.siyuan.languages.type}" class="block__icon b3-tooltips b3-tooltips__w">
|
||||
<svg><use xlink:href="#iconFilter"></use></svg>
|
||||
</span>
|
||||
<span class="fn__space"></span>
|
||||
<span id="searchMore" aria-label="${window.siyuan.languages.more}" class="block__icon b3-tooltips b3-tooltips__w">
|
||||
<svg><use xlink:href="#iconMore"></use></svg>
|
||||
</span>
|
||||
<span class="${isStick ? "" : "fn__none "}fn__space"></span>
|
||||
<span id="searchOpen" aria-label="${window.siyuan.languages.openInNewTab}" class="${isStick ? "" : "fn__none "}block__icon b3-tooltips b3-tooltips__w">
|
||||
<svg><use xlink:href="#iconLayoutRight"></use></svg>
|
||||
</span>
|
||||
<span class="fn__space"></span>
|
||||
<span id="searchAsset" aria-label="${isStick ? window.siyuan.languages.stickSearch : window.siyuan.languages.globalSearch}" class="block__icon b3-tooltips b3-tooltips__w">
|
||||
<svg><use xlink:href="#iconBack"></use></svg>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="block__icons">
|
||||
<span data-type="previous" class="block__icon block__icon--show b3-tooltips b3-tooltips__ne" disabled="disabled" aria-label="${window.siyuan.languages.previousLabel}"><svg><use xlink:href='#iconLeft'></use></svg></span>
|
||||
<span class="fn__space"></span>
|
||||
<span data-type="next" class="block__icon block__icon--show b3-tooltips b3-tooltips__ne" disabled="disabled" aria-label="${window.siyuan.languages.nextLabel}"><svg><use xlink:href='#iconRight'></use></svg></span>
|
||||
<span class="fn__space"></span>
|
||||
<span id="searchResult"></span>
|
||||
<span class="fn__space"></span>
|
||||
<span class="fn__flex-1"></span>
|
||||
</div>
|
||||
<div class="search__layout${localSearch.layout === 1 ? " search__layout--row" : ""}">
|
||||
<div id="searchList" class="fn__flex-1 search__list b3-list b3-list--background"></div>
|
||||
<div class="search__drag"></div>
|
||||
<div id="searchPreview" class="fn__flex-1 search__preview"></div>
|
||||
</div>
|
||||
<div class="search__tip${isStick ? "" : " fn__none"}">
|
||||
<kbd>↑/↓</kbd> ${window.siyuan.languages.searchTip1}
|
||||
<kbd>Enter/Double Click</kbd> ${window.siyuan.languages.searchTip2}
|
||||
<kbd>Esc</kbd> ${window.siyuan.languages.searchTip5}
|
||||
</div>`
|
||||
element.previousElementSibling.classList.add("fn__none");
|
||||
element.classList.remove("fn__none")
|
||||
if (element.querySelector("#searchList").innerHTML !== "") {
|
||||
return
|
||||
}
|
||||
|
||||
fetchPost("/api/search/fullTextSearchAssetContent", {
|
||||
page: 1,
|
||||
query: localSearch.k,
|
||||
types: localSearch.types,
|
||||
method: localSearch.method,
|
||||
orderBy: localSearch.sort
|
||||
}, (response) => {
|
||||
loadingElement.classList.remove("fn__none")
|
||||
console.log(response)
|
||||
})
|
||||
}
|
||||
|
@ -216,7 +216,7 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo
|
||||
<div class="search__drag"></div>
|
||||
<div id="searchPreview" class="fn__flex-1 search__preview"></div>
|
||||
</div>
|
||||
<div class="search__tip">
|
||||
<div class="search__tip${closeCB ? "" : " fn__none"}">
|
||||
<kbd>↑/↓</kbd> ${window.siyuan.languages.searchTip1}
|
||||
<kbd>${updateHotkeyTip(window.siyuan.config.keymap.general.newFile.custom)}</kbd> ${window.siyuan.languages.new}
|
||||
<kbd>Enter/Double Click</kbd> ${window.siyuan.languages.searchTip2}
|
||||
@ -225,6 +225,7 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo
|
||||
<kbd>Esc</kbd> ${window.siyuan.languages.searchTip5}
|
||||
</div>
|
||||
</div>
|
||||
<div class="fn__flex-column search__assets fn__none" style="height: 100%;${closeCB ? "border-radius: var(--b3-border-radius-b);overflow: hidden;" : ""}"></div>
|
||||
<div class="fn__loading fn__loading--top"><img width="120px" src="/stage/loading-pure.svg"></div>`;
|
||||
|
||||
const criteriaData: ISearchOption[] = [];
|
||||
@ -495,7 +496,7 @@ export const genSearch = (app: App, config: ISearchOption, element: Element, clo
|
||||
event.preventDefault();
|
||||
break;
|
||||
} else if (target.id === "searchAsset") {
|
||||
openSearchAsset();
|
||||
openSearchAsset(element.querySelector(".search__assets"), !!closeCB);
|
||||
event.stopPropagation();
|
||||
event.preventDefault();
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user