edit proj, vmcons, volrow (#650)

* edit proj, vmcons, volrow
viewEditProject
swarm and storage
stack section and edit proj
stack section
sortable th labels
schedrow, schema, sidekick info
pg header env, proj row, reg row
schema dupe

* yaml deletions

* typo
This commit is contained in:
lauren Vuchetich 2016-05-12 15:07:33 -07:00 committed by Vincent Fiduccia
parent 2e920c42c2
commit 8fc24f4ea8
19 changed files with 187 additions and 80 deletions

View File

@ -2,11 +2,11 @@
<thead> <thead>
{{#if model.length}} {{#if model.length}}
<tr> <tr>
{{sortable-th sortable=this action="changeSort" name="name"}} {{sortable-th sortable=this action="changeSort" name="name" label="generic.name"}}
{{sortable-th sortable=this action="changeSort" name="port" label="Port"}} {{sortable-th sortable=this action="changeSort" name="port" label="Port"}}
{{sortable-th sortable=this action="changeSort" name="targetPort" label="Container Port"}} {{sortable-th sortable=this action="changeSort" name="targetPort" label="Container Port"}}
{{sortable-th sortable=this action="changeSort" name="nodepPort" label="Node Port"}} {{sortable-th sortable=this action="changeSort" name="nodepPort" label="Node Port"}}
{{sortable-th sortable=this action="changeSort" name="protocol"}} {{sortable-th sortable=this action="changeSort" name="protocol" label="Protocol"}}
</tr> </tr>
{{/if}} {{/if}}
</thead> </thead>

View File

@ -56,7 +56,7 @@
</a> </a>
<ul class="dropdown-menu dropdown-menu-right project-menu" role="menu"> <ul class="dropdown-menu dropdown-menu-right project-menu" role="menu">
{{#if k8s.namespaces.length}} {{#if k8s.namespaces.length}}
<li role="presentation" class="dropdown-header">Namespaces</li> <li role="presentation" class="dropdown-header">{{t 'pageHeaderEnvironment.namespace'}}</li>
{{#each k8s.namespaces as |ns|}} {{#each k8s.namespaces as |ns|}}
{{#unless ns.isSystem}} {{#unless ns.isSystem}}
<li class="{{if (eq ns k8s.namespace) 'active selected'}}"> <li class="{{if (eq ns k8s.namespace) 'active selected'}}">

View File

@ -5,7 +5,7 @@
{{#link-to "settings.projects.detail" model.id (query-params editing=false)}}{{model.displayName}}{{/link-to}} {{#link-to "settings.projects.detail" model.id (query-params editing=false)}}{{model.displayName}}{{/link-to}}
</td> </td>
<td data-title="Description:"> <td data-title="Description:">
{{#if model.description}}{{model.description}}{{else}}<span class="text-muted">No description</span>{{/if}} {{#if model.description}}{{model.description}}{{else}}<span class="text-muted">{{t 'projectRow.none'}}</span>{{/if}}
</td> </td>
<td data-title="Orchestration:"> <td data-title="Orchestration:">
{{model.displayOrchestration}} {{model.displayOrchestration}}

View File

@ -5,10 +5,10 @@
{{model.displayAddress}} {{model.displayAddress}}
</td> </td>
<td data-title="Email:"> <td data-title="Email:">
{{#if model.credential.email}}{{model.credential.email}}{{else}}<i class="text-muted">None</i>{{/if}} {{#if model.credential.email}}{{model.credential.email}}{{else}}<i class="text-muted">{{t 'generic.none'}}</i>{{/if}}
</td> </td>
<td data-title="Username:"> <td data-title="Username:">
{{#if model.credential.publicValue}}{{model.credential.publicValue}}{{else}}<i class="text-muted">None</i>{{/if}} {{#if model.credential.publicValue}}{{model.credential.publicValue}}{{else}}<i class="text-muted">{{t 'generic.none'}}</i>{{/if}}
</td> </td>
<td data-title="Created:"> <td data-title="Created:">
{{date-calendar model.created}} {{date-calendar model.created}}

View File

@ -1,4 +1,4 @@
<td><div class="form-control-static input-sm">The host</div></td> <td><div class="form-control-static input-sm">{{t 'schedulingRuleRow.theHost'}}</div></td>
<td> <td>
{{new-select {{new-select
classNames="form-control input-sm" classNames="form-control input-sm"
@ -6,7 +6,7 @@
value=suffix value=suffix
}} }}
</td> </td>
<td><div class="form-control-static text-center input-sm">have a</div></td> <td><div class="form-control-static text-center input-sm">{{t 'schedulingRuleRow.haveA'}}</div></td>
<td> <td>
{{new-select {{new-select
classNames="form-control input-sm" classNames="form-control input-sm"
@ -16,7 +16,7 @@
</td> </td>
<td> <td>
{{#if (not (or (eq kind "service_name") (eq kind "container_name")))}} {{#if (not (or (eq kind "service_name") (eq kind "container_name")))}}
<div class="form-control-static text-center input-sm">of</div> <div class="form-control-static text-center input-sm">{{t 'schedulingRuleRow.of'}}</div>
{{/if}} {{/if}}
</td> </td>
<td> <td>

View File

@ -1,6 +1,6 @@
<label class="r-mr20 hand"> <label class="r-mr20 hand">
{{radio-button selection=value value=true}} True {{radio-button selection=value value=true}} {{t 'schemaComponent.inputBoolean.y'}}
</label> </label>
<label class="hand"> <label class="hand">
{{radio-button selection=value value=false}} False {{radio-button selection=value value=false}} {{t 'schemaComponent.inputBoolean.n'}}
</label> </label>

View File

@ -1,5 +1,5 @@
<select name="" class="form-control r-mb10" onChange={{action (mut value) value="target.value"}}> <select name="" class="form-control r-mb10" onChange={{action (mut value) value="target.value"}}>
<option value="">Choose an option...</option> <option value="">{{t 'schema.inputEnum.option'}}</option>
{{#each field.options as |option|}} {{#each field.options as |option|}}
<option value={{option}} selected={{eq option value}}>{{option}}</option> <option value={{option}} selected={{eq option value}}>{{option}}</option>
{{/each}} {{/each}}

View File

@ -1,48 +1,48 @@
<div class="content-box col-sm-4 col-md-4"> <div class="content-box col-sm-4 col-md-4">
<label class="text-muted">Info</label> <label class="text-muted">{{t 'sidekickAddtlInfo.info'}}</label>
<div class="content"> <div class="content">
<label class="text-muted">Image</label> <label class="text-muted">{{t 'sidekickAddtlInfo.image'}}</label>
<div class="force-wrap"> <div class="force-wrap">
{{sidekick.imageUuid}} {{sidekick.imageUuid}}
</div> </div>
<label class="text-muted r-mt15">Entrypoint</label> <label class="text-muted r-mt15">{{t 'sidekickAddtlInfo.entryPoint'}}</label>
<div class="force-wrap"> <div class="force-wrap">
{{#if sidekick.launchConfig.entryPoint}} {{#if sidekick.launchConfig.entryPoint}}
{{sidekick.launchConfig.entryPoint}} {{sidekick.launchConfig.entryPoint}}
{{else}} {{else}}
<span class="text-muted">None</span> <span class="text-muted">{{t 'generic.none'}}</span>
{{/if}} {{/if}}
</div> </div>
<label class="text-muted r-mt15">Command</label> <label class="text-muted r-mt15">{{t 'sidekickAddtlInfo.command'}}</label>
<div class="force-wrap"> <div class="force-wrap">
{{#if sidekick.launchConfig.command}} {{#if sidekick.launchConfig.command}}
{{sidekick.launchConfig.command}} {{sidekick.launchConfig.command}}
{{else}} {{else}}
<span class="text-muted">None</span> <span class="text-muted">{{t 'generic.none'}}</span>
{{/if}} {{/if}}
</div> </div>
</div> </div>
</div> </div>
<div class="content-box col-sm-4 col-md-4"> <div class="content-box col-sm-4 col-md-4">
<label class="text-muted">Containers ({{containers.length}})</label> <label class="text-muted">{{t 'sidekickAddtlInfo.containers'}} ({{containers.length}})</label>
<div class="content"> <div class="content">
<div class="container-dots clearfix"> <div class="container-dots clearfix">
{{#each containers as |instance|}} {{#each containers as |instance|}}
{{container-dot model=instance}} {{container-dot model=instance}}
{{else}} {{else}}
<span class="text-muted">No Containers</span> <span class="text-muted">{{t 'sidekickAddtlInfo.noContainers'}}</span>
{{/each}} {{/each}}
</div> </div>
</div> </div>
</div> </div>
<div class="content-box col-sm-4 col-md-4"> <div class="content-box col-sm-4 col-md-4">
<label class="text-muted">Labels</label> <label class="text-muted">{{t 'sidekickAddtlInfo.labels'}}</label>
<div class="content"> <div class="content">
<ul class="list-unstyled"> <ul class="list-unstyled">
{{#each labelArray as |label|}} {{#each labelArray as |label|}}
<li>{{label.key}}: {{label.value}}</li> <li>{{label.key}}: {{label.value}}</li>
{{else}} {{else}}
<li class="text-muted">No Labels</li> <li class="text-muted">{{t 'sidekickAddtlInfo.noLabels'}}</li>
{{/each}} {{/each}}
</ul> </ul>
</div> </div>

View File

@ -23,7 +23,7 @@
<div class="header-left"> <div class="header-left">
<div class="btn-group r-ml10"> <div class="btn-group r-ml10">
<button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Outputs <i class="icon icon-chevron-down"></i> {{t 'stackSection.outputs'}} <i class="icon icon-chevron-down"></i>
</button> </button>
<ul class="dropdown-menu dropdown-menu-right" role="dropdown"> <ul class="dropdown-menu dropdown-menu-right" role="dropdown">
{{#each outputs as |obj|}} {{#each outputs as |obj|}}
@ -40,28 +40,28 @@
<div class="header-right right-divider count"> <div class="header-right right-divider count">
<p>{{instanceCount}}</p> <p>{{instanceCount}}</p>
<label>Container{{unless (eq instanceCount 1) 's'}}</label> <label>{{t 'stackSection.container' numContainers=instanceCount}}</label>
</div> </div>
<div class="header-right right-divider count"> <div class="header-right right-divider count">
<p>{{model.unremovedServices.length}}</p> <p>{{model.unremovedServices.length}}</p>
<label>Service{{unless (eq model.unremovedServices.length 1) 's'}}</label> <label>{{t 'stackSection.service' numServices=instanceCount}}</label>
</div> </div>
<div class="header-right right-divider stack-template"> <div class="header-right right-divider stack-template">
{{upgrade-btn environmentResource=model}} {{upgrade-btn environmentResource=model}}
<div class="btn-group"> <div class="btn-group">
{{#link-to "service.new" (query-params environmentId=model.id) classNames="btn btn-default btn-sm"}}Add Service{{/link-to}} {{#link-to "service.new" (query-params environmentId=model.id) classNames="btn btn-default btn-sm"}}{{t 'stackSection.add.service'}}{{/link-to}}
<button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="true"> <button type="button" class="btn btn-default btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="true">
<i class="icon icon-fw icon-chevron-down"></i> <i class="icon icon-fw icon-chevron-down"></i>
<span class="sr-only">Toggle Dropdown</span> <span class="sr-only">{{t 'stackSection.add.toggle'}}</span>
</button> </button>
<ul class="dropdown-menu dropdown-menu-right" role="menu"> <ul class="dropdown-menu dropdown-menu-right" role="menu">
<li>{{#link-to "service.new-balancer" (query-params environmentId=model.id)}}Add Load Balancer{{/link-to}}</li> <li>{{#link-to "service.new-balancer" (query-params environmentId=model.id)}}{{t 'stackSection.add.loadBalancer'}}{{/link-to}}</li>
<li>{{#link-to "service.new-alias" (query-params environmentId=model.id)}}Add Service Alias{{/link-to}}</li> <li>{{#link-to "service.new-alias" (query-params environmentId=model.id)}}{{t 'stackSection.add.serviceAlias'}}{{/link-to}}</li>
<li>{{#link-to "service.new-external" (query-params environmentId=model.id)}}Add External Service{{/link-to}}</li> <li>{{#link-to "service.new-external" (query-params environmentId=model.id)}}{{t 'stackSection.add.externalService'}}{{/link-to}}</li>
{{#if hasVm}} {{#if hasVm}}
<li>{{#link-to "service.new-virtualmachine" (query-params environmentId=model.id)}}Add Virtual Machine{{/link-to}}</li> <li>{{#link-to "service.new-virtualmachine" (query-params environmentId=model.id)}}{{t 'stackSection.add.virtualMachine'}}{{/link-to}}</li>
{{/if}} {{/if}}
</ul> </ul>
</div> </div>
@ -74,7 +74,7 @@
{{#if single}} {{#if single}}
{{#if model.description}} {{#if model.description}}
<div class="r-pt20 r-pr20 r-pb20 r-pl20"> <div class="r-pt20 r-pr20 r-pb20 r-pl20">
<label>Description:&nbsp;</label>{{model.description}} <label>{{t 'stackSection.add.description'}}:&nbsp;</label>{{model.description}}
</div> </div>
{{/if}} {{/if}}
{{/if}} {{/if}}
@ -89,7 +89,7 @@
<td data-title="Service Name:"class="force-wrap"> <td data-title="Service Name:"class="force-wrap">
{{#link-to "service" service.environmentId service.id}}{{service.displayName}}{{/link-to}} {{#link-to "service" service.environmentId service.id}}{{service.displayName}}{{/link-to}}
{{#if service.hasSidekicks}} {{#if service.hasSidekicks}}
+ {{service.secondaryLaunchConfigs.length}} Sidekick{{unless (eq service.secondaryLaunchConfigs.length 1) 's'}} + {{service.secondaryLaunchConfigs.length}} {{t 'stackSection.sidekick' numSidekicks=instanceCount}}
{{/if}} {{/if}}
<button type="button" class="btn-link" role="button" {{action 'addtlInfo' service target=controller}}> <button type="button" class="btn-link" role="button" {{action 'addtlInfo' service target=controller}}>
<i class="icon icon-info addtl-info-trigger"/> <i class="icon icon-info addtl-info-trigger"/>
@ -103,7 +103,7 @@
</td> </td>
<td data-title="Containers:"> <td data-title="Containers:">
{{#if service.hasContainers}} {{#if service.hasContainers}}
{{default-str service.instances.length default="0"}} Container{{unless (eq service.instances.length 1) 's'}} {{default-str service.instances.length default="0"}} {{t 'stackSection.container' numContainers=instanceCount}}
{{/if}} {{/if}}
</td> </td>
<td data-title="Actions:" class="actions wide"> <td data-title="Actions:" class="actions wide">
@ -114,7 +114,7 @@
</tbody> </tbody>
</table> </table>
{{else}} {{else}}
<div class="text-muted text-center r-p10">No Services</div> <div class="text-muted text-center r-p10">{{t 'viewEditProject.showEdit.none'}}</div>
{{/if}} {{/if}}
</div> </div>
{{/liquid-if}} {{/liquid-if}}

View File

@ -14,7 +14,7 @@
{{#if outputs.length}} {{#if outputs.length}}
<div class="btn-group r-ml10"> <div class="btn-group r-ml10">
<button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> <button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Outputs <i class="icon icon-fw icon-chevron-down"></i> {{t 'storagePoolSection.outputs'}} <i class="icon icon-fw icon-chevron-down"></i>
</button> </button>
<ul class="dropdown-menu dropdown-menu-right"> <ul class="dropdown-menu dropdown-menu-right">
{{#each outputs as |obj|}} {{#each outputs as |obj|}}
@ -28,7 +28,7 @@
<div class="header-right right-divider stack-actions" style="width: auto"> <div class="header-right right-divider stack-actions" style="width: auto">
{{#unless single}} {{#unless single}}
{{#link-to "storagepools.new-volume" (query-params driverName=model.driverName) classNames="btn btn-primary btn-sm"}}Add Volume{{/link-to}} {{#link-to "storagepools.new-volume" (query-params driverName=model.driverName) classNames="btn btn-primary btn-sm"}}{{t 'storagePoolSection.volumes.add'}}{{/link-to}}
{{/unless}} {{/unless}}
</div> </div>
</div> </div>
@ -37,23 +37,23 @@
<div class="stack-body r-p10 row row-full-height"> <div class="stack-body r-p10 row row-full-height">
<div class="subsection gutter col-xs-6 col-md-3 col-full-height"> <div class="subsection gutter col-xs-6 col-md-3 col-full-height">
<h6>Hosts</h6> <h6>{{t 'storagePoolSection.hosts.header'}}</h6>
<div class="clearfix r-p10 hosts"> <div class="clearfix r-p10 hosts">
{{#each hostsByName as |host|}} {{#each hostsByName as |host|}}
<div class="r-m10"><i class="icon {{host.stateIcon}} {{host.stateBackground}}"></i> {{#link-to "host" host.id}}{{host.displayName}}{{/link-to}}</div> <div class="r-m10"><i class="icon {{host.stateIcon}} {{host.stateBackground}}"></i> {{#link-to "host" host.id}}{{host.displayName}}{{/link-to}}</div>
{{else}} {{else}}
<div class="text-center text-muted">No hosts</div> <div class="text-center text-muted">{{t 'storagePoolSection.hosts.none'}}</div>
{{/each}} {{/each}}
</div> </div>
</div> </div>
{{#if model.volumes.length}} {{#if model.volumes.length}}
<div class="subsection gutter col-xs-6 col-md-9 col-full-height"> <div class="subsection gutter col-xs-6 col-md-9 col-full-height">
<h6>Volumes</h6> <h6>{{t 'storagePoolSection.volumes.header'}}</h6>
<table class="grid fixed" style="margin-bottom: 0"> <table class="grid fixed" style="margin-bottom: 0">
<thead> <thead>
<tr> <tr>
{{sortable-th sortable=this action="changeSort" name="state" width="125"}} {{sortable-th sortable=this action="changeSort" name="state" width="125" label="generic.state"}}
{{sortable-th sortable=this action="changeSort" name="name"}} {{sortable-th sortable=this action="changeSort" name="name" label="generic.name"}}
{{sortable-th sortable=this action="changeSort" name="activeMounts" label="Mounts (Container: Path)"}} {{sortable-th sortable=this action="changeSort" name="activeMounts" label="Mounts (Container: Path)"}}
<th width="70">&nbsp;</th> <th width="70">&nbsp;</th>
</tr> </tr>
@ -80,12 +80,12 @@
{{~/if~}} {{~/if~}}
: {{mount.path}} : {{mount.path}}
{{#if (eq mount.permissions "ro")}} {{#if (eq mount.permissions "ro")}}
<span class="text-muted">(read-only)</span> <span class="text-muted">{{t 'storagePoolSection.readOnly'}}</span>
{{/if}} {{/if}}
</div> </div>
{{/each}} {{/each}}
{{else}} {{else}}
<span class="text-muted">None</span> <span class="text-muted">{{t 'generic.none'}}</span>
{{/if}} {{/if}}
</td> </td>
<td class="actions wide"> <td class="actions wide">
@ -97,6 +97,6 @@
</table> </table>
</div> </div>
{{else}} {{else}}
<div class="text-muted text-center r-p10">No Volumes</div> <div class="text-muted text-center r-p10">{{t 'storagePoolSection.volumes.none'}}</div>
{{/if}} {{/if}}
</div> </div>

View File

@ -8,7 +8,7 @@
<div class="row"> <div class="row">
<div class="badge pull-right"><i class="icon icon-container"></i> {{containerCount}}</div> <div class="badge pull-right"><i class="icon icon-container"></i> {{containerCount}}</div>
{{#if node.service.secondaryLaunchConfigs}} {{#if node.service.secondaryLaunchConfigs}}
<span class="label label-default label-sidekick pull-right">Sidekicks</span> <span class="label label-default label-sidekick pull-right">{{t svgServiceContainer.sidekicks}}</span>
{{/if}} {{/if}}
</div> </div>
<div class="row title"> <div class="row title">

View File

@ -2,9 +2,9 @@
<table class="grid fixed no-lines r-mb0"> <table class="grid fixed no-lines r-mb0">
<thead> <thead>
<tr> <tr>
<th width="120">State</th> <th width="120">{{t 'swarm.containerSection.state'}}</th>
<th>Container Name</th> <th>{{t 'swarm.containerSection.name'}}</th>
<th>Image</th> <th>{{t 'swarm.containerSection.image'}}</th>
<th class="actions" width="85">&nbsp;</th> <th class="actions" width="85">&nbsp;</th>
</tr> </tr>
</thead> </thead>
@ -15,5 +15,5 @@
</tbody> </tbody>
</table> </table>
{{else}} {{else}}
<span class="text-muted">No Containers</span> <span class="text-muted">{{t 'swarm.containerSection.none'}}</span>
{{/if}} {{/if}}

View File

@ -10,7 +10,7 @@
{{#if model.unremovedServices.length}} {{#if model.unremovedServices.length}}
{{model.unremovedServices.length}} {{model.unremovedServices.length}}
{{else}} {{else}}
<span class="text-muted">None</span> <span class="text-muted">{{t 'generic.none'}}</span>
{{/if}} {{/if}}
</td> </td>
<td class="actions"> <td class="actions">

View File

@ -13,7 +13,7 @@
{{#if model.instances.length}} {{#if model.instances.length}}
{{model.instances.length}} {{model.instances.length}}
{{else}} {{else}}
<span class="text-muted">None</span> <span class="text-muted">{{t 'generic.none'}}</span>
{{/if}} {{/if}}
</td> </td>
<td class="actions" data-title="Actions:"> <td class="actions" data-title="Actions:">

View File

@ -2,10 +2,10 @@
<table class="grid fixed no-lines r-mb0"> <table class="grid fixed no-lines r-mb0">
<thead> <thead>
<tr> <tr>
<th width="125">State</th> <th width="125">{{t 'swarm.serviceSection.state'}}State</th>
<th>Service Name</th> <th>{{t 'swarm.serviceSection.name'}}</th>
<th>Ports</th> <th>{{t 'swarm.serviceSection.ports'}}</th>
<th width="100">Containers</th> <th width="100">{{t 'swarm.serviceSection.containers'}}</th>
<th class="actions" width="85">&nbsp;</th> <th class="actions" width="85">&nbsp;</th>
</tr> </tr>
</thead> </thead>
@ -16,5 +16,5 @@
</tbody> </tbody>
</table> </table>
{{else}} {{else}}
<span class="text-muted">No Services</span> <span class="text-muted">{{t 'swarm.serviceSection.none'}}</span>
{{/if}} {{/if}}

View File

@ -2,13 +2,13 @@
{{#if showEdit}} {{#if showEdit}}
<h1> <h1>
{{#if editing}} {{#if editing}}
Edit Environment: {{originalProject.displayName}} {{t 'viewEditProject.showEdit.edit'}} {{originalProject.displayName}}
{{else}} {{else}}
Add Environment {{t 'viewEditProject.showEdit.add'}}
{{/if}} {{/if}}
</h1> </h1>
{{else}} {{else}}
<h1>{{#link-to "settings.projects"}}Environment:{{/link-to}}</h1> <h1>{{#link-to "settings.projects"}}{{t 'viewEditProject.header'}}{{/link-to}}</h1>
{{#power-select options=model.all selected=project onchange=(action "changeProject") searchField="displayName" as |obj|}} {{#power-select options=model.all selected=project onchange=(action "changeProject") searchField="displayName" as |obj|}}
{{select-dot model=obj}} {{select-dot model=obj}}
{{/power-select}} {{/power-select}}
@ -24,7 +24,7 @@
{{#if showEdit}} {{#if showEdit}}
<section class="well"> <section class="well">
<label>Container Orchestration</label> <label>{{t 'viewEditProject.showEdit.orchestration'}}</label>
<div class="nav nav-boxes checked-active"> <div class="nav nav-boxes checked-active">
{{#each orchestrationChoices as |driver|}} {{#each orchestrationChoices as |driver|}}
{{#if driver.disabled}} {{#if driver.disabled}}
@ -46,7 +46,7 @@
{{else}} {{else}}
{{#if project.description}} {{#if project.description}}
<section class="well r-mb0"> <section class="well r-mb0">
<label>Description</label> <label>{{t 'viewEditProject.description'}}</label>
<p>{{project.description}}</p> <p>{{project.description}}</p>
</section> </section>
{{/if}} {{/if}}
@ -56,7 +56,7 @@
<div class="row form-group"> <div class="row form-group">
{{#if showEdit}} {{#if showEdit}}
<div class="col-sm-12 col-md-2 form-label"> <div class="col-sm-12 col-md-2 form-label">
<label class="form-control-static">Access Control</label> <label class="form-control-static">{{t 'viewEditProject.showEdit.formControl'}}</label>
</div> </div>
{{/if}} {{/if}}
@ -74,9 +74,9 @@
<table class="grid fixed" style="margin-bottom: 0;"> <table class="grid fixed" style="margin-bottom: 0;">
<thead> <thead>
<tr> <tr>
{{sortable-th sortable=this action="changeSort" name="name"}} {{sortable-th sortable=this action="changeSort" name="name" label="generic.name"}}
{{sortable-th sortable=this action="changeSort" name="type"}} {{sortable-th sortable=this action="changeSort" name="type" label="generic.type"}}
{{sortable-th sortable=this action="changeSort" name="role"}} {{sortable-th sortable=this action="changeSort" name="role" label="generic.role"}}
{{#if showEdit}}<th width="40">&nbsp;</th>{{/if}} {{#if showEdit}}<th width="40">&nbsp;</th>{{/if}}
</tr> </tr>
</thead> </thead>
@ -119,8 +119,7 @@
</table> </table>
{{else}} {{else}}
<p class="help-block text-center"> <p class="help-block text-center">
Access Control is not enabled.<br/> {{t 'viewEditProject.helpBlock'}}
Anybody with access to the API/UI acts as an admin and will be able to use any environment.
</p> </p>
{{/if}} {{/if}}
</div> </div>

View File

@ -1,19 +1,19 @@
<h2><i class="icon icon-terminal"></i> Console: {{instance.displayName}}</h2> <h2><i class="icon icon-terminal"></i> {{t 'vmConsole.header'}} {{instance.displayName}}</h2>
{{#if showProtip}} {{#if showProtip}}
<div class="text-muted r-mt5 r-mb10" style="font-size: 12px;"> <div class="text-muted r-mt5 r-mb10" style="font-size: 12px;">
ProTip: Hold the {{alternateLabel}} key when opening shell access to launch a new window. {{t 'vmConsole.protip' alternateLabel=alternateLabel}}
</div> </div>
{{/if}} {{/if}}
<div class="console-body clearfix"> <div class="console-body clearfix">
<div id="noVNC_screen"> <div id="noVNC_screen">
<canvas class="console-canvas" width="640" height="20"> <canvas class="console-canvas" width="640" height="20">
Canvas not supported. {{t 'vmConsole.canvas'}}
</canvas> </canvas>
</div> </div>
</div> </div>
<div class="footer-actions"> <div class="footer-actions">
<div class="console-status text-muted">{{status}}</div> <div class="console-status text-muted">{{status}}</div>
<button {{action "ctrlAltDelete"}} class="btn btn-default" disabled={{ctrlAltDeleteDisabled}}>Send Ctrl-Alt-Delete</button> <button {{action "ctrlAltDelete"}} class="btn btn-default" disabled={{ctrlAltDeleteDisabled}}>{{t 'vmConsole.footerActions.buttonSend'}}</button>
<button {{action "cancel"}} class="btn btn-primary">Close</button> <button {{action "cancel"}} class="btn btn-primary">{{t 'vmConsole.footerActions.buttonCancel'}}</button>
</div> </div>

View File

@ -15,12 +15,12 @@
<div> <div>
{{#link-to "container" mount.instanceId}}{{mount.instance.name}}{{/link-to}}:{{mount.path}} {{#link-to "container" mount.instanceId}}{{mount.instance.name}}{{/link-to}}:{{mount.path}}
{{#if (eq mount.permissions "ro")}} {{#if (eq mount.permissions "ro")}}
<span class="text-muted">(read-only)</span> <span class="text-muted">{{t 'volumeRow.activeMounts.readOnly'}}</span>
{{/if}} {{/if}}
</div> </div>
{{/each}} {{/each}}
{{else}} {{else}}
<span class="text-muted">None</span> <span class="text-muted">{{t 'generic.none'}}</span>
{{/if}} {{/if}}
</td> </td>

View File

@ -21,6 +21,7 @@ generic:
description: Description description: Description
default: Default default: Default
type: Type type: Type
role: Role
############################## ##############################
# Routes # Routes
@ -1542,6 +1543,12 @@ pageFooter:
windows: Windows windows: Windows
linux: Linux linux: Linux
pageHeaderEnvironment:
namespace: Namespace
projectRow:
none: No description
saveCancel: saveCancel:
saving: Saving... saving: Saving...
saved: Saved! saved: Saved!
@ -1549,6 +1556,83 @@ saveCancel:
create: Create create: Create
cancel: Cancel cancel: Cancel
schedulingRuleRow:
theHost: The host
haveA: have a
of: of
schemaComponent:
inputBoolean:
y: True
n: False
inputEnum:
option: Choose an option...
sidekickAddtlInfo:
info: Info
image: Image
entryPoint: Entrypoint
command: Command
containers: Containers
noContainers: No Containers
labels: Labels
noLabels: No Labels
stackSection:
outputs: Outputs
toggle: Toggle Dropdown
description: Description
none: No Services
container: |
{numContainers, plural,
=1 {Container}
other {Containers}
}
service: |
{numServices, plural,
=1 {Service}
other {Services}
}
sidekick: |
{numSidekicks, plural,
=1 {Sidekick}
other {Sidekicks}
}
add:
service: Add Service
loadBalancer: Add Load Balancer
serviceAlias: Add Service Alias
externalService: Add External Service
virtualMachine: Add Virtual
storagePoolSection:
outputs: Outputs
readOnly: "(read-only)"
subSection:
hosts:
header: Hosts
none: No Hosts
volumes:
header: Volumes
add: Add Volume
none: No Volumes
svgServiceContainer:
sidekicks: Sidekicks
swarm:
containerSection:
state: State
name: Container Name
image: Image
none: No Containers
serviceSection:
state: State
name: Service Name
ports: Ports
containers: Containers
none: No Services
viewEditDescription: viewEditDescription:
form: form:
name: name:
@ -1556,11 +1640,35 @@ viewEditDescription:
description: description:
placeholder: e.g. Environment for developer experimentation placeholder: e.g. Environment for developer experimentation
viewEditProject:
showDdit:
edit: "Edit Environment:"
add: Add Environment
orchestration: Container Orchestration
formControl: Access Control
header: "Environment:"
description: Description
helpBlock: |
Access Control is not enabled.<br/>
Anybody with access to the API/UI acts as an admin and will be able to use any environment.
virtualMachineSettings: virtualMachineSettings:
header: Virtual Machine Support header: Virtual Machine Support
subtext: | subtext: |
Requires hosts that have the <a href="https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine" target="_blank">KVM</a> kernel module loaded. Requires hosts that have the <a href="https://en.wikipedia.org/wiki/Kernel-based_Virtual_Machine" target="_blank">KVM</a> kernel module loaded.
vmConsole:
header: "console:"
protip: "ProTip: Hold the {alternateLabel} key when opening shell access to launch a new window."
canvas: Canvas not supported.
footeractions:
buttonsend: Send Ctrl-Alt-Delete
buttoncancel: Close
volumeRow:
activeMounts:
readOnly: "(read-only)"
############################## ##############################
# Mixins # Mixins
############################## ##############################