Merge pull request #5146 from FinnStutzenstein/fixBaserepoTooEarlyUpdates
Fixed too early single-model updates in the BaseRepository
This commit is contained in:
commit
876dd1f7d6
@ -109,6 +109,16 @@ export class UpdateSlot {
|
||||
return this.deletedModels;
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns all changed and deleted model ids in one array. If an id was
|
||||
* changed and deleted, it will be there twice! But this should not be the case.
|
||||
*/
|
||||
public getAllModelsIdsForCollection(collection: string): number[] {
|
||||
return this.getDeletedModelIdsForCollection(collection).concat(
|
||||
this.getChangedModelIdsForCollection(collection)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Compares this object to another update slot.
|
||||
*/
|
||||
@ -232,7 +242,7 @@ export class DataStoreUpdateManagerService {
|
||||
|
||||
// Phase 2: updating all repositories
|
||||
repositories.forEach(repo => {
|
||||
repo.commitUpdate();
|
||||
repo.commitUpdate(slot.getAllModelsIdsForCollection(repo.collectionString));
|
||||
});
|
||||
|
||||
slot.DS.triggerModifiedObservable();
|
||||
|
@ -172,7 +172,6 @@ export abstract class BaseRepository<V extends BaseViewModel & T, M extends Base
|
||||
public deleteModels(ids: number[]): void {
|
||||
ids.forEach(id => {
|
||||
delete this.viewModelStore[id];
|
||||
this.updateViewModelObservable(id);
|
||||
});
|
||||
}
|
||||
|
||||
@ -185,7 +184,6 @@ export abstract class BaseRepository<V extends BaseViewModel & T, M extends Base
|
||||
public changedModels(ids: number[]): void {
|
||||
ids.forEach(id => {
|
||||
this.viewModelStore[id] = this.createViewModelWithTitles(this.DS.get(this.collectionString, id));
|
||||
this.updateViewModelObservable(id);
|
||||
});
|
||||
}
|
||||
|
||||
@ -282,7 +280,7 @@ export abstract class BaseRepository<V extends BaseViewModel & T, M extends Base
|
||||
*/
|
||||
public setSortFunction(fn: (a: V, b: V) => number): void {
|
||||
this.viewModelSortFn = fn;
|
||||
this.commitUpdate();
|
||||
this.commitUpdate(Object.keys(this.viewModelSubjects).map(x => +x));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -356,7 +354,10 @@ export abstract class BaseRepository<V extends BaseViewModel & T, M extends Base
|
||||
/**
|
||||
* update the observable of the list. Also updates the sorting of the view model list.
|
||||
*/
|
||||
public commitUpdate(): void {
|
||||
public commitUpdate(modelIds: number[]): void {
|
||||
this.unsafeViewModelListSubject.next(this.getViewModelList());
|
||||
modelIds.forEach(id => {
|
||||
this.updateViewModelObservable(id);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
@ -16,7 +16,7 @@ import { DataStoreService } from '../../core-services/data-store.service';
|
||||
|
||||
const WorkflowRelations: RelationDefinition[] = [
|
||||
{
|
||||
type: 'M2M',
|
||||
type: 'O2M',
|
||||
ownIdKey: 'states_id',
|
||||
ownKey: 'states',
|
||||
foreignViewModel: ViewState
|
||||
|
Loading…
Reference in New Issue
Block a user