diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/fs.json | 18 | ||||
-rw-r--r-- | src/jssh.js | 12 | ||||
-rw-r--r-- | src/window-utils.js | 159 |
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; + }, +}; |