Commit b8d5a268 by kevin

29/11/2019

parent 321ee0b9
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<widget id="io.ionic.starter" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <widget id="com.techware.kevin.allorepo" version="0.0.2" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>MyApp</name> <name>Allorepo</name>
<description>An awesome Ionic/Cordova app.</description> <description>Mechanic App</description>
<author email="[email protected]" href="http://ionicframework.com/">Ionic Framework Team</author> <author email="[email protected]" href="http://ionicframework.com/">Ionic Framework Team</author>
<content src="index.html" /> <content src="index.html" />
<access origin="*" /> <access origin="*" />
...@@ -18,7 +18,8 @@ ...@@ -18,7 +18,8 @@
<preference name="FadeSplashScreenDuration" value="300" /> <preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" /> <preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" /> <preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" /> <preference name="SplashScreenDelay" value="1000" />
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<platform name="android"> <platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android"> <edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:networkSecurityConfig="@xml/network_security_config" /> <application android:networkSecurityConfig="@xml/network_security_config" />
......
...@@ -4,6 +4,14 @@ ...@@ -4,6 +4,14 @@
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
"@agm/core": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@agm/core/-/core-1.0.0.tgz",
"integrity": "sha512-tgrobTyAHCZ3cdi21IdiBafiHLxsC5/6ncq6+f9RV+HrLg0XDuk+DA7upfdE34o2Ui3fNRDYDIgExRVFLsSPCw==",
"requires": {
"tslib": "^1.9.0"
}
},
"@angular-devkit/architect": { "@angular-devkit/architect": {
"version": "0.13.9", "version": "0.13.9",
"resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.13.9.tgz", "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.13.9.tgz",
...@@ -474,6 +482,11 @@ ...@@ -474,6 +482,11 @@
"tslib": "^1.9.0" "tslib": "^1.9.0"
} }
}, },
"@angular/fire": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/@angular/fire/-/fire-5.2.1.tgz",
"integrity": "sha512-pS4zWhLLANzMbYVIKNtebDQKhm9+KANUDvDV6DwKP24XHzkZdvazKe1HC6uXWlf7QmDxSPFleCSBkn0tnQQzdQ=="
},
"@angular/forms": { "@angular/forms": {
"version": "7.2.15", "version": "7.2.15",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.2.15.tgz", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.2.15.tgz",
...@@ -680,6 +693,248 @@ ...@@ -680,6 +693,248 @@
} }
} }
}, },
"@firebase/analytics": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/@firebase/analytics/-/analytics-0.2.3.tgz",
"integrity": "sha512-dOyi9los/Urc/eIj3gi76jRA+wkLcR8VoFWMODeqfK0GszkgAajMGs39xmQS84pqeUqFhdQHMlqbghkYPLQaRA==",
"requires": {
"@firebase/analytics-types": "0.2.2",
"@firebase/installations": "0.3.2",
"@firebase/util": "0.2.31",
"tslib": "1.10.0"
}
},
"@firebase/analytics-types": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/@firebase/analytics-types/-/analytics-types-0.2.2.tgz",
"integrity": "sha512-5qLwkztNdRiLMQCsxmol1FxfGddb9xpensM2y++3rv1e0L4yI+MRR9SHSC00i847tGZDrMt2u67Dyko/xmrgCA=="
},
"@firebase/app": {
"version": "0.4.21",
"resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.4.21.tgz",
"integrity": "sha512-AAZJKnIrWdZrRIv03+TXw8vRxCJkMA3a25FDBtT3TI5MWGrsdTFeNOQmX+N3HAjY+8RFB4Hzg/j0fbeVDoUPmg==",
"requires": {
"@firebase/app-types": "0.4.6",
"@firebase/logger": "0.1.28",
"@firebase/util": "0.2.31",
"dom-storage": "2.1.0",
"tslib": "1.10.0",
"xmlhttprequest": "1.8.0"
}
},
"@firebase/app-types": {
"version": "0.4.6",
"resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.4.6.tgz",
"integrity": "sha512-LLh4vnuyhmYfT00fByo8rR4NAjQH7Yj63gUpT18DRYPVvwbVmrCbzOHJw3rQnfJPpbSkMXfnEY/pzbohvj8DuA=="
},
"@firebase/auth": {
"version": "0.12.3",
"resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.12.3.tgz",
"integrity": "sha512-w4bDznykC4rJIq/Zk8AxB+tpTi5/HT+ti0yLyoyPihLRulWVz4HVB9zghQfeyqMPoBGH1YtwaiZWG7Kk9Tyo8Q==",
"requires": {
"@firebase/auth-types": "0.8.2"
}
},
"@firebase/auth-types": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.8.2.tgz",
"integrity": "sha512-qcP7wZ76CIb7IN+K544GomA42cCS36KZmQ3n9Ou1JsYplEaMo52x4UuQTZFqlRoMaUWi61oQ9jiuE5tOAMJwDA=="
},
"@firebase/database": {
"version": "0.5.9",
"resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.5.9.tgz",
"integrity": "sha512-Vzj4mtk/QnUxWze7Cqs0kqOWBmjTUJncEjU8zTpJLSBVjtLBPt/MNV+9RY2gk9Mc5fXmsKAbqY8tfpQA/tKnAg==",
"requires": {
"@firebase/database-types": "0.4.6",
"@firebase/logger": "0.1.28",
"@firebase/util": "0.2.31",
"faye-websocket": "0.11.3",
"tslib": "1.10.0"
},
"dependencies": {
"faye-websocket": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
"integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
"requires": {
"websocket-driver": ">=0.5.1"
}
}
}
},
"@firebase/database-types": {
"version": "0.4.6",
"resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.4.6.tgz",
"integrity": "sha512-7D55FCSLJRrTcMTm25NDevwSMU0mNgr+ylqkE4zq68MV3xQ6J3z1kxzQ90DCU7MxrpaKqexMWRihQZ+oU0bULw==",
"requires": {
"@firebase/app-types": "0.4.6"
}
},
"@firebase/firestore": {
"version": "1.6.3",
"resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.6.3.tgz",
"integrity": "sha512-JvAo2tVqPBF32+wdquYkwg/bkoAGeGlxfTg2WwS+uf8OVSrxlk6tWjZqQeYmHJ3BAaRoddDzsefbHaYUOXoCvQ==",
"requires": {
"@firebase/firestore-types": "1.6.2",
"@firebase/logger": "0.1.28",
"@firebase/util": "0.2.31",
"@firebase/webchannel-wrapper": "0.2.29",
"@grpc/proto-loader": "^0.5.0",
"grpc": "1.24.1",
"tslib": "1.10.0"
}
},
"@firebase/firestore-types": {
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.6.2.tgz",
"integrity": "sha512-GsBlAqNft1pwEWNKnQWwwqzLoyfUSC3bSb1e7yxu5+NKaJO+uUD48KrZUTDu94pgPLkJslj8SLkl9FVjNJa8Xw=="
},
"@firebase/functions": {
"version": "0.4.22",
"resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.4.22.tgz",
"integrity": "sha512-c1XbGZDh7GG6mTqLhkg13GFLrjdBkP3DTWYfJCt7zm0XvEemaum3NGc2pBmd6zzfoMUCfXOGAU8uHmgTc0FvEw==",
"requires": {
"@firebase/functions-types": "0.3.10",
"@firebase/messaging-types": "0.3.4",
"isomorphic-fetch": "2.2.1",
"tslib": "1.10.0"
}
},
"@firebase/functions-types": {
"version": "0.3.10",
"resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.10.tgz",
"integrity": "sha512-QDh7HOxfUzLxj49szekgXxdkXz6ZwwK/63DKeDbRYMKzxo17I01+2GVisdBmUW5NkllVLgVvtOfqKbbEfndqdw=="
},
"@firebase/installations": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.3.2.tgz",
"integrity": "sha512-5DpaorndyVhYMCQvhCyWQIDP2uQyspUaKjPfamORStWP5FedDVvYdQxI3m++8i/bOO1Usg2povYuZwCiQh1HsQ==",
"requires": {
"@firebase/installations-types": "0.2.1",
"@firebase/util": "0.2.31",
"idb": "3.0.2",
"tslib": "1.10.0"
}
},
"@firebase/installations-types": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.2.1.tgz",
"integrity": "sha512-647hwBhMKOjoLndCyi9XmT1wnrRc2T8aGIAoZBqy7rxFqu3c9jZRk3THfufLy1xvAJC3qqYavETrRYF3VigM7Q=="
},
"@firebase/logger": {
"version": "0.1.28",
"resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.1.28.tgz",
"integrity": "sha512-bzCJ6v5JrgQdut+3R+t6hVU7O3QnV15ay+HA9ejATZqQfMtwewDAYendNRmSZBjoR8BcrVO490L4vVhPQJRJNw=="
},
"@firebase/messaging": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.5.3.tgz",
"integrity": "sha512-ivFckScGF/BJXSARr4/8LZHOqSsCw1Lv+pTK4HzzRqq6TamrZtRf79NsMUKU9AxbjRk1xV59Wu2m9FVYcgg17w==",
"requires": {
"@firebase/installations": "0.3.2",
"@firebase/messaging-types": "0.3.4",
"@firebase/util": "0.2.31",
"tslib": "1.10.0"
}
},
"@firebase/messaging-types": {
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.3.4.tgz",
"integrity": "sha512-ytOzB08u8Z15clbq9cAjhFzUs4WRy13A7gRphjnf5rQ+gsrqb4mpcsGIp0KeOcu7MjcN9fqjO5nbVaw0t2KJpQ=="
},
"@firebase/performance": {
"version": "0.2.22",
"resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.2.22.tgz",
"integrity": "sha512-j5Ts5HLoHDvCHi2pcvF6rfY1ElyG2me3j/5vcplWctvj4DKVKwrNyd89Etmd7DyEYip/hm8TR8CJ/API6VlQrA==",
"requires": {
"@firebase/installations": "0.3.2",
"@firebase/logger": "0.1.28",
"@firebase/performance-types": "0.0.5",
"@firebase/util": "0.2.31",
"tslib": "1.10.0"
}
},
"@firebase/performance-types": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.5.tgz",
"integrity": "sha512-7BOQ2sZZzaIvxscgan/uP8GcH2FZXzqGcQnXvUZBXfXignAM80hJ7UOjVRETa4UjtDehWcD/pZDDivupKtKUyg=="
},
"@firebase/polyfill": {
"version": "0.3.26",
"resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.26.tgz",
"integrity": "sha512-x3dyOQG7E0Pfaw0UuevXBOsjX/etTwCVMbEXPtzLKsaV7woB/6aep2iz16YC7s5vgShUGkwrQwvP+S6rcnu1Fw==",
"requires": {
"core-js": "3.3.3",
"promise-polyfill": "8.1.3",
"whatwg-fetch": "2.0.4"
},
"dependencies": {
"core-js": {
"version": "3.3.3",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.3.3.tgz",
"integrity": "sha512-0xmD4vUJRY8nfLyV9zcpC17FtSie5STXzw+HyYw2t8IIvmDnbq7RJUULECCo+NstpJtwK9kx8S+898iyqgeUow=="
},
"whatwg-fetch": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
"integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
}
}
},
"@firebase/remote-config": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@firebase/remote-config/-/remote-config-0.1.3.tgz",
"integrity": "sha512-KNNSWW2j7kQkTNo1AETORKS2Bqh5merlUBtSgdeiZkwlz50MJ7xi837H8U017Bzn0tYyAHbseMz/yZG2M8E5OA==",
"requires": {
"@firebase/installations": "0.3.2",
"@firebase/logger": "0.1.28",
"@firebase/remote-config-types": "0.1.2",
"@firebase/util": "0.2.31",
"tslib": "1.10.0"
}
},
"@firebase/remote-config-types": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@firebase/remote-config-types/-/remote-config-types-0.1.2.tgz",
"integrity": "sha512-V1LutCn9fHC5ckkjJFGGB7z72xdg50RVaCkR80x4iJXqac0IpbEr1/k29HSPKiAlf+aIYyj6gFzl7gn4ZzsUcA=="
},
"@firebase/storage": {
"version": "0.3.16",
"resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.16.tgz",
"integrity": "sha512-1hDes0lLT3XK/Da+bFcPoxGJdc1ZAnS1Se0hvF98aS2oI+1vy9GoEjPlOePAi+9W7phJCH6gVdatdPZXvryqDg==",
"requires": {
"@firebase/storage-types": "0.3.5",
"@firebase/util": "0.2.31",
"tslib": "1.10.0"
}
},
"@firebase/storage-types": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.5.tgz",
"integrity": "sha512-rbG6ge3xmte0nUt0asMToPqmNRU4tCJuu73Uy0UJV4uMBQA7e27EXbPza3nBpeOrgASBV9eWPD5AzecjBvTyzQ=="
},
"@firebase/util": {
"version": "0.2.31",
"resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.31.tgz",
"integrity": "sha512-Iv+M2oluKHgDux5PqKFy8VtujO/1gOURmWKVLXyVLnrZKAFrU6etdBeWA1n+eXLnGJzreQF1JD9k8caMDD7CoQ==",
"requires": {
"tslib": "1.10.0"
}
},
"@firebase/webchannel-wrapper": {
"version": "0.2.29",
"resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.29.tgz",
"integrity": "sha512-veAoFK0EdzeGcoje7ssiMxoU3WBXuEP+TUPEbd6mqVhBECcLDCQrBQNU3e2Z05BWQMoDLKkLI+cSvkAr+En7bA=="
},
"@grpc/proto-loader": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.2.tgz",
"integrity": "sha512-eBKD/FPxQoY1x6QONW2nBd54QUEyzcFP9FenujmoeDPy1rutVSHki1s/wR68F6O1QfCNDx+ayBH1O2CVNMzyyw==",
"requires": {
"lodash.camelcase": "^4.3.0",
"protobufjs": "^6.8.6"
}
},
"@ionic-native/call-number": { "@ionic-native/call-number": {
"version": "5.15.0", "version": "5.15.0",
"resolved": "https://registry.npmjs.org/@ionic-native/call-number/-/call-number-5.15.0.tgz", "resolved": "https://registry.npmjs.org/@ionic-native/call-number/-/call-number-5.15.0.tgz",
...@@ -703,6 +958,21 @@ ...@@ -703,6 +958,21 @@
"@types/cordova": "^0.0.34" "@types/cordova": "^0.0.34"
} }
}, },
"@ionic-native/file-transfer": {
"version": "5.15.1",
"resolved": "https://registry.npmjs.org/@ionic-native/file-transfer/-/file-transfer-5.15.1.tgz",
"integrity": "sha512-LPvEu+gHxn+cXkx8OWJX2A/bR97X0z39nR+X+gcpBkTm1T0CA4e41X8cXcF6fcyLriKNIxIlF1+vUGOQP03mvQ==",
"requires": {
"@types/cordova": "^0.0.34"
},
"dependencies": {
"@types/cordova": {
"version": "0.0.34",
"resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz",
"integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ="
}
}
},
"@ionic-native/geolocation": { "@ionic-native/geolocation": {
"version": "5.15.0", "version": "5.15.0",
"resolved": "https://registry.npmjs.org/@ionic-native/geolocation/-/geolocation-5.15.0.tgz", "resolved": "https://registry.npmjs.org/@ionic-native/geolocation/-/geolocation-5.15.0.tgz",
...@@ -718,6 +988,36 @@ ...@@ -718,6 +988,36 @@
} }
} }
}, },
"@ionic-native/image-picker": {
"version": "5.15.1",
"resolved": "https://registry.npmjs.org/@ionic-native/image-picker/-/image-picker-5.15.1.tgz",
"integrity": "sha512-JJy86oHVkIEc7fehcxkrIOaK4K+hrIhdahurVHetEjtHxiEPTyZGloH9qe/o4zf9xb+zI7KcKKDQ7w8QKBJDQw==",
"requires": {
"@types/cordova": "^0.0.34"
},
"dependencies": {
"@types/cordova": {
"version": "0.0.34",
"resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz",
"integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ="
}
}
},
"@ionic-native/native-geocoder": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/@ionic-native/native-geocoder/-/native-geocoder-5.0.0.tgz",
"integrity": "sha512-bL9foHNMhRHGP0oiH9jVwVhSpuGXwUdGI6in3ZDOL7QMXOHOhogua4PCpPlHMkk6w7U8ZTITp6eu/4xcZ9pUQA==",
"requires": {
"@types/cordova": "^0.0.34"
},
"dependencies": {
"@types/cordova": {
"version": "0.0.34",
"resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz",
"integrity": "sha1-6nrd907Ow9dimCegw54smt3HPQQ="
}
}
},
"@ionic-native/splash-screen": { "@ionic-native/splash-screen": {
"version": "5.8.0", "version": "5.8.0",
"resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-5.8.0.tgz", "resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-5.8.0.tgz",
...@@ -810,6 +1110,76 @@ ...@@ -810,6 +1110,76 @@
} }
} }
}, },
"@ngx-translate/core": {
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-11.0.1.tgz",
"integrity": "sha512-nBCa1ZD9fAUY/3eskP3Lql2fNg8OMrYIej1/5GRsfcutx9tG/5fZLCv9m6UCw1aS+u4uK/vXjv1ctG/FdMvaWg==",
"requires": {
"tslib": "^1.9.0"
}
},
"@ngx-translate/http-loader": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@ngx-translate/http-loader/-/http-loader-4.0.0.tgz",
"integrity": "sha512-x8LumqydWD7eX9yQTAVeoCM9gFUIGVTUjZqbxdAUavAA3qVnk9wCQux7iHLPXpydl8vyQmLoPQR+fFU+DUDOMA==",
"requires": {
"tslib": "^1.9.0"
}
},
"@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
"integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
},
"@protobufjs/base64": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
"integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
},
"@protobufjs/codegen": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
"integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
},
"@protobufjs/eventemitter": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
"integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
},
"@protobufjs/fetch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
"integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
"requires": {
"@protobufjs/aspromise": "^1.1.1",
"@protobufjs/inquire": "^1.1.0"
}
},
"@protobufjs/float": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
"integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
},
"@protobufjs/inquire": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
"integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
},
"@protobufjs/path": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
"integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
},
"@protobufjs/pool": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
"integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
},
"@protobufjs/utf8": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
"integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
},
"@schematics/angular": { "@schematics/angular": {
"version": "7.3.9", "version": "7.3.9",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.3.9.tgz", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.3.9.tgz",
...@@ -856,6 +1226,15 @@ ...@@ -856,6 +1226,15 @@
} }
} }
}, },
"@types/bytebuffer": {
"version": "5.0.40",
"resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.40.tgz",
"integrity": "sha512-h48dyzZrPMz25K6Q4+NCwWaxwXany2FhQg/ErOcdZS1ZpsaDnDMZg8JYLMTGz7uvXKrcKGJUZJlZObyfgdaN9g==",
"requires": {
"@types/long": "*",
"@types/node": "*"
}
},
"@types/cordova": { "@types/cordova": {
"version": "0.0.34", "version": "0.0.34",
"resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz",
...@@ -884,11 +1263,15 @@ ...@@ -884,11 +1263,15 @@
"@types/sizzle": "*" "@types/sizzle": "*"
} }
}, },
"@types/long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz",
"integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q=="
},
"@types/node": { "@types/node": {
"version": "12.0.10", "version": "12.0.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.10.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.10.tgz",
"integrity": "sha512-LcsGbPomWsad6wmMNv7nBLw7YYYyfdYcz6xryKYQhx89c3XXan+8Q6AJ43G5XDIaklaVkK3mE4fCb0SBvMiPSQ==", "integrity": "sha512-LcsGbPomWsad6wmMNv7nBLw7YYYyfdYcz6xryKYQhx89c3XXan+8Q6AJ43G5XDIaklaVkK3mE4fCb0SBvMiPSQ=="
"dev": true
}, },
"@types/q": { "@types/q": {
"version": "0.0.32", "version": "0.0.32",
...@@ -1189,6 +1572,11 @@ ...@@ -1189,6 +1572,11 @@
"humanize-ms": "^1.2.1" "humanize-ms": "^1.2.1"
} }
}, },
"agm-direction": {
"version": "0.7.9",
"resolved": "https://registry.npmjs.org/agm-direction/-/agm-direction-0.7.9.tgz",
"integrity": "sha512-62W/no1HimT2rS3jjqjcduPZHhJwHLa9V7f0cAk2rcjvpC2f18+IEVsdMBJ+Kv/YsTDoyzP5d0HhknUubFfx1w=="
},
"ajv": { "ajv": {
"version": "6.9.1", "version": "6.9.1",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.9.1.tgz",
...@@ -1256,6 +1644,14 @@ ...@@ -1256,6 +1644,14 @@
"tslib": "^1.9.0" "tslib": "^1.9.0"
} }
}, },
"angularfire2": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/angularfire2/-/angularfire2-5.2.1.tgz",
"integrity": "sha512-5C0wtm5V1LLJD3TdWzzqa0PwUeM8OEQc+WIRVpD27XyDqAXEr/ejH09eKDwC74fUNF0I65+w1o01Mz0KHkrufQ==",
"requires": {
"@angular/fire": "5.2.1"
}
},
"animation-frame-polyfill": { "animation-frame-polyfill": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/animation-frame-polyfill/-/animation-frame-polyfill-1.0.1.tgz", "resolved": "https://registry.npmjs.org/animation-frame-polyfill/-/animation-frame-polyfill-1.0.1.tgz",
...@@ -1287,8 +1683,7 @@ ...@@ -1287,8 +1683,7 @@
"ansi-regex": { "ansi-regex": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
"dev": true
}, },
"ansi-styles": { "ansi-styles": {
"version": "3.2.1", "version": "3.2.1",
...@@ -1437,6 +1832,15 @@ ...@@ -1437,6 +1832,15 @@
"dev": true, "dev": true,
"optional": true "optional": true
}, },
"ascli": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz",
"integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=",
"requires": {
"colour": "~0.7.1",
"optjs": "~3.2.2"
}
},
"asn1": { "asn1": {
"version": "0.2.4", "version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
...@@ -2110,6 +2514,21 @@ ...@@ -2110,6 +2514,21 @@
"integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=",
"dev": true "dev": true
}, },
"bytebuffer": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz",
"integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=",
"requires": {
"long": "~3"
},
"dependencies": {
"long": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
"integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s="
}
}
},
"bytes": { "bytes": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
...@@ -2197,9 +2616,7 @@ ...@@ -2197,9 +2616,7 @@
"camelcase": { "camelcase": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz",
"integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8="
"dev": true,
"optional": true
}, },
"camelcase-keys": { "camelcase-keys": {
"version": "2.1.0", "version": "2.1.0",
...@@ -2369,7 +2786,6 @@ ...@@ -2369,7 +2786,6 @@
"version": "3.2.0", "version": "3.2.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz",
"integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=",
"dev": true,
"requires": { "requires": {
"string-width": "^1.0.1", "string-width": "^1.0.1",
"strip-ansi": "^3.0.1", "strip-ansi": "^3.0.1",
...@@ -2403,8 +2819,7 @@ ...@@ -2403,8 +2819,7 @@
"code-point-at": { "code-point-at": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
"integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
"dev": true
}, },
"codelyzer": { "codelyzer": {
"version": "4.5.0", "version": "4.5.0",
...@@ -2465,6 +2880,11 @@ ...@@ -2465,6 +2880,11 @@
"integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
"dev": true "dev": true
}, },
"colour": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz",
"integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g="
},
"combined-stream": { "combined-stream": {
"version": "1.0.8", "version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
...@@ -2750,9 +3170,9 @@ ...@@ -2750,9 +3170,9 @@
} }
}, },
"graceful-fs": { "graceful-fs": {
"version": "4.2.2", "version": "4.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
"integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==" "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
}, },
"strip-bom": { "strip-bom": {
"version": "3.0.0", "version": "3.0.0",
...@@ -2766,6 +3186,16 @@ ...@@ -2766,6 +3186,16 @@
"resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-2.0.2.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-device/-/cordova-plugin-device-2.0.2.tgz",
"integrity": "sha1-/Ajzci5n7ve2xnv8mag99q3Quro=" "integrity": "sha1-/Ajzci5n7ve2xnv8mag99q3Quro="
}, },
"cordova-plugin-file": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/cordova-plugin-file/-/cordova-plugin-file-6.0.2.tgz",
"integrity": "sha512-m7cughw327CjONN/qjzsTpSesLaeybksQh420/gRuSXJX5Zt9NfgsSbqqKDon6jnQ9Mm7h7imgyO2uJ34XMBtA=="
},
"cordova-plugin-file-transfer": {
"version": "1.7.1",
"resolved": "https://registry.npmjs.org/cordova-plugin-file-transfer/-/cordova-plugin-file-transfer-1.7.1.tgz",
"integrity": "sha1-p12L4uvDu5sjxbG70ZkhTsJnWGs="
},
"cordova-plugin-geolocation": { "cordova-plugin-geolocation": {
"version": "4.0.2", "version": "4.0.2",
"resolved": "https://registry.npmjs.org/cordova-plugin-geolocation/-/cordova-plugin-geolocation-4.0.2.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-geolocation/-/cordova-plugin-geolocation-4.0.2.tgz",
...@@ -2781,6 +3211,11 @@ ...@@ -2781,6 +3211,11 @@
"resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-4.1.1.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-ionic-webview/-/cordova-plugin-ionic-webview-4.1.1.tgz",
"integrity": "sha512-y8drBhMdkHKUr0zu+UGkFGsDrkCsxjbCd3RzzlyDxcEzdHWvasRM5gyDiKBHkziT2iHYzEAjXwkT1ZXKU3OY9Q==" "integrity": "sha512-y8drBhMdkHKUr0zu+UGkFGsDrkCsxjbCd3RzzlyDxcEzdHWvasRM5gyDiKBHkziT2iHYzEAjXwkT1ZXKU3OY9Q=="
}, },
"cordova-plugin-nativegeocoder": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/cordova-plugin-nativegeocoder/-/cordova-plugin-nativegeocoder-3.2.2.tgz",
"integrity": "sha512-3ZmfA01H6EYPsfUqv3DHPvWgn2yBVtqCbTe8CAMalT3qlFZBOUBdJemydSmgKNRhTgQvHSFc20jUJXiH67vt4w=="
},
"cordova-plugin-splashscreen": { "cordova-plugin-splashscreen": {
"version": "5.0.2", "version": "5.0.2",
"resolved": "https://registry.npmjs.org/cordova-plugin-splashscreen/-/cordova-plugin-splashscreen-5.0.2.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-splashscreen/-/cordova-plugin-splashscreen-5.0.2.tgz",
...@@ -2791,6 +3226,11 @@ ...@@ -2791,6 +3226,11 @@
"resolved": "https://registry.npmjs.org/cordova-plugin-statusbar/-/cordova-plugin-statusbar-2.4.2.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-statusbar/-/cordova-plugin-statusbar-2.4.2.tgz",
"integrity": "sha1-/B+9wNjXAzp+jh8ff/FnrJvU+vY=" "integrity": "sha1-/B+9wNjXAzp+jh8ff/FnrJvU+vY="
}, },
"cordova-plugin-telerik-imagepicker": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/cordova-plugin-telerik-imagepicker/-/cordova-plugin-telerik-imagepicker-2.3.3.tgz",
"integrity": "sha512-eL16EIxDueDo+dky5lNuzC+bDbKHPLPDfd/mtNpaCTNoT6iZqFd9/qJwSMnidXqCeExJZkN4ACsEHmtUA+vQ7Q=="
},
"cordova-plugin-whitelist": { "cordova-plugin-whitelist": {
"version": "1.3.3", "version": "1.3.3",
"resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.3.tgz", "resolved": "https://registry.npmjs.org/cordova-plugin-whitelist/-/cordova-plugin-whitelist-1.3.3.tgz",
...@@ -3003,8 +3443,7 @@ ...@@ -3003,8 +3443,7 @@
"decamelize": { "decamelize": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
"dev": true
}, },
"decode-uri-component": { "decode-uri-component": {
"version": "0.2.0", "version": "0.2.0",
...@@ -3301,6 +3740,11 @@ ...@@ -3301,6 +3740,11 @@
"iselement": "^1.1.4" "iselement": "^1.1.4"
} }
}, },
"dom-storage": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz",
"integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q=="
},
"domain-browser": { "domain-browser": {
"version": "1.2.0", "version": "1.2.0",
"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",
...@@ -3395,7 +3839,6 @@ ...@@ -3395,7 +3839,6 @@
"version": "0.1.12", "version": "0.1.12",
"resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
"integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=", "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
"dev": true,
"requires": { "requires": {
"iconv-lite": "~0.4.13" "iconv-lite": "~0.4.13"
} }
...@@ -3563,9 +4006,9 @@ ...@@ -3563,9 +4006,9 @@
} }
}, },
"es-abstract": { "es-abstract": {
"version": "1.15.0", "version": "1.16.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.15.0.tgz", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz",
"integrity": "sha512-bhkEqWJ2t2lMeaJDuk7okMkJWI/yqgH/EoGwpcvv0XW9RWQsRspI4wt6xuyuvMvvQE3gg/D9HXppgk21w78GyQ==", "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==",
"requires": { "requires": {
"es-to-primitive": "^1.2.0", "es-to-primitive": "^1.2.0",
"function-bind": "^1.1.1", "function-bind": "^1.1.1",
...@@ -4047,6 +4490,27 @@ ...@@ -4047,6 +4490,27 @@
"locate-path": "^2.0.0" "locate-path": "^2.0.0"
} }
}, },
"firebase": {
"version": "7.2.2",
"resolved": "https://registry.npmjs.org/firebase/-/firebase-7.2.2.tgz",
"integrity": "sha512-GFGpZBVF0yW1qNUjf64Y1IdY6E6rWV58S8hrXlCrb+ZqAxuFWtjxdqI2TcMOIpr3dpqX2uJKiSbe1eO5IDXKwg==",
"requires": {
"@firebase/analytics": "0.2.3",
"@firebase/app": "0.4.21",
"@firebase/app-types": "0.4.6",
"@firebase/auth": "0.12.3",
"@firebase/database": "0.5.9",
"@firebase/firestore": "1.6.3",
"@firebase/functions": "0.4.22",
"@firebase/installations": "0.3.2",
"@firebase/messaging": "0.5.3",
"@firebase/performance": "0.2.22",
"@firebase/polyfill": "0.3.26",
"@firebase/remote-config": "0.1.3",
"@firebase/storage": "0.3.16",
"@firebase/util": "0.2.31"
}
},
"flatted": { "flatted": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz",
...@@ -4658,28 +5122,629 @@ ...@@ -4658,28 +5122,629 @@
"optional": true "optional": true
}, },
"semver": { "semver": {
"version": "5.7.0", "version": "5.7.0",
"bundled": true, "bundled": true,
"dev": true, "dev": true,
"optional": true "optional": true
},
"set-blocking": {
"version": "2.0.0",
"bundled": true,
"dev": true,
"optional": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"string-width": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-json-comments": {
"version": "2.0.1",
"bundled": true,
"dev": true,
"optional": true
},
"tar": {
"version": "4.4.8",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.3.4",
"minizlib": "^1.1.1",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.2"
}
},
"util-deprecate": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"wide-align": {
"version": "1.1.3",
"bundled": true,
"dev": true,
"optional": true,
"requires": {
"string-width": "^1.0.2 || 2"
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true,
"dev": true,
"optional": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"dev": true,
"optional": true
}
}
},
"fstream": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"dev": true,
"optional": true,
"requires": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
"mkdirp": ">=0.5 0",
"rimraf": "2"
}
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"gauge": {
"version": "2.7.4",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"dev": true,
"optional": true,
"requires": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
}
},
"gaze": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
"integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"dev": true,
"optional": true,
"requires": {
"globule": "^1.0.0"
}
},
"genfun": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
"integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==",
"dev": true
},
"get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
"dev": true
},
"get-stdin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
"dev": true,
"optional": true
},
"get-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
"dev": true
},
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
"dev": true
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"glob-parent": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"requires": {
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
},
"dependencies": {
"is-glob": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"dev": true,
"requires": {
"is-extglob": "^2.1.0"
}
}
}
},
"globals": {
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
"dev": true
},
"globby": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
"integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
"dev": true,
"requires": {
"array-union": "^1.0.1",
"dir-glob": "^2.0.0",
"glob": "^7.1.2",
"ignore": "^3.3.5",
"pify": "^3.0.0",
"slash": "^1.0.0"
}
},
"globule": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
"integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
"dev": true,
"optional": true,
"requires": {
"glob": "~7.1.1",
"lodash": "~4.17.10",
"minimatch": "~3.0.2"
}
},
"graceful-fs": {
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"grpc": {
"version": "1.24.1",
"resolved": "https://registry.npmjs.org/grpc/-/grpc-1.24.1.tgz",
"integrity": "sha512-NFIWbt3RXZU4VlDLpiAM/Ca8Yz30QShUdPGMqOPH652PmA+2fau2vuW+tOYWQUkYMfBW2yege/T5p65e5TetVQ==",
"requires": {
"@types/bytebuffer": "^5.0.40",
"lodash.camelcase": "^4.3.0",
"lodash.clone": "^4.5.0",
"nan": "^2.13.2",
"node-pre-gyp": "^0.13.0",
"protobufjs": "^5.0.3"
},
"dependencies": {
"abbrev": {
"version": "1.1.1",
"bundled": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true
},
"aproba": {
"version": "1.2.0",
"bundled": true
},
"are-we-there-yet": {
"version": "1.1.5",
"bundled": true,
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
}
},
"balanced-match": {
"version": "1.0.0",
"bundled": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"chownr": {
"version": "1.1.2",
"bundled": true
},
"code-point-at": {
"version": "1.1.0",
"bundled": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true
},
"core-util-is": {
"version": "1.0.2",
"bundled": true
},
"debug": {
"version": "3.2.6",
"bundled": true,
"requires": {
"ms": "^2.1.1"
}
},
"deep-extend": {
"version": "0.6.0",
"bundled": true
},
"delegates": {
"version": "1.0.0",
"bundled": true
},
"detect-libc": {
"version": "1.0.3",
"bundled": true
},
"fs-minipass": {
"version": "1.2.6",
"bundled": true,
"requires": {
"minipass": "^2.2.1"
}
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true
},
"gauge": {
"version": "2.7.4",
"bundled": true,
"requires": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
}
},
"glob": {
"version": "7.1.4",
"bundled": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"has-unicode": {
"version": "2.0.1",
"bundled": true
},
"iconv-lite": {
"version": "0.4.24",
"bundled": true,
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"ignore-walk": {
"version": "3.0.1",
"bundled": true,
"requires": {
"minimatch": "^3.0.4"
}
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.4",
"bundled": true
},
"ini": {
"version": "1.3.5",
"bundled": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"isarray": {
"version": "1.0.0",
"bundled": true
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "1.2.0",
"bundled": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
},
"minizlib": {
"version": "1.2.1",
"bundled": true,
"requires": {
"minipass": "^2.2.1"
}
},
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"requires": {
"minimist": "0.0.8"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"bundled": true
}
}
},
"ms": {
"version": "2.1.2",
"bundled": true
},
"needle": {
"version": "2.4.0",
"bundled": true,
"requires": {
"debug": "^3.2.6",
"iconv-lite": "^0.4.4",
"sax": "^1.2.4"
}
},
"node-pre-gyp": {
"version": "0.13.0",
"bundled": true,
"requires": {
"detect-libc": "^1.0.2",
"mkdirp": "^0.5.1",
"needle": "^2.2.1",
"nopt": "^4.0.1",
"npm-packlist": "^1.1.6",
"npmlog": "^4.0.2",
"rc": "^1.2.7",
"rimraf": "^2.6.1",
"semver": "^5.3.0",
"tar": "^4"
}
},
"nopt": {
"version": "4.0.1",
"bundled": true,
"requires": {
"abbrev": "1",
"osenv": "^0.1.4"
}
},
"npm-bundled": {
"version": "1.0.6",
"bundled": true
},
"npm-packlist": {
"version": "1.4.4",
"bundled": true,
"requires": {
"ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1"
}
},
"npmlog": {
"version": "4.1.2",
"bundled": true,
"requires": {
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
"gauge": "~2.7.3",
"set-blocking": "~2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true
},
"once": {
"version": "1.4.0",
"bundled": true,
"requires": {
"wrappy": "1"
}
},
"os-homedir": {
"version": "1.0.2",
"bundled": true
},
"os-tmpdir": {
"version": "1.0.2",
"bundled": true
},
"osenv": {
"version": "0.1.5",
"bundled": true,
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true
},
"process-nextick-args": {
"version": "2.0.1",
"bundled": true
},
"protobufjs": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz",
"integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==",
"requires": {
"ascli": "~1",
"bytebuffer": "~5",
"glob": "^7.0.5",
"yargs": "^3.10.0"
}
},
"rc": {
"version": "1.2.8",
"bundled": true,
"requires": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
}
},
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"rimraf": {
"version": "2.7.1",
"bundled": true,
"requires": {
"glob": "^7.1.3"
}
},
"safe-buffer": {
"version": "5.1.2",
"bundled": true
},
"safer-buffer": {
"version": "2.1.2",
"bundled": true
},
"sax": {
"version": "1.2.4",
"bundled": true
},
"semver": {
"version": "5.7.1",
"bundled": true
}, },
"set-blocking": { "set-blocking": {
"version": "2.0.0", "version": "2.0.0",
"bundled": true, "bundled": true
"dev": true,
"optional": true
}, },
"signal-exit": { "signal-exit": {
"version": "3.0.2", "version": "3.0.2",
"bundled": true, "bundled": true
"dev": true,
"optional": true
}, },
"string-width": { "string-width": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"dev": true,
"optional": true,
"requires": { "requires": {
"code-point-at": "^1.0.0", "code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0", "is-fullwidth-code-point": "^1.0.0",
...@@ -4689,8 +5754,6 @@ ...@@ -4689,8 +5754,6 @@
"string_decoder": { "string_decoder": {
"version": "1.1.1", "version": "1.1.1",
"bundled": true, "bundled": true,
"dev": true,
"optional": true,
"requires": { "requires": {
"safe-buffer": "~5.1.0" "safe-buffer": "~5.1.0"
} }
...@@ -4698,218 +5761,67 @@ ...@@ -4698,218 +5761,67 @@
"strip-ansi": { "strip-ansi": {
"version": "3.0.1", "version": "3.0.1",
"bundled": true, "bundled": true,
"dev": true,
"optional": true,
"requires": { "requires": {
"ansi-regex": "^2.0.0" "ansi-regex": "^2.0.0"
} }
}, },
"strip-json-comments": { "strip-json-comments": {
"version": "2.0.1", "version": "2.0.1",
"bundled": true, "bundled": true
"dev": true,
"optional": true
}, },
"tar": { "tar": {
"version": "4.4.8", "version": "4.4.10",
"bundled": true, "bundled": true,
"dev": true,
"optional": true,
"requires": { "requires": {
"chownr": "^1.1.1", "chownr": "^1.1.1",
"fs-minipass": "^1.2.5", "fs-minipass": "^1.2.5",
"minipass": "^2.3.4", "minipass": "^2.3.5",
"minizlib": "^1.1.1", "minizlib": "^1.2.1",
"mkdirp": "^0.5.0", "mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2", "safe-buffer": "^5.1.2",
"yallist": "^3.0.2" "yallist": "^3.0.3"
} }
}, },
"util-deprecate": { "util-deprecate": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true
"dev": true,
"optional": true
}, },
"wide-align": { "wide-align": {
"version": "1.1.3", "version": "1.1.3",
"bundled": true, "bundled": true,
"dev": true,
"optional": true,
"requires": { "requires": {
"string-width": "^1.0.2 || 2" "string-width": "^1.0.2 || 2"
} }
}, },
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true
"dev": true, },
"optional": true "y18n": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
"integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
}, },
"yallist": { "yallist": {
"version": "3.0.3", "version": "3.0.3",
"bundled": true, "bundled": true
"dev": true,
"optional": true
}
}
},
"fstream": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"dev": true,
"optional": true,
"requires": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
"mkdirp": ">=0.5 0",
"rimraf": "2"
}
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
}, },
"gauge": { "yargs": {
"version": "2.7.4", "version": "3.32.0",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
"dev": true,
"optional": true,
"requires": { "requires": {
"aproba": "^1.0.3", "camelcase": "^2.0.1",
"console-control-strings": "^1.0.0", "cliui": "^3.0.3",
"has-unicode": "^2.0.0", "decamelize": "^1.1.1",
"object-assign": "^4.1.0", "os-locale": "^1.4.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1", "string-width": "^1.0.1",
"strip-ansi": "^3.0.1", "window-size": "^0.1.4",
"wide-align": "^1.1.0" "y18n": "^3.2.0"
}
},
"gaze": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
"integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"dev": true,
"optional": true,
"requires": {
"globule": "^1.0.0"
}
},
"genfun": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
"integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==",
"dev": true
},
"get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==",
"dev": true
},
"get-stdin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=",
"dev": true,
"optional": true
},
"get-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
"dev": true
},
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
"dev": true
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"dev": true,
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"glob-parent": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"requires": {
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
},
"dependencies": {
"is-glob": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"dev": true,
"requires": {
"is-extglob": "^2.1.0"
}
} }
} }
},
"globals": {
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
"dev": true
},
"globby": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
"integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
"dev": true,
"requires": {
"array-union": "^1.0.1",
"dir-glob": "^2.0.0",
"glob": "^7.1.2",
"ignore": "^3.3.5",
"pify": "^3.0.0",
"slash": "^1.0.0"
}
},
"globule": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
"integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
"dev": true,
"optional": true,
"requires": {
"glob": "~7.1.1",
"lodash": "~4.17.10",
"minimatch": "~3.0.2"
} }
}, },
"graceful-fs": {
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"handle-thing": { "handle-thing": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
...@@ -5133,8 +6045,7 @@ ...@@ -5133,8 +6045,7 @@
"http-parser-js": { "http-parser-js": {
"version": "0.4.10", "version": "0.4.10",
"resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz", "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.4.10.tgz",
"integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q=", "integrity": "sha1-ksnBN0w1CF912zWexWzCV8u5P6Q="
"dev": true
}, },
"http-proxy": { "http-proxy": {
"version": "1.17.0", "version": "1.17.0",
...@@ -5198,12 +6109,12 @@ ...@@ -5198,12 +6109,12 @@
"dev": true "dev": true
}, },
"https-proxy-agent": { "https-proxy-agent": {
"version": "2.2.1", "version": "2.2.4",
"resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz",
"integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==",
"dev": true, "dev": true,
"requires": { "requires": {
"agent-base": "^4.1.0", "agent-base": "^4.3.0",
"debug": "^3.1.0" "debug": "^3.1.0"
}, },
"dependencies": { "dependencies": {
...@@ -5237,11 +6148,15 @@ ...@@ -5237,11 +6148,15 @@
"version": "0.4.24", "version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
"integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
"dev": true,
"requires": { "requires": {
"safer-buffer": ">= 2.1.2 < 3" "safer-buffer": ">= 2.1.2 < 3"
} }
}, },
"idb": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz",
"integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw=="
},
"ieee754": { "ieee754": {
"version": "1.1.13", "version": "1.1.13",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
...@@ -5524,8 +6439,7 @@ ...@@ -5524,8 +6439,7 @@
"invert-kv": { "invert-kv": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz",
"integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY="
"dev": true
}, },
"ionic2-calendar": { "ionic2-calendar": {
"version": "0.5.2", "version": "0.5.2",
...@@ -5681,7 +6595,6 @@ ...@@ -5681,7 +6595,6 @@
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"requires": { "requires": {
"number-is-nan": "^1.0.0" "number-is-nan": "^1.0.0"
} }
...@@ -5770,8 +6683,7 @@ ...@@ -5770,8 +6683,7 @@
"is-stream": { "is-stream": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
"integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
"dev": true
}, },
"is-symbol": { "is-symbol": {
"version": "1.0.2", "version": "1.0.2",
...@@ -5837,6 +6749,15 @@ ...@@ -5837,6 +6749,15 @@
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
"dev": true "dev": true
}, },
"isomorphic-fetch": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
"integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
"requires": {
"node-fetch": "^1.0.1",
"whatwg-fetch": ">=0.10.0"
}
},
"isstream": { "isstream": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
...@@ -6362,7 +7283,6 @@ ...@@ -6362,7 +7283,6 @@
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz",
"integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=",
"dev": true,
"requires": { "requires": {
"invert-kv": "^1.0.0" "invert-kv": "^1.0.0"
} }
...@@ -6479,6 +7399,16 @@ ...@@ -6479,6 +7399,16 @@
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
"dev": true "dev": true
}, },
"lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
"integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
},
"lodash.clone": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
"integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
},
"lodash.clonedeep": { "lodash.clonedeep": {
"version": "4.5.0", "version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
...@@ -6533,6 +7463,11 @@ ...@@ -6533,6 +7463,11 @@
"integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==", "integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==",
"dev": true "dev": true
}, },
"long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
"loose-envify": { "loose-envify": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
...@@ -7038,9 +7973,7 @@ ...@@ -7038,9 +7973,7 @@
"nan": { "nan": {
"version": "2.14.0", "version": "2.14.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
"integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg=="
"dev": true,
"optional": true
}, },
"nanomatch": { "nanomatch": {
"version": "1.2.13", "version": "1.2.13",
...@@ -7078,6 +8011,15 @@ ...@@ -7078,6 +8011,15 @@
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
}, },
"node-fetch": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
"integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
"requires": {
"encoding": "^0.1.11",
"is-stream": "^1.0.1"
}
},
"node-fetch-npm": { "node-fetch-npm": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz",
...@@ -7356,8 +8298,7 @@ ...@@ -7356,8 +8298,7 @@
"number-is-nan": { "number-is-nan": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
"integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
"dev": true
}, },
"oauth-sign": { "oauth-sign": {
"version": "0.9.0", "version": "0.9.0",
...@@ -7526,6 +8467,11 @@ ...@@ -7526,6 +8467,11 @@
} }
} }
}, },
"optjs": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz",
"integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4="
},
"original": { "original": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
...@@ -7550,8 +8496,6 @@ ...@@ -7550,8 +8496,6 @@
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz",
"integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
"dev": true,
"optional": true,
"requires": { "requires": {
"lcid": "^1.0.0" "lcid": "^1.0.0"
} }
...@@ -8075,6 +9019,11 @@ ...@@ -8075,6 +9019,11 @@
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
"dev": true "dev": true
}, },
"promise-polyfill": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz",
"integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g=="
},
"promise-retry": { "promise-retry": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz",
...@@ -8093,6 +9042,33 @@ ...@@ -8093,6 +9042,33 @@
"string.prototype.codepointat": "^0.2.0" "string.prototype.codepointat": "^0.2.0"
} }
}, },
"protobufjs": {
"version": "6.8.8",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz",
"integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==",
"requires": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/long": "^4.0.0",
"@types/node": "^10.1.0",
"long": "^4.0.0"
},
"dependencies": {
"@types/node": {
"version": "10.17.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.2.tgz",
"integrity": "sha512-sAh60KDol+MpwOr1RTK0+HgBEYejKsxdpmrOS1Wts5bI03dLzq8F7T0sRXDKeaEK8iWDlGfdzxrzg6vx/c5pNA=="
}
}
},
"protoduck": { "protoduck": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz",
...@@ -8766,8 +9742,7 @@ ...@@ -8766,8 +9742,7 @@
"safe-buffer": { "safe-buffer": {
"version": "5.1.2", "version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
"dev": true
}, },
"safe-regex": { "safe-regex": {
"version": "1.1.0", "version": "1.1.0",
...@@ -8781,8 +9756,7 @@ ...@@ -8781,8 +9756,7 @@
"safer-buffer": { "safer-buffer": {
"version": "2.1.2", "version": "2.1.2",
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
"dev": true
}, },
"sass-graph": { "sass-graph": {
"version": "2.2.4", "version": "2.2.4",
...@@ -9768,7 +10742,6 @@ ...@@ -9768,7 +10742,6 @@
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"requires": { "requires": {
"code-point-at": "^1.0.0", "code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0", "is-fullwidth-code-point": "^1.0.0",
...@@ -9821,7 +10794,6 @@ ...@@ -9821,7 +10794,6 @@
"version": "3.0.1", "version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": { "requires": {
"ansi-regex": "^2.0.0" "ansi-regex": "^2.0.0"
} }
...@@ -9954,9 +10926,9 @@ ...@@ -9954,9 +10926,9 @@
}, },
"dependencies": { "dependencies": {
"glob": { "glob": {
"version": "7.1.4", "version": "7.1.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.5.tgz",
"integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", "integrity": "sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ==",
"requires": { "requires": {
"fs.realpath": "^1.0.0", "fs.realpath": "^1.0.0",
"inflight": "^1.0.4", "inflight": "^1.0.4",
...@@ -11189,7 +12161,6 @@ ...@@ -11189,7 +12161,6 @@
"version": "0.7.3", "version": "0.7.3",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz", "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.3.tgz",
"integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==", "integrity": "sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg==",
"dev": true,
"requires": { "requires": {
"http-parser-js": ">=0.4.0 <0.4.11", "http-parser-js": ">=0.4.0 <0.4.11",
"safe-buffer": ">=5.1.0", "safe-buffer": ">=5.1.0",
...@@ -11199,8 +12170,12 @@ ...@@ -11199,8 +12170,12 @@
"websocket-extensions": { "websocket-extensions": {
"version": "0.1.3", "version": "0.1.3",
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
"integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==", "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg=="
"dev": true },
"whatwg-fetch": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
"integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
}, },
"when": { "when": {
"version": "3.6.4", "version": "3.6.4",
...@@ -11233,6 +12208,11 @@ ...@@ -11233,6 +12208,11 @@
"string-width": "^1.0.2 || 2" "string-width": "^1.0.2 || 2"
} }
}, },
"window-size": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
"integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY="
},
"wordwrap": { "wordwrap": {
"version": "0.0.3", "version": "0.0.3",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
...@@ -11252,7 +12232,6 @@ ...@@ -11252,7 +12232,6 @@
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz",
"integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=",
"dev": true,
"requires": { "requires": {
"string-width": "^1.0.1", "string-width": "^1.0.1",
"strip-ansi": "^3.0.1" "strip-ansi": "^3.0.1"
...@@ -11300,6 +12279,11 @@ ...@@ -11300,6 +12279,11 @@
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
"integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk="
}, },
"xmlhttprequest": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
"integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
},
"xmlhttprequest-ssl": { "xmlhttprequest-ssl": {
"version": "1.5.5", "version": "1.5.5",
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
}, },
"private": true, "private": true,
"dependencies": { "dependencies": {
"@agm/core": "^1.0.0",
"@angular/animations": "^8.0.3", "@angular/animations": "^8.0.3",
"@angular/common": "^7.2.2", "@angular/common": "^7.2.2",
"@angular/core": "^7.2.2", "@angular/core": "^7.2.2",
...@@ -23,25 +24,37 @@ ...@@ -23,25 +24,37 @@
"@angular/router": "^7.2.2", "@angular/router": "^7.2.2",
"@ionic-native/call-number": "^5.15.0", "@ionic-native/call-number": "^5.15.0",
"@ionic-native/core": "^5.0.0", "@ionic-native/core": "^5.0.0",
"@ionic-native/file-transfer": "^5.15.1",
"@ionic-native/geolocation": "^5.15.0", "@ionic-native/geolocation": "^5.15.0",
"@ionic-native/image-picker": "^5.15.1",
"@ionic-native/native-geocoder": "^5.0.0",
"@ionic-native/splash-screen": "^5.0.0", "@ionic-native/splash-screen": "^5.0.0",
"@ionic-native/status-bar": "^5.0.0", "@ionic-native/status-bar": "^5.0.0",
"@ionic-native/toast": "^5.15.0", "@ionic-native/toast": "^5.15.0",
"@ionic/angular": "^4.1.0", "@ionic/angular": "^4.1.0",
"@ngx-translate/core": "^11.0.1",
"@ngx-translate/http-loader": "^4.0.0",
"@types/jquery": "^3.3.31", "@types/jquery": "^3.3.31",
"agm-direction": "^0.7.9",
"angular-calendar": "^0.27.14", "angular-calendar": "^0.27.14",
"angularfire2": "^5.2.1",
"call-number": "^1.0.1", "call-number": "^1.0.1",
"cordova-android": "^8.1.0", "cordova-android": "^8.1.0",
"cordova-plugin-device": "^2.0.2", "cordova-plugin-device": "^2.0.2",
"cordova-plugin-file": "^6.0.2",
"cordova-plugin-file-transfer": "^1.7.1",
"cordova-plugin-geolocation": "^4.0.2", "cordova-plugin-geolocation": "^4.0.2",
"cordova-plugin-ionic-keyboard": "^2.1.3", "cordova-plugin-ionic-keyboard": "^2.1.3",
"cordova-plugin-ionic-webview": "^4.1.1", "cordova-plugin-ionic-webview": "^4.1.1",
"cordova-plugin-nativegeocoder": "^3.2.2",
"cordova-plugin-splashscreen": "^5.0.2", "cordova-plugin-splashscreen": "^5.0.2",
"cordova-plugin-statusbar": "^2.4.2", "cordova-plugin-statusbar": "^2.4.2",
"cordova-plugin-telerik-imagepicker": "^2.3.3",
"cordova-plugin-whitelist": "^1.3.3", "cordova-plugin-whitelist": "^1.3.3",
"cordova-plugin-x-toast": "^2.7.2", "cordova-plugin-x-toast": "^2.7.2",
"core-js": "^2.5.4", "core-js": "^2.5.4",
"date-fns": "^1.30.1", "date-fns": "^1.30.1",
"firebase": "^7.2.2",
"ionic2-calendar": "^0.5.2", "ionic2-calendar": "^0.5.2",
"jquery": "^3.4.1", "jquery": "^3.4.1",
"rxjs": "~6.5.1", "rxjs": "~6.5.1",
...@@ -88,7 +101,10 @@ ...@@ -88,7 +101,10 @@
"cordova-plugin-ionic-keyboard": {}, "cordova-plugin-ionic-keyboard": {},
"cordova-plugin-geolocation": {}, "cordova-plugin-geolocation": {},
"cordova-plugin-x-toast": {}, "cordova-plugin-x-toast": {},
"mx.ferreyra.callnumber": {} "mx.ferreyra.callnumber": {},
"cordova-plugin-nativegeocoder": {},
"cordova-plugin-telerik-imagepicker": {},
"cordova-plugin-file-transfer": {}
}, },
"platforms": [ "platforms": [
"android" "android"
......
resources/icon.png

59.4 KB | W: | H:

resources/icon.png

48.4 KB | W: | H:

resources/icon.png
resources/icon.png
resources/icon.png
resources/icon.png
  • 2-up
  • Swipe
  • Onion skin
resources/splash.png

76.8 KB | W: | H:

resources/splash.png

9.32 MB | W: | H:

resources/splash.png
resources/splash.png
resources/splash.png
resources/splash.png
  • 2-up
  • Swipe
  • Onion skin
export interface Productbooking {
user_id: any;
delivery_adressId: any;
prod_id: any;
car_id: any;
}
...@@ -19,4 +19,7 @@ export class AuthenticationService { ...@@ -19,4 +19,7 @@ export class AuthenticationService {
public uploadFormData(url, formData) { public uploadFormData(url, formData) {
return this.http.post<any>(`${devURL + url}`, formData).pipe(map((response: any) => response)); return this.http.post<any>(`${devURL + url}`, formData).pipe(map((response: any) => response));
} }
getGoogleLocationData(lat, lng) {
return this.http.get('https://maps.googleapis.com/maps/api/geocode/json?latlng='+lat+','+lng+'&key=AIzaSyBniwyiEPSjS9IUvbhBmS0ampJkzE2cSS0').pipe(map((response: any) => response));
}
} }
import { Injectable } from '@angular/core';
import { AngularFirestore } from '@angular/fire/firestore';
import { Router } from '@angular/router';
import { firestore } from 'firebase/app';
import { map, switchMap } from 'rxjs/operators';
import { Observable, combineLatest, of } from 'rxjs';
import { StorageService } from '../../Config/services/storage.service';
@Injectable({
providedIn: 'root'
})
export class ChatService {
userData: any;
constructor(
private afs: AngularFirestore,
private router: Router,
private storageService: StorageService
) {
this.userData = JSON.parse(this.storageService.getLocalStorageItem('userData'));
console.log(this.userData);
}
get(chatId) {
return this.afs
.collection<any>('chats')
.doc(chatId)
.snapshotChanges()
.pipe(
map(doc => {
return { id: doc.payload.id, ...doc.payload.data() };
})
);
}
async create() {
const { id } = this.userData.id;
const data = {
id:1,
time: 1,
sender_type: 1,
messages: [],
user_id: 1
};
const docRef = await this.afs.collection('chats').add(data);
console.log(docRef);
// return this.router.navigate(['chats', docRef.id]);
}
async sendMessage(chatId, content) {
const { uid } = this.userData.id;
const data = {
uid,
content,
createdAt: Date.now()
};
if (uid) {
const ref = this.afs.collection('chats').doc(chatId);
return ref.update({
messages: firestore.FieldValue.arrayUnion(data)
});
}
}
}
\ No newline at end of file
...@@ -9,6 +9,9 @@ export class StorageService { ...@@ -9,6 +9,9 @@ export class StorageService {
setLocalStorageItem(id: string, data: string) { setLocalStorageItem(id: string, data: string) {
localStorage.setItem(id, data); localStorage.setItem(id, data);
} }
setProfilePic(data: string) {
localStorage.setItem('profilePic' , data);
}
getLocalStorageItem(data: string): string { getLocalStorageItem(data: string): string {
return localStorage.getItem(data); return localStorage.getItem(data);
} }
......
import { Injectable } from '@angular/core';
import { TranslateService } from '@ngx-translate/core';
@Injectable({
providedIn: 'root'
})
export class TranslateConfigService {
constructor(
private translate: TranslateService
) { }
getDefaultLanguage() {
const language = this.translate.getBrowserLang();
this.translate.setDefaultLang(language);
return language;
}
setLanguage(setLang) {
this.translate.use(setLang);
}
}
...@@ -22,9 +22,9 @@ ...@@ -22,9 +22,9 @@
<p>Phone Number</p> <p>Phone Number</p>
<ion-row class="p0"> <ion-row class="p0">
<ion-col size="4"> <ion-col size="4">
<!-- <ion-select > <ion-select formControlName="phone_code">
<ion-select-option value="" formControlName="">+33</ion-select-option> <ion-select-option value = +33 >+33</ion-select-option>
</ion-select> --> </ion-select>
</ion-col> </ion-col>
<ion-col size="8"> <ion-col size="8">
<ion-input value="" type="number" formControlName="phone_no"></ion-input> <ion-input value="" type="number" formControlName="phone_no"></ion-input>
......
...@@ -21,7 +21,8 @@ export class AddaddressPage implements OnInit { ...@@ -21,7 +21,8 @@ export class AddaddressPage implements OnInit {
area: ['', Validators.required], area: ['', Validators.required],
house_no: ['', Validators.required], house_no: ['', Validators.required],
city: ['', Validators.required], city: ['', Validators.required],
district: ['Ernakulam'], district: [''],
phone_code: ['' , Validators.required],
user_id: ['', Validators.required] user_id: ['', Validators.required]
}); });
constructor( constructor(
...@@ -49,7 +50,7 @@ export class AddaddressPage implements OnInit { ...@@ -49,7 +50,7 @@ export class AddaddressPage implements OnInit {
} }
addnewAddress() { addnewAddress() {
this.deliveryaddressForm.patchValue({ this.deliveryaddressForm.patchValue({
user_id : this.userData.id user_id : this.userData.profile_id
}); });
if ( this.deliveryaddressForm.valid) { if ( this.deliveryaddressForm.valid) {
console.log(this.deliveryaddressForm.value); console.log(this.deliveryaddressForm.value);
...@@ -57,6 +58,7 @@ export class AddaddressPage implements OnInit { ...@@ -57,6 +58,7 @@ export class AddaddressPage implements OnInit {
console.log(data); console.log(data);
if ( data.status === 'success') { if ( data.status === 'success') {
this.validationservice.presentToast(data.message); this.validationservice.presentToast(data.message);
this.goToPage('home');
} else { } else {
this.validationservice.presentToast(data.message); this.validationservice.presentToast(data.message);
} }
......
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms'; import { FormsModule ,ReactiveFormsModule} 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';
...@@ -18,6 +18,7 @@ const routes: Routes = [ ...@@ -18,6 +18,7 @@ const routes: Routes = [
imports: [ imports: [
CommonModule, CommonModule,
FormsModule, FormsModule,
ReactiveFormsModule,
IonicModule, IonicModule,
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
......
...@@ -6,43 +6,38 @@ ...@@ -6,43 +6,38 @@
</button> </button>
<div class="nav_title floatLeft"><h4>ADD YOUR CAR</h4></div> <div class="nav_title floatLeft"><h4>ADD YOUR CAR</h4></div>
<button class="nav_btn nav_btn_text floatRight" (click)="goToPage('login')"> <!-- <button class="nav_btn nav_btn_text floatRight" (click)="goToPage('login')">
Skip Skip
</button> </button>
<div class="clear"></div> <div class="clear"></div> -->
</div> </div>
<div class="forgot_form"> <div class="forgot_form">
<div class="showcar"> <form [formGroup]="addCar">
<!-- <div class="showcar">
<img src="../../assets/img/asset_show_car.png"> <img src="../../assets/img/asset_show_car.png">
</div> </div> -->
<div class="row"> <div class="row">
<ion-select placeholder="">
<ion-select-option value="" selected>Company Name</ion-select-option> <ion-input formControlName="car_VinNumber" placeholder="Car VIN Number" type="text"></ion-input>
</ion-select>
</div> </div>
<div class="row"> <div class="row">
<ion-select placeholder="">
<ion-select-option value="" selected>Modal Name</ion-select-option> <ion-input formControlName="car_brand" placeholder="Company" type="text"></ion-input>
</ion-select>
</div> </div>
<div class="row"> <div class="row">
<ion-select placeholder=""> <ion-input formControlName="car_model" placeholder="Model" type="text"></ion-input>
<ion-select-option value="" selected>Modal Year</ion-select-option>
</ion-select>
</div> </div>
<div class="row"> <div class="row">
<p>Mileage</p> <ion-input formControlName="car_year" placeholder="Year" type="number"></ion-input>
<ion-select placeholder="">
<ion-select-option value="" selected>0 - 10km</ion-select-option>
</ion-select>
</div> </div>
<div class="row">
<ion-input formControlName="car_milege" placeholder="Milege" type="number"></ion-input>
</div>
<div class="row textCenter"> <div class="row textCenter">
<button class="signup_btn" (click)="goToPage('login')">Add My car</button> <button class="signup_btn" (click)="addUserCar()">Add My car</button>
</div> </div>
</form>
</div> </div>
</div> </div>
</ion-content> </ion-content>
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Router,ActivatedRoute } from '@angular/router'; import { Router, ActivatedRoute } from '@angular/router';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { FormBuilder, Validators } from '@angular/forms';
import {StorageService } from '../../Config/services/storage.service';
import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service';
@Component({ @Component({
selector: 'app-addcar', selector: 'app-addcar',
...@@ -8,25 +12,63 @@ import { Location } from '@angular/common'; ...@@ -8,25 +12,63 @@ import { Location } from '@angular/common';
styleUrls: ['./addcar.page.scss'], styleUrls: ['./addcar.page.scss'],
}) })
export class AddcarPage implements OnInit { export class AddcarPage implements OnInit {
userData: any;
addCar = this.fb.group({
user_id: ['', Validators.required],
car_VinNumber: ['', Validators.required],
car_brand: ['', Validators.required],
car_model: ['', Validators.required],
car_year: ['', Validators.required],
car_milege: ['', Validators.required]
});
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
private location: Location private location: Location,
private fb: FormBuilder,
private storageService: StorageService,
private validationService: ValidationService,
private authenticationService: AuthenticationService,
) { ) {
this.getStorageData();
} }
ngOnInit() { ngOnInit() {
} }
goToPage(path,data=null){ goToPage(path, data= null) {
this.router.navigateByUrl(path,{queryParams:data}); this.router.navigateByUrl(path, {queryParams: data});
document.body.scrollTop = document.documentElement.scrollTop = 0; document.body.scrollTop = document.documentElement.scrollTop = 0;
} }
goBack() { goBack() {
this.location.back(); this.location.back();
} }
addUserCar() {
const formData = new FormData();
this.addCar.patchValue({
user_id : this.userData.profile_id
});
console.log(this.addCar.value);
if (this.addCar.valid) {
formData.append('user_id', this.userData.profile_id);
formData.append('car_VinNumber' , this.addCar.value.car_VinNumber);
formData.append('car_brand' , this.addCar.value.car_brand);
formData.append('car_model' , this.addCar.value.car_model);
formData.append('car_year' , this.addCar.value.car_year);
formData.append('car_milege' , this.addCar.value.car_milege);
this.authenticationService.post_data('add_UserCar' , formData).subscribe((data) => {
console.log(data);
if (data.status === 'success') {
this.goToPage('home');
}
});
}
}
getStorageData() {
this.userData = JSON.parse(this.storageService.getLocalStorageItem('userData'));
console.log(this.userData);
}
} }
...@@ -59,7 +59,7 @@ const routes: Routes = [ ...@@ -59,7 +59,7 @@ const routes: Routes = [
path: 'review', path: 'review',
loadChildren: './review/review.module#ReviewPageModule' loadChildren: './review/review.module#ReviewPageModule'
}, },
{ path: 'waiting', loadChildren: './waiting/waiting.module#WaitingPageModule' }, { path: 'waiting/:id', loadChildren: './waiting/waiting.module#WaitingPageModule' },
{ path: 'complete', loadChildren: './complete/complete.module#CompletePageModule' }, { path: 'complete', loadChildren: './complete/complete.module#CompletePageModule' },
{ path: 'profile', loadChildren: './profile/profile.module#ProfilePageModule' }, { path: 'profile', loadChildren: './profile/profile.module#ProfilePageModule' },
{ path: 'myservices', loadChildren: './myservices/myservices.module#MyservicesPageModule' }, { path: 'myservices', loadChildren: './myservices/myservices.module#MyservicesPageModule' },
...@@ -79,11 +79,21 @@ const routes: Routes = [ ...@@ -79,11 +79,21 @@ const routes: Routes = [
{ path: 'purchaseparts', loadChildren: './purchaseparts/purchaseparts.module#PurchasepartsPageModule' }, { path: 'purchaseparts', loadChildren: './purchaseparts/purchaseparts.module#PurchasepartsPageModule' },
{ path: 'productbooking/:id', loadChildren: './productbooking/productbooking.module#ProductbookingPageModule' }, { path: 'productbooking/:id', loadChildren: './productbooking/productbooking.module#ProductbookingPageModule' },
{ path: 'addaddress', loadChildren: './addaddress/addaddress.module#AddaddressPageModule' }, { path: 'addaddress', loadChildren: './addaddress/addaddress.module#AddaddressPageModule' },
{ path: 'deliveryaddress', loadChildren: './deliveryaddress/deliveryaddress.module#DeliveryaddressPageModule' }, { path: 'deliveryaddress/:id', loadChildren: './deliveryaddress/deliveryaddress.module#DeliveryaddressPageModule' },
{ path: 'partproduct', loadChildren: './partproduct/partproduct.module#PartproductPageModule' }, { path: 'partproduct', loadChildren: './partproduct/partproduct.module#PartproductPageModule' },
{ path: 'orderdetails', loadChildren: './orderdetails/orderdetails.module#OrderdetailsPageModule' }, { path: 'orderdetails', loadChildren: './orderdetails/orderdetails.module#OrderdetailsPageModule' },
{ path: 'listingservice', loadChildren: './listingservice/listingservice.module#ListingservicePageModule' }, { path: 'listingservice', loadChildren: './listingservice/listingservice.module#ListingservicePageModule' },
{ path: 'changepassword', loadChildren: './changepassword/changepassword.module#ChangepasswordPageModule' } { path: 'changepassword', loadChildren: './changepassword/changepassword.module#ChangepasswordPageModule' },
{ path: 'carlistsecond', loadChildren: './carlistsecond/carlistsecond.module#CarlistsecondPageModule' },
{ path: 'chat', loadChildren: './chat/chat.module#ChatPageModule' },
{ path: 'map', loadChildren: './map/map.module#MapPageModule' },
{ path: 'roadassistantrequest-list', loadChildren: './roadassistantrequest-list/roadassistantrequest-list.module#RoadassistantrequestListPageModule' },
// { path: 'roadassistancerequestlist', loadChildren: './roadassistancerequestlist/roadassistancerequestlist.module#RoadassistancerequestlistPageModule' },
{ path: 'roadassiastancecompletedlist', loadChildren: './roadassiastancecompletedlist/roadassiastancecompletedlist.module#RoadassiastancecompletedlistPageModule' },
{ path: 'roadassistancerating', loadChildren: './roadassistancerating/roadassistancerating.module#RoadassistanceratingPageModule' }
]; ];
......
...@@ -38,6 +38,11 @@ export class AppComponent { ...@@ -38,6 +38,11 @@ export class AppComponent {
this.platform.ready().then(() => { this.platform.ready().then(() => {
this.statusBar.styleDefault(); this.statusBar.styleDefault();
this.splashScreen.hide(); this.splashScreen.hide();
const This = this;
// tslint:disable-next-line: only-arrow-functions
setInterval(function() {
This.geolocationData();
}, 3000);
this.geolocationData(); this.geolocationData();
}); });
} }
...@@ -45,6 +50,7 @@ export class AppComponent { ...@@ -45,6 +50,7 @@ export class AppComponent {
this.geolocation.getCurrentPosition().then((resp) => { this.geolocation.getCurrentPosition().then((resp) => {
console.log(resp); console.log(resp);
const coords = {lat: resp.coords.latitude, lng: resp.coords.longitude}; const coords = {lat: resp.coords.latitude, lng: resp.coords.longitude};
this.storageservice.removeLocalStorageItem('location');
this.storageservice.setLocalStorageItem('location', JSON.stringify(coords)); this.storageservice.setLocalStorageItem('location', JSON.stringify(coords));
}).catch((error) => { }).catch((error) => {
console.log('Error getting location', error); console.log('Error getting location', error);
......
...@@ -15,9 +15,22 @@ import { CalendarModule, DateAdapter } from 'angular-calendar'; ...@@ -15,9 +15,22 @@ import { CalendarModule, DateAdapter } from 'angular-calendar';
import { adapterFactory } from 'angular-calendar/date-adapters/date-fns'; import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
import { CallNumber } from '@ionic-native/call-number/ngx'; import { CallNumber } from '@ionic-native/call-number/ngx';
import { HttpClientModule } from '@angular/common/http'; import { HttpClientModule, HttpClient } from '@angular/common/http';
import { Geolocation } from '@ionic-native/geolocation/ngx'; import { Geolocation } from '@ionic-native/geolocation/ngx';
import { Toast } from '@ionic-native/toast/ngx'; import { Toast } from '@ionic-native/toast/ngx';
import { NativeGeocoder } from '@ionic-native/native-geocoder/ngx';
import { ImagePicker } from '@ionic-native/image-picker/ngx';
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
import {TranslateHttpLoader} from '@ngx-translate/http-loader';
import { AngularFireModule } from '@angular/fire';
import { AngularFirestoreModule } from '@angular/fire/firestore';
import { AngularFireStorageModule } from '@angular/fire/storage';
import { AngularFireAuthModule } from '@angular/fire/auth';
import {environment} from '../environments/firebase';
export function HttpLoaderFactory(http: HttpClient) {
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
console.log(TranslateHttpLoader);
}
@NgModule({ @NgModule({
declarations: [ declarations: [
...@@ -29,14 +42,27 @@ import { Toast } from '@ionic-native/toast/ngx'; ...@@ -29,14 +42,27 @@ import { Toast } from '@ionic-native/toast/ngx';
], ],
imports: [ imports: [
BrowserModule, BrowserModule,
AngularFirestoreModule, // imports firebase/firestore, only needed for database features
AngularFireAuthModule, // imports firebase/auth, only needed for auth features,
AngularFireStorageModule, // imports firebase/storage only needed for storage features
AngularFireModule.initializeApp(environment.firebase),
HttpClientModule, HttpClientModule,
BrowserAnimationsModule, BrowserAnimationsModule,
IonicModule.forRoot(), IonicModule.forRoot(),
TranslateModule.forRoot(),
AppRoutingModule, AppRoutingModule,
CalendarModule.forRoot({ CalendarModule.forRoot({
provide: DateAdapter, provide: DateAdapter,
useFactory: adapterFactory useFactory: adapterFactory
}) }),
TranslateModule.forRoot({
loader: {
provide: TranslateLoader,
useFactory: HttpLoaderFactory,
deps: [HttpClient]
}
}),
], ],
providers: [ providers: [
...@@ -45,6 +71,8 @@ import { Toast } from '@ionic-native/toast/ngx'; ...@@ -45,6 +71,8 @@ import { Toast } from '@ionic-native/toast/ngx';
Geolocation, Geolocation,
CallNumber, CallNumber,
Toast, Toast,
NativeGeocoder,
ImagePicker,
{ provide: RouteReuseStrategy, useClass: IonicRouteStrategy } { provide: RouteReuseStrategy, useClass: IonicRouteStrategy }
], ],
bootstrap: [AppComponent] bootstrap: [AppComponent]
......
...@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core'; ...@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router'; import { Routes, RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { BookingPage } from './booking.page'; import { BookingPage } from './booking.page';
...@@ -19,6 +19,7 @@ const routes: Routes = [ ...@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [BookingPage] declarations: [BookingPage]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app_header" *ngIf="roadassistantDetails"> <div class="app_header" *ngIf="roadassistantDetails">
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button>
<div class="nav_title floatLeft"><h4 *ngIf="roadassistantDetails.name">{{roadassistantDetails.name |}}</h4></div> <div class="nav_title floatLeft"><h4 *ngIf="roadassistantDetails.name">{{roadassistantDetails.name}}</h4></div>
<button class="nav_btn nav_btn_text floatRight"> <button class="nav_btn nav_btn_text floatRight">
</button> </button>
...@@ -11,17 +11,17 @@ ...@@ -11,17 +11,17 @@
</ion-header> </ion-header>
<ion-content> <ion-content>
<div class="home_wrapper"> <div class="home_wrapper">
<div class="location_box"> <!-- <div class="location_box">
<div class="location_bar"> <div class="location_bar">
4KM 4KM
</div> </div>
</div> </div> -->
<div class="banner"> <div class="banner">
<img src="../../assets/img/asset_banner.png"> <img src="../../assets/img/asset_banner.png">
</div> </div>
<div class="btn_bay"> <div class="btn_bay" *ngIf="roadassistantDetails">
<button class="btn call_btn">Call Allo Repar</button> <button class="btn call_btn" (click)="callRoadAssistant(roadassistantDetails.phone_no)">{{'Booking.Call to Allorepo' | translate:params}}</button>
<button class="btn book_btn" (click)="goToPage('waiting')">Book Service</button> <button class="btn book_btn" (click)="bookroadassistant()">{{'Booking.Book Service' | translate:params}}</button>
</div> </div>
<div class="pay_description"> <div class="pay_description">
<h6> <h6>
...@@ -38,16 +38,16 @@ ...@@ -38,16 +38,16 @@
<img src="../../assets/img/asset_c4.png"> <img src="../../assets/img/asset_c4.png">
</span> </span>
</h6> </h6>
<h6> <!-- <h6 *ngIf="roadassistantDetails">
<span> <span>
<img src="../../assets/img/asset_web.png"> <img src="../../assets/img/asset_web.png">
<a>www.presto.com</a></span> <a>{{roadassistantDetails.email_id}}</a></span>
</h6> </h6> -->
</div> </div>
<div class="bottom_tab_bay"> <div class="bottom_tab_bay">
<ul> <ul>
<li [class.active]="tab == 'about'" (click)="tab_swap('about')">About</li> <li [class.active]="tab == 'about'" (click)="tab_swap('about')">{{'Booking.About' | translate:params}}</li>
<li [class.active]="tab == 'review'" (click)="tab_swap('review')">Reviews</li> <li [class.active]="tab == 'review'" (click)="tab_swap('review')">{{'Booking.Reviews' | translate:params}}</li>
</ul> </ul>
</div> </div>
<div class="tab_content"> <div class="tab_content">
...@@ -86,12 +86,12 @@ ...@@ -86,12 +86,12 @@
<span *ngIf="ratingDetails">{{ratingDetails.rate}} | {{ratingDetails.reviewNumber}} Reviews</span> <span *ngIf="ratingDetails">{{ratingDetails.rate}} | {{ratingDetails.reviewNumber}} Reviews</span>
</ion-col> </ion-col>
<ion-col col-4 class="p0 textRight"> <ion-col col-4 class="p0 textRight">
<button class="add_review" (click)="istoggle()">+</button> <button class="add_review" (click)="istoggle()" disabled>+</button>
</ion-col> </ion-col>
</ion-row> </ion-row>
</div> </div>
<div class="review_list"> <div class="review_list">
<ul> <!-- <ul>
<li> <li>
<div class="top_div"> <div class="top_div">
<div class="pic_circle"></div> <div class="pic_circle"></div>
...@@ -164,7 +164,7 @@ ...@@ -164,7 +164,7 @@
<div class="clear"></div> <div class="clear"></div>
</div> </div>
</li> </li>
</ul> </ul> -->
</div> </div>
</div> </div>
</div> </div>
......
...@@ -7,6 +7,7 @@ import { AuthenticationService } from '../../Config/services/auth.service'; ...@@ -7,6 +7,7 @@ import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service'; import { ValidationService} from '../../Config/services/validation.service';
import {StorageService } from '../../Config/services/storage.service'; import {StorageService } from '../../Config/services/storage.service';
import { CallNumber } from '@ionic-native/call-number/ngx'; import { CallNumber } from '@ionic-native/call-number/ngx';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
@Component({ @Component({
selector: 'app-booking', selector: 'app-booking',
templateUrl: './booking.page.html', templateUrl: './booking.page.html',
...@@ -33,6 +34,9 @@ export class BookingPage { ...@@ -33,6 +34,9 @@ export class BookingPage {
isShow = false; isShow = false;
roadassistantDetails = []; roadassistantDetails = [];
reviewDetails = []; reviewDetails = [];
locationData: any;
userData: any;
lang: any;
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
...@@ -40,16 +44,19 @@ export class BookingPage { ...@@ -40,16 +44,19 @@ export class BookingPage {
private validationService: ValidationService, private validationService: ValidationService,
private authenticationService: AuthenticationService, private authenticationService: AuthenticationService,
private storageservice: StorageService, private storageservice: StorageService,
private callNumber: CallNumber private callNumber: CallNumber,
private translateConfigService: TranslateConfigService
) { ) {
const Data = decodeURIComponent((this.route.snapshot.paramMap.get('id'))); const Data = decodeURIComponent((this.route.snapshot.paramMap.get('id')));
this.id = JSON.parse(Data); this.id = JSON.parse(Data);
this.tab = 'about'; this.tab = 'about';
this.getStorageData();
this.roadassistantDetails = null; this.roadassistantDetails = null;
this.reviewDetails = null; this.reviewDetails = null;
this.rating = 0; this.rating = 0;
this.reviewErrormessage = false; this.reviewErrormessage = false;
this.roadassistantDetail(this.id); this.roadassistantDetail(this.id);
} }
...@@ -68,7 +75,14 @@ export class BookingPage { ...@@ -68,7 +75,14 @@ export class BookingPage {
} }
getStorageData() {
this.userData = JSON.parse(this.storageservice.getLocalStorageItem('userData'));
this.locationData = JSON.parse(this.storageservice.getLocalStorageItem('location'));
this.lang = JSON.parse(this.storageservice.getLocalStorageItem('lang'));
if ( this.lang) {
this.langTranslang(this.lang);
}
}
istoggle() { istoggle() {
this.isShow = !this.isShow; this.isShow = !this.isShow;
...@@ -112,4 +126,29 @@ for (let i = 0 ; i < this.reviewcount - 1 ; i++ ) { ...@@ -112,4 +126,29 @@ for (let i = 0 ; i < this.reviewcount - 1 ; i++ ) {
this.ratingDetails = { rate: this.rating, reviewNumber: this.reviewcount }; this.ratingDetails = { rate: this.rating, reviewNumber: this.reviewcount };
} }
bookroadassistant() {
const today = new Date();
const passData = {
user_lat: this.locationData.lat,
user_lng: this.locationData.lng,
user_carId: '1',
date: today,
roadassistance_id: this.id,
user_id: this.userData.profile_id
};
this.authenticationService.post_data('book_roadassistance' , passData).subscribe((data) => {
console.log(data);
if (data.status === 'success') {
this.validationService.presentToast('Your booking done successfully');
// tslint:disable-next-line: no-shadowed-variable
const passData = {road_assistantName: this.roadassistantDetails};
this.goToPage('/waiting/' + encodeURIComponent(JSON.stringify(passData)));
} else {
this.validationService.presentToast('Booking failed');
}
});
}
langTranslang(lang) {
this.translateConfigService.setLanguage(lang);
}
} }
...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router'; ...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { CarlistPage } from './carlist.page'; import { CarlistPage } from './carlist.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,6 +19,7 @@ const routes: Routes = [ ...@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [CarlistPage] declarations: [CarlistPage]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app_header"> <div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button>
<div class="nav_title floatLeft"><h4>MY CARS</h4></div> <div class="nav_title floatLeft"><h4>{{'Carslist.My Cars' | translate:params}}</h4></div>
<button class="nav_btn nav_btn_text floatRight"> <button class="nav_btn nav_btn_text floatRight">
<div class="add_car" (click)="goToPage('addcar')"> <div class="add_car" (click)="goToPage('addcar')">
+ +
...@@ -13,14 +13,14 @@ ...@@ -13,14 +13,14 @@
</ion-header> </ion-header>
<ion-content> <ion-content>
<div class="carlist"> <div class="carlist">
<ul> <ul *ngIf="carDetails">
<li> <li *ngFor="let car of carDetails; let i = index" (click)="bookService(carDetails[i])">
<div class="auto_pic"></div> <div class="auto_pic"></div>
<div class="auto_detail" (click)="bookService()"> <div class="auto_detail">
<h4><strong>Rolls Royce</strong> Ghost</h4> <h4><strong>{{carDetails[i].make}}</strong></h4>
<div class="auto_detail_inner"> <div class="auto_detail_inner">
<p>Mileage: 08 - 12</p> <p>Mileage: {{carDetails[i].mileage}}</p>
<p>Model: 2019</p> <p>Model: {{carDetails[i].model}}</p>
</div> </div>
</div> </div>
<div class="clear"></div> <div class="clear"></div>
......
...@@ -5,6 +5,8 @@ import { Router, ActivatedRoute } from '@angular/router'; ...@@ -5,6 +5,8 @@ import { Router, ActivatedRoute } from '@angular/router';
import { AuthenticationService } from '../../Config/services/auth.service'; import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service'; import { ValidationService} from '../../Config/services/validation.service';
import {StorageService } from '../../Config/services/storage.service'; import {StorageService } from '../../Config/services/storage.service';
import { Productbooking } from '../../Config/model/productbooking';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
@Component({ @Component({
selector: 'app-carlist', selector: 'app-carlist',
templateUrl: './carlist.page.html', templateUrl: './carlist.page.html',
...@@ -14,6 +16,7 @@ export class CarlistPage implements OnInit { ...@@ -14,6 +16,7 @@ export class CarlistPage implements OnInit {
getData: any; getData: any;
userData: any; userData: any;
addressList: any; addressList: any;
carDetails: any;
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
...@@ -21,6 +24,7 @@ export class CarlistPage implements OnInit { ...@@ -21,6 +24,7 @@ export class CarlistPage implements OnInit {
private validationService: ValidationService, private validationService: ValidationService,
private authenticationService: AuthenticationService, private authenticationService: AuthenticationService,
private storageservice: StorageService, private storageservice: StorageService,
private translateConfigService: TranslateConfigService
) { ) {
const Data = decodeURIComponent((this.route.snapshot.paramMap.get('id'))); const Data = decodeURIComponent((this.route.snapshot.paramMap.get('id')));
this.getData = JSON.parse(Data); this.getData = JSON.parse(Data);
...@@ -30,6 +34,7 @@ export class CarlistPage implements OnInit { ...@@ -30,6 +34,7 @@ export class CarlistPage implements OnInit {
ngOnInit() { ngOnInit() {
this.getStorgaeData(); this.getStorgaeData();
this.getSavedAddress(); this.getSavedAddress();
this.getCarDetails();
this.addressList = null; this.addressList = null;
} }
...@@ -42,19 +47,26 @@ export class CarlistPage implements OnInit { ...@@ -42,19 +47,26 @@ export class CarlistPage implements OnInit {
goBack() { goBack() {
this.location.back(); this.location.back();
} }
bookService() { bookService(cardata) {
console.log(cardata);
if ( this.getData.type === 1) { if ( this.getData.type === 1) {
// tslint:disable-next-line: max-line-length // tslint:disable-next-line: max-line-length
const passData = {date: this.getData.booking_date, message: this.getData.message, id: [this.getData.subservice_id], car_id: '1', sub_name: this.getData.sub_name, main_name: this.getData.main_name }; const passData = {date: this.getData.booking_date, message: this.getData.message, id: [this.getData.subservice_id], car_id: cardata, sub_name: this.getData.sub_name, main_name: this.getData.main_name };
console.log(JSON.stringify(passData)); console.log(JSON.stringify(passData));
this.goToPage('/summary/' + encodeURIComponent(JSON.stringify(passData))); this.goToPage('/summary/' + encodeURIComponent(JSON.stringify(passData)));
} }
if (this.getData.type === 2) { if (this.getData.type === 2) {
this.goToPage('deliveryaddress'); const passData: Productbooking = {
user_id: this.userData.profile_id,
prod_id : this.getData.product_id,
car_id: cardata.id,
delivery_adressId : ''
};
this.goToPage('/deliveryaddress/' + encodeURIComponent(JSON.stringify(passData)));
} }
} }
getSavedAddress() { getSavedAddress() {
this.authenticationService.get_data('get_deliveryadress?user_id=' + this.userData.id).subscribe((data) => { this.authenticationService.get_data('get_deliveryadress?user_id=' + this.userData.profile_id).subscribe((data) => {
console.log(data); console.log(data);
if (data.status === 'success') { if (data.status === 'success') {
this.addressList = data.data; this.addressList = data.data;
...@@ -65,5 +77,17 @@ getSavedAddress() { ...@@ -65,5 +77,17 @@ getSavedAddress() {
} }
getStorgaeData() { getStorgaeData() {
this.userData = JSON.parse(this.storageservice.getLocalStorageItem('userData')); this.userData = JSON.parse(this.storageservice.getLocalStorageItem('userData'));
}
getCarDetails() {
this.authenticationService.get_data('get_carList?user_id=' + this.userData.profile_id).subscribe((data) => {
console.log(data);
if (data.status === 'success') {
this.carDetails = data.data;
}
});
}
langTrans() {
this.translateConfigService.setLanguage('fr');
} }
} }
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 { CarlistsecondPage } from './carlistsecond.page';
const routes: Routes = [
{
path: '',
component: CarlistsecondPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [CarlistsecondPage]
})
export class CarlistsecondPageModule {}
<ion-header>
<div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button>
<div class="nav_title floatLeft"><h4>MY CARS</h4></div>
<button class="nav_btn nav_btn_text floatRight">
<div class="add_car" (click)="goToPage('addcar')">
+
</div>
</button>
<div class="clear"></div>
</div>
</ion-header>
<ion-content>
<div class="carlist">
<ul *ngIf="carDetails">
<li *ngFor="let car of carDetails; let i = index">
<div class="auto_pic"></div>
<div class="auto_detail">
<h4><strong>{{carDetails[i].make}}</strong></h4>
<div class="auto_detail_inner">
<p>Mileage: {{carDetails[i].mileage}}</p>
<p>Model: {{carDetails[i].model}}</p>
</div>
</div>
<div class="clear"></div>
</li>
</ul>
</div>
</ion-content>
.add_car{
background-color: #39267f;
color: #fff;
height: 40px;
width: 40px;
border-radius: 50%;
font-size: 30px;
padding: 4px;
}
.carlist{
padding:10px;
ul{
margin:0px;
padding:0px;
li{
list-style: none;
padding: 20px;
border-radius: 15px;
margin-bottom: 10px;
-webkit-box-shadow: 0px 0px 19px 0px rgba(135,105,244,0.49);
-moz-box-shadow: 0px 0px 19px 0px rgba(135,105,244,0.49);
box-shadow: 0px 0px 19px 0px rgba(135,105,244,0.49);
.auto_pic{
width:60px;
height:60px;
-webkit-box-shadow: 0px 0px 19px 0px rgba(135,105,244,0.49);
-moz-box-shadow: 0px 0px 19px 0px rgba(135,105,244,0.49);
box-shadow: 0px 0px 19px 0px rgba(135,105,244,0.49);
border-radius:15px;
float: left;
img{
width: 100%;
height:100%;
border-radius: 15px;
object-fit: cover;
object-position: center;
}
}
.auto_detail{
float: left;
width: calc(100% - 60px);
padding-left:15px;
h4{
margin:0px;
padding: 0px;
color: #282438;
font-weight: 400;
padding-bottom:5px;
font-size: 16px;
strong{
font-weight: 500;
}
}
.auto_detail_inner{
border-left:1px dashed #4e4961;
margin-left:10px;
padding-left: 15px;
p{
margin:0px;
padding: 0px;
color: #a29ebf;
font-size: 14px;
}
}
}
}
}
}
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { CarlistsecondPage } from './carlistsecond.page';
describe('CarlistsecondPage', () => {
let component: CarlistsecondPage;
let fixture: ComponentFixture<CarlistsecondPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ CarlistsecondPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(CarlistsecondPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { Location } from '@angular/common';
import { trigger, transition, animate, style } from '@angular/animations';
import { Router, ActivatedRoute } from '@angular/router';
import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service';
import {StorageService } from '../../Config/services/storage.service';
@Component({
selector: 'app-carlistsecond',
templateUrl: './carlistsecond.page.html',
styleUrls: ['./carlistsecond.page.scss'],
})
export class CarlistsecondPage implements OnInit {
userData: any;
carDetails: any;
constructor(
private router: Router,
private route: ActivatedRoute,
private location: Location,
private validationService: ValidationService,
private authenticationService: AuthenticationService,
private storageservice: StorageService,
) {
this.getCarDetails();
}
ngOnInit() {
}
goToPage(path, data= null) {
this.router.navigateByUrl(path, {queryParams: data});
document.body.scrollTop = document.documentElement.scrollTop = 0;
}
goBack() {
this.location.back();
}
getStorgaeData() {
this.userData = JSON.parse(this.storageservice.getLocalStorageItem('userData'));
}
getCarDetails() {
this.authenticationService.get_data('get_carList?user_id=' + this.userData.profile_id).subscribe((data) => {
console.log(data);
if (data.status === 'success') {
this.carDetails = data.data;
}
});
}
}
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 { ChatPage } from './chat.page';
const routes: Routes = [
{
path: '',
component: ChatPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [ChatPage]
})
export class ChatPageModule {}
<ion-header>
<div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button>
<div class="nav_title floatLeft">
<h4>ALLO CHAT</h4>
</div>
<button class="nav_btn nav_btn_text floatRight">
</button>
<div class="clear"></div>
</div>
</ion-header>
<ion-content class="chat_sign_bg home_background">
<div class="chat_chat_wrap">
<ul>
<li class="chat_received">
<div class="chat_message_content">
<p>Hi, Ann Alexander</p>
<span>Apr 13</span><span>10 : 00 am</span>
</div>
<div class="clear"></div>
</li>
<li class="chat_sented">
<div class="chat_message_content">
<p>Hi, I needed a Nutrition expert</p>
<span>Apr 13</span><span>10 : 00 am</span>
</div>
<div class="clear"></div>
</li>
</ul>
</div>
</ion-content>
<ion-footer padding>
<div class="chat_chat_type_wrapper">
<input class="chat_type_text" type="text" placeholder="Type here">
<button class="chat_send">
<ion-icon name="send"></ion-icon>
</button>
<div class="clear"></div>
</div>
</ion-footer>
\ No newline at end of file
.home_background {
background: #f6f5fa;
}
.chat_chat_wrap {
width: 100%;
padding-top: 10px;
padding-bottom: 10px;
}
.chat_chat_wrap ul {
margin: 0px;
padding: 0px;
}
.chat_chat_wrap ul li {
list-style: none;
padding-bottom: 20px;
}
.chat_message_photo {
width: 40px;
height: 40px;
border-radius: 50%;
}
.chat_message_photo img {
width: 100%;
height: 100%;
border-radius: 50%;
}
.chat_message_content {
position: relative;
}
.chat_message_content h6 {
margin: 0px;
padding-bottom: 10px;
font-weight: 400;
}
.chat_message_content p {
margin: 0px;
padding: 15px;
border-radius: 0px;
padding-left: 20px;
padding-right: 20px;
margin-bottom: 5px;
font-weight: 400;
font-size: 16px;
}
.chat_message_content span {
margin: 0px;
color: #a4a1a1;
font-size: 12px;
}
.chat_received {}
.chat_sented {}
.chat_received .chat_message_content {
float: left;
text-align: left;
}
.chat_received .chat_message_content p {
background: #FBD436;
color: #242035;
border-top-right-radius: 15px;
border-bottom-right-radius: 15px;
}
.chat_received .chat_message_content span {
margin-right: 10px;
}
.chat_sented .chat_message_content {
float: right;
text-align: right;
}
.chat_sented .chat_message_content p {
background: #362180;
// color: #fff;
border-top-left-radius: 15px;
border-bottom-left-radius: 15px;
}
.chat_sented .chat_message_content span {
margin-left: 10px;
}
.chat_chat_type_wrapper {
width: 100%;
position: relative;
}
.chat_chat_type_wrapper input {
width: calc(100% - 60px);
background: #fff;
height: 50px;
font-size: 20px;
border: none;
padding-left: 15px;
// color: #fff;
font-weight: 300;
border: 1px solid #dcdae9;
border-radius: 30px;
float: left;
}
.chat_chat_type_wrapper input::placeholder {
color: #dcdae9;
}
.chat_send {
background: transparent;
width: 50px;
height: 50px;
background-color: #39267f;
float: right;
margin-left: 10px;
border-radius: 50%;
color: #fff;
font-size: 20px;
}
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { ChatPage } from './chat.page';
describe('ChatPage', () => {
let component: ChatPage;
let fixture: ComponentFixture<ChatPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ChatPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ChatPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { ChatService } from '../../Config/services/chat.service';
import { Observable } from 'rxjs';
@Component({
selector: 'app-chat',
templateUrl: './chat.page.html',
styleUrls: ['./chat.page.scss'],
})
export class ChatPage implements OnInit {
chat$: Observable<any>;
newMsg: string;
constructor(
public cs: ChatService
) { }
ngOnInit() {
this.cs.create();
}
submit(chatId) {
this.cs.sendMessage(chatId, this.newMsg);
this.newMsg = '';
}
}
...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router'; ...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { DatePage } from './date.page'; import { DatePage } from './date.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -20,6 +20,7 @@ const routes: Routes = [ ...@@ -20,6 +20,7 @@ const routes: Routes = [
FormsModule, FormsModule,
ReactiveFormsModule, ReactiveFormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [DatePage] declarations: [DatePage]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app_header relative"> <div class="app_header relative">
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button>
<div class="nav_title floatLeft"><h4>DATE & TIME</h4></div> <div class="nav_title floatLeft"><h4>{{'Date.Date' | translate:params}}</h4></div>
<button class="nav_btn nav_btn_text floatRight"> <button class="nav_btn nav_btn_text floatRight">
</button> </button>
<div class="clear"></div> <div class="clear"></div>
...@@ -13,10 +13,10 @@ ...@@ -13,10 +13,10 @@
<div class="select_services_wrapper"> <div class="select_services_wrapper">
<ion-item> <ion-item>
<ion-label>Pick Date</ion-label> <ion-label>{{'Date.Pick Date' | translate:params}}</ion-label>
<ion-datetime displayFormat="DD MM YY" [(ngModel)]="myDate" placeholder="Select Date" ></ion-datetime> <ion-datetime displayFormat="DD MM YY" [(ngModel)]="myDate" placeholder="Select Date" ></ion-datetime>
</ion-item> </ion-item>
<h4>Instruction</h4> <h4>{{'Date.Instruction' | translate:params}}</h4>
<textarea rows="6" placeholder="Type here..." [(ngModel)]="Message" ></textarea> <textarea rows="6" placeholder="Type here..." [(ngModel)]="Message" ></textarea>
</div> </div>
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<!-- <h6>{{myDate}}</h6> --> <!-- <h6>{{myDate}}</h6> -->
</ion-col> </ion-col>
<ion-col size="3"> <ion-col size="3">
<button class="next_btn floatRight" (click)="movetoSelectCar()">NEXT</button> <button class="next_btn floatRight" (click)="movetoSelectCar()">{{'Date.Next' | translate:params}}</button>
<div class="clear"></div> <div class="clear"></div>
</ion-col> </ion-col>
</ion-row> </ion-row>
......
...@@ -3,7 +3,8 @@ import { trigger, transition, animate, style } from '@angular/animations'; ...@@ -3,7 +3,8 @@ import { trigger, transition, animate, style } from '@angular/animations';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { Router, ActivatedRoute } from '@angular/router'; import { Router, ActivatedRoute } from '@angular/router';
import { FormBuilder, Validators } from '@angular/forms'; import { FormBuilder, Validators } from '@angular/forms';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
import { StorageService } from '../../Config/services/storage.service';
@Component({ @Component({
selector: 'app-date', selector: 'app-date',
templateUrl: './date.page.html', templateUrl: './date.page.html',
...@@ -14,13 +15,20 @@ export class DatePage implements OnInit { ...@@ -14,13 +15,20 @@ export class DatePage implements OnInit {
Message: any; Message: any;
getData: any; getData: any;
today = new Date(); today = new Date();
lang: any;
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
private location: Location, private location: Location,
private fb: FormBuilder private fb: FormBuilder,
private translateConfigService: TranslateConfigService,
private storageservice: StorageService
) { ) {
console.log(this.myDate); console.log(this.myDate);
this.lang = JSON.parse(this.storageservice.getLocalStorageItem('lang'));
if ( this.lang) {
this.langTrans(this.lang);
}
} }
ngOnInit() { ngOnInit() {
...@@ -43,4 +51,7 @@ export class DatePage implements OnInit { ...@@ -43,4 +51,7 @@ export class DatePage implements OnInit {
const passData = {subservice_id: this.getData.sub_id, booking_date: this.myDate , message: this.Message, sub_name: this.getData.sub_name,main_name:this.getData.main_name ,type:1} const passData = {subservice_id: this.getData.sub_id, booking_date: this.myDate , message: this.Message, sub_name: this.getData.sub_name,main_name:this.getData.main_name ,type:1}
this.goToPage('/carlist/' + encodeURIComponent(JSON.stringify(passData))); this.goToPage('/carlist/' + encodeURIComponent(JSON.stringify(passData)));
} }
langTrans(lang) {
this.translateConfigService.setLanguage(lang);
}
} }
...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router'; ...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { DeliveryaddressPage } from './deliveryaddress.page'; import { DeliveryaddressPage } from './deliveryaddress.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,6 +19,7 @@ const routes: Routes = [ ...@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [DeliveryaddressPage] declarations: [DeliveryaddressPage]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app_header"> <div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button>
<div class="nav_title floatLeft"><h4>DELIVERY ADDRESS</h4></div> <div class="nav_title floatLeft"><h4>{{'deliveryaddress.Delivery Address' | translate:params}}</h4></div>
<button class="nav_btn nav_btn_text floatRight"> <button class="nav_btn nav_btn_text floatRight">
<div class="add_car" (click)="goToPage('addaddress')"> <div class="add_car" (click)="goToPage('addaddress')">
+ +
...@@ -12,11 +12,10 @@ ...@@ -12,11 +12,10 @@
</div> </div>
</ion-header> </ion-header>
<ion-content> <ion-content>
<div class="delivery_wrapper"> <div class="delivery_wrapper" *ngIf="saveAddress">
<ul> <ul>
<li>adadd</li> <li *ngFor="let address of saveAddress; let i = index" (click)="requestProduct(address)">{{'deliveryaddress.Name' | translate:params}}:{{saveAddress[i].name}}<br>{{'deliveryaddress.Phone' | translate:params}}:{{saveAddress[i].phone_no}}<br>{{'deliveryaddress.House' | translate:params}}:{{saveAddress[i].house_no}}<br>{{'deliveryaddress.Area' | translate:params}}:{{saveAddress[i].area}}<br>{{'deliveryaddress.City' | translate:params}}:{{saveAddress[i].city}}<br>{{'deliveryaddress.Country' | translate:params}}:{{saveAddress[i].country}}</li>
<li>adadd</li>
<li>adadd</li>
</ul> </ul>
</div> </div>
</ion-content> </ion-content>
...@@ -5,7 +5,8 @@ import { Router, ActivatedRoute } from '@angular/router'; ...@@ -5,7 +5,8 @@ import { Router, ActivatedRoute } from '@angular/router';
import { StorageService } from '../../Config/services/storage.service'; import { StorageService } from '../../Config/services/storage.service';
import { ValidationService } from '../../Config/services/validation.service'; import { ValidationService } from '../../Config/services/validation.service';
import { AuthenticationService } from '../../Config/services/auth.service'; import { AuthenticationService } from '../../Config/services/auth.service';
import { Productbooking } from '../../Config/model/productbooking';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
@Component({ @Component({
selector: 'app-deliveryaddress', selector: 'app-deliveryaddress',
templateUrl: './deliveryaddress.page.html', templateUrl: './deliveryaddress.page.html',
...@@ -14,19 +15,30 @@ import { AuthenticationService } from '../../Config/services/auth.service'; ...@@ -14,19 +15,30 @@ import { AuthenticationService } from '../../Config/services/auth.service';
export class DeliveryaddressPage implements OnInit { export class DeliveryaddressPage implements OnInit {
userData: any; userData: any;
saveAddress: any; saveAddress: any;
getData: any;
lang: any;
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
private location: Location, private location: Location,
private storageService: StorageService, private storageService: StorageService,
private authenticationservice: AuthenticationService, private authenticationservice: AuthenticationService,
private validationservice: ValidationService private validationservice: ValidationService,
private translateConfigService: TranslateConfigService
) { ) {
this.saveAddress = null; this.saveAddress = null;
this.getStorgaeData();
this.getuserSavedAddress();
this.lang = JSON.parse(this.storageService.getLocalStorageItem('lang'));
if ( this.lang) {
this.langTrans(this.lang);
}
} }
ngOnInit() { ngOnInit() {
const Data = decodeURIComponent((this.route.snapshot.paramMap.get('id')));
this.getData = JSON.parse(Data);
} }
goToPage(path, data= null) { goToPage(path, data= null) {
...@@ -46,11 +58,39 @@ export class DeliveryaddressPage implements OnInit { ...@@ -46,11 +58,39 @@ export class DeliveryaddressPage implements OnInit {
console.log(data); console.log(data);
if (data.status === 'success') { if (data.status === 'success') {
this.saveAddress = data.data; this.saveAddress = data.data;
console.log(this.saveAddress);
} else { } else {
this.saveAddress = ''; this.saveAddress = '';
this.validationservice.presentToast(data.message); this.validationservice.presentToast(data.message);
} }
}); });
} }
requestProduct(addressData) {
if (addressData) {
this.validationservice.presentLoader();
console.log(this.getData);
this.getData.delivery_adressId = 2;
const passData: Productbooking = {
user_id : this.getData.user_id,
delivery_adressId : addressData.id,
prod_id : this.getData.prod_id,
car_id : this.getData.car_id
};
// this.authenticationservice.post_data('request_product', passData).subscribe((data) => {
// console.log(data)
// if (data.status === 'success') {
// this.goToPage('waiting1');
// }
// });
const This = this;
// tslint:disable-next-line: only-arrow-functions
setTimeout(function() {
This.validationservice.dismissLoader();
This.goToPage('waiting1');
}, 3000);
}
}
langTrans(lang) {
this.translateConfigService.setLanguage(lang);
}
} }
...@@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common'; ...@@ -3,7 +3,7 @@ import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { HomePage } from './home.page'; import { HomePage } from './home.page';
@NgModule({ @NgModule({
...@@ -11,6 +11,7 @@ import { HomePage } from './home.page'; ...@@ -11,6 +11,7 @@ import { HomePage } from './home.page';
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild([ RouterModule.forChild([
{ {
path: '', path: '',
......
...@@ -15,8 +15,8 @@ ...@@ -15,8 +15,8 @@
<ion-content> <ion-content>
<div class="home_wrapper"> <div class="home_wrapper">
<div class="location_box"> <div class="location_box">
<div class="location_bar"> <div class="location_bar" *ngIf="displayLocationData">
Infopark,Kakkanad {{displayLocationData}}
</div> </div>
</div> </div>
...@@ -24,21 +24,21 @@ ...@@ -24,21 +24,21 @@
<ion-row> <ion-row>
<ion-col class="textCenter" (click)="goToPage('roadassistance')"> <ion-col class="textCenter" (click)="goToPage('roadassistance')">
<img src="../../assets/img/asset_menu1.png"> <img src="../../assets/img/asset_menu1.png">
<p>Road <br>Assistance</p> <p>Road<br>{{'home.Assistance' | translate:params}}</p>
</ion-col> </ion-col>
<ion-col class="textCenter" (click)="goToPage('listingservice')"> <ion-col class="textCenter" (click)="goToPage('listingservice')">
<img src="../../assets/img/asset_menu2.png"> <img src="../../assets/img/asset_menu2.png">
<p>Car<br>Services</p> <p>{{'home.Car' | translate:params}}<br>{{'home.Services' | translate:params}}</p>
</ion-col> </ion-col>
<ion-col class="textCenter" (click)="goToPage('purchaseparts')"> <ion-col class="textCenter" (click)="goToPage('purchaseparts')">
<img src="../../assets/img/asset_menu3.png"> <img src="../../assets/img/asset_menu3.png">
<p>Parts<br>Purchase</p> <p>{{'home.Parts' | translate:params}}<br>{{'home.Purchase' | translate:params}}</p>
</ion-col> </ion-col>
</ion-row> </ion-row>
</div> </div>
<div class="header_submenu"> <div class="header_submenu">
<h4>People most purchased</h4> <h4>{{'home.People most purchased' | translate:params}}</h4>
<button class="more_btn" (click)="goToPage('purchaseparts')">More</button> <button class="more_btn" (click)="goToPage('purchaseparts')">{{'home.more' | translate:params}}</button>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div class="product_section" *ngIf="peopleMostpurchasedList" > <div class="product_section" *ngIf="peopleMostpurchasedList" >
...@@ -57,68 +57,32 @@ ...@@ -57,68 +57,32 @@
</div> </div>
<div class="appointment_slider"> <div class="appointment_slider">
<ion-slides pager="false"> <ion-slides pager="false">
<ion-slide> <ion-slide *ngFor="let service of bookServiceDeatils; let i = index;" >
<div class="appointment_card"> <div class="appointment_card" >
<ion-row> <ion-row >
<ion-col col-8 class="p0"> <ion-col col-8 class="p0">
<h4>You have a service</h4>
<h6><strong>Today 12:00pm,</strong> June 26th</h6> <h6>Offer End on 10/11/2019</h6>
</ion-col>
<ion-col col-4 class="p0">
<p>2 Services</p>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="p0">
<h3>Jaguar</h3>
<div class="clear"></div>
</ion-col>
</ion-row>
</div>
</ion-slide>
<ion-slide>
<div class="appointment_card">
<ion-row>
<ion-col col-8 class="p0">
<h4>You have a service</h4>
<h6><strong>Today 12:00pm,</strong> June 26th</h6>
</ion-col>
<ion-col col-4 class="p0">
<p>2 Services</p>
</ion-col>
</ion-row>
<ion-row>
<ion-col class="p0">
<h3>Jaguar</h3>
<div class="clear"></div>
</ion-col>
</ion-row>
</div>
</ion-slide>
<ion-slide>
<div class="appointment_card">
<ion-row>
<ion-col col-8 class="p0">
<h4>You have a service</h4>
<h6><strong>Today 12:00pm,</strong> June 26th</h6>
</ion-col> </ion-col>
<ion-col col-4 class="p0"> <ion-col col-4 class="p0">
<p>2 Services</p> <p></p>
</ion-col> </ion-col>
</ion-row> </ion-row>
<ion-row> <ion-row>
<ion-col class="p0"> <ion-col class="p0">
<h3>Jaguar</h3> <h3>Tyres available at <strong>50%</strong> Offer</h3>
<div class="clear"></div> <div class="clear"></div>
</ion-col> </ion-col>
</ion-row> </ion-row>
</div> </div>
</ion-slide> </ion-slide>
</ion-slides> </ion-slides>
</div> </div>
<div class="header_submenu"> <div class="header_submenu">
<h4>Products for you</h4> <h4>{{'home.Products for you' | translate:params}}</h4>
<button class="more_btn" (click)="goToPage('purchaseparts')">More</button> <button class="more_btn" (click)="goToPage('purchaseparts')">{{'home.more' | translate:params}}</button>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div class="product_section" *ngIf="productsForUserList"> <div class="product_section" *ngIf="productsForUserList">
...@@ -165,20 +129,35 @@ ...@@ -165,20 +129,35 @@
</ion-col> </ion-col>
</ion-row> </ion-row>
</div> --> </div> -->
<!-- <div class="home_main_stack_menu" *ngIf="mainServicesList">
<ion-row >
<ion-col class="textCenter">
<p></p>
</ion-col>
</ion-row>
<br>
</div> -->
<div class="header_submenu"> <div class="header_submenu">
<h4>Avilable Services</h4> <h4>{{'home.Services' | translate:params}}</h4>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div class="home_main_stack_menu" *ngIf="mainServicesList"> <ion-grid>
<ion-row *ngFor="let service of mainServicesList; let i = index " (click)="bookService(service)"> <div class="home_main_stack_menu" *ngFor="let service of mainServicesList; let i = index " (click)="bookService(service)">
<ion-col class="textCenter">
<ion-row >
<ion-col class="textCenter" >
<img [src] ="getImage(service.image)"> <img [src] ="getImage(service.image)">
<p>{{service.service_name}}</p> <p>{{service.service_name}}</p>
</ion-col> </ion-col>
</ion-row> </ion-row>
<br>
</div> </div>
</ion-grid>
<!-- <div class="header_submenu"> <!-- <div class="header_submenu">
<h4>Parts for you</h4> <h4>Parts for you</h4>
<button class="more_btn">More</button> <button class="more_btn">More</button>
...@@ -227,24 +206,24 @@ ...@@ -227,24 +206,24 @@
<ion-row> <ion-row>
<ion-col (click)="goToPage('settings')"> <ion-col (click)="goToPage('settings')">
<img src="../../assets/img/asset_setting.png"> <img src="../../assets/img/asset_setting.png">
<p>Settings</p> <p>{{'home.Settings' | translate:params}}</p>
</ion-col> </ion-col>
<ion-col (click)="goToPage('profile')"> <ion-col (click)="goToPage('profile')">
<img src="../../assets/img/asset_profile.png"> <img src="../../assets/img/asset_profile.png">
<p>Profile</p> <p>{{'home.Profile' | translate:params}}</p>
</ion-col> </ion-col>
<ion-col (click)="logout()"> <ion-col (click)="logout()">
<img src="../../assets/img/asset_logout.png"> <img src="../../assets/img/asset_logout.png">
<p>Logout</p> <p>{{'home.Logout' | translate:params}}</p>
</ion-col> </ion-col>
</ion-row> </ion-row>
</div> </div>
<div class="menu_inner" *ngIf="!login"> <div class="menu_inner" *ngIf="!login">
<ion-row> <ion-row>
<ion-col> <ion-col>
<h6>Are you sure to logout ?</h6> <h6>{{'home.Are you sure to logout ?' | translate:params}}</h6>
<button class="logout_btn floatLeft" (click)="toLogin()">Logout</button> <button class="logout_btn floatLeft" (click)="toLogin()">{{'home.Logout' | translate:params}}</button>
<button class="cancel_btn floatRight" (click)="menuToggle()">Cancel</button> <button class="cancel_btn floatRight" (click)="menuToggle()">{{'home.Cancel' | translate:params}}</button>
</ion-col> </ion-col>
</ion-row> </ion-row>
</div> </div>
......
...@@ -5,6 +5,9 @@ import { trigger, transition, animate, style } from '@angular/animations'; ...@@ -5,6 +5,9 @@ import { trigger, transition, animate, style } from '@angular/animations';
import { AuthenticationService } from '../../Config/services/auth.service'; import { AuthenticationService } from '../../Config/services/auth.service';
import {StorageService } from '../../Config/services/storage.service'; import {StorageService } from '../../Config/services/storage.service';
import { ValidationService } from '../../Config/services/validation.service'; import { ValidationService } from '../../Config/services/validation.service';
import { NativeGeocoder, NativeGeocoderReverseResult, NativeGeocoderOptions } from '@ionic-native/native-geocoder/ngx';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
declare var google;
@Component({ @Component({
selector: 'app-home', selector: 'app-home',
templateUrl: 'home.page.html', templateUrl: 'home.page.html',
...@@ -22,39 +25,49 @@ import { ValidationService } from '../../Config/services/validation.service'; ...@@ -22,39 +25,49 @@ import { ValidationService } from '../../Config/services/validation.service';
] ]
}) })
export class HomePage { export class HomePage {
lang: any;
locationData: any;
menuShow = false; menuShow = false;
login = true; login = true;
userData: any; userData: any;
mainServicesList = []; mainServicesList = [];
peopleMostpurchasedList = []; peopleMostpurchasedList = [];
productsForUserList = []; productsForUserList = [];
bookServiceDeatils = [];
address: any;
displayLocationData = null;
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
private location: Location, private location: Location,
private authenticationservice: AuthenticationService, private authenticationservice: AuthenticationService,
private storageservice: StorageService, private storageservice: StorageService,
private validationservice: ValidationService private validationservice: ValidationService,
private nativeGeocoder: NativeGeocoder,
private translateConfigService: TranslateConfigService
) { ) {
if (this.storageservice.isLoggednIn()) {
this.userData = JSON.parse(this.storageservice.getLocalStorageItem('userData')); this.userData = JSON.parse(this.storageservice.getLocalStorageItem('userData'));
this.locationData = JSON.parse(this.storageservice.getLocalStorageItem('location'));
this.lang = JSON.parse(this.storageservice.getLocalStorageItem('lang'));
if ( this.lang) {
this.langTrans();
}
}
console.log(this.userData); console.log(this.userData);
this.getMainServiceList(); this.getMainServiceList();
this.getpeopleMostpurchasedList(); this.getpeopleMostpurchasedList();
this.getProductsforYouList(); this.getProductsforYouList();
this.getServiceBookedList();
this.getLocationData(this.locationData.lat, this.locationData.lng);
} }
goToPage(path, data = null) { goToPage(path, data = null) {
this.router.navigateByUrl(path, {queryParams: data}); this.router.navigateByUrl(path, {queryParams: data});
document.body.scrollTop = document.documentElement.scrollTop = 0; document.body.scrollTop = document.documentElement.scrollTop = 0;
// this.logout();
} }
goBack() { goBack() {
this.location.back(); this.location.back();
} }
toLogin() { toLogin() {
this.menuShow = !this.menuShow; this.menuShow = !this.menuShow;
this.storageservice.removeLocalStorageItem('userData'); this.storageservice.removeLocalStorageItem('userData');
...@@ -63,10 +76,8 @@ export class HomePage { ...@@ -63,10 +76,8 @@ export class HomePage {
menuToggle() { menuToggle() {
this.menuShow = !this.menuShow; this.menuShow = !this.menuShow;
} }
logout() { logout() {
this.login = !this.login; this.login = !this.login;
} }
getMainServiceList() { getMainServiceList() {
this.authenticationservice.get_data('get_mainservicelist').subscribe((data) => { this.authenticationservice.get_data('get_mainservicelist').subscribe((data) => {
...@@ -97,7 +108,7 @@ getProductsforYouList() { ...@@ -97,7 +108,7 @@ getProductsforYouList() {
}); });
} }
getImage(imageurl) { getImage(imageurl) {
return imageurl; return 'https://techlabz.in/allorepair' + imageurl;
} }
bookService(service) { bookService(service) {
console.log(service); console.log(service);
...@@ -108,4 +119,25 @@ purchaseProduct(id) { ...@@ -108,4 +119,25 @@ purchaseProduct(id) {
console.log(id); console.log(id);
this.goToPage('/productbooking/' + encodeURIComponent(JSON.stringify(id))); this.goToPage('/productbooking/' + encodeURIComponent(JSON.stringify(id)));
} }
getServiceBookedList() {
this.authenticationservice.get_data('get_userbookedServiceDetails?user_id=' + this.userData.id)
.subscribe((data) => {
if (data.status === 'success') {
this.bookServiceDeatils = data.data;
}
});
}
getLocationData(lat, lng) {
this.authenticationservice.getGoogleLocationData(lat, lng).subscribe(data => {
console.log(data);
if ( data.status === 'OK') {
this.displayLocationData = data.results[2].formatted_address;
console.log('address' , this.displayLocationData);
}
});
}
langTrans() {
this.translateConfigService.setLanguage(this.lang);
}
} }
...@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core'; ...@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router'; import { Routes, RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { ListingservicePage } from './listingservice.page'; import { ListingservicePage } from './listingservice.page';
...@@ -18,6 +18,7 @@ const routes: Routes = [ ...@@ -18,6 +18,7 @@ const routes: Routes = [
imports: [ imports: [
CommonModule, CommonModule,
FormsModule, FormsModule,
TranslateModule.forChild(),
IonicModule, IonicModule,
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
......
...@@ -3,17 +3,17 @@ ...@@ -3,17 +3,17 @@
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button>
<div class="nav_title floatLeft"> <div class="nav_title floatLeft">
<h4>Select Category</h4> <h4>{{'ListingServices.Select Category' | translate:params}}</h4>
</div> </div>
<button class="nav_btn nav_btn_text floatRight"> <button class="nav_btn nav_btn_text floatRight">
</button> </button>
<div class="clear"></div> <div class="clear"></div>
<div class="seach_bar_outer"> <!-- <div class="seach_bar_outer">
<div class="search_bar"> <div class="search_bar">
<input class="" placeholder="Services or Problems..."> <input class="" placeholder="Services or Problems...">
</div> </div>
</div> </div> -->
</div> </div>
</ion-header> </ion-header>
<ion-content> <ion-content>
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
<h6>{{serviceDetails}}</h6> <h6>{{serviceDetails}}</h6>
</ion-col> </ion-col>
<ion-col> <ion-col>
<button class="next_btn floatRight" (click)="getsubserviceList()">NEXT</button> <button class="next_btn floatRight" (click)="getsubserviceList()">{{'ListingServices.Next' | translate:params}}</button>
<div class="clear"></div> <div class="clear"></div>
</ion-col> </ion-col>
</ion-row> </ion-row>
......
...@@ -4,7 +4,7 @@ import { Location } from '@angular/common'; ...@@ -4,7 +4,7 @@ import { Location } from '@angular/common';
import { AuthenticationService } from '../../Config/services/auth.service'; import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service'; import { ValidationService} from '../../Config/services/validation.service';
import {StorageService } from '../../Config/services/storage.service'; import {StorageService } from '../../Config/services/storage.service';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
@Component({ @Component({
selector: 'app-listingservice', selector: 'app-listingservice',
templateUrl: './listingservice.page.html', templateUrl: './listingservice.page.html',
...@@ -16,6 +16,7 @@ export class ListingservicePage implements OnInit { ...@@ -16,6 +16,7 @@ export class ListingservicePage implements OnInit {
displayFooter: boolean; displayFooter: boolean;
serviceDetails: any; serviceDetails: any;
id: any; id: any;
lang: any;
constructor( constructor(
private validationService: ValidationService, private validationService: ValidationService,
private authenticationService: AuthenticationService, private authenticationService: AuthenticationService,
...@@ -23,11 +24,16 @@ export class ListingservicePage implements OnInit { ...@@ -23,11 +24,16 @@ export class ListingservicePage implements OnInit {
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
private location: Location, private location: Location,
private translateConfigService: TranslateConfigService
) { ) {
this.errorMsg = ''; this.errorMsg = '';
this.displayFooter = false; this.displayFooter = false;
this.serviceDetails = ''; this.serviceDetails = '';
this.id = ''; this.id = '';
this.lang = JSON.parse(this.storageservice.getLocalStorageItem('lang'));
if ( this.lang) {
this.langTrans(this.lang);
}
} }
ngOnInit() { ngOnInit() {
...@@ -65,4 +71,7 @@ goToPage(path, data= null) { ...@@ -65,4 +71,7 @@ goToPage(path, data= null) {
goBack() { goBack() {
this.location.back(); this.location.back();
} }
langTrans(lang) {
this.translateConfigService.setLanguage(lang);
}
} }
...@@ -2,6 +2,7 @@ import { NgModule } from '@angular/core'; ...@@ -2,6 +2,7 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router'; import { Routes, RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
...@@ -20,6 +21,7 @@ const routes: Routes = [ ...@@ -20,6 +21,7 @@ const routes: Routes = [
FormsModule, FormsModule,
ReactiveFormsModule, ReactiveFormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [LoginPage] declarations: [LoginPage]
......
<ion-content> <ion-content>
<div class="login_wrapper"> <div class="login_wrapper">
<h1>Hi!</h1> <h1>{{'login.Hi' | translate:params}}</h1>
<h3>Login to Continue</h3> <h3>{{'login.Login To Continue' | translate:params}}</h3>
<div class="login_form"> <div class="login_form">
<form [formGroup]="loginForm"> <form [formGroup]="loginForm">
<div class="row"> <div class="row">
...@@ -10,17 +10,37 @@ ...@@ -10,17 +10,37 @@
<div class="row"> <div class="row">
<ion-input formControlName="user_password" placeholder="Password" type="password"></ion-input> <ion-input formControlName="user_password" placeholder="Password" type="password"></ion-input>
</div> </div>
<!-- <div class="row">
<p>I am A ??</p>
<ion-select placeholder="" style="color: white;" >
<ion-select-option value="" style="color: white;">Country Name</ion-select-option>
</ion-select>
</div> -->
<!-- <div class="row">
<button class="login_btn" (click)="login()">Login as Customer</button>
</div> -->
<div class="row"> <div class="row">
<button class="login_btn" (click)="login()">Sign In</button> <div class="social_div">
<div class="social_btn" style="border-right:1px solid rgba(215, 213, 228, 1); color: white;" (click)="customer()">
{{'login.Customer' | translate:params}}
</div>
<div class="social_btn" (click)="Road_assistant()">
{{'login.Road Asssistant' | translate:params}}
</div>
</div>
</div> </div>
<div class="row"> <div class="row">
<p (click)="goToPage('forgot')">Forgot Password ?</p> <p (click)="goToPage('forgot')"> {{'login.Forgot Password' | translate:params}}</p>
</div> </div>
</form> </form>
</div> </div>
<div class="sigup_footer" (click)="istoggle()"> <div class="sigup_footer" (click)="istoggle()">
<img src="../../assets/img/asset_signup_arrow.png"><br> <img src="../../assets/img/asset_signup_arrow.png"><br>
Sign Up {{'login.Sign Up' | translate:params}}
</div> </div>
</div> </div>
</ion-content> </ion-content>
...@@ -28,22 +48,31 @@ ...@@ -28,22 +48,31 @@
<ion-content> <ion-content>
<div class="signup_wrapper"> <div class="signup_wrapper">
<div class="sigin_header" (click)="istoggle()"> <div class="sigin_header" (click)="istoggle()">
Sign In<br> {{'login.Sign In' | translate:params}}<br>
<img src="../../assets/img/asset_signin_arrow.png"> <img src="../../assets/img/asset_signin_arrow.png">
</div> </div>
<h1>Sign Up</h1> <h1> {{'login.Sign Up' | translate:params}}</h1>
<div class="signup_form"> <div class="signup_form">
<form [formGroup]="signupForm"> <form [formGroup]="signupForm">
<div class="row"> <div class="row">
<p>Your Full Name</p> <p style="text-align: center;"><b><strong>{{'login.I am A!!' | translate:params}}</strong></b></p>
<ion-select formControlName="user_type">
<ion-select-option value=1> {{'login.Customer' | translate:params}}</ion-select-option>
<ion-select-option value=5> {{'login.Road Asssistant' | translate:params}}</ion-select-option>
</ion-select>
</div>
<div class="row">
<p>{{'login.Full Name' | translate:params}}</p>
<ion-input formControlName="user_name" type="text"></ion-input> <ion-input formControlName="user_name" type="text"></ion-input>
</div> </div>
<div class="row"> <div class="row">
<p>Email Address</p> <p>{{'login.Email' | translate:params}}</p>
<ion-input formControlName="user_email" type="text"></ion-input> <ion-input formControlName="user_email" type="text"></ion-input>
</div> </div>
<div class="row"> <div class="row">
<p>Phone Number</p> <p>{{'login.Phone Number' | translate:params}}</p>
<ion-row class="p0"> <ion-row class="p0">
<ion-col size="4"> <ion-col size="4">
<ion-select placeholder="" formControlName="user_phonecode"> <ion-select placeholder="" formControlName="user_phonecode">
...@@ -56,7 +85,7 @@ ...@@ -56,7 +85,7 @@
</ion-row> </ion-row>
</div> </div>
<div class="row"> <div class="row">
<p>Country</p> <p>{{'login.Country' | translate:params}}</p>
<ion-input type="text" formControlName="user_country"></ion-input> <ion-input type="text" formControlName="user_country"></ion-input>
</div> </div>
<!-- <div class="row"> <!-- <div class="row">
...@@ -68,22 +97,22 @@ ...@@ -68,22 +97,22 @@
<ion-input type="text"></ion-input> <ion-input type="text"></ion-input>
</div> --> </div> -->
<div class="row"> <div class="row">
<p>Area</p> <p>{{'login.Area' | translate:params}}</p>
<ion-input type="text"formControlName="user_area" ></ion-input> <ion-input type="text"formControlName="user_area" ></ion-input>
</div> </div>
<div class="row"> <div class="row">
<p>House name/Building</p> <p>{{'login.House Name/Building' | translate:params}}</p>
<ion-input type="text"formControlName="user_address" ></ion-input> <ion-input type="text"formControlName="user_address" ></ion-input>
</div> </div>
<div class="row"> <div class="row">
<h6>This address will be saved as your permanent address. You can change it at any time.</h6> <h6>{{'login.This address will be saved as your permamanent address' | translate:params}}.{{'login.You can change it at any time' | translate:params}}.</h6>
</div> </div>
<div class="row"> <div class="row">
<button class="signup_btn" (click)="signIn()">Next</button> <button class="signup_btn" (click)="signIn()">{{'login.Next' | translate:params}}</button>
</div> </div>
<div class="row textCenter"> <div class="row textCenter">
<p>By Creating Account, I agree to allo repar's<br> <p>{{'login.By Creating Account' | translate:params}}, {{'login.I agree to allorepars' | translate:params}}<br>
<a>Terms & Conditions</a></p> <a>{{'login.Terms & Conditions' | translate:params}}</a></p>
</div> </div>
</form> </form>
</div> </div>
......
...@@ -31,6 +31,13 @@ ...@@ -31,6 +31,13 @@
color:#fff; color:#fff;
height: 40px; height: 40px;
} }
ion-select-option{
text-align: center;
background-image: linear-gradient(to right, #5742a5 , #7a60da);
border-radius: 20px;
color:#fff;
height: 40px;
}
.login_btn{ .login_btn{
height: 40px; height: 40px;
width: 100%; width: 100%;
...@@ -45,6 +52,20 @@ ...@@ -45,6 +52,20 @@
text-align: center; text-align: center;
padding-top: 20px; padding-top: 20px;
} }
.social_div {
border: 1px solid rgba(215, 213, 228, 1);
height: 45px;
border-radius: 20px;
.social_btn {
display: inline-block;
width: 50%;
text-align: center;
height: 100%;
font-size: 15px;
padding: 9px;
color: white;
}
}
} }
} }
.sigup_footer{ .sigup_footer{
......
...@@ -5,6 +5,8 @@ import { FormBuilder, Validators } from '@angular/forms'; ...@@ -5,6 +5,8 @@ import { FormBuilder, Validators } from '@angular/forms';
import { StorageService } from '../../Config/services/storage.service'; import { StorageService } from '../../Config/services/storage.service';
import { ValidationService } from '../../Config/services/validation.service'; import { ValidationService } from '../../Config/services/validation.service';
import { AuthenticationService } from '../../Config/services/auth.service'; import { AuthenticationService } from '../../Config/services/auth.service';
import { TranslateService } from '@ngx-translate/core';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
@Component({ @Component({
selector: 'app-login', selector: 'app-login',
templateUrl: './login.page.html', templateUrl: './login.page.html',
...@@ -36,7 +38,8 @@ export class LoginPage implements OnInit { ...@@ -36,7 +38,8 @@ export class LoginPage implements OnInit {
user_address: ['', Validators.required], user_address: ['', Validators.required],
device_id: ['', Validators.required], device_id: ['', Validators.required],
user_lat: ['', Validators.required], user_lat: ['', Validators.required],
user_lng: ['', Validators.required] user_lng: ['', Validators.required],
user_type: ['', Validators.required]
}); });
loginForm = this.fb.group({ loginForm = this.fb.group({
user_email: ['', Validators.compose([Validators.required])], user_email: ['', Validators.compose([Validators.required])],
...@@ -52,9 +55,12 @@ export class LoginPage implements OnInit { ...@@ -52,9 +55,12 @@ export class LoginPage implements OnInit {
private fb: FormBuilder, private fb: FormBuilder,
private storageService: StorageService, private storageService: StorageService,
private authenticationservice: AuthenticationService, private authenticationservice: AuthenticationService,
private validationservice: ValidationService private validationservice: ValidationService,
private translateService: TranslateService,
private translateConfigService: TranslateConfigService
) { ) {
this.getStorageData(); this.getStorageData();
this.langTrans();
} }
ngOnInit() { ngOnInit() {
...@@ -80,15 +86,19 @@ export class LoginPage implements OnInit { ...@@ -80,15 +86,19 @@ export class LoginPage implements OnInit {
user_phonecode: +33, user_phonecode: +33,
}); });
console.log(this.signupForm.value); console.log(this.signupForm.value);
this.storageService.removeLocalStorageItem('userData');
if ( this.signupForm.valid) {
this.goToPage('/password/' + JSON.stringify(this.signupForm.value)); this.goToPage('/password/' + JSON.stringify(this.signupForm.value));
} else {
this.validationservice.presentToast('Please fill all fields');
}
} }
getStorageData() { getStorageData() {
this.locationData = JSON.parse(this.storageService.getLocalStorageItem('location')); this.locationData = JSON.parse(this.storageService.getLocalStorageItem('location'));
console.log(this.locationData); console.log(this.locationData);
} }
login() { customer() {
this.storageService.removeLocalStorageItem('userData'); this.storageService.removeLocalStorageItem('userData');
console.log('test'); console.log('test');
if (!this.storageService.isLoggednIn()) { if (!this.storageService.isLoggednIn()) {
...@@ -115,5 +125,34 @@ export class LoginPage implements OnInit { ...@@ -115,5 +125,34 @@ export class LoginPage implements OnInit {
} }
} }
} }
Road_assistant() {
this.storageService.removeLocalStorageItem('userData');
console.log('test');
if (!this.storageService.isLoggednIn()) {
this.loginForm.patchValue({
device_id: 123456,
user_lat: this.locationData.lat,
user_lng: this.locationData.lng,
user_type: 5
});
if ( this.loginForm.valid) {
this.validationservice.presentLoader();
this.authenticationservice.post_data('user_login', this.loginForm.value).subscribe((data) => {
console.log(data);
this.validationservice.dismissLoader();
if ( data.status === 'success') {
this.goToPage('home');
this.storageService.setLocalStorageItem('userData', JSON.stringify(data.data));
} else {
this.validationservice.presentToast(data.message);
}
});
} else {
this.validationservice.presentToast('Please fill all fields');
}
}
}
langTrans() {
this.translateConfigService.setLanguage('fr');
}
} }
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { AgmCoreModule } from '@agm/core';
import { AgmDirectionModule } from 'agm-direction';
import { IonicModule } from '@ionic/angular';
import { MapPage } from './map.page';
const routes: Routes = [
{
path: '',
component: MapPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
AgmDirectionModule,
AgmCoreModule.forRoot({
apiKey: 'AIzaSyBn6hOlr6YHcZAmbptlsmbhvH5iQllWflE'
}),
RouterModule.forChild(routes)
],
declarations: [MapPage]
})
export class MapPageModule {}
<ion-header>
<div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button>
<div class="nav_title floatLeft">
<h4>REACH</h4>
</div>
<button class="nav_btn nav_btn_text floatRight">
</button>
<div class="clear"></div>
</div>
</ion-header>
<ion-content>
<div class="trackmap_wrapper">
<agm-map [latitude]="lat" [longitude]="lng">
<agm-direction [origin]="origin" [destination]="destination" [renderOptions]="renderOptions" [markerOptions]="markerOptions">
</agm-direction>
</agm-map>
</div>
<!-- <div class="footer_bay">
<div class="rider_image "></div>
<div class="rider_detail ">
<h5>John Doe</h5>
<p>Rider</p>
</div>
<div class="rider_call ">Accept</div>
<div class="clear "></div>
</div> -->
</ion-content>
\ No newline at end of file
.trackmap_wrapper {
width: 100%;
height: calc(100vh - 50px);
agm-map {
width: 100%;
height: 100%;
}
}
.footer_bay {
position: fixed;
bottom: 0px;
left: 0px;
right: 0px;
bottom: 0px;
padding: 10px;
background: #fff;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
.rider_image {
width: 50px;
height: 50px;
border-radius: 50%;
float: left;
background-color: #a8a8a8;
img {
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
border-radius: 50%;
}
}
.rider_detail {
float: left;
padding: 5px;
padding-left: 10px;
width: calc(100% - 160px);
h5 {
margin: 0px;
padding: 0px;
color: rgba(59, 57, 77, 1);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
p {
margin: 0px;
padding: 0px;
color: rgba(176, 174, 199, 1);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
.rider_time {
float: left;
width: 110px;
font-size: 35px;
font-weight: 900;
color: rgba(59, 57, 77, 1);
padding: 5px;
padding-left: 15px;
span {
color: rgba(176, 174, 199, 1);
font-size: 16px;
padding-left: 5px;
font-weight: 400;
}
}
.rider_call {
background-color: rgba(53, 203, 171, 1);
color: #fff;
float: right;
height: 50px;
padding: 14px;
font-size: 16px;
width: 100px;
border-radius: 5px;
font-weight: 700;
padding-left: 20px;
padding-right: 20px;
text-align: center;
}
}
\ No newline at end of file
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { MapPage } from './map.page';
describe('MapPage', () => {
let component: MapPage;
let fixture: ComponentFixture<MapPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MapPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MapPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { MouseEvent } from '@agm/core';
import {StorageService } from '../../Config/services/storage.service';
import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service';
@Component({
selector: 'app-map',
templateUrl: './map.page.html',
styleUrls: ['./map.page.scss'],
})
export class MapPage implements OnInit {
locationData: any;
map: any;
address: string;
public lat ;
public lng ;
public origin: any;
public destination: any;
public renderOptions: any;
public markerOptions: any;
constructor(
private storageService: StorageService,
private validationService: ValidationService,
private authenticationService: AuthenticationService,
) { }
ngOnInit() {
this.getStorageData();
}
getDirection() {
this.origin = { lat: this.locationData.lat, lng: this.locationData.lng };
this.destination = { lat: 9.9816, lng: 76.2999 };
this.renderOptions = { polylineOptions: { strokeColor: 'rgba(69, 67, 152,1)' }, suppressMarkers: true };
this.markerOptions = {
origin: {
},
destination: {
}
};
}
getStorageData() {
this.locationData = JSON.parse(this.storageService.getLocalStorageItem('location'));
this.lat = this.locationData.lat;
this.lng = this.locationData.lng;
if ( this.locationData) {
const This = this;
// tslint:disable-next-line: only-arrow-functions
setInterval(function() {
// This.getDirection();
}, 5000);
}
}
}
...@@ -11,73 +11,19 @@ ...@@ -11,73 +11,19 @@
</ion-header> </ion-header>
<ion-content> <ion-content>
<div class="services_wrapper"> <div class="services_wrapper">
<h4>Upcoming Services</h4> <h4>Road Assistant Services</h4>
<ul> <ul>
<li class="up_comingborder" (click)="goToPage('servicedetails')"> <li class="up_comingborder" *ngFor="let service of roadAssistanceBookedDetails ">
<h5>2 Services</h5>
<p>Heating & Air Conditioning, Break System</p>
<div class="pic floatLeft">
<img src="../../assets/img/asset_shop1.png">
</div>
<div class="pic_detail floatLeft">
<h5>Presto towing service</h5>
<h6><strong>Rolls Royce</strong> Ghost</h6>
<p class="p0 arrow">July 26th 2019, 10:00 AM - 10:30 AM</p>
</div>
<div class="clear"></div>
</li>
<h4>February</h4>
<li (click)="goToPage('servicedetails')">
<div class="road_assitance"> <div class="road_assitance">
Road Assistance Road Assistance
</div> </div>
<div class="clear"></div> <div class="pic_detail floatLeft" >
<div class="pic floatLeft"> <!-- <h5>Presto towing service</h5> -->
<img src="../../assets/img/asset_shop1.png"> <!-- <h6><strong>Rolls Royce</strong> Ghost</h6> -->
</div> <p class="p0 arrow" >
<div class="pic_detail floatLeft"> </p>
<h5><strong>Booking ID:</strong>{{service.roadservicerequestid}}</h5>
<h5>Presto towing service</h5> <h5><strong>Date:</strong> {{service.date}}</h5>
<p class="p0 arrow">July 26th 2019, 10:00 AM - 10:30 AM</p>
</div>
<div class="clear"></div>
</li>
<li (click)="goToPage('servicedetails')">
<h5>2 Services</h5>
<p>Heating & Air Conditioning, Break System</p>
<div class="pic floatLeft">
<img src="../../assets/img/asset_shop1.png">
</div>
<div class="pic_detail floatLeft">
<h5>Presto towing service</h5>
<h6><strong>Rolls Royce</strong> Ghost</h6>
<p class="p0 arrow">July 26th 2019, 10:00 AM - 10:30 AM</p>
</div>
<div class="clear"></div>
</li>
<li (click)="goToPage('servicedetails')">
<h5>2 Services</h5>
<p>Heating & Air Conditioning, Break System</p>
<div class="pic floatLeft">
<img src="../../assets/img/asset_shop1.png">
</div>
<div class="pic_detail floatLeft">
<h5>Presto towing service</h5>
<h6><strong>Rolls Royce</strong> Ghost</h6>
<p class="p0 arrow">July 26th 2019, 10:00 AM - 10:30 AM</p>
</div>
<div class="clear"></div>
</li>
<li (click)="goToPage('servicedetails')">
<h5>2 Services</h5>
<p>Heating & Air Conditioning, Break System</p>
<div class="pic floatLeft">
<img src="../../assets/img/asset_shop1.png">
</div>
<div class="pic_detail floatLeft">
<h5>Presto towing service</h5>
<h6><strong>Rolls Royce</strong> Ghost</h6>
<p class="p0 arrow">July 26th 2019, 10:00 AM - 10:30 AM</p>
</div> </div>
<div class="clear"></div> <div class="clear"></div>
</li> </li>
......
...@@ -13,6 +13,8 @@ import { AuthenticationService } from '../../Config/services/auth.service'; ...@@ -13,6 +13,8 @@ import { AuthenticationService } from '../../Config/services/auth.service';
export class MyservicesPage implements OnInit { export class MyservicesPage implements OnInit {
userData: any; userData: any;
serviceList: any; serviceList: any;
roadAssistanceBookedDetails =[];
listofRoadassistanceList: any;
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
...@@ -27,6 +29,7 @@ export class MyservicesPage implements OnInit { ...@@ -27,6 +29,7 @@ export class MyservicesPage implements OnInit {
ngOnInit() { ngOnInit() {
this.getStorageData(); this.getStorageData();
this.getServiceList(); this.getServiceList();
this.getRoadassistancebookedServiceDetails();
} }
...@@ -52,5 +55,16 @@ getServiceList() { ...@@ -52,5 +55,16 @@ getServiceList() {
} }
}); });
} }
getRoadassistancebookedServiceDetails() {
this.authenticationservice.get_data('road_assistancerequestlist?user_id=' + this.userData.profile_id).subscribe((data) => {
console.log(data);
if (data.status === 'success') {
this.roadAssistanceBookedDetails = data.data;
this.listofRoadassistanceList = this.roadAssistanceBookedDetails.length;
console.log( this.listofRoadassistanceList);
}
});
}
} }
...@@ -2,10 +2,10 @@ ...@@ -2,10 +2,10 @@
<ion-content> <ion-content>
<div class="forgot_wrapper"> <div class="forgot_wrapper">
<div class="app_header"> <div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <!-- <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button> -->
<div class="nav_title floatLeft"><h4>Password</h4></div> <div><h4 style="text-align: center;">Set Password</h4></div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div class="forgot_form"> <div class="forgot_form">
...@@ -28,6 +28,7 @@ ...@@ -28,6 +28,7 @@
<div class="row textCenter"> <div class="row textCenter">
<button class="signup_btn" (click)="userSignup()">Sign Up</button> <button class="signup_btn" (click)="userSignup()">Sign Up</button>
</div> </div>
<p style="text-align: center;" (click)="goToPage('login')">Back</p>
</form> </form>
</div> </div>
</div> </div>
......
...@@ -49,9 +49,13 @@ export class PasswordPage implements OnInit { ...@@ -49,9 +49,13 @@ export class PasswordPage implements OnInit {
this.authenticationService.post_data('user_signup', this.userSignupForm).subscribe((data) => { this.authenticationService.post_data('user_signup', this.userSignupForm).subscribe((data) => {
console.log(data); console.log(data);
if (data.status === 'success') { if (data.status === 'success') {
this.storageservice.setLocalStorageItem('userData', JSON.stringify(data.data));
this.validationService.presentToast('Your account created successfully'); this.validationService.presentToast('Your account created successfully');
this.storageservice.setLocalStorageItem('userData', data.data); if ( data.data.user_type === '5') {
this.goToPage('map');
} else {
this.goToPage('home'); this.goToPage('home');
}
} else { } else {
this.validationService.presentToast(data.message); this.validationService.presentToast(data.message);
this.passwordForm.reset(); this.passwordForm.reset();
......
...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router'; ...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { ProductbookingPage } from './productbooking.page'; import { ProductbookingPage } from './productbooking.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,6 +19,7 @@ const routes: Routes = [ ...@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [ProductbookingPage] declarations: [ProductbookingPage]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app_header"> <div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button>
<div class="nav_title floatLeft"><h4>Product Booking</h4></div> <div class="nav_title floatLeft"><h4>{{'ProductBooking.Product Booking' | translate:params}}</h4></div>
<button class="nav_btn nav_btn_text floatRight"> <button class="nav_btn nav_btn_text floatRight">
</button> </button>
...@@ -37,11 +37,11 @@ ...@@ -37,11 +37,11 @@
<hr> <hr>
</div> </div>
<div class="product_btn" (click)="purchaseProduct()"> <div class="product_btn" (click)="purchaseProduct()">
Purchase {{'ProductBooking.Purchase' | translate:params}}
</div> </div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<h5>Details</h5> <h5>{{'ProductBooking.Details' | translate:params}}</h5>
<p>We promise to help you find the best car tyres Dubai has to offer. <p>We promise to help you find the best car tyres Dubai has to offer.
</p> </p>
<p>There are many significant advantages to purchasing your tyres online, including receiving cost effective pricing and a varied selection. Presto Tyres provide a full selection of branded tyres in Dubai that promise to meet the needs of all customers from motorists.</p> <p>There are many significant advantages to purchasing your tyres online, including receiving cost effective pricing and a varied selection. Presto Tyres provide a full selection of branded tyres in Dubai that promise to meet the needs of all customers from motorists.</p>
......
...@@ -7,7 +7,7 @@ import { Router, ActivatedRoute } from '@angular/router'; ...@@ -7,7 +7,7 @@ import { Router, ActivatedRoute } from '@angular/router';
import { AuthenticationService } from '../../Config/services/auth.service'; import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service'; import { ValidationService} from '../../Config/services/validation.service';
import {StorageService } from '../../Config/services/storage.service'; import {StorageService } from '../../Config/services/storage.service';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
@Component({ @Component({
selector: 'app-productbooking', selector: 'app-productbooking',
templateUrl: './productbooking.page.html', templateUrl: './productbooking.page.html',
...@@ -15,6 +15,7 @@ import {StorageService } from '../../Config/services/storage.service'; ...@@ -15,6 +15,7 @@ import {StorageService } from '../../Config/services/storage.service';
}) })
export class ProductbookingPage implements OnInit { export class ProductbookingPage implements OnInit {
id: any; id: any;
lang: any;
productDetail: any; productDetail: any;
constructor( constructor(
private router: Router, private router: Router,
...@@ -22,10 +23,15 @@ productDetail: any; ...@@ -22,10 +23,15 @@ productDetail: any;
private location: Location, private location: Location,
private validationService: ValidationService, private validationService: ValidationService,
private authenticationservice: AuthenticationService, private authenticationservice: AuthenticationService,
private storageservice: StorageService private storageservice: StorageService,
private translateConfigService: TranslateConfigService
) { ) {
const Data = decodeURIComponent((this.route.snapshot.paramMap.get('id'))); const Data = decodeURIComponent((this.route.snapshot.paramMap.get('id')));
this.id = JSON.parse(Data); this.id = JSON.parse(Data);
this.lang = JSON.parse(this.storageservice.getLocalStorageItem('lang'));
if ( this.lang) {
this.langTrans(this.lang);
}
} }
@ViewChild(IonSlides) slides: IonSlides; @ViewChild(IonSlides) slides: IonSlides;
currentIndex: any; currentIndex: any;
...@@ -63,7 +69,10 @@ productDetail: any; ...@@ -63,7 +69,10 @@ productDetail: any;
}); });
} }
purchaseProduct() { purchaseProduct() {
const PassData = {type: 2}; const PassData = {type: 2 , product_id: this.id };
this.goToPage('/carlist/' + encodeURIComponent(JSON.stringify(PassData))); this.goToPage('/carlist/' + encodeURIComponent(JSON.stringify(PassData)));
} }
langTrans(lang) {
this.translateConfigService.setLanguage(lang);
}
} }
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<div class="nav_title floatLeft"><h4>JOHN DOE</h4></div> <div class="nav_title floatLeft"><h4>JOHN DOE</h4></div>
<button class="nav_btn floatLeft"> <button class="nav_btn floatLeft">
<div class="account_pic"> <div class="account_pic">
<img src="../../assets/img/asset_triangle.png"> <img src="../../assets/img/asset_triangle.png" (click)="goToPage('profilephoto')">
</div> </div>
</button> </button>
<div class="clear"></div> <div class="clear"></div>
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
</div> </div>
<div class="profile_pic" (click)="goToPage('profilephoto')"> <div class="profile_pic" (click)="goToPage('profilephoto')">
<div class="overlay"></div> <div class="overlay"></div>
<img src="../../assets/img/asset_profile_pic.png"> <img [src]="profilePicImgUrl" *ngIf="profilePicImgUrl">
</div> </div>
<div class="" style="height: 300px;"> <div class="" style="height: 300px;">
<div class="profile_wrapper"> <div class="profile_wrapper">
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
</div> </div>
<div class="clear"></div> <div class="clear"></div>
</li> </li>
<li (click)="goToPage('carlist')"> <li (click)="goToPage('carlistsecond')">
<div class="li_image"> <div class="li_image">
<img src="../../assets/img/asset_m3.png"> <img src="../../assets/img/asset_m3.png">
</div> </div>
......
...@@ -10,7 +10,7 @@ import { ValidationService } from '../../Config/services/validation.service'; ...@@ -10,7 +10,7 @@ import { ValidationService } from '../../Config/services/validation.service';
styleUrls: ['./profile.page.scss'], styleUrls: ['./profile.page.scss'],
}) })
export class ProfilePage implements OnInit { export class ProfilePage implements OnInit {
profilePicImgUrl: any;
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
...@@ -21,6 +21,7 @@ export class ProfilePage implements OnInit { ...@@ -21,6 +21,7 @@ export class ProfilePage implements OnInit {
) { } ) { }
ngOnInit() { ngOnInit() {
this.getProfilePic()
} }
goToPage(path, data= null) { goToPage(path, data= null) {
...@@ -34,7 +35,11 @@ export class ProfilePage implements OnInit { ...@@ -34,7 +35,11 @@ export class ProfilePage implements OnInit {
} }
logout() { logout() {
this.storageservice.removeLocalStorageItem('userData'); this.storageservice.removeLocalStorageItem('userData');
this.storageservice.removeLocalStorageItem('profilePic');
this.goToPage('login'); this.goToPage('login');
} }
getProfilePic() {
const data = this.storageservice.getLocalStorageItem('profilePic');
this.profilePicImgUrl = JSON.parse(data);
}
} }
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms'; import { FormsModule,ReactiveFormsModule } 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';
...@@ -19,6 +19,7 @@ const routes: Routes = [ ...@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
ReactiveFormsModule,
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [ProfilephotoPage] declarations: [ProfilephotoPage]
......
...@@ -6,20 +6,25 @@ ...@@ -6,20 +6,25 @@
</button> </button>
<div class="nav_title floatLeft"><h4>PROFILE PHOTO</h4></div> <div class="nav_title floatLeft"><h4>PROFILE PHOTO</h4></div>
<button class="nav_btn floatLeft"> <button class="nav_btn floatLeft">
<div class="account_pic"> <!-- <div class="account_pic">
<img src="../../assets/img/asset_triangle.png"> <img src="../../assets/img/asset_triangle.png">
</div> </div> -->
</button> </button>
<div class="clear"></div> <div class="clear"></div>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div class="profile_pic"> <div class="profile_pic">
<div class="overlay"></div> <div class="overlay"></div>
<img src="../../assets/img/asset_profile_pic.png"> <!-- <img src="../../assets/img/asset_profile_pic.png" *ngIf="!imgURL"> -->
<img [src]="imgURL" *ngIf="imgURL">
</div>
<div padding>
<input #file id="file" type="file" accept='image/*' (change)="preview(file.files)" />
</div> </div>
<div padding> <div padding>
<button class="update_btn">Update</button> <button class="update_btn" (click)="upload()">UPLOAD PHOTO</button>
</div> </div>
</div> </div>
</ion-content> </ion-content>
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
height:290px; height:290px;
position: relative; position: relative;
.overlay{ .overlay{
position: absolute; // position: absolute;
top:0px; top:0px;
left:0px; left:0px;
right:0px; right:0px;
...@@ -85,4 +85,19 @@ box-shadow: inset 0px -110px 84px -32px rgba(273,273,273,1); ...@@ -85,4 +85,19 @@ box-shadow: inset 0px -110px 84px -32px rgba(273,273,273,1);
font-weight: 500; font-weight: 500;
font-size: 16px; font-size: 16px;
} }
input#file {
display: inline-block;
width: 100%;
padding: 100px 0 0 0;
height: 100px;
overflow: hidden;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
background: url('../../assets/img/asset_triangle.png') center center no-repeat;
border-radius: 60px;
background-size: 60px 60px;
}
} }
\ No newline at end of file
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Router,ActivatedRoute } from '@angular/router'; import { Router, ActivatedRoute } from '@angular/router';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { FormBuilder, FormArray, Validators } from '@angular/forms';
import {StorageService } from '../../Config/services/storage.service';
import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service';
@Component({ @Component({
selector: 'app-profilephoto', selector: 'app-profilephoto',
...@@ -8,18 +12,31 @@ import { Location } from '@angular/common'; ...@@ -8,18 +12,31 @@ import { Location } from '@angular/common';
styleUrls: ['./profilephoto.page.scss'], styleUrls: ['./profilephoto.page.scss'],
}) })
export class ProfilephotoPage implements OnInit { export class ProfilephotoPage implements OnInit {
userData: any;
public imagePath;
imgURL: any;
public message: string;
profileUplpadForm = this.fb.group({
user_profilepic: ['' ],
user_id : ['' , Validators.required]
});
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
private location: Location private location: Location,
public fb: FormBuilder,
private storageService: StorageService,
private validationService: ValidationService,
private authenticationService: AuthenticationService,
) { } ) { }
ngOnInit() { ngOnInit() {
this.getStorageData();
} }
goToPage(path,data=null){ goToPage(path, data= null) {
this.router.navigateByUrl(path,{queryParams:data}); this.router.navigateByUrl(path, {queryParams: data});
document.body.scrollTop = document.documentElement.scrollTop = 0; document.body.scrollTop = document.documentElement.scrollTop = 0;
} }
...@@ -27,5 +44,63 @@ export class ProfilephotoPage implements OnInit { ...@@ -27,5 +44,63 @@ export class ProfilephotoPage implements OnInit {
goBack() { goBack() {
this.location.back(); this.location.back();
} }
// onFileChanged(event) {
// const formData = new FormData();
// const reader = new FileReader(); // HTML5 FileReader API
// const file = event.target.files[0];
// if (event.target.files && event.target.files[0]) {
// reader.readAsDataURL(file);
// reader.onload = () => {
// console.log(reader.result);
// formData.append('user_id' , this.userData.id);
// formData.append('user_profilepic' , reader.result);
// };
// }
// }
getStorageData() {
this.userData = JSON.parse(this.storageService.getLocalStorageItem('userData'));
console.log(this.userData);
const data = this.storageService.getLocalStorageItem('profilePic');
this.imgURL = JSON.parse(data);
}
preview(files) {
this.imgURL = null;
if (files.length === 0) {
return;
}
const mimeType = files[0].type;
if (mimeType.match(/image\/*/) == null) {
this.message = 'Only images are supported.';
return;
}
const reader = new FileReader();
this.imagePath = files;
reader.readAsDataURL(files[0]);
reader.onload = (_event) => {
this.imgURL = reader.result;
this.profileUplpadForm.patchValue({
user_profilepic : this.imgURL,
user_id : this.userData.id
});
};
}
upload() {
if(this.profileUplpadForm.value.user_profilepic){
this.validationService.presentLoader();
const formData = new FormData();
formData.append('user_id', this.userData.profile_id);
formData.append('profile_photo' , this.profileUplpadForm.value.user_profilepic);
this.authenticationService.post_data('upload_profilePic' , formData).subscribe((data) => {
this.validationService.dismissLoader();
if (data.status === 'success') {
this.storageService.setProfilePic(JSON.stringify(this.profileUplpadForm.value.user_profilepic));
this.validationService.presentToast(data.message);
this.goToPage('home');
}
});
} else {
this.validationService.presentToast('Please choose an image to upload');
}
}
} }
...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router'; ...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { PurchasepartsPage } from './purchaseparts.page'; import { PurchasepartsPage } from './purchaseparts.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,6 +19,7 @@ const routes: Routes = [ ...@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [PurchasepartsPage] declarations: [PurchasepartsPage]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app_header relative"> <div class="app_header relative">
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button>
<div class="nav_title floatLeft"><h4>Purchase Product</h4></div> <div class="nav_title floatLeft"><h4>{{'Purchaseparts.Purchase product' | translate:params}}</h4></div>
<button class="nav_btn nav_btn_text floatRight"> <button class="nav_btn nav_btn_text floatRight">
</button> </button>
<div class="clear"></div> <div class="clear"></div>
...@@ -16,7 +16,7 @@ ...@@ -16,7 +16,7 @@
<ion-content> <ion-content>
<div class="purchase_wrapper"> <div class="purchase_wrapper">
<div class="header_submenu"> <div class="header_submenu">
<h4>People most purchased</h4> <h4>{{'Purchaseparts.People Most Purchased' | translate:params}}</h4>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
<div class="product_section"> <div class="product_section">
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
</ion-slides> </ion-slides>
</div> </div>
<div class="header_submenu"> <div class="header_submenu">
<h4>People most purchased</h4> <h4>{{'Purchaseparts.Product list' | translate:params}}</h4>
<div class="clear"></div> <div class="clear"></div>
</div> </div>
......
...@@ -5,6 +5,8 @@ import { Router, ActivatedRoute } from '@angular/router'; ...@@ -5,6 +5,8 @@ import { Router, ActivatedRoute } from '@angular/router';
import { AuthenticationService } from '../../Config/services/auth.service'; import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service'; import { ValidationService} from '../../Config/services/validation.service';
import {StorageService } from '../../Config/services/storage.service'; import {StorageService } from '../../Config/services/storage.service';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
@Component({ @Component({
selector: 'app-purchaseparts', selector: 'app-purchaseparts',
...@@ -13,6 +15,7 @@ import {StorageService } from '../../Config/services/storage.service'; ...@@ -13,6 +15,7 @@ import {StorageService } from '../../Config/services/storage.service';
}) })
export class PurchasepartsPage implements OnInit { export class PurchasepartsPage implements OnInit {
peopleMostpurchasedList = []; peopleMostpurchasedList = [];
lang: any;
searchProduct: any; searchProduct: any;
productsList = []; productsList = [];
slideOpts = { slideOpts = {
...@@ -27,11 +30,16 @@ export class PurchasepartsPage implements OnInit { ...@@ -27,11 +30,16 @@ export class PurchasepartsPage implements OnInit {
private location: Location, private location: Location,
private validationService: ValidationService, private validationService: ValidationService,
private authenticationservice: AuthenticationService, private authenticationservice: AuthenticationService,
private storageservice: StorageService private storageservice: StorageService,
private translateConfigService: TranslateConfigService
) { ) {
this.getAllproductsList(); this.getAllproductsList();
this.getpeopleMostpurchasedList(); this.getpeopleMostpurchasedList();
this.searchProduct = ''; this.searchProduct = '';
this.lang = JSON.parse(this.storageservice.getLocalStorageItem('lang'));
if ( this.lang) {
this.langTrans(this.lang);
}
} }
ngOnInit() { ngOnInit() {
} }
...@@ -89,4 +97,7 @@ export class PurchasepartsPage implements OnInit { ...@@ -89,4 +97,7 @@ export class PurchasepartsPage implements OnInit {
this.getAllproductsList(); this.getAllproductsList();
} }
} }
langTrans(lang) {
this.translateConfigService.setLanguage(lang);
}
} }
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 { RoadassiastancecompletedlistPage } from './roadassiastancecompletedlist.page';
const routes: Routes = [
{
path: '',
component: RoadassiastancecompletedlistPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [RoadassiastancecompletedlistPage]
})
export class RoadassiastancecompletedlistPageModule {}
<ion-header>
<ion-toolbar>
<ion-title>roadassiastancecompletedlist</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
</ion-content>
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { RoadassiastancecompletedlistPage } from './roadassiastancecompletedlist.page';
describe('RoadassiastancecompletedlistPage', () => {
let component: RoadassiastancecompletedlistPage;
let fixture: ComponentFixture<RoadassiastancecompletedlistPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ RoadassiastancecompletedlistPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(RoadassiastancecompletedlistPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-roadassiastancecompletedlist',
templateUrl: './roadassiastancecompletedlist.page.html',
styleUrls: ['./roadassiastancecompletedlist.page.scss'],
})
export class RoadassiastancecompletedlistPage implements OnInit {
constructor() { }
ngOnInit() {
}
}
...@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core'; ...@@ -2,7 +2,7 @@ import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router'; import { Routes, RouterModule } from '@angular/router';
import { TranslateModule } from '@ngx-translate/core';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { RoadassistancePage } from './roadassistance.page'; import { RoadassistancePage } from './roadassistance.page';
...@@ -19,6 +19,7 @@ const routes: Routes = [ ...@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [RoadassistancePage] declarations: [RoadassistancePage]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app_header"> <div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button>
<div class="nav_title floatLeft"><h4>ROAD ASSISTANCE</h4></div> <div class="nav_title floatLeft"><h4>{{'Road Assistance.Road Assistance' | translate:params}}</h4></div>
<button class="nav_btn nav_btn_text floatRight"> <button class="nav_btn nav_btn_text floatRight">
</button> </button>
...@@ -12,9 +12,9 @@ ...@@ -12,9 +12,9 @@
<ion-content> <ion-content>
<div class="home_wrapper"> <div class="home_wrapper">
<div class="location_box"> <div class="location_box">
<div class="location_bar"> <!-- <div class="location_bar">
Infopark,Kakkanad Infopark,Kakkanad
</div> </div> -->
</div> </div>
<ul *ngIf="getRoadassistanceList"> <ul *ngIf="getRoadassistanceList">
<li *ngFor="let roadassistant of getRoadassistanceList; let i = index"> <li *ngFor="let roadassistant of getRoadassistanceList; let i = index">
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<img src="../../assets/img/asset_shop1.png"> <img src="../../assets/img/asset_shop1.png">
</div> </div>
<div class="details"> <div class="details">
<div class="list_btn remind" (click)="bookGarage(roadassistant.road_assist_id)">Book</div> <div class="list_btn remind" (click)="bookGarage(roadassistant.road_assist_id)">{{'Road Assistance.Book' | translate:params}}</div>
<h5>{{roadassistant.name}}</h5> <h5>{{roadassistant.name}}</h5>
<p>34 Reviews</p> <p>34 Reviews</p>
<h6 class="floatLeft"><span class="distance_banner">{{roadassistant.distance}}Km</span><span class="other_banner" >{{distance(roadassistant.distance)}}</span></h6> <h6 class="floatLeft"><span class="distance_banner">{{roadassistant.distance}}Km</span><span class="other_banner" >{{distance(roadassistant.distance)}}</span></h6>
......
...@@ -4,6 +4,7 @@ import { Location } from '@angular/common'; ...@@ -4,6 +4,7 @@ import { Location } from '@angular/common';
import { AuthenticationService } from '../../Config/services/auth.service'; import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service'; import { ValidationService} from '../../Config/services/validation.service';
import {StorageService } from '../../Config/services/storage.service'; import {StorageService } from '../../Config/services/storage.service';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
@Component({ @Component({
selector: 'app-roadassistance', selector: 'app-roadassistance',
templateUrl: './roadassistance.page.html', templateUrl: './roadassistance.page.html',
...@@ -11,6 +12,7 @@ import {StorageService } from '../../Config/services/storage.service'; ...@@ -11,6 +12,7 @@ import {StorageService } from '../../Config/services/storage.service';
}) })
export class RoadassistancePage { export class RoadassistancePage {
userLocationData: any; userLocationData: any;
lang: any;
getRoadassistanceList = []; getRoadassistanceList = [];
constructor( constructor(
private router: Router, private router: Router,
...@@ -18,9 +20,15 @@ export class RoadassistancePage { ...@@ -18,9 +20,15 @@ export class RoadassistancePage {
private location: Location, private location: Location,
private validationService: ValidationService, private validationService: ValidationService,
private authenticationService: AuthenticationService, private authenticationService: AuthenticationService,
private storageservice: StorageService private storageservice: StorageService,
private translateConfigService: TranslateConfigService
) { ) {
this.getfromstorage(); this.getfromstorage();
this.lang = JSON.parse(this.storageservice.getLocalStorageItem('lang'));
if ( this.lang) {
this.langTrans();
}
} }
goToPage(path, data= null) { goToPage(path, data= null) {
...@@ -64,4 +72,7 @@ if (value > 20) { ...@@ -64,4 +72,7 @@ if (value > 20) {
return 'Too Far Away'; return 'Too Far Away';
} }
} }
langTrans() {
this.translateConfigService.setLanguage(this.lang);
}
} }
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 { RoadassistanceratingPage } from './roadassistancerating.page';
const routes: Routes = [
{
path: '',
component: RoadassistanceratingPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [RoadassistanceratingPage]
})
export class RoadassistanceratingPageModule {}
<ion-header>
<ion-toolbar>
<ion-title>roadassistancerating</ion-title>
</ion-toolbar>
</ion-header>
<ion-content>
</ion-content>
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { RoadassistanceratingPage } from './roadassistancerating.page';
describe('RoadassistanceratingPage', () => {
let component: RoadassistanceratingPage;
let fixture: ComponentFixture<RoadassistanceratingPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ RoadassistanceratingPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(RoadassistanceratingPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-roadassistancerating',
templateUrl: './roadassistancerating.page.html',
styleUrls: ['./roadassistancerating.page.scss'],
})
export class RoadassistanceratingPage implements OnInit {
constructor() { }
ngOnInit() {
}
}
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 { RoadassistantrequestListPage } from './roadassistantrequest-list.page';
const routes: Routes = [
{
path: '',
component: RoadassistantrequestListPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [RoadassistantrequestListPage]
})
export class RoadassistantrequestListPageModule {}
<ion-header>
<div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button>
<div class="nav_title floatLeft"><h4>ROAD ASSISTANCE</h4></div>
<button class="nav_btn nav_btn_text floatRight">
</button>
<div class="clear"></div>
</div>
</ion-header>
<ion-content>
<div class="home_wrapper">
<div class="location_box">
<div class="location_bar">
Infopark,Kakkanad
</div>
</div>
<ul>
<li (click)="goToPage('booking')">
<div class="circle">
<img src="../../assets/img/asset_shop1.png">
</div>
<div class="details">
<div class="list_btn remind">Remind</div>
<h5>Presto Towing Services</h5>
<fieldset class="rating">
<input type="radio" id="star5" name="rating" value="5" /><label class = "full" for="star5" title="Awesome - 5 stars"></label>
<input type="radio" id="star4half" name="rating" value="4 and a half" /><label class="half" for="star4half" title="Pretty good - 4.5 stars"></label>
<input type="radio" id="star4" name="rating" value="4" /><label class = "full" for="star4" title="Pretty good - 4 stars"></label>
<input type="radio" id="star3half" name="rating" value="3 and a half" /><label class="half" for="star3half" title="Meh - 3.5 stars"></label>
<input type="radio" id="star3" name="rating" value="3" /><label class = "full" for="star3" title="Meh - 3 stars"></label>
<input type="radio" id="star2half" name="rating" value="2 and a half" /><label class="half" for="star2half" title="Kinda bad - 2.5 stars"></label>
<input type="radio" id="star2" name="rating" value="2" /><label class = "full" for="star2" title="Kinda bad - 2 stars"></label>
<input type="radio" id="star1half" name="rating" value="1 and a half" /><label class="half" for="star1half" title="Meh - 1.5 stars"></label>
<input type="radio" id="star1" name="rating" value="1" /><label class = "full" for="star1" title="Sucks big time - 1 star"></label>
<input type="radio" id="starhalf" name="rating" value="half" /><label class="half" for="starhalf" title="Sucks big time - 0.5 stars"></label>
</fieldset>
<p>34 Reviews</p>
<h6 class="floatLeft"><span class="distance_banner">4 Km</span><span class="other_banner">Nearest</span></h6>
<span class="floatRight playit"><img src="../../assets/img/asset_playit.png"></span>
<div class="clear"></div>
</div>
<div class="clear"></div>
</li>
<li >
<div class="circle">
<img src="../../assets/img/asset_shop2.png">
</div>
<div class="details">
<div class="list_btn reject" (click)="reject()">Reject</div>
<div class="list_btn book" (click)="book()">Book</div>
<h5>Kevin Jose</h5>
<!-- <fieldset class="rating">
<input type="radio" id="star5" name="rating" value="5" /><label class = "full" for="star5" title="Awesome - 5 stars"></label>
<input type="radio" id="star4half" name="rating" value="4 and a half" /><label class="half" for="star4half" title="Pretty good - 4.5 stars"></label>
<input type="radio" id="star4" name="rating" value="4" /><label class = "full" for="star4" title="Pretty good - 4 stars"></label>
<input type="radio" id="star3half" name="rating" value="3 and a half" /><label class="half" for="star3half" title="Meh - 3.5 stars"></label>
<input type="radio" id="star3" name="rating" value="3" /><label class = "full" for="star3" title="Meh - 3 stars"></label>
<input type="radio" id="star2half" name="rating" value="2 and a half" /><label class="half" for="star2half" title="Kinda bad - 2.5 stars"></label>
<input type="radio" id="star2" name="rating" value="2" /><label class = "full" for="star2" title="Kinda bad - 2 stars"></label>
<input type="radio" id="star1half" name="rating" value="1 and a half" /><label class="half" for="star1half" title="Meh - 1.5 stars"></label>
<input type="radio" id="star1" name="rating" value="1" /><label class = "full" for="star1" title="Sucks big time - 1 star"></label>
<input type="radio" id="starhalf" name="rating" value="half" /><label class="half" for="starhalf" title="Sucks big time - 0.5 stars"></label>
</fieldset> -->
<p>Car type : <strong>Suzuki</strong></p>
<p>Car Model : <strong>2019</strong></p>
<p>Car Make : <strong>Ritz</strong></p>
<h6 class="floatLeft"><span class="distance_banner">4 Km</span><span class="other_banner">Nearest</span></h6>
<span class="floatRight playit"><img src="../../assets/img/asset_playit.png"></span>
<div class="clear"></div>
</div>
<div class="clear"></div>
</li>
</ul>
</div>
</ion-content>
.home_wrapper{
padding-top: 30px;
.location_box{
position: fixed;
left:0px;
top: 60px;
right:0px;
z-index: 999;
}
.location_bar{
max-width:200px;
background: #fbd339;
padding:5px;
border-radius: 20px;
margin:0 auto;
text-align: center;
-webkit-box-shadow: 0px -1px 5px 0px rgba(0,0,0,0.2);
-moz-box-shadow: 0px -1px 5px 0px rgba(0,0,0,0.2);
box-shadow: 0px -1px 5px 0px rgba(0,0,0,0.2);
background-image: url("../../assets/img/aaset_loc.png");
background-position: left 15px top 6px;
background-repeat: no-repeat;
padding-left:35px;
padding-right:30px;
background-size: 15px;
font-size: 14px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
ul{
padding:10px;
margin:0px;
li{
background: #f6f5fa;
border-radius:10px;
margin-bottom: 10px;
position: relative;
padding:20px;
.circle{
width:60px;
height:60px;
float: left;
img{
width: 100%;
height:100%;
}
}
.details{
float: right;
width:calc(100% - 60px);
padding-left: 20px;
h5{
margin:0px;
padding:0px;
padding-bottom: 5px;
}
.list_btn{
position: absolute;
right: 2px;
top: 17px;
font-size: 14px;
}
.remind{
color: #282438;
background: url("../../assets/img/asset_remind.png");
background-position: center;
background-repeat: no-repeat;
background-size: 100%;
padding: 10px;
padding-left: 15px;
padding-right: 15px;
}
.book{
color: #fff;
background: url("../../assets/img/asset_book.png");
background-position: center;
background-repeat: no-repeat;
background-size: 100%;
padding: 10px;
padding-left: 25px;
padding-right: 20px;
}
.reject{
color: #282438;
background: url("../../assets/img/asset_remind.png");
background-position: center;
background-repeat: no-repeat;
background-size: 100%;
padding: 95px;
padding-left: 25px;
padding-right: 15px;
}
p{
margin:0px;
padding:0px;
color: #282438;
font-size: 12px;
padding-top: 5px;
}
h6{
margin:0px;
padding: 0px;
padding-top:8px;
}
.distance_banner{
background-color: #fff;
padding: 3px;
padding-left: 6px;
padding-right: 6px;
background-image: url("../../assets/img/aaset_loc.png");
background-position: left 5px top 4px;
background-repeat: no-repeat;
padding-left: 20px;
background-size: 12px;
border-radius: 10px;
margin-right: 10px;
font-size: 12px;
}
.other_banner{
background: #fbd339;
color: #282438;
padding: 3px;
padding-left: 6px;
padding-right: 6px;
font-size: 12px;
}
.playit{
padding-top: 8px;
img{
width: 15px;
}
}
.rating {
border: none;
width:85px;
margin: 0px;
padding: 0px;
}
.rating > input { display: none; }
.rating > label:before {
margin:2px;
font-size:14px;
font-family: FontAwesome;
display: inline-block;
content: "\f005";
}
.rating > .half:before {
content: "\f089";
position: absolute;
}
.rating > label {
color: #dcdae9;
float: right;
}
/***** CSS Magic to Highlight Stars on Hover *****/
.rating > input:checked ~ label, /* show gold star when clicked */
.rating:not(:checked) > label:hover, /* hover current star */
.rating:not(:checked) > label:hover ~ label { color: #FFD700; } /* hover previous stars in list */
.rating > input:checked + label:hover, /* hover current star when changing rating */
.rating > input:checked ~ label:hover,
.rating > label:hover ~ input:checked ~ label, /* lighten current selection */
.rating > input:checked ~ label:hover ~ label { color: #FFED85; }
}
}
}
}
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { RoadassistantrequestListPage } from './roadassistantrequest-list.page';
describe('RoadassistantrequestListPage', () => {
let component: RoadassistantrequestListPage;
let fixture: ComponentFixture<RoadassistantrequestListPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ RoadassistantrequestListPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(RoadassistantrequestListPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-roadassistantrequest-list',
templateUrl: './roadassistantrequest-list.page.html',
styleUrls: ['./roadassistantrequest-list.page.scss'],
})
export class RoadassistantrequestListPage implements OnInit {
constructor() { }
ngOnInit() {
}
reject() {
console.log('Reject')
}
book() {
console.log('Book')
}
}
...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router'; ...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { SelectservicesPage } from './selectservices.page'; import { SelectservicesPage } from './selectservices.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,6 +19,7 @@ const routes: Routes = [ ...@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [SelectservicesPage] declarations: [SelectservicesPage]
......
...@@ -2,16 +2,16 @@ ...@@ -2,16 +2,16 @@
<div class="app_header relative"> <div class="app_header relative">
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button>
<div class="nav_title floatLeft"><h4>Select your services</h4></div> <div class="nav_title floatLeft"><h4>{{'ListingServices.Select Category' | translate:params}}</h4></div>
<button class="nav_btn nav_btn_text floatRight"> <button class="nav_btn nav_btn_text floatRight">
</button> </button>
<div class="clear"></div> <div class="clear"></div>
<div class="seach_bar_outer" > <!-- <div class="seach_bar_outer" >
<div class="search_bar" *ngIf="subserviceList"> <div class="search_bar" *ngIf="subserviceList">
<input class="" placeholder="Services or Problems..." > <input class="" placeholder="Services or Problems..." >
</div> </div>
</div> </div> -->
</div> </div>
</ion-header> </ion-header>
<ion-content> <ion-content>
...@@ -32,7 +32,7 @@ ...@@ -32,7 +32,7 @@
<h6>{{serviceDetails}}</h6> <h6>{{serviceDetails}}</h6>
</ion-col> </ion-col>
<ion-col> <ion-col>
<button class="next_btn floatRight" (click)="movetoDate()">NEXT</button> <button class="next_btn floatRight" (click)="movetoDate()">{{'ListingServices.Next' | translate:params}}</button>
<div class="clear"></div> <div class="clear"></div>
</ion-col> </ion-col>
</ion-row> </ion-row>
......
...@@ -5,6 +5,7 @@ import { Router, ActivatedRoute } from '@angular/router'; ...@@ -5,6 +5,7 @@ import { Router, ActivatedRoute } from '@angular/router';
import { AuthenticationService } from '../../Config/services/auth.service'; import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service'; import { ValidationService} from '../../Config/services/validation.service';
import {StorageService } from '../../Config/services/storage.service'; import {StorageService } from '../../Config/services/storage.service';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
@Component({ @Component({
selector: 'app-selectservices', selector: 'app-selectservices',
templateUrl: './selectservices.page.html', templateUrl: './selectservices.page.html',
...@@ -16,6 +17,7 @@ export class SelectservicesPage implements OnInit { ...@@ -16,6 +17,7 @@ export class SelectservicesPage implements OnInit {
subserviceList = []; subserviceList = [];
serviceDetails: any; serviceDetails: any;
displayFooter: boolean; displayFooter: boolean;
lang: any;
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
...@@ -23,9 +25,14 @@ export class SelectservicesPage implements OnInit { ...@@ -23,9 +25,14 @@ export class SelectservicesPage implements OnInit {
private validationService: ValidationService, private validationService: ValidationService,
private authenticationService: AuthenticationService, private authenticationService: AuthenticationService,
private storageservice: StorageService, private storageservice: StorageService,
private translateConfigService: TranslateConfigService
) { ) {
this.subserviceList = null; this.subserviceList = null;
this.selectedService = null; this.selectedService = null;
this.lang = JSON.parse(this.storageservice.getLocalStorageItem('lang'));
if ( this.lang) {
this.langTrans(this.lang);
}
} }
ngOnInit() { ngOnInit() {
...@@ -67,4 +74,7 @@ export class SelectservicesPage implements OnInit { ...@@ -67,4 +74,7 @@ export class SelectservicesPage implements OnInit {
const passData = {sub_id: this.selectedService.id , sub_name: this.selectedService.sub_services, main_name: this.getData.service_name}; const passData = {sub_id: this.selectedService.id , sub_name: this.selectedService.sub_services, main_name: this.getData.service_name};
this.goToPage('/date/' + encodeURIComponent(JSON.stringify(passData))); this.goToPage('/date/' + encodeURIComponent(JSON.stringify(passData)));
} }
langTrans(lang) {
this.translateConfigService.setLanguage(lang);
}
} }
...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router'; ...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { SettingsPage } from './settings.page'; import { SettingsPage } from './settings.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,6 +19,7 @@ const routes: Routes = [ ...@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [SettingsPage] declarations: [SettingsPage]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app_header"> <div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button>
<div class="nav_title floatLeft"><h4>Settings</h4></div> <div class="nav_title floatLeft"><h4>{{'Settings.Settings' | translate:params}}</h4></div>
<button class="nav_btn nav_btn_text floatRight"> <button class="nav_btn nav_btn_text floatRight">
</button> </button>
...@@ -11,11 +11,13 @@ ...@@ -11,11 +11,13 @@
</ion-header> </ion-header>
<ion-content> <ion-content>
<div class="settings_wrapper"> <div class="settings_wrapper">
<h4>Notifications</h4> <h4>{{'Settings.GeneralSettings' | translate:params}}</h4>
<div class="row"> <div class="row">
<p class="floatLeft">Service Reminder</p> <p class="floatLeft">{{'Settings.ChangeLanguage' | translate:params}}</p>
<ion-toggle class="floatRight"></ion-toggle> <ion-select placeholder="Choose Language" [(ngModel)]="language" (ionChange)="crazyEvent($event)" >
<div class="clear"></div> <ion-select-option value='en'>English</ion-select-option>
<ion-select-option value='fr'>French</ion-select-option>
</ion-select>
</div> </div>
<div class="row"> <div class="row">
<p class="floatLeft">Order Updates</p> <p class="floatLeft">Order Updates</p>
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Location } from '@angular/common'; import { Location } from '@angular/common';
import { trigger, transition, animate, style } from '@angular/animations'; import { trigger, transition, animate, style } from '@angular/animations';
import { Router,ActivatedRoute } from '@angular/router'; import { Router, ActivatedRoute } from '@angular/router';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
import {StorageService} from '../../Config/services/storage.service';
@Component({ @Component({
selector: 'app-settings', selector: 'app-settings',
...@@ -9,23 +11,46 @@ import { Router,ActivatedRoute } from '@angular/router'; ...@@ -9,23 +11,46 @@ import { Router,ActivatedRoute } from '@angular/router';
styleUrls: ['./settings.page.scss'], styleUrls: ['./settings.page.scss'],
}) })
export class SettingsPage implements OnInit { export class SettingsPage implements OnInit {
language: any;
lang = [
{
value : 'en',
lang : 'English'
},
{
value: 'fr',
lang: 'French'
}
];
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
private location: Location private location: Location,
) { } private storageService: StorageService,
private translateConfigService: TranslateConfigService
) {
this.langTrans();
}
ngOnInit() { ngOnInit() {
} }
goToPage(path,data=null){ goToPage(path, data= null) {
this.router.navigateByUrl(path,{queryParams:data}); this.router.navigateByUrl(path, {queryParams: data});
document.body.scrollTop = document.documentElement.scrollTop = 0; document.body.scrollTop = document.documentElement.scrollTop = 0;
} }
goBack() { goBack() {
this.location.back(); this.location.back();
} }
langTrans() {
this.translateConfigService.setLanguage(this.language);
}
crazyEvent(event) {
console.log(this.language);
this.storageService.setLocalStorageItem('lang', JSON.stringify(this.language));
this.langTrans();
} }
}
...@@ -11,12 +11,18 @@ import { AuthenticationService } from '../../Config/services/auth.service'; ...@@ -11,12 +11,18 @@ import { AuthenticationService } from '../../Config/services/auth.service';
styleUrls: ['./start.page.scss'], styleUrls: ['./start.page.scss'],
}) })
export class StartPage implements OnInit { export class StartPage implements OnInit {
userData: any;
constructor( constructor(
private router: Router, private router: Router,
private route: ActivatedRoute, private route: ActivatedRoute,
private storageService: StorageService, private storageService: StorageService,
private authenticationservice: AuthenticationService, private authenticationservice: AuthenticationService,
private validationservice: ValidationService) { } private validationservice: ValidationService) {
this.userData = JSON.parse(this.storageService.getLocalStorageItem('userData'));
if (this.userData) {
this.loginAuth();
}
}
@ViewChild(IonSlides) slides: IonSlides; @ViewChild(IonSlides) slides: IonSlides;
currentIndex: any; currentIndex: any;
...@@ -26,9 +32,7 @@ export class StartPage implements OnInit { ...@@ -26,9 +32,7 @@ export class StartPage implements OnInit {
}; };
ngOnInit() { ngOnInit() {
if (this.storageService.isLoggednIn()) {
this.goToPage('home');
}
} }
goToPage(path, data= null) { goToPage(path, data= null) {
...@@ -52,6 +56,17 @@ export class StartPage implements OnInit { ...@@ -52,6 +56,17 @@ export class StartPage implements OnInit {
}); });
} }
loginAuth() {
if (this.storageService.isLoggednIn()) {
if (this.userData.user_type === '5') {
this.goToPage('map');
} else {
this.goToPage('home');
}
} else {
this.goToPage('login');
}
}
} }
...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router'; ...@@ -6,7 +6,7 @@ import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular'; import { IonicModule } from '@ionic/angular';
import { SummaryPage } from './summary.page'; import { SummaryPage } from './summary.page';
import { TranslateModule } from '@ngx-translate/core';
const routes: Routes = [ const routes: Routes = [
{ {
path: '', path: '',
...@@ -19,6 +19,7 @@ const routes: Routes = [ ...@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule, CommonModule,
FormsModule, FormsModule,
IonicModule, IonicModule,
TranslateModule.forChild(),
RouterModule.forChild(routes) RouterModule.forChild(routes)
], ],
declarations: [SummaryPage] declarations: [SummaryPage]
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
<div class="app_header relative"> <div class="app_header relative">
<button class="nav_btn back_btn floatLeft" (click)="goBack()"> <button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button> </button>
<div class="nav_title floatLeft"><h4>SUMMARY</h4></div> <div class="nav_title floatLeft"><h4>{{'Summary.Summary' | translate:params}}</h4></div>
<button class="nav_btn nav_btn_text floatRight"> <button class="nav_btn nav_btn_text floatRight">
</button> </button>
<div class="clear"></div> <div class="clear"></div>
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<ion-content> <ion-content>
<div class="summary_wrapper"> <div class="summary_wrapper">
<div class="content_detail"> <div class="content_detail">
<h4>Category</h4> <h4>{{'Summary.Category' | translate:params}}</h4>
<div class="content_inner" *ngIf="getData"> <div class="content_inner" *ngIf="getData">
<ul> <ul>
<li> <li>
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
</li> </li>
</ul> </ul>
</div> </div>
<h4>Service Details</h4> <h4>{{'Summary.Service Details' | translate:params}}</h4>
<div class="content_inner" *ngIf="getData"> <div class="content_inner" *ngIf="getData">
<ul> <ul>
<li> <li>
...@@ -31,36 +31,36 @@ ...@@ -31,36 +31,36 @@
</li> </li>
</ul> </ul>
</div> </div>
<h4>Car Details</h4> <h4>{{'Summary.Car Details' | translate:params}}</h4>
<div class="content_inner"> <div class="content_inner" *ngIf="getData.car_id">
<ul> <ul>
<li> <li>
<ion-row> <ion-row>
<ion-col><p>Brand :</p></ion-col> <ion-col><p>Brand :</p></ion-col>
<ion-col>Rolls royce</ion-col> <ion-col>{{getData.car_id.make}}</ion-col>
</ion-row> </ion-row>
</li> </li>
<li> <li>
<ion-row> <ion-row>
<ion-col><p>Name :</p></ion-col> <ion-col><p>Name :</p></ion-col>
<ion-col>Ghost</ion-col> <ion-col>{{getData.car_id.vehicle_name}}</ion-col>
</ion-row> </ion-row>
</li> </li>
<li> <li>
<ion-row> <ion-row>
<ion-col><p>Model :</p></ion-col> <ion-col><p>Model :</p></ion-col>
<ion-col>2019</ion-col> <ion-col>{{getData.car_id.model}}</ion-col>
</ion-row> </ion-row>
</li> </li>
<li> <li>
<ion-row> <ion-row>
<ion-col><p>Mileage :</p></ion-col> <ion-col><p>Mileage :</p></ion-col>
<ion-col>20</ion-col> <ion-col>{{getData.car_id.mileage}}</ion-col>
</ion-row> </ion-row>
</li> </li>
</ul> </ul>
</div> </div>
<h4>Date & Time</h4> <h4>{{'Summary.Date & Time' | translate:params}}</h4>
<div class="content_inner" *ngIf="getData"> <div class="content_inner" *ngIf="getData">
<ul> <ul>
<li> <li>
...@@ -71,7 +71,7 @@ ...@@ -71,7 +71,7 @@
</li> </li>
</ul> </ul>
</div> </div>
<h4>Your Message</h4> <h4>{{'Summary.Your Message' | translate:params}}</h4>
<div class="content_inner"> <div class="content_inner">
<ul> <ul>
<li> <li>
...@@ -86,7 +86,7 @@ ...@@ -86,7 +86,7 @@
<div class="select_footer"> <div class="select_footer">
<ion-row> <ion-row>
<ion-col class="textCenter"> <ion-col class="textCenter">
<button class="request_btn" (click)="ConfirmbookService()">Send Request<img src="../../assets/img/asset_send_request.png"></button> <button class="request_btn" (click)="ConfirmbookService()">{{'Summary.Send Reuest' | translate:params}}<img src="../../assets/img/asset_send_request.png"></button>
<div class="clear"></div> <div class="clear"></div>
</ion-col> </ion-col>
</ion-row> </ion-row>
......
...@@ -5,6 +5,7 @@ import { Router, ActivatedRoute } from '@angular/router'; ...@@ -5,6 +5,7 @@ import { Router, ActivatedRoute } from '@angular/router';
import { AuthenticationService } from '../../Config/services/auth.service'; import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service'; import { ValidationService} from '../../Config/services/validation.service';
import {StorageService } from '../../Config/services/storage.service'; import {StorageService } from '../../Config/services/storage.service';
import {TranslateConfigService} from '../../Config/services/translateconfig.service';
@Component({ @Component({
selector: 'app-summary', selector: 'app-summary',
templateUrl: './summary.page.html', templateUrl: './summary.page.html',
...@@ -19,11 +20,12 @@ export class SummaryPage implements OnInit { ...@@ -19,11 +20,12 @@ export class SummaryPage implements OnInit {
private location: Location, private location: Location,
private validationService: ValidationService, private validationService: ValidationService,
private authenticationService: AuthenticationService, private authenticationService: AuthenticationService,
private storageservice: StorageService private storageservice: StorageService,
private translateConfigService: TranslateConfigService
) { ) {
const Data = decodeURIComponent((this.route.snapshot.paramMap.get('id'))); const Data = decodeURIComponent((this.route.snapshot.paramMap.get('id')));
this.getData = JSON.parse(Data); this.getData = JSON.parse(Data);
console.log(this.getData); console.log('Summary details', this.getData);
} }
ngOnInit() { ngOnInit() {
...@@ -45,7 +47,7 @@ export class SummaryPage implements OnInit { ...@@ -45,7 +47,7 @@ export class SummaryPage implements OnInit {
ConfirmbookService() { ConfirmbookService() {
this.validationService.presentLoader(); this.validationService.presentLoader();
// tslint:disable-next-line: max-line-length // tslint:disable-next-line: max-line-length
const passData = {user_id: this.userData.id , subservice_id: this.getData.id, booking_date: this.getData.date, car_id: this.getData.car_id, message: this.getData.message}; const passData = {user_id: this.userData.profile_id , subservice_id: this.getData.id, booking_date: this.getData.date, car_id: this.getData.car_id.id, message: this.getData.message};
this.authenticationService.post_data('user_requestService' , passData).subscribe((data) => { this.authenticationService.post_data('user_requestService' , passData).subscribe((data) => {
console.log(data); console.log(data);
this.validationService.dismissLoader(); this.validationService.dismissLoader();
...@@ -56,5 +58,7 @@ export class SummaryPage implements OnInit { ...@@ -56,5 +58,7 @@ export class SummaryPage implements OnInit {
} }
}); });
} }
langTrans() {
this.translateConfigService.setLanguage('fr');
}
} }
<ion-content> <ion-content>
<div class="waiting_wrapper"> <div class="waiting_wrapper" *ngIf="getData">
<div class="logo"> <div class="logo">
<img src="../../assets/img/asset_shop1.png"> <img src="../../assets/img/asset_shop1.png">
</div> </div>
<h4>Presto Towing Services</h4> <h4>{{getData.road_assistantName.name}}</h4>
<div class="distance">
4 km
</div>
<h3>Request has been Sent</h3> <h3>Request has been Sent</h3>
<p>Our customer service representative <br> <p>Road assistant representative <br>
will update you within 10 to 20 minutes.</p> will update you within 10 to 20 minutes.</p>
<button class="back_btn1">Back</button><br> <!-- <button class="back_btn1">Back</button><br> -->
<button class="home">Home</button> <button class="home" (click)="goToPage('home')">Home</button>
</div> </div>
</ion-content> </ion-content>
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Location } from '@angular/common';
import { trigger, transition, animate, style } from '@angular/animations';
import { Router, ActivatedRoute } from '@angular/router';
import { AuthenticationService } from '../../Config/services/auth.service';
import { ValidationService} from '../../Config/services/validation.service';
import {StorageService } from '../../Config/services/storage.service';
@Component({ @Component({
selector: 'app-waiting', selector: 'app-waiting',
templateUrl: './waiting.page.html', templateUrl: './waiting.page.html',
styleUrls: ['./waiting.page.scss'], styleUrls: ['./waiting.page.scss'],
}) })
export class WaitingPage implements OnInit { export class WaitingPage implements OnInit {
getData: any;
constructor() { } constructor(
private router: Router,
private route: ActivatedRoute,
private location: Location,
private validationService: ValidationService,
private authenticationService: AuthenticationService,
private storageservice: StorageService
) {
const Data = decodeURIComponent((this.route.snapshot.paramMap.get('id')));
this.getData = JSON.parse(Data);
}
ngOnInit() { ngOnInit() {
console.log(this.getData);
}
goToPage(path, data= null) {
this.router.navigateByUrl(path, {queryParams: data});
document.body.scrollTop = document.documentElement.scrollTop = 0;
} }
} }
{
"login":{
"Hi":"Hi",
"Login To Continue":"Login To Continue",
"Change Password": "Change Password",
"Forgot Password": "Forgot Password",
"Email":"Email",
"Password":"Password",
"Customer" : "Customer",
"Road Asssistant":"Road Asssistant",
"Sign Up":"Sign Up",
"Sign In":"Sign In",
"I am A!!":"I am A!!",
"Full Name":"Full Name",
"Phone Number": "Phone Number",
"Country":"Country",
"Area":"Area",
"House Name/Building":"House Name/Building",
"This address will be saved as your permamanent address":"This address will be saved as your permamanent address",
"You can change it at any time":"You can change it at any time",
"Next":"Next",
"By Creating Account":"By Creating Account",
"I agree to allorepar's" : "I agree to allorepar's",
"Terms & Conditions":"Terms & Conditions"
},
"home" : {
"Road ":"Road",
"Assistance":"Assistance",
"Car":"Car",
"Parts":"Parts",
"Purchase": "Purchase",
"People most purchased":"People most purchased",
"more":"more",
"Products for you":"Products for you",
"Services":"Services",
"Profile":"Profile",
"Settings":"Settings",
"Logout":"Logout",
"Are you sure to logout ?":"Êtes-vous sûr de vous déconnecter?",
"Cancel" : "Annuler"
},
"Profile" :{
"My Services":"My Services",
"My Orders":"My Orders",
"My Cars":"My Cars",
"General Details":"General Details",
"Change Password":"Change Password",
"Logout":"Logout"
},
"My services" : {
"Upcoming Services":"Upcoming Services"
},
"My Orders" :{
"My Orders":"My Orders"
},
"Change Password" :{
"Change Password":"Change Password",
"Password":"Password",
"Confirm Password":"Confirm Password",
"CHANGE PASSWORD":"CHANGE PASSWORD"
},
"Road Assistance" : {
"Road Assistance": "Road Assistance",
"Book":"Book"
},
"Booking":{
"Call to Allorepo":"Call to Allorepo",
"Book Service":"Book Service",
"About":"About",
"Reviews":"Reviews",
"Request has been sent":"Request has been sent"
},
"Waiting":{
"Road assistant representative will update you with in 10 to 20 minutes":"Road assistant representative will update you with in 10 to 20 minutes",
"Home":"Home"
},
"ListingServices":{
"Select Category":"Select Category",
"Next":"Next"
},
"Date":{
"Date":"Date",
"Pick Date":"Pick Date",
"Instruction":"Instruction",
"Type Here":"Type Here",
"Next":"NEXT"
},
"Carslist":{
"My Cars":"My Cars"
},
"Summary":{
"Category":"Category",
"Service Details":"Service Details",
"Car Details":"Car Details",
"Date & Time":"Date & Time",
"Your Message":"Your Message",
"Send Reuest":"Send Request",
"Summary":"Summary"
},
"waiting1":{
"Relax":"Relax",
"We got your request":"We got your request",
"We will update you with in 10 to 20 minutes":"We will update you with in 10 to 20 minutes",
"Home":"Home"
},
"Purchaseparts":{
"People Most Purchased": "People Most Purchased",
"People most purchased":"People most purchased",
"Search Products":"Search products",
"Purchase product":"Purchase product",
"Product list":"Product list"
},
"ProductBooking":{
"Product Booking":"Product Booking",
"Purchase":"Purchase",
"Details":"Details"
},
"deliveryaddress":{
"Delivery Address":"Delivery Address",
"Name":"Name",
"Phone":"Phone",
"House":"House",
"Area":"Area",
"City":"City",
"Country":"Country"
},
"Settings":{
"Settings":"Settings",
"GeneralSettings":"General Settings",
"ChangeLanguage":"Change Language"
}
}
\ No newline at end of file
{
"login":{
"Hi":"salut",
"Login To Continue":"Connectez-vous pour continuer",
"Change Password": "Changer le mot de passe",
"Forgot Password": "Mot de passe oublié",
"Email":"Email",
"Password":"Mot de passe",
"Customer" : "Cliente",
"Road Asssistant":"Assistant de route",
"Sign Up":"S'inscrire",
"Sign In":"Se connecter",
"I am A!!":"Je suis un!!",
"Full Name":"Nom complet",
"Phone Number": "Numéro de téléphone",
"Country":"Pays",
"Area":"Zone",
"House Name/Building":"Nom de la maison / bâtiment",
"This address will be saved as your permamanent address":"Cette adresse sera sauvegardée en tant qu'adresse permamanent",
"You can change it at any time":"Vous pouvez le changer à tout moment",
"Next":"Prochain",
"By Creating Account":"En créant un compte",
"I agree to allorepars" : "Je suis d'accord pour allorepars",
"Terms & Conditions":"termes et conditions"
},
"home" : {
"Road ":"Route",
"Assistance":"Assistance",
"Car":"Voiture",
"Parts":"les pièces",
"Purchase": "achat",
"Car Services":"Services de voiture",
"Parts Purchase":"Achat de pièces",
"People most purchased":"Les gens les plus achetés",
"more":"plus",
"Products for you":"Des produits pour vous",
"Services":"Prestations de service",
"Profile":"Profil",
"Settings":"Paramètres",
"Logout":"Se déconnecter"
},
"Profile" :{
"My Services":"Mes services",
"My Orders":"Mes commandes",
"My Cars":"Mes voitures",
"General Details":"Détails Généraux",
"Change Password":"Changer le mot de passe",
"Logout":"Se déconnecter"
},
"My services" : {
"Upcoming Services":"Services à venir"
},
"My Orders" :{
"My Orders":"Mes commandes"
},
"Change Password" :{
"Change Password":"Changer le mot de passe",
"Password":"Mot de passe",
"Confirm Password":"Confirmez le mot de passe",
"CHANGE PASSWORD":"CHANGER LE MOT DE PASSE"
},
"Road Assistance" : {
"Road Assistance": "Assistance routière",
"Book":"Livre"
},
"Booking":{
"Call to Allorepo":"Appel à Allorepo",
"Book Service":"Service de livre",
"About":"À propos",
"Reviews":"Commentaires",
"Request has been sent":"La demande a été envoyée"
},
"Waiting":{
"Road assistant representative will update you with in 10 to 20 minutes":"Un représentant des assistants routiers vous mettra à jour dans 10 à 20 minutes.",
"Home":"Accueil"
},
"ListingServices":{
"Select Category":"Choisir une catégorie",
"Next":"Prochain"
},
"Date":{
"Date":"Date",
"Pick Date":"Date de prélèvement",
"Instruction":"Instruction",
"Type Here":"Écrivez ici",
"Next":"Prochain"
},
"Carslist":{
"My Cars":"Mes voitures"
},
"Summary":{
"Summary" :"Sommaire",
"Category":"Catégorie",
"Service Details":"Détails du service",
"Car Details":"Détails de la voiture",
"Date & Time":"Date et heure",
"Your Message":"Votre message",
"Send Reuest":"Envoyer une demande"
},
"waiting1":{
"Relax":"Se détendre",
"We got your request":"Nous avons reçu votre demande",
"We will update you with in 10 to 20 minutes":"Nous vous tiendrons au courant dans 10 à 20 minutes",
"Home":"Accueil"
},
"Purchaseparts":{
"People Most Purchased": "Personnes les plus achetées",
"People most purchased":"Les gens les plus achetés",
"Search Products":"Recherche de produits",
"Purchase product":"Produit d'achat",
"Product list":"Liste de produits"
},
"ProductBooking":{
"Product Booking":"Réservation de produit",
"Purchase":"achat",
"Details":"Détails"
},
"deliveryaddress":{
"Delivery Address":"Adresse de livraison",
"Name":"Nom",
"Phone":"Téléphone",
"House":"Maison",
"Area":"Zone",
"City":"Ville",
"Country":"Pays"
},
"Settings":{
"Settings":"Paramètre",
"GeneralSettings":"réglages généraux",
"ChangeLanguage":"Changer de langue"
}
}
\ No newline at end of file
export const environment = {
firebase: {
apiKey: 'AIzaSyA8wne3o_CpD-aFseOybbO7W1mmOsoSvcc',
authDomain: 'afac-1d62c.firebaseapp.com',
databaseURL: 'https://afac-1d62c.firebaseio.com',
projectId: 'afac-1d62c',
storageBucket: 'afac-1d62c.appspot.com',
messagingSenderId: '888355825417',
appId: '1:888355825417:web:beec2a7f890d402ef055d8',
measurementId: 'G-VGEFN90KX3'
},
};
export const devURL = 'https://techlabz.in/allorepair/Webservice/'; export const devURL = 'http://techlabz.in/allorepair/Webservice/';
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