feature: project-edit + circle profile

This commit is contained in:
gaelle morin 2021-01-08 15:39:37 +01:00
parent 902c977386
commit 6d04fc377a
No known key found for this signature in database
GPG Key ID: 028426702B95CF9C
13 changed files with 175 additions and 131 deletions

14
package-lock.json generated
View File

@ -8,7 +8,7 @@
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"@startinblox/hubl-styling-framework": "^1.0.18",
"@startinblox/hubl-styling-framework": "^1.0.20",
"fs-extra": "^9.0.1",
"normalize.css": "^8.0.1",
"parcel-bundler": "^1.12.4",
@ -1442,9 +1442,9 @@
}
},
"node_modules/@startinblox/hubl-styling-framework": {
"version": "1.0.18",
"resolved": "https://registry.npmjs.org/@startinblox/hubl-styling-framework/-/hubl-styling-framework-1.0.18.tgz",
"integrity": "sha512-ZMm7M8DPyqq+oyapcS1N3Zzp+Kz86RuTGljVe3cxm2DrYDs8bweQmv/QjUGFUJ1b5U3vEnWO7BYL46u+wo/K4A=="
"version": "1.0.20",
"resolved": "https://registry.npmjs.org/@startinblox/hubl-styling-framework/-/hubl-styling-framework-1.0.20.tgz",
"integrity": "sha512-Q9pFi2pzTkNQYHyKKmNJb53ddP2Ldx63HwZgODounK1EQ9CYPD9SJHDhHBT1ueGkde7fljipSXyLdgw54Odz+g=="
},
"node_modules/@types/q": {
"version": "1.5.4",
@ -10603,9 +10603,9 @@
}
},
"@startinblox/hubl-styling-framework": {
"version": "1.0.18",
"resolved": "https://registry.npmjs.org/@startinblox/hubl-styling-framework/-/hubl-styling-framework-1.0.18.tgz",
"integrity": "sha512-ZMm7M8DPyqq+oyapcS1N3Zzp+Kz86RuTGljVe3cxm2DrYDs8bweQmv/QjUGFUJ1b5U3vEnWO7BYL46u+wo/K4A=="
"version": "1.0.20",
"resolved": "https://registry.npmjs.org/@startinblox/hubl-styling-framework/-/hubl-styling-framework-1.0.20.tgz",
"integrity": "sha512-Q9pFi2pzTkNQYHyKKmNJb53ddP2Ldx63HwZgODounK1EQ9CYPD9SJHDhHBT1ueGkde7fljipSXyLdgw54Odz+g=="
},
"@types/q": {
"version": "1.5.4",

View File

@ -45,7 +45,7 @@
]
},
"dependencies": {
"@startinblox/hubl-styling-framework": "^1.0.18",
"@startinblox/hubl-styling-framework": "^1.0.20",
"fs-extra": "^9.0.1",
"normalize.css": "^8.0.1",
"parcel-bundler": "^1.12.4",

View File

@ -62,6 +62,20 @@ html(lang="en")
hubl-reactivity(bind-user nested-field="projects" target-src=`${endpoints.projects || endpoints.get.projects}joinable/`)
include views/page-project.pug
#circle(hidden, data-view="circle").with-sidebar.whitespace-normal
hubl-reactivity(bind-user nested-field='inbox' target-src="store://user.circles")
hubl-reactivity(data-src=`${endpoints.post.circles}joinable/` target-src=`${endpoints.get.circles}`)
hubl-reactivity(data-src=`${endpoints.post.circles}` target-src=`${endpoints.get.circles}`)
hubl-reactivity(bind-user nested-field="circles" target-src=`${endpoints.post.circles}`)
hubl-reactivity(bind-user nested-field="circles" target-src=`${endpoints.post.circles}joinable/`)
hubl-reactivity(data-src=`${endpoints.circles || endpoints.get.circles}joinable/` target-src=`${endpoints.circles || endpoints.get.circles}`)
hubl-reactivity(bind-user nested-field="circles" target-src=`${endpoints.circles || endpoints.get.circles}`)
hubl-reactivity(bind-user nested-field="circles" target-src=`${endpoints.circles || endpoints.get.circles}joinable/`)
include views/page-circle.pug
//- if endpoints.get.dashboards
//- #dashboard(hidden, data-view="dashboard")
//- include views/page-dashboard.pug
@ -112,7 +126,7 @@ html(lang="en")
//- include views/page-job-offers.pug
//- if endpoints.get.projects
//- #project(hidden, data-view="project", no-render).segment.lg-full.with-sidebar
//- #project(hidden, data-view="project", no-render).with-sidebar.whitespace-normal
//- hubl-reactivity(bind-user nested-field='inbox' target-src="store://user.projects")
//- hubl-reactivity(data-src=`${endpoints.post.projects}joinable/` target-src=`${endpoints.get.projects}`)
//- hubl-reactivity(data-src=`${endpoints.post.projects}` target-src=`${endpoints.get.projects}`)

View File

@ -135,6 +135,7 @@
"title": " Create a nouveau project",
"labelName": "Project name*",
"labelCustomer": "Customer name*",
"labelDescription": "Description",
"labelCaptain": "Project captain*",
"buttonSubmit": "Save"
},

