diff --git a/src/app/base/components/sidebar-pm/sidebar-pm.component.html b/src/app/base/components/sidebar-pm/sidebar-pm.component.html index 4ac1cc94..3a785364 100644 --- a/src/app/base/components/sidebar-pm/sidebar-pm.component.html +++ b/src/app/base/components/sidebar-pm/sidebar-pm.component.html @@ -199,9 +199,18 @@
- v1.1.1 +
@@ -213,4 +222,205 @@ + + + + + + + \ No newline at end of file diff --git a/src/app/base/components/sidebar-pm/sidebar-pm.component.scss b/src/app/base/components/sidebar-pm/sidebar-pm.component.scss index 8fdbe3c4..c7f45024 100644 --- a/src/app/base/components/sidebar-pm/sidebar-pm.component.scss +++ b/src/app/base/components/sidebar-pm/sidebar-pm.component.scss @@ -1,3 +1,41 @@ .overflow-initial { overflow: initial; } + +.border-bottom { + border-bottom: 1px solid #4F46E5; +} + +ol { + list-style: decimal; + li { + margin-top: 8px; + } +} + +ol.list-letters { + list-style-type: lower-alpha !important; +} + +.scrollable-size { + max-height: calc(100vh - 230px); + overflow-y: auto; +} + +.tooltip-margin::before { + margin-left: 8px; +} + +.border-dotted { + border-bottom: 2px dotted #22c55e; +} + +.modal-sizes { + min-width: 750px; +} + +@media (max-width: 1024px) { + .modal-sizes { + min-width: 400px; + } +} diff --git a/src/app/base/components/sidebar-pm/sidebar-pm.component.ts b/src/app/base/components/sidebar-pm/sidebar-pm.component.ts index 0ffc4558..c51ee2d0 100644 --- a/src/app/base/components/sidebar-pm/sidebar-pm.component.ts +++ b/src/app/base/components/sidebar-pm/sidebar-pm.component.ts @@ -5,15 +5,19 @@ import { transition, trigger, } from '@angular/animations'; -import { Component, Inject, EventEmitter, OnInit, Output, Input, HostListener } from '@angular/core'; +import { Component, Inject, EventEmitter, OnInit, Output, Input, HostListener, ViewChild, ElementRef } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; -import { Observable, Subscription } from 'rxjs'; -import { tap } from 'rxjs/operators'; +import { Observable, Subscription, timer } from 'rxjs'; +import { first, tap } from 'rxjs/operators'; import { AuthApiService } from '../../services/auth-api.service'; import { OrganizationApolloService } from '../../services/organization/organization-apollo.service'; import { RouteService } from '../../services/route.service'; import { DOCUMENT } from '@angular/common'; import { ProjectApolloService } from '../../services/project/project-apollo.service'; +import { ConfigApolloService } from '../../services/config/config-apollo.service'; +import { dateAsUTCDate } from 'src/app/util/helper-functions'; +import { ConfigManager } from '../../services/config-service'; +import { ConfigService } from 'aws-sdk'; @Component({ @@ -60,6 +64,13 @@ export class SidebarPmComponent implements OnInit { isFullscreen: boolean = false; @Output() firstName = new EventEmitter>(); toggleClass = 'ft-maximize'; + versionOverview: any[] = []; + @ViewChild('versionOverviewModal', { read: ElementRef }) versionOverviewModal: ElementRef; + @ViewChild('stepsUpdate', { read: ElementRef }) stepsUpdate: ElementRef; + openTab: number = 0; + isManaged: boolean = true; + hasUpdates: boolean; + private static initialConfigRequest: boolean = false; constructor( private organizationService: OrganizationApolloService, @@ -67,6 +78,7 @@ export class SidebarPmComponent implements OnInit { private activatedRoute: ActivatedRoute, private auth: AuthApiService, private projectApolloService: ProjectApolloService, + private configService: ConfigApolloService, @Inject(DOCUMENT) private document: any ) { } @@ -89,6 +101,30 @@ export class SidebarPmComponent implements OnInit { }) ) .subscribe()); + + if(!SidebarPmComponent.initialConfigRequest) { + this.requestVersionOverview(); + SidebarPmComponent.initialConfigRequest = true; + } + this.checkIfManagedVersion(); + } + + requestVersionOverview() { + this.versionOverview = null; + this.configService + .getVersionOverview() + .pipe(first()) + .subscribe((versionOverview) => { + this.versionOverview = versionOverview; + this.versionOverview.forEach((version)=> { + version.parseDate = this.parseUTC(version.lastChecked); + }); + this.versionOverview.sort((a, b) => a.service.localeCompare(b.service)); + this.configService + .hasUpdates() + .pipe(first()) + .subscribe((hasUpdates) => this.hasUpdates = hasUpdates); + }); } onDestroy() { @@ -161,4 +197,35 @@ export class SidebarPmComponent implements OnInit { } } + + parseUTC(utc: string) { + const utcDate = dateAsUTCDate(new Date(utc)); + return utcDate.toLocaleString(); + } + + howToUpdate() { + this.versionOverviewModal.nativeElement.checked = false; + this.stepsUpdate.nativeElement.checked = true; + } + + back() { + this.stepsUpdate.nativeElement.checked = false; + this.versionOverviewModal.nativeElement.checked = true; + } + + toggleTabs(index: number) { + this.openTab = index; + } + + copyToClipboard(textToCopy) { + navigator.clipboard.writeText(textToCopy); + } + + checkIfManagedVersion() { + if (!ConfigManager.isInit()) { + timer(250).subscribe(() => this.checkIfManagedVersion()); + return; + } + this.isManaged = ConfigManager.getIsManaged(); + } } diff --git a/src/app/base/services/config/config-apollo.service.ts b/src/app/base/services/config/config-apollo.service.ts index bc4b8f59..b9884e9c 100644 --- a/src/app/base/services/config/config-apollo.service.ts +++ b/src/app/base/services/config/config-apollo.service.ts @@ -60,4 +60,22 @@ export class ConfigApolloService { .pipe(map((result) => JSON.parse(result['data']['getBlackWhiteDemo']))); } + getVersionOverview() { + return this.apollo + .query({ + query: queries.GET_VERSION_OVERVIEW, + fetchPolicy: 'no-cache', + }) + .pipe(map((result) => result['data']['versionOverview'])); + } + + hasUpdates() { + return this.apollo + .query({ + query: queries.GET_HAS_UPDATES, + fetchPolicy: 'no-cache', + }) + .pipe(map((result) => result['data']['hasUpdates'])); + } + } diff --git a/src/app/base/services/config/config-queries.ts b/src/app/base/services/config/config-queries.ts index 6cb9cda7..7944a4b7 100644 --- a/src/app/base/services/config/config-queries.ts +++ b/src/app/base/services/config/config-queries.ts @@ -62,5 +62,22 @@ export const queries = { { getBlackWhiteDemo } - ` + `, + GET_VERSION_OVERVIEW: gql` + query { + versionOverview { + service + installedVersion + remoteVersion + lastChecked + link + remoteHasNewer + } + } + `, + + GET_HAS_UPDATES: gql` + { + hasUpdates + }` }; diff --git a/src/app/model-download/components/model-download-component/model-download-component.component.html b/src/app/model-download/components/model-download-component/model-download-component.component.html index cb6f7458..ebb1de51 100644 --- a/src/app/model-download/components/model-download-component/model-download-component.component.html +++ b/src/app/model-download/components/model-download-component/model-download-component.component.html @@ -1,5 +1,14 @@
-
+
+
+ +
Downloaded models
@@ -38,14 +47,19 @@ {{model.name}} -