diff --git a/slapos/runner/__init__.py b/slapos/runner/__init__.py index 386702b86163ecc97b4c15de20017c5ef822860c..10b3c2af97eac11f1264ba99e022e9ca8bc25073 100755 --- a/slapos/runner/__init__.py +++ b/slapos/runner/__init__.py @@ -16,7 +16,7 @@ class Parser(OptionParser): """ def __init__(self, usage=None, version=None): """ - Initialize all options possibles. + Initialize all possible options. """ OptionParser.__init__(self, usage=usage, version=version, option_list=[ diff --git a/slapos/runner/static/js/jquery/jqueryTabs.js b/slapos/runner/static/js/jquery/jqueryTabs.js index 2b9adeb5b96d88bede71dced440f4f626e5e6fdb..9b294ed668d8df6d550d8f13380385f4178a219f 100644 --- a/slapos/runner/static/js/jquery/jqueryTabs.js +++ b/slapos/runner/static/js/jquery/jqueryTabs.js @@ -1,5 +1,5 @@ $(document).ready(function(){ - $(".tabContents").hide(); // Hide all tab content divs by default + $(".tabContents").hide(); // Hide all tab content divs by default var hashes = window.location.href.split('#'); var fromheight = 0; var previoustab = null; @@ -18,17 +18,17 @@ $(document).ready(function(){ }); } else{$(".tabContents:first").show(); previoustab = ".tabContents:first";} // Show the first div of tab content by default - $("#tabContaier ul li a").click(function(){ //Fire the click event - if($(this).hasClass('active')){ - return false; - } + $("#tabContaier ul li a").click(function(){ //Fire the click event + if($(this).hasClass('active')){ + return false; + } fromheight = $(previoustab).height(); - var activeTab = $(this).attr("href"); // Catch the click link + var activeTab = $(this).attr("href"); // Catch the click link $("#tabContaier .tabDetails").css("height", $("#tabContaier .tabDetails").height()); - $("#tabContaier ul li a").removeClass("active"); // Remove pre-highlighted link - $(this).addClass("active"); // set clicked link to highlight state - $(".tabContents").hide(); // hide currently visible tab content div - $(activeTab).fadeIn(); // show the target tab content div by matching clicked link. + $("#tabContaier ul li a").removeClass("active"); // Remove pre-highlighted link + $(this).addClass("active"); // set clicked link to highlight state + $(".tabContents").hide(); // hide currently visible tab content div + $(activeTab).fadeIn(); // show the target tab content div by matching clicked link. var diff = fromheight - $(activeTab).height(); if (diff > 0){$("#tabContaier .tabDetails").animate({height: '-=' + diff + 'px'}, 850, 'swing', function() { $("#tabContaier .tabDetails").css("height", ""); @@ -39,5 +39,5 @@ $(document).ready(function(){ previoustab = activeTab; $("#tabContaier .tabDetails").css("height", $("#tabContaier .tabDetails").height()); return false;//this reinitialize tab index when reload page - }); -}); \ No newline at end of file + }); +}); diff --git a/slapos/runner/static/js/jquery/popup.js b/slapos/runner/static/js/jquery/popup.js index 4d2b1f69cc6dff62c3745ec297168550781a33bd..1724392d4a6692c1a8834e623efc5e19907c9f41 100644 --- a/slapos/runner/static/js/jquery/popup.js +++ b/slapos/runner/static/js/jquery/popup.js @@ -30,43 +30,43 @@ $box.show(); $box.append('<div><table id="bcontent"><tr>' + '<td valign="middle" class="logo ' + option.type + '_message"></td>' + - '<td valign="middle"><p>' + msg + '</p></td>' + - '<td valign="middle" class="b_close"><span id="pClose"></span></td></tr></table></div>'); + '<td valign="middle"><p>' + msg + '</p></td>' + + '<td valign="middle" class="b_close"><span id="pClose"></span></td></tr></table></div>'); $(window).scroll(function(){ - $box.animate({top:$(window).scrollTop()+"px" },{queue: false, duration: 350}); + $box.animate({top:$(window).scrollTop()+"px" },{queue: false, duration: 350}); }); h = $("#bcontent").height()+5; $("#pClose").bind("click", function() { - close(); + close(); }); showBox(); if(option.duration != 0){ - showDelayTimer = setTimeout(function(){ + showDelayTimer = setTimeout(function(){ showDelayTimer = null; - close(); - }, option.duration); + close(); + }, option.duration); } } function showBox(){ if(option.load){ $(window).load(function(){ $box.css('top', + ($(window).scrollTop() - h) +'px'); - $box.animate({ top:"+=" + h + "px" }, "slow"); + $box.animate({ top:"+=" + h + "px" }, "slow"); isShow = true; - }); + }); } else{ - $box.css('top', + ($(window).scrollTop() - h) +'px'); - $box.animate({ top:"+=" + h + "px" }, "slow"); + $box.css('top', + ($(window).scrollTop() - h) +'px'); + $box.animate({ top:"+=" + h + "px" }, "slow"); isShow = true; } } function close(){ - $box.animate({ top:"-=" + h + "px" }, "slow", function(){ - $box.fadeOut("normal", function() { + $box.animate({ top:"-=" + h + "px" }, "slow", function(){ + $box.fadeOut("normal", function() { isShow = false; }); - }); + }); } } }); diff --git a/slapos/runner/static/js/scripts/account.js b/slapos/runner/static/js/scripts/account.js index 1c763eb9fc011fc59ce91b017bc43841d2e1d74a..f77bde0bdcb986980f5b444afedc71eecde26520 100644 --- a/slapos/runner/static/js/scripts/account.js +++ b/slapos/runner/static/js/scripts/account.js @@ -1,65 +1,76 @@ -$(document).ready( function() { - var send = false; - $("#update").click(function(){ - var haspwd = false; - var hasAccount = !($("input#hasAccount").val() === ""); - if($("input#username").val() === "" || !$("input#username").val().match(/^[\w\d\._-]+$/)){ - $("#error").Popup("Invalid user name. Please check it!", {type:'alert', duration:3000}); - return false; - } - else if ($("input#username").val().length <6){ - $("#error").Popup("Username must have at least 6 characters", {type:'alert', duration:3000}); - return false; - } - if($("input#name").val() === ""){ - $("#error").Popup("Please enter your name and surname!", {type:'alert', duration:3000}); - return false; - } - if(!$("input#email").val().match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)){ - $("#error").Popup("Please enter a valid email adress!", {type:'alert', duration:3000}); - return false; - } - if(!hasAccount && !$("input#password").val().match(/^[\w\d\._-]+$/)){ - $("#error").Popup("Please enter your new password!", {type:'alert', duration:3000}); - return false; - } - if ($("input#password").val() !== "" && $("input#password").val().length <6){ - $("#error").Popup("The password must have at least 6 characters", {type:'alert', duration:3000}); - return false; - } - if($("input#password").val() !== ""){ - if($("input#password").val() === "" || !$("input#password").val().match(/^[\w\d\._-]+$/)){ - $("#error").Popup("Please enter your new password!", {type:'alert', duration:3000}); - return false; - } - if($("input#password").val() !== $("input#cpassword").val()){ - $("#error").Popup("your password does not match!", {type:'alert', duration:3000}); - return false; - } - haspwd = true; - } - if(!$("input#rcode").val().match(/^[\w\d]+$/)){ - $("#error").Popup("Please enter your password recovery code.", {type:'alert', duration:3000}); - return false; - } - if(send) return false; - send = true; - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + ((hasAccount)? '/updateAccount':'/configAccount'), - data: {name: $("input#name").val(), username:$("input#username").val(), email:$("input#email").val(), - password:((haspwd) ? $("input#password").val():""), rcode:$("input#rcode").val()}, - success: function(data){ - if(data.code ==1){ - location.href = $SCRIPT_ROOT+"/" +/*jslint undef: true */ +/*global $, document, window, $SCRIPT_ROOT */ +/* vim: set et sts=4: */ + +$(document).ready(function () { + "use strict"; + var send = false; + $("#update").click(function () { + var haspwd = false, + hasAccount = ($("input#hasAccount").val() !== ""); + if ($("input#username").val() === "" || !$("input#username").val().match(/^[\w\d\._\-]+$/)) { + $("#error").Popup("Invalid user name. Please check it!", {type: 'alert', duration: 3000}); + return false; } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}); + if ($("input#username").val().length < 6) { + $("#error").Popup("Username must have at least 6 characters", {type: 'alert', duration: 3000}); + return false; } - send = false; - }, - error:function(){send = false;} + if ($("input#name").val() === "") { + $("#error").Popup("Please enter your name and surname!", {type: 'alert', duration: 3000}); + return false; + } + if (!$("input#email").val().match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)) { + $("#error").Popup("Please enter a valid email adress!", {type: 'alert', duration: 3000}); + return false; + } + if (!hasAccount && !$("input#password").val().match(/^[\w\d\._\-]+$/)) { + $("#error").Popup("Please enter your new password!", {type: 'alert', duration: 3000}); + return false; + } + if ($("input#password").val() !== "" && $("input#password").val().length < 6) { + $("#error").Popup("The password must have at least 6 characters", {type: 'alert', duration: 3000}); + return false; + } + if ($("input#password").val() !== "") { + if ($("input#password").val() === "" || !$("input#password").val().match(/^[\w\d\._\-]+$/)) { + $("#error").Popup("Please enter your new password!", {type: 'alert', duration: 3000}); + return false; + } + if ($("input#password").val() !== $("input#cpassword").val()) { + $("#error").Popup("your password does not match!", {type: 'alert', duration: 3000}); + return false; + } + haspwd = true; + } + if (!$("input#rcode").val().match(/^[\w\d]+$/)) { + $("#error").Popup("Please enter your password recovery code.", {type: 'alert', duration: 3000}); + return false; + } + if (send) { + return false; + } + send = true; + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + ((hasAccount) ? '/updateAccount' : '/configAccount'), + data: { + name: $("input#name").val(), + username: $("input#username").val(), + email: $("input#email").val(), + password: ((haspwd) ? $("input#password").val() : ""), + rcode: $("input#rcode").val() + }, + success: function (data) { + if (data.code === 1) { + window.location.href = $SCRIPT_ROOT + "/"; + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + send = false; + }, + error: function () { send = false; } + }); + return false; }); - return false; - }); -}); \ No newline at end of file +}); diff --git a/slapos/runner/static/js/scripts/common.js b/slapos/runner/static/js/scripts/common.js index 1d60809f94ee7041dcfc8c2c268466946a507107..9c67a197f7584a43a6655dab1945a9d02b0530df 100644 --- a/slapos/runner/static/js/scripts/common.js +++ b/slapos/runner/static/js/scripts/common.js @@ -1,72 +1,92 @@ +/*jslint undef: true */ +/*global $, window, $SCRIPT_ROOT */ +/* vim: set et sts=4: */ + /*Common javascript function*/ -String.prototype.toHtmlChar = function(){ - var c = {'<':'<', '>':'>', '&':'&', '"':'"', "'":''', - '#':'#' }; - return this.replace( /[<&>'"#]/g, function(s) { return c[s]; } ); +String.prototype.toHtmlChar = function () { + "use strict"; + var c = { + '<': '<', + '>': '>', + '&': '&', + '"': '"', + "'": ''', + '#': '#' + }; + return this.replace(/[<&>'"#]/g, function (s) { return c[s]; }); }; String.prototype.trim = function () { + "use strict"; return this.replace(/^\s*/, "").replace(/\s*$/, ""); }; /****************************************/ function setInput($elt) { - if(!$elt){$elt = $('input[type="text"], input[type="password"]');} - $elt.addClass("idleField"); - $elt.focus(function() { - $(this).removeClass("idleField").addClass("focusField"); - if (this.value == this.defaultValue){ - this.value = ''; - } - if(this.value != this.defaultValue){ - this.select(); - } - }); - $elt.blur(function() { - $(this).removeClass("focusField").addClass("idleField"); - if ($.trim(this.value) === ''){ - this.value = (this.defaultValue ? this.defaultValue : ''); - } - }); + "use strict"; + if (!$elt) { + $elt = $('input[type="text"], input[type="password"]'); + } + $elt.addClass("idleField"); + $elt.focus(function () { + $(this).removeClass("idleField").addClass("focusField"); + if (this.value === this.defaultValue) { + this.value = ''; + } + if (this.value !== this.defaultValue) { + this.select(); + } + }); + $elt.blur(function () { + $(this).removeClass("focusField").addClass("idleField"); + if ($.trim(this.value) === '') { + this.value = (this.defaultValue || ''); + } + }); } /*******************Bind remove all button*******************/ -function bindRemove(){ - $("a#removeSr").click(function(){ - if(!window.confirm("Do you really want to remove all software release?")){ - return false; - } - location.href = $SCRIPT_ROOT + '/removeSoftware'; - }); - $("a#removeIst").click(function(){ - if(!window.confirm("Do you really want to remove all computer partition?")){ - return false; - } - location.href = $SCRIPT_ROOT + '/removeInstance'; - }); +function bindRemove() { + "use strict"; + $("a#removeSr").click(function () { + if (!window.confirm("Do you really want to remove all software release?")) { + return false; + } + window.location.href = $SCRIPT_ROOT + '/removeSoftware'; + }); + $("a#removeIst").click(function () { + if (!window.confirm("Do you really want to remove all computer partition?")) { + return false; + } + window.location.href = $SCRIPT_ROOT + '/removeInstance'; + }); } /**************************/ (function ($, document, window) { + "use strict"; $.extend($.fn, { - slideBox: function(state) { - if (!state) state = "hide"; - var header = $("#"+$(this).attr('id')+">h2"); - var box = $("#"+$(this).attr('id')+">div"); - header.addClass(state); - if(state=="hide"){box.css('display', 'none');} - header.click(function(){ - var state = box.css("display"); - if (state == "none"){ - box.slideDown("normal"); - header.removeClass("hide"); - header.addClass("show"); - } - else{ - box.slideUp("normal"); - header.removeClass("show"); - header.addClass("hide"); - } - }); - } + slideBox: function (state) { + if (!state) { + state = "hide"; + } + var header = $("#" + $(this).attr('id') + ">h2"), + box = $("#" + $(this).attr('id') + ">div"); + header.addClass(state); + if (state === "hide") { + box.css('display', 'none'); + } + header.click(function () { + var state = box.css("display"); + if (state === "none") { + box.slideDown("normal"); + header.removeClass("hide"); + header.addClass("show"); + } else { + box.slideUp("normal"); + header.removeClass("show"); + header.addClass("hide"); + } + }); + } }); -}(jQuery, document, this)); \ No newline at end of file +}(jQuery, document, this)); diff --git a/slapos/runner/static/js/scripts/cookies.js b/slapos/runner/static/js/scripts/cookies.js index 06473694b203823900465480a09ec4c4ca20f34b..9cc7c47d473be4b3027997d255ecb0c4502d1c01 100644 --- a/slapos/runner/static/js/scripts/cookies.js +++ b/slapos/runner/static/js/scripts/cookies.js @@ -1,37 +1,49 @@ +/*jslint undef: true */ +/*global document, escape, unescape */ +/* vim: set et sts=4: */ + /*Cookies Management*/ -function setCookie(name,value,expires,path,domain,secure){ - if (!expires){ - var today = new Date(); - expires = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000); - } - document.cookie = name + "=" + escape(value) + - "; expires=" + expires.toGMTString() + - ((path) ? "; path=" + path : "/") + - ((domain) ? "; domain=" + domain : "") + - ((secure) ? "; secure" : ""); -} -function deleteCookie(name,path,domain) { - if (getCookie(name)) { - document.cookie = name + "=" + - ((path) ? "; path=" + path : "/") + - ((domain) ? "; domain=" + domain : "") + - "; expires=Thu, 01-Jan-70 00:00:01 GMT"; - } +function setCookie(name, value, expires, path, domain, secure) { + "use strict"; + if (!expires) { + var today = new Date(); + expires = new Date(today.getTime() + 365 * 24 * 60 * 60 * 1000); + } + document.cookie = name + "=" + escape(value) + + "; expires=" + expires.toGMTString() + + ((path) ? "; path=" + path : "/") + + ((domain) ? "; domain=" + domain : "") + + ((secure) ? "; secure" : ""); } + function getCookie(name) { - var i,x,y,ARRcookies=document.cookie.split(";"); - for (i=0;i<ARRcookies.length;i++){ - x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); - y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); - x=x.replace(/^\s+|\s+$/g,""); - if (x==name){ - var result = unescape(y); - if (result != "" && result != null){ - return result; - } - return null; + "use strict"; + var i, + x, + y, + result, + ARRcookies = document.cookie.split(";"); + for (i = 0; i < ARRcookies.length; i += 1) { + x = ARRcookies[i].substr(0, ARRcookies[i].indexOf("=")); + y = ARRcookies[i].substr(ARRcookies[i].indexOf("=") + 1); + x = x.replace(/^\s+|\s+$/g, ""); + if (x === name) { + result = unescape(y); + if (result !== "" && result !== null) { + return result; + } + return null; + } + } + return null; +} +function deleteCookie(name, path, domain) { + "use strict"; + if (getCookie(name)) { + document.cookie = name + "=" + + (path ? "; path=" + path : "/") + + (domain ? "; domain=" + domain : "") + + "; expires=Thu, 01-Jan-70 00:00:01 GMT"; } - } - return null; } /**************************/ diff --git a/slapos/runner/static/js/scripts/editor.js b/slapos/runner/static/js/scripts/editor.js index 58c9b3ff794add30f85dc62bf50993f4f4bbdb76..0bdbc115f95934ccb543867c621b71e6471e2cc3 100644 --- a/slapos/runner/static/js/scripts/editor.js +++ b/slapos/runner/static/js/scripts/editor.js @@ -1,126 +1,151 @@ -$(document).ready( function() { - var editor = ace.edit("editor"); - editor.setTheme("ace/theme/crimson_editor"); +/*jslint undef: true */ +/*global $, document, ace, $SCRIPT_ROOT */ +/* vim: set et sts=4: */ - var CurentMode = require("ace/mode/buildout").Mode; - editor.getSession().setMode(new CurentMode()); - editor.getSession().setTabSize(2); - editor.getSession().setUseSoftTabs(true); - editor.renderer.setHScrollBarAlwaysVisible(false); - var file = $("input#profile").val(); - var workdir = $("input#workdir").val(); - var edit = false; - var send = false; - selectFile(file); +$(document).ready(function () { + "use strict"; - $("#save").click(function(){ - if(!edit){ - $("#error").Popup("Can not load your file, please make sure that you have selected a Software Release", {type:'alert', duration:5000}); - return false; - } - if (send) return; - send =true - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/saveFileContent', - data: {file: file, content: editor.getSession().getValue()}, - success: function(data){ - if(data.code == 1){ - $("#error").Popup("File Saved!", {type:'confirm', duration:2000}); - } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}); - } - send = false; - } - }); - return false; - }); - $("#getmd5").click(function(){ - getmd5sum(); - return false; - }); - $("#adddevelop").click(function(){ - var developList = new Array(); - var i=0; - $("#plist li").each(function(index){ - var elt = $(this).find("input:checkbox"); - if (elt.is(":checked")){ - developList[i] = workdir+"/"+elt.val(); - i++; - elt.attr("checked", false); - } - }); - if (developList.length > 0){setDevelop(developList);} - return false; - }); + var editor, CurrentMode, file, workdir, edit, send; - function selectFile(file){ - edit = false; - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/getFileContent', - data: "file=" + file, - success: function(data){ - if(data.code == 1){ - editor.getSession().setValue(data.result); - edit = true; - } - else{ - $("#error").Popup("Can not load your file, please make sure that you have selected a Software Release", {type:'alert', duration:5000}); - } - } - }); - return; - } + function selectFile(file) { + edit = false; + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/getFileContent', + data: "file=" + file, + success: function (data) { + if (data.code === 1) { + editor.getSession().setValue(data.result); + edit = true; + } else { + $("#error").Popup("Can not load your file, please make sure that you have selected a Software Release", + {type: 'alert', duration: 5000}); + } + } + }); + return; + } - function getmd5sum(){ - if (send) return; - send =true - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/getmd5sum', - data: {file: file}, - success: function(data){ - if(data.code == 1){ - $("#md5sum").empty(); - $("#md5sum").append('md5sum : <span>' + data.result + '</span>'); - } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}); - } - send = false; - } - }); - } - function setDevelop(developList){ - if (developList==null || developList.length <= 0) return; - editor.navigateFileStart(); - editor.find('buildout',{caseSensitive: true,wholeWord: true}); - if(!editor.getSelectionRange().isEmpty()){ - //editor.find("",{caseSensitive: true,wholeWord: true,regExp: true}); - //if(!editor.getSelectionRange().isEmpty()){ - //alert("found"); - //} - //else{alert("no found"); - //} - } - else{ - $("#error").Popup("Can not found part [buildout]! Please make sure that you have a cfg file", {type:'alert', duration:3000}); - return; - } - editor.navigateLineEnd(); - $.post($SCRIPT_ROOT+"/getPath", {file:developList.join("#")}, function(data) { - if(data.code==1){ - var result = data.result.split('#'); - editor.insert("\ndevelop =\n\t" + result[0] + "\n"); - for(var i=1; i<result.length; i++) - editor.insert("\t" + result[i] + "\n"); - } - }) - .error(function() { }) - .complete(function(){}); - editor.insert("\n"); - } -}); \ No newline at end of file + function getmd5sum() { + if (send) { + return; + } + send = true; + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/getmd5sum', + data: {file: file}, + success: function (data) { + if (data.code === 1) { + $("#md5sum").empty(); + $("#md5sum").append('md5sum : <span>' + data.result + '</span>'); + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + send = false; + } + }); + } + + function setDevelop(developList) { + if (developList === null || developList.length <= 0) { + return; + } + editor.navigateFileStart(); + editor.find('buildout', {caseSensitive: true, wholeWord: true}); + if (editor.getSelectionRange().isEmpty()) { + $("#error").Popup("Can not found part [buildout]! Please make sure that you have a cfg file", + {type: 'alert', duration: 3000}); + return; + } + //else { + // //editor.find("",{caseSensitive: true,wholeWord: true,regExp: true}); + // //if (!editor.getSelectionRange().isEmpty()) { + // //alert("found"); + // //} + // //else{alert("no found"); + // //} + //} + editor.navigateLineEnd(); + $.post($SCRIPT_ROOT + "/getPath", {file: developList.join("#")}, function (data) { + if (data.code === 1) { + var i, + result = data.result.split('#'); + editor.insert("\ndevelop =\n\t" + result[0] + "\n"); + for (i = 1; i < result.length; i += 1) { + editor.insert("\t" + result[i] + "\n"); + } + } + }) + .error(function () { }) + .complete(function () {}); + editor.insert("\n"); + } + + + editor = ace.edit("editor"); + CurrentMode = require("ace/mode/buildout").Mode; + file = $("input#profile").val(); + workdir = $("input#workdir").val(); + edit = false; + send = false; + + editor.setTheme("ace/theme/crimson_editor"); + + editor.getSession().setMode(new CurrentMode()); + editor.getSession().setTabSize(2); + editor.getSession().setUseSoftTabs(true); + editor.renderer.setHScrollBarAlwaysVisible(false); + + selectFile(file); + + $("#save").click(function () { + if (!edit) { + $("#error").Popup("Can not load your file, please make sure that you have selected a Software Release", + {type: 'alert', duration: 5000}); + return false; + } + if (send) { + return; + } + send = true; + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/saveFileContent', + data: {file: file, content: editor.getSession().getValue()}, + success: function (data) { + if (data.code === 1) { + $("#error").Popup("File Saved!", {type: 'confirm', duration: 2000}); + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + send = false; + } + }); + return false; + }); + + $("#getmd5").click(function () { + getmd5sum(); + return false; + }); + + $("#adddevelop").click(function () { + var developList = [], + i = 0; + $("#plist li").each(function (index) { + var elt = $(this).find("input:checkbox"); + if (elt.is(":checked")) { + developList[i] = workdir + "/" + elt.val(); + i += 1; + elt.attr("checked", false); + } + }); + if (developList.length > 0) { + setDevelop(developList); + } + return false; + }); + +}); diff --git a/slapos/runner/static/js/scripts/folder.js b/slapos/runner/static/js/scripts/folder.js index 939dca4bb28e4acf48789cae5e2593e3127a2b3f..ee9b65d593049d030c6c88a76423a8a5ff62aed8 100644 --- a/slapos/runner/static/js/scripts/folder.js +++ b/slapos/runner/static/js/scripts/folder.js @@ -1,129 +1,138 @@ -$(document).ready( function() { - var send = false; - var cloneRequest; - $('#fileNavigator').gsFileManager({ script: $SCRIPT_ROOT+"/fileBrowser", root: "workspace/"}); - configRadio(); - $("input#nothing").change(function(){ - configRadio(); - }); - $("input#ssh").change(function(){ - configRadio(); - }); - $("input#https").change(function(){ - configRadio(); - }); - $("#clone").click(function(){ - if(send){ - cloneRequest.abort(); - $("#imgwaitting").fadeOut('normal'); - $("#clone").empty(); - $("#clone").append("Clone"); - send = false; - return; - } - var repo_url = $("input#repo").val(); - var email = ""; - var name = ""; - /* /^(ht|f)tps?:\/\/[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/ */ - if($("input#repo").val() === '' || !repo_url.match(/^[\w\d\.\/:~@_-]+$/)){ - $("#error").Popup("Invalid url for the repository", {type:'alert', duration:3000}); - return false; - } - if($("input#name").val() === '' || !$("input#name").val().match(/^[\w\d\._-]+$/)){ - $("#error").Popup("Invalid project name", {type:'alert', duration:3000}); - return false; - } - if($("input#user").val() !== ""){ - name = $("input#user").val(); - } - if($("input#email").val() !== '' && $("input#email").val() !== "Enter your email adress..."){ - if(!$("input#email").val().match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)){ - $("#error").Popup("Please enter a valid email adress!", {type:'alert', duration:3000}); - return false; - } - email = $("input#email").val(); - } - if($("input#https").is(':checked')){ - if($("input#username").val() == "" || !$("input#username").val().match(/^[\w\d\._-]+$/)){ - $("#error").Popup("Please enter a correct username", {type:'alert', duration:3000}); - return false; - } - if($("input#password").val() != ""){ - if(repo_url.indexOf("https://") != -1){ - repo_url = "https://" + $("input#username").val() + - ":" + $("input#password").val() + - "@" + repo_url.substring(8); - } - else{ - $("#error").Popup("The URL of your repository should start with 'https://'", {type:'alert', duration:3000}); - return false; - } - } - else{ - $("#error").Popup("Please enter your password", {type:'alert', duration:3000}); - return false; - } - } - else if(repo_url.indexOf("https://") != -1){ - $("#error").Popup("Please select HTTPS Security Mode for this repository", {type:'alert', duration:3000}); - return false; - } - $("#imgwaitting").fadeIn('normal'); - $("#clone").empty(); - $("#clone").append("Stop"); - send = true; - cloneRequest = $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/cloneRepository', - data: {repo: repo_url, name: ($("input#workdir").val() + "/" + - $("input#name").val()), email:email, - user:name}, - success: function(data){ - if(data.code == 1){ - $("#file_navigation").fadeIn('normal'); - $("#error").Popup("Your repository is cloned!", {type:'confirm', duration:3000}); - $("input#repo").val("Enter the url of your repository..."); - $("input#name").val("Enter the project name..."); - $('#fileNavigator').gsFileManager({ script: $SCRIPT_ROOT+"/fileBrowser", root: "workspace/"}); - } - else{ - $("#error").Popup(data.result, {type:'error'}); - } - $("#imgwaitting").hide(); - $("#clone").empty(); - $("#clone").append("Clone"); - send = false; - }, - error: function(request,error) { - $("#error").Popup("unable to clone your project, please check your internet connection", {type:'error', duration:3000}); - $("#imgwaitting").hide(); +/*jslint undef: true */ +/*global $, document, $SCRIPT_ROOT */ +/* vim: set et sts=4: */ + + +$(document).ready(function () { + "use strict"; + + function configRadio() { + $("#modelist li").each(function (index) { + var boxselector = "#box" + index; + if ($(this).hasClass('checked')) { + $(this).removeClass('checked'); + $(boxselector).slideUp("normal"); + } + if ($(this).find("input:radio").is(':checked')) { + $(this).addClass('checked'); + //change content here + $(boxselector).slideDown("normal"); + } + if (index !== 2) { + $("input#password").val(""); + $("input#cpassword").val(""); + } + }); + } + + var send = false, + cloneRequest; + + $('#fileNavigator').gsFileManager({ script: $SCRIPT_ROOT + "/fileBrowser", root: "workspace/"}); + configRadio(); + $("input#nothing").change(function () { + configRadio(); + }); + $("input#ssh").change(function () { + configRadio(); + }); + $("input#https").change(function () { + configRadio(); + }); + $("#clone").click(function () { + if (send) { + cloneRequest.abort(); + $("#imgwaitting").fadeOut('normal'); + $("#clone").empty(); + $("#clone").append("Clone"); + send = false; + return; + } + var repo_url = $("input#repo").val(), + email = "", + name = ""; + + /* /^(ht|f)tps?:\/\/[a-z0-9-\.]+\.[a-z]{2,4}\/?([^\s<>\#%"\,\{\}\\|\\\^\[\]`]+)?$/ */ + if ($("input#repo").val() === '' || !repo_url.match(/^[\w\d\.\/:~@_\-]+$/)) { + $("#error").Popup("Invalid url for the repository", {type: 'alert', duration: 3000}); + return false; + } + if ($("input#name").val() === '' || !$("input#name").val().match(/^[\w\d\._\-]+$/)) { + $("#error").Popup("Invalid project name", {type: 'alert', duration: 3000}); + return false; + } + if ($("input#user").val() !== "") { + name = $("input#user").val(); + } + if ($("input#email").val() !== '' && $("input#email").val() !== "Enter your email adress...") { + if (!$("input#email").val().match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/)) { + $("#error").Popup("Please enter a valid email adress!", {type: 'alert', duration: 3000}); + return false; + } + email = $("input#email").val(); + } + if ($("input#https").is(':checked')) { + if ($("input#username").val() === "" || !$("input#username").val().match(/^[\w\d\._\-]+$/)) { + $("#error").Popup("Please enter a correct username", {type: 'alert', duration: 3000}); + return false; + } + if ($("input#password").val() !== "") { + if (repo_url.indexOf("https://") !== -1) { + repo_url = "https://" + $("input#username").val() + + ":" + $("input#password").val() + + "@" + repo_url.substring(8); + } else { + $("#error").Popup("The URL of your repository should start with 'https://'", {type: 'alert', duration: 3000}); + return false; + } + } else { + $("#error").Popup("Please enter your password", {type: 'alert', duration: 3000}); + return false; + } + } else if (repo_url.indexOf("https://") !== -1) { + $("#error").Popup("Please select HTTPS Security Mode for this repository", {type: 'alert', duration: 3000}); + return false; + } + $("#imgwaitting").fadeIn('normal'); $("#clone").empty(); - $("#clone").append("Clone"); - } - }); - return false; - }); - function configRadio(){ - $("#modelist li").each(function(index) { - var boxselector = "#box" + index; - if($(this).hasClass('checked')){ - $(this).removeClass('checked'); - $(boxselector).slideUp("normal"); - } - if($(this).find("input:radio").is(':checked')){ - $(this).addClass('checked'); - //change content here - $(boxselector).slideDown("normal"); - } - if(index != 2){ - $("input#password").val(""); - $("input#cpassword").val(""); - } - }); - } + $("#clone").append("Stop"); + send = true; + cloneRequest = $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/cloneRepository', + data: { + repo: repo_url, + name: $("input#workdir").val() + "/" + $("input#name").val(), + email: email, + user: name + }, + success: function (data) { + if (data.code === 1) { + $("#file_navigation").fadeIn('normal'); + $("#error").Popup("Your repository is cloned!", {type: 'confirm', duration: 3000}); + $("input#repo").val("Enter the url of your repository..."); + $("input#name").val("Enter the project name..."); + $('#fileNavigator').gsFileManager({ script: $SCRIPT_ROOT + "/fileBrowser", root: "workspace/"}); + } else { + $("#error").Popup(data.result, {type: 'error'}); + } + $("#imgwaitting").hide(); + $("#clone").empty(); + $("#clone").append("Clone"); + send = false; + }, + error: function (request, error) { + $("#error").Popup("unable to clone your project, please check your internet connection", {type: 'error', duration: 3000}); + $("#imgwaitting").hide(); + $("#clone").empty(); + $("#clone").append("Clone"); + } + }); + return false; + }); - function selectFile(file){ - //nothing - return; - } -}); \ No newline at end of file + function selectFile(file) { + //nothing + return; + } +}); diff --git a/slapos/runner/static/js/scripts/inspectInstance.js b/slapos/runner/static/js/scripts/inspectInstance.js index 47b145b088fe35b225ad1b3daeec0de93009ace7..21d703a8ce5f2b7a538623bce655d1d302293cd2 100644 --- a/slapos/runner/static/js/scripts/inspectInstance.js +++ b/slapos/runner/static/js/scripts/inspectInstance.js @@ -1,263 +1,307 @@ -$(document).ready(function() { - var editor; - setupFileTree(); - $($('#slappart li')[0]).find('input:radio').attr('checked', true); - $('.menu-box-right>div').css('min-height', $('#slappart li').length * 26 + 20 + 'px'); - configRadio(); - var send = false; - var lastli = null; - var partitionAmount = $('input#partitionAmount').val(); - $('#slappart li').each(function() { - lastli = $(this); - $(this).find('input:radio').change(function() { - configRadio(); - }); - }); - if (lastli) {lastli.css('border-bottom', 'none');} +/*jslint undef: true */ +/*global $, document, window, alert, $SCRIPT_ROOT, setInput, ace */ +/* vim: set et sts=4: */ - $('#parameterkw').slideBox('show'); - setupSlappart(); - $('#reloadfiles').click(function() { - setupFileTree(); - }); - $('#refresh').click(function() { - if (send) return; - $('#imgwaitting').fadeIn(); - $.ajax({ - type: 'GET', - url: $SCRIPT_ROOT + '/supervisordStatus', - data: '', - success: function(data) { - if (data.code == 1) { - $('#supervisordcontent').empty(); - $('#supervisordcontent').append(data.result); - } - $('#imgwaitting').fadeOut(); - } - }); - return false; - }); - $('#add_attribute').click(function() { - var size = Number($('#partitionParameter > tbody > tr').last().attr('id').split('_')[1]) + 1; - var row = "<tr id='row_" + size + "'><td class='first'><input type='text' name='txt_" + size + "' id='txt_" + size + "'></td>" + - "<td style='padding:6px'><textarea class='slap' id='value_" + size + "'></textarea>" + - "</td><td valign='middle'><span style='margin-left: 10px;' id='btn_" + size + "' class='close'></span></td></tr>"; - $('#partitionParameter').append(row); - setInput($('input#txt_' + size)); - setupTextarea($('textarea#value_' + size)); - $('#btn_' + size).click(function() { - var index = $(this).attr('id').split('_')[1]; - $('tr#row_' + index).remove(); - }); - return false; - }); - $('#updateParameters').click(function() { - updateParameter(); - return false; - }); - $('#xmlview').click(function() { - var content = '<h2 style="color: #4c6172; font: 18px \'Helvetica Neue\', Helvetica, Arial, sans-serif;">' + - 'INSTANCE PARAMETERS: Load XML file</h2><p id="xmllog" class="message"><br/></p>'; - content += '<div class="main_content" style="height:230px"><pre id="editor"></pre></div>' + - '<input type=submit value="Load" id="loadxml" class="button">'; - $.ajax({ - type: 'GET', - url: $SCRIPT_ROOT + '/getParameterXml/xml', - success: function(data){ - if(data.code == 1){ - $("#inline_instance").html(content); - setupEditor(true); - $("a#inlineInstance").colorbox({inline:true, width: "600px", height: "410px", onComplete:function(){ - editor.getSession().setValue(data.result); - }}); - $("a#inlineInstance").click(); - $("#loadxml").click(function(){ - //Parse XML file - try { - var xmlDoc = $.parseXML(editor.getSession().getValue()), $xml = $(xmlDoc); - if ($xml.find('parsererror').length !== 0) {$('p#xmllog').html('Error: Invalid XML document!<br/>');return false;} - } catch (err) { - $('p#xmllog').html('Error: Invalid XML document!<br/>');return false; - } - $.ajax({ - type: 'POST', - url: $SCRIPT_ROOT + '/saveParameterXml', - data: {software_type: '', parameter: editor.getSession().getValue()}, - success: function(data) { - if (data.code == 1) { - location.href = $SCRIPT_ROOT + '/inspectInstance#tab3'; - location.reload(); - } - else {$('p#xmllog').html(data.result);} +$(document).ready(function () { + "use strict"; + + var editor, + send = false, + lastli = null, + partitionAmount = $('input#partitionAmount').val(); + + function setupTextarea($txt) { + var size = Number($txt.attr('id').split('_')[1]), + hiddenDiv = $(document.createElement('div')), + content = null; + hiddenDiv.attr('id', 'div_' + size); + hiddenDiv.addClass('hiddendiv'); + $('div#parameterkw').append(hiddenDiv); + $txt.keyup(function () { + content = $txt.val().replace(/\n/g, '<br>'); + hiddenDiv.html(content); + if (hiddenDiv.height() > $txt.height() && hiddenDiv.height() > 120) { + return; } - }); - return false; + $txt.css('height', hiddenDiv.height() + 'px'); }); - } - else { - $('#error').Popup(data.result, {type: 'error', duration: 5000}); - } - } - }); - }); - //Load previous instance parameters - loadParameter(); - $('a#parameterTab').click(function() { - var size = $('#partitionParameter > tbody > tr').length; - for (var i = 2; i <= size; i++) { - $('textarea#value_' + i).keyup(); } - }); - function setupFileTree(path){ - var root = $("input#root").val(); - if (root === '') return; - if (path){ - root += '/' + path + '/'; + function setupFileTree(path) { + var root = $("input#root").val(); + if (root === '') { + return; + } + if (path) { + root += '/' + path + '/'; + } else { + root += '/'; + } + $('#fileNavigator').gsFileManager({script: $SCRIPT_ROOT + "/fileBrowser", root: root}); } - else{root += '/';} - $('#fileNavigator').gsFileManager({ script: $SCRIPT_ROOT+"/fileBrowser", root: root}); - } - $("#parameter").load($SCRIPT_ROOT + '/getParameterXml'); - $("#update").click(function(){ - if($("#parameter").val() === ''){ - $("#error").Popup("Can not save empty value!", {type:'alert', duration:3000}); + function configRadio() { + $('#slappart li').each(function () { + var $radio = $(this).find('input:radio'), + boxselector = '#box' + $radio.attr('id'); + + if ($(this).hasClass('checked')) { + $(this).removeClass('checked'); + $(boxselector).slideUp('normal'); + } + if ($radio.is(':checked')) { + $(this).addClass('checked'); + //change content here + $(boxselector).slideDown('normal'); + } + }); } - $.ajax({ - type: 'POST', - url: $SCRIPT_ROOT + '/saveParameterXml', - data: {parameter: $('#parameter').val().trim()}, - success: function(data) { - if (data.code == 1) { - $('#error').Popup('Instance parameters updated!', {type: 'info', duration: 3000}); + + function setupSlappart() { + var i, elt, fileId; + for (i = 0; i < partitionAmount; i += 1) { + elt = $('#slappart' + i + 'Parameter'); + fileId = $('#slappart' + i + 'Files'); + + if (elt && elt !== undefined) { + elt.click(function () { + alert($(this).html()); + }); } - else { - $('#error').Popup(data.result, {type: 'error', duration: 5000}); + if (fileId && fileId !== undefined) { + fileId.click(function () { + $('#instancetabfiles').click(); + setupFileTree($(this).attr('rel')); + }); } - } - }); - }); + } + } - function updateParameter() { - var xml = '<?xml version="1.0" encoding="utf-8"?>\n', - software_type = '', - software_type_input_value = $('input#software_type').val(); - if (software_type_input_value !== '' && software_type_input_value !== 'Software Type here...') { - software_type = software_type_input_value; + function updateParameter() { + var xml = '<?xml version="1.0" encoding="utf-8"?>\n', + software_type = '', + software_type_input_value = $('input#software_type').val(), + size = $('#partitionParameter > tbody > tr').length, + i; + + if (software_type_input_value !== '' && software_type_input_value !== 'Software Type here...') { + software_type = software_type_input_value; + } + xml += '<instance>\n'; + if (size > 1) { + for (i = 2; i <= size; i += 1) { + if ($('input#txt_' + i).val() !== '') { + xml += '<parameter id="' + $('input#txt_' + i).val() + '">' + $('textarea#value_' + i).val() + '</parameter>\n'; + } + } + } + xml += '</instance>\n'; + $.ajax({ + type: 'POST', + url: $SCRIPT_ROOT + '/saveParameterXml', + data: {software_type: software_type, parameter: xml}, + success: function (data) { + if (data.code === 1) { + $('#error').Popup('Instance parameters has been updated, please run your instance now!', {type: 'confirm', duration: 5000}); + } else { + $('#error').Popup(data.result, {type: 'error', duration: 5000}); + } + } + }); } - xml += '<instance>\n'; - var size = $('#partitionParameter > tbody > tr').length; - if (size > 1) { - for (var i = 2; i <= size; i++) { - if ($('input#txt_' + i).val() != '') { - xml += '<parameter id="' + $('input#txt_' + i).val() + '">' + $('textarea#value_' + i).val() + '</parameter>\n'; + + function setupEditor(editable) { + editor = ace.edit('editor'); + editor.setTheme('ace/theme/crimson_editor'); + + var CurentMode = require('ace/mode/text').Mode; + editor.getSession().setMode(new CurentMode()); + editor.getSession().setTabSize(2); + editor.getSession().setUseSoftTabs(true); + editor.renderer.setHScrollBarAlwaysVisible(false); + if (!editable) { + editor.setReadOnly(true); } - } } - xml += '</instance>\n'; - $.ajax({ - type: 'POST', - url: $SCRIPT_ROOT + '/saveParameterXml', - data: {software_type: software_type, parameter: xml}, - success: function(data) { - if (data.code == 1) { - $('#error').Popup('Instance parameters has been updated, please run your instance now!', {type: 'confirm', duration: 5000}); - } - else { - $('#error').Popup(data.result, {type: 'error', duration: 5000}); - } + + function loadParameter() { + $.ajax({ + type: 'GET', + url: $SCRIPT_ROOT + '/getParameterXml/dict', + success: function (data) { + var dict, propertie, size; + if (data.code === 1) { + dict = data.result.instance; + for (propertie in dict) { + $("#add_attribute").click(); + size = Number($("#partitionParameter > tbody > tr").last().attr('id').split('_')[1]); + $("input#txt_" + size).val(propertie); + $("textarea#value_" + size).val(dict[propertie]); + $("textarea#value_" + size).keyup(); + } + } else { + $('#error').Popup(data.result, {type: 'error', duration: 5000}); + } + } + }); } + + setupFileTree(); + $($('#slappart li')[0]).find('input:radio').attr('checked', true); + $('.menu-box-right>div').css('min-height', $('#slappart li').length * 26 + 20 + 'px'); + configRadio(); + $('#slappart li').each(function () { + lastli = $(this); + $(this).find('input:radio').change(function () { + configRadio(); + }); }); - } - function setupTextarea($txt) { - var size = Number($txt.attr('id').split('_')[1]); - var hiddenDiv = $(document.createElement('div')), - content = null; - hiddenDiv.attr('id', 'div_' + size); - hiddenDiv.addClass('hiddendiv'); - $('div#parameterkw').append(hiddenDiv); - $txt.keyup(function() { - content = $txt.val().replace(/\n/g, '<br>'); - hiddenDiv.html(content); - if (hiddenDiv.height() > $txt.height() && hiddenDiv.height() > 120) { - return; - } - $txt.css('height', hiddenDiv.height() + 'px'); + if (lastli) { + lastli.css('border-bottom', 'none'); + } + + $('#parameterkw').slideBox('show'); + setupSlappart(); + $('#reloadfiles').click(function () { + setupFileTree(); }); - } - function loadParameter() { - $.ajax({ - type: 'GET', - url: $SCRIPT_ROOT + '/getParameterXml/dict', - success: function(data){ - if(data.code == 1){ - var dict = data.result['instance']; - for (var propertie in dict){ - $("#add_attribute").click(); - var size = Number($("#partitionParameter > tbody > tr").last().attr('id').split('_')[1]); - $("input#txt_"+size).val(propertie); - $("textarea#value_"+size).val(dict[propertie]); - $("textarea#value_"+size).keyup(); + $('#refresh').click(function () { + if (send) { + return; } - } - else { - $('#error').Popup(data.result, {type: 'error', duration: 5000}); - } - } + $('#imgwaitting').fadeIn(); + $.ajax({ + type: 'GET', + url: $SCRIPT_ROOT + '/supervisordStatus', + data: '', + success: function (data) { + if (data.code === 1) { + $('#supervisordcontent').empty(); + $('#supervisordcontent').append(data.result); + } + $('#imgwaitting').fadeOut(); + } + }); + return false; + }); + $('#add_attribute').click(function () { + var size = Number($('#partitionParameter > tbody > tr').last().attr('id').split('_')[1]) + 1, + row = "<tr id='row_" + size + "'><td class='first'><input type='text' name='txt_" + size + "' id='txt_" + size + "'></td>" + + "<td style='padding:6px'><textarea class='slap' id='value_" + size + "'></textarea>" + + "</td><td valign='middle'><span style='margin-left: 10px;' id='btn_" + size + "' class='close'></span></td></tr>"; + $('#partitionParameter').append(row); + setInput($('input#txt_' + size)); + setupTextarea($('textarea#value_' + size)); + $('#btn_' + size).click(function () { + var index = $(this).attr('id').split('_')[1]; + $('tr#row_' + index).remove(); + }); + return false; + }); + $('#updateParameters').click(function () { + updateParameter(); + return false; }); - } - function configRadio() { - $('#slappart li').each(function() { - var $radio = $(this).find('input:radio'); - var boxselector = '#box' + $radio.attr('id'); - if ($(this).hasClass('checked')) { - $(this).removeClass('checked'); - $(boxselector).slideUp('normal'); - } - if ($radio.is(':checked')) { - $(this).addClass('checked'); - //change content here - $(boxselector).slideDown('normal'); + $('#xmlview').click(function () { + var content = '<h2 style="color: #4c6172; font: 18px \'Helvetica Neue\', Helvetica, Arial, sans-serif;">' + + 'INSTANCE PARAMETERS: Load XML file</h2><p id="xmllog" class="message"><br/></p>'; + content += '<div class="main_content" style="height:230px"><pre id="editor"></pre></div>' + + '<input type=submit value="Load" id="loadxml" class="button">'; + $.ajax({ + type: 'GET', + url: $SCRIPT_ROOT + '/getParameterXml/xml', + success: function (data) { + if (data.code === 1) { + $("#inline_instance").html(content); + setupEditor(true); + $("a#inlineInstance").colorbox( + { + inline: true, + width: "600px", + height: "410px", + onComplete: function () { + editor.getSession().setValue(data.result); + } + } + ); - } + $("a#inlineInstance").click(); + $("#loadxml").click(function () { + //Parse XML file + try { + var xmlDoc = $.parseXML(editor.getSession().getValue()), $xml = $(xmlDoc); + if ($xml.find('parsererror').length !== 0) { + $('p#xmllog').html('Error: Invalid XML document!<br/>'); + return false; + } + } catch (err) { + $('p#xmllog').html('Error: Invalid XML document!<br/>'); + return false; + } + $.ajax({ + type: 'POST', + url: $SCRIPT_ROOT + '/saveParameterXml', + data: { + software_type: '', + parameter: editor.getSession().getValue() + }, + success: function (data) { + if (data.code === 1) { + window.location.href = $SCRIPT_ROOT + '/inspectInstance#tab3'; + window.location.reload(); + } else { + $('p#xmllog').html(data.result); + } + } + }); + return false; + }); + } else { + $('#error').Popup(data.result, {type: 'error', duration: 5000}); + } + } + }); + }); + //Load previous instance parameters + loadParameter(); + $('a#parameterTab').click(function () { + var i, + size = $('#partitionParameter > tbody > tr').length; + for (i = 2; i <= size; i += 1) { + $('textarea#value_' + i).keyup(); + } }); - } - function setupBox() { - var state = $('#softwareType').css('display'); - if (state == 'none') { - $('#softwareType').slideDown('normal'); - $('#softwareTypeHead').removeClass('hide'); - $('#softwareTypeHead').addClass('show'); - } - else { - $('#softwareType').slideUp('normal'); - $('#softwareTypeHead').removeClass('show'); - $('#softwareTypeHead').addClass('hide'); - } - } - function setupEditor(editable) { - editor = ace.edit('editor'); - editor.setTheme('ace/theme/crimson_editor'); - var CurentMode = require('ace/mode/text').Mode; - editor.getSession().setMode(new CurentMode()); - editor.getSession().setTabSize(2); - editor.getSession().setUseSoftTabs(true); - editor.renderer.setHScrollBarAlwaysVisible(false); - if (!editable) {editor.setReadOnly(true);} - } - function setupSlappart() { - for (var i = 0; i < partitionAmount; i++) { - var elt = $('#slappart' + i + 'Parameter'); - var fileId = $('#slappart' + i + 'Files'); - if (elt && elt !== undefined) elt.click(function() { - alert($(this).html()); - }); - if (fileId && fileId !== undefined) fileId.click(function() { - $('#instancetabfiles').click(); - setupFileTree($(this).attr('rel')); - }); + $("#parameter").load($SCRIPT_ROOT + '/getParameterXml'); + $("#update").click(function () { + if ($("#parameter").val() === '') { + $("#error").Popup("Can not save empty value!", {type: 'alert', duration: 3000}); + } + $.ajax({ + type: 'POST', + url: $SCRIPT_ROOT + '/saveParameterXml', + data: {parameter: $('#parameter').val().trim()}, + success: function (data) { + if (data.code === 1) { + $('#error').Popup('Instance parameters updated!', {type: 'info', duration: 3000}); + } else { + $('#error').Popup(data.result, {type: 'error', duration: 5000}); + } + } + }); + }); + + + function setupBox() { + var state = $('#softwareType').css('display'); + if (state === 'none') { + $('#softwareType').slideDown('normal'); + $('#softwareTypeHead').removeClass('hide'); + $('#softwareTypeHead').addClass('show'); + } else { + $('#softwareType').slideUp('normal'); + $('#softwareTypeHead').removeClass('show'); + $('#softwareTypeHead').addClass('hide'); + } } - } }); diff --git a/slapos/runner/static/js/scripts/inspectSoftware.js b/slapos/runner/static/js/scripts/inspectSoftware.js index d5859ef8292870349a872a3c2a9882c0a8f0b92d..e1429338e91091cdfaee9453c2dc51c084e0658d 100644 --- a/slapos/runner/static/js/scripts/inspectSoftware.js +++ b/slapos/runner/static/js/scripts/inspectSoftware.js @@ -1,86 +1,99 @@ -$(document).ready( function() { - var editor; - var send = false; - var runnerDir = $("input#runnerdir").val(); - $("#reloadfiles").click(function(){ - fillContent(); - }); - fillContent(); +/*jslint undef: true */ +/*global $, document, window, $SCRIPT_ROOT, ace */ +/* vim: set et sts=4: */ - function fillContent(){ - $('#fileNavigator').gsFileManager({ script: $SCRIPT_ROOT+"/fileBrowser", root: runnerDir}); - } - $("#open").click(function(){ - var elt = $("option:selected", $("#softwarelist")); - if(elt.val() === "No Software Release found"){ - $("#error").Popup("Please select your Software Release", {type:'alert', duration:5000}); - return false; +$(document).ready(function () { + "use strict"; + + var editor, + send = false, + runnerDir = $("input#runnerdir").val(); + + function fillContent() { + $('#fileNavigator').gsFileManager({script: $SCRIPT_ROOT + "/fileBrowser", root: runnerDir}); } - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/setCurrentProject', - data: "path=" + elt.attr('rel'), - success: function(data){ - if(data.code == 1){ - location.href = $SCRIPT_ROOT + '/editSoftwareProfile' - } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}); - } - } - }); - return false; - }); - $("#delete").click(function(){ - if($("#softwarelist").val() === "No Software Release found"){ - $("#error").Popup("Please select your Software Release", {type:'alert', duration:5000}); + $("#reloadfiles").click(function () { + fillContent(); + }); + fillContent(); + + $("#open").click(function () { + var elt = $("option:selected", $("#softwarelist")); + if (elt.val() === "No Software Release found") { + $("#error").Popup("Please select your Software Release", {type: 'alert', duration: 5000}); + return false; + } + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/setCurrentProject', + data: "path=" + elt.attr('rel'), + success: function (data) { + if (data.code === 1) { + window.location.href = $SCRIPT_ROOT + '/editSoftwareProfile'; + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + } + }); return false; - } - if(send) return; - if(!window.confirm("Do you really want to delete this software release?")){ - return; - } - send = false; - var elt = $("option:selected", $("#softwarelist")); - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/removeSoftwareDir', - data: {md5:$("#softwarelist").val(), title:elt.attr('title')}, - success: function(data){ - if(data.code == 1){ - $("#softwarelist").empty(); - for(var i=0; i<data.result.length; i++){ - $("#softwarelist").append('<option value="' + data.result[i]['md5'] + - '" title="' + data.result[i]['title'] +'" rel="' + - data.result[i]['path'] +'">' + data.result[i]['title'] + '</option>'); - } - if(data.result.length < 1){ - $("#softwarelist").append('<option>No Software Release found</option>'); - $('#fileTree').empty(); - } - fillContent(); - $("#error").Popup("Operation complete, Selected Software Release has been delete!", {type:'confirm', duration:5000}); - } - else{ - $("#error").Popup(data.result, {type:'error'}); - } - send = false; - } - }); - return false; - }); + }); - function setupEditor(){ - editor = ace.edit("editor"); - editor.setTheme("ace/theme/crimson_editor"); + $("#delete").click(function () { + if ($("#softwarelist").val() === "No Software Release found") { + $("#error").Popup("Please select your Software Release", {type: 'alert', duration: 5000}); + return false; + } + if (send) { + return; + } + if (!window.confirm("Do you really want to delete this software release?")) { + return; + } + send = false; + var elt = $("option:selected", $("#softwarelist")); + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/removeSoftwareDir', + data: { + md5: $("#softwarelist").val(), + title: elt.attr('title') + }, + success: function (data) { + var i; + if (data.code === 1) { + $("#softwarelist").empty(); + for (i = 0; i < data.result.length; i += 1) { + $("#softwarelist").append('<option value="' + data.result[i].md5 + + '" title="' + data.result[i].title + '" rel="' + + data.result[i].path + '">' + data.result[i].title + '</option>'); + } + if (data.result.length < 1) { + $("#softwarelist").append('<option>No Software Release found</option>'); + $('#fileTree').empty(); + } + fillContent(); + $("#error").Popup("Operation complete, Selected Software Release has been delete!", + {type: 'confirm', duration: 5000}); + } else { + $("#error").Popup(data.result, {type: 'error'}); + } + send = false; + } + }); + return false; + }); - var CurentMode = require("ace/mode/text").Mode; - editor.getSession().setMode(new CurentMode()); - editor.getSession().setTabSize(2); - editor.getSession().setUseSoftTabs(true); - editor.renderer.setHScrollBarAlwaysVisible(false); - editor.setReadOnly(true); - } -}); \ No newline at end of file + function setupEditor() { + editor = ace.edit("editor"); + editor.setTheme("ace/theme/crimson_editor"); + + var CurentMode = require("ace/mode/text").Mode; + editor.getSession().setMode(new CurentMode()); + editor.getSession().setTabSize(2); + editor.getSession().setUseSoftTabs(true); + editor.renderer.setHScrollBarAlwaysVisible(false); + editor.setReadOnly(true); + } +}); diff --git a/slapos/runner/static/js/scripts/login.js b/slapos/runner/static/js/scripts/login.js index 7239ff5e2d03777003a32df8b967324abbb69efc..d10d9b00e781efe07fe221fd287b7fd7e8239ee4 100644 --- a/slapos/runner/static/js/scripts/login.js +++ b/slapos/runner/static/js/scripts/login.js @@ -1,36 +1,45 @@ -$(document).ready( function() { - var send = false; - //change background - $("body").css("background", "#9C9C9C"); - $("#login").click(function(){ - if (send) return false; - if($("input#clogin").val() === "" || !$("input#clogin").val().match(/^[\w\d\.-]+$/)){ - $("#error").Popup("Please enter a valid user name", {type:'alert', duration:3000}); - return false; - } - if($("input#cpwd").val() === "" || $("input#cpwd").val() ==="******"){ - $("#error").Popup("Please enter your password", {type:'alert', duration:3000}); - return false; - } - send = true; - var param = {clogin:$("input#clogin").val(), cpwd:$("input#cpwd").val()}; - var url = $SCRIPT_ROOT + "/doLogin"; - $("#login").removeClass("button").addClass("dsblebutton"); - $.post(url, param, function(data) { - if (data.code==1){ - location.href = $SCRIPT_ROOT + '/'; - } - else{ - $("#error").Popup(data.result, {type:'alert', duration:3000}); - } - }) - .error(function() { - $("#error").Popup("Cannot send your account identifier please try again!!", - {type:'alert', duration:3000});}) - .complete(function() { - $("#login").removeClass('dsblebutton').addClass('button'); - send = false; +/*jslint undef: true */ +/*global $, document, window, $SCRIPT_ROOT */ +/* vim: set et sts=4: */ + +$(document).ready(function () { + "use strict"; + + var send = false; + //change background + $("body").css("background", "#9C9C9C"); + $("#login").click(function () { + if (send) { + return false; + } + if ($("input#clogin").val() === "" || !$("input#clogin").val().match(/^[\w\d\.\-]+$/)) { + $("#error").Popup("Please enter a valid user name", {type: 'alert', duration: 3000}); + return false; + } + if ($("input#cpwd").val() === "" || $("input#cpwd").val() === "******") { + $("#error").Popup("Please enter your password", {type: 'alert', duration: 3000}); + return false; + } + send = true; + var param = { clogin: $("input#clogin").val(), cpwd: $("input#cpwd").val() }, + url = $SCRIPT_ROOT + "/doLogin"; + + $("#login").removeClass("button").addClass("dsblebutton"); + $.post(url, param, function (data) { + if (data.code === 1) { + window.location.href = $SCRIPT_ROOT + '/'; + } else { + $("#error").Popup(data.result, {type: 'alert', duration: 3000}); + } + }) + .error(function () { + $("#error").Popup("Cannot send your account identifier please try again!!", + {type: 'alert', duration: 3000}); + }) + .complete(function () { + $("#login").removeClass('dsblebutton').addClass('button'); + send = false; + }); + return false; }); - return false; - }); -}); \ No newline at end of file +}); diff --git a/slapos/runner/static/js/scripts/process.js b/slapos/runner/static/js/scripts/process.js index e8cb66b39f39c7f905513b7ed8aa68dae566b21c..6256393784231ee3f8a1cecf5b69d37732c60560 100644 --- a/slapos/runner/static/js/scripts/process.js +++ b/slapos/runner/static/js/scripts/process.js @@ -1,5 +1,13 @@ +/*jslint undef: true */ +/*global $, window, $SCRIPT_ROOT, setRunningState, setCookie, getCookie, deleteCookie */ +/*global currentState: true, running: true, $current: true, processType: true, currentProcess: true */ +/*global sendStop: true, processState: true, openedlogpage: true, logReadingPosition: true, speed: true */ +/*global isRunning: true */ +/* vim: set et sts=4: */ + //Global Traitment!!! -var url = $SCRIPT_ROOT + "/slapgridResult" + +var url = $SCRIPT_ROOT + "/slapgridResult"; var currentState = false; var running = true; var $current; @@ -10,151 +18,183 @@ var processState = "Checking"; //define slapgrid running state var openedlogpage = ""; //content software or instance if the current page is software or instance log, otherwise nothing var logReadingPosition = 0; var speed = 5000; -var isRunning = function(){ - if (running){ - $("#error").Popup("Slapgrid is currently under execution!", {type:'alert', duration:3000}); - } - return running; -} -function setSpeed(value){ - if (openedlogpage == ""){ - speed = 5000; - } - else{ speed=value;} -} -function getRunningState(){ - var param = {position:logReadingPosition, log:(processState!="Checking" && openedlogpage==processType.toLowerCase())? openedlogpage:""} - var jqxhr = $.post(url, param, function(data) { - setRunningState(data) - logReadingPosition = data.content.position; - if(data.content.content != ""){ - $("#salpgridLog").append(data.content.content.toHtmlChar()); - $("#salpgridLog") - .scrollTop($("#salpgridLog")[0].scrollHeight - $("#salpgridLog") - .height()); - } - if (running && processState=="Checking" && openedlogpage != ""){$("#salpgridLog").show();$("#manualLog").hide();} - processState = (running)?"Running":"Stopped"; - }) - .error(function() { clearAll(false); }) - .complete(function() { - if (running){ - setTimeout(function(){ - getRunningState(); - }, speed); +var isRunning = function () { + "use strict"; + if (running) { + $("#error").Popup("Slapgrid is currently under execution!", + {type: 'alert', duration: 3000}); + } + return running; +}; + +function setSpeed(value) { + "use strict"; + if (openedlogpage === "") { + speed = 5000; + } else { + speed = value; } - }); } -function clearAll(setStop){ - currentState = false; - running = setStop; + +function clearAll(setStop) { + "use strict"; + currentState = false; + running = setStop; } -function bindRun(){ - $("#softrun").click(function(){ - if($("#softrun").text() == "Stop"){ - stopProcess(); - } - else{ - if(!isRunning()){ - setCookie("slapgridCMD", "Software"); - location.href = $SCRIPT_ROOT + "/viewSoftwareLog"; - } - } - return false; - }); - $("#instrun").click(function(){ - if($("#instrun").text() == "Stop"){ - stopProcess(); - } - else{ - if(!isRunning()){ - setCookie("slapgridCMD", "Instance"); - location.href = $SCRIPT_ROOT + "/viewInstanceLog"; - } - } - return false; - }); + +function getRunningState() { + "use strict"; + var param = { + position: logReadingPosition, + log: (processState !== "Checking" && openedlogpage === processType.toLowerCase()) ? openedlogpage : "" + }, + jqxhr = $.post(url, param, function (data) { + setRunningState(data); + logReadingPosition = data.content.position; + if (data.content.content !== "") { + $("#salpgridLog").append(data.content.content.toHtmlChar()); + $("#salpgridLog") + .scrollTop($("#salpgridLog")[0].scrollHeight - $("#salpgridLog").height()); + } + if (running && processState === "Checking" && openedlogpage !== "") { + $("#salpgridLog").show(); + $("#manualLog").hide(); + } + processState = running ? "Running" : "Stopped"; + }) + .error(function () { + clearAll(false); + }) + .complete(function () { + if (running) { + setTimeout(function () { + getRunningState(); + }, speed); + } + }); } -function setRunningState(data){ - if (data.result){ - if(!currentState){ - $("#running").show(); - running = true; - //change run menu title and style - if(data.software){ - $("#softrun").empty(); - $("#softrun").append("Stop"); - $("#softrun").css("color", "#0271BF"); - $current = $("#softrun"); - processType = "Software"; - } - if(data.instance){ - $("#instrun").empty(); - $("#instrun").append("Stop"); - $("#instrun").css("color", "#0271BF"); - $current = $("#instrun"); - processType = "Instance"; - } + +function stopProcess() { + "use strict"; + if (sendStop) { + return; } - } - else{ - $("#running").hide(); - running = false; //nothing is currently running - if ($current != undefined){ - $current.empty(); - $current.append("Run"); - $current.css("color", "#000"); - $current = undefined; - currentState = false; - $("#error").Popup("Slapgrid completely finish running your " + processType + " Profile", {type:'info', duration:3000}); + if (running) { + sendStop = true; + + var urlfor = $SCRIPT_ROOT + "stopSlapgrid", + type = "slapgrid-sr.pid"; + + if ($("#instrun").text() === "Stop") { + type = "slapgrid-cp.pid"; + } + $.post(urlfor, {type: type}, function (data) { + //if (data.result) { + //$("#error").Popup("Failled to run Slapgrid", {type:'error', duration:3000}); }); + //} + }) + .error(function () { + $("#error").Popup("Failed to stop Slapgrid process", {type: 'error', duration: 3000}); + }) + .complete(function () { + sendStop = false; + processState = "Stopped"; + }); } - } - currentState = data.result; } -function runProcess(urlfor, data){ - if(!isRunning()){ - running = true; - processState = "Running"; - currentProcess = $.post(urlfor) - .error(function() { - $("#error").Popup("Failled to run Slapgrid", {type:'error', duration:3000}); }); - setRunningState(data); - setTimeout("getRunningState()", 6000); - } + +function bindRun() { + "use strict"; + $("#softrun").click(function () { + if ($("#softrun").text() === "Stop") { + stopProcess(); + } else { + if (!isRunning()) { + setCookie("slapgridCMD", "Software"); + window.location.href = $SCRIPT_ROOT + "/viewSoftwareLog"; + } + } + return false; + }); + $("#instrun").click(function () { + if ($("#instrun").text() === "Stop") { + stopProcess(); + } else { + if (!isRunning()) { + setCookie("slapgridCMD", "Instance"); + window.location.href = $SCRIPT_ROOT + "/viewInstanceLog"; + } + } + return false; + }); } -function stopProcess(){ - if (sendStop) return; - if (running){ - sendStop = true; - var urlfor = $SCRIPT_ROOT + "stopSlapgrid" - var type = "slapgrid-sr.pid"; - if($("#instrun").text() == "Stop"){ - type = "slapgrid-cp.pid"; + +function setRunningState(data) { + "use strict"; + if (data.result) { + if (!currentState) { + $("#running").show(); + running = true; + //change run menu title and style + if (data.software) { + $("#softrun").empty(); + $("#softrun").append("Stop"); + $("#softrun").css("color", "#0271BF"); + $current = $("#softrun"); + processType = "Software"; + } + if (data.instance) { + $("#instrun").empty(); + $("#instrun").append("Stop"); + $("#instrun").css("color", "#0271BF"); + $current = $("#instrun"); + processType = "Instance"; + } + } + } else { + $("#running").hide(); + running = false; //nothing is currently running + if ($current !== undefined) { + $current.empty(); + $current.append("Run"); + $current.css("color", "#000"); + $current = undefined; + currentState = false; + $("#error").Popup("Slapgrid completely finish running your " + processType + " Profile", {type: 'info', duration: 3000}); + } } - $.post(urlfor, {type:type}, function(data){ - //if (data.result){ - //$("#error").Popup("Failled to run Slapgrid", {type:'error', duration:3000}); }); - //} - }) - .error(function() { - $("#error").Popup("Failled to stop Slapgrid process", {type:'error', duration:3000}); }) - .complete(function() {sendStop = false;processState="Stopped";}); - } + currentState = data.result; } -function checkSavedCmd(){ - var result = getCookie("slapgridCMD"); - if (!result) return false; - if (result == "Software"){ - running = false; - runProcess(($SCRIPT_ROOT + "/runSoftwareProfile"), - {result: true, instance:false, software:true}); - } - else if(result == "Instance"){ - running = false; - runProcess(($SCRIPT_ROOT + "/runInstanceProfile"), - {result: true, instance:true, software:false}); - } - deleteCookie("slapgridCMD"); - return (result != null); -} \ No newline at end of file +function runProcess(urlfor, data) { + "use strict"; + if (!isRunning()) { + running = true; + processState = "Running"; + currentProcess = $.post(urlfor) + .error(function () { + $("#error").Popup("Failled to run Slapgrid", {type: 'error', duration: 3000}); + }); + setRunningState(data); + setTimeout(getRunningState, 6000); + } +} + +function checkSavedCmd() { + "use strict"; + var result = getCookie("slapgridCMD"); + if (!result) { + return false; + } + if (result === "Software") { + running = false; + runProcess(($SCRIPT_ROOT + "/runSoftwareProfile"), + {result: true, instance: false, software: true}); + } else if (result === "Instance") { + running = false; + runProcess(($SCRIPT_ROOT + "/runInstanceProfile"), + {result: true, instance: true, software: false}); + } + deleteCookie("slapgridCMD"); + return (result !== null); +} diff --git a/slapos/runner/static/js/scripts/project.js b/slapos/runner/static/js/scripts/project.js index ef18888d7e2e63c5a017230b2cc44a17f3c66fbf..370ad7b7e6aa42cb4eb271cd645e17ba8fbf4462 100644 --- a/slapos/runner/static/js/scripts/project.js +++ b/slapos/runner/static/js/scripts/project.js @@ -1,99 +1,97 @@ -$(document).ready( function() { - var method = $("input#method").val(); - var workdir = $("input#workdir").val(); - if (method != "file"){ - script = "/openFolder"; - $('#fileTree').fileTree({ root: workdir, script: $SCRIPT_ROOT + script, folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false, selectFolder: true }, function(file) { - selectFile(file); - }); - } - $("input#subfolder").val(""); - $("#create").click(function(){ - repo_url = $("input#software").val(); - if($("input#software").val() == "" || !$("input#software").val().match(/^[\w\d._-]+$/)){ - $("#error").Popup("Invalid Software name", {type:'alert', duration:3000}) - return false; - } - if($("input#subfolder").val() == ""){ - $("#error").Popup("Select the parent folder of your software!", {type:'alert', duration:3000}) - return false; - } - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/createSoftware', - data: "folder=" + $("input#subfolder").val() + $("input#software").val(), - success: function(data){ - if(data.code == 1){ - location.href = $SCRIPT_ROOT + '/editSoftwareProfile' - } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}) - - } - } - }); - return false; - }); - - $("#open").click(function(){ - $("#flash").fadeOut('normal'); - $("#flash").empty(); - $("#flash").fadeIn('normal'); - if($("input#path").val() == ""){ - $("#error").Popup("Select a valid Software Release folder!", {type:'alert', duration:3000}) - return false; - } - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/setCurrentProject', - data: "path=" + $("input#path").val(), - success: function(data){ - if(data.code == 1){ - location.href = $SCRIPT_ROOT + '/editSoftwareProfile' - } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}) - } - } - }); - return false; - }); - - function selectFile(file){ - $("#info").empty(); - $("input#subfolder").val(file); - path = ""; - if(method == "open"){ - $("#info").append("Selection: " + file); - checkFolder(file); - } - else{ - if($("input#software").val() != "" && $("input#software").val().match(/^[\w\d._-]+$/)){ - $("#info").append("New Software in: " + file + $("input#software").val()); - } - else{ - $("#info").append("Selection: " + file); - } - } - return; - } - - function checkFolder(path){ - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/checkFolder', - data: "path=" + path, - success: function(data){ - var path = data.result; - $("input#path").val(path); - if (path != ""){ - $("#check").fadeIn('normal'); - } - else{ - $("#check").hide(); - } - } - }); - return ""; - } -}); \ No newline at end of file +/*jslint undef: true */ +/*global $, document, window, $SCRIPT_ROOT */ +/* vim: set et sts=4: */ + +$(document).ready(function () { + "use strict"; + + var method = $("input#method").val(), + workdir = $("input#workdir").val(); + + function checkFolder(path) { + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/checkFolder', + data: "path=" + path, + success: function (data) { + var path = data.result; + $("input#path").val(path); + if (path !== "") { + $("#check").fadeIn('normal'); + } else { + $("#check").hide(); + } + } + }); + return ""; + } + + function selectFile(file) { + $("#info").empty(); + $("input#subfolder").val(file); + if (method === "open") { + $("#info").append("Selection: " + file); + checkFolder(file); + } else { + if ($("input#software").val() !== "" && $("input#software").val().match(/^[\w\d._\-]+$/)) { + $("#info").append("New Software in: " + file + $("input#software").val()); + } else { + $("#info").append("Selection: " + file); + } + } + return; + } + + if (method !== "file") { + $('#fileTree').fileTree({root: workdir, script: $SCRIPT_ROOT + '/openFolder', folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false, selectFolder: true }, function (file) { + selectFile(file); + }); + } + $("input#subfolder").val(""); + $("#create").click(function () { + if ($("input#software").val() === "" || !$("input#software").val().match(/^[\w\d._\-]+$/)) { + $("#error").Popup("Invalid Software name", {type: 'alert', duration: 3000}); + return false; + } + if ($("input#subfolder").val() === "") { + $("#error").Popup("Select the parent folder of your software!", {type: 'alert', duration: 3000}); + return false; + } + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/createSoftware', + data: "folder=" + $("input#subfolder").val() + $("input#software").val(), + success: function (data) { + if (data.code === 1) { + window.location.href = $SCRIPT_ROOT + '/editSoftwareProfile'; + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + } + }); + return false; + }); + + $("#open").click(function () { + $("#flash").fadeOut('normal'); + $("#flash").empty(); + $("#flash").fadeIn('normal'); + if ($("input#path").val() === "") { + $("#error").Popup("Select a valid Software Release folder!", {type: 'alert', duration: 3000}); + return false; + } + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/setCurrentProject', + data: "path=" + $("input#path").val(), + success: function (data) { + if (data.code === 1) { + window.location.href = $SCRIPT_ROOT + '/editSoftwareProfile'; + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + } + }); + return false; + }); +}); diff --git a/slapos/runner/static/js/scripts/repo.js b/slapos/runner/static/js/scripts/repo.js index 326e57a279d19d1153bb36d22d7e6c8c46e94a3d..7965d5c22e35b9690fda3d3f63344a6594fd7b05 100644 --- a/slapos/runner/static/js/scripts/repo.js +++ b/slapos/runner/static/js/scripts/repo.js @@ -1,180 +1,194 @@ -$(document).ready( function() { - var send = false; - var getStatus; - gitStatus(); - $("#project").change(function(){ - if (send){ - getStatus.abort(); - send=false; - } - gitStatus(); - }); - $("#activebranch").change(function(){ - var branch = $("#activebranch").val(); - var project = $("#project").val(); - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/changeBranch', - data: "project=" + $("input#workdir").val() + "/" + project + "&name=" + branch, - success: function(data){ - if(data.code == 1){ - gitStatus(); - } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}); - } - } - }); - }); - $("#addbranch").click(function(){ - checkout("1"); - return false; - }); - $("#docheckout").click(function(){ - checkout("0"); - return false; - }); - $("#commit").click(function(){ - if($("input#commitmsg").val() == "" || - $("input#commitmsg").val() == "Enter message..."){ - $("#error").Popup("Please Enter the commit message", {type:'alert', duration:3000}); - return false; - } - if (send){ - return false; - } - send = true; - var project = $("#project").val(); - $("#imgwaitting").fadeIn('normal'); - $("#commit").empty(); - $("#commit").attr("value", "Wait..."); - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/pushProjectFiles', - data: {project: $("input#workdir").val() + "/" + project, msg: $("input#commitmsg").val()}, - success: function(data){ - if(data.code == 1){ - if (data.result != ""){ - $("#error").Popup(data.result, {type:'error', duration:5000}); - } - else - $("#error").Popup("Commit done!", {type:'confirm', duration:3000}); - gitStatus(); - } - else{ - $("#error").Popup(data.result, {type:'error'}); - } - $("#imgwaitting").hide() - $("#commit").empty(); - $("#commit").attr("value", "Commit"); - send = false; - } - }); - return false; - }); - /* - $("#pullbranch").click(function(){ - if (send){ - return false; - } - send = true; - var project = $("#project").val(); - $("#pullimgwaitting").fadeIn('normal'); - $("#pullbranch").empty(); - $("#pullbranch").attr("value", "Wait..."); - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/pullProjectFiles', - data: "project=" + $("input#workdir").val() + "/" + project, - success: function(data){ - if(data.code == 1){ - if (data.result != ""){ - error(data.result); - } - else - error("Pull done!"); - gitStatus(); - } - else{ - error(data.result); - } - $("#pullimgwaitting").hide() - $("#pullbranch").empty(); - $("#pullbranch").attr("value", "Git Pull"); - send = false; - } - }); - return false; - });*/ - function gitStatus(){ - var project = $("#project").val(); - $("#status").empty(); - $("#push").hide(); - $("#flash").empty(); - if (project == ""){ - $("#status").append("<h2>Please select one project...</h2><br/><br/>"); - $("#branchlist").hide(); - return; - } - send = true; - var urldata = $("input#workdir").val() + "/" + project; - getStatus = $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/getProjectStatus', - data: "project=" + urldata, - success: function(data){ - if(data.code == 1){ - $("#branchlist").show(); - $("#status").append("<h2>Your Repository status</h2>"); - message = data.result.split('\n').join('<br/>'); - //alert(message); - $("#status").append("<p>" + message + "</p>"); - if(data.dirty){ - $("#push").show(); - $("#status").append("<br/><h2>Display Diff for current Project</h2>"); - $("#status").append("<p style='font-size:15px;'>You have changes in your project." + - " <a href='" + $SCRIPT_ROOT + "/getProjectDiff/" - + encodeURI(project) + "'>Watch the diff</a></p>"); - } - loadBranch(data.branch); - } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}); - } - send = false; - } - }); - } - function checkout(mode){ - if($("input#branchname").val() == "" || - $("input#branchname").val() == "Enter the branch name..."){ - $("#error").Popup("Please Enter the branch name", {type:'alert', duration:3000}); - return false; - } - var project = $("#project").val(); - var branch = $("input#branchname").val(); - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/newBranch', - data: {project:$("input#workdir").val() + "/" + project, name:branch, create:mode}, - success: function(data){ - if(data.code == 1){ - $("input#branchname").val("Enter the branch name..."); - gitStatus(); - } - else{ - $("#error").Popup(data.result, {type:'error'}); - } - } - }); - return false; - } - function loadBranch(branch){ - $("#activebranch").empty(); - for(i=0; i< branch.length; i++){ - selected = (branch[i].indexOf('*') == 0)? "selected":""; - $("#activebranch").append("<option value='" + branch[i] + - "' " + selected + ">" + branch[i] + "</option>"); - } - } -}); \ No newline at end of file +/*jslint undef: true */ +/*global $, document, $SCRIPT_ROOT */ +/* vim: set et sts=4: */ + +$(document).ready(function () { + "use strict"; + + var send = false, + getStatus; + + function loadBranch(branch) { + var i, selected; + $("#activebranch").empty(); + for (i = 0; i < branch.length; i += 1) { + selected = (branch[i].indexOf('*') === 0) ? "selected" : ""; + $("#activebranch").append("<option value='" + branch[i] + + "' " + selected + ">" + branch[i] + "</option>"); + } + } + + function gitStatus() { + var project = $("#project").val(), + urldata = $("input#workdir").val() + "/" + project; + + $("#status").empty(); + $("#push").hide(); + $("#flash").empty(); + if (project === "") { + $("#status").append("<h2>Please select one project...</h2><br/><br/>"); + $("#branchlist").hide(); + return; + } + send = true; + getStatus = $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/getProjectStatus', + data: "project=" + urldata, + success: function (data) { + var message; + + if (data.code === 1) { + $("#branchlist").show(); + $("#status").append("<h2>Your Repository status</h2>"); + message = data.result.split('\n').join('<br/>'); + //alert(message); + $("#status").append("<p>" + message + "</p>"); + if (data.dirty) { + $("#push").show(); + $("#status").append("<br/><h2>Display Diff for current Project</h2>"); + $("#status").append("<p style='font-size:15px;'>You have changes in your project." + + " <a href='" + $SCRIPT_ROOT + "/getProjectDiff/" + + encodeURI(project) + "'>Watch the diff</a></p>"); + } + loadBranch(data.branch); + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + send = false; + } + }); + } + + function checkout(mode) { + if ($("input#branchname").val() === "" || + $("input#branchname").val() === "Enter the branch name...") { + $("#error").Popup("Please Enter the branch name", {type: 'alert', duration: 3000}); + return false; + } + var project = $("#project").val(), + branch = $("input#branchname").val(); + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/newBranch', + data: {project: $("input#workdir").val() + "/" + project, name: branch, create: mode}, + success: function (data) { + if (data.code === 1) { + $("input#branchname").val("Enter the branch name..."); + gitStatus(); + } else { + $("#error").Popup(data.result, {type: 'error'}); + } + } + }); + return false; + } + + + gitStatus(); + + $("#project").change(function () { + if (send) { + getStatus.abort(); + send = false; + } + gitStatus(); + }); + $("#activebranch").change(function () { + var branch = $("#activebranch").val(), + project = $("#project").val(); + + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/changeBranch', + data: "project=" + $("input#workdir").val() + "/" + project + "&name=" + branch, + success: function (data) { + if (data.code === 1) { + gitStatus(); + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + } + }); + }); + $("#addbranch").click(function () { + checkout("1"); + return false; + }); + $("#docheckout").click(function () { + checkout("0"); + return false; + }); + $("#commit").click(function () { + if ($("input#commitmsg").val() === "" || + $("input#commitmsg").val() === "Enter message...") { + $("#error").Popup("Please Enter the commit message", {type: 'alert', duration: 3000}); + return false; + } + if (send) { + return false; + } + send = true; + var project = $("#project").val(); + $("#imgwaitting").fadeIn('normal'); + $("#commit").empty(); + $("#commit").attr("value", "Wait..."); + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/pushProjectFiles', + data: {project: $("input#workdir").val() + "/" + project, msg: $("input#commitmsg").val()}, + success: function (data) { + if (data.code === 1) { + if (data.result !== "") { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } else { + $("#error").Popup("Commit done!", {type: 'confirm', duration: 3000}); + } + gitStatus(); + } else { + $("#error").Popup(data.result, {type: 'error'}); + } + $("#imgwaitting").hide(); + $("#commit").empty(); + $("#commit").attr("value", "Commit"); + send = false; + } + }); + return false; + }); + + /* + $("#pullbranch").click(function (){ + if (send){ + return false; + } + send = true; + var project = $("#project").val(); + $("#pullimgwaitting").fadeIn('normal'); + $("#pullbranch").empty(); + $("#pullbranch").attr("value", "Wait..."); + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/pullProjectFiles', + data: "project=" + $("input#workdir").val() + "/" + project, + success: function (data){ + if (data.code == 1){ + if (data.result != ""){ + error(data.result); + } + else + error("Pull done!"); + gitStatus(); + } else { + error(data.result); + } + $("#pullimgwaitting").hide() + $("#pullbranch").empty(); + $("#pullbranch").attr("value", "Git Pull"); + send = false; + } + }); + return false; + });*/ + +}); diff --git a/slapos/runner/static/js/scripts/softwareFolder.js b/slapos/runner/static/js/scripts/softwareFolder.js index 2ea94b92d86833bc9832d7871d5f6e8c8287f93c..238c06c19340ec0fbaad2053935be0dfab69e71a 100644 --- a/slapos/runner/static/js/scripts/softwareFolder.js +++ b/slapos/runner/static/js/scripts/softwareFolder.js @@ -1,275 +1,299 @@ -$(document).ready( function() { - var editor = ace.edit("editor"); - editor.setTheme("ace/theme/crimson_editor"); +/*jslint undef: true */ +/*global $, document, $SCRIPT_ROOT, ace */ +/*global path: true */ +/* vim: set et sts=4: */ - var CurentMode = require("ace/mode/text").Mode; - editor.getSession().setMode(new CurentMode()); - editor.getSession().setTabSize(2); - editor.getSession().setUseSoftTabs(true); - editor.renderer.setHScrollBarAlwaysVisible(false); - var script = "/readFolder"; - var softwareDisplay = true; - var Mode = function(name, desc, clazz, extensions) { - this.name = name; - this.desc = desc; - this.clazz = clazz; - this.mode = new clazz(); - this.mode.name = name; +$(document).ready(function () { + "use strict"; - this.extRe = new RegExp("^.*\\.(" + extensions.join("|") + ")$"); - }; - var modes = [ - new Mode("php", "PHP",require("ace/mode/php").Mode, ["php", "in", "inc"]), - new Mode("python", "Python", require("ace/mode/python").Mode, ["py"]), - new Mode("buildout", "Python Buildout config", require("ace/mode/buildout").Mode, ["cfg"]) - ]; - var projectDir = $("input#project").val(); - var workdir = $("input#workdir").val(); - var currentProject = workdir + "/" + projectDir.replace(workdir, "").split('/')[1]; - var send = false; - var edit = false; - $('#fileTree').fileTree({ root: projectDir, script: $SCRIPT_ROOT + script, folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false, selectFolder: true }, function(file) { - selectFile(file); - }); - setDetailBox(); - $("#add").click(function(){ - var path = (softwareDisplay)? projectDir:currentProject; - if (send) return false; - if($("input#file").val() == "" || - $("input#file").val() == "Enter name here..."){ - $("#error").Popup("Please enter your file or folder name", {type:'alert', duration:3000}); - return false; - } - if($("input#subfolder").val() != ""){ - path = $("input#subfolder").val(); - } - path = path + "/" + $("input#file").val(); - send = true; - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/createFile', - data: "file=" + path + "&type=" + $("#type").val(), - success: function(data){ - if(data.code == 1){ - switchContent(); - $("input#file").val(""); - $("#flash").fadeOut('normal'); - $("#flash").empty(); - $("#info").empty(); - $("#info").append("Select parent directory or nothing for root..."); - $("input#subfolder").val(""); - } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}); - } - send = false; - } - }); - return false; - }); + var editor = ace.edit("editor"), + CurrentMode, + script = "/readFolder", + softwareDisplay = true, + Mode, + modes, + projectDir = $("input#project").val(), + workdir = $("input#workdir").val(), + currentProject = workdir + "/" + projectDir.replace(workdir, "").split('/')[1], + send = false, + edit = false; - $("#save").click(function(){ - if(!edit){ - $("#error").Popup("Please select the file to edit", {type:'alert', duration:3000}); - return false; - } - if (send) return false; - send = true; - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/saveFileContent', - data: {file: $("input#subfolder").val(), content: editor.getSession().getValue()}, - success: function(data){ - if(data.code == 1){ - $("#error").Popup("File saved succefuly!", {type:'confirm', duration:3000}); - } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}); - } - send = false; - } - }); - return false; - }); - $("#details_head").click(function(){ - setDetailBox(); - }); + function setEditMode(file) { + var i, + CurrentMode = require("ace/mode/text").Mode; + editor.getSession().setMode(new CurrentMode()); + for (i = 0; i < modes.length; i += 1) { + if (modes[i].extRe.test(file)) { + editor.getSession().setMode(modes[i].mode); + break; + } + } + } - $("#switch").click(function(){ - softwareDisplay = !softwareDisplay; - switchContent(); - return false; - }); - $("#getmd5").click(function(){ - getmd5sum(); - return false; - }); + function selectFile(file) { + $("#info").empty(); + $("#info").append(file); + $("input#subfolder").val(file); + $("#md5sum").empty(); + path = ""; + send = false; + edit = false; + if (file.substr(-1) !== "/") { + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/getFileContent', + data: {file: file}, + success: function (data) { + var name, start; + if (data.code === 1) { + $("#edit_info").empty(); + name = file.split('/'); + if (file.length > 65) { + //substring title. + start = file.length - 65; + file = "..." + file.substring(file.indexOf("/", (start + 1))); + } + $("#edit_info").append("Current file: " + file); + $("a#option").show(); + editor.getSession().setValue(data.result); + setEditMode(name[name.length - 1]); + edit = true; + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + send = false; + } + }); + } else { + $("#edit_info").empty(); + $("#edit_info").append("No file selected"); + $("a#option").hide(); + editor.getSession().setValue(""); + } + return; + } - $("#clearselect").click(function(){ - $("#info").empty(); - $("#info").append("Select directory or nothing for root directory..."); - $("input#subfolder").val(""); - $("#edit_info").empty(); - $("#edit_info").append("No file selected"); - editor.getSession().setValue(""); - $("#md5sum").empty(); - $("a#option").hide(); - return false; - }); - $("#adddevelop").click(function(){ - var developList = new Array(); - var i=0; - $("#plist li").each(function(index){ - var elt = $(this).find("input:checkbox"); - if (elt.is(":checked")){ - developList[i] = workdir+"/"+elt.val(); - i++; - elt.attr("checked", false); - } - }); - if (developList.length > 0){setDevelop(developList);} - return false; - }); - function getmd5sum(){ - var file = $("input#subfolder").val(); - if (send) return; - send =true - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/getmd5sum', - data: {file: $("input#subfolder").val()}, - success: function(data){ - if(data.code == 1){ - $("#md5sum").empty(); - $("#md5sum").append('md5sum : <span>' + data.result + '</span>'); - } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}); - } - send = false; - } - }); - } + function setDetailBox() { + var state = $("#details_box").css("display"); + if (state === "none") { + $("#details_box").slideDown("normal"); + $("#details_head").removeClass("hide"); + $("#details_head").addClass("show"); + } else { + $("#details_box").slideUp("normal"); + $("#details_head").removeClass("show"); + $("#details_head").addClass("hide"); + } + } - function switchContent(){ - var root = projectDir; - if(!softwareDisplay){ - $("#switch").empty(); - $("#switch").append("Switch to Software files"); - root = currentProject; - } - else{ - $("#switch").empty(); - $("#switch").append("Switch to Project files"); - } - $('#fileTree').fileTree({ root: root, script: $SCRIPT_ROOT + script, folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false, selectFolder: true }, function(file) { - selectFile(file); - }); - $("#info").empty(); - $("#info").append("Select directory or nothing for root directory..."); - $("input#subfolder").val(""); - } + function switchContent() { + var root = projectDir; + if (!softwareDisplay) { + $("#switch").empty(); + $("#switch").append("Switch to Software files"); + root = currentProject; + } else { + $("#switch").empty(); + $("#switch").append("Switch to Project files"); + } + $('#fileTree').fileTree({ root: root, script: $SCRIPT_ROOT + script, folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false, selectFolder: true }, function (file) { + selectFile(file); + }); + $("#info").empty(); + $("#info").append("Select directory or nothing for root directory..."); + $("input#subfolder").val(""); + } - function setDetailBox(){ - var state = $("#details_box").css("display"); - if (state == "none"){ - $("#details_box").slideDown("normal"); - $("#details_head").removeClass("hide"); - $("#details_head").addClass("show"); - } - else{ - $("#details_box").slideUp("normal"); - $("#details_head").removeClass("show"); - $("#details_head").addClass("hide"); - } - } + function getmd5sum() { + var file = $("input#subfolder").val(); + if (send) { + return; + } + send = true; + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/getmd5sum', + data: {file: $("input#subfolder").val()}, + success: function (data) { + if (data.code === 1) { + $("#md5sum").empty(); + $("#md5sum").append('md5sum : <span>' + data.result + '</span>'); + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + send = false; + } + }); + } - function selectFile(file){ - $("#info").empty(); - $("#info").append(file); - $("input#subfolder").val(file); - $("#md5sum").empty(); - path = ""; - send = false; - edit = false; - if(file.substr(-1) != "/"){ - $.ajax({ - type: "POST", - url: $SCRIPT_ROOT + '/getFileContent', - data: {file: file}, - success: function(data){ - if(data.code == 1){ - $("#edit_info").empty(); - var name = file.split('/'); - if(file.length > 65){ - //substring title. - var start = file.length - 65; - file = "..." + file.substring(file.indexOf("/", (start + 1))); - } - $("#edit_info").append("Current file: " + - file); - $("a#option").show(); - editor.getSession().setValue(data.result); - setEditMode(name[name.length - 1]); - edit = true; - } - else{ - $("#error").Popup(data.result, {type:'error', duration:5000}); - } - send = false; - } - }); - } - else{ - $("#edit_info").empty(); - $("#edit_info").append("No file selected"); - $("a#option").hide(); - editor.getSession().setValue(""); - } - return; - } + function setDevelop(developList) { + if (developList === null || developList.length <= 0) { + return; + } + editor.navigateFileStart(); + editor.find('buildout', {caseSensitive: true, wholeWord: true}); + if (!editor.getSelectionRange().isEmpty()) { + //editor.find("",{caseSensitive: true,wholeWord: true,regExp: true}); + //if (!editor.getSelectionRange().isEmpty()) { + //alert("found"); + //} + //else{alert("no found"); + //} + } else { + $("#error").Popup("Can not found part [buildout]! Please make sure that you have a cfg file", {type: 'alert', duration: 3000}); + return; + } + editor.navigateLineEnd(); + $.post($SCRIPT_ROOT + "/getPath", {file: developList.join("#")}, function (data) { + var result, i; + if (data.code === 1) { + result = data.result.split('#'); + editor.insert("\ndevelop =\n\t" + result[0] + "\n"); + for (i = 1; i < result.length; i += 1) { + editor.insert("\t" + result[i] + "\n"); + } + } + }) + .error(function () {}) + .complete(function () {}); + editor.insert("\n"); + } - function setEditMode(file){ - var CurentMode = require("ace/mode/text").Mode; - editor.getSession().setMode(new CurentMode()); - for (var i=0; i< modes.length; i++){ - if(modes[i].extRe.test(file)){ - editor.getSession().setMode(modes[i].mode); - set = true; - break; - } - } - } - function setDevelop(developList){ - if (developList==null || developList.length <= 0) return; - editor.navigateFileStart(); - editor.find('buildout',{caseSensitive: true,wholeWord: true}); - if(!editor.getSelectionRange().isEmpty()){ - //editor.find("",{caseSensitive: true,wholeWord: true,regExp: true}); - //if(!editor.getSelectionRange().isEmpty()){ - //alert("found"); - //} - //else{alert("no found"); - //} - } - else{ - $("#error").Popup("Can not found part [buildout]! Please make sure that you have a cfg file", {type:'alert', duration:3000}); - return; - } - editor.navigateLineEnd(); - $.post($SCRIPT_ROOT+"/getPath", {file:developList.join("#")}, function(data) { - if(data.code==1){ - var result = data.result.split('#'); - editor.insert("\ndevelop =\n\t" + result[0] + "\n"); - for(var i=1; i<result.length; i++) - editor.insert("\t" + result[i] + "\n"); - } - }) - .error(function() { }) - .complete(function(){}); - editor.insert("\n"); - } -}); \ No newline at end of file + + editor.setTheme("ace/theme/crimson_editor"); + + CurrentMode = require("ace/mode/text").Mode; + editor.getSession().setMode(new CurrentMode()); + editor.getSession().setTabSize(2); + editor.getSession().setUseSoftTabs(true); + editor.renderer.setHScrollBarAlwaysVisible(false); + + Mode = function (name, desc, Clazz, extensions) { + this.name = name; + this.desc = desc; + this.clazz = Clazz; + this.mode = new Clazz(); + this.mode.name = name; + + this.extRe = new RegExp("^.*\\.(" + extensions.join("|") + ")$"); + }; + modes = [ + new Mode("php", "PHP", require("ace/mode/php").Mode, ["php", "in", "inc"]), + new Mode("python", "Python", require("ace/mode/python").Mode, ["py"]), + new Mode("buildout", "Python Buildout config", require("ace/mode/buildout").Mode, ["cfg"]) + ]; + $('#fileTree').fileTree({ root: projectDir, script: $SCRIPT_ROOT + script, folderEvent: 'click', expandSpeed: 750, collapseSpeed: 750, multiFolder: false, selectFolder: true }, function (file) { + selectFile(file); + }); + setDetailBox(); + $("#add").click(function () { + var path = softwareDisplay ? projectDir : currentProject; + if (send) { + return false; + } + if ($("input#file").val() === "" || $("input#file").val() === "Enter name here...") { + $("#error").Popup("Please enter your file or folder name", {type: 'alert', duration: 3000}); + return false; + } + if ($("input#subfolder").val() !== "") { + path = $("input#subfolder").val(); + } + path = path + "/" + $("input#file").val(); + send = true; + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/createFile', + data: "file=" + path + "&type=" + $("#type").val(), + success: function (data) { + if (data.code === 1) { + switchContent(); + $("input#file").val(""); + $("#flash").fadeOut('normal'); + $("#flash").empty(); + $("#info").empty(); + $("#info").append("Select parent directory or nothing for root..."); + $("input#subfolder").val(""); + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + send = false; + } + }); + return false; + }); + + $("#save").click(function () { + if (!edit) { + $("#error").Popup("Please select the file to edit", {type: 'alert', duration: 3000}); + return false; + } + if (send) { + return false; + } + send = true; + $.ajax({ + type: "POST", + url: $SCRIPT_ROOT + '/saveFileContent', + data: { + file: $("input#subfolder").val(), + content: editor.getSession().getValue() + }, + success: function (data) { + if (data.code === 1) { + $("#error").Popup("File saved succefuly!", {type: 'confirm', duration: 3000}); + } else { + $("#error").Popup(data.result, {type: 'error', duration: 5000}); + } + send = false; + } + }); + return false; + }); + + $("#details_head").click(function () { + setDetailBox(); + }); + + $("#switch").click(function () { + softwareDisplay = !softwareDisplay; + switchContent(); + return false; + }); + $("#getmd5").click(function () { + getmd5sum(); + return false; + }); + + $("#clearselect").click(function () { + $("#info").empty(); + $("#info").append("Select directory or nothing for root directory..."); + $("input#subfolder").val(""); + $("#edit_info").empty(); + $("#edit_info").append("No file selected"); + editor.getSession().setValue(""); + $("#md5sum").empty(); + $("a#option").hide(); + return false; + }); + $("#adddevelop").click(function () { + var developList = [], + i = 0; + $("#plist li").each(function (index) { + var elt = $(this).find("input:checkbox"); + if (elt.is(":checked")) { + developList[i] = workdir + "/" + elt.val(); + i += 1; + elt.attr("checked", false); + } + }); + if (developList.length > 0) { + setDevelop(developList); + } + return false; + }); + + +}); diff --git a/slapos/runner/static/js/scripts/viewlog.js b/slapos/runner/static/js/scripts/viewlog.js index aab4e748412a198f7bca150e999be175f0ed1ba7..110660fa988b4f024d3031241c9ec3b80a9a8bcb 100644 --- a/slapos/runner/static/js/scripts/viewlog.js +++ b/slapos/runner/static/js/scripts/viewlog.js @@ -1,57 +1,81 @@ -$(document).ready( function() { - openedlogpage = $("input#type").val(); - updatelogBox(); - var state = getCookie("autoUpdate"); - - $("#logheader").click(function(){ - setupBox(); - }); - $("#manual").change(function(){ - setCookie("autoUpdate", "manual"); - if ($("input#type").val() == "instance"){location.href = $SCRIPT_ROOT + "/viewInstanceLog";} - else{location.href = $SCRIPT_ROOT + "/viewSoftwareLog";} - }); - $("#live").change(function(){ - updatelogBox();$("#logconfigbox").find("input:radio").attr('checked', false);$("#live").attr('checked', true); - setSpeed(100);setCookie("autoUpdate", "live");openedlogpage = $("input#type").val();}); - $("#slow").change(function(){ - updatelogBox();$("#logconfigbox").find("input:radio").attr('checked', false);$("#slow").attr('checked', true); - setSpeed(2500);setCookie("autoUpdate", "slow");openedlogpage = $("input#type").val();}); - if(state){ - $("#"+state).attr('checked', true); - updatelogBox(); - if (state == "manual"){ - openedlogpage = ""; setSpeed(0); - } - else{setSpeed((state=="live")?100:2500);} - } - else{$("#slow").attr('checked', true);} - - function setupBox(){ - var state = $("#logconfigbox").css("display"); - if (state == "none"){ - $("#logconfigbox").slideDown("normal"); - $("#logheader").removeClass("hide"); - $("#logheader").addClass("show"); - } - else{ - $("#logconfigbox").slideUp("normal"); - $("#logheader").removeClass("show"); - $("#logheader").addClass("hide"); +/*jslint undef: true */ +/*global $, document, window, processState, getCookie, setCookie, setSpeed, $SCRIPT_ROOT */ +/*global openedlogpage: true */ +/* vim: set et sts=4: */ + +$(document).ready(function () { + "use strict"; + + function setupBox() { + var state = $("#logconfigbox").css("display"); + if (state === "none") { + $("#logconfigbox").slideDown("normal"); + $("#logheader").removeClass("hide"); + $("#logheader").addClass("show"); + } else { + $("#logconfigbox").slideUp("normal"); + $("#logheader").removeClass("show"); + $("#logheader").addClass("hide"); + } } - } - - function updatelogBox(){ - if(processState=="Stopped" || processState=="Checking" || $("#manual").is(":checked")){ - $("#salpgridLog").hide(); - $("#manualLog").show(); - $("#manualLog") - .scrollTop($("#manualLog")[0].scrollHeight - $("#manualLog") - .height()); + + function updatelogBox() { + if (processState === "Stopped" || processState === "Checking" || $("#manual").is(":checked")) { + $("#salpgridLog").hide(); + $("#manualLog").show(); + $("#manualLog") + .scrollTop($("#manualLog")[0].scrollHeight - $("#manualLog").height()); + } else { + $("#salpgridLog").show(); + $("#manualLog").hide(); + } } - else{ - $("#salpgridLog").show(); - $("#manualLog").hide(); + + openedlogpage = $("input#type").val(); + updatelogBox(); + var state = getCookie("autoUpdate"); + + $("#logheader").click(function () { + setupBox(); + }); + + $("#manual").change(function () { + setCookie("autoUpdate", "manual"); + if ($("input#type").val() === "instance") { + window.location.href = $SCRIPT_ROOT + "/viewInstanceLog"; + } else { + window.location.href = $SCRIPT_ROOT + "/viewSoftwareLog"; + } + }); + + $("#live").change(function () { + updatelogBox(); + $("#logconfigbox").find("input:radio").attr('checked', false); + $("#live").attr('checked', true); + setSpeed(100); + setCookie("autoUpdate", "live"); + openedlogpage = $("input#type").val(); + }); + + $("#slow").change(function () { + updatelogBox(); + $("#logconfigbox").find("input:radio").attr('checked', false); + $("#slow").attr('checked', true); + setSpeed(2500); + setCookie("autoUpdate", "slow"); + openedlogpage = $("input#type").val(); + }); + + if (state) { + $("#" + state).attr('checked', true); + updatelogBox(); + if (state === "manual") { + openedlogpage = ""; + setSpeed(0); + } else { + setSpeed((state === "live") ? 100 : 2500); + } + } else { + $("#slow").attr('checked', true); } - } -}); \ No newline at end of file +}); diff --git a/slapos/shacache/config.py b/slapos/shacache/config.py index 43f62e957157c695a2777dcf5912db5a6cdcf7e1..28176f827bebbfbc59103718b58865f32878b2b7 100644 --- a/slapos/shacache/config.py +++ b/slapos/shacache/config.py @@ -26,7 +26,7 @@ class NetworkcacheParser(OptionParser): """ def __init__(self, usage=None, version=None): """ - Initialize all options possibles. + Initialize all possible options. """ OptionParser.__init__(self, usage=usage, version=version, option_list=[