#86 - implement basic bookmarks in sidebar
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
Garrett Mills 2021-02-18 10:23:00 -06:00
parent 8c253ac283
commit 6a75900908
Signed by: garrettmills
GPG Key ID: D2BF5FBA8298F246
3 changed files with 34 additions and 1 deletions

View File

@ -227,12 +227,19 @@ export class AppComponent implements OnInit {
const options = [ const options = [
{name: 'Make Virtual Root', icon: 'fa fa-search-plus', value: 'virtual_root'}, {name: 'Make Virtual Root', icon: 'fa fa-search-plus', value: 'virtual_root'},
{name: 'Export to HTML', icon: 'fa fa-file-export', value: 'export_html'}, {name: 'Export to HTML', icon: 'fa fa-file-export', value: 'export_html'},
// {name: 'Export as PDF', icon: 'fa fa-file-export', value: 'export_pdf'},
]; ];
const manageOptions = [ const manageOptions = [
{name: 'Share Sub-Tree', icon: 'fa fa-share-alt', value: 'share'}, {name: 'Share Sub-Tree', icon: 'fa fa-share-alt', value: 'share'},
]; ];
if ( this.menuTarget.data.bookmark ) {
options.push({name: 'Remove Bookmark', icon: 'fa fa-star', value: 'bookmark_remove'});
} else {
options.push({name: 'Bookmark', icon: 'fa fa-star', value: 'bookmark_add'});
}
const popover = await this.popover.create({ const popover = await this.popover.create({
component: OptionMenuComponent, component: OptionMenuComponent,
componentProps: { componentProps: {
@ -263,8 +270,14 @@ export class AppComponent implements OnInit {
}); });
} else if ( result.data === 'export_html' ) { } else if ( result.data === 'export_html' ) {
this.exportTargetAsHTML(); this.exportTargetAsHTML();
} else if ( result.data === 'export_pdf' ) {
this.exportTargetAsPDF();
} else if ( result.data === 'virtual_root' ) { } else if ( result.data === 'virtual_root' ) {
this.setVirtualRoot(); this.setVirtualRoot();
} else if ( result.data === 'bookmark_add' ) {
this.addBookmark();
} else if ( result.data === 'bookmark_remove' ) {
this.removeBookmark();
} }
}); });
@ -303,6 +316,25 @@ export class AppComponent implements OnInit {
window.open(dlUrl, '_blank'); window.open(dlUrl, '_blank');
} }
addBookmark() {
const bookmarks = this.session.get('user.preferences.bookmark_page_ids') || [];
if ( !bookmarks.includes(this.menuTarget.data.id) ) {
bookmarks.push(this.menuTarget.data.id);
}
this.session.set('user.preferences.bookmark_page_ids', bookmarks);
this.session.save().then(() => this.navService.requestSidebarRefresh({ quiet: true }));
}
removeBookmark() {
let bookmarks = this.session.get('user.preferences.bookmark_page_ids') || [];
bookmarks = bookmarks.filter(x => x !== this.menuTarget.data.id);
this.session.set('user.preferences.bookmark_page_ids', bookmarks);
this.session.save().then(() => this.navService.requestSidebarRefresh({ quiet: true }));
}
async onCreateClick($event: MouseEvent) { async onCreateClick($event: MouseEvent) {
const menuItems = [ const menuItems = [
{ {

View File

@ -1,5 +1,5 @@
<ion-list> <ion-list>
<ion-item *ngFor="let menuItem of menuItems; let i = index" button (click)="onSelect(menuItems[i].value)" [title]="menuItems[i].title"> <ion-item *ngFor="let menuItem of menuItems; let i = index" button (click)="onSelect(menuItems[i].value)" [title]="menuItems[i].title || ''">
<i slot="start" [ngClass]="menuItems[i].icon"></i> <i slot="start" [ngClass]="menuItems[i].icon"></i>
<ion-label>{{ menuItems[i].name }}</ion-label> <ion-label>{{ menuItems[i].name }}</ion-label>
</ion-item> </ion-item>

View File

@ -35,6 +35,7 @@ export class DatabaseService extends Dexie {
constructor( constructor(
) { ) {
super('NodedLocalDatabase'); super('NodedLocalDatabase');
this.createSchemata();
} }
public async getKeyValue(key: string): Promise<KeyValue> { public async getKeyValue(key: string): Promise<KeyValue> {