diff --git a/config/routes/routes.js b/config/routes/routes.js index cf9ac40..ac559a9 100644 --- a/config/routes/routes.js +++ b/config/routes/routes.js @@ -1,124 +1,100 @@ +const ObjectID = require('mongodb').ObjectID; + function indexRoute(req, res, dbo) { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - const array = Object.keys(result[0].items) - const categories = array.map(cat => { - return cat[0].toUpperCase() + cat.slice(1); - }); + dbo.collection('categories').find().toArray((err, result) => { + const categories = result.map(category => category.title[0].toUpperCase() + category.title.slice(1)); res.render('index', { pageName: 'index', categories }); - }) + }); } +// API function getItemsRoute(req, res, dbo) { - if (req.query.auth === 'yYNfW8ynVO18L1TW5qIkILM1WtWgrVZz') { - if (req.query.option === 'all' && !req.query.sorting) { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - res.send(result[0].items); - }) - - } else if (!req.query.option && req.query.category && req.query.sorting === 'ascending') { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - const items = result[0].items[req.query.category]; - items.sort((a, b) => a.price - b.price) // фильтр по возрастанию по цене - res.send(items); + 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); }); - } else if (!req.query.option && req.query.category && req.query.sorting === 'descending') { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - const items = result[0].items[req.query.category]; - items.sort((a, b) => b.price - a.price) // фильтр по убыванию по цене - res.send(items); + } 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); + }); + } else if (req.query.sorting === 'descending') { + dbo.collection('items').find().sort({price: -1}).toArray((err, result) => { + res.send(result); + }); + } else if (req.query.sorting === 'newer') { + dbo.collection('items').find().sort({date: -1}).toArray((err, result) => { + res.send(result); + }); + } else if (req.query.sorting === 'older') { + dbo.collection('items').find().sort({date: 1}).toArray((err, result) => { + res.send(result); + }); + } else { + res.send('Введите параметр по убыванию или возрастанию.'); + } + } else if (req.query.items === 'all' && req.query.category && !req.query.sorting) { + dbo.collection('items').find({category: req.query.category}).toArray((err, result) => { + result.length > 0 + ? res.send(result) + : res.send('Такой категории не существует или там нет товаров.'); }); - } else if (!req.query.option && req.query.category && req.query.sorting === 'older') { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - const items = result[0].items[req.query.category]; - items.sort((a, b) => new Date(a.date) - new Date(b.date)); // фильтр по возрастанию по дате - res.send(items); + } 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); + }); + } else if (req.query.sorting === 'descending') { + dbo.collection('items').find({category: req.query.category}).sort({price: -1}).toArray((err, result) => { + res.send(result); + }); + } else if (req.query.sorting === 'newer') { + dbo.collection('items').find({category: req.query.category}).sort({date: -1}).toArray((err, result) => { + res.send(result); + }); + } else if (req.query.sorting === 'older') { + dbo.collection('items').find({category: req.query.category}).sort({date: 1}).toArray((err, result) => { + res.send(result); + }); + } else { + res.send('Введите параметр по убыванию или возрастанию.'); + } + } else if (req.query.categories === 'all') { + dbo.collection('categories').find().toArray((err, result) => { + res.send(result); }); - } else if (!req.query.option && req.query.category && req.query.sorting === 'newer') { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - const items = result[0].items[req.query.category]; - items.sort((a, b) => new Date(b.date) - new Date(a.date)) // фильтр по убыванию по дате - res.send(items); - }); - } else if (!req.query.option && req.query.category) { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - const query = result[0].items[req.query.category] - if (query != undefined) { - res.send(query); - } else { - res.send('Товары в этой категории не найдены или такой категории нет') - } - }) - } else if (req.query.option && req.query.sorting === 'ascending') { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - const items = result[0].items; - Object.values(items).forEach(arr => arr.sort((a, b) => a.price - b.price)) // фильтр по возрастанию по цене - res.send(items); - }); - } else if (req.query.option && req.query.sorting === 'descending') { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - const items = result[0].items; - Object.values(items).forEach(arr => arr.sort((a, b) => b.price - a.price)) // фильтр по убыванию по цене - res.send(items); - }) - } else if (req.query.option && req.query.sorting === 'older') { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - const items = result[0].items; - Object.values(items).forEach(arr => arr.sort((a, b) => new Date(a.date) - new Date(b.date))) // фильтр по возрастанию пр дате - res.send(items); - }); - } else if (req.query.option && req.query.sorting === 'newer') { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - const items = result[0].items; - Object.values(items).forEach(arr => arr.sort((a, b) => new Date(b.date) - new Date(a.date))) // фильтр по возрастанию пр дате - res.send(items); + } else if (req.query.category) { + dbo.collection('categories').find({title: req.query.category}).toArray((err, result) => { + res.send(result); }); } else { - res.send('Запрос неверный'); + res.send('Запрос неверный.'); } } else { - res.send('Неверный токен'); + res.send('Неверный токен.'); } } function onePageItemRoute(req, res, dbo) { - dbo.collection('storeInfo').find().toArray((err, result) => { - if (err) throw err; - const items = result[0].items; - const keys = Object.keys(result[0].items); - let itemFind = false; - keys.forEach(key => { - items[key].forEach(item => { - if (item._id != undefined) { - if (item._id == req.params.id) { - itemFind = true; - res.render('product', { - title: item.title, - image: item.image, - count: item.count, - category: item.category[0].toUpperCase() + item.category.slice(1), - price: item.price, - description: item.description, - date: item.date - }); - } - } + dbo.collection('items').find({_id: new ObjectID(req.params.id)}).toArray((err, result) => { + const item = result[0]; + dbo.collection('categories').find({title: item.category}).toArray((err, result) => { + const category = result[0]; + res.render('product', { + title: item.title, + image: category.img, + count: item.count, + category: item.category[0].toUpperCase() + item.category.slice(1), + price: item.price, + description: item.description, + date: item.date, + id: item._id }) }); - if (!itemFind) res.send('Error 404'); }) } @@ -146,10 +122,9 @@ function myOrdersRoute(req, res) { }); } - module.exports = function (server, db) { server.get('/', (req, res) => indexRoute(req, res, db)); - server.get('/store-api', (req, res) => getItemsRoute(req, res, db)); + server.get('/api', (req, res) => getItemsRoute(req, res, db)); server.get('/how-to-buy', (req, res) => howToBuyRoute(req, res, db)); server.get('/contacts', (req, res) => contactsRoute(req, res, db)); server.get('/comments', (req, res) => commentsRoute(req, res, db)); diff --git a/dist/public/js/bundle.js b/dist/public/js/bundle.js index c00da00..11d7387 100644 --- a/dist/public/js/bundle.js +++ b/dist/public/js/bundle.js @@ -3894,7 +3894,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__, \"CategoryComponent\", function() { return CategoryComponent; });\n/* harmony import */ var _core_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/component */ \"./src/js/core/component.js\");\n/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/api.service */ \"./src/js/services/api.service.js\");\n/* harmony import */ var _templates_itemsCategory_template__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../templates/itemsCategory.template */ \"./src/js/templates/itemsCategory.template.js\");\n/* harmony import */ var _templates_items_template__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../templates/items.template */ \"./src/js/templates/items.template.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\n\n\n\nvar CategoryComponent =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(CategoryComponent, _Component);\n\n function CategoryComponent(id, _ref, _ref2) {\n var _this;\n\n var items = _ref.items;\n var filter = _ref2.filter;\n\n _classCallCheck(this, CategoryComponent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CategoryComponent).call(this, id));\n _this.items = items;\n _this.filter = filter;\n return _this;\n }\n\n _createClass(CategoryComponent, [{\n key: \"init\",\n value: function init() {\n if (this.$el) {\n this.$el.addEventListener('click', buttonHandler.bind(this));\n\n if (localStorage.getItem('category')) {\n localStorage.removeItem('sortByAll', 'true'); // установка значения для компонента Filter\n\n var category = localStorage.getItem('category');\n breadcrumbActiveLink.call(this, category); // окрашиваем категорию по нажатию на breadcrumb\n\n showItems.call(this, category); // отображем айтемсы если был нажат breadcrumb\n\n localStorage.removeItem('category'); // очищаем ключ category чтобы данные не показывались всегда\n }\n }\n }\n }]);\n\n return CategoryComponent;\n}(_core_component__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\nfunction showItems(category) {\n var fData, html;\n return regeneratorRuntime.async(function showItems$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItemsOne(category));\n\n case 2:\n fData = _context.sent;\n html = Object(_templates_itemsCategory_template__WEBPACK_IMPORTED_MODULE_2__[\"renderItemsOne\"])(category, fData);\n this.items.onHide();\n this.items.insertItems(html);\n\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, null, this);\n}\n\nfunction buttonHandler(e) {\n var category, fData, html, _fData, categories, _html;\n\n return regeneratorRuntime.async(function buttonHandler$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n e.preventDefault();\n\n if (!(e.target.dataset.category && e.target.dataset.category != 'all')) {\n _context2.next = 15;\n break;\n }\n\n // Выполняем логику если нажали на кнопки кроме \"Все товары\"\n localStorage.removeItem('sortByAll'); // установка значения для компонента Filter\n\n this.filter.clearChecked();\n this.items.onShow();\n btnActiveLink(e);\n category = e.target.dataset.category.toLowerCase();\n _context2.next = 9;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItemsOne(category));\n\n case 9:\n fData = _context2.sent;\n html = Object(_templates_itemsCategory_template__WEBPACK_IMPORTED_MODULE_2__[\"renderItemsOne\"])(category, fData);\n this.items.onHide();\n this.items.insertItems(html);\n _context2.next = 27;\n break;\n\n case 15:\n if (!(e.target.dataset.category === 'all')) {\n _context2.next = 27;\n break;\n }\n\n // Выполняем логику если нажали на кнопку \"Все товары\"\n localStorage.setItem('sortByAll', 'true'); // установка значения для компонента Filter\n\n this.filter.clearChecked();\n this.items.onShow();\n btnActiveLink(e);\n _context2.next = 22;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItems());\n\n case 22:\n _fData = _context2.sent;\n categories = Object.keys(_fData);\n _html = Object(_templates_items_template__WEBPACK_IMPORTED_MODULE_3__[\"renderItems\"])(categories, _fData);\n this.items.onHide();\n this.items.insertItems(_html);\n\n case 27:\n case \"end\":\n return _context2.stop();\n }\n }\n }, null, this);\n} // Окраска li по нажатию\n\n\nfunction btnActiveLink(e) {\n Array.from(e.target.parentNode.parentNode.querySelectorAll('#catLi')).forEach(function (li) {\n return li.classList.remove('active');\n });\n e.target.classList.add('active');\n localStorage.setItem('currentCategory', e.target.dataset.category.toLowerCase());\n} // Окраска li по нажатию на breadcrumb\n\n\nfunction breadcrumbActiveLink(category) {\n var links = this.$el.querySelectorAll('#catLi');\n Array.from(links).forEach(function (li) {\n return li.classList.remove('active');\n });\n Array.from(links).forEach(function (li) {\n return li.dataset.category.toLowerCase() === category ? li.classList.add('active') : false;\n });\n Array.from(links).forEach(function (li) {\n return li.dataset.category.toLowerCase() === category ? localStorage.setItem('currentCategory', li.dataset.category.toLowerCase()) : false;\n });\n}\n\n//# sourceURL=webpack:///./src/js/components/category.component.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CategoryComponent\", function() { return CategoryComponent; });\n/* harmony import */ var _core_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/component */ \"./src/js/core/component.js\");\n/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/api.service */ \"./src/js/services/api.service.js\");\n/* harmony import */ var _templates_itemsRefactor_template__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../templates/itemsRefactor.template */ \"./src/js/templates/itemsRefactor.template.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\n\n\nvar CategoryComponent =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(CategoryComponent, _Component);\n\n function CategoryComponent(id, _ref, _ref2) {\n var _this;\n\n var items = _ref.items;\n var filter = _ref2.filter;\n\n _classCallCheck(this, CategoryComponent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CategoryComponent).call(this, id));\n _this.items = items;\n _this.filter = filter;\n return _this;\n }\n\n _createClass(CategoryComponent, [{\n key: \"init\",\n value: function init() {\n if (this.$el) {\n this.$el.addEventListener('click', buttonHandler.bind(this));\n\n if (localStorage.getItem('category')) {\n localStorage.removeItem('sortByAll', 'true'); // установка значения для компонента Filter\n\n var category = localStorage.getItem('category');\n breadcrumbActiveLink.call(this, category); // окрашиваем категорию по нажатию на breadcrumb\n\n showItems.call(this, category); // отображем айтемсы если был нажат breadcrumb\n\n localStorage.removeItem('category'); // очищаем ключ category чтобы данные не показывались всегда\n }\n }\n }\n }]);\n\n return CategoryComponent;\n}(_core_component__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\nfunction showItems(category) {\n var targetCategory, fData, html;\n return regeneratorRuntime.async(function showItems$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getCategory(category));\n\n case 2:\n targetCategory = _context.sent;\n _context.next = 5;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItemsOneRefactor(category));\n\n case 5:\n fData = _context.sent;\n html = Object(_templates_itemsRefactor_template__WEBPACK_IMPORTED_MODULE_2__[\"renderItemsRefactor\"])(targetCategory, fData);\n this.items.onHide();\n this.items.insertItems(html);\n\n case 9:\n case \"end\":\n return _context.stop();\n }\n }\n }, null, this);\n}\n\nfunction buttonHandler(e) {\n var category, fData, html, _fData, categories, _html;\n\n return regeneratorRuntime.async(function buttonHandler$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n e.preventDefault();\n\n if (!(e.target.dataset.category && e.target.dataset.category != 'all')) {\n _context2.next = 17;\n break;\n }\n\n // Выполняем логику если нажали на кнопки кроме \"Все товары\"\n localStorage.removeItem('sortByAll'); // установка значения для компонента Filter\n\n this.filter.clearChecked();\n this.items.onShow();\n btnActiveLink(e);\n _context2.next = 8;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getCategory(e.target.dataset.category));\n\n case 8:\n category = _context2.sent;\n _context2.next = 11;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItemsOneRefactor(e.target.dataset.category));\n\n case 11:\n fData = _context2.sent;\n html = Object(_templates_itemsRefactor_template__WEBPACK_IMPORTED_MODULE_2__[\"renderItemsRefactor\"])(category, fData);\n this.items.onHide();\n this.items.insertItems(html);\n _context2.next = 31;\n break;\n\n case 17:\n if (!(e.target.dataset.category === 'all')) {\n _context2.next = 31;\n break;\n }\n\n // Выполняем логику если нажали на кнопку \"Все товары\"\n localStorage.setItem('sortByAll', 'true'); // установка значения для компонента Filter\n\n this.filter.clearChecked();\n this.items.onShow();\n btnActiveLink(e);\n _context2.next = 24;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItemsRefactor());\n\n case 24:\n _fData = _context2.sent;\n _context2.next = 27;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getCategories());\n\n case 27:\n categories = _context2.sent;\n _html = Object(_templates_itemsRefactor_template__WEBPACK_IMPORTED_MODULE_2__[\"renderItemsRefactor\"])(categories, _fData);\n this.items.onHide();\n this.items.insertItems(_html);\n\n case 31:\n case \"end\":\n return _context2.stop();\n }\n }\n }, null, this);\n} // Окраска li по нажатию\n\n\nfunction btnActiveLink(e) {\n Array.from(e.target.parentNode.parentNode.querySelectorAll('#catLi')).forEach(function (li) {\n return li.classList.remove('active');\n });\n e.target.classList.add('active');\n localStorage.setItem('currentCategory', e.target.dataset.category);\n} // Окраска li по нажатию на breadcrumb\n\n\nfunction breadcrumbActiveLink(category) {\n var links = this.$el.querySelectorAll('#catLi');\n Array.from(links).forEach(function (li) {\n return li.classList.remove('active');\n });\n Array.from(links).forEach(function (li) {\n return li.dataset.category === category ? li.classList.add('active') : false;\n });\n Array.from(links).forEach(function (li) {\n return li.dataset.category === category ? localStorage.setItem('currentCategory', li.dataset.category) : false;\n });\n}\n\n//# sourceURL=webpack:///./src/js/components/category.component.js?"); /***/ }), @@ -3906,7 +3906,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__, \"FilterComponent\", function() { return FilterComponent; });\n/* harmony import */ var _core_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/component */ \"./src/js/core/component.js\");\n/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/api.service */ \"./src/js/services/api.service.js\");\n/* harmony import */ var _templates_items_template__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../templates/items.template */ \"./src/js/templates/items.template.js\");\n/* harmony import */ var _templates_itemsCategory_template__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../templates/itemsCategory.template */ \"./src/js/templates/itemsCategory.template.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\n\n\n\nvar FilterComponent =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(FilterComponent, _Component);\n\n function FilterComponent(id, _ref) {\n var _this;\n\n var items = _ref.items;\n\n _classCallCheck(this, FilterComponent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(FilterComponent).call(this, id));\n _this.items = items;\n return _this;\n }\n\n _createClass(FilterComponent, [{\n key: \"init\",\n value: function init() {\n if (this.$el) {\n this.$el.addEventListener('click', sortByAllHandler.bind(this));\n this.$el.addEventListener('click', sortByOneHandler.bind(this));\n }\n }\n }, {\n key: \"clearChecked\",\n value: function clearChecked() {\n if (this.$el) {\n var options = this.$el.querySelectorAll('.filter-options form input');\n Array.from(options).forEach(function (option) {\n return option.checked = false;\n });\n }\n }\n }]);\n\n return FilterComponent;\n}(_core_component__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\nfunction sortByAllHandler(e) {\n var sorting, fData, categories, html;\n return regeneratorRuntime.async(function sortByAllHandler$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!localStorage.getItem('sortByAll')) {\n _context.next = 11;\n break;\n }\n\n if (!e.target.id) {\n _context.next = 11;\n break;\n }\n\n sorting = e.target.id;\n this.items.onShow();\n _context.next = 6;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItems(sorting));\n\n case 6:\n fData = _context.sent;\n categories = Object.keys(fData);\n html = Object(_templates_items_template__WEBPACK_IMPORTED_MODULE_2__[\"renderItems\"])(categories, fData);\n this.items.onHide();\n this.items.insertItems(html);\n\n case 11:\n case \"end\":\n return _context.stop();\n }\n }\n }, null, this);\n}\n\nfunction sortByOneHandler(e) {\n var sorting, category, fData, html;\n return regeneratorRuntime.async(function sortByOneHandler$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (localStorage.getItem('sortByAll')) {\n _context2.next = 11;\n break;\n }\n\n if (!e.target.id) {\n _context2.next = 11;\n break;\n }\n\n sorting = e.target.id;\n this.items.onShow();\n category = localStorage.getItem('currentCategory');\n _context2.next = 7;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItemsOne(category, sorting));\n\n case 7:\n fData = _context2.sent;\n html = Object(_templates_itemsCategory_template__WEBPACK_IMPORTED_MODULE_3__[\"renderItemsOne\"])(category, fData);\n this.items.onHide();\n this.items.insertItems(html);\n\n case 11:\n case \"end\":\n return _context2.stop();\n }\n }\n }, null, this);\n}\n\n//# sourceURL=webpack:///./src/js/components/filter.component.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FilterComponent\", function() { return FilterComponent; });\n/* harmony import */ var _core_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/component */ \"./src/js/core/component.js\");\n/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/api.service */ \"./src/js/services/api.service.js\");\n/* harmony import */ var _templates_itemsRefactor_template__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../templates/itemsRefactor.template */ \"./src/js/templates/itemsRefactor.template.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\n\n\nvar FilterComponent =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(FilterComponent, _Component);\n\n function FilterComponent(id, _ref) {\n var _this;\n\n var items = _ref.items;\n\n _classCallCheck(this, FilterComponent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(FilterComponent).call(this, id));\n _this.items = items;\n return _this;\n }\n\n _createClass(FilterComponent, [{\n key: \"init\",\n value: function init() {\n if (this.$el) {\n this.$el.addEventListener('click', sortByAllHandler.bind(this));\n this.$el.addEventListener('click', sortByOneHandler.bind(this));\n }\n }\n }, {\n key: \"clearChecked\",\n value: function clearChecked() {\n if (this.$el) {\n var options = this.$el.querySelectorAll('.filter-options form input');\n Array.from(options).forEach(function (option) {\n return option.checked = false;\n });\n }\n }\n }]);\n\n return FilterComponent;\n}(_core_component__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\nfunction sortByAllHandler(e) {\n var sorting, fData, categories, html;\n return regeneratorRuntime.async(function sortByAllHandler$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!localStorage.getItem('sortByAll')) {\n _context.next = 13;\n break;\n }\n\n if (!e.target.id) {\n _context.next = 13;\n break;\n }\n\n sorting = e.target.id;\n this.items.onShow();\n _context.next = 6;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItemsRefactor(sorting));\n\n case 6:\n fData = _context.sent;\n _context.next = 9;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getCategories());\n\n case 9:\n categories = _context.sent;\n html = Object(_templates_itemsRefactor_template__WEBPACK_IMPORTED_MODULE_2__[\"renderItemsRefactor\"])(categories, fData);\n this.items.onHide();\n this.items.insertItems(html);\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, null, this);\n}\n\nfunction sortByOneHandler(e) {\n var sorting, category, fData, html;\n return regeneratorRuntime.async(function sortByOneHandler$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (localStorage.getItem('sortByAll')) {\n _context2.next = 13;\n break;\n }\n\n if (!e.target.id) {\n _context2.next = 13;\n break;\n }\n\n sorting = e.target.id;\n this.items.onShow();\n _context2.next = 6;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getCategory(localStorage.getItem('currentCategory')));\n\n case 6:\n category = _context2.sent;\n _context2.next = 9;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItemsOneRefactor(localStorage.getItem('currentCategory'), sorting));\n\n case 9:\n fData = _context2.sent;\n html = Object(_templates_itemsRefactor_template__WEBPACK_IMPORTED_MODULE_2__[\"renderItemsRefactor\"])(category, fData);\n this.items.onHide();\n this.items.insertItems(html);\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, null, this);\n}\n\n//# sourceURL=webpack:///./src/js/components/filter.component.js?"); /***/ }), @@ -3942,7 +3942,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__, \"ItemsComponent\", function() { return ItemsComponent; });\n/* harmony import */ var _core_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/component */ \"./src/js/core/component.js\");\n/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/api.service */ \"./src/js/services/api.service.js\");\n/* harmony import */ var _templates_items_template__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../templates/items.template */ \"./src/js/templates/items.template.js\");\n/* harmony import */ var _other_counter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../other/counter */ \"./src/js/other/counter.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\n\n\n\nvar ItemsComponent =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ItemsComponent, _Component);\n\n function ItemsComponent(id, _ref) {\n var _this;\n\n var loader = _ref.loader;\n\n _classCallCheck(this, ItemsComponent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ItemsComponent).call(this, id));\n _this.loader = loader;\n _this.$el ? _this.roster = _this.$el.querySelector('#roster') : false;\n\n if (localStorage.getItem('cart')) {\n _this.cart = JSON.parse(localStorage.getItem('cart'));\n } else {\n _this.cart = [];\n }\n\n return _this;\n }\n\n _createClass(ItemsComponent, [{\n key: \"init\",\n value: function init() {\n var fData, categories, html;\n return regeneratorRuntime.async(function init$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this.$el) {\n _context.next = 10;\n break;\n }\n\n localStorage.setItem('sortByAll', 'true'); // установка значения для компонента Filter\n\n this.$el.addEventListener('click', addItem.bind(this));\n\n if (localStorage.getItem('category')) {\n _context.next = 10;\n break;\n }\n\n _context.next = 6;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItems());\n\n case 6:\n fData = _context.sent;\n categories = Object.keys(fData);\n\n if (categories.length) {\n html = Object(_templates_items_template__WEBPACK_IMPORTED_MODULE_2__[\"renderItems\"])(categories, fData);\n this.insertItems(html);\n this.btnColor();\n } else {\n this.roster.innerHTML = 'Товаров на сайте пока что нету';\n }\n\n this.loader.hide();\n\n case 10:\n case \"end\":\n return _context.stop();\n }\n }\n }, null, this);\n }\n }, {\n key: \"onHide\",\n value: function onHide() {\n this.$el.querySelector('#roster').innerHTML = '';\n this.loader.hide();\n }\n }, {\n key: \"onShow\",\n value: function onShow() {\n this.$el.querySelector('#roster').innerHTML = '';\n this.loader.show();\n }\n }, {\n key: \"btnColor\",\n value: function btnColor() {\n var _this2 = this;\n\n if (localStorage.getItem('cart')) {\n // Окраска кнопок айтемов которые находятся в корзине\n var obj = JSON.parse(localStorage.getItem('cart'));\n obj.forEach(function (item) {\n if (_this2.$el.querySelector(\"#addItem[data-id=\\\"\".concat(item.id, \"\\\"]\"))) {\n _this2.$el.querySelector(\"#addItem[data-id=\\\"\".concat(item.id, \"\\\"]\")).classList.add('orange');\n\n _this2.$el.querySelector(\"#addItem[data-id=\\\"\".concat(item.id, \"\\\"] i\")).innerHTML = 'close';\n }\n });\n }\n }\n }, {\n key: \"insertItems\",\n value: function insertItems(html) {\n this.roster.insertAdjacentHTML('afterbegin', html);\n this.btnColor();\n }\n }]);\n\n return ItemsComponent;\n}(_core_component__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\nfunction addItem(e) {\n if (e.target.localName === 'button' && e.target.id === 'addItem') {\n var target = e.target;\n var item = {\n id: e.target.dataset.id,\n title: e.target.dataset.title,\n count: e.target.dataset.count,\n price: e.target.dataset.price\n };\n renderObj(item, this, target);\n } else if (e.target.localName === 'i') {\n var _target = e.target.parentNode;\n var _item = {\n id: e.target.parentNode.dataset.id,\n title: e.target.parentNode.dataset.title,\n count: e.target.parentNode.dataset.count,\n price: e.target.parentNode.dataset.price\n };\n renderObj(_item, this, _target);\n }\n}\n\nfunction renderObj(obj, context, target) {\n if (context.cart.length > 0) {\n var insterted = false;\n var index; // Проверка на существующий айтем в корзине\n\n context.cart.forEach(function (item, i) {\n if (item.id === obj.id) {\n insterted = true;\n index = i;\n }\n });\n\n if (insterted === false) {\n context.cart.push(obj);\n localStorage.setItem('cart', JSON.stringify(context.cart));\n target.classList.add('orange');\n target.querySelector('i').innerHTML = 'close';\n Object(_other_counter__WEBPACK_IMPORTED_MODULE_3__[\"insertCount\"])('counter', context.cart);\n } else {\n context.cart.splice(index, 1);\n localStorage.setItem('cart', JSON.stringify(context.cart));\n target.classList.remove('orange');\n target.querySelector('i').innerHTML = 'shopping_cart';\n Object(_other_counter__WEBPACK_IMPORTED_MODULE_3__[\"insertCount\"])('counter', context.cart);\n }\n } else {\n context.cart.push(obj);\n localStorage.setItem('cart', JSON.stringify(context.cart));\n target.classList.add('orange');\n target.querySelector('i').innerHTML = 'close';\n Object(_other_counter__WEBPACK_IMPORTED_MODULE_3__[\"insertCount\"])('counter', context.cart);\n }\n}\n\n;\n\n//# sourceURL=webpack:///./src/js/components/items.component.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ItemsComponent\", function() { return ItemsComponent; });\n/* harmony import */ var _core_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/component */ \"./src/js/core/component.js\");\n/* harmony import */ var _services_api_service__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../services/api.service */ \"./src/js/services/api.service.js\");\n/* harmony import */ var _other_counter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../other/counter */ \"./src/js/other/counter.js\");\n/* harmony import */ var _templates_itemsRefactor_template__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../templates/itemsRefactor.template */ \"./src/js/templates/itemsRefactor.template.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\n\n\n\nvar ItemsComponent =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ItemsComponent, _Component);\n\n function ItemsComponent(id, _ref) {\n var _this;\n\n var loader = _ref.loader;\n\n _classCallCheck(this, ItemsComponent);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ItemsComponent).call(this, id));\n _this.loader = loader;\n _this.$el ? _this.roster = _this.$el.querySelector('#roster') : false;\n\n if (localStorage.getItem('cart')) {\n _this.cart = JSON.parse(localStorage.getItem('cart'));\n } else {\n _this.cart = [];\n }\n\n return _this;\n }\n\n _createClass(ItemsComponent, [{\n key: \"init\",\n value: function init() {\n var fData, categories, html;\n return regeneratorRuntime.async(function init$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!this.$el) {\n _context.next = 14;\n break;\n }\n\n localStorage.setItem('sortByAll', 'true'); // установка значения для компонента Filter\n\n this.$el.addEventListener('click', addItem.bind(this));\n\n if (localStorage.getItem('category')) {\n _context.next = 14;\n break;\n }\n\n _context.next = 6;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getItemsRefactor());\n\n case 6:\n fData = _context.sent;\n _context.next = 9;\n return regeneratorRuntime.awrap(_services_api_service__WEBPACK_IMPORTED_MODULE_1__[\"apiService\"].getCategories());\n\n case 9:\n categories = _context.sent;\n html = Object(_templates_itemsRefactor_template__WEBPACK_IMPORTED_MODULE_3__[\"renderItemsRefactor\"])(categories, fData);\n this.insertItems(html);\n this.btnColor();\n this.loader.hide();\n\n case 14:\n case \"end\":\n return _context.stop();\n }\n }\n }, null, this);\n }\n }, {\n key: \"onHide\",\n value: function onHide() {\n this.$el.querySelector('#roster').innerHTML = '';\n this.loader.hide();\n }\n }, {\n key: \"onShow\",\n value: function onShow() {\n this.$el.querySelector('#roster').innerHTML = '';\n this.loader.show();\n }\n }, {\n key: \"btnColor\",\n value: function btnColor() {\n var _this2 = this;\n\n if (localStorage.getItem('cart')) {\n // Окраска кнопок айтемов которые находятся в корзине\n var obj = JSON.parse(localStorage.getItem('cart'));\n obj.forEach(function (item) {\n if (_this2.$el.querySelector(\"#addItem[data-id=\\\"\".concat(item.id, \"\\\"]\"))) {\n _this2.$el.querySelector(\"#addItem[data-id=\\\"\".concat(item.id, \"\\\"]\")).classList.add('orange');\n\n _this2.$el.querySelector(\"#addItem[data-id=\\\"\".concat(item.id, \"\\\"] i\")).innerHTML = 'close';\n }\n });\n }\n }\n }, {\n key: \"insertItems\",\n value: function insertItems(html) {\n this.roster.insertAdjacentHTML('afterbegin', html);\n this.btnColor();\n }\n }]);\n\n return ItemsComponent;\n}(_core_component__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\nfunction addItem(e) {\n if (e.target.localName === 'button' && e.target.id === 'addItem') {\n var target = e.target;\n var item = {\n id: e.target.dataset.id,\n title: e.target.dataset.title,\n count: e.target.dataset.count,\n price: e.target.dataset.price\n };\n renderObj(item, this, target);\n } else if (e.target.localName === 'i') {\n var _target = e.target.parentNode;\n var _item = {\n id: e.target.parentNode.dataset.id,\n title: e.target.parentNode.dataset.title,\n count: e.target.parentNode.dataset.count,\n price: e.target.parentNode.dataset.price\n };\n renderObj(_item, this, _target);\n }\n}\n\nfunction renderObj(obj, context, target) {\n if (context.cart.length > 0) {\n var insterted = false;\n var index; // Проверка на существующий айтем в корзине\n\n context.cart.forEach(function (item, i) {\n if (item.id === obj.id) {\n insterted = true;\n index = i;\n }\n });\n\n if (insterted === false) {\n context.cart.push(obj);\n localStorage.setItem('cart', JSON.stringify(context.cart));\n target.classList.add('orange');\n target.querySelector('i').innerHTML = 'close';\n Object(_other_counter__WEBPACK_IMPORTED_MODULE_2__[\"insertCount\"])('counter', context.cart);\n } else {\n context.cart.splice(index, 1);\n localStorage.setItem('cart', JSON.stringify(context.cart));\n target.classList.remove('orange');\n target.querySelector('i').innerHTML = 'shopping_cart';\n Object(_other_counter__WEBPACK_IMPORTED_MODULE_2__[\"insertCount\"])('counter', context.cart);\n }\n } else {\n context.cart.push(obj);\n localStorage.setItem('cart', JSON.stringify(context.cart));\n target.classList.add('orange');\n target.querySelector('i').innerHTML = 'close';\n Object(_other_counter__WEBPACK_IMPORTED_MODULE_2__[\"insertCount\"])('counter', context.cart);\n }\n}\n\n;\n\n//# sourceURL=webpack:///./src/js/components/items.component.js?"); /***/ }), @@ -3978,7 +3978,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__, \"Modal\", function() { return Modal; });\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\nvar Modal =\n/*#__PURE__*/\nfunction () {\n function Modal(id, open, close) {\n _classCallCheck(this, Modal);\n\n this.$el = document.getElementById(id);\n this.open = document.getElementById(open);\n this.close = document.getElementById(close);\n this.init();\n }\n\n _createClass(Modal, [{\n key: \"init\",\n value: function init() {\n this.open.addEventListener('click', openHandler.bind(this));\n this.close.addEventListener('click', closeHandler.bind(this));\n }\n }, {\n key: \"show\",\n value: function show() {\n this.$el.classList.remove('hide');\n document.body.style.overflowY = 'hidden';\n }\n }, {\n key: \"hide\",\n value: function hide() {\n this.$el.classList.add('hide');\n document.body.style.overflowY = '';\n }\n }]);\n\n return Modal;\n}();\n\nfunction openHandler(e) {\n this.show();\n}\n\nfunction closeHandler() {\n this.hide();\n}\n\n//# sourceURL=webpack:///./src/js/core/modal.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Modal\", function() { return Modal; });\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\nvar Modal =\n/*#__PURE__*/\nfunction () {\n function Modal(id, open, close) {\n _classCallCheck(this, Modal);\n\n this.$el = document.getElementById(id);\n this.open = document.getElementById(open);\n this.close = document.getElementById(close);\n this.init();\n }\n\n _createClass(Modal, [{\n key: \"init\",\n value: function init() {\n if (this.open != null) {\n this.open.addEventListener('click', openHandler.bind(this));\n this.close.addEventListener('click', closeHandler.bind(this));\n }\n }\n }, {\n key: \"show\",\n value: function show() {\n this.$el.classList.remove('hide');\n document.body.style.overflowY = 'hidden';\n }\n }, {\n key: \"hide\",\n value: function hide() {\n this.$el.classList.add('hide');\n document.body.style.overflowY = '';\n }\n }]);\n\n return Modal;\n}();\n\nfunction openHandler(e) {\n this.show();\n}\n\nfunction closeHandler() {\n this.hide();\n}\n\n//# sourceURL=webpack:///./src/js/core/modal.js?"); /***/ }), @@ -4002,7 +4002,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _com /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CartModal\", function() { return CartModal; });\n/* harmony import */ var _core_modal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/modal */ \"./src/js/core/modal.js\");\n/* harmony import */ var _other_counter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../other/counter */ \"./src/js/other/counter.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 _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 _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\n\nvar CartModal =\n/*#__PURE__*/\nfunction (_Modal) {\n _inherits(CartModal, _Modal);\n\n function CartModal(id, open, close, _ref) {\n var _this;\n\n var items = _ref.items;\n\n _classCallCheck(this, CartModal);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CartModal).call(this, id, open, close));\n _this.items = items;\n\n _this.open.addEventListener('click', _this.openHandler.bind(_assertThisInitialized(_this)));\n\n _this.close.addEventListener('click', _this.closeHandler.bind(_assertThisInitialized(_this)));\n\n _this.list = _this.$el.querySelector('#modalList');\n return _this;\n }\n\n _createClass(CartModal, [{\n key: \"closeHandler\",\n value: function closeHandler() {\n this.removeItem = null;\n this.makePay = null;\n }\n }, {\n key: \"openHandler\",\n value: function openHandler() {\n this.removeItem != null ? this.list.addEventListener('click', this.removeItem.bind(this)) : false;\n this.makePay != null ? this.$el.querySelector('#purchaseInfo').addEventListener('submit', this.makePay.bind(this)) : false;\n this.list.innerHTML = '';\n this.insertItems(this.list);\n }\n }, {\n key: \"insertItems\",\n value: function insertItems(list) {\n var _this2 = this;\n\n if (localStorage.getItem('cart')) {\n var items = JSON.parse(localStorage.getItem('cart'));\n\n if (items.length == 0) {\n list.innerHTML = '

