diff options
| author | Alon Levy <alon@pobox.com> | 2014-12-07 00:27:30 +0200 |
|---|---|---|
| committer | Alon Levy <alon@pobox.com> | 2014-12-07 00:27:30 +0200 |
| commit | e49f1de3b8f68caf8944cda3d4b54c67da2006e0 (patch) | |
| tree | b3e7648e074a4339d728c07f48c33a98a4174b56 | |
| parent | 7c58983a909b3bf76667339d60cb0e31555218a6 (diff) | |
node_info cleanup
show correct fields per node type
don't accumulate callbacks (was unusable)
update dialog on save with type change - no need to click node again
| -rw-r--r-- | src/rz_core.js | 19 | ||||
| -rw-r--r-- | src/view/node_info.js | 44 |
2 files changed, 48 insertions, 15 deletions
diff --git a/src/rz_core.js b/src/rz_core.js index d8c549a6..ad6755b3 100644 --- a/src/rz_core.js +++ b/src/rz_core.js @@ -708,14 +708,19 @@ function tick(e) { function showNodeInfo(d, i) { view.node_info.show(d); - view.node_info.on_submit(function() { - if (d.type === "deliverable") { - graph.editDates(d.id, null, new Date($("#editstartdate").val()), new Date($("#editenddate").val())); + view.node_info.on_submit(function(e, form) { + var old_type = d.type, + new_type = form.type; + if (d.type === "third-internship-proposal") { + graph.editDates(d.id, null, new Date(form.startdate), new Date(form.enddate)); + } + graph.editName(d.id, form.name); + graph.editType(d.id, d.type, form.type); + graph.editURL(d.id, d.type, form.url); + graph.editStatus(d.id, d.type, form.status); + if (new_type != old_type) { + view.node_info.show(d); } - graph.editName(d.id, $('.info').find('#editformname').val()); - graph.editType(d.id, d.type,$('#edittype').val()); - graph.editURL(d.id, d.type, $('#editurl').val()); - graph.editStatus(d.id, d.type, $('#editstatus').val()); update_view__graph(true); return false; }); diff --git a/src/view/node_info.js b/src/view/node_info.js index 33c0837e..09136d37 100644 --- a/src/view/node_info.js +++ b/src/view/node_info.js @@ -1,6 +1,37 @@ define(['jquery', 'jquery-ui', 'view/helpers', 'view/internal'], function($, _unused_jquery_ui, view_helpers, internal) { +var d = null, + submit_callback = null, + delete_callback = null; + +function _get_form() { + return { + name: $('.info #editformname').val(), + type: $('.info #edittype').val(), + url: $('.info #editurl').val(), + status: $('.info #editstatus').val(), + startdate: $("#editstartdate").val(), + enddate: $("#editenddate").val(), + }; +} + +internal.edit_tab.get('node', "#editbox").submit(function(e) { + if (submit_callback) { + return submit_callback(e, _get_form()); + } + console.log('bug: edit tab submit called with no callback set'); + e.preventDefault(); +}) + +internal.edit_tab.get('node', "#deletenode").click(function(e) { + if (delete_callback) { + return delete_callback(e, _get_form()); + } + console.log('bug: edit tab delete called with no callback set'); + e.preventDefault(); +}); + function show(d) { var info = $('.info'), f = false, @@ -12,18 +43,15 @@ function show(d) { "interest": [f, f, f, f, t], "_defaults": [f, f, f, f, t], }, - fields = ["status", "startdate", "enddate", "desc", "url"], + fields = ["#status", "#startdate", "#enddate", "#desc", "#url"], flags = visible.hasOwnProperty(d.type) ? visible[d.type] : visible._defaults, i; internal.edit_tab.show('node'); for (i = 0 ; i < flags.length; ++i) { - if (flags[i]) { - info.find(fields[i]).show(); - } else { - info.find(fields[i]).hide(); - } + var elem = info.find(fields[i]); + elem[flags[i] ? 'show' : 'hide'](); } $('.info').attr('class', 'info'); @@ -62,12 +90,12 @@ function hide() function on_submit(f) { - internal.edit_tab.get('node', "#editbox").submit(f); + submit_callback = f; } function on_delete(f) { - internal.edit_tab.get('node', "#deletenode").click(f); + delete_callback = f; } return { |
