Merge pull request #1937 from crazyserver/MOBILE-3038

MOBILE-3038 competency: Adapt information to new fields show on web
main
Juan Leyva 2019-05-23 17:04:27 +02:00 committed by GitHub
commit b13e707fb1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 74 additions and 36 deletions

View File

@ -111,9 +111,11 @@
"addon.competency.myplans": "tool_lp",
"addon.competency.noactivities": "tool_lp",
"addon.competency.nocompetencies": "local_moodlemobileapp",
"addon.competency.nocompetenciesincourse": "tool_lp",
"addon.competency.nocrossreferencedcompetencies": "tool_lp",
"addon.competency.noevidence": "tool_lp",
"addon.competency.noplanswerecreated": "tool_lp",
"addon.competency.nouserplanswithcompetency": "competency",
"addon.competency.path": "tool_lp",
"addon.competency.planstatusactive": "competency",
"addon.competency.planstatuscomplete": "competency",
@ -126,6 +128,7 @@
"addon.competency.reviewstatus": "tool_lp",
"addon.competency.status": "tool_lp",
"addon.competency.template": "tool_lp",
"addon.competency.uponcoursecompletion": "tool_lp",
"addon.competency.usercompetencystatus_idle": "competency",
"addon.competency.usercompetencystatus_inreview": "competency",
"addon.competency.usercompetencystatus_waitingforreview": "competency",
@ -1695,6 +1698,7 @@
"core.settings.enablerichtexteditor": "local_moodlemobileapp",
"core.settings.enablerichtexteditordescription": "local_moodlemobileapp",
"core.settings.enablesyncwifi": "local_moodlemobileapp",
"core.settings.entriesincache": "local_moodlemobileapp",
"core.settings.errordeletesitefiles": "local_moodlemobileapp",
"core.settings.errorsyncsite": "local_moodlemobileapp",
"core.settings.estimatedfreespace": "local_moodlemobileapp",
@ -1713,7 +1717,6 @@
"core.settings.privacypolicy": "local_moodlemobileapp",
"core.settings.pushid": "local_moodlemobileapp",
"core.settings.reportinbackground": "local_moodlemobileapp",
"core.settings.entriesincache": "local_moodlemobileapp",
"core.settings.settings": "moodle",
"core.settings.showdownloadoptions": "local_moodlemobileapp",
"core.settings.sites": "moodle",

View File

