mirror of
https://github.com/sergeyyarkov/digital-store.git
synced 2026-10-11 10:19:15 +03:00
file structure & control-panel refactor routes
This commit is contained in:
parent
3bb00b2318
commit
21359dd458
@ -4,9 +4,7 @@ const passport = require('passport');
|
||||
const initializePassport = require('../passport.config');
|
||||
|
||||
function checkNotAuthenticated(req, res, next) {
|
||||
if (req.isAuthenticated()) {
|
||||
return res.redirect('/control-panel');
|
||||
}
|
||||
if (req.isAuthenticated()) return res.redirect('/control-panel');
|
||||
next();
|
||||
}
|
||||
|
||||
|
||||
147
config/routes/control-panel.js
Normal file
147
config/routes/control-panel.js
Normal file
@ -0,0 +1,147 @@
|
||||
const ObjectID = require('mongodb').ObjectID;
|
||||
const fs = require('fs');
|
||||
|
||||
function checkAuthenticated(req, res, next) {
|
||||
if (req.isAuthenticated()) return next();
|
||||
res.redirect('/admin');
|
||||
}
|
||||
|
||||
module.exports = function(server, db) {
|
||||
server.get('/control-panel', checkAuthenticated, (req, res) => {
|
||||
try {
|
||||
res.render('admin/control-panel', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Панель управления сайтом',
|
||||
host: req.headers.host,
|
||||
pageName: ['Главная', 'main'],
|
||||
});
|
||||
} catch (error) {
|
||||
res.render('main/404');
|
||||
}
|
||||
});
|
||||
server.get('/control-panel/items', checkAuthenticated, (req, res) => {
|
||||
try {
|
||||
res.render('admin/items', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Товары',
|
||||
host: req.headers.host,
|
||||
pageName: ['Товары', 'items'],
|
||||
});
|
||||
} catch (error) {
|
||||
res.render('main/404');
|
||||
}
|
||||
});
|
||||
server.get('/control-panel/categories', checkAuthenticated, async (req, res) => {
|
||||
try {
|
||||
const categories = await db.collection('categories').find({}).toArray();
|
||||
res.render('admin/categories', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Категории',
|
||||
host: req.headers.host,
|
||||
pageName: ['Категории', 'categories'],
|
||||
categoriesCount: categories.length
|
||||
});
|
||||
} catch (error) {
|
||||
res.render('main/404');
|
||||
}
|
||||
});
|
||||
server.get('/control-panel/content', checkAuthenticated, (req, res) => {
|
||||
try {
|
||||
res.render('admin/content', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Контент',
|
||||
host: req.headers.host,
|
||||
pageName: ['Контент', 'content'],
|
||||
});
|
||||
} catch (error) {
|
||||
res.render('main/404');
|
||||
}
|
||||
});
|
||||
server.get('/control-panel/administrators', checkAuthenticated, (req, res) => {
|
||||
try {
|
||||
res.render('admin/administrators', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Администраторы',
|
||||
host: req.headers.host,
|
||||
pageName: ['Администраторы', 'administrators'],
|
||||
});
|
||||
} catch (error) {
|
||||
res.render('main/404');
|
||||
}
|
||||
});
|
||||
server.get('/control-panel/database', checkAuthenticated, (req, res) => {
|
||||
try {
|
||||
res.render('admin/database', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Настройка Базы Данных',
|
||||
host: req.headers.host,
|
||||
pageName: ['База данных', 'database'],
|
||||
});
|
||||
} catch (error) {
|
||||
res.render('main/404');
|
||||
}
|
||||
});
|
||||
|
||||
server.post('/control-panel/categories/create', checkAuthenticated, (req, res) => {
|
||||
try {
|
||||
const data = {
|
||||
title: req.body.title.toLowerCase().trim(),
|
||||
img: req.body.img,
|
||||
type: req.body.type,
|
||||
format: req.body.format
|
||||
}
|
||||
db.collection('categories').insertOne(data);
|
||||
res.redirect('/control-panel/categories');
|
||||
} catch {
|
||||
res.render('main/404');
|
||||
}
|
||||
});
|
||||
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)});
|
||||
res.redirect('/control-panel/categories');
|
||||
} catch (error) {
|
||||
res.render('main/404');
|
||||
}
|
||||
});
|
||||
server.post('/control-panel/categories/update', checkAuthenticated, (req, res) => {
|
||||
try {
|
||||
const data = {
|
||||
id: req.body.id,
|
||||
title: req.body.title.toLowerCase().trim(),
|
||||
originalTitle: req.body.originalTitle.toLowerCase().trim(),
|
||||
img: req.body.img,
|
||||
type: req.body.type,
|
||||
format: req.body.format
|
||||
}
|
||||
db.collection('categories').updateOne({"_id": ObjectID(data.id)}, {$set: {title: data.title, img: data.img, type: data.type, format: data.format}});
|
||||
db.collection('items').updateMany({"category": data.originalTitle}, {$set: {category: data.title}});
|
||||
res.redirect('/control-panel/categories');
|
||||
} catch (error) {
|
||||
res.render('main/404');
|
||||
}
|
||||
});
|
||||
server.post('/control-panel/categories/addicon', checkAuthenticated, (req, res) => {
|
||||
try {
|
||||
res.redirect('/control-panel/categories');
|
||||
} catch (error) {
|
||||
res.render('main/404');
|
||||
}
|
||||
});
|
||||
server.post('/control-panel/categories/dellicon', checkAuthenticated, (req, res) => {
|
||||
const path = `./dist/public/img/service-icons/${req.body.img}`
|
||||
try {
|
||||
fs.unlinkSync(path);
|
||||
res.redirect('/control-panel/categories');
|
||||
} catch (error) {
|
||||
res.render('main/404');
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -1,14 +1,6 @@
|
||||
const ObjectID = require('mongodb').ObjectID;
|
||||
const fs = require('fs');
|
||||
|
||||
function checkAuthenticated(req, res, next) {
|
||||
if (req.isAuthenticated()) {
|
||||
return next();
|
||||
}
|
||||
|
||||
res.redirect('/admin');
|
||||
}
|
||||
|
||||
function indexRoute(req, res, dbo) {
|
||||
dbo.collection('categories').find().toArray((err, result) => {
|
||||
const categories = result.map(category => category.title[0].toUpperCase() + category.title.slice(1));
|
||||
@ -169,134 +161,6 @@ function myOrdersRoute(req, res) {
|
||||
});
|
||||
}
|
||||
|
||||
function controlPanelRoute(req, res) {
|
||||
res.render('admin/control-panel', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Панель управления сайтом',
|
||||
host: req.headers.host,
|
||||
pageName: ['Главная', 'main'],
|
||||
});
|
||||
}
|
||||
|
||||
function controlPanelItemsRoute(req, res) {
|
||||
res.render('admin/items', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Товары',
|
||||
host: req.headers.host,
|
||||
pageName: ['Товары', 'items'],
|
||||
});
|
||||
}
|
||||
|
||||
async function controlPanelCategoriesRoute(req, res, db) {
|
||||
const categories = await db.collection('categories').find({}).toArray();
|
||||
res.render('admin/categories', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Категории',
|
||||
host: req.headers.host,
|
||||
pageName: ['Категории', 'categories'],
|
||||
categoriesCount: categories.length
|
||||
});
|
||||
}
|
||||
|
||||
function controlPanelContentRoute(req, res) {
|
||||
res.render('admin/content', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Контент',
|
||||
host: req.headers.host,
|
||||
pageName: ['Контент', 'content'],
|
||||
});
|
||||
}
|
||||
|
||||
function controlPanelAdministratorsRoute(req, res) {
|
||||
res.render('admin/administrators', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Администраторы',
|
||||
host: req.headers.host,
|
||||
pageName: ['Администраторы', 'administrators'],
|
||||
});
|
||||
}
|
||||
|
||||
function controlPanelDatabaseRoute(req, res) {
|
||||
res.render('admin/database', {
|
||||
name: req.user.name,
|
||||
email: req.user.email,
|
||||
title: 'Digital-Store | Настройка Базы Данных',
|
||||
host: req.headers.host,
|
||||
pageName: ['База данных', 'database'],
|
||||
});
|
||||
}
|
||||
|
||||
function controlPanelAddCategory(req, res, db) {
|
||||
try {
|
||||
const data = {
|
||||
title: req.body.title.toLowerCase().trim(),
|
||||
img: req.body.img,
|
||||
type: req.body.type,
|
||||
format: req.body.format
|
||||
}
|
||||
db.collection('categories').insertOne(data);
|
||||
res.redirect('/control-panel/categories');
|
||||
} catch {
|
||||
res.render('main/404');
|
||||
}
|
||||
}
|
||||
|
||||
function controlPanelDellCategory(req, res, db) {
|
||||
try {
|
||||
const data = JSON.parse(req.body.category);
|
||||
db.collection('categories').deleteOne({"_id": ObjectID(data.id)});
|
||||
res.redirect('/control-panel/categories');
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
res.render('main/404');
|
||||
}
|
||||
}
|
||||
|
||||
function controlPanelUpdCategory(req, res, db) {
|
||||
try {
|
||||
const data = {
|
||||
id: req.body.id,
|
||||
title: req.body.title.toLowerCase().trim(),
|
||||
originalTitle: req.body.originalTitle.toLowerCase().trim(),
|
||||
img: req.body.img,
|
||||
type: req.body.type,
|
||||
format: req.body.format
|
||||
}
|
||||
db.collection('categories').updateOne({"_id": ObjectID(data.id)}, {$set: {title: data.title, img: data.img, type: data.type, format: data.format}});
|
||||
db.collection('items').updateMany({"category": data.originalTitle}, {$set: {category: data.title}});
|
||||
res.redirect('/control-panel/categories');
|
||||
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
res.render('main/404');
|
||||
}
|
||||
}
|
||||
|
||||
function controlPanelAddIcon(req, res, db) {
|
||||
try {
|
||||
res.redirect('/control-panel/categories');
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
res.render('main/404');
|
||||
}
|
||||
}
|
||||
|
||||
function controlPanelDellIcon(req, res, db) {
|
||||
const path = `./dist/public/img/service-icons/${req.body.img}`
|
||||
try {
|
||||
fs.unlinkSync(path);
|
||||
res.redirect('/control-panel/categories');
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
res.render('main/404');
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = function (server, db) {
|
||||
server.get('/', (req, res) => indexRoute(req, res, db));
|
||||
server.get('/api', (req, res) => getItemsRoute(req, res, db));
|
||||
@ -305,16 +169,4 @@ module.exports = function (server, db) {
|
||||
server.get('/comments', (req, res) => commentsRoute(req, res, db));
|
||||
server.get('/my-orders', (req, res) => myOrdersRoute(req, res, db));
|
||||
server.get('/product/:id', (req, res) => onePageItemRoute(req, res, db));
|
||||
server.get('/control-panel', checkAuthenticated, (req, res) => controlPanelRoute(req, res));
|
||||
server.get('/control-panel/items', checkAuthenticated, (req, res) => controlPanelItemsRoute(req, res));
|
||||
server.get('/control-panel/categories', checkAuthenticated, (req, res) => controlPanelCategoriesRoute(req, res, db));
|
||||
server.get('/control-panel/content', checkAuthenticated, (req, res) => controlPanelContentRoute(req, res));
|
||||
server.get('/control-panel/administrators', checkAuthenticated, (req, res) => controlPanelAdministratorsRoute(req, res));
|
||||
server.get('/control-panel/database', checkAuthenticated, (req, res) => controlPanelDatabaseRoute(req, res));
|
||||
|
||||
server.post('/control-panel/categories/create', checkAuthenticated, (req, res) => controlPanelAddCategory(req, res, db));
|
||||
server.post('/control-panel/categories/delete', checkAuthenticated, (req, res) => controlPanelDellCategory(req, res, db));
|
||||
server.post('/control-panel/categories/update', checkAuthenticated, (req, res) => controlPanelUpdCategory(req, res, db));
|
||||
server.post('/control-panel/categories/addicon', checkAuthenticated, (req, res) => controlPanelAddIcon(req, res, db));
|
||||
server.post('/control-panel/categories/dellicon', checkAuthenticated, (req, res) => controlPanelDellIcon(req, res, db));
|
||||
}
|
||||
@ -18,12 +18,13 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
|
||||
if (err) return console.log(err)
|
||||
const db = client.db(db_config.name);
|
||||
|
||||
// Как сохраняем иконки и куда
|
||||
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));
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
// Config
|
||||
server.use(cors())
|
||||
@ -31,21 +32,17 @@ MongoClient.connect(db_config.url, {useNewUrlParser: true, useUnifiedTopology: t
|
||||
server.use(multer({storage: storage}).single('img'));
|
||||
server.use(express.urlencoded({ extended: false }));
|
||||
server.use(flash());
|
||||
server.use(session({
|
||||
secret: process.env.SESSION_SECRET,
|
||||
resave: false,
|
||||
saveUninitialized: false
|
||||
}));
|
||||
server.use(session({secret: process.env.SESSION_SECRET,resave: false,saveUninitialized: false}));
|
||||
server.use(passport.initialize());
|
||||
server.use(passport.session());
|
||||
server.use(methodOverride('_method'));
|
||||
|
||||
server.set('view engine', 'pug');
|
||||
server.set('views', path.join(__dirname, '../dist/views'));
|
||||
|
||||
// Routes
|
||||
require('./routes/routes')(server, db);
|
||||
require('./routes/admin')(server, db);
|
||||
require('./routes/main')(server, db); // маршруты сайта
|
||||
require('./routes/admin')(server, db); // маршрут с формой авторизации админа
|
||||
require('./routes/control-panel')(server, db); // маршруты с панелью управления
|
||||
|
||||
// 404 Redirect
|
||||
server.use((req, res) => res.status(404).render('main/404'));
|
||||
|
||||
74
package-lock.json
generated
74
package-lock.json
generated
@ -2297,11 +2297,15 @@
|
||||
"integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=",
|
||||
"dev": true
|
||||
},
|
||||
"date-format": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/date-format/-/date-format-3.0.0.tgz",
|
||||
"integrity": "sha512-eyTcpKOcamdhWJXj56DpQMo1ylSQpcGtGKXcU0Tb97+K56/CF5amAqqqNj0+KvA0iw2ynxtHWFsPDSClCxe48w=="
|
||||
},
|
||||
"debug": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
|
||||
"integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"ms": "^2.1.1"
|
||||
}
|
||||
@ -3105,6 +3109,11 @@
|
||||
"resolve-dir": "^1.0.1"
|
||||
}
|
||||
},
|
||||
"flatted": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz",
|
||||
"integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg=="
|
||||
},
|
||||
"flush-write-stream": {
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
|
||||
@ -3173,6 +3182,16 @@
|
||||
"readable-stream": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"fs-extra": {
|
||||
"version": "8.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
|
||||
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.2.0",
|
||||
"jsonfile": "^4.0.0",
|
||||
"universalify": "^0.1.0"
|
||||
}
|
||||
},
|
||||
"fs-readdir-recursive": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz",
|
||||
@ -3850,8 +3869,7 @@
|
||||
"graceful-fs": {
|
||||
"version": "4.2.3",
|
||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz",
|
||||
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==",
|
||||
"dev": true
|
||||
"integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ=="
|
||||
},
|
||||
"handle-thing": {
|
||||
"version": "2.0.0",
|
||||
@ -4487,6 +4505,14 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"jsonfile": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
|
||||
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.6"
|
||||
}
|
||||
},
|
||||
"jstransformer": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jstransformer/-/jstransformer-1.0.0.tgz",
|
||||
@ -4554,6 +4580,18 @@
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
|
||||
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
|
||||
},
|
||||
"log4js": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/log4js/-/log4js-6.1.0.tgz",
|
||||
"integrity": "sha512-fSCHMYsMJbHwfNTuMlopVVcfkKwIRLh5mpNZGB2oBbnSmr3yUTo4tL4xGBA0/q29xowlu96eTXGghJFNhPXMnA==",
|
||||
"requires": {
|
||||
"date-format": "^3.0.0",
|
||||
"debug": "^4.1.1",
|
||||
"flatted": "^2.0.1",
|
||||
"rfdc": "^1.1.4",
|
||||
"streamroller": "^2.2.3"
|
||||
}
|
||||
},
|
||||
"loglevel": {
|
||||
"version": "1.6.6",
|
||||
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.6.tgz",
|
||||
@ -4872,8 +4910,7 @@
|
||||
"ms": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
|
||||
"dev": true
|
||||
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
|
||||
},
|
||||
"multer": {
|
||||
"version": "1.4.2",
|
||||
@ -5914,6 +5951,11 @@
|
||||
"integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
|
||||
"dev": true
|
||||
},
|
||||
"rfdc": {
|
||||
"version": "1.1.4",
|
||||
"resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.4.tgz",
|
||||
"integrity": "sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug=="
|
||||
},
|
||||
"right-align": {
|
||||
"version": "0.1.3",
|
||||
"resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz",
|
||||
@ -6546,6 +6588,23 @@
|
||||
"integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==",
|
||||
"dev": true
|
||||
},
|
||||
"streamroller": {
|
||||
"version": "2.2.3",
|
||||
"resolved": "https://registry.npmjs.org/streamroller/-/streamroller-2.2.3.tgz",
|
||||
"integrity": "sha512-AegmvQsscTRhHVO46PhCDerjIpxi7E+d2GxgUDu+nzw/HuLnUdxHWr6WQ+mVn/4iJgMKKFFdiUwFcFRDvcjCtw==",
|
||||
"requires": {
|
||||
"date-format": "^2.1.0",
|
||||
"debug": "^4.1.1",
|
||||
"fs-extra": "^8.1.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"date-format": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/date-format/-/date-format-2.1.0.tgz",
|
||||
"integrity": "sha512-bYQuGLeFxhkxNOF3rcMtiZxvCBAquGzZm6oWA1oZ0g2THUzivaRhv8uOhdr19LmoobSOLoIAxeUK2RdbM8IFTA=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"streamsearch": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz",
|
||||
@ -6891,6 +6950,11 @@
|
||||
"imurmurhash": "^0.1.4"
|
||||
}
|
||||
},
|
||||
"universalify": {
|
||||
"version": "0.1.2",
|
||||
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
|
||||
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
|
||||
},
|
||||
"unpipe": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
|
||||
|
||||
@ -26,6 +26,7 @@
|
||||
"express": "^4.17.1",
|
||||
"express-flash": "0.0.2",
|
||||
"express-session": "^1.17.0",
|
||||
"log4js": "^6.1.0",
|
||||
"method-override": "^3.0.0",
|
||||
"mongodb": "^3.3.4",
|
||||
"multer": "^1.4.2",
|
||||
|
||||
@ -19,7 +19,6 @@ export class CategoriesComponent extends Component {
|
||||
this.$dellIconFrom.addEventListener('submit', this.dellIcon.bind(this));
|
||||
this.$addForm.addEventListener('submit', this.addCategory.bind(this));
|
||||
this.$deleteForm.addEventListener('submit', this.deleteCategory.bind(this));
|
||||
this.$editSelect.addEventListener('change', this.insertData);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user