From 02d890d8033f70c9377941ab368443304e9f8d6f Mon Sep 17 00:00:00 2001 From: bhaskarhc <hcbhaskar7@gmail.com> Date: Tue, 28 Jan 2020 14:31:40 +0530 Subject: [PATCH 1/5] move konvoy to stable release Signed-off-by: bhaskarhc <hcbhaskar7@gmail.com> --- src/app/app.routing.ts | 4 +- src/app/services/ci-dashboard.service.ts | 48 +++++------ src/app/sidebar/sidebar.component.html | 4 +- .../stable-release.component.html | 56 ++++++++++--- .../stable-release.component.scss | 57 +++++++++---- .../stable-release.component.ts | 74 +++++++++++------ src/app/table/table.component.html | 78 +++--------------- src/app/table/table.component.ts | 40 ++++----- src/assets/images/cloud/konvoy.png | Bin 0 -> 15099 bytes 9 files changed, 191 insertions(+), 170 deletions(-) create mode 100644 src/assets/images/cloud/konvoy.png diff --git a/src/app/app.routing.ts b/src/app/app.routing.ts index a6eac64..f6398d0 100644 --- a/src/app/app.routing.ts +++ b/src/app/app.routing.ts @@ -9,8 +9,8 @@ import { StableReleaseComponent } from "./stable-release/stable-release.componen const routes: Routes = [ //routes without header and footer - { path: "", component: TableComponent }, - { path: "stable-release", component: StableReleaseComponent }, + { path: "development", component: TableComponent }, + { path: "", component: StableReleaseComponent }, { path: "workload-dashboard", component: WorkloadDashboardComponent }, { path: "mongo-jiva", component: WorkloadsComponent }, { path: "mongo-cstor", component: WorkloadsComponent }, diff --git a/src/app/services/ci-dashboard.service.ts b/src/app/services/ci-dashboard.service.ts index 65a42d9..5bb45a1 100644 --- a/src/app/services/ci-dashboard.service.ts +++ b/src/app/services/ci-dashboard.service.ts @@ -1,44 +1,38 @@ import { Injectable } from "@angular/core"; import { HttpClient } from "@angular/common/http"; import { map } from "rxjs/operators"; -import { Meta,Title } from '@angular/platform-browser'; +import { Meta, Title } from '@angular/platform-browser'; @Injectable() export class DashboardData { private apiurl: string; host: any; - constructor(private http: HttpClient, private meta:Meta,private titleService: Title) { + constructor(private http: HttpClient, private meta: Meta, private titleService: Title) { this.host = window.location.host; if ((this.host.toString().indexOf("localhost") + 1) && this.host.toString().indexOf(":")) { - this.apiurl = "http://localhost:3000"; - } else if (this.host == "openebs.ci" || this.host == "wwww.openebs.ci" ) { + this.apiurl = "http://localhost:3000"; + } else if (this.host == "openebs.ci" || this.host == "wwww.openebs.ci") { this.apiurl = "https://openebs.ci/api"; } else { - this.apiurl = "https://staging.openebs.ci/api"; + this.apiurl = "https://staging.openebs.ci/api"; } } - - getPacketv15Details() { - return this.http.get<any[]>(this.apiurl + "/packet/v15"); - } - - getPacketv14Details() { - return this.http.get<any[]>(this.apiurl + "/packet/v14"); - } - - getPacketv13Details() { - return this.http.get<any[]>(this.apiurl + "/packet/v13"); - } - getKonvoyDetails() { - return this.http.get<any[]>(this.apiurl + "/konvoy"); - } - - getBuildDetails() { - return this.http.get<any[]>(this.apiurl + "/build"); - } - - getOpenshiftReleaseDetails() { - return this.http.get<any[]>(this.apiurl + "/openshift/release"); + getEndPointData(platform) { + switch (platform) { + case "packet-ultimate": + return this.http.get<any[]>(this.apiurl + "/packet/ultimate"); + case "packet-penultimate": + return this.http.get<any[]>(this.apiurl + "/packet/penultimate"); + case "packet-antepenultimate": + return this.http.get<any[]>(this.apiurl + "/packet/antepenultimate"); + case "konvoy": + return this.http.get<any[]>(this.apiurl + "/konvoy"); + case "openshift": + return this.http.get<any[]>(this.apiurl + "/openshift/release"); + default: + console.log('Unable To Find Platform'); + break; + } } } diff --git a/src/app/sidebar/sidebar.component.html b/src/app/sidebar/sidebar.component.html index 81f9147..4e01f72 100644 --- a/src/app/sidebar/sidebar.component.html +++ b/src/app/sidebar/sidebar.component.html @@ -11,13 +11,13 @@ <div class="collapse navbar-collapse" id="sidebar"> <ul class="list-unstyled justify-content-center w-100"> <li *ngIf="vendor == 'false'" - class="item cursor-pointer rounded-left py-md-4 py-sm-1 button text-center border-bottom" routerLink="/" + class="item cursor-pointer rounded-left py-md-4 py-sm-1 button text-center border-bottom" routerLink="/development" [routerLinkActiveOptions]="{ exact : true }" routerLinkActive="active-link"> <div> <h5>Development Branch</h5> </div> </li> - <li *ngIf="vendor == 'false'" routerLink="/stable-release" [routerLinkActiveOptions]="{ exact : true }" + <li *ngIf="vendor == 'false'" routerLink="/" [routerLinkActiveOptions]="{ exact : true }" routerLinkActive="active-link" class="item cursor-pointer rounded-left py-md-4 py-sm-1 button text-center border-bottom"> <div> diff --git a/src/app/stable-release/stable-release.component.html b/src/app/stable-release/stable-release.component.html index 0d59a0f..d9fa8d1 100644 --- a/src/app/stable-release/stable-release.component.html +++ b/src/app/stable-release/stable-release.component.html @@ -1,23 +1,55 @@ <div class="container-fluid bg-white h-100"> <div class="row"> - <div class="col-md-12 heading-row text-white py-2 mb-2"> - <h4>CI/E2E Summary of OpeneEBS Release Pipelines</h4> + <div class="col-md-12 text-white py-2 mb-2" + [ngClass]="currentPlatform == 'openshift' ? 'red-gradient': 'grey-gradient'"> + <!-- <h4>CI/E2E Summary of OpeneEBS Release Pipelines</h4> --> + <!-- </div> + </div> --> + + + + <div class="row"> + <div class="col-md-6"> + <h4>CI/E2E Summary of OpeneEBS Release Pipelines</h4> + </div> + </div> </div> </div> - <div class="row"> +<div class="row"> + <div class="col-md-5"></div> + <div class="col-md-7"> + <div class="d-flex justify-content-center mb-2"> + <div class="d-flex justify-content-between select-platform text-dark"> + <div class="flex rounded shadow bg-white shadow-lg"> + <div class="btn" [ngClass]="currentPlatform == 'openshift' ? 'btn-primary':'btn-disabled'" + (click)="checkoutPlatform('openshift')"><img src="/assets/images/cloud/openshift.png" alt="Platform-logo" + class="rounded-circle shadow" height="30px"><span class="mx-2">Openshift</span> + </div> + <div class="btn" [ngClass]="currentPlatform == 'konvoy' ? 'btn-primary' : 'btn-disabled'" + (click)="checkoutPlatform('konvoy')"><img src="/assets/images/cloud/konvoy.png" alt="Platform-logo" + class="rounded-circle shadow" height="30px"><span class="mx-2">Konvoy</span> + </div> + </div> + </div> + </div> + </div> +</div> + + + <div class="row" *ngIf='openshiftRelease.dashboard;else loadingSpinner'> <div class="col-md-7 table-pipelines-section"> <table class="table" id="data"> <thead> <th>Pipeline_ID</th> <th>Release_version</th> - <th class="text-center">Openshift 4.2</th> + <th class="text-center">{{getPlatformName(currentPlatform)}}</th> </thead> <tbody> <tr *ngFor="let pipeline of openshiftRelease.dashboard; let i = index" [ngClass]="{'row_color': i==rowCount()}" [attr.data-index]="i"> <td><a href={{pipeline.web_url}} target="_blank">{{pipeline.id}}</a></td> <td>{{pipeline.release_tag}}</td> - <td class="text-center"> + <td class="text-center cursor-pointer"> <span [ngClass]="{'highlight': (status == 1 && i==rowCount())}" (click)="getJobDetails(pipeline,i)" ngbTooltip="{{ pipelineTooltip(pipeline)}}" placement="right" class="pb-2"> <i *ngIf="pipelineTooltip(pipeline) == 'running';else donutSuccessFail" @@ -47,9 +79,9 @@ <h4>CI/E2E Summary of OpeneEBS Release Pipelines</h4> <div class="col-md-12"> <div class="d-flex justify-content-around"> <div class="text-center"> - <img src="/assets/images/cloud/openshift.png" alt="Openshift-logo" class="rounded-circle shadow" - height="80px"> - <h5 class="my-2">Openshift 4.2</h5> + <img src="/assets/images/cloud/{{currentPlatform}}.png" alt="Platform-logo" + class="rounded-circle shadow" height="80px"> + <h5 class="my-2">{{getPlatformName(currentPlatform)}}</h5> </div> </div> </div> @@ -70,7 +102,8 @@ <h5 class="my-2">Openshift 4.2</h5> <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab"> <div class="d-flex justify-content-around mt-2"> <div> - <span class="font-weight-bold">Pipeliene #{{activePipeline.id}} </span><span>triggered {{activePipeline.triggered}} .</span> + <span class="font-weight-bold">Pipeliene #{{activePipeline.id}} </span><span>triggered + {{activePipeline.triggered}} .</span> </div> <div> <button type="button" class="rounded btn-outline-primary"> <i @@ -155,7 +188,7 @@ <h5 class="my-2">Openshift 4.2</h5> <div class="d-flex"> <div><i [ngClass]=statusIcon(job.status)></i></div> <div class="job-link-line-right"></div> - <div> <a href="https://gitlab.openebs.ci/openebs/e2e-openshift/-/jobs/{{job.id}}" + <div> <a href="https://gitlab.openebs.ci/openebs/e2e-{{currentPlatform}}/-/jobs/{{job.id}}" target="_blank"> <img src="/assets/images/workload-logo/gitlab-notxt.svg" alt="gitlab-logo" class="gitlab-job-image"></a> @@ -176,4 +209,7 @@ <h5 class="my-2">Openshift 4.2</h5> </div> </div> </div> + <ng-template #loadingSpinner> + <app-lodding-spinners class="row"></app-lodding-spinners> + </ng-template> </div> \ No newline at end of file diff --git a/src/app/stable-release/stable-release.component.scss b/src/app/stable-release/stable-release.component.scss index a2cb023..4254f3a 100644 --- a/src/app/stable-release/stable-release.component.scss +++ b/src/app/stable-release/stable-release.component.scss @@ -1,5 +1,27 @@ -.heading-row{ - background-image: radial-gradient( circle farthest-corner at 12.3% 19.3%, rgba(85,88,218,1) 0%, rgba(95,209,249,1) 100.2% ); +.heading-row { + background-image: radial-gradient( + circle farthest-corner at 12.3% 19.3%, + rgba(85, 88, 218, 1) 0%, + rgba(95, 209, 249, 1) 100.2% + ); +} +.red-gradient { + background-image: radial-gradient( + circle farthest-corner at 12.3% 19.3%, + rgba(85, 88, 218, 1) 0%, + rgba(219, 33, 46, 0.6) 100.2% + ); + + // background: linear-gradient(90deg, rgba(219,33,46,1) 5%, rgba(255,255,255,1) 78%); +} +.grey-gradient { + background-image: radial-gradient( + circle farthest-corner at 12.3% 19.3%, + rgba(85, 88, 218, 1) 0%, + rgba(49, 2, 112, 0.6) 100.2% + ); + + // background: linear-gradient(90deg, #310270 5%, rgba(255,255,255,1) 78%); } .highlight { border-bottom: 5px solid #654cf9; @@ -21,8 +43,8 @@ ul { .font-size-14 { font-size: 14px; } -.font-size-25{ - font-size:25px; +.font-size-25 { + font-size: 25px; } .job-link-line-left { margin: 0; @@ -56,28 +78,28 @@ ul { height: 25px; top: -3px; } -.stage-jobs-content{ - border-left: 1px solid #dee2e6 ; +.stage-jobs-content { + border-left: 1px solid #dee2e6; } -.stage-jobs-content:hover{ -border-color: #62b9f3; +.stage-jobs-content:hover { + border-color: #62b9f3; } .job-row:hover { .job-name { color: #007bff; } - .job-link-line-right{ + .job-link-line-right { border-top-color: #62b9f3; } - .job-link-line-left{ + .job-link-line-left { border-top-color: #62b9f3; } i { text-shadow: 1px 1px 60px; font-weight: 900; } - img{ - box-shadow:0px 250px 15px -35px rgba(0,0,0,.25); + img { + box-shadow: 0px 250px 15px -35px rgba(0, 0, 0, 0.25); } } @@ -93,11 +115,18 @@ border-color: #62b9f3; background-image: none; border-color: #dfe3e9; } -.table-pipelines-section{ +.table-pipelines-section { height: 90vh; overflow-y: auto; } -.jobs-content-section{ +.jobs-content-section { height: 65vh; overflow-y: auto; +} +.cursor-pointer{ + cursor: pointer; +} + +.table{ + table-layout: auto; } \ No newline at end of file diff --git a/src/app/stable-release/stable-release.component.ts b/src/app/stable-release/stable-release.component.ts index 3d4d553..2f3bc6a 100644 --- a/src/app/stable-release/stable-release.component.ts +++ b/src/app/stable-release/stable-release.component.ts @@ -33,6 +33,7 @@ export class StableReleaseComponent implements OnInit { index: boolean = true; public initialCount: any = 0; detailPannelReady: boolean = false; + currentPlatform: any = 'openshift'; ngOnInit() { localStorage.removeItem('rowop'); @@ -48,20 +49,45 @@ export class StableReleaseComponent implements OnInit { clickedCell.addClass("highlight"); }); - this.getData = timer(0, 10000).subscribe(x => { - this.DashboardDatas.getOpenshiftReleaseDetails().subscribe(res => { - this.openshiftRelease = res; - if (this.openshiftRelease) { - this.pageLoaded = true; - if (this.index){ + this.checkoutPlatform("openshift"); + } + + checkoutPlatform(platform) { + if (platform !== this.currentPlatform) { + this.getData.unsubscribe(); + this.index = true; + } + if (platform) { + this.currentPlatform = platform; + this.getData = timer(0, 10000).subscribe(x => { + this.DashboardDatas.getEndPointData(platform).subscribe(res => { + this.openshiftRelease = res; + if (this.openshiftRelease) { + this.pageLoaded = true; + if (this.index) { this.getJobDetails(this.openshiftRelease.dashboard[0], 0); this.index = false; + } + } - } - }); - }) - } + }); + }) + // this.currentPlatform = platform; + } else { + console.error; + } + } + getPlatformName(platform) { + switch (platform) { + case 'openshift': + return 'Openshift 4.2' + case 'konvoy': + return 'Konvoy' + default: + break; + } + } ngOnDestroy() { this.getData.unsubscribe(); } @@ -91,32 +117,32 @@ export class StableReleaseComponent implements OnInit { } return hours + "h " + minutes + "m" + " ago"; } catch (e) { - console.log("error",e); + console.log("error", e); return "_"; } } - startedAt(data ){ + startedAt(data) { try { var date = data.jobs[0].started_at var dateFormat = moment.utc(date, 'YYYY-M-DD,HH:mm:ss').local().calendar(); return dateFormat; } catch (error) { - console.log("error",error); + console.log("error", error); return "_"; } } - finishedAt(data ){ + finishedAt(data) { try { - if (data.status == 'success' || data.status == 'failed'){ - var date = data.jobs[data.jobs.length-1].finished_at - var dateFormat = moment.utc(date, 'YYYY-M-DD,HH:mm:ss').local().calendar(); - return dateFormat; - }else{ + if (data.status == 'success' || data.status == 'failed') { + var date = data.jobs[data.jobs.length - 1].finished_at + var dateFormat = moment.utc(date, 'YYYY-M-DD,HH:mm:ss').local().calendar(); + return dateFormat; + } else { // Capatilize ref : https://www.freecodecamp.org/forum/t/how-to-capitalize-the-first-letter-of-a-string-in-javascript/18405 - return data.status.charAt(0).toUpperCase()+data.status.slice(1); + return data.status.charAt(0).toUpperCase() + data.status.slice(1); } } catch (error) { - console.log("error",error); + console.log("error", error); return "_"; } } @@ -124,7 +150,7 @@ export class StableReleaseComponent implements OnInit { duration(data) { try { var startedAt = moment(data.jobs[0].started_at, 'YYYY-M-DD,HH:mm:ss'); - var finishedAt = moment(data.jobs[data.jobs.length-1].finished_at, 'YYYY-M-DD,HH:mm:ss'); + var finishedAt = moment(data.jobs[data.jobs.length - 1].finished_at, 'YYYY-M-DD,HH:mm:ss'); var difference = moment.duration((finishedAt.diff(startedAt, 'second')), "second"); var days = difference.days(); var hours = difference.hours(); @@ -157,11 +183,11 @@ export class StableReleaseComponent implements OnInit { jobs: pipeline.jobs.length, successJobs: this.passed(pipeline.jobs), failedJobs: this.failed(pipeline.jobs), - triggered : this.triggered(pipeline), + triggered: this.triggered(pipeline), startedAt: this.startedAt(pipeline), finishedAt: this.finishedAt(pipeline), duration: this.duration(pipeline) - } + } var stages = []; var obj = []; pipeline.jobs.forEach(job => { diff --git a/src/app/table/table.component.html b/src/app/table/table.component.html index 3f42d46..16539bd 100644 --- a/src/app/table/table.component.html +++ b/src/app/table/table.component.html @@ -23,9 +23,9 @@ <h3 class="text-white"></h3> <h4 class=" d-none d-md-block font-size-32 text-left">CI/E2E Summary of OpenEBS Development Builds</h4> <div class="d-block d-md-none text-dark">CI/E2E Summary of OpenEBS Development Builds</div> - <h3 *ngIf="undefined !== buildData" class="text-white font-size-15">Builds in last one week: + <!-- <h3 *ngIf="undefined !== buildData" class="text-white font-size-15">Builds in last one week: {{ masterBuildsCount(buildData.dashboard) }} - </h3> + </h3> --> </a> </li> </ul> @@ -35,56 +35,33 @@ <h3 *ngIf="undefined !== buildData" class="text-white font-size-15">Builds in la <table id="data" class="table table-borderless"> <thead> <tr class="text-center"> - <th>Trigger</th> <th>Build</th> <th class="text-center">E2E Pipelines</th> </tr> <tr class="text-center"> - <td></td> <td></td> <td class="d-flex align-items-center justify-content-center platform"> <span class="mx-4"><img class="p-0" height="30" src="/assets/images/company-logos/k8s.png"> - <p class="font-size-13">1.14.5</p> - </span> - <span class="mx-4"><img class="p-0" height="30" src="/assets/images/company-logos/k8s.png"> - <p class="font-size-13">1.15.3</p> + <p class="font-size-13">1.15.2</p> </span> <span class="mx-4"><img class="p-0" height="30" src="/assets/images/company-logos/k8s.png"> <p class="font-size-13">1.16.1</p> </span> - <span class="mx-2"><img class="p-0" height="30" src="/assets/images/cloud/D2IQ.svg"> - <p class="font-size-13">Konvoy(1.15.5)</p> + <span class="mx-4"><img class="p-0" height="30" src="/assets/images/company-logos/k8s.png"> + <p class="font-size-13">1.17.2</p> </span> - </td> </tr> </thead> - <tbody *ngIf="undefined !== (packetV15Data && buildData && packetV14Data && packetV13Data)"> + <tbody *ngIf="undefined !== (packetV15Data && packetV14Data && packetV13Data)"> <tr [ngClass]="{'row_color': i==rowCount()}" class="text-center" - *ngFor="let post of buildData.dashboard; let i = index" [attr.data-index]="i"> - <td> - <a class="github-commit" href="{{pullRequestURL(buildData.dashboard[i])}}" target="_blank"> - <span>{{ getCommitName(i, buildData.dashboard) }}</span> <span class="d-none d-md-inline"> - /#{{ getCommit(i, buildData.dashboard) | slice:0:8 }}</span> - </a> - <p class="font-size-12 d-none d-md-block">Commit: {{ updated(i, buildData.dashboard) }}</p> - </td> - + *ngFor="let post of packetV15Data.dashboard; let i = index" [attr.data-index]="i"> <td> - <button placement="bottom" ngbTooltip="{{buildTooltip(i, buildData.dashboard)}}" - [ngClass]="buttonStatusClass(buildStatus(i, buildData.dashboard))" - (click)="clickit(buildWeburl(i, buildData.dashboard)); detailPannel(i, packetV13.dashboard, buildData.dashboard, 'packetV14'); "> - <i class="font-size-13" [ngClass]="iconClass(buildStatus(i, buildData.dashboard))"></i> - <a class="ml-1 font-size-15 d-none d-md-inline">{{buildStatus(i, buildData.dashboard)}}</a> - </button> + ci </td> - <td class="d-flex justify-content-center"> - <!-- style=" padding-bottom:10px;margin-left:31.9px; margin-right:31.9px;cursor:pointer" - --> - <span placement="bottom" ngbTooltip="{{ pipelineTooltip(i, packetV13Data.dashboard) }}" - (click)="detailPannel(i, packetV13Data.dashboard, buildData.dashboard, 'packetv14');" + (click)="detailPannel(i, packetV13Data.dashboard, 'packetv14');" [ngClass]="{'highlight': (status == 1 && i==rowCount())}" [ngStyle]="{'pointer-events': pipelineTooltip(i, packetV13Data.dashboard) === 'pending' ? 'none' : 'initial' }" style=" padding-bottom:10px;margin-left:31.9px; margin-right:31.9px;cursor:pointer"> @@ -117,7 +94,7 @@ <h3 *ngIf="undefined !== buildData" class="text-white font-size-15">Builds in la </span> <span placement="bottom" ngbTooltip="{{ pipelineTooltip(i, packetV14Data.dashboard) }}" - (click)="detailPannel(i, packetV14Data.dashboard, buildData.dashboard, 'packetv15');" + (click)="detailPannel(i, packetV14Data.dashboard, 'packetv15');" [ngClass]="{'highlight': (status == 2 && i==rowCount())}" [ngStyle]="{'pointer-events': pipelineTooltip(i, packetV14Data.dashboard) === 'pending' ? 'none' : 'initial' }" style=" padding-bottom:10px;margin-left:31.9px; margin-right:31.9px;cursor:pointer"> @@ -150,7 +127,7 @@ <h3 *ngIf="undefined !== buildData" class="text-white font-size-15">Builds in la </span> <span placement="bottom" ngbTooltip="{{ pipelineTooltip(i, packetV15Data.dashboard) }}" - (click)="detailPannel(i, packetV15Data.dashboard, buildData.dashboard, 'packetv16');" + (click)="detailPannel(i, packetV15Data.dashboard, 'packetv16');" [ngClass]="{'highlight': (status == 3 && i==rowCount())}" [ngStyle]="{'pointer-events': pipelineTooltip(i, packetV15Data.dashboard) === 'pending' ? 'none' : 'initial' }" style=" padding-bottom:10px;margin-left:31.9px; margin-right:31.9px;cursor:pointer"> @@ -181,39 +158,6 @@ <h3 *ngIf="undefined !== buildData" class="text-white font-size-15">Builds in la </ng-template> </ng-template> </span> - - <span placement="bottom" ngbTooltip="{{ pipelineTooltip(i, konvoyData.dashboard) }}" - (click)="detailPannel(i, konvoyData.dashboard, buildData.dashboard, 'konvoy');" - [ngClass]="{'highlight': (status == 4 && i==rowCount())}" - [ngStyle]="{'pointer-events': pipelineTooltip(i, konvoyData.dashboard) === 'pending' ? 'none' : 'initial' }" - style=" padding-bottom:10px;margin-left:31.9px; margin-right:31.9px;cursor:pointer"> - <i *ngIf="pipelineTooltip(i, konvoyData.dashboard) == 'running';else errorGraphkonvoy" - class='fa fa-circle-o-notch btn-txt fa-spin btn-outline-primary pipeline-status-icon'></i> - <ng-template #errorGraphkonvoy> - <i *ngIf="pipelineTooltip(i, konvoyData.dashboard) == '';else statusGraphkonvoy" - class='fa fa-ban text-dark pipeline-status-icon'></i> - <ng-template #statusGraphkonvoy> - <i *ngIf="pipelineTooltip(i, konvoyData.dashboard) == 'pending';else cancelGraphKonvoy" - class='fas fa-exclamation-triangle btn-txt btn-outline-warning pipeline-status-icon'></i> - <ng-template #cancelGraphKonvoy> - <i *ngIf="pipelineTooltip(i, konvoyData.dashboard) == 'cancelled';else statusSuccessGraphkonvoy" - class='fas fa-minus-circle btn-txt pipeline-status-icon padding-top-3'></i> - <ng-template #statusSuccessGraphkonvoy> - <svg width="20" height="20" viewBox="0 0 42 42" class="donut"> - <circle class="donut-hole" cx="21" cy="21" r="15.91549430918954" fill="#fff"></circle> - <circle class="donut-ring" cx="21" cy="21" r="15.91549430918954" fill="transparent" - stroke="#ff0000" stroke-width="6" stroke-dasharray="95 5" stroke-dashoffset="22.5"> - </circle> - <circle class="donut-segment" cx="21" cy="21" r="15.91549430918954" fill="transparent" - stroke="#009400" stroke-width="6" - [attr.stroke-dasharray]="getJobPercentFromPipeline(i, konvoyData.dashboard)" - stroke-dashoffset="22.5"></circle> - </svg> - </ng-template> - </ng-template> - </ng-template> - </ng-template> - </span> </td> </tr> </tbody> diff --git a/src/app/table/table.component.ts b/src/app/table/table.component.ts index 34a884f..04bf161 100644 --- a/src/app/table/table.component.ts +++ b/src/app/table/table.component.ts @@ -81,31 +81,23 @@ export class TableComponent implements OnInit { }); this.getData = timer(0, 5000).subscribe(x => { - this.DashboardDatas.getPacketv15Details().subscribe(data => { - this.showSpinnerTable = false; - this.packetV15Data = data; - }); - this.DashboardDatas.getPacketv14Details().subscribe(data => { - this.showSpinnerTable = false; - this.packetV14Data = data; - }); - this.DashboardDatas.getPacketv13Details().subscribe(data => { + this.DashboardDatas.getEndPointData("packet-antepenultimate").subscribe(data => { this.showSpinnerTable = false; this.packetV13Data = data; }); - this.DashboardDatas.getKonvoyDetails().subscribe(data => { + this.DashboardDatas.getEndPointData("packet-penultimate").subscribe(data => { this.showSpinnerTable = false; - this.konvoyData = data; + this.packetV14Data = data; }); - this.DashboardDatas.getBuildDetails().subscribe(data => { + this.DashboardDatas.getEndPointData("packet-ultimate").subscribe(data => { this.showSpinnerTable = false; - this.buildData = data; + this.packetV15Data = data; }); }); this.selectCell = timer(0, 1000).subscribe(x => { - if (this.index == 1 && this.buildData != undefined && this.packetV13Data != undefined) { + if (this.index == 1 && this.packetV13Data != undefined) { this.index = 0; - this.detailPannel(0, this.packetV13Data.dashboard, this.buildData.dashboard, 'packetv14'); + this.detailPannel(0, this.packetV13Data.dashboard, 'packetv14'); } }); } @@ -343,7 +335,7 @@ export class TableComponent implements OnInit { return failed; } - detailPannel(index, pipelineData, buildData, cloud) { + detailPannel(index, pipelineData, cloud) { this.pipelineDetailStatus = false; this.showSpinnerDetails = true; setTimeout(() => { @@ -357,33 +349,33 @@ export class TableComponent implements OnInit { this.name = "PACKET"; this.kubernetesVersion = "1.15.3"; this.status = 2; - this.detailsDatas(index, pipelineData, buildData) + this.detailsDatas(index, pipelineData) } else if (cloud == "packetv14") { this.image = 'packet.svg' this.name = "PACKET"; this.kubernetesVersion = "1.14.5"; this.status = 1; - this.detailsDatas(index, pipelineData, buildData) + this.detailsDatas(index, pipelineData) } else if (cloud == "packetv16") { this.image = 'packet.svg' this.name = "PACKET"; this.kubernetesVersion = "1.16.1"; this.status = 3; - this.detailsDatas(index, pipelineData, buildData) + this.detailsDatas(index, pipelineData) } else if (cloud == "konvoy") { this.image = 'D2IQ.svg' this.name = "KONVOY"; this.kubernetesVersion = "1.15.5"; this.status = 4; - this.detailsDatas(index, pipelineData, buildData) + this.detailsDatas(index, pipelineData) } } } - detailsDatas(index, pipelineData, buildData) { - this.commitMessage = buildData[index].jobs[0].message; - this.pullRequest = this.pullRequestURL(buildData[index]) - this.commitUser = this.commitUsr(buildData[index].jobs[0].author_name, pipelineData[index].sha); + detailsDatas(index, pipelineData) { + // this.commitMessage = buildData[index].jobs[0].message; + // this.pullRequest = this.pullRequestURL(buildData[index]) + // this.commitUser = this.commitUsr(buildData[index].jobs[0].author_name, pipelineData[index].sha); this.rating = this.ratingCalculation(pipelineData[index].jobs) this.gitlabPipelineUrl = this.gitlabPipelineURL(pipelineData[index].web_url); this.log_url = pipelineData[index].kibana_url; diff --git a/src/assets/images/cloud/konvoy.png b/src/assets/images/cloud/konvoy.png new file mode 100644 index 0000000000000000000000000000000000000000..c42d6a64e20d9f9dcd97de77b862be6922a0ac2b GIT binary patch literal 15099 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 literal 0 HcmV?d00001 From 2e47fbb75317d2fa23bf053fa126db734baf68e1 Mon Sep 17 00:00:00 2001 From: bhaskarhc <hcbhaskar7@gmail.com> Date: Wed, 29 Jan 2020 12:35:07 +0530 Subject: [PATCH 2/5] remove unused/commented code Signed-off-by: bhaskarhc <hcbhaskar7@gmail.com> --- src/app/stable-release/stable-release.component.ts | 5 +---- src/app/table/table.component.html | 3 --- src/app/table/table.component.ts | 3 --- 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/app/stable-release/stable-release.component.ts b/src/app/stable-release/stable-release.component.ts index 2f3bc6a..cce2290 100644 --- a/src/app/stable-release/stable-release.component.ts +++ b/src/app/stable-release/stable-release.component.ts @@ -72,9 +72,8 @@ export class StableReleaseComponent implements OnInit { } }); }) - // this.currentPlatform = platform; } else { - console.error; + console.error('Unable to find Selected Platform'); } } @@ -84,8 +83,6 @@ export class StableReleaseComponent implements OnInit { return 'Openshift 4.2' case 'konvoy': return 'Konvoy' - default: - break; } } ngOnDestroy() { diff --git a/src/app/table/table.component.html b/src/app/table/table.component.html index 16539bd..e76d3de 100644 --- a/src/app/table/table.component.html +++ b/src/app/table/table.component.html @@ -23,9 +23,6 @@ <h3 class="text-white"></h3> <h4 class=" d-none d-md-block font-size-32 text-left">CI/E2E Summary of OpenEBS Development Builds</h4> <div class="d-block d-md-none text-dark">CI/E2E Summary of OpenEBS Development Builds</div> - <!-- <h3 *ngIf="undefined !== buildData" class="text-white font-size-15">Builds in last one week: - {{ masterBuildsCount(buildData.dashboard) }} - </h3> --> </a> </li> </ul> diff --git a/src/app/table/table.component.ts b/src/app/table/table.component.ts index 04bf161..2f6c09a 100644 --- a/src/app/table/table.component.ts +++ b/src/app/table/table.component.ts @@ -373,9 +373,6 @@ export class TableComponent implements OnInit { } detailsDatas(index, pipelineData) { - // this.commitMessage = buildData[index].jobs[0].message; - // this.pullRequest = this.pullRequestURL(buildData[index]) - // this.commitUser = this.commitUsr(buildData[index].jobs[0].author_name, pipelineData[index].sha); this.rating = this.ratingCalculation(pipelineData[index].jobs) this.gitlabPipelineUrl = this.gitlabPipelineURL(pipelineData[index].web_url); this.log_url = pipelineData[index].kibana_url; From 2da67ba9e9a10a1ea3e324abdde03c2e0ccfc6c7 Mon Sep 17 00:00:00 2001 From: bhaskarhc <hcbhaskar7@gmail.com> Date: Wed, 29 Jan 2020 12:49:05 +0530 Subject: [PATCH 3/5] remove commented code --- src/app/stable-release/stable-release.component.html | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/app/stable-release/stable-release.component.html b/src/app/stable-release/stable-release.component.html index d9fa8d1..0b7c867 100644 --- a/src/app/stable-release/stable-release.component.html +++ b/src/app/stable-release/stable-release.component.html @@ -2,12 +2,6 @@ <div class="row"> <div class="col-md-12 text-white py-2 mb-2" [ngClass]="currentPlatform == 'openshift' ? 'red-gradient': 'grey-gradient'"> - <!-- <h4>CI/E2E Summary of OpeneEBS Release Pipelines</h4> --> - <!-- </div> - </div> --> - - - <div class="row"> <div class="col-md-6"> <h4>CI/E2E Summary of OpeneEBS Release Pipelines</h4> @@ -34,8 +28,6 @@ <h4>CI/E2E Summary of OpeneEBS Release Pipelines</h4> </div> </div> </div> - - <div class="row" *ngIf='openshiftRelease.dashboard;else loadingSpinner'> <div class="col-md-7 table-pipelines-section"> <table class="table" id="data"> @@ -202,10 +194,7 @@ <h5 class="my-2">{{getPlatformName(currentPlatform)}}</h5> </div> </div> </div> - </div> - - </div> </div> </div> From 270e087c1f77f57b86a09eac9bfc74470e0ef617 Mon Sep 17 00:00:00 2001 From: bhaskarhc <hcbhaskar7@gmail.com> Date: Thu, 30 Jan 2020 12:14:52 +0530 Subject: [PATCH 4/5] nav button position change Signed-off-by: bhaskarhc <hcbhaskar7@gmail.com> --- src/app/stable-release/stable-release.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/stable-release/stable-release.component.html b/src/app/stable-release/stable-release.component.html index 0b7c867..ae83e49 100644 --- a/src/app/stable-release/stable-release.component.html +++ b/src/app/stable-release/stable-release.component.html @@ -10,7 +10,7 @@ <h4>CI/E2E Summary of OpeneEBS Release Pipelines</h4> </div> </div> <div class="row"> - <div class="col-md-5"></div> + <!-- <div class="col-md-5"></div> --> <div class="col-md-7"> <div class="d-flex justify-content-center mb-2"> <div class="d-flex justify-content-between select-platform text-dark"> From a18c22b22be6a891230b4ebe5ae8b55bc1606f36 Mon Sep 17 00:00:00 2001 From: bhaskarhc <hcbhaskar7@gmail.com> Date: Thu, 30 Jan 2020 12:39:42 +0530 Subject: [PATCH 5/5] add analytics Signed-off-by: bhaskarhc <hcbhaskar7@gmail.com> --- src/index.html | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/index.html b/src/index.html index 4e62868..a44776d 100644 --- a/src/index.html +++ b/src/index.html @@ -88,6 +88,21 @@ <body style=" background-color: #EFF2F6; font-family: sans-serif;overflow-x: hidden;overflow-y: scroll;"> <app-root> + <script> + (function(i, s, o, g, r, a, m) { + i['GoogleAnalyticsObject'] = r; + i[r] = i[r] || function() { + (i[r].q = i[r].q || []).push(arguments) + }, i[r].l = 1 * new Date(); + a = s.createElement(o), + m = s.getElementsByTagName(o)[0]; + a.async = 1; + a.src = g; + m.parentNode.insertBefore(a, m) + })(window, document, 'script', 'https://www.google-analytics.com/analytics.js', 'ga'); + ga('create', 'UA-157359467-1', 'auto');// add your tracking ID here. + ga('send', 'pageview'); + </script> <!-- loading layout replaced by app after startup --> <div class="app-loading"> <div class="logo">