@@ -16,29 +16,89 @@ const Actions = ({prob,tests})=>{
1616 // console.log(ele.target.nextElementSibling);
1717 }
1818
19+ const runexamples = ( ) => {
20+ const path = require ( 'path' ) ;
21+ var langcode = atom . config . get ( "codeblue.programmingLanguage" )
22+ var ext = ""
23+ if ( langcode == 43 ) ext = ".c"
24+ else if ( langcode == 54 ) ext = ".cpp"
25+ else ext = ".py"
26+ var wd = atom . config . get ( "codeblue.workingDirectory" )
27+ var towhere = path . join ( wd , prob . index )
28+ var torun = path . join ( towhere , prob . index + ext )
29+ var inputfile = path . join ( towhere , "examples/input1.in" )
30+
31+ cmd = "python " + torun + " < " + inputfile
32+
33+ const { exec } = require ( 'child_process' ) ;
34+ exec ( cmd , {
35+ timeout : 2500 ,
36+ maxBuffer : 1024 * 32 ,
37+ } , function ( error , stdout , stderr ) {
38+ var res = { error : false , verdict : "none" }
39+ res . stdout = stdout
40+ if ( error !== null ) {
41+ res . error = true
42+ if ( error . killed ) {
43+ res . verdict = "TIME_LIMIT_EXCEEDED"
44+ } else if ( error . code == "ERR_CHILD_PROCESS_STDIO_MAXBUFFER" ) {
45+ res . verdict = "MEMORY_LIMIT_EXCEEDED"
46+ } else {
47+ res . verdict = "RUNTIME_ERROR"
48+ }
49+ res . stderr = stderr
50+ }
51+ console . log ( res ) ;
52+ } )
53+
54+
55+ }
56+
57+ const togglesubmit = ( ele ) => {
58+ var parent = ele . target . parentElement
59+ for ( var i = 1 ; i < parent . children . length ; i ++ ) {
60+ var child = parent . children [ i ]
61+ var val = child . style . display
62+ if ( val == "block" ) {
63+ child . style . display = "none" ;
64+ } else {
65+ child . style . display = "block" ;
66+ }
67+ }
68+ }
69+
1970 return (
2071 < div className = "actions" >
2172 < h2 className = "title titlename" > { prob . index } - { prob . name } </ h2 >
2273 < div className = "tasks" >
2374 < div className = "task" >
2475 < div className = "up" >
2576 < span onClick = { change } className = "icon icon-chevron-right" > Examples</ span >
26- < button className = "actionbutton" > Run all</ button >
77+ < button className = "actionbutton" onClick = { runexamples } > Run all</ button >
2778 </ div >
2879 < div className = "down" >
2980 { tests && tests . map ( test => {
30- return < div className = "verdict" > < span > example { test . n + 1 } </ span > < i className = "icon-check" > </ i > </ div >
81+ return < div className = "verdict" > < span > example { test . n + 1 } </ span > < i className = { "icon-" + test . icon } > </ i > </ div >
3182 } ) }
3283 </ div >
3384 </ div >
85+ < div className = "task" >
86+ < div className = "up" >
87+ < span className = "icon icon-light-bulb" > Submissions</ span >
88+ < button onClick = { togglesubmit } className = "actionbutton" style = { { display : "block" } } > Submit</ button >
89+ < button onClick = { togglesubmit } className = "actionbutton realsubmit" style = { { display : "none" } } > Submit</ button >
90+ < button onClick = { togglesubmit } className = "actionbutton cancel" style = { { display : "none" } } > Cancel</ button >
91+ </ div >
92+ </ div >
3493 </ div >
3594 </ div >
3695 )
3796}
3897
3998export default Actions ;
4099
41- // check
42- // x
43- // clock
44- // alert
100+ // var langcode = atom.config.get("codeblue.programmingLanguage")
101+ // var ext = ""
102+ // if(langcode==43) ext=".c"
103+ // else if(langcode==54) ext=".cpp"
104+ // else ext=".py"
0 commit comments