ComunicWeb/assets/js/pages/groups/sections/posts.js

110 lines
2.4 KiB
JavaScript
Raw Normal View History

2018-07-17 07:23:44 +00:00
/**
* Groups posts section
*
* @author Pierre HUBERT
*/
ComunicWeb.pages.groups.sections.posts = {
/**
* ID of the oldest known post
*/
_oldest_post_id: 0,
/**
* Loading message
*/
_loading_msg: null,
/**
* Display the section
*
* @param {Object} info Information about the related group
* @param {HTMLElement} target The target for the section
*/
display: function(info, target){
//Reset posts counter
this._oldest_post_id = 0;
//Create posts target
var postsBody = createElem2({
appendTo: target,
type: "div",
class: "box box-primary"
});
var postsBody = createElem2({
appendTo: postsBody,
type: "div",
class: "box-body"
});
//Display loading message
this._loading_msg = ComunicWeb.common.messages.createCalloutElem(
"Loading", "Please wait while we load this group posts...", "info");
postsBody.appendChild(this._loading_msg);
this._refresh_list(info, postsBody);
},
/**
* Refresh the list of posts of this group
*
* @param {Object} info Information about the group
* @param {HTMLElement} target
*/
_refresh_list: function(info, target){
//Get the posts of the group
ComunicWeb.components.posts.interface.get_group(info.id, 0, function(result){
ComunicWeb.pages.groups.sections.posts._loading_msg.remove();
//Check for errors
if(result.error){
target.appendChild(ComunicWeb.common.messages.createCalloutElem(
"Error", "Could not get this group posts!", "danger"));
return;
}
//Display the list of posts
ComunicWeb.pages.groups.sections.posts._display_list(result, target);
});
},
/**
* Display a list of posts
*
* @param {Array} list The list of posts
* @param {HTMLElement} target The target for the list
*/
_display_list: function(list, target){
var oldest_id = 0;
list.forEach(function(post){
if(oldest_id == 0 || post.ID < oldest_id)
oldest_id = post.ID;
//Display the post
ComunicWeb.components.posts.ui.display_post(post, target);
});
if(this._oldest_post_id == 0 && oldest_id == 0){
//Display message
var message = ComunicWeb.common.messages.createCalloutElem("No post to display", "This group has not sent any post yet.", "info");
message.className += " noGroupPosts";
target.appendChild(message);
}
if(this._oldest_post_id == 0 || this._oldest_post_id > oldest_id)
this._oldest_post_id = oldest_id;
},
};