This commit is contained in:
Sergey Yarkov 2020-02-13 22:34:17 +03:00
parent 7282c740f4
commit 84338c9566
10 changed files with 91 additions and 27 deletions

View File

@ -89,7 +89,7 @@ hr {
height: 100%;
width: 100%;
top: 0;
z-index: 999;
z-index: 99999999;
left: 0;
bottom: 0;
right: 0;
@ -162,6 +162,14 @@ hr {
min-height: 300px;
}
div#rosterButtons {
display: flex;
}
button#addItem {
margin-left: 5px;
}
/* Cart */
.cart-btn {
@ -503,6 +511,12 @@ footer.main-footer .container {
border-radius: 3px;
}
.items-list__name {
max-width: 525px;
overflow-x: hidden;
overflow-y: hidden;
}
.items-list__name,
.items-list__info {
display: flex;
@ -781,6 +795,7 @@ footer.main-footer {
}
#items .card-content {
min-height: 519px;
overflow-y: scroll;
}
footer.admin-footer{
background-color: #fff;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -2,6 +2,16 @@ include ./assets/head.pug
body.has-fixed-sidenav
include ./assets/templates/header.pug
main.admin-main
#loader.loader-fullscreen.hide
.loader-fullscreen__wrap
.preloader-wrapper.big.active
.spinner-layer.spinner-green-only
.circle-clipper.left
.circle
.gap-patch
.circle
.circle-clipper.right
.circle
.container
.row
.col.s12

View File

@ -2,6 +2,16 @@ include ./assets/head.pug
body.has-fixed-sidenav
include ./assets/templates/header.pug
main.admin-main
#loader.loader-fullscreen.hide
.loader-fullscreen__wrap
.preloader-wrapper.big.active
.spinner-layer.spinner-green-only
.circle-clipper.left
.circle
.gap-patch
.circle
.circle-clipper.right
.circle
.container
.row
.col.s12
@ -45,9 +55,7 @@ body.has-fixed-sidenav
th Сумма
th Информация о покупке
.divider
tbody
#loader.progress
.indeterminate
tbody
ul#pagination.pagination.center(data-page="1")
include ./assets/templates/modals/bill_data.pug
include ./assets/templates/footer.pug

View File

@ -2,6 +2,16 @@ include ./assets/head.pug
body.has-fixed-sidenav
include ./assets/templates/header.pug
main.admin-main
#loader.loader-fullscreen.hide
.loader-fullscreen__wrap
.preloader-wrapper.big.active
.spinner-layer.spinner-green-only
.circle-clipper.left
.circle
.gap-patch
.circle
.circle-clipper.right
.circle
.container
.row
.col.s12
@ -32,8 +42,6 @@ body.has-fixed-sidenav
.divider
tbody
#loader.progress
.indeterminate
ul#pagination.pagination.center(data-page="1")
.divider
.items-add

View File

@ -1,6 +1,6 @@
{
"name": "digital-store",
"version": "1.0.0",
"version": "1.1.1",
"description": "",
"main": "server/server.js",
"scripts": {

View File

@ -57,6 +57,15 @@ module.exports = function(server, db) {
}
});
server.get('/api/items/id/:id', async (req, res) => {
try {
const item = await db.collection('items').findOne({_id: ObjectID(req.params.id)})
res.json(item)
} catch {
res.status(500).render('main/404');
}
});
server.get('/api/items/page/:page', async (req, res) => {
try {
const page = parseInt(req.params.page),
@ -77,6 +86,15 @@ module.exports = function(server, db) {
}
});
server.get('/api/items/data/:id', checkAuthenticated, async (req, res) => {
try {
const data = await db.collection('info').findOne({_id: ObjectID(req.params.id)});
res.json(data)
} catch {
res.status(500).render('main/404');
}
})
server.get('/api/buyers', checkAuthenticated, async (req, res) => {
try {
const buyers = await db.collection('buyers').find({}).toArray();
@ -92,7 +110,7 @@ module.exports = function(server, db) {
server.get('/api/buyers/:bill_id', checkAuthenticated, async (req, res) => {
try {
const buyers = await db.collection('buyers').find({bill_id: req.params.bill_id}).toArray();
const buyers = await db.collection('buyers').findOne({bill_id: req.params.bill_id});
res.json(buyers);
} catch {
res.status(500).render('main/404');
@ -161,6 +179,15 @@ module.exports = function(server, db) {
}
});
server.get('/api/category/id/:id', async (req, res) => {
try {
const category = await db.collection('categories').findOne({_id: ObjectID(req.params.id)});
res.json(category)
} catch {
res.status(500).render('main/404');
}
})
server.get('/api/icons', checkAuthenticated, (req, res) => {
try {
const icons = fs.readdirSync('dist/public/img/service-icons');

View File

@ -177,8 +177,7 @@ module.exports = function (server, db) {
});
server.post('/control-panel/categories/delete', checkAuthenticated, (req, res) => {
try {
const data = JSON.parse(req.body.category);
db.collection('categories').deleteOne({"_id": ObjectID(data.id)});
db.collection('categories').deleteOne({"_id": ObjectID(req.body.category)});
res.redirect('/control-panel/categories');
} catch {
res.status(500).render('main/404');
@ -221,15 +220,16 @@ module.exports = function (server, db) {
});
// товары
server.post('/control-panel/items/create', checkAuthenticated, (req, res) => {
server.post('/control-panel/items/create', checkAuthenticated, async (req, res) => {
try {
const category = await db.collection('categories').findOne({_id: ObjectID(req.body.category)})
// документ с информацией товара для отдачи клиенту
const item = {
_id: new ObjectID(),
title: req.body.title,
count: req.body.data.split(',').length,
price: parseFloat(req.body.price),
category: JSON.parse(req.body.category).title,
category: category.title,
description: req.body.description,
date: new Date()
}
@ -257,17 +257,18 @@ module.exports = function (server, db) {
res.render('main/404');
}
});
server.post('/control-panel/items/update', checkAuthenticated, (req, res) => {
server.post('/control-panel/items/update', checkAuthenticated, async (req, res) => {
try {
const category = await db.collection('categories').findOne({_id: ObjectID(req.body.category)})
const data = {
id: req.body.id,
title: req.body.title,
price: parseFloat(req.body.price),
description: req.body.description,
category: JSON.parse(req.body.category),
category,
info: req.body.data.split(',')
}
db.collection('items').updateOne({"_id": ObjectID(data.id)}, {$set: {title: data.title, price: data.price, description: data.description, category: data.category.title}});
db.collection('items').updateOne({"_id": ObjectID(data.id)}, {$set: {title: data.title, price: data.price, description: data.description, category: category.title}});
db.collection('info').updateOne({"_id": ObjectID(data.id)}, {$set: {title: data.title, data: data.info}});
res.redirect('/control-panel/items');
} catch {

View File

@ -23,13 +23,13 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
const storage = multer.diskStorage({
destination: 'dist/public/img/service-icons',
filename: function(req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
cb(null, `${file.fieldname}-${Date.now()}${path.extname(file.originalname)}`);
}
});
// Config
server.use(cors());
server.use(express.static(path.join(__dirname, '../dist/public')));
server.use(express.static(`${__dirname}/../dist/public`));
server.use(multer({storage: storage}).single('img'));
server.use(express.urlencoded({ extended: false }));
server.use(express.json());
@ -39,7 +39,7 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
server.use(passport.session());
server.use(methodOverride('_method'));
server.set('view engine', 'pug');
server.set('views', path.join(__dirname, '../dist/views'));
server.set('views', `${__dirname}/../dist/views`);
// Routes
require('./routes/main')(server, db); // маршруты сайта
@ -60,9 +60,4 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
console.log(error);
});
})
.finally(() => {
const port = process.env.PORT || 3000;
server.listen(port, () => {
console.log('App is running...');
});
});
.finally(server.listen(process.env.PORT || 3000, console.log('App is running...')));