diff --git a/scripts/langindex.json b/scripts/langindex.json index 2560b10c6..4e3c2d93d 100644 --- a/scripts/langindex.json +++ b/scripts/langindex.json @@ -453,6 +453,8 @@ "addon.mod_feedback.feedbackclose": "feedback", "addon.mod_feedback.feedbackopen": "feedback", "addon.mod_feedback.mapcourses": "feedback", + "addon.mod_feedback.maximal": "feedback", + "addon.mod_feedback.minimal": "feedback", "addon.mod_feedback.mode": "feedback", "addon.mod_feedback.modulenameplural": "feedback", "addon.mod_feedback.next_page": "feedback", diff --git a/src/addon/mod/feedback/lang/en.json b/src/addon/mod/feedback/lang/en.json index 01eec2c06..68e0a2b12 100644 --- a/src/addon/mod/feedback/lang/en.json +++ b/src/addon/mod/feedback/lang/en.json @@ -12,6 +12,8 @@ "feedback_is_not_open": "The feedback is not open", "feedback_submitted_offline": "This feedback has been saved to be submitted later.", "mapcourses": "Map feedback to courses", + "maximal": "Maximum", + "minimal": "Minimum", "mode": "Mode", "modulenameplural": "Feedback", "next_page": "Next page", diff --git a/src/addon/mod/feedback/pages/form/form.html b/src/addon/mod/feedback/pages/form/form.html index 29405ccb4..2725d3525 100644 --- a/src/addon/mod/feedback/pages/form/form.html +++ b/src/addon/mod/feedback/pages/form/form.html @@ -18,6 +18,7 @@ {{item.itemnumber}}. + {{item.postfix}}
diff --git a/src/addon/mod/feedback/pages/form/form.scss b/src/addon/mod/feedback/pages/form/form.scss index f4674d933..95b1e2c54 100644 --- a/src/addon/mod/feedback/pages/form/form.scss +++ b/src/addon/mod/feedback/pages/form/form.scss @@ -12,4 +12,7 @@ ion-app.app-root page-addon-mod-feedback-form { .item-wp .addon-mod_feedback-form-content { @include margin($item-wp-padding-media-top, ($item-wp-padding-end / 2), $item-wp-padding-media-bottom, 0); } + .addon-mod_feedback-postfix { + font-size: 1.4rem; + } } \ No newline at end of file diff --git a/src/addon/mod/feedback/providers/helper.ts b/src/addon/mod/feedback/providers/helper.ts index 45c7b8a3a..e66a24287 100644 --- a/src/addon/mod/feedback/providers/helper.ts +++ b/src/addon/mod/feedback/providers/helper.ts @@ -22,6 +22,7 @@ import { CoreSitesProvider } from '@providers/sites'; import { CoreDomUtilsProvider } from '@providers/utils/dom'; import { CoreTextUtilsProvider } from '@providers/utils/text'; import { CoreTimeUtilsProvider } from '@providers/utils/time'; +import { CoreUtilsProvider } from '@providers/utils/utils'; import { TranslateService } from '@ngx-translate/core'; /** @@ -38,7 +39,7 @@ export class AddonModFeedbackHelperProvider { protected textUtils: CoreTextUtilsProvider, protected translate: TranslateService, protected timeUtils: CoreTimeUtilsProvider, protected domUtils: CoreDomUtilsProvider, protected courseProvider: CoreCourseProvider, protected linkHelper: CoreContentLinksHelperProvider, - protected sitesProvider: CoreSitesProvider) { + protected sitesProvider: CoreSitesProvider, protected utils: CoreUtilsProvider) { } /** @@ -346,9 +347,13 @@ export class AddonModFeedbackHelperProvider { item.template = 'numeric'; const range = item.presentation.split(AddonModFeedbackProvider.LINE_SEP) || []; - item.rangefrom = range.length > 0 ? parseInt(range[0], 10) || '' : ''; - item.rangeto = range.length > 1 ? parseInt(range[1], 10) || '' : ''; + range[0] = range.length > 0 ? parseInt(range[0], 10) : undefined; + range[1] = range.length > 1 ? parseInt(range[1], 10) : undefined; + + item.rangefrom = typeof range[0] == 'number' && !isNaN(range[0]) ? range[0] : ''; + item.rangeto = typeof range[1] == 'number' && !isNaN(range[1]) ? range[1] : ''; item.value = typeof item.rawValue != 'undefined' ? parseFloat(item.rawValue) : ''; + item.postfix = this.getNumericBoundariesForDisplay(item.rangefrom, item.rangeto); return item; } @@ -493,4 +498,27 @@ export class AddonModFeedbackHelperProvider { return item; } + /** + * Returns human-readable boundaries (min - max). + * Based on Moodle's get_boundaries_for_display. + * + * @param {number} rangeFrom Range from. + * @param {number} rangeTo Range to. + * @return {string} Human-readable boundaries. + */ + protected getNumericBoundariesForDisplay(rangeFrom: number, rangeTo: number): string { + const rangeFromSet = typeof rangeFrom == 'number', + rangeToSet = typeof rangeTo == 'number'; + + if (!rangeFromSet && rangeToSet) { + return ' (' + this.translate.instant('addon.mod_feedback.maximal') + ': ' + this.utils.formatFloat(rangeTo) + ')'; + } else if (rangeFromSet && !rangeToSet) { + return ' (' + this.translate.instant('addon.mod_feedback.minimal') + ': ' + this.utils.formatFloat(rangeFrom) + ')'; + } else if (!rangeFromSet && !rangeToSet) { + return ''; + } + + return ' (' + this.utils.formatFloat(rangeFrom) + ' - ' + this.utils.formatFloat(rangeTo) + ')'; + } + } diff --git a/src/assets/lang/en.json b/src/assets/lang/en.json index 19b1b4666..12840934a 100644 --- a/src/assets/lang/en.json +++ b/src/assets/lang/en.json @@ -453,6 +453,8 @@ "addon.mod_feedback.feedbackclose": "Allow answers to", "addon.mod_feedback.feedbackopen": "Allow answers from", "addon.mod_feedback.mapcourses": "Map feedback to courses", + "addon.mod_feedback.maximal": "Maximum", + "addon.mod_feedback.minimal": "Minimum", "addon.mod_feedback.mode": "Mode", "addon.mod_feedback.modulenameplural": "Feedback", "addon.mod_feedback.next_page": "Next page",