mirror of
https://gitlab.com/Shinobi-Systems/ShinobiCE.git
synced 2025-03-09 15:40:15 +00:00
Support Shinobi at https://licenses.shinobi.video/subscribe
This commit is contained in:
parent
ef40f3f231
commit
167603dfb0
118 changed files with 16152 additions and 5441 deletions
|
@ -15,34 +15,4 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
//confirmwindow
|
||||
$.confirm={e:$('#confirm_window')};
|
||||
$.confirm.title=$.confirm.e.find('.modal-title span')
|
||||
$.confirm.body=$.confirm.e.find('.modal-body')
|
||||
$.confirm.footer=$.confirm.e.find('.modal-footer')
|
||||
$.confirm.click=function(x,e){
|
||||
$.confirm.footer.find('.confirmaction').remove()
|
||||
var createButton = function(x,place,callback){
|
||||
$.confirm.footer.prepend('<button type="button" class="btn '+x.class+' confirmaction confirmaction'+place+'">'+x.title+'</button>')
|
||||
if(!x.class){x.class='btn-success'}
|
||||
if(!x.title){x.title='Save changes'}
|
||||
$.confirm.footer.find('.confirmaction'+place).click(function(){
|
||||
$.confirm.e.modal('hide')
|
||||
callback();
|
||||
})
|
||||
}
|
||||
if(x instanceof Array){
|
||||
$.each(x,function(place,x){
|
||||
createButton(x,place,x.callback)
|
||||
})
|
||||
}else{
|
||||
createButton(x,0,e)
|
||||
}
|
||||
}
|
||||
$(document).ready(function(){
|
||||
$.confirm.e.on('hidden.bs.modal', function () {
|
||||
$.confirm.footer.find('.confirmaction').remove()
|
||||
})
|
||||
})
|
||||
</script>
|
||||
<script src="<%-window.libURL%>libs/js/dash2.confirm.js"></script>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
<%
|
||||
if(!window.libURL)window.libURL = originalURL
|
||||
%>
|
||||
<link rel="icon" href="<%-window.libURL%>libs/img/icon/favicon.ico" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="<%-window.libURL%>libs/img/icon/favicon.ico" type="image/x-icon" />
|
||||
<link rel="icon" href="<%-window.libURL%><%-config.webFavicon%>" type="image/x-icon" />
|
||||
<link rel="shortcut icon" href="<%-window.libURL%><%-config.webFavicon%>" type="image/x-icon" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<meta name="apple-mobile-web-app-status-bar-style" content="black">
|
||||
<meta name="apple-mobile-web-app-title" content="Shinobi">
|
||||
<meta name="apple-mobile-web-app-title" content="<%-config.webPageTitle%>">
|
||||
<link rel="apple-touch-icon" href="<%-window.libURL%>libs/img/icon/apple-touch-icon.png" />
|
||||
<link rel="apple-touch-icon" sizes="57x57" href="<%-window.libURL%>libs/img/icon/apple-touch-icon-57x57.png" />
|
||||
<link rel="apple-touch-icon" sizes="72x72" href="<%-window.libURL%>libs/img/icon/apple-touch-icon-72x72.png" />
|
||||
|
|
|
@ -2,4 +2,4 @@
|
|||
<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
|
||||
<meta name="viewport" content="width=device-width, maximum-scale=1, user-scalable=no" />
|
||||
<meta name="description" content="Shinobi, Open Source CCTV Technology">
|
||||
<meta name="author" content="Moe Alam, moeiscool on GitHub">
|
||||
<meta name="author" content="Moe Alam of Shinobi Systems">
|
||||
|
|
1
web/pages/blocks/header-title.ejs
Normal file
1
web/pages/blocks/header-title.ejs
Normal file
|
@ -0,0 +1 @@
|
|||
<title><%- config.webPageTitle %></title>
|
|
@ -1,5 +1,6 @@
|
|||
<head>
|
||||
<title><%-lang.Shinobi%></title>
|
||||
<!-- Powered by Shinobi, http://shinobi.video -->
|
||||
<% include header-title.ejs %>
|
||||
<% if(!window.libURL)window.libURL = originalURL + global.s.checkCorrectPathEnding(config.webPaths.home) %>
|
||||
<% include header-meta.ejs %>
|
||||
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
|
||||
|
@ -8,6 +9,7 @@
|
|||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/login.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/material.min.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/material.style.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/roboto.css" type="text/css" />
|
||||
<meta name="mobile-web-app-capable" content="yes">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||
<% include header-favicon.ejs %>
|
||||
|
|
|
@ -1,45 +1,64 @@
|
|||
<!--Help Window-->
|
||||
<!--
|
||||
<div class="modal fade" id="help_window" tabindex="-1" role="dialog" aria-labelledby="help_windowLabel" aria-hidden="true">
|
||||
<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="help_windowLabel"><i class="fa fa-question-circle"></i> <span><%-lang.Help%></span></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<a href="http://shinobi.video/docs/donate"><img src="<%-window.libURL%>libs/img/icon/apple-touch-icon-152x152.png" class="pull-right" style="border-radius:50%;margin-left:20px;border: 1px solid #c3996b;"></a>
|
||||
<p>For information about how to use Shinobi you can check out the <a target="_blank" href="http://shinobi.video/docs">Docs</a>.</p>
|
||||
<p>If you would like to get professional support please consider ordering a <a href="http://shinobi.video/support">support package</a>. You can find <b>Moe Alam, The Author</b>, on the <a target="_blank" href="https://discord.gg/ehRd8Zz">Discord</a> Community Chat. For general questions and community support you can also try <a href="https://www.reddit.com/r/ShinobiCCTV">Reddit</a>.</p>
|
||||
<p><strong>Support </strong> <a href="http://shinobi.video/support">from @moeiscool</a></p>
|
||||
<p><b>Like Shinobi?</b> Please consider donating!</p>
|
||||
<div><p><strong>Paypal Address :</strong> <a href="https://www.paypal.me/ShinobiCCTV" target="_blank">paypal@m03.ca</a></p>
|
||||
<% if(!config.userHasSubscribed){ %>
|
||||
<div class="modal fade" id="help_window" tabindex="-1" role="dialog" aria-labelledby="help_windowLabel" aria-hidden="true">
|
||||
<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="help_windowLabel"><i class="fa fa-question-circle"></i> <span><%-lang.Help%></span></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<blockquote class="blockquoteInHelp">
|
||||
<a href="https://licenses.shinobi.video/subscribe" target="_blank"><img src="<%-window.libURL%>libs/img/icon/apple-touch-icon-152x152.png" class="pull-right" style="border-radius:50%;margin-left:20px;border: 1px solid #c3996b;"></a>
|
||||
<p>For information about how to use Shinobi you can check out the <a target="_blank" href="http://shinobi.video/docs">Docs</a>.</p>
|
||||
<p><a target="_blank" href="https://discord.gg/ehRd8Zz">Discord</a> Community Chat is great for meeting people and asking questions. For general questions and community support you can also try the <a href="https://www.reddit.com/r/ShinobiCCTV">Reddit forum</a>.</p>
|
||||
</blockquote>
|
||||
<blockquote class="blockquoteInHelp" style="margin-bottom:10px">
|
||||
<b>Support the development by subscribing</b> to any of the following and put your subscription key in the configuration file (conf.json), then restart Shinobi and this annoying popup window won't appear anymore, thanks! <i class="fa fa-smile-o"></i>
|
||||
<br><br>
|
||||
<code>"subscriptionId":"sub_XXXXXXXXXXXX",</code>
|
||||
<br><br>
|
||||
<p>If you already are supporting the development in a different way, please contact us and we can get this popup to go away for you :) Cheers!</p>
|
||||
</blockquote>
|
||||
<div style="margin-bottom:10px;text-align:center">
|
||||
<a href="https://licenses.shinobi.video/subscribe?planSubscribe=plan_G31AZ9mknNCa6z" target="_blank" class="btn btn-default"><i class="fa fa-share-square-o" aria-hidden="true"></i> Shinobi Mobile License ($5/m)</a>
|
||||
<a href="https://licenses.shinobi.video/subscribe?planSubscribe=plan_G3LGdNwA8lSmQy" target="_blank" class="btn btn-default"><i class="fa fa-share-square-o" aria-hidden="true"></i> Shinobi Pro License ($75/m)</a>
|
||||
</div>
|
||||
<div style="margin-bottom:5px;text-align:center">
|
||||
<a href="https://licenses.shinobi.video/subscribe?planSubscribe=plan_G42jNgIqXaWmIC" target="_blank" class="btn btn-default"><i class="fa fa-share-square-o" aria-hidden="true"></i> Tiny Support Subscription ($10/m)</a>
|
||||
</div>
|
||||
<div>
|
||||
<!-- <iframe src="https://shinobi.video/ads" style="width:100%;height:250px;border:none;"></iframe> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger pull-left hide_donate"><%-lang['Close']%></button>
|
||||
<a target="_blank" href="http://discordapp.com/invite/mdhmvuH/" class="btn btn-primary"><%-lang['Chat on Discord']%></a>
|
||||
<a target="_blank" href="http://shinobi.video/docs" class="btn btn-success"><%-lang.Documentation%></a>
|
||||
</div>
|
||||
</div>
|
||||
<p><strong>Bitcoin Address :</strong> 1FvC7M8P9wVT1hXwHj8ugxpZj8JGfGyUDu</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger pull-left hide_donate"><%-lang['Don\'t show this anymore']%></button>
|
||||
<a target="_blank" href="http://discordapp.com/invite/mdhmvuH/" class="btn btn-primary"><%-lang['Chat on Discord']%></a>
|
||||
<a target="_blank" href="http://shinobi.video/docs" class="btn btn-success"><%-lang.Documentation%></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$.help={hide:$('#help_window .hide_donate'),e:$('#help_window')}
|
||||
if($.ccio.op().hide_donate!==1){
|
||||
setTimeout(function(){
|
||||
$.help.e.modal('show')
|
||||
},1000*60*5)
|
||||
$.help.hide.click(function(){
|
||||
$.ccio.op('hide_donate',1);
|
||||
$.help.e.modal('hide');
|
||||
})
|
||||
}else{
|
||||
$.help.hide.hide()
|
||||
}
|
||||
})
|
||||
</script>-->
|
||||
<style>
|
||||
.blockquoteInHelp:before,.blockquoteInHelp:after{
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$.help={hide:$('#help_window .hide_donate'),e:$('#help_window')}
|
||||
// if($.ccio.op().hide_donate !== 1){
|
||||
setTimeout(function(){
|
||||
$.help.e.modal('show')
|
||||
},1000*60*0.2)
|
||||
$.help.hide.click(function(){
|
||||
// $.ccio.op('hide_donate',1);
|
||||
$.help.e.modal('hide');
|
||||
})
|
||||
// }else{
|
||||
// $.help.hide.hide()
|
||||
// }
|
||||
})
|
||||
</script>
|
||||
<% } %>
|
||||
|
|
|
@ -31,11 +31,10 @@
|
|||
<div class="form-group-group blue">
|
||||
<h4><%- lang['Monitors'] %>
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-default btn-xs add"> <i class="fa fa-plus"></i> </a>
|
||||
<a class="btn btn-success btn-xs add-monitor"> <i class="fa fa-plus"></i> </a>
|
||||
</div>
|
||||
</h4>
|
||||
<div id="monitorStatesMonitors">
|
||||
</div>
|
||||
<div id="monitorStatesMonitors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
|
@ -46,137 +45,4 @@
|
|||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$.monitorStates = {
|
||||
e: $('#monitorStates'),
|
||||
selector: $('#monitorStatesSelector'),
|
||||
monitors: $('#monitorStatesMonitors'),
|
||||
loaded: {}
|
||||
}
|
||||
$.monitorStates.f = $.monitorStates.e.find('form')
|
||||
$.monitorStates.loadPresets = function(callback){
|
||||
$.get($.ccio.init('location',$user) + $user.auth_token + '/monitorStates/' + $user.ke,function(d){
|
||||
var html = ''
|
||||
$.each(d.presets,function(n,v){
|
||||
$.monitorStates.loaded[v.name] = v
|
||||
html += '<option value="' + v.name + '">' + v.name + '</option>'
|
||||
})
|
||||
$.monitorStates.selector.find('optgroup').html(html)
|
||||
if(callback)callback()
|
||||
})
|
||||
}
|
||||
$.monitorStates.e.on('shown.bs.modal', function (e) {
|
||||
if($.monitorStates.selector.val() === '')$.monitorStates.loadPresets()
|
||||
})
|
||||
$.monitorStates.add = function(loaded,doAppend){
|
||||
if(!loaded){
|
||||
json = ''
|
||||
}else{
|
||||
json = JSON.stringify(loaded,null,3)
|
||||
}
|
||||
var html = '<div class="state-monitor-row"><h4 style="margin-top:7.5px;margin-bottom:7.5px"><small> </small><div class="pull-right"><a class="btn btn-danger btn-xs delete-monitor"><i class="fa fa-trash-o"></i></a></div></h4><textarea class="json form-control" style="width:100%;height:300px">' + json +'</textarea></div>'
|
||||
if(doAppend)$.monitorStates.monitors.append(html)
|
||||
return html
|
||||
}
|
||||
$.monitorStates.e.find('.add').click(function(e){
|
||||
$.monitorStates.add(null,true)
|
||||
})
|
||||
$.monitorStates.e.on('change','.json',function(e){
|
||||
var el = $(this)
|
||||
var val = el.val()
|
||||
try{
|
||||
el.css('border-color','green')
|
||||
var parsed = JSON.parse(val)
|
||||
el.val(JSON.stringify(parsed,null,3))
|
||||
}catch(err){
|
||||
el.css('border-color','red')
|
||||
return $.ccio.init('note',{title:lang['Invalid JSON'],text:lang.InvalidJSONText,type:'error'})
|
||||
}
|
||||
})
|
||||
$.monitorStates.e.on('click','.delete',function(e){
|
||||
$.confirm.e.modal('show');
|
||||
$.confirm.title.text(lang['Delete Monitor States Preset']);
|
||||
$.confirm.body.html(lang.deleteMonitorStateText1);
|
||||
$.confirm.click({title:'Delete',class:'btn-danger'},function(){
|
||||
var form = $.monitorStates.f.serializeObject()
|
||||
$.post($.ccio.init('location',$user) + $user.auth_token + '/monitorStates/' + $user.ke + '/' + form.name + '/delete',function(d){
|
||||
$.ccio.log(d)
|
||||
if(d.ok === true){
|
||||
$.monitorStates.loadPresets()
|
||||
$.ccio.init('note',{title:lang.Success,text:d.msg,type:'success'})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
$.monitorStates.e.on('click','.delete-monitor',function(e){
|
||||
var el = $(this).parents('.state-monitor-row')
|
||||
$.confirm.e.modal('show');
|
||||
$.confirm.title.text(lang['Delete Monitor State']);
|
||||
$.confirm.body.html(lang.deleteMonitorStateText2)
|
||||
$.confirm.click({title:'Delete',class:'btn-danger'},function(){
|
||||
el.remove()
|
||||
})
|
||||
})
|
||||
$.monitorStates.selector.change(function(e){
|
||||
var selected = $(this).val()
|
||||
var loaded = $.monitorStates.loaded[selected]
|
||||
var namespace = $.monitorStates.e.find('[name="name"]')
|
||||
var deleteButton = $.monitorStates.e.find('.delete')
|
||||
if(loaded){
|
||||
namespace.val(loaded.name)
|
||||
var html = ''
|
||||
$.each(loaded.details.monitors,function(n,v){
|
||||
html += $.monitorStates.add(v)
|
||||
})
|
||||
$.monitorStates.monitors.html(html)
|
||||
deleteButton.show()
|
||||
}else{
|
||||
namespace.val('')
|
||||
$.monitorStates.monitors.empty()
|
||||
deleteButton.hide()
|
||||
}
|
||||
})
|
||||
$.monitorStates.f.submit(function(e){
|
||||
e.preventDefault()
|
||||
var el = $(this)
|
||||
var form = el.serializeObject()
|
||||
var monitors = []
|
||||
var failedToParseAJson = false
|
||||
var rows = $.monitorStates.monitors.find('.state-monitor-row')
|
||||
if(form.name === ''){
|
||||
return $.ccio.init('note',{title:lang['Invalid Data'],text:lang['Name cannot be empty.'],type:'error'})
|
||||
}
|
||||
if(rows.length === 0){
|
||||
return $.ccio.init('note',{title:lang['Invalid Data'],text:lang['Must be atleast one row'],type:'error'})
|
||||
}
|
||||
rows.each(function(n,v){
|
||||
var el = $(v)
|
||||
try{
|
||||
console.log(el.find('.json').val())
|
||||
var json = JSON.parse(el.find('.json').val())
|
||||
if(json.mid)monitors.push(json)
|
||||
}catch(err){
|
||||
console.log(err)
|
||||
failedToParseAJson = true
|
||||
}
|
||||
})
|
||||
if(failedToParseAJson === true){
|
||||
return $.ccio.init('note',{title:lang['Invalid JSON'],text:lang.InvalidJSONText,type:'error'})
|
||||
}
|
||||
var data = {
|
||||
monitors: monitors
|
||||
}
|
||||
$.post($.ccio.init('location',$user) + $user.auth_token + '/monitorStates/' + $user.ke + '/' + form.name + '/insert',{data:data},function(d){
|
||||
$.ccio.log(d)
|
||||
if(d.ok === true){
|
||||
$.monitorStates.loadPresets(function(){
|
||||
$.monitorStates.selector.val(form.name)
|
||||
})
|
||||
$.ccio.init('note',{title:lang.Success,text:d.msg,type:'success'})
|
||||
}
|
||||
})
|
||||
return false;
|
||||
})
|
||||
})
|
||||
</script>
|
||||
<script src="<%-window.libURL%>libs/js/dash2.monitorStates.js"></script>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -13,10 +13,10 @@
|
|||
<thead>
|
||||
<tr>
|
||||
<th><div class="checkbox"><input id="multimon_select_all" type="checkbox"><label for="multimon_select_all"></label></div></th>
|
||||
<th> </th>
|
||||
<th><%-lang['Name']%></th>
|
||||
<th><%-lang['Mode']%></th>
|
||||
<th> </th>
|
||||
<th> </th>
|
||||
<th><%-lang['Stream']%></th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -25,7 +25,7 @@
|
|||
</table>
|
||||
</form>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">Close</button>
|
||||
<button type="button" class="btn btn-default pull-left" data-dismiss="modal"><%-lang.Close%></button>
|
||||
<div>
|
||||
<a class="btn btn-danger delete"><%-lang['Delete']%></a>
|
||||
<a class="btn btn-primary save_config"><%-lang['Export']%></a>
|
||||
|
|
85
web/pages/blocks/powerVideo2.ejs
Normal file
85
web/pages/blocks/powerVideo2.ejs
Normal file
|
@ -0,0 +1,85 @@
|
|||
<!--Video File Window-->
|
||||
<div class="modal full fade dark" id="powerVideo" role="dialog" aria-labelledby="powerVideoLabel" aria-hidden="true">
|
||||
<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="powerVideoLabel"><i class="fa fa-map-marker"></i> <%-lang['Power Video Viewer']%><span style="display:none" class="_loading"> <i class="fa fa-pulse fa-spinner"></i></span></h4>
|
||||
</div>
|
||||
<div class="modal-body" style="overflow:inherit">
|
||||
<div class="row">
|
||||
<div class="col-md-4" id="powerVideoTabs" tab-chooser-parent>
|
||||
<div class="form-group-group grey text-center">
|
||||
<h4></h4>
|
||||
<div class="btn-group" id="powerVideoTabButtons">
|
||||
<button type="button" class="btn btn-primary btn-sm" tab-chooser="monitors"><%- lang.Monitors %></button>
|
||||
<button type="button" class="btn btn-primary btn-sm" tab-chooser="settings"><%- lang['Search Settings'] %></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group-group grey" tab-section="monitors" style="max-height:265px;overflow:auto;">
|
||||
<h4><%-lang.Monitors%></h4>
|
||||
<div id="powerVideoMonitorsList" class="list-group"></div>
|
||||
</div>
|
||||
<div class="form-group-group grey" tab-section="settings" style="display:none">
|
||||
<h4><%- lang['Search Settings'] %></h4>
|
||||
<div class="form-group">
|
||||
<label><%- lang['Date Range'] %></label>
|
||||
<input id="powerVideoDateRange" class="form-control"></input>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><%- lang['Video Limit'] %> <small>(<%- lang['Per Monitor'] %>)</small></label>
|
||||
<input id="powerVideoVideoLimit" class="form-control" placeholder="0"></input>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<div class="form-group">
|
||||
<label><%- lang['Event Limit'] %> <small>(<%- lang['Per Monitor'] %>)</small></label>
|
||||
<input id="powerVideoEventLimit" class="form-control" placeholder="500"></input>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div id="powerVideoMonitorViews"></div>
|
||||
<div id="powerVideoMonitorControls" class="text-center">
|
||||
<div class="btn-group">
|
||||
<button type="button" powerVideo-control="toggleZoom" class="btn btn-sm btn-default" title="<%- lang['Zoom In'] %>"> <i class="fa fa-search-plus"></i> </button>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<button type="button" powerVideo-control="previousVideoAll" class="btn btn-sm btn-default" title="<%- lang['Previous Video'] %>"> <i class="fa fa-arrow-circle-left"></i> </button>
|
||||
<button type="button" powerVideo-control="playAll" class="btn btn-sm btn-danger" title="<%- lang.Play %>"> <i class="fa fa-play"></i> </button>
|
||||
<button type="button" powerVideo-control="pauseAll" class="btn btn-sm btn-default" title="<%- lang.Pause %>"> <i class="fa fa-pause"></i> </button>
|
||||
<button type="button" powerVideo-control="nextVideoAll" class="btn btn-sm btn-default" title="<%- lang['Next Video'] %>"> <i class="fa fa-arrow-circle-right"></i> </button>
|
||||
</div>
|
||||
<div class="btn-group" style="font-family: monospace;">
|
||||
<button type="button" powerVideo-control="playSpeedAll" data-speed="1" class="btn btn-sm btn-default">1</button>
|
||||
<button type="button" powerVideo-control="playSpeedAll" data-speed="5" class="btn btn-sm btn-default">5</button>
|
||||
<button type="button" powerVideo-control="playSpeedAll" data-speed="10" class="btn btn-sm btn-default">10</button>
|
||||
<button type="button" powerVideo-control="playSpeedAll" data-speed="15" class="btn btn-sm btn-default">15</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-12" style="margin-top:10px;">
|
||||
<div id="powerVideoTimelineStrips">
|
||||
<div class="loading"><i class="fa fa-hand-pointer-o"></i><div class="epic-text"><%- lang['Select a Monitor'] %></div></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal"><%-lang['Close']%></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/vis.min.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.powerVideo2.css">
|
||||
<script src="<%-window.libURL%>libs/js/vis.min.js" async></script>
|
||||
<script src="<%-window.libURL%>libs/js/dash2.powerVideo2.js" async></script>
|
|
@ -69,7 +69,7 @@
|
|||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Camera Password']%></span></div>
|
||||
<div><input class="form-control" name="pass"></div>
|
||||
<div><input class="form-control" type="password" name="pass"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group text-right">
|
||||
|
|
|
@ -35,16 +35,195 @@
|
|||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Timezone Offset']%></span></div>
|
||||
<div><select class="form-control" name="timezone">
|
||||
<% [
|
||||
{
|
||||
"text": "UTC−12:00, Y",
|
||||
"value": -720
|
||||
},
|
||||
{
|
||||
"text": "UTC−11:00, X",
|
||||
"value": -660
|
||||
},
|
||||
{
|
||||
"text": "UTC−10:00, W",
|
||||
"value": -600
|
||||
},
|
||||
{
|
||||
"text": "UTC−09:30, V†",
|
||||
"value": -570
|
||||
},
|
||||
{
|
||||
"text": "UTC−09:00, V",
|
||||
"value": -540
|
||||
},
|
||||
{
|
||||
"text": "UTC−08:00, U",
|
||||
"value": -480
|
||||
},
|
||||
{
|
||||
"text": "UTC−07:00, T",
|
||||
"value": -420
|
||||
},
|
||||
{
|
||||
"text": "UTC−06:00, S",
|
||||
"value": -360
|
||||
},
|
||||
{
|
||||
"text": "UTC−05:00, R",
|
||||
"value": -300
|
||||
},
|
||||
{
|
||||
"text": "UTC−04:00, Q",
|
||||
"value": -240
|
||||
},
|
||||
{
|
||||
"text": "UTC−03:30, P†",
|
||||
"value": -210
|
||||
},
|
||||
{
|
||||
"text": "UTC−03:00, P",
|
||||
"value": -180
|
||||
},
|
||||
{
|
||||
"text": "UTC−02:00, O",
|
||||
"value": -120
|
||||
},
|
||||
{
|
||||
"text": "UTC−01:00, N",
|
||||
"value": -60
|
||||
},
|
||||
{
|
||||
"text": "UTC±00:00, Z",
|
||||
"value": 0,
|
||||
"selected": true
|
||||
},
|
||||
{
|
||||
"text": "UTC+01:00, A",
|
||||
"value": 60
|
||||
},
|
||||
{
|
||||
"text": "UTC+02:00, B",
|
||||
"value": 120
|
||||
},
|
||||
{
|
||||
"text": "UTC+03:00, C",
|
||||
"value": 180
|
||||
},
|
||||
{
|
||||
"text": "UTC+03:30, C†",
|
||||
"value": 210
|
||||
},
|
||||
{
|
||||
"text": "UTC+04:00, D",
|
||||
"value": 240
|
||||
},
|
||||
{
|
||||
"text": "UTC+04:30, D†",
|
||||
"value": 270
|
||||
},
|
||||
{
|
||||
"text": "UTC+05:00, E",
|
||||
"value": 300
|
||||
},
|
||||
{
|
||||
"text": "UTC+05:30, E†",
|
||||
"value": 330
|
||||
},
|
||||
{
|
||||
"text": "UTC+05:45, E*",
|
||||
"value": 345
|
||||
},
|
||||
{
|
||||
"text": "UTC+06:00, F",
|
||||
"value": 360
|
||||
},
|
||||
{
|
||||
"text": "UTC+06:30, F†",
|
||||
"value": 390
|
||||
},
|
||||
{
|
||||
"text": "UTC+07:00, G",
|
||||
"value": 420
|
||||
},
|
||||
{
|
||||
"text": "UTC+08:00, H",
|
||||
"value": 480
|
||||
},
|
||||
{
|
||||
"text": "UTC+08:45, H*",
|
||||
"value": 525
|
||||
},
|
||||
{
|
||||
"text": "UTC+09:00, I",
|
||||
"value": 540
|
||||
},
|
||||
{
|
||||
"text": "UTC+09:30, I†",
|
||||
"value": 570
|
||||
},
|
||||
{
|
||||
"text": "UTC+10:00, K",
|
||||
"value": 600
|
||||
},
|
||||
{
|
||||
"text": "UTC+10:30, K†",
|
||||
"value": 630
|
||||
},
|
||||
{
|
||||
"text": "UTC+11:00, L",
|
||||
"value": 660
|
||||
},
|
||||
{
|
||||
"text": "UTC+12:00, M",
|
||||
"value": 720
|
||||
},
|
||||
{
|
||||
"text": "UTC+12:45, M*",
|
||||
"value": 765
|
||||
},
|
||||
{
|
||||
"text": "UTC+13:00, M†",
|
||||
"value": 780
|
||||
},
|
||||
{
|
||||
"text": "UTC+14:00, M†",
|
||||
"value": 840
|
||||
}
|
||||
].forEach(function(option){
|
||||
var selected = ''
|
||||
if(option.selected)selected = 'selected'
|
||||
%>
|
||||
<option value="<%- option.value %>" <%- selected %>><%- option.text %></option>
|
||||
<% }) %>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Start']%></span></div>
|
||||
<div><input class="form-control" name="start" placeholder="HH:ss"></div>
|
||||
<div><input class="form-control" name="start" placeholder="HH:mm"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['End']%></span></div>
|
||||
<div><input class="form-control" name="end" placeholder="HH:ss"></div>
|
||||
<div><input class="form-control" name="end" placeholder="HH:mm"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Days']%></span></div>
|
||||
<div><select class="form-control" style="min-height:100px" multiple name="days">
|
||||
<option value="0"><%- lang.Sunday %></option>
|
||||
<option value="1"><%- lang.Monday %></option>
|
||||
<option value="2"><%- lang.Tuesday %></option>
|
||||
<option value="3"><%- lang.Wednesday %></option>
|
||||
<option value="4"><%- lang.Thursday %></option>
|
||||
<option value="5"><%- lang.Friday %></option>
|
||||
<option value="6"><%- lang.Saturday %></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Monitor States']%></span></div>
|
||||
<div><select class="form-control" style="min-height:100px" multiple name="monitorStates">
|
||||
|
@ -60,120 +239,4 @@
|
|||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(document).ready(function(){
|
||||
$.schedules = {
|
||||
e: $('#schedules'),
|
||||
selector: $('#schedulesSelector'),
|
||||
loadedMonitorStates: {},
|
||||
loadedSchedules: {}
|
||||
}
|
||||
$.schedules.f = $.schedules.e.find('form')
|
||||
$.schedules.selectedStates = $.schedules.e.find('[name="monitorStates"]')
|
||||
$.schedules.loadSchedules = function(callback){
|
||||
$.get($.ccio.init('location',$user) + $user.auth_token + '/schedule/' + $user.ke,function(d){
|
||||
console.log(d)
|
||||
var html = ''
|
||||
$.each(d.schedules,function(n,v){
|
||||
$.schedules.loadedSchedules[v.name] = v
|
||||
html += $.ccio.tm('option',{
|
||||
id: v.name,
|
||||
name: v.name
|
||||
})
|
||||
})
|
||||
$.schedules.selector.find('optgroup').html(html)
|
||||
if(callback)callback()
|
||||
})
|
||||
}
|
||||
$.schedules.loadMonitorStates = function(){
|
||||
$.get($.ccio.init('location',$user) + $user.auth_token + '/monitorStates/' + $user.ke,function(d){
|
||||
var html = ''
|
||||
$.each(d.presets,function(n,v){
|
||||
$.schedules.loadedMonitorStates[v.name] = v
|
||||
html += $.ccio.tm('option',{
|
||||
id: v.name,
|
||||
name: v.name
|
||||
})
|
||||
})
|
||||
$.schedules.selectedStates.html(html)
|
||||
})
|
||||
}
|
||||
$.schedules.e.on('shown.bs.modal', function (e) {
|
||||
$.schedules.loadMonitorStates()
|
||||
$.schedules.loadSchedules()
|
||||
})
|
||||
$.schedules.e.on('click','.delete',function(e){
|
||||
$.confirm.e.modal('show');
|
||||
$.confirm.title.text(lang['Delete Monitor States Preset']);
|
||||
$.confirm.body.html(lang.deleteMonitorStateText1);
|
||||
$.confirm.click({title:'Delete',class:'btn-danger'},function(){
|
||||
var form = $.schedules.f.serializeObject()
|
||||
$.post($.ccio.init('location',$user) + $user.auth_token + '/schedule/' + $user.ke + '/' + form.name + '/delete',function(d){
|
||||
$.ccio.log(d)
|
||||
if(d.ok === true){
|
||||
$.schedules.loadSchedules()
|
||||
$.ccio.init('note',{title:lang.Success,text:d.msg,type:'success'})
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
||||
$.schedules.selector.change(function(e){
|
||||
var selected = $(this).val()
|
||||
var loaded = $.schedules.loadedSchedules[selected]
|
||||
var namespace = $.schedules.e.find('[name="name"]')
|
||||
var deleteButton = $.schedules.e.find('.delete')
|
||||
$.schedules.selectedStates.find('option:selected').removeAttr('selected')
|
||||
if(loaded){
|
||||
namespace.val(loaded.name)
|
||||
var html = ''
|
||||
$.each(loaded,function(n,v){
|
||||
$.schedules.f.find('[name="' + n + '"]').val(v)
|
||||
})
|
||||
$.each(loaded.details.monitorStates,function(n,v){
|
||||
$.schedules.selectedStates.find('option[value="' + v + '"]').prop('selected',true)
|
||||
})
|
||||
deleteButton.show()
|
||||
}else{
|
||||
namespace.val('')
|
||||
deleteButton.hide()
|
||||
}
|
||||
})
|
||||
$.schedules.f.submit(function(e){
|
||||
e.preventDefault()
|
||||
var el = $(this)
|
||||
var form = el.serializeObject()
|
||||
var monitors = []
|
||||
var failedToParseAJson = false
|
||||
var rows = $.monitorStates.monitors.find('.state-monitor-row')
|
||||
if(form.name === ''){
|
||||
return $.ccio.init('note',{title:lang['Invalid Data'],text:lang['Name cannot be empty.'],type:'error'})
|
||||
}
|
||||
if(form.start === ''){
|
||||
return $.ccio.init('note',{title:lang['Invalid Data'],text:lang['Start Time cannot be empty.'],type:'error'})
|
||||
}
|
||||
if(form.monitorStates instanceof Array === false){
|
||||
form.monitorStates = [form.monitorStates]
|
||||
}
|
||||
console.log(form.monitorStates)
|
||||
|
||||
var data = {
|
||||
start: form.start,
|
||||
end: form.end,
|
||||
enabled: form.enabled,
|
||||
details:{
|
||||
monitorStates: form.monitorStates
|
||||
}
|
||||
}
|
||||
$.post($.ccio.init('location',$user) + $user.auth_token + '/schedule/' + $user.ke + '/' + form.name + '/insert',{data:data},function(d){
|
||||
$.ccio.log(d)
|
||||
if(d.ok === true){
|
||||
$.schedules.loadSchedules(function(){
|
||||
$.schedules.selector.val(form.name)
|
||||
})
|
||||
$.ccio.init('note',{title:lang.Success,text:d.msg,type:'success'})
|
||||
}
|
||||
})
|
||||
return false;
|
||||
})
|
||||
})
|
||||
</script>
|
||||
<script src="<%-window.libURL%>libs/js/dash2.schedules.js"></script>
|
||||
|
|
|
@ -10,6 +10,11 @@
|
|||
<h4 class="modal-title" id="settingsLabel"><i class="fa fa-gears"></i> <%-lang.Settings%></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="row">
|
||||
<div class="col-md-2 hidden-xs follow-list">
|
||||
<ul class="affix"></ul>
|
||||
</div>
|
||||
<div class="col-md-10">
|
||||
<div class="text-center msg"></div>
|
||||
<div class="form-group-group green">
|
||||
<h4><%-lang['Account Info']%></h4>
|
||||
|
@ -24,597 +29,251 @@
|
|||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group-group grey">
|
||||
<h4><%-lang['2-Factor Authentication']%></h4>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Enabled']%></span></div>
|
||||
<div><select class="form-control" detail="factorAuth">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Email%></span></div>
|
||||
<div><select class="form-control" detail="factor_mail">
|
||||
<option value="1" selected><%-lang.Yes%></option>
|
||||
<option value="0"><%-lang.No%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group u_discord_bot_input u_discord_bot_1">
|
||||
<label><div><span><%-lang.Discord%></span></div>
|
||||
<div><select class="form-control" detail="factor_discord">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group-group grey">
|
||||
<h4><%-lang.Profile%></h4>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Email%></span></div>
|
||||
<div><input class="form-control" type="email" name="mail"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Password%> <small><%-lang.blankPassword%></small></span></div>
|
||||
<div><input class="form-control" type="password" name="pass"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Password%> <%-lang.Again%></span></div>
|
||||
<div><input class="form-control" type="password" name="password_again"></div>
|
||||
</label>
|
||||
</div>
|
||||
<% if(!details.sub){ %>
|
||||
<% if(details.edit_size!=='0'){ %>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Max Storage Amount']%></span></div>
|
||||
<div><input class="form-control" detail="size" placeholder="10000"></div>
|
||||
</label>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if(details.edit_days!=='0'){ %>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Number of Days to keep']%> <%-lang.Videos%></span></div>
|
||||
<div><input class="form-control" detail="days" placeholder="5"></div>
|
||||
</label>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if(details.edit_event_days!=='0'){ %>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Number of Days to keep']%> <%-lang.Events%></span></div>
|
||||
<div><input class="form-control" detail="event_days" placeholder="10"></div>
|
||||
</label>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if(details.edit_log_days!=='0'){ %>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Number of Days to keep']%> <%-lang.Logs%></span></div>
|
||||
<div><input class="form-control" detail="log_days" placeholder="10"></div>
|
||||
</label>
|
||||
</div>
|
||||
<% } %>
|
||||
<% } %>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Dashboard Language']%></span></div>
|
||||
<div>
|
||||
<select class="form-control" detail="lang">
|
||||
<option value="" selected>Default</option>
|
||||
<% fs.readdirSync('./languages').forEach(function(v,n){
|
||||
v=v.replace('.json','') %>
|
||||
<option value="<%-v%>"><%-v%></option>
|
||||
<% }) %>
|
||||
</select>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Notification Sound']%></span></div>
|
||||
<div>
|
||||
<select class="form-control" detail="audio_note">
|
||||
<option value="" selected>No Sound</option>
|
||||
<% audioFiles.forEach(function(v,n){ %>
|
||||
<option value="<%-v%>"><%-v%></option>
|
||||
<%
|
||||
var buildOptions = function(field,possiblities){
|
||||
if(!field)console.error('field',field)
|
||||
var fieldElement = ''
|
||||
possiblities.forEach(function(option){
|
||||
if(option.optgroup){
|
||||
fieldElement += '<optgroup label="' + option.name + '">'
|
||||
fieldElement += buildOptions(field,option.optgroup)
|
||||
fieldElement += '</optgroup>'
|
||||
}else{
|
||||
var selected = ''
|
||||
if(option.value === field.default){
|
||||
selected = 'selected'
|
||||
}
|
||||
fieldElement += '<option value="' + option.value + '" ' + selected + '>' + option.name + '</option>'
|
||||
}
|
||||
})
|
||||
return fieldElement
|
||||
}
|
||||
var drawBlock = function(userSettings){
|
||||
if(userSettings.evaluation && !eval(userSettings.evaluation)){
|
||||
return
|
||||
}
|
||||
var attributes = []
|
||||
var styles = []
|
||||
var sectionClass = []
|
||||
var headerTitle = userSettings.headerTitle || lang[userSettings.name] || userSettings.name
|
||||
if(userSettings.hidden === true){
|
||||
styles.push('display:none')
|
||||
}
|
||||
if(userSettings.style){
|
||||
styles.push(userSettings.style)
|
||||
}
|
||||
if(userSettings.isSection === true){
|
||||
attributes.push('section')
|
||||
}
|
||||
if(userSettings.attribute){
|
||||
attributes.push(userSettings.attribute)
|
||||
}
|
||||
if(userSettings.id){
|
||||
attributes.push(`id="${userSettings.id}"`)
|
||||
}else{
|
||||
var userSettingsId
|
||||
if(userSettings.name){
|
||||
userSettingsId = userSettings.name.replace(/[^a-zA-Z ]/g, '').replace(/[^a-zA-Z ]/g, '').replace(/ /g, '')
|
||||
}else{
|
||||
userSettingsId = "NO NAME"
|
||||
}
|
||||
userSettings.id = userSettingsId
|
||||
attributes.push(`id="${userSettingsId}"`)
|
||||
}
|
||||
if(userSettings.color){
|
||||
sectionClass.push(userSettings.color)
|
||||
}
|
||||
if(userSettings['section-class']){
|
||||
sectionClass.push(userSettings['section-class'])
|
||||
}
|
||||
if(userSettings.isAdvanced){ %>
|
||||
<div class="h_us_input h_us_advanced">
|
||||
<% }
|
||||
if(userSettings['section-pre-pre-class']){ %>
|
||||
<div class="<%- userSettings['section-pre-pre-class'] %>">
|
||||
<% }
|
||||
if(userSettings['section-pre-class']){ %>
|
||||
<div class="<%- userSettings['section-pre-class'] %>">
|
||||
<% }
|
||||
%>
|
||||
<div <%- attributes.join(' ') %> style="<%- styles.join(';') %>" class="form-group-group <%- sectionClass.join(' ') %>">
|
||||
<h4 class="<%- userSettings.headerClass %>"><%- headerTitle %>
|
||||
<% if(userSettings.headerButtons){ %>
|
||||
<div class="pull-right">
|
||||
<% userSettings.headerButtons.forEach(function(button){ %>
|
||||
<a class="btn btn-success btn-xs <%- button.class %>">
|
||||
<% if(button.icon){ %><i class="fa fa-<%- button.icon %>"></i><% } %>
|
||||
<% if(button.text){ %><%- button.text %><% } %>
|
||||
</a>
|
||||
<% }) %>
|
||||
</select>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Alert Sound']%></span></div>
|
||||
<div>
|
||||
<select class="form-control" detail="audio_alert">
|
||||
<option value="" selected>No Sound</option>
|
||||
<% audioFiles.forEach(function(v,n){ %>
|
||||
<option value="<%-v%>"><%-v%></option>
|
||||
<% }) %>
|
||||
</select>
|
||||
</div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Alert Sound Delay']%></span></div>
|
||||
<div><input class="form-control" detail="audio_delay" placeholder="1"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Popout Monitor on Event']%></span></div>
|
||||
<div><select class="form-control" detail="event_mon_pop">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
</h4>
|
||||
<% if(userSettings['input-mapping']){ %>
|
||||
<div class="form-group-group forestgreen" style="display:none" input-mapping="<%- userSettings['input-mapping'] %>">
|
||||
<h4><%-lang['Input Feed']%>
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-success btn-xs add_map_row"><i class="fa fa-plus-square-o"></i></a>
|
||||
</div>
|
||||
</h4>
|
||||
<div class="choices"></div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if(userSettings.blockquote){ %>
|
||||
<blockquote class="<%- userSettings.blockquoteClass || '' %>">
|
||||
<%- userSettings.blockquote %>
|
||||
</blockquote>
|
||||
<% } %>
|
||||
|
||||
<%
|
||||
if(userSettings.blocks){
|
||||
userSettings.blocks.forEach(function(settingsBlock){
|
||||
drawBlock(settingsBlock)
|
||||
})
|
||||
}
|
||||
if(userSettings.info){
|
||||
userSettings.info.forEach(function(field){
|
||||
if(field.isFormGroupGroup === true){
|
||||
drawBlock(field)
|
||||
}else{
|
||||
if(field.notForSubAccount === true){
|
||||
var notForSubAccount = '!details.sub'
|
||||
if(!field.evaluation){
|
||||
field.evaluation = notForSubAccount
|
||||
}else{
|
||||
field.evaluation += ' && ' + notForSubAccount
|
||||
}
|
||||
}
|
||||
if(field.evaluation && !eval(field.evaluation)){
|
||||
return
|
||||
}
|
||||
var hidden = ''
|
||||
if(field.hidden === true){
|
||||
hidden = 'style="display:none"'
|
||||
}
|
||||
var fieldClass = []
|
||||
var attributes = []
|
||||
if(field.name && field.name.indexOf('detail=') > -1){
|
||||
attributes.push(field.name)
|
||||
}else if(field.name){
|
||||
attributes.push("name=" + field.name)
|
||||
}
|
||||
if(field.placeholder || field.default){
|
||||
attributes.push(`placeholder="${field.placeholder || field.default}"`)
|
||||
}else if(field.example){
|
||||
attributes.push(`placeholder="Example : ${field.example}"`)
|
||||
}
|
||||
if(field.attribute){
|
||||
attributes.push(field.attribute)
|
||||
}
|
||||
if(field.selector){
|
||||
attributes.push(`selector="${field.selector}"`)
|
||||
}
|
||||
if(field.id){
|
||||
attributes.push(`id="${field.id}"`)
|
||||
}
|
||||
if(field.class){
|
||||
fieldClass.push(`${field.class}`)
|
||||
}
|
||||
var possiblities = field.possible || []
|
||||
var fieldType = field.fieldType || 'text'
|
||||
var fieldElement = ''
|
||||
var preFill = field.preFill || ''
|
||||
switch(fieldType){
|
||||
case'btn':
|
||||
|
||||
fieldElement = `<a class="btn btn-block ${fieldClass.join(' ')}" ${attributes.join(' ')}>${field.btnContent}</a>`
|
||||
break;
|
||||
case'ul':
|
||||
fieldElement = `<ul ${attributes.join(' ')} class="${fieldClass.join(' ')}" ></ul>`
|
||||
break;
|
||||
case'div':
|
||||
fieldElement = `<div ${attributes.join(' ')} class="${fieldClass.join(' ')}" ></div>`
|
||||
break;
|
||||
case'number':
|
||||
if(field.numberMin){
|
||||
attributes.push(`min="${field.numberMin}"`)
|
||||
}
|
||||
if(field.numberMax){
|
||||
attributes.push(`max="${field.numberMax}"`)
|
||||
}
|
||||
fieldElement = '<div><input type="number" class="form-control" ' + attributes.join(' ') + '></div>'
|
||||
break;
|
||||
case'password':
|
||||
fieldElement = '<div><input type="password" class="form-control" ' + attributes.join(' ') + '></div>'
|
||||
break;
|
||||
case'text':
|
||||
fieldElement = `<div><input class="form-control" ${attributes.join(' ')} value="${preFill}"></div>`
|
||||
break;
|
||||
case'textarea':
|
||||
fieldElement = '<div><textarea class="form-control" ' + attributes.join(' ') + '></textarea></div>'
|
||||
break;
|
||||
case'select':
|
||||
fieldElement = '<div><select class="form-control" ' + attributes.join(' ') + '>'
|
||||
fieldElement += buildOptions(field,possiblities)
|
||||
fieldElement += '</select></div>'
|
||||
break;
|
||||
}
|
||||
if(field.isAdvanced){ %>
|
||||
<div class="h_us_input h_us_advanced">
|
||||
<% }
|
||||
if(field['form-group-class-pre-pre-layer']){ %>
|
||||
<div class="<%- field['form-group-class-pre-pre-layer'] %>">
|
||||
<% }
|
||||
if(field['form-group-class-pre-layer']){ %>
|
||||
<div class="<%- field['form-group-class-pre-layer'] %>">
|
||||
<% }
|
||||
if(fieldType === 'ul' || fieldType === 'div' || fieldType === 'btn'){ %>
|
||||
<%- fieldElement %>
|
||||
<% }else{ %>
|
||||
<div <%- hidden %> class="form-group <%- field['form-group-class'] %>">
|
||||
<label><div><span><%- field.field %>
|
||||
<% if(field.description){ %>
|
||||
<small><%- field.description %></small>
|
||||
<% } %>
|
||||
</span></div>
|
||||
<%- fieldElement %>
|
||||
</label>
|
||||
</div>
|
||||
<% }
|
||||
}
|
||||
if(field['form-group-class-pre-layer']){ %>
|
||||
</div>
|
||||
<% }
|
||||
if(field['form-group-class-pre-pre-layer']){ %>
|
||||
</div>
|
||||
<% }
|
||||
if(field.isAdvanced){ %>
|
||||
</div>
|
||||
<% }
|
||||
})
|
||||
}
|
||||
%>
|
||||
</div>
|
||||
<% if(!details.sub){ %>
|
||||
<div class="form-group-group blue">
|
||||
<h4 class="mon_groups">
|
||||
<%-lang['Monitor Groups']%>
|
||||
<div class="pull-right">
|
||||
<a class="btn btn-success btn-xs add"><i class="fa fa-plus"></i></a>
|
||||
<a class="btn btn-danger btn-xs delete"><i class="fa fa-trash-o"></i></a>
|
||||
</div>
|
||||
</h4>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Monitor Groups']%></span></div>
|
||||
<div><select class="form-control" id="settings_mon_groups"></select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Group Name']%></span></div>
|
||||
<div><input type="hidden" group="id">
|
||||
<input class="form-control" group="name"></div>
|
||||
</label>
|
||||
</div>
|
||||
<input type="hidden" detail="mon_groups">
|
||||
<%
|
||||
if(userSettings['section-pre-class']){ %>
|
||||
</div>
|
||||
<% if(details.use_webdav!=='0'){ %>
|
||||
<div class="form-group-group forestgreen">
|
||||
<h4><%-lang.WebDAV%></h4>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Autosave%></span></div>
|
||||
<div><select class="form-control" detail="webdav_save" selector="autosave_webdav">
|
||||
<option value="0"><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="autosave_webdav_input autosave_webdav_1">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.URL%></span></div>
|
||||
<div><input class="form-control" detail="webdav_url"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group col-md-12">
|
||||
<label><div><span><%-lang.Username%></span></div>
|
||||
<div><input class="form-control" detail="webdav_user"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group col-md-12">
|
||||
<label><div><span><%-lang.Password%></span></div>
|
||||
<div><input class="form-control" type="password" detail="webdav_pass"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Save Links to Database']%></span></div>
|
||||
<div><select class="form-control" detail="webdav_log" selector="h_webdavsld">
|
||||
<option value="0"><%-lang.No%></option>
|
||||
<option value="1" selected><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="h_webdavsld_input h_webdavsld_1">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Use Max Storage Amount']%></span></div>
|
||||
<div><select class="form-control" detail="use_webdav_size_limit" selector="h_webdavzl">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group h_webdavzl_input h_webdavzl_1">
|
||||
<label><div><span><%-lang['Max Storage Amount']%></span></div>
|
||||
<div><input class="form-control" placeholder="10000" detail="webdav_size_limit"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Save Directory']%></span></div>
|
||||
<div><input class="form-control" placeholder="/" detail="webdav_dir"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if(details.use_aws_s3!=='0'){ %>
|
||||
<div class="form-group-group forestgreen">
|
||||
<h4><%-lang['Amazon S3']%></h4>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Autosave%></span></div>
|
||||
<div><select class="form-control" detail="aws_s3_save" selector="autosave_aws_s3">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="autosave_aws_s3_input autosave_aws_s3_1">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Bucket%></span></div>
|
||||
<div><input class="form-control" detail="aws_s3_bucket" placeholder="Example : slippery-seal"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group col-md-12">
|
||||
<label><div><span><%-lang.aws_accessKeyId%></span></div>
|
||||
<div><input class="form-control" detail="aws_accessKeyId"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group col-md-12">
|
||||
<label><div><span><%-lang.aws_secretAccessKey%></span></div>
|
||||
<div><input class="form-control" type="password" detail="aws_secretAccessKey"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Region%></span></div>
|
||||
<div><select class="form-control" detail="aws_region">
|
||||
<option value="us-west-1" selected>US West (N. California)</option>
|
||||
<option value="us-west-2">US West (Oregon)</option>
|
||||
<option value="us-east-2">US East (Ohio)</option>
|
||||
<option value="us-east-1">US East (N. Virginia)</option>
|
||||
<option value="ap-south-1">Asia Pacific (Mumbai)</option>
|
||||
<option value="ap-northeast-2">Asia Pacific (Seoul)</option>
|
||||
<option value="ap-northeast-3">Asia Pacific (Osaka-Local)**</option>
|
||||
<option value="ap-southeast-1">Asia Pacific (Singapore)</option>
|
||||
<option value="ap-southeast-2">Asia Pacific (Sydney)</option>
|
||||
<option value="ap-northeast-1">Asia Pacific (Tokyo)</option>
|
||||
<option value="ca-central-1">Canada (Central)</option>
|
||||
<option value="cn-north-1">China (Beijing)</option>
|
||||
<option value="cn-northwest-1">China (Ningxia)</option>
|
||||
<option value="eu-central-1">EU (Frankfurt)</option>
|
||||
<option value="eu-west-1">EU (Ireland)</option>
|
||||
<option value="eu-west-2">EU (London)</option>
|
||||
<option value="eu-west-3">EU (Paris)</option>
|
||||
<option value="sa-east-1">South America (São Paulo)</option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Save Links to Database']%></span></div>
|
||||
<div><select class="form-control" detail="aws_s3_log" selector="h_s3sld">
|
||||
<option value="0"><%-lang.No%></option>
|
||||
<option value="1" selected><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="h_s3sld_input h_s3sld_1">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Use Max Storage Amount']%></span></div>
|
||||
<div><select class="form-control" detail="use_aws_s3_size_limit" selector="h_s3zl">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group h_s3zl_input h_s3zl_1">
|
||||
<label><div><span><%-lang['Max Storage Amount']%></span></div>
|
||||
<div><input class="form-control" placeholder="10000" detail="aws_s3_size_limit"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Save Directory']%></span></div>
|
||||
<div><input class="form-control" placeholder="" detail="aws_s3_dir"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if(details.use_bb_b2!=='0'){ %>
|
||||
<div class="form-group-group forestgreen">
|
||||
<h4><%-lang['Backblaze B2']%></h4>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Autosave%></span></div>
|
||||
<div><select class="form-control" detail="bb_b2_save" selector="autosave_bb_b2">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="autosave_bb_b2_input autosave_bb_b2_1">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Bucket%></span></div>
|
||||
<div><input class="form-control" detail="bb_b2_bucket" placeholder="Example : slippery-seal"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group col-md-12">
|
||||
<label><div><span><%-lang.accountId%></span></div>
|
||||
<div><input class="form-control" detail="bb_b2_accountId"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group col-md-12">
|
||||
<label><div><span><%-lang.applicationKey%></span></div>
|
||||
<div><input class="form-control" type="password" detail="bb_b2_applicationKey"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Save Links to Database']%></span></div>
|
||||
<div><select class="form-control" detail="bb_b2_log" selector="h_b2sld">
|
||||
<option value="0"><%-lang.No%></option>
|
||||
<option value="1" selected><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="h_b2sld_input h_b2sld_1">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Use Max Storage Amount']%></span></div>
|
||||
<div><select class="form-control" detail="use_bb_b2_size_limit" selector="h_b2zl">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group h_b2zl_input h_b2zl_1">
|
||||
<label><div><span><%-lang['Max Storage Amount']%></span></div>
|
||||
<div><input class="form-control" placeholder="10000" detail="bb_b2_size_limit"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Save Directory']%></span></div>
|
||||
<div><input class="form-control" placeholder="" detail="bb_b2_dir"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if(details.use_whcs!=='0'){ %>
|
||||
<div class="form-group-group forestgreen">
|
||||
<h4><%-lang['Wasabi Hot Cloud Storage']%></h4>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Autosave%></span></div>
|
||||
<div><select class="form-control" detail="whcs_save" selector="autosave_whcs">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="autosave_whcs_input autosave_whcs_1">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Bucket%></span></div>
|
||||
<div><input class="form-control" detail="whcs_bucket" placeholder="Example : slippery-seal"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="form-group col-md-12">
|
||||
<label><div><span><%-lang.aws_accessKeyId%></span></div>
|
||||
<div><input class="form-control" detail="whcs_accessKeyId"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group col-md-12">
|
||||
<label><div><span><%-lang.aws_secretAccessKey%></span></div>
|
||||
<div><input class="form-control" type="password" detail="whcs_secretAccessKey"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Region%></span></div>
|
||||
<div><select class="form-control" detail="whcs_region">
|
||||
<option value="us-west-1" selected>US West</option>
|
||||
<option value="us-east-1">US East</option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Save Links to Database']%></span></div>
|
||||
<div><select class="form-control" detail="whcs_log" selector="h_whcssld">
|
||||
<option value="0"><%-lang.No%></option>
|
||||
<option value="1" selected><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="h_whcssld_input h_whcssld_1">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Use Max Storage Amount']%></span></div>
|
||||
<div><select class="form-control" detail="use_whcs_size_limit" selector="h_whcszl">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group h_whcszl_input h_whcszl_1">
|
||||
<label><div><span><%-lang['Max Storage Amount']%></span></div>
|
||||
<div><input class="form-control" placeholder="10000" detail="whcs_size_limit"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Save Directory']%></span></div>
|
||||
<div><input class="form-control" placeholder="" detail="whcs_dir"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if(details.use_sftp!=='0'){ %>
|
||||
<div class="form-group-group forestgreen">
|
||||
<h4><%-lang['SFTP (SSH File Transfer)']%></h4>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Autosave%></span></div>
|
||||
<div><select class="form-control" detail="sftp_save" selector="autosave_sftp">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="autosave_sftp_input autosave_sftp_1">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Host%></span></div>
|
||||
<div><input class="form-control" detail="sftp_host"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Port%></span></div>
|
||||
<div><input class="form-control" type="text" detail="sftp_port"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Username%></span></div>
|
||||
<div><input class="form-control" type="text" detail="sftp_username"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Password%></span></div>
|
||||
<div><input class="form-control" type="password" detail="sftp_password"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.privateKey%></span></div>
|
||||
<div><textarea class="form-control" type="password" detail="sftp_privateKey"></textarea></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Save Directory']%></span></div>
|
||||
<div><input class="form-control" placeholder="" detail="sftp_dir"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if(details.use_discordbot!=='0'){ %>
|
||||
<div class="form-group-group forestgreen">
|
||||
<h4><%-lang['Discord Bot']%></h4>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Enabled%></span></div>
|
||||
<div><select class="form-control" detail="discordbot" selector="u_discord_bot">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="u_discord_bot_input u_discord_bot_1">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Token%></span></div>
|
||||
<div><input type="password" class="form-control" placeholder="XXXXXXXXXXXXXXXXXXXXXXXX.XXXXXXXXXXXXXXX_XXXXXXXXXXXXXXXXXX" detail="discordbot_token"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Channel ID']%></span></div>
|
||||
<div><input class="form-control" placeholder="xxxxxxxxxxxxxxxxxx" detail="discordbot_channel"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% if(details.use_ldap!=='0'){ %>
|
||||
<div class="form-group-group forestgreen">
|
||||
<h4><%-lang.LDAP%></h4>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Enable%></span></div>
|
||||
<div><select class="form-control" detail="ldap_enable" selector="ldap_i">
|
||||
<option value="0"><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="ldap_i_input ldap_i_1" style="display:none">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.URL%></span></div>
|
||||
<div><input class="form-control" detail="ldap_url"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['bindDN']%></span></div>
|
||||
<div><input class="form-control" detail="ldap_bindDN" placeholder="<%-lang.Example%> : cn=admin,dc=test,dc=com"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Bind Credentials']%></span></div>
|
||||
<div><input class="form-control" detail="ldap_bindCredentials"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Search Filter']%></span></div>
|
||||
<div><input class="form-control" detail="ldap_searchFilter" placeholder="cn={{username}}"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Search Base']%></span></div>
|
||||
<div><input class="form-control" detail="ldap_searchBase" placeholder="dc=test,dc=com"></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<% } %>
|
||||
<div class="form-group-group navy">
|
||||
<h4><%-lang.Preferences%></h4>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.CSS%></span></div>
|
||||
<div><textarea class="form-control" placeholder="#main_header{background:#b59f00}" detail="css"></textarea></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Force Monitors Per Row']%></span></div>
|
||||
<div><select class="form-control" localStorage="montage_use" selector="st_force_mon_rows">
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group st_force_mon_rows_input st_force_mon_rows_1">
|
||||
<label><div><span><%-lang['Monitors per row']%></span></div>
|
||||
<div><input class="form-control" placeholder="3" localStorage="montage"></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Browser Console Log']%></span></div>
|
||||
<div><select class="form-control" localStorage="browserLog">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Get Logs to Client']%></span></div>
|
||||
<div><select class="form-control" detail="get_server_log">
|
||||
<option value="1" selected><%-lang.Yes%></option>
|
||||
<option value="0"><%-lang.No%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Show Thumbnails in Video List']%></span></div>
|
||||
<div><select class="form-control" localStorage="showThumbnail">
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Themes']%></span></div>
|
||||
<div><select class="form-control" detail="theme">
|
||||
<option value="" selected>Default</option>
|
||||
<% fs.readdirSync(__dirname+'/web/libs/themes').forEach(function(v){ %>
|
||||
<option value="<%-v%>"><%-v%></option>
|
||||
<% }) %>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<% }
|
||||
if(userSettings['section-pre-pre-class']){ %>
|
||||
</div>
|
||||
<% }
|
||||
if(userSettings.isAdvanced){ %>
|
||||
</div>
|
||||
<% }
|
||||
}
|
||||
%>
|
||||
<% Object.keys(define['Account Settings'].blocks).forEach(function(blockKey){
|
||||
var accountSettings = define['Account Settings'].blocks[blockKey]
|
||||
drawBlock(accountSettings)
|
||||
}) %>
|
||||
<div class="form-group-group green linkShinobi">
|
||||
<h4><%-lang['Link Shinobi']%><div class="pull-right"><a class="btn btn-success btn-xs add"><i class="fa fa-plus"></i></a></div></h4>
|
||||
<div id="linkShinobi"></div>
|
||||
</div>
|
||||
<input type="hidden" name="details">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default pull-left" data-dismiss="modal"><i class="fa fa-times"></i> <%-lang.Close%></button>
|
||||
<button type="submit" class="btn btn-success"><i class="fa fa-check"></i> <%-lang.Save%></button>
|
||||
|
|
|
@ -15,32 +15,40 @@
|
|||
<div class="form-group">
|
||||
<label><div><span><%-lang['All Monitors and Privileges']%></span></div>
|
||||
<div><select class="form-control" detail="allmonitors">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group permission-view">
|
||||
<label><div><span><%-lang['Can Create and Delete Monitors']%></span></div>
|
||||
<div><select class="form-control" detail="monitor_create">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group permission-view">
|
||||
<label><div><span><%-lang['Can Change User Settings']%></span></div>
|
||||
<div><select class="form-control" detail="user_change">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Can View Logs']%></span></div>
|
||||
<div><select class="form-control" detail="view_logs">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Landing Page']%></span></div>
|
||||
<div><select class="form-control" detail="landing_page">
|
||||
<option value="" selected><%-lang.Default%></option>
|
||||
<option value="timelapse"><%-lang.Timelapse %></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
|
@ -57,8 +65,8 @@
|
|||
<div class="form-group">
|
||||
<label><div><span><%- v.name %></span></div>
|
||||
<div><select class="form-control" monitor="monitors" mid="<%- v.mid %>">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
|
@ -76,8 +84,8 @@
|
|||
<div class="form-group">
|
||||
<label><div><span><%- v.name %></span></div>
|
||||
<div><select class="form-control" monitor="monitor_edit" mid="<%- v.mid %>">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
|
@ -95,8 +103,8 @@
|
|||
<div class="form-group">
|
||||
<label><div><span><%- v.name %></span></div>
|
||||
<div><select class="form-control" monitor="video_view" mid="<%- v.mid %>">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
|
@ -114,8 +122,8 @@
|
|||
<div class="form-group">
|
||||
<label><div><span><%- v.name %></span></div>
|
||||
<div><select class="form-control" monitor="video_delete" mid="<%- v.mid %>">
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
<option value="0" selected><%-lang.No%></option>
|
||||
<option value="1"><%-lang.Yes%></option>
|
||||
</select></div>
|
||||
</label>
|
||||
</div>
|
||||
|
@ -129,4 +137,4 @@
|
|||
<input type="hidden" name="details">
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,81 +1,66 @@
|
|||
<!--Timelapse Window-->
|
||||
<div class="modal full fade dark" id="timelapse" role="dialog" aria-labelledby="timelapseLabel" aria-hidden="true">
|
||||
<div class="modal full fade dark" id="timelapsejpeg" role="dialog" aria-labelledby="timelapsejpegLabel" aria-hidden="true">
|
||||
<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="timelapseLabel"><i class="fa fa-angle-double-right"></i> <span><%-lang['Time-lapse Tool']%></span></h4>
|
||||
</div>
|
||||
<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="timelapsejpegLabel"><i class="fa fa-angle-double-right"></i> <span><%-lang['Timelapse']%></span></h4>
|
||||
</div>
|
||||
<div class="modal-body text-center">
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="timelapse_hud">
|
||||
<div class="timelapse_playRate hover-hide"></div>
|
||||
<div class="controlBar hover-hide">
|
||||
<div class="form-group">
|
||||
<div class="progress" id="timelapse_seekBar">
|
||||
<div class="progress-bar progress-bar-warning" role="progressbar" style="width:0%"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<div class="form-group monospace">
|
||||
<div class="btn-group timelapseSpeedUseBasicSwitch">
|
||||
<a timelapse="stepBackBack" class="active btn btn-primary"> <i class="fa fa-backward"></i> </a>
|
||||
<a timelapse="stepBack" class="btn btn-primary"> <i class="fa fa-arrow-circle-o-left"></i> </a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a timelapse="play" class="btn btn-default"> <i class="fa fa-play"></i> </a>
|
||||
<a timelapse="mute" class="btn btn-default"> <i class="fa fa-volume-up"></i> </a>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a timelapse="stepFront" class="btn btn-primary"> <i class="fa fa-arrow-circle-o-right"></i> </a>
|
||||
<a timelapse="stepFrontFront" class="active btn btn-primary"> <i class="fa fa-forward"></i> </a>
|
||||
</div>
|
||||
<a timelapse="download" class="btn btn-info"> <i class="fa fa-download"></i> </a>
|
||||
<div class="btn-group">
|
||||
<a timelapse="setPlayBackRate" playRate="1" class="btn btn-default">1</a>
|
||||
<a timelapse="setPlayBackRate" playRate="5" class="btn btn-default">5</a>
|
||||
<a timelapse="setPlayBackRate" playRate="15" class="btn btn-default">15</a>
|
||||
</div>
|
||||
<div class="btn-group timelapseSpeedUseBasicSwitch">
|
||||
<a timelapse="setPlayBackRate" playRate="30" class="btn btn-default">30</a>
|
||||
<a timelapse="setPlayBackRate" playRate="60" class="btn btn-default">60</a>
|
||||
<a timelapse="setPlayBackRate" playRate="120" class="btn btn-default">120</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="marc-toggle abs-bot-left">
|
||||
<input title="<%-lang['Use HTML5 Play Method']%>" type="checkbox" id="timelapseSpeedUseBasic"/><label for="timelapseSpeedUseBasic"><%-lang['Use HTML5 Play Method']%></label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="fieldHolder text-left">
|
||||
<div class="form-group text-center">
|
||||
<%
|
||||
var logoImageLink
|
||||
if(config.logoLocation76x76.indexOf('//') === -1){
|
||||
logoImageLink = window.libURL + config.logoLocation76x76
|
||||
}else{
|
||||
logoImageLink = config.logoLocation76x76
|
||||
}
|
||||
%>
|
||||
<img src="<%- logoImageLink %>" style="<%- config.logoLocation76x76Style %>">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Monitor']%></span></div>
|
||||
<div><select class="form-control dark monitors_list"></select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Date']%></span></div>
|
||||
<div><input type="text" id="timelapsejpeg_date" class="form-control" value="" /></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input id="timelapseJpegFps" data-slider-id='timelapseJpegFps' type="text"
|
||||
data-slider-min="1" data-slider-max="30" data-slider-step="1" data-slider-value="30" value="30"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<!-- <div class="btn-group"> -->
|
||||
<!-- <a class="btn btn-primary download_mp4"><%-lang['Build']%></a> -->
|
||||
<a class="btn btn-danger btn-block download_mp4"><%-lang['Download']%></a>
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
<div id="timelapse_video_display"></div>
|
||||
</div>
|
||||
<div class="">
|
||||
</div>
|
||||
<div class="frameIcons row scroll-style-6"></div>
|
||||
</div>
|
||||
<div class="col-md-8 frameStripContainer contained">
|
||||
<div class="playBackView"><img></div>
|
||||
<div class="liveStreamView"></div>
|
||||
</div>
|
||||
<form class="col-md-4">
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang.Monitor%></span></div>
|
||||
<div><select class="form-control monitors_list"></select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Date Range']%></span></div>
|
||||
<div><input type="text" id="timelapse_daterange" class="form-control" value="" /></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<ul id="timelapse_video_line" class="list-group"></ul>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal"><%-lang.Close%></button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal"><%-lang.Close%></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script src="<%-window.libURL%>libs/js/dash2.timelapse.js"></script>
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.timelapse.jpeg.css">
|
||||
<script src="<%-window.libURL%>libs/js/dash2.timelapse.jpeg.js"></script>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<% include blocks/header %>
|
||||
<script>var $user = <%- JSON.stringify($user) %>;</script>
|
||||
<script>var lang = <%- JSON.stringify(lang) %>;</script>
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/roboto.css" type="text/css" />
|
||||
<script>var addStorage = <%- JSON.stringify(addStorage) %>;</script>
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/material-design-iconic-font.min.css" type="text/css" />
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/pnotify.custom.min.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/vbox.css">
|
||||
|
@ -16,19 +16,19 @@
|
|||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/gridstack.min.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/gridstack-extra.min.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/bootstrap-table.min.css">
|
||||
<!--
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/bootstrap-slider.min.css">
|
||||
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.basic.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.misc.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.monitors.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.monitorStates.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.forms.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.modal.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.monitors.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.powervideo.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.ptzcontrols.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.regioneditor.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.rightotleft.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.timelapse.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/main.dash2.css">
|
||||
-->
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/main.dash2.old.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.righttoleft.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.sidemenu.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.darktheme.css">
|
||||
<% customAutoLoad.LibsCss.forEach(function(lib){ %>
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/<%-lib%>">
|
||||
<% }) %>
|
||||
|
@ -56,7 +56,7 @@
|
|||
<ul class="nav navbar-nav">
|
||||
<li title="<%-lang['Toggle Sidebar']%>" class_toggle="hide-side" data-target=".mdl-js-layout"><a> <i class="fa fa-bars"></i> </a></li>
|
||||
<li title="<%-lang['Add Monitor']%>" mid="" ke="" class="hidden-xs permission_monitor_create"><a monitor="edit"> <i class="fa fa-plus"></i> </a></li>
|
||||
<li title="<%-lang['Power Video Viewer']%>" class="hidden-xs" mid="" ke=""><a monitor="powerview"> <i class="fa fa-map-marker"></i> </a></li>
|
||||
<li title="<%-lang['Power Video Viewer']%>" class="hidden-xs" data-toggle="modal" data-target="#powerVideo"><a> <i class="fa fa-map-marker"></i> </a></li>
|
||||
<li>
|
||||
<a title="<%-lang['Monitor Groups']%>" id="group_list_button" class="mdl-js-button"> <i class="fa fa-video-camera"></i> </a>
|
||||
<ul class="mdl-menu mdl-menu--bottom-left mdl-js-menu mdl-js-ripple-effect" for="group_list_button" id="group_list"></ul>
|
||||
|
@ -101,16 +101,31 @@
|
|||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
<li role="presentation" class="dropdown">
|
||||
<li role="presentation" class="dropdown hidden-xs">
|
||||
<a href="javascript:;" class="dropdown-toggle info-number" data-toggle="dropdown" aria-expanded="true"> <i class="fa fa-group"></i> </a>
|
||||
<ul id="users_online" class="dropdown-menu list-unstyled msg_list scrollable" role="menu"></ul>
|
||||
</li>
|
||||
<!--
|
||||
|
||||
<li role="presentation" class="dropdown">
|
||||
<a href="javascript:;" class="dropdown-toggle info-number" data-toggle="dropdown" aria-expanded="true"> <i class="fa fa-info-circle"></i> </a>
|
||||
<ul id="notifications" class="dropdown-menu list-unstyled msg_list scrollable" role="menu"></ul>
|
||||
<a href="javascript:;" class="dropdown-toggle info-number" data-toggle="dropdown" aria-expanded="true"> <i class="fa fa-hdd-o"></i> </a>
|
||||
<ul id="diskUsedList" class="dropdown-menu list-unstyled msg_list scrollable" role="menu">
|
||||
<% addStorage.forEach(function(storage){ %>
|
||||
<li class="log-item" storage="<%- storage.name %>">
|
||||
<span>
|
||||
<div class="title"><%- storage.name %></div>
|
||||
<span class="pull-right percent"></span>
|
||||
<label><span class="value"></span></label>
|
||||
</span>
|
||||
<div class="message">
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-warning" role="progressbar"></div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
<% }) %>
|
||||
</ul>
|
||||
</li>
|
||||
-->
|
||||
|
||||
<li role="presentation" class="dropdown">
|
||||
<a href="javascript:;" class="dropdown-toggle info-number" data-toggle="dropdown" aria-expanded="true"> <i class="fa fa-exclamation-triangle"></i> </a>
|
||||
<ul id="logs" class="dropdown-menu list-unstyled msg_list scrollable" role="menu">
|
||||
|
@ -125,8 +140,8 @@
|
|||
<button id="accbtn" style="color:#fff" class="mdl-button mdl-js-button mdl-js-ripple-effect"><i class="fa fa-caret-down"></i> <span class="usermail"></span></button>
|
||||
<ul class="mdl-menu mdl-menu--bottom-left mdl-js-menu mdl-js-ripple-effect" for="accbtn">
|
||||
<li class="mdl-menu__item" data-toggle="modal" data-target="#multi_mon"><div><i class="fa fa-clone"></i><div><%- lang['Monitors'] %></div></div></li>
|
||||
<li class="mdl-menu__item" mid="" ke=""><div class="flex" monitor="powerview"><i class="fa fa-map-marker"></i><div><%- lang['Power Viewer'] %></div></div></li>
|
||||
<li class="mdl-menu__item" mid="" ke=""><div class="flex" monitor="timelapse"><i class="fa fa-angle-double-right"></i><div><%- lang['Time-lapse'] %></div></div></li>
|
||||
<li class="mdl-menu__item" data-toggle="modal" data-target="#powerVideo"><div><i class="fa fa-map-marker"></i><div><%- lang['Power Viewer'] %></div></div></li>
|
||||
<li class="mdl-menu__item" mid="" ke=""><div class="flex" monitor="timelapseJpeg"><i class="fa fa-angle-double-right"></i><div><%- lang['Timelapse'] %></div></div></li>
|
||||
<li class="mdl-menu__item permission_user_change" data-toggle="modal" data-target="#settings"><div><i class="fa fa-gears"></i><div><%- lang.Settings %></div></div></li>
|
||||
<li class="mdl-menu__item" data-toggle="modal" data-target="#apis"><div><i class="fa fa-code"></i><div><%- lang.API %></div></div></li>
|
||||
<% if(!details.sub){ %>
|
||||
|
@ -154,7 +169,7 @@
|
|||
</header>
|
||||
<nav class="demo-navigation mdl-navigation side-menu" id="left_menu">
|
||||
<div class="form-group col-md-12">
|
||||
<input class="form-control dark" placeholder="Search Monitors" id="monitors_list_search">
|
||||
<input class="form-control dark" placeholder="<%- lang.Search %> <%- lang.Monitors %>" id="monitors_list_search">
|
||||
</div>
|
||||
<div id="monitors_list" class="display-table"></div>
|
||||
<div class="mdl-layout-spacer"></div>
|
||||
|
@ -173,7 +188,6 @@
|
|||
<% include blocks/logs.ejs %>
|
||||
<% include blocks/settings.ejs %>
|
||||
<% include blocks/filters.ejs %>
|
||||
<% include blocks/powervideo.ejs %>
|
||||
<% include blocks/timelapse.ejs %>
|
||||
<% include blocks/videoview.ejs %>
|
||||
<% include blocks/monitoredit.ejs %>
|
||||
|
@ -183,6 +197,7 @@
|
|||
<% include blocks/monitorStates.ejs %>
|
||||
<% include blocks/schedules.ejs %>
|
||||
<% include blocks/confirm.ejs %>
|
||||
<% include blocks/help.ejs %>
|
||||
<% customAutoLoad.PageBlocks.forEach(function(block){ %>
|
||||
<%- include(block) %>
|
||||
<% }) %>
|
||||
|
@ -200,13 +215,16 @@
|
|||
<script src="<%-window.libURL%>libs/js/bootstrap-table.min.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/socket.io.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/fullcalendar.min.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/locale-all.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/hls.min.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/libde265.min.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/bootstrap-slider.min.js"></script>
|
||||
<script type="text/javascript" src="<%-window.libURL%>libs/js/flv.shinobi.js">;</script>
|
||||
<script src="<%-window.libURL%>libs/js/jszip.min.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/dash2.downloadAndZip.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/menu.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/clock.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/poseidon.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/Chart.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/clusterPoints.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/daterangepicker.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/jquery.canvasAreaDraw.js"></script>
|
||||
|
@ -228,3 +246,4 @@
|
|||
<script src="<%-window.libURL%>libs/js/<%-lib%>"></script>
|
||||
<% }) %>
|
||||
<% include blocks/help.ejs %>
|
||||
<% include blocks/powerVideo2.ejs %>
|
||||
|
|
|
@ -6,21 +6,30 @@
|
|||
<div class="row">
|
||||
<div class="col-md-6 col-md-offset-3">
|
||||
<div class="panel panel-login">
|
||||
<div class="panel-heading">
|
||||
<div class="panel-heading-shade">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<a href="http://shinobi.video" target="_blank">
|
||||
<img src="<%-window.libURL%>libs/img/icon/apple-touch-icon-76x76.png" style="border-radius:50%">
|
||||
</a>
|
||||
<% if(config.showLoginCardHeader === true){
|
||||
var logoImageLink
|
||||
if(config.logoLocation76x76.indexOf('//') === -1){
|
||||
logoImageLink = window.libURL + config.logoLocation76x76
|
||||
}else{
|
||||
logoImageLink = config.logoLocation76x76
|
||||
}
|
||||
%>
|
||||
<div class="panel-heading">
|
||||
<div class="panel-heading-shade">
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<a href="<%- config.logoLocation76x76Link %>" target="_blank">
|
||||
<img src="<%- logoImageLink %>" style="<%- config.logoLocation76x76Style %>">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% } %>
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<div class="col-lg-12">
|
||||
<form id="login-form" method="post" style="display: block;">
|
||||
<form id="login-form" method="post" style="display: block;margin:0">
|
||||
<input type="hidden" name="machineID" id="machineID" value="">
|
||||
<% var message,timeLeft;if(message){ %>
|
||||
<div class="form-group text-center monospace">
|
||||
|
@ -28,48 +37,68 @@
|
|||
</div>
|
||||
<% } %>
|
||||
<div class="form-group">
|
||||
<input type="text" name="mail" id="email" tabindex="1" class="monospace form-control" placeholder="Email" value="">
|
||||
<input type="text" name="mail" id="email" tabindex="1" class="monospace form-control" placeholder="<%- lang.Email %>" value="">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input type="password" name="pass" id="pass" tabindex="2" class="monospace form-control" placeholder="Password">
|
||||
<input type="password" name="pass" id="pass" tabindex="2" class="monospace form-control" placeholder="<%- lang.Password %>">
|
||||
</div>
|
||||
<div class="form-group f_i_input f_i_ldap" style="display:none">
|
||||
<input name="key" id="key" tabindex="2" class="monospace form-control" placeholder="Group Key">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-md-12 monospace" style="width:calc(100% - 48px)">
|
||||
<select class="form-control" name="function" selector="f_i">
|
||||
<% switch(screen){
|
||||
case'super': %>
|
||||
<option value="super"><%- lang.Superuser %></option>
|
||||
<% break;
|
||||
case'admin': %>
|
||||
<option value="admin"><%- lang.Admin %></option>
|
||||
<% break;
|
||||
default: %>
|
||||
<option value="dash" selected><%- lang.Dashboard %></option>
|
||||
<% if(config.productType==='Pro'){ %>
|
||||
<option value="ldap"><%- lang.LDAP %></option>
|
||||
<% } %>
|
||||
<option value="streamer"><%- lang.Streamer %></option>
|
||||
<option value="cam"><%- lang.Dashcam %> (<%- lang.Streamer %> v2)</option>
|
||||
<% break;
|
||||
} %>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-right" title="<%- lang['Remember Me'] %>" style="display:inline-block">
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="remember_me">
|
||||
<input type="checkbox" id="remember_me" value="1" name="remember" class="mdl-switch__input">
|
||||
<span class="monospace mdl-switch__label"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" style="margin:20px"></div>
|
||||
<div class="form-group">
|
||||
<% if(config.showLoginSelector === true){ %>
|
||||
<div class="form-group">
|
||||
<div class="row">
|
||||
<div class="col-md-12 monospace" style="width:calc(100% - 48px)">
|
||||
<select class="form-control" name="function" selector="f_i">
|
||||
<% switch(screen){
|
||||
case'super': %>
|
||||
<option value="super"><%- lang.Superuser %></option>
|
||||
<% break;
|
||||
case'admin': %>
|
||||
<option value="admin"><%- lang.Admin %></option>
|
||||
<% break;
|
||||
default: %>
|
||||
<option value="dash" selected><%- lang.Dashboard %></option>
|
||||
<% if(config.productType==='Pro'){ %>
|
||||
<option value="ldap"><%- lang.LDAP %></option>
|
||||
<% } %>
|
||||
<option value="streamer"><%- lang.Streamer %></option>
|
||||
<option value="cam"><%- lang.Dashcam %> (<%- lang.Streamer %> v2)</option>
|
||||
<% break;
|
||||
} %>
|
||||
</select>
|
||||
</div>
|
||||
<div class="text-right" title="<%- lang['Remember Me'] %>" style="display:inline-block">
|
||||
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="remember_me">
|
||||
<input type="checkbox" id="remember_me" value="1" name="remember" class="mdl-switch__input">
|
||||
<span class="monospace mdl-switch__label"></span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<% }else{ %>
|
||||
<select class="form-control" name="function" style="display:none">
|
||||
<% switch(screen){
|
||||
case'super': %>
|
||||
<option value="super"><%- lang.Superuser %></option>
|
||||
<% break;
|
||||
case'admin': %>
|
||||
<option value="admin"><%- lang.Admin %></option>
|
||||
<% break;
|
||||
default: %>
|
||||
<option value="dash" selected><%- lang.Dashboard %></option>
|
||||
<% break;
|
||||
} %>
|
||||
</select>
|
||||
<% } %>
|
||||
<div class="form-group" style="margin:0">
|
||||
<button type="submit" name="login-submit" id="login-submit" tabindex="4" class="btn btn-success btn-block"><%- lang.Login %></button>
|
||||
</div>
|
||||
<% if(config.showPoweredByShinobi){ %>
|
||||
<p style="<%- config.poweredByShinobiClass %>"><small><%- config.poweredByShinobi %></small></p>
|
||||
<% }else{ %>
|
||||
<!-- <%- config.poweredByShinobi %> -->
|
||||
<% } %>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -11,17 +11,22 @@
|
|||
<link href="<%-window.libURL%>libs/css/montserrat.css" rel="stylesheet" />
|
||||
<link href="<%-window.libURL%>libs/css/font-awesome.min.css" rel="stylesheet" />
|
||||
<!-- CSS Files -->
|
||||
<link href="<%-window.libURL%>libs/css/bootstrap4.min.css" rel="stylesheet" />
|
||||
<link href="<%-window.libURL%>libs/css/main.dash2.css" rel="stylesheet" />
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/bootstrap4.min.css" />
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/main.dash2.css" />
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/pnotify.custom.min.css">
|
||||
<link href="<%-window.libURL%>libs/css/now-ui-kit.css?v=1.1.0" rel="stylesheet" />
|
||||
<link href="<%-window.libURL%>libs/css/super-page.css" rel="stylesheet" />
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/now-ui-kit.css?v=1.1.0" />
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.basic.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.modal.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/dash2.forms.css">
|
||||
<link rel="stylesheet" href="<%-window.libURL%>libs/css/super-page.css" />
|
||||
<script src="<%-window.libURL%>libs/js/jquery.min.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/jquery-ui.min.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/basic.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/jquery.serialize.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/pnotify.custom.min.js"></script>
|
||||
<script src="<%-window.libURL%>libs/js/popper.min.js" type="text/javascript"></script>
|
||||
<script src="<%-window.libURL%>libs/js/bootstrap4.min.js" type="text/javascript"></script>
|
||||
<script src="<%-window.libURL%>libs/js/dash2.confirm.js" type="text/javascript"></script>
|
||||
<style>
|
||||
.form-group label>div:first-child{width:40%}
|
||||
.list-group li .form-group {margin:0}
|
||||
|
@ -67,16 +72,16 @@
|
|||
<div id="main-card" class="card">
|
||||
<ul class="nav nav-tabs nav-tabs-neutral justify-content-center bg-primary" id="tablist" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" data-toggle="tab" href="#accounts" role="tab">Accounts</a>
|
||||
<a class="nav-link active" data-toggle="tab" href="#accounts" role="tab"><%-lang['Accounts']%></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#config" role="tab">Configuration</a>
|
||||
<a class="nav-link" data-toggle="tab" href="#config" role="tab"><%-lang['Configuration']%></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#system" role="tab">Controls and Logs</a>
|
||||
<a class="nav-link" data-toggle="tab" href="#system" role="tab"><%-lang['Controls and Logs']%></a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" data-toggle="tab" href="#changeSuperPreferences" role="tab">Preferences</a>
|
||||
<a class="nav-link" data-toggle="tab" href="#changeSuperPreferences" role="tab"><%-lang['Preferences']%></a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="card-body">
|
||||
|
@ -89,7 +94,7 @@
|
|||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link add">
|
||||
<p><i class="fa fa-plus-square-o"></i> Add Account</p>
|
||||
<p><i class="fa fa-plus-square-o"></i> <%-lang['Add']%> <%-lang['Accounts']%></p>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
@ -128,7 +133,7 @@
|
|||
<ul class="navbar-nav">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" system="deleteLogs">
|
||||
<p><i class="fa fa-trash-o"></i> Clear Logs</p>
|
||||
<p><i class="fa fa-trash-o"></i> <%-lang['Delete']%> <%-lang['Logs']%></p>
|
||||
</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
|
@ -146,13 +151,7 @@
|
|||
<p><i class="fa fa-retweet"></i> <%-lang['Flush PM2 Logs']%></p>
|
||||
</a>
|
||||
</li>
|
||||
<!--
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" system="update">
|
||||
<p><i class="fa fa-arrow-up"></i> <%-lang['Update']%></p>
|
||||
</a>
|
||||
</li>
|
||||
-->
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -169,6 +168,15 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row text-center">
|
||||
<div class="col">
|
||||
<a href="https://gitlab.com/Shinobi-Systems/Shinobi/commit/<%- currentVersion %>" target="_blank">
|
||||
<small class="epic-text" style="font-weight: 700;color: #fff;letter-spacing: 2pt;">
|
||||
Current Version : <%- currentVersion %>
|
||||
</small>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -221,10 +229,12 @@ switch($user.lang){
|
|||
})
|
||||
break;
|
||||
}
|
||||
$.ccio.ws=io(location.origin,{
|
||||
$.ccio.ws = io(location.origin,{
|
||||
path : tool.checkCorrectPathEnding(location.pathname)+'socket.io'
|
||||
});
|
||||
$.ccio.cx=function(x){return $.ccio.ws.emit('super',x)}
|
||||
})
|
||||
$.ccio.cx = function(x){
|
||||
return $.ccio.ws.emit('super',x)
|
||||
}
|
||||
$.ccio.ws.on('connect',function(d){
|
||||
$.ccio.cx({f:'init',mail:$user.mail,pass:$user.pass})
|
||||
})
|
||||
|
@ -393,7 +403,7 @@ $.conf.f.submit(function(e){
|
|||
e.html='<p>This is a change being applied to the configuration file (conf.json). Are you sure you want to do this? You must restart Shinobi for these changes to take effect. <b>The JSON below is what you are about to save.</b></p>'
|
||||
e.html+='<pre>'+JSON.stringify($.parseJSON($.conf.draw.val()),null,3)+'</pre>'
|
||||
$.confirm.body.html(e.html)
|
||||
$.confirm.click({title:'Save',class:'btn-success'},function(){
|
||||
$.confirm.click({title:lang.Save,class:'btn-success'},function(){
|
||||
$.post('<%=originalURL%><%=config.webPaths.superApiPrefix%>'+$user.sessionKey+'/system/configure',{
|
||||
data: $.conf.draw.val()
|
||||
},function(data){
|
||||
|
@ -459,10 +469,10 @@ $.system.e.find('[system]').click(function(e){
|
|||
switch($(this).attr('system')){
|
||||
case'deleteLogs':
|
||||
$.confirm.e.modal('show');
|
||||
$.confirm.title.html('Delete Logs <small>'+e.u+'</small>')
|
||||
$.confirm.title.html('<%=lang['Delete Logs']%> <small>'+e.u+'</small>')
|
||||
e.html='Do you want to delete these logs? User logs will <b>not</b> be deleted.'
|
||||
$.confirm.body.html(e.html)
|
||||
$.confirm.click({title:'Delete',class:'btn-danger'},function(){
|
||||
$.confirm.click({title:lang.Delete,class:'btn-danger'},function(){
|
||||
// $.ccio.cx({f:'logs',ff:'delete',ke:'$'})
|
||||
$.get('<%=originalURL%><%=config.webPaths.superApiPrefix%>'+$user.sessionKey+'/logs/delete',function(data){
|
||||
console.log(data)
|
||||
|
@ -472,9 +482,9 @@ $.system.e.find('[system]').click(function(e){
|
|||
break;
|
||||
case'update':
|
||||
$.confirm.e.modal('show')
|
||||
$.confirm.title.html('Update Shinobi?')
|
||||
$.confirm.title.html('<%=lang.Update%> Shinobi?')
|
||||
$.confirm.body.html('Updating Shinobi means overwriting files. If you have modified any files yourself you should update Shinobi manually.')
|
||||
$.confirm.click({title:'Update',class:'btn-danger'},function(){
|
||||
$.confirm.click({title:lang.Update,class:'btn-danger'},function(){
|
||||
// $.ccio.cx({f:'system',ff:'update'})
|
||||
$.get('<%=originalURL%><%=config.webPaths.superApiPrefix%>'+$user.sessionKey+'/system/update',function(data){
|
||||
console.log(data)
|
||||
|
@ -501,9 +511,9 @@ $.system.e.find('[restart]').click(function(e){
|
|||
break;
|
||||
}
|
||||
})
|
||||
$.confirm.title.html('Restart?')
|
||||
$.confirm.title.html('<%=lang.Restart%>?')
|
||||
$.confirm.body.html(e.html)
|
||||
$.confirm.click({title:'Restart',class:'btn-danger'},function(){
|
||||
$.confirm.click({title:lang.Restart,class:'btn-danger'},function(){
|
||||
// $.ccio.cx({f:'system',ff:'restart',target:e.target})
|
||||
$.get('<%=originalURL%><%=config.webPaths.superApiPrefix%>'+$user.sessionKey+'/system/restart/'+encodeURIComponent(e.target),function(data){
|
||||
console.log(data)
|
||||
|
|
118
web/pages/timelapse.ejs
Normal file
118
web/pages/timelapse.ejs
Normal file
|
@ -0,0 +1,118 @@
|
|||
<%
|
||||
if(config.ssl&&config.ssl.port&&data.protocol==='https'){
|
||||
data.port=config.ssl.port
|
||||
}else{
|
||||
data.port=config.port
|
||||
}
|
||||
data.url = baseUrl
|
||||
if(data.addon && data.addon.indexOf('relative')>-1){
|
||||
data.url=''
|
||||
}
|
||||
%>
|
||||
<% include blocks/header-title.ejs %>
|
||||
<% include blocks/header-meta.ejs %>
|
||||
<% include blocks/header-favicon.ejs %>
|
||||
<link rel="stylesheet" href="<%=data.url%>/libs/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="<%=data.url%>/libs/css/bootstrap.min.css">
|
||||
<link rel="stylesheet" href="<%-data.url%>/libs/css/daterangepicker.css">
|
||||
<link rel="stylesheet" href="<%-data.url%>/libs/css/dash2.basic.css">
|
||||
<link rel="stylesheet" href="<%-data.url%>/libs/css/dash2.forms.css">
|
||||
<link rel="stylesheet" href="<%-data.url%>/libs/css/dash2.darktheme.css">
|
||||
<link rel="stylesheet" href="<%-data.url%>/libs/css/bootstrap-slider.min.css">
|
||||
|
||||
|
||||
<div id="timelapsejpeg" class="standalone dark">
|
||||
<div class="modal-body text-center" style="padding-top:0;padding-bottom:0;">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="fieldHolder text-left">
|
||||
<div class="form-group text-center">
|
||||
<%
|
||||
var logoImageLink
|
||||
if(config.logoLocation76x76.indexOf('//') === -1){
|
||||
logoImageLink = window.libURL + config.logoLocation76x76
|
||||
}else{
|
||||
logoImageLink = config.logoLocation76x76
|
||||
}
|
||||
%>
|
||||
<img src="<%- logoImageLink %>" style="<%- config.logoLocation76x76Style %>">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Monitor']%></span></div>
|
||||
<div><select class="form-control dark monitors_list"></select></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label><div><span><%-lang['Date']%></span></div>
|
||||
<div><input type="text" id="timelapsejpeg_date" class="form-control" value="" /></div>
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<input id="timelapseJpegFps" data-slider-id='timelapseJpegFps' type="text"
|
||||
data-slider-min="1" data-slider-max="30" data-slider-step="1" data-slider-value="30" value="30"/>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<!-- <div class="btn-group"> -->
|
||||
<!-- <a class="btn btn-primary download_mp4"><%-lang['Build']%></a> -->
|
||||
<a class="btn btn-danger btn-block download_mp4"><%-lang['Download']%></a>
|
||||
<!-- </div> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="">
|
||||
</div>
|
||||
<div class="frameIcons row scroll-style-6"></div>
|
||||
</div>
|
||||
<div class="col-md-8 frameStripContainer contained">
|
||||
<div class="playBackView"><img></div>
|
||||
<div class="liveStreamView"></div>
|
||||
<!-- <div class="frames"></div>
|
||||
<div class="frameStripPreview"></div>
|
||||
<div class="frameStrip"></div> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<script src="<%=data.url%>/libs/js/jquery.min.js"></script>
|
||||
<script src="<%=data.url%>/libs/js/jquery-ui.min.js"></script>
|
||||
<script>$.ccio = {mon:{}}</script>
|
||||
<script src="<%-data.url%>/libs/js/moment-with-locales.min.js"></script>
|
||||
<script src="<%-data.url%>/libs/js/daterangepicker.js"></script>
|
||||
<script src="<%-data.url%>/libs/js/bootstrap-slider.min.js"></script>
|
||||
<script src="<%-data.url%>/libs/js/dash2.init.js"></script>
|
||||
<link rel="stylesheet" href="<%-data.url%>/libs/css/dash2.timelapse.jpeg.css">
|
||||
<script src="<%-data.url%>/libs/js/dash2.timelapse.jpeg.js"></script>
|
||||
<script>
|
||||
var data = <%- JSON.stringify(data) %>
|
||||
var $user = <%- JSON.stringify($user) %>
|
||||
var lang = <%- JSON.stringify(lang) %>
|
||||
var languageChoice = "<%- config.language || 'en' %>".replace('_','-').toLowerCase()
|
||||
moment.locale(languageChoice)
|
||||
$user.auth_token = data.auth
|
||||
$(document).ready(function(){
|
||||
$.timelapseJpeg.pointer = data.url + '/'
|
||||
$.timelapseJpeg.fieldHolderCssHeightModifier = 50
|
||||
$.timelapseJpeg.monitors.find('.monitor').remove()
|
||||
$.getJSON(data.url+'/'+$user.auth_token+'/monitor/'+$user.ke,function(d){
|
||||
if(d instanceof Array){
|
||||
$.each(d,function(n,monitor){
|
||||
$.ccio.mon[monitor.ke + monitor.mid + $user.auth_token] = monitor
|
||||
})
|
||||
}else{
|
||||
$.ccio.mon[d.ke + d.mid + $user.auth_token] = d
|
||||
}
|
||||
$.each($.ccio.mon,function(n,v){
|
||||
$.timelapseJpeg.monitors.append('<option class="monitor" value="'+v.mid+'">'+v.name+'</option>')
|
||||
})
|
||||
$.timelapseJpeg.monitors.find('.monitor').prop('selected',false)
|
||||
// if(monitor.mid !== ''){
|
||||
// $.timelapseJpeg.monitors.find('.monitor[value="'+e.mid+'"]')
|
||||
// }
|
||||
// $.timelapseJpeg.datepicker.val($.timelapseJpeg.baseDate)
|
||||
$.timelapseJpeg.selectedStartDate = moment().utc().subtract(2, 'days').format('YYYY-MM-DD')
|
||||
$.timelapseJpeg.selectedEndDate = moment().utc().add(1, 'days').format('YYYY-MM-DD')
|
||||
$.timelapseJpeg.draw($.timelapseJpeg.selectedStartDate,$.timelapseJpeg.selectedEndDate)
|
||||
})
|
||||
})
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue