From 1a8c940c7ee17c4709073dc551805c01fa950fa0 Mon Sep 17 00:00:00 2001 From: Jason Wall Date: Mon, 17 Aug 2020 13:51:05 -0400 Subject: [PATCH] add note admin page. cleaned up unused code changed icons fixed a couple bugs in the page/notes edit modals --- app/db/src/app/app-routing.module.ts | 6 +++ app/db/src/app/app.component.html | 12 +++-- app/db/src/app/app.module.ts | 3 ++ .../edit-modal/note-edit-modal.component.scss | 1 + .../components/note/note-card.component.html | 52 ++++++++++++------- .../components/note/note-card.component.ts | 20 ++++++- .../page-edit-modal.component.scss | 1 + .../settings/settings.component.html | 4 +- app/db/src/app/constants.ts | 6 --- .../pages/notes-admin/notes-admin.page.html | 16 ++++++ .../pages/notes-admin/notes-admin.page.scss | 20 +++++++ .../app/pages/notes-admin/notes-admin.page.ts | 33 ++++++++++++ .../saved-pages-admin.page.html | 2 +- .../app/services/app-state-initial-state.ts | 4 +- app/db/src/app/services/app-state-reducer.ts | 28 ++++++++++ app/db/src/app/services/app.service.ts | 1 + 16 files changed, 174 insertions(+), 35 deletions(-) create mode 100644 app/db/src/app/pages/notes-admin/notes-admin.page.html create mode 100644 app/db/src/app/pages/notes-admin/notes-admin.page.scss create mode 100644 app/db/src/app/pages/notes-admin/notes-admin.page.ts diff --git a/app/db/src/app/app-routing.module.ts b/app/db/src/app/app-routing.module.ts index baded72a..51501b2f 100644 --- a/app/db/src/app/app-routing.module.ts +++ b/app/db/src/app/app-routing.module.ts @@ -2,6 +2,7 @@ import { NgModule } from '@angular/core'; import { Routes, RouterModule } from '@angular/router'; import { SearchPage } from './pages/search/search.page'; import { SavedPagesAdminPage } from './pages/saved-pages-admin/saved-pages-admin.page'; +import { NotesAdminPage } from './pages/notes-admin/notes-admin.page'; const routes: Routes = [ { @@ -29,6 +30,11 @@ const routes: Routes = [ pathMatch: 'prefix', component: SavedPagesAdminPage, }, + { + path: 'notes/admin', + pathMatch: 'prefix', + component: NotesAdminPage, + }, ]; @NgModule({ diff --git a/app/db/src/app/app.component.html b/app/db/src/app/app.component.html index e312ec0e..6d2fbf0e 100644 --- a/app/db/src/app/app.component.html +++ b/app/db/src/app/app.component.html @@ -13,9 +13,16 @@ search Search + library_books Page Adminall_inbox Manage Saved + Pages + + library_books Manage Notes + helpHelp @@ -27,8 +34,7 @@ *ngFor="let p of savedPages$ | async" mat-list-item [routerLink]="['page', p.id]" - >library_books - {{ p.title }}inbox {{ p.title }} diff --git a/app/db/src/app/app.module.ts b/app/db/src/app/app.module.ts index 727af822..0f319320 100644 --- a/app/db/src/app/app.module.ts +++ b/app/db/src/app/app.module.ts @@ -53,6 +53,8 @@ import { ClipboardModule } from '@angular/cdk/clipboard'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; +import { NotesAdminPage } from './pages/notes-admin/notes-admin.page'; + import { SavedPagesAdminPage } from './pages/saved-pages-admin/saved-pages-admin.page'; import { SavedPageCardComponent } from './components/saved-page-card/saved-page-card.component'; @@ -77,6 +79,7 @@ import { AddToPageModalComponent } from './components/add-to-page-modal/add-to-p @NgModule({ declarations: [ AppComponent, + NotesAdminPage, SavedPagesAdminPage, SavedPageCardComponent, HelpModalComponent, diff --git a/app/db/src/app/components/note/edit-modal/note-edit-modal.component.scss b/app/db/src/app/components/note/edit-modal/note-edit-modal.component.scss index 37e015ef..93298ffc 100644 --- a/app/db/src/app/components/note/edit-modal/note-edit-modal.component.scss +++ b/app/db/src/app/components/note/edit-modal/note-edit-modal.component.scss @@ -9,6 +9,7 @@ width: 100%; padding-left: 1rem; font-size: 1.5rem; + overflow: hidden; } .mat-form-field { diff --git a/app/db/src/app/components/note/note-card.component.html b/app/db/src/app/components/note/note-card.component.html index 92b06fe8..f2cb7548 100644 --- a/app/db/src/app/components/note/note-card.component.html +++ b/app/db/src/app/components/note/note-card.component.html @@ -3,14 +3,17 @@ icon$ | async }} {{ cardItem.data.title }} - - cancel -
{{ @@ -24,15 +27,23 @@
- + + + + + {{ ref.toString() }}
- + - - + + + + +
diff --git a/app/db/src/app/components/note/note-card.component.ts b/app/db/src/app/components/note/note-card.component.ts index b9d2e6bd..4dfbaae0 100644 --- a/app/db/src/app/components/note/note-card.component.ts +++ b/app/db/src/app/components/note/note-card.component.ts @@ -1,10 +1,11 @@ -import { Component, ViewChild, ElementRef, OnInit } from '@angular/core'; +import { Component, ViewChild, ElementRef, OnInit, Input } from '@angular/core'; import { MatDialog } from '@angular/material/dialog'; import { NoteEditModalComponent } from './edit-modal/note-edit-modal.component'; import { CardComponent } from '../../components/card.component'; import { AppService } from '../../services/app.service'; import { BibleReference } from '../../common/bible-reference'; import { NoteItem } from '../../models/note-state'; +import { OkCancelModalComponent, OkCancelResult } from '../ok-cancel-modal/ok-cancel-modal.component'; @Component({ selector: 'app-note-card', @@ -14,6 +15,9 @@ import { NoteItem } from '../../models/note-state'; export class NoteCardComponent extends CardComponent { @ViewChild('note') noteElement: ElementRef; + @Input() + inSearch = true; + constructor(protected elementRef: ElementRef, protected appService: AppService, public dialog: MatDialog) { super(elementRef, dialog, appService); @@ -41,6 +45,18 @@ export class NoteCardComponent extends CardComponent { } delete() { - this.appService.deleteNote(this.cardItem.data as NoteItem); + this.dialog + .open(OkCancelModalComponent, { + data: { + title: 'Delete Note?', + content: `Do you want to permanently delete the note '${(this.cardItem.data as NoteItem).title}'?`, + }, + }) + .afterClosed() + .subscribe((ds: OkCancelResult) => { + if (ds.ok) { + this.appService.deleteNote(this.cardItem.data as NoteItem); + } + }); } } diff --git a/app/db/src/app/components/page-edit-modal/page-edit-modal.component.scss b/app/db/src/app/components/page-edit-modal/page-edit-modal.component.scss index 4250d2f2..16a44874 100644 --- a/app/db/src/app/components/page-edit-modal/page-edit-modal.component.scss +++ b/app/db/src/app/components/page-edit-modal/page-edit-modal.component.scss @@ -9,6 +9,7 @@ width: 100%; padding-left: 1rem; font-size: 1.5rem; + overflow: hidden; } .mat-form-field { diff --git a/app/db/src/app/components/settings/settings.component.html b/app/db/src/app/components/settings/settings.component.html index b65b1ac6..636e5971 100644 --- a/app/db/src/app/components/settings/settings.component.html +++ b/app/db/src/app/components/settings/settings.component.html @@ -1,7 +1,7 @@ Page Settings - save + create Save Results as New Page @@ -15,7 +15,7 @@ - create + note_add Create a New Note diff --git a/app/db/src/app/constants.ts b/app/db/src/app/constants.ts index 19328708..97357841 100644 --- a/app/db/src/app/constants.ts +++ b/app/db/src/app/constants.ts @@ -1,9 +1,3 @@ -export const CardIcons = { - Words: 'font_download', - Passage: 'menu_book', - Strongs: 'article', -}; - export const CardFonts = [ 'Merriweather', 'PT Sans', diff --git a/app/db/src/app/pages/notes-admin/notes-admin.page.html b/app/db/src/app/pages/notes-admin/notes-admin.page.html new file mode 100644 index 00000000..020e64ce --- /dev/null +++ b/app/db/src/app/pages/notes-admin/notes-admin.page.html @@ -0,0 +1,16 @@ + + + Manage Your Notes + +
+ + + + + + +   + +
diff --git a/app/db/src/app/pages/notes-admin/notes-admin.page.scss b/app/db/src/app/pages/notes-admin/notes-admin.page.scss new file mode 100644 index 00000000..e161d074 --- /dev/null +++ b/app/db/src/app/pages/notes-admin/notes-admin.page.scss @@ -0,0 +1,20 @@ +mat-card { + max-width: 800px; + margin: 1.5rem auto; + padding: 0; +} + +.page-title { + width: 100%; + position: relative; + margin-left: 0.8rem; + margin-right: 0.8rem; +} + +.page-content { + padding: 0 1rem 0 1rem; + overflow-y: scroll; + height: calc(100vh - 66px); + width: calc(100% - 15px); + margin-top: 2px; +} diff --git a/app/db/src/app/pages/notes-admin/notes-admin.page.ts b/app/db/src/app/pages/notes-admin/notes-admin.page.ts new file mode 100644 index 00000000..3a54ae94 --- /dev/null +++ b/app/db/src/app/pages/notes-admin/notes-admin.page.ts @@ -0,0 +1,33 @@ +import { Component, OnInit } from '@angular/core'; +import { AppService } from '../../services/app.service'; +import { NavService } from '../../services/nav.service'; +import { SubscriberBase } from '../../common/subscriber-base'; +import { CardItem, CardType } from 'src/app/models/card-state'; + +@Component({ + selector: 'app-notes-admin', + templateUrl: './notes-admin.page.html', + styleUrls: ['./notes-admin.page.scss'], +}) +export class NotesAdminPage extends SubscriberBase implements OnInit { + notes$ = this.appService.select((state) => + state.notes === null + ? null + : state.notes.value.map( + (o) => + ({ + qry: o.id, + data: o, + type: CardType.Note, + } as CardItem) + ) + ); + + constructor(public navService: NavService, private appService: AppService) { + super(); + } + + ngOnInit() { + this.navService.closeNav(); // close the nav immediately. + } +} diff --git a/app/db/src/app/pages/saved-pages-admin/saved-pages-admin.page.html b/app/db/src/app/pages/saved-pages-admin/saved-pages-admin.page.html index 236e957f..7489aa0d 100644 --- a/app/db/src/app/pages/saved-pages-admin/saved-pages-admin.page.html +++ b/app/db/src/app/pages/saved-pages-admin/saved-pages-admin.page.html @@ -2,7 +2,7 @@ - Saved Pages Admin + Manage Your Saved Pages
diff --git a/app/db/src/app/services/app-state-initial-state.ts b/app/db/src/app/services/app-state-initial-state.ts index 891ced5c..c87970c2 100644 --- a/app/db/src/app/services/app-state-initial-state.ts +++ b/app/db/src/app/services/app-state-initial-state.ts @@ -39,7 +39,7 @@ export const initialState: AppState = { words: 'font_download', passage: 'menu_book', strongs: 'speaker_notes', - note: 'text_snippet', - savedPage: 'library_books', + note: 'note', + savedPage: 'inbox', }, }; diff --git a/app/db/src/app/services/app-state-reducer.ts b/app/db/src/app/services/app-state-reducer.ts index 631373ee..5a73f810 100644 --- a/app/db/src/app/services/app-state-reducer.ts +++ b/app/db/src/app/services/app-state-reducer.ts @@ -279,8 +279,31 @@ export function reducer(state: AppState, action: AppAction): AppState { }; } case 'REMOVE_CARD': { + // potentially remove card from a saved page. + const currentSavedPage = + state.currentSavedPage !== null + ? { + ...state.currentSavedPage, + queries: state.currentSavedPage.queries.filter((q) => q !== action.card), + } + : null; + + const savedPages = + state.currentSavedPage !== null + ? new Storable( + state.savedPages.value.map((o) => { + if (o === state.currentSavedPage) { + return currentSavedPage; + } + return o; + }) + ) + : state.savedPages; + return { ...state, + currentSavedPage, + savedPages, cards: [...state.cards.filter((c) => c !== action.card)], }; } @@ -298,6 +321,9 @@ export function reducer(state: AppState, action: AppAction): AppState { user: action.user, }; } + + //#region Notes + case 'FIND_NOTES': { const notes = state.notes.value .filter((o) => o.title.search(action.qry) > -1) @@ -442,5 +468,7 @@ export function reducer(state: AppState, action: AppAction): AppState { savedPages, }; } + + //#endregion } } diff --git a/app/db/src/app/services/app.service.ts b/app/db/src/app/services/app.service.ts index f7c243c3..f0fbda63 100644 --- a/app/db/src/app/services/app.service.ts +++ b/app/db/src/app/services/app.service.ts @@ -57,6 +57,7 @@ export class AppService extends createStateService(reducer, initialState) { card, }); } + moveCard(card: CardItem, direction: MoveDirection) { this.dispatch({ type: 'MOVE_CARD',