View File

@ -135,6 +135,7 @@
"title": "Crear un proyecto nuevo",
"labelName": "Nombre del proyecto *",
"labelCustomer": "Nombre del/la clientx *",
"labelDescription": "Description",
"labelCaptain": "Líder del proyecto *",
"buttonSubmit": "Guardar"
},

View File

@ -135,6 +135,7 @@
"title": "Créer un nouveau projet",
"labelName": "Nom du projet *",
"labelCustomer": "Nom du client*",
"labelDescription": "Description",
"labelCaptain": "Capitaine du projet*",
"buttonSubmit": "Enregistrer"
},

View File

@ -18,6 +18,23 @@ solid-display>div {
display: contents !important;
}
.w75 {
width: 75%;
}
.w25 {
width: 25%;
}
.w50 {
width: 50%;
}
.text-left {
text-align: left;
}
@import 'header/_index';
@import 'left-nav/_index';
@import 'content/_index';

View File

@ -1,20 +1,22 @@
div.segment.padding-top-xsmall.padding-right-large.padding-bottom-xsmall.padding-left-large.border-bottom.border-color-grey.text-color-heading.clearfix
div.segment.lg-half.float-left
div.segment.lg-full.padding-large.border-bottom.border-color-grey
div.segment.lg-half
h2.text-uppercase.text-xlarge.text-letter-spacing-large(data-trans='project.create.title')
div.segment.lg-half.float-left.text-right
div.segment.lg-half.text-right
solid-link(class="backlink", next='admin-project-list' data-trans='project.create.backlink')
div.segment.padding-large.clearfix
div.segment.lg-full.padding-large
div#loader-projects-create.loader.loader-top
div
div
div
div
solid-form.button-register(
solid-form.segment.lg-full.whitespace-normal.form(
data-src=`${endpoints.projects || endpoints.post.projects}`
fields='status, customer.name, name, description, captain, linebreak'
range-captain=`${endpoints.users || endpoints.get.users}`
fields='status, customer.name, name, captain'
required-status
required-customer.name
required-name
@ -22,23 +24,25 @@ div.segment.padding-large.clearfix
loader-id='loader-projects-create'
label-status=''
widget-status='solid-form-hidden'
value-status="Private"
label-customer.name=''
class-customer.name='segment margin-bottom-medium lg-half padding-right-small text-small text-semibold text-uppercase text-color-heading float-left'
label-name=''
class-name='segment margin-bottom-medium lg-half padding-left-small text-small text-semibold text-uppercase text-color-heading float-left'
label-customer.name=''
label-name=''
label-description='Description'
label-captain=''
range-captain=`${endpoints.users || endpoints.get.users}`
class-captain='segment margin-bottom-medium lg-half padding-right-small text-small text-semibold text-uppercase text-color-heading icon icon-magnify'
class-customer.name='segment margin-bottom-medium lg-half padding-right-small text-small text-semibold text-uppercase text-color-heading'
class-name='segment margin-bottom-medium lg-half padding-left-small text-small text-semibold text-uppercase text-color-heading'
class-description='segment margin-bottom-medium lg-full text-small text-semibold text-uppercase text-color-heading'
class-captain='segment margin-bottom-medium lg-half padding-right-small text-small text-semibold text-uppercase text-color-heading whitespace-normal'
class-linebreak='segment lg-full'
widget-status='solid-form-hidden'
value-status='Private'
widget-description='solid-form-textarea'
widget-captain='solid-form-dropdown-autocompletion-label'
next='project'
widget-linebreak='solid-form-hidden'
submit-button=''
next='project'
data-trans='label-status=project.create.labelStatus;label-customer.name=project.create.labelCustomer;label-name=project.create.labelName;label-captain=project.create.labelCaptain;submit-button=project.create.buttonSubmit'
)
data-trans='label-status=project.create.labelStatus;label-customer.name=project.create.labelCustomer;label-name=project.create.labelName;label-description=project.create.labelDescription;label-captain=project.create.labelCaptain;submit-button=project.create.buttonSubmit'
)

