zet-lib 1.5.30 → 2.0.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.
Files changed (49) hide show
  1. package/lib/Modal.js +85 -30
  2. package/lib/Model.js +118 -2
  3. package/lib/config_generator.js +24 -0
  4. package/lib/generatorApi.js +1328 -0
  5. package/lib/generatorApp.js +1342 -0
  6. package/lib/generatorModel.js +733 -0
  7. package/lib/index.js +39 -12
  8. package/lib/lang_en.js +115 -0
  9. package/lib/routes/api.js +52 -0
  10. package/lib/routes/index.js +9 -0
  11. package/lib/views/error.ejs +3 -0
  12. package/lib/views/zgenerator/bootstrap3/_form.ejs +24 -0
  13. package/lib/views/zgenerator/bootstrap3/create.ejs +9 -0
  14. package/lib/views/zgenerator/bootstrap3/createjs.ejs +3 -0
  15. package/lib/views/zgenerator/bootstrap3/import.ejs +52 -0
  16. package/lib/views/zgenerator/bootstrap3/importjs.ejs +3 -0
  17. package/lib/views/zgenerator/bootstrap3/index.ejs +29 -0
  18. package/lib/views/zgenerator/bootstrap3/indexcss.ejs +1 -0
  19. package/lib/views/zgenerator/bootstrap3/indexjs.ejs +307 -0
  20. package/lib/views/zgenerator/bootstrap3/update.ejs +8 -0
  21. package/lib/views/zgenerator/bootstrap3/updatejs.ejs +3 -0
  22. package/lib/views/zgenerator/bootstrap3/view.ejs +57 -0
  23. package/lib/views/zgenerator/head.ejs +12 -0
  24. package/lib/views/zgenerator/index.ejs +271 -0
  25. package/lib/views/zgenerator/indexcss.ejs +87 -0
  26. package/lib/views/zgenerator/indexjs.ejs +705 -0
  27. package/lib/views/zgenerator/layout.ejs +198 -0
  28. package/lib/views/zgenerator/manual_basic.ejs +2 -0
  29. package/lib/views/zgenerator/manual_dropdown.ejs +126 -0
  30. package/lib/views/zgenerator/manual_modules.ejs +192 -0
  31. package/lib/views/zgenerator/manual_virtual.ejs +143 -0
  32. package/lib/views/zgenerator/mini.ejs +341 -0
  33. package/lib/views/zgenerator/routerApp.ejs +359 -0
  34. package/lib/views/zgenerator/views/_form.ejs +25 -0
  35. package/lib/views/zgenerator/views/approval.ejs +42 -0
  36. package/lib/views/zgenerator/views/create.ejs +7 -0
  37. package/lib/views/zgenerator/views/createjs.ejs +16 -0
  38. package/lib/views/zgenerator/views/import.ejs +49 -0
  39. package/lib/views/zgenerator/views/importjs.ejs +4 -0
  40. package/lib/views/zgenerator/views/index.ejs +9 -0
  41. package/lib/views/zgenerator/views/indexcss.ejs +2 -0
  42. package/lib/views/zgenerator/views/indexjs.ejs +2 -0
  43. package/lib/views/zgenerator/views/preview.ejs +34 -0
  44. package/lib/views/zgenerator/views/update.ejs +7 -0
  45. package/lib/views/zgenerator/views/updatejs.ejs +16 -0
  46. package/lib/views/zgenerator/views/view.ejs +36 -0
  47. package/lib/zGeneratorRouter.js +46 -22
  48. package/lib/zRoute.js +14 -3
  49. package/package.json +17 -11
