-
+
+
{{ health.key }}
diff --git a/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.module.ts b/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.module.ts
new file mode 100644
index 000000000..d35d7a9dc
--- /dev/null
+++ b/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.module.ts
@@ -0,0 +1,26 @@
+import { NgModule } from '@angular/core'
+import { CommonModule } from '@angular/common'
+import { Routes, RouterModule } from '@angular/router'
+import { IonicModule } from '@ionic/angular'
+import { AppReleaseNotesList } from './app-release-notes-list.page'
+import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module'
+import { SharingModule } from 'src/app/modules/sharing.module'
+
+const routes: Routes = [
+ {
+ path: '',
+ component: AppReleaseNotesList,
+ },
+]
+
+@NgModule({
+ imports: [
+ CommonModule,
+ IonicModule,
+ RouterModule.forChild(routes),
+ PwaBackComponentModule,
+ SharingModule,
+ ],
+ declarations: [AppReleaseNotesList],
+})
+export class AppReleaseNotesListModule { }
diff --git a/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.page.html b/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.page.html
new file mode 100644
index 000000000..1725d5978
--- /dev/null
+++ b/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.page.html
@@ -0,0 +1,12 @@
+
+
+
+
+
+ Version History
+
+
+
+
+ hello
+
diff --git a/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.page.scss b/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.page.scss
new file mode 100644
index 000000000..eea898305
--- /dev/null
+++ b/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.page.scss
@@ -0,0 +1,3 @@
+.metric-note {
+ font-size: 16px;
+}
\ No newline at end of file
diff --git a/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.page.ts b/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.page.ts
new file mode 100644
index 000000000..c21997952
--- /dev/null
+++ b/ui/src/app/pages/apps-routes/app-release-notes-list/app-release-notes-list.page.ts
@@ -0,0 +1,42 @@
+import { Component } from '@angular/core'
+import { ActivatedRoute } from '@angular/router'
+import { PackageDataEntry } from 'src/app/models/patch-db/data-model'
+import { AvailableShow } from 'src/app/services/api/api-types'
+import { ApiService } from 'src/app/services/api/api.service'
+
+@Component({
+ selector: 'app-release-notes-list',
+ templateUrl: './app-release-notes-list.page.html',
+ styleUrls: ['./app-release-notes-list.page.scss'],
+})
+export class AppReleaseNotesList {
+ loading = true
+ pkgId: string
+ pkg: AvailableShow
+
+ constructor (
+ private readonly route: ActivatedRoute,
+ private readonly apiService: ApiService,
+
+ ) { }
+
+ ngOnInit () {
+ this.pkgId = this.route.snapshot.paramMap.get('pkgId')
+ }
+
+ async getPkg (version?: string): Promise
{
+ this.loading = true
+ try {
+ this.pkg = await this.apiService.getAvailableShow({ id: this.pkgId, version })
+ } catch (e) {
+ console.error(e)
+ this.error = e.message
+ } finally {
+ this.loading = false
+ }
+ }
+
+ asIsOrder (a: any, b: any) {
+ return 0
+ }
+}
diff --git a/ui/src/app/pages/apps-routes/apps-routing.module.ts b/ui/src/app/pages/apps-routes/apps-routing.module.ts
index 1fe38bda2..1978b4650 100644
--- a/ui/src/app/pages/apps-routes/apps-routing.module.ts
+++ b/ui/src/app/pages/apps-routes/apps-routing.module.ts
@@ -63,6 +63,10 @@ const routes: Routes = [
path: 'marketplace/:pkgId',
loadChildren: () => import('./app-available-show/app-available-show.module').then(m => m.AppAvailableShowPageModule),
},
+ {
+ path: 'marketplace/:pkgId/notes',
+ loadChildren: () => import('./app-release-notes-list/app-release-notes-list.module').then(m => m.AppReleaseNotesListModule),
+ },
]
@NgModule({
diff --git a/ui/src/app/services/api/api-types.ts b/ui/src/app/services/api/api-types.ts
index 5e4620558..cae4c8195 100644
--- a/ui/src/app/services/api/api-types.ts
+++ b/ui/src/app/services/api/api-types.ts
@@ -174,7 +174,7 @@ export interface MarketplaceData {
export interface MarketplaceEOS {
version: string
headline: string
- notes: string
+ 'release-notes': { [version: string]: string }
}
export interface AvailablePreview {
@@ -195,7 +195,8 @@ export interface AvailableShow {
title: string
icon: URL
}
- }
+ },
+ 'release-notes': { [version: string]: string }
}
export interface Breakages {
diff --git a/ui/src/app/services/api/mock-app-fixures.ts b/ui/src/app/services/api/mock-app-fixures.ts
index 859335bae..5ff7a69ed 100644
--- a/ui/src/app/services/api/mock-app-fixures.ts
+++ b/ui/src/app/services/api/mock-app-fixures.ts
@@ -7,7 +7,7 @@ export module Mock {
export const MarketplaceEos: RR.GetMarketplaceEOSRes = {
version: '1.0.0',
headline: 'Our biggest release ever.',
- notes: markdown,
+ 'release-notes': { '1.0.0': markdown },
}
export const AvailableList: RR.GetAvailableListRes = [
@@ -400,45 +400,66 @@ export module Mock {
}
} = {
'bitcoind': {
- '0.19.0': {
+ '0.19.2': {
icon: 'assets/img/service-icons/bitcoind.png',
manifest: {
...Mock.MockManifestBitcoind,
version: '0.19.0',
- 'release-notes': 'release notes for Bitcoin 0.19.0',
},
categories: ['bitcoin', 'cryptocurrency'],
versions: ['0.19.0', '0.20.0', '0.21.0'],
'dependency-metadata': { },
+ 'release-notes': {
+ '0.19.0': 'release notes for Bitcoin 0.19.0',
+ '0.19.1': 'release notes for Bitcoin 0.19.1',
+ '0.19.2': 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.',
+ },
},
'0.20.0': {
icon: 'assets/img/service-icons/bitcoind.png',
manifest: {
...Mock.MockManifestBitcoind,
version: '0.20.0',
- 'release-notes': 'release notes for Bitcoin 0.20.0',
},
categories: ['bitcoin', 'cryptocurrency'],
versions: ['0.19.0', '0.20.0', '0.21.0'],
'dependency-metadata': { },
+ 'release-notes': {
+ '0.19.0': 'release notes for Bitcoin 0.19.0',
+ '0.19.1': 'release notes for Bitcoin 0.19.1',
+ '0.19.2': 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.',
+ },
},
'0.21.0': {
icon: 'assets/img/service-icons/bitcoind.png',
manifest: {
...Mock.MockManifestBitcoind,
version: '0.21.0',
- 'release-notes': 'release notes for Bitcoin 0.20.0',
+ 'release-notes': 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.',
},
categories: ['bitcoin', 'cryptocurrency'],
versions: ['0.19.0', '0.20.0', '0.21.0'],
'dependency-metadata': { },
+ 'release-notes': {
+ '0.19.0': 'release notes for Bitcoin 0.19.0',
+ '0.19.1': 'release notes for Bitcoin 0.19.1',
+ '0.19.2': 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.',
+ },
},
'latest': {
icon: 'assets/img/service-icons/bitcoind.png',
- manifest: Mock.MockManifestBitcoind,
+ manifest: {
+ ...Mock.MockManifestBitcoind,
+ 'release-notes': 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.',
+ },
categories: ['bitcoin', 'cryptocurrency'],
versions: ['0.19.0', '0.20.0', '0.21.0'],
'dependency-metadata': { },
+ 'release-notes': {
+ '0.19.2': 'release notes for Bitcoin 0.19.2',
+ '0.20.0': 'release notes for Bitcoin 0.20.0',
+ '0.21.0': 'Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.',
+ },
},
},
'lnd': {
@@ -461,6 +482,11 @@ export module Mock {
icon: 'assets/img/service-icons/bitcoin-proxy.png',
},
},
+ 'release-notes': {
+ '0.19.0': 'release notes for LND 0.19.0',
+ '0.19.1': 'release notes for LND 0.19.1',
+ '0.19.2': 'release notes for LND 0.19.2',
+ },
},
'0.11.1': {
icon: 'assets/img/service-icons/lnd.png',
@@ -481,6 +507,11 @@ export module Mock {
icon: 'assets/img/service-icons/bitcoin-proxy.png',
},
},
+ 'release-notes': {
+ '0.19.0': 'release notes for LND 0.19.0',
+ '0.19.1': 'release notes for LND 0.19.1',
+ '0.19.2': 'release notes for LND 0.19.2',
+ },
},
'latest': {
icon: 'assets/img/service-icons/lnd.png',
@@ -497,6 +528,11 @@ export module Mock {
icon: 'assets/img/service-icons/bitcoin-proxy.png',
},
},
+ 'release-notes': {
+ '0.19.0': 'release notes for LND 0.19.0',
+ '0.19.1': 'release notes for LND 0.19.1',
+ '0.19.2': 'release notes for LND 0.19.2',
+ },
},
},
'bitcoin-proxy': {
@@ -511,6 +547,11 @@ export module Mock {
icon: 'assets/img/service-icons/bitcoind.png',
},
},
+ 'release-notes': {
+ '0.19.0': 'release notes for btc proxy 0.19.0',
+ '0.19.1': 'release notes for btc proxy 0.19.1',
+ '0.19.2': 'release notes for btc proxy 0.19.2',
+ },
},
},
}
diff --git a/ui/src/app/services/pkg-status-rendering.service.ts b/ui/src/app/services/pkg-status-rendering.service.ts
index d1545359f..0e47bbc08 100644
--- a/ui/src/app/services/pkg-status-rendering.service.ts
+++ b/ui/src/app/services/pkg-status-rendering.service.ts
@@ -1,4 +1,4 @@
-import { HealthCheckResultWarmingUp, MainStatus, MainStatusRunning, PackageDataEntry, PackageMainStatus, PackageState, Status } from '../models/patch-db/data-model'
+import { HealthCheckResultLoading, MainStatusRunning, PackageDataEntry, PackageMainStatus, PackageState, Status } from '../models/patch-db/data-model'
import { ConnectionState } from './connection.service'
export function renderPkgStatus (pkg: PackageDataEntry, connection: ConnectionState): PkgStatusRendering {
@@ -35,8 +35,11 @@ function handleInstalledState (status: Status): PkgStatusRendering {
function handleRunningState (status: MainStatusRunning): PkgStatusRendering {
if (Object.values(status.health).some(h => h.result === 'failure')) {
return { display: 'Needs Attention', color: 'danger', showDots: false, feStatus: FEStatus.NeedsAttention }
- } else if (Object.values(status.health).some(h => h.result === 'warming-up')) {
- return { display: 'Starting Up', color: 'warning', showDots: true, feStatus: FEStatus.StartingUp }
+ } else if (Object.values(status.health).some(h => h.result === 'starting')) {
+ return { display: 'Starting Up', color: 'warning', showDots: true, feStatus: FEStatus.Starting }
+ } else if (Object.values(status.health).some(h => h.result === 'loading')) {
+ const firstLoading = Object.values(status.health).find(h => h.result === 'loading') as HealthCheckResultLoading
+ return { display: firstLoading.message, color: 'warning', showDots: true, feStatus: FEStatus.Loading }
} else {
return { display: 'Running', color: 'success', showDots: false, feStatus: FEStatus.Running }
}
@@ -63,8 +66,9 @@ export enum FEStatus {
Restoring = 'restoring',
// FE
NeedsAttention = 'needs-attention',
- StartingUp = 'starting-up',
+ Starting = 'starting',
Connecting = 'connecting',
DependencyIssue = 'dependency-issue',
NeedsConfig = 'needs-config',
+ Loading = 'loading',
}