View File

@ -1,10 +1,10 @@
//-solid-router(default-route='circle-profile', hidden)
solid-router(default-route='circle-profile', hidden)
solid-route(name='circle-profile')
solid-route(name='circle-edit')
//-#circle-profile(hidden, data-view="circle-profile")
solid-ac-checker(permission='acl:Read', bind-resources)
div.segment.padding-large.border-bottom.border-color-grey.clearfix
#circle-profile(hidden, data-view="circle-profile")
solid-ac-checker.block(permission='acl:Read', bind-resources)
div.segment.lg-full.padding-large.border-bottom.border-color-grey
solid-display.text-xxlarge.text-letter-spacing-large(
bind-resources
fields='name, dash, description'
@ -19,17 +19,17 @@
solid-widget(name='hubl-circle-team-contact')
template
solid-link(data-src='\${value}', next='messages')
solid-link.icon.icon-secondary.hover.icon-speech.margin-left-xsmall(data-src='\${value}', next='messages')
div.segment.padding-large.clearfix
div.segment.lg-full.padding-large
div#loader-circle-profile.loader
div
div
div
div
div.segment.clearfix
solid-display.segment.lg-half.float-left(
div.whitespace-normal
solid-display.segment.lg-half(
bind-resources
fields='creationDateSet(title, creationDate)'
loader-id='loader-circle-profile'
@ -41,23 +41,22 @@
widget-creationDate='solid-display-value-date'
)
solid-ac-checker.segment.lg-half.float-left.text-right.margin-bottom-large(permission='acl:Append', bind-resources, nested-field='members')
solid-ac-checker.segment.lg-half.text-right.margin-bottom-large(permission='acl:Append', bind-resources, nested-field='members')
solid-ac-checker(permission='acl:Delete', bind-resources)
solid-link(class='button text-xsmall text-bold text-uppercase reversed color-secondary bordered icon icon-pencil' next='circle-edit' bind-resources data-trans='circle.profile.buttonModify')
solid-ac-checker(no-permission='acl:Delete', bind-resources)
solid-link(class='button text-xsmall text-bold text-uppercase reversed color-secondary bordered icon icon-pencil' next='circle-edit' bind-resources data-trans='circle.profile.buttonAdd')
div.segment.lg-auto.float-right.margin-bottom-large
solid-ac-checker(permission='acl:Delete', bind-resources)
solid-delete(
class='button text-xsmall text-bold text-uppercase color-secondary bordered'
bind-resources
data-label=''
data-trans='data-label=circle.profile.buttonDelete'
next='admin-circles'
)
solid-ac-checker.segment.lg-full.text-right.margin-bottom-large(permission='acl:Delete', bind-resources)
solid-delete(
class='button text-xsmall text-bold text-uppercase color-secondary bordered'
bind-resources
data-label=''
data-trans='data-label=circle.profile.buttonDelete'
next='admin-circles'
)
solid-widget.segment.lg-auto.float-right.margin-bottom-large(name='hubl-circle-leave-button')
solid-widget(name='hubl-circle-leave-button')
template
solid-ac-checker(no-permission='acl:Delete', data-src="${src}", nested-field="circle")
solid-delete(
@ -102,28 +101,28 @@
solid-widget(name='hubl-circle-user-admin')
template ${value ? "Administrateur" : ""}
solid-display.user-thumb(
solid-display.segment.lg-full.labelled-avatar.two-lines.whitespace-normal.children.lg-children-full.children-margin-bottom-medium(
bind-resources
nested-field='members'
loader-id='loader-circle-profile'
fields='user.account.picture, content(name-and-icon(user.name, user, is_admin), sub(atom, user.communities))'
fields='segment1(user.account.picture), segment2(line1(user.name, user, is_admin), line2(atom, user.communities))'
widget-user='hubl-circle-team-contact'
class-user.account.picture='user-thumb-avatar'
class-content='user-thumb-content'
class-name-and-icon='user-thumb-content__name-and-icon'
class-user.name='name'
class-user='icon top-align icon-secondary hover icon-speech'
class-is_admin='tag color-primary'
class-sub='user-thumb-content__sub-text community'
class-atom='icon icon-primary mdi-atom'
class-segment1='segment'
class-user.account.picture='avatar'
class-segment2='segment lg-three-quarter margin-left-xsmall'
class-line1='block'
class-user.name='text-semibold text-color-heading text-sub'
class-line2='block'
class-atom='icon icon-large icon-third mdi-atom margin-right-xxsmall'
class-user.communities='lg-full'
class-is_admin='segment margin-left-medium tag color-primary'
multiple-user.communities
multiple-user.communities-fields="community.name"
widget-classGroup='solid-set-div'
widget-user='hubl-circle-team-contact'
widget-user.account.picture='hubl-user-avatar'
widget-is_admin='hubl-circle-user-admin'
)

View File

@ -131,64 +131,64 @@ solid-router#navbar-router(default-route='dashboard')
//- div.segment.icon.icon-small.icon-calendar
//- div.segment.text-uppercase.text-letter-spacing-large(data-trans="menuLeft.events")
//- div.divider
if endpoints.projects || (endpoints.get && endpoints.get.projects)
//- if endpoints.projects || (endpoints.get && endpoints.get.projects)
//- div.menu-wrapper
//- solid-link.menu.segment.lg-full.padding-small.text-semibold.text-color-white.heading-active.bg-color-heading.hover.active
//- //- (next='admin-project-list')
//- div.segment.margin-right-xxsmall
//- div.segment.icon.icon-small.icon-folder-alt
//- div.segment.lg-three-quarter.text-uppercase.text-letter-spacing-large(data-trans="menuLeft.projects")
//- div.menu-chevron.segment
//- div.icon-arrow-up
//- //- div.menu-icon.icon-arrow-right-circle
//- 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.ellipsis(
//- bind-user
//- nested-field='projects'
//- fields='project'
//- loader-id='loader-projects'
//- empty-widget='hubl-create'
//- empty-value=''
//- data-trans="empty-value=menuLeft.emptyCircleProject.project"
//- widget-project='hubl-menu-fix-url-project'
//- order-asc="project.customer.name"
//- )
//- div.divider
if endpoints.circles || (endpoints.get && endpoints.get.circles)
div.menu-wrapper
solid-link.menu.segment.lg-full.padding-small.text-semibold.text-color-white.heading-active.bg-color-heading.hover.active
//- (next='admin-project-list')
//- (next='admin-circle-list')
div.segment.margin-right-xxsmall
div.segment.icon.icon-small.icon-folder-alt
div.segment.lg-three-quarter.text-uppercase.text-letter-spacing-large(data-trans="menuLeft.projects")
div.segment.lg-three-quarter.text-uppercase.text-letter-spacing-large(data-trans="menuLeft.circles")
div.menu-chevron.segment
div.icon-arrow-up
//- div.menu-icon.icon-arrow-right-circle
solid-route(name='project', rdf-type='hd:project', use-id='', hidden)
solid-route(name='circle', rdf-type='hd:circle', use-id='', hidden)
div.sub-menu.menu-notification
div#loader-projects.loader.loader-menu
div#loader-circles.loader.loader-menu
div
div
div
div
solid-display.ellipsis(
bind-user
nested-field='projects'
fields='project'
loader-id='loader-projects'
nested-field='circles'
fields='circle'
loader-id='loader-circles'
empty-widget='hubl-create'
empty-value=''
data-trans="empty-value=menuLeft.emptyCircleProject.project"
widget-project='hubl-menu-fix-url-project'
order-asc="project.customer.name"
data-trans="empty-value=menuLeft.emptyCircleProject.circle"
widget-circle='hubl-menu-fix-url-circle'
order-asc="circle.name"
)
div.divider
//-if endpoints.circles || (endpoints.get && endpoints.get.circles)
//- div.menu-wrapper
//- solid-link.menu.segment.lg-full.padding-small.text-semibold.text-color-white.heading-active.bg-color-heading.hover.active
//- //- (next='admin-circle-list')
//- div.segment.margin-right-xxsmall
//- div.segment.icon.icon-small.icon-folder-alt
//- div.segment.lg-three-quarter.text-uppercase.text-letter-spacing-large(data-trans="menuLeft.circles")
//- div.menu-chevron.segment
//- div.icon-arrow-up
//- //- div.menu-icon.icon-arrow-right-circle
//- 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.ellipsis(
//- bind-user
//- nested-field='circles'
//- fields='circle'
//- loader-id='loader-circles'
//- empty-widget='hubl-create'
//- empty-value=''
//- data-trans="empty-value=menuLeft.emptyCircleProject.circle"
//- widget-circle='hubl-menu-fix-url-circle'
//- order-asc="circle.name"
//- )
//- div.divider
//- div.menu-wrapper
//- div.menu.segment.lg-full.padding-small.text-semibold.text-color-white.heading-active.bg-color-heading.hover.active
//- div.segment.margin-right-xxsmall

View File

@ -29,6 +29,9 @@ div.segment.lg-full.padding-large.whitespace-normal
data-trans='data-label=project.edit.buttonDelete'
)
solid-widget(name='hubl-project-edit-admin')
template ${value ? "Administrateur" : ""}
solid-ac-checker(permission='acl:Write', bind-resources)
div#loader-project-edit.loader.loader-top
div
@ -37,10 +40,10 @@ div.segment.lg-full.padding-large.whitespace-normal
div
//- Add translation for description and captain in the translate file
solid-form.segment.whitespace-normal.button-register(
solid-form.form(
bind-resources
fields='customer.name, name, description, captain'
fields='customer.name, name, description, captain, linebreak'
required-customer.name
required-name
required-captain
@ -54,10 +57,12 @@ div.segment.lg-full.padding-large.whitespace-normal
class-customer.name='segment margin-bottom-medium lg-half padding-right-small text-small text-semibold text-uppercase text-color-heading'
class-name='segment margin-bottom-medium lg-half padding-left-small text-small text-semibold text-uppercase text-color-heading'
class-description='segment margin-bottom-medium lg-full text-small text-semibold text-uppercase text-color-heading'
class-captain='segment margin-bottom-medium lg-half padding-right-small text-small text-semibold text-uppercase text-color-heading icon icon-magnify whitespace-normal'
class-captain='segment margin-bottom-medium lg-half padding-right-small text-small text-semibold text-uppercase text-color-heading whitespace-normal'
class-linebreak='segment lg-full'
widget-description='solid-form-textarea'
widget-captain='solid-form-dropdown-autocompletion-label'
widget-linebreak='solid-form-hidden'
partial=""
@ -70,7 +75,7 @@ div.segment.lg-full.padding-large.whitespace-normal
h3.segment.lg-full.padding-bottom-small.border-bottom.border-color-grey.text-color-heading.text-bold.text-letter-spacing-large(data-trans='project.edit.subTitle')
solid-ac-checker(permission='acl:Append', bind-resources, nested-field='members')
solid-form.block.segment.margin-bottom-xlarge.clearfix.button-register(
solid-form.block.segment.margin-bottom-xlarge.form(
bind-resources
nested-field='members'
fields='user'
@ -84,37 +89,39 @@ div.segment.lg-full.padding-large.whitespace-normal
data-trans='submit-button=project.edit.buttonAddMember'
)
//-.table-wrapper
.table-wrapper
.table
div.table-header.bg-color-third.text-color-heading
div.table-cell.w280(data-trans='project.edit.tableHeader1')
div.table-cell.w162(data-trans='project.edit.tableHeader2')
div.table-cell.w50(data-trans='project.edit.tableHeader1')
div.table-cell.w50(data-trans='project.edit.tableHeader2')
//-class='table-body'
solid-display(
class='table-body'
bind-resources
nested-field='members'
fields='classGroup(classGrid(user.account.picture, content(name-and-icon(user.name, user.groups), sub(atom, user.communities)))), self'
fields='cell(segment1(user.account.picture), segment2(line1(user.name, is_admin), line2(atom, user.communities))), self'
loader-id='loader-project-edit'
class-classGroup='table-cell w280'
class-self='table-cell w-162'
class-classGrid='segment margin-left-xlarge user-thumb'
class-user.account.picture='user-thumb-avatar'
class-content='user-thumb-content'
class-name-and-icon='user-thumb-content__name-and-icon'
class-user.name='name'
class-user.groups='tag color-primary'
class-sub='user-thumb-content__sub-text community'
class-atom='icon icon-primary mdi-atom'
class-cell='table-cell w50 labelled-avatar two-lines text-left'
class-self='table-cell w50'
class-segment1='segment'
class-user.account.picture='avatar'
class-segment2='segment lg-three-quarter margin-left-xsmall'
class-line1='block'
class-user.name='text-semibold text-color-heading text-sub'
class-is_admin='segment margin-left-medium tag color-primary'
class-line2='block'
class-atom='icon icon-large icon-third mdi-atom margin-right-xxsmall'
class-user.communities='lg-full'
multiple-user.communities
multiple-user.communities-fields="community.name"
widget-user.account.picture='hubl-user-avatar'
multiple-user.groups
multiple-user.groups-fields='name'
widget-is_admin='hubl-project-edit-admin'
action-self='self'
widget-self='project-edit-members-delete'

View File

@ -23,7 +23,7 @@ solid-router(default-route='project-profile', hidden)
solid-widget(name='hubl-project-team-contact')
template
solid-link.icon.icon-secondary.hover.icon-speech(data-src='\${value}', next='messages')
solid-link.icon.icon-secondary.hover.icon-speech.margin-left-xsmall(data-src='\${value}', next='messages')
div.segment.lg-full.padding-large
div#loader-project-profile.loader
@ -107,10 +107,10 @@ solid-router(default-route='project-profile', hidden)
class-segment2='segment lg-three-quarter margin-left-xsmall'
class-line1='block'
class-user.name='text-semibold text-color-heading text-sub word-spacing-right'
class-user.name='text-semibold text-color-heading text-sub'
class-line2='block'
class-atom='icon icon-large icon-third mdi-atom'
class-user.communities='lg-full word-spacing-left'
class-atom='icon icon-large icon-third mdi-atom margin-right-xxsmall'
class-user.communities='lg-full'
multiple-user.communities
multiple-user.communities-fields="community.name"

View File

@ -1,6 +1,6 @@
solid-widget(name='hubl-captain-contact')
template
solid-link.icon.icon-secondary.hover.icon-speech(data-src='\${value}', next='messages')
solid-link.icon.icon-secondary.hover.icon-speech.margin-left-xsmall(data-src='\${value}', next='messages')
solid-widget(name='hubl-captain')
template
@ -13,10 +13,10 @@ solid-widget(name='hubl-captain')
class-segment2='segment lg-three-quarter margin-left-xsmall'
class-line1='block'
class-name='text-semibold text-color-heading text-sub word-spacing-right'
class-name='text-semibold text-color-heading text-sub'
class-line2='block'
class-atom='icon icon-large icon-third mdi-atom'
class-communities='lg-full word-spacing-left'
class-atom='icon icon-large icon-third mdi-atom margin-right-xxsmall'
class-communities='lg-full'
value-user='${value}'