Hello, {{ title }}
+Congratulations! Your app is running. 🎉
+Congratulations! Your app is running. 🎉
+{{ metric.name }}
+{{ metric.name }} is {{ metric.status }} ({{ metric.value }})
+mQ~+k=02jz)e0d9Z3>G?RGG!65?d1>9}7iG17?P*=GUV-#SbLRw)Hu{zx*azHxWk GNTWl@HeWjA?39Ia|sCi{e;!^`1Oec zb>Z|b65OM*;eC=ZLSy?_fg$&^2xI>qSLA2G*$nA3GEnp3$N-)46`|36m*sc#4%C|h zBN<2U;7k>&G_wL4=Ve5z`ubVD&*Hxi)r@{4RCDw7U_D`lbC(9&pG5C*z#W>8>HU)h z!h3g?2UL&sS!oY5$3?VlA0Me9W5e~V;2jds*fz^updz#AJ%G8w2V}AEE?E^=MK%Xt z__Bx1cr7+DQmuHmzn*|hh%~eEc9@m05@clWfpEFcr+06%0&dZJH&@8^&@*$qR@}o3 z@Tuuh2FsLz^zH+dN&T&?0G3I?MpmYJ;GP$J!Ez jeM#YLJ!W$}MVNb0^HfOA>5Fe~UNn%Zk(PT@~9}1d t)1UQ zU*B5K?Dl#G74qmg|2>^>0WtLX#Jz{lO4NT`NYB*(L#D|5IpXr9v&7a@YsGp3vLR7L zHYGHZg7{ie6n~2p$6Yz>=^cEg7tEgk-1YRl%-s7^cbqFb(U7&Dp78+&ut5!Tn(hER z|Gp4Ed@CnOPeAe|N>U(dB;SZ?NU^AzoD^UAH_vamp6Ws}{|mSq`^+VP1 g~2B{%N-!mWz<`)G) >V-<`9`L4?3dM%Qh6<@kba+m`JS{Ya@9Fq*m6$$ zA1%Ogc~VRH33|S9l%CNb4zM%k^EIpqY}@h{w(aBcJ9c05oiZx#SK9t->5lSI`=&l~ z+-Ic)a{FbBhXV$Xt!WRd`R#Jk-$+_Z52rS>?Vpt2IK<84|E-SBEoIw>cs=a{BlQ7O z-?{Fy_M&84&9|KM5wt~)*!~i~E=(6m8(uCO)I=)M?)&sRbzH$9Rovzd?ZEY}GqX+~ zFbEbLz`BZ49=2Yh-|<`waK-_4!7`ro@zlC|r&I4fc4oyb+m=|c8)8%tZ-z5FwhzDt zL5kB@u53`d@%nHl0Sp)Dw`(QU&>vujEn?GPEXUW!Wi<+4e%BORl&BIH+SwRcbS}X@ z01Pk|vA%OdJKAs17zSXtO55k!;%m9>1eW9LnyAX4uj7@${O6cfii`49qTNItzny5J zH&Gj`e}o}?xjQ}r?LrI%FjUd@xflT3|7LA|ka%Q3i}a8gVm <`HIWoJGH=$EGClX^C0lysQJ>UO(q&;`T#8txuoQ_{l^kEV9CAdXuU1Ghg8 zN_6hHFuy&1x 24q5-(Z7;!poYdt*`UTdrQOIQ!2O7_+AHV2hgXaEz7)>$LEdG z<8vE^T w$|YwZHZDPM!SNOAWG$?J)MdmEk{U!!$M#fp7 *Wo}jJ$Q(=8>R`Ats?e|VU?Zt7Cdh%AdnfyN3MBWw{ z$OnREvPf7%z6`#2##_7id|H%Y{vV^vWXb?5d5?a_y&t3@p9t$ncHj-NBdo&X{wrfJ zamN)VMYROYh_SvjJ=Xd!Ga?PY_$;*L=SxFte!4O6%0HEh%iZ4=gvns7IWIyJHa|hT z2;1+e)`TvbNb3-0z&DD_)Jomsg-7p_Uh`wjGnU1urmv1_oVqRg#=C?e?!7DgtqojU zWoAB($&53;TsXu^@2;8M`#z{=rPy?JqgYM0CDf4v@z=ZD|ItJ&8%_7A#K?S{wjxgd z?xA6JdJojrWpB7fr2p_MSsU4(R7=XGS0+Eg#xR=j>`H@R9 {XjwBm qAiOxOL` zt?XK-iTEOWV}f >Pz3H-s*>W z4~8C&Xq25UQ^xH6H9kY_RM1$ch+%YLF72AA7^b{~VNTG}Tj#qZltz5Q=qxR`&oIlW Nr__JTFzvMr^FKp4S3v*( literal 0 HcmV?d00001 diff --git a/unos-fe/src/index.html b/unos-fe/src/index.html new file mode 100644 index 0000000..8c6eede --- /dev/null +++ b/unos-fe/src/index.html @@ -0,0 +1,13 @@ + + + + + UnosFe ++ + + + + + + diff --git a/unos-fe/src/main.ts b/unos-fe/src/main.ts new file mode 100644 index 0000000..35b00f3 --- /dev/null +++ b/unos-fe/src/main.ts @@ -0,0 +1,6 @@ +import { bootstrapApplication } from '@angular/platform-browser'; +import { appConfig } from './app/app.config'; +import { AppComponent } from './app/app.component'; + +bootstrapApplication(AppComponent, appConfig) + .catch((err) => console.error(err)); diff --git a/unos-fe/src/styles.css b/unos-fe/src/styles.css new file mode 100644 index 0000000..90d4ee0 --- /dev/null +++ b/unos-fe/src/styles.css @@ -0,0 +1 @@ +/* You can add global styles to this file, and also import other style files */ diff --git a/unos-fe/tsconfig.app.json b/unos-fe/tsconfig.app.json new file mode 100644 index 0000000..374cc9d --- /dev/null +++ b/unos-fe/tsconfig.app.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [] + }, + "files": [ + "src/main.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/unos-fe/tsconfig.json b/unos-fe/tsconfig.json new file mode 100644 index 0000000..f37b67f --- /dev/null +++ b/unos-fe/tsconfig.json @@ -0,0 +1,33 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "outDir": "./dist/out-tsc", + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitOverride": true, + "noPropertyAccessFromIndexSignature": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "skipLibCheck": true, + "esModuleInterop": true, + "sourceMap": true, + "declaration": false, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "useDefineForClassFields": false, + "lib": [ + "ES2022", + "dom" + ] + }, + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true + } +} diff --git a/unos-fe/tsconfig.spec.json b/unos-fe/tsconfig.spec.json new file mode 100644 index 0000000..be7e9da --- /dev/null +++ b/unos-fe/tsconfig.spec.json @@ -0,0 +1,14 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} From ea80da90d2123fcd1e0b04b1d5b96228f4237a3f Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:00:54 +0900 Subject: [PATCH 2/6] =?UTF-8?q?watchdog-be:=20=E5=90=84=E7=8A=B6=E6=85=8B?= =?UTF-8?q?=E3=81=AE=E3=82=AA=E3=83=96=E3=82=B8=E3=82=A7=E3=82=AF=E3=83=88?= =?UTF-8?q?=E3=81=AE=E6=95=B0=E3=82=92=E5=8F=96=E5=BE=97=E3=81=A7=E3=81=8D?= =?UTF-8?q?=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../usbharu/unos/watchdog/be/ApiController.kt | 7 +++ .../watchdog/be/domain/MetricsRepository.kt | 2 + .../be/domain/MongoMetricsRepository.kt | 43 +++++++++++++++---- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/ApiController.kt b/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/ApiController.kt index a6af113..c68c7c1 100644 --- a/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/ApiController.kt +++ b/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/ApiController.kt @@ -29,6 +29,9 @@ fun Route.api(apiController: ApiController){ get("/not-good"){ call.respond(HttpStatusCode.OK,apiController.getNotGood()) } + get { + call.respond(HttpStatusCode.OK,apiController.statusCount()) + } } } } @@ -53,4 +56,8 @@ class ApiController(private val metricsRepository: MetricsRepository) { fun getNotGood():Flow { return metricsRepository.findByStatusAndGroupByObjectIdMaxTimestamp(Status.NOT_GOOD) } + + suspend fun statusCount():Map { + return metricsRepository.countyGroupByObjectIdMaxTimestamp() + } } \ No newline at end of file diff --git a/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/domain/MetricsRepository.kt b/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/domain/MetricsRepository.kt index 953d8e5..4eba638 100644 --- a/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/domain/MetricsRepository.kt +++ b/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/domain/MetricsRepository.kt @@ -7,4 +7,6 @@ interface MetricsRepository { suspend fun save(metric: Metric):Metric fun findByObjectId(objectId:String): Flow fun findByStatusAndGroupByObjectIdMaxTimestamp(status: Status): Flow + + suspend fun countyGroupByObjectIdMaxTimestamp():Map } \ No newline at end of file diff --git a/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/domain/MongoMetricsRepository.kt b/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/domain/MongoMetricsRepository.kt index 6532f0f..1936b8f 100644 --- a/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/domain/MongoMetricsRepository.kt +++ b/watch-dog-be/src/main/kotlin/dev/usbharu/unos/watchdog/be/domain/MongoMetricsRepository.kt @@ -9,7 +9,9 @@ import com.mongodb.kotlin.client.coroutine.MongoDatabase import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.flowOn +import kotlinx.coroutines.flow.toList import kotlinx.coroutines.withContext +import kotlinx.serialization.Serializable class MongoMetricsRepository(database: MongoDatabase) : MetricsRepository { @@ -27,15 +29,15 @@ class MongoMetricsRepository(database: MongoDatabase) : MetricsRepository { return collection.aggregate( listOf( Aggregates.group( - "$"+Metric::objectId.name, + "$" + Metric::objectId.name, Accumulators.max(Metric::timestamp.name, "$" + Metric::timestamp.name), - Accumulators.first(Metric::id.name, "\$_id"), - Accumulators.first(Metric::objectId.name, "$" + Metric::objectId.name), - Accumulators.first(Metric::domain.name, "$" + Metric::domain.name), - Accumulators.first(Metric::status.name, "$" + Metric::status.name), - Accumulators.first(Metric::value.name, "$" + Metric::value.name), - Accumulators.first(Metric::name.name, "$" + Metric::name.name), - Accumulators.first(Metric::message.name,"$"+ Metric::message.name) + Accumulators.last(Metric::id.name, "\$_id"), + Accumulators.last(Metric::objectId.name, "$" + Metric::objectId.name), + Accumulators.last(Metric::domain.name, "$" + Metric::domain.name), + Accumulators.last(Metric::status.name, "$" + Metric::status.name), + Accumulators.last(Metric::value.name, "$" + Metric::value.name), + Accumulators.last(Metric::name.name, "$" + Metric::name.name), + Accumulators.last(Metric::message.name, "$" + Metric::message.name) ), Aggregates.project( Projections.fields( @@ -48,11 +50,34 @@ class MongoMetricsRepository(database: MongoDatabase) : MetricsRepository { Metric::name.name, Metric::message.name ), - Projections.computed("_id","$"+ Metric::id.name) + Projections.computed("_id", "$" + Metric::id.name) ) ), Aggregates.match(Filters.eq(Metric::status.name, status)) ) ).flowOn(Dispatchers.IO) } + + override suspend fun countyGroupByObjectIdMaxTimestamp(): Map { + return collection.aggregate ( + listOf( + Aggregates.group( + "$" + Metric::objectId.name, + Accumulators.max(Metric::timestamp.name, "$" + Metric::timestamp.name), + Accumulators.last(Metric::status.name, "$" + Metric::status.name), + ), + Aggregates.group( + "\$status", + Accumulators.first("status","\$status"), + Accumulators.sum("count", 1) + ) + ) + ).flowOn(Dispatchers.IO).toList().associate { it.status to it.count } + } + + @Serializable + data class StatusIntMap( + val status: Status, + val count: Int + ) } \ No newline at end of file From ae47b2921628197226c1408e3057cfa299c86bf5 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:19:13 +0900 Subject: [PATCH 3/6] =?UTF-8?q?unos-fe:=20=E5=90=84=E7=8A=B6=E6=85=8B?= =?UTF-8?q?=E3=81=AE=E3=82=AA=E3=83=96=E3=82=B8=E3=82=A7=E3=82=AF=E3=83=88?= =?UTF-8?q?=E3=81=AE=E6=95=B0=E3=82=92=E8=A1=A8=E7=A4=BA=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- unos-fe/src/app/watchdog/models/StatusIntMap.ts | 3 +++ .../app/watchdog/services/fetch-metrics.service.ts | 13 +++++++++++++ .../watchdog-top/watchdog-top.component.html | 7 +++++++ .../watchdog/watchdog-top/watchdog-top.component.ts | 7 +++++++ 4 files changed, 30 insertions(+) create mode 100644 unos-fe/src/app/watchdog/models/StatusIntMap.ts diff --git a/unos-fe/src/app/watchdog/models/StatusIntMap.ts b/unos-fe/src/app/watchdog/models/StatusIntMap.ts new file mode 100644 index 0000000..936cac5 --- /dev/null +++ b/unos-fe/src/app/watchdog/models/StatusIntMap.ts @@ -0,0 +1,3 @@ +import {Status} from "./Status"; + +export type StatusIntMap = Record diff --git a/unos-fe/src/app/watchdog/services/fetch-metrics.service.ts b/unos-fe/src/app/watchdog/services/fetch-metrics.service.ts index 9f2ff02..0e0db47 100644 --- a/unos-fe/src/app/watchdog/services/fetch-metrics.service.ts +++ b/unos-fe/src/app/watchdog/services/fetch-metrics.service.ts @@ -3,6 +3,7 @@ import {Observable} from "rxjs"; import {HttpClient} from "@angular/common/http"; import {Metric} from "../models/Metric"; import {map} from 'rxjs/operators'; +import {StatusIntMap} from "../models/StatusIntMap"; @Injectable({ providedIn: 'root' @@ -31,4 +32,16 @@ export class FetchMetricsService { getOk():Observable { return this.fetchMetrics("http://localhost:4200/api/v1/metrics/ok") } + + getUnknown():Observable { + return this.fetchMetrics("http://localhost:4200/api/v1/metrics/unknown") + } + + getNotGood():Observable { + return this.fetchMetrics("http://localhost:4200/api/v1/metrics/not-good") + } + + getCount():Observable { + return this.http.get ("http://localhost:4200/api/v1/metrics") + } } diff --git a/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.html b/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.html index 36c3e88..c5a25c2 100644 --- a/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.html +++ b/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.html @@ -1,5 +1,12 @@ Watch Dog
+++OK {{count.OK || 0}}
+NOT GOOD {{count.NOT_GOOD || 0 }}
+DEAD {{count.DEAD || 0 }}
+UNKNOWN {{count.UNKNOWN || 0}}
+diff --git a/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.ts b/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.ts index 5c2256f..d66b93b 100644 --- a/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.ts +++ b/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.ts @@ -4,6 +4,7 @@ import {Metric} from "../models/Metric"; import {NgForOf} from "@angular/common"; import {RouterOutlet} from "@angular/router"; import {HttpClientModule} from "@angular/common/http"; +import {StatusIntMap} from "../models/StatusIntMap"; @Component({ selector: 'app-watchdog-top', @@ -23,6 +24,7 @@ export class WatchdogTopComponent implements OnInit{ deads: Metric[] = [] ok: Metric[] = []; + count: StatusIntMap ={{ metric.name }}
{}; constructor(private fetchMetricsService: FetchMetricsService) { } @@ -30,6 +32,7 @@ export class WatchdogTopComponent implements OnInit{ ngOnInit(): void { this.getDead() this.getOk() + this.getCount() } @@ -43,4 +46,8 @@ export class WatchdogTopComponent implements OnInit{ getOk():void{ this.fetchMetricsService.getOk().subscribe(res =>{this.ok = res}) } + + getCount():void{ + this.fetchMetricsService.getCount().subscribe(res => (this.count = res)) + } } From 49a81ca15a51820bd5663086906165f312298c34 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:36:53 +0900 Subject: [PATCH 4/6] =?UTF-8?q?unos-fe:=20=E3=82=B3=E3=83=B3=E3=83=9D?= =?UTF-8?q?=E3=83=BC=E3=83=8D=E3=83=B3=E3=83=88=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../metric-list-item.component.css | 0 .../metric-list-item.component.html | 4 ++++ .../metric-list-item.component.spec.ts | 23 +++++++++++++++++++ .../metric-list-item.component.ts | 16 +++++++++++++ .../watchdog-top/watchdog-top.component.html | 18 +++++++++++---- .../watchdog-top/watchdog-top.component.ts | 12 ++++++++++ 6 files changed, 69 insertions(+), 4 deletions(-) create mode 100644 unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.css create mode 100644 unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.html create mode 100644 unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.spec.ts create mode 100644 unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.ts diff --git a/unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.css b/unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.css new file mode 100644 index 0000000..e69de29 diff --git a/unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.html b/unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.html new file mode 100644 index 0000000..a238153 --- /dev/null +++ b/unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.html @@ -0,0 +1,4 @@ + +diff --git a/unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.spec.ts b/unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.spec.ts new file mode 100644 index 0000000..d53a744 --- /dev/null +++ b/unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MetricListItemComponent } from './metric-list-item.component'; + +describe('MetricListItemComponent', () => { + let component: MetricListItemComponent; + let fixture: ComponentFixture{{ metric.name }} is {{ metric.status }} + ({{ metric.value }})
+; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MetricListItemComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(MetricListItemComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.ts b/unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.ts new file mode 100644 index 0000000..9a7b0b8 --- /dev/null +++ b/unos-fe/src/app/watchdog/metric-list-item/metric-list-item.component.ts @@ -0,0 +1,16 @@ +import {Component, Input} from '@angular/core'; +import {Metric} from "../models/Metric"; + +@Component({ + selector: 'app-metric-list-item', + standalone: true, + imports: [], + templateUrl: './metric-list-item.component.html', + styleUrl: './metric-list-item.component.css' +}) +export class MetricListItemComponent { + @Input() + metric!: Metric; + constructor() { + } +} diff --git a/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.html b/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.html index c5a25c2..4ab87f0 100644 --- a/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.html +++ b/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.html @@ -7,10 +7,20 @@ UNKNOWN {{count.UNKNOWN || 0}}
--+{{ metric.name }}
-OK {{count.OK}}
-+{{ metric.name }} is {{ metric.status }} ({{ metric.value }})
++ NOT GOOD {{count.NOT_GOOD}}
++++ DEAD {{count.DEAD}}
++++ UNKNOWN {{count.UNKNOWN}}
++diff --git a/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.ts b/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.ts index d66b93b..d1891f0 100644 --- a/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.ts +++ b/unos-fe/src/app/watchdog/watchdog-top/watchdog-top.component.ts @@ -5,6 +5,7 @@ import {NgForOf} from "@angular/common"; import {RouterOutlet} from "@angular/router"; import {HttpClientModule} from "@angular/common/http"; import {StatusIntMap} from "../models/StatusIntMap"; +import {MetricListItemComponent} from "../metric-list-item/metric-list-item.component"; @Component({ selector: 'app-watchdog-top', @@ -13,6 +14,7 @@ import {StatusIntMap} from "../models/StatusIntMap"; NgForOf, RouterOutlet, HttpClientModule, + MetricListItemComponent, ], providers:[ FetchMetricsService @@ -24,6 +26,8 @@ export class WatchdogTopComponent implements OnInit{ deads: Metric[] = [] ok: Metric[] = []; + unknown:Metric[] = []; + notGood:Metric[] = []; count: StatusIntMap ={}; constructor(private fetchMetricsService: FetchMetricsService) { @@ -50,4 +54,12 @@ export class WatchdogTopComponent implements OnInit{ getCount():void{ this.fetchMetricsService.getCount().subscribe(res => (this.count = res)) } + + getUnknown(){ + this.fetchMetricsService.getUnknown().subscribe(res => this.unknown = res) + } + + getNotGood(){ + this.fetchMetricsService.getNotGood().subscribe(res => this.notGood = res) + } } From 7d85becc77574f2f40d9900c2794f3a98a100080 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:51:00 +0900 Subject: [PATCH 5/6] =?UTF-8?q?unos-fe:=20ci=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/unos-fe-build.yaml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .gitea/workflows/unos-fe-build.yaml diff --git a/.gitea/workflows/unos-fe-build.yaml b/.gitea/workflows/unos-fe-build.yaml new file mode 100644 index 0000000..a98cf77 --- /dev/null +++ b/.gitea/workflows/unos-fe-build.yaml @@ -0,0 +1,27 @@ +on: + pull_request: + types: + - labeled + - opened + - synchronize + - closed + workflow_run: + +permissions: + pull-requests: read + +jobs: + build-angular: + runs-on: ubuntu-latest + defaults: + run: + working-directory: ./unos-fe + if: contains(github.event.pull_request.labels.*.name,'unos-fe') + + steps: + - uses: actions/checkout@v3 + - run: npm ci + - run: npm run build + - run: tar cvf dist/unos-fe/unos-fe.tar dist/unos-fe/* + - run: curl --user usbharu:${{ secrets.DEPLOY_TOKEN }} --upload-file dist/unos-fe/unos-fe.tar https://git.usbharu.dev/api/packages/usbharu/generic/unos-fe/${{ github.sha }}/unos-fe.tar + if: github.event.pull_request.merged == true \ No newline at end of file From 6ae40b97d2eded1ef629e110a610c8039f6f6011 Mon Sep 17 00:00:00 2001 From: usbharu <64310155+usbharu@users.noreply.github.com> Date: Wed, 13 Mar 2024 16:53:12 +0900 Subject: [PATCH 6/6] =?UTF-8?q?unos-fe:=20ci=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitea/workflows/unos-fe-build.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitea/workflows/unos-fe-build.yaml b/.gitea/workflows/unos-fe-build.yaml index a98cf77..1ccb36f 100644 --- a/.gitea/workflows/unos-fe-build.yaml +++ b/.gitea/workflows/unos-fe-build.yaml @@ -13,6 +13,8 @@ permissions: jobs: build-angular: runs-on: ubuntu-latest + container: + image: catthehacker/ubuntu:act-latest defaults: run: working-directory: ./unos-fe