From b498ae1be52ca2f3a3825c3af67d9005a8f5751b Mon Sep 17 00:00:00 2001 From: lh11117 <99455215+lh11117@users.noreply.github.com> Date: Thu, 17 Aug 2023 08:37:52 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 优化计算器、断网页面(深色模式)、以及一些细节 --- calculator_kernel.js | 165 +++++++++++++++++++++++++++++++++++ desktop.html | 132 ++++++++++------------------ desktop.js | 107 +++++++++-------------- disconnected_dark.html | 90 +++++++++++++++++++ mainpage.html | 2 +- media/Windows Background.wav | Bin 0 -> 247624 bytes widgets.css | 2 +- 7 files changed, 346 insertions(+), 152 deletions(-) create mode 100644 calculator_kernel.js create mode 100644 disconnected_dark.html create mode 100644 media/Windows Background.wav diff --git a/calculator_kernel.js b/calculator_kernel.js new file mode 100644 index 0000000..1a631ca --- /dev/null +++ b/calculator_kernel.js @@ -0,0 +1,165 @@ +var num1 = 0, num2 = 0; +var c = 0; + +function get_num(id) { + return Number(document.getElementById(id).value); +} + + +function on_click_number_key(key, id) { + //key:按下的数字键,int + //id:显示区的id + if (document.getElementById(id).value == "0") { + document.getElementById(id).value = "" + } + document.getElementById(id).value += key; +} + +function on_click_fun_key(key, id) { + //key:按下的功能键,int,加1,减2,乘3,除4 + num1 = Number(document.getElementById(id).value); + c = key; + document.getElementById(id).value = "0" +} + +function on_click_point(id) { + if (document.getElementById(id).value == "") { + document.getElementById(id).value = "0" + } + if (!(document.getElementById(id).value.includes('.'))) { + document.getElementById(id).value += "." + } +} + +function kernel_Square(id) { + document.getElementById(id).value = Math.pow(get_num(id), 2) +} + +function kernel_SquareRoot(id) { + document.getElementById(id).value = Math.sqrt(get_num(id)) +} + +function backspace(id) { + if (document.getElementById(id).value.length > 0) { + document.getElementById(id).value = document.getElementById(id).value.substring(0, document.getElementById(id).value.length - 1) + } + if (document.getElementById(id).value == "") { + document.getElementById(id).value = "0" + } +} + + +function clear_num(id) { + document.getElementById(id).value = "0" + num1 = 0, num2 = 0, c = 0; +} + +function on_click_eq(id) { + if (c == 0) { + return true; + } + num2 = Number(document.getElementById(id).value); + var num = _calc(num1, num2, c); + if (num != null) { + document.getElementById(id).value = num.toString() + return true; + } + return false; +} + +function accAdd(arg1, arg2) { + var r1, r2, m, c; + try { + r1 = arg1.toString().split(".")[1].length; + } + catch (e) { + r1 = 0; + } + try { + r2 = arg2.toString().split(".")[1].length; + } + catch (e) { + r2 = 0; + } + c = Math.abs(r1 - r2); + m = Math.pow(10, Math.max(r1, r2)); + if (c > 0) { + var cm = Math.pow(10, c); + if (r1 > r2) { + arg1 = Number(arg1.toString().replace(".", "")); + arg2 = Number(arg2.toString().replace(".", "")) * cm; + } else { + arg1 = Number(arg1.toString().replace(".", "")) * cm; + arg2 = Number(arg2.toString().replace(".", "")); + } + } else { + arg1 = Number(arg1.toString().replace(".", "")); + arg2 = Number(arg2.toString().replace(".", "")); + } + return (arg1 + arg2) / m; +} +function accSub(arg1, arg2) { + var r1, r2, m, n; + try { + r1 = arg1.toString().split(".")[1].length; + } + catch (e) { + r1 = 0; + } + try { + r2 = arg2.toString().split(".")[1].length; + } + catch (e) { + r2 = 0; + } + m = Math.pow(10, Math.max(r1, r2)); //last modify by deeka //动态控制精度长度 + n = (r1 >= r2) ? r1 : r2; + return ((arg1 * m - arg2 * m) / m).toFixed(n); +} +function accMul(arg1, arg2) { + var m = 0, s1 = arg1.toString(), s2 = arg2.toString(); + try { + m += s1.split(".")[1].length; + } + catch (e) { + } + try { + m += s2.split(".")[1].length; + } + catch (e) { + } + return Number(s1.replace(".", "")) * Number(s2.replace(".", "")) / Math.pow(10, m); +} + +function accDiv(arg1, arg2) { + var t1 = 0, t2 = 0, r1, r2; + try { + t1 = arg1.toString().split(".")[1].length; + } + catch (e) { + } + try { + t2 = arg2.toString().split(".")[1].length; + } + catch (e) { + } + with (Math) { + r1 = Number(arg1.toString().replace(".", "")); + r2 = Number(arg2.toString().replace(".", "")); + return (r1 / r2) * pow(10, t2 - t1); + } +} + + +function _calc(n1, n2, c) { + switch (c) { + case 1: + return accAdd(n1, n2); + case 2: + return accSub(n1, n2); + case 3: + return accMul(n1, n2); + case 4: + return (n2 != 0) ? accDiv(n1, n2) : null; + } +} \ No newline at end of file diff --git a/desktop.html b/desktop.html index a31beac..06f848d 100644 --- a/desktop.html +++ b/desktop.html @@ -40,6 +40,7 @@ + Windows 12 网页版 @@ -444,51 +445,27 @@
- - - 𝑥² - √𝑥 - C - + - 7 - 8 - 9 - - - 4 - 5 - 6 - × - 1 - 2 - 3 - ÷ - . - 0 - - - = + + 𝑥² + √𝑥 + C + + + 7 + 8 + 9 + - + 4 + 5 + 6 + × + 1 + 2 + 3 + ÷ + . + 0 + + =
@@ -1333,7 +1310,7 @@ setData('color2',$('div.app-color>div>input.theme2inp').val())">应用 - +

主题

设置 Windows 的主题 想要上传自己的主题?

@@ -1480,46 +1457,31 @@
- +
- 𝑥² - √𝑥 - C - + - 7 - 8 - 9 - - - 4 - 5 - 6 - × - 1 - 2 - 3 - ÷ - . - 0 + 𝑥² + √𝑥 + C + + + 7 + 8 + 9 + - + 4 + 5 + 6 + × + 1 + 2 + 3 + ÷ + . + 0 + onclick="if(!on_click_eq('calc-input')){clear_num('calc-input');shownotice('ZeroDivision')}/*使用了win12 API*/"> =
@@ -1820,7 +1782,7 @@ -
+
@@ -1852,7 +1814,7 @@

字体

- +
@@ -1930,7 +1892,7 @@
diff --git a/desktop.js b/desktop.js index cd2d395..9128c54 100644 --- a/desktop.js +++ b/desktop.js @@ -32,7 +32,7 @@ $('input,textarea,*[contenteditable=true]').on('contextmenu', (e) => { stop(e); return true; }); -let nomax = { 'calc': 0, 'notepad-fonts': 0, 'camera-notice': 0, 'winver': 0, 'run': 0 }; +let nomax = { 'calc': 0 /* 其实,计算器是可以最大化的...*/, 'notepad-fonts': 0, 'camera-notice': 0, 'winver': 0, 'run': 0 }; let nomin = { 'notepad-fonts': 0, 'camera-notice': 0, 'run': 0 }; let cms = { 'titbar': [ @@ -298,6 +298,8 @@ $('#cm>.foc').blur(() => { $(x).removeClass('show-begin'); }, 200); }); +let font_window=false; + // 下拉菜单 dps = { 'notepad.file': [ @@ -326,9 +328,15 @@ dps = { [' 插入斜体字', 'hidedp(true);$(\'#win-notepad>.text-box\')[0].innerHTML+=\'I\''], [' 插入加粗字', 'hidedp(true);$(\'#win-notepad>.text-box\')[0].innerHTML+=\'B\''], '
', - [' 字体', 'hidedp(true);showwin(\'notepad-fonts\');apps.notepadFonts.reset();'], + [' 字体', 'font_window=true;hidedp(true);showwin(\'notepad-fonts\');apps.notepadFonts.reset();'], ] } + +function playWindowsBackground(){ + var audio = new Audio("./media/Windows Background.wav") + audio.play() +} + let dpt = null, isOnDp = false; $('#dp')[0].onmouseover = () => { isOnDp = true }; $('#dp')[0].onmouseleave = () => { isOnDp = false; hidedp() }; @@ -462,6 +470,13 @@ let nts = { { type: 'cancel', text: '取消', js: 'closenotice();' } ] }, + 'ZeroDivision': {//计算器报错窗口 + cnt: `

错误

+

除数不得等于0

`, + btn: [ + { type: 'main', text: '好', js: 'closenotice();' }, + ] + }, 'widgets.monitor': { cnt: `

切换监视器类型

@@ -551,6 +566,7 @@ let apps = { cs.forEach(c => { if (c.type == 'dir') { $.get(c.url).then(cnt => { + $('#set-theme').html(''); cnt.forEach(cn => { if (cn.name == 'theme.json') { $.getJSON('https://tjy-gitnub.github.io/win12-theme/' + cn.path).then(inf => { @@ -597,7 +613,7 @@ let apps = { }, 300); }, run: (cmd) => { - if (cmd == 'cmd') { + if (cmd == 'cmd' || cmd == 'cmd.exe') { openapp('terminal'); } else if (cmd != '') { @@ -1770,18 +1786,7 @@ let apps = { }, calc: { init: () => { - $('#calc-input').val('0'); - }, - add: (arg) => { - if (arg >= 1 && arg <= 9 && $('#calc-input')[0].value == '0') { - $('#calc-input')[0].value = arg; - } - else if (arg == '0' && $('#calc-input')[0].value == '0') { - $('#calc-input')[0].value = arg; - } - else { - $('#calc-input')[0].value += arg; - } + document.getElementById('calc-input').innerHTML = "0"; } }, about: { @@ -2183,7 +2188,7 @@ Microsoft Windows [版本 12.0.39035.7324] }, reload: () => { if (wifiStatus == false) { - $('#win-edge>iframe.show').attr('src', './disconnected.html'); + $('#win-edge>iframe.show').attr('src', './disconnected' + (isDrak?'_dark':'') + '.html'); } else { $('#win-edge>iframe.show').attr('src', $('#win-edge>iframe.show').attr('src')); @@ -2206,7 +2211,7 @@ Microsoft Windows [版本 12.0.39035.7324] }, goto: (u) => { if (wifiStatus == false) { - $('#win-edge>iframe.show').attr('src', './disconnected.html'); + $('#win-edge>iframe.show').attr('src', './disconnected' + (isDrak?'_dark':'') + '.html'); apps.edge.rename(u); $('#win-edge>.tool>input.url').val(u); } @@ -2214,7 +2219,7 @@ Microsoft Windows [版本 12.0.39035.7324] // 6 if (!/^(((ht|f)tps?):\/\/)?([^!@#$%^&*?.\s-]([^!@#$%^&*?.\s]{0,63}[^!@#$%^&*?.\s])?\.)+[a-z]{2,6}\/?/.test(u)) { // 启用必应搜索 - $('#win-edge>iframe.show').attr('src', 'https://bing.com/search?q=' + u); + $('#win-edge>iframe.show').attr('src', 'https://bing.com/search?q=' + encodeURIComponent(u)/*encodeURIComponent 可以对搜索内容进行编码*/); apps.edge.rename(u); } // 检测网址是否带有http头 @@ -2275,19 +2280,8 @@ let widgets = { init: () => { null }, - add: (arg) => { - if (arg >= 1 && arg <= 9 && $('*:not(.template)>*>.wg.calc>.content>input')[0].value == '0') { - $('*:not(.template)>*>.wg.calc>.content>input')[0].value = arg; - } - else if (arg == '0' && $('*:not(.template)>*>.wg.calc>.content>input')[0].value == '0') { - $('*:not(.template)>*>.wg.calc>.content>input')[0].value = arg; - } - else { - $('*:not(.template)>*>.wg.calc>.content>input')[0].value += arg; - } - }, remove: () => { - null + document.getElementById('calc-input-widgets').value = "0"; } }, weather: { @@ -2562,6 +2556,8 @@ function loadtime() { $('.dock.date>.time').text(time); $('#datebox>.tit>.time').text(time); } +apps.setting.theme_get();//提前加载主题 + setInterval(loadtime, 1000); let d = new Date(); let today = new Date().getDate(); @@ -3031,6 +3027,8 @@ window.addEventListener('mouseup', e => { $('#desktop>.choose').css('width', 0); $('#desktop>.choose').css('height', 0); }) +let isDrak = false; + // 主题 function toggletheme() { $('.dock.theme').toggleClass('dk'); @@ -3038,12 +3036,26 @@ function toggletheme() { if ($(':root').hasClass('dark')) { $('.window.whiteboard>.titbar>p').text('Blackboard'); setData('theme', 'dark'); + isDrak = true; } else { $('.window.whiteboard>.titbar>p').text('Whiteboard'); setData('theme', 'light'); + isDrak = false; } } +const isDarkTheme = window.matchMedia("(prefers-color-scheme: dark)"); +if (isDarkTheme.matches) { //是深色 + $('.dock.theme').toggleClass('dk'); + $(':root').toggleClass('dark'); + $('.window.whiteboard>.titbar>p').text('Blackboard'); + localStorage.setItem('theme', 'dark'); + isDrak = true; +} else { // 不是深色 + $('.window.whiteboard>.titbar>p').text('Whiteboard'); + localStorage.setItem('theme', 'light'); +} + function saveDesktop() { localStorage.setItem('desktop', $('#desktop')[0].innerHTML); } @@ -3307,38 +3319,3 @@ if (!location.href.match(/((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.){3}(\d|[1-9]\d| function sendToSw(msg) { navigator.serviceWorker.controller.postMessage(msg); } - -function calculate() { - let matches = $('#calc-input')[0].value.match(/([-+]?\d*\.?\d+)\s*([-+×÷])\s*([-+]?\d*\.?\d+)/); - if (matches) { - let operand1 = matches[1]; - let operator = matches[2]; - let operand2 = matches[3]; - switch (operator) { - case '+': - $('#calc-input')[0].value = new Big(operand1).plus(operand2).toString(); - break - case '-': - $('#calc-input')[0].value = new Big(operand1).minus(operand2).toString(); - break - case '×': - case '*': - $('#calc-input')[0].value = new Big(operand1).times(operand2).toString(); - break - case '÷': - case '/': - $('#calc-input')[0].value = new Big(operand1).div(operand2).toString(); - break - } - } -} - -function calculateSquare() { - let num = new Big($('#calc-input')[0].value) - $('#calc-input')[0].value = num.times(num).toString() -} - -function calculateSquareRoot() { - let num = new Big($('#calc-input')[0].value) - $('#calc-input')[0].value = num.sqrt().toString() -} diff --git a/disconnected_dark.html b/disconnected_dark.html new file mode 100644 index 0000000..cb1bfbb --- /dev/null +++ b/disconnected_dark.html @@ -0,0 +1,90 @@ + + + + + + Windows 12 网页版 + + + +
+
+
你尚未连接
+
+

Web 因你而不同。让我们帮你重新联机!

+

请尝试:

+
    +
  • 检查网络电缆、调制解调器和路由器
  • +
  • 重新连接到无线网络
  • +
+

ERR_INTERNET_DISCONNECTED

+
+
+ + diff --git a/mainpage.html b/mainpage.html index 694f2f1..de8c592 100644 --- a/mainpage.html +++ b/mainpage.html @@ -77,7 +77,7 @@