diff --git a/src/hubl-router.pug b/src/hubl-router.pug index 7dc7768..844c353 100644 --- a/src/hubl-router.pug +++ b/src/hubl-router.pug @@ -53,6 +53,22 @@ for component of components routes.add(route); component.route = route; } + if(component.extensions) + for extension of component.extensions + - + if(typeof extension.route === 'undefined') { + extension.route = extension.type; + } + if(extension.route) { + extension.uniq = Math.random().toString(16).slice(2); + let route = extension.route; + if (routes.has(extension.route)) { + route += "-" + extension.uniq; + } + routes.add(route); + extension.route = route; + } + - const defaultComponent = components.filter(e=>e.defaultRoute != undefined); let defaultRoute = "dashboard"; diff --git a/src/views/page-circle.pug b/src/views/page-circle.pug index 6ebcfb1..c2b6c44 100644 --- a/src/views/page-circle.pug +++ b/src/views/page-circle.pug @@ -14,50 +14,31 @@ no-render ) include partials/circle/page-circle-profile.pug - //- Note: - Instead of using flat events/resources or polls components, you - may you to expend the way circle work to handle events & cie. - Like: - { - "type": "circles", - ... - "extensions": [ - { - "type": "events", - "endpoints": {...}, - ... - } - ] - } - - - let extensions = new Set(); - if(component.extensions) { - extensions = new Set(component.extensions.map(c=>c.type)); - } - if extensions.has('events') - div( - id=`${component.route}-events` - hidden - data-view=`${component.route}-events` - no-render - ) - include partials/circle/page-circle-events.pug - if extensions.has('resources') - div( - id=`${component.route}-resources` - hidden - data-view=`${component.route}-resources` - no-render - ) - include partials/circle/page-circle-resources.pug - if extensions.has('polls') - div( - id=`${component.route}-polls` - hidden - data-view=`${component.route}-polls` - no-render - ) - include partials/circle/page-circle-polls.pug + for extension of component.extensions + if extension.type == 'events' + div( + id=`${component.route}-events` + hidden + data-view=`${component.route}-events` + no-render + ) + include partials/circle/page-circle-events.pug + if extension.type == 'resources' + div( + id=`${component.route}-resources` + hidden + data-view=`${component.route}-resources` + no-render + ) + include partials/circle/page-circle-resources.pug + if extension.type == 'polls' + div( + id=`${component.route}-polls` + hidden + data-view=`${component.route}-polls` + no-render + ) + include partials/circle/page-circle-polls.pug nav.jsRightMenu.text-disable-selection.sidebar.whitespace-normal(role='navigation') solid-router.segment.whitespace-normal.text-color-heading.text-bold(default-route=`${component.route}-chat`) @@ -75,18 +56,19 @@ nav.jsRightMenu.text-disable-selection.sidebar.whitespace-normal(role='navigatio li.segment.full.padding-medium span.icon.ci-information.icon-xlarge.margin-right-medium a(data-trans='circle.menuRight.information') - if extensions.has('resources') - solid-route.segment.full(name=`${component.route}-resources` use-id) - li.segment.full.padding-medium - span.icon.ci-file.icon-xlarge.margin-right-medium - a(data-trans='circle.menuRight.resources') - if extensions.has('events') - solid-route.segment.full(name=`${component.route}-events` use-id) - li.segment.full.padding-medium - span.icon.ci-appointment.icon-xlarge.margin-right-medium - a(data-trans='circle.menuRight.events') - if extensions.has('polls') - solid-route.segment.full(name=`${component.route}-polls` use-id) - li.segment.full.padding-medium - span.icon.ci-list.icon-xlarge.margin-right-medium - a(data-trans='circle.menuRight.polls') + for extension of component.extensions + if extension.type == 'resources' + solid-route.segment.full(name=`${component.route}-resources` use-id) + li.segment.full.padding-medium + span.icon.ci-file.icon-xlarge.margin-right-medium + a(data-trans='circle.menuRight.resources') + if extension.type == 'events' + solid-route.segment.full(name=`${component.route}-events` use-id) + li.segment.full.padding-medium + span.icon.ci-appointment.icon-xlarge.margin-right-medium + a(data-trans='circle.menuRight.events') + if extension.type == 'polls' + solid-route.segment.full(name=`${component.route}-polls` use-id) + li.segment.full.padding-medium + span.icon.ci-list.icon-xlarge.margin-right-medium + a(data-trans='circle.menuRight.polls') diff --git a/src/views/partials/circle/page-circle-events.pug b/src/views/partials/circle/page-circle-events.pug index a17294d..d9a88c3 100644 --- a/src/views/partials/circle/page-circle-events.pug +++ b/src/views/partials/circle/page-circle-events.pug @@ -1,10 +1,9 @@ solid-event( - class='w700' bind-resources nested-field="events" - range-event-type=`${component.extensions.find(c => c.type=='events').endpoints.typeevents}` - range-event-circle=`${component.endpoints.get}/` - upload-dir=`${component.extensions.find(c => c.type=='events').endpoints.uploads}` - id-prefix=`${component.route}` - uniq=component.uniq + range-event-type=`${extension.endpoints.typeevents}` + range-event-circle=`${getComponent('circles').endpoints.get}/` + upload-dir=`${extension.endpoints.uploads}` + id-prefix='default' + uniq=extension.uniq ) diff --git a/src/views/partials/circle/page-circle-polls.pug b/src/views/partials/circle/page-circle-polls.pug index 2a51451..e73dedc 100644 --- a/src/views/partials/circle/page-circle-polls.pug +++ b/src/views/partials/circle/page-circle-polls.pug @@ -1,9 +1,9 @@ solid-poll( - class='w700' - id-prefix='circles' bind-resources nested-field="polls" - range-base-polls=`${component.get('polls').endpoints.pollRangeBase}` - upload-dir=`${component.get('polls').endpoints.uploads}` - uniq=component.uniq -) \ No newline at end of file + data-dest=extension.endpoints.post + range-tags=extension.endpoints.pollRangeTags + range-circles=extension.endpoints.pollRangeCircles + upload-dir=extension.endpoints.uploads + uniq=extension.uniq +) diff --git a/src/views/partials/circle/page-circle-resources.pug b/src/views/partials/circle/page-circle-resources.pug index db44f8f..cd46f6b 100644 --- a/src/views/partials/circle/page-circle-resources.pug +++ b/src/views/partials/circle/page-circle-resources.pug @@ -1,10 +1,15 @@ solid-resource( - class='w700' bind-resources nested-field="resources" - range-resource-type=`${component.extensions.find(c => c.type=='resources').endpoints.resourcestypes}` - range-resource-keyword=`${component.extensions.find(c => c.type=='resources').endpoints.resourceskeywords}` - range-resource-circle=`${component.endpoints.get}/` - upload-dir=`${component.extensions.find(c => c.type=='resources').endpoints.uploads}` - id-prefix='circles' + post-data-src=`${extension.endpoints.post}` + range-resource-type=`${extension.endpoints.types}` + post-data-type-src=`${extension.endpoints.postTypes}` + range-resource-keyword=`${extension.endpoints.keywords}` + post-data-keyword-src=`${extension.endpoints.postKeywords}` + range-resource-circle=`${getComponent('circles').endpoints.get}/` + associated-circle-label="" + data-trans=`associated-circle-label=${extension.parameters && extension.parameters.associatedName ? extension.parameters.associatedName : 'circle.extensions.associated'}` + upload-dir=`${extension.endpoints.uploads}` + id-prefix='default' + uniq=extension.uniq )