Assign and view translator

This commit is contained in:
kngako
2022-06-22 02:25:56 +02:00
parent dc37529d49
commit 180d7241ad
9 changed files with 337 additions and 20 deletions

View File

@@ -59,4 +59,18 @@ html {
.tracker-dropdown {
margin-left: 0;
margin-top: -2px;
}
.initial-icon {
display:inline-block;
font-size:1em;
width:2.5em;
height:2.5em;
line-height:2.5em;
text-align:center;
border-radius:50%;
background:plum;
vertical-align:middle;
margin-right:1em;
color:white;
}

View File

@@ -0,0 +1,4 @@
document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('#translator-input');
var instances = M.Autocomplete.init(elems, {});
});

View File

@@ -0,0 +1,4 @@
document.addEventListener('DOMContentLoaded', function() {
var elems = document.querySelectorAll('#translator-dropdown');
var instances = M.Dropdown.init(elems, {});
});

View File

@@ -45,18 +45,43 @@ block content
a.dropdown-trigger editor ▼
tbody
each translationChapter in translationChapters.sort((a, b) => a.index - b.index)
tr(onclick=`window.location='/translate/${translationChapter.translationArtifactVersion.id}/chapter/${translationChapter.id}'`)
-
const onclickResponse = `window.location='/translate/${translationChapter.translationArtifactVersion.id}/chapter/${translationChapter.id}'`
tr
//- TODO: link to the translationChapter...
td
p
label
input(type="checkbox")
//- TODO: Make this a issueId...
input(name="selectedTranslationChapters", type="checkbox", value=translationChapter.id)
span
td.truncate(title=translationChapter.chapter.name)= translationChapter.chapter.name
td
td(onclick=onclickResponse)
span.truncate(title=translationChapter.chapter.name)= translationChapter.chapter.name
td(onclick=onclickResponse)
a(href=`/projects/${project.id}/tracker?dialectId=${translationChapter.translationArtifactVersion.dialect.id}`)= translationChapter.translationArtifactVersion.dialect.name
td #{translationChapter.translationArtifactVersion.artifactVersion.artifact.name} - #{translationChapter.translationArtifactVersion.artifactVersion.tag}
td= translationChapter.index
td
td
td
-
const artifactName = `${translationChapter.translationArtifactVersion.artifactVersion.artifact.name} - ${translationChapter.translationArtifactVersion.artifactVersion.tag}`
td(onclick=onclickResponse)
span.truncate(title=artifactName)= artifactName
td(onclick=onclickResponse)= translationChapter.index
td(onclick=onclickResponse)
each translationChapterTranslator in translationChapter.translationChapterTranslators
a(href=`/projects/${project.id}/tracker?translatorId=${translationChapterTranslator.translatorId}`)
-
const translatorDisplayName = translationChapterTranslator.translator.entityEmail == null ? translationChapterTranslator.translator.name : translationChapterTranslator.translator.entityEmail.email.address
const stringToColour = function(str) {
var hash = 0;
for (var i = 0; i < str.length; i++) {
hash = str.charCodeAt(i) + ((hash << 5) - hash);
}
var colour = '#';
for (var i = 0; i < 3; i++) {
var value = (hash >> (i * 8)) & 0xFF;
colour += ('00' + value.toString(16)).substr(-2);
}
return colour;
}
span.initial-icon(style=`background: ${stringToColour(translationChapterTranslator.translatorId)};`, title=translatorDisplayName)= translatorDisplayName.split(" ").map(l => l.at(0)).join("")
td(onclick=onclickResponse)
td(onclick=onclickResponse)

View File

@@ -0,0 +1,28 @@
extend templates/layout.pug
block content
.container
.center
h1 #{translationChapter.translationArtifactVersion.artifactVersion.artifact.dialect.name} to #{translationChapter.translationArtifactVersion.name}
h2= translationChapter.translationArtifactVersion.artifactVersion.artifact.name
p.flow-text
span.chip #{translationChapter.chapter.wordCount.toLocaleString()} words
p.flow-text Add translator
form.row(action=`/translate/${translationChapter.translationArtifactVersion.id}/chapter/${translationChapter.id}/translator`, method="post")
.col.s12
.row
.input-field.col.s12
i.material-icons.prefix translate
input#translator-input.autocomplete(type="text", name="translator", required=true)
label(for="translator-input") Enter translators email
//- TODO add other functionality... phone number or username
block additionalScripts
script
include js/init-translator-autocomplete.js

View File

@@ -13,9 +13,13 @@ block content
.col.s12.m4
p.flow-text
a.btn-flat.waves-effect Translator &#x25BC;
a.btn-flat.waves-effect.dropdown-trigger(href=`/translate/${translationChapter.translationArtifactVersion.id}/chapter/${translationChapter.id}/translator`) Translator &#x25BC;
br
if translationChapter.translationChapterTranslators.length > 0
span With #{translationChapter.translationChapterTranslators.length} translator(s) assigned
each translationChapterTranslator in translationChapter.translationChapterTranslators
-
const translatorDisplayName = translationChapterTranslator.translator.entityEmail == null ? translationChapterTranslator.translator.name : translationChapterTranslator.translator.entityEmail.email.address
span.chip= translatorDisplayName
else
span No translators assigned yet
.col.s12.m4
@@ -64,4 +68,8 @@ block content
else if translationChunk.translation
a.btn.blue(href=`/translate/${translationChapter.translationArtifactVersion.id}/chapter/${translationChapter.id}/t/${translationChunk.index}`) edit
else
a.btn.black(href=`/translate/${translationChapter.translationArtifactVersion.id}/chapter/${translationChapter.id}/t/${translationChunk.index}`) translate
a.btn.black(href=`/translate/${translationChapter.translationArtifactVersion.id}/chapter/${translationChapter.id}/t/${translationChunk.index}`) translate
block additionalScripts
script
include js/init-translator-dropdown.js