@@ -0,0 +1,307 @@
1
+ <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
2
+ <script src="/js/jquery-sortable.js"></script>
3
+ <script>
4
+ window.onerror = function (message, file, line, col, error) {
5
+ toastr.error(error.message, "Error occurred");
6
+ setTimeout(function () {
7
+ toastr.info("Please wait a moment while we repair.\n Please Relax", "Info");
8
+ ajaxDelete("/<%- routeName %>/grid",{},function (data) {
9
+ toastr.info("Please refresh / reload your browser.\n ", "Info");
10
+ });
11
+ }, 2500);
12
+ setTimeout(function () {
13
+ toastr.clear();
14
+ window.location.href = '/<%- routeName %>';
15
+ }, 4500);
16
+ return false;
17
+ };
18
+ $(function () {
19
+ $(".jsgrid-filter-row td").each(function () {
20
+ $(this).find("input[type=text]").addClass("form-search form-control form-control-sm").attr("placeholder", "search..");
21
+ $(this).find("input[type=number]").addClass("form-search form-control form-control-sm").attr("placeholder", "search..");
22
+ $(this).find("select").addClass("form-search form-control form-control-sm form-select");
23
+ })
24
+ });
25
+ var gridSettings = <%- JSON.stringify(gridFilters) %>;
26
+ var isSave = false;
27
+ var gridFields = {
28
+ no: {name: "no", title: '<%- attributeData.labels['no'] %>', width: 20},
29
+ /*[__GENERATE_INDEXJS__]*/
30
+ actionColumn: {
31
+ type: "control", name: "actionColumn", width: 90, editButton: false,
32
+ itemTemplate: function (value, item) {
33
+ var $result = jsGrid.fields.control.prototype.itemTemplate.apply(this, arguments);
34
+ var $customViewButton = $("<button>").attr({class: "btn btn-info btn-sm"}).html("<span class='fa fa-eye'></span>").click(function (e) {
35
+ location.href = "/<%- routeName %>/view/" + item.id;
36
+ e.stopPropagation();
37
+ });
38
+ var $customEditButton = $("<button>").attr({class: "btn btn-success btn-sm"}).html("<span class='fa fa-pencil'></span>").click(function (e) {
39
+ location.href = "/<%- routeName %>/update/" + item.id;
40
+ e.stopPropagation();
41
+ });
42
+ var $customDeleteButton = $("<button>").attr({class: "btn btn-danger btn-sm"}).html("<span class='fa fa-trash'></span>").click(function (e) {
43
+ if (window.confirm("<%- LANGUAGE['delete_confirm']%>")) {
44
+ ajaxDelete("/<%- routeName %>/delete",{id: item.id}, function (data) {
45
+ if (data.status == 0) {
46
+ toastr.error(data.message, data.title);
47
+ } else {
48
+ $("#jsGrid").jsGrid("loadData");
49
+ toastr.success(data.message, data.title);
50
+ }
51
+ });
52
+ }
53
+ e.stopPropagation();
54
+ });
55
+ var div = $("<div>");
56
+
57
+ <% if(levels.view){ %>div.append($customViewButton).append(" ");<% } %>
58
+ <% if(levels.update){ %>div.append($customEditButton).append(" ");<% } %>
59
+ <% if(levels.delete) { %>div.append($customDeleteButton).append(" ");<% } %>
60
+ return div;
61
+ }
62
+ }
63
+ };
64
+ function fixGrid() {
65
+ var arr = [];
66
+ var visibles = <%- JSON.stringify(visibles) %>;
67
+ for (var i = 0; i < visibles.length; i++) {
68
+ if(gridFields.hasOwnProperty(visibles[i])){
69
+ arr.push(gridFields[visibles[i]]);
70
+ }
71
+ }
72
+ return arr;
73
+ }
74
+ function saveGrid(filter,url){
75
+ $.ajax({
76
+ url:url,
77
+ type:"POST",
78
+ data:filter
79
+ })
80
+ }
81
+ var jsFilter = "";
82
+ $("#jsGrid").jsGrid({
83
+ width: "100%",
84
+ filtering: true,
85
+ inserting: false,
86
+ editing: false,
87
+ sorting: true,
88
+ autoload: true,
89
+ paging: true,
90
+ pageLoading: true,
91
+ css: "kv-grid-table table table-bordered table-striped kv-table-wrap",
92
+ pageIndex : parseInt(gridSettings.pageIndex) || 1,
93
+ pageSize: $("#pageSize").val(),
94
+ pageButtonCount: 15,
95
+ deleteConfirm: "<%- LANGUAGE['delete_confirm']%>",
96
+ controller: {
97
+ loadData: function (filter) {
98
+ var d = $.Deferred();
99
+ if(!isSave){
100
+ if(gridSettings.hasOwnProperty("pageIndex")){
101
+ filter = gridSettings;
102
+ }
103
+ }
104
+ return $.ajax({
105
+ datatype: "json",
106
+ type: "GET",
107
+ url: "/<%- routeName %>/list",
108
+ data: filter,
109
+ success: function (html) {
110
+ var pi = filter.pageIndex;
111
+ var ps = filter.pageSize;
112
+ var showing = "Showing <b>";
113
+ var pis = (pi * ps);
114
+ var i = ((pi - 1) * ps) + 1;
115
+ if (pis > html.itemsCount) pis = html.itemsCount;
116
+ showing += i + " - " + pis;
117
+ showing += "</b> of " + html.itemsCount;
118
+ $(".summary").html(showing);
119
+ $(".jsgrid-pager-container").addClass("paginaton");
120
+ jsFilter = filter;
121
+ if(isSave){
122
+ saveGrid(filter,"/<%- routeName %>/save");
123
+ }
124
+ }
125
+ }).done(function (result) {
126
+ d.resolve($.map(result.data, function (item, itemIndex) {
127
+ var factor = filter.pageSize * (filter.pageIndex - 1);
128
+ return $.extend(item, {"no": (itemIndex + 1) + factor});
129
+ }));
130
+ });
131
+ },
132
+ updateItem: function(item) {
133
+ item.table = "<%- routeName %>";
134
+ item.model = "updateGrid";
135
+ return ajaxPost("/ajax",item,function (data) {
136
+ $("#jsGrid").jsGrid("loadData");
137
+ });
138
+ }
139
+ },
140
+ fields: fixGrid(),
141
+ });
142
+ $("#create_btn").on("click", function () {
143
+ location.href = "/<%- routeName %>/create";
144
+ });
145
+ $("#importExcel").on("click", function () {
146
+ location.href = "/<%- routeName %>/import";
147
+ });
148
+ $("#super_btn").on("click", function () {
149
+ location.href = "/create_fields/<%- routeName %>";
150
+ });
151
+ $(".export-xls").on("click", function () {
152
+ location.href = "/<%- routeName %>/excel?" + jQuery.param(jsFilter);
153
+ });
154
+ $("#backupExcel").on("click", function () {
155
+ location.href = "/<%- routeName %>/excel-query?" + jQuery.param(jsFilter);
156
+ });
157
+ $("#pageSize").on("change", function () {
158
+ $("#jsGrid").jsGrid("option", "pageSize", $(this).val());
159
+ // sorting grid by myField in ascending order
160
+ if(jsFilter.hasOwnProperty("sortField")){
161
+ $("#jsGrid").jsGrid("sort", jsFilter.sortField, jsFilter.sortOrder).done(function() {
162
+ console.log("sorting completed");
163
+ });
164
+ }
165
+ });
166
+
167
+ $(".pageSizeGrid").on("click", function () {
168
+ $("#jsGrid").jsGrid("option", "pageSize", $(this).data("value"));
169
+ $(".pageSizeGrid").removeClass("active");
170
+ $(this).addClass("active");
171
+ $("#dropdownPagination").html("Pagination "+ $(this).data("value"));
172
+ // sorting grid by myField in ascending order
173
+ if(jsFilter.hasOwnProperty("sortField")){
174
+ $("#jsGrid").jsGrid("sort", jsFilter.sortField, jsFilter.sortOrder).done(function() {
175
+ console.log("sorting completed");
176
+ });
177
+ }
178
+ });
179
+
180
+ var group = $("ul.gridsortable").sortable({
181
+ group: 'gridsortable',
182
+ isValidTarget: function ($item, container) {
183
+ if ($item.is(".disabled"))
184
+ return false;
185
+ else
186
+ return true;
187
+ },
188
+ onDrop: function ($item, container, _super) {
189
+ var getidname = $item.parents().attr('id');
190
+ if (getidname == "gridleft") {
191
+ $item.find('span').addClass('fa-eye').removeClass('fa-eye-slash')
192
+ } else {
193
+ $item.find('span').addClass('fa-eye-slash').removeClass('fa-eye')
194
+ }
195
+ _super($item, container);
196
+ }
197
+ });
198
+ $(".grid-submit").on("click", function () {
199
+ var leftvalue = [];
200
+ $("#gridleft li").each(function (i) {
201
+
202
+ var dataname = $(this).attr('data-name');
203
+ if (dataname != '') {
204
+ leftvalue.push(dataname);
205
+ }
206
+ });
207
+ $('#serialize_left').val(JSON.stringify(leftvalue));
208
+
209
+ var rightvalue = [];
210
+
211
+ $("#gridright li").each(function (i) {
212
+ var dataname = $(this).attr('data-name');
213
+ if (dataname != '') {
214
+ rightvalue.push(dataname);
215
+ }
216
+ });
217
+ $('#serialize_right').val(JSON.stringify(rightvalue));
218
+ $("#form-grid").submit();
219
+ });
220
+ $(".grid-reset").on("click", function(){
221
+ ajaxDelete("/<%- routeName %>/grid",{},function (data) {
222
+ if (data.status == 0) {
223
+ toastr.error(data.message, data.title);
224
+ } else {
225
+ $("#jsGrid").jsGrid("loadData");
226
+ toastr.success(data.message, data.title);
227
+ }
228
+ location.href = '';
229
+ });
230
+ });
231
+ $(".label-reset").on("click", function(){
232
+ ajaxDelete("/<%- routeName %>/labels",{},function (data) {
233
+ if (data.status == 0) {
234
+ toastr.error(data.message, data.title);
235
+ } else {
236
+ $("#jsGrid").jsGrid("loadData");
237
+ toastr.success(data.message, data.title);
238
+ }
239
+ location.href = '';
240
+ });
241
+ });
242
+ $(".labels-submit").on("click", function () {
243
+ $("#form-labels").submit();
244
+ });
245
+ $("#reloadgrid").on("click", function (e) {
246
+ e.preventDefault();
247
+ ajaxPost("/<%- routeName%>/reload",{}, function (data) {
248
+ location.href="/<%- routeName%>";
249
+ });
250
+ });
251
+
252
+ submitForm('form-grid', '', '/<%- routeName %>');
253
+ submitForm('form-labels', '', '/<%- routeName %>');
254
+ $(function () {
255
+ if(gridSettings.hasOwnProperty("pageSize")){
256
+ $("#pageSize").val(gridSettings.pageSize)
257
+ }
258
+
259
+ var gridSearchs = <%- JSON.stringify(gridSearchs)%>;
260
+ var searchValue = $("table.jsgrid-table > tr").eq(1).find("td");
261
+ <%- gridSearchs%>
262
+
263
+ isSave = true;
264
+ $(".form-search").on("change", function () {
265
+ setTimeout(function () {
266
+ for(var key in jsFilter) {
267
+ $("#"+key).val(jsFilter[key]);
268
+ }
269
+ },2000);
270
+ });
271
+
272
+ $(".form-advancesearch").on("change","input", function () {
273
+ advanceSearch();
274
+ });
275
+
276
+ $(".form-advancesearch").on("change","select", function () {
277
+ advanceSearch();
278
+ });
279
+ });
280
+
281
+ function advanceSearch() {
282
+ var arr = $(".form-advancesearch").serializeArray();
283
+ var o = {}
284
+ if(arr.length) {
285
+ $.each(arr, function() {
286
+ if (o[this.name]) {
287
+ if (!o[this.name].push) {
288
+ o[this.name] = [o[this.name]];
289
+ }
290
+ o[this.name].push(this.value || '');
291
+ } else {
292
+ o[this.name] = this.value || '';
293
+ }
294
+ });
295
+ }
296
+ var obj = {}
297
+ if(jsFilter.hasOwnProperty("no")) obj.no = jsFilter.no;
298
+ if(jsFilter.hasOwnProperty("pageIndex")) obj.pageIndex = jsFilter.pageIndex;
299
+ if(jsFilter.hasOwnProperty("pageSize")) obj.pageSize = jsFilter.pageSize;
300
+
301
+ jsFilter = Object.assign(obj,o);
302
+ console.log(JSON.stringify(jsFilter));
303
+ $("#jsGrid").jsGrid("search", jsFilter).done(function() {
304
+ console.log("filtering completed");
305
+ });
306
+ }
307
+ </script>
@@ -0,0 +1,8 @@
1
+ <%- UI.Form.breadcrumb(frameworkcss, [{text: LANGUAGE['home'], href:"/dashboard"}, {text: LANGUAGE['grid_list'], href:"/"+routeName}, {text: LANGUAGE['update'], active: true}]) %>
2
+
3
+ <div class="page-header">
4
+ <h2><%- titleApp %></h2>
5
+ <small><%- companyName %></small>
6
+ </div>
7
+
8
+ <% include _form.ejs %>
@@ -0,0 +1,3 @@
1
+ <script>
2
+ submitForm('form-group', '', '/<%- routeName %>');
3
+ </script>
@@ -0,0 +1,57 @@
1
+ <%- UI.Form.breadcrumb(frameworkcss, [{text: LANGUAGE['home'], href:"/dashboard"}, {text: LANGUAGE['grid_list'], href:"/"+routeName}, {text: LANGUAGE['update'], href : '/' + routeName+'/update/'+data.id}, {text: LANGUAGE['create'], href : '/'+routeName+'/create'}, {text: LANGUAGE['view'], active : true}]) %>
2
+
3
+
4
+ <div class="page-header">
5
+ <h2><%- titleApp %></h2>
6
+ <small><%- companyName %></small>
7
+ </div>
8
+
9
+ <div class="row">
10
+ <div class="col-md-6">
11
+ <div class="page-title"><h3><%- menuApp %> <%= data.///COLUMN_COMMON/// %></h3></div>
12
+ </div>
13
+ <div class="col-md-6">
14
+ <div class="btn-group <%- UI.Form.pullRight(frameworkcss)%>" role="group" aria-label="button">
15
+ <% if(levels.update){ %>
16
+ <a class="btn btn-info btn-rounded dimens2x" href="/<%- routeName%>/update/<%= data.id %>"
17
+ title="Update data"><i class="fa fa-pencil"></i> <%- LANGUAGE['update']%>
18
+ </a> &nbsp;
19
+ <% } %>
20
+ <% if(levels.delete){ %>
21
+ <button class="btn btn-danger btn-rounded dimens2x" id="<%- routeName %>-delete" data-id="<%= data.id %>"
22
+ title="Delete Data"><i class="fa fa-trash"></i> <%- LANGUAGE['delete'] %>
23
+ </button> &nbsp;
24
+
25
+ <% } %>
26
+ <% if(levels.create){ %>
27
+ <a class="btn btn-success" href="/<%- routeName%>/create" title="Create data"><i class="fa fa-plus"></i>
28
+ <%- LANGUAGE['create']%>
29
+ </a>
30
+ <% } %>
31
+
32
+ </div>
33
+ </div>
34
+ </div>
35
+
36
+ <script>
37
+ document.getElementById("<%- routeName %>-delete").addEventListener("click", deleteData);
38
+ function deleteData() {
39
+ if (window.confirm("<%- LANGUAGE['delete_confirm'] %>")) {
40
+ var http = new XMLHttpRequest();
41
+ var url = '/<%- routeName %>/delete';
42
+ var params = 'id=<%- data.id%>';
43
+ http.open('DELETE', url, true);
44
+ http.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
45
+ http.onreadystatechange = function () {//Call a function when the state changes.
46
+ if (http.readyState == 4 && http.status == 200) {
47
+ location.href = "/<%- routeName%>"
48
+ }
49
+ }
50
+ http.send(params);
51
+ }
52
+ }
53
+ </script>
54
+ <p>&nbsp;</p>
55
+ <div class="boxy">
56
+ /*[__GENERATE_VIEWJS__]*/
57
+ </div>
@@ -0,0 +1,12 @@
1
+ <meta charset="utf-8">
2
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
3
+ <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
4
+ <meta name="usertoken" content="<%- token %>"/>
5
+ <meta name="socketUrl" content="<%- socketUrl %>"/>
6
+ <meta name="csrf-token" content="<%- csrfToken %>">
7
+ <title><%- menuApp %></title>
8
+ <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.css">
9
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" integrity="sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
10
+ <%- moduleHead %>
11
+ <link rel='stylesheet' href='/css/app.css'/>
12
+ <%- renderHead ? include("./../"+renderHead) : "" %>
@@ -0,0 +1,271 @@
1
+ <section class="mt-4">
2
+
3
+
4
+ <!--Grid row-->
5
+
6
+ <!--Grid row-->
7
+ <div class="row">
8
+ <!--Grid column-->
9
+ <div class="col-md-12 mb-2">
10
+ <!--Card-->
11
+
12
+ <!--Generator-->
13
+ <div class="card mb-3 wow fadeIn">
14
+ <div class="card-header bg-success text-white font-weight-bold">Generator</div>
15
+ <div class="card-body">
16
+
17
+ <!-- Default form reply -->
18
+ <form id="formgenerator" method="post" action="/crud">
19
+ <div class="form-group">
20
+ <label for="table">Module Name</label>
21
+ <select name="table" id="table" class="form-control">
22
+ <option value="">Please Select</option>
23
+ <% for(var key in rows) {
24
+ var row = rows[key];
25
+ var selected = row.table == table ? " selected " : "";
26
+
27
+ if(row.table != 'zrole') {
28
+ %>
29
+ <option value="<%= row.table %>" <%= selected %> ><%= row.table %></option>
30
+ <% }} %>
31
+ </select>
32
+ </div>
33
+
34
+ <% if(table) {%>
35
+ <div class="form-group">
36
+ <label for="route">Title</label>
37
+ <input type="text" class="form-control" id="title" name="title" value="<%- datas.name%>" />
38
+ </div>
39
+ <div class="form-group">
40
+ <label for="route">Route</label>
41
+ <input type="text" class="form-control" readonly id="route" name="route" value="<%- route%>" />
42
+ </div>
43
+
44
+ <div class="form-group">
45
+ <label for="route">Tabs</label>
46
+ <div class="input-group mb-3">
47
+ <input type="text" class="form-control" id="tabname" placeholder="Enter tab name" aria-label="Enter tab name" aria-describedby="button-addon2">
48
+ <div class="input-group-append">
49
+ <button class="btn btn-md btn-secondary m-0 px-3" type="button" id="add"><i class="fa fa-plus"></i></button>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ <div id="tabs"></div>
54
+ <%} %>
55
+
56
+ <div class="text-center mt-4">
57
+ <% if(table) {%>
58
+ <button class="btn btn-danger text-white" id="delete_module" type="button"><i class="fa fa-trash"></i> Delete Module</button>
59
+ <%}%>
60
+ <button class="btn btn-success text-white" data-toggle="modal" data-target="#add_table" type="button"><i class="fa fa-plus"></i> Add Module</button>
61
+ <% if(table) {%>
62
+ <button class="btn btn-info" id="savetab" type="button"><i class="fa fa-paper-plane"></i> Save</button>
63
+ <%}%>
64
+ <% if(table) {%>
65
+ <a class="btn btn-warning " href="/<%- table%>" target="__blank" type="button"><i class="fa fa-plane"></i> Go To <%- table%></a>
66
+ <%}%>
67
+ </div>
68
+ </form>
69
+ <!-- Default form reply -->
70
+ </div>
71
+ </div>
72
+ <!--Generator-->
73
+ <div class="card mb-3 wow fadeIn" id="divfields" style="display: none">
74
+ <div class="card-header secondary-color-dark text-white font-weight-bold">Fields</div>
75
+ <div class="card-body">
76
+
77
+ <!-- Default form reply -->
78
+ <form id="formfields" method="post" action="/generator/fields">
79
+ <div id="divtablist" class="row"></div>
80
+ <div id="contentfields"></div>
81
+
82
+ <div class="text-center mt-4">
83
+ <button class="btn btn-success text-white" data-toggle="modal" data-target="#modal_add_field" type="button"><i class="fa fa-plus"></i> Add Field</button>
84
+ <button class="btn secondary-color-dark text-white" id="save" type="button"><i class="fa fa-paper-plane"></i> Save & Generate</button>
85
+ </div>
86
+ </form>
87
+ <!-- Default form reply -->
88
+ </div>
89
+ </div>
90
+ <!--/Generator-->
91
+
92
+ <!--Card-->
93
+ <div class="card mb-4 wow fadeIn card-script" style="display: none">
94
+ <div class="card-header font-weight-bold">
95
+ <span>Additional Settings</span>
96
+ </div>
97
+
98
+ <div class="card-body">
99
+ <h5 class="card-title">Hard Code</h5>
100
+ <hr>
101
+
102
+ <div class="row">
103
+ <div class="col-md-6">
104
+ <div class="form-group">
105
+ <div class="form-group">
106
+ <label for="javascript">Grid / List <span class="badge badge-danger">Please do not remove this</span></label>
107
+ <div class="ide_editor" id="hardcode_grid"><%= datas.hardcode_grid || ""%></div>
108
+ </div>
109
+ </div>
110
+ </div>
111
+ <div class="col-md-6">
112
+
113
+ </div>
114
+ </div>
115
+ </div>
116
+
117
+
118
+ </div>
119
+ <!--/.Card-->
120
+
121
+
122
+
123
+ <!-- Card -->
124
+ <div class="card mb-4 wow fadeIn card-script" style="display: none">
125
+ <div class="card-header font-weight-bold">
126
+ <span> Files Content</span>
127
+ </div>
128
+
129
+ <div class="card-body">
130
+
131
+ <h5 class="card-title">Files Generator <span class="badge badge-danger"><small>Using EJS template engine, Let it blank</small></span></h5>
132
+ <div class="pull-right"> <button class="btn btn-amber btn-reset">Reset Form</button></div>
133
+ <hr>
134
+
135
+ <ul class="nav nav-tabs" id="tabfiles" role="tablist">
136
+ <li class="nav-item">
137
+ <a class="nav-link active" data-toggle="tab" href="#tabrouter" role="tab" aria-controls="router"
138
+ aria-selected="true">Router</a>
139
+ </li>
140
+ <li class="nav-item">
141
+ <a class="nav-link " data-toggle="tab" href="#tabindex" role="tab" aria-controls="index"
142
+ aria-selected="true">Index</a>
143
+ </li>
144
+ <li class="nav-item">
145
+ <a class="nav-link" data-toggle="tab" href="#tabform" role="tab" aria-controls="form"
146
+ aria-selected="false">Form</a>
147
+ </li>
148
+ <li class="nav-item">
149
+ <a class="nav-link" data-toggle="tab" href="#tabview" role="tab" aria-controls="view"
150
+ aria-selected="false">View</a>
151
+ </li>
152
+ </ul>
153
+ <div class="tab-content" id="mytabfiles">
154
+ <div class="tab-pane fade show active" id="tabrouter" role="tabpanel" aria-labelledby="tab-router">
155
+ <br>
156
+ <div class="row">
157
+ <div class="col-md-6">
158
+ <div class="form-group ">
159
+ <label for="javascript">Router</label>
160
+ <div class="ide_editor" id="router"><%- datas.router%></div>
161
+ </div>
162
+ </div>
163
+
164
+ </div>
165
+ </div>
166
+
167
+ <div class="tab-pane fade" id="tabindex" role="tabpanel" aria-labelledby="index-tab">
168
+ <br>
169
+ <div class="row">
170
+ <div class="col-md-6">
171
+ <div class="form-group ">
172
+ <label for="index.ejs">index.ejs</label>
173
+ <div class="ide_editor" id="index_ejs"></div>
174
+ </div>
175
+ </div>
176
+
177
+ <div class="col-md-6">
178
+ <div class="form-group ">
179
+ <label for="indexcss_ejs">indexcss.ejs</label>
180
+ <div class="ide_editor_200" id="indexcss_ejs"><%- datas.indexcss_ejs%></div>
181
+ </div>
182
+ <div class="form-group ">
183
+ <label for="indexjs_ejs">indexjs.ejs</label>
184
+ <div class="ide_editor_200" id="indexjs_ejs"></div>
185
+ </div>
186
+ </div>
187
+ </div>
188
+
189
+ </div>
190
+
191
+ <div class="tab-pane fade" id="tabform" role="tabpanel" aria-labelledby="form-tab">
192
+ <br>
193
+
194
+ <div class="row">
195
+ <div class="col-md-6">
196
+ <div class="form-group ">
197
+ <label for="form.ejs">_form.ejs</label>
198
+ <div class="ide_editor" id="form_ejs"></div>
199
+ </div>
200
+ </div>
201
+ <div class="col-md-6">
202
+ <div class="form-group ">
203
+ <label for="create_ejs">create.ejs</label>
204
+ <div class="ide_editor_200" id="create_ejs"></div>
205
+ </div>
206
+ <div class="form-group ">
207
+ <label for="createjs_ejs">createjs.ejs</label>
208
+ <div class="ide_editor_200" id="createjs_ejs"></div>
209
+ </div>
210
+ </div>
211
+ </div>
212
+
213
+
214
+ <div class="row">
215
+ <div class="col-md-6">
216
+ <div class="form-group ">
217
+ <label for="update_ejs">update.ejs</label>
218
+ <div class="ide_editor_200" id="update_ejs"></div>
219
+ </div>
220
+ <div class="form-group ">
221
+ <label for="updatejs_ejs">updatejs.ejs</label>
222
+ <div class="ide_editor_200" id="updatejs_ejs"></div>
223
+ </div>
224
+
225
+ </div>
226
+ <div class="col-md-6">
227
+ <div class="form-group ">
228
+ <label for="import_ejs">import.ejs</label>
229
+ <div class="ide_editor_200" id="import_ejs"></div>
230
+ </div>
231
+ <div class="form-group ">
232
+ <label for="importjs_ejs">importjs.ejs</label>
233
+ <div class="ide_editor_200" id="importjs_ejs"></div>
234
+ </div>
235
+ </div>
236
+ </div>
237
+
238
+
239
+ </div>
240
+ <div class="tab-pane fade" id="tabview" role="tabpanel" aria-labelledby="view-tab">
241
+ <br>
242
+ <div class="row">
243
+ <div class="col-md-6">
244
+ <div class="form-group ">
245
+ <label for="view_ejs">view.ejs</label>
246
+ <div class="ide_editor" id="view_ejs"></div>
247
+ </div>
248
+ </div>
249
+ <div class="col-md-6">
250
+
251
+ </div>
252
+ </div>
253
+
254
+
255
+ </div>
256
+ </div>
257
+
258
+
259
+ </div>
260
+
261
+ </div>
262
+ </div>
263
+ <!--Grid column-->
264
+
265
+ <!--Grid column-->
266
+
267
+ <!--Grid column-->
268
+ </div>
269
+ <!--Grid row-->
270
+ </section>
271
+ <!--Section: Post-->