diff --git a/ui-ngx/src/app/core/http/entity.service.ts b/ui-ngx/src/app/core/http/entity.service.ts index 373fa2c15c..ed95c17cfd 100644 --- a/ui-ngx/src/app/core/http/entity.service.ts +++ b/ui-ngx/src/app/core/http/entity.service.ts @@ -180,6 +180,9 @@ export class EntityService { case EntityType.MOBILE_APP: observable = this.mobileAppService.getMobileAppInfoById(entityId, config); break; + case EntityType.MOBILE_APP_BUNDLE: + observable = this.mobileAppService.getMobileAppBundleInfoById(entityId, config); + break; } return observable; } @@ -473,6 +476,10 @@ export class EntityService { pageLink.sortOrder.property = 'pkgName'; entitiesObservable = this.mobileAppService.getTenantMobileAppInfos(pageLink, subType as PlatformType, config); break; + case EntityType.MOBILE_APP_BUNDLE: + pageLink.sortOrder.property = 'title'; + entitiesObservable = this.mobileAppService.getTenantMobileAppBundleInfos(pageLink, config); + break; } return entitiesObservable; } diff --git a/ui-ngx/src/app/modules/home/components/entity/entity-chips.component.ts b/ui-ngx/src/app/modules/home/components/entity/entity-chips.component.ts index cee82995aa..6aad28c638 100644 --- a/ui-ngx/src/app/modules/home/components/entity/entity-chips.component.ts +++ b/ui-ngx/src/app/modules/home/components/entity/entity-chips.component.ts @@ -18,7 +18,7 @@ import { Component, Input, OnChanges, SimpleChanges } from '@angular/core'; import { BaseData } from '@shared/models/base-data'; import { EntityId } from '@shared/models/id/entity-id'; import { baseDetailsPageByEntityType, EntityType } from '@app/shared/public-api'; -import { isObject } from '@core/utils'; +import { isEqual, isObject } from '@core/utils'; @Component({ selector: 'tb-entity-chips', @@ -53,10 +53,14 @@ export class EntityChipsComponent implements OnChanges { entitiesList = [entitiesList]; } if (Array.isArray(entitiesList)) { - this.subEntities = entitiesList; - if (this.subEntities.length) { - this.entityDetailsPrefixUrl = baseDetailsPageByEntityType.get(this.subEntities[0].id.entityType as EntityType); + if (entitiesList.length) { + this.entityDetailsPrefixUrl = baseDetailsPageByEntityType.get(entitiesList[0].id.entityType as EntityType); } + } else { + entitiesList = []; + } + if (!isEqual(entitiesList, this.subEntities)) { + this.subEntities = entitiesList; } } } diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/mobile-app-qrcode-widget.component.html b/ui-ngx/src/app/modules/home/components/widget/lib/mobile-app-qrcode-widget.component.html index 625fe00a04..7ae77ba8fa 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/mobile-app-qrcode-widget.component.html +++ b/ui-ngx/src/app/modules/home/components/widget/lib/mobile-app-qrcode-widget.component.html @@ -27,13 +27,13 @@ [class.row-reverse]="mobileAppSettings?.qrCodeConfig.badgePosition === badgePosition.LEFT">
- + {{ 'widgets.mobile-app-qr-code.download-on-the-app-store' | translate }} - + {{ 'widgets.mobile-app-qr-code.get-it-on-google-play' | translate }} diff --git a/ui-ngx/src/app/modules/home/components/widget/lib/mobile-app-qrcode-widget.component.ts b/ui-ngx/src/app/modules/home/components/widget/lib/mobile-app-qrcode-widget.component.ts index e872ce06ce..acba8be81d 100644 --- a/ui-ngx/src/app/modules/home/components/widget/lib/mobile-app-qrcode-widget.component.ts +++ b/ui-ngx/src/app/modules/home/components/widget/lib/mobile-app-qrcode-widget.component.ts @@ -91,11 +91,8 @@ export class MobileAppQrcodeWidgetComponent extends PageComponent implements OnI this.mobileAppService.getMobileAppSettings().subscribe((settings => { this.mobileAppSettings = settings; - const useDefaultApp = this.mobileAppSettings.useDefaultApp; - this.appStoreLink = useDefaultApp ? this.mobileAppSettings.defaultAppStoreLink : - this.mobileAppSettings.iosConfig.storeLink; - this.googlePlayLink = useDefaultApp ? this.mobileAppSettings.defaultGooglePlayLink : - this.mobileAppSettings.androidConfig.storeLink; + this.appStoreLink = this.mobileAppSettings.appStoreLink; + this.googlePlayLink = this.mobileAppSettings.googlePlayLink; if (isDefinedAndNotNull(this.ctx.settings.useSystemSettings) && !this.ctx.settings.useSystemSettings) { this.mobileAppSettings = mergeDeep(this.mobileAppSettings, this.ctx.settings); @@ -133,10 +130,8 @@ export class MobileAppQrcodeWidgetComponent extends PageComponent implements OnI clearTimeout(this.deepLinkTTLTimeoutID); } - navigateByDeepLink($event) { - if ($event) { - $event.stopPropagation(); - } + navigateByDeepLink($event: Event) { + $event?.stopPropagation(); if (this.ctx.isMobile) { window.open(this.deepLink, '_blank'); } @@ -157,7 +152,7 @@ export class MobileAppQrcodeWidgetComponent extends PageComponent implements OnI private updateQRCode(link: string) { import('qrcode').then((QRCode) => { - QRCode.toString(link, (err, svgElement) => { + QRCode.toString(link, (_err, svgElement) => { this.qrCodeSVG = svgElement; this.cd.markForCheck(); }) diff --git a/ui-ngx/src/app/modules/home/pages/mobile/applications/applications.module.ts b/ui-ngx/src/app/modules/home/pages/mobile/applications/applications.module.ts index d8e619f865..fbdf4495eb 100644 --- a/ui-ngx/src/app/modules/home/pages/mobile/applications/applications.module.ts +++ b/ui-ngx/src/app/modules/home/pages/mobile/applications/applications.module.ts @@ -21,18 +21,17 @@ import { CommonModule } from '@angular/common'; import { SharedModule } from '@shared/shared.module'; import { HomeComponentsModule } from '@home/components/home-components.module'; import { ApplicationsRoutingModule } from '@home/pages/mobile/applications/applications-routing.module'; -import { ReleaseNotesPanelComponent } from '@home/pages/mobile/applications/release-notes-panel.component'; import { MobileAppDialogComponent } from '@home/pages/mobile/applications/mobile-app-dialog.component'; import { RemoveAppDialogComponent } from '@home/pages/mobile/applications/remove-app-dialog.component'; import { MobileAppConfigurationDialogComponent } from '@home/pages/mobile/applications/mobile-app-configuration-dialog.component'; +import { CommMobileModule } from '@home/pages/mobile/common/comm-mobile.module'; @NgModule({ declarations: [ MobileAppComponent, MobileAppTableHeaderComponent, - ReleaseNotesPanelComponent, MobileAppDialogComponent, RemoveAppDialogComponent, MobileAppConfigurationDialogComponent, @@ -41,6 +40,7 @@ import { CommonModule, SharedModule, HomeComponentsModule, + CommMobileModule, ApplicationsRoutingModule, ], exports: [ diff --git a/ui-ngx/src/app/modules/home/pages/mobile/applications/mobile-app.component.ts b/ui-ngx/src/app/modules/home/pages/mobile/applications/mobile-app.component.ts index cead8a75f4..4552cf8348 100644 --- a/ui-ngx/src/app/modules/home/pages/mobile/applications/mobile-app.component.ts +++ b/ui-ngx/src/app/modules/home/pages/mobile/applications/mobile-app.component.ts @@ -28,7 +28,7 @@ import { PlatformType, platformTypeTranslations } from '@shared/models/oauth2.mo import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; import { MatButton } from '@angular/material/button'; import { TbPopoverService } from '@shared/components/popover.service'; -import { ReleaseNotesPanelComponent } from '@home/pages/mobile/applications/release-notes-panel.component'; +import { EditorPanelComponent } from '@home/pages/mobile/common/editor-panel.component'; @Component({ selector: 'tb-mobile-app', @@ -155,18 +155,18 @@ export class MobileAppComponent extends EntityComponent { } else { const ctx: any = { disabled: !(this.isAdd || this.isEdit), - isLatest: isLatest, - releaseNotes: isLatest + title: isLatest ? 'mobile.latest-version-release-notes' : 'mobile.min-version-release-notes', + content: isLatest ? this.entityForm.get('versionInfo.latestVersionReleaseNotes').value : this.entityForm.get('versionInfo.minVersionReleaseNotes').value }; const releaseNotesPanelPopover = this.popoverService.displayPopover(trigger, this.renderer, - this.viewContainerRef, ReleaseNotesPanelComponent, ['leftOnly', 'leftBottomOnly', 'leftTopOnly'], true, null, + this.viewContainerRef, EditorPanelComponent, ['leftOnly', 'leftBottomOnly', 'leftTopOnly'], true, null, ctx, {}, {}, {}, false, () => {}, {padding: '16px 24px'}); releaseNotesPanelPopover.tbComponentRef.instance.popover = releaseNotesPanelPopover; - releaseNotesPanelPopover.tbComponentRef.instance.releaseNotesApplied.subscribe((releaseNotes) => { + releaseNotesPanelPopover.tbComponentRef.instance.editorContentApplied.subscribe((releaseNotes) => { releaseNotesPanelPopover.hide(); if (isLatest) { this.entityForm.get('versionInfo.latestVersionReleaseNotes').setValue(releaseNotes); diff --git a/ui-ngx/src/app/modules/home/pages/mobile/bundes/layout/mobile-layout.component.html b/ui-ngx/src/app/modules/home/pages/mobile/bundes/layout/mobile-layout.component.html index ebda8d4f0c..705cc7031c 100644 --- a/ui-ngx/src/app/modules/home/pages/mobile/bundes/layout/mobile-layout.component.html +++ b/ui-ngx/src/app/modules/home/pages/mobile/bundes/layout/mobile-layout.component.html @@ -53,7 +53,7 @@ (click)="resetToDefault()"> mdi:broom -
+

{{ dialogTitle | translate }}

-
+
diff --git a/ui-ngx/src/app/modules/home/pages/mobile/applications/release-notes-panel.component.scss b/ui-ngx/src/app/modules/home/pages/mobile/common/editor-panel.component.scss similarity index 91% rename from ui-ngx/src/app/modules/home/pages/mobile/applications/release-notes-panel.component.scss rename to ui-ngx/src/app/modules/home/pages/mobile/common/editor-panel.component.scss index f70487a708..00a2ebca2d 100644 --- a/ui-ngx/src/app/modules/home/pages/mobile/applications/release-notes-panel.component.scss +++ b/ui-ngx/src/app/modules/home/pages/mobile/common/editor-panel.component.scss @@ -15,7 +15,7 @@ */ @import '../../../../../../scss/constants'; -.tb-release-notes-panel { +.tb-editor-panel { width: 600px; display: flex; flex-direction: column; @@ -23,14 +23,17 @@ @media #{$mat-lt-md} { width: 90vw; } - .tb-release-notes-title { + .tb-editor-title { font-size: 16px; font-weight: 500; line-height: 24px; letter-spacing: 0.25px; color: rgba(0, 0, 0, 0.87); } - .tb-release-notes-panel-buttons { + .tb-editor { + height: 400px; + } + .tb-editor-buttons { height: 40px; display: flex; flex-direction: row; diff --git a/ui-ngx/src/app/modules/home/pages/mobile/applications/release-notes-panel.component.ts b/ui-ngx/src/app/modules/home/pages/mobile/common/editor-panel.component.ts similarity index 69% rename from ui-ngx/src/app/modules/home/pages/mobile/applications/release-notes-panel.component.ts rename to ui-ngx/src/app/modules/home/pages/mobile/common/editor-panel.component.ts index 935e949f3d..966ebd6411 100644 --- a/ui-ngx/src/app/modules/home/pages/mobile/applications/release-notes-panel.component.ts +++ b/ui-ngx/src/app/modules/home/pages/mobile/common/editor-panel.component.ts @@ -20,30 +20,28 @@ import { TbPopoverComponent } from '@shared/components/popover.component'; @Component({ selector: 'tb-release-notes-panel', - templateUrl: './release-notes-panel.component.html', - styleUrls: ['./release-notes-panel.component.scss'], + templateUrl: './editor-panel.component.html', + styleUrls: ['./editor-panel.component.scss'], encapsulation: ViewEncapsulation.None }) -export class ReleaseNotesPanelComponent implements OnInit { +export class EditorPanelComponent implements OnInit { @Input() disabled: boolean; @Input() - releaseNotes: string; + content: string; @Input() - isLatest: boolean; + title: string; @Input() - popover: TbPopoverComponent; + popover: TbPopoverComponent; @Output() - releaseNotesApplied = new EventEmitter(); - - title: string; + editorContentApplied = new EventEmitter(); - releaseNotesControl: FormControl; + editorControl: FormControl; tinyMceOptions: Record = { base_url: '/assets/tinymce', @@ -63,10 +61,9 @@ export class ReleaseNotesPanelComponent implements OnInit { } ngOnInit(): void { - this.releaseNotesControl = this.fb.control(this.releaseNotes); - this.title = this.isLatest ? 'mobile.latest-version-release-notes' : 'mobile.min-version-release-notes'; + this.editorControl = this.fb.control(this.content); if (this.disabled) { - this.releaseNotesControl.disable({emitEvent: false}); + this.editorControl.disable({emitEvent: false}); } } @@ -75,8 +72,8 @@ export class ReleaseNotesPanelComponent implements OnInit { } apply() { - if (this.releaseNotesControl.valid) { - this.releaseNotesApplied.emit(this.releaseNotesControl.value); + if (this.editorControl.valid) { + this.editorContentApplied.emit(this.editorControl.value); } } } diff --git a/ui-ngx/src/app/modules/home/pages/mobile/qr-code-widget/mobile-qr-code-widget-settings.component.html b/ui-ngx/src/app/modules/home/pages/mobile/qr-code-widget/mobile-qr-code-widget-settings.component.html index 618e0f65aa..4788d8265f 100644 --- a/ui-ngx/src/app/modules/home/pages/mobile/qr-code-widget/mobile-qr-code-widget-settings.component.html +++ b/ui-ngx/src/app/modules/home/pages/mobile/qr-code-widget/mobile-qr-code-widget-settings.component.html @@ -16,10 +16,11 @@ --> - + admin.mobile-app.mobile-app-qr-code-widget-settings +
@@ -51,110 +52,16 @@ formControlName="mobileAppBundleId"> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
+ + {{ 'admin.mobile-app.android' | translate }} + +
+
+ + {{ 'admin.mobile-app.ios' | translate }} + +
diff --git a/ui-ngx/src/app/modules/home/pages/mobile/qr-code-widget/mobile-qr-code-widget-settings.component.ts b/ui-ngx/src/app/modules/home/pages/mobile/qr-code-widget/mobile-qr-code-widget-settings.component.ts index 240d035ce0..2194d82759 100644 --- a/ui-ngx/src/app/modules/home/pages/mobile/qr-code-widget/mobile-qr-code-widget-settings.component.ts +++ b/ui-ngx/src/app/modules/home/pages/mobile/qr-code-widget/mobile-qr-code-widget-settings.component.ts @@ -35,70 +35,68 @@ import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; }) export class MobileQrCodeWidgetSettingsComponent extends PageComponent implements HasConfirmForm { - mobileAppSettingsForm: FormGroup; - mobileAppSettings: QrCodeSettings; - readonly badgePositionTranslationsMap = badgePositionTranslationsMap; readonly entityType = EntityType; + mobileAppSettingsForm = this.fb.group({ + useSystemSettings: [false], + useDefaultApp: [true], + mobileAppBundleId: [{value: null, disabled: true}, Validators.required], + androidEnabled: [true], + iosEnabled: [true], + qrCodeConfig: this.fb.group({ + showOnHomePage: [true], + badgeEnabled: [true], + badgePosition: [BadgePosition.RIGHT], + qrCodeLabelEnabled: [true], + qrCodeLabel: ['', [Validators.required, Validators.maxLength(50)]] + }) + }); + private authUser = getCurrentAuthUser(this.store); + private mobileAppSettings: QrCodeSettings; constructor(protected store: Store, private mobileAppService: MobileApplicationService, private fb: FormBuilder) { super(store); - this.buildMobileAppSettingsForm(); this.mobileAppService.getMobileAppSettings() .subscribe(settings => this.processMobileAppSettings(settings)); if (this.isTenantAdmin()) { - // this.mobileAppSettingsForm.get('useSystemSettings').valueChanges.pipe( - // takeUntilDestroyed() - // ).subscribe(value => { - // if (value) { - // this.mobileAppSettingsForm.get('androidConfig.enabled').disable(); - // this.mobileAppSettingsForm.get('iosConfig.enabled').disable(); - // this.mobileAppSettingsForm.get('qrCodeConfig.qrCodeLabelEnabled').disable(); - // } else { - // this.mobileAppSettingsForm.get('androidConfig.enabled').enable(); - // this.mobileAppSettingsForm.get('iosConfig.enabled').enable(); - // this.mobileAppSettingsForm.get('qrCodeConfig.qrCodeLabelEnabled').enable(); - // } - // }); + this.mobileAppSettingsForm.get('useSystemSettings').valueChanges.pipe( + takeUntilDestroyed() + ).subscribe(value => { + if (value) { + this.mobileAppSettingsForm.get('mobileAppBundleId').disable({emitEvent: false}); + this.mobileAppSettingsForm.get('qrCodeConfig.qrCodeLabel').disable({emitEvent: false}); + } else { + this.mobileAppSettingsForm.get('mobileAppBundleId').enable({emitEvent: false}); + if (this.mobileAppSettingsForm.get('qrCodeConfig.qrCodeLabelEnabled').value && + this.mobileAppSettingsForm.get('qrCodeConfig.showOnHomePage').value) { + this.mobileAppSettingsForm.get('qrCodeConfig.qrCodeLabel').enable({emitEvent: false}); + } + } + }); } this.mobileAppSettingsForm.get('useDefaultApp').valueChanges.pipe( takeUntilDestroyed() ).subscribe(value => { if (value) { this.mobileAppSettingsForm.get('mobileAppBundleId').disable({emitEvent: false}); - // this.mobileAppSettingsForm.get('androidConfig.appPackage').disable({emitEvent: false}); - // this.mobileAppSettingsForm.get('androidConfig.sha256CertFingerprints').disable({emitEvent: false}); - // this.mobileAppSettingsForm.get('androidConfig.storeLink').disable({emitEvent: false}); - // this.mobileAppSettingsForm.get('iosConfig.appId').disable({emitEvent: false}); - // this.mobileAppSettingsForm.get('iosConfig.storeLink').disable({emitEvent: false}); } else { this.mobileAppSettingsForm.get('mobileAppBundleId').enable({emitEvent: false}); - - // if (this.mobileAppSettingsForm.get('androidConfig.enabled').value) { - // this.mobileAppSettingsForm.get('androidConfig.appPackage').enable({emitEvent: false}); - // this.mobileAppSettingsForm.get('androidConfig.sha256CertFingerprints').enable({emitEvent: false}); - // this.mobileAppSettingsForm.get('androidConfig.storeLink').enable({emitEvent: false}); - // } - // if (this.mobileAppSettingsForm.get('iosConfig.enabled').value) { - // this.mobileAppSettingsForm.get('iosConfig.appId').enable({emitEvent: false}); - // this.mobileAppSettingsForm.get('iosConfig.storeLink').enable({emitEvent: false}); - // } } }); - // this.mobileAppSettingsForm.get('androidConfig.enabled').valueChanges.pipe( - // takeUntilDestroyed() - // ).subscribe(value => { - // this.androidEnableChanged(value); - // }); - // this.mobileAppSettingsForm.get('iosConfig.enabled').valueChanges.pipe( - // takeUntilDestroyed() - // ).subscribe(value => { - // this.iosEnableChanged(value); - // }); + this.mobileAppSettingsForm.get('androidEnabled').valueChanges.pipe( + takeUntilDestroyed() + ).subscribe(() => { + this.mobileAppSettingsForm.get('qrCodeConfig.badgeEnabled').updateValueAndValidity({onlySelf: true}); + }); + this.mobileAppSettingsForm.get('iosEnabled').valueChanges.pipe( + takeUntilDestroyed() + ).subscribe(() => { + this.mobileAppSettingsForm.get('qrCodeConfig.badgeEnabled').updateValueAndValidity({onlySelf: true}); + }); this.mobileAppSettingsForm.get('qrCodeConfig.showOnHomePage').valueChanges.pipe( takeUntilDestroyed() ).subscribe(value => { @@ -115,13 +113,14 @@ export class MobileQrCodeWidgetSettingsComponent extends PageComponent implement takeUntilDestroyed() ).subscribe(value => { if (value) { - // if (this.mobileAppSettingsForm.get('androidConfig.enabled').value || this.mobileAppSettingsForm.get('iosConfig.enabled').value) { - // this.mobileAppSettingsForm.get('qrCodeConfig.badgeEnabled').enable({emitEvent: false}); - // this.mobileAppSettingsForm.get('qrCodeConfig.badgePosition').enable({emitEvent: false}); - // } else { - // this.mobileAppSettingsForm.get('qrCodeConfig.badgeEnabled').disable({emitEvent: false}); - // this.mobileAppSettingsForm.get('qrCodeConfig.badgePosition').disable({emitEvent: false}); - // } + const formValue = this.mobileAppSettingsForm.getRawValue(); + if (formValue.androidEnabled || formValue.iosEnabled) { + this.mobileAppSettingsForm.get('qrCodeConfig.badgeEnabled').enable({emitEvent: false}); + this.mobileAppSettingsForm.get('qrCodeConfig.badgePosition').enable({emitEvent: false}); + } else { + this.mobileAppSettingsForm.get('qrCodeConfig.badgeEnabled').disable({emitEvent: false}); + this.mobileAppSettingsForm.get('qrCodeConfig.badgePosition').disable({emitEvent: false}); + } } else { this.mobileAppSettingsForm.get('qrCodeConfig.badgePosition').disable({emitEvent: false}); } @@ -141,32 +140,6 @@ export class MobileQrCodeWidgetSettingsComponent extends PageComponent implement return this.authUser.authority === Authority.TENANT_ADMIN; } - private buildMobileAppSettingsForm() { - this.mobileAppSettingsForm = this.fb.group({ - useSystemSettings: [false], - useDefaultApp: [true], - mobileAppBundleId: [{value: null, disabled: true}, Validators.required], - // androidConfig: this.fb.group({ - // enabled: [true], - // appPackage: [{value: '', disabled: true}, [Validators.required]], - // sha256CertFingerprints: [{value: '', disabled: true}, [Validators.required]], - // storeLink: ['', [Validators.required]] - // }), - // iosConfig: this.fb.group({ - // enabled: [true], - // appId: [{value: '', disabled: true}, [Validators.required]], - // storeLink: ['', [Validators.required]] - // }), - qrCodeConfig: this.fb.group({ - showOnHomePage: [true], - badgeEnabled: [true], - badgePosition: [BadgePosition.RIGHT], - qrCodeLabelEnabled: [true], - qrCodeLabel: ['', [Validators.required, Validators.maxLength(50)]] - }) - }); - } - private processMobileAppSettings(mobileAppSettings: QrCodeSettings): void { this.mobileAppSettings = {...mobileAppSettings}; if (!this.isTenantAdmin()) { @@ -175,34 +148,6 @@ export class MobileQrCodeWidgetSettingsComponent extends PageComponent implement this.mobileAppSettingsForm.reset(this.mobileAppSettings); } - // private androidEnableChanged(value: boolean): void { - // if (value) { - // if (!this.mobileAppSettingsForm.get('useDefaultApp').value) { - // this.mobileAppSettingsForm.get('androidConfig.appPackage').enable({emitEvent: false}); - // this.mobileAppSettingsForm.get('androidConfig.sha256CertFingerprints').enable({emitEvent: false}); - // this.mobileAppSettingsForm.get('androidConfig.storeLink').enable({emitEvent: false}); - // } - // } else { - // this.mobileAppSettingsForm.get('androidConfig.appPackage').disable({emitEvent: false}); - // this.mobileAppSettingsForm.get('androidConfig.sha256CertFingerprints').disable({emitEvent: false}); - // this.mobileAppSettingsForm.get('androidConfig.storeLink').disable({emitEvent: false}); - // } - // this.mobileAppSettingsForm.get('qrCodeConfig.badgeEnabled').updateValueAndValidity({onlySelf: true}); - // } - // - // private iosEnableChanged(value: boolean): void { - // if (value) { - // if (!this.mobileAppSettingsForm.get('useDefaultApp').value) { - // this.mobileAppSettingsForm.get('iosConfig.appId').enable({emitEvent: false}); - // this.mobileAppSettingsForm.get('iosConfig.storeLink').enable({emitEvent: false}); - // } - // } else { - // this.mobileAppSettingsForm.get('iosConfig.appId').disable({emitEvent: false}); - // this.mobileAppSettingsForm.get('iosConfig.storeLink').disable({emitEvent: false}); - // } - // this.mobileAppSettingsForm.get('qrCodeConfig.badgeEnabled').updateValueAndValidity({onlySelf: true}); - // } - save(): void { const showOnHomePagePreviousValue = this.mobileAppSettings.qrCodeConfig.showOnHomePage; this.mobileAppSettings = {...this.mobileAppSettings, ...this.mobileAppSettingsForm.getRawValue()}; diff --git a/ui-ngx/src/app/shared/models/constants.ts b/ui-ngx/src/app/shared/models/constants.ts index 1a681972bf..5170e8a160 100644 --- a/ui-ngx/src/app/shared/models/constants.ts +++ b/ui-ngx/src/app/shared/models/constants.ts @@ -187,7 +187,10 @@ export const HelpLinks = { gatewayInstall: `${helpBaseUrl}/docs/iot-gateway/install/docker-installation`, scada: `${helpBaseUrl}/docs${docPlatformPrefix}/user-guide/scada`, scadaSymbolDev: `${helpBaseUrl}/docs${docPlatformPrefix}/user-guide/scada/symbols-dev-guide`, - scadaSymbolDevAnimation: `${helpBaseUrl}/docs${docPlatformPrefix}/user-guide/scada/scada-symbols-dev-guide/#scadasymbolanimation` + scadaSymbolDevAnimation: `${helpBaseUrl}/docs${docPlatformPrefix}/user-guide/scada/scada-symbols-dev-guide/#scadasymbolanimation`, + mobileApplication: `${helpBaseUrl}/docs${docPlatformPrefix}/user-guide/ui/mobile-qr-code/`, + mobileBundle: `${helpBaseUrl}/docs${docPlatformPrefix}/user-guide/ui/mobile-qr-code/`, + mobileQrCode: `${helpBaseUrl}/docs${docPlatformPrefix}/user-guide/ui/mobile-qr-code/`, } }; /* eslint-enable max-len */ diff --git a/ui-ngx/src/app/shared/models/entity-type.models.ts b/ui-ngx/src/app/shared/models/entity-type.models.ts index 8b570ac655..769ca2ce87 100644 --- a/ui-ngx/src/app/shared/models/entity-type.models.ts +++ b/ui-ngx/src/app/shared/models/entity-type.models.ts @@ -597,13 +597,13 @@ export const entityTypeResources = new Map