add cap to disable advance function in config file

This commit is contained in:
fujr 2025-01-08 02:24:28 +08:00
parent fb76b1ec91
commit e0fa457943
8 changed files with 91 additions and 19 deletions

View File

@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-qmodem
LUCI_TITLE:=LuCI support for QWRT Modem
LUCI_PKGARCH:=all
PKG_VERSION:=2.5.1
PKG_VERSION:=2.6.0
PKG_LICENSE:=GPLv3
PKG_LINCESE_FILES:=LICENSE
PKG_MAINTAINER:=Tom <fjrcn@outlook.com>

View File

@ -341,8 +341,8 @@
createCheckbox(band_class,band_name,band_id){
let checkbox = document.createElement('input');
checkbox.classList = ["cbi-input-checkbox"];
checkbox.type = "checkbox";
checkbox.className = "cbi-input-checkbox";
checkbox.value = band_id;
checkbox.setAttribute("display-band",band_name);
checkbox.addEventListener("change",() => {
@ -453,8 +453,11 @@
let display_value = this.checkboxes[band_class][checkbox].getAttribute("display-band");
let span = document.createElement('span');
span.innerHTML = display_value;
td.appendChild(this.checkboxes[band_class][checkbox]);
td.appendChild(span);
let band_container=document.createElement('span');
band_container.classList.add("band-container");
band_container.appendChild(this.checkboxes[band_class][checkbox]);
band_container.appendChild(span);
td.appendChild(band_container);
}
}
@ -1245,30 +1248,50 @@
this.cbi_map = document.querySelector('.cbi-map');
this.class_map = {};
this.datatabs = [];
this.create_tabmenu();
this.disabled_features = [];
this.hotplug_elements = [];
//this.create_tabmenu();
}
update_cfg_id(cfg_id){
for (let key in this.class_map) {
this.class_map[key].cfg_id = cfg_id;
this.class_map[key].get_config();
}
//check if all datatab not selected
for (let tab of this.datatabs) {
if (tab.className == "cbi-tab") {
this.switch_tab(tab);
return;
XHR.get('<%=luci.dispatcher.build_url("admin", "modem", "qmodem", "modem_ctrl")%>', { "cfg": cfg_id , "action" : "get_disabled_features"}, (x, data) => {
//clear class_map
this.disabled_features = data.disabled_features ? data.disabled_features : [];
//delete tabmenu
for (let element of this.hotplug_elements){
element.parentNode.removeChild(element);
}
}
this.switch_tab(this.datatabs[0]);
this.class_map = {};
this.datatabs = [];
this.hotplug_elements = [];
this.create_tabmenu();
for (let key in this.class_map) {
this.class_map[key].cfg_id = cfg_id;
this.class_map[key].get_config();
}
//check if all datatab not selected
for (let tab of this.datatabs) {
if (tab.className == "cbi-tab") {
this.switch_tab(tab);
return;
}
}
this.switch_tab(this.datatabs[0]);
});
}
create_tabmenu(){
//add support function to tabmenu
var tabmenu = document.createElement('ul');
this.hotplug_elements.push(tabmenu);
tabmenu.className = "cbi-tabmenu";
for (let key in this.functions) {
if (this.disabled_features.includes(key)) {
continue;
}
var li = document.createElement('li');
li.className = "cbi-tab-disabled";
li.innerHTML = this.functions[key].name;
@ -1280,7 +1303,6 @@
this.datatabs.push(li);
}
this.cbi_map.appendChild(tabmenu);
this.tabmenu = tabmenu;
}
switch_tab(target){
@ -1295,6 +1317,7 @@
if (this.class_map[datatab] == undefined) {
this.class_map[datatab] = new this.functions[datatab].class(this.cfg_id);
this.hotplug_elements.push(this.class_map[datatab].fieldset);
}
for (let key in this.class_map) {
this.class_map[key].hide();
@ -1315,6 +1338,13 @@
.cbi-tabmenu li {
padding: 0.5rem;
}
.band-container {
display: flex;
margin-top: 1rem;
align-items: center;
width: 15%;
}
</style>
<div class="cbi-map">
<fieldset class="cbi-section">

View File

@ -371,3 +371,22 @@ rate_convert()
fi
echo "$rate `echo $rate_units | cut -d ' ' -f $(($i+1))`"
}
get_modem_disabled_features()
{
. /lib/functions.sh
config_load qmodem
config_list_foreach $config_section disabled_features _add_disabled_features
}
get_global_disabled_features()
{
. /lib/functions.sh
config_load qmodem
config_list_foreach main disabled_features _add_disabled_features
}
_add_disabled_features()
{
json_add_string "" "$1"
}

View File

@ -15,10 +15,13 @@ modem_slot=$(basename $modem_path)
case $vendor in
"quectel")
. /usr/share/qmodem/quectel.sh
. /usr/share/qmodem/vendor/quectel.sh
;;
"fibocom")
. /usr/share/qmodem/fibocom.sh
. /usr/share/qmodem/vendor/fibocom.sh
;;
"sierra")
. /usr/share/qmodem/vendor/sierra.sh
;;
*)
. /usr/share/qmodem/generic.sh
@ -255,5 +258,13 @@ case $method in
json_close_object
rm -rf /tmp/cache_sms_$2
;;
"get_disabled_features")
json_add_array disabled_features
#从vendor文件中读取对vendor禁用的功能
vendor_get_disabled_features
get_modem_disabled_features
get_global_disabled_features
json_close_array
;;
esac
json_dump

View File

@ -458,6 +458,17 @@
"rndis",
"ncm"
]
},
"em9190": {
"manufacturer_id": "1199",
"manufacturer": "sierra",
"platform": "qualcomm",
"data_interface": "usb",
"define_connect": "1",
"modes": [
"mbim",
"rmnet"
]
}
},
"pcie": {

View File

@ -11,6 +11,7 @@ at()
tom_modem -d $at_port -o a -c "$atcmd"
}
fastat()
{
local at_port=$1