mirror of
https://github.com/sergeyyarkov/digital-store.git
synced 2026-10-12 02:39:06 +03:00
checking on empty categories
This commit is contained in:
parent
96219bea5a
commit
c0b5fbec56
@ -23,24 +23,34 @@ function getItemsRoute(req, res, dbo) {
|
||||
if (req.query.token === 'yYNfW8ynVO18L1TW5qIkILM1WtWgrVZz') {
|
||||
if (req.query.items === 'all' && !req.query.category && !req.query.sorting) {
|
||||
dbo.collection('items').find().toArray((err, result) => {
|
||||
res.send(result);
|
||||
result.length > 0
|
||||
? res.send(result)
|
||||
: res.send({error: 'Товаров в магазине пока что нет.'});
|
||||
});
|
||||
} else if (req.query.items === 'all' && req.query.sorting && !req.query.category) {
|
||||
if (req.query.sorting === 'ascending') {
|
||||
dbo.collection('items').find().sort({price: 1}).toArray((err, result) => {
|
||||
res.send(result);
|
||||
result.length > 0
|
||||
? res.send(result)
|
||||
: res.send({error: 'Такой категории не существует или там нет товаров.'});
|
||||
});
|
||||
} else if (req.query.sorting === 'descending') {
|
||||
dbo.collection('items').find().sort({price: -1}).toArray((err, result) => {
|
||||
res.send(result);
|
||||
result.length > 0
|
||||
? res.send(result)
|
||||
: res.send({error: 'Такой категории не существует или там нет товаров.'});
|
||||
});
|
||||
} else if (req.query.sorting === 'newer') {
|
||||
dbo.collection('items').find().sort({date: -1}).toArray((err, result) => {
|
||||
res.send(result);
|
||||
result.length > 0
|
||||
? res.send(result)
|
||||
: res.send({error: 'Такой категории не существует или там нет товаров.'});
|
||||
});
|
||||
} else if (req.query.sorting === 'older') {
|
||||
dbo.collection('items').find().sort({date: 1}).toArray((err, result) => {
|
||||
res.send(result);
|
||||
result.length > 0
|
||||
? res.send(result)
|
||||
: res.send({error: 'Такой категории не существует или там нет товаров.'});
|
||||
});
|
||||
} else {
|
||||
res.send('Введите параметр по убыванию или возрастанию.');
|
||||
@ -49,31 +59,41 @@ function getItemsRoute(req, res, dbo) {
|
||||
dbo.collection('items').find({category: req.query.category}).toArray((err, result) => {
|
||||
result.length > 0
|
||||
? res.send(result)
|
||||
: res.send('Такой категории не существует или там нет товаров.');
|
||||
: res.send({error: 'Такой категории не существует или там нет товаров.'});
|
||||
});
|
||||
} else if (req.query.items === 'all' && req.query.category && req.query.sorting) {
|
||||
if (req.query.sorting === 'ascending') {
|
||||
dbo.collection('items').find({category: req.query.category}).sort({price: 1}).toArray((err, result) => {
|
||||
res.send(result);
|
||||
result.length > 0
|
||||
? res.send(result)
|
||||
: res.send({error: 'Такой категории не существует или там нет товаров.'});
|
||||
});
|
||||
} else if (req.query.sorting === 'descending') {
|
||||
dbo.collection('items').find({category: req.query.category}).sort({price: -1}).toArray((err, result) => {
|
||||
res.send(result);
|
||||
result.length > 0
|
||||
? res.send(result)
|
||||
: res.send({error: 'Такой категории не существует или там нет товаров.'});
|
||||
});
|
||||
} else if (req.query.sorting === 'newer') {
|
||||
dbo.collection('items').find({category: req.query.category}).sort({date: -1}).toArray((err, result) => {
|
||||
res.send(result);
|
||||
result.length > 0
|
||||
? res.send(result)
|
||||
: res.send({error: 'Такой категории не существует или там нет товаров.'});
|
||||
});
|
||||
} else if (req.query.sorting === 'older') {
|
||||
dbo.collection('items').find({category: req.query.category}).sort({date: 1}).toArray((err, result) => {
|
||||
res.send(result);
|
||||
result.length > 0
|
||||
? res.send(result)
|
||||
: res.send({error: 'Такой категории не существует или там нет товаров.'});
|
||||
});
|
||||
} else {
|
||||
res.send('Введите параметр по убыванию или возрастанию.');
|
||||
}
|
||||
} else if (req.query.categories === 'all') {
|
||||
dbo.collection('categories').find().toArray((err, result) => {
|
||||
res.send(result);
|
||||
result.length > 0
|
||||
? res.send(result)
|
||||
: res.send({error: 'На сайте нету категорий'});
|
||||
});
|
||||
} else if (req.query.category) {
|
||||
dbo.collection('categories').find({title: req.query.category}).toArray((err, result) => {
|
||||
|
||||
4
dist/public/js/bundle.js
vendored
4
dist/public/js/bundle.js
vendored
@ -3930,7 +3930,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InformationComponent\", function() { return InformationComponent; });\n/* harmony import */ var _core_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/component */ \"./src/core/component.js\");\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\nvar InformationComponent =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(InformationComponent, _Component);\n\n function InformationComponent(id) {\n _classCallCheck(this, InformationComponent);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(InformationComponent).call(this, id));\n }\n\n _createClass(InformationComponent, [{\n key: \"init\",\n value: function init() {\n if (this.$el) {\n if (localStorage.getItem('visited')) {\n this.hide();\n }\n\n var btn = this.$el.querySelector('#information-close');\n btn.addEventListener('click', buttonHandler.bind(this));\n }\n }\n }]);\n\n return InformationComponent;\n}(_core_component__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\nfunction buttonHandler() {\n localStorage.setItem('visited', JSON.stringify(true));\n this.hide();\n}\n\n//# sourceURL=webpack:///./src/components/information.component.js?");
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InformationComponent\", function() { return InformationComponent; });\n/* harmony import */ var _core_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/component */ \"./src/core/component.js\");\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\nvar InformationComponent =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(InformationComponent, _Component);\n\n function InformationComponent(id) {\n _classCallCheck(this, InformationComponent);\n\n return _possibleConstructorReturn(this, _getPrototypeOf(InformationComponent).call(this, id));\n }\n\n _createClass(InformationComponent, [{\n key: \"init\",\n value: function init() {\n if (this.$el) {\n if (!localStorage.getItem('visited')) {\n this.show();\n }\n\n var btn = this.$el.querySelector('#information-close');\n btn.addEventListener('click', buttonHandler.bind(this));\n }\n }\n }]);\n\n return InformationComponent;\n}(_core_component__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\nfunction buttonHandler() {\n localStorage.setItem('visited', JSON.stringify(true));\n this.hide();\n}\n\n//# sourceURL=webpack:///./src/components/information.component.js?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
@ -4050,7 +4050,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
|
||||
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
||||
|
||||
"use strict";
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderItems\", function() { return renderItems; });\nfunction renderItems(categories, items) {\n var arrayCategories = categories;\n var arrayItems = items;\n var html = '';\n arrayCategories.forEach(function (category) {\n html += \"<div class=\\\"items-category\\\">\\n <h2 class=\\\"small-title\\\">\".concat(category.title, \"</h2>\\n </div>\");\n arrayItems.forEach(function (item) {\n if (item.category.toLowerCase() === category.title.toLowerCase()) {\n html += \"\\n <div class=\\\"items-list\\\">\\n <div class=\\\"items-list__name\\\">\\n <div class=\\\"list-icon\\\">\\n <img src=\\\"./img/service-icons/\".concat(category.img, \"\\\" alt=\\\"#\\\">\\n </div>\\n <div class=\\\"list-title\\\">\\n <a href=\\\"/product/\").concat(item._id, \"\\\">\").concat(item.title, \"</a>\\n </div>\\n </div>\\n <div class=\\\"items-list__info\\\">\\n <div class=\\\"list-date\\\">\\n <small>\").concat(diffDates(new Date(), new Date(item.date)), \"</small>\\n </div>\\n <div class=\\\"list-count\\\">\\n <span>\").concat(item.count, \" \\u0448\\u0442.</span>\\n </div>\\n <div class=\\\"list-one\\\">\\n <span>\\u0426\\u0435\\u043D\\u0430 \\u0437\\u0430 1 \\u0448\\u0442.</span>\\n </div>\\n <div class=\\\"list-price\\\">\\n <span>\").concat(item.price.toFixed(2), \"\\u20BD</span>\\n </div>\\n <div id=\\\"rosterButtons\\\" data-id=\\\"\").concat(item._id, \"\\\" data-title=\\\"\").concat(item.title, \"\\\" data-count=\\\"\").concat(item.count, \"\\\" data-price=\\\"\").concat(item.price, \" class=\\\"list-buttons\\\">\\n <button id=\\\"payOpen\\\" class=\\\"btn-small waves-effect waves-light\\\">\\u041A\\u0443\\u043F\\u0438\\u0442\\u044C</button>\\n <button id=\\\"addItem\\\" class=\\\"btn-small waves-effect waves-light\\\"><i\\n class=\\\"material-icons\\\">shopping_cart</i></button>\\n </div>\\n </div>\\n </div>\");\n }\n });\n });\n return html;\n}\n\nfunction diffDates(firstDate, secondDate) {\n var diff = Math.floor((firstDate - secondDate) / (60 * 60 * 24 * 1000));\n\n if (diff <= 0) {\n return 'добавлено сегодня';\n }\n\n return diff + ' дней назад';\n}\n\n//# sourceURL=webpack:///./src/templates/items.template.js?");
|
||||
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderItems\", function() { return renderItems; });\nfunction renderItems(categories, items) {\n var arrayCategories = categories;\n var arrayItems = items;\n var html = '';\n\n try {\n arrayCategories.forEach(function (category) {\n html += \"<div class=\\\"items-category\\\">\\n <h2 class=\\\"small-title\\\">\".concat(category.title, \"</h2>\\n </div>\");\n category.itemsInCategory = 0; // счетчит для отслеживания категорий где нету айтемов\n\n try {\n arrayItems.forEach(function (item) {\n if (item.category.toLowerCase() === category.title.toLowerCase()) {\n category.itemsInCategory += 1;\n html += \"\\n <div class=\\\"items-list\\\">\\n <div class=\\\"items-list__name\\\">\\n <div class=\\\"list-icon\\\">\\n <img src=\\\"./img/service-icons/\".concat(category.img, \"\\\" alt=\\\"#\\\">\\n </div>\\n <div class=\\\"list-title\\\">\\n <a href=\\\"/product/\").concat(item._id, \"\\\">\").concat(item.title, \"</a>\\n </div>\\n </div>\\n <div class=\\\"items-list__info\\\">\\n <div class=\\\"list-date\\\">\\n <small>\").concat(diffDates(new Date(), new Date(item.date)), \"</small>\\n </div>\\n <div class=\\\"list-count\\\">\\n <span>\").concat(item.count, \" \\u0448\\u0442.</span>\\n </div>\\n <div class=\\\"list-one\\\">\\n <span>\\u0426\\u0435\\u043D\\u0430 \\u0437\\u0430 1 \\u0448\\u0442.</span>\\n </div>\\n <div class=\\\"list-price\\\">\\n <span>\").concat(item.price.toFixed(2), \"\\u20BD</span>\\n </div>\\n <div id=\\\"rosterButtons\\\" data-id=\\\"\").concat(item._id, \"\\\" data-title=\\\"\").concat(item.title, \"\\\" data-count=\\\"\").concat(item.count, \"\\\" data-price=\\\"\").concat(item.price, \" class=\\\"list-buttons\\\">\\n <button id=\\\"payOpen\\\" class=\\\"btn-small waves-effect waves-light\\\">\\u041A\\u0443\\u043F\\u0438\\u0442\\u044C</button>\\n <button id=\\\"addItem\\\" class=\\\"btn-small waves-effect waves-light\\\"><i\\n class=\\\"material-icons\\\">shopping_cart</i></button>\\n </div>\\n </div>\\n </div>\");\n }\n });\n category.itemsInCategory === 0 ? html += '<div class=\"items-list\"><span>В этой категории товаров пока что нету.</span></div>' : false;\n } catch (_unused) {\n html += '<div class=\"items-list\"><span>В этой категории товаров пока что нету.</span></div>';\n }\n });\n } catch (_unused2) {\n html += '<div class=\"items-list\"><span>Добавьте хотя бы одну категорию.</span></div>';\n }\n\n return html;\n}\n\nfunction diffDates(firstDate, secondDate) {\n var diff = Math.floor((firstDate - secondDate) / (60 * 60 * 24 * 1000));\n\n if (diff <= 0) {\n return 'добавлено сегодня';\n }\n\n return diff + ' дней назад';\n}\n\n//# sourceURL=webpack:///./src/templates/items.template.js?");
|
||||
|
||||
/***/ }),
|
||||
|
||||
|
||||
2
dist/views/index.pug
vendored
2
dist/views/index.pug
vendored
@ -10,7 +10,7 @@ main.main-section
|
||||
.row
|
||||
// Information Block
|
||||
.col.s12
|
||||
#information.information
|
||||
#information.information.hide
|
||||
.information-content.block-content
|
||||
.information-title
|
||||
h2.small-title Важная информация:
|
||||
|
||||
@ -7,8 +7,8 @@ export class InformationComponent extends Component {
|
||||
|
||||
init() {
|
||||
if (this.$el) {
|
||||
if (localStorage.getItem('visited')) {
|
||||
this.hide();
|
||||
if (!localStorage.getItem('visited')) {
|
||||
this.show();
|
||||
}
|
||||
const btn = this.$el.querySelector('#information-close');
|
||||
btn.addEventListener('click', buttonHandler.bind(this));
|
||||
|
||||
@ -3,46 +3,58 @@ export function renderItems(categories, items) {
|
||||
const arrayItems = items;
|
||||
|
||||
let html = '';
|
||||
|
||||
arrayCategories.forEach(category => {
|
||||
html += `<div class="items-category">
|
||||
<h2 class="small-title">${category.title}</h2>
|
||||
</div>`;
|
||||
arrayItems.forEach(item => {
|
||||
if (item.category.toLowerCase() === category.title.toLowerCase()) {
|
||||
html += `
|
||||
<div class="items-list">
|
||||
<div class="items-list__name">
|
||||
<div class="list-icon">
|
||||
<img src="./img/service-icons/${category.img}" alt="#">
|
||||
</div>
|
||||
<div class="list-title">
|
||||
<a href="/product/${item._id}">${item.title}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="items-list__info">
|
||||
<div class="list-date">
|
||||
<small>${diffDates(new Date(), new Date(item.date))}</small>
|
||||
</div>
|
||||
<div class="list-count">
|
||||
<span>${item.count} шт.</span>
|
||||
</div>
|
||||
<div class="list-one">
|
||||
<span>Цена за 1 шт.</span>
|
||||
</div>
|
||||
<div class="list-price">
|
||||
<span>${item.price.toFixed(2)}₽</span>
|
||||
</div>
|
||||
<div id="rosterButtons" data-id="${item._id}" data-title="${item.title}" data-count="${item.count}" data-price="${item.price} class="list-buttons">
|
||||
<button id="payOpen" class="btn-small waves-effect waves-light">Купить</button>
|
||||
<button id="addItem" class="btn-small waves-effect waves-light"><i
|
||||
class="material-icons">shopping_cart</i></button>
|
||||
</div>
|
||||
</div>
|
||||
try {
|
||||
arrayCategories.forEach(category => {
|
||||
html += `<div class="items-category">
|
||||
<h2 class="small-title">${category.title}</h2>
|
||||
</div>`;
|
||||
category.itemsInCategory = 0; // счетчит для отслеживания категорий где нету айтемов
|
||||
try {
|
||||
arrayItems.forEach(item => {
|
||||
if (item.category.toLowerCase() === category.title.toLowerCase()) {
|
||||
category.itemsInCategory += 1;
|
||||
html += `
|
||||
<div class="items-list">
|
||||
<div class="items-list__name">
|
||||
<div class="list-icon">
|
||||
<img src="./img/service-icons/${category.img}" alt="#">
|
||||
</div>
|
||||
<div class="list-title">
|
||||
<a href="/product/${item._id}">${item.title}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="items-list__info">
|
||||
<div class="list-date">
|
||||
<small>${diffDates(new Date(), new Date(item.date))}</small>
|
||||
</div>
|
||||
<div class="list-count">
|
||||
<span>${item.count} шт.</span>
|
||||
</div>
|
||||
<div class="list-one">
|
||||
<span>Цена за 1 шт.</span>
|
||||
</div>
|
||||
<div class="list-price">
|
||||
<span>${item.price.toFixed(2)}₽</span>
|
||||
</div>
|
||||
<div id="rosterButtons" data-id="${item._id}" data-title="${item.title}" data-count="${item.count}" data-price="${item.price} class="list-buttons">
|
||||
<button id="payOpen" class="btn-small waves-effect waves-light">Купить</button>
|
||||
<button id="addItem" class="btn-small waves-effect waves-light"><i
|
||||
class="material-icons">shopping_cart</i></button>
|
||||
</div>
|
||||
</div>
|
||||
</div>`;
|
||||
}
|
||||
})
|
||||
category.itemsInCategory === 0
|
||||
? html += '<div class="items-list"><span>В этой категории товаров пока что нету.</span></div>'
|
||||
: false;
|
||||
} catch {
|
||||
html += '<div class="items-list"><span>В этой категории товаров пока что нету.</span></div>';
|
||||
}
|
||||
})
|
||||
});
|
||||
});
|
||||
} catch {
|
||||
html += '<div class="items-list"><span>Добавьте хотя бы одну категорию.</span></div>';
|
||||
}
|
||||
return html;
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user