Remove test button for webhook

Signed-off-by: AllForNothing <sshijun@vmware.com>
This commit is contained in:
AllForNothing 2020-05-26 15:49:00 +08:00
parent 34b7d9c647
commit ea753bec97
6 changed files with 11 additions and 38 deletions

View File

@ -90,14 +90,12 @@
</div> </div>
</section> </section>
</form> </form>
<div class="mt-1" *ngIf="!isModify"> <div class="mt-1 bottom-btn" *ngIf="!isModify">
<button type="button" id="webhook-test-add" [clrLoading]="checkBtnState" class="btn btn-outline" (click)="onTestEndpoint()" [disabled]="checking || enpointURL.errors">{{'WEBHOOK.TEST_ENDPOINT_BUTTON' | translate}}</button>
<button type="button" class="btn btn-outline" id="add-webhook-cancel" (click)="onCancel()">{{'BUTTON.CANCEL' | translate}}</button> <button type="button" class="btn btn-outline" id="add-webhook-cancel" (click)="onCancel()">{{'BUTTON.CANCEL' | translate}}</button>
<button type="button" id="new-webhook-continue" class="btn btn-primary" [disabled]="!isValid" (click)="add()">{{'BUTTON.ADD' | translate}}</button> <button type="button" id="new-webhook-continue" class="btn btn-primary" [disabled]="!isValid" (click)="add()">{{'BUTTON.ADD' | translate}}</button>
</div> </div>
<div class="mt-1 bottom-btn" *ngIf="isModify"> <div class="mt-1 bottom-btn" *ngIf="isModify">
<button type="button" [clrLoading]="checkBtnState" class="btn btn-outline" id="webhook-test" (click)="onTestEndpoint()" [disabled]="checking || enpointURL.errors">{{'WEBHOOK.TEST_ENDPOINT_BUTTON' | translate}}</button>
<button type="button" class="btn btn-outline" id="edit-webhook-cancel" (click)="onCancel()">{{'BUTTON.CANCEL' | translate}}</button> <button type="button" class="btn btn-outline" id="edit-webhook-cancel" (click)="onCancel()">{{'BUTTON.CANCEL' | translate}}</button>
<button type="button" class="btn btn-primary" id="edit-webhook-save" [disabled]="!isValid" (click)="save()">{{'BUTTON.SAVE' | translate}}</button> <button type="button" class="btn btn-primary" id="edit-webhook-save" [disabled]="!isValid || !hasChange()" (click)="save()">{{'BUTTON.SAVE' | translate}}</button>
</div> </div>
</div> </div>

View File

@ -6,7 +6,6 @@
} }
.bottom-btn { .bottom-btn {
text-align: right; text-align: right;
margin-right: 3.4rem;
} }
.width-238 { .width-238 {
width: 238px; width: 238px;
@ -16,4 +15,4 @@
} }
.clr-control-label { .clr-control-label {
width: 9rem !important; width: 9rem !important;
} }

View File

