From 77997d7ca6c5e503eb7ec7103eaa659c04e3c356 Mon Sep 17 00:00:00 2001 From: Kgothatso Ngako Date: Fri, 18 Feb 2022 01:28:23 +0200 Subject: [PATCH] Add a tracker --- server/router/projects/index.js | 87 ++++++++++++++++++++++++++++++++ server/views/css/site.css | 6 +++ server/views/project-tracker.pug | 41 +++++++++++++++ server/views/project.pug | 3 ++ 4 files changed, 137 insertions(+) create mode 100644 server/views/project-tracker.pug diff --git a/server/router/projects/index.js b/server/router/projects/index.js index 943d2ac..899bde5 100644 --- a/server/router/projects/index.js +++ b/server/router/projects/index.js @@ -1120,6 +1120,93 @@ module.exports = function (options) { }) + router.route('/:id/tracker') + .get(function(request, response, next) { + db.Project.findByPk(request.params.id, { + include: [ + { + association: db.Project.Owner, + include: [ + { + association: db.Owner.OwnerEntities, + include: [ + { + association: db.OwnerEntity.Entity, + include: [ + { + association: db.Entity.EntityUsers, + required: false, + where: { + userId: request.user?.id ?? null + } + } + ] + } + ] + } + ] + } + ] + }).then(async (project) => { + if (project) { + db.TranslationChapter.findAll({ + include: [ + { + association: db.TranslationChapter.TranslationChunks, + include: [ + { + association: db.TranslationChunk.Translation + } + ] + }, + { + association: db.TranslationChapter.TranslationArtifactVersion, + required: true, + include: [ + { + association: db.TranslationArtifactVersion.ProjectTranslationArtifactVersions, + required: true, + where: { + projectId: request.params.id + }, + }, + { + association: db.TranslationArtifactVersion.ArtifactVersion, + include: [ + { + association: db.ArtifactVersion.ProjectArtifactVersions + }, + { + association: db.ArtifactVersion.Artifact, + include: [ + { + association: db.Artifact.Dialect + } + ] + } + ] + }, + { + association: db.TranslationArtifactVersion.Dialect + }, + ] + } + ] + }).then(translationChapters => { + response.display("project-tracker", { + user: request.user, + project: project, + translationChapters: translationChapters + }) + }).catch(error => { + next(error) + }) + } else { + next() + } + }) + }) + const getProjectArtifactVersion = (userId, project, artifactVersion) => { if (project.projectArtifactVersions.length == 0) { return db.ProjectArtifactVersion.create({ diff --git a/server/views/css/site.css b/server/views/css/site.css index 591a7eb..c0103bf 100644 --- a/server/views/css/site.css +++ b/server/views/css/site.css @@ -48,4 +48,10 @@ html { .bitcoin-address { word-wrap: break-word; +} + +.tracker-title-cell { + width: 1rem; + text-overflow: ellipsis; + overflow: hidden; } \ No newline at end of file diff --git a/server/views/project-tracker.pug b/server/views/project-tracker.pug new file mode 100644 index 0000000..d3986de --- /dev/null +++ b/server/views/project-tracker.pug @@ -0,0 +1,41 @@ +extend templates/layout.pug + +block content + - + const isOwnedByUser = project.owner.ownerEntities.some(ownerEntity => { + return ownerEntity.entity.entityUsers.some(entityUser => { + return entityUser.userId == user?.id + }) + }) + .container + .center + h1= project.name + + p.flow-text= project.description + + if isOwnedByUser + .row + .col.s12 + a.btn.black(href=`/projects/${project.id}/tracker/trail`) audit trail + + .divider + + table + thead + tr + th Title Text + th Artifact + th Chapter + th translator + th proof reader + tbody + each translationChapter in translationChapters.sort((a, b) => a.index - b.index) + tr + - + const title = translationChapter.translationChunks.length > 0 ? translationChapter.translationChunks.sort((a, b) => a.index - b.index)[0].text : "N/A" + td + a.tracker-title-cell(href=`/projects/${project.id}/tracker/${translationChapter.id}`, title=title)= title + td #{translationChapter.translationArtifactVersion.artifactVersion.artifact.name} - #{translationChapter.translationArtifactVersion.name} - #{translationChapter.translationArtifactVersion.artifactVersion.tag} + td= translationChapter.index + td + td \ No newline at end of file diff --git a/server/views/project.pug b/server/views/project.pug index fee40b0..05fad8d 100644 --- a/server/views/project.pug +++ b/server/views/project.pug @@ -17,6 +17,9 @@ block content .row .col.s12 a.btn.black(href=`/projects/${project.id}/campaign`) funding campaign + .row + .col.s12 + a.btn.black(href=`/projects/${project.id}/tracker`) tracker .row .col.s12 form(action=`/projects/${project.id}/sheets`, method="post")