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",