From c35cdd04f88806cafb224619753619ad819c5576 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pau=20Ferrer=20Oca=C3=B1a?= Date: Mon, 28 Oct 2019 12:18:12 +0100 Subject: [PATCH] MOBILE-2972 blocks: Show categories when configured to be shown --- .../components/myoverview/myoverview.ts | 8 ++-- .../recentlyaccessedcourses.ts | 5 +- .../starredcourses/starredcourses.ts | 5 +- .../core-courses-course-progress.html | 6 ++- .../course-progress/course-progress.scss | 4 +- src/core/courses/providers/helper.ts | 46 +++++++++++-------- 6 files changed, 47 insertions(+), 27 deletions(-) diff --git a/src/addon/block/myoverview/components/myoverview/myoverview.ts b/src/addon/block/myoverview/components/myoverview/myoverview.ts index 064ddc747..3c75be8bd 100644 --- a/src/addon/block/myoverview/components/myoverview/myoverview.ts +++ b/src/addon/block/myoverview/components/myoverview/myoverview.ts @@ -167,7 +167,11 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem * @return Promise resolved when done. */ protected fetchContent(): Promise { - return this.coursesHelper.getUserCoursesWithOptions(this.sort).then((courses) => { + const config = this.block.configs; + + const showCategories = config && config.displaycategories && config.displaycategories.value == '1'; + + return this.coursesHelper.getUserCoursesWithOptions(this.sort, null, null, showCategories).then((courses) => { this.courseIds = courses.map((course) => { return course.id; }); @@ -176,8 +180,6 @@ export class AddonBlockMyOverviewComponent extends CoreBlockBaseComponent implem this.initCourseFilters(courses); - const config = this.block.configs; - this.showSelectorFilter = courses.length > 0 && (this.courses.past.length > 0 || this.courses.future.length > 0 || typeof courses[0].enddate != 'undefined'); diff --git a/src/addon/block/recentlyaccessedcourses/components/recentlyaccessedcourses/recentlyaccessedcourses.ts b/src/addon/block/recentlyaccessedcourses/components/recentlyaccessedcourses/recentlyaccessedcourses.ts index fd94dc7c2..aa7dbdd02 100644 --- a/src/addon/block/recentlyaccessedcourses/components/recentlyaccessedcourses/recentlyaccessedcourses.ts +++ b/src/addon/block/recentlyaccessedcourses/components/recentlyaccessedcourses/recentlyaccessedcourses.ts @@ -106,7 +106,10 @@ export class AddonBlockRecentlyAccessedCoursesComponent extends CoreBlockBaseCom * @return Promise resolved when done. */ protected fetchContent(): Promise { - return this.coursesHelper.getUserCoursesWithOptions('lastaccess', 10).then((courses) => { + const showCategories = this.block.configs && this.block.configs.displaycategories && + this.block.configs.displaycategories.value == '1'; + + return this.coursesHelper.getUserCoursesWithOptions('lastaccess', 10, null, showCategories).then((courses) => { this.courses = courses; this.initPrefetchCoursesIcons(); diff --git a/src/addon/block/starredcourses/components/starredcourses/starredcourses.ts b/src/addon/block/starredcourses/components/starredcourses/starredcourses.ts index 6be095a75..e5cabc99c 100644 --- a/src/addon/block/starredcourses/components/starredcourses/starredcourses.ts +++ b/src/addon/block/starredcourses/components/starredcourses/starredcourses.ts @@ -106,7 +106,10 @@ export class AddonBlockStarredCoursesComponent extends CoreBlockBaseComponent im * @return Promise resolved when done. */ protected fetchContent(): Promise { - return this.coursesHelper.getUserCoursesWithOptions('timemodified', 0, 'isfavourite').then((courses) => { + const showCategories = this.block.configs && this.block.configs.displaycategories && + this.block.configs.displaycategories.value == '1'; + + return this.coursesHelper.getUserCoursesWithOptions('timemodified', 0, 'isfavourite', showCategories).then((courses) => { this.courses = courses; this.initPrefetchCoursesIcons(); diff --git a/src/core/courses/components/course-progress/core-courses-course-progress.html b/src/core/courses/components/course-progress/core-courses-course-progress.html index ed72a738e..fb870dbba 100644 --- a/src/core/courses/components/course-progress/core-courses-course-progress.html +++ b/src/core/courses/components/course-progress/core-courses-course-progress.html @@ -4,7 +4,11 @@
-

+

+ + | + +

diff --git a/src/core/courses/components/course-progress/course-progress.scss b/src/core/courses/components/course-progress/course-progress.scss index 230838b1f..ef274566e 100644 --- a/src/core/courses/components/course-progress/course-progress.scss +++ b/src/core/courses/components/course-progress/course-progress.scss @@ -34,7 +34,7 @@ ion-app.app-root core-courses-course-progress { } } - .core-course-shortname { + .core-course-additional-info { margin-bottom: 8px; } @@ -113,7 +113,7 @@ ion-app.app-root .core-horizontal-scroll core-courses-course-progress { .core-course-link { @include padding(4px, 0px, 4px, 8px); - .core-course-shortname { + .core-course-additional-info { font-size: 1.2rem; } diff --git a/src/core/courses/providers/helper.ts b/src/core/courses/providers/helper.ts index d278ced6f..33d4ca571 100644 --- a/src/core/courses/providers/helper.ts +++ b/src/core/courses/providers/helper.ts @@ -73,10 +73,12 @@ export class CoreCoursesHelperProvider { * * @param course Course returned by core_enrol_get_users_courses. * @param courseByField Course returned by core_course_get_courses_by_field. + * @param addCategoryName Whether add category name or not. */ - loadCourseExtraInfo(course: any, courseByField: any): void { + loadCourseExtraInfo(course: any, courseByField: any, addCategoryName: boolean = false): void { if (courseByField) { course.displayname = courseByField.displayname; + course.categoryname = addCategoryName ? courseByField.categoryname : null; if (courseByField.overviewfiles && courseByField.overviewfiles[0]) { course.courseImage = courseByField.overviewfiles[0].fileurl; @@ -94,33 +96,37 @@ export class CoreCoursesHelperProvider { * core_course_get_courses_by_field if available. * * @param courses List of courses. + * @param loadCategoryNames Whether load category names or not. * @return Promise resolved when done. */ - loadCoursesExtraInfo(courses: any[]): Promise { - if (courses[0] && typeof courses[0].overviewfiles != 'undefined' && typeof courses[0].displayname != 'undefined') { - // We already have the extra data. Call loadCourseExtraInfo to load the calculated fields. - courses.forEach((course) => { - this.loadCourseExtraInfo(course, course); - }); - - return Promise.resolve(); - } - - if (!courses.length || !this.coursesProvider.isGetCoursesByFieldAvailable()) { + loadCoursesExtraInfo(courses: any[], loadCategoryNames: boolean = false): Promise { + if (!courses.length ) { // No courses or cannot get the data, stop. return Promise.resolve(); } - const courseIds = courses.map((course) => { + const promises = []; + let coursesInfo = []; + + let courseInfoAvalaible = false; + + if (this.coursesProvider.isGetCoursesByFieldAvailable() && (loadCategoryNames || + (typeof courses[0].overviewfiles == 'undefined' && typeof courses[0].displayname == 'undefined'))) { + const courseIds = courses.map((course) => { return course.id; }).join(','); - // Get the extra data for the courses. - return this.coursesProvider.getCoursesByField('ids', courseIds).then((coursesInfo) => { - coursesInfo = this.utils.arrayToObject(coursesInfo, 'id'); + courseInfoAvalaible = true; + // Get the extra data for the courses. + promises.push(this.coursesProvider.getCoursesByField('ids', courseIds).then((coursesInfos) => { + coursesInfo = this.utils.arrayToObject(coursesInfos, 'id'); + })); + } + + return Promise.all(promises).then(() => { courses.forEach((course) => { - this.loadCourseExtraInfo(course, coursesInfo[course.id]); + this.loadCourseExtraInfo(course, courseInfoAvalaible ? coursesInfo[course.id] : course, loadCategoryNames); }); }); } @@ -131,9 +137,11 @@ export class CoreCoursesHelperProvider { * @param sort Sort courses after get them. If sort is not defined it won't be sorted. * @param slice Slice results to get the X first one. If slice > 0 it will be done after sorting. * @param filter Filter using some field. + * @param loadCategoryNames Whether load category names or not. * @return Courses filled with options. */ - getUserCoursesWithOptions(sort: string = 'fullname', slice: number = 0, filter?: string): Promise { + getUserCoursesWithOptions(sort: string = 'fullname', slice: number = 0, filter?: string, loadCategoryNames: boolean = false): + Promise { return this.coursesProvider.getUserCourses().then((courses) => { const promises = [], courseIds = courses.map((course) => { @@ -150,7 +158,7 @@ export class CoreCoursesHelperProvider { })); } - promises.push(this.loadCoursesExtraInfo(courses)); + promises.push(this.loadCoursesExtraInfo(courses, loadCategoryNames)); return Promise.all(promises).then(() => { if (courses.length <= 0) {