Вы не добавили ни один товар

';\n this.$el.querySelector('#purchaseInfo').classList.add('hide');\n } else {\n this.$el.querySelector('#purchaseInfo').classList.remove('hide');\n }\n\n items.forEach(function (item) {\n return _this2.list.innerHTML += \"
\").concat(item.title, \"
\\u0412 \\u043D\\u0430\\u043B\\u0438\\u0447\\u0438\\u0438: \").concat(item.count, \" (\\u0448\\u0442)
\").concat(parseFloat(item.price).toFixed(2), \"\\u20BD
close
\");\n });\n Object(_other_counter__WEBPACK_IMPORTED_MODULE_1__[\"insertCount\"])('modalCounter', this.items.cart);\n Object(_other_counter__WEBPACK_IMPORTED_MODULE_1__[\"insertCount\"])('counter', this.items.cart);\n this.insertTotalPrice('totalPrice', this.items.cart);\n } else {\n list.innerHTML = '

Вы не добавили ни один товар

';\n }\n }\n }, {\n key: \"removeItem\",\n value: function removeItem(e) {\n if (e.target.id === 'removeItem') {\n var id = e.target.dataset.id;\n var index;\n this.items.cart.forEach(function (item, i) {\n return item.id === id ? index = i : false;\n });\n this.items.cart.splice(index, 1);\n localStorage.setItem('cart', JSON.stringify(this.items.cart));\n this.list.innerHTML = '';\n this.insertItems(this.list);\n this.defaultBtnColor(id);\n }\n }\n }, {\n key: \"insertTotalPrice\",\n value: function insertTotalPrice(id, array) {\n var totalPrice = 0;\n array.forEach(function (item) {\n return totalPrice += parseFloat(item.price);\n });\n this.$el.querySelector(\"#\".concat(id)).innerHTML = \"\".concat(totalPrice.toFixed(2), \"\\u20BD\");\n }\n }, {\n key: \"makePay\",\n value: function makePay(e) {\n e.preventDefault();\n var payInfo = {\n items: this.items.cart.map(function (item) {\n return {\n id: item.id,\n title: item.title,\n price: parseFloat(item.price)\n };\n })\n };\n var totalPrice = 0;\n payInfo.items.forEach(function (item) {\n return totalPrice += parseFloat(item.price);\n });\n payInfo.totalPrice = Math.round(totalPrice * 100) / 100;\n payInfo.payMethod = this.$el.querySelector('.payment-field #payment').value;\n payInfo.phone = this.$el.querySelector('.phone-field #phone').value;\n payInfo.email = this.$el.querySelector('.email-field #email').value;\n console.log('Pay info:', payInfo);\n }\n }, {\n key: \"defaultBtnColor\",\n value: function defaultBtnColor(id) {\n if (this.items.roster.querySelector(\"#addItem[data-id=\\\"\".concat(id, \"\\\"]\"))) {\n this.items.roster.querySelector(\"#addItem[data-id=\\\"\".concat(id, \"\\\"]\")).classList.remove('orange');\n this.items.roster.querySelector(\"#addItem[data-id=\\\"\".concat(id, \"\\\"] i\")).innerHTML = 'shopping_cart';\n }\n }\n }]);\n\n return CartModal;\n}(_core_modal__WEBPACK_IMPORTED_MODULE_0__[\"Modal\"]);\n\n//# sourceURL=webpack:///./src/js/modals/cart.modal.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CartModal\", function() { return CartModal; });\n/* harmony import */ var _core_modal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/modal */ \"./src/js/core/modal.js\");\n/* harmony import */ var _other_counter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../other/counter */ \"./src/js/other/counter.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 _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 _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\n\nvar CartModal =\n/*#__PURE__*/\nfunction (_Modal) {\n _inherits(CartModal, _Modal);\n\n function CartModal(id, open, close, _ref) {\n var _this;\n\n var items = _ref.items;\n\n _classCallCheck(this, CartModal);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(CartModal).call(this, id, open, close));\n _this.items = items;\n\n _this.open.addEventListener('click', _this.openHandler.bind(_assertThisInitialized(_this)));\n\n _this.close.addEventListener('click', _this.closeHandler.bind(_assertThisInitialized(_this)));\n\n _this.list = _this.$el.querySelector('#modalList');\n return _this;\n }\n\n _createClass(CartModal, [{\n key: \"closeHandler\",\n value: function closeHandler() {\n this.removeItem = null;\n this.makePay = null;\n }\n }, {\n key: \"openHandler\",\n value: function openHandler() {\n this.removeItem != null ? this.list.addEventListener('click', this.removeItem.bind(this)) : false;\n this.makePay != null ? this.$el.querySelector('#purchaseInfo').addEventListener('submit', this.makePay.bind(this)) : false;\n this.list.innerHTML = '';\n this.insertItems(this.list);\n }\n }, {\n key: \"insertItems\",\n value: function insertItems(list) {\n var _this2 = this;\n\n if (localStorage.getItem('cart')) {\n var items = JSON.parse(localStorage.getItem('cart'));\n\n if (items.length == 0) {\n list.innerHTML = '

