zet-lib 3.2.4 → 3.3.1
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 +9 -2
- package/lib/connection.js +164 -88
- package/lib/generatorApp.js +19 -19
- package/lib/generatorModel.js +22 -9
- package/lib/io.js +1 -13
- package/lib/zAppRouter.js +16 -15
- package/lib/zGeneratorRouter.js +40 -40
- package/lib/zMenuRouter.js +2 -1
- package/lib/zPage.js +14 -13
- package/lib/zRoute.js +46 -44
- package/lib/zViewGenerator.js +22 -21
- package/package.json +1 -1
package/lib/generatorModel.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Created by sintret dev on 10/1/2021.
|
|
3
3
|
*/
|
|
4
|
+
const path = require("path");
|
|
4
5
|
const configGenerator = require("./config_generator");
|
|
5
6
|
const Model = require("./Model");
|
|
6
7
|
const fs = require("fs-extra");
|
|
@@ -285,6 +286,10 @@ me.prepare = (MYMODEL) => {
|
|
|
285
286
|
widgets[key].inputGroupRight = property.values.inputGroupRight;
|
|
286
287
|
widgets[key].hasInputGroup = true;
|
|
287
288
|
}
|
|
289
|
+
widgets[key].isAttributes = false;
|
|
290
|
+
if (Object.prototype.hasOwnProperty.call(property.values,"isAttributes") && property.values.isAttributes) {
|
|
291
|
+
widgets[key].isAttributes = true;
|
|
292
|
+
}
|
|
288
293
|
widgets[key].onChange = false;
|
|
289
294
|
if (Object.prototype.hasOwnProperty.call(property.values,"onChange") && property.values.onChange.length > 4) {
|
|
290
295
|
widgets[key].onChange = true;
|
|
@@ -393,22 +398,21 @@ me.prepare = (MYMODEL) => {
|
|
|
393
398
|
widgets[key].relation_info = property.values.relation_info ? true : false;
|
|
394
399
|
if(widgets[key].relation_info) {
|
|
395
400
|
//create file info to runtime
|
|
396
|
-
let dirInfo =
|
|
397
|
-
//Util.writeFile(
|
|
401
|
+
let dirInfo = path.join(dirRoot, "public", "runtime", "info", MYMODEL.table);
|
|
402
|
+
//Util.writeFile(path.join(dirRoot, "runtime", "info", MYMODEL.tab))
|
|
398
403
|
if(!fs.existsSync(dirInfo)) {
|
|
399
404
|
fs.mkdirSync(dirInfo, { recursive: true });
|
|
400
405
|
}
|
|
401
|
-
fs.writeFileSync(
|
|
406
|
+
fs.writeFileSync(path.join(dirInfo, key + ".txt"), property.values.relation_info);
|
|
402
407
|
}
|
|
403
|
-
console.log(widgets[key].onChange)
|
|
404
408
|
if(widgets[key].onChange) {
|
|
405
409
|
//create file info to runtime
|
|
406
|
-
let dirInfo =
|
|
407
|
-
//Util.writeFile(
|
|
410
|
+
let dirInfo = path.join(dirRoot, "public", "runtime", "onchange", MYMODEL.table);
|
|
411
|
+
//Util.writeFile(path.join(dirRoot, "runtime", "info", MYMODEL.tab))
|
|
408
412
|
if(!fs.existsSync(dirInfo)) {
|
|
409
413
|
fs.mkdirSync(dirInfo, { recursive: true });
|
|
410
414
|
}
|
|
411
|
-
fs.writeFileSync(
|
|
415
|
+
fs.writeFileSync(path.join(dirInfo, key + ".txt"), property.values.onChange);
|
|
412
416
|
}
|
|
413
417
|
break;
|
|
414
418
|
case "dragdrop":
|
|
@@ -468,7 +472,16 @@ me.prepare = (MYMODEL) => {
|
|
|
468
472
|
: property.values.height;
|
|
469
473
|
break;
|
|
470
474
|
case "html":
|
|
471
|
-
widgets[key].code = property.values.code
|
|
475
|
+
widgets[key].code = property.values.code ? true : false;
|
|
476
|
+
if(widgets[key].code) {
|
|
477
|
+
//create file info to runtime
|
|
478
|
+
let dirInfo = path.join(dirRoot, "public", "runtime", "html", MYMODEL.table);
|
|
479
|
+
//Util.writeFile(path.join(dirRoot, "runtime", "info", MYMODEL.tab))
|
|
480
|
+
if(!fs.existsSync(dirInfo)) {
|
|
481
|
+
fs.mkdirSync(dirInfo, { recursive: true });
|
|
482
|
+
}
|
|
483
|
+
fs.writeFileSync(path.join(dirInfo, key + ".txt"), property.values.code);
|
|
484
|
+
}
|
|
472
485
|
break;
|
|
473
486
|
|
|
474
487
|
case "money":
|
|
@@ -520,7 +533,7 @@ me.create = async (ZFIELDS) => {
|
|
|
520
533
|
const JSON_MODEL = me.prepare(ZFIELDS);
|
|
521
534
|
jsonText += me.build(JSON_MODEL);
|
|
522
535
|
jsonText += `}`;
|
|
523
|
-
const filename =
|
|
536
|
+
const filename = path.join(dirRoot, "models", ZFIELDS.table + ".js");
|
|
524
537
|
fs.writeFile(filename, jsonText, function (err) {
|
|
525
538
|
if (err) {
|
|
526
539
|
return console.log(err.toString());
|
package/lib/io.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
const { Server } = require('socket.io');
|
|
2
|
-
const io = new Server();
|
|
3
|
-
//room = token
|
|
2
|
+
const io = new Server();
|
|
4
3
|
let socketArray = [];
|
|
5
4
|
|
|
6
5
|
io.on('connection', function (socket) {
|
|
@@ -11,26 +10,15 @@ io.on('connection', function (socket) {
|
|
|
11
10
|
socket.handshake.session.user = {
|
|
12
11
|
username: 'OSK'
|
|
13
12
|
};
|
|
14
|
-
//console.log('socket.handshake session data is %j.', socket.handshake.session);
|
|
15
|
-
|
|
16
|
-
// socket.handshake.session.save();
|
|
17
|
-
//emit logged_in for debugging purposes of this example
|
|
18
13
|
socket.emit('logged_in', socket.handshake.session);
|
|
19
14
|
});
|
|
20
15
|
// Unset session data via socket
|
|
21
16
|
socket.on('checksession', function() {
|
|
22
|
-
// console.log('Received checksession message');
|
|
23
|
-
// console.log('socket.handshake session data is %j.', socket.handshake.session);
|
|
24
17
|
socket.emit('checksession', socket.handshake.session);
|
|
25
18
|
});
|
|
26
|
-
// Unset session data via socket
|
|
27
19
|
socket.on('logout', function() {
|
|
28
20
|
console.log('Received logout message');
|
|
29
21
|
delete socket.handshake.session.user;
|
|
30
|
-
// socket.handshake.session.save();
|
|
31
|
-
//emit logged_out for debugging purposes of this example
|
|
32
|
-
//console.log('socket.handshake session data is %j.', socket.handshake.session);
|
|
33
|
-
|
|
34
22
|
socket.emit('logged_out', socket.handshake.session);
|
|
35
23
|
});
|
|
36
24
|
|
package/lib/zAppRouter.js
CHANGED
|
@@ -161,7 +161,7 @@ router.post("/profile-sign", access, async (req, res) => {
|
|
|
161
161
|
},
|
|
162
162
|
});
|
|
163
163
|
fs.writeFile(
|
|
164
|
-
dirRoot
|
|
164
|
+
path.join(dirRoot, "public", "uploads", "zuser", filename),
|
|
165
165
|
base64Image,
|
|
166
166
|
{ encoding: "base64" },
|
|
167
167
|
function (err) {}
|
|
@@ -1337,8 +1337,8 @@ router.post('/get_approval_comments', async(req,res) => {
|
|
|
1337
1337
|
|
|
1338
1338
|
router.get("/zdownload/zgenerator/:table", async (req, res) => {
|
|
1339
1339
|
var table = req.params.table;
|
|
1340
|
-
var
|
|
1341
|
-
res.download(
|
|
1340
|
+
var filePath = path.join(dirRoot, "public", "uploads", "zgenerator", table + ".json");
|
|
1341
|
+
res.download(filePath, function (err) {
|
|
1342
1342
|
if (err) {
|
|
1343
1343
|
//console.log(err);
|
|
1344
1344
|
}
|
|
@@ -1592,12 +1592,12 @@ router.post("/zdropzone", async (req, res) => {
|
|
|
1592
1592
|
try {
|
|
1593
1593
|
let userId = res.locals.userId;
|
|
1594
1594
|
if (userId) {
|
|
1595
|
-
let dir =
|
|
1595
|
+
let dir = path.join(dirRoot, "public", "zdropzone", userId);
|
|
1596
1596
|
if (!fs.existsSync(dir)) {
|
|
1597
1597
|
fs.mkdirSync(dir, { recursive: true });
|
|
1598
1598
|
}
|
|
1599
1599
|
let filename = req.files.file.name;
|
|
1600
|
-
req.files.file.mv(dir
|
|
1600
|
+
req.files.file.mv(path.join(dir, filename), function (err) {
|
|
1601
1601
|
if (err) {
|
|
1602
1602
|
return res.status(500).send(err + "");
|
|
1603
1603
|
}
|
|
@@ -1615,11 +1615,11 @@ router.post("/zdropzone-remove", async (req, res) => {
|
|
|
1615
1615
|
try {
|
|
1616
1616
|
let userId = res.locals.userId;
|
|
1617
1617
|
let cacheName = req.body.cname.replace("ZUSER___ID", userId);
|
|
1618
|
-
let dir =
|
|
1618
|
+
let dir = path.join(dirRoot, "public", "zdropzone", userId);
|
|
1619
1619
|
if (!fs.existsSync(dir)) {
|
|
1620
1620
|
fs.mkdirSync(dir, { recursive: true });
|
|
1621
1621
|
}
|
|
1622
|
-
let filename =
|
|
1622
|
+
let filename = path.join(dirRoot, "public", "zdropzone", userId, req.body.file);
|
|
1623
1623
|
let arr = [];
|
|
1624
1624
|
if (Util.fileExist(filename)) {
|
|
1625
1625
|
await fs.unlink(filename);
|
|
@@ -1639,7 +1639,7 @@ router.post("/zdropzone-remove", async (req, res) => {
|
|
|
1639
1639
|
router.post("/zdropzone-attributes", async (req, res) => {
|
|
1640
1640
|
try {
|
|
1641
1641
|
let userId = res.locals.userId;
|
|
1642
|
-
let dir =
|
|
1642
|
+
let dir = path.join(dirRoot, "public", "zdropzone", userId);
|
|
1643
1643
|
if (!fs.existsSync(dir)) {
|
|
1644
1644
|
fs.mkdirSync(dir, { recursive: true });
|
|
1645
1645
|
}
|
|
@@ -1726,13 +1726,14 @@ router.get("/zdownloads-dropzone/:table/:field/:id", async (req, res) => {
|
|
|
1726
1726
|
id: id,
|
|
1727
1727
|
},
|
|
1728
1728
|
});
|
|
1729
|
-
let dir =
|
|
1729
|
+
let dir = path.join(dirRoot, "public", "uploads", table, field);
|
|
1730
1730
|
let arr = [];
|
|
1731
1731
|
let files = result[field];
|
|
1732
1732
|
for (const file of files) {
|
|
1733
|
-
|
|
1733
|
+
let fullPath = path.join(dir, file);
|
|
1734
|
+
if (Util.fileExist(fullPath)) {
|
|
1734
1735
|
let filename = file.substring(13);
|
|
1735
|
-
arr.push({ path:
|
|
1736
|
+
arr.push({ path: fullPath, name: filename });
|
|
1736
1737
|
//io.to(room).emit('message', `Zip file ${filename}`)
|
|
1737
1738
|
}
|
|
1738
1739
|
}
|
|
@@ -1792,14 +1793,14 @@ router.post("/zcompress-dropzone", async (req, res) => {
|
|
|
1792
1793
|
if (!fs.existsSync(tempDir)) {
|
|
1793
1794
|
fs.mkdirSync(tempDir);
|
|
1794
1795
|
}
|
|
1795
|
-
//let dir =
|
|
1796
|
+
//let dir = path.join(dirRoot, "public", "uploads", table, field);
|
|
1796
1797
|
let arr = [];
|
|
1797
1798
|
let files = result[field];
|
|
1798
1799
|
const count = files.length;
|
|
1799
1800
|
let i = 0;
|
|
1800
1801
|
for (const file of files) {
|
|
1801
1802
|
let filename = file.substring(13);
|
|
1802
|
-
let attributes = Util.fileAttribute(dir
|
|
1803
|
+
let attributes = Util.fileAttribute(path.join(dir, file));
|
|
1803
1804
|
if (attributes.type == "image") {
|
|
1804
1805
|
const filePath = path.join(dir, file);
|
|
1805
1806
|
const tempPath = path.join(tempDir, file);
|
|
@@ -2098,7 +2099,7 @@ router.get("/zdownloads-dropbox/:table/:field/:id", async (req, res) => {
|
|
|
2098
2099
|
id: id,
|
|
2099
2100
|
},
|
|
2100
2101
|
});
|
|
2101
|
-
let dir =
|
|
2102
|
+
let dir = path.join(dirRoot, "public", "uploads", table, field);
|
|
2102
2103
|
let arr = [];
|
|
2103
2104
|
let files = result[field];
|
|
2104
2105
|
const jsZip = new JSZip();
|
|
@@ -2273,7 +2274,7 @@ router.post('/zcall-information_info', async(req,res) => {
|
|
|
2273
2274
|
let data = ''
|
|
2274
2275
|
try {
|
|
2275
2276
|
const {table, elementId, myvalue} = req.body;
|
|
2276
|
-
let content = Util.readFile(
|
|
2277
|
+
let content = Util.readFile(path.join(dirRoot, "public", "runtime", "info", table, elementId + ".txt"))
|
|
2277
2278
|
data = content;
|
|
2278
2279
|
|
|
2279
2280
|
// Fungsi untuk mengekstrak semua field dari template
|
package/lib/zGeneratorRouter.js
CHANGED
|
@@ -47,7 +47,7 @@ const nots = [
|
|
|
47
47
|
//const generatorUrl = "https://generator.cmsqu.com";
|
|
48
48
|
|
|
49
49
|
const bodyView = Util.readFile(
|
|
50
|
-
require.resolve(__dirname
|
|
50
|
+
require.resolve(path.join(__dirname, "views", "generator.ejs"))
|
|
51
51
|
);
|
|
52
52
|
|
|
53
53
|
router.get("/", csrfProtection, async (req, res) => {
|
|
@@ -136,14 +136,14 @@ router.get("/", csrfProtection, async (req, res) => {
|
|
|
136
136
|
|
|
137
137
|
const bodyHTML = ejs.render(bodyView, renderData);
|
|
138
138
|
const endHTML = ejs.render(
|
|
139
|
-
Util.readFile(require.resolve(__dirname
|
|
139
|
+
Util.readFile(require.resolve(path.join(__dirname, "views", "generatorjs.ejs"))),
|
|
140
140
|
renderData
|
|
141
141
|
);
|
|
142
142
|
let dataRender = renderData;
|
|
143
143
|
dataRender.bodyHTML = bodyHTML;
|
|
144
144
|
dataRender.endHTML = endHTML;
|
|
145
145
|
res.render(
|
|
146
|
-
require.resolve(__dirname
|
|
146
|
+
require.resolve(path.join(__dirname, "views", "generator_layout.ejs")),
|
|
147
147
|
dataRender
|
|
148
148
|
);
|
|
149
149
|
});
|
|
@@ -342,7 +342,7 @@ router.post("/save_and_generate", csrfProtection, async (req, res) => {
|
|
|
342
342
|
if (nots.includes(req.body.table)) {
|
|
343
343
|
return res.json(Util.flashError("Table is locked"));
|
|
344
344
|
}
|
|
345
|
-
let dir =
|
|
345
|
+
let dir = path.join(dirRoot, "public", "temp");
|
|
346
346
|
Util.dirExist(dir, true);
|
|
347
347
|
//console.log(JSON.stringify(req.body))
|
|
348
348
|
const json = await generate(req, res);
|
|
@@ -546,7 +546,7 @@ const generate = async (req, res) => {
|
|
|
546
546
|
});
|
|
547
547
|
|
|
548
548
|
fs.writeFileSync(
|
|
549
|
-
|
|
549
|
+
path.join(dirRoot, "models", filesKey.filename),
|
|
550
550
|
filesKey.content
|
|
551
551
|
);
|
|
552
552
|
console.log(`The file model of ${filesKey.filename} is saved!`);
|
|
@@ -603,13 +603,13 @@ const generate = async (req, res) => {
|
|
|
603
603
|
newModel += zRoute.buildFileModel(MYMODEL);
|
|
604
604
|
newModel += `${Util.tab}};`;
|
|
605
605
|
|
|
606
|
-
fs.writeFileSync(
|
|
606
|
+
fs.writeFileSync(path.join(dirRoot, "models", filesKey.filename), newModel);
|
|
607
607
|
}
|
|
608
608
|
//check model if it has select relation in concat
|
|
609
609
|
await scanning(MYMODEL, result);
|
|
610
610
|
}
|
|
611
611
|
//generate views
|
|
612
|
-
let DIR_VIEW =
|
|
612
|
+
let DIR_VIEW = path.join(dirRoot, "views", table);
|
|
613
613
|
if (key == "views") {
|
|
614
614
|
if (!fs.existsSync(DIR_VIEW)) {
|
|
615
615
|
fs.mkdirSync(DIR_VIEW);
|
|
@@ -619,10 +619,10 @@ const generate = async (req, res) => {
|
|
|
619
619
|
for (const q in filesKey) {
|
|
620
620
|
console.log(q);
|
|
621
621
|
if (Util.in_array(q, compilesJS)) {
|
|
622
|
-
fs.writeFileSync(
|
|
622
|
+
fs.writeFileSync(path.join(DIR_VIEW, q), filesKey[q]);
|
|
623
623
|
} else {
|
|
624
624
|
fs.writeFileSync(
|
|
625
|
-
|
|
625
|
+
path.join(DIR_VIEW, q),
|
|
626
626
|
await minify(filesKey[q], {
|
|
627
627
|
minifyJS: true,
|
|
628
628
|
minifyCSS: true,
|
|
@@ -637,7 +637,7 @@ const generate = async (req, res) => {
|
|
|
637
637
|
if (!dummy) {
|
|
638
638
|
if (key == "route") {
|
|
639
639
|
fs.writeFileSync(
|
|
640
|
-
|
|
640
|
+
path.join(dirRoot, "routes", filesKey.filename),
|
|
641
641
|
filesKey.content
|
|
642
642
|
);
|
|
643
643
|
console.log(`The files route of ${filesKey.filename} is saved!`);
|
|
@@ -647,11 +647,11 @@ const generate = async (req, res) => {
|
|
|
647
647
|
|
|
648
648
|
//make a directory
|
|
649
649
|
if (!dummy) {
|
|
650
|
-
let path_script =
|
|
650
|
+
let path_script = path.join(dirRoot, "public", "runtime", "script", table);
|
|
651
651
|
Util.dirExist(path_script, true);
|
|
652
|
-
let path_head =
|
|
652
|
+
let path_head = path.join(dirRoot, "public", "runtime", "head", table);
|
|
653
653
|
Util.dirExist(path_head, true);
|
|
654
|
-
let path_end =
|
|
654
|
+
let path_end = path.join(dirRoot, "public", "runtime", "end", table);
|
|
655
655
|
Util.dirExist(path_end, true);
|
|
656
656
|
//we need to generate javascript code into runtime
|
|
657
657
|
let relations = await zRoute.relations(req, res, MYMODEL.table);
|
|
@@ -667,9 +667,9 @@ const generate = async (req, res) => {
|
|
|
667
667
|
Util.deleteAllFiles(path_script);
|
|
668
668
|
Util.deleteAllFiles(path_head);
|
|
669
669
|
Util.deleteAllFiles(path_end);
|
|
670
|
-
Util.writeFile(`${
|
|
671
|
-
Util.writeFile(
|
|
672
|
-
Util.writeFile(
|
|
670
|
+
Util.writeFile(path.join(path_script, `${time}.js`), script.code);
|
|
671
|
+
Util.writeFile(path.join(path_head, "head.txt"), jsObj.head);
|
|
672
|
+
Util.writeFile(path.join(path_end, "end.txt"), jsObj.end);
|
|
673
673
|
}
|
|
674
674
|
|
|
675
675
|
//restart pm2 module in production
|
|
@@ -784,7 +784,7 @@ const buildJoin = async (MYMODEL, result) => {
|
|
|
784
784
|
if (result.joins && Object.keys(joins).length > 0) {
|
|
785
785
|
let newDataObj = {};
|
|
786
786
|
for (let key in joins) {
|
|
787
|
-
let THEIR_MODEL = require(
|
|
787
|
+
let THEIR_MODEL = require(path.join(dirRoot, "models", key));
|
|
788
788
|
//console.log(THEIR_MODEL)
|
|
789
789
|
let arr = joins[key] || [];
|
|
790
790
|
table_joins.push(key);
|
|
@@ -932,7 +932,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
|
|
|
932
932
|
//await connection.query("DELETE FROM zfields WHERE `table` = ?", [table]);
|
|
933
933
|
await connection.query(`DROP table "${table}";`);
|
|
934
934
|
//delete file
|
|
935
|
-
let modelFile = dirRoot
|
|
935
|
+
let modelFile = path.join(dirRoot, "models", table + ".js");
|
|
936
936
|
fs.stat(modelFile, function (err, stats) {
|
|
937
937
|
console.log(stats); //here we got all information of file in stats variable
|
|
938
938
|
if (err) {
|
|
@@ -945,7 +945,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
|
|
|
945
945
|
}
|
|
946
946
|
});
|
|
947
947
|
|
|
948
|
-
let routesFile = dirRoot
|
|
948
|
+
let routesFile = path.join(dirRoot, "routes", table + ".js");
|
|
949
949
|
fs.stat(routesFile, function (err, stats) {
|
|
950
950
|
console.log(stats); //here we got all information of file in stats variable
|
|
951
951
|
if (err) {
|
|
@@ -958,7 +958,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
|
|
|
958
958
|
}
|
|
959
959
|
});
|
|
960
960
|
|
|
961
|
-
let runtimeFile = dirRoot
|
|
961
|
+
let runtimeFile = path.join(dirRoot, "public", "runtime", "script", table);
|
|
962
962
|
fs.rm(
|
|
963
963
|
runtimeFile,
|
|
964
964
|
{
|
|
@@ -972,7 +972,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
|
|
|
972
972
|
}
|
|
973
973
|
}
|
|
974
974
|
);
|
|
975
|
-
let runtimeFileHead = dirRoot
|
|
975
|
+
let runtimeFileHead = path.join(dirRoot, "public", "runtime", "head", table);
|
|
976
976
|
fs.rm(
|
|
977
977
|
runtimeFileHead,
|
|
978
978
|
{
|
|
@@ -986,7 +986,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
|
|
|
986
986
|
}
|
|
987
987
|
}
|
|
988
988
|
);
|
|
989
|
-
let runtimeFileEnd = dirRoot
|
|
989
|
+
let runtimeFileEnd = path.join(dirRoot, "public", "runtime", "end", table);
|
|
990
990
|
fs.rm(
|
|
991
991
|
runtimeFileEnd,
|
|
992
992
|
{
|
|
@@ -1006,7 +1006,7 @@ router.delete("/delete-table", csrfProtection, async (req, res) => {
|
|
|
1006
1006
|
where: { route_name: table },
|
|
1007
1007
|
});
|
|
1008
1008
|
if (table) {
|
|
1009
|
-
const viewsFile = dirRoot
|
|
1009
|
+
const viewsFile = path.join(dirRoot, "views", table);
|
|
1010
1010
|
fs.rm(
|
|
1011
1011
|
viewsFile,
|
|
1012
1012
|
{
|
|
@@ -1414,12 +1414,12 @@ router.post("/export", async (req, res) => {
|
|
|
1414
1414
|
table: table,
|
|
1415
1415
|
},
|
|
1416
1416
|
});
|
|
1417
|
-
const dir =
|
|
1417
|
+
const dir = path.join(dirRoot, "public", "uploads", "zgenerator");
|
|
1418
1418
|
if (!fs.existsSync(dir)) {
|
|
1419
1419
|
fs.mkdirSync(dir);
|
|
1420
1420
|
}
|
|
1421
1421
|
const text = JSON.stringify(result);
|
|
1422
|
-
fs.writeFileSync(
|
|
1422
|
+
fs.writeFileSync(path.join(dir, table + ".json"), text);
|
|
1423
1423
|
} else {
|
|
1424
1424
|
json = Util.flashError("no table selected");
|
|
1425
1425
|
}
|
|
@@ -1495,7 +1495,7 @@ router.post("/import", async (req, res) => {
|
|
|
1495
1495
|
Scanning relation id to name
|
|
1496
1496
|
*/
|
|
1497
1497
|
const scanning = async (MYMODEL, result) => {
|
|
1498
|
-
//let MYMODEL = require(
|
|
1498
|
+
//let MYMODEL = require(path.join(dirRoot, "models", table));
|
|
1499
1499
|
let table = MYMODEL.table;
|
|
1500
1500
|
const widgets = MYMODEL.widgets;
|
|
1501
1501
|
const not_scanning = ["created_by", "updated_by"];
|
|
@@ -1511,7 +1511,7 @@ const scanning = async (MYMODEL, result) => {
|
|
|
1511
1511
|
if (arr.length) {
|
|
1512
1512
|
let str = Util.replaceAll(arr[0], '"', '')
|
|
1513
1513
|
let mysplits = str.indexOf(',') > -1 ? str.split(',') : [str]
|
|
1514
|
-
let MYMODEL_TABLE = require(
|
|
1514
|
+
let MYMODEL_TABLE = require(path.join(dirRoot, "models", widgets[key].table))
|
|
1515
1515
|
let widgetsRelations = MYMODEL_TABLE.widgets
|
|
1516
1516
|
let relationsKeys = []
|
|
1517
1517
|
let relationsKeysObject = {}
|
|
@@ -1546,7 +1546,7 @@ const scanning = async (MYMODEL, result) => {
|
|
|
1546
1546
|
newModel += zRoute.buildFileModel(MYMODEL);
|
|
1547
1547
|
newModel += `${Util.newLine}`;
|
|
1548
1548
|
newModel += `}`;
|
|
1549
|
-
fs.writeFileSync(
|
|
1549
|
+
fs.writeFileSync(path.join(dirRoot, "models", MYMODEL.table + ".js"), newModel);
|
|
1550
1550
|
}
|
|
1551
1551
|
|
|
1552
1552
|
//check if has join
|
|
@@ -1559,7 +1559,7 @@ const scanning = async (MYMODEL, result) => {
|
|
|
1559
1559
|
newModel += zRoute.buildFileModel(MYMODEL);
|
|
1560
1560
|
newModel += `${Util.newLine}`;
|
|
1561
1561
|
newModel += `}`;
|
|
1562
|
-
fs.writeFileSync(
|
|
1562
|
+
fs.writeFileSync(path.join(dirRoot, "models", MYMODEL.table + ".js"), newModel);
|
|
1563
1563
|
//return MYMODEL;
|
|
1564
1564
|
};
|
|
1565
1565
|
|
|
@@ -1572,11 +1572,11 @@ router.post("/generate-assets", async (req, res) => {
|
|
|
1572
1572
|
for (let key in MYMODELS) {
|
|
1573
1573
|
let MYMODEL = MYMODELS[key];
|
|
1574
1574
|
let table = MYMODEL.table;
|
|
1575
|
-
let path_script =
|
|
1575
|
+
let path_script = path.join(dirRoot, "public", "runtime", "script", table);
|
|
1576
1576
|
Util.dirExist(path_script, true);
|
|
1577
|
-
let path_head =
|
|
1577
|
+
let path_head = path.join(dirRoot, "public", "runtime", "head", table);
|
|
1578
1578
|
Util.dirExist(path_head, true);
|
|
1579
|
-
let path_end =
|
|
1579
|
+
let path_end = path.join(dirRoot, "public", "runtime", "end", table);
|
|
1580
1580
|
Util.dirExist(path_end, true);
|
|
1581
1581
|
//we need to generate javascript code into runtime
|
|
1582
1582
|
let relations = await zRoute.relations(req, res, MYMODEL.table);
|
|
@@ -1590,9 +1590,9 @@ router.post("/generate-assets", async (req, res) => {
|
|
|
1590
1590
|
//minify script
|
|
1591
1591
|
let script = uglifyJS.minify(jsObj.script);
|
|
1592
1592
|
if (script.error) throw script.error;
|
|
1593
|
-
Util.writeFile(`${
|
|
1594
|
-
Util.writeFile(
|
|
1595
|
-
Util.writeFile(
|
|
1593
|
+
Util.writeFile(path.join(path_script, `${time}.js`), script.code);
|
|
1594
|
+
Util.writeFile(path.join(path_head, "head.txt"), jsObj.head);
|
|
1595
|
+
Util.writeFile(path.join(path_end, "end.txt"), jsObj.end);
|
|
1596
1596
|
}
|
|
1597
1597
|
} catch (e) {
|
|
1598
1598
|
notifObj = Util.flashError(e.toString());
|
|
@@ -1613,8 +1613,8 @@ router.post("/minify", async (req, res) => {
|
|
|
1613
1613
|
|
|
1614
1614
|
const viewsMini = async () => {
|
|
1615
1615
|
let notifyObj = Util.jsonSuccess("Success");
|
|
1616
|
-
const viewDir =
|
|
1617
|
-
const layoutsDir =
|
|
1616
|
+
const viewDir = path.join(dirRoot, "views");
|
|
1617
|
+
const layoutsDir = path.join(dirRoot, "views", "layouts");
|
|
1618
1618
|
let item;
|
|
1619
1619
|
try {
|
|
1620
1620
|
let views = Util.getAllFiles(viewDir);
|
|
@@ -1627,11 +1627,11 @@ const viewsMini = async () => {
|
|
|
1627
1627
|
for (const dir of views) {
|
|
1628
1628
|
console.log("dir :", dir);
|
|
1629
1629
|
if (!Util.in_array(dir, notViewDir)) {
|
|
1630
|
-
let files = Util.getAllFiles(
|
|
1630
|
+
let files = Util.getAllFiles(path.join(viewDir, dir));
|
|
1631
1631
|
//console.log(files);
|
|
1632
1632
|
for (item of files) {
|
|
1633
1633
|
if (item.includes(".ejs")) {
|
|
1634
|
-
let filename =
|
|
1634
|
+
let filename = path.join(viewDir, dir, item);
|
|
1635
1635
|
let content = Util.readFile(filename);
|
|
1636
1636
|
let contentChange = await minify(content, options);
|
|
1637
1637
|
fs.writeFileSync(filename, contentChange);
|
|
@@ -1643,7 +1643,7 @@ const viewsMini = async () => {
|
|
|
1643
1643
|
let layouts = Util.getAllFiles(layoutsDir);
|
|
1644
1644
|
for (item of layouts) {
|
|
1645
1645
|
if (item.includes(".ejs")) {
|
|
1646
|
-
let filename =
|
|
1646
|
+
let filename = path.join(layoutsDir, item);
|
|
1647
1647
|
let content = Util.readFile(filename);
|
|
1648
1648
|
let contentChange = await minify(content, options);
|
|
1649
1649
|
fs.writeFileSync(filename, contentChange);
|
package/lib/zMenuRouter.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});
|
|
@@ -19,7 +20,7 @@ if (typeof global.dirRoot === 'undefined') {
|
|
|
19
20
|
icons list for tabler and set to /public/js
|
|
20
21
|
*/
|
|
21
22
|
const iconList = () => {
|
|
22
|
-
const dir =
|
|
23
|
+
const dir = path.join(dirRoot, 'public', 'assets', 'icons');
|
|
23
24
|
const icons = fs.readdirSync(dir);
|
|
24
25
|
return icons;
|
|
25
26
|
};
|
package/lib/zPage.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* For dynamic router
|
|
3
3
|
*/
|
|
4
|
+
const path = require('path');
|
|
4
5
|
const axios = require('axios');
|
|
5
6
|
const fs = require('fs-extra');
|
|
6
7
|
const nodemailer = require('nodemailer');
|
|
@@ -35,7 +36,7 @@ zpage.build = async (req, res) => {
|
|
|
35
36
|
});
|
|
36
37
|
server_code += `module.exports = router;`;
|
|
37
38
|
|
|
38
|
-
fs.writeFileSync(dirRoot
|
|
39
|
+
fs.writeFileSync(path.join(dirRoot, "routes", "zindex.js"), server_code, 'utf-8');
|
|
39
40
|
if (process.env.NODE_ENV === "production") {
|
|
40
41
|
setTimeout(function () {
|
|
41
42
|
pm2.connect(function (err) {
|
|
@@ -65,7 +66,7 @@ const { connection, Util, io, zCache, myCache, zDebug, zDataTable, moduleLib, zF
|
|
|
65
66
|
zpage.createRoute = (obj, token, layoutObj) => {
|
|
66
67
|
const MYMODELS = myCache.get('MYMODELS');
|
|
67
68
|
const MYMODEL = MYMODELS.zpage;
|
|
68
|
-
let DIR = dirRoot
|
|
69
|
+
let DIR = path.join(dirRoot, "views", "zindex");
|
|
69
70
|
let METHOD = MYMODEL.widgets.method.fields;
|
|
70
71
|
let layout = "new-blank.ejs";
|
|
71
72
|
if (obj.layouts == 2) {
|
|
@@ -92,10 +93,10 @@ zpage.createRoute = (obj, token, layoutObj) => {
|
|
|
92
93
|
let render = "";
|
|
93
94
|
let renderData = "";
|
|
94
95
|
if (obj.head) {
|
|
95
|
-
fs.writeFileSync(
|
|
96
|
+
fs.writeFileSync(path.join(DIR, `page${obj.id}-head.ejs`), obj.head, 'utf-8');
|
|
96
97
|
renderData += `renderData.renderHead = "zindex/page${obj.id}-head.ejs"; `
|
|
97
98
|
} else {
|
|
98
|
-
fs.unlink(
|
|
99
|
+
fs.unlink(path.join(DIR, `page${obj.id}-head.ejs`), function (err) {
|
|
99
100
|
if (err) return console.log(err);
|
|
100
101
|
console.log('file deleted successfully');
|
|
101
102
|
});
|
|
@@ -103,26 +104,26 @@ zpage.createRoute = (obj, token, layoutObj) => {
|
|
|
103
104
|
|
|
104
105
|
let isrenderPage = false;
|
|
105
106
|
if (obj.client_code) {
|
|
106
|
-
fs.writeFileSync(
|
|
107
|
+
fs.writeFileSync(path.join(DIR, `page${obj.id}.ejs`), obj.client_code, 'utf-8');
|
|
107
108
|
renderData += `renderData.renderBody = "zindex/page${obj.id}.ejs"; `
|
|
108
109
|
isrenderPage = true;
|
|
109
110
|
} else {
|
|
110
|
-
fs.unlink(
|
|
111
|
+
fs.unlink(path.join(DIR, `page${obj.id}.ejs`), function (err) {
|
|
111
112
|
if (err) return console.log(err);
|
|
112
113
|
console.log('file deleted successfully');
|
|
113
114
|
});
|
|
114
115
|
}
|
|
115
116
|
//optional
|
|
116
117
|
if(!isrenderPage && obj.method == 1) {
|
|
117
|
-
fs.writeFileSync(
|
|
118
|
+
fs.writeFileSync(path.join(DIR, `page${obj.id}.ejs`), obj.client_code, 'utf-8');
|
|
118
119
|
renderData += `renderData.renderBody = "zindex/page${obj.id}.ejs"; `
|
|
119
120
|
}
|
|
120
121
|
//end optional
|
|
121
122
|
if (obj.scripts) {
|
|
122
|
-
fs.writeFileSync(
|
|
123
|
+
fs.writeFileSync(path.join(DIR, `page${obj.id}-script.ejs`), obj.scripts, 'utf-8');
|
|
123
124
|
renderData += `renderData.renderEnd = "zindex/page${obj.id}-script.ejs"; `
|
|
124
125
|
} else {
|
|
125
|
-
fs.unlink(
|
|
126
|
+
fs.unlink(path.join(DIR, `page${obj.id}-script.ejs`), function (err) {
|
|
126
127
|
if (err) return console.log(err);
|
|
127
128
|
console.log('file deleted successfully');
|
|
128
129
|
});
|
|
@@ -162,8 +163,8 @@ zpage.buildLayout = async (obj) => {
|
|
|
162
163
|
minifyCSS:true,
|
|
163
164
|
collapseWhitespace: true
|
|
164
165
|
});
|
|
165
|
-
console.log(dirRoot
|
|
166
|
-
fs.writeFileSync(dirRoot
|
|
166
|
+
console.log(path.join(dirRoot, "views", "layouts", name + ".ejs"));
|
|
167
|
+
fs.writeFileSync(path.join(dirRoot, "views", "layouts", name + ".ejs"), html, 'utf-8');
|
|
167
168
|
if (process.env.NODE_ENV === "production") {
|
|
168
169
|
setTimeout(function () {
|
|
169
170
|
pm2.connect(function (err) {
|
|
@@ -181,8 +182,8 @@ zpage.buildLayout = async (obj) => {
|
|
|
181
182
|
|
|
182
183
|
zpage.layoutDelete = async (obj) => {
|
|
183
184
|
let name = Util.toName(obj.name);
|
|
184
|
-
let
|
|
185
|
-
fs.unlink(
|
|
185
|
+
let filePath = path.join(dirRoot, "views", "layouts", "customs", name + ".ejs");
|
|
186
|
+
fs.unlink(filePath, function (err) {
|
|
186
187
|
if (err) return console.log(err);
|
|
187
188
|
console.log('file deleted successfully');
|
|
188
189
|
});
|