[view,demo][m]: (refs #12) new DataExplorer parent view to hold the main app.

This commit is contained in:
rgrp 2011-11-09 01:41:49 +00:00
parent 24742a2b9e
commit 3bf7d9ceb4
3 changed files with 115 additions and 29 deletions

View File

@ -16,20 +16,11 @@
</head>
<body class="bod">
<div class="container">
<div class="dataexplorer-tableview-nav">
<form>
<label for="source">Source</label>
<input type="text" name="source" size="50" />
<input type="submit" name="" value="Update" />
<br />
<span class="dataexplorer-tableview-nav-toggle">
<input type="radio" id="dataexplorer-tableview-nav-grid" name="dataexplorer-tableview-nav-toggle" value="grid" checked="checked" />
<label for="dataexplorer-tableview-nav-grid">Grid</label>
<input type="radio" id="dataexplorer-tableview-nav-graph" name="dataexplorer-tableview-nav-toggle" value="chart" />
<label for="dataexplorer-tableview-nav-graph">Graph</label>
</span>
</form>
</div>
<form class="webstore-load">
<label for="source">Source</label>
<input type="text" name="source" size="50" />
<input type="submit" name="" value="Update" />
</form>
<!-- <div class="menu-overlay" style="display: none; z-index: 101; ">&nbsp;</div>
<ul class="menu">
</ul>

View File

@ -1,14 +1,19 @@
$(function() {
var demoUrl = 'http://webstore.test.ckan.org/rufuspollock/demo/data';
$('.dataexplorer-tableview-nav form input[name="source"]').val(demoUrl);
// do not like all these window globals ...
window.$container = $('.container');
var dataset = demoDataset();
dataset.fetch().then(function() {
var dataTable = new recline.DataTable({
model: dataset
})
$('.container').append(dataTable.el)
window.dataExplorer = new recline.DataExplorer({
model: dataset
});
window.$container.append(window.dataExplorer.el);
setupLoadFromWebstore(function(dataset) {
window.dataExplorer.remove();
window.dataExplorer = null;
window.dataExplorer = new recline.DataExplorer({
model: dataset,
});
window.$container.append(window.dataExplorer.el);
});
setupLoadFromWebstore();
})
function demoDataset() {
@ -40,8 +45,11 @@ function demoDataset() {
return dataset;
}
function setupLoadFromWebstore() {
$('.dataexplorer-tableview-nav form').submit(function(e) {
function setupLoadFromWebstore(callback) {
// pre-populate webstore load form with an example url
var demoUrl = 'http://webstore.test.ckan.org/rufuspollock/demo/data';
$('form.webstore-load input[name="source"]').val(demoUrl);
$('form.webstore-load').submit(function(e) {
e.preventDefault();
var $form = $(e.target);
var source = $form.find('input[name="source"]').val();
@ -50,10 +58,7 @@ function setupLoadFromWebstore() {
});
recline.setBackend(backend);
var dataset = backend.getDataset();
var dataTable = new recline.DataTable({
model: dataset
})
$('.container').append(dataTable.el)
callback(dataset);
});
}

View File

@ -1,5 +1,37 @@
this.recline = this.recline || {};
recline.DataExplorer = Backbone.View.extend({
tagName: 'div',
className: 'data-explorer',
template: ' \
<div class="dataexplorer-tableview-nav"> \
<span class="dataexplorer-tableview-nav-toggle"> \
<input type="radio" id="dataexplorer-tableview-nav-grid" name="dataexplorer-tableview-nav-toggle" value="grid" checked="checked" /> \
<label for="dataexplorer-tableview-nav-grid">Grid</label> \
<input type="radio" id="dataexplorer-tableview-nav-graph" name="dataexplorer-tableview-nav-toggle" value="chart" /> \
<label for="dataexplorer-tableview-nav-graph">Graph</label> \
</span> \
</div> \
',
events: {
},
initialize: function() {
this.el = $(this.el);
this.render();
// initialize of dataTable calls render
this.dataTable = new recline.DataTable({
model: this.model
});
this.el.append(this.dataTable.el)
},
render: function() {
$(this.el).html($(this.template));
}
});
recline.DataTable = Backbone.View.extend({
tagName: "div",
@ -8,7 +40,6 @@ recline.DataTable = Backbone.View.extend({
// template: TODO ???
events: {
},
initialize: function() {
@ -39,3 +70,62 @@ recline.DataTable = Backbone.View.extend({
return this;
}
});
recline.FlotGraph = Backbone.View.extend({
tagName: "div",
className: "data-graph-container",
// TODO: normalize css
template: ' \
<div class="dataexplorer-tableview-panel dataexplorer-tableview-graph"></div> \
<div class="dataexplorer-tableview-editor"> \
<div class="dataexplorer-tableview-editor-info dataexplorer-tableview-editor-hide-info"> \
<h1><span></span>Help</h1> \
<p>To create a chart select a column (group) to use as the x-axis \
then another column (Series A) to plot against it.</p> \
<p>You can add add \
additional series by clicking the "Add series" button</p> \
<p>Please note you must be logged in to save charts.</p> \
</div> \
<form> \
<ul> \
<li class="dataexplorer-tableview-editor-type"> \
<label>Graph Type</label> \
<select></select> \
</li> \
<li class="dataexplorer-tableview-editor-group"> \
<label>Group Column (x-axis)</label> \
<select></select> \
</li> \
<li class="dataexplorer-tableview-editor-series"> \
<label>Series <span>A (y-axis)</span></label> \
<select></select> \
</li> \
</ul> \
<div class="dataexplorer-tableview-editor-buttons"> \
<button class="dataexplorer-tableview-editor-add">Add Series</button> \
</div> \
<div class="dataexplorer-tableview-editor-buttons dataexplorer-tableview-editor-submit"> \
<button class="dataexplorer-tableview-editor-save">Save</button> \
<input type="hidden" class="dataexplorer-tableview-editor-id" value="chart-1" /> \
</div> \
</form> \
</div> \
</div> \
',
events: {
},
initialize: function() {
},
toTemplateJSON: function() {
return {};
},
render: function() {
htmls = $.mustache(this.template, this.toTemplateJSON());
$(this.el).html(htmls);
return this;
}
});