Commit 1844f945 by Alen Jose

Merge branch 'alen' into 'master'

forgotpswd See merge request alen/CMC_revamp!10
parents bd81b90e 711b7471
...@@ -4591,6 +4591,11 @@ ...@@ -4591,6 +4591,11 @@
"resolved": "https://registry.npmjs.org/ionic-plugin-keyboard/-/ionic-plugin-keyboard-2.2.1.tgz", "resolved": "https://registry.npmjs.org/ionic-plugin-keyboard/-/ionic-plugin-keyboard-2.2.1.tgz",
"integrity": "sha1-8qnhabvptVIkADR8n9bTRn7j+hI=" "integrity": "sha1-8qnhabvptVIkADR8n9bTRn7j+hI="
}, },
"ionic2-rating": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/ionic2-rating/-/ionic2-rating-1.2.2.tgz",
"integrity": "sha1-5Z9FnGRF3qlWkwHCK6iTivB2WOY="
},
"ionicons": { "ionicons": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/ionicons/-/ionicons-3.0.0.tgz", "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-3.0.0.tgz",
......
...@@ -51,6 +51,7 @@ ...@@ -51,6 +51,7 @@
"firebase": "^5.0.4", "firebase": "^5.0.4",
"ionic-angular": "3.7.0", "ionic-angular": "3.7.0",
"ionic-plugin-keyboard": "^2.2.1", "ionic-plugin-keyboard": "^2.2.1",
"ionic2-rating": "^1.2.2",
"ionicons": "3.0.0", "ionicons": "3.0.0",
"mx.ferreyra.callnumber": "~0.0.2", "mx.ferreyra.callnumber": "~0.0.2",
"promise-polyfill": "^8.0.0", "promise-polyfill": "^8.0.0",
......
<ion-content padding class="themelogin_background">
<div class="cab_login_wrapper">
<div class="cab_logo">
<img src="assets/img/cab_logo.png" style="width: 120px;">
</div>
<h4>Forgot Password</h4>
<hr>
<br>
<div class="cab_form">
<form [formGroup]="forgotForm">
<div class="cab_form_row">
<div class="cab_phone_number">
<input class="cab_phone_input floatRight cab_mail" type="email" placeholder="Email" formControlName="email">
<div class="clear"></div>
<div class="cab_req" *ngIf="forgotForm.get('email').hasError('pattern') && (forgotForm.get('email').dirty || forgotForm.get('email').touched)">
Enter a valid Email
</div>
<div class="cab_req" *ngIf="forgotForm.get('email').hasError('required') && (forgotForm.get('email').dirty || forgotForm.get('email').touched)">
Enter a valid Email
</div>
</div>
</div>
</form>
<br>
<br>
<div class="cab_form_row">
<button ion-button class="cab_sign_btn" (click)="forgot()" [disabled]="forgotForm.invalid" >Sent recovery password</button>
</div>
</div>
</div>
</ion-content>
\ No newline at end of file
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { ForgotPage } from './forgot';
@NgModule({
declarations: [
ForgotPage,
],
imports: [
IonicPageModule.forChild(ForgotPage),
],
})
export class ForgotPageModule {}
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import { FormGroup, Validators, FormBuilder } from '@angular/forms'
import { Myservice } from '../../providers/myservice'
@IonicPage()
@Component({
selector: 'page-forgot',
templateUrl: 'forgot.html',
})
export class ForgotPage {
forgotForm: FormGroup
constructor(public navCtrl: NavController, public navParams: NavParams, private formbuilder: FormBuilder, private myservice: Myservice) {
this.forgotForm = this.formbuilder.group({
email: ['', Validators.compose([Validators.required, Validators.pattern("[a-zA-Z0-9.-_]{1,}@[a-zA-Z.-]{2,}[.]{1}[a-zA-Z]{2,}")])]
})
}
forgot() {
this.myservice.show_loader()
this.myservice.load_post(this.forgotForm.value, 'Forget_password').subscribe(response => {
this.myservice.hide_loader()
if (response.status == 'success') {
this.myservice.show_alert('', response.message)
this.navCtrl.pop();
}
else {
this.myservice.show_alert('', response.message)
}
})
}
}
...@@ -76,14 +76,23 @@ export class HomePage { ...@@ -76,14 +76,23 @@ export class HomePage {
var This = this var This = this
This.locRef = firebase.database().ref().child('/drivers/') This.locRef = firebase.database().ref().child('/drivers/')
This.locRef.orderByChild("status").equalTo('online').on("value", function (snapshot) { This.locRef.orderByChild("status").equalTo('online').on("value", function (snapshot) {
var res_arr = (<any>Object).entries(snapshot.val()).map(e => Object.assign(e[1], { key: e[0] })); var res_arr =[]
res_arr = (<any>Object).entries(snapshot.val()).map(e => Object.assign(e[1], { key: e[0] }));
var image = {
url: 'assets/img/map_label.png',
scaledSize: new google.maps.Size(50, 22), // scaled size
origin: new google.maps.Point(0, 0), // origin
anchor: new google.maps.Point(25, 12) // anchor
};
//placing marker for each driver //placing marker for each driver
for (let i = 0; i < res_arr.length; i++) { for (let i = 0; i < res_arr.length; i++) {
let marker = new google.maps.Marker({ let marker = new google.maps.Marker({
map: This.map, map: This.map,
icon: 'assets/img/star-on-big.png', icon: image,
position: { lat: res_arr[i].lat, lng: res_arr[i].lng } position: { lat: res_arr[i].lat, lng: res_arr[i].lng },
size: new google.maps.Size(20, 32),
}); });
This.driverMarkers[i]=marker This.driverMarkers[i]=marker
} }
...@@ -107,6 +116,7 @@ export class HomePage { ...@@ -107,6 +116,7 @@ export class HomePage {
fillAddress(autocomplete, type) { fillAddress(autocomplete, type) {
if (this.markers.length==3) { if (this.markers.length==3) {
this.markers[0].setMap(null); this.markers[0].setMap(null);
this.markers[0] = null;
} }
var place = autocomplete.getPlace(); var place = autocomplete.getPlace();
var lat = place.geometry.location.lat(); var lat = place.geometry.location.lat();
...@@ -118,9 +128,6 @@ export class HomePage { ...@@ -118,9 +128,6 @@ export class HomePage {
}); });
var search = place.formatted_address var search = place.formatted_address
this.myservice.load_post({ 'keyword': place.name, 'userid': this.local.id, 'location': search},'setSearch').subscribe(response=>{
})
if (type == 0) { if (type == 0) {
this.p_lat = lat this.p_lat = lat
...@@ -178,10 +185,12 @@ export class HomePage { ...@@ -178,10 +185,12 @@ export class HomePage {
} }
calculateAndDisplayRoute(directionsService, directionsDisplay, start, dest) { calculateAndDisplayRoute(directionsService, directionsDisplay, start, dest) {
console.log(this.markers)
for (var i = 0; i < this.markers.length; i++) { for (var i = 0; i < this.markers.length; i++) {
if (this.markers[i]) if (this.markers[i]){
this.markers[i].setMap(null); this.markers[i].setMap(null);
this.markers[i]=null;
console.log(this.markers[i])
}
} }
directionsService.route({ directionsService.route({
origin: start, origin: start,
...@@ -197,6 +206,10 @@ export class HomePage { ...@@ -197,6 +206,10 @@ export class HomePage {
} }
ridemore() { ridemore() {
this.myservice.load_post({ 'pickKeyword': this.locForm.value.pickLoc, 'dropKeyword': this.locForm.value.dropLoc, 'userid': this.local.id, 'pickLat': this.p_lat, 'pickLng': this.p_lng, 'dropLat': this.d_lat, 'dropLng': this.d_lng}, 'setSearch').subscribe(response => {
})
var data = { 'pickLat': this.p_lat, 'pickLng': this.p_lng, 'dropLat': this.d_lat, 'dropLng': this.d_lng, 'pickArea': this.locForm.value.pickLoc, 'dropArea': this.locForm.value.dropLoc} var data = { 'pickLat': this.p_lat, 'pickLng': this.p_lng, 'dropLat': this.d_lat, 'dropLng': this.d_lng, 'pickArea': this.locForm.value.pickLoc, 'dropArea': this.locForm.value.dropLoc}
this.data.setbookingData(data) this.data.setbookingData(data)
let modal = this.modalCtrl.create('RidepopPage'); let modal = this.modalCtrl.create('RidepopPage');
...@@ -216,6 +229,18 @@ export class HomePage { ...@@ -216,6 +229,18 @@ export class HomePage {
searchride() { searchride() {
let modal = this.modalCtrl.create('SearchridePage'); let modal = this.modalCtrl.create('SearchridePage');
modal.onDidDismiss(data=>{
if(data){
var directionsService = new google.maps.DirectionsService;
this.directionsDisplay.setMap(this.map);
var start = new google.maps.LatLng(data.picklat, data.picklng);
var dest = new google.maps.LatLng(data.droplat, data.droplng);
this.calculateAndDisplayRoute(directionsService, this.directionsDisplay, start, dest);
}
})
modal.present(); modal.present();
} }
......
...@@ -10,9 +10,9 @@ ...@@ -10,9 +10,9 @@
<div class="cab_form_row"> <div class="cab_form_row">
<button ion-button class="cab_sign_btn1" (click)="open_page('LoginPage')">Sign In</button> <button ion-button class="cab_sign_btn1" (click)="open_page('LoginPage')">Sign In</button>
</div> </div>
<div class="cab_form_row textCenter"> <!-- <div class="cab_form_row textCenter">
<p>Forgot Password</p> <p (click)="forgot()">Forgot Password</p>
</div> </div> -->
</div> </div>
</div> </div>
</ion-content> </ion-content>
......
...@@ -92,10 +92,15 @@ export class LandingPage { ...@@ -92,10 +92,15 @@ export class LandingPage {
.catch(err => console.error(err)); .catch(err => console.error(err));
} }
forgot(){
this.navCtrl.push('ForgotPage')
}
logged_event(data) { logged_event(data) {
this.events.publish('user:profile', data); this.events.publish('user:profile', data);
} }
getLoc(){ getLoc(){
var promise = new Promise((resolve, reject) => { var promise = new Promise((resolve, reject) => {
this.geolocation.getCurrentPosition().then((resp) => { this.geolocation.getCurrentPosition().then((resp) => {
......
...@@ -41,11 +41,11 @@ ...@@ -41,11 +41,11 @@
</div> --> </div> -->
<br> <br>
<div class="cab_form_row"> <div class="cab_form_row">
<button ion-button class="cab_sign_btn" (click)="login()">Sign In</button> <button ion-button class="cab_sign_btn" (click)="login()" [disabled]="loginForm.invalid">Sign In</button>
</div> </div>
<br> <br>
<div class="cab_form_row textCenter"> <div class="cab_form_row textCenter">
<p>Forgot Password</p> <p (click)="forgot()">Forgot Password</p>
</div> </div>
</div> </div>
</div> </div>
......
...@@ -61,4 +61,8 @@ export class LoginPage { ...@@ -61,4 +61,8 @@ export class LoginPage {
}) })
} }
forgot() {
this.navCtrl.push('ForgotPage')
}
} }
...@@ -39,7 +39,8 @@ export class MapPage { ...@@ -39,7 +39,8 @@ export class MapPage {
var locRef = firebase.database().ref().child('/drivers/'); var locRef = firebase.database().ref().child('/drivers/');
locRef.orderByChild("id").equalTo(Number(This.driver.driverId)).on("value", function (snapshot) { locRef.orderByChild("id").equalTo(Number(This.driver.driverId)).on("value", function (snapshot) {
var res_arr = (<any>Object).entries(snapshot.val()).map(e => Object.assign(e[1], { key: e[0] })); var res_arr = []
res_arr = (<any>Object).entries(snapshot.val()).map(e => Object.assign(e[1], { key: e[0] }));
console.log(res_arr[0]) console.log(res_arr[0])
if (res_arr[0].started == true){ if (res_arr[0].started == true){
...@@ -121,7 +122,8 @@ export class MapPage { ...@@ -121,7 +122,8 @@ export class MapPage {
var locRef = firebase.database().ref().child('/drivers/'); var locRef = firebase.database().ref().child('/drivers/');
locRef.orderByChild("id").equalTo(Number(This.driver.driverId)).on("value", function (snapshot) { locRef.orderByChild("id").equalTo(Number(This.driver.driverId)).on("value", function (snapshot) {
var res_arr = (<any>Object).entries(snapshot.val()).map(e => Object.assign(e[1], { key: e[0] })); var res_arr = []
res_arr = (<any>Object).entries(snapshot.val()).map(e => Object.assign(e[1], { key: e[0] }));
console.log(res_arr[0]) console.log(res_arr[0])
if (res_arr[0].started == false) { if (res_arr[0].started == false) {
locRef.off("value"); locRef.off("value");
......
<ion-content padding class="theme_dark_transparent">
<div class="wrapper">
<div class="log_div">
<ion-card>
<ion-card-content>
<h4>Rate now</h4>
<hr>
<br>
<div class="textCenter">
<div class="ratting_circle">
<img [src]=driver.image>
</div>
</div>
<h5>{{driver.name}}</h5>
<p>Give your rating</p>
<rating
readOnly="false"
max="5"
emptyStarIconName="star-outline"
halfStarIconName="star-half"
starIconName="star"
nullable="false" [(ngModel)]="rate"></rating>
<!-- <p>Give your Feedback</p>
<textarea rows="3">
</textarea> -->
</ion-card-content>
<div padding class="textCenter">
<button ion-button full class=" receipt_close brdr" (click)="submit()">Submit</button>
<button ion-button full class=" receipt_close" (click)="dismiss()">Later</button>
<div class="clear"></div>
</div>
</ion-card>
</div>
</div>
</ion-content>
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { RattingPage } from './ratting';
import { Ionic2RatingModule } from 'ionic2-rating';
@NgModule({
declarations: [
RattingPage,
],
imports: [
IonicPageModule.forChild(RattingPage),
Ionic2RatingModule
],
})
export class RattingPageModule {}
page-ratting {
.theme_dark_transparent {
background: rgba(0,0,0,0.8);
}
.wrapper{
width:100%;
height:100%;
.log_div {
padding: 15px;
position:absolute;
top:0px;
left:0px;
right:0px;
bottom:0px;
padding-top: calc(100% - 85%);
img{
width: 150px;
padding-bottom: 30px;
}
.card{
border-radius: 5px;
h4{
color:#616161;
font-size: 26px;
font-weight: 400;
text-align: center;
}
hr{
width:30px;
margin:0 auto;
border:2px solid #ffd800;
height:0px;
}
.ratting_circle{
width:85px;
height:85px;
border-radius: 50%;
background: #f4f4f4;
margin:0 auto;
img{
width:100%;
height:100%;
border-radius: 50%;
object-fit: cover;
object-position: center;
padding: 0px;
}
}
h5{
text-align: center;
color: #656565;
padding-top: 10px;
font-weight: 400;
font-size:16px;
}
p{
color: #b2b2b2;
text-align: center;
padding-top: 10px;
padding-bottom: 10px;
}
.rating{
margin:0px;
padding:0px;
text-align: center;
li{
padding: 3px;
font-size: 25px;
.icon{
color: #fcb040 !important;
}
}
}
textarea{
background: #ebebeb;
width:100%;
}
.receipt_close{
background: #4d4d4d;
color: #ffffff;
font-size: 16px;
border-radius:0px;
height:35px;
padding-left: 15px;
padding-right:15px;
text-transform: capitalize;
width: 50%;
font-weight: 400;
margin:0 auto;
float: left;
}
.brdr{
border-right: 1px solid #fff;
}
}
}
}
}
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams,ViewController } from 'ionic-angular';
import { Myservice } from "../../providers/myservice";
import { Storage } from "@ionic/storage";
import { user } from "../../models/mymodel";
import { dataService } from "../../providers/common.service";
import { Toast } from "@ionic-native/toast";
@IonicPage()
@Component({
selector: 'page-ratting',
templateUrl: 'ratting.html',
})
export class RattingPage {
driver = this.navParams.get('driver')
rate:number;
local:user;
constructor(public navCtrl: NavController, public navParams: NavParams,public viewCtrl:ViewController, private myservice: Myservice, private storage:Storage, private comData:dataService, private toast:Toast) {
}
ionViewDidEnter() {
this.storage.get('user_data').then(data=>{
if(data){
this.local = data
}
})
}
dismiss()
{
this.navCtrl.setRoot('HomePage')
}
submit(){
if(this.rate!=undefined && this.rate){
this.myservice.show_loader();
var book = this.comData.getbookingData()
var data = { 'rating': this.rate, 'username': this.local.id, 'driver_id': this.driver.driverId, 'booking_id': book.bookingid }
console.log(data)
this.myservice.load_post(data, 'setRating').subscribe(response => {
this.myservice.hide_loader()
if (response.status == 'success') {
this.navCtrl.setRoot('HomePage')
this.toast.show(response.message, '2000', 'center').subscribe(
toast => {
console.log(toast);
});
}
else {
this.myservice.show_alert('', response.message)
}
})
}
}
}
...@@ -103,7 +103,8 @@ export class RidedetailPage { ...@@ -103,7 +103,8 @@ export class RidedetailPage {
findDrivers(){ findDrivers(){
var This = this var This = this
firebase.database().ref().child('/drivers/').orderByChild("status").equalTo('online').once("value", function (snapshot) { firebase.database().ref().child('/drivers/').orderByChild("status").equalTo('online').once("value", function (snapshot) {
var res_arr = (<any>Object).entries(snapshot.val()).map(e => Object.assign(e[1], { key: e[0] })); var res_arr = []
res_arr = (<any>Object).entries(snapshot.val()).map(e => Object.assign(e[1], { key: e[0] }));
console.log(res_arr) console.log(res_arr)
This.drivers = []; This.drivers = [];
for (let i = 0; i < res_arr.length; i++) { for (let i = 0; i < res_arr.length; i++) {
...@@ -182,6 +183,7 @@ export class RidedetailPage { ...@@ -182,6 +183,7 @@ export class RidedetailPage {
track(){ track(){
this.data.setdriverData(this.driver) this.data.setdriverData(this.driver)
console.log('driv',this.driver)
this.navCtrl.push('MapPage') this.navCtrl.push('MapPage')
} }
} }
...@@ -80,14 +80,14 @@ ...@@ -80,14 +80,14 @@
<ion-col col-3 class="jr_padding0"> <ion-col col-3 class="jr_padding0">
<div class="jr_car_info_detail jr_padding0"> <div class="jr_car_info_detail jr_padding0">
<p>Total</p> <p>Total</p>
<h6>300 km</h6> <h6>{{ride.km}} km</h6>
</div> </div>
<div class="jr_clear"></div> <div class="jr_clear"></div>
</ion-col> </ion-col>
<ion-col col-3 class="jr_padding0 right"> <ion-col col-3 class="jr_padding0 right">
<div class="jr_car_info_detail jr_padding0"> <div class="jr_car_info_detail jr_padding0">
<p>Total Price</p> <p>Total Price</p>
<h6>300 km</h6> <h6>Rs. {{ride.amount}}</h6>
</div> </div>
<div class="jr_clear"></div> <div class="jr_clear"></div>
</ion-col> </ion-col>
...@@ -98,7 +98,7 @@ ...@@ -98,7 +98,7 @@
</div> </div>
<div class="jr_bottom_button_bay"> <div class="jr_bottom_button_bay">
<button ion-button class="jr_offer_ride2" (click)="track()">Track Driver</button> <button ion-button class="jr_offer_ride2" (click)="close()">Close</button>
</div> </div>
</div> </div>
......
import { Component, NgZone } from '@angular/core'; import { Component, NgZone } from '@angular/core';
import { IonicPage, NavController, NavParams, Platform, LoadingController, AlertController } from 'ionic-angular'; import { IonicPage, NavController, NavParams, Platform } from 'ionic-angular';
import { dataService } from "../../providers/common.service"; import { dataService } from "../../providers/common.service";
import { Myservice } from "../../providers/myservice"; import { Myservice } from "../../providers/myservice";
import { Storage } from "@ionic/storage"; import { Storage } from "@ionic/storage";
...@@ -21,7 +21,7 @@ export class RidesummaryPage { ...@@ -21,7 +21,7 @@ export class RidesummaryPage {
driver: any; driver: any;
ride:any; ride:any;
constructor(public navCtrl: NavController, public navParams: NavParams, private data: dataService, private zone: NgZone, private myservice: Myservice, private storage: Storage, public platform: Platform, public loadingCtrl: LoadingController, private alertCtrl: AlertController) { constructor(public navCtrl: NavController, public navParams: NavParams, private data: dataService, private zone: NgZone, private myservice: Myservice, private storage: Storage, public platform: Platform) {
} }
ionViewDidEnter() { ionViewDidEnter() {
...@@ -89,4 +89,8 @@ export class RidesummaryPage { ...@@ -89,4 +89,8 @@ export class RidesummaryPage {
this.unregisterBackButtonAction && this.unregisterBackButtonAction(); this.unregisterBackButtonAction && this.unregisterBackButtonAction();
} }
close(){
this.navCtrl.push('RattingPage',{driver:this.driver})
}
} }
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<div class="cab_search_result_page"> <div class="cab_search_result_page">
<p>Popular Search</p> <p>Popular Search</p>
<ul> <ul>
<li *ngFor="let search of searches | search : searchText"> <li *ngFor="let search of searches | search : searchText" (click)="setDirection(search)">
<h5>{{search.keyword}}</h5> <h5>{{search.keyword}}</h5>
<h6>{{search.location}}</h6> <h6>{{search.location}}</h6>
</li> </li>
......
...@@ -30,6 +30,10 @@ export class SearchridePage { ...@@ -30,6 +30,10 @@ export class SearchridePage {
} }
}) })
} }
setDirection(data){
this.viewCtrl.dismiss(data);
}
dismiss() dismiss()
{ {
......
...@@ -24,6 +24,7 @@ driverData:any; ...@@ -24,6 +24,7 @@ driverData:any;
public getrateData(){ public getrateData(){
return this.rateData; return this.rateData;
} }
public setdriverData(val){ public setdriverData(val){
this.driverData = val; this.driverData = val;
} }
......
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