/** * 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); }