Merge branch 'master' into release/rework-css
This commit is contained in:
commit
45ecb7ccf3
@ -78,7 +78,9 @@ On `config.json`:
|
||||
"xmpp": "https://jabber.happy-dev.fr/http-bind/",
|
||||
"authority": "http://localhost:8000/",
|
||||
"endpoints": {
|
||||
"users": "http://server.url/users/"
|
||||
"skills": "http://server.url/skills/",
|
||||
"users": "http://server.url/users/",
|
||||
"uploads": "http://server.url/upload/"
|
||||
}
|
||||
}
|
||||
```
|
||||
@ -155,6 +157,8 @@ On `config.json`:
|
||||
}
|
||||
```
|
||||
|
||||
A [sample fixture](https://git.startinblox.com/djangoldp-packages/djangoldp-dashboard/blob/master/djangoldp_dashboard/fixtures/sample.json) can be loaded with `./manage.py loaddata path/to/djangoldp_dashboard/fixtures/sample.json`.
|
||||
|
||||
### Events
|
||||
|
||||
Events allow to create and manage instance-level evenement. To activate them, you need:
|
||||
|
@ -108,6 +108,23 @@
|
||||
--color-chat-grey-1: var(--color-grey-4);
|
||||
--color-chat-grey-2: var(--color-grey-6);
|
||||
--color-chat-grey-3: var(--color-grey-10);
|
||||
|
||||
/* Directory */
|
||||
--color-directory-grey-4: #7A7F85;
|
||||
--color-directory-grey-5: #F0F3F6;
|
||||
|
||||
--color-directory-avatar-background: #E4E8ED;
|
||||
--color-directory-back-link: #36383B;
|
||||
--color-directory-border: #DAE2F3;
|
||||
--color-directory-content-header-border: #DAE2F3;
|
||||
--color-directory-h1: var(--color-complementary-darken);
|
||||
--color-directory-list-icon: var(--color-primary);
|
||||
--color-directory-text: var(--color-directory-grey-4);
|
||||
|
||||
--color-directory-form-input: #EDF1FA;
|
||||
--color-directory-form-input-text: var(--color-directory-grey-4);
|
||||
--color-directory-form-input-active: var(--color-complementary);
|
||||
--color-directory-form-select-icon: var(--color-complementary);
|
||||
}
|
||||
|
||||
/* Button to edit a channel or a project (in project-profile) */
|
||||
@ -174,3 +191,21 @@
|
||||
#admin-circle-list>div>div.table>sib-display:nth-child(5)>div>sib-display>div>admin-circle-join-button>sib-form:hover input {
|
||||
color: var(--color-complementary);
|
||||
}
|
||||
|
||||
|
||||
/* Directory - my profile*/
|
||||
|
||||
/* Button to update the avatar */
|
||||
#sib-picture-browse,
|
||||
#sib-picture-remove {
|
||||
background-color: var(--color-white);
|
||||
border: 1px solid var(--color-complementary);
|
||||
color: var(--color-complementary);
|
||||
}
|
||||
|
||||
#sib-picture-browse:hover,
|
||||
#sib-picture-remove:hover {
|
||||
background-color: var(--color-complementary);
|
||||
border: 1px solid var(--color-complementary);
|
||||
color: var(--color-white);
|
||||
}
|
||||
|
@ -2,17 +2,23 @@
|
||||
"xmpp": "https://jabber.happy-dev.fr/http-bind/",
|
||||
"authority": "$SERVER",
|
||||
"authorityName": "djangoldp-server-name",
|
||||
"publicDirectory": true,
|
||||
"endpoints": {
|
||||
"get": {
|
||||
"circles": "$SERVER/circles/",
|
||||
"dashboards": "$SERVER/dashboards/",
|
||||
"groups": "$SERVER/groups/",
|
||||
"users": "$SERVER/users/"
|
||||
"users": "$SERVER/users/",
|
||||
"skills": "$SERVER/skills/",
|
||||
"uploads": "$SERVER/upload/"
|
||||
},
|
||||
"post": {
|
||||
"circles": "$SERVER/circles/",
|
||||
"dashboards": "$SERVER/dashboards/",
|
||||
"groups": "$SERVER/groups/",
|
||||
"users": "$SERVER/users/"
|
||||
"users": "$SERVER/users/",
|
||||
"skills": "$SERVER/skills/",
|
||||
"uploads": "$SERVER/upload/"
|
||||
}
|
||||
},
|
||||
"analytics": []
|
||||
}
|
||||
}
|
||||
|
@ -8,28 +8,28 @@ script(type="module" src="https://unpkg.com/@startinblox/oidc@0.8" defer)
|
||||
//- script(type="module" src="/lib/sib-oidc/index.js" defer)
|
||||
|
||||
script(type="module" src="https://unpkg.com/@startinblox/router@0.7" defer)
|
||||
//- script(type="module" src="/lib/sib-router/src/index.js" defer)
|
||||
//- script(type="module" src="/lib/sib-router/src/index.js" defer)
|
||||
|
||||
script(type="module" src="https://unpkg.com/@startinblox/component-notifications@0.3" defer)
|
||||
//- script(type="module" src="/lib/sib-notifications/index.js" defer)
|
||||
//- script(type="module" src="/lib/sib-notifications/index.js" defer)
|
||||
|
||||
if endpoints.events || (endpoints.get && endpoints.get.events)
|
||||
script(type="module" src="https://unpkg.com/@startinblox/component-event@0.1" defer)
|
||||
//- script(type="module" src="/lib/sib-event/sib-event.js" defer)
|
||||
//- script(type="module" src="/lib/sib-event/sib-event.js" defer)
|
||||
|
||||
if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers)
|
||||
script(type="module" src="https://unpkg.com/@startinblox/component-job-board@0.3" defer)
|
||||
script(type="module" src="https://unpkg.com/@startinblox/component-conversation@0.3" defer)
|
||||
//- script(type="module" src="/lib/sib-job-board/sib-job-board.js" defer)
|
||||
//- script(type="module" src="/lib/sib-conversation/sib-conversation.js" defer)
|
||||
//- script(type="module" src="/lib/sib-job-board/sib-job-board.js" defer)
|
||||
//- script(type="module" src="/lib/sib-conversation/sib-conversation.js" defer)
|
||||
|
||||
if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users))
|
||||
if (endpoints.uploads || (endpoints.get && endpoints.get.uploads)) && (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.users || (endpoints.get && endpoints.get.users))
|
||||
script(type="module" src="https://unpkg.com/@startinblox/component-directory@0.3" defer)
|
||||
//- script(type="module" src="/lib/sib-directory/sib-directory.js" defer)
|
||||
//- script(type="module" src="/lib/sib-directory/index.js" defer)
|
||||
|
||||
if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards)
|
||||
script(type="module" src="https://unpkg.com/@startinblox/component-dashboard@0.1" defer)
|
||||
//- script(type="module" src="/lib/sib-dashboard/sib-dashboard.js" defer)
|
||||
//- script(type="module" src="/lib/sib-dashboard/sib-dashboard.js" defer)
|
||||
|
||||
if endpoints.users || (endpoints.get && endpoints.get.users)
|
||||
script(type="module" src="https://unpkg.com/@startinblox/component-chat@0.6" defer)
|
||||
|
@ -24,11 +24,9 @@ details#user-controls.notLoggedIn
|
||||
#user-controls__panel
|
||||
nav(role="user's functionalities menu")
|
||||
ul
|
||||
if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users))
|
||||
if (endpoints.uploads || (endpoints.get && endpoints.get.uploads)) && (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.users || (endpoints.get && endpoints.get.users))
|
||||
li
|
||||
sib-link(next='my-profile') Mon profil
|
||||
//-li
|
||||
sib-link(next='user-settings') Settings
|
||||
sib-link(next='profile') Mon profil
|
||||
li
|
||||
sib-link(next='admin') Administration
|
||||
button(role='log out' onclick="document.querySelector('sib-auth').logout();") Se déconnecter
|
||||
|
@ -22,15 +22,15 @@ html(lang="en")
|
||||
div#viewport
|
||||
|
||||
if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards)
|
||||
#dashboard(hidden).no-sidebar
|
||||
#dashboard(hidden).no-sidebar.with-padding
|
||||
include page-dashboard.pug
|
||||
|
||||
if publicDirectory && (endpoints.users || (endpoints.get && endpoints.get.users))
|
||||
#members(hidden).no-sidebar
|
||||
#members(hidden).no-sidebar.with-padding
|
||||
include page-directory.pug
|
||||
|
||||
if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers)
|
||||
#job-offers(hidden).no-sidebar
|
||||
#job-offers(hidden).no-sidebar.with-padding
|
||||
include page-job-offers.pug
|
||||
|
||||
if endpoints.projects || (endpoints.get && endpoints.get.projects)
|
||||
@ -51,6 +51,10 @@ html(lang="en")
|
||||
|
||||
#admin(hidden).with-sidebar
|
||||
include page-admin.pug
|
||||
|
||||
if (endpoints.skills || (endpoints.get && endpoints.get.skills)) && (endpoints.uploads || (endpoints.post && endpoints.post.uploads)) && (endpoints.users || (endpoints.post && endpoints.post.users))
|
||||
#profile(hidden).no-sidebar
|
||||
include page-profile.pug
|
||||
|
||||
if analytics
|
||||
each provider in analytics
|
||||
|
@ -71,12 +71,12 @@ nav#main__menu.jsLeftMenu
|
||||
div.divider
|
||||
if endpoints.projects || (endpoints.get && endpoints.get.projects)
|
||||
div
|
||||
div.menu
|
||||
div.menu-chevron
|
||||
sib-link(next='admin-project-list')
|
||||
div.menu-icon.icon-arrow-right
|
||||
div.menu-label Projets
|
||||
div.menu-icon.icon-folder-alt
|
||||
sib-link(next='admin-project-list')
|
||||
div.menu
|
||||
div.menu-chevron
|
||||
div.menu-icon.icon-arrow-right-circle
|
||||
div.menu-label Projets
|
||||
div.menu-icon.icon-folder-alt
|
||||
sib-route(name='project', rdf-type='hd:project', use-id='', hidden)
|
||||
div.sub-menu.menu-notification
|
||||
sib-display.project-tab(
|
||||
@ -84,7 +84,7 @@ nav#main__menu.jsLeftMenu
|
||||
nested-field='projects'
|
||||
fields='project'
|
||||
empty-widget='hubl-create'
|
||||
empty-value='project'
|
||||
empty-value='projet'
|
||||
widget-project='hubl-menu-fix-url-project'
|
||||
order-by='project.customer.name'
|
||||
next='project'
|
||||
@ -92,12 +92,12 @@ nav#main__menu.jsLeftMenu
|
||||
div.divider
|
||||
if endpoints.circles || (endpoints.get && endpoints.get.circles)
|
||||
div
|
||||
div.menu
|
||||
div.menu-chevron
|
||||
sib-link(next='admin-circle-list')
|
||||
div.menu-icon.icon-arrow-right
|
||||
div.menu-label Canaux
|
||||
div.menu-icon.icon-folder-alt
|
||||
sib-link(next='admin-circle-list')
|
||||
div.menu
|
||||
div.menu-chevron
|
||||
div.menu-icon.icon-arrow-right-circle
|
||||
div.menu-label Canaux
|
||||
div.menu-icon.icon-folder-alt
|
||||
sib-route(name='circle', rdf-type='hd:circle', use-id='', hidden)
|
||||
div.sub-menu.menu-notification
|
||||
sib-display(
|
||||
@ -105,7 +105,7 @@ nav#main__menu.jsLeftMenu
|
||||
nested-field='circles'
|
||||
fields='circle'
|
||||
empty-widget='hubl-create'
|
||||
empty-value='circle'
|
||||
empty-value='canal'
|
||||
widget-circle='hubl-menu-fix-url-circle'
|
||||
order-by='circle.name'
|
||||
next='circle'
|
||||
@ -137,6 +137,4 @@ nav#main__menu.jsLeftMenu
|
||||
div.divider
|
||||
|
||||
sib-route(name='admin', hidden)
|
||||
//- div.divider
|
||||
//- sib-route.menu(hidden, name='my-profile', rdf-type='foaf:user', use-id='')
|
||||
|
||||
sib-route.menu(name='profile', hidden)
|
||||
|
5
src/page-profile.pug
Normal file
5
src/page-profile.pug
Normal file
@ -0,0 +1,5 @@
|
||||
sib-profile(
|
||||
bind-user
|
||||
upload-src=`${endpoints.uploads || endpoints.post.uploads}`
|
||||
range-skills=`${endpoints.skills || endpoints.get.skills}`
|
||||
)
|
@ -3,7 +3,7 @@ function refreshSibDisplays(resourceId, clearCache = true) {
|
||||
let cacheCleared = false;
|
||||
|
||||
Array.from(document.querySelectorAll("sib-display"))
|
||||
.filter(sibDisplay => sibDisplay.component.resourceId == resourceId) // keep only elements with resource == edited resource
|
||||
.filter(sibDisplay => sibDisplay.component?sibDisplay.component.resourceId == resourceId:false) // keep only elements with resource == edited resource
|
||||
.forEach(async (e) => {
|
||||
//clear cache if we were unable to before
|
||||
if ((clearCache && !cacheCleared) && e.component.resource != null) {
|
||||
@ -25,6 +25,13 @@ async function updateSources(resource) {
|
||||
refreshSibDisplays(res.join('/'),cacheCleared);
|
||||
}
|
||||
|
||||
async function resToChildrens(resource) {
|
||||
resource = resource.getResourceData();
|
||||
refreshSibDisplays(resource["http://happy-dev.fr/owl/#user"]["@id"]);
|
||||
refreshSibDisplays(resource["http://happy-dev.fr/owl/#project"]["@id"] + "members/");
|
||||
refreshSibDisplays(resource["http://happy-dev.fr/owl/#circle"]["@id"] + "members/");
|
||||
}
|
||||
|
||||
//auxiliary function updates displays using a given resource
|
||||
//NOTE: this is a temporary workaround and should be replaced by a reactive storage
|
||||
//https://git.startinblox.com/framework/sib-core/issues/524
|
||||
@ -33,42 +40,9 @@ async function refreshResource(event) {
|
||||
// if of the edited resource || id of the container of the created resource
|
||||
const resourceId = event.detail.resource["@id"] || event.target.dataset.src;
|
||||
updateSources(resourceId, event);
|
||||
let resource;
|
||||
try {
|
||||
resource = document
|
||||
.querySelector('[data-src="' + resourceId + '"]')
|
||||
.component.resource.getResourceData();
|
||||
} catch (e) {
|
||||
try {
|
||||
resource = document
|
||||
.querySelector('[data-src="' + resourceId.replace('circle-members','circles').split('/').slice(0, 4).join('/') + '/"]')
|
||||
.component.resource.getResourceData();
|
||||
} catch (e) {
|
||||
try {
|
||||
resource = document
|
||||
.querySelector('[nested-field="' + resourceId.split('/').slice(3, 4).join('').replace('circle-members','circles') + '"]')
|
||||
.component.resource.getResourceData();
|
||||
} catch (e) {
|
||||
resource = undefined;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(resource) {
|
||||
//special case: refresh circles/X/ from circle-members/Y/
|
||||
let partnerId = null;
|
||||
if (resourceId.includes("circle-members")) {
|
||||
partnerId = resource["http://happy-dev.fr/owl/#circle"]["@id"];
|
||||
} else if (resourceId.includes("project-members")) {
|
||||
partnerId = resource["http://happy-dev.fr/owl/#project"]["@id"];
|
||||
}
|
||||
//refresh all resources using the partner ID
|
||||
if (partnerId != null) {
|
||||
refreshSibDisplays(partnerId);
|
||||
refreshSibDisplays(partnerId + "members/");
|
||||
}
|
||||
}
|
||||
|
||||
[...new Set(Array.from(document.querySelectorAll('[data-src="' + resourceId + '"]')).map(e=>e.component?e.component.resource:null).filter(e=>e!=null))].forEach(resToChildrens);
|
||||
[...new Set(Array.from(document.querySelectorAll('[data-src="' + resourceId.replace('circle-members','circles').split('/').slice(0, 4).join('/') + '/"]')).map(e=>e.component?e.component.resource:null).filter(e=>e!=null))].forEach(resToChildrens);
|
||||
[...new Set(Array.from(document.querySelectorAll('[nested-field="' + resourceId.split('/').slice(3, 4).join('').replace('circle-members','circles') + '"]')).map(e=>e.component?e.component.resource:null).filter(e=>e!=null))].forEach(resToChildrens);
|
||||
|
||||
//special cases updating users/X/circles for the left-side-menu (leaving or joining circle)
|
||||
let user = await document.querySelector('sib-auth').getUser();
|
||||
@ -82,6 +56,11 @@ async function refreshResource(event) {
|
||||
if(resourceId.includes('users')) {
|
||||
refreshSibDisplays(resourceId.split('/').slice(0, 3).join('/') + '/users/');
|
||||
refreshSibDisplays(resourceId.split('/').slice(0, 3).join('/') + '/sources/users/');
|
||||
refreshSibDisplays(resourceId + 'profile/');
|
||||
refreshSibDisplays(resourceId + 'account/');
|
||||
refreshSibDisplays(resourceId + 'chatProfile/');
|
||||
refreshSibDisplays(resourceId + 'skills/');
|
||||
refreshSibDisplays(resourceId + 'account/');
|
||||
}
|
||||
|
||||
//clear cache on this resource
|
||||
|
@ -18,6 +18,7 @@
|
||||
|
||||
main {
|
||||
display: flex;
|
||||
z-index: 0;
|
||||
overflow: hidden;
|
||||
height: calc(100vh - 83px); /* 83px = height of the header */
|
||||
position: relative;
|
||||
@ -153,7 +154,7 @@ h5 {
|
||||
}
|
||||
|
||||
%padding-main {
|
||||
padding: 5rem;
|
||||
padding: 1.3rem;
|
||||
}
|
||||
|
||||
%padding-block {
|
||||
|
@ -137,6 +137,7 @@
|
||||
|
||||
sib-display.nosub>nav {
|
||||
text-align: center;
|
||||
overflow: hidden;
|
||||
display: grid;
|
||||
grid-template-columns: auto 50% auto;
|
||||
grid-template-areas: "left middle right";
|
||||
@ -247,23 +248,23 @@
|
||||
|
||||
&.jsLeftMenu {
|
||||
|
||||
@include breakpoint(sm) {
|
||||
display: none;
|
||||
display: none;
|
||||
|
||||
@include breakpoint(lg) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
&.jsLeftMenu[open] {
|
||||
|
||||
@include breakpoint(sm) {
|
||||
display: block;
|
||||
bottom: 0;
|
||||
box-shadow: 0 2px 8px 0 rgba(65, 69, 73, 0.5);
|
||||
min-width: 80%;
|
||||
position: fixed;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
display: block;
|
||||
bottom: 0;
|
||||
box-shadow: 0 2px 8px 0 rgba(65, 69, 73, 0.5);
|
||||
min-width: 80%;
|
||||
position: fixed;
|
||||
right: 0;
|
||||
top: 0;
|
||||
z-index: 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,9 @@
|
||||
.no-sidebar {
|
||||
flex: 1;
|
||||
@extend %padding-main;
|
||||
|
||||
&.with-padding {
|
||||
@extend %padding-main;
|
||||
}
|
||||
}
|
||||
|
||||
.with-sidebar {
|
||||
|
@ -1,3 +1,7 @@
|
||||
.dashboard>div {
|
||||
margin: 0 2px;
|
||||
}
|
||||
|
||||
sib-dashboard .icon::before {
|
||||
width: 41px;
|
||||
}
|
Loading…
Reference in New Issue
Block a user