From 5773e599f142ea1b1106dbdbda219dfb14986878 Mon Sep 17 00:00:00 2001 From: Christian Klinger Date: Fri, 5 Aug 2016 12:06:50 +0200 Subject: grobe Integration vom Raumplaner. --- modules-available/roomplanner/clientscript.js | 125 ++++++++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 modules-available/roomplanner/clientscript.js (limited to 'modules-available/roomplanner/clientscript.js') diff --git a/modules-available/roomplanner/clientscript.js b/modules-available/roomplanner/clientscript.js new file mode 100644 index 00000000..ed91c9fd --- /dev/null +++ b/modules-available/roomplanner/clientscript.js @@ -0,0 +1,125 @@ +/** + * Pop-Up to select a machine + * + * Copyright 2016 Christian Klinger + * */ + +/* uuid -> obj */ +machineCache = {}; + + + +function renderMachineEntry(item, escape) { + machineCache[item.machineuuid] = item; + return '
' + //+ ' ' + + '
' + + '
' + escape(item.hostname) + '
' + + ' ' + + '' + + '' + + '' + + '
UUID: ' + escape(item.machineuuid) + '
MAC: ' + escape(item.macaddr) + '
IP: ' + escape(item.clientip) + '
' + + '
' + + '
'; +} + +function loadMachines(query, callback) { + console.log('queryMachines(' + query + ')'); + if (query.length < 2) return callback(); + $.ajax({ + url: '?do=roomplanner&action=getmachines&query=' + encodeURIComponent(query), + type: 'GET', + error: function() { + console.log('error while doing ajax call'); + callback(); + }, + success: function(res) { + console.log('success ajax call'); + var json = JSON.parse(res); + json.machines.forEach(function (v,i,a){ + a[i].combined = v.machineuuid + " " + v.hostname + " " + v.clientip + " " + v.macaddr; + }); + return callback(json.machines); + } + }); +} + + +var searchSettings = { + plugins : ["remove_button"], + valueField: 'machineuuid', + searchField: "combined", + //labelField: "combined", + openOnFocus: false, + create: false, + render : { option : renderMachineEntry, item: renderMachineEntry}, + load: loadMachines, + maxItems: 1, + sortField: 'clientip', + sortDirection: 'asc', + onChange: clearSubnetBox + +} + +var subnetSettings = { + plugins : ["remove_button"], + valueField: 'machineuuid', + searchField: "combined", + //labelField: "combined", + openOnFocus: false, + create: false, + render : { option : renderMachineEntry, item: renderMachineEntry}, + load: loadMachines, + maxItems: 1, + sortField: 'clientip', + sortDirection: 'asc', + onChange: clearSearchBox + +} + +function clearSearchBox() { + console.log("clearSearchBox()"); + $selectizeSearch[0].selectize.clear(false); +} +function clearSubnetBox() { + console.log("clearSubnetBox()"); + $selectizeSubnet[0].selectize.clear(false); +} + +function selectMachine(usedUuids, callback) { + /* show a popup */ + $modal = $('#selectMachineModal'); + $selectizeSearch = $('#machineSearchBox').selectize(searchSettings); + $selectizeSubnet = $('#subnetBox').selectize(subnetSettings); + + /* connect subnet tab and search tab such that on change of one the other gets emptied */ + + + $modal.modal('show'); + + $('#selectMachineButton').on('click', function() { + + /* check which one has a value */ + var bySubnet = machineCache[$selectizeSubnet[0].selectize.getValue()]; + var bySearch = machineCache[$selectizeSearch[0].selectize.getValue()]; + + var selected = bySubnet; // (bySubnet === undefined || bySubnet == "")? bySearch : bySubnet; + + console.log('value is '); + console.log($selectizeSubnet[0].selectize.getValue()); + console.log(machineCache); + console.log('selected is '); + console.log(selected); + + var result = {muuid: selected.machineuuid, ip: selected.clientip, mac_address : selected.macaddr, hostname: selected.hostname}; + $modal.modal('hide'); + clearSubnetBox(); + clearSearchBox(); + callback(result); + }); + + var result = {muuid: "blabla", ip: "blabla", mac_address: "blub", hostname: "lalala"}; + + callback(result); +} -- cgit v1.2.3-55-g7522