[9215] | 1 | function workInProgress(isWorking) {
|
---|
| 2 | var loader = $(".loader");
|
---|
| 3 | var submitButton = $(".submitter");
|
---|
| 4 | if (isWorking) {
|
---|
| 5 | loader.removeClass("unseen");
|
---|
| 6 | submitButton.attr("disabled", "disabled");
|
---|
| 7 | } else {
|
---|
| 8 | loader.addClass("unseen");
|
---|
| 9 | submitButton.removeAttr("disabled");
|
---|
| 10 | }
|
---|
| 11 | }
|
---|
| 12 |
|
---|
| 13 | function log(arguments) {
|
---|
| 14 | if (window.console && console && console.log) {
|
---|
| 15 | if ($.isArray(arguments)) {
|
---|
| 16 | if ((Array.prototype.slice.call(arguments)).length == 1 && typeof Array.prototype.slice.call(arguments)[0] == 'string') {
|
---|
| 17 | var txt = (Array.prototype.slice.call(arguments)).toString();
|
---|
| 18 | console.log(txt);
|
---|
| 19 | return txt;
|
---|
| 20 | }
|
---|
| 21 | else {
|
---|
| 22 | var txt = Array.prototype.slice.call(arguments);
|
---|
| 23 | console.log(txt);
|
---|
| 24 | return txt;
|
---|
| 25 | }
|
---|
| 26 | } else {
|
---|
| 27 | console.log(arguments);
|
---|
| 28 | return arguments;
|
---|
| 29 | }
|
---|
| 30 | }
|
---|
| 31 | }
|
---|
| 32 |
|
---|
| 33 | $(document).ready(function () {
|
---|
| 34 | var tree = $('#container').dynatree({
|
---|
| 35 | onActivate: function (node) {
|
---|
| 36 | if (node && node.data.title !== "Experiment") {
|
---|
| 37 | $('input[name="RemoveNode"]').removeAttr("disabled");
|
---|
| 38 | } else if (node) {
|
---|
| 39 | $('input[name="RemoveNode"]').attr("disabled", "disabled");
|
---|
| 40 | }
|
---|
| 41 | },
|
---|
| 42 | onDeactivate: function (node) {
|
---|
| 43 | },
|
---|
| 44 | dnd: {
|
---|
| 45 | autoExpandMS: 750,
|
---|
| 46 |
|
---|
| 47 | onDragStart: function (node) {
|
---|
| 48 | return node.data.title !== "Experiment";
|
---|
| 49 | },
|
---|
| 50 | onDragEnter: function (node, sourceNode) {
|
---|
| 51 | return true;
|
---|
| 52 | },
|
---|
| 53 | onDragOver: function (node, sourceNode, hitMode) {
|
---|
| 54 | return node.data.title !== "Experiment" || hitMode === "over";
|
---|
| 55 | },
|
---|
| 56 | onDrop: function (node, sourceNode, hitMode, ui, draggable) {
|
---|
| 57 | if (sourceNode) {
|
---|
| 58 | sourceNode.move(node, hitMode);
|
---|
| 59 | }
|
---|
| 60 | else {
|
---|
| 61 | newNode = { title: draggable.element[0].id };
|
---|
| 62 | if (hitMode == "over") {
|
---|
| 63 | node.addChild(newNode);
|
---|
| 64 | node.expand(true);
|
---|
| 65 | }
|
---|
| 66 | else if (hitMode == "before") {
|
---|
| 67 | node.parent.addChild(newNode, node);
|
---|
| 68 | }
|
---|
| 69 | else {
|
---|
| 70 | node.parent.addChild(newNode, node.getNextSibling());
|
---|
| 71 | }
|
---|
| 72 | }
|
---|
| 73 | },
|
---|
| 74 | onDragLeave: function (node, sourceNode) {
|
---|
| 75 | }
|
---|
| 76 | }
|
---|
| 77 | });
|
---|
| 78 |
|
---|
| 79 | $('.dragables').each(function () {
|
---|
| 80 | $(this).draggable({
|
---|
| 81 | revert: true,
|
---|
| 82 | connectToDynatree: true,
|
---|
| 83 | cursorAt: { top: -5, left: -5 },
|
---|
| 84 | helper: "clone"
|
---|
| 85 | });
|
---|
| 86 | });
|
---|
| 87 |
|
---|
| 88 | $(".submitter").each(function () {
|
---|
| 89 | var btn = $(this);
|
---|
| 90 | $(this).click(function () {
|
---|
| 91 | workInProgress(true);
|
---|
| 92 | var name = $('input[name="Name"]').val();
|
---|
| 93 | var root = {
|
---|
| 94 | Experiment: $("#container").dynatree("getTree").toDict(),
|
---|
| 95 | Name: name
|
---|
| 96 | };
|
---|
| 97 | $.ajax({
|
---|
| 98 | type: "POST",
|
---|
| 99 | url: '/Experiment/Save',
|
---|
| 100 | contentType: "application/json; charset=utf-8",
|
---|
| 101 | dataType: "json",
|
---|
| 102 | data: JSON.stringify(root),
|
---|
| 103 | success: function (result) {
|
---|
| 104 | log(result);
|
---|
| 105 | if (result.success) {
|
---|
| 106 | var clearers = $("#experiments .clearer");
|
---|
| 107 | if (clearers && clearers.length > 0) {
|
---|
| 108 | var experimentDiv = $('<div class="dragables" id="' + name + '"><p>' + name + '</p></div>').draggable({
|
---|
| 109 | revert: true,
|
---|
| 110 | connectToDynatree: true,
|
---|
| 111 | cursorAt: { top: -5, left: -5 },
|
---|
| 112 | helper: "clone"
|
---|
| 113 | });
|
---|
| 114 | experimentDiv.insertBefore("#experiments .clearer");
|
---|
| 115 | //$(clearers[clearers.length - 1]).parent().before().append('<div class="dragables" id="' + name + '"><p>' + name + '</p></div>');
|
---|
| 116 | log("Added new div to experiments");
|
---|
| 117 | $("#jsonMessage").text("Saved experiment '" + result.data + "'!");
|
---|
| 118 | }
|
---|
| 119 | } else {
|
---|
| 120 | $("#jsonMessage").text(result.error);
|
---|
| 121 | }
|
---|
| 122 | workInProgress(false);
|
---|
| 123 | },
|
---|
| 124 | error: function (errMsg) {
|
---|
| 125 | var txt = log(errMsg);
|
---|
| 126 | $("#jsonMessage").text(txt);
|
---|
| 127 | workInProgress(false);
|
---|
| 128 | }
|
---|
| 129 | });
|
---|
| 130 | return false;
|
---|
| 131 | });
|
---|
| 132 | });
|
---|
| 133 |
|
---|
| 134 | $('input[name="RemoveNode"]').click(function () {
|
---|
| 135 | var node = $("#container").dynatree("getActiveNode");
|
---|
| 136 | if (node && node.data.title !== "Experiment")
|
---|
| 137 | node.remove();
|
---|
| 138 | $(this).attr("disabled", "disabled");
|
---|
| 139 | });
|
---|
| 140 | }); |
---|