Merge branch 'master' of https://codefirst.iut.uca.fr/git/nathan.boileau/Scripted
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
eb8114c56a
@ -0,0 +1,3 @@
|
||||
function displayWaiting(){
|
||||
document.getElementById("waiting").innerHTML = "Waiting for Coder...";
|
||||
}
|
@ -0,0 +1,131 @@
|
||||
function run() {
|
||||
const terminal = document.getElementById("console");
|
||||
const runner = new BrythonRunner({
|
||||
stdout: {
|
||||
write(content) {
|
||||
terminal.innerHTML += content;
|
||||
terminal.scrollTop = terminal.scrollHeight;
|
||||
},
|
||||
flush() {},
|
||||
},
|
||||
stderr: {
|
||||
write(content) {
|
||||
terminal.innerHTML += content;
|
||||
terminal.scrollTop = terminal.scrollHeight;
|
||||
},
|
||||
flush() {},
|
||||
},
|
||||
stdin: {
|
||||
async readline() {
|
||||
terminal.innerHTML += "\n";
|
||||
terminal.scrollTop = terminal.scrollHeight;
|
||||
var userInput = prompt();
|
||||
return userInput;
|
||||
},
|
||||
flush() {},
|
||||
},
|
||||
});
|
||||
var code = editor.getValue();
|
||||
runner.runCode(code);
|
||||
setTimeout(() => {
|
||||
runner.stopRunning();
|
||||
}, 10 * 1000);
|
||||
}
|
||||
|
||||
function run_init() {
|
||||
if (document.getElementById("console") != "") {
|
||||
document.getElementById("console").innerHTML = "";
|
||||
}
|
||||
run();
|
||||
}
|
||||
|
||||
var editor = ace.edit("editor");
|
||||
editor.container.style.opacity = 0.85;
|
||||
editor.setTheme("ace/theme/vibrant_ink");
|
||||
editor.getSession().setMode("ace/mode/python");
|
||||
editor.setFontSize("16px");
|
||||
editor.setOptions({
|
||||
enableLiveAutocompletion: true,
|
||||
copyWithEmptySelection: true,
|
||||
showGutter: true,
|
||||
useWrapMode: true, // wrap text to view
|
||||
indentedSoftWrap: false,
|
||||
});
|
||||
|
||||
//Function that execute given code and return the result in a given element by id
|
||||
|
||||
function exec(code, id) {
|
||||
const terminal = document.getElementById("console");
|
||||
terminal.innerHTML = "";
|
||||
const runner = new BrythonRunner({
|
||||
stdout: {
|
||||
write(content) {
|
||||
if (id == "code") {
|
||||
retourCode = content;
|
||||
}
|
||||
if (id == "solution") {
|
||||
retourSolution = content;
|
||||
}
|
||||
},
|
||||
flush() {},
|
||||
},
|
||||
stderr: {
|
||||
write(content) {
|
||||
if (id == "solution") {
|
||||
retourSolution = "ERROR";
|
||||
}
|
||||
terminal.innerHTML += content;
|
||||
terminal.scrollTop = terminal.scrollHeight;
|
||||
},
|
||||
flush() {},
|
||||
},
|
||||
stdin: {
|
||||
async readline() {
|
||||
terminal.innerHTML += "\n";
|
||||
terminal.scrollTop = terminal.scrollHeight;
|
||||
var userInput = prompt();
|
||||
return userInput;
|
||||
},
|
||||
flush() {},
|
||||
},
|
||||
});
|
||||
runner.runCode(code);
|
||||
setTimeout(() => {
|
||||
runner.stopRunning();
|
||||
}, 10 * 1000);
|
||||
}
|
||||
|
||||
/**
|
||||
* It checks if the code in the editor as the same result as the solution.
|
||||
*/
|
||||
function check() {
|
||||
if (retourSolution == "ERROR") {
|
||||
result.innerHTML = "Il semblerait qu'il y a une erreur dans ton code :/";
|
||||
} else if (retourSolution == retourCode) {
|
||||
result.innerHTML = "Bien joué";
|
||||
document.getElementById("next").style.display = "flex";
|
||||
} else {
|
||||
result.innerHTML = "Mauvaise réponse";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* If the help is displayed, hide it. Otherwise, display it.
|
||||
*/
|
||||
function displayHelp() {
|
||||
var help = document.getElementsByClassName("help");
|
||||
|
||||
if (help[0].style.display == "block") {
|
||||
for (var i = 0; i < help.length; i++) {
|
||||
help[i].style.display = "none";
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
for (var i = 0; i < help.length; i++) {
|
||||
help[i].style.display = "block";
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,195 @@
|
||||
<html>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>
|
||||
<?php
|
||||
echo $enigme->getNom();
|
||||
?>
|
||||
</title>
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/css/bootstrap.min.css"
|
||||
integrity="sha384-r4NyP46KrjDleawBgD5tp8Y7UzmLA05oM1iAEQ17CSuDqnUK2+k9luXQOfXJCJ4I" crossorigin="anonymous" />
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"
|
||||
integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo"
|
||||
crossorigin="anonymous"></script>
|
||||
<script src="https://stackpath.bootstrapcdn.com/bootstrap/5.0.0-alpha1/js/bootstrap.min.js"
|
||||
integrity="sha384-oesi62hOLfzrys4LxRF63OJCXdXDipiYWBnvTl9Y9/TRlw5xlKIEHpNyvvDShgf/"
|
||||
crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/icon?family=Material+Icons" />
|
||||
<link rel="stylesheet" href="View/src/CSS/Enigme.css" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
vous êtes dans la partie
|
||||
<div class="container-fluid px-5">
|
||||
<!-- First Row -->
|
||||
<div class="row py-4">
|
||||
<div class="col-6 d-flex align-items-center px-0">
|
||||
<a class="material-icons pl-0" id="home" href="index.php?action=goToHome"
|
||||
style="font-size: 40px; color: white">home</a>
|
||||
</div>
|
||||
<!-- <div class="col-1 d-flex align-items-center justify-content-end px-0">
|
||||
<a class="material-icons pl-0" id="backArrow"
|
||||
href="index.php?action=goToEnigme&ordre=<?php
|
||||
if ($enigme->getOrdre() == 1)
|
||||
{
|
||||
echo $enigme->getOrdre();
|
||||
}
|
||||
else
|
||||
{
|
||||
echo $enigme->getOrdre() - 1;
|
||||
}?>"
|
||||
style="font-size: 40px; color: white">< </a>
|
||||
</div>
|
||||
<div class="col-1 d-flex align-items-center px-0">
|
||||
<a class="material-icons pl-0" id="nextArrow"
|
||||
href="index.php?action=goToEnigme&ordre=<?php echo $enigme->getOrdre() + 1; ?>"
|
||||
style="font-size: 40px; color: white"> ></a>
|
||||
</div> -->
|
||||
<button style="background-color: transparent; border: none; outline: none;" onclick="displayHelp()"
|
||||
class="col-6 d-flex align-items-center">
|
||||
<div class="col-10 text-right px-3">
|
||||
<p style="font-size: 14px; color: white"><b>Besoin d'aide ?</b></p>
|
||||
</div>
|
||||
<div class="col-2 text-right">
|
||||
<img src="View/assets/img/Foxy.png" alt="Logo" class="rounded-circle moving-fox"
|
||||
style="border: 1px solid #44fff6; width: 60px; height: 60px" />
|
||||
</div>
|
||||
</button>
|
||||
</div>
|
||||
<!-- End First Row -->
|
||||
|
||||
<!-- Second Row -->
|
||||
<div class="row">
|
||||
<!-- First Column -->
|
||||
<div class="col-3 rounded p-3" style="background-color: #222831; min-height: 80vh; height: auto">
|
||||
<h2 class="text-left py-3" style="color: #44fff6; font-weight: 500">
|
||||
<?php
|
||||
echo $enigme->getNom();
|
||||
?>
|
||||
</h2>
|
||||
<p>
|
||||
<?php
|
||||
echo $enigme->getEnonce();
|
||||
?>
|
||||
</p>
|
||||
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Rappel</h3>
|
||||
<p>
|
||||
<?php
|
||||
echo $enigme->getRappel();
|
||||
?>
|
||||
</p>
|
||||
<h3 class="text-left pb-3 pt-5" style="color: #44fff6">Exemple</h3>
|
||||
<p>
|
||||
<?php
|
||||
echo $enigme->getExemple();
|
||||
?>
|
||||
</p>
|
||||
<h3 class="text-left pb-3 pt-5 help" style="color: #44fff6; display: none">Aide</h3>
|
||||
<p style="display: none" class="help">
|
||||
<?php
|
||||
echo $enigme->getAide();
|
||||
?>
|
||||
</p>
|
||||
</div>
|
||||
<!-- End First Column -->
|
||||
|
||||
<!-- Second Column -->
|
||||
<div class="col-5 pr-0">
|
||||
<div class="ace rounded" id="editor"><?php
|
||||
// echo $code;
|
||||
if (! isset($code) || $code == ""){
|
||||
echo $enigme->getPrompt();
|
||||
}
|
||||
else {
|
||||
echo $code;}
|
||||
?></div>
|
||||
</div>
|
||||
<!-- End Second Column -->
|
||||
|
||||
<!-- Third Column -->
|
||||
<div class="col-4">
|
||||
<textarea id="console" readonly style="width: 100%; min-height: 65vh; height: auto"
|
||||
class="p-3 rounded"></textarea>
|
||||
|
||||
<div class="row pt-5 text-center" style="cursor: pointer">
|
||||
<div class="col-6">
|
||||
<a onclick="run_init()" class="btn">
|
||||
<span>Run</span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-6">
|
||||
<button onclick="submit()" class="btn" data-toggle="modal" data-target="#modal">
|
||||
<span>Submit</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Third Column -->
|
||||
</div>
|
||||
<!-- End Second Row -->
|
||||
</div>
|
||||
|
||||
<!-- Modal -->
|
||||
<div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="exampleModalCenterTitle"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog modal-dialog-centered" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h2 class="modal-title" id="exampleModalLongTitle" style="color: black">
|
||||
Results
|
||||
</h2>
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<h5 id="result" style="color: black"></h5>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<a
|
||||
<?php
|
||||
echo 'href="index.php?';
|
||||
?>
|
||||
class="btn" style="display: none" id="next"
|
||||
>
|
||||
<span>NEXT</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- End Modal -->
|
||||
|
||||
<script src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js" type="text/javascript"
|
||||
charset="utf-8"></script>
|
||||
<script src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js"
|
||||
type="text/javascript" charset="utf-8"></script>
|
||||
<script src="View/src/JS/baseMulti.js">
|
||||
</script>
|
||||
<script>
|
||||
function saveCode(index, enigmeId) {
|
||||
console.log("saveCode");
|
||||
var index = '<?php echo $index; ?>';
|
||||
var enigmeId = '<?php echo $enigme->getIdEnigme(); ?>';
|
||||
console.log("[Savecode]index : " + index, "[Savecode]enigmeId : " + enigmeId);
|
||||
var xhr = new XMLHttpRequest();
|
||||
// xhr.open('POST', 'http://localhost/Scripted/WEB/index.php?action=saveCode', true);
|
||||
xhr.open('POST', 'http://82.165.180.114/Scripted/WEB/index.php?action=saveCodeMulti', true);
|
||||
xhr.responseType = 'text';
|
||||
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
|
||||
xhr.onload = function () {
|
||||
console.log('[SaveCode] '+xhr.responseText);
|
||||
};
|
||||
var searchParams = new URLSearchParams(window.location.search);
|
||||
xhr.send("code=" + editor.getValue() + "&index=" + index + "&enigmeId=" + enigmeId);
|
||||
}
|
||||
document.getElementById ('editor').addEventListener('input', saveCode);
|
||||
</script>
|
||||
<?php
|
||||
echo '<script src="View/src/JS/' . $enigme->getNom() . '.js"></script>';
|
||||
?>
|
||||
</body>
|
||||
|
||||
</html>
|
Loading…
Reference in new issue