Add "Add All" button to ONVIF Scanner (Adds all cameras not already added)

fix-non-showing-inputs
Moe Alam 2020-11-03 21:58:00 -08:00
parent b25004921d
commit 1c03744f5a
5 changed files with 86 additions and 8 deletions

View File

@ -525,6 +525,7 @@
"Enable": "Enable",
"Disable": "Disable",
"Delete": "Delete",
"Add All": "Add All",
"Name": "Name",
"Skip Ping": "Skip Ping",
"Retry Connection": "Retry Connection <small>Number of times allowed to fail</small>",

View File

@ -1,5 +1,8 @@
$(document).ready(function(e){
//onvif probe
var currentUsername = ''
var currentPassword = ''
var loadedResults = {}
var onvifScannerWindow = $('#onvif_probe')
var scanForm = onvifScannerWindow.find('form');
var outputBlock = onvifScannerWindow.find('.onvif_result');
@ -36,8 +39,65 @@ $(document).ready(function(e){
</div>
</div>
`)
if(!options.error){
var theLocation = getLocationFromUri(options.uri)
var pathLocation = theLocation.location
loadedResults[tempID] = {
mid: tempID + `${options.port}`,
host: pathLocation.hostname,
port: pathLocation.port,
path: pathLocation.pathname,
protocol: theLocation.protocol,
details: {
auto_host: streamUrl,
muser: currentUsername,
mpass: currentPassword,
is_onvif: '1',
onvif_port: options.port,
},
}
console.log(loadedResults[tempID])
}
}
var filterOutMonitorsThatAreAlreadyAdded = function(listOfCameras,callback){
$.get($.ccio.init('location',$user)+$user.auth_token+'/monitor/'+$user.ke,function(monitors){
var monitorsNotExisting = []
$.each(listOfCameras,function(n,camera){
var matches = false
$.each(monitors,function(m,monitor){
if(monitor.host === camera.host){
matches = true
}
})
if(!matches){
monitorsNotExisting.push(camera)
}
})
callback(monitorsNotExisting)
})
}
var getLocationFromUri = function(uri){
var newString = uri.split('://')
var protocol = `${newString[0]}`
newString[0] = 'http'
newString = newString.join('://')
var uriLocation = new URL(newString)
// uriLocation.protocol = protocol
return {
location: uriLocation,
protocol: protocol
}
}
var postMonitor = function(monitorToPost){
var newMon = mergeDeep($.aM.generateDefaultMonitorSettings(),monitorToPost)
$.post($.ccio.init('location',$user)+$user.auth_token+'/configureMonitor/'+$user.ke+'/'+monitorToPost.mid,{data:JSON.stringify(newMon,null,3)},function(d){
$.ccio.log(d)
})
}
scanForm.submit(function(e){
currentUsername = onvifScannerWindow.find('[name="user"]').val()
currentPassword = onvifScannerWindow.find('[name="pass"]').val()
loadedResults = {}
e.preventDefault();
$.oB.foundMonitors = {}
var el = $(this)
@ -74,6 +134,14 @@ $(document).ready(function(e){
$.aM.e.find('[name="mode"]').val('start')
onvifScannerWindow.modal('hide')
})
onvifScannerWindow.on('click','.add-all',function(){
filterOutMonitorsThatAreAlreadyAdded(loadedResults,function(importableCameras){
$.each(importableCameras,function(n,camera){
// console.log(camera)
postMonitor(camera)
})
})
})
var currentOptions = $.ccio.op()
$.each(['ip','port','user'],function(n,key){
@ -86,6 +154,13 @@ $(document).ready(function(e){
}
})
delete(currentOptions)
$user.ws.on('f',function (d){
switch(d.f){
case'onvif':
drawProbeResult(d)
break;
}
})
$.oB = {}
$.oB.drawProbeResult = drawProbeResult

View File

@ -1,3 +1,4 @@
window.onWebsocketConnection = []
$(document).ready(function(e){
//websocket functions
$.users = {}
@ -867,10 +868,10 @@ $user.ws.on('f',function (d){
// $.oB.o.append('<td class="text-center _notfound">Sorry, nothing was found.</td>')
// }
// break;
case'onvif':
$.oB.drawProbeResult(d)
break;
}
delete(d);
});
$.each(onWebsocketConnection,function(n,extender){
extender()
})
})

View File

@ -78,6 +78,7 @@
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-success add-all" data-dismiss="modal"><i class="fa fa-plus"></i> <%-lang['Add All'] %></button>
<button type="button" class="btn btn-default pull-left" data-dismiss="modal"><i class="fa fa-times"></i> <%-lang.Close%></button>
</div>
</form>

View File

@ -156,6 +156,11 @@
</html>
<!---->
<div class="hidden" id="temp"></div>
<script src="<%-window.libURL%>libs/js/basic.js"></script>
<script><% include ../libs/js/dash2.config.js %></script>
<script src="<%-window.libURL%>libs/js/dash2.basic.js"></script>
<script src="<%-window.libURL%>libs/js/dash2.confirm.js"></script>
<script src="<%-window.libURL%>libs/js/dash2.socketio.js"></script>
<% include blocks/multimon.ejs %>
<% include blocks/api.ejs %>
<% include blocks/logs.ejs %>
@ -209,11 +214,6 @@
<script src="<%-window.libURL%>libs/js/gridstack.min.js"></script>
<script src="<%-window.libURL%>libs/js/gridstack.jQueryUI.min.js"></script>
<script src="<%-window.libURL%>libs/vendor/leaflet/leaflet.js"></script>
<script src="<%-window.libURL%>libs/js/basic.js"></script>
<script><% include ../libs/js/dash2.config.js %></script>
<script src="<%-window.libURL%>libs/js/dash2.basic.js"></script>
<script src="<%-window.libURL%>libs/js/dash2.confirm.js"></script>
<script src="<%-window.libURL%>libs/js/dash2.socketio.js"></script>
<script src="<%-window.libURL%>libs/js/dash2.gridstack.js"></script>
<script src="<%-window.libURL%>libs/js/dash2.elements.js"></script>
<script src="<%-window.libURL%>libs/js/dash2.elementbuilder.js"></script>