linkpi_firmware_history/rootfs/link/web/group.php

327 lines
8.9 KiB
PHP
Raw Normal View History

2024-02-15 22:07:30 +01:00
<?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">&times;</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" );
?>