View entity objects

This commit is contained in:
2022-01-13 19:39:25 +02:00
parent 35fd113be0
commit 4128ee879f
11 changed files with 437 additions and 9 deletions

View File

@@ -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;
};

View File

@@ -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;
};

11
server/views/entities.pug Normal file
View File

@@ -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}`

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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}

View File

@@ -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}

View File

@@ -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}

25
server/views/entity.pug Normal file
View File

@@ -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

View File

@@ -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