Skip to content

Commit 93b0e47

Browse files
committed
optimize & add extra comment
1 parent 0827ff0 commit 93b0e47

File tree

2 files changed

+67
-33
lines changed

2 files changed

+67
-33
lines changed

assets/js/engine.js

Lines changed: 57 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,19 @@ function clone(obj) {
1616
* for number in function
1717
* @type {*[]}
1818
*/
19-
var a = ['','one ','two ','three ','four ', 'five ','six ','seven ','eight ','nine ','ten ','eleven ','twelve ','thirteen ','fourteen ','fifteen ','sixteen ','seventeen ','eighteen ','nineteen '];
20-
var b = ['', '', 'twenty','thirty','forty','fifty', 'sixty','seventy','eighty','ninety'];
19+
var a = ['', 'one ', 'two ', 'three ', 'four ', 'five ', 'six ', 'seven ', 'eight ', 'nine ', 'ten ', 'eleven ', 'twelve ', 'thirteen ', 'fourteen ', 'fifteen ', 'sixteen ', 'seventeen ', 'eighteen ', 'nineteen '];
20+
var b = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
2121

2222
/**
2323
* number to words
2424
* @param num
2525
* @returns {string}
2626
*/
27-
function inWords (num) {
27+
function inWords(num) {
2828
if ((num = num.toString()).length > 9) return 'overflow';
2929
n = ('000000000' + num).substr(-9).match(/^(\d{2})(\d{2})(\d{2})(\d{1})(\d{2})$/);
30-
if (!n) return; var str = '';
30+
if (!n) return;
31+
var str = '';
3132
str += (n[1] != 0) ? (a[Number(n[1])] || b[n[1][0]] + ' ' + a[n[1][1]]) + 'crore ' : '';
3233
str += (n[2] != 0) ? (a[Number(n[2])] || b[n[2][0]] + ' ' + a[n[2][1]]) + 'lakh ' : '';
3334
str += (n[3] != 0) ? (a[Number(n[3])] || b[n[3][0]] + ' ' + a[n[3][1]]) + 'thousand ' : '';
@@ -41,13 +42,21 @@ function init() {
4142
document.getElementById('json-file').addEventListener('change', handleFileSelect, false);
4243
}
4344

45+
/**
46+
* handle file selected
47+
* @param event
48+
*/
4449
function handleFileSelect(event) {
4550
const reader = new FileReader();
4651
reader.onload = handleFileLoad;
4752
reader.readAsText(event.target.files[0]);
4853

4954
}
5055

56+
/**
57+
* handl file loads
58+
* @param event
59+
*/
5160
function handleFileLoad(event) {
5261
try {
5362
var all = JSON.parse(event.target.result);
@@ -80,17 +89,19 @@ var app = new Vue({
8089
el: '#app',
8190
data: {
8291
code: '',
83-
theme: 'bootstrap',
84-
method: 'get',
92+
theme: 'bootstrap', // default theme
93+
method: 'get', // default methods
8594
old: '',
86-
flds: [],
95+
flds: [], // list of field
96+
// type of inputs
8797
typ: [
8898
'row',
8999
'input',
90100
'textaera',
91101
'select',
92102
'submit'
93103
],
104+
// raw field for edit
94105
raw: {
95106
type: 'input',
96107
name: '',
@@ -105,12 +116,15 @@ var app = new Vue({
105116
this.initSemanticui();
106117

107118
}, computed: {
119+
// size for handle
108120
siz: function () {
109121
if (this.theme == 'semanticui') {
110122
return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
111123
}
112124
return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
113125
},
126+
127+
// calculate max column count
114128
maxSize: function () {
115129
if (this.theme == 'semanticui') {
116130
return 16;
@@ -120,20 +134,23 @@ var app = new Vue({
120134
}
121135
}, methods: {
122136

137+
// set old default
123138
defaultOld: function () {
124-
$("#old").val($("#old").attr('placeholder'));
139+
$("#old").val($("#old").attr('placeholder'));
125140
},
141+
// make labael
126142
makeLabel: function (field, inp) {
127143

128144
var out = '';
145+
// set default id
129146
if (field.id.trim() == '') {
130147
field.id = field.name;
131148
}
132149

133150

134151
switch (this.theme) {
135152
case "bootstrap":
136-
153+
// make bootstrap column
137154
out += `\t\t <div class="col-md-${field.size} mt-3">\n`;
138155
out += `\t\t\t <div class="form-control">\n`;
139156
out += `\t\t\t\t <label for="${field.id}"> \n`;
@@ -145,14 +162,14 @@ var app = new Vue({
145162

146163
break;
147164
case "semanticui":
148-
165+
// make semanticui column
149166
out += `\t\t <div class="${$.trim(inWords(field.size))} wide column">\n`;
150167
out += `\t\t\t <div class="field">\n`;
151168
out += `\t\t\t\t <label for="${field.id}"> \n`;
152169
out += `\t\t\t\t\t {{__('${field.label}')}} \n`;
153170
out += `\t\t\t\t </label> \n`;
154171
out += `\t\t\t\t <div class="ui input"> \n`;
155-
out += inp;
172+
out += '\t\t' + inp;
156173
out += `\t\t\t\t </div> \n`;
157174
out += `\t\t\t </div>\n`;
158175
out += `\t\t </div>\n`;
@@ -165,6 +182,8 @@ var app = new Vue({
165182

166183
return out;
167184
},
185+
186+
// generate form
168187
generateForm: function () {
169188
var out = '';
170189
var hasRowBefore = false;
@@ -177,10 +196,12 @@ var app = new Vue({
177196
extMethod = `@method('${this.method.toUpperCase()}')`;
178197
}
179198
}
180-
// make class
199+
// make reset class
181200
var formClass = '';
182201
var generalClass = '';
183202
var rowClass = '';
203+
204+
// make default classes
184205
switch (this.theme) {
185206
case "bootstrap":
186207
generalClass = 'form-control';
@@ -199,8 +220,10 @@ var app = new Vue({
199220
out += `<form class="${formClass}" method="${method}" action=""> \n`;
200221
out += `\t @csrf \n`;
201222
out += `\t ${extMethod} \n`;
202-
for (const i in this.flds) {
203-
var field = this.flds[i];
223+
224+
// loop fields make
225+
for (const field of this.flds) {
226+
// var field = this.flds[i]; // must remove in next major version this comment
204227
switch (field.type) {
205228
case "row":
206229

@@ -210,9 +233,11 @@ var app = new Vue({
210233
} else {
211234
hasRowBefore = true;
212235
}
236+
// make grid row
213237
out += `\t <div class="${rowClass}">\n`;
214238
break;
215239
case 'input':
240+
216241
var old = '';
217242
if (this.old.trim() !== '') {
218243
old = ',' + this.old.replace('#name', field.name);
@@ -226,7 +251,6 @@ var app = new Vue({
226251
var genClass = generalClass + ` @error('${field.name}') is-invalid @enderror`;
227252
}
228253
} else
229-
230254
// handle bootstrap class
231255
if (this.theme == 'semanticui') {
232256
var genClass = ` @error('${field.name}') error @enderror`;
@@ -238,6 +262,8 @@ var app = new Vue({
238262
var inp = `\t\t\t <input name="${field.name}" type="${field.option}" class="${genClass}" placeholder="{{__('${field.label}')}}" value="{{old('${field.name}'${old})}}" /> \n`;
239263
out += this.makeLabel(field, inp);
240264
break;
265+
266+
241267
case 'textaera':
242268
var old = '';
243269
if (this.old.trim() !== '') {
@@ -257,7 +283,6 @@ var app = new Vue({
257283
}
258284

259285

260-
261286
var inp = `\t\t\t <textarea name="${field.name}" class="${genClass}" placeholder="{{__('${field.label}')}}" >{{old('${field.name}'${old})}}</textarea> \n`;
262287
out += this.makeLabel(field, inp);
263288
break;
@@ -276,7 +301,6 @@ var app = new Vue({
276301
}
277302

278303

279-
280304
var inp = `\t\t\t <select name="${field.name}" id="${field.id}" class="${genClass}" > \n`;
281305
try {
282306
var ops = field.option.split(':');
@@ -338,16 +362,20 @@ var app = new Vue({
338362
hljs.highlightBlock(block);
339363
});
340364
},
365+
// add field
341366
addField: function () {
342367
this.raw.size = this.maxSize;
343368
this.flds.push(clone(this.raw));
344369
this.initSemanticui();
345370
},
371+
// initial semantic ui
346372
initSemanticui: function () {
347373
setTimeout(function () {
348374
$('.ui.dropdown').dropdown();
349375
}, 200);
350-
}, removeField: function (i) {
376+
},
377+
// remove filed from fields
378+
removeField: function (i) {
351379
var fls = [];
352380
for (const k in this.flds) {
353381
let itm = this.flds[k];
@@ -357,19 +385,26 @@ var app = new Vue({
357385
}
358386
this.flds = fls;
359387

360-
}, saveJson: function () {
388+
},
389+
// save json
390+
saveJson: function () {
361391
var all = {
362392
fields: this.flds,
363393
old: this.old
364394
};
365395
downloadObjectAsJson(all, '4xmen-laravel-form-builder-export');
366-
}, loadJson: function () {
396+
},
397+
// load json
398+
loadJson: function () {
367399
init();
368400
$("#json-file").click();
369-
}, clearAll: function () {
401+
},
402+
// clear all fields
403+
clearAll: function () {
370404
this.flds = [];
371405
this.old = '';
372-
}, changeTheme: function () {
406+
},
407+
changeTheme: function () {
373408
}
374409
}
375410
});

index.html

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,20 @@ <h4 class="ui dividing header">General setting</h4>
6262
<option value="options"> Options </option>
6363
</select>
6464
</div>
65-
</div>
66-
<div class="two fields">
65+
<!-- </div>-->
66+
<!-- <div class="two fields">-->
6767
<div class="field">
6868
<label for="old">
6969
Old second parameter
7070
</label>
71-
<input type="text" id="old" placeholder="$item->#name??null" v-model="old"/>
72-
</div>
73-
<div class="field">
74-
<label>
75-
&nbsp;
76-
</label>
77-
<div class="ui button" @click="defaultOld">
78-
&leftarrow;
79-
Default old
71+
72+
73+
74+
<div class="ui right labeled input">
75+
<input type="text" id="old" placeholder="$item->#name??null" v-model="old"/>
76+
<a class="ui button grey" @click="defaultOld" title="Default old">
77+
&leftarrow; Def
78+
</a>
8079
</div>
8180
</div>
8281

0 commit comments

Comments
 (0)