mirror of
https://github.com/zadam/trilium.git
synced 2025-03-04 19:13:37 +08:00
created a specific widget for search result to add "no results" message
This commit is contained in:
parent
4160da70be
commit
c94fb7a62d
5 changed files with 80 additions and 15 deletions
|
@ -22,6 +22,7 @@ import ImagePropertiesWidget from "../widgets/type_property_widgets/image_proper
|
|||
import NotePropertiesWidget from "../widgets/type_property_widgets/note_properties.js";
|
||||
import NoteIconWidget from "../widgets/note_icon.js";
|
||||
import NotePathsWidget from "../widgets/note_paths.js";
|
||||
import SearchResultWidget from "../widgets/search_result.js";
|
||||
|
||||
export default class DesktopExtraWindowLayout {
|
||||
constructor(customWidgets) {
|
||||
|
@ -69,6 +70,7 @@ export default class DesktopExtraWindowLayout {
|
|||
.child(new TabCachingWidget(() => new SqlTableSchemasWidget()))
|
||||
.child(new TabCachingWidget(() => new NoteDetailWidget()))
|
||||
.child(new TabCachingWidget(() => new NoteListWidget()))
|
||||
.child(new TabCachingWidget(() => new SearchResultWidget()))
|
||||
.child(new TabCachingWidget(() => new SqlResultWidget()))
|
||||
)
|
||||
.child(...this.customWidgets.get('center-pane'))
|
||||
|
|
|
@ -32,6 +32,7 @@ import FilePropertiesWidget from "../widgets/type_property_widgets/file_properti
|
|||
import ImagePropertiesWidget from "../widgets/type_property_widgets/image_properties.js";
|
||||
import NotePropertiesWidget from "../widgets/type_property_widgets/note_properties.js";
|
||||
import NoteIconWidget from "../widgets/note_icon.js";
|
||||
import SearchResultWidget from "../widgets/search_result.js";
|
||||
|
||||
const RIGHT_PANE_CSS = `
|
||||
<style>
|
||||
|
@ -179,6 +180,7 @@ export default class DesktopMainWindowLayout {
|
|||
.child(new TabCachingWidget(() => new SqlTableSchemasWidget()))
|
||||
.child(new TabCachingWidget(() => new NoteDetailWidget()))
|
||||
.child(new TabCachingWidget(() => new NoteListWidget()))
|
||||
.child(new TabCachingWidget(() => new SearchResultWidget()))
|
||||
.child(new TabCachingWidget(() => new SqlResultWidget()))
|
||||
)
|
||||
.child(new TabCachingWidget(() => new SimilarNotesWidget()))
|
||||
|
|
|
@ -195,6 +195,8 @@ class TreeCache {
|
|||
branches,
|
||||
attributes: []
|
||||
});
|
||||
|
||||
treeCache.notes[note.noteId].searchResultsLoaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -23,11 +23,9 @@ const TPL = `
|
|||
export default class NoteListWidget extends TabAwareWidget {
|
||||
isEnabled() {
|
||||
return super.isEnabled()
|
||||
&& ['book', 'text', 'code'].includes(this.note.type)
|
||||
&& this.note.mime !== 'text/x-sqlite;schema=trilium'
|
||||
&& (
|
||||
['book', 'search', 'code'].includes(this.note.type)
|
||||
|| (this.note.type === 'text' && this.note.hasChildren())
|
||||
)
|
||||
&& this.note.hasChildren()
|
||||
&& !this.note.hasLabel('hideChildrenOverview');
|
||||
}
|
||||
|
||||
|
@ -89,17 +87,6 @@ export default class NoteListWidget extends TabAwareWidget {
|
|||
setTimeout(() => this.checkRenderStatus(), 100);
|
||||
}
|
||||
|
||||
searchRefreshedEvent({tabId}) {
|
||||
if (!this.isTab(tabId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.noteIdRefreshed = this.noteId;
|
||||
this.shownNoteId = null;
|
||||
|
||||
this.checkRenderStatus();
|
||||
}
|
||||
|
||||
notesReloadedEvent({noteIds}) {
|
||||
if (noteIds.includes(this.noteId)) {
|
||||
this.refresh();
|
||||
|
|
72
src/public/app/widgets/search_result.js
Normal file
72
src/public/app/widgets/search_result.js
Normal file
|
@ -0,0 +1,72 @@
|
|||
import TabAwareWidget from "./tab_aware_widget.js";
|
||||
import NoteListRenderer from "../services/note_list_renderer.js";
|
||||
|
||||
const TPL = `
|
||||
<div class="search-result-widget">
|
||||
<style>
|
||||
.search-result-widget {
|
||||
flex-grow: 100000;
|
||||
flex-shrink: 100000;
|
||||
min-height: 0;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.search-result-widget .note-list {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
.search-no-results, .search-not-executed-yet {
|
||||
margin: 20px;
|
||||
padding: 20px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="search-no-results alert alert-info">
|
||||
No notes have been found for given search parameters.
|
||||
</div>
|
||||
|
||||
<div class="search-not-executed-yet alert alert-info">
|
||||
Search has not been executed yet. Click on "Search" button above to see the results.
|
||||
</div>
|
||||
|
||||
<div class="search-result-widget-content">
|
||||
</div>
|
||||
</div>`;
|
||||
|
||||
export default class SearchResultWidget extends TabAwareWidget {
|
||||
isEnabled() {
|
||||
return super.isEnabled()
|
||||
&& this.note.type === 'search';
|
||||
}
|
||||
|
||||
doRender() {
|
||||
this.$widget = $(TPL);
|
||||
this.$content = this.$widget.find('.search-result-widget-content');
|
||||
this.$noResults = this.$widget.find('.search-no-results');
|
||||
this.$notExecutedYet = this.$widget.find('.search-not-executed-yet');
|
||||
this.contentSized();
|
||||
}
|
||||
|
||||
async refreshWithNote(note) {
|
||||
this.$content.empty();
|
||||
this.$noResults.toggle(note.getChildNoteIds().length === 0 && !!note.searchResultsLoaded);
|
||||
this.$notExecutedYet.toggle(!note.searchResultsLoaded);
|
||||
|
||||
const noteListRenderer = new NoteListRenderer(this.$content, note, note.getChildNoteIds());
|
||||
await noteListRenderer.renderList();
|
||||
}
|
||||
|
||||
searchRefreshedEvent({tabId}) {
|
||||
if (!this.isTab(tabId)) {
|
||||
return;
|
||||
}
|
||||
|
||||
this.refresh();
|
||||
}
|
||||
|
||||
notesReloadedEvent({noteIds}) {
|
||||
if (noteIds.includes(this.noteId)) {
|
||||
this.refresh();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue