284 lines
8.6 KiB
HTML
284 lines
8.6 KiB
HTML
<script type="text/javascript">//<![CDATA[
|
|
|
|
function set_tab_event()
|
|
{
|
|
var tab_menu = document.getElementById("tab_menu");
|
|
//获取子元素
|
|
var childElements = tab_menu.children;
|
|
//获取需要禁用的元素
|
|
for (var i = 0; i < childElements.length; i++)
|
|
{
|
|
childElements[i].addEventListener('click', function(event) {
|
|
tab_event(this);
|
|
});
|
|
}
|
|
}
|
|
|
|
//获取需要禁用的元素
|
|
function get_enable_element(parent_element)
|
|
{
|
|
var enable_element;
|
|
//获取子元素
|
|
var childElements = parent_element.children;
|
|
//获取已启用的元素
|
|
for (var i = 0; i < childElements.length; i++)
|
|
{
|
|
// 检查当前子元素的class属性是否为cbi-tab
|
|
if (childElements[i].classList.contains('cbi-tab'))
|
|
{
|
|
enable_element=childElements[i];
|
|
break;
|
|
}
|
|
}
|
|
return enable_element;
|
|
}
|
|
|
|
// 设置标签显示
|
|
function set_tab_view(disenable_element,enable_element)
|
|
{
|
|
//获取tab内容父元素
|
|
var tab_context = document.getElementById('dial_log_view');
|
|
|
|
//禁用tab
|
|
disenable_element.classList.remove('cbi-tab');
|
|
disenable_element.classList.add('cbi-tab-disabled');
|
|
//禁用tab内容
|
|
var data_tab_disenable = disenable_element.getAttribute('data-tab');
|
|
var tab_context_disenable_element = tab_context.querySelector('div[data-tab="'+data_tab_disenable+'"]');
|
|
tab_context_disenable_element.setAttribute('data-tab-active','false');
|
|
tab_context_disenable_element.style.display="none";
|
|
|
|
//启用tab
|
|
enable_element.classList.remove('cbi-tab-disabled');
|
|
enable_element.classList.add('cbi-tab');
|
|
//启用tab内容
|
|
var data_tab_enable = enable_element.getAttribute('data-tab');
|
|
var tab_context_enable_element = tab_context.querySelector('div[data-tab="'+data_tab_enable+'"]');
|
|
tab_context_enable_element.setAttribute('data-tab-active','true');
|
|
tab_context_enable_element.style.display="block";
|
|
}
|
|
|
|
// 标签事件处理(更新选中的标签及标签内容)
|
|
function tab_event(tab_element)
|
|
{
|
|
//获取需要禁用的tab元素
|
|
var tab_menu = document.getElementById("tab_menu");
|
|
var disenable_element=get_enable_element(tab_menu);
|
|
if (tab_element != disenable_element) {
|
|
set_tab_view(disenable_element,tab_element);
|
|
}
|
|
}
|
|
|
|
// 设置滚动条
|
|
function set_scroll_top(log_ids)
|
|
{
|
|
for(var log_id in log_ids)
|
|
{
|
|
var log_element=document.getElementById(log_id);
|
|
if (log_ids[log_id]==-1)
|
|
{
|
|
log_element.scrollTop = log_element.scrollHeight;
|
|
}
|
|
else
|
|
{
|
|
log_element.scrollTop = log_ids[log_id];
|
|
}
|
|
}
|
|
}
|
|
|
|
// 下载日志
|
|
function download_dial_log()
|
|
{
|
|
// 获取启用的标签名
|
|
var enable_element=get_enable_element(tab_menu);
|
|
var enable_tab=enable_element.getAttribute("data-tab");
|
|
var enable_tab_name=enable_tab.replace("_tab","");
|
|
|
|
// 获取拨号日志
|
|
var log_element=document.getElementById(enable_tab_name+"_log");
|
|
var log=log_element.value
|
|
|
|
// 创建下载链接
|
|
var file = new Blob([log], {type: 'text/plain'});
|
|
var fileURL = URL.createObjectURL(file);
|
|
|
|
// 创建超链接并触发点击
|
|
var download_link = document.createElement("a");
|
|
download_link.href = fileURL;
|
|
download_link.download = enable_tab_name+"_dial_log.txt";
|
|
download_link.click();
|
|
}
|
|
|
|
// 清理拨号日志
|
|
function clean_dial_log()
|
|
{
|
|
// 获取启用的标签名
|
|
var enable_element=get_enable_element(tab_menu);
|
|
var enable_tab=enable_element.getAttribute("data-tab");
|
|
var enable_tab_name=enable_tab.replace("_tab","");
|
|
|
|
// 清空页面拨号日志
|
|
var log_element=document.getElementById(enable_tab_name+"_log");
|
|
log_element.value="";
|
|
|
|
// 获取拨号日志路径
|
|
var path="/tmp/run/modem/"+enable_tab_name+"_dial.cache";
|
|
|
|
// 清空文件拨号日志
|
|
XHR.get('<%=luci.dispatcher.build_url("admin", "network", "modem", "clean_dial_log")%>', {"path":path},
|
|
function(x, data)
|
|
{
|
|
// console.log(data);
|
|
}
|
|
);
|
|
}
|
|
|
|
XHR.poll(5, '<%=luci.dispatcher.build_url("admin", "network", "modem", "get_dial_log_info")%>', null,
|
|
function(x, data)
|
|
{
|
|
var dial_log_info=data["dial_log_info"];
|
|
var modem_name_info=data["modem_name_info"];
|
|
var translation=data["translation"];
|
|
|
|
var tab_menu=document.getElementById("tab_menu");
|
|
var dial_log_div=document.getElementById('dial_log_view');
|
|
if (Object.keys(dial_log_info).length!=0)
|
|
{
|
|
// 新添加标签或覆盖标签
|
|
var tab_view = "";
|
|
var dial_log_view = "";
|
|
var log_ids={};
|
|
var enable_tab_name_cache=""; // 缓存已启用标签名
|
|
for (var dial_log of dial_log_info)
|
|
{
|
|
//遍历拨号日志的信息
|
|
for ( var key in dial_log)
|
|
{
|
|
var class_name="cbi-tab-disabled";
|
|
var active="false";
|
|
var display="none";
|
|
var log_style="";
|
|
|
|
if (tab_menu.hasChildNodes())
|
|
{
|
|
// 获取启用的标签元素
|
|
var enable_element=get_enable_element(tab_menu);
|
|
|
|
// 设置启用的标签为上一次的启用标签
|
|
enable_tab=enable_element.getAttribute("data-tab");
|
|
enable_tab_name_cache=enable_tab.replace("_tab","");
|
|
if (enable_tab_name_cache==key)
|
|
{
|
|
class_name="cbi-tab";
|
|
active="true";
|
|
display="block";
|
|
}
|
|
|
|
var log_element=document.getElementById(key+'_log');
|
|
if (log_element!=null)
|
|
{
|
|
// 设置样式
|
|
log_style=log_element.getAttribute("style");
|
|
|
|
// 判断日志是否更新
|
|
var log=log_element.value;
|
|
if (dial_log[key]!=log)
|
|
{
|
|
// 更新的移动滚动条到最下面
|
|
log_ids[key+'_log']=-1;
|
|
}
|
|
else
|
|
{
|
|
// 记录滚到条位置
|
|
log_ids[key+'_log']=log_element.scrollTop;
|
|
}
|
|
}
|
|
}
|
|
|
|
// 设置拨号日志标签
|
|
var modem_name=translation[modem_name_info[key]].toUpperCase();
|
|
tab_view+='<li class="'+class_name+'" data-tab="'+key+'_tab"><a>'+modem_name+' ('+key.replace("modem","")+')</a></li>';
|
|
// 设置拨号日志
|
|
dial_log_view += '<div class="cbi-section" data-tab="'+key+'_tab" data-tab-title="'+key+'" data-tab-active="'+active+'" style="display: '+display+';">';
|
|
dial_log_view += '<div><textarea readonly="readonly" id="'+key+'_log" rows="20" maxlength="160" style="'+log_style+'">'+dial_log[key]+'</textarea></div>';
|
|
dial_log_view += '</div>'
|
|
}
|
|
}
|
|
|
|
// 添加到页面中
|
|
tab_menu.innerHTML=tab_view;
|
|
dial_log_div.innerHTML=dial_log_view;
|
|
|
|
// 设置默认启用的标签(上次启用标签已删除)
|
|
var enable_element=document.getElementById(enable_tab_name_cache+"_log");
|
|
if (enable_element==null)
|
|
{
|
|
//设置启用的为第一个标签
|
|
enable_element=tab_menu.firstChild;
|
|
enable_element.classList.remove('cbi-tab-disabled');
|
|
enable_element.classList.add('cbi-tab');
|
|
|
|
enable_element=dial_log_div.firstChild;
|
|
enable_element.setAttribute('data-tab-active','true');
|
|
enable_element.style.display="block";
|
|
}
|
|
|
|
//设置滚动条
|
|
set_scroll_top(log_ids);
|
|
|
|
// 设置标签事件
|
|
set_tab_event();
|
|
|
|
// 显示拨号日志(标签、日志内容、滚动条、标签事件加载完成才显示)
|
|
document.getElementById("modem_dial_log_field").style.display="block";
|
|
}
|
|
else
|
|
{
|
|
var log_view="<strong><%:No dial log%></strong>";
|
|
dial_log_div.innerHTML=log_view;
|
|
// 隐藏拨号日志
|
|
document.getElementById("modem_dial_log_field").style.display="none";
|
|
}
|
|
}
|
|
);
|
|
//]]>
|
|
</script>
|
|
|
|
<style type="text/css">
|
|
/* AT命令响应 */
|
|
textarea {
|
|
background:#373737;
|
|
border:none;
|
|
color:#FFF;
|
|
width: 100%;
|
|
border-top-width: 2px;
|
|
padding-top: 12px;
|
|
}
|
|
</style>
|
|
|
|
<fieldset id="modem_dial_log_field" class="cbi-section" style="display: none;">
|
|
<div class="cbi-section fade-in">
|
|
<!-- <legend><%:Dial Log%></legend> -->
|
|
<h3 id="dial_log_title"><%:Dial Log%></h3>
|
|
</div>
|
|
<!-- <div id="response_label"><%:Response%></div><br/> -->
|
|
<table class="table" id="at_command_info">
|
|
<tbody>
|
|
<tr class="tr">
|
|
<td colspan="2" class="td left">
|
|
<ul class="cbi-tabmenu" id="tab_menu"></ul>
|
|
<div id="dial_log_view">
|
|
<!-- <div class="cbi-section" data-tab="modem0_tab" data-tab-title="<%:Modem0%>" data-tab-active="true" style="display: block;">
|
|
<div><textarea readonly="readonly" id="response" rows="20" maxlength="160"></textarea></div>
|
|
</div> -->
|
|
</div>
|
|
<div class="cbi-page-actions">
|
|
<input class="btn cbi-button cbi-button-link" type="button" value="<%:Download Log%>" onclick="download_dial_log()" alt="<%:Download Log%>" title="<%:Download Log%>">
|
|
<input class="cbi-button cbi-button-reset" type="button" value="<%:Clean%>" onclick="clean_dial_log()" alt="<%:Clean%>" title="<%:Clean%>">
|
|
</div>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</fieldset>
|