summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJayaram Pai2013-12-27 04:26:10 +0530
committerJayaram Pai2013-12-27 04:26:10 +0530
commit4fc8de24f4e26719ddb043f4779cdbc9914475bb (patch)
tree1c5c6b0a85d8bff064c2150cbae4dc17c99d4ea6
parent06e73e7cd1c99ce224ee594b1e11129bc9a4e422 (diff)
downloadscilab-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.sci49
-rw-r--r--static/website/images/ajax-loader.gifbin0 -> 1079 bytes
-rw-r--r--static/website/js/cloud.js2
-rw-r--r--static/website/templates/index.html1
-rw-r--r--website/helpers.py69
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
new file mode 100644
index 0000000..408af5c
--- /dev/null
+++ b/static/website/images/ajax-loader.gif
Binary files differ
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