327 lines
8.9 KiB
PHP
327 lines
8.9 KiB
PHP
<?php
|
||
include( "head.php" );
|
||
include( "groupList.php" );
|
||
?>
|
||
<div class="modal fade" id="netConfig" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
|
||
<div class="modal-dialog" role="document">
|
||
<div class="modal-content">
|
||
<div class="modal-header">
|
||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||
<h4 class="modal-title" id="myModalLabel">
|
||
<cn>网络设置</cn>
|
||
<en>Network config</en>
|
||
</h4>
|
||
</div>
|
||
<div class="modal-body">
|
||
<form class="form-horizontal" id="net" role="form">
|
||
<div class="form-group">
|
||
<label class="col-sm-3 control-label">IP</label>
|
||
<div class="col-sm-6">
|
||
<input type="text" zcfg="ip" class="form-control"/>
|
||
</div>
|
||
</div>
|
||
<div class="form-group">
|
||
<label class="col-sm-3 control-label">
|
||
<cn>掩码</cn>
|
||
<en>Mask</en>
|
||
</label>
|
||
<div class="col-sm-6">
|
||
<input type="text" zcfg="mask" class="form-control"/>
|
||
</div>
|
||
</div>
|
||
<div class="form-group">
|
||
<label class="col-sm-3 control-label">
|
||
<cn>网关</cn>
|
||
<en>Gateway</en>
|
||
</label>
|
||
<div class="col-sm-6">
|
||
<input type="text" zcfg="gateway" class="form-control"/>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
<div class="modal-footer">
|
||
<button type="button" class="btn btn-warning" onclick="setNetwork();">
|
||
<cn>保存</cn>
|
||
<en>Save</en>
|
||
</button>
|
||
<button type="button" class="btn btn-default" data-dismiss="modal">
|
||
<cn>关闭</cn>
|
||
<en>Close</en>
|
||
</button>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div id="alert"></div>
|
||
<div class="row">
|
||
<div class="col-lg-12">
|
||
<div class="panel panel-default">
|
||
<div class="panel-heading">
|
||
<h3 class="panel-title">
|
||
<cn>群组列表</cn>
|
||
<en>Group list</en>
|
||
</h3>
|
||
</div>
|
||
<div class="panel-body">
|
||
<table class="table table-striped">
|
||
<thead>
|
||
<tr>
|
||
<th>Mac</th>
|
||
<th>IP</th>
|
||
<th>
|
||
<cn>设备型号</cn>
|
||
<en>Device</en>
|
||
</th>
|
||
<th>
|
||
<cn>软件版本</cn>
|
||
<en>APP version</en>
|
||
</th>
|
||
<th>
|
||
<cn>频道</cn>
|
||
<en>Channels</en>
|
||
</th>
|
||
<th>
|
||
<cn>操作</cn>
|
||
<en>Operation</en>
|
||
</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="groupList">
|
||
</tbody>
|
||
</table>
|
||
<form class="form-inline" id="group">
|
||
<div class="form-group">
|
||
<label for="groupId">
|
||
<cn>分组ID</cn>
|
||
<en>Group ID</en>
|
||
</label>
|
||
<input type="text" class="form-control" id="groupId" zcfg="groupId" placeholder="">
|
||
</div>
|
||
<button type="button" class="btn btn-warning" onclick="updateGroup();">
|
||
<cn>保存</cn>
|
||
<en>Save</en>
|
||
</button>
|
||
<button type="button" id="research" class="btn btn-warning ">
|
||
<cn>重新搜索</cn>
|
||
<en>Search again</en>
|
||
</button>
|
||
</form>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<div class="col-lg-12">
|
||
<div class="panel panel-default">
|
||
<div class="panel-heading">
|
||
<h3 class="panel-title">
|
||
<cn>频道表汇总</cn>
|
||
<en>Channel collect</en>
|
||
</h3>
|
||
</div>
|
||
<div class="panel-body">
|
||
<table class="table table-striped">
|
||
<thead>
|
||
<tr>
|
||
<th>
|
||
<cn>序号</cn>
|
||
<en>Number</en>
|
||
</th>
|
||
<th>
|
||
<cn>频道名称</cn>
|
||
<en>Channel name</en>
|
||
</th>
|
||
<th>URL</th>
|
||
<th>
|
||
<cn>排序</cn>
|
||
<en>Sequence</en>
|
||
</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody id="epgList">
|
||
</tbody>
|
||
</table>
|
||
<form class="form-inline" id="group">
|
||
<button type="button" class="btn btn-warning" onclick="getEPG();">
|
||
<cn>汇总</cn>
|
||
<en>Collect</en>
|
||
</button>
|
||
<button type="button" class="btn btn-warning" onclick="createEPG();">
|
||
<cn>生成节目单</cn>
|
||
<en>Create EPG</en>
|
||
</button>
|
||
<button type="button" class="btn btn-warning" onclick="syncEPG();">
|
||
<cn>同步节目单</cn>
|
||
<en>Sync EPG</en>
|
||
</button>
|
||
<a type="button" role="button" class="btn btn-default" href="config/epg.json" target="_blank">
|
||
<cn>查看节目单</cn>
|
||
<en>Show EPG</en>
|
||
</a>
|
||
</form>
|
||
<div id="alertEPG"></div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<script src="js/zcfg.js"></script>
|
||
<script type="text/javascript" language="javascript" src="js/confirm/jquery-confirm.min.js"></script>
|
||
<script>
|
||
var netConfig;
|
||
var groupConfig;
|
||
var curMac = "";
|
||
|
||
function updateGroup() {
|
||
rpc( "group.update", [ groupConfig ], function ( data ) {
|
||
$( "#research" ).click();
|
||
} );
|
||
}
|
||
|
||
function setNetwork() {
|
||
rpc( "group.callSetNetwork", [ curMac, netConfig ] );
|
||
}
|
||
|
||
function reboot( mac ) {
|
||
$.confirm( {
|
||
title: '<cn>重启</cn><en>Reboot</en>',
|
||
content: '<cn>是否立即重启系统?</cn><en>Reboot immediately?</en>',
|
||
buttons: {
|
||
ok: {
|
||
text: "<cn>确认重启</cn><en>Confirm</en>",
|
||
btnClass: 'btn-warning',
|
||
keys: [ 'enter' ],
|
||
action: function () {
|
||
rpc( "group.callReboot", [ mac ] );
|
||
}
|
||
},
|
||
cancel: {
|
||
text: "<cn>取消</cn><en>Cancel</en>",
|
||
action: function () {
|
||
console.log( 'the user clicked cancel' );
|
||
}
|
||
}
|
||
|
||
}
|
||
} );
|
||
|
||
}
|
||
|
||
function getNetwork( mac ) {
|
||
$( '#netConfig' ).modal( 'show' );
|
||
curMac = mac;
|
||
rpc( "group.callGetNetwork", [ mac ], function ( data ) {
|
||
netConfig = data;
|
||
zcfg( "#net", netConfig );
|
||
} );
|
||
}
|
||
|
||
function showEPG( data ) {
|
||
epgOrder = new Array();
|
||
var html = '';
|
||
for ( var i = 0; i < data.length; i++ ) {
|
||
epgOrder.push( data[ i ].id );
|
||
html += '<tr><td>' + ( i + 1 ) + '</td>';
|
||
html += '<td>' + data[ i ].name + '</td>';
|
||
html += '<td>' + data[ i ].url + '</td>';
|
||
html += '<td><button type="button" onclick="epgSwap(0,'+i+');" class="btn btn-sm btn-default "><cn>置顶</cn><en>Top</en></button> ';
|
||
html += '<button type="button" onclick="epgSwap('+(i-1)+','+i+');"" class="btn btn-sm btn-warning "><i class="fa fa-arrow-up"></i></button> ';
|
||
html += '<button type="button" onclick="epgSwap('+(i+1)+','+i+');" class="btn btn-sm btn-warning "><i class="fa fa-arrow-down"></i></button> ';
|
||
html += '<button type="button" onclick="epgSwap('+(data.length-1)+','+i+');" class="btn btn-sm btn-default "><cn>置底</cn><en>Bottom</en></button></td>';
|
||
html += '</tr>';
|
||
}
|
||
$( "#epgList" ).html( html );
|
||
}
|
||
|
||
var epgOrder;
|
||
|
||
function getEPG() {
|
||
|
||
rpc( "group.callGetEPG", null, function ( data ) {
|
||
showEPG( data );
|
||
} );
|
||
}
|
||
|
||
function createEPG() {
|
||
|
||
rpc( "group.createEPG", null, function ( data ) {
|
||
if(data)
|
||
htmlAlert( "#alertEPG", "success", "<cn>生成节目单成功</cn><en>Create EPG success</en>!", "", 2000 );
|
||
} );
|
||
}
|
||
|
||
function syncEPG() {
|
||
grpShow();
|
||
}
|
||
|
||
function epgSwap( a, b ) {
|
||
if(a<0 || b>=epgOrder.length)
|
||
return;
|
||
|
||
var t = epgOrder[ a ];
|
||
epgOrder[ a ] = epgOrder[ b ];
|
||
epgOrder[ b ] = t;
|
||
|
||
rpc( "group.orderEPG", [ epgOrder ], function ( data ) {
|
||
showEPG( data );
|
||
} );
|
||
}
|
||
|
||
|
||
$( function () {
|
||
navIndex( 5 );
|
||
$.getJSON( "config/group.json", function ( result ) {
|
||
groupConfig = result;
|
||
zcfg( "#group", groupConfig );
|
||
} );
|
||
|
||
function getList() {
|
||
rpc( "group.getList", null, function ( data ) {
|
||
var currentHtml = $( "#groupList" ).html();
|
||
var html = '';
|
||
for ( var i = 0; i < data.length; i++ ) {
|
||
if ( data[ i ].info == undefined )
|
||
continue;
|
||
html += '<tr><td>' + data[ i ].mac + '</td>';
|
||
html += '<td>' + data[ i ].ip + '</td>';
|
||
|
||
if(data[ i ].version && data[ i ].type){
|
||
html += '<td>' + data[ i ].type + '</td>';
|
||
html += '<td>' + data[ i ].version.app + '<br/>' + data[ i ].version.sdk + '</td>';
|
||
}
|
||
else{
|
||
html += '<td></td>';
|
||
html += '<td></td>';
|
||
}
|
||
|
||
html += '<td>' + data[ i ].info.join() + '</td>';
|
||
html += '<td><button type="button" onclick="getNetwork(\'' + data[ i ].mac + '\')" class="btn btn-sm btn-warning "><cn>网络设置</cn><en>Network config</en></button> <button type="button" onclick="reboot(\'' + data[ i ].mac + '\')" class="btn btn-sm btn-danger "><cn>重启</cn><en>Reboot</en></button></td></tr>';
|
||
}
|
||
if ( currentHtml != html )
|
||
$( "#groupList" ).html( html );
|
||
} );
|
||
}
|
||
getList();
|
||
setInterval( getList, 3000 );
|
||
|
||
$( "#research" ).click( function ( e ) {
|
||
rpc( "group.clearMember" );
|
||
$( "#groupList" ).html( '' );
|
||
} );
|
||
|
||
|
||
$( "#grpSync" ).click( function ( e ) {
|
||
for ( var i = 0; i < grpList.length; i++ ) {
|
||
grpSetStatus( i, 0 );
|
||
rpc( "group.callSyncEPG", [ grpList[ i ].mac ], function ( data, index ) {
|
||
grpSetStatus( index, data ? 1 : 2 );
|
||
}, i );
|
||
}
|
||
} );
|
||
|
||
|
||
|
||
} );
|
||
</script>
|
||
<?php
|
||
include( "foot.php" );
|
||
?>
|