mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2025-12-12 09:10:30 +08:00
fixed msd parts api
This commit is contained in:
parent
097dbc517d
commit
84563553b8
@ -152,7 +152,10 @@ class _Part(_PartDc):
|
|||||||
|
|
||||||
async def _reload(self) -> None: # Only for Storage()
|
async def _reload(self) -> None: # Only for Storage()
|
||||||
st = await aiotools.run_async(os.statvfs, self.__path)
|
st = await aiotools.run_async(os.statvfs, self.__path)
|
||||||
writable = await aiofiles.os.access(self.__path, os.W_OK) # type: ignore
|
if self.name == "":
|
||||||
|
writable = True
|
||||||
|
else:
|
||||||
|
writable = await aiofiles.os.access(self.__path, os.W_OK) # type: ignore
|
||||||
object.__setattr__(self, "size", st.f_blocks * st.f_frsize)
|
object.__setattr__(self, "size", st.f_blocks * st.f_frsize)
|
||||||
object.__setattr__(self, "free", st.f_bavail * st.f_frsize)
|
object.__setattr__(self, "free", st.f_bavail * st.f_frsize)
|
||||||
object.__setattr__(self, "writable", writable)
|
object.__setattr__(self, "writable", writable)
|
||||||
|
|||||||
@ -198,12 +198,9 @@ export function Hid(__getGeometry, __recorder) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
self.setKeymaps = function(state) {
|
self.setKeymaps = function(state) {
|
||||||
let selected = tools.storage.get("hid.pak.keymap", state.keymaps["default"]);
|
let el = $("hid-pak-keymap-selector");
|
||||||
let html = "";
|
tools.selector.setValues(el, state.keymaps.available);
|
||||||
for (let variant of state.keymaps.available) {
|
tools.selector.setSelectedValue(el, tools.storage.get("hid.pak.keymap", state.keymaps["default"]));
|
||||||
html += `<option value=${variant} ${variant === selected ? "selected" : ""}>${variant}</option>`;
|
|
||||||
}
|
|
||||||
$("hid-pak-keymap-selector").innerHTML = html;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var __releaseAll = function() {
|
var __releaseAll = function() {
|
||||||
|
|||||||
@ -38,7 +38,9 @@ export function Msd() {
|
|||||||
var __init__ = function() {
|
var __init__ = function() {
|
||||||
$("msd-led").title = "Unknown state";
|
$("msd-led").title = "Unknown state";
|
||||||
|
|
||||||
|
tools.selector.addOption($("msd-image-selector"), "\u2500 Not selected \u2500", "");
|
||||||
$("msd-image-selector").onchange = __selectImage;
|
$("msd-image-selector").onchange = __selectImage;
|
||||||
|
|
||||||
tools.el.setOnClick($("msd-download-button"), __clickDownloadButton);
|
tools.el.setOnClick($("msd-download-button"), __clickDownloadButton);
|
||||||
tools.el.setOnClick($("msd-remove-button"), __clickRemoveButton);
|
tools.el.setOnClick($("msd-remove-button"), __clickRemoveButton);
|
||||||
|
|
||||||
@ -336,12 +338,17 @@ export function Msd() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var __applyStateImageSelector = function() {
|
var __applyStateImageSelector = function() {
|
||||||
|
let s = __state;
|
||||||
let el = $("msd-image-selector");
|
let el = $("msd-image-selector");
|
||||||
if (!__prepareSelector(el, "Not selected")) {
|
if (!(s && s.online)) {
|
||||||
|
el.options.length = 1; // Cleanup
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (s.storage.uploading || s.storage.downloading) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
el.options.length = 1;
|
||||||
|
|
||||||
let s = __state;
|
|
||||||
let selected = "";
|
let selected = "";
|
||||||
|
|
||||||
for (let name of Object.keys(s.storage.images).sort()) {
|
for (let name of Object.keys(s.storage.images).sort()) {
|
||||||
@ -363,42 +370,26 @@ export function Msd() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
var __makeImageSelectorInfo = function(image) {
|
var __makeImageSelectorInfo = function(image) {
|
||||||
let title = `\xA0\xA0\xA0\xA0\xA0\u2570 ${tools.formatSize(image.size)}`;
|
let info = `\xA0\xA0\xA0\xA0\xA0\u2570 ${tools.formatSize(image.size)}`;
|
||||||
title += (image.complete ? "" : ", broken");
|
info += (image.complete ? "" : ", broken");
|
||||||
if (image.in_storage !== undefined && !image.in_storage) {
|
if (image.in_storage !== undefined && !image.in_storage) {
|
||||||
title += ", out of storage";
|
info += ", out of storage";
|
||||||
}
|
}
|
||||||
let dt = new Date(image.mod_ts * 1000);
|
let dt = new Date(image.mod_ts * 1000);
|
||||||
dt = new Date(dt.getTime() - (dt.getTimezoneOffset() * 60000));
|
dt = new Date(dt.getTime() - (dt.getTimezoneOffset() * 60000));
|
||||||
title += " \u2500 " + dt.toISOString().slice(0, -8).replaceAll("-", ".").replace("T", "-");
|
info += " \u2500 " + dt.toISOString().slice(0, -8).replaceAll("-", ".").replace("T", "-");
|
||||||
return title;
|
return info;
|
||||||
};
|
};
|
||||||
|
|
||||||
var __applyStatePartSelector = function() {
|
var __applyStatePartSelector = function() {
|
||||||
let el = $("msd-new-part-selector");
|
let s = __state;
|
||||||
if (!__prepareSelector(el, "Internal")) {
|
if (!(s && s.online) || s.storage.uploading || s.storage.downloading) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
for (let name of Object.keys(__state.storage.parts).sort()) {
|
let el = $("msd-new-part-selector");
|
||||||
if (name != "" && __state.storage.parts[name].writable) {
|
let parts = Object.keys(s.storage.parts).sort().filter(name => (name === "" || s.storage.parts[name].writable));
|
||||||
tools.selector.addOption(el, name, name);
|
tools.selector.setValues(el, parts, "\u2500 Internal \u2500");
|
||||||
}
|
tools.hidden.setVisible($("msd-new-part"), (parts.length > 1));
|
||||||
}
|
|
||||||
tools.hidden.setVisible($("msd-new-part"), (el.options.length > 1));
|
|
||||||
};
|
|
||||||
|
|
||||||
var __prepareSelector = function(el, first) {
|
|
||||||
let s = __state;
|
|
||||||
let online = (s && s.online);
|
|
||||||
if (!online) {
|
|
||||||
el.options.length = 1; // Cleanup
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (s.storage.uploading || s.storage.downloading) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
tools.selector.initDefault(el, first, "");
|
|
||||||
return true;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
__init__();
|
__init__();
|
||||||
|
|||||||
@ -73,12 +73,9 @@ export function Ocr(__getGeometry) {
|
|||||||
self.setState = function(state) {
|
self.setState = function(state) {
|
||||||
let enabled = (state && state.ocr.enabled && navigator.clipboard && !tools.browser.is_mobile);
|
let enabled = (state && state.ocr.enabled && navigator.clipboard && !tools.browser.is_mobile);
|
||||||
if (enabled) {
|
if (enabled) {
|
||||||
let selected = tools.storage.get("stream.ocr.lang", state.ocr.langs["default"]);
|
let el = $("stream-ocr-lang-selector");
|
||||||
let html = "";
|
tools.selector.setValues(el, state.ocr.langs.available);
|
||||||
for (let variant of state.ocr.langs.available) {
|
tools.selector.setSelectedValue(el, tools.storage.get("stream.ocr.lang", state.ocr.langs["default"]));
|
||||||
html += `<option value=${variant} ${variant === selected ? "selected" : ""}>${variant}</option>`;
|
|
||||||
}
|
|
||||||
$("stream-ocr-lang-selector").innerHTML = html;
|
|
||||||
}
|
}
|
||||||
tools.feature.setEnabled($("stream-ocr"), enabled);
|
tools.feature.setEnabled($("stream-ocr"), enabled);
|
||||||
$("stream-ocr-led").className = (enabled ? "led-gray" : "hidden");
|
$("stream-ocr-led").className = (enabled ? "led-gray" : "hidden");
|
||||||
|
|||||||
@ -176,19 +176,13 @@ export function Streamer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (state.features.resolution) {
|
if (state.features.resolution) {
|
||||||
if ($("stream-resolution-selector").resolutions !== state.limits.available_resolutions) {
|
let el = $("stream-resolution-selector");
|
||||||
let resolutions_html = "";
|
if (!state.limits.available_resolutions.includes(resolution_str)) {
|
||||||
for (let variant of state.limits.available_resolutions) {
|
state.limits.available_resolutions.push(resolution_str);
|
||||||
resolutions_html += `<option value="${variant}">${variant}</option>`;
|
|
||||||
}
|
|
||||||
if (!state.limits.available_resolutions.includes(resolution_str)) {
|
|
||||||
resolutions_html += `<option value="${resolution_str}">${resolution_str}</option>`;
|
|
||||||
}
|
|
||||||
$("stream-resolution-selector").innerHTML = resolutions_html;
|
|
||||||
$("stream-resolution-selector").resolutions = state.limits.available_resolutions;
|
|
||||||
}
|
}
|
||||||
document.querySelector(`#stream-resolution-selector [value="${resolution_str}"]`).selected = true;
|
tools.selector.setValues(el, state.limits.available_resolutions);
|
||||||
tools.el.setEnabled($("stream-resolution-selector"), true);
|
tools.selector.setSelectedValue(el, resolution_str);
|
||||||
|
tools.el.setEnabled(el, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@ -253,15 +253,8 @@ export var tools = new function() {
|
|||||||
|
|
||||||
self.selector = new function() {
|
self.selector = new function() {
|
||||||
return {
|
return {
|
||||||
"initDefault": function(el, title, value) {
|
"addOption": function(el, title, value, selected=false) {
|
||||||
if (el.options.length === 0) {
|
el.add(new Option(title, value, selected, selected));
|
||||||
self.selector.addOption(el, `\u2500 ${title} \u2500`, value);
|
|
||||||
} else {
|
|
||||||
el.options.length = 1;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"addOption": function(el, title, value) {
|
|
||||||
el.add(new Option(title, value, false, false));
|
|
||||||
},
|
},
|
||||||
"addComment": function(el, title) {
|
"addComment": function(el, title) {
|
||||||
let option = new Option(title, ".".repeat(30), false, false); // Kinda magic value
|
let option = new Option(title, ".".repeat(30), false, false); // Kinda magic value
|
||||||
@ -274,6 +267,30 @@ export var tools = new function() {
|
|||||||
self.selector.addComment(el, "\u2500".repeat(30));
|
self.selector.addComment(el, "\u2500".repeat(30));
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"setValues": function(el, values, empty_title=null) {
|
||||||
|
if (values.constructor == Object) {
|
||||||
|
values = Object.keys(values).sort();
|
||||||
|
}
|
||||||
|
let values_json = JSON.stringify(values);
|
||||||
|
if (el.__values_json !== values_json) {
|
||||||
|
el.options.length = 0;
|
||||||
|
for (let value of values) {
|
||||||
|
let title = value;
|
||||||
|
if (title.length === 0 && empty_title !== null) {
|
||||||
|
title = empty_title;
|
||||||
|
}
|
||||||
|
self.selector.addOption(el, title, value);
|
||||||
|
}
|
||||||
|
el.__values_json = values_json;
|
||||||
|
el.__values = values;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"setSelectedValue": function(el, value) {
|
||||||
|
if (el.__values && el.__values.includes(value)) {
|
||||||
|
el.value = value;
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user