File: //proc/self/root/proc/self/cwd/nueva/modules/roja45quotationsprofree/views/js/roja45moduleadmin.js
/**
* roja45moduleadmin.js.
*
* @author Roja45
* @copyright 2016 Roja45
* @license license.txt
*
* 2016 ROJA45 - All rights reserved.
*
* DISCLAIMER
* Changing this file will render any support provided by us null and void.
*/
$(document).ready(function() {
$( '.sortable' ).sortable({
connectWith: '.sortable',
placeholder: 'ui-state-highlight',
forcePlaceholderSize: true,
dropOnEmpty: true,
opacity: 0.8,
tolerance: 'pointer'
}).disableSelection();
$('.roja45quotations_submitConfiguration').click(function (e) {
roja45quotationsprofree.saveConfiguration($(this));
});
$('.roja45quotations_submitFormDesign').click(function (e) {
roja45quotationsprofree.saveForm($(this));
});
$( ".sortable" ).on( "dragend.h5s", function( event ) {
$('#'+event.target.id);
});
$('.cancelAdd').on( 'click', function(e) {
var form_name = '#'+$(this).closest('form').attr('id');
$(form_name).fadeOut( 'fast', function(e) {
$('#form_element_buttons').empty();
$( 'select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]').val('DEFAULT');
$( 'select[name=form_element_required]').val('0');
$( 'select[name=form_element_validation]').val('none');
$(form_name)[0].reset();
});
$(this).closest('form').find("input[type=text], textarea").val("");
$(this).closest('form').find('.form-ok').removeClass('form-ok');
$(this).closest('form').find('.form-error').removeClass('form-error');
$('body').scrollTo('#QUOTATION_FORM_ELEMENTS', 500);
});
$('input[name=ROJA45_QUOTATIONSPRO_DISPLAY_LABEL]').on('change', function() {
if ($("input[name='ROJA45_QUOTATIONSPRO_DISPLAY_LABEL']:checked").val() == '1') {
$('.label_position_hidden').fadeIn();
} else {
$('.label_position_hidden').fadeOut();
}
}).trigger('change');
var num_col_prev = $( "select[name=ROJA45_QUOTATIONSPRO_NUM_COL] option:selected").val();
$("#ROJA45_QUOTATIONSPRO_NUM_COL").change( function(e) {
e.preventDefault();
var cols = $( "select[name=ROJA45_QUOTATIONSPRO_NUM_COL] option:selected").val();
var error_flag = false;
// TODO - if required cols less than # cols
// if cols = 2
var i=0;
for (i=(parseInt(cols)+1); i <= 3; i++ ) {
if ($('*[data-column="'+i+'"] li').length > 0) {
// SHOW WARNING
error_flag = true;
$( "select[name=ROJA45_QUOTATIONSPRO_NUM_COL]").val(num_col_prev);
$( "#fields_warning_dialog" ).dialog({
modal: true,
buttons: {
Ok: function() {
$( this ).dialog( "close" );
}
}
});
}
}
if (!error_flag) {
num_col_prev = cols;
$('input[name=ROJA45_QUOTATIONSPRO_NUM_COL]').val(cols);
var count = 1;
var col_width = 12;
for (i=count; i <= cols; i++ ) {
if (!$('*[data-column="'+count+'"]').length > 0) {
// create column
$('#form_design_columns').append('' +
'<section id="sortable'+i+'" data-column="'+i+'" class="form-column col-lg-' + col_width + '">' +
'<section id="form_design_column_'+i+'" class="filter_panel">' +
'<header class="clearfix"><div class="panel-heading-icon"><i class="icon-list-ul"></i></div><div class="panel-heading-name">' +
'<input type="text" class="form-column-title" name="form_element_column_title_'+i+'" value="Column '+i+'" data-validate="isText" onfocus="if(this.value == \'Column '+i+'\') { this.value = \'\'; }" onblur="if(this.value == \'\') { this.value = \'Column 1\'; }"></div></header>' +
'<section class="filter_list"><ul class="list-unstyled droppable sortable connectedSortable"></ul></section>' +
'</section>' +
'</section>');
} else {
//$('*[data-column="'+count+'"]').removeClass('col-lg-12 col-lg-6 col-lg-4');
//$('*[data-column="'+count+'"]').addClass('col-lg-'+col_width);
}
count++;
}
for (i=count; i <= 3; i++ ) {
if ($('*[data-column="'+count+'"]').length > 0) {
// delete it
$('*[data-column="'+count+'"]').remove();
}
count++;
}
$( ".sortable" ).sortable( "destroy" );
$( '.sortable' ).sortable({
connectWith: '.sortable',
placeholder: 'ui-state-highlight',
forcePlaceholderSize: true,
dropOnEmpty: true,
opacity: 0.8,
tolerance: 'pointer'
}).disableSelection();
$('#text_field_form').fadeOut( 'fast', function(e) {
$('#form_element_buttons').empty();
$( "select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]").val('DEFAULT');
});
}
});
$('#ROJA45_QUOTATIONSPRO_FORM_ELEMENT').change( function (e) {
e.preventDefault();
var element = $( "select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT] option:selected").val();
var cols = $( "select[name=ROJA45_QUOTATIONSPRO_NUM_COL] option:selected").val();
$('.field_elements_form').fadeOut( 'fast', function(e) {
$('#form_element_buttons').empty();
$( 'select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]').val('DEFAULT');
$( 'select[name=form_element_required]').val('0');
$( 'select[name=form_element_validation]').val('none');
$(this)[0].reset();
});
switch (element) {
case 'DEFAULT':
$('#text_field_form').fadeOut( 'fast', function(e) {
$('.form_element_buttons').empty();
});
break;
case 'TEXT':
roja45quotationsprofree.selectElement('#text_field_form', element);
break;
case 'TEXTAREA':
roja45quotationsprofree.selectElement('#textarea_field_form', element);
break;
}
});
$('.form_element_contents').on('change', function(e) {
e.preventDefault();
var val = $(this).val();
$('.field-dropdown-custom').hide();
if (val == "0") {
// clear options
$('.field-dropdown-custom textarea').val('');
} else if (val == "1") {
$('.field-dropdown-custom').show();
} else if (val == "2") {
// countries
}
});
roja45quotationsprofree.initFormDesignerEvents();
});
var roja45quotationsprofree = {
initFormDesignerEvents : function () {
$('.edit-configuration').off('click').on('click', function(e) {
e.preventDefault();
roja45quotationsprofree.editConfiguration($(this));
});
$('.delete-configuration').off('click').on('click', function(e) {
e.preventDefault();
roja45quotationsprofree.deleteElement($(this));
});
},
selectElement : function( form, element ) {
var cols = $("select[name=ROJA45_QUOTATIONSPRO_NUM_COL] option:selected").val();
$(form + ' #form_element_buttons').empty();
var i = 0;
for (i = 1; i <= cols; i++) {
var width = (12 / cols);
$(form + ' #form_element_buttons').append('<a href="#" data-col="' + i + '" class="addFieldToColumn btn btn-default btn btn-default" style="margin-right: 10px;"><i class="process-icon-edit"></i>Add To Column ' + i + '</a>');
}
$('.addFieldToColumn').on('click', function (e) {
e.preventDefault();
var col = $(this).data('col');
var form_name = '#' + $(this).closest('form').attr('id');
$(form_name + ' .alert.alert-danger').fadeOut('fast', function () {
$(form_name + ' .alert.alert-danger').empty();
if (roja45quotationsprofree.validateElementForm(form_name)) {
var fields = $(form_name).serialize();
roja45quotationsprofree.addElementToColumn(col, element, $(form_name + ' input[name=form_element_name]').val(), fields);
$(form_name).fadeOut('fast', function (e) {
$(form_name + ' #form_element_buttons').empty();
$(form_name + ' select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]').val('DEFAULT');
$(form_name + ' select[name=form_element_required]').val('NO');
$(form_name + ' select[name=form_element_validation]').val('none');
$(form_name)[0].reset();
});
$(this).closest('form').find("input[type=text], textarea").val("");
$(this).closest('form').find('.form-ok').removeClass('form-ok');
$(this).closest('form').find('.form-error').removeClass('form-error');
$('body').scrollTo('#QUOTATION_FORM_ELEMENTS', 500);
}
});
});
$(form).fadeIn('fast', function (e) {
});
},
addElementToColumn : function (column, type, name, config) {
// TODO - Check whether name already exists, add a number to it.
var id = '';
if ( $('#form_design_columns #' +name+'_'+column).length > 0 ) {
id = name+'_'+column+'_' + $('#form_design_columns #'+ name+'_'+column).length +1;
} else {
id = name+'_'+column;
}
id = id.toLowerCase().replace(/\s+/g, '');
$('#form_design_column_' + column + ' .sortable' ).append('<li id="' + id + '" class="filter_list_item" draggable="true" data-id="' + id + '" data-type="' + type + '" data-name="' + name + '"data-column="'+column+'"> \
<input type="hidden" name="configuration" value="' + config + '"/> \
<input type="hidden" name="id" value="' + id + '"/> \
<input type="hidden" name="name" value="' + name + '"/> \
<input type="hidden" name="type" value="' + type + '"/> \
<div class="col-lg-1 drag-icon"><h4><i class="icon-bars"></i></h4></div> \
<div class="col-lg-5"><h4><span class="panel-heading-name">'+name+'</span></div>\
<div class="col-lg-4"><h4><span class="panel-heading-type">['+ type +']</span></h4></div>\
<div class="col-lg-2"><span class="panel-heading-action pull-right">\
<a class="list-toolbar-btn edit-configuration" href="#" title="Configure"><i class="process-icon-configure"></i></a> \
<a class="list-toolbar-btn delete-configuration" href="#" title="Delete"><i class="process-icon-delete"></i></a></span></div></li>');
$( ".sortable" ).sortable( "destroy" );
$( '.sortable' ).sortable({
connectWith: '.sortable',
placeholder: 'ui-state-highlight',
forcePlaceholderSize: true,
dropOnEmpty: true,
opacity: 0.8,
tolerance: 'pointer'
}).disableSelection();
roja45quotationsprofree.initFormDesignerEvents();
},
editConfiguration : function ( ele ) {
$('.field_elements_form').hide();
var type = ele.closest('.filter_list_item').attr('data-type');
var id = ele.closest('.filter_list_item').attr('data-id');
var serialized = $('#'+id+' input[name=configuration]').val();
var form = '#' + $('*[data-form-type="'+type+'"]').attr('id');
$.each(serialized.split('&'), function (index, elem) {
var vals = elem.split('=');
$(form + " [name='" + vals[0] + "']").val(decodeURIComponent( vals[1].replace(/\+/g , " ") ));
if ($(form + " [name='" + vals[0] + "']").is('select')) {
$(form + " [name='" + vals[0] + "']").trigger('change');
};
});
$(form+' #form_element_buttons').empty();
$(form+' #form_element_buttons').append('<a href="#" data-field="'+ id + '" class="updateField btn btn-default btn btn-default" style="margin-right: 10px;"><i class="process-icon-edit"></i>Apply</a>');
$(form+' #form_element_buttons').append('<a href="#" class="cancelEdit btn btn-default btn btn-default" style="margin-right: 10px;"><i class="process-icon-edit"></i>Cancel</a>');
$('.updateField').on('click', function(e) {
e.preventDefault();
var field = $(this).data('field');
var form_name = '#'+$(this).closest('form').attr('id');
$(form_name+' .alert.alert-danger').fadeOut('fast', function() {
$(form_name+' .alert.alert-danger').empty();
if (roja45quotationsprofree.validateElementForm( form_name )) {
var fields = $(form_name).serialize();
$('#'+id+' input[name=configuration]').val(fields);
$('#'+id+' .panel-heading-name').html($(form_name+' input[name=form_element_name]').val());
$('#'+id+' input[name=name]').val($(form_name+' input[name=form_element_name]').val());
$(form_name).fadeOut( 'fast', function(e) {
$(form+' #form_element_buttons').empty();
$(form+' select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]').val('DEFAULT');
$(form+' select[name=form_element_required]').val('NO');
$(form+' select[name=form_element_validation]').val('none');
});
$(this).closest('form').find("input[type=text], textarea").val("");
$(this).closest('form').find('.form-ok').removeClass('form-ok');
$(this).closest('form').find('.form-error').removeClass('form-error');
}
});
});
$('.cancelEdit').on( 'click', function(e) {
var form_name = '#'+$(this).closest('form').attr('id');
$(form_name).fadeOut( 'fast', function(e) {
$('#form_element_buttons').empty();
$( 'select[name=ROJA45_QUOTATIONSPRO_FORM_ELEMENT]').val('DEFAULT');
$( 'select[name=form_element_required]').val('NO');
$( 'select[name=form_element_validation]').val('none');
$(form_name)[0].reset();
});
$(this).closest('form').find("input[type=text], textarea").val("");
$(this).closest('form').find('.form-ok').removeClass('form-ok');
$(this).closest('form').find('.form-error').removeClass('form-error');
$('body').scrollTo('#QUOTATION_FORM_ELEMENTS', 500);
});
$('*[data-form-type="'+type+'"]').fadeIn( 'fast', function(e) {
});
},
deleteElement : function (ele) {
var column = ele.closest('.filter_list_item').attr('data-column');
var id = ele.closest('.filter_list_item').attr('data-id');
$('#form_design_column_' + column + ' #'+id).fadeOut('fast', function(e) {
$(this).remove();
});
},
saveConfiguration : function (ele) {
roja45global.toggleModal();
},
saveForm : function (ele) {
roja45global.toggleModal();
var config = {};
config['num_columns'] = $('input[name=ROJA45_QUOTATIONSPRO_NUM_COL]').val();
config['form_id'] = $('input[name=ROJA45_QUOTATIONSPRO_FORM_ID]').val();
config.columns = [];
var column_titles = '';
$('.form-column-title').each( function (i) {
var val = $(this).val();
var id = $(this).attr('name');
if ( val != ('Column ' + (i+1)) ) {
column_titles += id + '=' + val + '&';
} else {
column_titles += id + '=&';
}
});
config['titles'] = column_titles.substring(0, column_titles.length-1);
$('.form-column').each( function() {
var column = {};
var col = $(this).data('column');
column.num = col;
// if column not default value, set name
var col_name = $('input[name=form_element_column_title_'+col+']').val();
if (col_name != 'Column '+col) {
column.name = col_name;
}
column.fields = [];
$(this).find('.filter_list_item').each( function(i) {
var field = {};
field.pos = i;
$(this).find('input').each(function() {
field[$(this).attr('name')] = $(this).val();
});
column.fields[i] = field;
});
config.columns[col] = column;
});
if (config) {
var json = JSON.stringify(config);
$('input[name=ROJA45_QUOTATIONSPRO_FORM]').val(json);
}
},
validateElementForm : function (form) {
var validate_fields = $(form+ ' .is_required');
if (validate_fields.length > 0) {
$(form+ ' .alert.alert-danger').append('<ol></ol>');
var error_count = 0;
validate_fields.each(function( index ) {
var function_name = 'validate_' + $(this).data('validate');
var string_to_test = $(this).val();
if (typeof window[function_name] == 'function') {
var res = window[function_name](string_to_test);
if (!res) {
error_count++;
var field_name = $(this).closest('.form-group').find('label span').text();
if ($(this).attr('data-iso-code')) {
field_name = field_name + ' ('+$(this).attr('data-iso-code')+')';
}
$(form+ ' .alert.alert-danger ol').append('<li><b>'+field_name+'</b></li>');
};
}
});
if (validate_fields.length == 1)
$(form+ ' .alert.alert-danger').prepend('<p>There is 1 error</p>');
else
$(form+ ' .alert.alert-danger').prepend('<p>There are ' + error_count + ' errors</p>');
}
if (error_count == 0) {
return true;
} else {
$(form+ ' .alert.alert-danger').fadeIn();
return false;
}
},
};