summaryrefslogtreecommitdiff
path: root/scripts/view
diff options
context:
space:
mode:
authorAlon Levy <alon@pobox.com>2014-11-11 15:57:42 +0200
committerAlon Levy <alon@pobox.com>2014-11-11 19:48:22 +0200
commit06101d59dc1d67f0bb4194425b46f153f8a97c7e (patch)
treec374b6f06be0d4d8392630082bda8821916b6007 /scripts/view
parent73ef7c098053592db020bc3691180c49e5f45cf6 (diff)
put .info into a tab
not using jquery tab since I just want an abstraction for 'show just one' which is simpler, no labels.
Diffstat (limited to 'scripts/view')
-rw-r--r--scripts/view/internal.js14
-rw-r--r--scripts/view/node_info.js8
-rw-r--r--scripts/view/tab.js57
3 files changed, 75 insertions, 4 deletions
diff --git a/scripts/view/internal.js b/scripts/view/internal.js
new file mode 100644
index 00000000..bc18bd75
--- /dev/null
+++ b/scripts/view/internal.js
@@ -0,0 +1,14 @@
+define(['view/tab'],
+function(tab) {
+
+var EDGE_INFO_SELECTOR = '.edge_info',
+ NODE_INFO_SELECTOR = '.info',
+ edit_tab = new tab.Tab({edge: EDGE_INFO_SELECTOR, node: NODE_INFO_SELECTOR});
+
+return {
+ EDGE_INFO_SELECTOR: EDGE_INFO_SELECTOR,
+ NODE_INFO_SELECTOR: NODE_INFO_SELECTOR,
+ edit_tab: edit_tab,
+};
+
+});
diff --git a/scripts/view/node_info.js b/scripts/view/node_info.js
index 347fbb24..f4d67c7f 100644
--- a/scripts/view/node_info.js
+++ b/scripts/view/node_info.js
@@ -1,8 +1,8 @@
-define(['jquery', 'view/helpers'],
-function($, view_helpers) {
+define(['jquery', 'view/helpers', 'view/internal'],
+function($, view_helpers, internal) {
function show(d) {
- $('.info').fadeIn(300);
+ internal.edit_tab.show('node');
if (d.type === "deliverable") {
$('.info').html('Name: ' + d.id + '<br/><form id="editbox"><label>Type:</label><select id="edittype"><option value="person">Person</option><option value="project">Project</option><option value="skill">Skill</option><option value="deliverable">Deliverable</option><option value="objective">Objective</option></select><br/><label>Status</label><select id="editstatus"><option value="waiting">Waiting</option><option value="current">Current</option><option value="done">Done</option></select><br/><label>Start date:</label><input id="editstartdate"/></br><label>End date:</label><input id="editenddate"/></br><button>Save</button><button id="deletenode">Delete</button></form>');
@@ -40,7 +40,7 @@ function show(d) {
function hide()
{
- $('.info').fadeOut(300);
+ internal.edit_tab.hide();
}
function on_submit(f)
diff --git a/scripts/view/tab.js b/scripts/view/tab.js
new file mode 100644
index 00000000..97ba1351
--- /dev/null
+++ b/scripts/view/tab.js
@@ -0,0 +1,57 @@
+"use strict"
+
+define(['jquery'],
+function($) {
+
+function Tab(dict) {
+ var k,
+ selector = {},
+ name = [];
+
+ for (k in dict) {
+ if (dict.hasOwnProperty(k) == false) {
+ continue;
+ }
+ selector[k] = dict[k];
+ name.push(k);
+ }
+ this._selector = selector;
+ this._name = name;
+}
+
+Tab.prototype.show = function(shown_name) {
+ var i,
+ name,
+ element;
+
+ for (i = 0 ; i < this._name.length ; ++i) {
+ name = this._name[i];
+ element = $(this._selector[name]);
+ if (name === shown_name) {
+ element.fadeIn(300);
+ } else {
+ element.hide();
+ }
+ }
+}
+
+Tab.prototype.hide = function() {
+ var i;
+
+ for (i = 0 ; i < this._name.length ; ++i) {
+ $(this._selector[this._name[i]]).fadeOut(300);
+ }
+}
+
+Tab.prototype.get = function(name, sel) {
+ // selector concatenation
+ var e = $(this._selector[name] + ' ' + sel);
+
+ return e;
+}
+
+return {
+ Tab: Tab
+};
+
+});