forked from EVOgeek/Vmeda.Online
		
	
		
			
				
	
	
		
			126 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			7.9 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
| <ion-header>
 | |
|     <ion-toolbar>
 | |
|         <ion-buttons slot="start">
 | |
|             <ion-back-button [text]="'core.back' | translate"></ion-back-button>
 | |
|         </ion-buttons>
 | |
|         <ion-title>
 | |
|             <h1>{{ 'addon.storagemanager.coursedownloads' | translate }}</h1>
 | |
|         </ion-title>
 | |
|     </ion-toolbar>
 | |
| </ion-header>
 | |
| <ion-content>
 | |
|     <core-loading [hideUntil]="loaded" class="list-item-limited-width">
 | |
|         <ion-item class="ion-text-wrap">
 | |
|             <ion-label>
 | |
|                 <p>{{ 'addon.storagemanager.courseinfo' | translate }}</p>
 | |
|             </ion-label>
 | |
|         </ion-item>
 | |
| 
 | |
| 
 | |
|         <ion-card class="wholecourse">
 | |
|             <ion-card-header>
 | |
|                 <ion-card-title>{{ title }}</ion-card-title>
 | |
|                 <ion-item class="size ion-text-wrap ion-no-padding">
 | |
|                     <ion-label>
 | |
|                         <p class="item-heading ion-text-wrap">{{ 'addon.storagemanager.totaldownloads' | translate }}</p>
 | |
|                     </ion-label>
 | |
|                     <ion-badge color="light" slot="end">{{ totalSize | coreBytesToSize }}
 | |
|                     </ion-badge>
 | |
|                 </ion-item>
 | |
|                 <ion-button *ngIf="downloadCourseEnabled" (click)="prefetchCourse()" expand="block" fill="outline" class="ion-no-margin">
 | |
|                     <ion-icon *ngIf="!prefetchCourseData.loading" [name]="prefetchCourseData.icon" slot="start"></ion-icon>
 | |
|                     <ion-spinner *ngIf="prefetchCourseData.loading" slot="start"></ion-spinner>
 | |
|                     {{ prefetchCourseData.statusTranslatable | translate }}
 | |
|                 </ion-button>
 | |
|                 <ion-button *ngIf="totalSize > 0" (click)="deleteForCourse()" expand="block" color="danger"
 | |
|                     class="ion-no-margin ion-margin-top">
 | |
|                     <ion-icon name="fas-trash" slot="start" [attr.aria-label]="'addon.storagemanager.deletedatafrom' | translate:
 | |
|                         { name: title }">
 | |
|                     </ion-icon>
 | |
|                     {{ 'addon.storagemanager.deleteall' | translate }}
 | |
|                 </ion-button>
 | |
|             </ion-card-header>
 | |
|         </ion-card>
 | |
|         <ng-container *ngFor="let section of sections">
 | |
|             <ion-card class="section" *ngIf="section.modules.length > 0">
 | |
|                 <ion-card-header>
 | |
|                     <ion-item class="ion-no-padding" lines="full">
 | |
|                         <ion-label>
 | |
|                             <p class="item-heading ion-text-wrap">
 | |
|                                 <core-format-text [text]="section.name" contextLevel="course" [contextInstanceId]="section.course"
 | |
|                                     [adaptImg]="false">
 | |
|                                 </core-format-text>
 | |
|                             </p>
 | |
|                             <ion-badge [color]="section.downloadStatus == statusDownloaded ? 'success' : 'light'"
 | |
|                                 *ngIf="section.totalSize > 0">
 | |
|                                 <ion-icon aria-hidden="true" name="fam-cloud-done" *ngIf="section.downloadStatus == statusDownloaded">
 | |
|                                 </ion-icon>{{ section.totalSize | coreBytesToSize }}
 | |
|                             </ion-badge>
 | |
|                             <!-- Download progress. -->
 | |
|                             <p *ngIf="downloadEnabled && section.isDownloading">
 | |
|                                 <core-progress-bar [progress]="section.total == 0 ? -1 : section.count / section.total">
 | |
|                                 </core-progress-bar>
 | |
|                             </p>
 | |
|                         </ion-label>
 | |
|                         <div class="storage-buttons" slot="end" *ngIf="section.totalSize > 0 || downloadEnabled">
 | |