@ -4,18 +4,19 @@
</ion-refresher>
<core-loading [hideUntil]="competenciesLoaded">
<ion-card *ngIf="!user && competencies && competencies.statistics.competencycount > 0">
<ng-container *ngIf="competencies.cangradecompetencies">
<ion-item text-wrap *ngIf="competencies.settings.pushratingstouserplans">
{{ 'addon.competency.coursecompetencyratingsarepushedtouserplans' | translate }}
</ion-item>
<ion-item text-wrap *ngIf="!competencies.settings.pushratingstouserplans">
<ion-item text-wrap *ngIf="!competencies.settings.pushratingstouserplans" color="danger">
{{ 'addon.competency.coursecompetencyratingsarenotpushedtouserplans' | translate }}
</ion-item>
<ion-item text-wrap>
<strong>{{ 'addon.competency.progress' | translate }}</strong>:
{{ 'addon.competency.xcompetenciesproficientoutofyincourse' | translate:{$a: {x: competencies.statistics.proficientcompetencycount, y: competencies.statistics.competencycount} } }} ({{ competencies.statistics.proficientcompetencypercentageformatted }}%)
</ng-container>
<ion-item text-wrap *ngIf="competencies.statistics.canbegradedincourse">
{{ 'addon.competency.xcompetenciesproficientoutofyincourse' | translate:{$a: {x: competencies.statistics.proficientcompetencycount, y: competencies.statistics.competencycount} } }}
<core-progress-bar [progress]="competencies.statistics.proficientcompetencypercentage"></core-progress-bar>
</ion-item>
<ion-item text-wrap *ngIf="competencies.statistics.leastproficientcount > 0">
<ion-item text-wrap *ngIf="competencies.statistics.canmanagecoursecompetencies && competencies.statistics.leastproficientcount > 0">
<strong>{{ 'addon.competency.competenciesmostoftennotproficientincourse' | translate }}</strong>:
<p *ngFor="let comp of competencies.statistics.leastproficient">
<a (click)="openCompetencySummary(comp.id)">
@ -25,42 +26,63 @@
</ion-item>
</ion-card>
<h3 margin-horizontal *ngIf="competencies && competencies.statistics.competencycount > 0">{{ 'addon.competency.competencies' | translate }}</h3>
<h3 margin-horizontal *ngIf="competencies && competencies.statistics.competencycount > 0">{{ 'addon.competency.coursecompetencies' | translate }}</h3>
<ion-card *ngIf="user">
<ion-item text-wrap>
<ion-avatar core-user-avatar [user]="user" item-start></ion-avatar>
<h2><core-format-text [text]="user.fullname"></core-format-text></h2>
</ion-item>
</ion-card>
<core-empty-box *ngIf="competencies && competencies.statistics.competencycount == 0" icon="ribbon" message="{{ 'addon.competency.nocompetencies' | translate }}"></core-empty-box>
<core-empty-box *ngIf="competencies && competencies.statistics.competencycount == 0" icon="ribbon" message="{{ 'addon.competency.nocompetenciesincourse' | translate }}"></core-empty-box>
<div *ngIf="competencies">
<ion-card *ngFor="let competency of competencies.competencies">
<a ion-item text-wrap (click)="openCompetency(competency.competency.id)" [title]="competency.competency.shortname">
{{competency.competency.shortname}} <small>{{competency.competency.idnumber}}</small>
<ion-item text-wrap (click)="openCompetency(competency.competency.id)" [title]="competency.competency.shortname" detail-push>
<h2><strong>{{competency.competency.shortname}} <em>{{competency.competency.idnumber}}</em></strong></h2>
<ion-badge item-end *ngIf="competency.usercompetencycourse && competency.usercompetencycourse.gradename" [color]="competency.usercompetencycourse.proficiency ? 'success' : 'danger'">{{ competency.usercompetencycourse.gradename }}</ion-badge>
</a>
</ion-item>
<ion-item text-wrap>
<div *ngIf="competency.competency.description">
<p *ngIf="competency.competency.description">
<core-format-text [text]=" competency.competency.description "></core-format-text>
</div>
</p>
<div>
<strong>{{ 'addon.competency.path' | translate }}</strong>
{{ competency.comppath.framework.name }}
<a *ngIf="competency.comppath.showlinks" [href]="competency.comppath.pluginbaseurl + '/competencies.php?competencyframeworkid=' + competency.comppath.framework.id + '&pagecontextid=' + competency.comppath.pagecontextid" core-link [title]="competency.comppath.framework.name">{{ competency.comppath.framework.name }}</a>
<ng-container *ngIf="!competency.comppath.showlinks">{{ competency.comppath.framework.name }}</ng-container>
&nbsp;/&nbsp;
<span *ngFor="let ancestor of competency.comppath.ancestors">
&nbsp;/&nbsp;<a (click)="openCompetencySummary(ancestor.id)">{{ ancestor.name }}</a>
<a *ngIf="competency.comppath.showlinks" (click)="openCompetencySummary(ancestor.id)">{{ ancestor.name }}</a>
<ng-container *ngIf="!competency.comppath.showlinks">{{ ancestor.name }}</ng-container>
<ng-container *ngIf="!ancestor.last">&nbsp;/&nbsp;</ng-container>
</span>
</div>
<div>
<strong>{{ 'addon.competency.activities' | translate }}</strong>:
<span *ngIf="competency.coursemodules.length == 0">
{{ 'addon.competency.noactivities' | translate }}
<div *ngIf="competencies.statistics.canmanagecoursecompetencies">
<strong>{{ 'addon.competency.uponcoursecompletion' | translate }}</strong>
<ng-container *ngFor="let ruleoutcome of competency.ruleoutcomeoptions">
<span *ngIf="ruleoutcome.selected">
<core-format-text [text]="ruleoutcome.text"></core-format-text>
</span>
<a ion-item text-wrap *ngFor="let activity of competency.coursemodules" [href]="activity.url" [title]="activity.name" core-link capture="true">
</ng-container>
</div>
<div>
<strong>{{ 'addon.competency.activities' | translate }}</strong>
<p *ngIf="competency.coursemodules.length == 0">
{{ 'addon.competency.noactivities' | translate }}
</p>
<a ion-item text-wrap *ngFor="let activity of competency.coursemodules" [href]="activity.url" [title]="activity.name" core-link capture="true" class="core-course-module-handler item-media">
<img item-start [src]="activity.iconurl" core-external-content alt="" role="presentation" *ngIf="activity.iconurl" class="core-module-icon">
<core-format-text [text]="activity.name"></core-format-text>
</a>
</div>
<div *ngIf="competency.plans">
<strong>{{ 'addon.competency.userplans' | translate }}</strong>
<p *ngIf="competency.plans.length == 0">
{{ 'addon.competency.nouserplanswithcompetency' | translate }}
</p>
<a ion-item text-wrap *ngFor="let plan of competency.plans" [href]="plan.url" [title]="plan.name" core-link capture="true">
<core-format-text [text]="plan.name"></core-format-text>
</a>
</div>
</ion-item>
</ion-card>
</div>

