Gestion de la modification de la composition des groupes

This commit is contained in:
xdrm-brackets 2016-07-15 14:48:18 +02:00
parent 67e71d7c4e
commit 0c8dcfe64e
4 changed files with 104 additions and 28 deletions

View File

@ -44,6 +44,8 @@
default: return "
<article class='check-table'>
<input type='hidden' id='filter-member-idcluster' value='@id_cluster'>
<input type='hidden' id='filter-member-class' value='@class'>
@members
</article>";
break;
@ -163,11 +165,17 @@
}
$class = ($currentCluster['class'] == clusterRepo::USER_CLASS) ? 0 : 1;
return View::replaceSingle(self::template(), [ 'members' => $members_view ]);
return View::replaceSingle(
self::template(), [
'id_cluster' => $currentCluster['id_cluster'],
'class' => $class,
'members' => $members_view
]
);
}

View File

@ -167,13 +167,15 @@
/* [4] Gestion de filtrage
=========================================================*/
echo "<section data-sublink='filter'>";
//
// debug();
//
// $userForGroup = new View('group.membersChoice', [
// 'id_cluster' => 202 // groupe "b" de type MACHINE
// ]);
//
// $userForGroup->view();
if( isset($post[1]) && is_numeric($post[1]) ){
$userForGroup = new View('group.membersChoice', [
'id_cluster' => $post[1]
]);
$userForGroup->view();
}
echo '</section>';

12
view/js/groups-min.js vendored
View File

