From 987a3c43ca4e2b207d3afe63ae1f218652ed7605 Mon Sep 17 00:00:00 2001 From: J Wu Date: Sun, 13 Apr 2014 18:37:01 -0700 Subject: [PATCH 1/6] Added create target form, calls 3x-target correctly --- gui/client/Runs/TargetsView.coffee | 51 +++++++++++++++++++++++ gui/client/Runs/body.html | 66 ++++++++++++++++++++++++++++++ gui/client/Runs/style.less | 6 +++ gui/server.coffee | 15 +++++-- 4 files changed, 135 insertions(+), 3 deletions(-) diff --git a/gui/client/Runs/TargetsView.coffee b/gui/client/Runs/TargetsView.coffee index 7d65ef3..daa1f51 100644 --- a/gui/client/Runs/TargetsView.coffee +++ b/gui/client/Runs/TargetsView.coffee @@ -114,3 +114,54 @@ class TargetsUI extends CompositeElement t = @targetKnobs?.find("li.current a") t = @targetKnobs?.find("li a:first") unless t?.length > 0 t?.tab("show") + + # DOM objects for creating target + # $targetForm = @optionElements.addNewTargetForm + $targetForm = $('#target-create-form') + $createButton = $targetForm.find('#target-create') + $nameField= $targetForm.find('#target-name') + $targetEnvTable = $targetForm.find('#target-env-table') + # button to add rows to table + $targetEnvTableAdd = $targetEnvTable.find('#env-pair-add') + + # Drop-down menu + $targetTypeDropdown = $targetForm.find(".dropdown-menu") + $targetTypeDropdown.click (e) => + # q: why put "do"? + do e.preventDefault + do enableButton + # add the form + $targetEnvTable.removeClass('hide') + $targetEnvTable.addClass('table table-striped') + + # addition form elements depending on target type + switch $(e.target).text() + when "local" then log "local" + when "ssh" then log "ssh" + when "ssh-cluster" then log "ssh-cluster" + + enableButton = -> + if $nameField.val().length is 0 then $createButton.attr "disabled", "disabled" + else $createButton.removeAttr "disabled" + log "enable button ccalled" + $nameField.on "keyup", -> + do enableButton + $createButton.click (e) => + do e.preventDefault + log "createbutton clicked" + $.post("#{_3X_.BASE_URL}/api/run/target/define/#{$nameField.val()}:create", + name: $nameField.val() + ) + $targetForm.modal("hide") + $targetForm.modal("hide") + + + + $targetEnvTableAdd.click (e) -> + do e.preventDefault + $targetEnvTable + .find('.env-pair').first() + .clone() + .insertBefore($(@).closest('tr')) + log "should've added a new row" + diff --git a/gui/client/Runs/body.html b/gui/client/Runs/body.html index 7f292b4..e4af07d 100644 --- a/gui/client/Runs/body.html +++ b/gui/client/Runs/body.html @@ -32,12 +32,15 @@

Targets

--> +
+

Execution History of N/A

@@ -65,6 +68,7 @@