|                             <div *ngIf="downloadEnabled" slot="end" class="core-button-spinner">
 | |
|                                 <core-download-refresh *ngIf="!section.isDownloading && section.downloadStatus != statusDownloaded"
 | |
|                                     [status]="section.downloadStatus" [enabled]="true" (action)="prefecthSection(section)"
 | |
|                                     [loading]="section.isDownloading || section.isCalculating" [canTrustDownload]="true">
 | |
|                                 </core-download-refresh>
 | |
| 
 | |
|                                 <ion-badge class="core-course-download-section-progress"
 | |
|                                     *ngIf="section.isDownloading && section.count < section.total" role="progressbar"
 | |
|                                     [attr.aria-valuemax]="section.total" [attr.aria-valuenow]="section.count"
 | |
|                                     [attr.aria-valuetext]="'core.course.downloadsectionprogressdescription' | translate:section">
 | |
|                                     {{section.count}} / {{section.total}}
 | |
|                                 </ion-badge>
 | |
|                             </div>
 | |
|                             <ion-button (click)="deleteForSection(section)" *ngIf="section.totalSize > 0" color="danger" fill="clear">
 | |
|                                 <ion-icon name="fas-trash" slot="icon-only"
 | |
|                                     [attr.aria-label]="'addon.storagemanager.deletedatafrom' | translate: { name: section.name }">
 | |
|                                 </ion-icon>
 | |
|                             </ion-button>
 | |
|                         </div>
 | |
|                     </ion-item>
 | |
|                 </ion-card-header>
 | |
|                 <ion-card-content>
 | |
|                     <ng-container *ngFor="let module of section.modules">
 | |
|                         <ion-item class="ion-no-padding core-course-storage-activity" *ngIf="downloadEnabled || module.totalSize > 0">
 | |
|                             <core-mod-icon slot="start" *ngIf="module.handlerData.icon" [modicon]="module.handlerData.icon"
 | |
|                                 [modname]="module.modname" [componentId]="module.instance">
 | |
|                             </core-mod-icon>
 | |
|                             <ion-label class="ion-text-wrap">
 | |
|                                 <h3 class="{{module.handlerData!.class}} addon-storagemanager-module-size">
 | |
|                                     <core-format-text [text]="module.handlerData.title" [courseId]="module.course" contextLevel="module"
 | |
|                                         [contextInstanceId]="module.id" [adaptImg]="false">
 | |
|                                     </core-format-text>
 | |
|                                 </h3>
 | |
|                                 <ion-badge [color]="module.downloadStatus == statusDownloaded ? 'success' : 'light'"
 | |
|                                     *ngIf="module.totalSize > 0">
 | |
|                                     <ion-icon aria-hidden="true" name="fam-cloud-done" *ngIf="module.downloadStatus == statusDownloaded">
 | |
|                                     </ion-icon>{{ module.totalSize | coreBytesToSize }}
 | |
|                                 </ion-badge>
 | |
|                             </ion-label>
 | |
| 
 | |
|                             <div class="storage-buttons" slot="end">
 | |
|                                 <core-download-refresh *ngIf="downloadEnabled && module.handlerData?.showDownloadButton &&
 | |
|                                     module.downloadStatus != statusDownloaded" [status]="module.downloadStatus" [enabled]="true"
 | |
|                                     [canTrustDownload]="true" [loading]="module.spinner || module.handlerData.spinner"
 | |
|                                     (action)="prefetchModule(module, section)">
 | |
|                                 </core-download-refresh>
 | |
|                                 <ion-button fill="clear" (click)="deleteForModule(module, section)" *ngIf="module.totalSize > 0"
 | |
|                                     color="danger">
 | |
|                                     <ion-icon name="fas-trash" slot="icon-only"
 | |
|                                         [attr.aria-label]="'addon.storagemanager.deletedatafrom' | translate: { name: module.name }">
 | |
|                                     </ion-icon>
 | |
|                                 </ion-button>
 | |
|                             </div>
 | |
|                         </ion-item>
 | |
|                     </ng-container>
 | |
|                 </ion-card-content>
 | |
|             </ion-card>
 | |
|         </ng-container>
 | |
|     </core-loading>
 | |
| </ion-content>
 |