aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/fs.json18
-rw-r--r--src/jssh.js12
-rw-r--r--src/window-utils.js159
3 files changed, 178 insertions, 11 deletions
diff --git a/src/fs.json b/src/fs.json
index b060939..2b93344 100644
--- a/src/fs.json
+++ b/src/fs.json
@@ -1,23 +1,35 @@
[
{
+ "name": "nya",
+ "perms": { "r": true },
+ "dir": true,
+ "content": []
+ },
+ {
+ "name": "file",
+ "perms": { "r": true },
+ "dir": false,
+ "content": "hi"
+ },
+ {
"name": "apps",
"perms": { "r": true },
"dir": true,
"content": [
{
- "name": "notepad",
+ "name": "notepad.exe",
"perms": { "r": true },
"dir": false,
"content": "window Notepad <textarea onkeypress='auto_resize(this)' style='width:100%;overflow:visible;display:block;'></textarea>\nmeta icon src/img/notepad.png"
},
{
- "name": "cmd",
+ "name": "cmd.exe",
"perms": { "r": true },
"dir": false,
"content": "window cmd <div class='history' id='#_ID-history'></div><form autocomplete='off' onsubmit='exe_com(this);return false;'>λ <input id='#_ID-line' class='line' style='width:95%;' autofocus><input type='submit' style='display: none' /></form>\nmeta icon src/img/cmd.png"
},
{
- "name": "MineSweeper",
+ "name": "MineSweeper.exe",
"perms": { "r": true },
"dir": false,
"content": "window uwu nya\nmeta icon src/img/mine.png, resize false, left 250, top 250, width 144, height 210, scroll false\njs window.board#_ID_listeners = [];function lo#_ID_board() {let id = #_ID;let cont = document.getElementById(id + '-content-content');cont.innerHTML=`<div id='#_ID-board-head'><img id='#_ID-flags-1' style='padding-left:10px;' src='src/sprites/dig-0.png'><img id='#_ID-flags-2' src='src/sprites/dig-0.png'><img id='#_ID-flags-3' src='src/sprites/dig-0.png'><img id='#_ID-face' style='padding-left:10px;padding-right:10px;' src='src/sprites/smiley.png'><img id='#_ID-time-1' src='src/sprites/dig-0.png'><img id='#_ID-time-2' src='src/sprites/dig-0.png'><img id='#_ID-time-3' src='src/sprites/dig-0.png'></div>`;let width = 9; let height = 10;;let board = [];let score = 0;window.time_#_ID = 0;;for(let uwu of window.board#_ID_listeners){clearInterval(uwu);clearTimeout(uwu)};window.board#_ID_listeners = []; window.pause_#_ID=false;let bombs = 0;let max_bombs=9;for(let i = 0; i!=height;i++){let temp = [];for(let i = 0; i!=width;i++){if(Math.random() < 0.13 && bombs < max_bombs){temp.push(-1);bombs++;} else {temp.push(0);}};board.push(temp);};for(let i = 0; i!= board.length; i++){for(let ii = 0; ii!=board[i].length; ii++){if(board[i][ii]!=-1){board[i][ii] = (i!=0 ? board[i-1][ii]==-1 : 0) + (i!=0 && ii!=0 ? board[i-1][ii-1]==-1 : 0) + (ii!=0 ? board[i][ii-1]==-1 : 0) + (i!=height - 1 && ii!=0 ? board[i+1][ii-1]==-1 : 0) + (i!=height - 1 ? board[i+1][ii]==-1 : 0) + (i!=height - 1 && ii!=width - 1 ? board[i+1][ii+1]==-1 : 0) + (ii!=width - 1 ? board[i][ii+1]==-1 : 0) + (i!=0 && ii!=width - 1 ?board[i-1][ii+1]==-1 : 0);}}};let tbombs = (`00` + bombs.toString()).split(``);document.getElementById(`#_ID-flags-3`).src =`src/sprites/dig-${tbombs[tbombs.length -1]}.png`;document.getElementById(`#_ID-flags-2`).src =`src/sprites/dig-${tbombs[tbombs.length -2]}.png`;document.getElementById(`#_ID-flags-1`).src =`src/sprites/dig-${tbombs[tbombs.length -3]}.png`;for(let l in board){for(let ll in board[l]){cont.innerHTML+='<img id=\\'#_ID-board-'+l+'-'+ll+'\\' onclick=\\'if(this.src.includes(`space-flag.png`)){return};let board = '+JSON.stringify(board)+';if('+board[l][ll]+'==-1){for(let i in board){for(let ii in board[i]){document.getElementById(`#_ID-board-${i}-${ii}`).onclick = null;document.getElementById(`#_ID-board-${i}-${ii}`).oncontextmenu = null;if(board[i][ii]==-1){if(document.getElementById(`#_ID-board-${i}-${ii}`).src.includes(`space-flag`)){document.getElementById(`#_ID-board-${i}-${ii}`).src=`src/sprites/bomb-x.png`}else{document.getElementById(`#_ID-board-${i}-${ii}`).src=`src/sprites/space-bomb.png`;};};};};this.src=`src/sprites/bomb-ex.png`;document.getElementById(`#_ID-face`).src=`src/sprites/dead.png`;window.pause_#_ID = true;for(let i of window.board#_ID_listeners){clearInterval(i);clearTimeout(i)};window.board#_ID_listeners=[]; }else{(function rev(x,y){if(board[y][x]!=0){return};if(x>0){ for(let i = x-1; i>=0; i--){if(document.getElementById(`#_ID-board-${y}-${i}`).src.includes(`src/sprites/space-uncl.png`)==false){break};document.getElementById(`#_ID-board-${y}-${i}`).src=`src/sprites/space-${board[y][i]}.png`;if(board[y][i]!=0){break};rev(i,y); }; };; if(y>0){ for(let i = y-1; i>=0; i--){if(document.getElementById(`#_ID-board-${i}-${x}`).src.includes(`src/sprites/space-uncl.png`)==false){break};document.getElementById(`#_ID-board-${i}-${x}`).src=`src/sprites/space-${board[i][x]}.png`;if(board[i][x]!=0){break};rev(x,i); }; }; ;;; if(x<board[0].length-1){ for(let i = x+1; i<=board[0].length-1; i++){if(document.getElementById(`#_ID-board-${y}-${i}`).src.includes(`src/sprites/space-uncl.png`)==false){break};document.getElementById(`#_ID-board-${y}-${i}`).src=`src/sprites/space-${board[y][i]}.png`;if(board[y][i]!=0){break};rev(i,y); }; };; if(y<board.length-1){ for(let i = y+1; i<=board.length-1; i++){if(document.getElementById(`#_ID-board-${i}-${x}`).src.includes(`src/sprites/space-uncl.png`)==false){break};document.getElementById(`#_ID-board-${i}-${x}`).src=`src/sprites/space-${board[i][x]}.png`;if(board[i][x]!=0){break};rev(x,i); }; };; })('+ll+','+l+');document.getElementById(`#_ID-face`).src = `src/sprites/shock.png`;let t_ss = setTimeout(()=>{document.getElementById(`#_ID-face`).src = `src/sprites/smiley.png`;},700);window.board#_ID_listeners.push(t_ss); document.getElementById(this.id).src=`src/sprites/space-'+board[l][ll]+'.png`;};for(let b in board){for(let bb in board[b]){if(board[b][bb]!=-1&&(document.getElementById(`#_ID-board-${b}-${bb}`).src.includes(`space-uncl`)||document.getElementById(`#_ID-board-${b}-${bb}`).src.includes(`space-flag`))){console.log(b,bb,board[b][bb]);return false};}};for(let iii of window.board#_ID_listeners){clearInterval(iii);clearTimeout(iii)};window.board#_ID_listeners = []; document.getElementById(`#_ID-face`).src = `src/sprites/cool.png`;for(let z in board){for(let zz in board[z]){document.getElementById(`#_ID-board-${z}-${zz}`).onclick = null;document.getElementById(`#_ID-board-${z}-${zz}`).oncontextmenu = null;window.pause_#_ID = true;};}\\' oncontextmenu=\\'let b3 = document.getElementById(`#_ID-flags-3`).src; b3 = b3.split(`-`)[b3.split(`-`).length-1].split(`.`)[0];let b2 = document.getElementById(`#_ID-flags-2`).src; b2 = b2.split(`-`)[b2.split(`-`).length-1].split(`.`)[0];let b1 = document.getElementById(`#_ID-flags-1`).src; b1 = b1.split(`-`)[b1.split(`-`).length-1].split(`.`)[0];let bombs = parseInt(b1+b2+b3);if(this.src.includes(`space-flag.png`)){this.src=`src/sprites/space-uncl.png`;bombs++;}else{if(bombs>0){this.src=`src/sprites/space-flag.png`;bombs--;}};let tbombs = (`00` + bombs.toString().replace(/-/g,`0`)).split(``);document.getElementById(`#_ID-flags-3`).src =`src/sprites/dig-${tbombs[tbombs.length -1]}.png`;document.getElementById(`#_ID-flags-2`).src =`src/sprites/dig-${tbombs[tbombs.length -2]}.png`;document.getElementById(`#_ID-flags-1`).src =`src/sprites/dig-${tbombs[tbombs.length -3]}.png`;;return false;\\' src=\\'src/sprites/space-uncl.png\\'>'}}; document.getElementById(`#_ID-face`).onclick = () => {lo#_ID_board();for(let zz of window.board#_ID_listeners){clearTimeout(zz);clearInterval(zz);};window.board#_ID_listeners = [];}}lo#_ID_board();setInterval(function ughugh(){if(!window.pause_#_ID){try{window.time_#_ID+=1;let ttime = (`00` + window.time_#_ID.toString()).split(``);document.getElementById(`#_ID-time-3`).src =`src/sprites/dig-${ttime[ttime.length -1]}.png`;document.getElementById(`#_ID-time-2`).src =`src/sprites/dig-${ttime[ttime.length -2]}.png`;document.getElementById(`#_ID-time-1`).src =`src/sprites/dig-${ttime[ttime.length -3]}.png`}catch(e){}}},1000);"
diff --git a/src/jssh.js b/src/jssh.js
index 3a49b08..efbb78e 100644
--- a/src/jssh.js
+++ b/src/jssh.js
@@ -214,6 +214,18 @@ class jssh {
break;
}
}
+ return id;
+ }
+ get_file(path) {
+ let zz = path.split("/");
+ let ff = zz.splice(zz.length - 1, 1);
+ let ww = this.set_wd(zz.join("/"));
+ for (let f of ww) {
+ if (f.name == ff) {
+ //console.log(f);
+ return f;
+ }
+ }
}
ex(stdin = null) {
let temp_working_dir = this.working_dir;
diff --git a/src/window-utils.js b/src/window-utils.js
index 7cdbd7c..2755878 100644
--- a/src/window-utils.js
+++ b/src/window-utils.js
@@ -1,9 +1,152 @@
let util = {
- alert(inp){
-
- window_create(document.getElementsByClassName("window").length,
- (inp.title == undefined ? "Alert" : inp.title),
- "<img src='./src/img/"+(inp.content == undefined ? "info" : inp.content) +".png'> <button>ok</button>"+ (inp.content == undefined ? "Alert" : inp.content),
- {width:220,height:110,resize:false})
- }
-} \ No newline at end of file
+ async alert(inp) {
+ let promise = new Promise(async (res, rej) => {
+ bu = [];
+ if (inp.buttons == undefined) {
+ bu = ["ok", "no"];
+ } else {
+ bu = inp.buttons;
+ }
+ let buttons = "";
+ let i = document.getElementsByClassName("window").length;
+ for (let b of bu) {
+ buttons +=
+ "<button id='" +
+ i +
+ "-content-button-" +
+ b +
+ "' style='padding-left:15px;padding-right:15px;margin-right:10px;text-align: center;'>" +
+ b +
+ "</button>";
+ }
+
+ await window_create(
+ i,
+ inp.title == undefined ? "Alert" : inp.title,
+ `<table><tr><td style='padding: 5px;'><img src='./src/img/${
+ inp.type == undefined ? "info" : inp.type
+ }.png'></td></tr>
+ <tr >
+ <td style='padding: 5px;'>${
+ inp.content == undefined ? "Alert" : inp.content
+ }</td>
+ <td style='padding: 5px;' >${buttons}</td>
+ </tr></table>`,
+ { width: 220, height: 110, resize: false }
+ );
+ for (let b of bu) {
+ document.getElementById(i + "-content-button-" + b).onclick = () => {
+ res(b);
+ };
+ }
+ });
+ return promise;
+ },
+ async fd(inp) {
+ let promise = new Promise(async (res, rej) => {
+ let i = document.getElementsByClassName("window").length;
+ let sel = [];
+ await window_create(i, "fs", "");
+ function load() {
+ let ll = new jssh(fs, "/", i, "null", "null", window_create);
+ let tfs = ll.set_wd(ll.clean_path(inp.path));
+ let files = "";
+ for (let f of tfs) {
+ if (f.dir) {
+ files +=
+ "<div id='" +
+ i +
+ "-id-name-" +
+ f.name +
+ "' style='height:55px;position:relative;width:48px;display:inline-block;padding:10px;'><img style='height:48px;width:48px;' src='src/img/folder.png'><div style='position:absolute;bottom:0;overflow-wrap: break-word; width:inherit;user-select:none;'>" +
+ f.name +
+ "</div></div>";
+ } else {
+ files +=
+ "<div id='" +
+ i +
+ "-id-name-" +
+ f.name +
+ "'style='height:55px;position:relative;width:48px;display:inline-block;padding:10px;'><img style='height:48px;width:48px;' src='src/img/notepad.png'><div style='position:absolute;bottom:0;overflow-wrap: break-word; width:inherit;user-select:none;'>" +
+ f.name +
+ "</div></div>";
+ }
+ }
+ files +=
+ "<div id='" +
+ i +
+ "-fd-bottom' class='fd-bottom' >file/directory name: <div style='display:inline-block;' id='" +
+ i +
+ "-fd-bottom-sel'>" +
+ sel.join(",") +
+ (sel.length == 0 ? "select a file!" : "") +
+ "</div>" +
+ "<button id='" +
+ i +
+ "-content-button-sub' style='padding-left:15px;padding-right:15px;top:0;text-align: center;display:inline-block;position:absolute;right:0;'>submit</button>" +
+ "</div>";
+ document.getElementById(i + "-content-content").innerHTML = files;
+ for (let f of tfs) {
+ let tt = document.getElementById(i + "-id-name-" + f.name);
+ let dou = false;
+ tt.onclick = (ev) => {
+ if (dou) {
+ console.log(f, inp);
+ if (f.dir) {
+ inp.path += f.name;
+ } else {
+ if (f.name.includes(".exe"))
+ ll.ex_file(inp.path + "/" + f.name);
+ else {
+ if (inp.open_file == true || inp.open_file == undefined) {
+ let iii = ll.ex_file("/apps/notepad.exe");
+ document.getElementById(
+ iii + "-content-content"
+ ).firstChild.value = ll.get_file(
+ inp.path + "/" + f.name
+ ).content;
+ } else {
+ return inp.path + "/" + f.name;
+ }
+ //console.log();
+ }
+ }
+ load();
+ dou = false;
+ } else {
+ dou = true;
+
+ tt.style.backgroundColor = "blue";
+ setTimeout(() => {
+ if (dou) {
+ if (ev.ctrlKey) {
+ if (sel.includes(f.name)) {
+ sel.splice(sel.indexOf(f.name), 1);
+ } else sel.push(f.name);
+ } else sel = [f.name];
+ //sel = [f.name];
+ document.getElementById(i + "-fd-bottom-sel").innerHTML =
+ sel.join(",") + (sel.length == 0 ? "select a file!" : "");
+ for (let aa of tfs) {
+ let ttt = document.getElementById(
+ i + "-id-name-" + aa.name
+ );
+ if (sel.includes(aa.name)) {
+ ttt.style.backgroundColor = "blue";
+ } else {
+ ttt.style.backgroundColor = "";
+ }
+ }
+ //load();
+ dou = false;
+ }
+ }, 200);
+ }
+ };
+ }
+ }
+ load();
+ });
+ return promise;
+ },
+};