diff options
author | Jayaram Pai | 2013-12-27 04:26:10 +0530 |
---|---|---|
committer | Jayaram Pai | 2013-12-27 04:26:10 +0530 |
commit | 4fc8de24f4e26719ddb043f4779cdbc9914475bb (patch) | |
tree | 1c5c6b0a85d8bff064c2150cbae4dc17c99d4ea6 | |
parent | 06e73e7cd1c99ce224ee594b1e11129bc9a4e422 (diff) | |
download | scilab-on-cloud-4fc8de24f4e26719ddb043f4779cdbc9914475bb.tar.gz scilab-on-cloud-4fc8de24f4e26719ddb043f4779cdbc9914475bb.tar.bz2 scilab-on-cloud-4fc8de24f4e26719ddb043f4779cdbc9914475bb.zip |
basic code execution implemented.
thanks to prathamesh920 for mode(2)
thanks for jayparikh111 for reporting syntax error bug
thanks to saketkc for !--error-2 suggestion
-rw-r--r-- | static/tmp/mLnhjbU1jr3BCrLv8tMJai6ElivgI1dJ.sci | 49 | ||||
-rw-r--r-- | static/website/images/ajax-loader.gif | bin | 0 -> 1079 bytes | |||
-rw-r--r-- | static/website/js/cloud.js | 2 | ||||
-rw-r--r-- | static/website/templates/index.html | 1 | ||||
-rw-r--r-- | website/helpers.py | 69 |
5 files changed, 24 insertions, 97 deletions
diff --git a/static/tmp/mLnhjbU1jr3BCrLv8tMJai6ElivgI1dJ.sci b/static/tmp/mLnhjbU1jr3BCrLv8tMJai6ElivgI1dJ.sci index f635a71..2d35505 100644 --- a/static/tmp/mLnhjbU1jr3BCrLv8tMJai6ElivgI1dJ.sci +++ b/static/tmp/mLnhjbU1jr3BCrLv8tMJai6ElivgI1dJ.sci @@ -1,48 +1,3 @@ -lines(0) +mode(2); -disp("Example 2.1") -printf("\n") -printf("Given") -disp("Resistance used is 4 ohm") -disp("Current flow is i=2.5*sin(w*t)") -disp("Angular frequency(w)=500 rad/s") - -R=4; -iamp=2.5;w=500; -t=0:0.001:0.012566 -i=2.5*sin(w*t) - - -Vamp=iamp*R; -printf("v=%d*sin(%d*t)(V)\n",Vamp,w) - -pamp=iamp*iamp*R; -printf("p=%d(sin(%d*t))^2(W)\n",pamp,w) -p=pamp*sin(w*t)^2; - -//On integrating p with respect to t -W=25*(t/2-sin(2*w*t)/(4*w)) - -function p=f(t),p=pamp*sin(w*t)^2,endfunction -w1=intg(0,2*%pi/w,f); - - -subplot(221) -plot(t,i) -xs2jpg(gcf(), "/home/cheese/cloud/soc/static/tmp/1387919154.jpg"); -xtitle ('i vs wt','wt','i '); - -subplot(222) -plot(t,p) -xs2jpg(gcf(), "/home/cheese/cloud/soc/static/tmp/1387919155.jpg"); -xtitle ('p vs wt','wt','p '); - - - -subplot(223) -plot(t,W) -xs2jpg(gcf(), "/home/cheese/cloud/soc/static/tmp/1387919156.jpg"); -xtitle ('w vs wt','wt','w '); - - -exit +quit();
\ No newline at end of file diff --git a/static/website/images/ajax-loader.gif b/static/website/images/ajax-loader.gif Binary files differnew file mode 100644 index 0000000..408af5c --- /dev/null +++ b/static/website/images/ajax-loader.gif diff --git a/static/website/js/cloud.js b/static/website/js/cloud.js index 1b64532..644d7fd 100644 --- a/static/website/js/cloud.js +++ b/static/website/js/cloud.js @@ -88,6 +88,7 @@ $(document).ready(function() { $("#execute").click(function() { var csrfmiddlewaretoken = $("[name='csrfmiddlewaretoken']").val(); var code = editor.getValue(); + $("body").css("cursor", "wait"); $.ajax({ url:"/ajax-execute/", type: "POST", @@ -97,6 +98,7 @@ $(document).ready(function() { }, dataType: "text", success: function(data) { + $("body").css("cursor", "auto"); result.setValue(data); } }); diff --git a/static/website/templates/index.html b/static/website/templates/index.html index a4b200b..8caa608 100644 --- a/static/website/templates/index.html +++ b/static/website/templates/index.html @@ -135,7 +135,6 @@ } } }); - </script> {% csrf_token %} </body> diff --git a/website/helpers.py b/website/helpers.py index 651a886..c5aad51 100644 --- a/website/helpers.py +++ b/website/helpers.py @@ -6,7 +6,11 @@ import subprocess from soc.settings import PROJECT_DIR def scilab_run(code, token): + #Remove all clear; + code = code.replace('clear','') + code = code.replace(r'clear.*all','') plot_exists = False + #Finding the plot and appending xs2jpg function p = re.compile(r'.*plot.*\(.*,.*,*\).*\n') if p.search(code): @@ -28,69 +32,36 @@ def scilab_run(code, token): start = end code += temp[end:] - # Create a file for the current request - canvas_off = """ - function turnCanvasOff() - m = getscilabmode(); - if (m=="STD"|m=="NW") then - previousDisp = disp; - prot = funcprot(); - funcprot(0); - deff("disp(str)", ""); - usecanvas(%f); - disp = previousDisp; - funcprot(prot); - end - endfunction - turnCanvasOff(); - clear turnCanvasOff; - """ + #Check whether to load scimax / maxima + if 'syms' in code or 'Syms' in code: + code = code.replace('syms', 'Syms') + code = 'exec(\'/home/cheese/scimax/loader.sce\');\nmaxinit\n' + code file_path = PROJECT_DIR + '/static/tmp/' + token + '.sci' + #thanks @prathamesh920 github + #traps even syntax errors eg: endfunton f = open(file_path, "w") - f.write("mode(-1);\nlines(0);\nmode(-1);\ntry\nmode(2);\n") - f.write('lines(0)\n') - f.write(canvas_off) + f.write('mode(2);\n') f.write(code) - f.write('\nexit') - f.write("\nmode(-1);\nexit();\ncatch\nmode(-1);\ndisp(lasterror());\nexit();") + f.write('\nquit();') f.close() - if plot_exists: - cmd = 'export DISPLAY=:99 && ' - cmd += 'xvfb-run -a cat {0}'.format(file_path) + ' | scilab-adv-cli -nw -nb' - print "############################" - print cmd - else: - cmd = 'cat {0}'.format(file_path) + ' | scilab-adv-cli -nw' + + #this makes it possible to execute scilab without the problem of \ + #getting stuck in the prompt in case of error + cmd = 'printf "lines(0)\nexec(\'{0}\',2);\nquit();"'.format(file_path) + cmd += ' | /home/cheese/scilab-5.4.1/bin/scilab-adv-cli -nw' + print cmd output = subprocess.Popen( cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True ).communicate()[0] + #os.remove(file_path) output = trim(output) return output def trim(output): - atoms_banner = """ - Start Image Processing Tool 2 - Load macros - Load help - - SIVP - Scilab Image and Video Processing Toolbox - Load macros - Load gateways - Load help - Load demos - - - - Start identification - - Load macros - - Load help - """ - output = output.replace(atoms_banner, '') + #for future use return output |