Commit 4e1502ec by kevin

Pushed on 2/8/19

parent cc7b27bc
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.kevin.allorepair" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Allorepair</name>
<description>Automobile fixes solutions</description>
<author email="[email protected]" href="http://ionicframework.com/"></author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="ScrollEnabled" value="false" />
<preference name="android-minSdkVersion" value="19" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" />
<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">
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
<allow-intent href="market:*" />
<icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
<icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
<icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
<icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
<icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
<icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
<splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
<splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
<splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
<splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
<splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
<splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
<splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
<splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
<splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
<splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
<splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
<splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
<icon height="57" src="resources/ios/icon/icon.png" width="57" />
<icon height="114" src="resources/ios/icon/[email protected]" width="114" />
<icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
<icon height="58" src="resources/ios/icon/[email protected]" width="58" />
<icon height="87" src="resources/ios/icon/[email protected]" width="87" />
<icon height="20" src="resources/ios/icon/icon-20.png" width="20" />
<icon height="40" src="resources/ios/icon/[email protected]" width="40" />
<icon height="60" src="resources/ios/icon/[email protected]" width="60" />
<icon height="48" src="resources/ios/icon/[email protected]" width="48" />
<icon height="55" src="resources/ios/icon/[email protected]" width="55" />
<icon height="29" src="resources/ios/icon/icon-29.png" width="29" />
<icon height="58" src="resources/ios/icon/[email protected]" width="58" />
<icon height="87" src="resources/ios/icon/[email protected]" width="87" />
<icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
<icon height="80" src="resources/ios/icon/[email protected]" width="80" />
<icon height="120" src="resources/ios/icon/[email protected]" width="120" />
<icon height="88" src="resources/ios/icon/[email protected]" width="88" />
<icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
<icon height="100" src="resources/ios/icon/[email protected]" width="100" />
<icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
<icon height="120" src="resources/ios/icon/[email protected]" width="120" />
<icon height="180" src="resources/ios/icon/[email protected]" width="180" />
<icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
<icon height="144" src="resources/ios/icon/[email protected]" width="144" />
<icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
<icon height="152" src="resources/ios/icon/[email protected]" width="152" />
<icon height="167" src="resources/ios/icon/[email protected]" width="167" />
<icon height="172" src="resources/ios/icon/[email protected]" width="172" />
<icon height="196" src="resources/ios/icon/[email protected]" width="196" />
<icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
<splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
<splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
<splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
<splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
<splash height="1125" src="resources/ios/splash/Default-Landscape-2436h.png" width="2436" />
<splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
<splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
<splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
<splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
<splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
<splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
<splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
<splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
<splash height="2436" src="resources/ios/splash/Default-2436h.png" width="1125" />
<splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
</platform>
<plugin name="cordova-plugin-whitelist" spec="1.3.3" />
<plugin name="cordova-plugin-statusbar" spec="2.4.2" />
<plugin name="cordova-plugin-device" spec="2.0.2" />
<plugin name="cordova-plugin-splashscreen" spec="5.0.2" />
<plugin name="cordova-plugin-ionic-webview" spec="^4.0.0" />
<plugin name="cordova-plugin-ionic-keyboard" spec="^2.0.5" />
</widget>
{
"name": "allorepar",
"integrations": {},
"integrations": {
"cordova": {}
},
"type": "angular"
}
......@@ -25,7 +25,9 @@
"@ionic-native/splash-screen": "^5.0.0",
"@ionic-native/status-bar": "^5.0.0",
"@ionic/angular": "^4.1.0",
"@ionic/storage": "^2.2.0",
"angular-calendar": "^0.27.14",
"cordova-sqlite-storage": "^3.2.1",
"core-js": "^2.5.4",
"date-fns": "^1.30.1",
"ionic2-calendar": "^0.5.2",
......@@ -59,5 +61,10 @@
"tslint": "~5.17.0",
"typescript": "~3.1.6"
},
"description": "An Ionic project"
"description": "An Ionic project",
"cordova": {
"plugins": {
"cordova-sqlite-storage": {}
}
}
}
These are Cordova resources. You can replace icon.png and splash.png and run
`ionic cordova resources` to generate custom icons and splash screens for your
app. See `ionic cordova resources --help` for details.
Cordova reference documentation:
- Icons: https://cordova.apache.org/docs/en/latest/config_ref/images.html
- Splash Screens: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-splashscreen/
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">localhost</domain>
</domain-config>
</network-security-config>
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { FormsModule ,ReactiveFormsModule} from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
......@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule,
FormsModule,
IonicModule,
ReactiveFormsModule,
RouterModule.forChild(routes)
],
declarations: [AddcarPage]
......
<ion-content>
<div class="forgot_wrapper">
<div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()">
</button>
<div class="nav_title floatLeft"><h4>ADD YOUR CAR</h4></div>
<button class="nav_btn nav_btn_text floatRight" (click)="goToPage('login')">
Skip
</button>
<div class="clear"></div>
</div>
<div class="forgot_form">
<div class="showcar">
<img src="../../assets/img/asset_show_car.png">
</div>
<div class="row">
<ion-select placeholder="">
<ion-select-option value="" selected>Company Name</ion-select-option>
</ion-select>
</div>
<div class="row">
<ion-select placeholder="">
<ion-select-option value="" selected>Modal Name</ion-select-option>
</ion-select>
</div>
<div class="row">
<ion-select placeholder="">
<ion-select-option value="" selected>Modal Year</ion-select-option>
</ion-select>
</div>
<div class="row">
<p>Mileage</p>
<ion-select placeholder="">
<ion-select-option value="" selected>0 - 10km</ion-select-option>
</ion-select>
</div>
<div class="forgot_wrapper">
<div class="app_header">
<button class="nav_btn back_btn floatLeft" (click)="goBack()">
<div class="row textCenter">
<button class="signup_btn" (click)="goToPage('login')">Add My car</button>
</div>
</div>
</div>
</ion-content>
</button>
<div class="nav_title floatLeft"><h4>ADD YOUR CAR</h4></div>
<button class="nav_btn nav_btn_text floatRight" (click)="goToPage('login')">
Skip
</button>
<div class="clear"></div>
</div>
<div class="forgot_form">
<div class="showcar">
<img src="../../assets/img/asset_show_car.png">
</div>
<div *ngIf= "!vinSearchFlag" >
<div class="row" >
<p>Enter VIN Number</p>
<ion-input type="text" [(ngModel)]="vinNumber" ></ion-input>
</div>
<div class="row textCenter">
<button class="signup_btn" (click)="getVinNumber($event)">Search</button>
</div>
</div>
<form [formGroup]="addcarForm">
<div *ngIf="formDisplayFlag">
<div class="row">
<p>Company Name</p>
<ion-input type="text" formControlName="companyname"></ion-input>
</div>
<div class="row">
<p>Modal Name</p>
<ion-input type="text" formControlName="modalname"></ion-input>
</div>
<div class="row">
<div class="row">
<p>Modal Year</p>
<ion-input type="number" formControlName="modalyear"></ion-input>
</div>
</div>
<div class="row" *ngIf="milege_data">
<p>Mileage</p>
<ion-input type="number" formControlName="milege"></ion-input>
</div>
<div class="row textCenter">
<button class="signup_btn" (click)="goToPage('login')">Add My car</button>
</div>
</div>
</form>
</div>
</div>
</ion-content>
\ No newline at end of file
import { Component, OnInit } from '@angular/core';
import { Router,ActivatedRoute } from '@angular/router';
import { Location } from '@angular/common';
import { Storage } from '@ionic/storage';
import {BackendApiService} from '../webservices/backend-api.service';
import { ReactiveFormsModule, Validator,FormArray,FormGroup,FormBuilder, Validators} from '@angular/forms';
@Component({
selector: 'app-addcar',
templateUrl: './addcar.page.html',
styleUrls: ['./addcar.page.scss'],
})
export class AddcarPage implements OnInit {
milege_data:any;
vinNumber ='';
user_data:any;
userResponse:any;
carDetails:any;
formDisplayFlag:boolean;
vinSearchFlag:boolean;
public addcarForm:FormGroup;
constructor(
private router: Router,
private route: ActivatedRoute,
private location: Location
) {
private location: Location,
private storage:Storage,
public service:BackendApiService,
private formbuilder:FormBuilder
) {
this.vinSearchFlag= false;
this.formDisplayFlag = false;
this.carDetails={companyname:'',modalname:'',modalyear:''}
this.storage.get('customer_data').then(data => {
this.user_data=data;
});
this.addcarForm = this.formbuilder.group({
companyname:[''],
modalname:[''],
modalyear:[''],
milege:['']
});
}
ngOnInit() {
this.milege_data =[{id:1,value:"0-5km"},{id:2,value:"5-10km"},{id:3,value:"10-15km"},{id:4,value:"15-20km"},{id:5,value:"20-25km"},{id:6,value:"25-30km"},{id:7,value:"More than 30km"}]
}
goToPage(path,data=null){
......@@ -28,5 +52,17 @@ export class AddcarPage implements OnInit {
goBack() {
this.location.back();
}
getVinNumber() {
console.log(this.vinNumber);
// this.service.presentLoader();
// this.service.post_data('',this.vinNumber).subscribe(response =>{
// this.service.dismissLoader();
// console.log(response);
// })
this.carDetails.companyname= "sucess";
console.log(this.carDetails);
this.formDisplayFlag= true;
this.vinSearchFlag =true;
}
}
//Moduels and Pages
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouteReuseStrategy } from '@angular/router';
import { IonicModule, IonicRouteStrategy } from '@ionic/angular';
import { SplashScreen } from '@ionic-native/splash-screen/ngx';
import { StatusBar } from '@ionic-native/status-bar/ngx';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app-routing.module';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { ReviewPage} from './review/review.page';
import { CalendarModule, DateAdapter } from 'angular-calendar';
import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
//External Plugins
import { IonicStorageModule } from '@ionic/storage';
@NgModule({
......@@ -26,6 +25,7 @@ import { adapterFactory } from 'angular-calendar/date-adapters/date-fns';
],
imports: [
BrowserModule,
IonicStorageModule.forRoot(),
IonicModule.forRoot(),
AppRoutingModule,
CalendarModule.forRoot({
......
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { FormsModule,ReactiveFormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
......@@ -19,6 +19,7 @@ const routes: Routes = [
CommonModule,
FormsModule,
IonicModule,
ReactiveFormsModule,
RouterModule.forChild(routes)
],
declarations: [LoginPage]
......
......@@ -3,18 +3,28 @@
<h1>Hi!</h1>
<h3>Login to Continue</h3>
<div class="login_form">
<form [formGroup]="loginForm">
<div class="row">
<ion-input value="Email Address" type="text"></ion-input>
<ion-input placeholder="Email" type="text" formControlName="user_username"></ion-input>
</div>
<div class="row">
<ion-input value="Password" type="password"></ion-input>
<div>
<p style="text-align: center;color: white" *ngIf="loginForm.controls.user_username.hasError('required') && loginForm.controls.user_username.touched">Enter Username.</p>
<p style="text-align: center;color: white" *ngIf="loginForm.controls.user_username.hasError('email') && loginForm.controls.user_username.touched">Invalid Email.</p>
</div>
<div class="row">
<ion-input placeholder="Password" type="password" formControlName="user_password"></ion-input>
</div>
<div>
<p style="text-align: center;color: white" *ngIf="loginForm.controls.user_password.hasError('required') && loginForm.controls.user_password.touched">Enter Password.</p>
<p style="text-align: center;color: white" *ngIf="loginForm.controls.user_password.hasError('minLength') && loginForm.controls.user_password.touched">Minimum password length is 6!</p>
</div>
<div class="row">
<button class="login_btn" (click)="goToPage('home')">Sign In</button>
<button class="login_btn" (click)="login()" >Sign In</button>
</div>
<div class="row">
<p (click)="goToPage('forgot')">Forgot Password ?</p>
</div>
</form>
</div>
<div class="sigup_footer" (click)="istoggle()">
<img src="../../assets/img/asset_signup_arrow.png"><br>
......@@ -31,56 +41,51 @@
</div>
<h1>Sign Up</h1>
<div class="signup_form">
<form [formGroup]="signupForm">
<div class="row">
<p>Your Full Name</p>
<ion-input value="John Doe" type="text"></ion-input>
<ion-input formControlName="user_name" autocomplete="off" type="text"></ion-input>
</div>
<div class="bmd-field error">
<p class="valid-p" style="text-align: center; color: black;font-size: 14px" *ngIf="signupForm.controls.user_name.hasError('required') && signupForm.controls.user_name.touched">Enter Name.</p>
</div>
<div class="row">
<p>Email Address</p>
<ion-input value="[email protected]" type="text"></ion-input>
<ion-input formControlName="user_email" autocomplete="off" type="text"></ion-input>
</div>
<div class="bmd-field error">
<p class="valid-p" style="text-align: center; color: black;font-size: 14px" *ngIf="signupForm.controls.user_email.hasError('required') && signupForm.controls.user_email.touched">Enter Username.</p>
<p class="valid-p" style="text-align: center; color: black;font-size: 14px" *ngIf="signupForm.controls.user_email.hasError('email') && signupForm.controls.user_email.touched">Invalid Email.</p>
</div>
<div class="row">
<p>Phone Number</p>
<ion-row class="p0">
<ion-col size="4">
<ion-select placeholder="">
<ion-select-option value="">+91</ion-select-option>
<ion-select-option value="+33" selected >+33</ion-select-option>
</ion-select>
</ion-col>
<ion-col size="8">
<ion-input value="" type="number"></ion-input>
<ion-input autocomplete="off" type="number" formControlName="user_phonenumber"></ion-input>
</ion-col>
</ion-row>
<div class="bmd-field error">
<p class="valid-p" style="text-align: center; color: black;font-size: 14px" *ngIf="signupForm.controls.user_phonenumber.hasError('required') && signupForm.controls.user_phonenumber.touched">Enter Phone Number.</p>
</div>
</div>
<div class="row">
<p>Country</p>
<ion-select placeholder="">
<ion-select-option value="">Country Name</ion-select-option>
</ion-select>
</div>
<div class="row">
<p>District</p>
<ion-select placeholder="">
<ion-select-option value="">District Name</ion-select-option>
</ion-select>
<ion-select-option value="France" selected>France</ion-select-option>
</ion-select>
</div>
<div class="row">
<p>City</p>
<ion-select placeholder="">
<ion-select-option value="">City Name</ion-select-option>
</ion-select>
</div>
<div class="row">
<p>Area</p>
<ion-select placeholder="">
<ion-select-option value="">Area name</ion-select-option>
</ion-select>
</div>
<div class="row">
<p>House name/Building</p>
<ion-select placeholder="">
<ion-select-option value="">Choose address</ion-select-option>
</ion-select>
<div class="row">
<p>Adress</p>
<ion-input type="text" autocomplete="off" formControlName="user_address"></ion-input>
<div class="bmd-field error">
<p class="valid-p" style="text-align: center; color: black;font-size: 14px" *ngIf="signupForm.controls.user_address.hasError('required') && signupForm.controls.user_address.touched">Enter Address.</p>
</div>
</div>
<div class="row">
<h6>This address will be saved as your permanent address. You can change it at any time.</h6>
......@@ -92,6 +97,7 @@
<p>By Creating Account, I agree to allo repar's<br>
<a>Terms & Conditions</a></p>
</div>
</form>
</div>
</div>
</ion-content>
......
//Modules
import { Component, OnInit } from '@angular/core';
import { trigger, transition, animate, style } from '@angular/animations';
import { Router,ActivatedRoute } from '@angular/router';
import {FormGroup,FormBuilder,Validator, Validators,ReactiveFormsModule} from '@angular/forms'
//Plugins
import { Storage } from '@ionic/storage';
//Service
import {BackendApiService} from '../webservices/backend-api.service'
@Component({
selector: 'app-login',
......@@ -20,10 +26,30 @@ import { Router,ActivatedRoute } from '@angular/router';
})
export class LoginPage implements OnInit {
isShow = false;
signupForm:FormGroup;
loginForm:FormGroup;
constructor(
private router: Router,
private route: ActivatedRoute,
) { }
public storgae:Storage,
public formbuilder:FormBuilder,
public service:BackendApiService
) {
this.signupForm = this.formbuilder.group({
user_name:['',Validators.required],
user_email:['',Validators.compose([Validators.required,Validators.email])],
user_phonecode:[''],
user_phonenumber:['',Validators.required],
user_country:[''],
user_address:['',Validators.required],
user_password:['']
});
this.loginForm = this.formbuilder.group({
user_username:['',Validators.compose([Validators.required, Validators.email])],
user_password:['',Validators.compose([Validators.required, Validators.minLength(6)])]
});
}
ngOnInit() {
}
......@@ -33,9 +59,21 @@ export class LoginPage implements OnInit {
}
goToPage(path,data=null){
goToPage(path,data=null){ //goToPage('home')
this.router.navigateByUrl(path,{queryParams:data});
}
login() {
this.goToPage('home');
if(this.loginForm.valid) {
console.log(this.loginForm.value);
} else {
this.service.presentToast('Something error happend.Sorry');
}
}
signUp() {
}
}
export class signup {
user_name:''
user_email:''
user_phonecode:''
user_phonenumber:''
user_country:''
user_address:''
user_password:''
}
\ No newline at end of file
......@@ -67,7 +67,7 @@
background-position: center;
background-repeat: no-repeat;
background-size: 100%;
padding: 10px;
padding: 35px;
padding-left: 15px;
padding-right: 15px;
}
......@@ -77,7 +77,7 @@
background-position: center;
background-repeat: no-repeat;
background-size: 100%;
padding: 10px;
padding: 35px;
padding-left: 15px;
padding-right: 15px;
}
......
import { TestBed } from '@angular/core/testing';
import { BackendApiService } from './backend-api.service';
describe('BackendApiService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: BackendApiService = TestBed.get(BackendApiService);
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
import { ToastController } from '@ionic/angular';
@Injectable({
providedIn: 'root'
})
export class BackendApiService {
constructor( public toastController:ToastController) {
}
//Toast Controller
async presentToast(message) {
const toast = await this.toastController.create({
message: message,
duration: 2000
});
toast.present();
}
}
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