Fix UI bugs

Add deleting confirmation dialog back
Change buttons' style on tag component
This commit is contained in:
Deng, Qian 2018-01-29 21:54:59 +08:00
parent 02554204e4
commit b31a91b64a
8 changed files with 30 additions and 25 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "harbor-ui", "name": "harbor-ui",
"version": "0.6.37", "version": "0.6.41",
"description": "Harbor shared UI components based on Clarity and Angular4", "description": "Harbor shared UI components based on Clarity and Angular4",
"scripts": { "scripts": {
"start": "ng serve --host 0.0.0.0 --port 4500 --proxy-config proxy.config.json", "start": "ng serve --host 0.0.0.0 --port 4500 --proxy-config proxy.config.json",

View File

@ -1,6 +1,6 @@
{ {
"name": "harbor-ui", "name": "harbor-ui",
"version": "0.6.37", "version": "0.6.41",
"description": "Harbor shared UI components based on Clarity and Angular4", "description": "Harbor shared UI components based on Clarity and Angular4",
"author": "VMware", "author": "VMware",
"module": "index.js", "module": "index.js",

View File

@ -24,11 +24,9 @@ export const TAG_TEMPLATE = `
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"> <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<clr-datagrid [clrDgLoading]="loading" [class.embeded-datagrid]="isEmbedded" [(clrDgSelected)]="selectedRow" (clrDgSelectedChange)="selectedChange()"> <clr-datagrid [clrDgLoading]="loading" [class.embeded-datagrid]="isEmbedded" [(clrDgSelected)]="selectedRow" (clrDgSelectedChange)="selectedChange()">
<clr-dg-action-bar> <clr-dg-action-bar>
<div class="btn-group"> <button type="button" class="btn btn-sm btn-secondary" [disabled]="!(canScanNow(selectedRow) && selectedRow.length==1)" (click)="scanNow(selectedRow)"><clr-icon shape="shield-check" size="16"></clr-icon>&nbsp;{{'VULNERABILITY.SCAN_NOW' | translate}}</button>
<button type="button" class="btn btn-sm btn-secondary" [disabled]="!(canScanNow(selectedRow) && selectedRow.length==1)" (click)="scanNow(selectedRow)">{{'VULNERABILITY.SCAN_NOW' | translate}}</button> <button type="button" class="btn btn-sm btn-secondary" [disabled]="!(selectedRow.length==1)" (click)="showDigestId(selectedRow)" ><clr-icon shape="copy" size="16"></clr-icon>&nbsp;{{'REPOSITORY.COPY_DIGEST_ID' | translate}}</button>
<button type="button" class="btn btn-sm btn-secondary" [disabled]="!(selectedRow.length==1)" (click)="showDigestId(selectedRow)" >{{'REPOSITORY.COPY_DIGEST_ID' | translate}}</button> <button type="button" class="btn btn-sm btn-secondary" *ngIf="hasProjectAdminRole" (click)="deleteTags(selectedRow)" [disabled]="!selectedRow.length"><clr-icon shape="times" size="16"></clr-icon>&nbsp;{{'REPOSITORY.DELETE' | translate}}</button>
<button type="button" class="btn btn-sm btn-secondary" *ngIf="hasProjectAdminRole" (click)="deleteTags(selectedRow)" [disabled]="!selectedRow.length">{{'REPOSITORY.DELETE' | translate}}</button>
</div>
</clr-dg-action-bar> </clr-dg-action-bar>
<clr-dg-column style="width: 160px;" [clrDgField]="'name'">{{'REPOSITORY.TAG' | translate}}</clr-dg-column> <clr-dg-column style="width: 160px;" [clrDgField]="'name'">{{'REPOSITORY.TAG' | translate}}</clr-dg-column>
<clr-dg-column style="width: 90px;" [clrDgField]="'size'">{{'REPOSITORY.SIZE' | translate}}</clr-dg-column> <clr-dg-column style="width: 90px;" [clrDgField]="'size'">{{'REPOSITORY.SIZE' | translate}}</clr-dg-column>

View File

@ -69,11 +69,6 @@
"check-else", "check-else",
"check-whitespace" "check-whitespace"
], ],
"quotemark": [
true,
"double",
"avoid-escape"
],
"radix": true, "radix": true,
"semicolon": [ "semicolon": [
"always" "always"

View File

@ -31,7 +31,7 @@
"clarity-icons": "^0.10.17", "clarity-icons": "^0.10.17",
"clarity-ui": "^0.10.17", "clarity-ui": "^0.10.17",
"core-js": "^2.4.1", "core-js": "^2.4.1",
"harbor-ui": "0.6.37", "harbor-ui": "0.6.41",
"intl": "^1.2.5", "intl": "^1.2.5",
"mutationobserver-shim": "^0.3.2", "mutationobserver-shim": "^0.3.2",
"ngx-cookie": "^1.0.0", "ngx-cookie": "^1.0.0",

View File

@ -221,7 +221,15 @@ export class ListProjectComponent implements OnDestroy {
this.batchDelectionInfos.push(initBatchMessage); this.batchDelectionInfos.push(initBatchMessage);
}); });
this.deletionDialogService.addBatchInfoList(this.batchDelectionInfos); this.deletionDialogService.addBatchInfoList(this.batchDelectionInfos);
this.delProjects(p); let deletionMessage = new ConfirmationMessage(
"PROJECT.DELETION_TITLE",
"PROJECT.DELETION_SUMMARY",
nameArr.join(","),
p,
ConfirmationTargets.PROJECT,
ConfirmationButtons.DELETE_CANCEL
);
this.deletionDialogService.openComfirmDialog(deletionMessage);
} }
} }
delProjects(projects: Project[]) { delProjects(projects: Project[]) {

View File

@ -63,6 +63,7 @@ export class MemberComponent implements OnInit, OnDestroy {
isDelete = false; isDelete = false;
isChangeRole = false; isChangeRole = false;
batchActionInfos: BatchInfo[] = []; batchActionInfos: BatchInfo[] = [];
batchDeletionInfos: BatchInfo[] = [];
constructor( constructor(
private route: ActivatedRoute, private route: ActivatedRoute,
@ -206,17 +207,25 @@ export class MemberComponent implements OnInit, OnDestroy {
this.isDelete = true; this.isDelete = true;
this.isChangeRole = false; this.isChangeRole = false;
let nameArr: string[] = []; let nameArr: string[] = [];
this.batchActionInfos = []; this.batchDeletionInfos = [];
if (m && m.length) { if (m && m.length) {
m.forEach(data => { m.forEach(data => {
nameArr.push(data.username); nameArr.push(data.username);
let initBatchMessage = new BatchInfo (); let initBatchMessage = new BatchInfo ();
initBatchMessage.name = data.username; initBatchMessage.name = data.username;
this.batchActionInfos.push(initBatchMessage); this.batchDeletionInfos.push(initBatchMessage);
}); });
this.OperateDialogService.addBatchInfoList(this.batchActionInfos); this.OperateDialogService.addBatchInfoList(this.batchDeletionInfos);
this.deleteMem(m); let deletionMessage = new ConfirmationMessage(
"MEMBER.DELETION_TITLE",
"MEMBER.DELETION_SUMMARY",
nameArr.join(","),
m,
ConfirmationTargets.PROJECT_MEMBER,
ConfirmationButtons.DELETE_CANCEL
);
this.OperateDialogService.openComfirmDialog(deletionMessage);
} }
} }
@ -225,7 +234,7 @@ export class MemberComponent implements OnInit, OnDestroy {
let promiseLists: any[] = []; let promiseLists: any[] = [];
members.forEach(member => { members.forEach(member => {
if (member.user_id === this.currentUser.user_id) { if (member.user_id === this.currentUser.user_id) {
let findedList = this.batchActionInfos.find(data => data.name === member.username); let findedList = this.batchDeletionInfos.find(data => data.name === member.username);
this.translate.get("BATCH.DELETED_FAILURE").subscribe(res => { this.translate.get("BATCH.DELETED_FAILURE").subscribe(res => {
findedList = BathInfoChanges(findedList, res, false, true); findedList = BathInfoChanges(findedList, res, false, true);
}); });
@ -243,7 +252,7 @@ export class MemberComponent implements OnInit, OnDestroy {
} }
delOperate(projectId: number, memberId: number, username: string) { delOperate(projectId: number, memberId: number, username: string) {
let findedList = this.batchActionInfos.find(data => data.name === username); let findedList = this.batchDeletionInfos.find(data => data.name === username);
return this.memberService return this.memberService
.deleteMember(projectId, memberId) .deleteMember(projectId, memberId)
.then( .then(

View File

@ -69,11 +69,6 @@
"check-else", "check-else",
"check-whitespace" "check-whitespace"
], ],
"quotemark": [
true,
"double",
"avoid-escape"
],
"radix": true, "radix": true,
"semicolon": [ "semicolon": [
true true