Вы не добавили ни один товар

';\n this.$el.querySelector('#purchaseInfo').classList.add('hide');\n } else {\n this.$el.querySelector('#purchaseInfo').classList.remove('hide');\n }\n\n items.forEach(function (item) {\n return _this2.list.innerHTML += \"
\").concat(item.title, \"
\\u0412 \\u043D\\u0430\\u043B\\u0438\\u0447\\u0438\\u0438: \").concat(item.count, \" (\\u0448\\u0442)
\").concat(parseFloat(item.price).toFixed(2), \"\\u20BD
close
\");\n });\n Object(_other_counter__WEBPACK_IMPORTED_MODULE_1__[\"insertCount\"])('modalCounter', this.items.cart);\n Object(_other_counter__WEBPACK_IMPORTED_MODULE_1__[\"insertCount\"])('counter', this.items.cart);\n this.insertTotalPrice('totalPrice', this.items.cart);\n } else {\n list.innerHTML = '

Вы не добавили ни один товар

';\n }\n }\n }, {\n key: \"removeItem\",\n value: function removeItem(e) {\n if (e.target.id === 'removeItem') {\n var id = e.target.dataset.id;\n var index;\n this.items.cart.forEach(function (item, i) {\n return item.id === id ? index = i : false;\n });\n this.items.cart.splice(index, 1);\n localStorage.setItem('cart', JSON.stringify(this.items.cart));\n this.list.innerHTML = '';\n this.insertItems(this.list);\n this.defaultBtnColor(id);\n }\n }\n }, {\n key: \"insertTotalPrice\",\n value: function insertTotalPrice(id, array) {\n var totalPrice = 0;\n array.forEach(function (item) {\n return totalPrice += parseFloat(item.price);\n });\n this.$el.querySelector(\"#\".concat(id)).innerHTML = \"\".concat(totalPrice.toFixed(2), \"\\u20BD\");\n }\n }, {\n key: \"makePay\",\n value: function makePay(e) {\n e.preventDefault();\n var payInfo = {\n items: this.items.cart.map(function (item) {\n return {\n id: item.id,\n title: item.title,\n price: parseFloat(item.price)\n };\n })\n };\n var totalPrice = 0;\n payInfo.items.forEach(function (item) {\n return totalPrice += parseFloat(item.price);\n });\n payInfo.totalPrice = Math.round(totalPrice * 100) / 100;\n payInfo.payMethod = this.$el.querySelector('.payment-field #payment').value;\n payInfo.phone = this.$el.querySelector('.phone-field #phone').value;\n payInfo.email = this.$el.querySelector('.email-field #email').value;\n console.log('Pay info:', payInfo);\n }\n }, {\n key: \"defaultBtnColor\",\n value: function defaultBtnColor(id) {\n if (this.items.roster) {\n if (this.items.roster.querySelector(\"#addItem[data-id=\\\"\".concat(id, \"\\\"]\"))) {\n this.items.roster.querySelector(\"#addItem[data-id=\\\"\".concat(id, \"\\\"]\")).classList.remove('orange');\n this.items.roster.querySelector(\"#addItem[data-id=\\\"\".concat(id, \"\\\"] i\")).innerHTML = 'shopping_cart';\n }\n }\n }\n }]);\n\n return CartModal;\n}(_core_modal__WEBPACK_IMPORTED_MODULE_0__[\"Modal\"]);\n\n//# sourceURL=webpack:///./src/js/modals/cart.modal.js?"); /***/ }), @@ -4014,7 +4014,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__, \"PayModal\", function() { return PayModal; });\n/* harmony import */ var _core_modal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/modal */ \"./src/js/core/modal.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 _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 _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 PayModal =\n/*#__PURE__*/\nfunction (_Modal) {\n _inherits(PayModal, _Modal);\n\n function PayModal(id, open, close) {\n var _this;\n\n _classCallCheck(this, PayModal);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(PayModal).call(this, id, open, close));\n\n _this.open.addEventListener('click', _this.openHandler.bind(_assertThisInitialized(_this)));\n\n _this.close.addEventListener('click', _this.closeHandler.bind(_assertThisInitialized(_this)));\n\n return _this;\n }\n\n _createClass(PayModal, [{\n key: \"closeHandler\",\n value: function closeHandler() {\n this.$el.querySelector('#purchaseInfo').onsubmit = null;\n }\n }, {\n key: \"openHandler\",\n value: function openHandler(e) {\n var _this2 = this;\n\n if (e.target.id === 'payOpen') {\n var targetInfo = e.target.dataset;\n this.$el.querySelector('.title-field #title').value = targetInfo.title;\n this.show();\n\n this.$el.querySelector('#purchaseInfo').onsubmit = function (e) {\n _this2.makePay(e, targetInfo);\n };\n } else {\n this.hide();\n }\n }\n }, {\n key: \"makePay\",\n value: function makePay(e, info) {\n e.preventDefault();\n var payInfo = {\n item: [{\n id: info.id,\n title: info.title\n }],\n totalPrice: parseFloat(info.price)\n };\n payInfo.payMethod = this.$el.querySelector('.payment-field #payment').value;\n payInfo.phone = this.$el.querySelector('.phone-field #phone').value;\n payInfo.email = this.$el.querySelector('.email-field #email').value;\n console.log('Pay info: ', payInfo);\n }\n }]);\n\n return PayModal;\n}(_core_modal__WEBPACK_IMPORTED_MODULE_0__[\"Modal\"]);\n\n//# sourceURL=webpack:///./src/js/modals/pay.modal.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PayModal\", function() { return PayModal; });\n/* harmony import */ var _core_modal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../core/modal */ \"./src/js/core/modal.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 _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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 _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 PayModal =\n/*#__PURE__*/\nfunction (_Modal) {\n _inherits(PayModal, _Modal);\n\n function PayModal(id, open, close) {\n var _this;\n\n _classCallCheck(this, PayModal);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(PayModal).call(this, id, open, close));\n\n if (_this.open != null) {\n _this.open.addEventListener('click', _this.openHandler.bind(_assertThisInitialized(_this)));\n\n _this.close.addEventListener('click', _this.closeHandler.bind(_assertThisInitialized(_this)));\n }\n\n return _this;\n }\n\n _createClass(PayModal, [{\n key: \"closeHandler\",\n value: function closeHandler() {\n this.$el.querySelector('#purchaseInfo').onsubmit = null;\n }\n }, {\n key: \"openHandler\",\n value: function openHandler(e) {\n var _this2 = this;\n\n if (e.target.id === 'payOpen') {\n var targetInfo = e.target.dataset;\n this.$el.querySelector('.title-field #title').value = targetInfo.title;\n this.show();\n\n this.$el.querySelector('#purchaseInfo').onsubmit = function (e) {\n _this2.makePay(e, targetInfo);\n };\n } else {\n this.hide();\n }\n }\n }, {\n key: \"makePay\",\n value: function makePay(e, info) {\n e.preventDefault();\n var payInfo = {\n item: [{\n id: info.id,\n title: info.title\n }],\n totalPrice: parseFloat(info.price)\n };\n payInfo.payMethod = this.$el.querySelector('.payment-field #payment').value;\n payInfo.phone = this.$el.querySelector('.phone-field #phone').value;\n payInfo.email = this.$el.querySelector('.email-field #email').value;\n console.log('Pay info: ', payInfo);\n }\n }]);\n\n return PayModal;\n}(_core_modal__WEBPACK_IMPORTED_MODULE_0__[\"Modal\"]);\n\n//# sourceURL=webpack:///./src/js/modals/pay.modal.js?"); /***/ }), @@ -4038,31 +4038,19 @@ 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__, \"apiService\", function() { return apiService; });\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\nvar axios = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n\nvar API_TOKEN = 'yYNfW8ynVO18L1TW5qIkILM1WtWgrVZz';\n\nvar ApiService =\n/*#__PURE__*/\nfunction () {\n function ApiService(baseUrl) {\n _classCallCheck(this, ApiService);\n\n this.url = baseUrl;\n }\n\n _createClass(ApiService, [{\n key: \"getItems\",\n value: function getItems(sorting) {\n var request, _request;\n\n return regeneratorRuntime.async(function getItems$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n\n if (!sorting) {\n _context.next = 6;\n break;\n }\n\n request = \"\".concat(this.url, \"store-api?auth=\").concat(API_TOKEN, \"&option=all&sorting=\").concat(sorting);\n return _context.abrupt(\"return\", useRequest(request));\n\n case 6:\n _request = \"\".concat(this.url, \"store-api?auth=\").concat(API_TOKEN, \"&option=all\");\n return _context.abrupt(\"return\", useRequest(_request));\n\n case 8:\n _context.next = 13;\n break;\n\n case 10:\n _context.prev = 10;\n _context.t0 = _context[\"catch\"](0);\n console.error(_context.t0);\n\n case 13:\n case \"end\":\n return _context.stop();\n }\n }\n }, null, this, [[0, 10]]);\n }\n }, {\n key: \"getItemsOne\",\n value: function getItemsOne(category, sorting) {\n var request, _request2;\n\n return regeneratorRuntime.async(function getItemsOne$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n\n if (!sorting) {\n _context2.next = 6;\n break;\n }\n\n request = \"\".concat(this.url, \"store-api?auth=\").concat(API_TOKEN, \"&category=\").concat(category, \"&sorting=\").concat(sorting);\n return _context2.abrupt(\"return\", useRequest(request));\n\n case 6:\n _request2 = \"\".concat(this.url, \"store-api?auth=\").concat(API_TOKEN, \"&category=\").concat(category);\n return _context2.abrupt(\"return\", useRequest(_request2));\n\n case 8:\n _context2.next = 13;\n break;\n\n case 10:\n _context2.prev = 10;\n _context2.t0 = _context2[\"catch\"](0);\n console.error(_context2.t0);\n\n case 13:\n case \"end\":\n return _context2.stop();\n }\n }\n }, null, this, [[0, 10]]);\n }\n }]);\n\n return ApiService;\n}();\n\nfunction useRequest(request) {\n var response;\n return regeneratorRuntime.async(function useRequest$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return regeneratorRuntime.awrap(axios.get(request));\n\n case 2:\n response = _context3.sent;\n _context3.next = 5;\n return regeneratorRuntime.awrap(JSON.parse(response.request.response));\n\n case 5:\n return _context3.abrupt(\"return\", _context3.sent);\n\n case 6:\n case \"end\":\n return _context3.stop();\n }\n }\n });\n}\n\nvar apiService = new ApiService('http://localhost:3000/', API_TOKEN);\n\n//# sourceURL=webpack:///./src/js/services/api.service.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"apiService\", function() { return apiService; });\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\nvar axios = __webpack_require__(/*! axios */ \"./node_modules/axios/index.js\");\n\nvar API_TOKEN = 'yYNfW8ynVO18L1TW5qIkILM1WtWgrVZz';\n\nvar ApiService =\n/*#__PURE__*/\nfunction () {\n function ApiService(baseUrl) {\n _classCallCheck(this, ApiService);\n\n this.url = baseUrl;\n }\n\n _createClass(ApiService, [{\n key: \"getCategory\",\n value: function getCategory(category) {\n var request;\n return regeneratorRuntime.async(function getCategory$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n request = \"\".concat(this.url, \"api?token=\").concat(API_TOKEN, \"&category=\").concat(encodeURIComponent(category));\n return _context.abrupt(\"return\", useRequest(request));\n\n case 5:\n _context.prev = 5;\n _context.t0 = _context[\"catch\"](0);\n console.error(_context.t0);\n\n case 8:\n case \"end\":\n return _context.stop();\n }\n }\n }, null, this, [[0, 5]]);\n }\n }, {\n key: \"getCategories\",\n value: function getCategories() {\n var request;\n return regeneratorRuntime.async(function getCategories$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n request = \"\".concat(this.url, \"api?token=\").concat(API_TOKEN, \"&categories=all\");\n return _context2.abrupt(\"return\", useRequest(request));\n\n case 5:\n _context2.prev = 5;\n _context2.t0 = _context2[\"catch\"](0);\n console.error(_context2.t0);\n\n case 8:\n case \"end\":\n return _context2.stop();\n }\n }\n }, null, this, [[0, 5]]);\n }\n }, {\n key: \"getItemsRefactor\",\n value: function getItemsRefactor(sorting) {\n var request, _request;\n\n return regeneratorRuntime.async(function getItemsRefactor$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n\n if (!sorting) {\n _context3.next = 6;\n break;\n }\n\n request = \"\".concat(this.url, \"api?token=\").concat(API_TOKEN, \"&items=all&sorting=\").concat(sorting);\n return _context3.abrupt(\"return\", useRequest(request));\n\n case 6:\n _request = \"\".concat(this.url, \"api?token=\").concat(API_TOKEN, \"&items=all\");\n return _context3.abrupt(\"return\", useRequest(_request));\n\n case 8:\n _context3.next = 13;\n break;\n\n case 10:\n _context3.prev = 10;\n _context3.t0 = _context3[\"catch\"](0);\n console.error(_context3.t0);\n\n case 13:\n case \"end\":\n return _context3.stop();\n }\n }\n }, null, this, [[0, 10]]);\n }\n }, {\n key: \"getItemsOneRefactor\",\n value: function getItemsOneRefactor(category, sorting) {\n var request, _request2;\n\n return regeneratorRuntime.async(function getItemsOneRefactor$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.prev = 0;\n\n if (!sorting) {\n _context4.next = 6;\n break;\n }\n\n request = \"\".concat(this.url, \"api?token=\").concat(API_TOKEN, \"&items=all&category=\").concat(encodeURIComponent(category.toLowerCase()), \"&sorting=\").concat(sorting);\n return _context4.abrupt(\"return\", useRequest(request));\n\n case 6:\n _request2 = \"\".concat(this.url, \"api?token=\").concat(API_TOKEN, \"&items=all&category=\").concat(encodeURIComponent(category.toLowerCase()));\n return _context4.abrupt(\"return\", useRequest(_request2));\n\n case 8:\n _context4.next = 13;\n break;\n\n case 10:\n _context4.prev = 10;\n _context4.t0 = _context4[\"catch\"](0);\n console.error(_context4.t0);\n\n case 13:\n case \"end\":\n return _context4.stop();\n }\n }\n }, null, this, [[0, 10]]);\n }\n }]);\n\n return ApiService;\n}();\n\nfunction useRequest(request) {\n var response;\n return regeneratorRuntime.async(function useRequest$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return regeneratorRuntime.awrap(axios.get(request));\n\n case 2:\n response = _context5.sent;\n _context5.next = 5;\n return regeneratorRuntime.awrap(JSON.parse(response.request.response));\n\n case 5:\n return _context5.abrupt(\"return\", _context5.sent);\n\n case 6:\n case \"end\":\n return _context5.stop();\n }\n }\n });\n}\n\nvar apiService = new ApiService('http://localhost:3000/', API_TOKEN);\n\n//# sourceURL=webpack:///./src/js/services/api.service.js?"); /***/ }), -/***/ "./src/js/templates/items.template.js": -/*!********************************************!*\ - !*** ./src/js/templates/items.template.js ***! - \********************************************/ -/*! exports provided: renderItems */ -/***/ (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 html = '';\n categories.forEach(function (category) {\n html += \"
\\n

