mirror of
https://github.com/goharbor/harbor.git
synced 2024-09-28 21:37:31 +02:00
Show banner message on log in page (#19078)
1. Fixes #19076 Signed-off-by: AllForNothing <sshijun@vmware.com>
This commit is contained in:
parent
1d81b3d8ad
commit
26b53ef343
@ -1,4 +1,5 @@
|
|||||||
<clr-main-container>
|
<clr-main-container>
|
||||||
|
<app-app-level-alerts></app-app-level-alerts>
|
||||||
<navigator (showDialogModalAction)="openModal($event)"></navigator>
|
<navigator (showDialogModalAction)="openModal($event)"></navigator>
|
||||||
<search-result></search-result>
|
<search-result></search-result>
|
||||||
<div
|
<div
|
||||||
|
@ -22,7 +22,6 @@ import { PasswordSettingComponent } from './password-setting/password-setting.co
|
|||||||
import { AccountSettingsModalComponent } from './account-settings/account-settings-modal.component';
|
import { AccountSettingsModalComponent } from './account-settings/account-settings-modal.component';
|
||||||
import { ForgotPasswordComponent } from './password-setting/forgot-password/forgot-password.component';
|
import { ForgotPasswordComponent } from './password-setting/forgot-password/forgot-password.component';
|
||||||
import { GlobalConfirmationDialogComponent } from './global-confirmation-dialog/global-confirmation-dialog.component';
|
import { GlobalConfirmationDialogComponent } from './global-confirmation-dialog/global-confirmation-dialog.component';
|
||||||
import { AppLevelAlertsComponent } from './harbor-shell/app-level-alerts/app-level-alerts.component';
|
|
||||||
|
|
||||||
const routes: Routes = [
|
const routes: Routes = [
|
||||||
{
|
{
|
||||||
@ -173,7 +172,6 @@ const routes: Routes = [
|
|||||||
AccountSettingsModalComponent,
|
AccountSettingsModalComponent,
|
||||||
ForgotPasswordComponent,
|
ForgotPasswordComponent,
|
||||||
GlobalConfirmationDialogComponent,
|
GlobalConfirmationDialogComponent,
|
||||||
AppLevelAlertsComponent,
|
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
export class BaseModule {}
|
export class BaseModule {}
|
||||||
|
@ -443,6 +443,7 @@
|
|||||||
min="{{ currentDate | date : 'yyyy-MM-dd' }}"
|
min="{{ currentDate | date : 'yyyy-MM-dd' }}"
|
||||||
max="{{ messageToDate | date : 'yyyy-MM-dd' }}"
|
max="{{ messageToDate | date : 'yyyy-MM-dd' }}"
|
||||||
clrDate
|
clrDate
|
||||||
|
readonly
|
||||||
[(ngModel)]="messageFromDate"
|
[(ngModel)]="messageFromDate"
|
||||||
[ngModelOptions]="{ standalone: true }"
|
[ngModelOptions]="{ standalone: true }"
|
||||||
[disabled]="
|
[disabled]="
|
||||||
@ -463,6 +464,7 @@
|
|||||||
<input
|
<input
|
||||||
class="date"
|
class="date"
|
||||||
clrDate
|
clrDate
|
||||||
|
readonly
|
||||||
type="date"
|
type="date"
|
||||||
id="to"
|
id="to"
|
||||||
min="{{ minDateForEndDay() | date : 'yyyy-MM-dd' }}"
|
min="{{ minDateForEndDay() | date : 'yyyy-MM-dd' }}"
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
import { AppLevelAlertsComponent } from './app-level-alerts.component';
|
import { AppLevelAlertsComponent } from './app-level-alerts.component';
|
||||||
import { SharedTestingModule } from '../../../shared/shared.module';
|
import { SharedTestingModule } from '../../shared.module';
|
||||||
import { HttpHeaders, HttpResponse } from '@angular/common/http';
|
import { HttpHeaders, HttpResponse } from '@angular/common/http';
|
||||||
import { of } from 'rxjs';
|
import { of } from 'rxjs';
|
||||||
import { delay } from 'rxjs/operators';
|
import { delay } from 'rxjs/operators';
|
||||||
import { Scanner } from '../../left-side-nav/interrogation-services/scanner/scanner';
|
import { Scanner } from '../../../base/left-side-nav/interrogation-services/scanner/scanner';
|
||||||
import { ScannerService } from 'ng-swagger-gen/services/scanner.service';
|
import { ScannerService } from 'ng-swagger-gen/services/scanner.service';
|
||||||
import { SessionService } from 'src/app/shared/services/session.service';
|
import { SessionService } from 'src/app/shared/services/session.service';
|
||||||
import { AppConfigService } from '../../../services/app-config.service';
|
import { AppConfigService } from '../../../services/app-config.service';
|
@ -1,24 +1,21 @@
|
|||||||
import { Component, OnDestroy, OnInit } from '@angular/core';
|
import { Component, OnDestroy, OnInit } from '@angular/core';
|
||||||
import { SCANNERS_DOC } from '../../left-side-nav/interrogation-services/scanner/scanner';
|
import { SCANNERS_DOC } from '../../../base/left-side-nav/interrogation-services/scanner/scanner';
|
||||||
import { SessionService } from '../../../shared/services/session.service';
|
import { SessionService } from '../../services/session.service';
|
||||||
import { DEFAULT_PAGE_SIZE, delUrlParam } from '../../../shared/units/utils';
|
import { DEFAULT_PAGE_SIZE, delUrlParam } from '../../units/utils';
|
||||||
import { forkJoin, Observable, Subscription } from 'rxjs';
|
import { forkJoin, Observable, Subscription } from 'rxjs';
|
||||||
import { Project } from '../../../../../ng-swagger-gen/models/project';
|
import { Project } from '../../../../../ng-swagger-gen/models/project';
|
||||||
import { ScannerService } from '../../../../../ng-swagger-gen/services/scanner.service';
|
import { ScannerService } from '../../../../../ng-swagger-gen/services/scanner.service';
|
||||||
import { UN_LOGGED_PARAM } from '../../../account/sign-in/sign-in.service';
|
import { UN_LOGGED_PARAM } from '../../../account/sign-in/sign-in.service';
|
||||||
import {
|
import { CommonRoutes, httpStatusCode } from '../../entities/shared.const';
|
||||||
CommonRoutes,
|
|
||||||
httpStatusCode,
|
|
||||||
} from '../../../shared/entities/shared.const';
|
|
||||||
import { ActivatedRoute, Router } from '@angular/router';
|
import { ActivatedRoute, Router } from '@angular/router';
|
||||||
import { MessageService } from '../../../shared/components/global-message/message.service';
|
import { MessageService } from '../global-message/message.service';
|
||||||
import { Message } from '../../../shared/components/global-message/message';
|
import { Message } from '../global-message/message';
|
||||||
import { JobServiceDashboardHealthCheckService } from '../../left-side-nav/job-service-dashboard/job-service-dashboard-health-check.service';
|
import { JobServiceDashboardHealthCheckService } from '../../../base/left-side-nav/job-service-dashboard/job-service-dashboard-health-check.service';
|
||||||
import { AppConfigService } from '../../../services/app-config.service';
|
import { AppConfigService } from '../../../services/app-config.service';
|
||||||
import {
|
import {
|
||||||
BannerMessage,
|
BannerMessage,
|
||||||
BannerMessageType,
|
BannerMessageType,
|
||||||
} from '../../left-side-nav/config/config';
|
} from '../../../base/left-side-nav/config/config';
|
||||||
const HAS_SHOWED_SCANNER_INFO: string = 'hasShowScannerInfo';
|
const HAS_SHOWED_SCANNER_INFO: string = 'hasShowScannerInfo';
|
||||||
const YES: string = 'yes';
|
const YES: string = 'yes';
|
||||||
@Component({
|
@Component({
|
||||||
@ -191,13 +188,10 @@ export class AppLevelAlertsComponent implements OnInit, OnDestroy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
hasValidBannerMessage(): boolean {
|
hasValidBannerMessage(): boolean {
|
||||||
if (
|
const current: Date = this.appConfigService.getConfig()?.current_time
|
||||||
this.appConfigService.getConfig()?.banner_message &&
|
? new Date(this.appConfigService.getConfig()?.current_time)
|
||||||
this.appConfigService.getConfig()?.current_time
|
: new Date();
|
||||||
) {
|
if (this.appConfigService.getConfig()?.banner_message) {
|
||||||
const current = new Date(
|
|
||||||
this.appConfigService.getConfig()?.current_time
|
|
||||||
);
|
|
||||||
const bm = JSON.parse(
|
const bm = JSON.parse(
|
||||||
this.appConfigService.getConfig()?.banner_message
|
this.appConfigService.getConfig()?.banner_message
|
||||||
) as BannerMessage;
|
) as BannerMessage;
|
@ -78,6 +78,7 @@ import { LabelSelectorComponent } from './components/label-selector/label-select
|
|||||||
import { ScrollSectionDirective } from './directives/scroll/scroll-section.directive';
|
import { ScrollSectionDirective } from './directives/scroll/scroll-section.directive';
|
||||||
import { ScrollManagerService } from './directives/scroll/scroll-manager.service';
|
import { ScrollManagerService } from './directives/scroll/scroll-manager.service';
|
||||||
import { ScrollAnchorDirective } from './directives/scroll/scroll-anchor.directive';
|
import { ScrollAnchorDirective } from './directives/scroll/scroll-anchor.directive';
|
||||||
|
import { AppLevelAlertsComponent } from './components/app-level-alerts/app-level-alerts.component';
|
||||||
|
|
||||||
// ClarityIcons is publicly accessible from the browser's window object.
|
// ClarityIcons is publicly accessible from the browser's window object.
|
||||||
declare const ClarityIcons: ClarityIconsApi;
|
declare const ClarityIcons: ClarityIconsApi;
|
||||||
@ -147,6 +148,7 @@ ClarityIcons.add({
|
|||||||
HarborDatetimePipe,
|
HarborDatetimePipe,
|
||||||
RemainingTimeComponent,
|
RemainingTimeComponent,
|
||||||
LabelSelectorComponent,
|
LabelSelectorComponent,
|
||||||
|
AppLevelAlertsComponent,
|
||||||
],
|
],
|
||||||
exports: [
|
exports: [
|
||||||
TranslateModule,
|
TranslateModule,
|
||||||
@ -188,6 +190,7 @@ ClarityIcons.add({
|
|||||||
HarborDatetimePipe,
|
HarborDatetimePipe,
|
||||||
RemainingTimeComponent,
|
RemainingTimeComponent,
|
||||||
LabelSelectorComponent,
|
LabelSelectorComponent,
|
||||||
|
AppLevelAlertsComponent,
|
||||||
],
|
],
|
||||||
providers: [
|
providers: [
|
||||||
{ provide: EndpointService, useClass: EndpointDefaultService },
|
{ provide: EndpointService, useClass: EndpointDefaultService },
|
||||||
|
Loading…
Reference in New Issue
Block a user