Commit 97ea4fbc50fefef6bfaf89c2ec28165552fad51e
Exists in
master
and in
1 other branch
Merge branch 'master' into 'master'
Master(mpuebla) See merge request !29
Showing
17 changed files
Show diff stats
src/app/app-routing.module.ts
... | ... | @@ -7,12 +7,14 @@ import { ConfirmacionCarritoComponent } from './components/confirmacion-carrito/ |
7 | 7 | import { MasterComponent } from './components/master/master.component'; |
8 | 8 | import { AmbImagenesComponent } from './components/amb-imagenes/amb-imagenes.component'; |
9 | 9 | import { PagoComponent } from './components/pago/pago.component'; |
10 | +import { CancelarCompraComponent } from './components/cancelar-compra/cancelar-compra.component'; | |
10 | 11 | |
11 | 12 | const routes: Routes = [ |
12 | 13 | { path: '', component: HomeComponent }, |
13 | 14 | { path: 'home', component: HomeComponent }, |
14 | 15 | { path: 'abm-imagenes', component: AmbImagenesComponent }, |
15 | 16 | { path: 'confirmacion-carrito', component: ConfirmacionCarritoComponent }, |
17 | + { path: 'cancelar-compra', component: CancelarCompraComponent }, | |
16 | 18 | { |
17 | 19 | path: '', |
18 | 20 | component: MasterComponent, |
src/app/app.module.ts
... | ... | @@ -21,6 +21,7 @@ import { PopoverPromosComponent } from './components/popover-promos/popover-prom |
21 | 21 | import { PopoverSinonimosComponent } from './components/popover-sinonimos/popover-sinonimos.component'; |
22 | 22 | import { AmbImagenesComponent } from './components/amb-imagenes/amb-imagenes.component'; |
23 | 23 | import { PagoComponent } from './components/pago/pago.component'; |
24 | +import { CancelarCompraComponent } from './components/cancelar-compra/cancelar-compra.component'; | |
24 | 25 | //#endregion |
25 | 26 | |
26 | 27 | @NgModule({ |
... | ... | @@ -36,7 +37,8 @@ import { PagoComponent } from './components/pago/pago.component'; |
36 | 37 | PopoverPromosComponent, |
37 | 38 | PopoverSinonimosComponent, |
38 | 39 | AmbImagenesComponent, |
39 | - PagoComponent | |
40 | + PagoComponent, | |
41 | + CancelarCompraComponent | |
40 | 42 | ], |
41 | 43 | imports: [ |
42 | 44 | BrowserModule, |
src/app/components/busqueda-productos/busqueda-productos.component.html
... | ... | @@ -54,7 +54,7 @@ |
54 | 54 | </div> |
55 | 55 | </div> |
56 | 56 | <!-- LISTA DE PRODUCTOS --> |
57 | - <div class="row align-items-start vh-60 overflow-scroll disable-user-select"> | |
57 | + <div class="row align-items-start vh-70 overflow-scroll disable-user-select"> | |
58 | 58 | <div |
59 | 59 | class="col-4 p-2" |
60 | 60 | *ngFor="let producto of auxProductos"> |
... | ... | @@ -92,9 +92,11 @@ |
92 | 92 | </div> |
93 | 93 | |
94 | 94 | <!-- SPINNER --> |
95 | - <div *ngIf="productos.length === 0 && showSpinner" class="col-sm-10 align-self-center"> | |
96 | - <div class="spinner-border spinner-lg text-secondary" role="status"></div> | |
97 | - <span class="text-secondary m-2 h5">Cargando información.</span> | |
95 | + <div | |
96 | + *ngIf="productos.length === 0 && showSpinner" | |
97 | + class="col-sm-10 p-0 align-self-center text-center"> | |
98 | + <div class="spinner-border spinner-lg text-secondary" role="status"></div> | |
99 | + <span class="text-secondary m-2 h5">Cargando información.</span> | |
98 | 100 | </div> |
99 | 101 | |
100 | 102 | </div> |
src/app/components/busqueda-productos/busqueda-productos.component.ts
1 | -import { Component, OnInit, APP_BOOTSTRAP_LISTENER } from '@angular/core'; | |
1 | +import { Component, OnInit } from '@angular/core'; | |
2 | 2 | import { ProductoService } from 'src/app/services/producto.service'; |
3 | 3 | import { Producto } from 'src/app/wrappers/producto'; |
4 | 4 | import { Categoria } from 'src/app/wrappers/categoria'; |
... | ... | @@ -74,4 +74,3 @@ export class BusquedaProductosComponent implements OnInit { |
74 | 74 | this.router.navigate(['inicio']); |
75 | 75 | } |
76 | 76 | } |
77 | - |
src/app/components/cancelar-compra/cancelar-compra.component.html
... | ... | @@ -0,0 +1,74 @@ |
1 | +<div class="container-fluid p-0"> | |
2 | + <img src="{{apiUrl}}/imagenes/homeBackground.jpg" class="background-image"> | |
3 | + <div class="row m-0"> | |
4 | + <div class="col p-0"> | |
5 | + <div class="vh-100 fade-in d-flex align-content-strech flex-wrap disable-user-select"> | |
6 | + | |
7 | + <!-- HEADER --> | |
8 | + <div class="row m-0 w-100 bg-primary-gradient-horizontal"> | |
9 | + <div class="col-6 bg-white rounded-bottom-right"> | |
10 | + <div class="row h-100"> | |
11 | + <div class="col d-flex align-items-center"> | |
12 | + <img class="w-25 mx-auto d-block" src="{{apiUrl}}/imagenes/logoaxion.png"> | |
13 | + </div> | |
14 | + </div> | |
15 | + </div> | |
16 | + </div> | |
17 | + | |
18 | + <!-- INFO --> | |
19 | + <div class="row m-0 w-100"> | |
20 | + <div class="col-4 offset-2"> | |
21 | + <div class="row h-100"> | |
22 | + <div class="col-12 py-4"> | |
23 | + <div class="card h-100 rounded"> | |
24 | + <img src="{{apiUrl}}/imagenes/atencion.svg" class="w-50 mx-auto mt-auto mb-4"> | |
25 | + <div class="mb-auto mt-4"> | |
26 | + <p class="display-3 card-text text-center font-weight-bold"> | |
27 | + Atención | |
28 | + </p> | |
29 | + </div> | |
30 | + </div> | |
31 | + </div> | |
32 | + </div> | |
33 | + </div> | |
34 | + <div class="col-6 text-center text-white my-auto"> | |
35 | + <p class="display-3 font-weight-bold mb-5"> | |
36 | + Usted esta a punto<br>de cancelar su compra | |
37 | + </p> | |
38 | + <p class="display-4 m-0"> | |
39 | + Perderá los datos y<br>productos ya ingresados | |
40 | + </p> | |
41 | + <div class="d-flex justify-content-center mt-2"> | |
42 | + <button | |
43 | + type="button" | |
44 | + class="btn btn-lg btn-light shadow mr-4" | |
45 | + (click)="volverPreviousPage()"> | |
46 | + <span class="pr-2">Volver a mi compra</span> | |
47 | + <i class="fa fa-undo text-warning"></i> | |
48 | + </button> | |
49 | + <button | |
50 | + type="button" | |
51 | + class="btn btn-lg btn-light shadow ml-4" | |
52 | + (click)="limpiarCarritoYvolver()"> | |
53 | + <span class="pr-2">Si, terminar</span> | |
54 | + <i class="fa fa-times text-danger"></i> | |
55 | + </button> | |
56 | + </div> | |
57 | + </div> | |
58 | + </div> | |
59 | + | |
60 | + <!-- FOOTER --> | |
61 | + <div class="row m-0 w-100 bg-gray"> | |
62 | + <div class="col-6 bg-white offset-6 rounded-top-left"> | |
63 | + <div class="row h-100"> | |
64 | + <div class="col d-flex align-items-center"> | |
65 | + <img class="w-25 mx-auto d-block" src="{{apiUrl}}/imagenes/logodebo.png"> | |
66 | + </div> | |
67 | + </div> | |
68 | + </div> | |
69 | + </div> | |
70 | + | |
71 | + </div> | |
72 | + </div> | |
73 | + </div> | |
74 | +</div> |
src/app/components/cancelar-compra/cancelar-compra.component.scss
src/app/components/cancelar-compra/cancelar-compra.component.spec.ts
... | ... | @@ -0,0 +1,25 @@ |
1 | +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; | |
2 | + | |
3 | +import { CancelarCompraComponent } from './cancelar-compra.component'; | |
4 | + | |
5 | +describe('CancelarCompraComponent', () => { | |
6 | + let component: CancelarCompraComponent; | |
7 | + let fixture: ComponentFixture<CancelarCompraComponent>; | |
8 | + | |
9 | + beforeEach(async(() => { | |
10 | + TestBed.configureTestingModule({ | |
11 | + declarations: [ CancelarCompraComponent ] | |
12 | + }) | |
13 | + .compileComponents(); | |
14 | + })); | |
15 | + | |
16 | + beforeEach(() => { | |
17 | + fixture = TestBed.createComponent(CancelarCompraComponent); | |
18 | + component = fixture.componentInstance; | |
19 | + fixture.detectChanges(); | |
20 | + }); | |
21 | + | |
22 | + it('should create', () => { | |
23 | + expect(component).toBeTruthy(); | |
24 | + }); | |
25 | +}); |
src/app/components/cancelar-compra/cancelar-compra.component.ts
... | ... | @@ -0,0 +1,33 @@ |
1 | +import { Component, OnInit } from '@angular/core'; | |
2 | +import { appSettings } from 'src/etc/AppSettings'; | |
3 | +import { Location } from '@angular/common'; | |
4 | +import { Router } from '@angular/router'; | |
5 | + | |
6 | +@Component({ | |
7 | + selector: 'app-cancelar-compra', | |
8 | + templateUrl: './cancelar-compra.component.html', | |
9 | + styleUrls: ['./cancelar-compra.component.scss'] | |
10 | +}) | |
11 | +export class CancelarCompraComponent implements OnInit { | |
12 | + | |
13 | + private apiUrl: string = appSettings.apiUrl; | |
14 | + | |
15 | + constructor( | |
16 | + private location: Location, | |
17 | + private router: Router | |
18 | + ) { } | |
19 | + | |
20 | + ngOnInit() { | |
21 | + } | |
22 | + | |
23 | + volverPreviousPage() { | |
24 | + | |
25 | + this.location.back(); | |
26 | + } | |
27 | + | |
28 | + limpiarCarritoYvolver(){ | |
29 | + | |
30 | + this.router.navigate(['/home']); | |
31 | + } | |
32 | + | |
33 | +} |
src/app/components/confirmacion-carrito/confirmacion-carrito.component.html
... | ... | @@ -85,7 +85,7 @@ |
85 | 85 | <button |
86 | 86 | type="button" |
87 | 87 | class="btn btn-block btn-light shadow btn-sm shadow" |
88 | - [routerLink]="['/inicio']"> | |
88 | + (click)="volverPreviousPage()"> | |
89 | 89 | <span class="pr-2">Volver</span> |
90 | 90 | <i class="fa fa-undo text-warning"></i> |
91 | 91 | </button> |
... | ... | @@ -96,7 +96,7 @@ |
96 | 96 | <button |
97 | 97 | type="button" |
98 | 98 | class="btn btn-block btn-light shadow btn-sm shadow" |
99 | - [routerLink]="['home']"> | |
99 | + [routerLink]="['/cancelar-compra']"> | |
100 | 100 | <span class="pr-2">Cancelar</span> |
101 | 101 | <i class="fa fa-times text-danger"></i> |
102 | 102 | </button> |
src/app/components/confirmacion-carrito/confirmacion-carrito.component.ts
1 | 1 | import { Component, OnInit } from '@angular/core'; |
2 | 2 | import { appSettings } from 'src/etc/AppSettings'; |
3 | +import { Location } from '@angular/common'; | |
3 | 4 | |
4 | 5 | @Component({ |
5 | 6 | selector: 'app-confirmacion-carrito', |
... | ... | @@ -11,9 +12,13 @@ export class ConfirmacionCarritoComponent implements OnInit { |
11 | 12 | productos = [{}, {}, {}]; |
12 | 13 | private apiUrl: string = appSettings.apiUrl; |
13 | 14 | |
14 | - constructor() { } | |
15 | + constructor(private location: Location) { } | |
15 | 16 | |
16 | 17 | ngOnInit() { |
17 | 18 | } |
18 | 19 | |
20 | + volverPreviousPage() { | |
21 | + this.location.back(); | |
22 | + } | |
23 | + | |
19 | 24 | } |
src/app/components/home/home.component.html
1 | -<div class="container-fluid background-image"> | |
2 | - <div class="row"> | |
1 | +<div class="container-fluid p-0"> | |
2 | + <img src="{{apiUrl}}/imagenes/homeBackground.jpg" class="background-image"> | |
3 | + <div class="row m-0"> | |
3 | 4 | <div class="col p-0"> |
4 | - <div class="vh-100 d-flex align-content-between flex-wrap disable-user-select"> | |
5 | + <div | |
6 | + class="vh-100 fade-in d-flex align-content-between flex-wrap disable-user-select" | |
7 | + [routerLink]="['/inicio']"> | |
5 | 8 | |
6 | 9 | <!-- HEADER --> |
7 | 10 | <div class="row m-0 w-100 bg-primary-gradient-horizontal"> |
src/app/components/home/home.component.scss
... | ... | @@ -1,25 +0,0 @@ |
1 | -.background-image { | |
2 | - background-image: url(http://10.231.45.117:4705/autoservicio/imagenes/homeBackground.jpg); | |
3 | - background-repeat: no-repeat; | |
4 | - background-size: cover; | |
5 | -} | |
6 | - | |
7 | -.w-20 { | |
8 | - width: 20% !important; | |
9 | -} | |
10 | - | |
11 | -.rounded-bottom-right { | |
12 | - border-bottom-right-radius: 10rem; | |
13 | - &:before { | |
14 | - border-radius: 0 40px 40px 0; | |
15 | - background-color: #fff; | |
16 | - } | |
17 | -} | |
18 | - | |
19 | -.rounded-top-left { | |
20 | - border-top-left-radius: 10rem; | |
21 | -} | |
22 | - | |
23 | -.bg-gray { | |
24 | - background-color: #cccccc; | |
25 | -} |
src/app/components/home/home.component.ts
... | ... | @@ -11,14 +11,9 @@ export class HomeComponent implements OnInit { |
11 | 11 | |
12 | 12 | private apiUrl: string = appSettings.apiUrl; |
13 | 13 | |
14 | - constructor(private router: Router) { } | |
14 | + constructor() { } | |
15 | 15 | |
16 | 16 | ngOnInit() { |
17 | 17 | } |
18 | 18 | |
19 | - @HostListener('document:click', ['$event']) | |
20 | - documentClick(event: MouseEvent) { | |
21 | - this.router.navigate(['/inicio']); | |
22 | - } | |
23 | - | |
24 | 19 | } |
src/app/components/inicio/inicio.component.html
... | ... | @@ -109,8 +109,8 @@ |
109 | 109 | <!-- PRODUCTO A CARGAR --> |
110 | 110 | <div class="fade-in m-0" *ngIf="productoAcargar && !promoAcargar"> |
111 | 111 | <img |
112 | - class="card-img-top d-block w-100 mx-auto rounded-sm" | |
113 | - src="{{apiUrl}}/imagenes/testImg3.jpg"> | |
112 | + class="card-img-top d-block w-75 mx-auto rounded-sm" | |
113 | + src="{{apiUrl}}/imagenes/testImg.jpg"> | |
114 | 114 | |
115 | 115 | <div class="row justify-content-between m-3"> |
116 | 116 | <div class="col-12 text-left px-1"> |
... | ... | @@ -126,7 +126,7 @@ |
126 | 126 | <div class="fade-in m-0" *ngIf="promoAcargar"> |
127 | 127 | <img |
128 | 128 | class="card-img-top d-block w-100 mx-auto rounded-sm" |
129 | - src="{{apiUrl}}/imagenes/testImg3.jpg"> | |
129 | + src="{{apiUrl}}/imagenes/testImg.jpg"> | |
130 | 130 | |
131 | 131 | <div class="row justify-content-between m-3"> |
132 | 132 | <div class="col-12 text-left px-1"> |
src/app/components/sidebar/sidebar.component.html
... | ... | @@ -7,8 +7,10 @@ |
7 | 7 | |
8 | 8 | <div class="overflow-auto overflow-scroll mb-2 w-100"> |
9 | 9 | <!-- PRODUCTOS CARRITO --> |
10 | - <div class="fade-left my-2 bg-white border-0 rounded-sm" *ngFor="let producto of productosCarrito; let i = index"> | |
11 | - <img class="m-auto pt-2" src="{{apiUrl}}/imagenes/{{producto.imagenes[0].imagen}}"> | |
10 | + <div | |
11 | + class="fade-left my-2 bg-white border-0 rounded-sm" | |
12 | + *ngFor="let producto of productosCarrito.slice().reverse(); let i = index"> | |
13 | + <img class="w-100 m-auto rounded-sm shadow" src="{{apiUrl}}/imagenes/{{producto.imagenes[0].imagen}}"> | |
12 | 14 | <div class="row m-0 p-0 px-1 py-1 shadow rounded-sm"> |
13 | 15 | <div class="col-12 p-0 pt-2 text-left my-auto"> |
14 | 16 | <p class="m-0 h6"><small>{{producto.DetArt}}</small></p> |
... | ... | @@ -60,7 +62,10 @@ |
60 | 62 | <span class="font-weight-bold pr-1">Finalizar y Pagar</span> |
61 | 63 | <i class="fa fa-check text-success" aria-hidden="true"></i> |
62 | 64 | </button> |
63 | - <button type="button" class="btn btn-block btn-light shadow btn-sm shadow" (click)="cleanCarrito()"> | |
65 | + <button | |
66 | + type="button" | |
67 | + class="btn btn-block btn-light shadow btn-sm shadow" | |
68 | + [routerLink]="['/cancelar-compra']"> | |
64 | 69 | <span class="pr-1">Cancelar</span> |
65 | 70 | <i class="fa fa-times text-danger" aria-hidden="true"></i> |
66 | 71 | </button> |
src/assets/scss/animation.scss
1 | 1 | .fade-in { |
2 | - margin-top: 25px; | |
3 | - font-size: 21px; | |
4 | - text-align: center; | |
5 | - animation: fadein 1s; | |
6 | - -moz-animation: fadein 1s; /* Firefox */ | |
7 | - -webkit-animation: fadein 1s; /* Safari and Chrome */ | |
8 | - -o-animation: fadein 1s; /* Opera */ | |
2 | + -webkit-animation: fadein 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) both; | |
3 | + animation: fadein 0.6s cubic-bezier(0.39, 0.575, 0.565, 1) both; | |
9 | 4 | } |
10 | 5 | |
11 | -@keyframes fadein { | |
12 | - from { | |
13 | - opacity: 0; | |
14 | - } | |
15 | - to { | |
16 | - opacity: 1; | |
17 | - } | |
18 | -} | |
19 | - | |
20 | -@-moz-keyframes fadein { | |
21 | - /* Firefox */ | |
22 | - from { | |
6 | +@-webkit-keyframes fadein { | |
7 | + 0% { | |
8 | + -webkit-transform: translateZ(80px); | |
9 | + transform: translateZ(80px); | |
23 | 10 | opacity: 0; |
24 | 11 | } |
25 | - to { | |
12 | + 100% { | |
13 | + -webkit-transform: translateZ(0); | |
14 | + transform: translateZ(0); | |
26 | 15 | opacity: 1; |
27 | 16 | } |
28 | 17 | } |
29 | 18 | |
30 | -@-webkit-keyframes fadein { | |
31 | - /* Safari and Chrome */ | |
32 | - from { | |
19 | +@keyframes fadein { | |
20 | + 0% { | |
21 | + -webkit-transform: translateZ(80px); | |
22 | + transform: translateZ(80px); | |
33 | 23 | opacity: 0; |
34 | 24 | } |
35 | - to { | |
25 | + 100% { | |
26 | + -webkit-transform: translateZ(0); | |
27 | + transform: translateZ(0); | |
36 | 28 | opacity: 1; |
37 | 29 | } |
38 | 30 | } |
39 | 31 | |
40 | 32 | .fade-right { |
41 | - margin-top: 25px; | |
42 | - font-size: 21px; | |
43 | - text-align: center; | |
44 | 33 | animation: faderight 1s; |
45 | 34 | -moz-animation: faderight 1s; /* Firefox */ |
46 | 35 | -webkit-animation: faderight 1s; /* Safari and Chrome */ |
... | ... | @@ -122,11 +111,11 @@ |
122 | 111 | } |
123 | 112 | |
124 | 113 | .fade-bottom { |
125 | - -webkit-animation: fade-top 0.4s cubic-bezier(0.39, 0.575, 0.565, 1) both; | |
126 | - animation: fade-top 0.4s cubic-bezier(0.39, 0.575, 0.565, 1) both; | |
114 | + -webkit-animation: fade-bottom 0.4s cubic-bezier(0.39, 0.575, 0.565, 1) both; | |
115 | + animation: fade-bottom 0.4s cubic-bezier(0.39, 0.575, 0.565, 1) both; | |
127 | 116 | } |
128 | 117 | |
129 | -@-webkit-keyframes fade-top { | |
118 | +@-webkit-keyframes fade-bottom { | |
130 | 119 | 0% { |
131 | 120 | -webkit-transform: scaleY(0.4); |
132 | 121 | transform: scaleY(0.4); |
... | ... | @@ -141,7 +130,7 @@ |
141 | 130 | } |
142 | 131 | } |
143 | 132 | |
144 | -@keyframes fade-top { | |
133 | +@keyframes fade-bottom { | |
145 | 134 | 0% { |
146 | 135 | -webkit-transform: scaleY(0.4); |
147 | 136 | transform: scaleY(0.4); |
src/styles.scss
... | ... | @@ -52,7 +52,7 @@ body { |
52 | 52 | overflow-y: auto !important; |
53 | 53 | overflow-x: hidden !important; |
54 | 54 | &::-webkit-scrollbar { |
55 | - width: 0.5em; | |
55 | + width: 1em; | |
56 | 56 | } |
57 | 57 | &::-webkit-scrollbar-track { |
58 | 58 | border-radius: 10px; |
... | ... | @@ -116,3 +116,25 @@ body { |
116 | 116 | .sidebar { |
117 | 117 | right: 0; |
118 | 118 | } |
119 | + | |
120 | +.background-image { | |
121 | + background-repeat: no-repeat; | |
122 | + background-size: cover; | |
123 | + position: fixed; | |
124 | +} | |
125 | + | |
126 | +.rounded-bottom-right { | |
127 | + border-bottom-right-radius: 10rem; | |
128 | + &:before { | |
129 | + border-radius: 0 40px 40px 0; | |
130 | + background-color: #fff; | |
131 | + } | |
132 | +} | |
133 | + | |
134 | +.rounded-top-left { | |
135 | + border-top-left-radius: 10rem; | |
136 | +} | |
137 | + | |
138 | +.bg-gray { | |
139 | + background-color: #cccccc; | |
140 | +} |