Merge pull request #2604 from crazyserver/MOBILE-3565

Mobile 3565
main
Dani Palou 2020-11-12 13:58:04 +01:00 committed by GitHub
commit 385e209190
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 41 additions and 36 deletions

View File

@ -13,27 +13,35 @@
// limitations under the License. // limitations under the License.
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'; import { Routes } from '@angular/router';
import { CoreHomeRoutingModule } from '../mainmenu/pages/home/home-routing.module';
import { CoreHomeDelegate } from '../mainmenu/services/home.delegate'; import { CoreHomeDelegate } from '../mainmenu/services/home.delegate';
import { CoreCoursesDashboardHandler } from './handlers/dashboard'; import { CoreCoursesDashboardHandler } from './services/handlers/dashboard';
import { CoreCoursesDashboardPage } from './pages/dashboard/dashboard.page'; import { CoreCoursesDashboardPage } from './pages/dashboard/dashboard.page';
const routes: Routes = [ const routes: Routes = [
{ {
path: 'dashboard', path: 'dashboard',
component: CoreCoursesDashboardPage, loadChildren: () =>
import('@core/courses/pages/dashboard/dashboard.page.module').then(m => m.CoreCoursesDashboardPageModule),
}, },
]; ];
@NgModule({ @NgModule({
imports: [RouterModule.forChild(routes)], imports: [CoreHomeRoutingModule.forChild(routes)],
declarations: [], exports: [CoreHomeRoutingModule],
providers: [
CoreCoursesDashboardHandler,
],
}) })
export class CoreCoursesModule { export class CoreCoursesModule {
constructor(homeDelegate: CoreHomeDelegate) { constructor(
homeDelegate.registerHandler(new CoreCoursesDashboardHandler()); homeDelegate: CoreHomeDelegate,
coursesDashboardHandler: CoreCoursesDashboardHandler,
) {
homeDelegate.registerHandler(coursesDashboardHandler);
} }
} }

View File

@ -12,11 +12,13 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
import { Injectable } from '@angular/core';
import { CoreHomeHandler, CoreHomeHandlerData } from '@core/mainmenu/services/home.delegate'; import { CoreHomeHandler, CoreHomeHandlerData } from '@core/mainmenu/services/home.delegate';
/** /**
* Handler to add Home into main menu. * Handler to add Home into main menu.
*/ */
Injectable();
export class CoreCoursesDashboardHandler implements CoreHomeHandler { export class CoreCoursesDashboardHandler implements CoreHomeHandler {
name = 'CoreCoursesDashboard'; name = 'CoreCoursesDashboard';

View File

@ -26,7 +26,7 @@ import { CoreMainMenuDelegate } from './services/mainmenu.delegate';
import { CoreMainMenuRoutingModule } from './mainmenu-routing.module'; import { CoreMainMenuRoutingModule } from './mainmenu-routing.module';
import { CoreMainMenuPage } from './pages/menu/menu.page'; import { CoreMainMenuPage } from './pages/menu/menu.page';
import { CoreMainMenuMorePage } from './pages/more/more.page'; import { CoreMainMenuMorePage } from './pages/more/more.page';
import { CoreHomeMainMenuHandler } from './handlers/mainmenu'; import { CoreHomeMainMenuHandler } from './services/handlers/mainmenu';
@NgModule({ @NgModule({
@ -42,11 +42,17 @@ import { CoreHomeMainMenuHandler } from './handlers/mainmenu';
CoreMainMenuPage, CoreMainMenuPage,
CoreMainMenuMorePage, CoreMainMenuMorePage,
], ],
providers: [
CoreHomeMainMenuHandler,
],
}) })
export class CoreMainMenuModule { export class CoreMainMenuModule {
constructor(mainMenuDelegate: CoreMainMenuDelegate) { constructor(
mainMenuDelegate.registerHandler(new CoreHomeMainMenuHandler()); mainMenuDelegate: CoreMainMenuDelegate,
homeMainMenuHandler: CoreHomeMainMenuHandler,
) {
mainMenuDelegate.registerHandler(homeMainMenuHandler);
} }
} }

View File

@ -16,12 +16,10 @@
</ion-header> </ion-header>
<ion-content> <ion-content>
<!-- @todo --> <!-- @todo -->
<core-loading [hideUntil]="loaded" *ngIf="tabs.length > 0"> <core-loading [hideUntil]="loaded">
<core-tabs [selectedIndex]="selectedTab" [hideUntil]="loaded" [tabs]="tabs"></core-tabs> <core-tabs *ngIf="tabs.length > 0" [selectedIndex]="selectedTab" [hideUntil]="loaded" [tabs]="tabs"></core-tabs>
<ng-container *ngIf="tabs.length == 0"> <ng-container *ngIf="tabs.length == 0">
<core-empty-box icon="fa-home" [message]="'core.courses.nocourses' | translate"> <core-empty-box icon="fas-home" [message]="'core.courses.nocourses' | translate"></core-empty-box>
<div>Home page</div>
</core-empty-box>
</ng-container> </ng-container>
</core-loading> </core-loading>
</ion-content> </ion-content>

