Commit 3c3e8f68 by Nabil Sadki

Wishlist

parent 591dfee9
v1.1.4.0
- Add wishlist
v1.1.0.0 v1.1.0.0
- Add login form - Add login form
- Optimise launch time - Optimise launch time
......
...@@ -18,24 +18,6 @@ ...@@ -18,24 +18,6 @@
<allow-intent href="geo:*" /> <allow-intent href="geo:*" />
<platform name="android"> <platform name="android">
<allow-intent href="market:*" /> <allow-intent href="market:*" />
<icon density="ldpi" src="src\assets\img\ionic3-ico.png" />
<icon density="mdpi" src="src\assets\img\ionic3-ico.png" />
<icon density="hdpi" src="src\assets\img\ionic3-ico.png" />
<icon density="xhdpi" src="src\assets\img\ionic3-ico.png" />
<icon density="xxhdpi" src="src\assets\img\ionic3-ico.png" />
<icon density="xxxhdpi" src="src\assets\img\ionic3-ico.png" />
<splash density="land-ldpi" src="resources\splash.png" />
<splash density="land-mdpi" src="resources\splash.png" />
<splash density="land-hdpi" src="resources\splash.png" />
<splash density="land-xhdpi" src="resources\splash.png" />
<splash density="land-xxhdpi" src="resources\splash.png" />
<splash density="land-xxxhdpi" src="resources\splash.png" />
<splash density="port-ldpi" src="resources\splash.png" />
<splash density="port-mdpi" src="resources\splash.png" />
<splash density="port-hdpi" src="resources\splash.png" />
<splash density="port-xhdpi" src="resources\splash.png" />
<splash density="port-xxhdpi" src="resources\splash.png" />
<splash density="port-xxxhdpi" src="resources\splash.png" />
<icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" /> <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
<icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" /> <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
<icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" /> <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
...@@ -90,6 +72,19 @@ ...@@ -90,6 +72,19 @@
<splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" /> <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
<icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" /> <icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
<splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" /> <splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
<icon height="20" src="resources/ios/icon/icon-20.png" width="20" />
<icon height="40" src="resources/ios/icon/icon-20@2x.png" width="40" />
<icon height="60" src="resources/ios/icon/icon-20@3x.png" width="60" />
<icon height="29" src="resources/ios/icon/icon-29.png" width="29" />
<icon height="58" src="resources/ios/icon/icon-29@2x.png" width="58" />
<icon height="87" src="resources/ios/icon/icon-29@3x.png" width="87" />
<icon height="48" src="resources/ios/icon/icon-24@2x.png" width="48" />
<icon height="55" src="resources/ios/icon/icon-27.5@2x.png" width="55" />
<icon height="88" src="resources/ios/icon/icon-44@2x.png" width="88" />
<icon height="172" src="resources/ios/icon/icon-86@2x.png" width="172" />
<icon height="196" src="resources/ios/icon/icon-98@2x.png" width="196" />
<splash height="2436" src="resources/ios/splash/Default-2436h.png" width="1125" />
<splash height="1125" src="resources/ios/splash/Default-Landscape-2436h.png" width="2436" />
</platform> </platform>
<preference name="orientation" value="portrait" /> <preference name="orientation" value="portrait" />
<preference name="webviewbounce" value="false" /> <preference name="webviewbounce" value="false" />
......
...@@ -1323,9 +1323,9 @@ ...@@ -1323,9 +1323,9 @@
} }
}, },
"@mauron85/cordova-plugin-background-geolocation": { "@mauron85/cordova-plugin-background-geolocation": {
"version": "3.0.3", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/@mauron85/cordova-plugin-background-geolocation/-/cordova-plugin-background-geolocation-3.0.3.tgz", "resolved": "https://registry.npmjs.org/@mauron85/cordova-plugin-background-geolocation/-/cordova-plugin-background-geolocation-3.1.0.tgz",
"integrity": "sha512-Y5P8Z4ldM9Xa02qOqGvaLWKaryx5vp3J4RYgQmmiTb+EM/naNL5ljQyJYRx7VJbSZdNIFua7I/vG+b7oeu/DRw==" "integrity": "sha512-ZZDwkO5m0Bbi8VDJsO3ssBgXrgCiu43/kOBvSneh5djIFyRrQZJbj6IMNt/hP7F/m7Pmw0x7F5ASXjPMwjEAjg=="
}, },
"@ngtools/webpack": { "@ngtools/webpack": {
"version": "7.3.9", "version": "7.3.9",
...@@ -1885,6 +1885,11 @@ ...@@ -1885,6 +1885,11 @@
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
"integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==" "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ=="
}, },
"array-ify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz",
"integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4="
},
"array-union": { "array-union": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
...@@ -2878,6 +2883,15 @@ ...@@ -2878,6 +2883,15 @@
"resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
"integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs="
}, },
"compare-func": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/compare-func/-/compare-func-1.3.2.tgz",
"integrity": "sha1-md0LpFfh+bxyKxLAjsM+6rMfpkg=",
"requires": {
"array-ify": "^1.0.0",
"dot-prop": "^3.0.0"
}
},
"compare-versions": { "compare-versions": {
"version": "3.5.0", "version": "3.5.0",
"resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.0.tgz", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.0.tgz",
...@@ -3035,16 +3049,16 @@ ...@@ -3035,16 +3049,16 @@
} }
}, },
"cordova-android": { "cordova-android": {
"version": "8.0.0", "version": "8.1.0",
"resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-8.0.0.tgz", "resolved": "https://registry.npmjs.org/cordova-android/-/cordova-android-8.1.0.tgz",
"integrity": "sha512-Ipv8HbVJpxEyYFSFLTEOaLRp0yxBtJVNbgSuDEB4naa34FzQaRWSNiiMcPJnO+x3hRXNt7pcwa46hARNzhn7+w==", "integrity": "sha512-eAY6g9q3raJ4P03wNdSWC5MOW1EfxoomWNXsPhi7T6Q9yAqmxqn0sLEUjLL1Ib0LCH3nKQWBXdxapQ5LgbHu+g==",
"requires": { "requires": {
"android-versions": "^1.3.0", "android-versions": "^1.4.0",
"cordova-common": "^3.1.0", "compare-func": "^1.3.2",
"elementtree": "^0.1.7", "cordova-common": "^3.2.0",
"nopt": "^4.0.1", "nopt": "^4.0.1",
"properties-parser": "^0.3.1", "properties-parser": "^0.3.1",
"q": "^1.4.1", "q": "^1.5.1",
"shelljs": "^0.5.3" "shelljs": "^0.5.3"
}, },
"dependencies": { "dependencies": {
...@@ -3057,6 +3071,11 @@ ...@@ -3057,6 +3071,11 @@
"osenv": "^0.1.4" "osenv": "^0.1.4"
} }
}, },
"q": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
"integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc="
},
"shelljs": { "shelljs": {
"version": "0.5.3", "version": "0.5.3",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.5.3.tgz",
...@@ -3632,6 +3651,14 @@ ...@@ -3632,6 +3651,14 @@
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
"integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA=="
}, },
"dot-prop": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-3.0.0.tgz",
"integrity": "sha1-G3CK8JSknJoOfbyteQq6U52sEXc=",
"requires": {
"is-obj": "^1.0.0"
}
},
"duplexify": { "duplexify": {
"version": "3.7.1", "version": "3.7.1",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
...@@ -6240,6 +6267,11 @@ ...@@ -6240,6 +6267,11 @@
} }
} }
}, },
"is-obj": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
"integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8="
},
"is-path-cwd": { "is-path-cwd": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz",
......
...@@ -34,8 +34,7 @@ ...@@ -34,8 +34,7 @@
"@ionic-native/status-bar": "^5.0.0", "@ionic-native/status-bar": "^5.0.0",
"@ionic/angular": "^4.1.0", "@ionic/angular": "^4.1.0",
"@ionic/storage": "^2.2.0", "@ionic/storage": "^2.2.0",
"@mauron85/cordova-plugin-background-geolocation": "^3.0.3", "cordova-android": "^8.1.0",
"cordova-android": "^8.0.0",
"cordova-plugin-advanced-http": "^2.1.1", "cordova-plugin-advanced-http": "^2.1.1",
"cordova-plugin-app-version": "^0.1.9", "cordova-plugin-app-version": "^0.1.9",
"cordova-plugin-background-mode": "git+https://github.com/sercatven/cordova-plugin-background-mode.git", "cordova-plugin-background-mode": "git+https://github.com/sercatven/cordova-plugin-background-mode.git",
...@@ -106,16 +105,6 @@ ...@@ -106,16 +105,6 @@
}, },
"cordova-plugin-request-location-accuracy": {}, "cordova-plugin-request-location-accuracy": {},
"cordova-plugin-local-notification": {}, "cordova-plugin-local-notification": {},
"cordova-plugin-mauron85-background-geolocation": {
"GOOGLE_PLAY_SERVICES_VERSION": "11+",
"ANDROID_SUPPORT_LIBRARY_VERSION": "26+",
"ICON": "@mipmap/ic_launcher",
"SMALL_ICON": "@mipmap/ic_launcher",
"ACCOUNT_NAME": "@string/app_name",
"ACCOUNT_LABEL": "@string/app_name",
"ACCOUNT_TYPE": "$PACKAGE_NAME.account",
"CONTENT_AUTHORITY": "$PACKAGE_NAME"
},
"cordova-plugin-whitelist": {}, "cordova-plugin-whitelist": {},
"cordova-plugin-statusbar": {}, "cordova-plugin-statusbar": {},
"cordova-plugin-device": {}, "cordova-plugin-device": {},
...@@ -123,16 +112,6 @@ ...@@ -123,16 +112,6 @@
"cordova-plugin-ionic-webview": {}, "cordova-plugin-ionic-webview": {},
"cordova-plugin-ionic-keyboard": {}, "cordova-plugin-ionic-keyboard": {},
"cordova-plugin-background-mode": {}, "cordova-plugin-background-mode": {},
"@mauron85/cordova-plugin-background-geolocation": {
"GOOGLE_PLAY_SERVICES_VERSION": "11+",
"ANDROID_SUPPORT_LIBRARY_VERSION": "26+",
"ICON": "@mipmap/ic_launcher",
"SMALL_ICON": "@mipmap/ic_launcher",
"ACCOUNT_NAME": "@string/app_name",
"ACCOUNT_LABEL": "@string/app_name",
"ACCOUNT_TYPE": "$PACKAGE_NAME.account",
"CONTENT_AUTHORITY": "$PACKAGE_NAME"
},
"cordova-plugin-app-version": {}, "cordova-plugin-app-version": {},
"cordova-plugin-file": {}, "cordova-plugin-file": {},
"cordova-plugin-googleplus": { "cordova-plugin-googleplus": {
......
resources/ios/icon/icon-1024.png

59.4 KB | W: | H:

resources/ios/icon/icon-1024.png

47.6 KB | W: | H:

resources/ios/icon/icon-1024.png
resources/ios/icon/icon-1024.png
resources/ios/icon/icon-1024.png
resources/ios/icon/icon-1024.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-40.png

1.22 KB | W: | H:

resources/ios/icon/icon-40.png

2.32 KB | W: | H:

resources/ios/icon/icon-40.png
resources/ios/icon/icon-40.png
resources/ios/icon/icon-40.png
resources/ios/icon/icon-40.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-40@2x.png

3.48 KB | W: | H:

resources/ios/icon/icon-40@2x.png

5.03 KB | W: | H:

resources/ios/icon/icon-40@2x.png
resources/ios/icon/icon-40@2x.png
resources/ios/icon/icon-40@2x.png
resources/ios/icon/icon-40@2x.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-40@3x.png

10.5 KB | W: | H:

resources/ios/icon/icon-40@3x.png

7.8 KB | W: | H:

resources/ios/icon/icon-40@3x.png
resources/ios/icon/icon-40@3x.png
resources/ios/icon/icon-40@3x.png
resources/ios/icon/icon-40@3x.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-50.png

1.86 KB | W: | H:

resources/ios/icon/icon-50.png

3.04 KB | W: | H:

resources/ios/icon/icon-50.png
resources/ios/icon/icon-50.png
resources/ios/icon/icon-50.png
resources/ios/icon/icon-50.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-50@2x.png

4.58 KB | W: | H:

resources/ios/icon/icon-50@2x.png

6.37 KB | W: | H:

resources/ios/icon/icon-50@2x.png
resources/ios/icon/icon-50@2x.png
resources/ios/icon/icon-50@2x.png
resources/ios/icon/icon-50@2x.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-60.png

2.39 KB | W: | H:

resources/ios/icon/icon-60.png

3.75 KB | W: | H:

resources/ios/icon/icon-60.png
resources/ios/icon/icon-60.png
resources/ios/icon/icon-60.png
resources/ios/icon/icon-60.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-60@2x.png

5.9 KB | W: | H:

resources/ios/icon/icon-60@2x.png

7.8 KB | W: | H:

resources/ios/icon/icon-60@2x.png
resources/ios/icon/icon-60@2x.png
resources/ios/icon/icon-60@2x.png
resources/ios/icon/icon-60@2x.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-60@3x.png

10.6 KB | W: | H:

resources/ios/icon/icon-60@3x.png

11.6 KB | W: | H:

resources/ios/icon/icon-60@3x.png
resources/ios/icon/icon-60@3x.png
resources/ios/icon/icon-60@3x.png
resources/ios/icon/icon-60@3x.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-72.png

2.8 KB | W: | H:

resources/ios/icon/icon-72.png

4.58 KB | W: | H:

resources/ios/icon/icon-72.png
resources/ios/icon/icon-72.png
resources/ios/icon/icon-72.png
resources/ios/icon/icon-72.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-72@2x.png

7.61 KB | W: | H:

resources/ios/icon/icon-72@2x.png

9.3 KB | W: | H:

resources/ios/icon/icon-72@2x.png
resources/ios/icon/icon-72@2x.png
resources/ios/icon/icon-72@2x.png
resources/ios/icon/icon-72@2x.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-76.png

3.24 KB | W: | H:

resources/ios/icon/icon-76.png

4.82 KB | W: | H:

resources/ios/icon/icon-76.png
resources/ios/icon/icon-76.png
resources/ios/icon/icon-76.png
resources/ios/icon/icon-76.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-76@2x.png

8.11 KB | W: | H:

resources/ios/icon/icon-76@2x.png

9.87 KB | W: | H:

resources/ios/icon/icon-76@2x.png
resources/ios/icon/icon-76@2x.png
resources/ios/icon/icon-76@2x.png
resources/ios/icon/icon-76@2x.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-83.5@2x.png

16 KB | W: | H:

resources/ios/icon/icon-83.5@2x.png

10.7 KB | W: | H:

resources/ios/icon/icon-83.5@2x.png
resources/ios/icon/icon-83.5@2x.png
resources/ios/icon/icon-83.5@2x.png
resources/ios/icon/icon-83.5@2x.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-small.png

818 Bytes | W: | H:

resources/ios/icon/icon-small.png

1.56 KB | W: | H:

resources/ios/icon/icon-small.png
resources/ios/icon/icon-small.png
resources/ios/icon/icon-small.png
resources/ios/icon/icon-small.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-small@2x.png

2.23 KB | W: | H:

resources/ios/icon/icon-small@2x.png

3.58 KB | W: | H:

resources/ios/icon/icon-small@2x.png
resources/ios/icon/icon-small@2x.png
resources/ios/icon/icon-small@2x.png
resources/ios/icon/icon-small@2x.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon-small@3x.png

3.77 KB | W: | H:

resources/ios/icon/icon-small@3x.png

5.53 KB | W: | H:

resources/ios/icon/icon-small@3x.png
resources/ios/icon/icon-small@3x.png
resources/ios/icon/icon-small@3x.png
resources/ios/icon/icon-small@3x.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon.png

2.06 KB | W: | H:

resources/ios/icon/icon.png

3.53 KB | W: | H:

resources/ios/icon/icon.png
resources/ios/icon/icon.png
resources/ios/icon/icon.png
resources/ios/icon/icon.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/icon/icon@2x.png

5.58 KB | W: | H:

resources/ios/icon/icon@2x.png

7.36 KB | W: | H:

resources/ios/icon/icon@2x.png
resources/ios/icon/icon@2x.png
resources/ios/icon/icon@2x.png
resources/ios/icon/icon@2x.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/splash/Default-667h.png

39.5 KB | W: | H:

resources/ios/splash/Default-667h.png

204 KB | W: | H:

resources/ios/splash/Default-667h.png
resources/ios/splash/Default-667h.png
resources/ios/splash/Default-667h.png
resources/ios/splash/Default-667h.png
  • 2-up
  • Swipe
  • Onion skin
resources/ios/splash/Default~iphone.png

7.04 KB | W: | H:

resources/ios/splash/Default~iphone.png

23.1 KB | W: | H:

resources/ios/splash/Default~iphone.png
resources/ios/splash/Default~iphone.png
resources/ios/splash/Default~iphone.png
resources/ios/splash/Default~iphone.png
  • 2-up
  • Swipe
  • Onion skin
...@@ -96,6 +96,11 @@ export class AppComponent { ...@@ -96,6 +96,11 @@ export class AppComponent {
}); });
} }
}); });
this._STOR.get('WISHLIST').then((val) => {
if (val === null) {
this._STOR.set('WISHLIST', []);
}
});
} }
setLocator() { setLocator() {
......
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 { FavorisPage } from './favoris.page';
const routes: Routes = [
{
path: '',
component: FavorisPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [FavorisPage]
})
export class FavorisPageModule {}
<ion-header>
<ion-toolbar color="primary">
<ion-buttons slot="start">
<ion-menu-button> </ion-menu-button>
</ion-buttons>
<ion-title>Favoris </ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
<ion-card [hidden]="_TRIP.wishedProducts.length" padding>
<h1 class="ion-text-center">
<ion-icon name="heart-half" color="danger"></ion-icon>
</h1>
<ion-text>
<h3 class="ion-text-center">Votre liste de favoris est vide.</h3>
</ion-text>
</ion-card>
<ion-list>
<ion-item-sliding *ngFor="let offer of _TRIP.wishedProducts">
<ion-item>
<ion-thumbnail slot="start">
<ion-img [src]="offer.thumb"></ion-img>
</ion-thumbnail>
<ion-label>
<h2>{{offer.name}}</h2>
<ion-text color="primary">
<h3>
<ion-icon name="pin"></ion-icon>
{{offer.location}}
</h3>
</ion-text>
<p>{{offer.description}}</p>
</ion-label>
</ion-item>
<ion-item-options side="end">
<ion-item-option color="success" (click)="_TRIP.viewDetail(offer.id)">
<ion-icon name="eye"></ion-icon>
Voir
</ion-item-option>
<ion-item-option (click)="_TRIP.wishList(offer, 'remove')">
<ion-icon name="trash"></ion-icon>
Supprimer
</ion-item-option>
<!-- <ion-item-option color="danger" (click)="share(item)">Share</ion-item-option> -->
</ion-item-options>
</ion-item-sliding>
</ion-list>
</ion-content>
\ No newline at end of file
h1 {
ion-icon {
font-size: 40vw !important;
}
}
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { FavorisPage } from './favoris.page';
describe('FavorisPage', () => {
let component: FavorisPage;
let fixture: ComponentFixture<FavorisPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ FavorisPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(FavorisPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { TripService } from '../../../services/trip-service';
@Component({
selector: 'app-favoris',
templateUrl: './favoris.page.html',
styleUrls: ['./favoris.page.scss'],
})
export class FavorisPage implements OnInit {
constructor(
public _TRIP: TripService
) { console.log(this._TRIP.wishedProducts) }
ngOnInit() {
}
}
...@@ -52,9 +52,14 @@ ...@@ -52,9 +52,14 @@
</ion-card> </ion-card>
</div> </div>
<div class="card-wrapper" *ngFor="let trip of _TRIP.offersCardList"> <div class="card-wrapper" *ngFor="let trip of _TRIP.offersCardList">
<ion-button color="light" fill="solid" class="bookmark" no-padding> <ion-button color="light" fill="solid" class="bookmark" (click)="_TRIP.wishList(trip, 'add')"
*ngIf="!trip.bookmarked" no-padding>
<ion-icon name="heart-empty"></ion-icon> <ion-icon name="heart-empty"></ion-icon>
</ion-button> </ion-button>
<ion-button color="light" fill="solid" class="bookmark" (click)="_TRIP.wishList(trip, 'remove')"
*ngIf="trip.bookmarked" no-padding>
<ion-icon name="heart" color="danger"></ion-icon>
</ion-button>
<ion-card (click)="viewDetail(trip.id)" tappable no-margin margin-bottom> <ion-card (click)="viewDetail(trip.id)" tappable no-margin margin-bottom>
<div class="img-spinner-wrap ion-text-center"> <div class="img-spinner-wrap ion-text-center">
<ion-spinner name="dots" *ngIf="trip.hidden"></ion-spinner> <ion-spinner name="dots" *ngIf="trip.hidden"></ion-spinner>
......
...@@ -131,6 +131,9 @@ ul { ...@@ -131,6 +131,9 @@ ul {
ion-icon { ion-icon {
font-size: 24px; font-size: 24px;
margin: 6px; margin: 6px;
&.ios{
margin: 6px 11px !important;
}
} }
} }
} }
...@@ -70,4 +70,10 @@ export class OffresCartePage implements OnInit { ...@@ -70,4 +70,10 @@ export class OffresCartePage implements OnInit {
this.router.navigateByUrl('/app/details-offre/' + id); this.router.navigateByUrl('/app/details-offre/' + id);
} }
wishList(offer, action) {
this._TRIP.wishList(offer, action).then(result => {
offer = result;
});
}
} }
...@@ -3,6 +3,7 @@ import { HTTP } from '@ionic-native/http/ngx'; ...@@ -3,6 +3,7 @@ import { HTTP } from '@ionic-native/http/ngx';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { Platform } from '@ionic/angular'; import { Platform } from '@ionic/angular';
import { Storage } from '@ionic/storage'; import { Storage } from '@ionic/storage';
import { Router } from '@angular/router';
import { AlloService } from './allo-service'; import { AlloService } from './allo-service';
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
...@@ -11,6 +12,7 @@ export class TripService { ...@@ -11,6 +12,7 @@ export class TripService {
public filtredProducts: Array<any> = []; public filtredProducts: Array<any> = [];
public offersCardList: Array<any>; public offersCardList: Array<any>;
public offersCardListPointer = 1; public offersCardListPointer = 1;
public wishedProducts: Array<any> = [];
public brands: Array<any> = []; public brands: Array<any> = [];
public cats: Array<any> = []; public cats: Array<any> = [];
public request: any; public request: any;
...@@ -20,6 +22,7 @@ export class TripService { ...@@ -20,6 +22,7 @@ export class TripService {
private http: HttpClient, private http: HttpClient,
private httpAdv: HTTP, private httpAdv: HTTP,
private storage: Storage, private storage: Storage,
private router: Router,
private _ALLO: AlloService private _ALLO: AlloService
) { ) {
this.fetchData(); this.fetchData();
...@@ -52,7 +55,16 @@ export class TripService { ...@@ -52,7 +55,16 @@ export class TripService {
var products = this._ALLO.jsonToArray(data.products); var products = this._ALLO.jsonToArray(data.products);
this.products = this._ALLO.shuffleArray(products); this.products = this._ALLO.shuffleArray(products);
this.products.forEach((element) => { element.hidden = true; }); this.storage.get('WISHLIST').then(wishList => {
this.products.forEach((element) => {
element.hidden = true;
element.bookmarked = false;
if (wishList.indexOf(element.id) > -1) {
element.bookmarked = true;
this.wishedProducts.push(element);
}
});
});
setTimeout(() => { setTimeout(() => {
this.filtredProducts = this.products; this.filtredProducts = this.products;
this.offersCardList = this.filtredProducts.slice(0, 2); this.offersCardList = this.filtredProducts.slice(0, 2);
...@@ -111,4 +123,44 @@ export class TripService { ...@@ -111,4 +123,44 @@ export class TripService {
this.offersCardList = this.filtredProducts.slice(0, 2); this.offersCardList = this.filtredProducts.slice(0, 2);
this.offersCardListPointer = 1; this.offersCardListPointer = 1;
} }
viewDetail(id) {
this.router.navigateByUrl('/app/details-offre/' + id);
}
wishList(offer, action) {
return new Promise<any>((resolve, reject) => {
this.storage.get('WISHLIST').then(
wishList => {
if (wishList) {
switch (action) {
case 'add':
wishList.push(offer.id);
this.wishedProducts.push(offer);
wishList = Array.from(new Set(wishList));
offer.bookmarked = true;
break;
case 'remove':
if (wishList.indexOf(offer.id) > -1) {
wishList.splice(wishList.indexOf(offer.id), 1);
this.wishedProducts = this.wishedProducts.filter(item => {
return item.id !== offer.id;
});
}
offer.bookmarked = false;
break;
}
this.storage.set('WISHLIST', wishList).then(res => {
resolve(offer);
},
err => reject(err)
);
} else {
resolve(wishList);
}
},
err => reject(err)
);
});
}
} }
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