Merge branch 'feature/resource-component' of https://git.startinblox.com/applications/hubl into feature/resource-component
This commit is contained in:
commit
2f49e3a5a2
@ -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
|
||||
|
67
README.md
67
README.md
@ -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
|
||||
|
@ -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)
|
||||
|
||||
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)
|
||||
|
@ -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"
|
||||
|
@ -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
|
||||
|
75
src/styles/components/loader.scss
Normal file
75
src/styles/components/loader.scss
Normal 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);
|
||||
}
|
||||
}
|
@ -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';
|
||||
|
@ -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'
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
@ -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
|
@ -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'
|
||||
|
@ -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'
|
||||
|
@ -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
|
||||
|
@ -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'
|
||||
|
@ -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'
|
||||
|
Loading…
Reference in New Issue
Block a user