Tati пре 9 година
родитељ
комит
5fa3127b50

+ 1 - 1
back/components/middlewares/response.js

@@ -25,7 +25,7 @@ module.exports = function (fn) {
         return fn(req, res, next).then(function (xs) {
 
             var result = R.is(Array, xs) ? xs.map(selectLang(projection)) : selectLang(projection)(xs);
-            res.send(result);
+            res.json(result);
         }, function (error) {
             console.error('API: ', error)
             res.status(500).json({error: error});

+ 5 - 2
client/css/navbar.css

@@ -21,11 +21,13 @@ nav a {
 }
 
 nav a:hover,
-nav a:focus {
+nav a:focus,
+nav a.selected {
 	outline: none;
     opacity: 1;
     cursor: pointer;
     color: #333;
+	font-family: ralewayBold;
 }
 
 nav a.router-link-active {
@@ -52,7 +54,8 @@ nav a::after {
 
 nav a:hover::after,
 nav a:focus::after,
-nav a.router-link-active::after {
+nav a.router-link-active::after,
+nav a.selected::after {
 	height: 2px;
 	opacity: 1;
 	-webkit-transform: translateY(0px);

+ 7 - 0
client/css/products.css

@@ -42,3 +42,10 @@ a.product-link:hover {
         float: left;
     }
 }
+
+.category-item a{
+    margin: 15px 15px;
+    font-size: 14px;
+    letter-spacing: 1px;
+    padding: 0px;
+}

+ 2 - 2
client/css/styles.css

@@ -49,7 +49,7 @@ body {
 }
 
 .container {
-    width: 90%;
+    width: 80%;
     max-width: none;
 }
 
@@ -135,7 +135,7 @@ body {
 }
 
 .navbar-container {
-    width: 90%;
+    text-align: right;
 }
 
 /*.navbar-list{

+ 12 - 8
client/index.html

@@ -35,6 +35,7 @@
     –––––––––––––––––––––––––––––––––––––––––––––––––– -->
     <script src='https://api.mapbox.com/mapbox-gl-js/v0.31.0/mapbox-gl.js'></script>
     <script src="./js/rivets.bundled.min.js" type="text/javascript"></script>
+    <script src="//cdn.jsdelivr.net/ramda/latest/ramda.min.js"></script>
     
 </head>
 <body id="app">
@@ -42,7 +43,7 @@
 
     <div>
         <nav>
-            <div class="navbar-container" id="section-navbar">
+            <div class="navbar-container container" id="section-navbar">
                 <ul class="navbar-list">
                     <li rv-each-section="sections"><a rv-on-click="selectSection" rv-class-selected="selected.section">{section}</a></li>
                 </ul>
@@ -134,15 +135,18 @@
                 </div>
 
                 <nav class="category-nav">
-                    <ul>
-                        <li><a href="">higiene</a></li>
-                        <li><a href="">mascaras</a></li>
-                        <li><a href="">peels</a></li>
-                        <li><a href="">hombres</a></li>
-                        <li><a href="">corporales</a></li>
+                    <ul id="product-category-nav">
+                        <li rv-each-category="productCategories" class="category-item"><a rv-on-click="selectCategory">{category.name}</a></li>
                     </ul>
-                    
                 </nav> 
+
+                <ul>
+                    <li rv-each-product="productsListed">
+                        <img rv-src-strict="product.thumbUrl">
+                        <span>{product.name}</span>
+                        <p>{product.text.shortDesc}</p>
+                    </li>
+                </ul>
             </div>
         </div>
     </section>

+ 54 - 8
client/js/app.js

@@ -1,3 +1,4 @@
+var BASE_URL = 'http://192.168.1.127/api/';
 function http(url, params) {
     return new Promise(function(resolve, reject) {
         httpRequest = new XMLHttpRequest();
@@ -5,7 +6,7 @@ function http(url, params) {
         httpRequest.onreadystatechange = function() {
             if (httpRequest.readyState == XMLHttpRequest.DONE ) {
                 if (httpRequest.status == 200) {
-                    resolve(httpRequest.responseText);
+                    resolve(JSON.parse(httpRequest.responseText));
                 } else {
                     reject("pls fix later");
                 }
@@ -19,36 +20,81 @@ function http(url, params) {
     });
 }
 
-http('http://192.168.1.127/api/products/category/58caba2ce53f0644597b74e8').then(function(data) {
-    //console.log("2017 no frameworks", data);
+http('http://192.168.1.127/api/products/listcategories').then(function(data) {
+    
 }, function(err){
-    console.log("err",err);
+    console.log("err", err);
 });
 
-
+function logError (err) {
+    console.log('Error: ', err);
+}
 var sections = [
     'empresa',
     'productos'
 ];
 
+function initProducts(category) {
+    http(BASE_URL + 'products/category/' + category).then(function (products) {
+        products.forEach(function (product) {
+            productsListed_.push(product);
+        })
+    }, logError)
+}
+
 var selectedSection_ = {
-        empresa: true,
-        productos: false
-    };
+    empresa: true,
+    productos: false
+};
 
+var productsListed_ = [];
 rivets.configure({
     executeFunctions: true
 })
 
+function getCategories() {
+    if(productCategories_.length === 0) {
+        http(BASE_URL + 'products/listcategories').then(function (data) {
+            data.forEach(function (category) {
+                productCategories_.push(category)
+            })
+        }, logError)
+    }
+}
+
+var productCategories_ = [];
+
 var app = document.getElementById('app');
+
+rivets.binders['src-strict'] = function(el, value) {
+  var img = new Image()
+
+  img.onload = function() {
+    $(el).attr('src', value)
+  }
+
+  img.src = value
+}
+
 var view = rivets.bind(app, {
     sections: sections,
     selectedSection: selectedSection_,
+    productCategories: productCategories_,
+    productsListed: productsListed_,
     selectSection: function (event, scope) {
         var newValue = event.target.text;
         window.history.pushState({}, newValue, '#' + newValue)
         chooseSection(newValue);
         event.target.className = 'selected';
+        scope.getData[newValue]();
+    },
+    selectCategory: function (event, scope) {
+        var category = productCategories_.find(R.propEq('name', event.target.text));
+        initProducts(category._id)
+    },
+    getData: {
+        productos: getCategories,
+        empresa: function(){}
     }
 });