var isProcessing = false;
function host_check_processing(){
if(isProcessing){
$('.machines-preloader').removeClass('hidden');
$('.btn-search').addClass('btn-preloader');
}else{
$('.machines-preloader').addClass('hidden');
}
}
//CHARGEMENT DE LA PAGE
function init_plugin_host(){
switch($.urlParam('page')){
case 'plan':
host_plan_search();
break;
case 'ping':
host_application_url_search();
default:
break;
}
host_machine_search(function(){
if(!$.urlParam('id')) return;
var element = $('#machines > li[data-id="'+$.urlParam('id')+'"]');
host_machine_edit(element.get(0));
});
$('#machines').sortable_table({
onSort : host_machine_search
});
//Ajout de la fonction save sur les inputs classiques ET le dynamicForm
$('.host-sheet-container').off('change').on('change', 'input, select', function(){
if($(this).closest(".machine-application-container").length == 0)host_machine_save();
});
$('.host-sheet-container').off('blur').on('blur', 'textarea', function(){
if($(this).closest(".machine-application-container").length == 0)host_machine_save();
});
}
//Enregistrement des configurations
function host_setting_save(){
$.action({
action: 'host_setting_save',
fields: $('#host-setting-form').toJson()
},function(){
$.message('success','Enregistré');
});
}
/** MACHINE / ENVIRONNEMENT **/
//Récuperation d'une liste machine / environnement dans le tableau #machines
function host_machine_search(callback,exportMode){
if(isProcessing) return;
var box = new FilterBox('#filters');
if(exportMode) $('.btn-export').addClass('btn-preloader');
isProcessing = true;
host_check_processing();
$('#machines').fill({
action:'host_machine_search',
filters: box.filters(),
sort: $('#machines').sortable_table('get'),
export: !exportMode ? false : exportMode
},function(response){
isProcessing = false;
host_check_processing();
if(!exportMode) $('.results-count span').text(response.pagination.total);
if(callback!=null) callback();
});
}
function host_application_url_search(){
$('#vm-ping-list').fill({
action:'host_application_url_search'
});
}
function host_application_url_ping(){
$('.ping-state').html('');
$('[data-application]').each(function(){
var li = $(this);
$.action({
action : 'host_application_url_ping',
application : li.attr('data-application')
},function(response){
var ping = response.ping;
var state = '';
if(ping.code == 200){
state = '';
}
li.find('.ping-state').html(state);
li.find('.ping-message').html(''+ping.code+': '+ping.message);
});
});
}
function host_plan_search(){
$.action({
action:'host_plan_search',
root:$('#root').val()
},function(r){
var table = $('#table-plan');
var tpl = $('#table-plan-template').html();
for(var k in r.rows){
var machine = r.rows[k];
var ip = machine.ip.split('.');
if(ip.length<4) continue;
ip = ip[3];
var cell = table.find('td[data-ip='+ip+']');
cell.html(Mustache.render(tpl,machine));
}
});
}
//Ajout ou modification machine / environnement
function host_machine_save(callback){
var data = $('#machine-form').toJson();
$('.host-preloader').removeClass('hidden');
$.action(data,function(r){
$('#machine-form').attr('data-id',r.id);
$.urlParam('id',r.id);
setTimeout(function(){
$('.host-preloader').addClass('hidden');
},500);
if(callback) callback();
});
}
//Récuperation ou edition machine / environnement
function host_machine_edit(element){
var line = $(element).closest('.item-line');
$('#machines >li').removeClass('active');
line.addClass('active');
$.action({
action: 'host_machine_edit',
id: line.attr('data-id')
},function(r){
$('.host-sheet-container').html(r.html);
$.urlParam('id',r.id);
init_components('#machine-form');
$('#machine-form').readonly(r.readonly).attr('data-readonly',r.readonly);
});
}
//Suppression machine / environnement
function host_machine_delete(element){
if(!confirm('Êtes vous sûr de vouloir supprimer cet item ?')) return;
var line = $(element).closest('.item-line');
$.action({
action: 'host_machine_delete',
id: line.attr('data-id')
},function(r){
line.remove();
$.message('info','Item supprimé');
});
}
/** APPLICATION SUR LA MACHINE **/
//Récuperation d'une liste application sur la machine dans le tableau #machineapplications
function host_machine_application_search(callback,exportMode){
if(!$('#machine-form').attr('data-id')) return;
var box = new FilterBox('#host_machine_application-filters');
if(exportMode) $('.btn-export').addClass('btn-preloader');
$('#machine-applications').fill({
action:'host_machine_application_search',
filters: box.filters(),
machine : $('#machine-form').attr('data-id'),
sort: $('#machine-applications').sortable_table('get'),
export: !exportMode ? false : exportMode
},function(response){
if(!exportMode) $('.results-count span').text(response.pagination.total);
init_components('#machine-applications');
if(callback!=null) callback();
});
}
//Ajout ou modification application sur la machine
function host_machine_application_save(){
var data = $('#machine-application-form').toJson();
$('.host-preloader').removeClass('hidden');
data.machine = $('#machine-form').attr('data-id');
data.label = $('#machine-form [data-id="label"]').val();
$.action(data,function(r){
$('#machine-application-form').attr('data-id','');
host_machine_application_search();
$('#machine-application-form').attr('data-id',r.id);
$.urlParam('id',r.id);
$('.host-preloader').addClass('hidden');
});
}
//Récuperation ou edition application sur la machine
function host_machine_application_edit(element){
var editApplication = function(){
var data = {
action: 'host_machine_application_edit',
machine : $('#machine-form').attr('data-id')
};
if(element){
var line = $(element).closest('.item-line');
$('#machine-applications li').removeClass('selected');
line.addClass('selected');
data.id = line.attr('data-id');
}
$.action(data,function(r){
$('.host-application-container').html(r.html);
init_components('.host-application-container');
$('#machine-application-form #label').focus();
});
}
//on s'assure que la fiche vm est enregistrée avant de créer
//de nouvelles applications
if(!$('#machine-form').attr('data-id')){
host_machine_save(editApplication);
}else{
editApplication();
}
}
//Suppression application sur la machine
function host_machine_application_delete(element,event){
event.stopPropagation();
if(!confirm('Êtes vous sûr de vouloir supprimer cet item ?')) return;
var line = $(element).closest('.item-line');
$.action({
action: 'host_machine_application_delete',
id: line.attr('data-id')
},function(r){
line.remove();
$.message('info','Item supprimé');
});
}
/** ACCèS à L'APPLICATION **/
//Récuperation d'une liste accès à l'application dans le tableau #applicationaccesss
function host_application_access_search(callback,exportMode){
var box = new FilterBox('#application_access_filters');
if(exportMode) $('.btn-export').addClass('btn-preloader');
$('#application-accesss').fill({
action:'host_application_access_search',
filters: box.filters(),
sort: $('#application-accesss').sortable_table('get'),
export: !exportMode ? false : exportMode
},function(response){
if(!exportMode && response.pagination) $('.plugin-host-access-list .results-count span').text(response.pagination.total);
if(callback!=null) callback();
});
}
function host_application_access_page_search(element,event){
if(event)event.stopPropagation();
var line = $(element).closest('.item-line');
var application = line.attr('data-id');
if(!application) return;
$('#machine-applications li').removeClass('selected');
line.addClass('selected');
var data = {
action: 'host_application_access_search_page',
export:false,
application : application
};
$.action(data,function(r){
$('.host-application-container').html(r.html);
init_components('.host-application-container');
$('#machine-application-form #label').focus();
});
}
//Ajout ou modification accès à l'application
function host_application_access_save(){
var data = $('#application-access-form').toJson();
$.action(data,function(r){
$('#application-access-form').clear().attr('data-id','');
host_application_access_search();
$('#application-access-form').attr('data-id',r.id);
$.urlParam('id',r.id);
$.message('success','Enregistré');
});
}
//Récuperation ou edition accès à l'application
function host_application_access_edit(element){
var line = $(element).closest('.item-line');
$.action({
action: 'host_application_access_edit',
id: line.attr('data-id')
},function(r){
$('#application-access-form').fromJson(r);
init_components('#application-access-form');
$('#application-access-form').attr('data-id',r.id);
});
}
//Suppression accès à l'application
function host_application_access_delete(element){
if(!confirm('Êtes vous sûr de vouloir supprimer cet item ?')) return;
var line = $(element).closest('.item-line');
$.action({
action: 'host_application_access_delete',
id: line.attr('data-id')
},function(r){
line.remove();
$.message('info','Item supprimé');
});
}