Vue 'groups/membersChoice'

This commit is contained in:
xdrm-brackets 2016-07-20 18:16:36 +02:00
parent 4e14db6565
commit a7d7e2dece
5 changed files with 74 additions and 40 deletions

View File

@ -52,7 +52,6 @@
/* RENVOIE UN GROUPE EN FONCTION D'UN MOT CLE
*
* @keywords<String> Element de recherche
* @class<int> Type de groupe
*
* @return clusters<Array> Retourne la liste des groupes trouves
*
@ -60,15 +59,22 @@
public static function search($params){
extract($params);
$repoMethod = ($class==0) ? 'user_cluster/search' : 'machine_cluster/search';
// On recupere les donnees des groupes utilisateurs
$cluster = new Repo($repoMethod, [
$userClusters = new Repo('user_cluster/search', [
$_SESSION['WAREHOUSE']['id'],
$keywords
]);
return [ 'clusters' => $cluster->answer() ];
// On recupere les donnees des groupes machines
$machineClusters = new Repo('machine_cluster/search', [
$_SESSION['WAREHOUSE']['id'],
$keywords
]);
$merged = array_merge($userClusters->answer(), $machineClusters->answer());
return [ 'clusters' => $merged ];
}

View File

@ -63,7 +63,7 @@
/* [0] Initialisation
=========================================================*/
/* (1) On vérifie les paramètres */
if( !isset($params['id_cluster']) && !is_number($params['id_cluster']) )
if( !isset($params['id_cluster']) || !is_numeric($params['id_cluster']) || !isset($params['class']) || !is_numeric($params['class']) )
return View::$htmlError;
/* (2) On initialise les vues */
@ -76,7 +76,8 @@
=========================================================*/
/* (1) On récupère le groupe */
$checktypeRequest = new ModuleRequest('clusterDefault/getById', [
'id_cluster' => $params['id_cluster']
'id_cluster' => $params['id_cluster'],
'class' => $params['class']
]);
$checktypeResponse = $checktypeRequest->dispatch();
@ -93,7 +94,8 @@
=========================================================*/
/* (1) On exécute la requête */
$getmembersRequest = new ModuleRequest('clusterDefault/getMembers', [
'id_cluster' => $params['id_cluster']
'id_cluster' => $params['id_cluster'],
'class' => $params['class']
]);
$getmembersResponse = $getmembersRequest->dispatch();
@ -104,13 +106,13 @@
/* (3) On récupère la liste des UID uniquement */
$members_id = [];
foreach($getmembersResponse->get('members') as $member)
$members_id[] = $member['id_member'];
$members_id[] = ($params['class']==0) ? $member['id_user'] : $member['id_machine'];
/* [3] SI GROUPE D'UTILISATEURS -> On récupère les utilisateurs
=========================================================*/
if( $currentCluster['class'] == clusterRepo::USER_CLASS ){
if( $params['class'] == 0 ){
/* (1) On récupère les utilisateurs
---------------------------------------------------------*/
@ -160,8 +162,8 @@
/* (2) On gère l'affichage des machines
---------------------------------------------------------*/
/* (1) On gère l'état 'membre' ou non */
foreach($MACHINELIST as $u=>$user)
$MACHINELIST[$u]['already_in'] = in_array($user['id_machine'], $members_id) ? 'checked' : '';
foreach($MACHINELIST as $m=>$machine)
$MACHINELIST[$m]['already_in'] = in_array($machine['id_machine'], $members_id) ? 'checked' : '';
/* (2) On génère la vue */
$members_view = View::replaceMultiple(
@ -171,16 +173,14 @@
}
$class = ($currentCluster['class'] == clusterRepo::USER_CLASS) ? 0 : 1;
return View::replaceSingle(
self::template(), [
'id_cluster' => $currentCluster['id_cluster'],
'class' => $class,
'id_cluster' => $params['id_cluster'],
'class' => $params['class'],
'name' => $currentCluster['name'],
'clustertype' => ($class==0) ? 'utilisateurs' : 'machines',
'clustertype' => ($params['class']==0) ? 'utilisateurs' : 'machines',
'members' => $members_view
]
);

View File

@ -123,7 +123,8 @@
echo "<br><br><hr class='OR' data-label='PUIS' /><br><br>";
// Suppression de groupe
echo "<input id='remove_name' type='text' placeholder='Nom'><br>";
echo "<input id='remove_name' type='text' placeholder='Nom' disabled><br>";
echo "<input id='remove_class' type='text' placeholder='Type de groupe' disabled><br>";
echo "<button id='remove_submit' disabled>Supprimer</button>";
echo "</form>";
@ -154,6 +155,7 @@
echo "<br><br><hr class='OR' data-label='PUIS' /><br><br>";
echo "<input id='edit_name' type='text' placeholder='Nom'><br>";
echo "<input id='edit_class' type='text' placeholder='Type de groupe' disabled><br>";
echo "<button id='edit_submit' disabled>Modifier</button>";
echo "</form>";
@ -176,10 +178,11 @@
/* (1) Si on a un ID_CLUSTER, on affiche la composition
---------------------------------------------------------*/
if( isset($post[1]) && is_numeric($post[1]) ){
if( isset($post[1]) && preg_match('/^(u|m)(\d+)$/', $post[1], $m) ){
$membersChoice = new View('group.membersChoice', [
'id_cluster' => $post[1]
'id_cluster' => $m[2],
'class' => ($m[1]=='u') ? 0 : 1
]);
$membersChoice->view();

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

@ -3,16 +3,16 @@ edit:{text:'#CONTAINER > section[data-sublink="edit"] ',element:document.querySe
element:document.querySelector('#CONTAINER > section[data-sublink="permissions"]')}};
if(null!=section.view.element){1<pageManager.vars.length&&/^[um]\d+$/.test(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-member[data-cluster][data-member]"),add:document.querySelectorAll(section.view.text+
".add-member[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);var i;for(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=a.target.getData("cluster")[0],d=a.target.getData("cluster").slice(1);
console.log(a.target);var c={};c.path="u"==b?"userDefault/unlink":"machineDefault/unlink";c.id_cluster=d;"u"==b?c.id_user=a.target.getData("member"):c.id_machine=a.target.getData("member");api.send(c,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("members");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!"),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)}
function(a){pageManager.vars[1]=a.target.getData("cluster");autofill_edit();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();navSubMenu("remove")},!1);for(i=0;i<section.view.group.rem.length;i++)section.view.group.rem[i].addEventListener("click",function(a){var b=a.target.getData("cluster")[0],d=a.target.getData("cluster").slice(1);console.log(a.target);
var c={};c.path="u"==b?"userDefault/unlink":"machineDefault/unlink";c.id_cluster=d;"u"==b?c.id_user=a.target.getData("member"):c.id_machine=a.target.getData("member");api.send(c,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("members");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!"),
section.create.input.submit.anim("active",1500))})},!1));
if(null!=section.remove.element){var autofill_remove=function(){var a={id_cluster:"","class":"",name:"",disable_input:!0};if(null==found_remove[searchindex_remove])searchindex_remove=section.remove.input.search.num.innerHTML=0;else{var b;found_remove[searchindex_remove].hasOwnProperty("id_user_cluster")?(a=found_remove[searchindex_remove].id_user_cluster,b=0):(a=found_remove[searchindex_remove].id_machine_cluster,b=1);a={id_cluster:a,"class":b,name:found_remove[searchindex_remove].name,disable_input:!1};
section.remove.input.search.num.innerHTML=searchindex_remove+1}section.remove.input.search.id.value=a.id_cluster;section.remove.input.name.value=a.name;section.remove.input["class"].value=0==a["class"]?"utilisateur":"machine";console.log(a);section.remove.input.submit.disabled=a.disable_input};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"),"class":document.querySelector(section.remove.text+"#remove_class"),submit:document.querySelector(section.remove.text+"#remove_submit")};var lastkeywords_remove="",found_remove=[],searchindex_remove=
0;if(2<=pageManager.vars.length&&/^[um]\d+$/.test(pageManager.vars[1])){var prefix=pageManager.vars[1][0],cluster=pageManager.vars[1].slice(1),request={path:"clusterDefault/getById",id_cluster:cluster,"class":"u"==prefix?0:1};api.send(request,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)}
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();

View File

@ -105,7 +105,7 @@ if( section.view.element != null ){
section.view.link.edit[i].addEventListener('click', function(e){
pageManager.vars[1] = e.target.getData('cluster');
autofill_edit(pageManager.vars[1]);
autofill_edit();
navSubMenu('edit');
}, false);
@ -116,7 +116,7 @@ if( section.view.element != null ){
section.view.link.remove[i].addEventListener('click', function(e){
pageManager.vars[1] = e.target.getData('cluster');
autofill_remove(pageManager.vars[1]);
autofill_remove();
navSubMenu('remove');
}, false);
@ -251,6 +251,7 @@ if( section.remove.element != null ){
},
name: document.querySelector(section.remove.text + '#remove_name'),
class: document.querySelector(section.remove.text + '#remove_class'),
submit: document.querySelector(section.remove.text + '#remove_submit')
};
@ -267,6 +268,7 @@ if( section.remove.element != null ){
/* (0) Valeurs par défaut */
var cluster_data = {
id_cluster: '',
class: '',
name: '',
disable_input: true
};
@ -284,9 +286,22 @@ if( section.remove.element != null ){
// {2} Si au moins 1 résultat //
}else{
var tmpIdCluster, clusterClass;
// Si groupe utilisateur
if( found_remove[searchindex_remove].hasOwnProperty('id_user_cluster') ){
tmpIdCluster = found_remove[searchindex_remove].id_user_cluster;
clusterClass = 0;
// Sinon groupe machine
}else{
tmpIdCluster = found_remove[searchindex_remove].id_machine_cluster;
clusterClass = 1;
}
// On recupere les données de la user selectionnee
cluster_data = {
id_cluster: found_remove[searchindex_remove]['id_cluster'],
id_cluster: tmpIdCluster,
class: clusterClass,
name: found_remove[searchindex_remove]['name'],
disable_input: false
};
@ -303,6 +318,8 @@ if( section.remove.element != null ){
// Auto-remplissage du formulaire
section.remove.input.name.value = cluster_data.name;
section.remove.input.class.value = cluster_data.class == 0 ? 'utilisateur' : 'machine';
console.log(cluster_data);
// On gere le caractere "inactif" du submit
section.remove.input.submit.disabled = cluster_data.disable_input;
@ -311,10 +328,18 @@ if( section.remove.element != null ){
}
// Gestion automatique au chargement de la page si ID_CLUSTER dans url "/users/remove/:id_cluster:"
if( pageManager.vars.length >= 2 && !isNaN(pageManager.vars[1]) ){
if( pageManager.vars.length >= 2 && /^[um]\d+$/.test(pageManager.vars[1]) ){
var prefix = pageManager.vars[1][0];
var cluster = pageManager.vars[1].slice(1);
var request = {
path: 'clusterDefault/getById',
id_cluster: cluster,
class: (prefix=='u') ? 0 : 1
};
// On récupère la user d'uid donné dans l'URL
api.send({path:'clusterDefault/getById', id_cluster:pageManager.vars[1]}, function(response){
api.send(request, function(response){
// Si aucune erreur et un résultat
if( response.ModuleError == 0 ){
found_remove = [ response.cluster ]; // On récupère le résultat