@ -1,19 +1,21 @@
var section={view:{text:'#CONTAINER > section[data-sublink="view"] ',element:document.querySelector('#CONTAINER > section[data-sublink="view"]'),searchbar:document.querySelector('#CONTAINER > section[data-sublink="view"] > .searchbar')},create:{text:'#CONTAINER > section[data-sublink="create"] ',element:document.querySelector('#CONTAINER > section[data-sublink="create"]')},remove:{text:'#CONTAINER > section[data-sublink="remove"] ',element:document.querySelector('#CONTAINER > section[data-sublink="remove"]')},
edit:{text:'#CONTAINER > section[data-sublink="edit"] ',element:document.querySelector('#CONTAINER > section[data-sublink="edit"]')},filter:{text:'#CONTAINER > section[data-sublink="filter"] ',element:document.querySelector('#CONTAINER > section[data-sublink="filter"]')}};
if(null!=section.view.element){1<pageManager.vars.length&&!isNaN(pageManager.vars[1])&&(document.location="#"+pageManager.vars[1],document.getElementById(pageManager.vars[1]).addClass("selected"));section.view.link={edit:document.querySelectorAll(section.view.text+".link_edit[data-cluster]"),remove:document.querySelectorAll(section.view.text+".link_remove[data-cluster]")};section.view.group={rem:document.querySelectorAll(section.view.text+".rem-group[data-cluster][data-member]"),add:document.querySelectorAll(section.view.text+
".add-group[data-cluster]")};section.view.searchbar.addEventListener("keyup",function(a){api.send({path:"clusterDefault/search",keywords:section.view.searchbar.value},function(a){if(0==a.ModuleError){for(var d=[],c=0;c<a.clusters.length;c++)d.push(a.clusters[c].id_cluster);a=document.querySelectorAll(section.view.text+"> article.inline-box[id]");for(c=0;c<a.length;c++)-1<d.indexOf(a[c].id)?a[c].remClass("hidden"):a[c].addClass("hidden")}})},!1);for(var i=0;i<section.view.link.edit.length;i++)section.view.link.edit[i].addEventListener("click",
".add-group[data-cluster]")};section.view.searchbar.addEventListener("keyup",function(a){api.send({path:"clusterDefault/search",keywords:section.view.searchbar.value},function(b){if(0==b.ModuleError){for(var a=[],c=0;c<b.clusters.length;c++)a.push(b.clusters[c].id_cluster);b=document.querySelectorAll(section.view.text+"> article.inline-box[id]");for(c=0;c<b.length;c++)-1<a.indexOf(b[c].id)?b[c].remClass("hidden"):b[c].addClass("hidden")}})},!1);for(var i=0;i<section.view.link.edit.length;i++)section.view.link.edit[i].addEventListener("click",
function(a){pageManager.vars[1]=a.target.getData("cluster");autofill_edit(pageManager.vars[1]);navSubMenu("edit")},!1);for(i=0;i<section.view.link.remove.length;i++)section.view.link.remove[i].addEventListener("click",function(a){pageManager.vars[1]=a.target.getData("cluster");autofill_remove(pageManager.vars[1]);navSubMenu("remove")},!1);for(i=0;i<section.view.group.rem.length;i++)section.view.group.rem[i].addEventListener("click",function(a){var b={path:"clusterDefault/unlink",id_user:a.target.getData("user"),
id_cluster:a.target.getData("group")};api.send(b,function(b){if(0!=b.ModuleError)return!1;a.target.parentNode.parentNode.removeChild(a.target.parentNode)})},!1);for(i=0;i<section.view.group.add.length;i++)section.view.group.add[i].addEventListener("click",function(a){pageManager.vars[1]=a.target.getData("cluster");navSubMenu("filter");document.location=""},!1)}
null!=section.create.element&&(section.create.input={name:document.querySelector(section.create.text+"#create_name"),"class":document.querySelector(section.create.text+"#create_class"),submit:document.querySelector(section.create.text+"#create_submit")},section.create.input.submit.addEventListener("click",function(a){a.preventDefault();api.send({path:"clusterDefault/create",name:section.create.input.name.value,"class":section.create.input["class"].value},function(a){0==a.ModuleError&&(console.log("Groupe cree!"),
pageManager.vars[1]=a.id_cluster,navSubMenu("view"),document.location="",section.create.input.submit.anim("active",1500))})},!1));
null!=section.create.element&&(section.create.input={name:document.querySelector(section.create.text+"#create_name"),"class":document.querySelector(section.create.text+"#create_class"),submit:document.querySelector(section.create.text+"#create_submit")},section.create.input.submit.addEventListener("click",function(a){a.preventDefault();api.send({path:"clusterDefault/create",name:section.create.input.name.value,"class":section.create.input["class"].value},function(b){0==b.ModuleError&&(console.log("Groupe cree!"),
pageManager.vars[1]=b.id_cluster,navSubMenu("view"),document.location="",section.create.input.submit.anim("active",1500))})},!1));
if(null!=section.remove.element){var autofill_remove=function(){var a="",b="",d=!0;null==found_remove[searchindex_remove]?searchindex_remove=section.remove.input.search.num.innerHTML=0:(a=found_remove[searchindex_remove].id_cluster,b=found_remove[searchindex_remove].name,d=!1,section.remove.input.search.num.innerHTML=searchindex_remove+1);section.remove.input.search.id.value=a;section.remove.input.name.value=b;section.remove.input.submit.disabled=d};section.remove.input={search:{view:document.querySelector(section.remove.text+
".remove_search_view"),num:document.querySelector(section.remove.text+".remove_search_num"),sum:document.querySelector(section.remove.text+".remove_search_sum"),keyword:document.querySelector(section.remove.text+"#remove_search_keyword"),id:document.querySelector(section.remove.text+"#remove_search_id"),submit:document.querySelector(section.remove.text+"#remove_search_submit")},name:document.querySelector(section.remove.text+"#remove_name"),submit:document.querySelector(section.remove.text+"#remove_submit")};
var lastkeywords_remove="",found_remove=[],searchindex_remove=0;2<=pageManager.vars.length&&!isNaN(pageManager.vars[1])&&api.send({path:"clusterDefault/getById",id_cluster:pageManager.vars[1]},function(a){0==a.ModuleError&&(found_remove=[a.cluster],searchindex_remove=0,autofill_remove())});section.remove.input.search.submit.addEventListener("click",function(a){a.preventDefault();if(""!=section.remove.input.search.keyword.value)if(section.remove.input.search.keyword.value==lastkeywords_remove)searchindex_remove=
(searchindex_remove+1)%found_remove.length,autofill_remove();else{var b={path:"clusterDefault/search",keywords:section.remove.input.search.keyword.value};api.send(b,function(a){0==a.ModuleError&&(section.remove.input.search.submit.anim("active",1E3),searchindex_remove=0,found_remove=a.clusters,section.remove.input.search.sum.innerHTML=found_remove.length,autofill_remove());lastkeywords_remove=b.keywords})}},!1);section.remove.input.submit.addEventListener("click",function(a){a.preventDefault();""!=
section.remove.input.search.id.value&&api.send({path:"clusterDefault/delete",id_cluster:section.remove.input.search.id.value},function(a){0==a.ModuleError&&1==a.status?(console.log("Groupe supprimee!"),section.remove.input.submit.anim("active",1500),autofill_remove(null)):console.error("ModuleError::"+a.ModuleError)})},!1)}
section.remove.input.search.id.value&&api.send({path:"clusterDefault/delete",id_cluster:section.remove.input.search.id.value},function(b){0==b.ModuleError&&1==b.status?(console.log("Groupe supprimee!"),section.remove.input.submit.anim("active",1500),autofill_remove(null)):console.error("ModuleError::"+b.ModuleError)})},!1)}
if(null!=section.edit.element){var autofill_edit=function(){var a="",b="",d=!0;null==found_edit[searchindex_edit]?searchindex_edit=section.edit.input.search.num.innerHTML=0:(a=found_edit[searchindex_edit].id_cluster,b=found_edit[searchindex_edit].name,d=!1,section.edit.input.search.num.innerHTML=searchindex_edit+1);section.edit.input.search.id.value=a;section.edit.input.name.value=b;section.edit.input.submit.disabled=d};section.edit.input={search:{view:document.querySelector(section.edit.text+".edit_search_view"),
num:document.querySelector(section.edit.text+".edit_search_num"),sum:document.querySelector(section.edit.text+".edit_search_sum"),keyword:document.querySelector(section.edit.text+"#edit_search_keyword"),id:document.querySelector(section.edit.text+"#edit_search_id"),submit:document.querySelector(section.edit.text+"#edit_search_submit")},name:document.querySelector(section.edit.text+"#edit_name"),submit:document.querySelector(section.edit.text+"#edit_submit")};var lastkeywords_edit="",found_edit=[],
searchindex_edit=0;2<=pageManager.vars.length&&!isNaN(pageManager.vars[1])&&api.send({path:"clusterDefault/getById",id_cluster:pageManager.vars[1]},function(a){0==a.ModuleError&&(found_edit=[a.cluster],searchindex_edit=0,autofill_edit())});section.edit.input.search.submit.addEventListener("click",function(a){a.preventDefault();if(""!=section.edit.input.search.keyword.value)if(section.edit.input.search.keyword.value==lastkeywords_edit)searchindex_edit=(searchindex_edit+1)%found_edit.length,autofill_edit();
else{var b={path:"clusterDefault/search",keywords:section.edit.input.search.keyword.value};api.send(b,function(a){0==a.ModuleError&&(section.edit.input.search.submit.anim("active",1E3),searchindex_edit=0,found_edit=a.clusters,section.edit.input.search.sum.innerHTML=found_edit.length,autofill_edit());lastkeywords_edit=b.keywords})}},!1);section.edit.input.submit.addEventListener("click",function(a){a.preventDefault();""!=section.edit.input.search.id.value&&api.send({path:"clusterDefault/edit",id_cluster:section.edit.input.search.id.value,
name:section.edit.input.name.value},function(a){0==a.ModuleError&&1==a.status?(console.log("Groupe modifiee!"),section.edit.input.submit.anim("active",1500),autofill_edit(section.edit.input.search.id.value)):console.error("ModuleError::"+a.ModuleError)})},!1)}
if(null!=section.filter.element&&1<pageManager.vars.length&&!isNaN(pageManager.vars[1])){var request={path:"clusterDefault/memberChoice",id_cluster:pageManager.vars[1]};api.send(request,function(a){0==a.ModuleError&&(section.filter.element.innerHTML=a.view)})};
null!=section.filter.element&&(section.filter.deflater=new FormDeflater(section.filter.element,["input"],["data-name"]),section.filter.baseData=section.filter.deflater.deflate().members,section.filter["class"]=document.querySelector("#filter-member-class").value,section.filter.idcluster=document.querySelector("#filter-member-idcluster").value,section.filter.element.addEventListener("click",function(a){var b=[];a=[];var d=section.filter.deflater.deflate().members;d instanceof Array||(d=[d]);for(var c=
0;c<d.length;c++)-1==section.filter.baseData.indexOf(d[c])&&b.push(d[c]);for(c=0;c<section.filter.baseData.length;c++)-1==d.indexOf(section.filter.baseData[c])&&a.push(section.filter.baseData[c]);for(c=0;c<b.length;c++){var e={};e.path=0==section.filter["class"]?"userDefault/link":"machineDefault/link";e.id_cluster=section.filter.idcluster;0==section.filter["class"]?e.id_user=b[c]:e.id_machine=b[c];api.send(e,function(a){0!=a.ModuleError&&console.error("Erreur d'ajout de membre")})}for(c=0;c<a.length;c++)b=
{},b.path=0==section.filter["class"]?"userDefault/unlink":"machineDefault/unlink",b.id_cluster=section.filter.idcluster,0==section.filter["class"]?b.id_user=a[c]:b.id_machine=a[c],api.send(b,function(a){0!=a.ModuleError&&console.error("Erreur d'ajout de membre")});section.filter.baseData=d},!1));

