mirror of
https://github.com/DerTyp7/shop-ejs-expressjs.git
synced 2025-10-29 20:42:10 +01:00
Product Ratings, Grid Fix
This commit is contained in:
2
index.js
2
index.js
@@ -193,7 +193,7 @@ app.get("/search/:query",authNoRedirectHandler,(req, res) => {
|
|||||||
user: req.user,
|
user: req.user,
|
||||||
}
|
}
|
||||||
|
|
||||||
mysql_handler.con.query("SELECT *, (SELECT url FROM product_images i WHERE i.product_id = p.id LIMIT 1) as img FROM products p WHERE name LIKE ?;",["%"+query+"%"],function(err, result){
|
mysql_handler.con.query("SELECT *, (SELECT url FROM product_images i WHERE i.product_id = p.id LIMIT 1) as img, (SELECT AVG(rating) FROM reviews r WHERE r.productId = p.id) as rating FROM products p WHERE name LIKE ?;",["%"+query+"%"],function(err, result){
|
||||||
if(err) throw err;
|
if(err) throw err;
|
||||||
|
|
||||||
dict.products = JSON.parse(JSON.stringify(result));
|
dict.products = JSON.parse(JSON.stringify(result));
|
||||||
|
|||||||
112
views/search.ejs
112
views/search.ejs
@@ -24,17 +24,22 @@
|
|||||||
<% for(var i=0; i < products.length; i++) {
|
<% for(var i=0; i < products.length; i++) {
|
||||||
var prod = products[i];
|
var prod = products[i];
|
||||||
if (!prod.img) { prod.img = "/images/examples.jpg"; }
|
if (!prod.img) { prod.img = "/images/examples.jpg"; }
|
||||||
prod.rating = Math.round(Math.random()*10); %>
|
//if (!prod.rating) { prod.rating = 0; } %>
|
||||||
<div class="productDIV" onClick="openProduct(<%=prod.id %>)">
|
<div class="productDIV" onClick="openProduct(<%=prod.id %>)">
|
||||||
<div class="productData">
|
<div class="productData">
|
||||||
<h4 style="color: Navy;"><%=prod.name %></h4>
|
<h4 style="color: Navy;"><%=prod.name %></h4>
|
||||||
<h4><%=prod.price %>€</h4>
|
<h4><%=prod.price %>€</h4>
|
||||||
<h4><%
|
<h4><%
|
||||||
for (var i2=0; i2 < prod.rating; i2 = i2 + 2) {
|
if (prod.rating) {
|
||||||
%>★<%
|
prod.rating = Math.round(prod.rating/2)
|
||||||
}
|
for (var i2=0; i2 < prod.rating; i2++) {
|
||||||
if (prod.rating%2 == 1) {
|
%>★<%
|
||||||
%>☆<%
|
}
|
||||||
|
for (var i2=prod.rating; i2 < 5; i2++) {
|
||||||
|
%>☆<%
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
%>Keine Bewertungen<%
|
||||||
}
|
}
|
||||||
%></h4>
|
%></h4>
|
||||||
<h4><%=prod.quantity %> auf Lager</h4>
|
<h4><%=prod.quantity %> auf Lager</h4>
|
||||||
@@ -45,7 +50,7 @@
|
|||||||
<div class="productInfo"><%=prod.description %></div>
|
<div class="productInfo"><%=prod.description %></div>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
</div>
|
</div>
|
||||||
<% } %>
|
<% } %>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
@@ -58,57 +63,18 @@
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style type="text/css">
|
<style type="text/css">
|
||||||
|
/* SEARCH INFO */
|
||||||
.productsResInfDIV {
|
.productsResInfDIV {
|
||||||
position: relative;
|
position: relative;
|
||||||
left: calc(10% + 10px);
|
left: calc(10% + 10px);
|
||||||
width: calc(80% - 20px);
|
width: calc(80% - 20px);
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.noProductsH {
|
.noProductsH {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.productImage > img {
|
/* PRODUCT COLUMN */
|
||||||
position: absolute;
|
|
||||||
max-width: 100%;
|
|
||||||
max-height: 100%;
|
|
||||||
margin: auto;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
.productDIV > .productData {
|
|
||||||
width: calc(100% - 20px);
|
|
||||||
height: 90px;
|
|
||||||
position: absolute;
|
|
||||||
left: 10px;
|
|
||||||
top: 10px;
|
|
||||||
}
|
|
||||||
.productData > h4 {
|
|
||||||
margin: 0px;
|
|
||||||
color: LightSlateGray;
|
|
||||||
}
|
|
||||||
.productDIV > .productImage {
|
|
||||||
width: calc(50% - 15px);
|
|
||||||
height: calc(100% - 120px);
|
|
||||||
position: absolute;
|
|
||||||
left: 10px;
|
|
||||||
bottom: 10px;
|
|
||||||
}
|
|
||||||
.productDIV > .productInfo {
|
|
||||||
width: calc(50% - 15px);
|
|
||||||
height: calc(100% - 60px);
|
|
||||||
position: absolute;
|
|
||||||
overflow-y: hidden;
|
|
||||||
right: 10px;
|
|
||||||
bottom: 10px;
|
|
||||||
}
|
|
||||||
.productDIV > h4 {
|
|
||||||
padding: 0px;
|
|
||||||
margin: 0px;
|
|
||||||
}
|
|
||||||
.productDIV {
|
.productDIV {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
@@ -125,6 +91,54 @@
|
|||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* IMAGE */
|
||||||
|
.productImage > img {
|
||||||
|
position: absolute;
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: 100%;
|
||||||
|
margin: auto;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
.productDIV > .productImage {
|
||||||
|
width: calc(50% - 15px);
|
||||||
|
height: calc(100% - 120px);
|
||||||
|
position: absolute;
|
||||||
|
left: 10px;
|
||||||
|
bottom: 10px;
|
||||||
|
}
|
||||||
|
.productDIV > h4 {
|
||||||
|
padding: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* DESCRIPTION */
|
||||||
|
.productDIV > .productInfo {
|
||||||
|
width: calc(50% - 15px);
|
||||||
|
height: calc(100% - 60px);
|
||||||
|
position: absolute;
|
||||||
|
overflow-y: hidden;
|
||||||
|
right: 10px;
|
||||||
|
bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* PRICE ETC */
|
||||||
|
.productDIV > .productData {
|
||||||
|
width: calc(100% - 20px);
|
||||||
|
height: 90px;
|
||||||
|
position: absolute;
|
||||||
|
left: 10px;
|
||||||
|
top: 10px;
|
||||||
|
}
|
||||||
|
.productData > h4 {
|
||||||
|
margin: 0px;
|
||||||
|
color: LightSlateGray;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* FILTERS */
|
||||||
.filtersDIV {
|
.filtersDIV {
|
||||||
position: relative;
|
position: relative;
|
||||||
left: calc(10% + 10px);
|
left: calc(10% + 10px);
|
||||||
@@ -133,13 +147,13 @@
|
|||||||
background-color: grey;
|
background-color: grey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* PRODUCTS GRID */
|
||||||
.allProductsDIV {
|
.allProductsDIV {
|
||||||
font-size: 0;
|
font-size: 0;
|
||||||
margin: 0px;
|
margin: 0px;
|
||||||
width: calc(80% - 20px);
|
width: calc(80% - 20px);
|
||||||
left: 10%;
|
left: 10%;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 100%;
|
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
background-color: white;
|
background-color: white;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user