refactor: change projection and anchor navigation

This commit is contained in:
thomas
2024-05-11 07:59:40 +02:00
parent bf4509de86
commit 216d485c53
59 changed files with 31 additions and 31 deletions

View File

@@ -0,0 +1,23 @@
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { City } from '../model/city.model';
@Injectable({
providedIn: 'root',
})
export class CityStore {
private cities = new BehaviorSubject<City[]>([]);
cities$ = this.cities.asObservable();
addAll(cities: City[]) {
this.cities.next(cities);
}
addOne(student: City) {
this.cities.next([...this.cities.value, student]);
}
deleteOne(id: number) {
this.cities.next(this.cities.value.filter((s) => s.id !== id));
}
}

View File

@@ -0,0 +1,68 @@
import { Injectable } from '@angular/core';
import {
incrementalNumber,
rand,
randCity,
randCountry,
randFirstName,
randLastName,
randNumber,
randWord,
} from '@ngneat/falso';
import { map, timer } from 'rxjs';
import { City } from '../model/city.model';
import { Student } from '../model/student.model';
import { Teacher, subject } from '../model/teacher.model';
const factoryTeacher = incrementalNumber();
export const randTeacher = () => ({
id: factoryTeacher(),
firstName: randFirstName(),
lastName: randLastName(),
subject: rand(subject),
});
const teachers: Teacher[] = [
randTeacher(),
randTeacher(),
randTeacher(),
randTeacher(),
];
const factoryStudent = incrementalNumber();
export const randStudent = (): Student => ({
id: factoryStudent(),
firstName: randFirstName(),
lastName: randLastName(),
mainTeacher: teachers[randNumber({ max: teachers.length - 1 })],
school: randWord(),
});
const students: Student[] = [
randStudent(),
randStudent(),
randStudent(),
randStudent(),
randStudent(),
];
const factoryCity = incrementalNumber();
export const randomCity = (): City => ({
id: factoryCity(),
name: randCity(),
country: randCountry(),
});
const cities = [randomCity(), randomCity(), randomCity()];
@Injectable({
providedIn: 'root',
})
export class FakeHttpService {
fetchTeachers$ = timer(500).pipe(map(() => teachers));
fetchStudents$ = timer(500).pipe(map(() => students));
fetchCities$ = timer(500).pipe(map(() => cities));
}

View File

@@ -0,0 +1,23 @@
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { Student } from '../model/student.model';
@Injectable({
providedIn: 'root',
})
export class StudentStore {
private students = new BehaviorSubject<Student[]>([]);
students$ = this.students.asObservable();
addAll(students: Student[]) {
this.students.next(students);
}
addOne(student: Student) {
this.students.next([...this.students.value, student]);
}
deleteOne(id: number) {
this.students.next(this.students.value.filter((s) => s.id !== id));
}
}

View File

@@ -0,0 +1,23 @@
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { Teacher } from '../model/teacher.model';
@Injectable({
providedIn: 'root',
})
export class TeacherStore {
private teachers = new BehaviorSubject<Teacher[]>([]);
teachers$ = this.teachers.asObservable();
addAll(teachers: Teacher[]) {
this.teachers.next(teachers);
}
addOne(teacher: Teacher) {
this.teachers.next([...this.teachers.value, teacher]);
}
deleteOne(id: number) {
this.teachers.next(this.teachers.value.filter((t) => t.id !== id));
}
}