Assign and view translator
This commit is contained in:
@@ -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;
|
||||
}
|
||||
4
server/views/js/init-translator-autocomplete.js
Normal file
4
server/views/js/init-translator-autocomplete.js
Normal file
@@ -0,0 +1,4 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var elems = document.querySelectorAll('#translator-input');
|
||||
var instances = M.Autocomplete.init(elems, {});
|
||||
});
|
||||
4
server/views/js/init-translator-dropdown.js
Normal file
4
server/views/js/init-translator-dropdown.js
Normal file
@@ -0,0 +1,4 @@
|
||||
document.addEventListener('DOMContentLoaded', function() {
|
||||
var elems = document.querySelectorAll('#translator-dropdown');
|
||||
var instances = M.Dropdown.init(elems, {});
|
||||
});
|
||||
@@ -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)
|
||||
28
server/views/translate-chapter-translator-form.pug
Normal file
28
server/views/translate-chapter-translator-form.pug
Normal 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
|
||||
@@ -13,9 +13,13 @@ block content
|
||||
.col.s12.m4
|
||||
|
||||
p.flow-text
|
||||
a.btn-flat.waves-effect Translator ▼
|
||||
a.btn-flat.waves-effect.dropdown-trigger(href=`/translate/${translationChapter.translationArtifactVersion.id}/chapter/${translationChapter.id}/translator`) Translator ▼
|
||||
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
|
||||
Reference in New Issue
Block a user