Skip to content

Commit

Permalink
Add sort-function to profile
Browse files Browse the repository at this point in the history
  • Loading branch information
tklein1801 committed Mar 11, 2021
1 parent 24a1390 commit 33b0c5e
Show file tree
Hide file tree
Showing 5 changed files with 203 additions and 87 deletions.
8 changes: 8 additions & 0 deletions assets/js/ApiHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -347,6 +347,14 @@ class Ride {
return data;
}

async getUserOffers() {
const response = await fetch(this.apiHost + "user", {
method: "GET",
});
const data = await response.json();
return data;
}

/**
* @param {*} rideId
*/
Expand Down
85 changes: 85 additions & 0 deletions assets/js/sort.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
class Sort {
oldToNew(data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(a.createdAt) > parseInt(b.createdAt)) {
return 1;
}
if (parseInt(a.createdAt) < parseInt(b.createdAt)) {
return -1;
}
return 0;
});
return temp;
}

newToOld(data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(b.createdAt) > parseInt(a.createdAt)) {
return 1;
}
if (parseInt(b.createdAt) < parseInt(a.createdAt)) {
return -1;
}
return 0;
});
return temp;
}

cheapToMostExpensive(data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(a.price) > parseInt(b.price)) {
return 1;
}
if (parseInt(a.price) < parseInt(b.price)) {
return -1;
}
return 0;
});
return temp;
}

mostExpensiveToCheap(data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(b.price) > parseInt(a.price)) {
return 1;
}
if (parseInt(b.price) < parseInt(a.price)) {
return -1;
}
return 0;
});
return temp;
}

seatsAsc(data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(a.seats) > parseInt(b.seats)) {
return 1;
}
if (parseInt(a.seats) < parseInt(b.seats)) {
return -1;
}
return 0;
});
return temp;
}

seatsDesc(data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(b.seats) > parseInt(a.seats)) {
return 1;
}
if (parseInt(b.seats) < parseInt(a.seats)) {
return -1;
}
return 0;
});
return temp;
}
}
1 change: 1 addition & 0 deletions assets/php/scripts.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
crossorigin="anonymous"
></script>
<script src="<?php echo $url . "assets/js/ApiHandler.js"; ?>"></script>
<script src="<?php echo $url . "assets/js/sort.js"; ?>"></script>
<script>
const navbar = document.querySelector(".navbar");
window.addEventListener("scroll", () => {
Expand Down
92 changes: 7 additions & 85 deletions routes/offers.php
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ class="btn btn-outline-orange dropdown-toggle rounded-0"

<?php require_once "assets/php/scripts.php"; ?>
<script>
const sort = new Sort();
const slug = "<?php echo $slug ?>"; // I know this is very bad :o
const offerOutput = document.querySelector("#main-column #offer-output");
const searchOffer = document.querySelector("#search-offer");
Expand Down Expand Up @@ -224,129 +225,50 @@ class="btn btn-outline-orange dropdown-toggle rounded-0"
}
});

function oldToNew(data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(a.createdAt) > parseInt(b.createdAt)) {
return 1;
}
if (parseInt(a.createdAt) < parseInt(b.createdAt)) {
return -1;
}
return 0;
});
return temp;
};
function newToOld (data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(b.createdAt) > parseInt(a.createdAt)) {
return 1;
}
if (parseInt(b.createdAt) < parseInt(a.createdAt)) {
return -1;
}
return 0;
});
return temp;
}
function cheapToMostExpensive(data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(a.price) > parseInt(b.price)) {
return 1;
}
if (parseInt(a.price) < parseInt(b.price)) {
return -1;
}
return 0;
});
return temp;
}
function mostExpensiveToCheap(data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(b.price) > parseInt(a.price)) {
return 1;
}
if (parseInt(b.price) < parseInt(a.price)) {
return -1;
}
return 0;
});
return temp;
}
function seatsAsc (data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(a.seats) > parseInt(b.seats)) {
return 1;
}
if (parseInt(a.seats) < parseInt(b.seats)) {
return -1;
}
return 0;
});
return temp;
};
function seatsDesc(data) {
var temp = data;
temp.sort((a, b) => {
if (parseInt(b.seats) > parseInt(a.seats)) {
return 1;
}
if (parseInt(b.seats) < parseInt(a.seats)) {
return -1;
}
return 0;
});
return temp;
};

const runSort = (data) => {
if (data.length > 0) {
sortOptions.newest.addEventListener("click", function () {
let sorted = newToOld(data);
let sorted = sort.newToOld(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
});
});

sortOptions.oldest.addEventListener("click", function () {
let sorted = oldToNew(data);
let sorted = sort.oldToNew(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
});
});

