2017-06-05 14:03:14 +00:00
|
|
|
/**
|
|
|
|
* User selector (using select2)
|
|
|
|
*
|
|
|
|
* @author Pierre HUBERT
|
|
|
|
*/
|
|
|
|
|
|
|
|
ComunicWeb.components.userSelect = {
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Initialize user selector for an element of the page
|
|
|
|
*
|
|
|
|
* @param {HTMLElement} inputSelect The target select input
|
|
|
|
* @return {Boolean} True for a success
|
|
|
|
*/
|
|
|
|
init: function(inputSelect){
|
|
|
|
|
|
|
|
//Log action
|
|
|
|
ComunicWeb.debug.logMessage("INFO : Initialize user selector");
|
|
|
|
|
|
|
|
$(inputSelect).select2({
|
|
|
|
ajax: {
|
|
|
|
transport: function(params, success, failure){
|
|
|
|
|
|
|
|
//Check if some data were passed or not
|
|
|
|
if(!params.data.term)
|
|
|
|
return false;
|
|
|
|
|
|
|
|
//Retrive users list
|
|
|
|
ComunicWeb.user.userInfos.search(params.data.term, function(usersInfos){
|
|
|
|
|
|
|
|
if(usersInfos.error)
|
|
|
|
return; // Doesn't do anything failure();
|
|
|
|
else{
|
|
|
|
//Prepare results processing
|
|
|
|
returnData = {
|
|
|
|
results: []
|
|
|
|
}
|
|
|
|
|
|
|
|
//Processing results
|
|
|
|
for(i in usersInfos){
|
|
|
|
returnData.results.push({
|
|
|
|
id: usersInfos[i].userID,
|
|
|
|
text: usersInfos[i].firstName + " " + usersInfos[i].lastName,
|
|
|
|
accountImage: usersInfos[i].accountImage,
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
//Return result
|
|
|
|
success(returnData);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
},
|
|
|
|
delay: 250,
|
|
|
|
},
|
|
|
|
|
|
|
|
//Format result displaying
|
|
|
|
templateResult: ComunicWeb.components.userSelect.formatUser,
|
|
|
|
});
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Format the display of a user
|
|
|
|
*
|
|
|
|
* @param {Object} infos Informations about the user
|
|
|
|
* @return {String} The formated informations
|
|
|
|
*/
|
|
|
|
formatUser: function(infos){
|
|
|
|
|
|
|
|
if(!infos.id)
|
|
|
|
return infos.id;
|
|
|
|
|
|
|
|
return $("<img src='"+infos.accountImage+"' class='user-select-image' /> <span>" + infos.text + "</span>");
|
|
|
|
},
|
|
|
|
|
2017-06-06 17:05:49 +00:00
|
|
|
/**
|
|
|
|
* Returns the results of a specified select element
|
|
|
|
*
|
|
|
|
* @param {HTMLElement} inputSelect The target element
|
2017-06-07 11:52:42 +00:00
|
|
|
* @return {Array} An array with all the select IDs
|
2017-06-06 17:05:49 +00:00
|
|
|
*/
|
|
|
|
getResults: function(inputSelect){
|
|
|
|
|
2017-06-07 14:38:06 +00:00
|
|
|
//Get entries
|
|
|
|
var selectUsersResult = $(inputSelect).select2("data");
|
|
|
|
|
2017-06-06 17:05:49 +00:00
|
|
|
//Prepare return
|
2017-06-07 11:52:42 +00:00
|
|
|
var usersID = [];
|
2017-06-06 17:05:49 +00:00
|
|
|
|
2017-06-07 14:38:06 +00:00
|
|
|
for(i in selectUsersResult){
|
2017-06-06 17:05:49 +00:00
|
|
|
|
|
|
|
//Check it is really a children
|
2017-06-07 14:38:06 +00:00
|
|
|
if(selectUsersResult[i].id){
|
2017-06-07 11:52:42 +00:00
|
|
|
//Add ID to the table
|
2017-06-07 14:38:06 +00:00
|
|
|
usersID.push(selectUsersResult[i].id);
|
2017-06-06 17:05:49 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//Return result IDs
|
|
|
|
return usersID;
|
|
|
|
|
|
|
|
}
|
2017-06-05 14:03:14 +00:00
|
|
|
};
|