From daaf404756e99a6a9b02b20096b9a93047f89773 Mon Sep 17 00:00:00 2001 From: Sean Date: Tue, 6 Oct 2020 16:11:17 +0200 Subject: [PATCH] Fix hidden motions in agenda list Fixes an error where hidden motions in the agenda list would throw an error --- client/src/app/core/core-services/projector.service.ts | 9 ++++++--- .../base-is-agenda-item-content-object-repository.ts | 8 ++++++-- .../repositories/motions/motion-repository.service.ts | 10 +++++++++- .../list-view-table/list-view-table.component.ts | 3 ++- 4 files changed, 23 insertions(+), 7 deletions(-) diff --git a/client/src/app/core/core-services/projector.service.ts b/client/src/app/core/core-services/projector.service.ts index df5c34604..73d7979c6 100644 --- a/client/src/app/core/core-services/projector.service.ts +++ b/client/src/app/core/core-services/projector.service.ts @@ -82,9 +82,12 @@ export class ProjectorService { */ public isProjected(obj: Projectable | ProjectorElementBuildDeskriptor | IdentifiableProjectorElement): boolean { const element = this.getProjectorElement(obj); - return this.DS.getAll('core/projector').some(projector => { - return projector.isElementShown(element); - }); + if (element.getIdentifiers) { + return this.DS.getAll('core/projector').some(projector => { + return projector.isElementShown(element); + }); + } + return false; } /** diff --git a/client/src/app/core/repositories/base-is-agenda-item-content-object-repository.ts b/client/src/app/core/repositories/base-is-agenda-item-content-object-repository.ts index 8572896e3..56b43a217 100644 --- a/client/src/app/core/repositories/base-is-agenda-item-content-object-repository.ts +++ b/client/src/app/core/repositories/base-is-agenda-item-content-object-repository.ts @@ -81,8 +81,12 @@ export abstract class BaseIsAgendaItemContentObjectRepository< */ public getAgendaListTitle(titleInformation: T): AgendaListTitle { // Return the agenda title with the model's verbose name appended - const numberPrefix = titleInformation.agenda_item_number() ? `${titleInformation.agenda_item_number()} · ` : ''; - const title = numberPrefix + this.getTitle(titleInformation) + ' (' + this.getVerboseName() + ')'; + let numberPrefix = ''; + if (titleInformation.agenda_item_number && titleInformation.agenda_item_number()) { + numberPrefix = `${titleInformation.agenda_item_number()} · `; + } + + const title = `${numberPrefix}${this.getTitle(titleInformation)} (${this.getVerboseName()})`; return { title }; } diff --git a/client/src/app/core/repositories/motions/motion-repository.service.ts b/client/src/app/core/repositories/motions/motion-repository.service.ts index 209e8d189..610785404 100644 --- a/client/src/app/core/repositories/motions/motion-repository.service.ts +++ b/client/src/app/core/repositories/motions/motion-repository.service.ts @@ -271,7 +271,15 @@ export class MotionRepositoryService extends BaseIsAgendaItemAndListOfSpeakersCo }; public getAgendaListTitle = (titleInformation: MotionTitleInformation) => { - const numberPrefix = titleInformation.agenda_item_number() ? `${titleInformation.agenda_item_number()} · ` : ''; + let numberPrefix = ''; + /** + * after reloading, titleInformation.agenda_item_number is undefined. It gets defined after + * an autoupdate + */ + if (titleInformation.agenda_item_number && titleInformation.agenda_item_number()) { + numberPrefix = `${titleInformation.agenda_item_number()} · `; + } + // Append the verbose name only, if not the special format 'Motion ' is used. let title; if (titleInformation.identifier) { diff --git a/client/src/app/shared/components/list-view-table/list-view-table.component.ts b/client/src/app/shared/components/list-view-table/list-view-table.component.ts index 8bb07975a..a1b6df887 100644 --- a/client/src/app/shared/components/list-view-table/list-view-table.component.ts +++ b/client/src/app/shared/components/list-view-table/list-view-table.component.ts @@ -458,7 +458,8 @@ export class ListViewTableComponent) => { - if (this.allowProjector && this.projectorService.isProjected(this.getProjectable(context.$implicit as V))) { + const model = context.$implicit as V; + if (this.allowProjector && this.projectorService.isProjected(this.getProjectable(model))) { return 'projected'; } };