File "wpdatatables_constructor.js"
Full Path: /var/www/bvnghean.vn/save_bvnghean.vn/wp-content/plugins/wpDataTables_v1.6.1/assets/js/wpdatatables/wpdatatables_constructor.js
File size: 34.71 KB
MIME-type: text/plain
Charset: utf-8
var constructedTableData = {
name: '',
method: '',
columnCount: 0,
columns: []
};
var columnTypes = [
{ name: 'input', value: 'One-line string' },
{ name: 'memo', value: 'Multi-line string' },
{ name: 'select', value: 'One-line selectbox' },
{ name: 'multiselect', value: 'Multi-line selectbox' },
{ name: 'integer', value: 'Integer' },
{ name: 'float', value: 'Float' },
{ name: 'date', value: 'Date' },
{ name: 'link', value: 'URL link' },
{ name: 'email', value: 'E-mail link' },
{ name: 'image', value: 'Image' },
{ name: 'file', value: 'Attachment' }
];
var defaultPostColumns = [
'ID',
'post_date',
'post_date_gmt',
'post_author',
'post_title',
'title_with_link_to_post',
'thumbnail_with_link_to_post',
'post_content',
'post_content_limited_100_chars',
'post_excerpt',
'post_status',
'comment_status',
'ping_status',
'post_password',
'post_name',
'to_ping',
'pinged',
'post_modified',
'post_modified_gmt',
'post_content_filtered',
'post_parent',
'guid',
'menu_order',
'post_type',
'post_mime_type',
'comment_count'
]
var metaKeysByPostTypes = {};
var aceEditor = null;
(function($){
var custom_uploader;
var defaultColumnData = {
'name': wdt_constructor_strings.new_column_name,
'type': 'input'
}
/**
* Sortable handler for the columns
*/
function applySortable(){
$('td.columnsContainer').sortable({
});
}
/**
* Next step handler
*/
$('#nextStep').click(function(e){
e.preventDefault();
e.stopImmediatePropagation();
var $curStepBlock = $('div.constructorStep:visible:eq(0)');
var curStep = $curStepBlock.data('step');
switch(curStep){
case 1:
// Table input method selection
if(!$('input[name="wpdatatables_type_input"]:checked').length) { return; }
$curStepBlock.hide(300);
$('#prevStep').show();
var inputMethod = $('input[name="wpdatatables_type_input"]:checked').val();
constructedTableData.method = inputMethod;
switch(inputMethod){
case 'manual':
$('#table_columns').change();
$('#table_name').change();
$('div.step11').show(300);
$('#nextStep').hide();
$('#createAndEdit').show();
applySortable();
break;
case 'file':
$('div.step12').show(300);
break;
case 'wp':
$('#wpdatatables_post_type').selecter();
$('#wpdatatables_post_columns').selecter();
$('div.step13').show(300);
break;
case 'mysql':
$('#wpdatatables_mysql_tables').selecter();
$('#wpdatatables_mysql_tables_columns').selecter();
$('div.step14').show(300);
break;
}
break;
case '1-2':
// Validation
if( !$('#wpdatatables_wizzard_fileupload').val() ){
$('#fileupload_file_empty_error').html( wdt_constructor_strings.fileupload_empty_file );
$('#fileupload_file_empty_error').show();
return;
}else{
$('#fileupload_file_empty_error').hide();
}
constructedTableData.file = $('#wpdatatables_wizzard_fileupload').val();
$curStepBlock.hide(300);
$('#wdtPreloadLayer').fadeIn(300)
generateAndPreviewFileTable();
$('#nextStep').hide();
$('#createAndEdit').show();
break;
case '1-3':
// Validation
if( !$('#wpdatatables_post_columns').val() ){
$('#wpdatatables_post_columns').parent().addClass('error');
return;
}else{
$('#wpdatatables_post_columns').parent().removeClass('error');
}
// Go to preview of WP query
$curStepBlock.hide(300);
$('#wdtPreloadLayer').fadeIn(300)
generateAndPreviewWPQuery();
break;
case '1-4':
// Validation
if( !$('#wpdatatables_mysql_tables_columns').val() ){
$('#wpdatatables_mysql_tables_columns').parent().addClass('error');
return;
}else{
$('#wpdatatables_mysql_tables_columns').parent().removeClass('error');
}
// Go to preview of MySQL query
$curStepBlock.hide(300);
$('#wdtPreloadLayer').fadeIn(300)
generateAndPreviewMySQLQuery();
break;
}
});
/**
* Previous step handler
*/
$('#prevStep').click(function(e){
e.preventDefault();
e.stopImmediatePropagation();
var $curStepBlock = $('div.constructorStep:visible:eq(0)');
var curStep = $curStepBlock.data('step');
if((curStep == '1-1') || (curStep == '1-2')){
// Table input method selection
$curStepBlock.hide(300);
$('div.step1').show(300);
$('#nextStep').show();
$('#createAndEdit').hide();
}
if(curStep == '2-2'){
$curStepBlock.hide(300);
$('div.step12').show(300);
$('#createAndEdit').hide();
$('#saveAndOpen').hide(300);
$('#nextStep').show(300);
}
if(curStep == '2-3'){
$curStepBlock.hide(300);
if( constructedTableData.method == 'wp' ){
$('div.step13').show(300);
}else if( constructedTableData.method == 'mysql' ){
$('div.step14').show(300);
}
$('#saveAndOpen').hide(300);
$('#nextStep').show(300);
}
if((curStep == '1-4') || (curStep == '1-3')){
$curStepBlock.hide(300);
$('div.step1').show(300);
$('#nextStep').show(300);
}
});
/**
* Change column count for manual tables
*/
$('#table_columns').change(function(e){
e.preventDefault();
newColumnCount = parseInt($(this).val());
if(newColumnCount > constructedTableData.columnCount){
// We need to add more columns
for(var i = constructedTableData.columnCount; i < newColumnCount; i++){
$( 'td.columnsContainer' ).append( getColumnHtml( defaultColumnData ) );
}
}else if(newColumnCount < constructedTableData.columnCount){
// We need to remove some columns
for(var i = constructedTableData.columnCount-1; i > newColumnCount-1; i--){
$('td.columnsContainer div.columnBlock:eq('+i+')').remove();
}
}
constructedTableData.columnCount = newColumnCount;
});
/**
* Add a column with "+"
*/
$(document).on('click', 'button.addColumnBlock', function(e){
e.preventDefault();
e.stopImmediatePropagaion;
$('#table_columns').val( parseInt($('#table_columns').val()) + 1 ).change();
});
/**
* Remove a column with "X"
*/
$(document).on('click','button.removeColumnBlock',function(e){
e.preventDefault();
e.stopImmediatePropagation();
$(this).closest('div.columnBlock').remove();
$('#table_columns').val( parseInt( $('#table_columns').val() ) - 1 );
constructedTableData.columnCount = parseInt( $('#table_columns').val() );
})
/**
* Change table name for manual tables
*/
$('#table_name').change(function(e){
e.preventDefault()
constructedTableData.name = $(this).val();
});
/**
* Change table name for tables imported from files
*/
$(document).on('change','#file_table_name',function(e){
e.preventDefault()
constructedTableData.name = $(this).val();
});
/**
* Show the "possible values" tagger for selectbox-type inputs
*/
$(document).on('change','div.columnType select',function(e){
var $columnBlock = $(this).closest('div.columnBlock');
if( ( $(this).val() == 'select' ) || ( $(this).val() == 'multiselect' ) ){
$columnBlock.find('tr.columnPossibleValuesBlock').show();
if( $(this).closest('div.columnBlock').find('tr.columnPossibleValuesBlock div.tagsinput').length > 0 ){ return; }
$columnBlock.find('div.columnDefaultValue').find('input').replaceWith('<select><option value=""></option></select>');
$columnBlock.find('div.columnPossibleValues input').tagsInput({
defaultText: '+',
width: 195,
height: 50,
delimiter: [',',';','|'],
onAddTag: function(tag){
$(this).closest('div.columnBlock').find('div.columnDefaultValue select').append('<option value="'+tag+'">'+tag+'</option>');
},
onRemoveTag: function(tag){
$(this).closest('div.columnBlock').find('div.columnDefaultValue select option[value="'+tag+'"]').remove();
}
}).hide();
}else{
$(this).closest('div.columnBlock').find('tr.columnPossibleValuesBlock').hide();
$(this).closest('div.columnBlock').find('div.columnDefaultValue').find('select').replaceWith('<input type="text" />');
}
});
/**
* Get HTML for a column block
*/
var getColumnHtml = function(columnData){
var columnTemplate = $.templates("#columnBlockTmpl");
var columnBlockHtml = columnTemplate.render(columnData, { columnTypes: columnTypes });
$('.columnType select',columnBlockHtml).val(columnData.type);
return columnBlockHtml;
}
/**
* Handler which creates the table and opens it in editor
*/
$('#createAndEdit').click(function(e){
e.preventDefault();
if(constructedTableData.method == 'manual'){
// Collect the metadata on columns
constructedTableData.columns = [];
$('div.columnBlock').each(function(){
constructedTableData.columns.push({
name: $(this).find('div.columnName input').val(),
type: $(this).find('div.columnType select').val(),
possible_values: $(this).find('div.columnPossibleValues input').val(),
default_value: $(this).find('div.columnDefaultValue select').length > 0 ?
$(this).find('div.columnDefaultValue select').val()
: $(this).find('div.columnDefaultValue input').val()
});
});
$.ajax({
url: ajaxurl,
type: 'POST',
data: {
action: 'wpdatatables_create_and_open_in_editor',
table_data: constructedTableData
},
success: function(link){
window.location = link;
}
})
}
if(constructedTableData.method == 'file'){
// Validation
var valid = true;
$('table.wdt_file_based_preview thead input.columnName').each(function(){
if($(this).val() == ''){
$(this).addClass('error');
valid = false;
}else{
$(this).removeClass('error');
}
});
if( valid ){
$('div.step22').hide(300);
$('#wdtPreloadLayer').fadeIn(300);
$('table.wdt_file_based_preview td.columnsContainer div.columnBlock').each(function(){
if( $(this).data('header') !== '' ){
constructedTableData.columns.push({
orig_header: typeof $(this).data('header') !== 'undefined' ? $(this).data('header') : '%%NEW_COLUMN%%',
name: $(this).find('div.columnName input').val(),
type: $(this).find('div.columnType select').val(),
possible_values: $(this).find('div.columnPossibleValues input').val(),
default_value: $(this).find('div.columnDefaultValue input').length > 0
? $(this).find('div.columnDefaultValue input').val() : $(this).find('div.columnDefaultValue select').val()
});
}
});
$('#file_table_name').change();
$('#wdtPreloadLayer').fadeIn(300)
readFileDataAndEditTable();
}
}
});
/**
* Show Possible Values editor for the selectbox-inputs
*/
/**
* Uploader
*/
$('#wpdatatables_wizzard_fileupload_button').click(function(e) {
e.preventDefault();
//If the uploader object has already been created, reopen the dialog
if (custom_uploader) {
custom_uploader.open();
return;
}
// Extend the wp.media object
custom_uploader = wp.media.frames.file_frame = wp.media({
title: wdt_constructor_strings.select_excel_csv,
button: {
text: wdt_constructor_strings.choose_file
},
multiple: false,
library: {
type: 'application/vnd.ms-excel,text/csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
}
});
// When a file is selected, grab the URL and set it as the text field's value
custom_uploader.on('select', function() {
attachment = custom_uploader.state().get('selection').first().toJSON();
$('#wpdatatables_wizzard_fileupload').val(attachment.url);
});
//Open the uploader dialog
custom_uploader.open();
});
/**
* Add post types from the selecter
*/
$('#wpdatatables_post_type').change(function(e){
e.preventDefault;
constructedTableData.post_types = $(this).val();
var availablePostColumns = [];
for(var i in constructedTableData.post_types){
for(var j in defaultPostColumns){
availablePostColumns.push(constructedTableData.post_types[i]+'.'+defaultPostColumns[j]);
}
if( typeof wdt_post_meta_by_post_types[constructedTableData.post_types[i]] !== 'undefined'){
for(var j in wdt_post_meta_by_post_types[constructedTableData.post_types[i]]){
availablePostColumns.push(constructedTableData.post_types[i]+'.meta.'+wdt_post_meta_by_post_types[constructedTableData.post_types[i]][j]);
}
}
if( typeof wdt_taxonomies_by_post_types[constructedTableData.post_types[i]] !== 'undefined'){
for(var j in wdt_taxonomies_by_post_types[constructedTableData.post_types[i]]){
availablePostColumns.push(constructedTableData.post_types[i]+'.taxonomy.'+wdt_taxonomies_by_post_types[constructedTableData.post_types[i]][j]);
}
}
}
if( constructedTableData.post_types
&& ( constructedTableData.post_types.length > 1 )
&& ( constructedTableData.post_types.indexOf('all') !== -1 ) ){
$(this).val('all').change().selecter('update');
}
if(constructedTableData.post_types && constructedTableData.post_types.length > 1){
$('.wdt_handle_post_types').fadeIn(300);
$('#wpdatatables_posts_relations_join').attr('checked','checked').change();
}else{
$('.wdt_handle_post_types').fadeOut(300).removeAttr('checked').change();
$('.wdt_define_relations').fadeOut(300);
}
var postColumnTemplate = $.templates("#postColumnTemplate");
var postColumnHtml = postColumnTemplate.render({ availablePostColumns: availablePostColumns });
$('#wpdatatables_post_columns').html(postColumnHtml);
$('#wpdatatables_post_columns').selecter('update');
});
/**
* Helper function to return array of available columns by post type
*/
function wdt_get_columns_by_post_type(post_type, include_post_type_name, include_meta_and_tax){
var arr = [];
if (typeof include_post_type_name == 'undefined'){
include_post_type_name = false;
}
if (typeof include_meta_and_tax == 'undefined'){
include_meta_and_tax = true
}
var prefix = include_post_type_name ? post_type+'.' : '';
for(var j in defaultPostColumns){
arr.push(prefix+defaultPostColumns[j]);
}
if( include_meta_and_tax ){
if( typeof wdt_post_meta_by_post_types[post_type] !== 'undefined' ){
for(var j in wdt_post_meta_by_post_types[post_type]){
arr.push(prefix+'meta.'+wdt_post_meta_by_post_types[post_type][j]);
}
}
if( typeof wdt_taxonomies_by_post_types[post_type] !== 'undefined'){
for(var j in wdt_taxonomies_by_post_types[post_type]){
arr.push(prefix+'taxonomy.'+wdt_taxonomies_by_post_types[post_type][j]);
}
}
}
return arr;
}
/**
* Add the columns to table
*/
$('#wpdatatables_post_columns').change(function(e){
e.preventDefault;
constructedTableData.post_columns = $(this).val();
$('.wdt_define_relations div.relationsContainer').html('');
// Generate HTML block for relations constructor
for(var i in constructedTableData.post_types){
var post_type_block = { post_type: constructedTableData.post_types[i], post_type_columns: [], other_post_type_columns: [] };
post_type_block.post_type_columns = wdt_get_columns_by_post_type(constructedTableData.post_types[i], false, false);
for(var j in constructedTableData.post_types){
if(constructedTableData.post_types[i] == constructedTableData.post_types[j]){
continue;
}
post_type_block.other_post_type_columns = post_type_block.other_post_type_columns.concat(wdt_get_columns_by_post_type(constructedTableData.post_types[j],true, true));
}
var relationBlockTemplate = $.templates("#relationBlockTemplate");
var relationBlockHtml = relationBlockTemplate.render(post_type_block);
$('.wdt_define_relations div.relationsContainer').append(relationBlockHtml);
}
$('.wdt_define_relations div.relationsContainer select').selecter();
});
/**
* Set the WP-based wpDataTable to use a view to store the query
*/
$('#wpdatatables_create_view_use_serverside').change(function(e){
e.preventDefault();
e.stopImmediatePropagation();
constructedTableData.prepare_view = $(this).is(':checked') ? '1' : '0';
});
/**
* Show the relations constructor when needed
*/
$('input[name="wpdatatables_posts_relations"]').change(function(e){
e.preventDefault();
if($('#wpdatatables_posts_relations_join').is(':checked')){
$('.wdt_define_relations').fadeIn(300);
}else{
$('.wdt_define_relations').fadeOut(300);
}
});
/**
* Add a "WHERE" condition to the WP POSTS based table
*/
$('#wdt_posts_add_where_condition').click(function(e){
e.preventDefault();
// Generate HTML block for relations constructor
var where_block = { post_type_columns: [] };
for(var i in constructedTableData.post_types){
where_block.post_type_columns = where_block.post_type_columns.concat( wdt_get_columns_by_post_type( constructedTableData.post_types[i], true ) );
}
var whereBlockTemplate = $.templates("#whereConditionTemplate");
var whereBlockHtml = whereBlockTemplate.render(where_block);
$('.wdt_define_conditions div.conditionsContainer').append(whereBlockHtml);
$('.wdt_define_conditions div.conditionsContainer select').selecter();
});
/**
* Delete a "WHERE" condition
*/
$(document).on('click','button.deleteConditionPosts',function(e){
e.preventDefault();
e.stopImmediatePropagation();
$(this).closest('div.post_where_blocks').remove();
});
/**
* Add a grouping rule to the WP POSTS based table
*/
$('#wdt_posts_add_grouping_rule').click(function(e){
e.preventDefault();
// Generate HTML block for the grouping rule constructor
var grouping_rule_block = { post_type_columns: [] };
grouping_rule_block.post_type_columns = $('#wpdatatables_post_columns').val();
var groupingRuleBlockTemplate = $.templates("#groupingRuleTemplate");
var groupingRuleHtml = groupingRuleBlockTemplate.render(grouping_rule_block);
$('.wdt_define_grouping div.groupingContainer').append(groupingRuleHtml);
$('.wdt_define_grouping div.groupingContainer select').selecter();
});
/**
* Delete a grouping rule
*/
$(document).on('click','button.deleteGroupingRulePosts',function(e){
e.preventDefault();
$(this).closest('div.post_grouping_rule_blocks').remove();
})
/**
* Preview a table based on the file
*/
function generateAndPreviewFileTable(){
$.ajax({
url: ajaxurl,
data: {
action: 'wpdatatables_preview_file_table',
table_data: constructedTableData
},
type: 'post',
dataType: 'json',
success: function(data){
if ( data.result == 'error' ) {
$('#wdtPreloadLayer').hide();
$('div.step12').show(300);
$('#createAndEdit').hide();
$('#nextStep').show();
$('#fileupload_file_empty_error').html( data.message );
$('#fileupload_file_empty_error').show();
} else {
$('#fileupload_file_empty_error').hide();
$('#wdtPreloadLayer').hide();
$('div.previewFileTable').html(data.message);
$('#table_columns').val(parseInt($('div.columnBlock').length));
constructedTableData.columnCount = parseInt($('div.columnBlock').length);
$('div.step22').show(300);
applySortable();
}
}
})
};
/**
* Generate a query to WP database and preview it
*/
function generateAndPreviewWPQuery(){
constructedTableData.handle_post_types = $('#wpdatatables_posts_relations_join').is(':checked') ? 'join' : 'union';
if(constructedTableData.handle_post_types == 'join'){
constructedTableData.join_rules = [];
$('div.relationsContainer div.post_blocks').each(function(){
var join_rule = {};
join_rule.initiator_post_type = $(this).find('select.relationInitiatorColumn').data('post_type');
join_rule.initiator_column = $(this).find('select.relationInitiatorColumn').val();
join_rule.connected_column = $(this).find('select.relationConnectedColumn').val();
join_rule.type = $(this).find('input[type="checkbox"]').is(':checked') ? 'inner' : 'left';
constructedTableData.join_rules.push(join_rule);
});
}
constructedTableData.where_conditions = [];
$('div.conditionsContainer div.post_where_blocks').each(function(){
var where_condition = {};
where_condition.column = $(this).find('select.whereConditionColumn').val();
where_condition.operator = $(this).find('select.whereOperator').val();
where_condition.value = $(this).find('input[type="text"]').val();
constructedTableData.where_conditions.push(where_condition);
});
constructedTableData.grouping_rules = [];
$('div.groupingContainer div.post_grouping_rule_blocks select').each(function(){
constructedTableData.grouping_rules.push( $(this).val() );
});
$.ajax({
url: ajaxurl,
data: {
action: 'wpdatatables_generate_wp_based_query',
table_data: constructedTableData
},
type: 'post',
dataType: 'json',
success: function(data){
aceEditor.setValue(data.query);
constructedTableData.query = data.query;
$('div.previewWPTable').html(data.preview);
$('#wdtPreloadLayer').fadeOut(300)
$('div.step23').show(300);
$('#nextStep').hide(300);
$('#saveAndOpen').show(300);
}
})
}
$('button.refreshWpQuery').click(function(e){
e.preventDefault();
$('#wdtPreloadLayer').fadeIn(300)
$.ajax({
url: ajaxurl,
data: {
action: 'wpdatatables_refresh_wp_query_preview',
query: aceEditor.getValue()
},
type: 'post',
success: function(data){
$('div.previewWPTable').html(data);
$('#wdtPreloadLayer').fadeOut(300)
}
})
});
/**
* Generate a query to MySQL database and preview it
*/
function generateAndPreviewMySQLQuery(){
constructedTableData.join_rules = [];
constructedTableData.where_conditions = [];
constructedTableData.grouping_rules = [];
/**
* Join rules
*/
$('div.mysqlRelationsContainer div.mysql_table_blocks').each(function(){
var join_rule = {};
join_rule.initiator_table = $(this).find('select.relationInitiatorColumn').data('table');
join_rule.initiator_column = $(this).find('select.relationInitiatorColumn').val();
join_rule.connected_column = $(this).find('select.relationConnectedColumn').val();
join_rule.type = $(this).find('input[type="checkbox"]').is(':checked') ? 'inner' : 'left';
constructedTableData.join_rules.push( join_rule );
});
/**
* Where block
*/
$('div.mysqlConditionsContainer div.post_where_blocks').each(function(){
var where_condition = {};
where_condition.column = $(this).find('select.whereConditionColumn').val();
where_condition.operator = $(this).find('select.whereOperator').val();
where_condition.value = $(this).find('input[type="text"]').val();
constructedTableData.where_conditions.push(where_condition);
});
/**
* Grouping rules
*/
$('div.mysqlGroupingContainer div.post_grouping_rule_blocks select').each(function(){
constructedTableData.grouping_rules.push( $(this).val() );
});
$.ajax({
url: ajaxurl,
data: {
action: 'wpdatatables_generate_mysql_based_query',
table_data: constructedTableData
},
type: 'post',
dataType: 'json',
success: function(data){
aceEditor.setValue(data.query);
constructedTableData.query = data.query;
$('div.previewWPTable').html(data.preview);
$('#wdtPreloadLayer').fadeOut(300)
$('div.step23').show(300);
$('#nextStep').hide(300);
$('#saveAndOpen').show(300);
}
})
}
/**
* Save the current query and open in wpDataTable configurator
*/
$('#saveAndOpen').click(function(e){
e.preventDefault();
$('#wdtPreloadLayer').fadeIn(300);
$.ajax({
url: ajaxurl,
data: {
action: 'wpdatatables_constructor_generate_wdt',
table_data: constructedTableData
},
type: 'post',
success: function(data){
window.location = data;
}
})
})
/**
* Get the column list for selected tables
*/
$('#wpdatatables_mysql_tables').change(function(e){
e.preventDefault();
var tables = $(this).val();
var availableTableColumns = [];
if( ( tables != null ) && ( tables.length > 1 ) ){
$('.wdt_define_mysql_relations').show(300);
}else{
$('.wdt_define_mysql_relations').hide(300);
}
$.ajax({
url: ajaxurl,
data: {
action: 'wpdatatables_constructor_get_mysql_table_columns',
tables: tables
},
type: 'post',
dataType: 'json',
success: function(availableTableColumns){
var mysqlTableColumnTemplate = $.templates("#mysqlTableColumnTemplate");
var mysqlTableColumnHtml = mysqlTableColumnTemplate.render({ availableTableColumns: availableTableColumns.all_columns });
$('#wpdatatables_mysql_tables_columns').html(mysqlTableColumnHtml);
$('#wpdatatables_mysql_tables_columns').selecter('update');
$('.wdt_define_mysql_relations div.mysqlRelationsContainer').html('');
// Generate HTML block for relations constructor
for( var i in availableTableColumns.sorted_columns ){
var mysql_table_block = { table: i, columns: [], other_table_columns: [] };
for( var j in availableTableColumns.sorted_columns ){
if( i == j ){
for( var k in availableTableColumns.sorted_columns[i] ){
mysql_table_block.columns.push( availableTableColumns.sorted_columns[i][k].replace( i+'.', '' ) );
}
continue;
}
for( var k in availableTableColumns.sorted_columns[j] ){
mysql_table_block.other_table_columns.push( availableTableColumns.sorted_columns[j][k] );
}
}
var relationBlockTemplate = $.templates("#mysqlRelationBlockTemplate");
var relationBlockHtml = relationBlockTemplate.render( mysql_table_block );
$('.wdt_define_mysql_relations div.mysqlRelationsContainer').append(relationBlockHtml);
$('.wdt_define_mysql_relations div.mysqlRelationsContainer select').selecter();
}
}
})
});
/**
* Generate the Excel/CSV based table and go to editor
*/
function readFileDataAndEditTable(){
$.ajax({
url: ajaxurl,
data: {
action: 'wpdatatables_constructor_read_file_data',
table_data: constructedTableData
},
type: 'post',
success: function(link){
window.location = link;
}
})
}
/**
* Add the selected MySQL columns to the constructed table data
*/
$('#wpdatatables_mysql_tables_columns').change(function(e){
e.preventDefault();
constructedTableData.mysql_columns = $(this).val();
});
/**
* Add "Where" block for MySQL based tables
*/
$('#wdt_mysql_add_where_condition').click(function(e){
e.preventDefault();
// Generate HTML block for relations constructor
var where_block = { post_type_columns: $("#wpdatatables_mysql_tables_columns option").map(function() { return $(this).val(); }).toArray() };
var whereBlockTemplate = $.templates("#whereConditionTemplate");
var whereBlockHtml = whereBlockTemplate.render(where_block);
$('.wdt_define_mysql_conditions div.mysqlConditionsContainer').append(whereBlockHtml);
$('.wdt_define_mysql_conditions div.mysqlConditionsContainer select').selecter();
})
/**
* Add a grouping rule for MySQL based tables
*/
$('#wdt_mysql_add_grouping_rule').click(function(e){
e.preventDefault();
// Generate HTML block for the grouping rule constructor
var grouping_rule_block = { post_type_columns: [] };
grouping_rule_block.post_type_columns = $('#wpdatatables_mysql_tables_columns').val();
var groupingRuleBlockTemplate = $.templates("#groupingRuleTemplate");
var groupingRuleHtml = groupingRuleBlockTemplate.render(grouping_rule_block);
$('.wdt_define_mysql_grouping div.mysqlGroupingContainer').append(groupingRuleHtml);
$('.wdt_define_mysql_grouping div.mysqlGroupingContainer select').selecter();
});
/**
* Apply syntax highlighter
*/
aceEditor = ace.edit('previewWPQuery');
aceEditor.getSession().setMode("ace/mode/sql");
aceEditor.setTheme("ace/theme/idle_fingers");
})(jQuery);