View File

@ -14,7 +14,6 @@
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { TranslateModule } from '@ngx-translate/core'; import { TranslateModule } from '@ngx-translate/core';
@ -22,33 +21,19 @@ import { CoreComponentsModule } from '@components/components.module';
import { CoreDirectivesModule } from '@directives/directives.module'; import { CoreDirectivesModule } from '@directives/directives.module';
import { CoreHomePage } from './home.page'; import { CoreHomePage } from './home.page';
import { CoreHomeRoutingModule } from './home-routing.module';
const routes: Routes = [
{
path: '',
component: CoreHomePage,
children: [
{
path: 'dashboard', // @todo: Add this route dynamically.
loadChildren: () =>
import('@core/courses/pages/dashboard/dashboard.page.module').then(m => m.CoreCoursesDashboardPageModule),
},
],
},
];
@NgModule({ @NgModule({
imports: [ imports: [
RouterModule.forChild(routes),
CommonModule, CommonModule,
IonicModule, IonicModule,
TranslateModule.forChild(), TranslateModule.forChild(),
CoreComponentsModule, CoreComponentsModule,
CoreDirectivesModule, CoreDirectivesModule,
CoreHomeRoutingModule,
], ],
declarations: [ declarations: [
CoreHomePage, CoreHomePage,
], ],
exports: [RouterModule],
}) })
export class CoreHomePageModule {} export class CoreHomePageModule {}

View File

@ -55,6 +55,8 @@ export class CoreHomePage implements OnInit {
initHandlers(handlers: CoreHomeHandlerToDisplay[]): void { initHandlers(handlers: CoreHomeHandlerToDisplay[]): void {
// Re-build the list of tabs. If a handler is already in the list, use existing object to prevent re-creating the tab. // Re-build the list of tabs. If a handler is already in the list, use existing object to prevent re-creating the tab.
const newTabs: CoreHomeHandlerToDisplay[] = handlers.map((handler) => { const newTabs: CoreHomeHandlerToDisplay[] = handlers.map((handler) => {
handler.page = '/home/' + handler.page;
// Check if the handler is already in the tabs list. If so, use it. // Check if the handler is already in the tabs list. If so, use it.
const tab = this.tabs.find((tab) => tab.title == handler.title); const tab = this.tabs.find((tab) => tab.title == handler.title);
@ -63,9 +65,10 @@ export class CoreHomePage implements OnInit {
// Sort them by priority so new handlers are in the right position. // Sort them by priority so new handlers are in the right position.
.sort((a, b) => (b.priority || 0) - (a.priority || 0)); .sort((a, b) => (b.priority || 0) - (a.priority || 0));
if (typeof this.selectedTab == 'undefined') { if (typeof this.selectedTab == 'undefined' && newTabs.length > 0) {
let maxPriority = 0; let maxPriority = 0;
let maxIndex = 0; let maxIndex = 0;
newTabs.forEach((tab, index) => { newTabs.forEach((tab, index) => {
if ((tab.selectPriority || 0) > maxPriority) { if ((tab.selectPriority || 0) > maxPriority) {
maxPriority = tab.selectPriority || 0; maxPriority = tab.selectPriority || 0;

View File

@ -12,11 +12,13 @@
// See the License for the specific language governing permissions and // See the License for the specific language governing permissions and
// limitations under the License. // limitations under the License.
import { CoreMainMenuHandler, CoreMainMenuHandlerData } from '../services/mainmenu.delegate'; import { Injectable } from '@angular/core';
import { CoreMainMenuHandler, CoreMainMenuHandlerData } from '../mainmenu.delegate';
/** /**
* Handler to add Home into main menu. * Handler to add Home into main menu.
*/ */
Injectable();
export class CoreHomeMainMenuHandler implements CoreMainMenuHandler { export class CoreHomeMainMenuHandler implements CoreMainMenuHandler {
name = 'CoreHome'; name = 'CoreHome';

View File

@ -17,8 +17,9 @@ import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';
import { CoreSites } from '@services/sites'; import { CoreSites } from '@services/sites';
import { CoreDomUtils } from '@services/utils/dom'; import { CoreDomUtils } from '@services/utils/dom';
import { CoreUtils } from '@services/utils/utils'; import { CoreUtils } from '@services/utils/utils';
import { CoreSearchHistory, CoreSearchHistoryItem } from '../../services/search-history'; import { CoreSearchHistory } from '../../services/search-history';
import { Translate } from '@singletons/core.singletons'; import { Translate } from '@singletons/core.singletons';
import { CoreSearchHistoryDBRecord } from '../../services/search.history.db';
/** /**
* Component to display a "search box". * Component to display a "search box".
@ -59,7 +60,7 @@ export class CoreSearchBoxComponent implements OnInit {
searched = ''; // Last search emitted. searched = ''; // Last search emitted.
searchText = ''; searchText = '';
history: CoreSearchHistoryItem[] = []; history: CoreSearchHistoryDBRecord[] = [];
historyShown = false; historyShown = false;
constructor() { constructor() {