\".concat(category, \"

\\n
\");\n items[category].forEach(function (item) {\n if (item && item._id != undefined) {\n html += \"\\n
\\n
\\n
\\n \\\"#\\\"\\n
\\n \\n
\\n
\\n
\\n \").concat(item.date, \"\\n
\\n
\\n \").concat(item.count, \" \\u0448\\u0442.\\n
\\n
\\n \\u0426\\u0435\\u043D\\u0430 \\u0437\\u0430 1 \\u0448\\u0442.\\n
\\n
\\n \").concat(item.price.toFixed(2), \"\\u20BD\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \");\n } else {\n html += \"\\n
\\n
\\n
\\n \\u0412 \\u044D\\u0442\\u043E\\u0439 \\u043A\\u0430\\u0442\\u0435\\u0433\\u043E\\u0440\\u0438\\u0438 \\u043F\\u043E\\u043A\\u0430 \\u0447\\u0442\\u043E \\u043D\\u0435\\u0442\\u0443 \\u0442\\u043E\\u0432\\u0430\\u0440\\u043E\\u0432\\n
\\n
\\n
\\n \";\n }\n });\n });\n return html;\n}\n\n//# sourceURL=webpack:///./src/js/templates/items.template.js?"); - -/***/ }), - -/***/ "./src/js/templates/itemsCategory.template.js": +/***/ "./src/js/templates/itemsRefactor.template.js": /*!****************************************************!*\ - !*** ./src/js/templates/itemsCategory.template.js ***! + !*** ./src/js/templates/itemsRefactor.template.js ***! \****************************************************/ -/*! exports provided: renderItemsOne */ +/*! exports provided: renderItemsRefactor */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderItemsOne\", function() { return renderItemsOne; });\nfunction renderItemsOne(category, items) {\n var html = '';\n html += \"
\\n