View File

@ -23,9 +23,11 @@
"myplans": "My learning plans",
"noactivities": "No activities",
"nocompetencies": "No competencies",
"nocompetenciesincourse": "No competencies have been linked to this course.",
"nocrossreferencedcompetencies": "No other competencies have been cross-referenced to this competency.",
"noevidence": "No evidence",
"noplanswerecreated": "No learning plans were created.",
"nouserplanswithcompetency": "No learning plans contain this competency.",
"path": "Path:",
"planstatusactive": "Active",
"planstatuscomplete": "Complete",
@ -38,6 +40,7 @@
"reviewstatus": "Review status",
"status": "Status",
"template": "Learning plan template",
"uponcoursecompletion": "Upon course completion:",
"usercompetencystatus_idle": "Idle",
"usercompetencystatus_inreview": "In review",
"usercompetencystatus_waitingforreview": "Waiting for review",

View File

@ -11,7 +11,7 @@
<core-loading [hideUntil]="competenciesLoaded">
<ion-list>
<a ion-item text-wrap *ngFor="let competency of competencies" [title]="competency.competency.shortname" (click)="openCompetency(competency.competency.id)" [class.core-split-item-selected]="competency.competency.id == competencyId">
{{ competency.competency.shortname }} <small>{{competency.competency.idnumber}}</small>
<h2>{{ competency.competency.shortname }} <em>{{competency.competency.idnumber}}</em></h2>
<ion-badge item-end *ngIf="competency.usercompetency" [color]="competency.usercompetency.proficiency ? 'success' : 'danger'">{{ competency.usercompetency.gradename }}</ion-badge>
<ion-badge item-end *ngIf="competency.usercompetencycourse" [color]="competency.usercompetencycourse.proficiency ? 'success' : 'danger'">{{ competency.usercompetencycourse.gradename }}</ion-badge>
</a>

View File

@ -21,9 +21,13 @@
</ion-item>
<ion-item text-wrap>
<strong>{{ 'addon.competency.path' | translate }}</strong>
{{ competency.competency.comppath.framework.name }}
<a *ngIf="competency.competency.comppath.showlinks" [href]="competency.competency.comppath.pluginbaseurl + '/competencies.php?competencyframeworkid=' + competency.competency.comppath.framework.id + '&pagecontextid=' + competency.competency.comppath.pagecontextid" core-link [title]="competency.competency.comppath.framework.name">{{ competency.competency.comppath.framework.name }}</a>
<ng-container *ngIf="!competency.competency.comppath.showlinks">{{ competency.competency.comppath.framework.name }}</ng-container>
&nbsp;/&nbsp;
<span *ngFor="let ancestor of competency.competency.comppath.ancestors">
&nbsp;/&nbsp;<a (click)="openCompetencySummary(ancestor.id)">{{ ancestor.name }}</a>
<a *ngIf="competency.competency.comppath.showlinks" (click)="openCompetencySummary(ancestor.id)">{{ ancestor.name }}</a>
<ng-container *ngIf="!competency.competency.comppath.showlinks">{{ ancestor.name }}</ng-container>
<ng-container *ngIf="!ancestor.last">&nbsp;/&nbsp;</ng-container>
</span>
</ion-item>
<ion-item text-wrap>
@ -38,21 +42,21 @@
</div>
</ion-item>
<ion-item text-wrap *ngIf="coursemodules">
<strong>{{ 'addon.competency.activities' | translate }}</strong>:
<span *ngIf="coursemodules.length == 0">
<strong>{{ 'addon.competency.activities' | translate }}</strong>
<p *ngIf="coursemodules.length == 0">
{{ 'addon.competency.noactivities' | translate }}
</span>
</p>
<a ion-item text-wrap *ngFor="let activity of coursemodules" [href]="activity.url" [title]="activity.name" core-link capture="true">
<img item-start core-external-content [src]="activity.iconurl" alt="" role="presentation" *ngIf="activity.iconurl" class="core-module-icon">
<core-format-text [text]="activity.name"></core-format-text>
</a>
</ion-item>
<ion-item text-wrap *ngIf="competency.usercompetency.status">
<strong>{{ 'addon.competency.reviewstatus' | translate }}</strong>:
<strong>{{ 'addon.competency.reviewstatus' | translate }}</strong>
{{ competency.usercompetency.statusname }}
</ion-item>
<ion-item text-wrap>
<strong>{{ 'addon.competency.proficient' | translate }}</strong>:
<strong>{{ 'addon.competency.proficient' | translate }}</strong>
<ion-badge color="success" *ngIf="competency.usercompetency.proficiency">
{{ 'core.yes' | translate }}
</ion-badge>
@ -61,7 +65,7 @@
</ion-badge>
</ion-item>
<ion-item text-wrap>
<strong>{{ 'addon.competency.rating' | translate }}</strong>:
<strong>{{ 'addon.competency.rating' | translate }}</strong>
<ion-badge color="dark">{{ competency.usercompetency.gradename }}</ion-badge>
</ion-item>
</ion-card>