@ -128,14 +128,6 @@ describe('AddWebhookFormComponent', () => {
const errorEle: HTMLElement = fixture.nativeElement.querySelector("clr-control-error"); const errorEle: HTMLElement = fixture.nativeElement.querySelector("clr-control-error");
expect(errorEle.innerText).toEqual('WEBHOOK.NAME_REQUIRED'); expect(errorEle.innerText).toEqual('WEBHOOK.NAME_REQUIRED');
}); });
it("test button should work", async () => {
const spy: jasmine.Spy = spyOn(component, 'onTestEndpoint').and.returnValue(undefined);
const testButton: HTMLButtonElement = fixture.nativeElement.querySelector("#webhook-test-add");
testButton.dispatchEvent(new Event('click'));
fixture.detectChanges();
await fixture.whenStable();
expect(spy.calls.count()).toEqual(1);
});
it("add button should work", async () => { it("add button should work", async () => {
const spy: jasmine.Spy = spyOn(component, 'add').and.returnValue(undefined); const spy: jasmine.Spy = spyOn(component, 'add').and.returnValue(undefined);
component.webhook = mockedWehook; component.webhook = mockedWehook;

View File

@ -12,6 +12,7 @@ import { ClrLoadingState } from "@clr/angular";
import { finalize } from "rxjs/operators"; import { finalize } from "rxjs/operators";
import { WebhookService } from "../webhook.service"; import { WebhookService } from "../webhook.service";
import { InlineAlertComponent } from "../../../shared/inline-alert/inline-alert.component"; import { InlineAlertComponent } from "../../../shared/inline-alert/inline-alert.component";
import { compareValue } from '../../../../lib/utils/utils';
@Component({ @Component({
selector: 'add-webhook-form', selector: 'add-webhook-form',
@ -20,13 +21,13 @@ import { InlineAlertComponent } from "../../../shared/inline-alert/inline-alert.
}) })
export class AddWebhookFormComponent implements OnInit { export class AddWebhookFormComponent implements OnInit {
closable: boolean = true; closable: boolean = true;
staticBackdrop: boolean = true;
checking: boolean = false; checking: boolean = false;
checkBtnState: ClrLoadingState = ClrLoadingState.DEFAULT; checkBtnState: ClrLoadingState = ClrLoadingState.DEFAULT;
webhookForm: NgForm; webhookForm: NgForm;
submitting: boolean = false; submitting: boolean = false;
@Input() projectId: number; @Input() projectId: number;
webhook: Webhook = new Webhook(); webhook: Webhook = new Webhook();
originValue: Webhook;
isModify: boolean; isModify: boolean;
@Input() isOpen: boolean; @Input() isOpen: boolean;
@Output() close = new EventEmitter<boolean>(); @Output() close = new EventEmitter<boolean>();
@ -41,27 +42,6 @@ export class AddWebhookFormComponent implements OnInit {
ngOnInit() { ngOnInit() {
} }
onTestEndpoint() {
this.checkBtnState = ClrLoadingState.LOADING;
this.checking = true;
this.webhookService
.testEndpoint(this.projectId, {
targets: this.webhook.targets
})
.pipe(finalize(() => (this.checking = false)))
.subscribe(
response => {
this.inlineAlert.showInlineSuccess({message: "WEBHOOK.TEST_ENDPOINT_SUCCESS"});
this.checkBtnState = ClrLoadingState.SUCCESS;
},
error => {
this.inlineAlert.showInlineError("WEBHOOK.TEST_ENDPOINT_FAILURE");
this.checkBtnState = ClrLoadingState.DEFAULT;
}
);
}
onCancel() { onCancel() {
this.close.emit(false); this.close.emit(false);
this.currentForm.reset(); this.currentForm.reset();
@ -111,6 +91,9 @@ export class AddWebhookFormComponent implements OnInit {
this.hasEventType() this.hasEventType()
); );
} }
hasChange(): boolean {
return !compareValue(this.originValue, this.webhook);
}
setEventType(eventType) { setEventType(eventType) {
if (this.webhook.event_types.indexOf(eventType) === -1) { if (this.webhook.event_types.indexOf(eventType) === -1) {

View File

@ -206,6 +206,7 @@ export class WebhookComponent implements OnInit {
this.addWebhookComponent.isEdit = true; this.addWebhookComponent.isEdit = true;
this.addWebhookComponent.addWebhookFormComponent.isModify = true; this.addWebhookComponent.addWebhookFormComponent.isModify = true;
this.addWebhookComponent.addWebhookFormComponent.webhook = clone(this.selectedRow[0]); this.addWebhookComponent.addWebhookFormComponent.webhook = clone(this.selectedRow[0]);
this.addWebhookComponent.addWebhookFormComponent.originValue = clone(this.selectedRow[0]);
this.addWebhookComponent.addWebhookFormComponent.webhook.event_types = clone(this.selectedRow[0].event_types); this.addWebhookComponent.addWebhookFormComponent.webhook.event_types = clone(this.selectedRow[0].event_types);
} }
} }

View File

@ -53,7 +53,7 @@ export const DEFAULT_LANG_COOKIE_KEY = 'harbor-lang';
/** /**
* Declare what languages are supported now. * Declare what languages are supported now.
*/ */
export const DEFAULT_SUPPORTING_LANGS = ['en-us', 'zh-cn', 'es-es', 'fr-fr', 'pt-br', 'tr-tr']; export const DEFAULT_SUPPORTING_LANGS = ['en-us', 'zh-cn', 'zh-tw', 'es-es', 'fr-fr', 'pt-br', 'tr-tr'];
/** /**
* The default language. * The default language.