Merge pull request #3136 from crazyserver/MOBILE-3833

Mobile 3833
main
Dani Palou 2022-02-23 07:46:06 +01:00 committed by GitHub
commit 8b67def43c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 39 additions and 31 deletions

View File

@ -109,7 +109,7 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo
AddonModAssignProvider.SUBMISSION_SAVED_EVENT, AddonModAssignProvider.SUBMISSION_SAVED_EVENT,
(data) => { (data) => {
if (this.assign && data.assignmentId == this.assign.id && data.userId == this.currentUserId) { if (this.assign && data.assignmentId == this.assign.id && data.userId == this.currentUserId) {
// Assignment submission saved, refresh data. // Assignment submission saved, refresh data.
this.showLoadingAndRefresh(true, false); this.showLoadingAndRefresh(true, false);
} }
}, },
@ -326,6 +326,8 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo
const promises: Promise<void>[] = []; const promises: Promise<void>[] = [];
promises.push(AddonModAssign.invalidateAssignmentData(this.courseId)); promises.push(AddonModAssign.invalidateAssignmentData(this.courseId));
// Invalidate before component becomes null.
promises.push(this.submissionComponent?.invalidateAndRefresh(true) || Promise.resolve());
if (this.assign) { if (this.assign) {
promises.push(AddonModAssign.invalidateAllSubmissionData(this.assign.id)); promises.push(AddonModAssign.invalidateAllSubmissionData(this.assign.id));
@ -335,9 +337,7 @@ export class AddonModAssignIndexComponent extends CoreCourseModuleMainActivityCo
} }
} }
await Promise.all(promises).finally(() => { await Promise.all(promises);
this.submissionComponent?.invalidateAndRefresh(true);
});
} }
/** /**

View File

@ -391,10 +391,10 @@
</p> </p>
</ng-container> </ng-container>
<p> <p>
<ion-badge *ngIf="statusTranslated" [color]="statusColor"> <ion-badge *ngIf="statusTranslated" [color]="statusColor" class="ion-text-wrap ion-text-start">
{{ statusTranslated }} {{ statusTranslated }}
</ion-badge> </ion-badge>
<ion-badge class="ion-margin-start" *ngIf="gradingStatusTranslationId" [color]="gradingColor"> <ion-badge class="ion-text-wrap ion-text-start" *ngIf="gradingStatusTranslationId" [color]="gradingColor">
{{ gradingStatusTranslationId | translate }} {{ gradingStatusTranslationId | translate }}
</ion-badge> </ion-badge>
</p> </p>

View File

@ -21,6 +21,11 @@
.core-grading-summary .advancedgrade { .core-grading-summary .advancedgrade {
display: none; display: none;
} }
ion-badge {
margin-left: 2px;
margin-right: 2px;
}
} }
:host-context(body.dark) ::ng-deep { :host-context(body.dark) ::ng-deep {

View File

@ -26,13 +26,11 @@
<ion-list> <ion-list>
<ion-item class="ion-text-wrap" *ngIf="(groupInfo.separateGroups || groupInfo.visibleGroups)"> <ion-item class="ion-text-wrap" *ngIf="(groupInfo.separateGroups || groupInfo.visibleGroups)">
<ion-label id="addon-assign-groupslabel" *ngIf="groupInfo.separateGroups"> <ion-label id="addon-assign-groupslabel-list">
{{ 'core.groupsseparate' | translate }} <ng-container *ngIf="groupInfo.separateGroups">{{'core.groupsseparate' | translate }}</ng-container>
<ng-container *ngIf="groupInfo.visibleGroups">{{'core.groupsvisible' | translate }}</ng-container>
</ion-label> </ion-label>
<ion-label id="addon-assign-groupslabel" *ngIf="groupInfo.visibleGroups"> <ion-select [(ngModel)]="groupId" (ionChange)="reloadSubmissions()" aria-labelledby="addon-assign-groupslabel-list"
{{ 'core.groupsvisible' | translate }}
</ion-label>
<ion-select [(ngModel)]="groupId" (ionChange)="reloadSubmissions()" aria-labelledby="addon-assign-groupslabel"
interface="action-sheet" slot="end" [interfaceOptions]="{header: 'core.group' | translate}"> interface="action-sheet" slot="end" [interfaceOptions]="{header: 'core.group' | translate}">
<ion-select-option *ngFor="let groupOpt of groupInfo.groups" [value]="groupOpt.id"> <ion-select-option *ngFor="let groupOpt of groupInfo.groups" [value]="groupOpt.id">
{{groupOpt.name}} {{groupOpt.name}}

View File

@ -174,7 +174,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom
// Check if there are replies for discussions stored in offline. // Check if there are replies for discussions stored in offline.
const hasOffline = await AddonModForumOffline.hasForumReplies(this.forum.id); const hasOffline = await AddonModForumOffline.hasForumReplies(this.forum.id);
this.hasOffline = this.hasOffline || hasOffline; this.hasOffline = this.hasOffline || hasOffline || this.hasOfflineRatings;
if (hasOffline) { if (hasOffline) {
// Only update new fetched discussions. // Only update new fetched discussions.
@ -258,6 +258,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom
if (this.forum && data.component == 'mod_forum' && data.ratingArea == 'post' && if (this.forum && data.component == 'mod_forum' && data.ratingArea == 'post' &&
data.contextLevel == ContextLevel.MODULE && data.instanceId == this.forum.cmid) { data.contextLevel == ContextLevel.MODULE && data.instanceId == this.forum.cmid) {
this.hasOfflineRatings = true; this.hasOfflineRatings = true;
this.hasOffline = true;
} }
}); });
@ -266,6 +267,7 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom
data.contextLevel == ContextLevel.MODULE && data.instanceId == this.forum.cmid) { data.contextLevel == ContextLevel.MODULE && data.instanceId == this.forum.cmid) {
this.hasOfflineRatings = this.hasOfflineRatings =
await CoreRatingOffline.hasRatings('mod_forum', 'post', ContextLevel.MODULE, this.forum.cmid); await CoreRatingOffline.hasRatings('mod_forum', 'post', ContextLevel.MODULE, this.forum.cmid);
this.hasOffline = this.hasOffline || this.hasOfflineRatings;
} }
}); });
} }

View File

@ -14,9 +14,14 @@
</core-course-module-info> </core-course-module-info>
<!-- Survey already done --> <!-- Survey already done -->
<ion-card class="ion-padding" *ngIf="survey && survey.surveydone"> <ion-card class="core-success-card" *ngIf="survey && survey.surveydone">
<p class="ion-padding">{{ 'addon.mod_survey.surveycompletednograph' | translate }}</p> <ion-item>
<ion-button expand="block" [href]="module.url" core-link> <ion-icon name="fas-check" slot="start" aria-hidden="true"></ion-icon>
<ion-label>
{{ 'addon.mod_survey.surveycompletednograph' | translate }}
</ion-label>
</ion-item>
<ion-button class="ion-margin" expand="block" [href]="module.url" core-link>
<ion-icon name="fas-external-link-alt" slot="start" aria-hidden="true"></ion-icon> <ion-icon name="fas-external-link-alt" slot="start" aria-hidden="true"></ion-icon>
{{ 'addon.mod_survey.results' | translate }} {{ 'addon.mod_survey.results' | translate }}
</ion-button> </ion-button>

View File

@ -59,13 +59,7 @@ export class CoreCourseFormatSingleActivityHandlerService implements CoreCourseF
return sections[0].modules[0].name; return sections[0].modules[0].name;
} }
if (course.displayname) { return course.fullname || '';
return course.displayname;
} else if (course.fullname) {
return course.fullname;
}
return '';
} }
/** /**

View File

@ -40,13 +40,7 @@ export class CoreCourseFormatDefaultHandler implements CoreCourseFormatHandler {
* @inheritdoc * @inheritdoc
*/ */
getCourseTitle(course: CoreCourseAnyCourseData): string { getCourseTitle(course: CoreCourseAnyCourseData): string {
if (course.displayname) { return course.fullname || '';
return course.displayname;
} else if (course.fullname) {
return course.fullname;
}
return '';
} }
/** /**

View File

@ -483,6 +483,16 @@ ion-loading {
} }
} }
// Toasts.
ion-toast {
--button-color: var(--primary-tint);
@include media-breakpoint-down(sm) {
&::part(container) {
flex-direction: column;
}
}
}
// Ionic list. // Ionic list.
ion-list { ion-list {
padding: 0 !important; padding: 0 !important;
@ -740,7 +750,7 @@ body.core-iframe-fullscreen ion-router-outlet {
ion-label { ion-label {
white-space: normal !important; white-space: normal !important;
} }
ion-icon { ion-item > ion-icon {
color: var(--color-shade); color: var(--color-shade);
@include margin-horizontal(null, 16px); @include margin-horizontal(null, 16px);
} }