diff --git a/front/current/components/projects/list.component.ts b/front/current/components/projects/list.component.ts index bce9521b7a8c27831c5db2f9d939bf1f73095ebc..8ec69356ddb0ff9bae277795d041adea6162b9af 100644 --- a/front/current/components/projects/list.component.ts +++ b/front/current/components/projects/list.component.ts @@ -70,29 +70,39 @@ export class ProjectListComponent implements OnInit { self.documentSlots = self._restService.Collection(self._documentSlotService, []); self.documents = self._restService.Collection(self._documentService, []); - self.projects.fetch(() => { - let keys = []; + self.projects.fetch(self.fetchDocumentSlots.bind(self)); + }; - for (let project of self.projects.models) { - let key = project.data['id']; - if (keys.indexOf(key) == -1) - keys.push(key) - } + fetchDocumentSlots() { + let self = this; + let keys = []; - self.documentSlots - .setFilters({project_ids: keys}) - .fetch(() => { - let keys = []; + for (let project of self.projects.models) { + let key = project.data['id']; + if (keys.indexOf(key) == -1) + keys.push(key) + } - for (let document_slot of self.documentSlots.models) { - let key = document_slot.data['document_key']; - keys.push(key); - } + if (!keys.length) return; - self.documents - .setFilters({keys: keys}) - .fetch(); - }); - }); + self.documentSlots + .setFilters({project_ids: keys}) + .fetch(self.fetchDocuments.bind(self)); + }; + + fetchDocuments() { + let self = this; + let keys = []; + + for (let document_slot of self.documentSlots.models) { + let key = document_slot.data['document_key']; + keys.push(key); + } + + if (!keys.length) return; + + self.documents + .setFilters({ keys: keys }) + .fetch(); }; };