From 47ee418448e3d4d102d4917b1e325ec375e61a40 Mon Sep 17 00:00:00 2001 From: jojohoch <joachim.hoch@iqb.hu-berlin.de> Date: Thu, 2 Jun 2022 13:53:47 +0200 Subject: [PATCH] Fix default for all classes (elements, section, page) - problem with nullish values --- projects/common/models/elements/button/button.ts | 2 +- .../cloze-child-elements/text-field-simple.ts | 16 +++++++++------- .../cloze/cloze-child-elements/toggle-button.ts | 2 +- projects/common/models/elements/element.ts | 10 +++++----- .../models/elements/input-elements/slider.ts | 4 ++-- .../elements/input-elements/spell-correct.ts | 4 +++- .../models/elements/input-elements/text-area.ts | 4 +++- .../models/elements/input-elements/text-field.ts | 4 +++- .../models/elements/media-elements/audio.ts | 2 +- .../models/elements/media-elements/image.ts | 2 +- projects/common/models/elements/text/text.ts | 1 - projects/common/models/page.ts | 2 +- projects/common/models/section.ts | 11 +++++------ .../modules/logging/services/log.service.ts | 2 +- 14 files changed, 36 insertions(+), 30 deletions(-) diff --git a/projects/common/models/elements/button/button.ts b/projects/common/models/elements/button/button.ts index 271df54bc..595b107c5 100644 --- a/projects/common/models/elements/button/button.ts +++ b/projects/common/models/elements/button/button.ts @@ -17,7 +17,7 @@ export class ButtonElement extends UIElement implements PositionedUIElement { constructor(element: Partial<ButtonElement>, ...args: unknown[]) { super(element, ...args); - if (element.label) this.label = element.label; + if (element.label !== undefined) this.label = element.label; if (element.imageSrc) this.imageSrc = element.imageSrc; if (element.asLink) this.asLink = element.asLink; if (element.action) this.action = element.action; diff --git a/projects/common/models/elements/compound-elements/cloze/cloze-child-elements/text-field-simple.ts b/projects/common/models/elements/compound-elements/cloze/cloze-child-elements/text-field-simple.ts index 672d4cca1..8f16d4557 100644 --- a/projects/common/models/elements/compound-elements/cloze/cloze-child-elements/text-field-simple.ts +++ b/projects/common/models/elements/compound-elements/cloze/cloze-child-elements/text-field-simple.ts @@ -7,11 +7,11 @@ import { } from 'common/components/compound-elements/cloze/cloze-child-elements/text-field-simple.component'; export class TextFieldSimpleElement extends InputElement { - minLength: number | undefined; + minLength: number | null = null; minLengthWarnMessage: string = 'Eingabe zu kurz'; - maxLength: number | undefined; + maxLength: number | null = null; maxLengthWarnMessage: string = 'Eingabe zu lang'; - pattern: string | undefined; + pattern: string | null = null; patternWarnMessage: string = 'Eingabe entspricht nicht der Vorgabe'; inputAssistancePreset: InputAssistancePreset = null; inputAssistancePosition: 'floating' | 'right' = 'floating'; @@ -26,14 +26,16 @@ export class TextFieldSimpleElement extends InputElement { constructor(element: Partial<TextFieldSimpleElement>, ...args: unknown[]) { super({ width: 150, height: 30, ...element }, ...args); if (element.minLength) this.minLength = element.minLength; - if (element.minLengthWarnMessage) this.minLengthWarnMessage = element.minLengthWarnMessage; + if (element.minLengthWarnMessage !== undefined) this.minLengthWarnMessage = element.minLengthWarnMessage; if (element.maxLength) this.maxLength = element.maxLength; - if (element.maxLengthWarnMessage) this.maxLengthWarnMessage = element.maxLengthWarnMessage; + if (element.maxLengthWarnMessage !== undefined) this.maxLengthWarnMessage = element.maxLengthWarnMessage; if (element.pattern) this.pattern = element.pattern; - if (element.patternWarnMessage) this.patternWarnMessage = element.patternWarnMessage; + if (element.patternWarnMessage !== undefined) this.patternWarnMessage = element.patternWarnMessage; if (element.inputAssistancePreset) this.inputAssistancePreset = element.inputAssistancePreset; if (element.inputAssistancePosition) this.inputAssistancePosition = element.inputAssistancePosition; - if (element.restrictedToInputAssistanceChars) this.restrictedToInputAssistanceChars = element.restrictedToInputAssistanceChars; + if (element.restrictedToInputAssistanceChars !== undefined) { + this.restrictedToInputAssistanceChars = element.restrictedToInputAssistanceChars; + } if (element.showSoftwareKeyboard) this.showSoftwareKeyboard = element.showSoftwareKeyboard; if (element.softwareKeyboardShowFrench) this.softwareKeyboardShowFrench = element.softwareKeyboardShowFrench; if (element.clearable) this.clearable = element.clearable; diff --git a/projects/common/models/elements/compound-elements/cloze/cloze-child-elements/toggle-button.ts b/projects/common/models/elements/compound-elements/cloze/cloze-child-elements/toggle-button.ts index 155297b27..73ecc5c91 100644 --- a/projects/common/models/elements/compound-elements/cloze/cloze-child-elements/toggle-button.ts +++ b/projects/common/models/elements/compound-elements/cloze/cloze-child-elements/toggle-button.ts @@ -21,7 +21,7 @@ export class ToggleButtonElement extends InputElement { if (element.richTextOptions) this.richTextOptions = element.richTextOptions; if (element.strikeOtherOptions) this.strikeOtherOptions = element.strikeOtherOptions; if (element.verticalOrientation) this.verticalOrientation = element.verticalOrientation; - if (element.dynamicWidth !== undefined) this.dynamicWidth = element.dynamicWidth; // TODO klappt das? + if (element.dynamicWidth !== undefined) this.dynamicWidth = element.dynamicWidth; this.styling = { ...ElementFactory.initStylingProps({ lineHeight: 135, diff --git a/projects/common/models/elements/element.ts b/projects/common/models/elements/element.ts index f33d0b191..a8ef1c4f4 100644 --- a/projects/common/models/elements/element.ts +++ b/projects/common/models/elements/element.ts @@ -46,8 +46,8 @@ export abstract class UIElement { throw Error('No ID for element!'); } - if (element.width) this.width = element.width; - if (element.height) this.height = element.height; + if (element.width !== undefined) this.width = element.width; + if (element.height !== undefined) this.height = element.height; } setProperty(property: string, value: UIElementValue): void { @@ -84,10 +84,10 @@ export abstract class InputElement extends UIElement { protected constructor(element: Partial<InputElement>, ...args: unknown[]) { super(element, ...args); - if (element.label) this.label = element.label; - if (element.value) this.value = element.value; + if (element.label !== undefined) this.label = element.label; + if (element.value !== undefined) this.value = element.value; if (element.required) this.required = element.required; - if (element.requiredWarnMessage) this.requiredWarnMessage = element.requiredWarnMessage; + if (element.requiredWarnMessage !== undefined) this.requiredWarnMessage = element.requiredWarnMessage; if (element.readOnly) this.readOnly = element.readOnly; } } diff --git a/projects/common/models/elements/input-elements/slider.ts b/projects/common/models/elements/input-elements/slider.ts index 99a58c2dc..f71a9cfb1 100644 --- a/projects/common/models/elements/input-elements/slider.ts +++ b/projects/common/models/elements/input-elements/slider.ts @@ -18,8 +18,8 @@ export class SliderElement extends InputElement implements PositionedUIElement { constructor(element: Partial<SliderElement>, ...args: unknown[]) { super(element, ...args); if (element.minValue) this.minValue = element.minValue; - if (element.maxValue) this.maxValue = element.maxValue; - if (element.showValues) this.showValues = element.showValues; + if (element.maxValue !== undefined) this.maxValue = element.maxValue; + if (element.showValues !== undefined) this.showValues = element.showValues; if (element.barStyle) this.barStyle = element.barStyle; if (element.thumbLabel) this.thumbLabel = element.thumbLabel; this.position = ElementFactory.initPositionProps(element.position); diff --git a/projects/common/models/elements/input-elements/spell-correct.ts b/projects/common/models/elements/input-elements/spell-correct.ts index 7ab614fe5..bbaa278a7 100644 --- a/projects/common/models/elements/input-elements/spell-correct.ts +++ b/projects/common/models/elements/input-elements/spell-correct.ts @@ -23,7 +23,9 @@ export class SpellCorrectElement extends InputElement implements PositionedUIEle super({ width: 230, height: 80, ...element }, ...args); if (element.inputAssistancePreset) this.inputAssistancePreset = element.inputAssistancePreset; if (element.inputAssistancePosition) this.inputAssistancePosition = element.inputAssistancePosition; - if (element.restrictedToInputAssistanceChars) this.restrictedToInputAssistanceChars = element.restrictedToInputAssistanceChars; + if (element.restrictedToInputAssistanceChars !== undefined) { + this.restrictedToInputAssistanceChars = element.restrictedToInputAssistanceChars; + } if (element.showSoftwareKeyboard) this.showSoftwareKeyboard = element.showSoftwareKeyboard; if (element.softwareKeyboardShowFrench) this.softwareKeyboardShowFrench = element.softwareKeyboardShowFrench; this.position = ElementFactory.initPositionProps(element.position); diff --git a/projects/common/models/elements/input-elements/text-area.ts b/projects/common/models/elements/input-elements/text-area.ts index c46037632..df2645318 100644 --- a/projects/common/models/elements/input-elements/text-area.ts +++ b/projects/common/models/elements/input-elements/text-area.ts @@ -31,7 +31,9 @@ export class TextAreaElement extends InputElement implements PositionedUIElement if (element.rowCount) this.rowCount = element.rowCount; if (element.inputAssistancePreset) this.inputAssistancePreset = element.inputAssistancePreset; if (element.inputAssistancePosition) this.inputAssistancePosition = element.inputAssistancePosition; - if (element.restrictedToInputAssistanceChars) this.restrictedToInputAssistanceChars = element.restrictedToInputAssistanceChars; + if (element.restrictedToInputAssistanceChars !== undefined) { + this.restrictedToInputAssistanceChars = element.restrictedToInputAssistanceChars; + } if (element.showSoftwareKeyboard) this.showSoftwareKeyboard = element.showSoftwareKeyboard; if (element.softwareKeyboardShowFrench) this.softwareKeyboardShowFrench = element.softwareKeyboardShowFrench; this.position = ElementFactory.initPositionProps(element.position); diff --git a/projects/common/models/elements/input-elements/text-field.ts b/projects/common/models/elements/input-elements/text-field.ts index d97e86461..aec57c7dd 100644 --- a/projects/common/models/elements/input-elements/text-field.ts +++ b/projects/common/models/elements/input-elements/text-field.ts @@ -37,7 +37,9 @@ export class TextFieldElement extends InputElement implements PositionedUIElemen if (element.patternWarnMessage) this.patternWarnMessage = element.patternWarnMessage; if (element.inputAssistancePreset) this.inputAssistancePreset = element.inputAssistancePreset; if (element.inputAssistancePosition) this.inputAssistancePosition = element.inputAssistancePosition; - if (element.restrictedToInputAssistanceChars) this.restrictedToInputAssistanceChars = element.restrictedToInputAssistanceChars; + if (element.restrictedToInputAssistanceChars !== undefined) { + this.restrictedToInputAssistanceChars = element.restrictedToInputAssistanceChars; + } if (element.showSoftwareKeyboard) this.showSoftwareKeyboard = element.showSoftwareKeyboard; if (element.softwareKeyboardShowFrench) this.softwareKeyboardShowFrench = element.softwareKeyboardShowFrench; if (element.clearable) this.clearable = element.clearable; diff --git a/projects/common/models/elements/media-elements/audio.ts b/projects/common/models/elements/media-elements/audio.ts index e64dd2345..ca2c2712d 100644 --- a/projects/common/models/elements/media-elements/audio.ts +++ b/projects/common/models/elements/media-elements/audio.ts @@ -5,7 +5,7 @@ import { ElementComponent } from 'common/directives/element-component.directive' import { AudioComponent } from 'common/components/media-elements/audio.component'; export class AudioElement extends PlayerElement implements PositionedUIElement { - src: string | undefined; + src: string | null = null; position: PositionProperties; constructor(element: Partial<AudioElement>, ...args: unknown[]) { diff --git a/projects/common/models/elements/media-elements/image.ts b/projects/common/models/elements/media-elements/image.ts index 9a1c5bebd..4ce17a75b 100644 --- a/projects/common/models/elements/media-elements/image.ts +++ b/projects/common/models/elements/media-elements/image.ts @@ -5,7 +5,7 @@ import { ElementComponent } from 'common/directives/element-component.directive' import { ImageComponent } from 'common/components/media-elements/image.component'; export class ImageElement extends UIElement implements PositionedUIElement { - src: string | undefined; + src: string | null = null; scale: boolean = false; magnifier: boolean = false; magnifierSize: number = 100; diff --git a/projects/common/models/elements/text/text.ts b/projects/common/models/elements/text/text.ts index 6236b5b4b..8186aedd7 100644 --- a/projects/common/models/elements/text/text.ts +++ b/projects/common/models/elements/text/text.ts @@ -8,7 +8,6 @@ import { import { Type } from '@angular/core'; import { ElementComponent } from 'common/directives/element-component.directive'; import { TextComponent } from 'common/components/text/text.component'; -import { IDManager } from 'common/util/id-manager'; export class TextElement extends UIElement implements PositionedUIElement { text: string = 'Lorem ipsum dolor sit amet'; diff --git a/projects/common/models/page.ts b/projects/common/models/page.ts index e431cf035..f63488b37 100644 --- a/projects/common/models/page.ts +++ b/projects/common/models/page.ts @@ -16,7 +16,7 @@ export class Page { constructor(page?: Partial<Page>, idManager?: IDManager) { if (page?.hasMaxWidth) this.hasMaxWidth = page.hasMaxWidth; if (page?.maxWidth) this.maxWidth = page.maxWidth; - if (page?.margin) this.margin = page.margin; + if (page?.margin !== undefined) this.margin = page.margin; if (page?.backgroundColor) this.backgroundColor = page.backgroundColor; if (page?.alwaysVisible) this.alwaysVisible = page.alwaysVisible; if (page?.alwaysVisiblePagePosition) this.alwaysVisiblePagePosition = page.alwaysVisiblePagePosition; diff --git a/projects/common/models/section.ts b/projects/common/models/section.ts index eca8a7555..3fbd1d2fd 100644 --- a/projects/common/models/section.ts +++ b/projects/common/models/section.ts @@ -1,5 +1,4 @@ import { PositionedUIElement, UIElement } from 'common/models/elements/element'; -import { ElementFactory } from 'common/util/element.factory'; 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'; @@ -64,11 +63,11 @@ export class Section { constructor(section?: Partial<Section>, idManager?: IDManager) { if (section?.height) this.height = section.height; if (section?.backgroundColor) this.backgroundColor = section.backgroundColor; - if (section?.dynamicPositioning) this.dynamicPositioning = section.dynamicPositioning; - if (section?.autoColumnSize) this.autoColumnSize = section.autoColumnSize; - if (section?.autoRowSize) this.autoRowSize = section.autoRowSize; - if (section?.gridColumnSizes) this.gridColumnSizes = section.gridColumnSizes; - if (section?.gridRowSizes) this.gridRowSizes = section.gridRowSizes; + if (section?.dynamicPositioning !== undefined) this.dynamicPositioning = section.dynamicPositioning; + if (section?.autoColumnSize !== undefined) this.autoColumnSize = section.autoColumnSize; + if (section?.autoRowSize !== undefined) this.autoRowSize = section.autoRowSize; + if (section?.gridColumnSizes !== undefined) this.gridColumnSizes = section.gridColumnSizes; + if (section?.gridRowSizes !== undefined) this.gridRowSizes = section.gridRowSizes; if (section?.activeAfterID) this.activeAfterID = section.activeAfterID; this.elements = section?.elements?.map(element => Section.createElement(element, idManager)) || diff --git a/projects/player/modules/logging/services/log.service.ts b/projects/player/modules/logging/services/log.service.ts index 5083b1370..b66d829bd 100644 --- a/projects/player/modules/logging/services/log.service.ts +++ b/projects/player/modules/logging/services/log.service.ts @@ -6,7 +6,7 @@ export enum LogLevel { LOG = 0, INFO = 1, WARN = 2, ERROR = 3, NONE = 4} providedIn: 'root' }) export class LogService { - static level: LogLevel = 2; + static level: LogLevel = 1; // eslint-disable-next-line @typescript-eslint/no-explicit-any static error(...args: any[]): void { -- GitLab