ui: basic k/v layout

This commit is contained in:
Jack Pearkes 2014-04-28 18:23:01 -04:00
parent 250b8f2247
commit 7f912dc0c9
5 changed files with 83 additions and 4 deletions

View File

@ -62,6 +62,26 @@
{{outlet}} {{outlet}}
</script> </script>
<script type="text/x-handlebars" data-template-name="kv">
<div class="row">
<div class="col-md-5">
<ul>
{{#each child in model.children}}
<li {{action 'linkToKey' model.key child }}>{{ child }}</li>
{{/each}}
</ul>
</div>
{{#if model.value}}
<div class="col-md-5 col-md-offset-1">
<h4>{{ model.key }}</h4>
{{ input value=model.value class="form-control"}}
</div>
{{/if}}
</div>
</script>
<script type="text/x-handlebars" id="services"> <script type="text/x-handlebars" id="services">
<div {{ bind-attr class=":col-md-5 hasChild:hidden" }}> <div {{ bind-attr class=":col-md-5 hasChild:hidden" }}>
@ -72,7 +92,6 @@
<div {{bind-attr class="service.hasFailingChecks:bg-orange:bg-green :list-bar"}}></div> <div {{bind-attr class="service.hasFailingChecks:bg-orange:bg-green :list-bar"}}></div>
<h4 class="list-group-item-heading"> <h4 class="list-group-item-heading">
{{#link-to 'services.show' service.Name class='subtle'}}{{service.Name}}{{/link-to}} {{#link-to 'services.show' service.Name class='subtle'}}{{service.Name}}{{/link-to}}
<small>{{service.Name}}</small>
<div class="heading-helper"> <div class="heading-helper">
<a class="subtle" href="#">{{service.checkMessage}}</a> <a class="subtle" href="#">{{service.checkMessage}}</a>
</div> </div>
@ -141,7 +160,7 @@
<div {{bind-attr class="node.hasFailingChecks:bg-orange:bg-green :list-bar"}}></div> <div {{bind-attr class="node.hasFailingChecks:bg-orange:bg-green :list-bar"}}></div>
<h4 class="list-group-item-heading"> <h4 class="list-group-item-heading">
{{#link-to 'nodes.show' node.Name class='subtle'}}{{node.Name}}{{/link-to}} {{#link-to 'nodes.show' node.Name class='subtle'}}{{node.Name}}{{/link-to}}
<small>{{node.Name}}</small> <small>{{node.Address}}</small>
<div class="heading-helper"> <div class="heading-helper">
<a class="subtle" href="#">{{node.checkMessage}}</a> <a class="subtle" href="#">{{node.checkMessage}}</a>
</div> </div>

View File

@ -70,3 +70,14 @@ App.ServicesController = Ember.ArrayController.extend({
App.ServicesShowController = Ember.Controller.extend({ App.ServicesShowController = Ember.Controller.extend({
needs: ['services'] needs: ['services']
}); });
// Key value controller
App.KvController = Ember.Controller.extend({
actions: {
linkToKey: function(top, child) {
var route = top + "/" + child
this.transitionToRoute('kv.key', route)
}
}
});

View File

@ -12,7 +12,9 @@ App.Router.map(function() {
this.resource("nodes", { path: "/nodes" }, function() { this.resource("nodes", { path: "/nodes" }, function() {
this.route("show", { path: "/:name" }); this.route("show", { path: "/:name" });
}); });
this.resource("kv", { path: "/kv" }); this.resource("kv", { path: "/kv" }, function() {
this.route("key", { path: "/*wildcard" });
});
}); });
this.route("index", { path: "/" }); this.route("index", { path: "/" });

View File

@ -51,6 +51,25 @@ App.DcRoute = App.BaseRoute.extend({
} }
}); });
//
// The route for for browsing and editing k/v data
//
//
App.KvRoute = Ember.Route.extend({
model: function(params) {
var parts = window.location.hash.split("/").slice(3)
var key = parts.join("/")
console.log(key);
return window.fixtures.keys_full[key];
},
setupController: function(controller, model) {
controller.set('content', model);
}
});
/// services /// services

View File

@ -285,4 +285,32 @@ fixtures.nodes_full = {
fixtures.dcs = ['nyc1', 'sf1', 'sg1'] fixtures.dcs = ['nyc1', 'sf1', 'sg1']
localStorage.setItem("current_dc", fixtures.dcs[0]); fixtures.keys_full = {
"application": {
'key': 'application',
'value': '',
'children': [
'secrets',
'foobar',
'baz'
]
},
"application/foobar": {
'key': 'application/foobar',
'value': 'baz',
'children': []
}
};
// represents the root index key '/'
fixtures.keys = [
{
'key': 'application',
'value': '',
'children': [
'secrets',
'foobar',
'baz'
]
}
];