zet-lib 3.2.3 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Form.js +8 -2
- package/lib/Mail.js +4 -3
- package/lib/Model.js +13 -7
- package/lib/generatorApp.js +19 -19
- package/lib/generatorModel.js +34 -17
- package/lib/io.js +1 -13
- package/lib/zAppRouter.js +16 -16
- package/lib/zGeneratorRouter.js +40 -40
- package/lib/zMenuRouter.js +2 -1
- package/lib/zPage.js +14 -13
- package/lib/zRoute.js +69 -59
- package/lib/zViewGenerator.js +22 -21
- package/package.json +1 -1
package/lib/zRoute.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* service for routes
|
|
4
4
|
*/
|
|
5
5
|
require("dotenv").config();
|
|
6
|
+
const path = require("path");
|
|
6
7
|
const excelToJson = require("convert-excel-to-json");
|
|
7
8
|
const qs = require("qs");
|
|
8
9
|
//for generate PDF
|
|
@@ -34,11 +35,11 @@ zRoute.tableHasNoCompanyId = ["zcompany", "zrole", "zgrid"];
|
|
|
34
35
|
//get all models
|
|
35
36
|
zRoute.MYMODELS = () => {
|
|
36
37
|
let obj = {};
|
|
37
|
-
const dir =
|
|
38
|
+
const dir = path.join(dirRoot, "models");
|
|
38
39
|
let models = Util.getAllFiles(dir);
|
|
39
40
|
for (const item of models) {
|
|
40
41
|
let name = item.replace(".js", "");
|
|
41
|
-
obj[name] = require(
|
|
42
|
+
obj[name] = require(path.join(dir, name));
|
|
42
43
|
}
|
|
43
44
|
return obj;
|
|
44
45
|
};
|
|
@@ -46,7 +47,7 @@ zRoute.MYMODELS = () => {
|
|
|
46
47
|
//get all routes
|
|
47
48
|
zRoute.ROUTES = () => {
|
|
48
49
|
let arr = [];
|
|
49
|
-
const dir =
|
|
50
|
+
const dir = path.join(dirRoot, "routes");
|
|
50
51
|
let routes = Util.getAllFiles(dir);
|
|
51
52
|
let nots = ["index", "zindex", "auth"];
|
|
52
53
|
for (const item of routes) {
|
|
@@ -66,7 +67,7 @@ zRoute.renderHTML = (datas) => {
|
|
|
66
67
|
if (myCache.has(renderBody)) {
|
|
67
68
|
bodyHTML = myCache.get(renderBody);
|
|
68
69
|
} else {
|
|
69
|
-
bodyHTML = Util.readFile(
|
|
70
|
+
bodyHTML = Util.readFile(path.join(dirRoot, "views", datas.renderBody));
|
|
70
71
|
myCache.set(renderBody, bodyHTML);
|
|
71
72
|
}
|
|
72
73
|
delete datas.renderBody;
|
|
@@ -76,7 +77,7 @@ zRoute.renderHTML = (datas) => {
|
|
|
76
77
|
if (myCache.has(renderEnd)) {
|
|
77
78
|
endHTML = myCache.get(renderEnd);
|
|
78
79
|
} else {
|
|
79
|
-
endHTML = Util.readFile(
|
|
80
|
+
endHTML = Util.readFile(path.join(dirRoot, "views", datas.renderEnd));
|
|
80
81
|
myCache.set(renderEnd, endHTML);
|
|
81
82
|
}
|
|
82
83
|
delete datas.renderEnd;
|
|
@@ -120,7 +121,7 @@ zRoute.post = (req, res, MYMODEL, routeName, body) => {
|
|
|
120
121
|
let post = qs.parse(body);
|
|
121
122
|
let isEmptyFiles = Util.isEmptyObject(req.files);
|
|
122
123
|
let time = new Date().getTime();
|
|
123
|
-
let path_tmp = dirRoot
|
|
124
|
+
let path_tmp = path.join(dirRoot, "public", "uploads", routeName);
|
|
124
125
|
let hasFile = false;
|
|
125
126
|
let files;
|
|
126
127
|
let checkboxes = [];
|
|
@@ -137,11 +138,11 @@ zRoute.post = (req, res, MYMODEL, routeName, body) => {
|
|
|
137
138
|
if (Array.isArray(fileRoute[key])) {
|
|
138
139
|
hasFile = true;
|
|
139
140
|
//add folder again
|
|
140
|
-
fs.ensureDir(path_tmp
|
|
141
|
+
fs.ensureDir(path.join(path_tmp, key), (err) => {
|
|
141
142
|
//console.log('ensureDir',err); // => null
|
|
142
143
|
});
|
|
143
144
|
} else {
|
|
144
|
-
fileRoute[key].mv(path_tmp
|
|
145
|
+
fileRoute[key].mv(path.join(path_tmp, filename), function (err) {
|
|
145
146
|
if (err) {
|
|
146
147
|
//console.log('fileempty move',err); // => null
|
|
147
148
|
return res.status(500).send(err);
|
|
@@ -259,7 +260,7 @@ zRoute.post = (req, res, MYMODEL, routeName, body) => {
|
|
|
259
260
|
req.files[fileImageName].name;
|
|
260
261
|
item[k] = kname;
|
|
261
262
|
req.files[fileImageName].mv(
|
|
262
|
-
path_tmp
|
|
263
|
+
path.join(path_tmp, key, kname),
|
|
263
264
|
function (err) {
|
|
264
265
|
if (err) {
|
|
265
266
|
return res.status(500).send(err);
|
|
@@ -1730,7 +1731,7 @@ zRoute.excelQuery = async (req, res, MYMODEL, paramsObject = {}) => {
|
|
|
1730
1731
|
}
|
|
1731
1732
|
}
|
|
1732
1733
|
//check directory for import not export
|
|
1733
|
-
const dir =
|
|
1734
|
+
const dir = path.join(dirRoot, "public", "excel", "tmp");
|
|
1734
1735
|
if (!fs.existsSync(dir)) {
|
|
1735
1736
|
fs.mkdirSync(dir);
|
|
1736
1737
|
}
|
|
@@ -2372,7 +2373,7 @@ zRoute.generatePDF = async (file, layout = "pdf_bootstrap", options = {}) => {
|
|
|
2372
2373
|
puppeterOptions.defaultViewport = { width: 1920, height: 1080 };
|
|
2373
2374
|
const browser = await puppeteer.launch(puppeterOptions);
|
|
2374
2375
|
const page = await browser.newPage();
|
|
2375
|
-
let mylayout =
|
|
2376
|
+
let mylayout = path.join(dirRoot, "views", "layouts", layout + ".ejs");
|
|
2376
2377
|
if (file.content) {
|
|
2377
2378
|
const html = await ejs.renderFile(
|
|
2378
2379
|
mylayout,
|
|
@@ -2390,7 +2391,7 @@ zRoute.generatePDF = async (file, layout = "pdf_bootstrap", options = {}) => {
|
|
|
2390
2391
|
});
|
|
2391
2392
|
}
|
|
2392
2393
|
let fileName = new Date().getTime() + ".pdf";
|
|
2393
|
-
const filePath =
|
|
2394
|
+
const filePath = path.join(dirRoot, "public", "_pdf", fileName);
|
|
2394
2395
|
const myoptions = {
|
|
2395
2396
|
path: filePath,
|
|
2396
2397
|
format: "A4",
|
|
@@ -3183,7 +3184,7 @@ zRoute.forms = (
|
|
|
3183
3184
|
dropfiles = [obj.value];
|
|
3184
3185
|
}
|
|
3185
3186
|
dropfiles.map((item) => {
|
|
3186
|
-
let filename =
|
|
3187
|
+
let filename = path.join(dirRoot, "public", "uploads", MYMODEL.table, key, item);
|
|
3187
3188
|
var fileSizeInBytes = 12345;
|
|
3188
3189
|
if (Util.fileExist(filename)) {
|
|
3189
3190
|
var stats = fs.statSync(filename);
|
|
@@ -3215,7 +3216,7 @@ zRoute.forms = (
|
|
|
3215
3216
|
dropfiles = [obj.value];
|
|
3216
3217
|
}
|
|
3217
3218
|
dropfiles.map((item) => {
|
|
3218
|
-
let filename = item;
|
|
3219
|
+
let filename = item; //path.join(dirRoot, "public", "uploads", MYMODEL.table, key, item);
|
|
3219
3220
|
var fileSizeInBytes = 12345;
|
|
3220
3221
|
if (Util.fileExist(filename)) {
|
|
3221
3222
|
var stats = fs.statSync(filename);
|
|
@@ -4058,11 +4059,11 @@ zRoute.moduleLib = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
|
|
|
4058
4059
|
//check a file in directory
|
|
4059
4060
|
//make a directory
|
|
4060
4061
|
let table = MYMODEL.table;
|
|
4061
|
-
let path_script =
|
|
4062
|
+
let path_script = path.join(dirRoot, "public", "runtime", "script", table);
|
|
4062
4063
|
Util.dirExist(path_script, true);
|
|
4063
|
-
let path_head =
|
|
4064
|
+
let path_head = path.join(dirRoot, "public", "runtime", "head", table);
|
|
4064
4065
|
Util.dirExist(path_head, true);
|
|
4065
|
-
let path_end =
|
|
4066
|
+
let path_end = path.join(dirRoot, "public", "runtime", "end", table);
|
|
4066
4067
|
Util.dirExist(path_end, true);
|
|
4067
4068
|
let files = Util.getAllFiles(path_script);
|
|
4068
4069
|
let head = res.locals.moduleHead;
|
|
@@ -4071,10 +4072,10 @@ zRoute.moduleLib = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
|
|
|
4071
4072
|
let head_files = Util.getAllFiles(path_head);
|
|
4072
4073
|
let end_files = Util.getAllFiles(path_end);
|
|
4073
4074
|
if (head_files.length) {
|
|
4074
|
-
head += Util.readFile(
|
|
4075
|
+
head += Util.readFile(path.join(path_head, "head.txt"));
|
|
4075
4076
|
}
|
|
4076
4077
|
if (end_files.length) {
|
|
4077
|
-
end += Util.readFile(
|
|
4078
|
+
end += Util.readFile(path.join(path_end, "end.txt"));
|
|
4078
4079
|
}
|
|
4079
4080
|
end += `<script src="/runtime/script/${table}/${files[0]}"></script>`;
|
|
4080
4081
|
} else {
|
|
@@ -4083,9 +4084,9 @@ zRoute.moduleLib = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
|
|
|
4083
4084
|
Util.deleteAllFiles(path_head);
|
|
4084
4085
|
Util.deleteAllFiles(path_end);
|
|
4085
4086
|
//minify js
|
|
4086
|
-
Util.writeFile(`${
|
|
4087
|
-
Util.writeFile(
|
|
4088
|
-
Util.writeFile(
|
|
4087
|
+
Util.writeFile(path.join(path_script, `${time}.js`), uglifyJS.minify(jsObj.script));
|
|
4088
|
+
Util.writeFile(path.join(path_head, "head.txt"), jsObj.head);
|
|
4089
|
+
Util.writeFile(path.join(path_end, "end.txt"), jsObj.end);
|
|
4089
4090
|
end += `<script src="/runtime/script/${table}/${time}.js"></script>`;
|
|
4090
4091
|
if (jsObj.head) {
|
|
4091
4092
|
head += jsObj.head;
|
|
@@ -4104,7 +4105,7 @@ zRoute.moduleLib = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
|
|
|
4104
4105
|
let scriptTemp = "";
|
|
4105
4106
|
for (let keys in MYMODEL.widgets) {
|
|
4106
4107
|
if (MYMODEL.widgets[keys].name == "table") {
|
|
4107
|
-
let MODEL_TABLE = require(
|
|
4108
|
+
let MODEL_TABLE = require(path.join(dirRoot, "models", MYMODEL.widgets[keys].table));
|
|
4108
4109
|
for (let key in MODEL_TABLE.widgets) {
|
|
4109
4110
|
if (MODEL_TABLE.widgets[key].name == "dropdown_multi") {
|
|
4110
4111
|
let relObject = relations[keys + "Row"][key + "Object"];
|
|
@@ -4172,6 +4173,7 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
|
|
|
4172
4173
|
let lexicals = [];
|
|
4173
4174
|
let mapKey = "";
|
|
4174
4175
|
let hasAttributes = [];
|
|
4176
|
+
let onChanges = [];
|
|
4175
4177
|
let joinsFields = [];
|
|
4176
4178
|
let selectize = [];
|
|
4177
4179
|
let moneys = [];
|
|
@@ -4261,9 +4263,13 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
|
|
|
4261
4263
|
}
|
|
4262
4264
|
}
|
|
4263
4265
|
//relation_all_attributes
|
|
4266
|
+
//has attributes will be deleted
|
|
4264
4267
|
if (widgets[key].isAttributes) {
|
|
4265
4268
|
hasAttributes.push(key);
|
|
4266
4269
|
}
|
|
4270
|
+
if (widgets[key].onChange) {
|
|
4271
|
+
onChanges.push(key);
|
|
4272
|
+
}
|
|
4267
4273
|
//add search on select
|
|
4268
4274
|
if (widgets[key].isSearch) {
|
|
4269
4275
|
selectize.push(key);
|
|
@@ -4427,15 +4433,6 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
|
|
|
4427
4433
|
endObj.tinymce = tinymceObj.end;
|
|
4428
4434
|
}
|
|
4429
4435
|
|
|
4430
|
-
if (hasLexical) {
|
|
4431
|
-
moduleLib.lexical(req, res);
|
|
4432
|
-
lexicals.forEach(function (lexical) {
|
|
4433
|
-
scriptForm += `document.addEventListener("DOMContentLoaded", () => {
|
|
4434
|
-
window.buildLexicalEditor("${lexical}");
|
|
4435
|
-
});`;
|
|
4436
|
-
});
|
|
4437
|
-
}
|
|
4438
|
-
|
|
4439
4436
|
if (hasChain) {
|
|
4440
4437
|
for (let key in chainsObj) {
|
|
4441
4438
|
if (chainsObj[key].length > 0) {
|
|
@@ -4739,7 +4736,7 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = "", data = {}) => {
|
|
|
4739
4736
|
case "table":
|
|
4740
4737
|
let MODEL_TABLE =
|
|
4741
4738
|
MYMODELS[MYMODEL.widgets[keys].table] ||
|
|
4742
|
-
require(
|
|
4739
|
+
require(path.join(dirRoot, "models", MYMODEL.widgets[keys].table));
|
|
4743
4740
|
//let MODEL_TABLE_RELATIONS = await zRoute.relations(req, res, MODEL_TABLE.table);
|
|
4744
4741
|
//relations[key + "TABLE"]
|
|
4745
4742
|
let RELATIONS_MODEL_TABLE =
|
|
@@ -4882,13 +4879,6 @@ $("#body-${keys}>tr").each(function (index, tr) {
|
|
|
4882
4879
|
}
|
|
4883
4880
|
`;
|
|
4884
4881
|
|
|
4885
|
-
/* scriptForm += ` $(function () {
|
|
4886
|
-
var ${keys} = $("#body-${keys}").data("value") ? $("#body-${keys}").data("value") : [];
|
|
4887
|
-
${keys}.forEach(function (myobj, index) {
|
|
4888
|
-
build${keys}form(index, myobj);
|
|
4889
|
-
});
|
|
4890
|
-
});${Util.newLine}`*/
|
|
4891
|
-
|
|
4892
4882
|
break;
|
|
4893
4883
|
|
|
4894
4884
|
case "ide_editor":
|
|
@@ -4940,6 +4930,25 @@ ${keys}.forEach(function (myobj, index) {
|
|
|
4940
4930
|
`;
|
|
4941
4931
|
});
|
|
4942
4932
|
}
|
|
4933
|
+
if (onChanges) {
|
|
4934
|
+
scriptForm += `
|
|
4935
|
+
$(function(){`
|
|
4936
|
+
onChanges.forEach(function (item) {
|
|
4937
|
+
let tableItem = MYMODEL.widgets[item].table;
|
|
4938
|
+
let dirContent = path.join(dirRoot, "public", "runtime", "onchange", MYMODEL.table, item + ".txt");
|
|
4939
|
+
let contentAjax = Util.readFile(dirContent);
|
|
4940
|
+
scriptForm += `
|
|
4941
|
+
$("#${item}").on("change", function() {
|
|
4942
|
+
ajaxPost('/${MYMODEL.table}/get_attributes',{id:$('#${item}').val(),table:'${tableItem}'},function(data){
|
|
4943
|
+
${contentAjax}
|
|
4944
|
+
});
|
|
4945
|
+
})
|
|
4946
|
+
`;
|
|
4947
|
+
});
|
|
4948
|
+
scriptForm += `});
|
|
4949
|
+
${Util.newLine}
|
|
4950
|
+
`
|
|
4951
|
+
}
|
|
4943
4952
|
scriptForm += defaultScript;
|
|
4944
4953
|
|
|
4945
4954
|
let head = "";
|
|
@@ -4989,9 +4998,8 @@ zRoute.insertSQL = async (req, res, table, data) => {
|
|
|
4989
4998
|
for (let key in MYMODEL.widgets) {
|
|
4990
4999
|
if (MYMODEL.widgets[key].name === "dropzone") {
|
|
4991
5000
|
//console.log('has dropzone')
|
|
4992
|
-
let path_src = dirRoot
|
|
4993
|
-
let path_dest =
|
|
4994
|
-
dirRoot + "/public/uploads/" + MYMODEL.routeName + "/" + key + "/";
|
|
5001
|
+
let path_src = path.join(dirRoot, "public", "zdropzone", userId);
|
|
5002
|
+
let path_dest = path.join(dirRoot, "public", "uploads", MYMODEL.routeName, key);
|
|
4995
5003
|
if (!fs.existsSync(path_dest)) {
|
|
4996
5004
|
fs.mkdirSync(path_dest, { recursive: true });
|
|
4997
5005
|
}
|
|
@@ -5002,10 +5010,11 @@ zRoute.insertSQL = async (req, res, table, data) => {
|
|
|
5002
5010
|
if (arr.length > 0) {
|
|
5003
5011
|
let time = new Date().getTime();
|
|
5004
5012
|
arr.map((item) => {
|
|
5005
|
-
|
|
5013
|
+
let srcFile = path.join(path_src, item);
|
|
5014
|
+
if (Util.fileExist(srcFile)) {
|
|
5006
5015
|
let newItem = Util.cleanString(time + item);
|
|
5007
5016
|
newArr.push(newItem);
|
|
5008
|
-
fs.rename(
|
|
5017
|
+
fs.rename(srcFile, path.join(path_dest, newItem));
|
|
5009
5018
|
}
|
|
5010
5019
|
});
|
|
5011
5020
|
data[key] = Util.array_to_jsonb(newArr);
|
|
@@ -5152,9 +5161,8 @@ zRoute.updateSQL = async (req, res, table, data, whereData) => {
|
|
|
5152
5161
|
}
|
|
5153
5162
|
if (MYMODEL.widgets[key].name === "dropzone") {
|
|
5154
5163
|
//console.log('has dropzone')
|
|
5155
|
-
let path_src = dirRoot
|
|
5156
|
-
let path_dest =
|
|
5157
|
-
dirRoot + "/public/uploads/" + MYMODEL.table + "/" + key + "/";
|
|
5164
|
+
let path_src = path.join(dirRoot, "public", "zdropzone", userId);
|
|
5165
|
+
let path_dest = path.join(dirRoot, "public", "uploads", MYMODEL.table, key);
|
|
5158
5166
|
if (!fs.existsSync(path_dest)) {
|
|
5159
5167
|
fs.mkdirSync(path_dest, { recursive: true });
|
|
5160
5168
|
}
|
|
@@ -5164,11 +5172,13 @@ zRoute.updateSQL = async (req, res, table, data, whereData) => {
|
|
|
5164
5172
|
let newArr = [];
|
|
5165
5173
|
let time = new Date().getTime();
|
|
5166
5174
|
arr.map((item) => {
|
|
5167
|
-
|
|
5175
|
+
let destFile = path.join(path_dest, item);
|
|
5176
|
+
if (!Util.fileExist(destFile)) {
|
|
5168
5177
|
let newItem = time + item;
|
|
5169
5178
|
newArr.push(newItem);
|
|
5170
|
-
|
|
5171
|
-
|
|
5179
|
+
let srcFile = path.join(path_src, item);
|
|
5180
|
+
if (Util.fileExist(srcFile)) {
|
|
5181
|
+
fs.rename(srcFile, path.join(path_dest, newItem));
|
|
5172
5182
|
}
|
|
5173
5183
|
} else {
|
|
5174
5184
|
newArr.push(item);
|
|
@@ -5375,16 +5385,16 @@ zRoute.deleteFiles = async (table, result) => {
|
|
|
5375
5385
|
for (let key in widgets) {
|
|
5376
5386
|
if (widgets[key].name == "dropzone") {
|
|
5377
5387
|
if (result[key]) {
|
|
5378
|
-
let dir =
|
|
5388
|
+
let dir = path.join(dirRoot, "public", "uploads", table, key);
|
|
5379
5389
|
result[key].map((item) => {
|
|
5380
|
-
fs.remove(dir
|
|
5390
|
+
fs.remove(path.join(dir, item), () => {});
|
|
5381
5391
|
});
|
|
5382
5392
|
}
|
|
5383
5393
|
}
|
|
5384
5394
|
if (widgets[key].name == "image" || widgets[key].name == "file") {
|
|
5385
5395
|
if (result[key]) {
|
|
5386
|
-
let dir =
|
|
5387
|
-
fs.remove(dir
|
|
5396
|
+
let dir = path.join(dirRoot, "public", "uploads", table);
|
|
5397
|
+
fs.remove(path.join(dir, result[key]), () => {});
|
|
5388
5398
|
}
|
|
5389
5399
|
}
|
|
5390
5400
|
if (widgets[key].name == "dropbox") {
|
|
@@ -5479,7 +5489,7 @@ zRoute.import = async (req, res, MYMODEL) => {
|
|
|
5479
5489
|
}
|
|
5480
5490
|
let mytables = "<table>";
|
|
5481
5491
|
let uniqueName = Util.generateUnique() + ".xlsx";
|
|
5482
|
-
const filename =
|
|
5492
|
+
const filename = path.join(dirRoot, "public", "uploads", "zlogs_upload", uniqueName);
|
|
5483
5493
|
let excelFile = req.files.excel,
|
|
5484
5494
|
labels = MYMODEL.labels,
|
|
5485
5495
|
keys = {};
|
|
@@ -5677,10 +5687,10 @@ zRoute.buildForm = async (req, res) => {
|
|
|
5677
5687
|
let table = req.body.table;
|
|
5678
5688
|
let keys = req.body.keys;
|
|
5679
5689
|
let relations = JSON.parse(req.body.relations) || {};
|
|
5680
|
-
let MYMODEL = MYMODELS[table] || require(
|
|
5690
|
+
let MYMODEL = MYMODELS[table] || require(path.join(dirRoot, "models", table));
|
|
5681
5691
|
let MODEL_TABLE =
|
|
5682
5692
|
MYMODELS[MYMODEL.widgets[keys].table] ||
|
|
5683
|
-
require(
|
|
5693
|
+
require(path.join(dirRoot, "models", MYMODEL.widgets[keys].table));
|
|
5684
5694
|
let MODEL_TABLE_RELATIONS = await zRoute.relations(
|
|
5685
5695
|
req,
|
|
5686
5696
|
res,
|
|
@@ -6179,7 +6189,7 @@ zRoute.makeFunctionsSystem = () => {
|
|
|
6179
6189
|
}
|
|
6180
6190
|
let templateSystem = `const { connection, Util, io, zCache, myCache, zDebug, zDataTable, moduleLib, zFunction, zFn, zMail, zRoute, zRole} = require('zet-lib');
|
|
6181
6191
|
module.exports = (req, res, next) => {`;
|
|
6182
|
-
let fileSystem =
|
|
6192
|
+
let fileSystem = path.join(dirRoot, "components", "zFunctionsSystem.js");
|
|
6183
6193
|
templateSystem += content;
|
|
6184
6194
|
templateSystem += ` next();
|
|
6185
6195
|
};
|
package/lib/zViewGenerator.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const express = require('express');
|
|
2
|
+
const path = require('path');
|
|
2
3
|
const router = express.Router();
|
|
3
4
|
const csrf = require('./csrf');
|
|
4
5
|
const csrfProtection = csrf({cookie: true});
|
|
@@ -73,13 +74,13 @@ router.get('/', csrfProtection, async (req, res) => {
|
|
|
73
74
|
relations: relations,
|
|
74
75
|
routeName: res.locals.routeName
|
|
75
76
|
}
|
|
76
|
-
const bodyView = Util.readFile(require.resolve(__dirname
|
|
77
|
+
const bodyView = Util.readFile(require.resolve(path.join(__dirname, 'views', 'zview.ejs')))
|
|
77
78
|
const bodyHTML = ejs.render(bodyView, renderData)
|
|
78
|
-
const endHTML = ejs.render(Util.readFile(require.resolve(__dirname
|
|
79
|
+
const endHTML = ejs.render(Util.readFile(require.resolve(path.join(__dirname, 'views', 'zviewjs.ejs'))), renderData)
|
|
79
80
|
let dataRender = renderData
|
|
80
81
|
dataRender.bodyHTML = bodyHTML
|
|
81
82
|
dataRender.endHTML = endHTML
|
|
82
|
-
res.render(require.resolve(__dirname
|
|
83
|
+
res.render(require.resolve(path.join(__dirname, 'views', 'view_layout.ejs')), dataRender)
|
|
83
84
|
})
|
|
84
85
|
|
|
85
86
|
router.post('/addview', async (req, res) => {
|
|
@@ -152,19 +153,19 @@ router.post('/load-form', async (req, res) => {
|
|
|
152
153
|
if (result.id) {
|
|
153
154
|
json = Util.jsonSuccess('success')
|
|
154
155
|
if (!result.router) {
|
|
155
|
-
result.router = Util.readFile(require.resolve(__dirname
|
|
156
|
+
result.router = Util.readFile(require.resolve(path.join(__dirname, 'views', 'router.txt')))
|
|
156
157
|
}
|
|
157
158
|
if (!result.index_ejs) {
|
|
158
|
-
result.index_ejs = Util.readFile(require.resolve(__dirname
|
|
159
|
+
result.index_ejs = Util.readFile(require.resolve(path.join(__dirname, 'views', 'index_ejs.txt')))
|
|
159
160
|
}
|
|
160
161
|
if (!result.indexcss_ejs) {
|
|
161
|
-
result.indexcss_ejs = Util.readFile(require.resolve(__dirname
|
|
162
|
+
result.indexcss_ejs = Util.readFile(require.resolve(path.join(__dirname, 'views', 'indexcss_ejs.txt')))
|
|
162
163
|
}
|
|
163
164
|
if (!result.indexjs_ejs) {
|
|
164
|
-
result.indexjs_ejs = Util.readFile(require.resolve(__dirname
|
|
165
|
+
result.indexjs_ejs = Util.readFile(require.resolve(path.join(__dirname, 'views', 'indexjs_ejs.txt')))
|
|
165
166
|
}
|
|
166
167
|
if (!result.view_ejs) {
|
|
167
|
-
result.view_ejs = Util.readFile(require.resolve(__dirname
|
|
168
|
+
result.view_ejs = Util.readFile(require.resolve(path.join(__dirname, 'views', 'view_ejs.txt')))
|
|
168
169
|
}
|
|
169
170
|
if (!result.queries) {
|
|
170
171
|
result.queries = {
|
|
@@ -274,7 +275,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
|
|
|
274
275
|
//await connection.query("DELETE FROM zfields WHERE `table` = ?", [table]);
|
|
275
276
|
await connection.query(`DROP VIEW "${table}";`)
|
|
276
277
|
//delete file
|
|
277
|
-
let modelFile = dirRoot
|
|
278
|
+
let modelFile = path.join(dirRoot, 'models', table + '.js')
|
|
278
279
|
fs.stat(modelFile, function (err, stats) {
|
|
279
280
|
console.log(stats) //here we got all information of file in stats variable
|
|
280
281
|
if (err) {
|
|
@@ -287,7 +288,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
|
|
|
287
288
|
}
|
|
288
289
|
})
|
|
289
290
|
|
|
290
|
-
let routesFile = dirRoot
|
|
291
|
+
let routesFile = path.join(dirRoot, 'routes', table + '.js')
|
|
291
292
|
fs.stat(routesFile, function (err, stats) {
|
|
292
293
|
console.log(stats) //here we got all information of file in stats variable
|
|
293
294
|
if (err) {
|
|
@@ -300,7 +301,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
|
|
|
300
301
|
}
|
|
301
302
|
})
|
|
302
303
|
|
|
303
|
-
let runtimeFile = dirRoot
|
|
304
|
+
let runtimeFile = path.join(dirRoot, 'public', 'runtime', 'script', table)
|
|
304
305
|
fs.rm(
|
|
305
306
|
runtimeFile,
|
|
306
307
|
{
|
|
@@ -314,7 +315,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
|
|
|
314
315
|
}
|
|
315
316
|
}
|
|
316
317
|
)
|
|
317
|
-
let runtimeFileHead = dirRoot
|
|
318
|
+
let runtimeFileHead = path.join(dirRoot, 'public', 'runtime', 'head', table)
|
|
318
319
|
fs.rm(
|
|
319
320
|
runtimeFileHead,
|
|
320
321
|
{
|
|
@@ -328,7 +329,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
|
|
|
328
329
|
}
|
|
329
330
|
}
|
|
330
331
|
)
|
|
331
|
-
let runtimeFileEnd = dirRoot
|
|
332
|
+
let runtimeFileEnd = path.join(dirRoot, 'public', 'runtime', 'end', table)
|
|
332
333
|
fs.rm(
|
|
333
334
|
runtimeFileEnd,
|
|
334
335
|
{
|
|
@@ -348,7 +349,7 @@ router.delete('/delete-table', csrfProtection, async (req, res) => {
|
|
|
348
349
|
where: {route_name: table},
|
|
349
350
|
})
|
|
350
351
|
if (table) {
|
|
351
|
-
const viewsFile = dirRoot
|
|
352
|
+
const viewsFile = path.join(dirRoot, 'views', table)
|
|
352
353
|
fs.rm(
|
|
353
354
|
viewsFile,
|
|
354
355
|
{
|
|
@@ -1046,23 +1047,23 @@ const createAllFiles = async (table) => {
|
|
|
1046
1047
|
})
|
|
1047
1048
|
//create model file
|
|
1048
1049
|
let modelContent = `let MYMODEL = ${Util.newLine} ${JSON.stringify(json,null,2)} ${Util.newLine}module.exports=MYMODEL`
|
|
1049
|
-
fs.writeFileSync(
|
|
1050
|
+
fs.writeFileSync(path.join(dirRoot, 'models', table + '.js'), modelContent)
|
|
1050
1051
|
console.log(`The file model of ${table}.js is saved!`)
|
|
1051
1052
|
//create route file
|
|
1052
|
-
fs.writeFileSync(
|
|
1053
|
+
fs.writeFileSync(path.join(dirRoot, 'routes', table + '.js'), result.router.replace('[[[TABLE_NAME]]]', table))
|
|
1053
1054
|
console.log(`The file model of ${table}.js is saved!`)
|
|
1054
1055
|
//create views file
|
|
1055
|
-
let DIR_VIEW =
|
|
1056
|
+
let DIR_VIEW = path.join(dirRoot, 'views', table)
|
|
1056
1057
|
if (!fs.existsSync(DIR_VIEW)) {
|
|
1057
1058
|
fs.mkdirSync(DIR_VIEW)
|
|
1058
1059
|
}
|
|
1059
|
-
fs.writeFileSync(
|
|
1060
|
+
fs.writeFileSync(path.join(DIR_VIEW, 'index.ejs'), result.index_ejs)
|
|
1060
1061
|
console.log(`The file model of index.ejs is saved!`)
|
|
1061
|
-
fs.writeFileSync(
|
|
1062
|
+
fs.writeFileSync(path.join(DIR_VIEW, 'indexcss.ejs'), result.indexcss_ejs)
|
|
1062
1063
|
console.log(`The file model of indexcss.ejs is saved!`)
|
|
1063
|
-
fs.writeFileSync(
|
|
1064
|
+
fs.writeFileSync(path.join(DIR_VIEW, 'indexjs.ejs'), result.indexjs_ejs)
|
|
1064
1065
|
console.log(`The file model of indexjs.ejs is saved!`)
|
|
1065
|
-
fs.writeFileSync(
|
|
1066
|
+
fs.writeFileSync(path.join(DIR_VIEW, 'view.ejs'), result.view_ejs)
|
|
1066
1067
|
console.log(`The file model of view.ejs is saved!`)
|
|
1067
1068
|
}
|
|
1068
1069
|
|