Merge pull request #5459 from ninjadq/refine_chart_ui

Refine chart ui
This commit is contained in:
Qian Deng 2018-08-06 22:53:40 -04:00 committed by GitHub
commit 8c6df84b86
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
20 changed files with 269 additions and 102 deletions

View File

@ -35,10 +35,14 @@ npm link
cd /harbor_src/ui_ng
npm link harbor-ui
## Rollup
./node_modules/.bin/ngc -p tsconfig-aot.json
sed -i 's/* as//g' src/app/shared/gauge/gauge.component.js
./node_modules/.bin/rollup -c rollup-config.js
## Unlink
npm unlink harbor-ui
#Copy built js to the static folder
cp ./dist/build.min.js ../ui/static/

View File

@ -17,4 +17,15 @@
z-index: 100;
right: 35px;
margin-top: 4px;
}
@mixin absolute-center($width:108px) {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
margin: auto;
width: $width !important;
height: $width !important;
}

View File

@ -18,14 +18,15 @@
<tbody>
<tr>
<td class="left">{{'HELM_CHART.HOME' | translate }}</td>
<td class="left">
<td class="left text-wrapper">
<a href="{{summary.home}}">{{summary.home}}</a>
</td>
</tr>
<tr>
<td class="left">{{'HELM_CHART.SRC_REPO' | translate }}</td>
<td class="left">
<a href="{{summary.sources}}">{{summary.sources}}</a>
<tr *ngFor="let src of summary.sources; let i = index">
<td class="left" *ngIf="i === 0">{{'HELM_CHART.SRC_REPO' | translate }}</td>
<td class="left" *ngIf="i !== 0"></td>
<td class="left text-wrapper" >
<a href="{{src}}">{{src}}</a>
</td>
</tr>
<tr>

View File

@ -19,4 +19,8 @@
.content-icon {
margin-right: 6px;
}
.text-wrapper {
word-break: break-all;
}
}

View File

@ -1,21 +1,22 @@
<div class="row flex-items-xs-right">
<div class="swichy-container">
<div class="row flex-items-xs-between values-header">
<div *ngIf="valueMode" class="title-container">
<label>{{'HELM_CHART.SHOW_KV' | translate }}</label>
</div>
<div *ngIf="!valueMode" class="title-container">
<label>{{'HELM_CHART.SHOW_YAML' | translate }}</label>
</div>
<div class="switch-container">
<span class="card-btn" (click)="showYamlFile(false)" (mouseenter)="mouseEnter('value') " (mouseleave)="mouseLeave('value')">
<clr-icon size="36" shape="view-list" title='list values'
[ngClass]="{'is-highlight': isValueMode || isHovering('value') }" ></clr-icon>
<clr-icon size="24" shape="view-list" title='list values' [ngClass]="{'is-highlight': isValueMode || isHovering('value') }"></clr-icon>
</span>
<span class="list-btn" (click)="showYamlFile(true)" (mouseenter)="mouseEnter('yaml') " (mouseleave)="mouseLeave('yaml')">
<clr-icon size="36" shape="file" title="yaml file"
[ngClass]="{'is-highlight': !isValueMode || isHovering('yaml') }"></clr-icon>
<clr-icon size="24" shape="file" title="yaml file" [ngClass]="{'is-highlight': !isValueMode || isHovering('yaml') }"></clr-icon>
</span>
</div>
</div>
<div class="row value-container">
<div class="col-xs-8" *ngIf="valueMode">
<div>
<label>{{'HELM_CHART.SHOW_KV' | translate }}</label>
</div>
<table class="table">
<tbody>
<tr *ngFor="let key of objKeys(values)">
@ -26,9 +27,6 @@
</table>
</div>
<div class="col-xs-8" *ngIf="!valueMode">
<div>
<label>{{'HELM_CHART.SHOW_YAML' | translate }}</label>
</div>
<div class="yaml-container" [innerHTML]="yaml | language : 'yaml' | markdown"></div>
</div>
</div>

View File

