<html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <!-- HTTP 1.1 --> <meta http-equiv="pragma" content="no-cache"> <!-- HTTP 1.0 --> <meta http-equiv="cache-control" content="no-cache"> <title>Ventoy2Disk</title> <!-- Tell the browser to be responsive to screen width --> <meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport"> <!-- Bootstrap 3.3.5 --> <link rel="stylesheet" href="static/bootstrap/css/bootstrap.min.css"> <!-- Font Awesome --> <link rel="stylesheet" href="static/css/font-awesome.min.css"> <!-- Ionicons --> <link rel="stylesheet" href="static/css/ionicons.min.css"> <!-- Theme style --> <link rel="stylesheet" href="static/AdminLTE/css/AdminLTE.min.css"> <!-- AdminLTE Skins. Choose a skin from the css/skins folder instead of downloading all of them to reduce the load. --> <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries --> <!-- WARNING: Respond.js doesn't work if you view the page via file:// --> <!--[if lt IE 9]> <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script> <![endif]--> <!-- ./wrapper --> <!-- jQuery 2.1.4 --> <script src="static/js/jQuery-2.1.4.min.js"></script> <!-- jquery validate --> <script src="static/js/jquery.validate.min.js"></script> <!-- Bootstrap 3.3.5 --> <script src="static/bootstrap/js/bootstrap.min.js"></script> <!-- AdminLTE App --> <script src="static/AdminLTE/js/app.min.js"></script> <script src="static/js/jquery.vtoy.alert.js"></script> <script src="static/js/vtoy.js"></script> <script src="static/js/languages.js"></script> <style type="text/css"> * { font-family: "Helvetica Neue", Helvetica, Arial, "PingFang SC", "Hiragino Sans GB", "Heiti SC", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif; } .modal { padding-top: 80px; } .treeview-menu a { margin-left: 20px; } span.vtoy_ver { display:inline-block; font-size:28px; font-weight:bold; color:red; width:60%; text-align:center; } span.vtoy_part { display:inline-block; font-size:14px; font-weight:bold; width:15%; text-align:right; } span.vtoy_secure { display:inline-block; font-size:20px; font-weight:bold; width:15%; color:#ea991f; text-align:center; visibility: hidden; } .noselect { -webkit-touch-callout: none; /* iOS Safari */ -webkit-user-select: none; /* Safari */ -khtml-user-select: none; /* Konqueror HTML */ -moz-user-select: none; /* Old versions of Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version, currently supported by Chrome, Opera and Firefox */ } span.select { visibility:hidden; color:green; } .dropdown-submenu { position: relative; } .dropdown-submenu>.dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 0 6px 6px 6px; -moz-border-radius: 0 6px 6px; border-radius: 0 6px 6px 6px; } .dropdown-submenu:hover>.dropdown-menu { display: block; } .dropdown-submenu>a:after { display: block; content: " "; float: right; width: 0; height: 0; border-color: transparent; border-style: solid; border-width: 5px 0 5px 5px; border-left-color: #ccc; margin-top: 5px; margin-right: -10px; } .dropdown-submenu:hover>a:after { border-left-color: #fff; } .dropdown-submenu.pull-left { float: none; } .dropdown-submenu.pull-left>.dropdown-menu { left: -100%; margin-left: 10px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } select.vtoyselect { -moz-appearance: none; -webkit-appearance: none; appearance: none; background-image: url("static/img/dropdown.png"); background-repeat: no-repeat; background-position: calc(100% - 7px) 50%; background-size: 2% auto; border-radius:3px; padding:0; padding-left:15px; } select.vtoyselect2 { -moz-appearance: none; -webkit-appearance: none; appearance: none; background-image: url("static/img/dropdown.png"); background-repeat: no-repeat; background-position: calc(100% - 7px) 50%; background-size: 10% auto; border-radius:3px; padding:0; padding-left:15px; } select:-moz-focusring { color: transparent; text-shadow: 0 0 0 #555; } </style> </head> <body style="overflow:hidden;"> <div class="wrapper" > <!-- Content Wrapper. Contains page content --> <div id='vtoy_main_div' style='width:540px; position:absolute;'> <div class="modal" id="vtoy_set_part_cfg_modal" > <div class="modal-dialog" id="vtoy_set_part_cfg_modal_dlg" style="position:absolute;"> <div class="modal-content"> <form id="vtoy_set_part_cfg_form" class="form-horizontal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> <h4 id='part_config_dlg_title'>Configuration</h4> </div> <div class="modal-body"> <div class="form-group"> <div class="col-sm-10 checkbox"> <label > <input type="checkbox" id="vtoy_preserve_space_checkbox" onclick="on_enable_preserve_space()"/> <span id="vtoy_preserve_space_tip" style="font-size:14px;font-weight:bold;">在磁盘最后保留一段空间</span> </label> </div> </div> <div class="form-group" style="width:520px;"> <div class="col-sm-6" style="float:left; width:350px;"> <input type="text" maxlength="14" class="form-control" id="vtoy_preserve_space" style="font-family: couriew new;font-size: 14px;"/> </div> <div class="col-sm-6" style="float:left; width:150px;"> <select id="vtoy_space_unit_dropbox" class="form-control valid vtoyselect2" aria-invalid="false"> <option value="0" selected="selected">GB</option> <option value="1">MB</option> </select> </div> </div> <hr/> <div class="form-group"> <div class="col-sm-10 checkbox"> <label > <input type="checkbox" id="vtoy_part_align_4kb"/> <span id="vtoy_part_4kb_align_tip" style="font-size:14px;font-weight:bold;">分区按照 4KB 对齐</span> </label> </div> </div> </div> <div class="modal-footer"> <button type="button" id='vtoy_modal_btn_ok' class="btn btn-primary btn-flat">确定</button> <button type="button" id='vtoy_modal_btn_cancel' class="btn btn-default btn-flat">取消</button> </div> </form> </div> </div> </div> <!-- Main content --> <section class="content" id="vtoy-content"> <div > <div class="row" style="margin-top:-10px; width:535px; font-family:courier new; font-weight:bold;align:center;text-align:center;"> <ul class="nav nav-tabs" style="margin-left:5px;"> <li class="dropdown"> <a class="dropdown-toggle noselect" id='vtoy_option' data-toggle="dropdown" aria-expanded="false" style="cursor: pointer;">配置选项 <span class="caret"></span></a> <ul class="dropdown-menu noselect"> <li role="presentation"><a role="menuitem" onclick="on_secure_boot()"><span id='vtoy_check_secure_boot' class="fa fa-check select"></span><span id='vtoy_menu_secure_boot'>安全启动支持</span><span class="fa fa-check select"></span></a></li> <li class="dropdown-submenu"> <a id='vtoy_menu_secure_boot'><span class="fa fa-check select"></span><span id='vtoy_menu_part_style'>分区类型</span><span class="fa fa-check select"></span></a> <ul class="dropdown-menu"> <li><a onclick="on_select_mbr_click()"><span id='vtoy_mbr_check' class="fa fa-check select"></span> MBR</a></li> <li><a onclick="on_select_gpt_click()"><span id='vtoy_gpt_check' class="fa fa-check select"></span> GPT</a></li> </ul> </li> <li role="presentation"><a role="menuitem" onclick="on_config_partition()"><span class="fa fa-check select"></span><span id='vtoy_menu_part_config'>分区设置</span><span class="fa fa-check select"></span></a></li> <li role="presentation"><a role="menuitem" onclick="on_clean_ventoy()"><span class="fa fa-check select"></span><span id='vtoy_menu_clean_ventoy'>清除 Ventoy</span><span class="fa fa-check select"></span></a></li> <li role="presentation"><a role="menuitem" onclick="on_show_all_device()"><span id='vtoy_check_show_all_dev' class="fa fa-check select"></span><span id='vtoy_menu_show_all_device'>显示所有设备</span><span class="fa fa-check select"></span></a></li> </ul> </li> <li class="dropdown"> <a class="dropdown-toggle noselect" id='vtoy_language' data-toggle="dropdown" aria-expanded="false" style="cursor: pointer;;">Languages <span class="caret"></span></a> <ul class="dropdown-menu pull-left noselect" style="height:300px;overflow:scroll" id='vtoy_language_dropbox'> </ul> </li> </ul> </div> <div class="box-body" style=" font-weight:bold; " > <div class="row" style="width:520px;"> <div style="float:left; width:480px;"> <span id="vtoy_dev_title" style="font-weight:bold; margin-left:2px;">设备</span> </div> <div style="float:left; width:480px; margin-top:2px;" > <select id="vtoy_dev_list" class="form-control valid vtoyselect" aria-invalid="false"> </select> </div> <div style="float:right;"> <img src="static/img/refresh.ico" alt="" id="refresh_dev_img" style="cursor: pointer;"></img> </div> </div> <div class="row" style="width:520px;margin-top:20px;"> <div class="box box-primary box-solid" style="float:left; width:250px;"> <div class="box-header with-border" style="text-align:center;"> <h3 class="box-title" id="vtoy_local_ver_title" style="font-size: 14px;font-weight: bold;" >安装包内 Ventoy 版本</h3> </div> <div class="box-body no-padding" style="height:40px;"> <span class="vtoy_secure fa fa-lock" id="vtoy_select_secure_icon"></span> <span class="vtoy_ver" id="vtoy_local_ver"></span> <span class="vtoy_part" id="vtoy_local_part_style"></span> </div> </div> <div class="box box-primary box-solid" style="float:right; width:250px;"> <div class="box-header with-border" style="text-align:center;"> <h3 class="box-title" id="vtoy_dev_ver_title" style="font-size: 14px;font-weight: bold;" >设备内部 Ventoy 版本</h3> </div> <div class="box-body no-padding" style="height:40px;"> <span class="vtoy_secure fa fa-lock" id="vtoy_dev_secure_icon"></span> <span class="vtoy_ver" id="vtoy_dev_ver"></span> <span class="vtoy_part" id="vtoy_dev_part_style"></span> </div> </div> </div> <div class="row" style="width:520px;"> <span id="vtoy_status_title" style="font-weight:bold; margin-left:2px;">状态 - 准备就绪</span> <div class="progress"> <div id='vtoy_progress_bar' class="progress-bar progress-bar-success progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width: 0%"> </div> </div> </div> <div class="row" style="width:520px;margin-top:2px;"> <button id="VtoyBtnInstall" onclick="on_vtoy_install()" class="btn btn-default" style="font-weight:bold; width:150px;margin-left:70px;">安装</button> <button id="VtoyBtnUpdate" onclick="on_vtoy_update()" class="btn btn-default" style="font-weight:bold; width:150px;margin-left:70px;">升级</button> </div> </div> </div> </section> <!-- /.content --> </div> <!-- /.content-wrapper --> </div> <script type="text/javascript"> var vtoy_in_progress = false; var vtoy_app_width = 550; var vtoy_app_height = 400; var vtoy_cur_language; var vtoy_cur_lang_index = -1; var vtoy_client_language; var vtoy_selected_part_style = 0; var vtoy_current_token = 'xx'; var vtoy_cur_dev_list; var vtoy_cur_process_disk_name; var vtoy_chrome_app_mode = (window.location.href.indexOf('chrome-app') >= 0) ? 1 : 0; function sort_language_list() { var tmp; for (var i = 0; i < vtoy_language_data.length; i++) { for (var j = i + 1; j < vtoy_language_data.length; j++) { if (vtoy_language_data[i].name === 'Chinese Simplified (简体中文)') { break; } else if (vtoy_language_data[j].name === 'Chinese Simplified (简体中文)' || vtoy_language_data[i].name > vtoy_language_data[j].name) { tmp = vtoy_language_data[i]; vtoy_language_data[i] = vtoy_language_data[j]; vtoy_language_data[j] = tmp; } } } } function fill_language_list() { var html; var dropbox = $('ul#vtoy_language_dropbox'); for (var i = 0; i < vtoy_language_data.length; i++) { html = '<li role="presentation"><a onclick="on_language_click(' + i + ')" role="menuitem" tabindex="' + i + '">' + '<span id="vtoy_check_' + i + '" class="fa fa-check" style="visibility:hidden;color:green;" ></span> ' + vtoy_language_data[i].name + '</a></li>'; dropbox.append(html); } } function update_language(lastIndex, newIndex) { if (lastIndex >= 0) { $('span#vtoy_check_' + lastIndex).css("visibility","hidden"); } $('span#vtoy_check_' + newIndex).css("visibility","visible"); vtoy_cur_lang_index = newIndex; $('a#vtoy_option').html(vtoy_cur_language.STR_MENU_OPTION + ' <span class="caret"></span>'); $('h3#vtoy_local_ver_title').text(vtoy_cur_language.STR_LOCAL_VER); $('h3#vtoy_dev_ver_title').text(vtoy_cur_language.STR_DISK_VER); $('span#vtoy_status_title').text(vtoy_cur_language.STR_STATUS); if ($('#vtoy_preserve_space_checkbox').is(':checked')) { var valx = $('#vtoy_preserve_space').val(); if ($('#vtoy_space_unit_dropbox').val() > 0) { $('span#vtoy_dev_title').text(vtoy_cur_language.STR_DEVICE + ' [ -' + valx + 'MB ]'); } else { $('span#vtoy_dev_title').text(vtoy_cur_language.STR_DEVICE + ' [ -' + valx + 'GB ]'); } } else { $('span#vtoy_dev_title').text(vtoy_cur_language.STR_DEVICE); } $('span#vtoy_menu_secure_boot').text(vtoy_cur_language.STR_MENU_SECURE_BOOT); $('span#vtoy_menu_part_style').text(vtoy_cur_language.STR_MENU_PART_STYLE); $('span#vtoy_menu_part_config').text(vtoy_cur_language.STR_MENU_PART_CFG); $('span#vtoy_menu_clean_ventoy').text(vtoy_cur_language.STR_MENU_CLEAR); $('span#vtoy_menu_show_all_device').text(vtoy_cur_language.STR_SHOW_ALL_DEV); $('span#vtoy_preserve_space_tip').text(vtoy_cur_language.STR_PRESERVE_SPACE); $('span#vtoy_part_4kb_align_tip').text(vtoy_cur_language.STR_PART_ALIGN_4KB); $('button#VtoyBtnInstall').text(vtoy_cur_language.STR_INSTALL); $('button#VtoyBtnUpdate').text(vtoy_cur_language.STR_UPDATE); $('button#vtoy_modal_btn_ok').text(vtoy_cur_language.STR_BTN_OK); $('button#vtoy_modal_btn_cancel').text(vtoy_cur_language.STR_BTN_CANCEL); $('h4#part_config_dlg_title').text(vtoy_cur_language.STR_MENU_PART_CFG); } function select_language_by_name(name, sendback) { for (var j = 0; j < vtoy_language_data.length; j++) { if (vtoy_language_data[j].name.indexOf(name) == 0) { vtoy_cur_language = vtoy_language_data[j]; update_language(vtoy_cur_lang_index, j); if (sendback > 0) { var idx = name.indexOf(' ('); if (idx >= 0) { callVtoy({method : 'sel_language', token:vtoy_current_token, language:name.substr(0, idx)}); } else { callVtoy({method : 'sel_language', token:vtoy_current_token, language:name}); } } break; } } } function select_language_by_index(index, sendback) { if (index < vtoy_language_data.length) { vtoy_cur_language = vtoy_language_data[index]; update_language(vtoy_cur_lang_index, index); if (sendback > 0) { var idx = vtoy_cur_language.name.indexOf(' ('); if (idx >= 0) { callVtoy({method : 'sel_language', token:vtoy_current_token, language:vtoy_cur_language.name.substr(0, idx)}); } else { callVtoy({method : 'sel_language', token:vtoy_current_token, language:vtoy_cur_language.name}); } } } } function on_language_click(index) { if (index != vtoy_cur_lang_index) { select_language_by_index(index, 1); } } function on_select_mbr() { vtoy_selected_part_style = 0; $('span#vtoy_mbr_check').css("visibility","visible"); $('span#vtoy_gpt_check').css("visibility","hidden"); $('span#vtoy_local_part_style').text('MBR'); } function on_select_mbr_click() { on_select_mbr(); callVtoy({method : 'sel_partstyle', token:vtoy_current_token, partstyle:0}); } function on_select_gpt() { vtoy_selected_part_style = 1; $('span#vtoy_mbr_check').css("visibility","hidden"); $('span#vtoy_gpt_check').css("visibility","visible"); $('span#vtoy_local_part_style').text('GPT'); } function on_select_gpt_click() { on_select_gpt(); callVtoy({method : 'sel_partstyle', token:vtoy_current_token, partstyle:1}); } function secure_boot_check(secure) { if (secure > 0) { $('span#vtoy_check_secure_boot').css("visibility","visible"); $('span#vtoy_select_secure_icon').css("visibility","visible"); } else { $('span#vtoy_check_secure_boot').css("visibility","hidden"); $('span#vtoy_select_secure_icon').css("visibility","hidden"); } } function on_secure_boot() { var secure; if ($('span#vtoy_check_secure_boot').css("visibility") === 'visible') { secure = 1; } else { secure = 0; } secure_boot_check(1 - secure); } function on_show_all_device() { if ($('span#vtoy_check_show_all_dev').css("visibility") === 'visible') { $('span#vtoy_check_show_all_dev').css("visibility", "hidden"); } else { $('span#vtoy_check_show_all_dev').css("visibility", "visible"); } get_and_fill_dev_list(); } var vtoy_part_align_4kb_tmp; var vtoy_preserve_space_checkbox_tmp; var vtoy_preserve_space_tmp; var vtoy_space_unit_dropbox_tmp; function on_config_partition() { if (vtoy_chrome_app_mode) { $("#vtoy_set_part_cfg_modal_dlg").css("width", "520px"); $("#vtoy_set_part_cfg_modal_dlg").css("margin-top", "-30px"); } else { $("#vtoy_set_part_cfg_modal_dlg").css("width", "540px"); if (document.body.clientWidth > 550) { $("#vtoy_set_part_cfg_modal_dlg").css("left", (document.body.clientWidth - 550) / 2); } if (document.body.clientHeight > 400) { $("#vtoy_set_part_cfg_modal_dlg").css("top", (document.body.clientHeight - 400) / 2); } } vtoy_part_align_4kb_tmp = $('#vtoy_part_align_4kb').prop("checked"); vtoy_preserve_space_checkbox_tmp = $('#vtoy_preserve_space_checkbox').prop("checked"); vtoy_preserve_space_tmp = $('#vtoy_preserve_space').val(); vtoy_space_unit_dropbox_tmp = $('#vtoy_space_unit_dropbox').val(); $('#vtoy_set_part_cfg_modal').modal({backdrop: 'static', keyboard: false}); } $("#vtoy_modal_btn_ok").click(function(){ if ($('#vtoy_preserve_space_checkbox').is(':checked')) { var valx = $('#vtoy_preserve_space').val(); if (valx.length > 14) { ventoy_display_alert('error', vtoy_cur_language.STR_SPACE_VAL_INVALID); return; } var regPat = /^\d+$/; if (!(regPat.test(valx))) { ventoy_display_alert('error', vtoy_cur_language.STR_SPACE_VAL_INVALID); return; } if ($('#vtoy_space_unit_dropbox').val() > 0) { $('span#vtoy_dev_title').text(vtoy_cur_language.STR_DEVICE + ' [ -' + valx + 'MB ]'); } else { $('span#vtoy_dev_title').text(vtoy_cur_language.STR_DEVICE + ' [ -' + valx + 'GB ]'); } } else { $('span#vtoy_dev_title').text(vtoy_cur_language.STR_DEVICE); } $("#vtoy_set_part_cfg_modal").modal('hide'); }); $("#vtoy_modal_btn_cancel").click(function(){ $("#vtoy_set_part_cfg_modal").modal('hide'); $('#vtoy_part_align_4kb').prop("checked", vtoy_part_align_4kb_tmp); $('#vtoy_preserve_space_checkbox').prop("checked", vtoy_preserve_space_checkbox_tmp); $('#vtoy_preserve_space').val(vtoy_preserve_space_tmp); $('#vtoy_space_unit_dropbox').val(vtoy_space_unit_dropbox_tmp); }); function on_enable_preserve_space() { if ($('#vtoy_preserve_space_checkbox').is(':checked')) { $('#vtoy_preserve_space').attr("disabled",false); $('#vtoy_space_unit_dropbox').attr("disabled",false); } else { $('#vtoy_preserve_space').attr("disabled",true); $('#vtoy_space_unit_dropbox').attr("disabled",true); } } function ResizeWindow() { //console.log(window.screen.availWidth + ' [x1] ' + window.screen.availHeight); //console.log(vtoy_app_width + ' [x2] ' + vtoy_app_height); //console.log((window.screen.availWidth - vtoy_app_width) / 2 + ' [x3] ' + (window.screen.availHeight - vtoy_app_height) / 2); window.onresize = function() { }; window.resizeTo(vtoy_app_width, vtoy_app_height); window.moveTo((window.screen.availWidth - vtoy_app_width) / 2, (window.screen.availHeight - vtoy_app_height) / 2); window.onresize = ResizeWindow; } function MoveMainDivToCenter() { $('#vtoy_main_div').css("left", (document.body.clientWidth - 550) / 2); $('#vtoy_main_div').css("top",(document.body.clientHeight - 400) / 2); } // disable F5 function disableF5(e) { if ((e.which || e.keyCode) == 116) { e.preventDefault(); }; } function on_dev_sel_change() { var index = $("#vtoy_dev_list").val(); $('span#vtoy_dev_secure_icon').css("visibility","hidden"); if (vtoy_cur_dev_list.length <= 0 || index < 0 || index >= vtoy_cur_dev_list.length) { return; } if (vtoy_cur_dev_list[index].vtoy_valid > 0) { $('span#vtoy_dev_ver').text(vtoy_cur_dev_list[index].vtoy_ver); $('span#vtoy_dev_part_style').text(vtoy_cur_dev_list[index].vtoy_partstyle ? 'GPT' : 'MBR'); if (vtoy_cur_dev_list[index].vtoy_secure_boot) { $('span#vtoy_dev_secure_icon').css("visibility","visible"); } secure_boot_check(vtoy_cur_dev_list[index].vtoy_secure_boot); $('button#VtoyBtnUpdate').prop("disabled", false); } else { $('span#vtoy_dev_ver').text(''); $('span#vtoy_dev_part_style').text(''); $('button#VtoyBtnUpdate').prop("disabled", true); } } $("#vtoy_dev_list").change(on_dev_sel_change); function ventoy_display_alert(type, vmsg) { var titlestr; var msgstr; var message; if (type === 'error') { titlestr = '<span class="fa fa-minus-circle" style="color:#dd4b39; font-weight:bold;"> ' + vtoy_cur_language.STR_ERROR + '</span>'; } else if (type === 'warning') { titlestr = '<span class="fa fa-warning" style="color:#f39c12; font-weight:bold;"> ' + vtoy_cur_language.STR_WARNING + '</span>'; } else { titlestr = '<span class="fa fa-check-circle" style="color:green; font-weight:bold;"> ' + vtoy_cur_language.STR_INFO + '</span>'; } msgstr = '<span style="font-size:14px; font-weight:bold;"> ' + vmsg + '</span>'; message = msgstr.replace("#@", "<br/>"); Modal.alert({title:titlestr, msg:message, btnok:vtoy_cur_language.STR_BTN_OK, btncl:vtoy_cur_language.STR_BTN_CANCEL }); } function set_progress_bar(percent) { var per = percent + '%'; $('#vtoy_progress_bar').css('width', per); if (percent === 0) { $('span#vtoy_status_title').text(vtoy_cur_language.STR_STATUS); } else { var status = vtoy_cur_language.STR_STATUS; var idx = status.indexOf('- '); if (idx >= 0) { $('span#vtoy_status_title').text(status.substr(0, idx + 2) + per); } } } function progressDisableItem(in_progress) { $('button#VtoyBtnInstall').prop("disabled", in_progress); $('button#VtoyBtnUpdate').prop("disabled", in_progress); } function queryProgress(op) { callVtoySync({ method : 'get_percent', token : vtoy_current_token }, function(data) { if (data.result === 'success') { set_progress_bar(data.percent); if (data.percent === 100) { var titlestr = '<span class="fa fa-check-circle" style="color:green; font-weight:bold;"> ' + vtoy_cur_language.STR_INFO + '</span>'; var msgstr; if (op === 1) { msgstr = '<span style="font-size:14px; font-weight:bold;"> ' + vtoy_cur_language.STR_INSTALL_SUCCESS + '</span>'; } else { msgstr = '<span style="font-size:14px; font-weight:bold;"> ' + vtoy_cur_language.STR_UPDATE_SUCCESS + '</span>'; } var message = msgstr.replace("#@", "<br/>"); callVtoySync({ method : 'refresh_device', token : vtoy_current_token }, function(data) { get_and_fill_dev_list(); for (var i = 0; i < vtoy_cur_dev_list.length; i++) { if (vtoy_cur_dev_list[i].name === vtoy_cur_process_disk_name) { $("#vtoy_dev_list").val(i); on_dev_sel_change(); break; } } }); Modal.alert({title:titlestr, msg:message, btnok:vtoy_cur_language.STR_BTN_OK }).on(function(e) { vtoy_in_progress = false; progressDisableItem(vtoy_in_progress); set_progress_bar(0); }); } else { setTimeout(function() { queryProgress(op); }, 300); } } else { if (data.result === 'mbr2tb') { ventoy_display_alert('error', vtoy_cur_language.STR_DISK_2TB_MBR_ERROR); } else if (data.result === 'reserve_invalid') { ventoy_display_alert('error', vtoy_cur_language.STR_SPACE_VAL_INVALID); } else { ventoy_display_alert('error', (op === 1) ? vtoy_cur_language.STR_INSTALL_FAILED : vtoy_cur_language.STR_UPDATE_FAILED); } vtoy_in_progress = false; progressDisableItem(vtoy_in_progress); set_progress_bar(0); } }); } function install_ventoy(index, reservesize) { var secureboot; var curDev = vtoy_cur_dev_list[index]; var align = $('#vtoy_part_align_4kb').prop("checked"); vtoy_cur_process_disk_name = curDev.name; if ($('span#vtoy_check_secure_boot').css("visibility") === 'visible') { secureboot = 1; } else { secureboot = 0; } callVtoySync({ method : 'install', token : vtoy_current_token, disk : curDev.name, partstyle : vtoy_selected_part_style, secure_boot : secureboot, align_4kb : align ? 1 : 0, reserve_space : reservesize + '' }, function(data) { if (data.result === 'success') { vtoy_in_progress = true; progressDisableItem(vtoy_in_progress); queryProgress(1); } else { ventoy_display_alert('error', vtoy_cur_language.STR_INSTALL_FAILED); } }); } function on_vtoy_install() { var model; var reserve; var titlestr = '<span class="fa fa-warning" style="color:#f39c12; font-weight:bold;"> ' + vtoy_cur_language.STR_WARNING + '</span>'; var msgstr1 = vtoy_cur_language.STR_INSTALL_TIP.replace("#@", "<br/>"); var msgstr2 = vtoy_cur_language.STR_INSTALL_TIP2.replace("#@", "<br/>"); var index = $("#vtoy_dev_list").val(); if (vtoy_cur_dev_list.length <= 0 || index < 0 || index >= vtoy_cur_dev_list.length) { return; } if (vtoy_in_progress) { return; } if ($('#vtoy_preserve_space_checkbox').is(':checked')) { var valx = $('#vtoy_preserve_space').val(); if (valx.length > 14) { ventoy_display_alert('error', vtoy_cur_language.STR_SPACE_VAL_INVALID); return; } if (valx > 0) { if ($('#vtoy_space_unit_dropbox').val() > 0) { reserve = valx * 1024 * 1024; } else { reserve = valx * 1024 * 1024 * 1024; } } } else { reserve = 0; } var curDev = vtoy_cur_dev_list[index]; model = curDev.name + ' [' + curDev.size + '] ' + curDev.model + '<br/>'; var msgstrex1 = '<span style="font-size:14px; font-weight:bold;"> ' + model + msgstr1 + '</span>'; var msgstrex2 = '<span style="font-size:14px; font-weight:bold; color:#f39c12;"> ' + model + msgstr2 + '</span>'; Modal.confirm({title:titlestr, msg:msgstrex1, btnok:vtoy_cur_language.STR_BTN_OK, btncl:vtoy_cur_language.STR_BTN_CANCEL }).on(function(e) { if (e) { Modal.confirm({title:titlestr, msg:msgstrex2, btnok:vtoy_cur_language.STR_BTN_OK, btncl:vtoy_cur_language.STR_BTN_CANCEL }).on(function(e1) { if (e1) { install_ventoy(index, reserve); } }); } }); } function update_ventoy(index) { var secureboot; var curDev = vtoy_cur_dev_list[index]; vtoy_cur_process_disk_name = curDev.name; if ($('span#vtoy_check_secure_boot').css("visibility") === 'visible') { secureboot = 1; } else { secureboot = 0; } callVtoySync({ method : 'update', token : vtoy_current_token, disk : curDev.name, secure_boot : secureboot }, function(data) { if (data.result === 'success') { vtoy_in_progress = true; progressDisableItem(vtoy_in_progress); queryProgress(2); } else { ventoy_display_alert('error', vtoy_cur_language.STR_UPDATE_FAILED); } }); } function on_vtoy_update() { var model; var reserve; var titlestr = '<span class="fa fa-info" style="color:green; font-weight:bold;"> ' + vtoy_cur_language.STR_INFO + '</span>'; var msgstr1 = vtoy_cur_language.STR_UPDATE_TIP.replace("#@", "<br/>"); var index = $("#vtoy_dev_list").val(); if (vtoy_cur_dev_list.length <= 0 || index < 0 || index >= vtoy_cur_dev_list.length) { return; } if (vtoy_in_progress) { return; } var curDev = vtoy_cur_dev_list[index]; model = curDev.name + ' [' + curDev.size + '] ' + curDev.model + '<br/>'; var msgstrex1 = '<span style="font-size:14px; font-weight:bold;"> ' + model + msgstr1 + '</span>'; Modal.confirm({title:titlestr, msg:msgstrex1, btnok:vtoy_cur_language.STR_BTN_OK, btncl:vtoy_cur_language.STR_BTN_CANCEL }).on(function(e) { if (e) { update_ventoy(index); } }); } function on_clean_ventoy() { var model; var reserve; var titlestr = '<span class="fa fa-warning" style="color:#f39c12; font-weight:bold;"> ' + vtoy_cur_language.STR_WARNING + '</span>'; var msgstr1 = vtoy_cur_language.STR_INSTALL_TIP.replace("#@", "<br/>"); var msgstr2 = vtoy_cur_language.STR_INSTALL_TIP2.replace("#@", "<br/>"); var index = $("#vtoy_dev_list").val(); if (vtoy_cur_dev_list.length <= 0 || index < 0 || index >= vtoy_cur_dev_list.length) { return; } if (vtoy_in_progress) { return; } var curDev = vtoy_cur_dev_list[index]; model = curDev.name + ' [' + curDev.size + '] ' + curDev.model + '<br/>'; var msgstrex1 = '<span style="font-size:14px; font-weight:bold;"> ' + model + msgstr1 + '</span>'; var msgstrex2 = '<span style="font-size:14px; font-weight:bold; color:#f39c12;"> ' + model + msgstr2 + '</span>'; Modal.confirm({title:titlestr, msg:msgstrex1, btnok:vtoy_cur_language.STR_BTN_OK, btncl:vtoy_cur_language.STR_BTN_CANCEL }).on(function(e) { if (e) { Modal.confirm({title:titlestr, msg:msgstrex2, btnok:vtoy_cur_language.STR_BTN_OK, btncl:vtoy_cur_language.STR_BTN_CANCEL }).on(function(e1) { if (e1) { callVtoySync({ method : 'clean', token : vtoy_current_token, disk : curDev.name }, function(data) { if (data.result === 'success') { ventoy_display_alert('success', vtoy_cur_language.STR_CLEAR_SUCCESS); callVtoySync({ method : 'refresh_device', token : vtoy_current_token }, function(data) { get_and_fill_dev_list(); for (var i = 0; i < vtoy_cur_dev_list.length; i++) { if (vtoy_cur_dev_list[i].name === curDev.name) { $("#vtoy_dev_list").val(i); on_dev_sel_change(); break; } } }); } else { ventoy_display_alert('error', vtoy_cur_language.STR_CLEAR_FAILED); } }); } }); } }); } function fill_dev_list_dropbox() { var model; $('#vtoy_dev_list').empty(); $('span#vtoy_dev_secure_icon').css("visibility","hidden"); for (var i = 0; i < vtoy_cur_dev_list.length; i++) { model = vtoy_cur_dev_list[i].name + ' [' + vtoy_cur_dev_list[i].size + '] ' + vtoy_cur_dev_list[i].model; $("#vtoy_dev_list").append("<option value='" + i + "'>" + model + "</option>"); } $('span#vtoy_dev_ver').text(''); $('span#vtoy_dev_part_style').text(''); if (vtoy_cur_dev_list.length > 0) { if (vtoy_cur_dev_list[0].vtoy_valid > 0) { $('span#vtoy_dev_ver').text(vtoy_cur_dev_list[0].vtoy_ver); $('span#vtoy_dev_part_style').text(vtoy_cur_dev_list[0].vtoy_partstyle ? 'GPT' : 'MBR'); if (vtoy_cur_dev_list[0].vtoy_secure_boot) { $('span#vtoy_dev_secure_icon').css("visibility","visible"); } secure_boot_check(vtoy_cur_dev_list[0].vtoy_secure_boot); $('button#VtoyBtnUpdate').prop("disabled", false); } else { $('button#VtoyBtnUpdate').prop("disabled", true); } $('button#VtoyBtnInstall').prop("disabled", false); } else { $('button#VtoyBtnInstall').prop("disabled", true); $('button#VtoyBtnUpdate').prop("disabled", true); } } function get_and_fill_dev_list() { var showall = 0; if ($('span#vtoy_check_show_all_dev').css("visibility") === 'visible') { showall = 1; } callVtoySync({ method : 'get_dev_list', alldev : showall, token : vtoy_current_token }, function(data) { vtoy_cur_dev_list = data.list; fill_dev_list_dropbox(); }); } function on_click_refresh_device() { if (vtoy_in_progress === true) { return; } callVtoySync({ method : 'refresh_device', token : vtoy_current_token }, function(data) { get_and_fill_dev_list(); }); } //SCRIPT_DEL_THIS $(document).on("keydown", disableF5); //SCRIPT_DEL_THIS $(document).on("contextmenu",function(e){ return false; }); $('#refresh_dev_img').click(on_click_refresh_device); $('#vtoy_part_align_4kb').prop("checked", true); if (vtoy_chrome_app_mode) { ResizeWindow(); } else { $('#vtoy_main_div').css("border", '2px solid #f4f4f4'); window.onresize = function() { MoveMainDivToCenter(); } MoveMainDivToCenter(); } sort_language_list(); fill_language_list(); if (navigator.language) { vtoy_client_language = navigator.language.toLowerCase(); } else { vtoy_client_language = navigator.browserLanguage.toLowerCase(); } if (vtoy_client_language === 'zh-cn') { select_language_by_index(0, 0); } else { select_language_by_name('English (English)', 0); } on_select_mbr(); secure_boot_check(0); on_enable_preserve_space(); callVtoySync({ method : 'sysinfo' }, function(data) { vtoy_current_token = data.token; if (data.language.length > 0) { select_language_by_name(data.language, 0); } if (data.busy === true) { vtoy_cur_process_disk_name = data.process_disk; vtoy_in_progress = true; } else { vtoy_in_progress = false; } if (data.partstyle == 1) { on_select_gpt(); } else { on_select_mbr(); } $('span#vtoy_local_ver').text(data.ventoy_ver); callVtoySync({ method : 'refresh_device', token : vtoy_current_token }, function(data) { get_and_fill_dev_list(); }); if (vtoy_in_progress) { for (var i = 0; i < vtoy_cur_dev_list.length; i++) { if (vtoy_cur_dev_list[i].name === vtoy_cur_process_disk_name) { $("#vtoy_dev_list").val(i); on_dev_sel_change(); break; } } progressDisableItem(vtoy_in_progress); if (data.process_type === 'install') { queryProgress(1); } else if (data.process_type === 'update') { queryProgress(2); } } }); </script> </body> </html>