diff --git a/projects/common/models/page.ts b/projects/common/models/page.ts index df8fcda487911a3c9cc9a4709684d1d8d8e874f9..13071c28480deb654836ba0f48a2d6141598751d 100644 --- a/projects/common/models/page.ts +++ b/projects/common/models/page.ts @@ -1,6 +1,6 @@ import { Section } from 'common/models/section'; import { IDManager } from 'common/util/id-manager'; -import { UIElement } from 'common/models/elements/element'; +import { SchemerData, UIElement } from 'common/models/elements/element'; export class Page { [index: string]: unknown; @@ -27,4 +27,8 @@ export class Page { getAllElements(elementType?: string): UIElement[] { return this.sections.map(section => section.getAllElements(elementType)).flat(); } + + getSchemerData(dropLists: UIElement[]): SchemerData[] { + return this.sections.map(section => section.getSchemerData(dropLists)).flat(); + } } diff --git a/projects/common/models/section.ts b/projects/common/models/section.ts index c7612b91f712c575e6ed55c12b20465f1e0f1796..b0e3b9febb2770758fc5526a6626cdd8f9d2c6d3 100644 --- a/projects/common/models/section.ts +++ b/projects/common/models/section.ts @@ -1,6 +1,12 @@ import { Type } from '@angular/core'; import { IDManager } from 'common/util/id-manager'; -import { PositionedUIElement, UIElement, UIElementValue } from 'common/models/elements/element'; +import { + InputElement, + PositionedUIElement, + SchemerData, + UIElement, + UIElementValue +} from 'common/models/elements/element'; import { ButtonElement } from 'common/models/elements/button/button'; import { TextElement } from 'common/models/elements/text/text'; import { TextFieldElement } from 'common/models/elements/input-elements/text-field'; @@ -97,4 +103,13 @@ export class Section { } return allElements; } + + getSchemerData(dropLists: UIElement[]): SchemerData[] { + return this.getAllElements() + .filter(element => element.hasSchemerData()) + .map(element => + (element.type === 'drop-list' || element.type === 'drop-list-simple') ? + (element as InputElement).getSchemerData(dropLists) : + (element as InputElement | TextElement).getSchemerData()); + } } diff --git a/projects/common/models/unit.ts b/projects/common/models/unit.ts index f23bcd99d4f7b2e9d2423a4e916a8769c4e6a765..b02b2c1db835262f8a825935fe9e889913c731be 100644 --- a/projects/common/models/unit.ts +++ b/projects/common/models/unit.ts @@ -1,7 +1,7 @@ import packageJSON from '../../../package.json'; import { Page } from 'common/models/page'; import { IDManager } from 'common/util/id-manager'; -import { UIElement } from 'common/models/elements/element'; +import { SchemerData, UIElement } from 'common/models/elements/element'; export class Unit { type = 'aspect-unit-definition'; @@ -16,4 +16,12 @@ export class Unit { getAllElements(elementType?: string): UIElement[] { return this.pages.map(page => page.getAllElements(elementType)).flat(); } + + getSchemerData(): SchemerData[] { + const dropLists = [ + ...this.getAllElements('drop-list'), + ...this.getAllElements('drop-list-simple') + ]; + return this.pages.map(page => page.getSchemerData(dropLists)).flat(); + } }