Merge branch 'feature/resource-component' of https://git.startinblox.com/applications/hubl into feature/resource-component

This commit is contained in:
Marjolaine Le Bon 2020-09-08 11:42:50 +02:00
commit 2f49e3a5a2
16 changed files with 247 additions and 31 deletions

View File

@ -552,3 +552,21 @@ apidays:
when: manual
tags:
- deploy
georgetownuni:
stage: deployment
environment:
name: georgetownuni
url: https://georgetown-uni.hubl.world
before_script:
- npm ci --cache .npm --prefer-offline --only=production
script:
- echo "$APP_CONFIG_GEORGETOWNUNI" > config.json
- echo "$SSH_DEPLOY_KEY" | tr -d '\r' > gitlab.key && chmod 600 gitlab.key
- npm run build
- scp -i gitlab.key -o StrictHostKeyChecking=no -r dist/* georgetown-uni@astral.startinblox.com:~/front/
only:
- master
when: manual
tags:
- deploy

View File

@ -159,22 +159,6 @@ 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:
On Server: `djangoldp_event`, `djangoldp_upload` packages
On `config.json`:
```json
"endpoints": {
"events": "http://server.url/events/",
"typeevents": "http://server.url/typeevents/",
"uploads": "http://server.url/upload/"
}
```
### Project
Project are a private group chat including Customer and Business Provider management. To activate them, you need:
@ -225,6 +209,57 @@ On `config.json`:
}
```
### Events
The events module includes a listing of upcoming events and the capability to create new ones.
This module will also work inside the circles.
To activate it, you need:
On Server: `djangoldp_event`, `djangoldp_upload` packages
On `config.json`:
```json
"endpoints": {
"events":"http://server.url/events/",
"typeevents":"http://server.url/typeevents/",
"uploads": "http://server.url/upload/"
}
```
### Resources
The resources module includes a listing of indexed resources and the capability to index new ones.
This module will also work inside the circles.
To activate it, you need:
On Server: `djangoldp_resource`, `djangoldp_upload`, `djangoldp_conversation` packages
On `config.json`:
```json
"endpoints": {
"resources":"http://server.url/resources/",
"resourceskeywords":"http://server.url/keywords/",
"resourcestypes":"http://server.url/types/",
"uploads": "http://server.url/upload/"
}
```
### Polls
The polls module allows user to create polls related (or not) to circles. To activate it, you need:
On Server: `djangoldp_polls`, `djangoldp_upload`, `djangoldp_conversation` packages
On `config.json`:
```json
"endpoints": {
"polls":"http://server.url/polls/"
}
```
## Use with docker
### Multi services

View File

@ -14,24 +14,24 @@ script(type="module" src="https://unpkg.com/@startinblox/router@0.8" defer)
script(type="module" src="https://unpkg.com/@startinblox/component-notifications@0.6.2" defer)
//- script(type="module" src="/lib/sib-notifications/index.js" defer)
if endpoints.events || (endpoints.get && endpoints.get.events)
if (endpoints.events || (endpoints.get && endpoints.get.events)) && (endpoints.typeevents || (endpoints.get && endpoints.get.typeevents))
script(type="module" src="https://unpkg.com/@startinblox/component-event@1.1" defer)
//- script(type="module" src="/lib/sib-event-component/sib-event.js" defer)
if endpoints.resources || (endpoints.get && endpoints.get.resources)
if (endpoints.resources || (endpoints.get && endpoints.get.resources)) && (endpoints.resourceskeywords || (endpoints.get && endpoints.get.resourceskeywords)) && (endpoints.resourcestypes || (endpoints.get && endpoints.get.resourcestypes))
script(type="module" src="https://unpkg.com/@startinblox/component-resource@1.0" defer)
//-script(type="module" src="/lib/sib-resource/sib-resource.js" defer)
//- script(type="module" src="/lib/sib-resource/sib-resource.js" defer)
if endpoints.joboffers || (endpoints.get && endpoints.get.joboffers)
script(type="module" src="https://unpkg.com/@startinblox/component-job-board@0.5" defer)
script(type="module" src="https://unpkg.com/@startinblox/component-job-board@0.6" defer)
//- script(type="module" src="/lib/solid-job-board/dist/index.js" defer)
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.5" defer)
script(type="module" src="https://unpkg.com/@startinblox/component-directory@0.7" defer)
//- script(type="module" src="/lib/solid-directory/dist/index.js" defer)
if endpoints.dashboards || (endpoints.get && endpoints.get.dashboards)
script(type="module" src="https://unpkg.com/@startinblox/component-dashboard@0.2" defer)
script(type="module" src="https://unpkg.com/@startinblox/component-dashboard@0.3" defer)
//- script(type="module" src="/lib/solid-dashboard/dist/index.js" defer)
if endpoints.users || (endpoints.get && endpoints.get.users)

View File

@ -89,10 +89,16 @@ solid-router#navbar-router(default-route='dashboard')
div.menu-icon.icon-folder-alt
solid-route(name='project', rdf-type='hd:project', use-id='', hidden)
div.sub-menu.menu-notification
div#loader-projects.loader.loader-menu
div
div
div
div
solid-display.project-tab(
bind-user
nested-field='projects'
fields='project'
loader-id='loader-projects'
empty-widget='hubl-create'
empty-value='projet'
widget-project='hubl-menu-fix-url-project'
@ -110,10 +116,16 @@ solid-router#navbar-router(default-route='dashboard')
div.menu-icon.icon-folder-alt
solid-route(name='circle', rdf-type='hd:circle', use-id='', hidden)
div.sub-menu.menu-notification
div#loader-circles.loader.loader-menu
div
div
div
div
solid-display.circle-tab(
bind-user
nested-field='circles'
fields='circle'
loader-id='loader-circles'
empty-widget='hubl-create'
empty-value='cercle'
widget-circle='hubl-menu-fix-url-circle'
@ -130,9 +142,15 @@ solid-router#navbar-router(default-route='dashboard')
div.menu-icon.icon-envelope-letter
solid-route(name='messages', rdf-type='foaf:user', use-id='', hidden)
div.sub-menu.menu-notification
div#loader-messages.loader.loader-menu
div
div
div
div
solid-display.nosub.message-tab(
data-src=`${endpoints.users || (endpoints.get && endpoints.get.users)}`
fields='name, chatProfile.jabberID, badge'
loader-id='loader-messages'
search-fields="name"
search-label-name="Rechercher..."
search-widget-name="hubl-search-users"

View File

@ -34,12 +34,15 @@ nav.jsRightMenu(role='navigation')
solid-route(name='circle-information')
li
a Information
if (endpoints.resources || (endpoints.get && endpoints.get.resources)) && (endpoints.resourceskeywords || (endpoints.get && endpoints.get.resourceskeywords)) && (endpoints.resourcestypes || (endpoints.get && endpoints.get.resourcestypes))
solid-route(name='circle-resources' use-id)
li
a Resources
if (endpoints.events || (endpoints.get && endpoints.get.events)) && (endpoints.typeevents || (endpoints.get && endpoints.get.typeevents))
solid-route(name='circle-events' use-id)
li
a Events
if endpoints.polls || (endpoints.get && endpoints.get.polls)
solid-route(name='circle-polls' use-id)
li
a Polls

View File

@ -0,0 +1,75 @@
.loader {
margin: 0 auto;
position: relative;
width: 80px;
height: 20px;
&.loader-top {
top: 30px;
}
div {
position: absolute;
width: 13px;
height: 13px;
border-radius: 50%;
background: var(--color-menu-background);
animation-timing-function: cubic-bezier(0, 1, 1, 0);
}
&.loader-menu div {
width: 8px;
height: 8px;
background: var(--color-menu-text);
}
div:nth-child(1) {
left: 8px;
animation: lds-ellipsis1 0.6s infinite;
}
div:nth-child(2) {
left: 8px;
animation: lds-ellipsis2 0.6s infinite;
}
div:nth-child(3) {
left: 32px;
animation: lds-ellipsis2 0.6s infinite;
}
div:nth-child(4) {
left: 56px;
animation: lds-ellipsis3 0.6s infinite;
}
}
@keyframes lds-ellipsis1 {
0% {
transform: scale(0);
}
100% {
transform: scale(1);
}
}
@keyframes lds-ellipsis3 {
0% {
transform: scale(1);
}
100% {
transform: scale(0);
}
}
@keyframes lds-ellipsis2 {
0% {
transform: translate(0, 0);
}
100% {
transform: translate(24px, 0);
}
}

View File

@ -6,6 +6,7 @@
@import 'abstracts/fonts';
@import 'abstracts/variables';
@import 'abstracts/mixins';
@import 'components/loader';
@import 'components/icons/index';
@import 'base/main';
@import 'base/about';

View File

@ -3,10 +3,17 @@ div.content-box__info.flex
h1.centered Créer un cercle
div#loader-circles-create.loader.loader-top
div
div
div
div
solid-form.form.button-register(
data-src=`${endpoints.circles || endpoints.post.circles}`
fields='status, name, description'
loader-id='loader-circles-create'
class-status='form-label is-light is-full-width color'
class-name='form-label is-light is-full-width input-text-like'

View File

@ -66,6 +66,7 @@
bind-user
nested-field='circles'
fields='circle.name, circle.owner, leaveButton'
loader-id='loader-admin-circles'
class-circle.name='w280 border cell-with-name'
class-circle.owner='w280 border cell-with-id-card'
@ -101,6 +102,7 @@
data-src=`${endpoints.circles || endpoints.get.circles}joinable/`
fields='name, owner, members'
loader-id='loader-admin-circles'
class-name='w280 border cell-with-name'
class-owner='w280 border cell-with-id-card'
@ -112,6 +114,11 @@
order-by="name"
)
div#loader-admin-circles.loader.loader-top
div
div
div
div
#admin-circle-create.content-box__height(hidden)
include page-admin-circles-create.pug

View File

@ -14,10 +14,17 @@ div.content-box__info.flex
h1.centered Créer un nouveau projet
div#loader-projects-create.loader.loader-top
div
div
div
div
solid-form.form.button-register(
data-src=`${endpoints.projects || endpoints.post.projects}`
fields='status, line-1(customer.name, name), description, line-2(captain), logo'
loader-id='loader-projects-create'
label-status='Statut du cercle*'
widget-status='hubl-status'

View File

@ -82,6 +82,7 @@
bind-user
nested-field="projects"
fields='project.name, project.members, project.captain, leaveButton'
loader-id='loader-admin-projects'
class-project.name='w280 cell border cell-with-name'
class-project.members='w280 cell border cell-with-id-card'
@ -121,6 +122,7 @@
data-src=`${endpoints.projects || endpoints.get.projects}joinable/`
fields='name, members, captain, joinButton'
loader-id='loader-admin-projects'
class-name='w280 cell border cell-with-name'
class-members='w280 cell border cell-with-id-card'
@ -136,5 +138,11 @@
order-by="name"
)
div#loader-admin-projects.loader.loader-top
div
div
div
div
#admin-project-create(hidden)
include page-admin-projects-create.pug

View File

@ -3,10 +3,17 @@ div.content-box__info.flex
h1.centered Ajouter un utilisateur à la plateforme
div#loader-users-create.loader.loader-top
div
div
div
div
solid-form.form.button-register(
data-src=`${endpoints.users || endpoints.post.users}`
fields='line-1(first_name, last_name), line-2(username, email), line-3(password)'
loader-id='loader-users-create'
class-first_name='form-label is-light is-half-width input-text-like'
class-last_name='form-label is-light is-half-width input-text-like'

View File

@ -3,15 +3,24 @@ div.content-box__info.flex
h1.centered
span Modifier un utilisateur
div#loader-users-edit.loader.loader-top
div
div
div
div
solid-display(
bind-resources=''
fields='name'
loader-id='loader-users-edit'
)
solid-form.form.button-register(
bind-resources=''
fields='line-1(first_name, last_name), line-2(email)'
loader-id='loader-users-edit'
class-first_name='form-label is-light is-half-width input-text-like'
class-last_name='form-label is-light is-half-width input-text-like'

View File

@ -38,6 +38,7 @@
class='table-body'
data-src=`${endpoints.users || endpoints.get.users}`
fields='cell-1(user-thumb(account.picture, sup(name), sub(username))), actions'
loader-id='loader-admin-users'
class-account.picture='avatar user-thumb__picture'
class-name='user-thumb__name'
@ -53,6 +54,11 @@
order-by='username'
)
div#loader-admin-users.loader.loader-top
div
div
div
div
#admin-users-create.content-box__height(hidden)
include page-admin-users-create.pug

View File

@ -46,6 +46,12 @@ div.content-box__info
solid-ac-checker(permission='acl:Write', bind-resources)
h1 Modifie ton cercle
div#loader-circle-edit.loader.loader-top
div
div
div
div
solid-form.form.button-register(
bind-resources
@ -99,6 +105,7 @@ div.content-box__info
class='table-body'
bind-resources
fields='members'
loader-id='loader-circle-edit'
multiple-members=''
widget-members='hubl-team-template-edit'

View File

@ -7,10 +7,17 @@ solid-router(default-route='circle-profile', hidden)
.content-box__info.flex
div#loader-circle-profile.loader
div
div
div
div
.flex.space-between.with-padding.mobile-vertical-align
solid-display.mobile-margin__bottom(
bind-resources
fields='creationDateSet(title, creationDate)'
loader-id='loader-circle-profile'
class-title='word-spacing-right'
@ -74,6 +81,7 @@ solid-router(default-route='circle-profile', hidden)
solid-display.block(
bind-resources
fields='members'
loader-id='loader-circle-profile'
multiple-members=''
widget-members='hubl-circle-team-template'