@ -4,11 +4,18 @@
}
}
.swichy-container {
margin-top: 3px;
margin-right: 15px;
.values-header {
margin-top: 12px;
.title-container {
margin-left: 15px;
}
.switch-container {
margin-right: 15px;
}
}
pre {
max-height: max-content;
padding-left: 21px;

View File

@ -15,11 +15,9 @@
(click)="downloadChart()">{{'HELM_CHART.DOWNLOAD' | translate}}</button>
</div>
</div>
<div class="detail-loading" *ngIf="loading">
<span class="spinner">
Loading...
</span>
</div>
<span *ngIf="loading" class="spinner spinner-lg detail-loading">
Loading...
</span>
<div *ngIf="!loading && isChartExist">
<clr-tabs>
<clr-tab>

View File

@ -1,3 +1,5 @@
@import "../../mixin";
.title-container {
display: flex;
.chart-name {
@ -10,11 +12,5 @@
}
.detail-loading {
position: absolute;
top: 0;
left: 0;
right:0;
bottom:0;
width: 108px !important;
height: 108px !important;
@include absolute-center;
}

View File

@ -3,7 +3,9 @@
<div class="toolbar">
<div class="row flex-items-xs-right option-right rightPos">
<div class="flex-xs-middle">
<hbr-filter [withDivider]="true" filterPlaceholder="{{'HELM_CHART.FILTER_FOR_CHARTS' | translate}}" [currentValue]="lastFilteredChartName"></hbr-filter>
<hbr-filter [withDivider]="true" filterPlaceholder="{{'HELM_CHART.FILTER_FOR_CHARTS' | translate}}"
[currentValue]="lastFilteredChartName"
(filterEvt)="updateFilterValue($event)"></hbr-filter>
<span class="card-btn" (click)="showCard(true)" (mouseenter)="mouseEnter('card') " (mouseleave)="mouseLeave('card')">
<clr-icon [ngClass]="{'is-highlight': isCardView || isHovering('card') }" shape="view-cards"></clr-icon>
</span>
@ -27,7 +29,7 @@
</button>
</clr-dg-action-bar>
<clr-dg-column [clrDgField]="'name'">{{'HELM_CHART.NAME' | translate}}</clr-dg-column>
<clr-dg-column>{{'HELM_CHART.VERSIONS' | translate}}</clr-dg-column>
<clr-dg-column>{{'HELM_CHART.CHARTVERSIONS' | translate}}</clr-dg-column>
<clr-dg-column>{{'HELM_CHART.CREATED' | translate}}</clr-dg-column>
<clr-dg-placeholder>{{'HELM_CHART.PLACEHOLDER' | translate }}</clr-dg-placeholder>
<clr-dg-row *ngFor="let chart of charts" [clrDgItem]="chart">
@ -39,8 +41,7 @@
</clr-dg-row>
<clr-dg-footer>
<clr-dg-pagination #pagination [clrDgPageSize]="pageSize">
{{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} {{'HELM_CHART.OF' | translate}} {{pagination.totalItems}} {{'HELM_CHART.ITEMS'
| translate}}
{{pagination.totalItems}} {{'HELM_CHART.ITEMS'| translate}}
</clr-dg-pagination>
</clr-dg-footer>
</clr-datagrid>
@ -69,9 +70,9 @@
</div>
</a>
</div>
<div *ngIf="loading" [ngClass]="{'central-block-loading': isFirstPage, 'central-block-loading-more': !isFirstPage}">
<div *ngIf="loading">
<span class="vertical-helper"></span>
<div class="spinner"></div>
<span class="spinner"></span>
</div>
</div>
<clr-modal [(clrModalOpen)]="isUploadModalOpen" [clrModalStaticBackdrop]="true">
@ -89,11 +90,11 @@
</div>
</section>
<button type="submit" class="btn btn-secondary" [disabled]="isUploading">
<span *ngIf="!isUploading">{{'HELM_CHART.UPLOAD' | translate}}</span>
<span *ngIf="isUploading" class="spinner spinner-inline">
Loading...
</span>
<span>{{'HELM_CHART.UPLOAD' | translate}}</span>
</button>
<span *ngIf="isUploading" class="spinner spinner-inline">
Loading...
</span>
</form>
</div>
</clr-modal>

View File

@ -59,10 +59,4 @@
display: inline-block;
height: 100%;
vertical-align: middle;
}
.spinner {
width: 100px;
height: 100px;
vertical-align: middle;
}

View File

@ -76,6 +76,11 @@ export class HelmChartComponent implements OnInit {
}
updateFilterValue(value: string) {
this.lastFilteredChartName = value;
this.refresh();
}
refresh() {
this.loading = true;
this.helmChartService
@ -87,7 +92,7 @@ export class HelmChartComponent implements OnInit {
})
.subscribe(
charts => {
this.charts = charts;
this.charts = charts.filter(x => x.name.includes(this.lastFilteredChartName));
this.chartsCopy = charts.map(x => Object.assign({}, x));
},
err => {

View File

@ -16,7 +16,9 @@
<div class="toolbar">
<div class="row flex-items-xs-right option-right rightPos">
<div class="flex-xs-middle">
<hbr-filter [withDivider]="true" filterPlaceholder="{{'HELM_CHART.FILTER_FOR_CHARTS' | translate}}" [currentValue]="lastFilteredVersionName"></hbr-filter>
<hbr-filter [withDivider]="true" filterPlaceholder="{{'HELM_CHART.FILTER_FOR_CHARTS' | translate}}"
[currentValue]="lastFilteredVersionName"
(filterEvt)="updateFilterValue($event)"></hbr-filter>
<span class="card-btn" (click)="showCard(true)" (mouseenter)="mouseEnter('card') " (mouseleave)="mouseLeave('card')">
<clr-icon [ngClass]="{'is-highlight': isCardView || isHovering('card') }" shape="view-cards"></clr-icon>
</span>
@ -52,12 +54,13 @@
<clr-dg-column>{{'HELM_CHART.ENGINE' | translate }}</clr-dg-column>
<clr-dg-column>{{'HELM_CHART.MAINTAINERS' | translate }}</clr-dg-column>
<clr-dg-column>{{'HELM_CHART.CREATED' | translate }}</clr-dg-column>
<clr-dg-placeholder>{{'HELM_CHART.NO_VERSION_PLACEHOLDER' | translate }}</clr-dg-placeholder>
<clr-dg-row *ngFor="let v of chartVersions" [clrDgItem]="v">
<clr-dg-cell>
<span class="list-img">
<img [src]="v.icon ?v.icon:chartDefaultIcon" (error)="getDefaultIcon(v);" />
</span>
<a href="#" (click)="onVersionClick(v)">{{ v.version }}</a>
<a href="javascript:void(0)" (click)="onVersionClick(v)">{{ v.version }}</a>
</clr-dg-cell>
<clr-dg-cell>{{ v.engine }}</clr-dg-cell>
<clr-dg-cell>{{ getMaintainerString(v.maintainers) }}</clr-dg-cell>
@ -65,8 +68,7 @@
</clr-dg-row>
<clr-dg-footer>
<clr-dg-pagination #pagination [clrDgPageSize]="pageSize">
{{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} {{'HELM_CHART.OF' | translate}} {{pagination.totalItems}} {{'HELM_CHART.VERSIONS'
| translate}}
{{pagination.totalItems}} {{'HELM_CHART.ITEMS' | translate}}
</clr-dg-pagination>
</clr-dg-footer>
</clr-datagrid>
@ -106,9 +108,9 @@
</div>
</a>
</div>
<div *ngIf="loading" [ngClass]="{'central-block-loading': isFirstPage, 'central-block-loading-more': !isFirstPage}">
<div *ngIf="loading">
<span class="vertical-helper"></span>
<div class="spinner"></div>
<span class="spinner"></span>
</div>
</div>
<clr-modal [(clrModalOpen)]="isUploadModalOpen" [clrModalStaticBackdrop]="true">
@ -126,11 +128,11 @@
</div>
</section>
<button type="submit" class="btn btn-secondary" [disabled]="isUploading">
<span *ngIf="!isUploading">{{'HELM_CHART.UPLOAD' | translate}}</span>
<span *ngIf="isUploading" class="spinner spinner-inline">
Loading...
</span>
<span>{{'HELM_CHART.UPLOAD' | translate}}</span>
</button>
<span *ngIf="isUploading" class="spinner spinner-inline">
Loading...
</span>
</form>
</div>
</clr-modal>

View File

@ -1,3 +1,5 @@
@import "../../mixin";
.title-container {
display: flex;
.chart-name-span {
@ -14,10 +16,7 @@
.toolbar {
overflow: hidden;
.rightPos {
position: absolute;
z-index: 100;
right: 35px;
margin-top: 4px;
@include grid-left-top-pos;
.filter-divider {
display: inline-block;
height: 16px;
@ -87,10 +86,4 @@
display: inline-block;
height: 100%;
vertical-align: middle;
}
.spinner {
width: 100px;
height: 100px;
vertical-align: middle;
}

View File

@ -104,6 +104,11 @@ export class ChartVersionComponent implements OnInit {
this.lastFilteredVersionName = "";
}
updateFilterValue(value: string) {
this.lastFilteredVersionName = value;
this.refresh();
}
refresh() {
this.loading = true;
this.helmChartService
@ -115,13 +120,10 @@ export class ChartVersionComponent implements OnInit {
})
.subscribe(
versions => {
this.chartVersions = versions;
this.chartVersions = versions.filter(x => x.version.includes(this.lastFilteredVersionName));
this.versionsCopy = versions.map(x => Object.assign({}, x));
},
err => {
if (err.status && err.status === 404) {
this.backEvt.emit();
}
this.errorHandler.error(err);
}
);
@ -163,7 +165,11 @@ export class ChartVersionComponent implements OnInit {
deleteVersions(versions: HelmChartVersion[]) {
if (versions && versions.length < 1) { return; }
let versionObs = versions.map(v => this.deleteVersion(v));
Observable.forkJoin(versionObs).finally(() => this.refresh()).subscribe();
Observable.forkJoin(versionObs).finally(() => this.refresh()).subscribe(res => {
if (this.chartVersions.length === versionObs.length) {
this.backEvt.emit();
}
});
}
versionDownload(item?: HelmChartVersion) {

View File

@ -1,5 +1,5 @@
<clr-modal [(clrModalOpen)]="addMemberOpened" [clrModalStaticBackdrop]="staticBackdrop" [clrModalClosable]="closable">
<h3 class="modal-title">{{'MEMBER.NEW_USER' | translate}}</h3>
<h3 class="modal-title">{{'MEMBER.NEW_MEMBER' | translate}}</h3>
<div class="modal-body">
<label>{{ 'MEMBER.NEW_USER_INFO' | translate}}</label>

View File

@ -14,10 +14,10 @@
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<clr-dg-action-bar>
<button class="btn btn-sm btn-secondary" (click)="openAddMemberModal()" [disabled]="!hasProjectAdminRole">
<span><clr-icon shape="plus" size="16"></clr-icon>&nbsp;{{'MEMBER.NEW_USER' | translate }}</span>
<span><clr-icon shape="plus" size="16"></clr-icon>&nbsp;{{'MEMBER.USER' | translate }}</span>
</button>
<button class="btn btn-sm btn-secondary" (click)="openAddGroupModal()" [disabled]="!hasProjectAdminRole || !isLdapMode">
<span><clr-icon shape="plus" size="16"></clr-icon>&nbsp;{{'MEMBER.NEW_GROUP' | translate}}</span>
<span><clr-icon shape="plus" size="16"></clr-icon>&nbsp;{{'MEMBER.LDAP_GROUP' | translate}}</span>
</button>
<clr-dropdown id='member-action' [clrCloseMenuOnItemClick]="false" class="btn btn-sm btn-link" clrDropdownTrigger>
<span>{{'MEMBER.ACTION' | translate}}<clr-icon shape="caret down"></clr-icon></span>

View File

@ -203,7 +203,7 @@
"AUTOSCAN_POLICY": "Automatically scan images when they are pushed to the project registry."
},
"MEMBER": {
"NEW_USER": "New User",
"NEW_USER": "Add User Member",
"NEW_MEMBER": "New Member",
"MEMBER": "Member",
"NAME": "Name",
@ -221,10 +221,10 @@
"ADD_USER": "Add User",
"NEW_USER_INFO": "Add an user to be a member of this project with specified role",
"NEW_GROUP": "New Group",
"IMPORT_GROUP": "Import New LDAP Group",
"NEW_GROUP_INFO": "Import a new LDAP group or select one or more existing groups to add with the specific role.",
"ADD_GROUP_SELECT": "Add a group as a project member",
"CREATE_GROUP_SELECT": "Import a new group from LDAP",
"IMPORT_GROUP": "Add Group Member",
"NEW_GROUP_INFO": "Add an existing user group or select a user group from LDAP/AD to project member",
"ADD_GROUP_SELECT": "Add an existing user group to project member",
"CREATE_GROUP_SELECT": "Add a group from LDAP to project member",
"LDAP_SEARCH_DN": "LDAP Group DN",
"LDAP_SEARCH_NAME": "Name",
"LDAP_GROUP": "Group",
@ -482,7 +482,7 @@
"VALUES": "Values",
"OVERVIEW": "Overview",
"HOME": "Home",
"SRC_REPO": "Srouce Repository",
"SRC_REPO": "Source Repository",
"CREATED": "Created Time",
"MAINTAINERS": "Maintainers",
"PULLS": "Pull Count",
@ -506,13 +506,17 @@
"ADD_REPO": "Add Repo",
"SHOW_KV": "Key Value Pairs",
"SHOW_YAML": "YAML File",
"PLACEHOLDER": "No Item",
"PLACEHOLDER": "We couldn't find any charts!",
"NO_VERSION_PLACEHOLDER": "We couldn't find any versions!",
"FILE_UPLOADED": "File upload successfully",
"SIGN": "Sign",
"SIGNED": "Signed",
"UNSIGNED": "Unsigned",
"ITEMS": "charts",
"NO_README": "No readme file provided by this charts.",
"SECURITY": "Security"
"ITEMS": "items",
"NO_README": "No readme file provided by this chart.",
"SECURITY": "Security",
"ACTIVE": "Active",
"DEPRECATED": "Deprecated"
},
"ALERT": {
"FORM_CHANGE_CONFIRMATION": "Some changes are not saved yet. Do you want to cancel?"

View File

@ -203,7 +203,7 @@
"AUTOSCAN_POLICY": "Escanee automáticamente las imágenes cuando son enviadas al registro del proyecto."
},
"MEMBER": {
"NEW_USER": "New User",
"NEW_USER": "Add User Member",
"NEW_MEMBER": "Nuevo miembro",
"MEMBER": "Miembro",
"NAME": "Nombre",
@ -221,10 +221,10 @@
"ADD_USER": "Add User",
"NEW_USER_INFO": "Add an user to be a member of this project with specified role",
"NEW_GROUP": "New Group",
"IMPORT_GROUP": "Import New LDAP Group",
"NEW_GROUP_INFO": "Import a new LDAP group or select one or more existing groups to add with the specific role.",
"ADD_GROUP_SELECT": "Add a group as a project member",
"CREATE_GROUP_SELECT": "Import a new group from LDAP",
"IMPORT_GROUP": "Add Group Member",
"NEW_GROUP_INFO": "Add an existing user group or select a user group from LDAP to project member",
"ADD_GROUP_SELECT": "Add an existing user group to project member",
"CREATE_GROUP_SELECT": "Add a group from LDAP to project member",
"LDAP_SEARCH_DN": "LDAP Group DN",
"LDAP_SEARCH_NAME": "Name",
"LDAP_GROUP": "Group",
@ -469,6 +469,54 @@
"DEPLOY": "DEPLOY",
"ADDITIONAL_INFO": "Add Additional Info"
},
"HELM_CHART": {
"HELMCHARTS": "Charts",
"CHARTVERSIONS": "Versions",
"UPLOAD_TITLE": "Upload chart files",
"CHART_FILE": "Chart File",
"CHART_PROV": "Prov File",
"DOWNLOAD": "Download",
"SUMMARY": "Summary",
"DEPENDENCIES": "Dependencies",
"VALUES": "Values",
"OVERVIEW": "Overview",
"HOME": "Home",
"SRC_REPO": "Source Repository",
"CREATED": "Created Time",
"MAINTAINERS": "Maintainers",
"PULLS": "Pull Count",
"VERSION": "Version",
"INSTALL": "Install",
"INSTALL_CHART": "Install Chart",
"NAME": "Name",
"REPO": "Repository",
"FILTER_FOR_CHARTS": "Filter for charts",
"DELETE": "Delete",
"OF": "of",
"VERSIONS": "versions",
"IMAGES": "Images",
"ENGINE": "Engine",
"ACTION": "Action",
"UPLOAD": "Upload",
"DELETE_CHART_VERSION_TITLE": "Delete Chart Versions",
"DELETE_CHART_VERSION": "Do you want to delete version {{param}}?",
"IMPORT": "Import",
"EXPORT": "Export",
"ADD_REPO": "Add Repo",
"SHOW_KV": "Key Value Pairs",
"SHOW_YAML": "YAML File",
"PLACEHOLDER": "We couldn't find any charts!",
"NO_VERSION_PLACEHOLDER": "We couldn't find any versions!",
"FILE_UPLOADED": "File upload successfully",
"SIGN": "Sign",
"SIGNED": "Signed",
"UNSIGNED": "Unsigned",
"ITEMS": "items",
"NO_README": "No readme file provided by this chart.",
"SECURITY": "Security",
"ACTIVE": "Active",
"DEPRECATED": "Deprecated"
},
"ALERT": {
"FORM_CHANGE_CONFIRMATION": "Algunos cambios no se han guardado aún. ¿Quiere cancelar?"
},

View File

@ -188,7 +188,7 @@
"AUTOSCAN_POLICY": "Analyser automatiquement les images lorsqu'elles sont envoyées au registre du projet."
},
"MEMBER": {
"NEW_USER": "New User",
"NEW_USER": "Add User Member",
"NEW_MEMBER": "Nouveau Membre",
"MEMBER": "Membre",
"NAME": "Nom",
@ -197,10 +197,10 @@
"ADD_USER": "Add User",
"NEW_USER_INFO": "Add an user to be a member of this project with specified role",
"NEW_GROUP": "New Group",
"IMPORT_GROUP": "Import New LDAP Group",
"NEW_GROUP_INFO": "Import a new LDAP group or select one or more existing groups to add with the specific role.",
"ADD_GROUP_SELECT": "Add a group as a project member",
"CREATE_GROUP_SELECT": "Import a new group from LDAP",
"IMPORT_GROUP": "Add Group Member",
"NEW_GROUP_INFO": "Add an existing user group or select a user group from LDAP/AD to project member",
"ADD_GROUP_SELECT": "Add an existing user group to project member",
"CREATE_GROUP_SELECT": "Add a group from LDAP to project member",
"LDAP_SEARCH_DN": "LDAP Group DN",
"LDAP_SEARCH_NAME": "Name",
"LDAP_GROUP": "Group",
@ -445,6 +445,53 @@
"DEPLOY": "DEPLOY",
"ADDITIONAL_INFO": "Add Additional Info"
},
"HELM_CHART": {
"HELMCHARTS": "Charts",
"CHARTVERSIONS": "Versions",
"UPLOAD_TITLE": "Upload chart files",
"CHART_FILE": "Chart File",
"CHART_PROV": "Prov File",
"DOWNLOAD": "Download",
"SUMMARY": "Summary",
"DEPENDENCIES": "Dependencies",
"VALUES": "Values",
"OVERVIEW": "Overview",
"HOME": "Home",
"SRC_REPO": "Source Repository",
"CREATED": "Created Time",
"MAINTAINERS": "Maintainers",
"PULLS": "Pull Count",
"VERSION": "Version",
"INSTALL": "Install",
"INSTALL_CHART": "Install Chart",
"NAME": "Name",
"REPO": "Repository",
"FILTER_FOR_CHARTS": "Filter for charts",
"DELETE": "Delete",
"OF": "of",
"VERSIONS": "versions",
"IMAGES": "Images",
"ENGINE": "Engine",
"ACTION": "Action",
"UPLOAD": "Upload",
"DELETE_CHART_VERSION_TITLE": "Delete Chart Versions",
"DELETE_CHART_VERSION": "Do you want to delete version {{param}}?",
"IMPORT": "Import",
"EXPORT": "Export",
"ADD_REPO": "Add Repo",
"SHOW_KV": "Key Value Pairs",
"SHOW_YAML": "YAML File",
"PLACEHOLDER": "We couldn't find any charts!",
"NO_VERSION_PLACEHOLDER": "We couldn't find any versions!",
"FILE_UPLOADED": "File upload successfully",
"SIGN": "Sign",
"SIGNED": "Signed",
"UNSIGNED": "Unsigned",
"ITEMS": "items",
"SECURITY": "Security",
"ACTIVE": "Active",
"DEPRECATED": "Deprecated"
},
"ALERT": {
"FORM_CHANGE_CONFIRMATION": "Certaines modifications ne sont pas encore enregistrées. Voulez-vous annuler ?"
},

View File

@ -202,7 +202,7 @@
"AUTOSCAN_POLICY": "当镜像上传后,自动进行扫描"
},
"MEMBER": {
"NEW_USER": "新用户",
"NEW_USER": "添加用户成员",
"NEW_MEMBER": "新建成员",
"MEMBER": "成员",
"NAME": "姓名",
@ -220,10 +220,10 @@
"ADD_USER": "添加用户",
"NEW_USER_INFO": "添加用户到此项目中并给予相对应的角色",
"NEW_GROUP": "新增组",
"IMPORT_GROUP": "导入LDAP组",
"NEW_GROUP_INFO": "导入LDAP组,同时以选择的角色添加到项目成员列表",
"ADD_GROUP_SELECT": "添加组到项目成员",
"CREATE_GROUP_SELECT": "从LDAP导入新的组",
"IMPORT_GROUP": "添加组成员",
"NEW_GROUP_INFO": "添加已存在的组成员,或者导入LDAP组",
"ADD_GROUP_SELECT": "添加已存在组到项目成员",
"CREATE_GROUP_SELECT": "从LDAP中选择,并添加到项目成员",
"LDAP_SEARCH_DN": "LDAP Group DN",
"LDAP_SEARCH_NAME": "名称",
"LDAP_GROUP": "组",
@ -469,6 +469,54 @@
"DEPLOY": "部署",
"ADDITIONAL_INFO": "添加信息"
},
"HELM_CHART": {
"HELMCHARTS": "Charts",
"CHARTVERSIONS": "版本",
"UPLOAD_TITLE": "上传chart文件",
"CHART_FILE": "Chart 文件",
"CHART_PROV": "Prov 文件",
"DOWNLOAD": "下载",
"SUMMARY": "概要",
"DEPENDENCIES": "依赖",
"VALUES": "取值",
"OVERVIEW": "总览",
"HOME": "首页",
"SRC_REPO": "源仓库",
"CREATED": "创建时间",
"MAINTAINERS": "维护者",
"PULLS": "拉取数",
"VERSION": "版本",
"INSTALL": "安装",
"INSTALL_CHART": "安装Chart",
"NAME": "名称",
"REPO": "仓库",
"FILTER_FOR_CHARTS": "过滤Chart",
"DELETE": "删除",
"OF": "的",
"VERSIONS": "版本",
"IMAGES": "镜像",
"ENGINE": "引擎",
"ACTION": "动作",
"UPLOAD": "上传",
"DELETE_CHART_VERSION_TITLE": "删除Chart版本",
"DELETE_CHART_VERSION": "您要删除chart版本 {{param}} 吗?",
"IMPORT": "导入",
"EXPORT": "导出",
"ADD_REPO": "添加仓库",
"SHOW_KV": "展示健值对",
"SHOW_YAML": "展示YAML文件",
"PLACEHOLDER": "找不到任何的chart!",
"NO_VERSION_PLACEHOLDER": "找不到任何的chart版本!",
"FILE_UPLOADED": "文件上传成功",
"SIGN": "签名",
"SIGNED": "已签名",
"UNSIGNED": "未签名",
"ITEMS": "项",
"NO_README": "此Chart未提供README文件",
"SECURITY": "安全",
"ACTIVE": "正常",
"DEPRECATED": "废弃"
},
"ALERT": {
"FORM_CHANGE_CONFIRMATION": "表单内容改变,确认是否取消?"
},