|
|
@ -1,29 +1,38 @@ |
|
|
import { Component } from '@angular/core'; |
|
|
import { Component } from '@angular/core'; |
|
|
import { Record } from './record/record'; |
|
|
import { Record } from './record/record'; |
|
|
import { MatDialog } from '@angular/material/dialog'; |
|
|
import { MatDialog } from '@angular/material/dialog'; |
|
|
import { RecordDialogComponent, RecordDialogResult } from './record-dialog/record-dialog.component'; |
|
|
import { |
|
|
|
|
|
RecordDialogComponent, |
|
|
|
|
|
RecordDialogResult, |
|
|
|
|
|
} from './record-dialog/record-dialog.component'; |
|
|
|
|
|
import { AngularFirestore, Query } from '@angular/fire/compat/firestore'; |
|
|
|
|
|
import { Observable } from 'rxjs'; |
|
|
|
|
|
|
|
|
@Component({ |
|
|
@Component({ |
|
|
selector: 'app-root', |
|
|
selector: 'app-root', |
|
|
templateUrl: './app.component.html', |
|
|
templateUrl: './app.component.html', |
|
|
styleUrls: ['./app.component.less'] |
|
|
styleUrls: ['./app.component.less'], |
|
|
}) |
|
|
}) |
|
|
export class AppComponent { |
|
|
export class AppComponent { |
|
|
title = 'PhoneBook'; |
|
|
title = 'PhoneBook'; |
|
|
phoneBook: Record[] = [ |
|
|
phoneBook = this.store |
|
|
{ |
|
|
.collection('phoneBook') |
|
|
name: 'Erdélyi Áron', |
|
|
.valueChanges({ idField: 'id' }) as Observable<Record[]>; |
|
|
phoneNumber: '+36707746229' |
|
|
searchValue = ''; |
|
|
|
|
|
phoneBookLocal : Record[] = []; |
|
|
|
|
|
phoneBookObserver = { |
|
|
|
|
|
next: (x: Record[]) => { |
|
|
|
|
|
this.phoneBookLocal = x; |
|
|
}, |
|
|
}, |
|
|
{ |
|
|
error: (err: String) => console.error('Observer got an error: ' + err), |
|
|
name: 'Erdélyi Zsombor', |
|
|
complete: () => console.log('Observer got a complete notification'), |
|
|
phoneNumber: '+36707746230' |
|
|
}; |
|
|
} |
|
|
|
|
|
]; |
|
|
|
|
|
|
|
|
|
|
|
constructor(private dialog: MatDialog) {} |
|
|
constructor(private dialog: MatDialog, private store: AngularFirestore) { |
|
|
|
|
|
this.phoneBook.subscribe(this.phoneBookObserver); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
newRecord() : void { |
|
|
newRecord(): void { |
|
|
const dialogRef = this.dialog.open(RecordDialogComponent, { |
|
|
const dialogRef = this.dialog.open(RecordDialogComponent, { |
|
|
width: '270px', |
|
|
width: '270px', |
|
|
data: { |
|
|
data: { |
|
|
@ -32,11 +41,11 @@ export class AppComponent { |
|
|
}); |
|
|
}); |
|
|
dialogRef |
|
|
dialogRef |
|
|
.afterClosed() |
|
|
.afterClosed() |
|
|
.subscribe((result: RecordDialogResult|undefined) => { |
|
|
.subscribe((result: RecordDialogResult | undefined) => { |
|
|
if (!result) { |
|
|
if (!result) { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
this.phoneBook.push(result.record); |
|
|
this.store.collection('phoneBook').add(result.record); |
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@ -46,21 +55,32 @@ export class AppComponent { |
|
|
data: { |
|
|
data: { |
|
|
record: { |
|
|
record: { |
|
|
name: record.name, |
|
|
name: record.name, |
|
|
phoneNumber: record.phoneNumber |
|
|
phoneNumber: record.phoneNumber, |
|
|
} |
|
|
}, |
|
|
}, |
|
|
}, |
|
|
}); |
|
|
}); |
|
|
dialogRef.afterClosed().subscribe((result: RecordDialogResult|undefined) => { |
|
|
dialogRef |
|
|
|
|
|
.afterClosed() |
|
|
|
|
|
.subscribe((result: RecordDialogResult | undefined) => { |
|
|
if (!result) { |
|
|
if (!result) { |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
const index = this.phoneBook.indexOf(record); |
|
|
this.store.collection('phoneBook').doc(record.id).update(result.record); |
|
|
this.phoneBook[index] = result.record; |
|
|
|
|
|
}); |
|
|
}); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
deleteRecord(record: Record): void { |
|
|
deleteRecord(record: Record): void { |
|
|
const index = this.phoneBook.indexOf(record); |
|
|
this.store.collection('phoneBook').doc(record.id).delete(); |
|
|
this.phoneBook.splice(index, 1); |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
search(event: Event): void { |
|
|
|
|
|
this.searchValue = (event.target as HTMLInputElement).value; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
filteredPhoneBook(): Record[]{ |
|
|
|
|
|
if(this.searchValue == "") |
|
|
|
|
|
return this.phoneBookLocal; |
|
|
|
|
|
|
|
|
|
|
|
return this.phoneBookLocal.filter(p => p.name.includes(this.searchValue) || p.phoneNumber.includes(this.searchValue)); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|