\".concat(category, \"

\\n
\");\n items.forEach(function (item) {\n if (item && item._id != undefined) {\n html += \"\\n
\\n
\\n
\\n \\\"#\\\"\\n
\\n \\n
\\n
\\n
\\n \").concat(item.date, \"\\n
\\n
\\n \").concat(item.count, \" \\u0448\\u0442.\\n
\\n
\\n \\u0426\\u0435\\u043D\\u0430 \\u0437\\u0430 1 \\u0448\\u0442.\\n
\\n
\\n \").concat(item.price.toFixed(2), \"\\u20BD\\n
\\n
\\n \\n \\n
\\n
\\n
\\n \");\n } else {\n html += \"\\n
\\n
\\n
\\n \\u0412 \\u044D\\u0442\\u043E\\u0439 \\u043A\\u0430\\u0442\\u0435\\u0433\\u043E\\u0440\\u0438\\u0438 \\u043F\\u043E\\u043A\\u0430 \\u0447\\u0442\\u043E \\u043D\\u0435\\u0442\\u0443 \\u0442\\u043E\\u0432\\u0430\\u0440\\u043E\\u0432\\n
\\n
\\n
\";\n }\n });\n return html;\n}\n\n//# sourceURL=webpack:///./src/js/templates/itemsCategory.template.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderItemsRefactor\", function() { return renderItemsRefactor; });\nfunction renderItemsRefactor(categories, items) {\n var arrayCategories = categories;\n var arrayItems = items;\n var html = '';\n arrayCategories.forEach(function (category) {\n html += \"
\\n