View File

@ -610,22 +610,86 @@ if( section.edit.element != null ){
*/
if( section.filter.element != null ){
/* [1] Si id_cluster dans URL
/* (1) On initialise le Deflater() */
section.filter.deflater = new FormDeflater(
section.filter.element,
['input'],
['data-name']
);
/* (2) On enregistre les données initiales */
section.filter.baseData = section.filter.deflater.deflate()['members'];
/* (3) On enregistre les données in-HTML */
section.filter.class = document.querySelector('#filter-member-class').value;
section.filter.idcluster = document.querySelector('#filter-member-idcluster').value;
/* [1] Dès qu'une valeur est modifiée dans le formulaire
=========================================================*/
if( pageManager.vars.length > 1 && !isNaN(pageManager.vars[1]) ){
section.filter.element.addEventListener('click', function(e){
/* (1) On rédige la requête */
var request = {
path: 'clusterDefault/memberChoice', // Modification des membres
id_cluster: pageManager.vars[1]
};
/* (0) On récupère les données + initialise les variables */
var linked = [];
var unlinked = [];
/* (2) On récupère la vue et on l'affiche */
api.send(request, function(answer){
if( answer.ModuleError == 0 )
section.filter.element.innerHTML = answer.view;
});
var data = section.filter.deflater.deflate()['members'];
// Si c'est pas un tableau, on le met en tableau
if( !(data instanceof Array) )
data = [data];
}
/* (1) Si on a ajouté des liens */
for( var i = 0 ; i < data.length ; i++ )
if( section.filter.baseData.indexOf(data[i]) == -1 ) // Si pas dans les données initiales, on ajoute
linked.push( data[i] );
/* (2) Si on a supprimé des liens */
for( var i = 0 ; i < section.filter.baseData.length ; i++ )
if( data.indexOf(section.filter.baseData[i]) == -1 ) // Si pas dans les données modifiées, on ajoute
unlinked.push( section.filter.baseData[i] );
/* (3) Gestion de l'ajout de liens */
for( var i = 0 ; i < linked.length ; i++ ){
// {1} On rédige la requête //
var linkReq = {};
linkReq.path = (section.filter.class==0) ? 'userDefault/link' : 'machineDefault/link';
linkReq.id_cluster = section.filter.idcluster;
if( section.filter.class == 0 ) linkReq.id_user = linked[i];
else linkReq.id_machine = linked[i];
// {2} On envoie la requête //
api.send(linkReq, function(linkRes){
if( linkRes.ModuleError != 0 )
console.error('Erreur d\'ajout de membre');
});
}
/* (4) Gestion de la suppression de liens */
for( var i = 0 ; i < unlinked.length ; i++ ){
// {1} On rédige la requête //
var unlinkReq = {};
unlinkReq.path = (section.filter.class==0) ? 'userDefault/unlink' : 'machineDefault/unlink';
unlinkReq.id_cluster = section.filter.idcluster;
if( section.filter.class == 0 ) unlinkReq.id_user = unlinked[i];
else unlinkReq.id_machine = unlinked[i];
// {2} On envoie la requête //
api.send(unlinkReq, function(unlinkRes){
if( unlinkRes.ModuleError != 0 )
console.error('Erreur d\'ajout de membre');
});
}
/* (5) On met à jour les données initiales */
section.filter.baseData = data;
}, false);
}