district-politics/projects/speech-statistics/src/app/auth/administration/factions/factions.component.ts

59 lines
1.6 KiB
TypeScript
Raw Normal View History

2021-09-21 18:31:45 +02:00
import {Component, OnInit} from '@angular/core';
2021-09-18 20:16:45 +02:00
import {Faction} from './faction';
2021-09-21 19:09:43 +02:00
import {AngularFireDatabase, SnapshotAction} from '@angular/fire/compat/database';
2021-09-21 18:31:45 +02:00
import {Observable} from 'rxjs';
import {map} from 'rxjs/operators';
2021-09-18 20:16:45 +02:00
@Component({
selector: 'app-factions',
templateUrl: './factions.component.html',
styleUrls: ['./factions.component.scss']
})
export class FactionsComponent implements OnInit {
2021-09-21 19:09:43 +02:00
public factions: Observable<SnapshotAction<Faction>[]> = new Observable<SnapshotAction<Faction>[]>();
2021-09-18 20:16:45 +02:00
2021-09-21 18:31:45 +02:00
constructor(private database: AngularFireDatabase) { }
2021-09-18 20:16:45 +02:00
ngOnInit(): void {
2021-09-21 18:31:45 +02:00
const factionRef = this.database.list<Faction>('factions');
2021-09-21 19:09:43 +02:00
this.factions = factionRef.snapshotChanges().pipe(
2021-09-21 18:31:45 +02:00
map(results => {
return results.sort(FactionsComponent.sortDescending)
})
);
2021-09-18 20:16:45 +02:00
}
2021-09-21 13:11:23 +02:00
2021-09-21 19:09:43 +02:00
public addFaction(name: string, size: string): void {
const factionRef = this.database.list<Faction>('factions');
factionRef.push({
name: name,
size: +size
})
}
public deleteFaction(key: string|null): void {
const factionRef = this.database.list<Faction>('factions');
if (key != null) {
factionRef.remove(key);
}
}
private static sortDescending(factionA: SnapshotAction<Faction>, factionB: SnapshotAction<Faction>): number {
const factionAValue = factionA.payload.val();
const factionBValue = factionB.payload.val();
if (factionAValue == null || factionBValue == null) {
return 0;
}
if (factionAValue.size < factionBValue.size) {
2021-09-21 13:11:23 +02:00
return 1;
}
2021-09-21 19:09:43 +02:00
if (factionAValue.size > factionBValue.size) {
2021-09-21 13:11:23 +02:00
return -1;
}
2021-09-21 19:09:43 +02:00
2021-09-21 13:11:23 +02:00
return 0;
}
2021-09-18 20:16:45 +02:00
}