\".concat(category.title, \"

\\n
\");\n arrayItems.forEach(function (item) {\n if (item.category.toLowerCase() === category.title.toLowerCase()) {\n html += \"\\n
\\n
\\n
\\n \\\"#\\\"\\n
\\n \\n
\\n
\\n
\\n \").concat(item.date.split('T')[0], \"\\n
\\n
\\n \").concat(item.count, \" \\u0448\\u0442.\\n
\\n
\\n \\u0426\\u0435\\u043D\\u0430 \\u0437\\u0430 1 \\u0448\\u0442.\\n
\\n
\\n \").concat(item.price.toFixed(2), \"\\u20BD\\n
\\n
\\n \\n \\n
\\n
\\n
\");\n }\n });\n });\n return html;\n}\n\n//# sourceURL=webpack:///./src/js/templates/itemsRefactor.template.js?"); /***/ }), diff --git a/dist/views/assets/head.pug b/dist/views/assets/head.pug index 7e67509..aa53a9a 100644 --- a/dist/views/assets/head.pug +++ b/dist/views/assets/head.pug @@ -2,6 +2,7 @@ doctype html(lang='ru') head meta(charset='utf-8') + meta(http-equiv='Cоntent-Type' cоntent='text/html;' charset='utf-8') title Digital Shop // Materialize CSS link(rel="stylesheet", href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css") diff --git a/dist/views/index.pug b/dist/views/index.pug index b24763d..421be21 100644 --- a/dist/views/index.pug +++ b/dist/views/index.pug @@ -66,7 +66,7 @@ main.main-section a#catLi.active(href='#' data-category='all') Все товары: each val in categories li - a#catLi(href='#' data-category=val) #{val} + a#catLi(href='#' data-category=val.toLowerCase()) #{val} // Category Block END // Filter Block diff --git a/dist/views/product.pug b/dist/views/product.pug index ede7338..112575b 100644 --- a/dist/views/product.pug +++ b/dist/views/product.pug @@ -17,7 +17,7 @@ main.main-section li a(href='/') Главная li - a#breadcrumbBtn(href='/' data-category=category) #{category} + a#breadcrumbBtn(href='/' data-category=category.toLowerCase()) #{category} li #{title} hr .product-title.block-title diff --git a/src/js/components/category.component.js b/src/js/components/category.component.js index 3551890..9455a61 100644 --- a/src/js/components/category.component.js +++ b/src/js/components/category.component.js @@ -1,7 +1,6 @@ import { Component } from "../core/component"; import { apiService } from "../services/api.service"; -import { renderItemsOne } from "../templates/itemsCategory.template"; -import { renderItems } from "../templates/items.template"; +import { renderItemsRefactor } from "../templates/itemsRefactor.template"; export class CategoryComponent extends Component { constructor(id, {items}, {filter}) { @@ -27,8 +26,9 @@ export class CategoryComponent extends Component { } async function showItems(category) { - const fData = await apiService.getItemsOne(category), - html = renderItemsOne(category, fData); + const targetCategory = await apiService.getCategory(category); + const fData = await apiService.getItemsOneRefactor(category), + html = renderItemsRefactor(targetCategory, fData); this.items.onHide(); this.items.insertItems(html); @@ -43,9 +43,9 @@ async function buttonHandler(e) { this.items.onShow(); btnActiveLink(e); - const category = e.target.dataset.category.toLowerCase(), - fData = await apiService.getItemsOne(category), - html = renderItemsOne(category, fData); + const category = await apiService.getCategory(e.target.dataset.category), + fData = await apiService.getItemsOneRefactor(e.target.dataset.category), + html = renderItemsRefactor(category, fData); this.items.onHide(); this.items.insertItems(html); @@ -56,9 +56,9 @@ async function buttonHandler(e) { this.items.onShow(); btnActiveLink(e); - const fData = await apiService.getItems(), - categories = Object.keys(fData), - html = renderItems(categories, fData); + const fData = await apiService.getItemsRefactor(); + const categories = await apiService.getCategories(); + const html = renderItemsRefactor(categories, fData); this.items.onHide(); this.items.insertItems(html); @@ -69,13 +69,13 @@ async function buttonHandler(e) { function btnActiveLink(e) { Array.from(e.target.parentNode.parentNode.querySelectorAll('#catLi')).forEach(li => li.classList.remove('active')); e.target.classList.add('active'); - localStorage.setItem('currentCategory', e.target.dataset.category.toLowerCase()); + localStorage.setItem('currentCategory', e.target.dataset.category); } // Окраска li по нажатию на breadcrumb function breadcrumbActiveLink(category) { const links = this.$el.querySelectorAll('#catLi'); Array.from(links).forEach(li => li.classList.remove('active')); - Array.from(links).forEach(li => li.dataset.category.toLowerCase() === category ? li.classList.add('active') : false); - Array.from(links).forEach(li => li.dataset.category.toLowerCase() === category ? localStorage.setItem('currentCategory', li.dataset.category.toLowerCase()) : false); + Array.from(links).forEach(li => li.dataset.category === category ? li.classList.add('active') : false); + Array.from(links).forEach(li => li.dataset.category === category ? localStorage.setItem('currentCategory', li.dataset.category) : false); } \ No newline at end of file diff --git a/src/js/components/filter.component.js b/src/js/components/filter.component.js index b04dfc9..2584111 100644 --- a/src/js/components/filter.component.js +++ b/src/js/components/filter.component.js @@ -1,7 +1,6 @@ import { Component } from "../core/component"; import { apiService } from "../services/api.service"; -import { renderItems } from "../templates/items.template"; -import { renderItemsOne } from "../templates/itemsCategory.template"; +import { renderItemsRefactor } from "../templates/itemsRefactor.template"; export class FilterComponent extends Component { constructor(id, {items}) { @@ -30,9 +29,9 @@ async function sortByAllHandler(e) { const sorting = e.target.id; this.items.onShow(); - const fData = await apiService.getItems(sorting), - categories = Object.keys(fData), - html = renderItems(categories, fData); + const fData = await apiService.getItemsRefactor(sorting); + const categories = await apiService.getCategories(); + const html = renderItemsRefactor(categories, fData); this.items.onHide(); this.items.insertItems(html); @@ -44,11 +43,11 @@ async function sortByOneHandler(e) { if (!localStorage.getItem('sortByAll')) { if (e.target.id) { const sorting = e.target.id; - this.items.onShow(); - const category = localStorage.getItem('currentCategory'), - fData = await apiService.getItemsOne(category, sorting), - html = renderItemsOne(category, fData); + + const category = await apiService.getCategory(localStorage.getItem('currentCategory')), + fData = await apiService.getItemsOneRefactor(localStorage.getItem('currentCategory'), sorting), + html = renderItemsRefactor(category, fData); this.items.onHide(); this.items.insertItems(html); diff --git a/src/js/components/items.component.js b/src/js/components/items.component.js index 3fba07e..170459b 100644 --- a/src/js/components/items.component.js +++ b/src/js/components/items.component.js @@ -1,7 +1,7 @@ import { Component } from "../core/component"; import { apiService } from "../services/api.service"; -import { renderItems } from "../templates/items.template"; import { insertCount } from "../other/counter"; +import { renderItemsRefactor } from "../templates/itemsRefactor.template"; export class ItemsComponent extends Component { constructor(id, {loader}) { @@ -20,17 +20,12 @@ export class ItemsComponent extends Component { localStorage.setItem('sortByAll', 'true'); // установка значения для компонента Filter this.$el.addEventListener('click', addItem.bind(this)); if (!localStorage.getItem('category')) { // Получаем все товары и выводим их если нету ключа category в ls - const fData = await apiService.getItems(), - categories = Object.keys(fData); - - if (categories.length) { - const html = renderItems(categories, fData); - this.insertItems(html); - this.btnColor(); - } else { - this.roster.innerHTML = 'Товаров на сайте пока что нету'; - } - + const fData = await apiService.getItemsRefactor(); + const categories = await apiService.getCategories(); + const html = renderItemsRefactor(categories, fData); + this.insertItems(html); + this.btnColor(); + this.loader.hide(); } } diff --git a/src/js/core/modal.js b/src/js/core/modal.js index dedea56..096b08b 100644 --- a/src/js/core/modal.js +++ b/src/js/core/modal.js @@ -7,8 +7,10 @@ export class Modal { } init() { - this.open.addEventListener('click', openHandler.bind(this)); - this.close.addEventListener('click', closeHandler.bind(this)); + if (this.open != null) { + this.open.addEventListener('click', openHandler.bind(this)); + this.close.addEventListener('click', closeHandler.bind(this)); + } } show() { diff --git a/src/js/modals/cart.modal.js b/src/js/modals/cart.modal.js index dfdefe7..a84cba4 100644 --- a/src/js/modals/cart.modal.js +++ b/src/js/modals/cart.modal.js @@ -83,9 +83,11 @@ export class CartModal extends Modal { } defaultBtnColor(id) { - if (this.items.roster.querySelector(`#addItem[data-id="${id}"]`)) { - this.items.roster.querySelector(`#addItem[data-id="${id}"]`).classList.remove('orange'); - this.items.roster.querySelector(`#addItem[data-id="${id}"] i`).innerHTML = 'shopping_cart'; + if (this.items.roster) { + if (this.items.roster.querySelector(`#addItem[data-id="${id}"]`)) { + this.items.roster.querySelector(`#addItem[data-id="${id}"]`).classList.remove('orange'); + this.items.roster.querySelector(`#addItem[data-id="${id}"] i`).innerHTML = 'shopping_cart'; + } } } } diff --git a/src/js/modals/pay.modal.js b/src/js/modals/pay.modal.js index 0ee0a92..700e768 100644 --- a/src/js/modals/pay.modal.js +++ b/src/js/modals/pay.modal.js @@ -3,8 +3,10 @@ import { Modal } from "../core/modal"; export class PayModal extends Modal { constructor (id, open, close) { super(id, open, close); - this.open.addEventListener('click', this.openHandler.bind(this)); - this.close.addEventListener('click', this.closeHandler.bind(this)); + if (this.open != null) { + this.open.addEventListener('click', this.openHandler.bind(this)); + this.close.addEventListener('click', this.closeHandler.bind(this)); + } } closeHandler() { diff --git a/src/js/services/api.service.js b/src/js/services/api.service.js index d2c99c1..8475cb9 100644 --- a/src/js/services/api.service.js +++ b/src/js/services/api.service.js @@ -6,13 +6,31 @@ class ApiService { this.url = baseUrl; } - async getItems(sorting) { + async getCategory(category) { + try { + const request = `${this.url}api?token=${API_TOKEN}&category=${encodeURIComponent(category)}`; + return useRequest(request); + } catch (err) { + console.error(err); + } + } + + async getCategories() { + try { + const request = `${this.url}api?token=${API_TOKEN}&categories=all`; + return useRequest(request); + } catch (err) { + console.error(err); + } + } + + async getItemsRefactor(sorting) { try { if (sorting) { - const request = `${this.url}store-api?auth=${API_TOKEN}&option=all&sorting=${sorting}`; + const request = `${this.url}api?token=${API_TOKEN}&items=all&sorting=${sorting}`; return useRequest(request); } else { - const request = `${this.url}store-api?auth=${API_TOKEN}&option=all`; + const request = `${this.url}api?token=${API_TOKEN}&items=all`; return useRequest(request); } @@ -21,13 +39,13 @@ class ApiService { } } - async getItemsOne(category, sorting) { + async getItemsOneRefactor(category, sorting) { try { if (sorting) { - const request = `${this.url}store-api?auth=${API_TOKEN}&category=${category}&sorting=${sorting}`; + const request = `${this.url}api?token=${API_TOKEN}&items=all&category=${encodeURIComponent(category.toLowerCase())}&sorting=${sorting}`; return useRequest(request); } else { - const request = `${this.url}store-api?auth=${API_TOKEN}&category=${category}`; + const request = `${this.url}api?token=${API_TOKEN}&items=all&category=${encodeURIComponent(category.toLowerCase())}`; return useRequest(request); } } catch (err) { diff --git a/src/js/templates/itemsCategory.template.js b/src/js/templates/itemsCategory.template.js deleted file mode 100644 index 2162686..0000000 --- a/src/js/templates/itemsCategory.template.js +++ /dev/null @@ -1,53 +0,0 @@ -export function renderItemsOne(category, items) { - let html = ''; - - html += `
-