+ + + diff --git a/gui/client/Runs/style.less b/gui/client/Runs/style.less index fa74a6c..40970f0 100644 --- a/gui/client/Runs/style.less +++ b/gui/client/Runs/style.less @@ -122,5 +122,11 @@ div.dataTables_scrollBody table.dataTable { } } } +#target-create-form { + overflow: visible; + .modal-body{ + overflow: visible; + } +} // vim:ft=less diff --git a/gui/server.coffee b/gui/server.coffee index ef0127b..c5404aa 100644 --- a/gui/server.coffee +++ b/gui/server.coffee @@ -549,16 +549,25 @@ app.post /// /api/run/queue/([^:]+):(target) ///, (req, res) -> lazyLines.join -> next (true) ) (respondJSON res) -# Attempt to create queue +# Call to create queue app.post /// /api/run/queue/([^:]+):(create) ///, (req, res) -> [queueName, action] = req.params - #queueName = req.body.name - console.log "jens cli called with name: " + queueName cliEnv(res, { _3X_QUEUE: queueName }, "3x-queue", [queueName] ) (respondJSON res) +# Call to create target +app.post /// /api/run/target/define/([^:]+):(create) ///, (req, res) -> + util.log "create target api called ....." + [targetName, action] = req.params + #envVariables = req.body.env + #targetType = req.body.type + cli(res, "3x-target", [targetName, "define", "local"] + , (lazyLines, next) -> + lazyLines.join -> next (true) + ) (respondJSON res) + app.post /// /api/run/queue/([^:]+):(duplicate|prioritize|postpone|cancel) ///, (req, res) -> [queueName, action] = req.params # TODO sanitize queueName From 2e73575076bd99a211aab22fe43ffc329cfac50f Mon Sep 17 00:00:00 2001 From: J Wu Date: Mon, 14 Apr 2014 17:27:05 -0700 Subject: [PATCH 2/6] Generalized to ssh and ssh-cluster; write environmental variable in correct form --- gui/client/Runs/TargetsView.coffee | 73 ++++++++++++++++++++++-------- gui/client/Runs/body.html | 13 +++++- gui/server.coffee | 25 ++++++++-- 3 files changed, 84 insertions(+), 27 deletions(-) diff --git a/gui/client/Runs/TargetsView.coffee b/gui/client/Runs/TargetsView.coffee index daa1f51..1f0d5ca 100644 --- a/gui/client/Runs/TargetsView.coffee +++ b/gui/client/Runs/TargetsView.coffee @@ -117,13 +117,17 @@ class TargetsUI extends CompositeElement # DOM objects for creating target # $targetForm = @optionElements.addNewTargetForm - $targetForm = $('#target-create-form') - $createButton = $targetForm.find('#target-create') - $nameField= $targetForm.find('#target-name') - $targetEnvTable = $targetForm.find('#target-env-table') + $targetForm = $("#target-create-form") + $createButton = $targetForm.find("#target-create") + $nameField= $targetForm.find("#target-name") + $targetEnvTable = $targetForm.find("#target-env-table") + $targetRemoteUrl = $targetForm.find("#target-remote-url") + $targetSharedPath = $targetForm.find("#target-shared-path") # button to add rows to table - $targetEnvTableAdd = $targetEnvTable.find('#env-pair-add') + $targetEnvTableAdd = $targetEnvTable.find("#env-pair-add") + # TODO: clear form entries when closed or keep values entered? + # Drop-down menu $targetTypeDropdown = $targetForm.find(".dropdown-menu") $targetTypeDropdown.click (e) => @@ -131,14 +135,25 @@ class TargetsUI extends CompositeElement do e.preventDefault do enableButton # add the form - $targetEnvTable.removeClass('hide') - $targetEnvTable.addClass('table table-striped') + $targetEnvTable.removeClass("hide") + $targetEnvTable.addClass("table table-striped") # addition form elements depending on target type - switch $(e.target).text() - when "local" then log "local" - when "ssh" then log "ssh" - when "ssh-cluster" then log "ssh-cluster" + @newTargetType = $(e.target).text() + $targetTypeDropdown.siblings("button").text(@newTargetType) + switch @newTargetType + when "local" + $targetRemoteUrl.parent("div").addClass("hide") + $targetRemoteUrl.val("") + $targetSharedPath.parent("div").addClass("hide") + $targetSharedPath.val("") + when "ssh" + $targetRemoteUrl.parent("div").removeClass("hide") + $targetSharedPath.parent("div").addClass("hide") + $targetSharedPath.val("") + when "ssh-cluster" + $targetRemoteUrl.parent("div").removeClass("hide") + $targetSharedPath.parent("div").removeClass("hide") enableButton = -> if $nameField.val().length is 0 then $createButton.attr "disabled", "disabled" @@ -146,22 +161,40 @@ class TargetsUI extends CompositeElement log "enable button ccalled" $nameField.on "keyup", -> do enableButton + + # Create target $createButton.click (e) => do e.preventDefault - log "createbutton clicked" - $.post("#{_3X_.BASE_URL}/api/run/target/define/#{$nameField.val()}:create", - name: $nameField.val() - ) - $targetForm.modal("hide") + log "createbutton clicked, targetype: " + @newTargetType + + # get all env values and pairs + env = "" + for pair in $targetForm.find(".env-pair") + envName = $(pair).find(".env-name").find("input").val() + envVal= $(pair).find(".env-value").find("input").val() + env += envName + "=" + envVal + " " + log envName + "=" + envVal + # get remote url value + url = $targetRemoteUrl.val() + sharedPath = $targetSharedPath.val() + + # Make API call + $.post("#{_3X_.BASE_URL}/api/run/target/#{$nameField.val()}:create",{ + env: env, + type: @newTargetType, + url: url, + sharedPath: sharedPath + }) $targetForm.modal("hide") - + # Add row in table $targetEnvTableAdd.click (e) -> do e.preventDefault $targetEnvTable - .find('.env-pair').first() + .find(".env-pair").first() .clone() - .insertBefore($(@).closest('tr')) - log "should've added a new row" + .insertBefore($(@).closest("tr")) + .find("input") + .val("") diff --git a/gui/client/Runs/body.html b/gui/client/Runs/body.html index e4af07d..09889b0 100644 --- a/gui/client/Runs/body.html +++ b/gui/client/Runs/body.html @@ -108,14 +108,23 @@
-
+
+
+ Remote url + +
+
+ Shared path + +
diff --git a/gui/server.coffee b/gui/server.coffee index c5404aa..daf521b 100644 --- a/gui/server.coffee +++ b/gui/server.coffee @@ -558,15 +558,30 @@ app.post /// /api/run/queue/([^:]+):(create) ///, (req, res) -> ) (respondJSON res) # Call to create target -app.post /// /api/run/target/define/([^:]+):(create) ///, (req, res) -> - util.log "create target api called ....." +app.post /// /api/run/target/([^:]+):(create) ///, (req, res) -> [targetName, action] = req.params - #envVariables = req.body.env - #targetType = req.body.type - cli(res, "3x-target", [targetName, "define", "local"] + envVar = req.body.env + targetType = req.body.type + url = req.body.url + sharedPath = req.body.sharedPath + util.log "url: " + url + util.log "env not split: " + envVar + util.log "env split: " + envVar.split(/\s*\n\s*/) + {stdin} = + cli(res, "xargs", ["3x-target", targetName, "define", targetType, url, sharedPath] , (lazyLines, next) -> lazyLines.join -> next (true) ) (respondJSON res) + for pair in envVar.split(/\s*\n\s*/) + stdin.write "#{pair}\n" + stdin.end() + + ### + cliEnv(res, { + _3X_QUEUE: queueName + }, "xargs", ["3x-plan", action] + ) (respondJSON res) + ### app.post /// /api/run/queue/([^:]+):(duplicate|prioritize|postpone|cancel) ///, (req, res) -> [queueName, action] = req.params From 62ec83d45a629e76c09ffa804387b3daacb14823 Mon Sep 17 00:00:00 2001 From: J Wu Date: Mon, 14 Apr 2014 18:04:38 -0700 Subject: [PATCH 3/6] Changed layouts slightly, beautified form --- gui/client/Runs/TargetsView.coffee | 19 +++++++++---------- gui/client/Runs/body.html | 20 +++++++++++--------- gui/client/Runs/style.less | 4 ++++ gui/server.coffee | 17 ++++------------- 4 files changed, 28 insertions(+), 32 deletions(-) diff --git a/gui/client/Runs/TargetsView.coffee b/gui/client/Runs/TargetsView.coffee index 1f0d5ca..d89a5a5 100644 --- a/gui/client/Runs/TargetsView.coffee +++ b/gui/client/Runs/TargetsView.coffee @@ -116,17 +116,14 @@ class TargetsUI extends CompositeElement t?.tab("show") # DOM objects for creating target - # $targetForm = @optionElements.addNewTargetForm $targetForm = $("#target-create-form") $createButton = $targetForm.find("#target-create") $nameField= $targetForm.find("#target-name") $targetEnvTable = $targetForm.find("#target-env-table") $targetRemoteUrl = $targetForm.find("#target-remote-url") $targetSharedPath = $targetForm.find("#target-shared-path") - # button to add rows to table - $targetEnvTableAdd = $targetEnvTable.find("#env-pair-add") + $targetEnvTableAdd = $targetEnvTable.find("#env-pair-add") # buttons to add rows - # TODO: clear form entries when closed or keep values entered? # Drop-down menu $targetTypeDropdown = $targetForm.find(".dropdown-menu") @@ -135,8 +132,7 @@ class TargetsUI extends CompositeElement do e.preventDefault do enableButton # add the form - $targetEnvTable.removeClass("hide") - $targetEnvTable.addClass("table table-striped") + $targetEnvTable.parent("div").removeClass("hide") # addition form elements depending on target type @newTargetType = $(e.target).text() @@ -151,7 +147,7 @@ class TargetsUI extends CompositeElement $targetRemoteUrl.parent("div").removeClass("hide") $targetSharedPath.parent("div").addClass("hide") $targetSharedPath.val("") - when "ssh-cluster" + when "ssh-cluster" $targetRemoteUrl.parent("div").removeClass("hide") $targetSharedPath.parent("div").removeClass("hide") @@ -165,14 +161,13 @@ class TargetsUI extends CompositeElement # Create target $createButton.click (e) => do e.preventDefault - log "createbutton clicked, targetype: " + @newTargetType # get all env values and pairs - env = "" + env = [] for pair in $targetForm.find(".env-pair") envName = $(pair).find(".env-name").find("input").val() envVal= $(pair).find(".env-value").find("input").val() - env += envName + "=" + envVal + " " + env.push envName + "=" + envVal log envName + "=" + envVal # get remote url value url = $targetRemoteUrl.val() @@ -198,3 +193,7 @@ class TargetsUI extends CompositeElement .find("input") .val("") + # TODO: other things to add: + # 1. tooltip to show expected format of url + # 2. remove rows from table + # 3. reset form when closed diff --git a/gui/client/Runs/body.html b/gui/client/Runs/body.html index 09889b0..7e3f98d 100644 --- a/gui/client/Runs/body.html +++ b/gui/client/Runs/body.html @@ -101,11 +101,11 @@
+
+
@@ -137,6 +137,8 @@ diff --git a/gui/client/Runs/style.less b/gui/client/Runs/style.less index 40970f0..e36f177 100644 --- a/gui/client/Runs/style.less +++ b/gui/client/Runs/style.less @@ -127,6 +127,10 @@ div.dataTables_scrollBody table.dataTable { .modal-body{ overflow: visible; } + .control-label{ + text-align: left; + font-weight: bold; + } } // vim:ft=less diff --git a/gui/server.coffee b/gui/server.coffee index daf521b..32a9cbc 100644 --- a/gui/server.coffee +++ b/gui/server.coffee @@ -562,26 +562,17 @@ app.post /// /api/run/target/([^:]+):(create) ///, (req, res) -> [targetName, action] = req.params envVar = req.body.env targetType = req.body.type - url = req.body.url - sharedPath = req.body.sharedPath - util.log "url: " + url - util.log "env not split: " + envVar - util.log "env split: " + envVar.split(/\s*\n\s*/) + url = req.body.url # empty string if targetType is local + sharedPath = req.body.sharedPath # empty string if targetType is local or ssh {stdin} = cli(res, "xargs", ["3x-target", targetName, "define", targetType, url, sharedPath] , (lazyLines, next) -> lazyLines.join -> next (true) ) (respondJSON res) - for pair in envVar.split(/\s*\n\s*/) + + for pair in envVar stdin.write "#{pair}\n" stdin.end() - - ### - cliEnv(res, { - _3X_QUEUE: queueName - }, "xargs", ["3x-plan", action] - ) (respondJSON res) - ### app.post /// /api/run/queue/([^:]+):(duplicate|prioritize|postpone|cancel) ///, (req, res) -> [queueName, action] = req.params From d8a0c90326ba96c03e8ce0773b80e77c434cc30c Mon Sep 17 00:00:00 2001 From: J Wu Date: Tue, 22 Apr 2014 11:44:04 -0700 Subject: [PATCH 4/6] Remove rows from table in add target modal --- gui/client/Runs/TargetsView.coffee | 16 +++++++++++++--- gui/client/Runs/body.html | 8 ++++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/gui/client/Runs/TargetsView.coffee b/gui/client/Runs/TargetsView.coffee index d89a5a5..51d6e7f 100644 --- a/gui/client/Runs/TargetsView.coffee +++ b/gui/client/Runs/TargetsView.coffee @@ -118,7 +118,7 @@ class TargetsUI extends CompositeElement # DOM objects for creating target $targetForm = $("#target-create-form") $createButton = $targetForm.find("#target-create") - $nameField= $targetForm.find("#target-name") + $nameField = $targetForm.find("#target-name") $targetEnvTable = $targetForm.find("#target-env-table") $targetRemoteUrl = $targetForm.find("#target-remote-url") $targetSharedPath = $targetForm.find("#target-shared-path") @@ -154,10 +154,15 @@ class TargetsUI extends CompositeElement enableButton = -> if $nameField.val().length is 0 then $createButton.attr "disabled", "disabled" else $createButton.removeAttr "disabled" - log "enable button ccalled" + $nameField.on "keyup", -> do enableButton + ### + $(".env-pair-remove").on "click", -> + log "remove button clicked" + ### + # Create target $createButton.click (e) => do e.preventDefault @@ -192,8 +197,13 @@ class TargetsUI extends CompositeElement .insertBefore($(@).closest("tr")) .find("input") .val("") + + $targetEnvTable + .find(".env-pair-remove").on "click", (e) -> + do e.preventDefault + $rowToRemove = $(@).closest("tr") + $rowToRemove.remove() unless $rowToRemove.is(":first-child") # TODO: other things to add: # 1. tooltip to show expected format of url - # 2. remove rows from table # 3. reset form when closed diff --git a/gui/client/Runs/body.html b/gui/client/Runs/body.html index 7e3f98d..f9218e5 100644 --- a/gui/client/Runs/body.html +++ b/gui/client/Runs/body.html @@ -104,7 +104,7 @@
- +
- +
- +
Env Variable Name
+
@@ -137,7 +137,7 @@ From a4652cf69c315d34ce0c6c72b043ec4b84c52073 Mon Sep 17 00:00:00 2001 From: J Wu Date: Tue, 22 Apr 2014 12:31:41 -0700 Subject: [PATCH 5/6] Fixed horrible div tag mismatch in Runs/body.html --- gui/client/Runs/TargetsView.coffee | 5 ----- gui/client/Runs/body.html | 12 ++---------- 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/gui/client/Runs/TargetsView.coffee b/gui/client/Runs/TargetsView.coffee index 51d6e7f..01225c4 100644 --- a/gui/client/Runs/TargetsView.coffee +++ b/gui/client/Runs/TargetsView.coffee @@ -158,11 +158,6 @@ class TargetsUI extends CompositeElement $nameField.on "keyup", -> do enableButton - ### - $(".env-pair-remove").on "click", -> - log "remove button clicked" - ### - # Create target $createButton.click (e) => do e.preventDefault diff --git a/gui/client/Runs/body.html b/gui/client/Runs/body.html index f9218e5..7448409 100644 --- a/gui/client/Runs/body.html +++ b/gui/client/Runs/body.html @@ -105,7 +105,6 @@
-
- - + - + Add Row
-
- Add Row -
- - -