View File

@ -16,6 +16,9 @@
</ion-card>
<ion-card *ngIf="plan">
<ion-list>
<ion-item text-wrap *ngIf="plan.plan.description">
<core-format-text [text]="plan.plan.description"></core-format-text>
</ion-item>
<ion-item text-wrap>
<strong>{{ 'addon.competency.status' | translate }}</strong>:
{{ plan.plan.statusname }}
@ -36,13 +39,13 @@
</ion-list>
</ion-card>
<ion-card *ngIf="plan">
<ion-card-header text-wrap>{{ 'addon.competency.learningplancompetencies' | translate }}</ion-card-header>
<ion-card-header text-wrap><h2>{{ 'addon.competency.learningplancompetencies' | translate }}</h2></ion-card-header>
<ion-list>
<ion-item text-wrap *ngIf="plan.competencycount == 0">
{{ 'addon.competency.nocompetencies' | translate }}
</ion-item>
<a ion-item text-wrap *ngFor="let competency of plan.competencies" (click)="openCompetency(competency.competency.id)" [title]="competency.competency.shortname">
{{competency.competency.shortname}} <small>{{competency.competency.idnumber}}</small>
<h2>{{competency.competency.shortname}} <em>{{competency.competency.idnumber}}</em></h2>
<ion-badge item-end [color]="competency.usercompetency.proficiency ? 'success' : 'danger'">{{ competency.usercompetency.gradename }}</ion-badge>
</a>
</ion-list>

View File

@ -15,7 +15,7 @@
<a ion-item text-wrap *ngFor="let plan of plans" [title]="plan.name" (click)="openPlan(plan.id)" [class.core-split-item-selected]="plan.id == planId">
<h2>{{ plan.name }}</h2>
<p *ngIf="plan.duedate > 0">{{ 'addon.competency.duedate' | translate }}: {{ plan.duedate * 1000 | coreFormatDate :'strftimedatetimeshort' }}</p>
<ion-badge text-wrap [color]="plan.statuscolor">{{ plan.statusname }}</ion-badge>
<ion-badge item-end text-wrap [color]="plan.statuscolor">{{ plan.statusname }}</ion-badge>
</a>
</ion-list>
</core-loading>

View File

@ -111,9 +111,11 @@
"addon.competency.myplans": "My learning plans",
"addon.competency.noactivities": "No activities",
"addon.competency.nocompetencies": "No competencies",
"addon.competency.nocompetenciesincourse": "No competencies have been linked to this course.",
"addon.competency.nocrossreferencedcompetencies": "No other competencies have been cross-referenced to this competency.",
"addon.competency.noevidence": "No evidence",
"addon.competency.noplanswerecreated": "No learning plans were created.",
"addon.competency.nouserplanswithcompetency": "No learning plans contain this competency.",
"addon.competency.path": "Path:",
"addon.competency.planstatusactive": "Active",
"addon.competency.planstatuscomplete": "Complete",
@ -126,6 +128,7 @@
"addon.competency.reviewstatus": "Review status",
"addon.competency.status": "Status",
"addon.competency.template": "Learning plan template",
"addon.competency.uponcoursecompletion": "Upon course completion:",
"addon.competency.usercompetencystatus_idle": "Idle",
"addon.competency.usercompetencystatus_inreview": "In review",
"addon.competency.usercompetencystatus_waitingforreview": "Waiting for review",