zet-lib 1.0.48 → 1.0.49

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 (2) hide show
  1. package/lib/zRoute.js +64 -43
  2. package/package.json +2 -2
package/lib/zRoute.js CHANGED
@@ -2738,32 +2738,14 @@ zRoute.generateJS = (req, res, MYMODEL, relations, zForms = '', data = {}) => {
2738
2738
  let MODEL_TABLE = MYMODELS[MYMODEL.widgets[keys].table] || require(`${dirRoot}/models/${MYMODEL.widgets[keys].table}`)
2739
2739
  //let MODEL_TABLE_RELATIONS = await zRoute.relations(req, res, MODEL_TABLE.table);
2740
2740
  //relations[key + "TABLE"]
2741
- let MODEL_TABLE_RELATIONS = relations[keys + 'TABLE']
2741
+ let MODEL_TABLE_RELATIONS = relations && relations.hasOwnProperty(keys + 'TABLE') ? relations[keys + 'TABLE'] : {}
2742
2742
  let zForm = zRoute.formField(req, res, MODEL_TABLE, MODEL_TABLE_RELATIONS)
2743
2743
  zRoute.moduleLib(req, res, MODEL_TABLE, MODEL_TABLE_RELATIONS, zForms)
2744
2744
  let trash = `trash_${keys}_${MYMODEL.widgets[keys].table}`
2745
- let trtd = ''
2746
- for (let key in relations[keys]) {
2747
- obj = zForm.obj[key] || {}
2748
- let name = MYMODEL.table + '[' + keys + '][${increment}][' + key + ']'
2749
- obj.name = name
2750
- //obj.class = MYMODEL.table + "_" + keys + "_" + key;
2751
- obj.class = `${MYMODEL.table}_${keys}_${key} form-control`
2752
- obj.id = key
2753
- obj.options = {
2754
- 'data-name': key,
2755
- 'data-id': obj.class,
2756
- }
2757
- trtd += `<td class="td_${key}_${MYMODEL.widgets[keys].table}">${cForm.field(obj)}</td>`
2758
- }
2759
-
2760
- trtd += `<td style="vertical-align:top"><span class="icon-small icons-danger ${trash}" title="Delete"><img class="icons-bg-white griddelete icon-image" src="/assets/icons/trash-filled.svg"></span></td></tr>`
2761
2745
  let subname = MYMODEL.table + '_' + keys
2762
- scriptForm += `$("table").on("click", ".${trash}", function () {$(this).closest('tr').remove();});`
2763
- scriptForm += Util.newLine
2764
- scriptForm += 'var append' + keys + ' = function (increment) {return `<tr data-id="${increment}" data-name="' + MYMODEL.table + '[' + keys + ']">'
2765
- scriptForm += trtd
2766
- scriptForm += '`}'
2746
+ let relationsWithKeys = relations ? relations[keys] : {}
2747
+
2748
+ scriptForm += `var append${keys} = (increment, callback) => { buildform(increment,'${MYMODEL.table}','${keys}','${JSON.stringify(relationsWithKeys)}', (data) => callback(data)) } `
2767
2749
  scriptForm += Util.newLine
2768
2750
  scriptForm += `var append${keys}Max = $('tbody#body-${keys}>tr').length;${Util.newLine}`
2769
2751
  scriptForm += `function ${keys}Handler(){
@@ -2804,36 +2786,38 @@ $("#body-${keys}>tr").each(function (index, tr) {
2804
2786
 
2805
2787
  scriptForm += ` $(function () {
2806
2788
  $('#add${keys}').on('click',function(){
2807
- $('#body-${keys}').append(append${keys}(append${keys}Max));
2789
+ append${keys}(append${keys}Max, (data) => $('#body-${keys}').append(data));
2808
2790
  append${keys}Max++;
2809
2791
  ${keys}Handler();
2810
2792
  });
2811
2793
  var ${keys} = $("#body-${keys}").data("value") ? $("#body-${keys}").data("value") : [];
2812
2794
  ${keys}.forEach(function (myobj, index) {
2813
- $("#body-${keys}").append(append${keys}(index));
2814
- ${keys}Handler();
2815
- for(var key in myobj){
2816
- if($(".${subname}_" + key).eq(index).attr("type") == "checkbox" && myobj[key] == 1){
2817
- $(".${subname}_" + key).eq(index).prop("checked", true);
2818
- $(".${subname}_" + key).eq(index).val(myobj[key] ? myobj[key] : '');
2819
- } else if($(".${subname}_" + key).eq(index).attr("type") == "file"){
2820
- var myimg = myobj[key] ? myobj[key] : '';
2821
- var pathName = "/uploads/${MYMODEL.table}/${keys}/";
2822
- if(myimg) {
2823
- var filename = filenamex = pathName+myimg;
2824
- if (!myimg.match(/\\.(jpg|jpeg|png|gif|svg|jiff)$/i)) {
2825
- filename = "/img/file.png";
2795
+ append${keys}(index, (data) => {
2796
+ $("#body-${keys}").append(data);
2797
+ ${keys}Handler();
2798
+ for(var key in myobj){
2799
+ if($(".${subname}_" + key).eq(index).attr("type") == "checkbox" && myobj[key] == 1){
2800
+ $(".${subname}_" + key).eq(index).prop("checked", true);
2801
+ $(".${subname}_" + key).eq(index).val(myobj[key] ? myobj[key] : '');
2802
+ } else if($(".${subname}_" + key).eq(index).attr("type") == "file"){
2803
+ var myimg = myobj[key] ? myobj[key] : '';
2804
+ var pathName = "/uploads/${MYMODEL.table}/${keys}/";
2805
+ if(myimg) {
2806
+ var filename = filenamex = pathName+myimg;
2807
+ if (!myimg.match(/\\.(jpg|jpeg|png|gif|svg|jiff)$/i)) {
2808
+ filename = "/img/file.png";
2809
+ }
2810
+ $(".${subname}_" + key).eq(index).closest("TD").find("img").attr("src",filename).addClass("boxy");
2811
+ $(".${subname}_" + key).eq(index).closest("TD").append('<a href="'+filenamex+'" target="_blank" style="font-size: 12px">'+myimg+'</a>');
2826
2812
  }
2827
- $(".${subname}_" + key).eq(index).closest("TD").find("img").attr("src",filename).addClass("boxy");
2828
- $(".${subname}_" + key).eq(index).closest("TD").append('<a href="'+filenamex+'" target="_blank" style="font-size: 12px">'+myimg+'</a>');
2813
+ } else {
2814
+ $(".${subname}_" + key).eq(index).val(myobj[key] ? myobj[key] : '');
2829
2815
  }
2830
- } else {
2831
- $(".${subname}_" + key).eq(index).val(myobj[key] ? myobj[key] : '');
2832
2816
  }
2833
-
2834
- }
2835
- append${keys}Max = index + 1;
2817
+ append${keys}Max = index + 1;
2818
+ });
2836
2819
  });
2820
+
2837
2821
  });${Util.newLine}`
2838
2822
  break
2839
2823
 
@@ -3111,6 +3095,43 @@ zRoute.import = async (req, res, MYMODEL) => {
3111
3095
  res.json(json)
3112
3096
  }
3113
3097
 
3098
+ /*
3099
+ This is post data return form with tr td htmlform
3100
+ */
3101
+ zRoute.buildForm = async (req, res) => {
3102
+ const MYMODELS = myCache.get('MYMODELS')
3103
+ let increment = req.body.increment
3104
+ let table = req.body.table
3105
+ let keys = req.body.keys
3106
+ let relations = JSON.parse(req.body.relations)
3107
+ let MYMODEL = MYMODELS[table] || require(`${dirRoot}/models/${table}`)
3108
+ let MODEL_TABLE = MYMODELS[MYMODEL.widgets[keys].table] || require(`${dirRoot}/models/${MYMODEL.widgets[keys].table}`)
3109
+ let MODEL_TABLE_RELATIONS = await zRoute.relations(req, res, MODEL_TABLE.table)
3110
+ let dataName = `${MYMODEL.table}[${keys}]`
3111
+
3112
+ let forms = zRoute.formField(req, res, MODEL_TABLE, MODEL_TABLE_RELATIONS)
3113
+ zRoute.moduleLib(req, res, MODEL_TABLE, MODEL_TABLE_RELATIONS, forms)
3114
+ let trash = `trash_${keys}_${MYMODEL.widgets[keys].table}`
3115
+ let trtd = ''
3116
+ for (let key in relations) {
3117
+ let obj = forms.obj[key] || {}
3118
+ let name = `${table}[${keys}][${increment}][${key}]`
3119
+ obj.name = name
3120
+ obj.class = `${MYMODEL.table}_${keys}_${key} form-control`
3121
+ obj.id = key
3122
+ obj.options = {
3123
+ 'data-name': key,
3124
+ 'data-id': obj.class,
3125
+ }
3126
+ trtd += `<td class="td_${key}_${MYMODEL.widgets[keys].table}">${cForm.field(obj)}</td>`
3127
+ }
3128
+ trtd += `<td style="vertical-align:top"><span class="icon-small icons-danger ${trash}" onclick="$(this).closest('tr').remove()" title="Delete"><img class="icons-bg-white griddelete icon-image" src="/assets/icons/trash-filled.svg"></span></td></tr>`
3129
+ let tabledata = `<tr data-id="${increment}" data-name="${dataName}" >`
3130
+ tabledata += trtd
3131
+
3132
+ res.send(tabledata)
3133
+ }
3134
+
3114
3135
  zRoute.buildFileModel = (json, index = 0) => {
3115
3136
  //let text = `module.exports = { ${Util.newLine}`;
3116
3137
  let text = ''
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zet-lib",
3
- "version": "1.0.48",
3
+ "version": "1.0.49",
4
4
  "description": "zet is a library that part of zet generator.",
5
5
  "engines": {
6
6
  "node": ">=18"
@@ -8,7 +8,7 @@
8
8
  "homepage": "https://github.com/sintret/zet",
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "https://github.com/sintret/zet"
11
+ "url": "git+https://github.com/sintret/zet.git"
12
12
  },
13
13
  "keywords": [
14
14
  "expressjs"