chanmin0723's picture
Initial obcon SCADA deploy
e4bf523
Raw
History Blame Contribute Delete
6.66 kB
'use strict'
/**
* Copyright (c) 2017~2020, OBCon Inc.
* All rights reserved.
*/
/**
* @file
* @copyright 2017~2020, OBCon Inc.
* @author gye hyun james kim [pnuskgh@gmail.com]
*/
let View = utils.getClass('include', 'view.js');
class GroupsView extends View {
constructor() {
super();
this._name = 'groups';
this._title = '그룹';
this._model = modules.groups.model;
}
_promiseParent(req) {
let myPromise = new Promise(function(resolve, reject) {
let query = { where: { site: req.session.site.id, deleted: false } };
modules.roles.model.table.findAll(query)
.then(function(roles) {
resolve({ roles: roles });
}.bind(this)).catch(reject);
}.bind(this));
return myPromise;
}
list(req, res, next) {
let myPromise = this._promiseParent(req);
myPromise = myPromise.then(function(params) {
return new Promise(function(resolve, reject) {
let theme = this.getTheme('list', req, 'list', 'list.ejs');
theme.javascriptFiles.push('/js/datatables.min.js'); //--- dataTables
theme.cssFiles.push('/css/datatables.min.css'); //--- dataTables
let search = this.getSearchData(req, res, next, 'list');
let query = { where: { site: req.session.site.id, deleted: false } };
query = this.getSearchQuery(search, query, 'list');
this.model.table.findAll(query)
.then(function(results) {
let data = {
search: search,
data: results,
roleEnum: modules.roles.view.toEnum(params.roles)
};
res.render(utils.getTemplateFullPath(theme.serviceInfo.site.id, theme.layout), { theme: theme, baseUrl: req.baseUrl, session: req.session, data: data });
}).catch(reject);
}.bind(this));
}.bind(this));
myPromise = myPromise.catch(function(err) { //--- reject() 함수에서 에러 처리를 위해 호출 한다.
utils.obj.loggerError(err);
}.bind(this));
}
detail(req, res, next) {
let myPromise = this._promiseParent(req);
myPromise = myPromise.then(function(params) {
return new Promise(function(resolve, reject) {
let record = req.query.record;
let query = { where: { site: req.session.site.id, group: record, deleted: false } };
modules.users.model.table.findAll(query)
.then(function(users) {
params.users = users;
resolve(params);
}.bind(this)).catch(reject);
}.bind(this));
}.bind(this));
myPromise = myPromise.then(function(params) {
return new Promise(function(resolve, reject) {
let theme = this.getTheme('detail', req, 'detail', 'detail.ejs');
theme.javascriptFiles.push('/js/datatables.min.js'); //--- dataTables
theme.cssFiles.push('/css/datatables.min.css'); //--- dataTables
let record = req.query.record;
let query = { where: { site: req.session.site.id, id: record, deleted: false } };
this.model.table.findOne(query)
.then(function(results) {
let data = {
item: results,
users: params.users,
roleEnum: modules.roles.view.toEnum(params.roles)
};
res.render(utils.getTemplateFullPath(theme.serviceInfo.site.id, theme.layout), { theme: theme, baseUrl: req.baseUrl, session: req.session, data: data });
}).catch(reject);
}.bind(this));
}.bind(this));
myPromise = myPromise.catch(function(err) { //--- reject() 함수에서 에러 처리를 위해 호출 한다.
utils.obj.loggerError(err);
}.bind(this));
}
createView(req, res, next) {
let myPromise = this._promiseParent(req);
myPromise = myPromise.then(function(params) {
return new Promise(function(resolve, reject) {
let theme = this.getTheme('createView', req, 'create', 'createView.ejs');
let data = {
roleEnum: modules.roles.view.toEnum(params.roles, ['-1', '--선택 않음--'])
};
res.render(utils.getTemplateFullPath(theme.serviceInfo.site.id, theme.layout), { theme: theme, baseUrl: req.baseUrl, session: req.session, data: data });
}.bind(this));
}.bind(this));
myPromise = myPromise.catch(function(err) { //--- reject() 함수에서 에러 처리를 위해 호출 한다.
utils.obj.loggerError(err);
}.bind(this));
}
updateView(req, res, next) {
let myPromise = this._promiseParent(req);
myPromise = myPromise.then(function(params) {
return new Promise(function(resolve, reject) {
let theme = this.getTheme('updateView', req, 'updateView', 'updateView.ejs');
let record = req.query.record;
let query = { where: { site: req.session.site.id, id: record, deleted: false } };
this.model.table.findOne(query)
.then(function(results) {
//--- To-Do : 읽은 데이터가 없는 경우 (results == null), 오류 페이지를 표시 한다.
let data = {
item: results,
roleEnum: modules.roles.view.toEnum(params.roles, ['-1', '--선택 않음--'])
};
res.render(utils.getTemplateFullPath(theme.serviceInfo.site.id, theme.layout), { theme: theme, baseUrl: req.baseUrl, session: req.session, data: data });
}).catch(reject);
}.bind(this));
}.bind(this));
myPromise = myPromise.catch(function(err) { //--- reject() 함수에서 에러 처리를 위해 호출 한다.
utils.obj.loggerError(err);
}.bind(this));
}
}
module.exports = GroupsView;