diff --git a/server/router/entities/index.js b/server/router/entities/index.js new file mode 100644 index 0000000..56b1da7 --- /dev/null +++ b/server/router/entities/index.js @@ -0,0 +1,308 @@ +const express = require('express'); +const campaigns = require('../campaigns'); + +module.exports = function (options) { + const db = options.db; + var router = express.Router(); + + router.route('/') + .get(function(request, response, next) { + db.Entity.findAll({ + include: [ + ], + limit: 10 + }).then(entities => { + response.display("entities", { + user: request.user, + pageTitle: "Entities - Mantra", + entities: entities + }) + }) + + }) + + router.route('/:name') + .get(function(request, response, next) { + db.Entity.findOne({ + where: { + name: request.params.name + }, + // TODO: add counts here... + }).then(entity => { + response.display("entity", { + user: request.user, + pageTitle: "Entity - Mantra", + entity: entity + }) + }) + }) + + router.route('/:name/artifacts') + .get(function(request, response, next) { + db.Artifact.findAll({ + include: [ + { + association: db.Artifact.Owner, + required: true, + include: [ + { + association: db.Owner.OwnerEntities, + required: true, + include: [ + { + association: db.OwnerEntity.Entity, + require: true, + where: { + name: request.params.name + } + } + ] + } + ] + } + ] + }).then(artifacts => { + response.display("entity-artifacts", { + user: request.user, + pageTitle: `${request.params.name} artifacts - Mantra`, + artifacts: artifacts, + entityName: request.params.name + }) + }).catch(error => { + next(error) + }) + }) + + router.route('/:name/projects') + .get(function(request, response, next) { + db.Project.findAll({ + include: [ + { + association: db.Project.Owner, + required: true, + include: [ + { + association: db.Owner.OwnerEntities, + required: true, + include: [ + { + association: db.OwnerEntity.Entity, + require: true, + where: { + name: request.params.name + } + } + ] + } + ] + } + ] + }).then(projects => { + response.display("entity-projects", { + user: request.user, + pageTitle: `${request.params.name} projects - Mantra`, + projects: projects, + entityName: request.params.name + }) + }).catch(error => { + next(error) + }) + }) + + router.route('/:name/pledges') + .get(function(request, response, next) { + db.Project.findAll({ + include: [ + { + association: db.Project.Owner, + required: true, + include: [ + { + association: db.Owner.OwnerEntities, + required: true, + include: [ + { + association: db.OwnerEntity.Entity, + require: true, + where: { + name: request.params.name + } + } + ] + } + ] + } + ] + }).then(pledges => { + response.display("entity-pledges", { + user: request.user, + pageTitle: `${request.params.name} pledges - Mantra`, + pledges: pledges, + entityName: request.params.name + }) + }).catch(error => { + next(error) + }) + }) + + router.route('/:name/campaigns') + .get(function(request, response, next) { + db.Campaign.findAll({ + include: [ + { + association: db.Campaign.Owner, + required: true, + include: [ + { + association: db.Owner.OwnerEntities, + required: true, + include: [ + { + association: db.OwnerEntity.Entity, + require: true, + where: { + name: request.params.name + } + } + ] + } + ] + } + ] + }).then(campaigns => { + response.display("entity-campaigns", { + user: request.user, + pageTitle: `${request.params.name} campaigns - Mantra`, + campaigns: campaigns, + entityName: request.params.name + }) + }).catch(error => { + next(error) + }) + }) + + router.route('/:name/translations') + .get(function(request, response, next) { + db.TranslationArtifactVersion.findAll({ + include: [ + { + association: db.TranslationArtifactVersion.Owner, + required: true, + include: [ + { + association: db.Owner.OwnerEntities, + required: true, + include: [ + { + association: db.OwnerEntity.Entity, + require: true, + where: { + name: request.params.name + } + } + ] + } + ] + }, + { + association: db.TranslationArtifactVersion.ArtifactVersion, + required: true, + include: [ + { + association: db.ArtifactVersion.Artifact, + required: true + } + ] + } + ] + }).then(translationArtifactVersions => { + response.display("entity-translation-artifact-versions", { + user: request.user, + pageTitle: `${request.params.name} translations - Mantra`, + translationArtifactVersions: translationArtifactVersions, + entityName: request.params.name + }) + }).catch(error => { + next(error) + }) + }) + + router.route('/:name/translation-campaigns') + .get(function(request, response, next) { + db.TranslationArtifactVersionCampaign.findAll({ + include: [ + { + association: db.TranslationArtifactVersionCampaign.Owner, + required: true, + include: [ + { + association: db.Owner.OwnerEntities, + required: true, + include: [ + { + association: db.OwnerEntity.Entity, + require: true, + where: { + name: request.params.name + } + } + ] + } + ] + }, + ] + }).then(translationArtifactVersionCampaigns => { + response.display("entity-translation-artifact-version-campaigns", { + user: request.user, + pageTitle: `${request.params.name} translation campaigns - Mantra`, + translationArtifactVersionCampaigns: translationArtifactVersionCampaigns, + entityName: request.params.name + }) + }).catch(error => { + next(error) + }) + }) + + router.route('/:name/translation-pledges') + .get(function(request, response, next) { + db.TranslationArtifactVersionPledge.findAll({ + include: [ + { + association: db.TranslationArtifactVersionPledge.Owner, + required: true, + include: [ + { + association: db.Owner.OwnerEntities, + required: true, + include: [ + { + association: db.OwnerEntity.Entity, + require: true, + where: { + name: request.params.name + } + } + ] + } + ] + }, + ] + }).then(translationArtifactVersionPledges => { + response.display("entity-translation-artifact-version-pledges", { + user: request.user, + pageTitle: `${request.params.name} translation pledges - Mantra`, + translationArtifactVersionPledges: translationArtifactVersionPledges, + entityName: request.params.name + }) + }).catch(error => { + next(error) + }) + }) + // router.route('/create') + // .post(function(request, response, next) { + // console.log(request.body) + // next() + // }) + + return router; +}; \ No newline at end of file diff --git a/server/router/index.js b/server/router/index.js index 8a92a13..5f82f57 100644 --- a/server/router/index.js +++ b/server/router/index.js @@ -18,24 +18,26 @@ module.exports = function (options) { }); var accountRouter = require('./account/')(options); + var apiRouter = require('./api/')(options); + var campaignsRouter = require('./campaigns/')(options); + var entitiesRouter = require('./entities/')(options); + var forkRouter = require('./fork')(options); var libraryRouter = require('./library')(options); var pledgesRouter = require('./pledges/')(options); - var campaignsRouter = require('./campaigns/')(options); - var apiRouter = require('./api/')(options); + var projectsRouter = require('./projects')(options); var translateRouter = require('./translate/')(options); var versionsRouter = require('./versions')(options); - var forkRouter = require('./fork')(options); - var projectsRouter = require('./projects')(options); - router.use('/library', libraryRouter); - router.use('/pledges', pledgesRouter); - router.use('/campaigns', campaignsRouter); router.use('/account', accountRouter); router.use('/api', apiRouter); + router.use('/campaigns', campaignsRouter); + router.use('/entities', entitiesRouter); + router.use('/fork', forkRouter); + router.use('/library', libraryRouter); + router.use('/pledges', pledgesRouter); + router.use('/projects', projectsRouter); router.use('/translate', translateRouter); router.use('/v', versionsRouter); - router.use('/fork', forkRouter); - router.use('/projects', projectsRouter); return router; }; \ No newline at end of file diff --git a/server/views/entities.pug b/server/views/entities.pug new file mode 100644 index 0000000..e1a2254 --- /dev/null +++ b/server/views/entities.pug @@ -0,0 +1,11 @@ +extend templates/layout.pug + +block content + .container + .center + h1 Entities + + each entity in entities + p.flow-text + i.material-icons= entity.type == 'individual' ? 'person' : 'group' + a(href=`/entities/${entity.name}`)= ` ${entity.name}` \ No newline at end of file diff --git a/server/views/entity-artifacts.pug b/server/views/entity-artifacts.pug new file mode 100644 index 0000000..8bba2a8 --- /dev/null +++ b/server/views/entity-artifacts.pug @@ -0,0 +1,13 @@ +extend templates/layout.pug + +block content + .container + .center + h1 Artifacts + + if artifacts.length == 0 + p.flow-text No artifacts owned by #{entityName} + else + each artifact in artifacts + p.flow-text + a(href=`/library/${artifact.id}`)= artifact.name \ No newline at end of file diff --git a/server/views/entity-campaigns.pug b/server/views/entity-campaigns.pug new file mode 100644 index 0000000..77e36b1 --- /dev/null +++ b/server/views/entity-campaigns.pug @@ -0,0 +1,13 @@ +extend templates/layout.pug + +block content + .container + .center + h1 Campaigns + + if campaigns.length == 0 + p.flow-text No campaigns owned by #{entityName} + else + each campaign in campaigns + p.flow-text + a(href=`/campaigns/${campaign.id}`)= campaign.name \ No newline at end of file diff --git a/server/views/entity-projects.pug b/server/views/entity-projects.pug new file mode 100644 index 0000000..6b59ddb --- /dev/null +++ b/server/views/entity-projects.pug @@ -0,0 +1,13 @@ +extend templates/layout.pug + +block content + .container + .center + h1 Projects + + if projects.length == 0 + p.flow-text No projects owned by #{entityName} + else + each project in projects + p.flow-text + a(href=`/projects/${project.id}`)= project.name \ No newline at end of file diff --git a/server/views/entity-translation-artifact-version-campaigns.pug b/server/views/entity-translation-artifact-version-campaigns.pug new file mode 100644 index 0000000..d597e30 --- /dev/null +++ b/server/views/entity-translation-artifact-version-campaigns.pug @@ -0,0 +1,13 @@ +extend templates/layout.pug + +block content + .container + .center + h1 Translation Campaigns owned by #{entityName} + + if translationArtifactVersionCampaigns.length == 0 + p.flow-text No translation campaigns owned by #{entityName} + else + each translationArtifactVersionCampaign in translationArtifactVersionCampaigns + p.flow-text + a(href=`/translate/${translationArtifactVersionCampaign.translationArtifactVersionId}`) #{translationArtifactVersionCampaign.name} \ No newline at end of file diff --git a/server/views/entity-translation-artifact-version-pledges.pug b/server/views/entity-translation-artifact-version-pledges.pug new file mode 100644 index 0000000..ebe4353 --- /dev/null +++ b/server/views/entity-translation-artifact-version-pledges.pug @@ -0,0 +1,13 @@ +extend templates/layout.pug + +block content + .container + .center + h1 Translation Pledges owned by #{entityName} + + if translationArtifactVersionPledges.length == 0 + p.flow-text No translation pledges owned by #{entityName} + else + each translationArtifactVersionPledge in translationArtifactVersionPledges + p.flow-text + a(href=`/pledges/${translationArtifactVersionPledge.id}`) #{translationArtifactVersionPledge.name} \ No newline at end of file diff --git a/server/views/entity-translation-artifact-versions.pug b/server/views/entity-translation-artifact-versions.pug new file mode 100644 index 0000000..68684e3 --- /dev/null +++ b/server/views/entity-translation-artifact-versions.pug @@ -0,0 +1,13 @@ +extend templates/layout.pug + +block content + .container + .center + h1 Translations owned by #{entityName} + + if translationArtifactVersions.length == 0 + p.flow-text No translations owned by #{entityName} + else + each translationArtifactVersion in translationArtifactVersions + p.flow-text + a(href=`/translate/${translationArtifactVersion.id}`) #{translationArtifactVersion.name} - #{translationArtifactVersion.artifactVersion.artifact.name} - #{translationArtifactVersion.artifactVersion.tag} \ No newline at end of file diff --git a/server/views/entity.pug b/server/views/entity.pug new file mode 100644 index 0000000..39fcd53 --- /dev/null +++ b/server/views/entity.pug @@ -0,0 +1,25 @@ +extend templates/layout.pug + +block content + .container + .center + h1= entity.name + + .row + .col.s12 + a(href=`/entities/${entity.name}/artifacts`) + .chip artifacts + a(href=`/entities/${entity.name}/projects`) + .chip projects + a(href=`/entities/${entity.name}/pledges`) + .chip pledges + a(href=`/entities/${entity.name}/campaigns`) + .chip campaigns + a(href=`/entities/${entity.name}/translations`) + .chip translations + .row + .col.s12 + a(href=`/entities/${entity.name}/translation-campaigns`) + .chip translations campaign + a(href=`/entities/${entity.name}/translation-pledges`) + .chip translations pledges \ No newline at end of file diff --git a/server/views/templates/layout.pug b/server/views/templates/layout.pug index f8d172d..412b6d9 100644 --- a/server/views/templates/layout.pug +++ b/server/views/templates/layout.pug @@ -35,6 +35,10 @@ html(lang="en" dir="ltr") span.email mantra@exonumia.africa if user + li + a(href="/entities") + i.material-icons.black-text person + span entities li a(href="/library") i.material-icons.black-text person