sortOptions.cheapest.addEventListener("click", function () {
let sorted = cheapToMostExpensive(data);
let sorted = sort.cheapToMostExpensive(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
});
});

sortOptions.mostExpensive.addEventListener("click", function () {
let sorted = mostExpensiveToCheap(data);
let sorted = sort.mostExpensiveToCheap(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
});
});

sortOptions.seastAsc.addEventListener("click", function () {
let sorted = seatsAsc(data);
let sorted = sort.seatsAsc(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
});
});

sortOptions.seatsDesc.addEventListener("click", function () {
let sorted = seatsDesc(data);
let sorted = sort.seatsDesc(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
Expand Down
104 changes: 102 additions & 2 deletions routes/profile.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,15 +26,46 @@ class="search-container p-3"
style="display: flex; flex-direction: row; flex-wrap: wrap"
>
<div class="input-group col" style="margin-right: 1.5rem">
<input type="text" id="search-offer" class="form-control" />
<input type="text" id="search-offer" class="form-control" maxlength="50" />
<button type="button" class="btn px-3">
<i class="fas fa-search"></i>
</button>
</div>
<!-- ./input-group -->
<a href="./Erstellen" class="btn btn-outline-orange rounded-0">
<a href="./Erstellen" id="create-btn" class="btn btn-outline-orange rounded-0">
<i class="fas fa-ticket-alt"></i> Anzeige erstellen
</a>

<div class="btn-group">
<button
type="button"
id="sort-by"
class="btn btn-outline-orange dropdown-toggle rounded-0"
data-bs-toggle="dropdown"
>
<i class="fas fa-sort"></i> Sortieren nach
</button>
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-lg-start">
<li>
<button type="button" id="newest" class="dropdown-item">Neuste zuerst</button>
</li>
<li>
<button type="button" id="oldest" class="dropdown-item">Älteste zuerst</button>
</li>
<li>
<button type="button" id="cheapest" class="dropdown-item">Günstigste zuerst</button>
</li>
<li>
<button type="button" id="most-expensive" class="dropdown-item">Teuerste zuerst</button>
</li>
<li>
<button type="button" id="seats-ascending" class="dropdown-item">Sitze aufwärts</button>
</li>
<li>
<button type="button" id="seats-descending" class="dropdown-item">Sitze abwärts</button>
</li>
</ul>
</div>
</div>
<!-- ./search-container -->
</div>
Expand Down Expand Up @@ -109,8 +140,18 @@ class="search-container p-3"

<?php require_once "assets/php/scripts.php"; ?>
<script>
const sort = new Sort();
const offerOutput = document.querySelector("#main-column #offer-output");
const searchOffer = document.querySelector("#search-offer");
const sortBy = document.querySelector("#sort-by");
const sortOptions = {
newest: document.querySelector("#newest"),
oldest: document.querySelector("#oldest"),
cheapest: document.querySelector("#cheapest"),
mostExpensive: document.querySelector("#most-expensive"),
seastAsc: document.querySelector("#seats-ascending"),
seatsDesc: document.querySelector("#seats-descending"),
};
searchOffer.addEventListener("keyup", function (event) {
var keywords = this.value.toLowerCase();
var items = offerOutput.querySelectorAll(".offer-card");
Expand All @@ -127,6 +168,65 @@ class="search-container p-3"
}
});

const runSort = (data) => {
if (data.length > 0) {
sortOptions.newest.addEventListener("click", function () {
let sorted = sort.newToOld(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
});
});

sortOptions.oldest.addEventListener("click", function () {
let sorted = sort.oldToNew(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
});
});

sortOptions.cheapest.addEventListener("click", function () {
let sorted = sort.cheapToMostExpensive(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
});
});

sortOptions.mostExpensive.addEventListener("click", function () {
let sorted = sort.mostExpensiveToCheap(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
});
});

sortOptions.seastAsc.addEventListener("click", function () {
let sorted = sort.seatsAsc(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
});
});

sortOptions.seatsDesc.addEventListener("click", function () {
let sorted = sort.seatsDesc(data);
offerOutput.innerHTML = "";
sorted.map((offer) => {
offerOutput.innerHTML += new Ride()._renderOffer(offer);
});
});
}
}

new Ride()
.getUserOffers()
.then((offerList) => {
runSort(offerList);
})
.catch((err) => console.error(err));

let editProfile = false;
const user = new User();
const profileContianer = document.querySelector(".profile-container");
Expand Down

0 comments on commit 33b0c5e

Please sign in to comment.