Initial commit
This commit is contained in:
commit
65e0da7e11
1397 changed files with 596542 additions and 0 deletions
215
site/OFF_plugins/field-engineer/assets/js/render.js
Normal file
215
site/OFF_plugins/field-engineer/assets/js/render.js
Normal file
|
|
@ -0,0 +1,215 @@
|
|||
EgrRender = (function () {
|
||||
var fn = {};
|
||||
var level = 1;
|
||||
|
||||
fn.render = function(obj) {
|
||||
var output = '';
|
||||
var fields = obj.find('.egr-presentation').children();
|
||||
var out = '';
|
||||
var textarea = obj.find('.egr-output').find('textarea');
|
||||
out = fn.renderLoop(fields, out, level, true);
|
||||
textarea.val(out);
|
||||
textarea.blur();
|
||||
};
|
||||
|
||||
fn.renderLoop = function(fields, out, root_field) {
|
||||
fields.each(function(field_index) {
|
||||
var field = $(this);
|
||||
var field_name = field.attr('data-field-name');
|
||||
var depth = field.parents('.egr-row').length;
|
||||
var tab = ' '.repeat(depth);
|
||||
|
||||
if(field.hasClass('egr-row')) {
|
||||
if(!root_field) {
|
||||
out += tab + field_name + ":\n";
|
||||
}
|
||||
var fieldsets = $(this).children('.egr-fieldsets').children();
|
||||
if(depth > 0) tab += ' ';
|
||||
fieldsets.each(function(fieldset_index) {
|
||||
var fieldset = $(this);
|
||||
var subfields = fieldset.children('.egr-fields').children();
|
||||
|
||||
if(fieldset.attr('data-fieldset-name') != undefined) {
|
||||
out += tab + "-\n";
|
||||
out += fn.setFieldsetName(tab, field, fieldset);
|
||||
}
|
||||
out = fn.renderLoop(subfields, out, false);
|
||||
});
|
||||
} else {
|
||||
var fieldset = field.parent().parent();
|
||||
var selector = fn.getSelector(field_name, field);
|
||||
var element = fn.findFormElement(selector, field);
|
||||
var content = fn.getElement(element, field_name, tab);
|
||||
|
||||
if(content) {
|
||||
out += tab + content;
|
||||
}
|
||||
}
|
||||
});
|
||||
return out;
|
||||
};
|
||||
|
||||
fn.getSelector = function(field_name, field) {
|
||||
var selector = field_name + field.attr('data-prefix');
|
||||
return selector;
|
||||
};
|
||||
|
||||
fn.findFormElement = function(selector, field) {
|
||||
var single = '[name="' + selector + '"]:not(label)';
|
||||
var multiple = '[name^="' + selector + '["]:not(label)';
|
||||
var element = field.find(single + ',' + multiple);
|
||||
return element;
|
||||
};
|
||||
|
||||
fn.getElement = function(element, field_name, tab) {
|
||||
var elementType = element.prop('nodeName');
|
||||
var is_single = (element.length < 2) ? true : false;
|
||||
var output = '';
|
||||
|
||||
switch(elementType) {
|
||||
case 'TEXTAREA':
|
||||
output += fn.textarea(element, field_name, tab);
|
||||
break;
|
||||
case 'INPUT':
|
||||
switch(element.attr('type')) {
|
||||
case 'radio':
|
||||
output += fn.radio(element, field_name, tab);
|
||||
break;
|
||||
case 'checkbox':
|
||||
if(is_single) {
|
||||
output += fn.checkbox(element, field_name, tab);
|
||||
} else {
|
||||
output += fn.checkboxes(element, field_name, tab);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if(element.hasClass('images')) {
|
||||
output += fn.textarea(element, field_name, tab);
|
||||
} else {
|
||||
if(is_single) {
|
||||
output += fn.input(element, field_name, is_single, tab);
|
||||
} else {
|
||||
if(field_name == 'datetime') {
|
||||
output += fn.input(element, field_name);
|
||||
} else {
|
||||
output += fn.inputs(element, field_name, tab);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 'SELECT':
|
||||
output += fn.select(element, field_name, tab);
|
||||
break;
|
||||
}
|
||||
return output;
|
||||
};
|
||||
|
||||
fn.setFieldsetName = function(tab, field, fieldset) {
|
||||
var fieldset_name = fieldset.attr('data-fieldset-name');
|
||||
var fieldset_count = field.attr('data-fieldset-count');
|
||||
if(fieldset_count == 1 && fieldset_name == 'default') {
|
||||
return '';
|
||||
}
|
||||
return tab + " _fieldset: " + fieldset_name + "\n";
|
||||
};
|
||||
|
||||
fn.inputs = function(element, field_name, tab) {
|
||||
var value = '';
|
||||
var indent = tab + ' ';
|
||||
|
||||
element.each(function( index ) {
|
||||
var val = $(this).val();
|
||||
val = val.replace(/"/g, '\\"');
|
||||
value += indent + '- "' + val + '"' + "\n";
|
||||
|
||||
});
|
||||
|
||||
value = value.slice(0, -1);
|
||||
return field_name + ": \n" + value + "\n";
|
||||
};
|
||||
|
||||
/* Input */
|
||||
fn.input = function(element, field_name) {
|
||||
var value = '';
|
||||
|
||||
element.each(function( index ) {
|
||||
value += $(this).val() + ' ';
|
||||
});
|
||||
value = value.slice(0, -1);
|
||||
value = value.replace(/"/g, '\\"');
|
||||
return field_name + ': "' + value + '"' + "\n";
|
||||
};
|
||||
|
||||
/* Textarea */
|
||||
fn.textarea = function(element, field_name, tab) {
|
||||
var value = element.val();
|
||||
var match = value.indexOf("\n");
|
||||
var indent = tab + ' ';
|
||||
|
||||
if(match > -1) {
|
||||
value = value.replace(/(?:\r\n|\r|\n)/g, "\n" + indent);
|
||||
if(value != '') {
|
||||
return field_name + ": |\n" + indent + value + "\n";
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
return fn.input(element, field_name);
|
||||
};
|
||||
|
||||
/* Select */
|
||||
fn.select = function(element, field_name) {
|
||||
var value = element.val();
|
||||
value = value.replace(/"/g, '\\"');
|
||||
return field_name + ': "' + value + '"' + "\n";
|
||||
};
|
||||
|
||||
/* Radio */
|
||||
fn.radio = function(element, field_name) {
|
||||
out = '';
|
||||
element.each(function(index) {
|
||||
if($(this).is(':checked')) {
|
||||
var value = $(this).val();
|
||||
if(value == 'true' || value == 'false') {
|
||||
value = "'" + value + "'";
|
||||
}
|
||||
out += field_name + ": " + value + "\n";
|
||||
}
|
||||
});
|
||||
return out;
|
||||
};
|
||||
|
||||
/* Checkbox */
|
||||
fn.checkbox = function(element, field_name) {
|
||||
out = '';
|
||||
element.each(function(index) {
|
||||
if($(this).is(':checked')) {
|
||||
var value = $(this).val();
|
||||
if(value == 'on') {
|
||||
value = 'true';
|
||||
}
|
||||
out += field_name + ': ' + value + "\n";
|
||||
} else {
|
||||
out += field_name + ": false\n";
|
||||
}
|
||||
});
|
||||
return out;
|
||||
};
|
||||
|
||||
/* Checkboxes */
|
||||
fn.checkboxes = function(element, field_name, tab) {
|
||||
out = '';
|
||||
element.each(function(index) {
|
||||
if($(this).is(':checked')) {
|
||||
out += tab + ' - ' + $(this).val() + "\n";
|
||||
}
|
||||
});
|
||||
if(out != '') {
|
||||
out = field_name + ":\n" + out;
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
return fn;
|
||||
})();
|
||||
Loading…
Add table
Add a link
Reference in a new issue