From 84a4b7b8628504e20e3600c441381f7e5daf0460 Mon Sep 17 00:00:00 2001 From: uhensler <urs.hensler@frentix.com> Date: Mon, 18 Feb 2019 10:08:01 +0100 Subject: [PATCH] OO-3855: Show error if rating ranges are invalid Survey configurations are valid even if they are not visible in the GUI. --- .../forms/ui/RubricEditorController.java | 144 +++++++++--------- .../forms/ui/_i18n/LocalStrings_de.properties | 2 +- .../forms/ui/_i18n/LocalStrings_en.properties | 2 +- .../forms/ui/_i18n/LocalStrings_fr.properties | 30 ++-- .../ui/_i18n/LocalStrings_pt_BR.properties | 32 ++-- 5 files changed, 103 insertions(+), 107 deletions(-) diff --git a/src/main/java/org/olat/modules/forms/ui/RubricEditorController.java b/src/main/java/org/olat/modules/forms/ui/RubricEditorController.java index 86a9bb58396..31833305b44 100644 --- a/src/main/java/org/olat/modules/forms/ui/RubricEditorController.java +++ b/src/main/java/org/olat/modules/forms/ui/RubricEditorController.java @@ -85,7 +85,7 @@ public class RubricEditorController extends FormBasicController implements PageE private final String[] nameDisplayKeys = new String[] { NameDisplay.execution.name(), NameDisplay.report.name() }; private final String[] sliderTypeKeys = new String[] { SliderType.discrete.name(), SliderType.discrete_slider.name(), SliderType.continuous.name() }; private final String[] sliderStepKeys = new String[] { "2", "3", "4", "5", "6", "7", "8", "9", "10" }; - private final String[] showResponseKey = new String[] { "show.no.response" }; + private final String[] showSurveyConfigKey = new String[] { "rubric.survey.configuration.show" }; private List<StepLabelColumn> stepLabels = new ArrayList<>(); private List<SliderRow> sliders = new ArrayList<>(); @@ -167,8 +167,8 @@ public class RubricEditorController extends FormBasicController implements PageE // survey configs uifactory.addSpacerElement("rubric.survey.configuration.upper", settingsLayout, false); - surveyConfigEl = uifactory.addCheckboxesHorizontal("rubric.survey.configuration", settingsLayout, ENABLED_KEYS, - translateAll(getTranslator(), ENABLED_KEYS)); + surveyConfigEl = uifactory.addCheckboxesHorizontal("rubric.survey.configuration", settingsLayout, + showSurveyConfigKey, translateAll(getTranslator(), showSurveyConfigKey)); surveyConfigEl.addActionListener(FormEvent.ONCHANGE); // name @@ -270,8 +270,8 @@ public class RubricEditorController extends FormBasicController implements PageE // no answer noAnswerEl = uifactory.addCheckboxesVertical("no.response." + count.incrementAndGet(), - "rubric.no.response.enabled", settingsLayout, showResponseKey, - new String[] { translate("rubric.no.response.enabled.show") }, 1); + "rubric.no.response.enabled", settingsLayout, ENABLED_KEYS, + translateAll(getTranslator(), ENABLED_KEYS), 1); noAnswerEl.setEnabled(!restrictedEdit); uifactory.addSpacerElement("rubric.survey.configuration.upper", settingsLayout, false); @@ -305,6 +305,10 @@ public class RubricEditorController extends FormBasicController implements PageE } private void updateUI() { + updateSurveyConfigUI(); + } + + private void updateSurveyConfigUI() { boolean isSurveyConfig = surveyConfigEl.isAtLeastSelected(1); nameEl.setVisible(isSurveyConfig); nameDisplayEl.setVisible(isSurveyConfig); @@ -314,7 +318,7 @@ public class RubricEditorController extends FormBasicController implements PageE scaleTypeEl.setVisible(isSurveyConfig); noAnswerEl.setVisible(isSurveyConfig); - noAnswerEl.select(showResponseKey[0], rubric.isNoResponseEnabled()); + noAnswerEl.select(noAnswerEl.getKey(0), rubric.isNoResponseEnabled()); insufficientCont.setVisible(isSurveyConfig); lowerBoundInsufficientEl.setVisible(isSurveyConfig); upperBoundInsufficientEl.setVisible(isSurveyConfig); @@ -626,6 +630,7 @@ public class RubricEditorController extends FormBasicController implements PageE @Override protected boolean validateFormLogic(UserRequest ureq) { boolean allOk = true; + boolean surveyConfigOk = true; sliderTypeEl.clearError(); if(!sliderTypeEl.isOneSelected()) { @@ -633,55 +638,59 @@ public class RubricEditorController extends FormBasicController implements PageE allOk &= false; } - if (surveyConfigEl.isAtLeastSelected(1)) { - double min = -101; - double max = 101; - int steps = 100; - String selectedSliderType = sliderTypeEl.getSelectedKey(); - SliderType sliderType = SliderType.valueOf(selectedSliderType); - String selectedScaleTypeKey = scaleTypeEl.getSelectedKey(); - ScaleType scaleType = ScaleType.getEnum(selectedScaleTypeKey); - if (sliderType != SliderType.continuous) { - steps = Integer.parseInt(stepsEl.getSelectedKey()); - } - min = scaleType.getStepValue(steps, 1); - max = scaleType.getStepValue(steps, steps); - if (min > max) { - double temp = min; - min = max; - max = temp; - } - lowerBoundInsufficientEl.clearError(); - if (isInvalidDouble(lowerBoundInsufficientEl.getValue(), min, max) - || isInvalidDouble(upperBoundInsufficientEl.getValue(), min, max) - || isOnlyOnePresent(lowerBoundInsufficientEl, upperBoundInsufficientEl)) { - lowerBoundInsufficientEl.setErrorKey("error.outside.range", - new String[] { String.valueOf(min), String.valueOf(max) }); - allOk = false; - } - lowerBoundNeutralEl.clearError(); - if (isInvalidDouble(lowerBoundNeutralEl.getValue(), min, max) - || isInvalidDouble(upperBoundNeutralEl.getValue(), min, max) - || isOnlyOnePresent(lowerBoundNeutralEl, upperBoundNeutralEl)) { - lowerBoundNeutralEl.setErrorKey("error.outside.range", - new String[] { String.valueOf(min), String.valueOf(max) }); - allOk = false; - } else if (isOverlapping(lowerBoundInsufficientEl, upperBoundInsufficientEl, lowerBoundNeutralEl, upperBoundNeutralEl)) { - lowerBoundNeutralEl.setErrorKey("error.range.overlapping", null); - allOk = false; - } - lowerBoundSufficientEl.clearError(); - if (isInvalidDouble(lowerBoundSufficientEl.getValue(), min, max) - || isInvalidDouble(upperBoundSufficientEl.getValue(), min, max) - || isOnlyOnePresent(lowerBoundSufficientEl, upperBoundSufficientEl)) { - lowerBoundSufficientEl.setErrorKey("error.outside.range", - new String[] { String.valueOf(min), String.valueOf(max) }); - allOk = false; - } else if (isOverlapping(lowerBoundInsufficientEl, upperBoundInsufficientEl, lowerBoundSufficientEl, upperBoundSufficientEl) - || isOverlapping(lowerBoundNeutralEl, upperBoundNeutralEl, lowerBoundSufficientEl, upperBoundSufficientEl)) { - lowerBoundSufficientEl.setErrorKey("error.range.overlapping", null); - allOk = false; - } + double min = -101; + double max = 101; + int steps = 100; + String selectedSliderType = sliderTypeEl.getSelectedKey(); + SliderType sliderType = SliderType.valueOf(selectedSliderType); + String selectedScaleTypeKey = scaleTypeEl.getSelectedKey(); + ScaleType scaleType = ScaleType.getEnum(selectedScaleTypeKey); + if (sliderType != SliderType.continuous) { + steps = Integer.parseInt(stepsEl.getSelectedKey()); + } + min = scaleType.getStepValue(steps, 1); + max = scaleType.getStepValue(steps, steps); + if (min > max) { + double temp = min; + min = max; + max = temp; + } + lowerBoundInsufficientEl.clearError(); + if (isInvalidDouble(lowerBoundInsufficientEl.getValue(), min, max) + || isInvalidDouble(upperBoundInsufficientEl.getValue(), min, max) + || isOnlyOnePresent(lowerBoundInsufficientEl, upperBoundInsufficientEl)) { + lowerBoundInsufficientEl.setErrorKey("error.outside.range", + new String[] { String.valueOf(min), String.valueOf(max) }); + surveyConfigOk = false; + } + lowerBoundNeutralEl.clearError(); + if (isInvalidDouble(lowerBoundNeutralEl.getValue(), min, max) + || isInvalidDouble(upperBoundNeutralEl.getValue(), min, max) + || isOnlyOnePresent(lowerBoundNeutralEl, upperBoundNeutralEl)) { + lowerBoundNeutralEl.setErrorKey("error.outside.range", + new String[] { String.valueOf(min), String.valueOf(max) }); + surveyConfigOk = false; + } else if (isOverlapping(lowerBoundInsufficientEl, upperBoundInsufficientEl, lowerBoundNeutralEl, upperBoundNeutralEl)) { + lowerBoundNeutralEl.setErrorKey("error.range.overlapping", null); + surveyConfigOk = false; + } + lowerBoundSufficientEl.clearError(); + if (isInvalidDouble(lowerBoundSufficientEl.getValue(), min, max) + || isInvalidDouble(upperBoundSufficientEl.getValue(), min, max) + || isOnlyOnePresent(lowerBoundSufficientEl, upperBoundSufficientEl)) { + lowerBoundSufficientEl.setErrorKey("error.outside.range", + new String[] { String.valueOf(min), String.valueOf(max) }); + surveyConfigOk = false; + } else if (isOverlapping(lowerBoundInsufficientEl, upperBoundInsufficientEl, lowerBoundSufficientEl, upperBoundSufficientEl) + || isOverlapping(lowerBoundNeutralEl, upperBoundNeutralEl, lowerBoundSufficientEl, upperBoundSufficientEl)) { + lowerBoundSufficientEl.setErrorKey("error.range.overlapping", null); + surveyConfigOk = false; + } + + if (!surveyConfigOk) { + surveyConfigEl.select(surveyConfigEl.getKey(0), true); + updateSurveyConfigUI(); + allOk &= false; } return allOk & super.validateFormLogic(ureq); @@ -784,60 +793,47 @@ public class RubricEditorController extends FormBasicController implements PageE boolean noResonse = noAnswerEl.isAtLeastSelected(1); rubric.setNoResponseEnabled(noResonse); - boolean isSurveyConfig = surveyConfigEl.isAtLeastSelected(1); String lowerBoundInsufficientValue = lowerBoundInsufficientEl.getValue(); - if (isSurveyConfig && StringHelper.containsNonWhitespace(lowerBoundInsufficientValue)) { + if (StringHelper.containsNonWhitespace(lowerBoundInsufficientValue)) { double lowerBoundInsufficient = Double.parseDouble(lowerBoundInsufficientValue); rubric.setLowerBoundInsufficient(lowerBoundInsufficient); } else { rubric.setLowerBoundInsufficient(null); - lowerBoundInsufficientEl.setValue(null); - lowerBoundInsufficientEl.clearError(); } String upperBoundInsufficientValue = upperBoundInsufficientEl.getValue(); - if (isSurveyConfig && StringHelper.containsNonWhitespace(upperBoundInsufficientValue)) { + if (StringHelper.containsNonWhitespace(upperBoundInsufficientValue)) { double upperBoundInsufficient = Double.parseDouble(upperBoundInsufficientValue); rubric.setUpperBoundInsufficient(upperBoundInsufficient); } else { rubric.setUpperBoundInsufficient(null); - upperBoundInsufficientEl.setValue(null); - upperBoundInsufficientEl.clearError(); } String lowerBoundNeutralValue = lowerBoundNeutralEl.getValue(); - if (isSurveyConfig && StringHelper.containsNonWhitespace(lowerBoundNeutralValue)) { + if (StringHelper.containsNonWhitespace(lowerBoundNeutralValue)) { double lowerBoundNeutral = Double.parseDouble(lowerBoundNeutralValue); rubric.setLowerBoundNeutral(lowerBoundNeutral); } else { rubric.setLowerBoundNeutral(null); - lowerBoundNeutralEl.setValue(null); - lowerBoundNeutralEl.clearError(); } String upperBoundNeutralValue = upperBoundNeutralEl.getValue(); - if (isSurveyConfig && StringHelper.containsNonWhitespace(upperBoundNeutralValue)) { + if (StringHelper.containsNonWhitespace(upperBoundNeutralValue)) { double upperBoundNeutral = Double.parseDouble(upperBoundNeutralValue); rubric.setUpperBoundNeutral(upperBoundNeutral); } else { rubric.setUpperBoundNeutral(null); - upperBoundNeutralEl.setValue(null); - upperBoundNeutralEl.clearError(); } String lowerBoundSufficientValue = lowerBoundSufficientEl.getValue(); - if (isSurveyConfig && StringHelper.containsNonWhitespace(lowerBoundSufficientValue)) { + if (StringHelper.containsNonWhitespace(lowerBoundSufficientValue)) { double lowerBoundSufficient = Double.parseDouble(lowerBoundSufficientValue); rubric.setLowerBoundSufficient(lowerBoundSufficient); } else { rubric.setLowerBoundSufficient(null); - lowerBoundSufficientEl.setValue(null); - lowerBoundSufficientEl.clearError(); } String upperBoundSufficientValue = upperBoundSufficientEl.getValue(); - if (isSurveyConfig && StringHelper.containsNonWhitespace(upperBoundSufficientValue)) { + if (StringHelper.containsNonWhitespace(upperBoundSufficientValue)) { double upperBoundSufficient = Double.parseDouble(upperBoundSufficientValue); rubric.setUpperBoundSufficient(upperBoundSufficient); } else { rubric.setUpperBoundSufficient(null); - upperBoundSufficientEl.setValue(null); - upperBoundSufficientEl.clearError(); } boolean startGoodRating = goodRatingEl.isOneSelected() && GOOD_RATING_START_KEY.equals(goodRatingEl.getSelectedKey()) diff --git a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties index c88bd3d1cc7..bc71527963f 100644 --- a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_de.properties @@ -105,7 +105,6 @@ rubric.name.report=In Reports rubric.name=Name rubric.neutral.explanation=Neutrale Beurteilung (Wert zwischen {0} und {1}) rubric.neutral=Neutral -rubric.no.response.enabled.show=anzeigen rubric.no.response.enabled=Spalte "$\:no.response" rubric.report.avg.abrev=\u00F8 rubric.report.avg.title=Durchschnitt @@ -132,6 +131,7 @@ rubric.scale.type=Skalentyp rubric.scale.zeroBallanced=Symmetrische Likert-Skala (-x bis x) rubric.sufficient.explanation=Gute Beurteilung (Wert zwischen {0} und {1}) rubric.sufficient=Gut +rubric.survey.configuration.show=anzeigen rubric.survey.configuration=Konfiguration Umfrage rubric.upper.bound=bis save.as.done=Speichern und abschliessen diff --git a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties index da6d82c0768..c54f2b11e63 100644 --- a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties +++ b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_en.properties @@ -105,7 +105,6 @@ rubric.name.report=In reports rubric.name=Name rubric.neutral.explanation=Neutral assessment (value between {0} and {1}) rubric.neutral=Neutral -rubric.no.response.enabled.show=show rubric.no.response.enabled=Column "$\:no.response" rubric.report.avg.abrev=\u00F8 rubric.report.avg.title=Average @@ -132,6 +131,7 @@ rubric.scale.type=Scale type rubric.scale.zeroBallanced=Ballanced Likert scale (-x to x) rubric.sufficient.explanation=Good rating (Value between {0} and {1}) rubric.sufficient=Good +rubric.survey.configuration.show=show rubric.survey.configuration=Survey configuration rubric.upper.bound=to save.as.done=Save and finish diff --git a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_fr.properties b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_fr.properties index e4dc735287b..7405fba2d23 100644 --- a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_fr.properties +++ b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_fr.properties @@ -52,8 +52,8 @@ h6=h6 hr=S\u00E9parateur htitle=Titre multiple.choice.others=Autres -multiple.choice.with.others=Autres multiple.choice.with.others.enabled=Le participant peut entrer d'autres valeurs +multiple.choice.with.others=Autres no.response=Pas de r\u00E9ponse possible report.anonymous.user=Anonyme report.count.count.title=Nombre @@ -62,25 +62,25 @@ report.excel.legend=L\u00E9gende report.excel.text=Texte report.export=Export report.max.session.exceeded=Le nombre maximum de questionnaires individuels ({0}) est d\u00E9pass\u00E9. Les questionnaires individuels ne seront pas imprim\u00E9s. -report.overview.duration=Dur\u00E9e report.overview.duration.count=Nombre report.overview.duration.title=Dur\u00E9e +report.overview.duration=Dur\u00E9e report.overview.figures.average.duration=Dur\u00E9e moyenne -report.overview.figures.number.done.session=Nombre de participants report.overview.figures.number.done.session.of={0} sur {1} +report.overview.figures.number.done.session=Nombre de participants report.overview.figures.submission.period=P\u00E9riode de soumission report.overview.figures.title=Indicateurs report.overview.total.title=Total rubriques -report.print=Imprimer -report.print.selection=S\u00E9lection du rapport report.print.selection.diagrams=$\:reports.diagram.report report.print.selection.overview=$\:reports.table.overview report.print.selection.sessions=$\:reports.session.selection report.print.selection.tables=$\:reports.table.report +report.print.selection=S\u00E9lection du rapport report.print.title.diagrams=$\:reports.diagram.report report.print.title.overview=$\:reports.table.overview report.print.title.session=$\:reports.session.selection report.print.title.tables=$\:reports.table.report +report.print=Imprimer report.session.dummy= report.session.participant=Participant report.session.quickview=<i class\='o_icon o_icon_quickview'> </i> @@ -90,17 +90,16 @@ reports.session.selection=Questionnaires individuels reports.table.overview=Aper\u00E7u reports.table.report=Tableaux rubric.column.label=Etiquette de colonne -rubric.good.rating=\u00C9valuation positive rubric.good.rating.end=Droite rubric.good.rating.start=Gauche -rubric.insufficient=Insuffisant +rubric.good.rating=\u00C9valuation positive rubric.insufficient.explanation=Evaluation insuffisante (valuer entre {0} et {1}) +rubric.insufficient=Insuffisant rubric.lower.bound=de rubric.name=Nom -rubric.neutral=Neutre rubric.neutral.explanation=Evaluation neutre (valeur entre {0} et {1}) +rubric.neutral=Neutre rubric.no.response.enabled=Colonne "$\:no.response" -rubric.no.response.enabled.show=afficher rubric.report.avg.abrev=\u00F8 rubric.report.avg.title=Moyenne rubric.report.end.lable.title= @@ -124,24 +123,25 @@ rubric.scale.maxToOne=Echelle de Likert descendante (x \u00E0 1) rubric.scale.oneToMax=Echelle de Likert ascendante (1 \u00E0 x) rubric.scale.type=Type d'\u00E9chelle rubric.scale.zeroBallanced=Echelle de Likert \u00E9quilibr\u00E9e (-x \u00E0 x) -rubric.sufficient=Suffisant rubric.sufficient.explanation=Evaluation suffisante (valeur entre {0} et {1}) +rubric.sufficient=Suffisant +rubric.survey.configuration.show=afficher rubric.upper.bound=\u00E0 save.as.done=Sauver et terminer save.intermediate=Sauver temporairement -session.informations.fill.in=Remplir automatiquement session.informations.fill.in.label= +session.informations.fill.in=Remplir automatiquement session.informations.informations=Informations session.informations.label={0} session.informations.report.number.participants={0} utilisateurs ont particip\u00E9 au questionnaire dont {1} anonymement. session.informations.type.age=Age -single.choice.presentation=Pr\u00E9sentation single.choice.presentation.dropdown=Liste \u00E0 choix single.choice.presentation.horizontal=Horizontal single.choice.presentation.vertical=Vertical +single.choice.presentation=Pr\u00E9sentation slider.continuous=Continu -slider.discrete=Discret avec bouton slider.discrete.slider=Curseur \u00E0 valeur discr\u00E8tes +slider.discrete=Discret avec bouton slider.end=Fin slider.label.code=Q{0} slider.start=D\u00E9but @@ -156,11 +156,11 @@ textinput.download.info={0} textes sur {1} sont affich\u00E9s. textinput.download.link=T\u00E9l\u00E9charger tous les textes. textinput.multiple.rows=Plusieurs lignes textinput.no.text=Aucun texte disponible. -textinput.numeric=Valeurs autoris\u00E9es textinput.numeric.numeric=Num\u00E9rique textinput.numeric.text=Texte -textinput.rows=Lignes +textinput.numeric=Valeurs autoris\u00E9es textinput.rows.mode=Type de ligne +textinput.rows=Lignes textinput.single.row=Une seule ligne title.example=<h1>Cliquer pour \u00E9diter le titre</h1> warning.form.not.completed=Attention\! Vous n'avez pas rempli tous les champs. diff --git a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_pt_BR.properties b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_pt_BR.properties index a91f9c51efb..6aeb05d03ea 100644 --- a/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_pt_BR.properties +++ b/src/main/java/org/olat/modules/forms/ui/_i18n/LocalStrings_pt_BR.properties @@ -10,8 +10,8 @@ add.formsessioninformations=Informa\u00E7\u00F5es add.formsinglechoice=Escolha \u00FAnica add.slider=Adicionar barra de rolagem bar.chart.legend=Legenda -choice.add=Adicionar escolha chart.count=Contagem +choice.add=Adicionar escolha choice.delete=Excluir choice.example=Exemplo de valor choice.value=Escolha @@ -23,8 +23,8 @@ disclaimer.default.text=Todos os dados pessoais submetidos s\u00E3o processados disclaimer.not.accepted=Por favor aceite. disclaimer.text=Carta de acordo end.label=Fim -error.cannot.save=Erro ao salvar. error.cannot.save.file=Erro ao carregar o arquivo\! +error.cannot.save=Erro ao salvar. error.no.number=Formato de n\u00FAmero errado. Exemplo\: 1.0, 0.5, 0.2 error.outside.range=O valor deve estar entre {0} e {1}. evaluation.anonymous=Esta \u00E9 uma pesquisa an\u00F4nima. Nenhuma informa\u00E7\u00E3o pessoal sobre voc\u00EA ser\u00E1 armazenada, a menos que explicitamente solicitado (por exemplo, idade e sexo). Al\u00E9m disso, o endere\u00E7o IP do seu PC n\u00E3o \u00E9 salvo. N\u00E3o h\u00E1 como mesclar os resultados da pesquisa com seus dados. @@ -53,8 +53,8 @@ h6=h6 hr=Separador htitle=T\u00EDtulo multiple.choice.others=Outros -multiple.choice.with.others=Outros multiple.choice.with.others.enabled=O participante pode inserir outros valores +multiple.choice.with.others=Outros no.response=Nenhuma resposta raw.example=Clique para editar o texto. O editor HTML ser\u00E1 aberto. report.anonymous.user=An\u00F4nimo @@ -64,25 +64,25 @@ report.excel.legend=Legenda report.excel.text=Texto report.export=Exportar report.max.session.exceeded=O n\u00FAmero m\u00E1ximo de question\u00E1rios individuais ({0}) foi excedido. Os question\u00E1rios individuais n\u00E3o s\u00E3o impressos. -report.overview.duration=Dura\u00E7\u00E3o report.overview.duration.count=Contagem report.overview.duration.title=Dura\u00E7\u00E3o +report.overview.duration=Dura\u00E7\u00E3o report.overview.figures.average.duration=Dura\u00E7\u00E3o m\u00E9dia -report.overview.figures.number.done.session=N\u00FAmero de participantes report.overview.figures.number.done.session.of={0} de {1} +report.overview.figures.number.done.session=N\u00FAmero de participantes report.overview.figures.submission.period=Per\u00EDodo de Submiss\u00E3o report.overview.figures.title=N\u00FAmeros-chave report.overview.total.title=Rubricas totais -report.print=Imprimir -report.print.selection=Relatar sele\u00E7\u00E3o de partes report.print.selection.diagrams=$\:reports.diagram.report report.print.selection.overview=$\:reports.table.overview report.print.selection.sessions=$\:reports.session.selection report.print.selection.tables=$\:reports.table.report +report.print.selection=Relatar sele\u00E7\u00E3o de partes report.print.title.diagrams=$\:reports.diagram.report report.print.title.overview=$\:reports.table.overview report.print.title.session=$\:reports.session.selection report.print.title.tables=$\:reports.table.report +report.print=Imprimir report.session.participant=Participante report.session.quickview=<i class\='o_icon o_icon_quickview'> </i> reports.diagram.report=Diagramas @@ -91,17 +91,16 @@ reports.session.selection=Question\u00E1rios individuais reports.table.overview=Vis\u00E3o global reports.table.report=Tabelas rubric.column.label=R\u00F3tulo da coluna -rubric.good.rating=Avalia\u00E7\u00E3o positiva rubric.good.rating.end=Direita rubric.good.rating.start=Esquerda -rubric.insufficient=Insuficiente +rubric.good.rating=Avalia\u00E7\u00E3o positiva rubric.insufficient.explanation=Boa classifica\u00E7\u00E3o (valor entre {0} e {1}) +rubric.insufficient=Insuficiente rubric.lower.bound=de rubric.name=Nome -rubric.neutral=Neutro rubric.neutral.explanation=Classifica\u00E7\u00E3o neutra (valor entre {0} e {1}) +rubric.neutral=Neutro rubric.no.response.enabled=Coluna "$\:no.response" -rubric.no.response.enabled.show=mostrar rubric.report.avg.abrev=\u00F8 rubric.report.avg.title=M\u00E9dia rubric.report.figure.title=N\u00FAmeros-chave @@ -122,8 +121,9 @@ rubric.scale.maxToOne=Escala de Likert descendente (x a 1) rubric.scale.oneToMax=Escala de Likert Ascendente (1 para x) rubric.scale.type=Tipo de escala rubric.scale.zeroBallanced=Escala de Likert balanceada (-x para x) -rubric.sufficient=Bom rubric.sufficient.explanation=Boa classifica\u00E7\u00E3o (valor entre {0} e {1}) +rubric.sufficient=Bom +rubric.survey.configuration.show=mostrar rubric.upper.bound=para save.as.done=Enviar avalia\u00E7\u00E3o save.intermediate=Salvamento r\u00E1pido @@ -132,13 +132,13 @@ session.informations.informations=Informa\u00E7\u00F5es session.informations.label={0} session.informations.report.number.participants={0} de usu\u00E1rios participaram da pesquisa, sendo {1} an\u00F4nimo. session.informations.type.age=Idade -single.choice.presentation=Apresenta\u00E7\u00E3o single.choice.presentation.dropdown=Suspenso single.choice.presentation.horizontal=Horizontal single.choice.presentation.vertical=Vertical +single.choice.presentation=Apresenta\u00E7\u00E3o slider.continuous=Cont\u00EDnuo -slider.discrete=Discreto com r\u00E1dio slider.discrete.slider=Discreto com barra de rolagem +slider.discrete=Discreto com r\u00E1dio slider.end=Fim slider.label.code=Q{0} slider.start=Iniciar @@ -153,11 +153,11 @@ textinput.download.info={0} de {1} textos s\u00E3o mostrados. textinput.download.link=Baixe todos os textos. textinput.multiple.rows=V\u00E1rias linhas textinput.no.text=Nenhum texto est\u00E1 dispon\u00EDvel. -textinput.numeric=Valores textinput.numeric.numeric=Num\u00E9rico textinput.numeric.text=Texto -textinput.rows=Linhas +textinput.numeric=Valores textinput.rows.mode=Tipo linha +textinput.rows=Linhas textinput.single.row=Linha \u00FAnica title.example=<h1>Clique para editar t\u00EDtulo</h1> warning.form.not.completed=Cuidado\! Voc\u00EA n\u00E3o preencheu todos os campos. -- GitLab