Commit 266cbf7b by Nabil Sadki

Gains

parent a0345846
...@@ -4,10 +4,10 @@ import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; ...@@ -4,10 +4,10 @@ import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
const routes: Routes = [ const routes: Routes = [
{ path: '', redirectTo: 'mainslider', pathMatch: 'full' }, { path: '', redirectTo: 'mainslider', pathMatch: 'full' },
{ path: 'start', loadChildren: './pages/start/start.module#StartPageModule' }, { path: 'start', loadChildren: './pages/start/start.module#StartPageModule' },
{ path: 'login', loadChildren: './pages/login/login.module#LoginPageModule' }, { path: 'login', loadChildren: './pages/compte/login/login.module#LoginPageModule' },
{ path: 'mainslider', loadChildren: './pages/mainslider/mainslider.module#MainsliderPageModule' }, { path: 'mainslider', loadChildren: './pages/mainslider/mainslider.module#MainsliderPageModule' },
{ path: 'app', loadChildren: './pages/menu/menu.module#MenuPageModule' }, { path: 'app', loadChildren: './pages/menu/menu.module#MenuPageModule' },
{ path: 'offre-details', loadChildren: './pages/offre-details/offre-details.module#OffreDetailsPageModule' }, { path: 'offre-details', loadChildren: './pages/offres/offre-details/offre-details.module#OffreDetailsPageModule' },
]; ];
......
...@@ -8,6 +8,7 @@ import { StatusBar } from '@ionic-native/status-bar/ngx'; ...@@ -8,6 +8,7 @@ import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module'; import { AppRoutingModule } from './app-routing.module';
import { LotsAGagnerFilterPageModule } from './pages/lots/lots-a-gagner-filter/lots-a-gagner-filter.module';
import { IonicStorageModule } from '@ionic/storage'; import { IonicStorageModule } from '@ionic/storage';
import { HTTP } from '@ionic-native/http/ngx'; import { HTTP } from '@ionic-native/http/ngx';
...@@ -31,7 +32,7 @@ import { QRScanner, QRScannerStatus } from '@ionic-native/qr-scanner/ngx'; ...@@ -31,7 +32,7 @@ import { QRScanner, QRScannerStatus } from '@ionic-native/qr-scanner/ngx';
imports: [ imports: [
BrowserModule, BrowserModule,
IonicModule.forRoot(), IonicModule.forRoot(),
AppRoutingModule, AppRoutingModule, LotsAGagnerFilterPageModule,
IonicStorageModule.forRoot({ IonicStorageModule.forRoot({
name: '__allo_testeurs_app', name: '__allo_testeurs_app',
driverOrder: ['websql', 'sqlite', 'indexeddb'] driverOrder: ['websql', 'sqlite', 'indexeddb']
......
...@@ -51,4 +51,12 @@ ion-alert{ ...@@ -51,4 +51,12 @@ ion-alert{
} }
div.hide { div.hide {
display: none !important; display: none !important;
}
ion-modal.modal-filters .modal-wrapper {
width: 90vw !important;
height: 50vh !important;
border-radius: 10px;
}
ion-select.wide-select {
max-width: 65% !important;
} }
\ No newline at end of file
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Validators, FormBuilder, FormGroup, FormControl } from '@angular/forms'; import { Validators, FormBuilder, FormGroup, FormControl } from '@angular/forms';
import { AlloService } from '../../services/allo-service'; import { AlloService } from '../../../services/allo-service';
import { Storage } from '@ionic/storage'; import { Storage } from '@ionic/storage';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { GooglePlus } from '@ionic-native/google-plus/ngx'; import { GooglePlus } from '@ionic-native/google-plus/ngx';
......
<ion-header>
<ion-toolbar color="primary">
<ion-buttons slot="start">
<ion-buttons slot="start">
<ion-back-button defaultHref="/app/mes-merites" text="Retour"></ion-back-button>
</ion-buttons>
</ion-buttons>
<ion-title>Lots à gagner</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-card padding>
<ion-icon name="pin" size="large"></ion-icon>
<ion-label>
<h2>eTicket Allo Testeurs (50 DH)</h2>
<h3>
<ion-badge>5000 points</ion-badge>
</h3>
<p>Un bon d'achat d'une valeur de 50 DH, valable chez tous nos partenaires, et magasin qui acceptent le paiement
par eTicket Allo Testeurs</p>
</ion-label>
</ion-card>
</ion-list>
</ion-content>
\ No newline at end of file
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { LotsAGagnerFilterPage } from './lots-a-gagner-filter.page';
const routes: Routes = [
{
path: '',
component: LotsAGagnerFilterPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [LotsAGagnerFilterPage]
})
export class LotsAGagnerFilterPageModule {}
<ion-header>
<ion-toolbar color="primary">
<ion-title>Filtres / Tri</ion-title>
<ion-button size="small" color="light" fill="outline" (click)="closeModal()" slot="end" class="ion-margin-horizontal">X</ion-button>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-list>
<ion-item>
<ion-label>Afficher</ion-label>
<ion-select [(ngModel)]="_LOTS.filters.show" class="wide-select" value="all" okText="Valider" cancelText="Annuler"
(ionChange)="_LOTS.filtrerLots()">
<ion-select-option value="all">Toutes les récompenses</ion-select-option>
<ion-select-option value="miens">Celles que je peux gagner</ion-select-option>
</ion-select>
</ion-item>
<ion-item>
<ion-label>Type</ion-label>
<ion-select [(ngModel)]="_LOTS.filters.type" class="wide-select" value="all" okText="Valider" cancelText="Annuler"
(ionChange)="_LOTS.filtrerLots()">
<ion-select-option value="all">Tous les types de récompenses</ion-select-option>
<ion-select-option value="1">Cartes de recharge</ion-select-option>
<ion-select-option value="2">Bons d'achat</ion-select-option>
<ion-select-option value="3">Repas gratuits</ion-select-option>
<ion-select-option value="4">Articles gratuits</ion-select-option>
</ion-select>
</ion-item>
<ion-item>
<ion-label>Marque</ion-label>
<ion-select [(ngModel)]="_LOTS.filters.brand" class="wide-select" value="all" okText="Valider"
cancelText="Annuler" (ionChange)="_LOTS.filtrerLots()">
<ion-select-option value="all">Toutes les marques</ion-select-option>
<ion-select-option value="1">Allo Testeurs</ion-select-option>
<ion-select-option value="2">Orange</ion-select-option>
<ion-select-option value="3">Maroc Telecom</ion-select-option>
<ion-select-option value="4">Inwi</ion-select-option>
<ion-select-option value="5">The green place</ion-select-option>
<ion-select-option value="6">Hollywood café restaurant</ion-select-option>
</ion-select>
</ion-item>
<!-- <ion-item lines="none">
<ion-label>Trier par</ion-label>
<ion-select [(ngModel)]="_LOTS.filters.order" class="wide-select" value="1" okText="Valider" cancelText="Annuler" (ionChange)="_LOTS.filtrerLots()">
<ion-select-option value="1">Mérites (ASC)</ion-select-option>
<ion-select-option value="2">Mérites (DESC)</ion-select-option>
<ion-select-option value="3">Titre de la récompense (ASC)</ion-select-option>
<ion-select-option value="4">Titre de la récompense (DESC)</ion-select-option>
<ion-select-option value="5">Marque (ASC)</ion-select-option>
<ion-select-option value="6">Marque (DESC)</ion-select-option>
</ion-select>
</ion-item> -->
</ion-list>
</ion-content>
<ion-footer>
<ion-toolbar>
<ion-button slot="end" color="dark" size="small" (click)="_LOTS.reinitialiserFiltres()">Réinitialiser</ion-button>
</ion-toolbar>
</ion-footer>
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { LotsAGagnerFilterPage } from './lots-a-gagner-filter.page';
describe('LotsAGagnerFilterPage', () => {
let component: LotsAGagnerFilterPage;
let fixture: ComponentFixture<LotsAGagnerFilterPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ LotsAGagnerFilterPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(LotsAGagnerFilterPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { ModalController } from '@ionic/angular';
import { LotsService } from '../../../services/data/lots.service';
@Component({
selector: 'app-lots-a-gagner-filter',
templateUrl: './lots-a-gagner-filter.page.html',
styleUrls: ['./lots-a-gagner-filter.page.scss'],
})
export class LotsAGagnerFilterPage implements OnInit {
constructor(
private modalController: ModalController,
public _LOTS: LotsService
) { }
ngOnInit() {
}
async closeModal() {
const onClosedData: string = "Wrapped Up!";
await this.modalController.dismiss(onClosedData);
}
}
...@@ -19,6 +19,7 @@ const routes: Routes = [ ...@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
// LotsAGagnerFilterPageModule,
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [LotsAGagnerPage] declarations: [LotsAGagnerPage]
......
<ion-header>
<ion-toolbar color="primary">
<ion-buttons slot="start">
<ion-buttons slot="start">
<ion-back-button defaultHref="/app/mes-merites" text="Retour"></ion-back-button>
</ion-buttons>
</ion-buttons>
<ion-title>Lots à gagner</ion-title>
<ion-chip slot="end">
<ion-icon name="ribbon" color="secondary"></ion-icon>
<ion-label color="light">10 542</ion-label>
</ion-chip>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-fab vertical="bottom" horizontal="end" slot="fixed">
<ion-fab-button (click)="presentFiltersModal()">
<ion-icon name="funnel"></ion-icon>
</ion-fab-button>
</ion-fab>
<ion-card padding-bottom *ngFor="let lot of _LOTS.filtredLots">
<ion-list-header color="light" margin-bottom>{{lot.title}}
<ion-badge class="ion-float-right">
<ion-icon name="ribbon"></ion-icon> {{lot.merites}}
</ion-badge>
</ion-list-header>
<ion-item lines="none">
<ion-avatar slot="start">
<!-- <ion-icon name="person" *ngIf="!lot.logo"></ion-icon> -->
<ion-img [src]="lot.logo" *ngIf="lot.logo"></ion-img>
</ion-avatar>
<ion-label no-padding no-margin>
<ion-badge color="{{lot.badge_color}}">
<ion-icon name="card"></ion-icon> {{lot.where}}
</ion-badge>
<p class="ion-text-wrap">{{lot.description}}</p>
</ion-label>
</ion-item>
</ion-card>
</ion-content>
\ No newline at end of file
ion-avatar {
background: var(--ion-color-light, grey);
}
\ No newline at end of file
import { Component, OnInit } from '@angular/core';
import { ModalController } from '@ionic/angular';
import { LotsService } from '../../../services/data/lots.service';
import { LotsAGagnerFilterPage } from '../lots-a-gagner-filter/lots-a-gagner-filter.page';
@Component({
selector: 'app-lots-a-gagner',
templateUrl: './lots-a-gagner.page.html',
styleUrls: ['./lots-a-gagner.page.scss'],
})
export class LotsAGagnerPage implements OnInit {
constructor(
public modalController: ModalController,
public _LOTS: LotsService
) { }
ngOnInit() {
}
async presentFiltersModal() {
const modal = await this.modalController.create({
component: LotsAGagnerFilterPage,
cssClass: 'modal-filters'
});
return await modal.present();
}
}
...@@ -19,19 +19,35 @@ const routes: Routes = [ ...@@ -19,19 +19,35 @@ const routes: Routes = [
children: [ children: [
{ {
path: 'dashboard', path: 'dashboard',
loadChildren: '../dashboard/dashboard.module#DashboardPageModule' loadChildren: '../offres/dashboard/dashboard.module#DashboardPageModule'
},
{
path: 'details-offre/:oid',
loadChildren: '../offres/offre-details/offre-details.module#OffreDetailsPageModule'
}, },
{ {
path: 'partenaires', path: 'partenaires',
loadChildren: '../partenaires/partenaires.module#PartenairesPageModule' loadChildren: '../partenaires/partenaires/partenaires.module#PartenairesPageModule'
}, },
{ {
path: 'mes-merites', path: 'mes-merites',
loadChildren: '../mes-merites/mes-merites.module#MesMeritesPageModule' loadChildren: '../merites/mes-merites/mes-merites.module#MesMeritesPageModule'
}, },
{ {
path: 'reclamer-merites', path: 'reclamer-merites',
loadChildren: '../reclamer-merites/reclamer-merites.module#ReclamerMeritesPageModule' loadChildren: '../merites/reclamer-merites/reclamer-merites.module#ReclamerMeritesPageModule'
},
{
path: 'reclamer-merites-qrcode',
loadChildren: '../merites/reclamer-merites-qrcode/reclamer-merites-qrcode.module#ReclamerMeritesQrcodePageModule'
},
{
path: 'reclamer-merites-form',
loadChildren: '../merites/reclamer-merites-form/reclamer-merites-form.module#ReclamerMeritesFormPageModule'
},
{
path: 'reclamer-merites-code',
loadChildren: '../merites/reclamer-merites-code/reclamer-merites-code.module#ReclamerMeritesCodePageModule'
}, },
{ {
path: 'params', path: 'params',
...@@ -46,37 +62,25 @@ const routes: Routes = [ ...@@ -46,37 +62,25 @@ const routes: Routes = [
loadChildren: '../a-propos/a-propos.module#AProposPageModule' loadChildren: '../a-propos/a-propos.module#AProposPageModule'
}, },
{ {
path: 'details-offre/:oid',
loadChildren: '../offre-details/offre-details.module#OffreDetailsPageModule'
},
{
path: 'profil', path: 'profil',
loadChildren: '../profil/profil.module#ProfilPageModule' loadChildren: '../compte/profil/profil.module#ProfilPageModule'
}, },
{ {
path: 'profil-edit', path: 'profil-edit',
loadChildren: '../profil-edit/profil-edit.module#ProfilEditPageModule' loadChildren: '../compte/profil-edit/profil-edit.module#ProfilEditPageModule'
}, },
{ {
path: 'hauts-faits', path: 'hauts-faits',
loadChildren: '../hauts-faits/hauts-faits.module#HautsFaitsPageModule' loadChildren: '../progres/hauts-faits/hauts-faits.module#HautsFaitsPageModule'
}, },
{ {
path: 'classement', path: 'classement',
loadChildren: '../classement/classement.module#ClassementPageModule' loadChildren: '../progres/classement/classement.module#ClassementPageModule'
}, },
{ {
path: 'lots-a-gagner', path: 'lots-a-gagner',
loadChildren: '../lots-a-gagner/lots-a-gagner.module#LotsAGagnerPageModule' loadChildren: '../lots/lots-a-gagner/lots-a-gagner.module#LotsAGagnerPageModule'
}, },
{
path: 'reclamer-merites-qrcode',
loadChildren: '../reclamer-merites-qrcode/reclamer-merites-qrcode.module#ReclamerMeritesQrcodePageModule'
},
{
path: 'reclamer-merites-form',
loadChildren: '../reclamer-merites-form/reclamer-merites-form.module#ReclamerMeritesFormPageModule'
}
] ]
} }
]; ];
......
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { ReclamerMeritesCodePage } from './reclamer-merites-code.page';
const routes: Routes = [
{
path: '',
component: ReclamerMeritesCodePage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [ReclamerMeritesCodePage]
})
export class ReclamerMeritesCodePageModule {}
<ion-header>
<ion-toolbar color="primary">
<ion-buttons slot="start">
<ion-back-button defaultHref="/app/reclamer-merites" text="Retour"></ion-back-button>
</ion-buttons>
<ion-title>
Code de mérites
</ion-title>
<ion-buttons slot="end">
<ion-button color="success" fill="solid" size="small">Valider</ion-button>
</ion-buttons>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-item lines="none" margin-top>
<ion-text class="ion-text-justify">
<small>
Si vous posséder un code de mérites, vous pouvez récupérer des points de mérites <ion-icon name="ribbon"
color="secondary"></ion-icon> en le saisissant sur l'input ci-dessous.
</small>
</ion-text>
</ion-item>
<ion-card>
<ion-list>
<ion-list-header color="tertiary">Code de mérites</ion-list-header>
<ion-item lines="none">
<ion-label position="floating">Code</ion-label>
<ion-input placeholder="Saisissez le code ici..."></ion-input>
</ion-item>
</ion-list>
</ion-card>
</ion-content>
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ReclamerMeritesCodePage } from './reclamer-merites-code.page';
describe('ReclamerMeritesCodePage', () => {
let component: ReclamerMeritesCodePage;
let fixture: ComponentFixture<ReclamerMeritesCodePage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ReclamerMeritesCodePage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ReclamerMeritesCodePage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
@Component({ @Component({
selector: 'app-lots-a-gagner', selector: 'app-reclamer-merites-code',
templateUrl: './lots-a-gagner.page.html', templateUrl: './reclamer-merites-code.page.html',
styleUrls: ['./lots-a-gagner.page.scss'], styleUrls: ['./reclamer-merites-code.page.scss'],
}) })
export class LotsAGagnerPage implements OnInit { export class ReclamerMeritesCodePage implements OnInit {
constructor() { } constructor() { }
......
...@@ -6,17 +6,16 @@ import { HttpClient } from '@angular/common/http'; ...@@ -6,17 +6,16 @@ import { HttpClient } from '@angular/common/http';
import { WebView } from '@ionic-native/ionic-webview/ngx'; import { WebView } from '@ionic-native/ionic-webview/ngx';
import { Storage } from '@ionic/storage'; import { Storage } from '@ionic/storage';
import { FilePath } from '@ionic-native/file-path/ngx'; import { FilePath } from '@ionic-native/file-path/ngx';
import { finalize } from 'rxjs/operators'; import { finalize } from 'rxjs/operators';
const STORAGE_KEY = 'my_images'; const STORAGE_KEY = 'my_images';
@Component({ @Component({
selector: 'app-reclamer-merites', selector: 'app-reclamer-merites-form',
templateUrl: './reclamer-merites.page.html', templateUrl: './reclamer-merites-form.page.html',
styleUrls: ['./reclamer-merites.page.scss'], styleUrls: ['./reclamer-merites-form.page.scss'],
}) })
export class ReclamerMeritesPage implements OnInit { export class ReclamerMeritesFormPage implements OnInit {
images = []; images = [];
......
...@@ -14,14 +14,21 @@ ...@@ -14,14 +14,21 @@
<ion-text class="ion-text-justify"> <ion-text class="ion-text-justify">
<small> <small>
Vous pouvez récupérer vos points de mérites, chez le partenaire directement en scannant le code QR sur sa Vous pouvez récupérer vos points de mérites, chez le partenaire directement en scannant le code QR sur sa
tablette( recommandée), ou en faisant une demande directe via le formulaire de récupération des mérites. Tablette (méthode recommandée), ou en saisissant un code de mérites.
Si aucune des deux méthodes ne vous satisfait pas, vous pouvez toujours faire une demande directe via le
formulaire de récupération des mérites, et on traitera votre demande dans les plus brefs délais.
</small> </small>
</ion-text> </ion-text>
</ion-item> </ion-item>
<ion-card class="ion-text-center" padding> <ion-card class="ion-text-center" padding>
<ion-icon name="barcode"></ion-icon> <ion-icon name="barcode"></ion-icon>
<ion-button expand="block" color="dark" routerLink="/app/reclamer-merites-qrcode" routerDirection="forward" <ion-button expand="block" color="dark" routerLink="/app/reclamer-merites-qrcode" routerDirection="forward"
routerLinkActive="active"> Scanner le code QR </ion-button> routerLinkActive="active"> Scanner le code QR </ion-button>
</ion-card>
<ion-card class="ion-text-center" padding>
<ion-icon name="gift"></ion-icon>
<ion-button expand="block" color="dark" routerLink="/app/reclamer-merites-code" routerDirection="forward"
routerLinkActive="active"> Code de mérites </ion-button>
</ion-card> </ion-card>
<ion-card class="ion-text-center" padding> <ion-card class="ion-text-center" padding>
<ion-icon name="list-box"></ion-icon> <ion-icon name="list-box"></ion-icon>
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
@Component({ @Component({
selector: 'app-reclamer-merites-form', selector: 'app-reclamer-merites',
templateUrl: './reclamer-merites-form.page.html', templateUrl: './reclamer-merites.page.html',
styleUrls: ['./reclamer-merites-form.page.scss'], styleUrls: ['./reclamer-merites.page.scss'],
}) })
export class ReclamerMeritesFormPage implements OnInit { export class ReclamerMeritesPage implements OnInit {
constructor() { } constructor() { }
......
...@@ -56,9 +56,9 @@ ...@@ -56,9 +56,9 @@
</ion-row> </ion-row>
</ion-grid> </ion-grid>
</ion-header> </ion-header>
<ion-card> <!-- <ion-card>
ss ss
</ion-card> </ion-card> -->
<ion-content> <ion-content>
<ion-tabs> <ion-tabs>
<ion-tab-bar slot="bottom"> <ion-tab-bar slot="bottom">
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { TripService } from '../../services/trip-service'; import { TripService } from '../../../services/trip-service';
@Component({ @Component({
selector: 'app-dashboard', selector: 'app-dashboard',
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { AlloService } from '../../services/allo-service'; import { AlloService } from '../../../services/allo-service';
import { TripService } from '../../services/trip-service'; import { TripService } from '../../../services/trip-service';
import { Storage } from '@ionic/storage'; import { Storage } from '@ionic/storage';
import { ActivatedRoute } from '@angular/router'; import { ActivatedRoute } from '@angular/router';
......
...@@ -4,7 +4,7 @@ import { FormsModule } from '@angular/forms'; ...@@ -4,7 +4,7 @@ import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router'; import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { SearchPipe } from '../../pipes/search/search.pipe'; import { SearchPipe } from '../../../pipes/search/search.pipe';
import { OffresCartePage } from './offres-carte.page'; import { OffresCartePage } from './offres-carte.page';
......
import { Component, OnInit, ViewChild } from '@angular/core'; import { Component, OnInit, ViewChild } from '@angular/core';
import { ToastController, IonInfiniteScroll } from '@ionic/angular'; import { ToastController, IonInfiniteScroll } from '@ionic/angular';
import { AlloService } from '../../services/allo-service'; import { AlloService } from '../../../services/allo-service';
import { TripService } from '../../services/trip-service'; import { TripService } from '../../../services/trip-service';
import { Storage } from '@ionic/storage'; import { Storage } from '@ionic/storage';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
...@@ -31,7 +31,6 @@ export class OffresCartePage implements OnInit { ...@@ -31,7 +31,6 @@ export class OffresCartePage implements OnInit {
if (loadedData) { if (loadedData) {
this._TRIP.offersCardListPointer = this._TRIP.offersCardListPointer + 1; this._TRIP.offersCardListPointer = this._TRIP.offersCardListPointer + 1;
this._TRIP.offersCardList = this._TRIP.offersCardList.concat(loadedData); this._TRIP.offersCardList = this._TRIP.offersCardList.concat(loadedData);
console.log(loadedData, this._TRIP.offersCardList, this._TRIP.offersCardListPointer);
event.target.complete(); event.target.complete();
} else { } else {
event.target.disabled = true; event.target.disabled = true;
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { LoadingController } from '@ionic/angular'; import { LoadingController } from '@ionic/angular';
// import { ActivatedRoute } from '@angular/router'; // import { ActivatedRoute } from '@angular/router';
import { TripService } from '../../services/trip-service'; import { TripService } from '../../../services/trip-service';
import { AlloService } from '../../services/allo-service'; import { AlloService } from '../../../services/allo-service';
@Component({ @Component({
selector: 'app-partenaires-list', selector: 'app-partenaires-list',
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { LoadingController } from '@ionic/angular'; import { LoadingController } from '@ionic/angular';
import { AlloService } from "../../services/allo-service"; import { AlloService } from '../../../services/allo-service';
import { TripService } from "../../services/trip-service"; import { TripService } from '../../../services/trip-service';
import L from 'leaflet'; import L from 'leaflet';
import 'leaflet.markercluster'; import 'leaflet.markercluster';
...@@ -36,7 +36,7 @@ export class PartenairesMapPage implements OnInit { ...@@ -36,7 +36,7 @@ export class PartenairesMapPage implements OnInit {
} }
loadmap() { loadmap() {
this.map = L.map("map", { attributionControl: false }); this.map = L.map('map', { attributionControl: false });
this.map.on('load', () => { this.map.on('load', () => {
// this.loader.dismiss(); // this.loader.dismiss();
}); });
......
...@@ -17,7 +17,7 @@ const routes: Routes = [ ...@@ -17,7 +17,7 @@ const routes: Routes = [
children: [ children: [
{ {
path: '', path: '',
loadChildren: '../../pages/progress-merites/progress-merites.module#ProgressMeritesPageModule' loadChildren: '../progress-merites/progress-merites.module#ProgressMeritesPageModule'
}, },
] ]
}, },
...@@ -26,7 +26,7 @@ const routes: Routes = [ ...@@ -26,7 +26,7 @@ const routes: Routes = [
children: [ children: [
{ {
path: '', path: '',
loadChildren: '../../pages/progress-exp/progress-exp.module#ProgressExpPageModule' loadChildren: '../progress-exp/progress-exp.module#ProgressExpPageModule'
}, },
] ]
}, },
......
import { TestBed } from '@angular/core/testing';
import { LotsService } from './lots.service';
describe('LotsService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: LotsService = TestBed.get(LotsService);
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class LotsService {
lots: Array<any>;
filtredLots: Array<any>;
filters = {};
constructor() {
this.lots = this.getLots();
this.filtredLots = this.lots;
}
getLots() {
return [
{
title: 'Petit déjeuner gratuit',
merites: 4000,
where: 'The green place',
brand_id: 5,
badge_color: 'success',
type: 3,
logo: 'assets/img/logos/the_green_place.png',
description: 'Bénéficiez d\'un petit-déjeuner gratuitement chez The green place.'
},
{
title: 'Carte de recharge (50 DH)',
merites: 5000,
where: 'Inwi',
brand_id: 4,
badge_color: 'purple',
type: 1,
logo: 'assets/img/logos/inwi.jpg',
description: 'Une carte de recharge téléphonique d\'une valeur de 50 DH, de l\'opérateur Inwi.'
},
{
title: 'Carte de recharge (20 DH)',
merites: 2000,
where: 'Inwi',
brand_id: 4,
badge_color: 'purple',
type: 1,
logo: 'assets/img/logos/inwi.jpg',
description: 'Une carte de recharge téléphonique d\'une valeur de 20 DH, de l\'opérateur Inwi.'
},
{
title: 'Carte de recharge (10 DH)',
merites: 1000,
where: 'Inwi',
brand_id: 4,
badge_color: 'purple',
type: 1,
logo: 'assets/img/logos/inwi.jpg',
description: 'Une carte de recharge téléphonique d\'une valeur de 10 DH, de l\'opérateur Inwi.'
},
{
title: 'Carte de recharge (5 DH)',
merites: 500,
where: 'Inwi',
brand_id: 4,
badge_color: 'purple',
type: 1,
logo: 'assets/img/logos/inwi.jpg',
description: 'Une carte de recharge téléphonique d\'une valeur de 5 DH, de l\'opérateur Inwi.'
},
{
title: 'Carte de recharge (50 DH)',
merites: 5000,
where: 'Orange',
brand_id: 2,
badge_color: 'orange',
type: 1,
logo: 'assets/img/logos/orange.png',
description: 'Une carte de recharge téléphonique d\'une valeur de 50 DH, de l\'opérateur Orange.'
},
{
title: 'Carte de recharge (20 DH)',
merites: 2000,
where: 'Orange',
brand_id: 2,
badge_color: 'orange',
type: 1,
logo: 'assets/img/logos/orange.png',
description: 'Une carte de recharge téléphonique d\'une valeur de 20 DH, de l\'opérateur Orange.'
},
{
title: 'Carte de recharge (10 DH)',
merites: 1000,
where: 'Orange',
brand_id: 2,
badge_color: 'orange',
type: 1,
logo: 'assets/img/logos/orange.png',
description: 'Une carte de recharge téléphonique d\'une valeur de 10 DH, de l\'opérateur Orange.'
},
{
title: 'Carte de recharge (5 DH)',
merites: 500,
where: 'Orange',
brand_id: 2,
badge_color: 'orange',
type: 1,
logo: 'assets/img/logos/orange.png',
description: 'Une carte de recharge téléphonique d\'une valeur de 5 DH, de l\'opérateur Orange.'
},
{
title: 'Carte de recharge (50 DH)',
merites: 5000,
where: 'Maroc Telecom',
brand_id: 3,
badge_color: 'blue',
type: 1,
logo: 'assets/img/logos/mt.jpg',
description: 'Une carte de recharge téléphonique d\'une valeur de 50 DH, de l\'opérateur Maroc Telecom.'
},
{
title: 'Carte de recharge (20 DH)',
merites: 2000,
where: 'Maroc Telecom',
brand_id: 3,
badge_color: 'blue',
type: 1,
logo: 'assets/img/logos/mt.jpg',
description: 'Une carte de recharge téléphonique d\'une valeur de 20 DH, de l\'opérateur Maroc Telecom.'
},
{
title: 'Carte de recharge (10 DH)',
merites: 1000,
where: 'Maroc Telecom',
brand_id: 3,
badge_color: 'blue',
type: 1,
logo: 'assets/img/logos/mt.jpg',
description: 'Une carte de recharge téléphonique d\'une valeur de 10 DH, de l\'opérateur Maroc Telecom.'
},
{
title: 'Carte de recharge (5 DH)',
merites: 500,
where: 'Maroc Telecom',
brand_id: 3,
badge_color: 'blue',
type: 1,
logo: 'assets/img/logos/mt.jpg',
description: 'Une carte de recharge téléphonique d\'une valeur de 5 DH, de l\'opérateur Maroc Telecom.'
},
{
title: 'eTicket Allo Testeurs (50 DH)',
merites: 5000,
where: 'Vendeurs agréés',
brand_id: 1,
badge_color: 'primary',
type: 2,
logo: 'assets/img/ionic3-ico.png',
description: 'Bon d\'achat d\'une valeur de 50 DH, valable chez tous les vendeurs agréés Allo Testeurs.'
},
{
title: 'eTicket Allo Testeurs (20 DH)',
merites: 2000,
where: 'Vendeurs agréés',
brand_id: 1,
badge_color: 'primary',
type: 2,
logo: 'assets/img/ionic3-ico.png',
description: 'Bon d\'achat d\'une valeur de 20 DH, valable chez tous les vendeurs agréés Allo Testeurs.'
},
{
title: 'eTicket Allo Testeurs (10 DH)',
merites: 1000,
where: 'Vendeurs agréés',
brand_id: 1,
badge_color: 'primary',
type: 2,
logo: 'assets/img/ionic3-ico.png',
description: 'Bon d\'achat d\'une valeur de 10 DH, valable chez tous les vendeurs agréés Allo Testeurs.'
},
{
title: 'eTicket Allo Testeurs (5 DH)',
merites: 500,
where: 'Vendeurs agréés',
brand_id: 1,
badge_color: 'primary',
type: 2,
logo: 'assets/img/ionic3-ico.png',
description: 'Bon d\'achat d\'une valeur de 5 DH, valable chez tous les vendeurs agréés Allo Testeurs.'
},
];
}
filtrerLots() {
let lots = this.lots;
// tslint:disable-next-line: forin
for (let key in this.filters) {
let value = this.filters[key];
lots = lots.filter(item => {
let return_value = false;
if (value === 'all') {
return_value = true;
} else if (key === 'show') {
return_value = item.merites <= 1000;
} else if (key === 'type') {
return_value = item.type === parseInt(value);
} else if (key === 'brand') {
return_value = item.brand_id === parseInt(value);
}
return return_value;
});
}
this.filtredLots = lots;
}
reinitialiserFiltres() {
this.filters = {
show: 'all',
type: 'all',
brand: 'all'
};
this.filtrerLots();
}
}
...@@ -139,7 +139,7 @@ ...@@ -139,7 +139,7 @@
/** Purple **/ /** Purple **/
--ion-color-purple: #c98ce3; --ion-color-purple: #c98ce3;
--ion-color-purple-rgb: 201,140,227; --ion-color-purple-rgb: 201,140,227;
--ion-color-purple-contrast: #000000; --ion-color-purple-contrast: #ffffff;
--ion-color-purple-contrast-rgb: 0,0,0; --ion-color-purple-contrast-rgb: 0,0,0;
--ion-color-purple-shade: #b17bc8; --ion-color-purple-shade: #b17bc8;
--ion-color-purple-tint: #ce98e6; --ion-color-purple-tint: #ce98e6;
...@@ -147,7 +147,7 @@ ...@@ -147,7 +147,7 @@
/** Orange **/ /** Orange **/
--ion-color-orange: #FFA500; --ion-color-orange: #FFA500;
--ion-color-orange-rgb: 255,165,0; --ion-color-orange-rgb: 255,165,0;
--ion-color-orange-contrast: #000000; --ion-color-orange-contrast: #ffffff;
--ion-color-orange-contrast-rgb: 0,0,0; --ion-color-orange-contrast-rgb: 0,0,0;
--ion-color-orange-shade: #e09100; --ion-color-orange-shade: #e09100;
--ion-color-orange-tint: #ffae1a; --ion-color-orange-tint: #ffae1a;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment