mirror of
https://github.com/pierre42100/ComunicWeb
synced 2024-11-22 20:19:21 +00:00
Display friends and groups
This commit is contained in:
parent
7e3558d5f9
commit
949e9accdd
11
assets/css/components/sidebar.css
Normal file
11
assets/css/components/sidebar.css
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
/**
|
||||||
|
* Sidebar stylesheet
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
|
||||||
|
.sidebar-menu.memberships-list img {
|
||||||
|
width: 20px;
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-left: -4px;
|
||||||
|
}
|
3
assets/custom_ts/Utils.d.ts
vendored
3
assets/custom_ts/Utils.d.ts
vendored
@ -14,6 +14,7 @@ declare interface CreateElem2Args {
|
|||||||
title ?: string,
|
title ?: string,
|
||||||
src ?: string,
|
src ?: string,
|
||||||
href ?: string,
|
href ?: string,
|
||||||
|
internalHref ?: string,
|
||||||
name ?: string,
|
name ?: string,
|
||||||
elemType ?: string,
|
elemType ?: string,
|
||||||
value ?: string,
|
value ?: string,
|
||||||
@ -22,6 +23,8 @@ declare interface CreateElem2Args {
|
|||||||
innerLang ?: string,
|
innerLang ?: string,
|
||||||
innerHTMLprefix ?: string,
|
innerHTMLprefix ?: string,
|
||||||
disabled ?: boolean,
|
disabled ?: boolean,
|
||||||
|
children ?: HTMLElement[],
|
||||||
|
onclick ?: Function
|
||||||
}
|
}
|
||||||
|
|
||||||
declare function createElem(nodeType : string, appendTo : string) : HTMLElement;
|
declare function createElem(nodeType : string, appendTo : string) : HTMLElement;
|
||||||
|
@ -1217,6 +1217,20 @@ var ComunicWeb = {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Web application interface
|
||||||
|
*/
|
||||||
|
webApp: {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Web app interface
|
||||||
|
*/
|
||||||
|
interface: {
|
||||||
|
//TODO : implement
|
||||||
|
},
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Easter egg : pacman
|
* Easter egg : pacman
|
||||||
*/
|
*/
|
||||||
|
@ -236,7 +236,7 @@ ComunicWeb.common.page = {
|
|||||||
var pageTarget = createElem("div", mainContainerElem);
|
var pageTarget = createElem("div", mainContainerElem);
|
||||||
pageTarget.id = "pageTarget";
|
pageTarget.id = "pageTarget";
|
||||||
}
|
}
|
||||||
else{
|
else {
|
||||||
//We can empty page target (much faster)
|
//We can empty page target (much faster)
|
||||||
pageTarget.innerHTML = "";
|
pageTarget.innerHTML = "";
|
||||||
}
|
}
|
||||||
|
@ -44,6 +44,7 @@ function createElem(nodeType, appendTo){
|
|||||||
* @info {String} innerHTMLprefix Specify prefix to add at the begining of the content of the element
|
* @info {String} innerHTMLprefix Specify prefix to add at the begining of the content of the element
|
||||||
* @info {boolean} disabled Set whether the field should be disabled or not (input only)
|
* @info {boolean} disabled Set whether the field should be disabled or not (input only)
|
||||||
* @info {HTMLElement[]} children Children for the new object
|
* @info {HTMLElement[]} children Children for the new object
|
||||||
|
* @info {Function} onclick
|
||||||
* @return {HTMLElement} The newly created element
|
* @return {HTMLElement} The newly created element
|
||||||
*/
|
*/
|
||||||
function createElem2(infos){
|
function createElem2(infos){
|
||||||
@ -129,6 +130,9 @@ function createElem2(infos){
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(infos.onclick)
|
||||||
|
newElem.addEventListener("click", infos.onclick);
|
||||||
|
|
||||||
//Return newly created element
|
//Return newly created element
|
||||||
return newElem;
|
return newElem;
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,8 @@ ComunicWeb.components.sideBar.main = {
|
|||||||
var sideBar = createElem2({
|
var sideBar = createElem2({
|
||||||
appendTo: byId("wrapper"),
|
appendTo: byId("wrapper"),
|
||||||
type: "aside",
|
type: "aside",
|
||||||
class: "main-sidebar"
|
class: "main-sidebar",
|
||||||
|
id: "main-sidebar",
|
||||||
});
|
});
|
||||||
|
|
||||||
var section = createElem2({
|
var section = createElem2({
|
||||||
@ -36,7 +37,7 @@ ComunicWeb.components.sideBar.main = {
|
|||||||
appendTo: userPanel,
|
appendTo: userPanel,
|
||||||
type: "div",
|
type: "div",
|
||||||
class: "pull-left image cursor-pointer",
|
class: "pull-left image cursor-pointer",
|
||||||
internalHref: userIDorPath(info),
|
onclick: () => openUserPage(info),
|
||||||
children: [
|
children: [
|
||||||
createElem2({
|
createElem2({
|
||||||
type: "img",
|
type: "img",
|
||||||
@ -56,7 +57,7 @@ ComunicWeb.components.sideBar.main = {
|
|||||||
type: "p",
|
type: "p",
|
||||||
class: "cursor-pointer",
|
class: "cursor-pointer",
|
||||||
innerHTML: userFullName(info),
|
innerHTML: userFullName(info),
|
||||||
internalHref: userIDorPath(info),
|
onclick: () => userIDorPath(info),
|
||||||
}),
|
}),
|
||||||
|
|
||||||
createElem2({
|
createElem2({
|
||||||
@ -102,5 +103,126 @@ ComunicWeb.components.sideBar.main = {
|
|||||||
|
|
||||||
openPage("search?q=" + searchForm.getElementsByTagName("input")[0].value);
|
openPage("search?q=" + searchForm.getElementsByTagName("input")[0].value);
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
|
||||||
|
// User memberships
|
||||||
|
let userMemberships = createElem2({
|
||||||
|
appendTo: section,
|
||||||
|
type: "ul",
|
||||||
|
class: "sidebar-menu memberships-list"
|
||||||
|
});
|
||||||
|
|
||||||
|
this.refreshMemberships(userMemberships);
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh user memberships
|
||||||
|
*
|
||||||
|
* @param {HTMLElement} target
|
||||||
|
*/
|
||||||
|
refreshMemberships: function(target){
|
||||||
|
ComunicWeb.components.webApp.interface.getMemberships(
|
||||||
|
() => notify("Could not refresh your memberships!", "error"),
|
||||||
|
(m, u, g) => this.applyMemberships(target, m, u, g)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply memberships
|
||||||
|
*
|
||||||
|
* @param {HTMLElement} target
|
||||||
|
* @param {*} memberships
|
||||||
|
* @param {*} users
|
||||||
|
* @param {*} groups
|
||||||
|
*/
|
||||||
|
applyMemberships: function(target, memberships, users, groups) {
|
||||||
|
|
||||||
|
// Empty liste
|
||||||
|
target.innerHTML = "";
|
||||||
|
|
||||||
|
memberships.forEach(e => {
|
||||||
|
|
||||||
|
if(e.type == "friend")
|
||||||
|
this.applyFriend(target, e.friend, users["user-"+e.friend.ID_friend]);
|
||||||
|
|
||||||
|
if(e.type == "group")
|
||||||
|
this.applyGroup(target, groups[e.id], e.last_activity);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply a friend object
|
||||||
|
*
|
||||||
|
* @param {HTMLElement} target
|
||||||
|
* @param {*} friend
|
||||||
|
* @param {*} user
|
||||||
|
*/
|
||||||
|
applyFriend: function(target, friend, user) {
|
||||||
|
|
||||||
|
let li = createElem2({
|
||||||
|
appendTo: target,
|
||||||
|
type: "li"
|
||||||
|
});
|
||||||
|
|
||||||
|
let a = createElem2({
|
||||||
|
appendTo: li,
|
||||||
|
onclick: () => openUserPage(user),
|
||||||
|
type: "a"
|
||||||
|
});
|
||||||
|
|
||||||
|
// User icon
|
||||||
|
createElem2({
|
||||||
|
appendTo: a,
|
||||||
|
type: "img",
|
||||||
|
class: "img-circle",
|
||||||
|
src: user.accountImage
|
||||||
|
});
|
||||||
|
|
||||||
|
// User name
|
||||||
|
createElem2({
|
||||||
|
appendTo: a,
|
||||||
|
type: "span",
|
||||||
|
innerHTML: userFullName(user)
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply group information
|
||||||
|
*
|
||||||
|
* @param {HTMLElement} target
|
||||||
|
* @param {*} group
|
||||||
|
* @param {*} lastactive
|
||||||
|
*/
|
||||||
|
applyGroup: function(target, group, lastactive) {
|
||||||
|
|
||||||
|
let li = createElem2({
|
||||||
|
appendTo: target,
|
||||||
|
type: "li"
|
||||||
|
});
|
||||||
|
|
||||||
|
let a = createElem2({
|
||||||
|
appendTo: li,
|
||||||
|
type: "a",
|
||||||
|
onclick: () => openGroupPage(group)
|
||||||
|
});
|
||||||
|
|
||||||
|
// Group icon
|
||||||
|
createElem2({
|
||||||
|
appendTo: a,
|
||||||
|
type: "img",
|
||||||
|
src: group.icon_url
|
||||||
|
});
|
||||||
|
|
||||||
|
// Group name
|
||||||
|
createElem2({
|
||||||
|
appendTo: a,
|
||||||
|
type: "span",
|
||||||
|
innerHTML: group.name
|
||||||
|
});
|
||||||
|
|
||||||
|
},
|
||||||
}
|
}
|
56
assets/js/components/webApp/interface.js
Normal file
56
assets/js/components/webApp/interface.js
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
/**
|
||||||
|
* Web application interface
|
||||||
|
*
|
||||||
|
* @author Pierre HUBERT
|
||||||
|
*/
|
||||||
|
|
||||||
|
ComunicWeb.components.webApp.interface = {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get all the membership of the user
|
||||||
|
*
|
||||||
|
* @param {Function} err Function called in case of errors
|
||||||
|
* @param {Function(memberships, usersInfo, groupsInfo) : void} success Function called in case of success
|
||||||
|
*/
|
||||||
|
getMemberships: function(err, success) {
|
||||||
|
|
||||||
|
// Peform the request on the server
|
||||||
|
ComunicWeb.common.api.makeAPIrequest(
|
||||||
|
"webApp/getMemberships",
|
||||||
|
{},
|
||||||
|
true,
|
||||||
|
memberships => {
|
||||||
|
|
||||||
|
// Check for error
|
||||||
|
if(memberships.error)
|
||||||
|
return err(memberships.error);
|
||||||
|
|
||||||
|
// Get users & groups ID in case of success
|
||||||
|
let usersID = [];
|
||||||
|
let groupsID = [];
|
||||||
|
|
||||||
|
memberships.forEach(el => {
|
||||||
|
if(el.type == "friend")
|
||||||
|
usersID.push(el.friend.ID_friend);
|
||||||
|
else
|
||||||
|
groupsID.push(el.id);
|
||||||
|
});
|
||||||
|
|
||||||
|
getMultipleUsersInfo(usersID, users => {
|
||||||
|
if(users.error)
|
||||||
|
return err(memberships.error);
|
||||||
|
|
||||||
|
getInfoMultipleGroups(groupsID, groupsInfo => {
|
||||||
|
if(groupsInfo.error)
|
||||||
|
return err(groupsInfo.error);
|
||||||
|
|
||||||
|
success(memberships, users, groupsInfo);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -226,6 +226,9 @@ class Dev {
|
|||||||
"css/components/calls/callWindow.css",
|
"css/components/calls/callWindow.css",
|
||||||
"css/components/calls/ringScreen.css",
|
"css/components/calls/ringScreen.css",
|
||||||
|
|
||||||
|
//Sidebar component
|
||||||
|
"css/components/sidebar.css",
|
||||||
|
|
||||||
//Pacman (easter egg) stylesheet
|
//Pacman (easter egg) stylesheet
|
||||||
"css/components/pacman.css",
|
"css/components/pacman.css",
|
||||||
|
|
||||||
@ -458,6 +461,9 @@ class Dev {
|
|||||||
"js/components/calls/ringScreen.js",
|
"js/components/calls/ringScreen.js",
|
||||||
"js/components/calls/utils.js",
|
"js/components/calls/utils.js",
|
||||||
|
|
||||||
|
// Web app component
|
||||||
|
"js/components/webApp/interface.js",
|
||||||
|
|
||||||
//Pacman component (easter egg)
|
//Pacman component (easter egg)
|
||||||
"js/components/pacman.js",
|
"js/components/pacman.js",
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user