diff --git a/src/ui_ng/lib/src/helm-chart/chart-detail/chart-detail-summary.component.html b/src/ui_ng/lib/src/helm-chart/chart-detail/chart-detail-summary.component.html index 4a52061da..c9bf5a1a0 100644 --- a/src/ui_ng/lib/src/helm-chart/chart-detail/chart-detail-summary.component.html +++ b/src/ui_ng/lib/src/helm-chart/chart-detail/chart-detail-summary.component.html @@ -40,7 +40,7 @@ - {{'HELM_CHART.VERSION' | translate }} + {{'HELM_CHART.APP_VERSION' | translate }} {{ summary.appVersion }} diff --git a/src/ui_ng/lib/src/helm-chart/helm-chart.component.html b/src/ui_ng/lib/src/helm-chart/helm-chart.component.html index 864d71052..d64db10c6 100644 --- a/src/ui_ng/lib/src/helm-chart/helm-chart.component.html +++ b/src/ui_ng/lib/src/helm-chart/helm-chart.component.html @@ -24,7 +24,7 @@
- @@ -45,7 +45,10 @@ {{ chart.created | date }} - + + + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} {{'HELM_CHART.OF' | translate}} + {{pagination.totalItems}} {{'HELM_CHART.ITEMS'| translate}} @@ -83,26 +86,35 @@
- - + + diff --git a/src/ui_ng/lib/src/helm-chart/helm-chart.component.scss b/src/ui_ng/lib/src/helm-chart/helm-chart.component.scss index f3ea44d18..c5e0f8725 100644 --- a/src/ui_ng/lib/src/helm-chart/helm-chart.component.scss +++ b/src/ui_ng/lib/src/helm-chart/helm-chart.component.scss @@ -76,4 +76,35 @@ $size60:60px; .margin-right-12 { margin-right:12px; +} + +.file-input { + display: none; +} + +.filename-span { + @include text-overflow; + display: inline-block; + width: 50%; + vertical-align: top; +} + +clr-modal { + .form-group { + padding-left: 6rem; + + .filename-label { + padding-top: 9px; + } + + .filename-input { + margin-top: 12px; + width: 68%; + } + + .file-browser-btn { + margin-left: 15px; + max-width: 25%; + } + } } \ No newline at end of file diff --git a/src/ui_ng/lib/src/helm-chart/helm-chart.component.ts b/src/ui_ng/lib/src/helm-chart/helm-chart.component.ts index 9adfbf66c..7006a87e6 100644 --- a/src/ui_ng/lib/src/helm-chart/helm-chart.component.ts +++ b/src/ui_ng/lib/src/helm-chart/helm-chart.component.ts @@ -5,8 +5,10 @@ import { ChangeDetectionStrategy, Output, EventEmitter, + ViewChild, ChangeDetectorRef } from "@angular/core"; +import { NgForm } from '@angular/forms'; import { TranslateService } from "@ngx-translate/core"; import { State } from "clarity-angular"; @@ -15,6 +17,7 @@ import { ErrorHandler } from "../error-handler/error-handler"; import { toPromise, DEFAULT_PAGE_SIZE } from "../utils"; import { HelmChartService } from "../service/helm-chart.service"; import { DefaultHelmIcon} from "../shared/shared.const"; +import { Roles } from './../shared/shared.const'; @Component({ selector: "hbr-helm-chart", @@ -28,6 +31,7 @@ export class HelmChartComponent implements OnInit { @Input() projectName = "unknown"; @Input() urlPrefix: string; @Input() hasSignedIn: boolean; + @Input() projectRoleID = Roles.OTHER; @Input() hasProjectAdminRole: boolean; @Output() chartClickEvt = new EventEmitter(); @Output() chartDownloadEve = new EventEmitter(); @@ -56,6 +60,8 @@ export class HelmChartComponent implements OnInit { totalCount = 0; currentState: State; + @ViewChild('chartUploadForm') uploadForm: NgForm; + constructor( private errorHandler: ErrorHandler, private translateService: TranslateService, @@ -68,6 +74,10 @@ export class HelmChartComponent implements OnInit { return this.systemInfo ? this.systemInfo.registry_url : ""; } + public get developerRoleOrAbove(): boolean { + return this.projectRoleID === Roles.DEVELOPER || this.hasProjectAdminRole; + } + ngOnInit(): void { // Get system info for tag views toPromise(this.systemInfoService.getSystemInfo()) @@ -95,6 +105,7 @@ export class HelmChartComponent implements OnInit { charts => { this.charts = charts.filter(x => x.name.includes(this.lastFilteredChartName)); this.chartsCopy = charts.map(x => Object.assign({}, x)); + this.totalCount = charts.length; }, err => { this.errorHandler.error(err); @@ -106,10 +117,22 @@ export class HelmChartComponent implements OnInit { this.chartClickEvt.emit(item.name); } + resetUploadForm() { + this.chartFile = null; + this.provFile = null; + this.uploadForm.reset(); + } + onChartUpload() { + this.resetUploadForm(); this.isUploadModalOpen = true; } + cancelUpload() { + this.resetUploadForm(); + this.isUploadModalOpen = false; + } + upload() { if (!this.chartFile && !this.provFile) { return; diff --git a/src/ui_ng/lib/src/helm-chart/versions/helm-chart-version.component.html b/src/ui_ng/lib/src/helm-chart/versions/helm-chart-version.component.html index d601f75f4..998161544 100644 --- a/src/ui_ng/lib/src/helm-chart/versions/helm-chart-version.component.html +++ b/src/ui_ng/lib/src/helm-chart/versions/helm-chart-version.component.html @@ -38,10 +38,6 @@ - @@ -70,8 +66,11 @@ {{ v.created | date}} - - {{pagination.totalItems}} {{'HELM_CHART.ITEMS' | translate}} + + + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} {{'HELM_CHART.OF' | translate}} + + {{pagination.totalItems}} {{'HELM_CHART.ITEMS'| translate}} @@ -104,13 +103,16 @@
-
{{item.appVersion}}
+
{{item.version}}
@@ -120,28 +122,5 @@ - - - - \ No newline at end of file diff --git a/src/ui_ng/lib/src/helm-chart/versions/helm-chart-version.component.ts b/src/ui_ng/lib/src/helm-chart/versions/helm-chart-version.component.ts index 86f3240f1..e4a9fca98 100644 --- a/src/ui_ng/lib/src/helm-chart/versions/helm-chart-version.component.ts +++ b/src/ui_ng/lib/src/helm-chart/versions/helm-chart-version.component.ts @@ -8,7 +8,6 @@ import { Output, EventEmitter } from "@angular/core"; -import { NgForm } from "@angular/forms"; import { Observable } from "rxjs/Observable"; import "rxjs/add/observable/forkJoin"; @@ -72,16 +71,12 @@ export class ChartVersionComponent implements OnInit { totalCount = 0; currentState: State; - isUploading = false; - isUploadModalOpen = false; chartFile: File; provFile: File; @ViewChild("confirmationDialog") confirmationDialog: ConfirmationDialogComponent; - @ViewChild("chartUploadForm") form: NgForm; - constructor( private errorHandler: ErrorHandler, private translateService: TranslateService, @@ -122,6 +117,7 @@ export class ChartVersionComponent implements OnInit { versions => { this.chartVersions = versions.filter(x => x.version.includes(this.lastFilteredVersionName)); this.versionsCopy = versions.map(x => Object.assign({}, x)); + this.totalCount = versions.length; }, err => { this.errorHandler.error(err); @@ -201,9 +197,6 @@ export class ChartVersionComponent implements OnInit { } ); } - versionUpload() { - this.isUploadModalOpen = true; - } showCard(cardView: boolean) { if (this.isCardView === cardView) { @@ -236,30 +229,6 @@ export class ChartVersionComponent implements OnInit { } } - upload() { - if (!this.chartFile && !this.provFile) { - return; - } - if (this.isUploading) { return; }; - this.isUploading = true; - this.helmChartService - .uploadChart(this.projectName, this.chartFile, this.provFile) - .finally(() => { - this.isUploading = false; - this.isUploadModalOpen = false; - this.refresh(); - let hnd = setInterval(() => this.cdr.markForCheck(), 100); - setTimeout(() => clearInterval(hnd), 3000); - }) - .subscribe( - () => { - this.translateService.get("HELM_CHART.FILE_UPLOADED") - .subscribe(res => this.errorHandler.info(res)); - }, - err => this.errorHandler.error(err) - ); - } - onChartFileChangeEvent(event) { if (event.target.files && event.target.files.length > 0) { this.chartFile = event.target.files[0]; @@ -275,21 +244,20 @@ export class ChartVersionComponent implements OnInit { env.stopPropagation(); this.openVersionDeleteModal([version]); } + openVersionDeleteModal(versions: HelmChartVersion[]) { - let versionNames = versions.map(v => v.name).join(","); - this.translateService.get("HELM_CHART.DELETE_CHART_VERSION").subscribe(key => { - let message = new ConfirmationMessage( - "HELM_CHART.DELETE_CHART_VERSION_TITLE", - key, - versionNames, - versions, - ConfirmationTargets.HELM_CHART, - ConfirmationButtons.DELETE_CANCEL - ); - this.confirmationDialog.open(message); - let hnd = setInterval(() => this.cdr.markForCheck(), 100); - setTimeout(() => clearInterval(hnd), 2000); - }); + let versionNames = versions.map(v => v.version).join(","); + let message = new ConfirmationMessage( + "HELM_CHART.DELETE_CHART_VERSION_TITLE", + "HELM_CHART.DELETE_CHART_VERSION", + versionNames, + versions, + ConfirmationTargets.HELM_CHART, + ConfirmationButtons.DELETE_CANCEL + ); + this.confirmationDialog.open(message); + let hnd = setInterval(() => this.cdr.markForCheck(), 100); + setTimeout(() => clearInterval(hnd), 2000); } confirmDeletion(message: ConfirmationAcknowledgement) { diff --git a/src/ui_ng/lib/src/shared/shared.const.ts b/src/ui_ng/lib/src/shared/shared.const.ts index c2c0d3750..7df04c52e 100644 --- a/src/ui_ng/lib/src/shared/shared.const.ts +++ b/src/ui_ng/lib/src/shared/shared.const.ts @@ -92,3 +92,10 @@ export const LabelColor = [ export const RoleMapping = { 'projectAdmin': 'MEMBER.PROJECT_ADMIN', 'developer': 'MEMBER.DEVELOPER', 'guest': 'MEMBER.GUEST' }; export const DefaultHelmIcon = '/static/images/helm-gray.png'; + +export enum Roles { + PROJECT_ADMIN = 1, + DEVELOPER = 2, + GUEST = 3, + OTHER = 0, +} diff --git a/src/ui_ng/src/app/group/add-group-modal/add-group-modal.component.html b/src/ui_ng/src/app/group/add-group-modal/add-group-modal.component.html index d883b74bb..3f3c778c8 100644 --- a/src/ui_ng/src/app/group/add-group-modal/add-group-modal.component.html +++ b/src/ui_ng/src/app/group/add-group-modal/add-group-modal.component.html @@ -14,6 +14,7 @@ [class.invalid]="isDNInvalid"> @@ -26,11 +27,19 @@
- -
diff --git a/src/ui_ng/src/app/group/add-group-modal/add-group-modal.component.ts b/src/ui_ng/src/app/group/add-group-modal/add-group-modal.component.ts index b6660c6dd..c6937cfe2 100644 --- a/src/ui_ng/src/app/group/add-group-modal/add-group-modal.component.ts +++ b/src/ui_ng/src/app/group/add-group-modal/add-group-modal.component.ts @@ -45,6 +45,10 @@ export class AddGroupModalComponent implements OnInit, OnDestroy { let dnControl = this.groupForm.controls['ldap_group_dn']; return dnControl && dnControl.invalid && (dnControl.dirty || dnControl.touched); } + public get isNameInvalid(): boolean { + let dnControl = this.groupForm.controls['group_name']; + return dnControl && dnControl.invalid && (dnControl.dirty || dnControl.touched); + } public get isFormValid(): boolean { return this.groupForm.valid; diff --git a/src/ui_ng/src/app/group/group.component.html b/src/ui_ng/src/app/group/group.component.html index a2d3b313c..9f99ac52d 100644 --- a/src/ui_ng/src/app/group/group.component.html +++ b/src/ui_ng/src/app/group/group.component.html @@ -30,7 +30,10 @@ - {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} {{'USER.OF' | translate }} {{pagination.totalItems}} {{'GROUP.GROUPS' | translate}} + + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} {{'GROUP.OF' | translate}} + + {{pagination.totalItems}} {{'GROUP.ITEMS' | translate}} diff --git a/src/ui_ng/src/app/project/chart-detail/chart-detail.component.ts b/src/ui_ng/src/app/project/chart-detail/chart-detail.component.ts index 6861da381..a1751fa95 100644 --- a/src/ui_ng/src/app/project/chart-detail/chart-detail.component.ts +++ b/src/ui_ng/src/app/project/chart-detail/chart-detail.component.ts @@ -36,7 +36,7 @@ export class ChartDetailComponent implements OnInit { let resolverData = this.route.snapshot.data; if (resolverData) { this.project = (resolverData["projectResolver"]); - this.roleName = RoleMapping[this.project.role_name]; + this.roleName = this.project.role_name; this.hasProjectAdminRole = this.project.has_project_admin_role; } } diff --git a/src/ui_ng/src/app/project/list-chart-versions/list-chart-versions.component.ts b/src/ui_ng/src/app/project/list-chart-versions/list-chart-versions.component.ts index a200bac36..bc3c2e1b9 100644 --- a/src/ui_ng/src/app/project/list-chart-versions/list-chart-versions.component.ts +++ b/src/ui_ng/src/app/project/list-chart-versions/list-chart-versions.component.ts @@ -5,7 +5,6 @@ import { Component, OnInit } from '@angular/core'; import { Project } from './../project'; import { SessionUser } from './../../shared/session-user'; import { SessionService } from './../../shared/session.service'; -import { RoleMapping } from '../../shared/shared.const'; @Component({ selector: 'list-chart-version', @@ -40,7 +39,7 @@ export class ListChartVersionsComponent implements OnInit { if (resolverData) { let project = (resolverData["projectResolver"]); this.hasProjectAdminRole = project.has_project_admin_role; - this.roleName = RoleMapping[project.role_name]; + this.roleName = project.role_name; this.projectName = project.name; } } diff --git a/src/ui_ng/src/app/project/list-charts/list-charts.component.html b/src/ui_ng/src/app/project/list-charts/list-charts.component.html index 00f1dd372..9f6c59098 100644 --- a/src/ui_ng/src/app/project/list-charts/list-charts.component.html +++ b/src/ui_ng/src/app/project/list-charts/list-charts.component.html @@ -3,6 +3,7 @@ [projectName]='projectName' [urlPrefix]='urlPrefix' [hasSignedIn]='hasSignedIn' + [projectRoleID]='project_member_role_id' [hasProjectAdminRole]='hasProjectAdminRole' (chartClickEvt)='onChartClick($event)'> diff --git a/src/ui_ng/src/app/project/list-charts/list-charts.component.ts b/src/ui_ng/src/app/project/list-charts/list-charts.component.ts index f87e560f5..f09cdcf2d 100644 --- a/src/ui_ng/src/app/project/list-charts/list-charts.component.ts +++ b/src/ui_ng/src/app/project/list-charts/list-charts.component.ts @@ -18,6 +18,7 @@ export class ListChartsComponent implements OnInit { urlPrefix: string; hasSignedIn: boolean; hasProjectAdminRole: boolean; + project_member_role_id: number; currentUser: SessionUser; constructor( @@ -35,6 +36,8 @@ export class ListChartsComponent implements OnInit { let project = (resolverData["projectResolver"]); this.projectName = project.name; this.hasProjectAdminRole = project.has_project_admin_role; + this.project_member_role_id = project.current_user_role_id; + console.log(this.project_member_role_id); } } diff --git a/src/ui_ng/src/app/project/member/add-group/add-group.component.html b/src/ui_ng/src/app/project/member/add-group/add-group.component.html index d723dd837..fa7be3b61 100644 --- a/src/ui_ng/src/app/project/member/add-group/add-group.component.html +++ b/src/ui_ng/src/app/project/member/add-group/add-group.component.html @@ -75,7 +75,10 @@ - + + + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} {{'MEMBER.OF' | translate}} + {{pagination.totalItems}} {{'MEMBER.ITEMS' | translate}} diff --git a/src/ui_ng/src/app/project/member/add-group/add-group.component.ts b/src/ui_ng/src/app/project/member/add-group/add-group.component.ts index b5ea17a16..82f7ffb74 100644 --- a/src/ui_ng/src/app/project/member/add-group/add-group.component.ts +++ b/src/ui_ng/src/app/project/member/add-group/add-group.component.ts @@ -34,6 +34,7 @@ export class AddGroupComponent implements OnInit { group = new UserGroup(); selectedGroups: UserGroup[] = []; groups: UserGroup[] = []; + totalCount = 0; dnTooltip = 'TOOLTIP.ITEM_REQUIRED'; @@ -76,6 +77,7 @@ export class AddGroupComponent implements OnInit { return group.group_name.includes(this.currentTerm) && !this.memberList.some(member => member.entity_type === 'g' && member.entity_id === group.id); }); + this.totalCount = groups.length; this.onLoading = false; this.ref.detectChanges(); }); @@ -87,6 +89,7 @@ export class AddGroupComponent implements OnInit { } resetModaldata() { + this.createGroupMode = false; this.group = new UserGroup(); this.selectedRole = 1; this.selectedGroups = []; diff --git a/src/ui_ng/src/app/project/project-detail/project-detail.component.ts b/src/ui_ng/src/app/project/project-detail/project-detail.component.ts index 2d8f5d0c4..ac7a60694 100644 --- a/src/ui_ng/src/app/project/project-detail/project-detail.component.ts +++ b/src/ui_ng/src/app/project/project-detail/project-detail.component.ts @@ -19,7 +19,6 @@ import { Project } from '../project'; import { SessionService } from '../../shared/session.service'; import { ProjectService } from '../../project/project.service'; -import { RoleMapping } from '../../shared/shared.const'; import {AppConfigService} from "../../app-config.service"; @Component({ @@ -46,7 +45,7 @@ export class ProjectDetailComponent { this.route.data.subscribe(data => { this.currentProject = data['projectResolver']; this.isMember = this.currentProject.is_member; - this.roleName = RoleMapping[this.currentProject.role_name]; + this.roleName = this.currentProject.role_name; }); } diff --git a/src/ui_ng/src/app/project/project-routing-resolver.service.ts b/src/ui_ng/src/app/project/project-routing-resolver.service.ts index c327ca621..db83bb0d8 100644 --- a/src/ui_ng/src/app/project/project-routing-resolver.service.ts +++ b/src/ui_ng/src/app/project/project-routing-resolver.service.ts @@ -1,3 +1,4 @@ +import { RoleInfo } from './../shared/shared.const'; // Copyright (c) 2017 VMware, Inc. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); @@ -19,6 +20,8 @@ import { ProjectService } from './project.service'; import { SessionService } from '../shared/session.service'; import 'rxjs/add/operator/mergeMap'; +import { Roles } from '../shared/shared.const' + @Injectable() export class ProjectRoutingResolver implements Resolve { @@ -40,17 +43,14 @@ export class ProjectRoutingResolver implements Resolve { if (project) { let currentUser = this.sessionService.getCurrentUser(); if (currentUser) { - let projectMembers = this.sessionService.getProjectMembers(); - if (projectMembers) { - let currentMember = projectMembers.find(m => m.entity_id === currentUser.user_id); - if (currentMember) { - project.is_member = true; - project.has_project_admin_role = (currentMember.role_name === 'projectAdmin'); - project.role_name = currentMember.role_name; - } - } if (currentUser.has_admin_role) { project.has_project_admin_role = true; + project.is_member = true; + project.role_name = 'MEMBER.SYS_ADMIN'; + } else { + project.has_project_admin_role = (project.current_user_role_id === Roles.PROJECT_ADMIN); + project.is_member = (project.current_user_role_id > 0); + project.role_name = RoleInfo[project.current_user_role_id]; } } return project; diff --git a/src/ui_ng/src/app/shared/shared.const.ts b/src/ui_ng/src/app/shared/shared.const.ts index 2478447e2..2fa65d081 100644 --- a/src/ui_ng/src/app/shared/shared.const.ts +++ b/src/ui_ng/src/app/shared/shared.const.ts @@ -83,3 +83,10 @@ export const ProjectRoles = [ { id: 2, value: "MEMBER.DEVELOPER" }, { id: 3, value: "MEMBER.GUEST" } ]; + +export enum Roles { + PROJECT_ADMIN = 1, + DEVELOPER = 2, + GUEST = 3, + OTHER = 0, +} diff --git a/src/ui_ng/src/i18n/lang/en-us-lang.json b/src/ui_ng/src/i18n/lang/en-us-lang.json index 443b62f00..af3c8793c 100644 --- a/src/ui_ng/src/i18n/lang/en-us-lang.json +++ b/src/ui_ng/src/i18n/lang/en-us-lang.json @@ -36,7 +36,10 @@ "EDIT": "EDIT", "SWITCH": "SWITCH", "REPLICATE": "REPLICATE", - "ACTIONS": "Actions" + "ACTIONS": "Actions", + "BROWSE": "Browse", + "UPLOAD": "Upload", + "NO_FILE": "No file selected" }, "BATCH": { "DELETED_SUCCESS": "Deleted successfully", @@ -265,7 +268,9 @@ "REG_TIME": "Registration Time", "ADD_GROUP_SUCCESS": "Add group success", "EDIT_GROUP_SUCCESS": "Edit group success", - "LDAP_TYPE": "LDAP" + "LDAP_TYPE": "LDAP", + "OF": "of", + "ITEMS": "items" }, "AUDIT_LOG": { "USERNAME": "Username", @@ -487,6 +492,7 @@ "MAINTAINERS": "Maintainers", "PULLS": "Pull Count", "VERSION": "Version", + "APP_VERSION": "Application Version", "INSTALL": "Install", "INSTALL_CHART": "Install Chart", "NAME": "Name", diff --git a/src/ui_ng/src/i18n/lang/es-es-lang.json b/src/ui_ng/src/i18n/lang/es-es-lang.json index 0563fa603..dbb18db27 100644 --- a/src/ui_ng/src/i18n/lang/es-es-lang.json +++ b/src/ui_ng/src/i18n/lang/es-es-lang.json @@ -36,8 +36,10 @@ "EDIT": "EDITAR", "SWITCH": "SWITCH", "REPLICATE": "REPLICATE", - "ACTIONS": "Actions" - + "ACTIONS": "Actions", + "BROWSE": "Browse", + "UPLOAD": "Upload", + "NO_FILE": "No file selected" }, "BATCH": { "DELETED_SUCCESS": "Deleted successfully", @@ -264,7 +266,9 @@ "REG_TIME": "Registration Time", "ADD_GROUP_SUCCESS": "Add group success", "EDIT_GROUP_SUCCESS": "Edit group success", - "LDAP_TYPE": "LDAP" + "LDAP_TYPE": "LDAP", + "OF": "of", + "ITEMS": "items" }, "AUDIT_LOG": { "USERNAME": "Nombre de usuario", @@ -486,6 +490,7 @@ "MAINTAINERS": "Maintainers", "PULLS": "Pull Count", "VERSION": "Version", + "APP_VERSION": "Application Version", "INSTALL": "Install", "INSTALL_CHART": "Install Chart", "NAME": "Name", diff --git a/src/ui_ng/src/i18n/lang/fr-fr-lang.json b/src/ui_ng/src/i18n/lang/fr-fr-lang.json index 764d286e4..0e29e2971 100644 --- a/src/ui_ng/src/i18n/lang/fr-fr-lang.json +++ b/src/ui_ng/src/i18n/lang/fr-fr-lang.json @@ -33,7 +33,10 @@ "NO": "NON", "NEGATIVE": "NEGATIF", "COPY": "COPIER", - "ACTIONS": "Actions" + "ACTIONS": "Actions", + "BROWSE": "Browse", + "UPLOAD": "Upload", + "NO_FILE": "No file selected" }, "TOOLTIP": { "EMAIL": "L'email doit être une adresse email valide comme name@example.com.", @@ -248,7 +251,9 @@ "REG_TIME": "Registration Time", "ADD_GROUP_SUCCESS": "Add group success", "EDIT_GROUP_SUCCESS": "Edit group success", - "LDAP_TYPE": "LDAP" + "LDAP_TYPE": "LDAP", + "OF": "of", + "ITEMS": "items" }, "AUDIT_LOG": { "USERNAME": "Nom d'utilisateur", @@ -462,6 +467,7 @@ "MAINTAINERS": "Maintainers", "PULLS": "Pull Count", "VERSION": "Version", + "APP_VERSION": "Application Version", "INSTALL": "Install", "INSTALL_CHART": "Install Chart", "NAME": "Name", diff --git a/src/ui_ng/src/i18n/lang/zh-cn-lang.json b/src/ui_ng/src/i18n/lang/zh-cn-lang.json index ea3c776ef..52d432a0a 100644 --- a/src/ui_ng/src/i18n/lang/zh-cn-lang.json +++ b/src/ui_ng/src/i18n/lang/zh-cn-lang.json @@ -36,7 +36,10 @@ "EDIT": "编辑", "SWITCH": "切换", "REPLICATE": "复制", - "ACTIONS": "操作" + "ACTIONS": "操作", + "BROWSE": "选择文件", + "UPLOAD": "上传", + "NO_FILE": "未选择文件" }, "BATCH": { "DELETED_SUCCESS": "删除成功", @@ -264,7 +267,9 @@ "REG_TIME": "注册时间", "ADD_GROUP_SUCCESS": "添加组成功", "EDIT_GROUP_SUCCESS": "修改组成功", - "LDAP_TYPE": "LDAP" + "LDAP_TYPE": "LDAP", + "OF": "共计", + "ITEMS": "条记录" }, "AUDIT_LOG": { "USERNAME": "用户名", @@ -492,8 +497,9 @@ "REPO": "仓库", "FILTER_FOR_CHARTS": "过滤Chart", "DELETE": "删除", - "OF": "的", + "OF": "共计", "VERSIONS": "版本", + "APP_VERSION": "应用版本", "IMAGES": "镜像", "ENGINE": "引擎", "ACTION": "动作", @@ -511,7 +517,7 @@ "SIGN": "签名", "SIGNED": "已签名", "UNSIGNED": "未签名", - "ITEMS": "项", + "ITEMS": "条记录", "NO_README": "此Chart未提供README文件", "SECURITY": "安全", "ACTIVE": "正常",