${category}

-
`; - - items.forEach(item => { - if (item && item._id != undefined) { - html += ` -
-
-
- # -
- -
-
-
- ${item.date} -
-
- ${item.count} шт. -
-
- Цена за 1 шт. -
-
- ${item.price.toFixed(2)}₽ -
-
- - -
-
-
- ` - } else { - html += ` -
-
-
- В этой категории пока что нету товаров -
-
-
`; - } - }); - return html; -} \ No newline at end of file diff --git a/src/js/templates/items.template.js b/src/js/templates/itemsRefactor.template.js similarity index 64% rename from src/js/templates/items.template.js rename to src/js/templates/itemsRefactor.template.js index 43605b1..1f12648 100644 --- a/src/js/templates/items.template.js +++ b/src/js/templates/itemsRefactor.template.js @@ -1,18 +1,20 @@ -export function renderItems(categories, items) { +export function renderItemsRefactor(categories, items) { + const arrayCategories = categories; + const arrayItems = items; let html = ''; - categories.forEach(category => { + arrayCategories.forEach(category => { html += `
-

${category}

+

${category.title}

`; - items[category].forEach(item => { - if (item && item._id != undefined) { - html += ` -
+ arrayItems.forEach(item => { + if (item.category.toLowerCase() === category.title.toLowerCase()) { + html += ` +
- # + #
${item.title} @@ -20,7 +22,7 @@ export function renderItems(categories, items) {
- ${item.date} + ${item.date.split('T')[0]}
${item.count} шт. @@ -37,20 +39,10 @@ export function renderItems(categories, items) { class="material-icons">shopping_cart
-
- ` - } else { - html += ` -
-
-
- В этой категории пока что нету товаров -
-
-
- ` - } - }); +
`; + } + }) + }); return html;