source: phonelux-frontend/src/components/CompareOffersComponent/CompareOffersComponent.js@ 895cd87

Last change on this file since 895cd87 was 48f3030, checked in by Marko <Marko@…>, 22 months ago

Implemented all use cases

  • Property mode set to 100644
File size: 9.5 KB
Line 
1import React, { Component } from 'react'
2import HeaderComponent from '../HeaderComponent/HeaderComponent'
3import './CompareOffersComponent.css'
4import CompareIcon from '@mui/icons-material/Compare';
5import RemoveCircleIcon from '@mui/icons-material/RemoveCircle';
6import axios from 'axios';
7import Tippy from '@tippyjs/react';
8
9export class CompareOffersComponent extends Component {
10
11 constructor(props) {
12 super(props)
13
14 this.state = {
15 offersToCompare: []
16 }
17 }
18 componentDidMount() {
19 if(localStorage.getItem('offersToCompare') && JSON.parse(localStorage.getItem('offersToCompare')).length >0)
20 {
21 let offersToCompareString = JSON.parse(localStorage.getItem('offersToCompare')).join(',')
22
23 var config = {
24 method: 'get',
25 url: '/multipleoffers?offerIds='+offersToCompareString,
26 headers: { }
27 };
28
29 axios(config)
30 .then(response => {
31 this.setState({
32 offersToCompare: response.data
33 })
34 })
35 .catch(error => {
36 console.log(error);
37 });
38 }
39 }
40
41 handleRemove = (event) => {
42 let offerToRemove = event.target.getAttribute('offerid')
43 let offers = JSON.parse(localStorage.getItem('offersToCompare'))
44 localStorage.setItem('offersToCompare',JSON.stringify(offers.filter(offer => offer!=offerToRemove)))
45 this.setState({
46 offersToCompare: this.state.offersToCompare.filter(offer => offer.id != offerToRemove)
47 })
48 }
49
50
51 render() {
52 console.log(this.state)
53 return (
54 <div className='compare-offers-main'>
55 <HeaderComponent/>
56 <div className='compare-offers-header'>
57 <h1 className='compare-offers-header-text'>
58 Спореди понуди
59 </h1>
60 </div>
61 {(() => {
62 if(localStorage.getItem('offersToCompare') && JSON.parse(localStorage.getItem('offersToCompare')).length >0)
63 {
64 return <table cellPadding={20} className='compare-offers-table'>
65 <tbody>
66 <tr className='compare-offers-table-row'>
67 <th className='compare-offer-table-headers'></th>
68 {
69 this.state.offersToCompare.map((offer,idx) =>
70 <Tippy placement='bottom' content='Отстранете ја понудата'>
71 <td onClick={this.handleRemove} className='compare-offers-top-headers' offerid={offer.id}
72 key={idx}>Понуда #{idx+1}</td>
73 </Tippy>
74 )
75 }
76 </tr>
77 <tr className='compare-offers-table-row'>
78 <th className='compare-offer-table-headers'>Име на понуда</th>
79 {
80 this.state.offersToCompare.map((offer,idx) => <td key={idx}><a href={offer.offer_url}>{offer.offer_name}</a></td>)
81 }
82 </tr>
83 <tr className='compare-offers-table-row'>
84 <th className='compare-offer-table-headers'>Продавница</th>
85 {
86 this.state.offersToCompare.map((offer,idx) => <td key={idx}><b>{offer.offer_shop}</b></td>)
87 }
88 </tr>
89 <tr className='compare-offers-table-row'>
90 <th className='compare-offer-table-headers'>Цена</th>
91 {
92 this.state.offersToCompare.map((offer,idx) => <td key={idx}>{offer.price} ден.</td>)
93 }
94 </tr>
95 { !localStorage.getItem('pickedSpecifications') || localStorage.getItem('pickedSpecifications').includes("РАМ меморија") ?
96 <tr className='compare-offers-table-row'>
97 <th className='compare-offer-table-headers'>РАМ меморија</th>
98 {
99 this.state.offersToCompare.map((offer,idx) => <td key={idx}>{offer.ram_memory == null ||
100 offer.ram_memory == '' ? '/' : offer.ram_memory}</td>)
101 }
102 </tr> : <></>
103 }
104 { !localStorage.getItem('pickedSpecifications') || localStorage.getItem('pickedSpecifications').includes("РОМ меморија") ?
105 <tr className='compare-offers-table-row'>
106 <th className='compare-offer-table-headers'>РОМ меморија</th>
107 {
108 this.state.offersToCompare.map((offer,idx) => <td key={idx}>{offer.rom_memory == null ||
109 offer.rom_memory == '' ? '/' : offer.rom_memory}</td>)
110 }
111 </tr> : <></>
112 }
113 { !localStorage.getItem('pickedSpecifications') || localStorage.getItem('pickedSpecifications').includes("Предна камера") ?
114 <tr className='compare-offers-table-row'>
115 <th className='compare-offer-table-headers'>Предна камера</th>
116 {
117 this.state.offersToCompare.map((offer,idx) => <td key={idx}>{offer.front_camera == null ||
118 offer.front_camera == '' ? '/' : offer.front_camera}</td>)
119 }
120 </tr> : <></>
121 }
122 { !localStorage.getItem('pickedSpecifications') || localStorage.getItem('pickedSpecifications').includes("Задна камера") ?
123 <tr className='compare-offers-table-row'>
124 <th className='compare-offer-table-headers'>Задна камера</th>
125 {
126 this.state.offersToCompare.map((offer,idx) => <td key={idx}>{offer.back_camera == null ||
127 offer.back_camera == '' ? '/' : offer.back_camera}</td>)
128 }
129 </tr> : <></>
130 }
131 { !localStorage.getItem('pickedSpecifications') || localStorage.getItem('pickedSpecifications').includes("Процесор") ?
132 <tr className='compare-offers-table-row'>
133 <th className='compare-offer-table-headers'>Процесор</th>
134 {
135 this.state.offersToCompare.map((offer,idx) => <td key={idx}>{offer.cpu == null ||
136 offer.cpu == '' ? '/' : offer.cpu}</td>)
137 }
138 </tr> : <></>
139 }
140 { !localStorage.getItem('pickedSpecifications') || localStorage.getItem('pickedSpecifications').includes("Чипсет") ?
141 <tr className='compare-offers-table-row'>
142 <th className='compare-offer-table-headers'>Чипсет</th>
143 {
144 this.state.offersToCompare.map((offer,idx) => <td key={idx}>{offer.chipset == null ||
145 offer.chipset == '' ? '/' : offer.chipset}</td>)
146 }
147 </tr> : <></>
148 }
149 { !localStorage.getItem('pickedSpecifications') || localStorage.getItem('pickedSpecifications').includes("Оперативен систем") ?
150 <tr className='compare-offers-table-row'>
151 <th className='compare-offer-table-headers'>Оперативен систем</th>
152 {
153 this.state.offersToCompare.map((offer,idx) => <td key={idx}>{offer.operating_system == null ||
154 offer.operating_system == '' ? '/' : offer.operating_system}</td>)
155 }
156 </tr> : <></>
157 }
158 { !localStorage.getItem('pickedSpecifications') || localStorage.getItem('pickedSpecifications').includes("Батерија") ?
159 <tr className='compare-offers-table-row'>
160 <th className='compare-offer-table-headers'>Батерија</th>
161 {
162 this.state.offersToCompare.map((offer,idx) => <td key={idx}>{offer.battery == null ||
163 offer.battery == '' ? '/' : offer.battery}</td>)
164 }
165 </tr> : <></>
166 }
167 { !localStorage.getItem('pickedSpecifications') || localStorage.getItem('pickedSpecifications').includes("Боја") ?
168 <tr className='compare-offers-table-row'>
169 <th className='compare-offer-table-headers'>Боја</th>
170 {
171 this.state.offersToCompare.map((offer,idx) => <td key={idx}>{offer.color == null ||
172 offer.color == '' ? '/' : offer.color}</td>)
173 }
174 </tr> : <></>
175 }
176 </tbody>
177 </table>
178 }
179 else{
180 return <h1 className='no-offers-saved-message'>Нема зачувано понуди</h1>
181 }
182
183 })()}
184
185 </div>
186 )
187 }
188}
189
190export default CompareOffersComponent
191
Note: See TracBrowser for help on using the repository browser.