Commit 28a03469 by Nabil Sadki

Quests

parent d220fc1c
export const WORDPRESS_URL = 'http://allo-testeurs.test/'; // export const WORDPRESS_URL = 'http://allo-testeurs.test/';
// export const WORDPRESS_URL = 'http://www.allo-testeurs.com/'; export const WORDPRESS_URL = 'http://www.allo-testeurs.com/';
export const WORDPRESS_REST_API_URL = WORDPRESS_URL + 'wp-json/wp/v2/'; export const WORDPRESS_REST_API_URL = WORDPRESS_URL + 'wp-json/wp/v2/';
export const GA_TRACKID = 'UA-129706772-2'; export const GA_TRACKID = 'UA-129706772-2';
export const WORDPRESS_REST_API_ACF_USER_URL = WORDPRESS_URL + 'wp-json/acf/v3/users/'; export const WORDPRESS_REST_API_ACF_USER_URL = WORDPRESS_URL + 'wp-json/acf/v3/users/';
...@@ -32,12 +32,12 @@ ...@@ -32,12 +32,12 @@
<ion-label>Testeur</ion-label> <ion-label>Testeur</ion-label>
</ion-chip> </ion-chip>
<ion-menu-toggle> <ion-menu-toggle>
<ion-chip routerLink="/app/hauts-faits" routerDirection="root" <ion-chip routerLink="/app/hauts-faits" routerDirection="root"
routerLinkActive="active"> routerLinkActive="active">
<ion-icon name="ribbon" color="secondary"></ion-icon> <ion-icon name="ribbon" color="secondary"></ion-icon>
<ion-label color="light">10 542</ion-label> <ion-label color="light">{{ _QST.pointsMerites }}</ion-label>
</ion-chip> </ion-chip>
</ion-menu-toggle> </ion-menu-toggle>
</ion-col> </ion-col>
</ion-row> </ion-row>
</ion-grid> </ion-grid>
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { AuthService } from '../../services/auth.service'; import { AuthService } from '../../services/auth.service';
import { QuestsService } from '../../services/quests.service';
@Component({ @Component({
selector: 'app-menu', selector: 'app-menu',
...@@ -61,7 +62,8 @@ export class MenuPage implements OnInit { ...@@ -61,7 +62,8 @@ export class MenuPage implements OnInit {
constructor( constructor(
public router: Router, public router: Router,
public _AUTH: AuthService public _AUTH: AuthService,
public _QST: QuestsService
) { } ) { }
logout() { logout() {
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { TripService } from '../../../services/trip-service'; import { TripService } from '../../../services/trip-service';
import { QuestsService } from "../../../services/quests.service"; import { QuestsService } from '../../../services/quests.service';
@Component({ @Component({
selector: 'app-dashboard', selector: 'app-dashboard',
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
</ion-chip> </ion-chip>
<ion-chip slot="end"> <ion-chip slot="end">
<ion-icon name="ribbon" color="secondary"></ion-icon> <ion-icon name="ribbon" color="secondary"></ion-icon>
<ion-label color="light">60</ion-label> <ion-label color="light">{{ _QST.pointsMerites }}</ion-label>
</ion-chip> </ion-chip>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { QuestsService } from '../../../services/quests.service';
@Component({ @Component({
selector: 'app-hauts-faits', selector: 'app-hauts-faits',
...@@ -7,7 +8,9 @@ import { Component, OnInit } from '@angular/core'; ...@@ -7,7 +8,9 @@ import { Component, OnInit } from '@angular/core';
}) })
export class HautsFaitsPage implements OnInit { export class HautsFaitsPage implements OnInit {
constructor() { } constructor(
public _QST: QuestsService
) { }
ngOnInit() { ngOnInit() {
} }
......
<ion-content> <ion-content>
<ion-text class="ion-text-center"> <ion-text class="ion-text-center">
<h1>Progrès</h1> <h1>Succès</h1>
</ion-text> </ion-text>
<ion-grid> <ion-grid>
<ion-row> <ion-row>
......
<ion-content> <ion-content>
<ion-text class="ion-text-center"> <ion-text class="ion-text-center">
<h1>Progrès</h1> <h1>Succès</h1>
</ion-text> </ion-text>
<ion-grid> <ion-grid>
<ion-row> <ion-row>
...@@ -11,183 +11,36 @@ ...@@ -11,183 +11,36 @@
<ion-col size="2"></ion-col> <ion-col size="2"></ion-col>
</ion-row> </ion-row>
</ion-grid> </ion-grid>
<!-- <ion-card no-margin margin-horizontal margin-bottom padding-bottom> --> <ion-card no-margin margin-horizontal margin-bottom *ngFor="let category of meritesSVC.merites">
<ion-list> <ion-list>
<ion-list-header color="light">Connexion</ion-list-header> <ion-list-header color="light">
<ion-item lines="none" margin-top> {{ category.category_name }}
<ion-icon class="ach-icon" name="checkmark-circle-outline" color="success" slot="start"></ion-icon> <ion-badge color="warning">Bientôt!</ion-badge>
<ion-label no-margin> </ion-list-header>
<h2>Marhba!</h2> <ion-item lines="none" class="ion-margin-top" *ngFor="let item of category.items">
<p>Se connecter une seul fois à l'application.</p> <ion-icon class="ach-icon" [name]="item.done ? 'checkmark-circle-outline' : item.icon_name"
<ion-grid no-padding> [color]="item.done ? 'success' : 'medium'" slot="start"></ion-icon>
<ion-row> <ion-label no-margin>
<ion-col no-padding class="ion-text-start" size="5"> <h2>{{ item.title }}</h2>
<ion-chip outline="true"> <p>{{ item.description }}</p>
<ion-icon name="ribbon" color="secondary"></ion-icon> <ion-grid no-padding>
<ion-label>20</ion-label> <ion-row>
</ion-chip> <ion-col no-padding class="ion-text-start" size="5">
</ion-col> <ion-chip outline="true">
<ion-col no-padding class="ion-text-end" size="7"> <ion-icon name="ribbon" color="secondary"></ion-icon>
1/1 <ion-label>{{ item.merites }}</ion-label>
<ion-progress-bar color="success" value="1">1/1</ion-progress-bar> </ion-chip>
</ion-col> </ion-col>
</ion-row> <ion-col no-padding class="ion-text-end" size="7">
</ion-grid> {{ item.progress_text }}
</ion-label> <ion-progress-bar [color]="item.done ? 'success' : 'warning'" [value]="item.progress">
</ion-item> </ion-progress-bar>
<ion-item lines="none" margin-top> </ion-col>
<ion-icon class="ach-icon" name="power" slot="start"></ion-icon> </ion-row>
<ion-label no-margin> </ion-grid>
<h2>On s'habitue</h2> </ion-label>
<p>Se connecter 7 fois successives à l'application.</p> </ion-item>
<ion-grid no-padding> </ion-list>
<ion-row> </ion-card>
<ion-col no-padding class="ion-text-start" size="5">
<ion-chip outline="true">
<ion-icon name="ribbon" color="secondary"></ion-icon>
<ion-label>50</ion-label>
</ion-chip>
</ion-col>
<ion-col no-padding class="ion-text-end" size="7">
1/7
<ion-progress-bar color="primary" value="0.143"></ion-progress-bar>
</ion-col>
</ion-row>
</ion-grid>
</ion-label>
</ion-item>
<ion-item lines="none" margin-vertical>
<ion-icon class="ach-icon" name="power" slot="start"></ion-icon>
<ion-label no-margin>
<h2>Toujours en ligne!</h2>
<p>Se connecter 30 fois successives à l'application.</p>
<ion-grid no-padding>
<ion-row>
<ion-col no-padding class="ion-text-start" size="5">
<ion-chip outline="true">
<ion-icon name="ribbon" color="secondary"></ion-icon>
<ion-label>200</ion-label>
</ion-chip>
</ion-col>
<ion-col no-padding class="ion-text-end" size="7">
1/30
<ion-progress-bar color="primary" value="0.033"></ion-progress-bar>
</ion-col>
</ion-row>
</ion-grid>
</ion-label>
</ion-item>
</ion-list>
<!-- </ion-card> -->
<!-- <ion-card no-margin margin-horizontal margin-bottom padding-bottom> -->
<ion-list>
<ion-list-header color="light">Parrainage</ion-list-header>
<ion-item lines="none" margin-top>
<ion-icon class="ach-icon" name="checkmark-circle-outline" color="success" slot="start"></ion-icon>
<ion-label no-margin>
<h2>Viens, je te montre un truc</h2>
<p>Parrainer un(e) ami(e).</p>
<ion-grid no-padding>
<ion-row>
<ion-col no-padding class="ion-text-start" size="5">
<ion-chip outline="true">
<ion-icon name="ribbon" color="secondary"></ion-icon>
<ion-label>40</ion-label>
</ion-chip>
</ion-col>
<ion-col no-padding class="ion-text-end" size="7">
1/1
<ion-progress-bar color="success" value="1"></ion-progress-bar>
</ion-col>
</ion-row>
</ion-grid>
</ion-label>
</ion-item>
<ion-item lines="none" margin-top>
<ion-icon class="ach-icon" name="contacts" slot="start"></ion-icon>
<ion-label no-margin>
<h2>C'est super à 5!</h2>
<p>Parrainer 5 ami(e)s.</p>
<ion-grid no-padding>
<ion-row>
<ion-col no-padding class="ion-text-start" size="5">
<ion-chip outline="true">
<ion-icon name="ribbon" color="secondary"></ion-icon>
<ion-label>200</ion-label>
</ion-chip>
</ion-col>
<ion-col no-padding class="ion-text-end" size="7">
4/5
<ion-progress-bar color="primary" value="0.8"></ion-progress-bar>
</ion-col>
</ion-row>
</ion-grid>
</ion-label>
</ion-item>
<ion-item lines="none" margin-vertical>
<ion-icon class="ach-icon" name="contacts" slot="start"></ion-icon>
<ion-label no-margin>
<h2>A 10, c'est encore mieux!!</h2>
<p>Parrainer 10 ami(e)s.</p>
<ion-grid no-padding>
<ion-row>
<ion-col no-padding class="ion-text-start" size="5">
<ion-chip outline="true">
<ion-icon name="ribbon" color="secondary"></ion-icon>
<ion-label>500</ion-label>
</ion-chip>
</ion-col>
<ion-col no-padding class="ion-text-end" size="7">
4/10
<ion-progress-bar color="primary" value="0.4"></ion-progress-bar>
</ion-col>
</ion-row>
</ion-grid>
</ion-label>
</ion-item>
<ion-item lines="none" margin-vertical>
<ion-icon class="ach-icon" name="contacts" slot="start"></ion-icon>
<ion-label no-margin>
<h2>Father</h2>
<p>Parrainer 30 ami(e)s.</p>
<ion-grid no-padding>
<ion-row>
<ion-col no-padding class="ion-text-start" size="5">
<ion-chip outline="true">
<ion-icon name="ribbon" color="secondary"></ion-icon>
<ion-label>1700</ion-label>
</ion-chip>
</ion-col>
<ion-col no-padding class="ion-text-end" size="7">
4/30
<ion-progress-bar color="primary" value="0.133"></ion-progress-bar>
</ion-col>
</ion-row>
</ion-grid>
</ion-label>
</ion-item>
<ion-item lines="none" margin-vertical>
<ion-icon class="ach-icon" name="contacts" slot="start"></ion-icon>
<ion-label no-margin>
<h2>Godfather</h2>
<p>Parrainer 50 ami(e)s.</p>
<ion-grid no-padding>
<ion-row>
<ion-col no-padding class="ion-text-start" size="5">
<ion-chip outline="true">
<ion-icon name="ribbon" color="secondary"></ion-icon>
<ion-label>3000</ion-label>
</ion-chip>
</ion-col>
<ion-col no-padding class="ion-text-end" size="7">
4/50
<ion-progress-bar color="primary" value="0.08"></ion-progress-bar>
</ion-col>
</ion-row>
</ion-grid>
</ion-label>
</ion-item>
</ion-list>
<!-- </ion-card> -->
</ion-content> </ion-content>
\ No newline at end of file
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { MeritesService } from '../../../services/data/merites.service';
@Component({ @Component({
selector: 'app-progress-merites', selector: 'app-progress-merites',
...@@ -7,7 +8,9 @@ import { Component, OnInit } from '@angular/core'; ...@@ -7,7 +8,9 @@ import { Component, OnInit } from '@angular/core';
}) })
export class ProgressMeritesPage implements OnInit { export class ProgressMeritesPage implements OnInit {
constructor() { } constructor(
public meritesSVC: MeritesService
) { }
ngOnInit() { ngOnInit() {
} }
......
import { TestBed } from '@angular/core/testing';
import { MeritesService } from './merites.service';
describe('MeritesService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: MeritesService = TestBed.get(MeritesService);
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class MeritesService {
public merites: Array<any>;
constructor() {
this.merites = this.getMerites();
}
getMerites() {
return [
{
category_id: 1,
category_name: 'Connexion',
items: [
{
type: 'merite',
icon_name: 'power',
title: 'Marhba!',
description: 'Se connecter une seul fois à l\'application.',
merites: 20,
progress: 1,
progress_text: '1/1',
done: true
},
{
type: 'merite',
icon_name: 'power',
title: 'On s\'habitue',
description: 'Se connecter 7 jours successifs à l\'application.',
merites: 50,
progress: 0.143,
progress_text: '1/7',
done: false
},
{
type: 'merite',
icon_name: 'power',
title: 'Toujours en ligne!',
description: 'Se connecter 30 fois successives à l\'application.',
merites: 200,
progress: 0.033,
progress_text: '1/30',
done: false
},
]
},
{
category_id: 2,
category_name: 'Parrainage',
items: [
{
type: 'merite',
icon_name: 'contacts',
title: 'Viens, je te montre un truc',
description: 'Parrainer un(e) ami(e).',
merites: 40,
progress: 0,
progress_text: '0/1',
done: false
},
{
type: 'merite',
icon_name: 'contacts',
title: 'C\'est super à 5!',
description: 'Parrainer 5 ami(e)s.',
merites: 200,
progress: 0,
progress_text: '0/5',
done: false
},
{
type: 'merite',
icon_name: 'contacts',
title: 'A 10, c\'est encore mieux!!',
description: 'Parrainer 10 ami(e)s.',
merites: 500,
progress: 0,
progress_text: '0/10',
done: false
},
{
type: 'merite',
icon_name: 'contacts',
title: 'Father',
description: 'Parrainer 30 ami(e)s.',
merites: 1700,
progress: 0,
progress_text: '0/30',
done: false
},
{
type: 'merite',
icon_name: 'contacts',
title: 'GodFather',
description: 'Parrainer 50 ami(e)s.',
merites: 3000,
progress: 0,
progress_text: '0/50',
done: false
},
]
},
];
}
}
...@@ -38,8 +38,7 @@ export class QuestsService { ...@@ -38,8 +38,7 @@ export class QuestsService {
_questFirstConnection() { _questFirstConnection() {
this.pointsExp = this.pointsExp + 200; this.pointsExp = this.pointsExp + 200;
this.storage.get('APP_QUESTS').then((appQuests) => { this.storage.get('APP_QUESTS').then((appQuests) => {
console.log(appQuests); if (null === appQuests || 'undefined' === typeof appQuests.firstConnection) {
if (null === appQuests) {
appQuests = { firstConnection: true }; appQuests = { firstConnection: true };
this.storage.set('APP_QUESTS', appQuests).then(() => { this.storage.set('APP_QUESTS', appQuests).then(() => {
this.presentAlert('Première connection', '+200 points d\'experience pour votre première connection'); this.presentAlert('Première connection', '+200 points d\'experience pour votre première connection');
......
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