Merge pull request #14639 from Piyush3079/Mod_Js_Common_Files
Modular code for some of the common files
This commit is contained in:
commit
019bc58ea2
@ -1,14 +0,0 @@
|
|||||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
|
||||||
/**
|
|
||||||
* Conditionally included if framing is not allowed
|
|
||||||
*/
|
|
||||||
if (self === top) {
|
|
||||||
var style_element = document.getElementById('cfs-style');
|
|
||||||
// check if style_element has already been removed
|
|
||||||
// to avoid frequently reported js error
|
|
||||||
if (typeof(style_element) !== 'undefined' && style_element !== null) {
|
|
||||||
style_element.parentNode.removeChild(style_element);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
top.location = self.location;
|
|
||||||
}
|
|
||||||
@ -1,84 +0,0 @@
|
|||||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
|
||||||
/**
|
|
||||||
* @fileoverview Implements the shiftkey + click remove column
|
|
||||||
* from order by clause funcationality
|
|
||||||
* @name columndelete
|
|
||||||
*
|
|
||||||
* @requires jQuery
|
|
||||||
*/
|
|
||||||
|
|
||||||
function captureURL (url) {
|
|
||||||
var URL = {};
|
|
||||||
url = '' + url;
|
|
||||||
// Exclude the url part till HTTP
|
|
||||||
url = url.substr(url.search('sql.php'), url.length);
|
|
||||||
// The url part between ORDER BY and &session_max_rows needs to be replaced.
|
|
||||||
URL.head = url.substr(0, url.indexOf('ORDER+BY') + 9);
|
|
||||||
URL.tail = url.substr(url.indexOf('&session_max_rows'), url.length);
|
|
||||||
return URL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This function is for navigating to the generated URL
|
|
||||||
*
|
|
||||||
* @param object target HTMLAnchor element
|
|
||||||
* @param object parent HTMLDom Object
|
|
||||||
*/
|
|
||||||
|
|
||||||
function removeColumnFromMultiSort (target, parent) {
|
|
||||||
var URL = captureURL(target);
|
|
||||||
var begin = target.indexOf('ORDER+BY') + 8;
|
|
||||||
var end = target.indexOf(PMA_commonParams.get('arg_separator') + 'session_max_rows');
|
|
||||||
// get the names of the columns involved
|
|
||||||
var between_part = target.substr(begin, end - begin);
|
|
||||||
var columns = between_part.split('%2C+');
|
|
||||||
// If the given column is not part of the order clause exit from this function
|
|
||||||
var index = parent.find('small').length ? parent.find('small').text() : '';
|
|
||||||
if (index === '') {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
// Remove the current clicked column
|
|
||||||
columns.splice(index - 1, 1);
|
|
||||||
// If all the columns have been removed dont submit a query with nothing
|
|
||||||
// After order by clause.
|
|
||||||
if (columns.length === 0) {
|
|
||||||
var head = URL.head;
|
|
||||||
head = head.slice(0,head.indexOf('ORDER+BY'));
|
|
||||||
URL.head = head;
|
|
||||||
// removing the last sort order should have priority over what
|
|
||||||
// is remembered via the RememberSorting directive
|
|
||||||
URL.tail += PMA_commonParams.get('arg_separator') + 'discard_remembered_sort=1';
|
|
||||||
}
|
|
||||||
URL.head = URL.head.substring(URL.head.indexOf('?') + 1);
|
|
||||||
var middle_part = columns.join('%2C+');
|
|
||||||
params = URL.head + middle_part + URL.tail;
|
|
||||||
return params;
|
|
||||||
}
|
|
||||||
|
|
||||||
AJAX.registerOnload('keyhandler.js', function () {
|
|
||||||
$('th.draggable.column_heading.pointer.marker a').on('click', function (event) {
|
|
||||||
var url = $(this).parent().find('input').val();
|
|
||||||
var argsep = PMA_commonParams.get('arg_separator');
|
|
||||||
if (event.ctrlKey || event.altKey) {
|
|
||||||
event.preventDefault();
|
|
||||||
var params = removeColumnFromMultiSort(url, $(this).parent());
|
|
||||||
if (params) {
|
|
||||||
AJAX.source = $(this);
|
|
||||||
PMA_ajaxShowMessage();
|
|
||||||
params += argsep + 'ajax_request=true' + argsep + 'ajax_page_request=true';
|
|
||||||
$.post('sql.php', params, AJAX.responseHandler);
|
|
||||||
}
|
|
||||||
} else if (event.shiftKey) {
|
|
||||||
event.preventDefault();
|
|
||||||
AJAX.source = $(this);
|
|
||||||
PMA_ajaxShowMessage();
|
|
||||||
var params = url.substring(url.indexOf('?') + 1);
|
|
||||||
params += argsep + 'ajax_request=true' + argsep + 'ajax_page_request=true';
|
|
||||||
$.post('sql.php', params, AJAX.responseHandler);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
AJAX.registerTeardown('keyhandler.js', function () {
|
|
||||||
$(document).off('click', 'th.draggable.column_heading.pointer.marker a');
|
|
||||||
});
|
|
||||||
@ -1,59 +0,0 @@
|
|||||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
|
||||||
/**
|
|
||||||
* @fileoverview function used for page-related settings
|
|
||||||
* @name Page-related settings
|
|
||||||
*
|
|
||||||
* @requires jQuery
|
|
||||||
* @requires jQueryUI
|
|
||||||
* @required js/functions.js
|
|
||||||
*/
|
|
||||||
|
|
||||||
function showSettings (selector) {
|
|
||||||
var buttons = {};
|
|
||||||
buttons[PMA_messages.strApply] = function () {
|
|
||||||
$('.config-form').submit();
|
|
||||||
};
|
|
||||||
|
|
||||||
buttons[PMA_messages.strCancel] = function () {
|
|
||||||
$(this).dialog('close');
|
|
||||||
};
|
|
||||||
|
|
||||||
// Keeping a clone to restore in case the user cancels the operation
|
|
||||||
var $clone = $(selector + ' .page_settings').clone(true);
|
|
||||||
$(selector)
|
|
||||||
.dialog({
|
|
||||||
title: PMA_messages.strPageSettings,
|
|
||||||
width: 700,
|
|
||||||
minHeight: 250,
|
|
||||||
modal: true,
|
|
||||||
open: function () {
|
|
||||||
$(this).dialog('option', 'maxHeight', $(window).height() - $(this).offset().top);
|
|
||||||
},
|
|
||||||
close: function () {
|
|
||||||
$(selector + ' .page_settings').replaceWith($clone);
|
|
||||||
},
|
|
||||||
buttons: buttons
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function showPageSettings () {
|
|
||||||
showSettings('#page_settings_modal');
|
|
||||||
}
|
|
||||||
|
|
||||||
function showNaviSettings () {
|
|
||||||
showSettings('#pma_navigation_settings');
|
|
||||||
}
|
|
||||||
|
|
||||||
AJAX.registerTeardown('page_settings.js', function () {
|
|
||||||
$('#page_settings_icon').css('display', 'none');
|
|
||||||
$('#page_settings_icon').off('click');
|
|
||||||
$('#pma_navigation_settings_icon').off('click');
|
|
||||||
});
|
|
||||||
|
|
||||||
AJAX.registerOnload('page_settings.js', function () {
|
|
||||||
if ($('#page_settings_modal').length) {
|
|
||||||
$('#page_settings_icon').css('display', 'inline');
|
|
||||||
$('#page_settings_icon').on('click', showPageSettings);
|
|
||||||
}
|
|
||||||
$('#pma_navigation_settings_icon').on('click', showNaviSettings);
|
|
||||||
});
|
|
||||||
@ -1,92 +0,0 @@
|
|||||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
|
||||||
/**
|
|
||||||
* for server_replication.php
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
var random_server_id = Math.floor(Math.random() * 10000000);
|
|
||||||
var conf_prefix = 'server-id=' + random_server_id + '\nlog_bin=mysql-bin\nlog_error=mysql-bin.err\n';
|
|
||||||
|
|
||||||
function update_config () {
|
|
||||||
var conf_ignore = 'binlog_ignore_db=';
|
|
||||||
var conf_do = 'binlog_do_db=';
|
|
||||||
var database_list = '';
|
|
||||||
|
|
||||||
if ($('#db_select option:selected').size() === 0) {
|
|
||||||
$('#rep').text(conf_prefix);
|
|
||||||
} else if ($('#db_type option:selected').val() === 'all') {
|
|
||||||
$('#db_select option:selected').each(function () {
|
|
||||||
database_list += conf_ignore + $(this).val() + '\n';
|
|
||||||
});
|
|
||||||
$('#rep').text(conf_prefix + database_list);
|
|
||||||
} else {
|
|
||||||
$('#db_select option:selected').each(function () {
|
|
||||||
database_list += conf_do + $(this).val() + '\n';
|
|
||||||
});
|
|
||||||
$('#rep').text(conf_prefix + database_list);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unbind all event handlers before tearing down a page
|
|
||||||
*/
|
|
||||||
AJAX.registerTeardown('replication.js', function () {
|
|
||||||
$('#db_type').off('change');
|
|
||||||
$('#db_select').off('change');
|
|
||||||
$('#master_status_href').off('click');
|
|
||||||
$('#master_slaves_href').off('click');
|
|
||||||
$('#slave_status_href').off('click');
|
|
||||||
$('#slave_control_href').off('click');
|
|
||||||
$('#slave_errormanagement_href').off('click');
|
|
||||||
$('#slave_synchronization_href').off('click');
|
|
||||||
$('#db_reset_href').off('click');
|
|
||||||
$('#db_select_href').off('click');
|
|
||||||
$('#reset_slave').off('click');
|
|
||||||
});
|
|
||||||
|
|
||||||
AJAX.registerOnload('replication.js', function () {
|
|
||||||
$('#rep').text(conf_prefix);
|
|
||||||
$('#db_type').on('change', update_config);
|
|
||||||
$('#db_select').on('change', update_config);
|
|
||||||
|
|
||||||
$('#master_status_href').on('click', function () {
|
|
||||||
$('#replication_master_section').toggle();
|
|
||||||
});
|
|
||||||
$('#master_slaves_href').on('click', function () {
|
|
||||||
$('#replication_slaves_section').toggle();
|
|
||||||
});
|
|
||||||
$('#slave_status_href').on('click', function () {
|
|
||||||
$('#replication_slave_section').toggle();
|
|
||||||
});
|
|
||||||
$('#slave_control_href').on('click', function () {
|
|
||||||
$('#slave_control_gui').toggle();
|
|
||||||
});
|
|
||||||
$('#slave_errormanagement_href').on('click', function () {
|
|
||||||
$('#slave_errormanagement_gui').toggle();
|
|
||||||
});
|
|
||||||
$('#slave_synchronization_href').on('click', function () {
|
|
||||||
$('#slave_synchronization_gui').toggle();
|
|
||||||
});
|
|
||||||
$('#db_reset_href').on('click', function () {
|
|
||||||
$('#db_select option:selected').prop('selected', false);
|
|
||||||
$('#db_select').trigger('change');
|
|
||||||
});
|
|
||||||
$('#db_select_href').on('click', function () {
|
|
||||||
$('#db_select option').prop('selected', true);
|
|
||||||
$('#db_select').trigger('change');
|
|
||||||
});
|
|
||||||
$('#reset_slave').on('click', function (e) {
|
|
||||||
e.preventDefault();
|
|
||||||
var $anchor = $(this);
|
|
||||||
var question = PMA_messages.strResetSlaveWarning;
|
|
||||||
$anchor.PMA_confirm(question, $anchor.attr('href'), function (url) {
|
|
||||||
PMA_ajaxShowMessage();
|
|
||||||
AJAX.source = $anchor;
|
|
||||||
var params = {
|
|
||||||
'ajax_page_request': true,
|
|
||||||
'ajax_request': true,
|
|
||||||
};
|
|
||||||
$.post(url, params, AJAX.responseHandler);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,12 +1,19 @@
|
|||||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
|
||||||
/* This script handles PMA Drag Drop Import, loaded only when configuration is enabled.*/
|
|
||||||
|
/**
|
||||||
|
* Module import
|
||||||
|
*/
|
||||||
|
import { PMA_Messages as PMA_messages } from '../variables/export_variables';
|
||||||
|
import PMA_commonParams from '../variables/common_params';
|
||||||
|
import { escapeHtml } from '../utils/Sanitise';
|
||||||
|
import { AJAX } from '../ajax';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class to handle PMA Drag and Drop Import
|
* Class to handle PMA Drag and Drop Import
|
||||||
* feature
|
* feature
|
||||||
*/
|
*/
|
||||||
PMA_DROP_IMPORT = {
|
var DragDropImport = {
|
||||||
/**
|
/**
|
||||||
* @var int, count of total uploads in this view
|
* @var int, count of total uploads in this view
|
||||||
*/
|
*/
|
||||||
@ -36,17 +43,17 @@ PMA_DROP_IMPORT = {
|
|||||||
*/
|
*/
|
||||||
_getExtension: function (file) {
|
_getExtension: function (file) {
|
||||||
var arr = file.split('.');
|
var arr = file.split('.');
|
||||||
ext = arr[arr.length - 1];
|
var ext = arr[arr.length - 1];
|
||||||
|
|
||||||
// check if compressed
|
// check if compressed
|
||||||
if (jQuery.inArray(ext.toLowerCase(),
|
if (jQuery.inArray(ext.toLowerCase(),
|
||||||
PMA_DROP_IMPORT.allowedCompressedExtensions) !== -1) {
|
DragDropImport.allowedCompressedExtensions) !== -1) {
|
||||||
ext = arr[arr.length - 2];
|
ext = arr[arr.length - 2];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Now check for extension
|
// Now check for extension
|
||||||
if (jQuery.inArray(ext.toLowerCase(),
|
if (jQuery.inArray(ext.toLowerCase(),
|
||||||
PMA_DROP_IMPORT.allowedExtensions) !== -1) {
|
DragDropImport.allowedExtensions) !== -1) {
|
||||||
return ext;
|
return ext;
|
||||||
}
|
}
|
||||||
return '';
|
return '';
|
||||||
@ -86,7 +93,7 @@ PMA_DROP_IMPORT = {
|
|||||||
percent = Math.ceil(position / total * 100);
|
percent = Math.ceil(position / total * 100);
|
||||||
}
|
}
|
||||||
// Set progress
|
// Set progress
|
||||||
PMA_DROP_IMPORT._setProgress(hash, percent);
|
DragDropImport._setProgress(hash, percent);
|
||||||
}, false);
|
}, false);
|
||||||
}
|
}
|
||||||
return xhrobj;
|
return xhrobj;
|
||||||
@ -98,9 +105,9 @@ PMA_DROP_IMPORT = {
|
|||||||
cache: false,
|
cache: false,
|
||||||
data: formData,
|
data: formData,
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
PMA_DROP_IMPORT._importFinished(hash, false, data.success);
|
DragDropImport._importFinished(hash, false, data.success);
|
||||||
if (!data.success) {
|
if (!data.success) {
|
||||||
PMA_DROP_IMPORT.importStatus[PMA_DROP_IMPORT.importStatus.length] = {
|
DragDropImport.importStatus[DragDropImport.importStatus.length] = {
|
||||||
hash: hash,
|
hash: hash,
|
||||||
message: data.error
|
message: data.error
|
||||||
};
|
};
|
||||||
@ -121,12 +128,12 @@ PMA_DROP_IMPORT = {
|
|||||||
if ($(this).attr('task') === 'cancel') {
|
if ($(this).attr('task') === 'cancel') {
|
||||||
jqXHR.abort();
|
jqXHR.abort();
|
||||||
$(this).html('<span>' + PMA_messages.dropImportMessageAborted + '</span>');
|
$(this).html('<span>' + PMA_messages.dropImportMessageAborted + '</span>');
|
||||||
PMA_DROP_IMPORT._importFinished(hash, true, false);
|
DragDropImport._importFinished(hash, true, false);
|
||||||
} else if ($(this).children('span').html() ===
|
} else if ($(this).children('span').html() ===
|
||||||
PMA_messages.dropImportMessageFailed) {
|
PMA_messages.dropImportMessageFailed) {
|
||||||
// -- view information
|
// -- view information
|
||||||
var $this = $(this);
|
var $this = $(this);
|
||||||
$.each(PMA_DROP_IMPORT.importStatus,
|
$.each(DragDropImport.importStatus,
|
||||||
function (key, value) {
|
function (key, value) {
|
||||||
if (value.hash === hash) {
|
if (value.hash === hash) {
|
||||||
$('.pma_drop_result:visible').remove();
|
$('.pma_drop_result:visible').remove();
|
||||||
@ -156,7 +163,7 @@ PMA_DROP_IMPORT = {
|
|||||||
|
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
if (!PMA_DROP_IMPORT._hasFiles(event)) {
|
if (!DragDropImport._hasFiles(event)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (PMA_commonParams.get('db') === '') {
|
if (PMA_commonParams.get('db') === '') {
|
||||||
@ -197,7 +204,7 @@ PMA_DROP_IMPORT = {
|
|||||||
|
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
if (!PMA_DROP_IMPORT._hasFiles(event)) {
|
if (!DragDropImport._hasFiles(event)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$('.pma_drop_handler').fadeIn();
|
$('.pma_drop_handler').fadeIn();
|
||||||
@ -261,8 +268,8 @@ PMA_DROP_IMPORT = {
|
|||||||
icon + '"> ');
|
icon + '"> ');
|
||||||
|
|
||||||
// Decrease liveUploadCount by one
|
// Decrease liveUploadCount by one
|
||||||
$('.pma_import_count').html(--PMA_DROP_IMPORT.liveUploadCount);
|
$('.pma_import_count').html(--DragDropImport.liveUploadCount);
|
||||||
if (!PMA_DROP_IMPORT.liveUploadCount) {
|
if (!DragDropImport.liveUploadCount) {
|
||||||
$('.pma_sql_import_status h2 .close').fadeIn();
|
$('.pma_sql_import_status h2 .close').fadeIn();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -296,8 +303,8 @@ PMA_DROP_IMPORT = {
|
|||||||
}
|
}
|
||||||
$('.pma_sql_import_status').slideDown();
|
$('.pma_sql_import_status').slideDown();
|
||||||
for (var i = 0; i < files.length; i++) {
|
for (var i = 0; i < files.length; i++) {
|
||||||
var ext = (PMA_DROP_IMPORT._getExtension(files[i].name));
|
var ext = (DragDropImport._getExtension(files[i].name));
|
||||||
var hash = AJAX.hash(++PMA_DROP_IMPORT.uploadCount);
|
var hash = AJAX.hash(++DragDropImport.uploadCount);
|
||||||
|
|
||||||
var $pma_sql_import_status_div = $('.pma_sql_import_status div');
|
var $pma_sql_import_status_div = $('.pma_sql_import_status div');
|
||||||
$pma_sql_import_status_div.append('<li data-hash="' + hash + '">' +
|
$pma_sql_import_status_div.append('<li data-hash="' + hash + '">' +
|
||||||
@ -313,7 +320,7 @@ PMA_DROP_IMPORT = {
|
|||||||
|
|
||||||
if (ext !== '') {
|
if (ext !== '') {
|
||||||
// Increment liveUploadCount by one
|
// Increment liveUploadCount by one
|
||||||
$('.pma_import_count').html(++PMA_DROP_IMPORT.liveUploadCount);
|
$('.pma_import_count').html(++DragDropImport.liveUploadCount);
|
||||||
$('.pma_sql_import_status h2 .close').fadeOut();
|
$('.pma_sql_import_status h2 .close').fadeOut();
|
||||||
|
|
||||||
$('.pma_sql_import_status div li[data-hash="' + hash + '"]')
|
$('.pma_sql_import_status div li[data-hash="' + hash + '"]')
|
||||||
@ -341,8 +348,8 @@ PMA_DROP_IMPORT = {
|
|||||||
fd.append('hash', hash);
|
fd.append('hash', hash);
|
||||||
|
|
||||||
// init uploading
|
// init uploading
|
||||||
PMA_DROP_IMPORT._sendFileToServer(fd, hash);
|
DragDropImport._sendFileToServer(fd, hash);
|
||||||
} else if (!PMA_DROP_IMPORT.liveUploadCount) {
|
} else if (!DragDropImport.liveUploadCount) {
|
||||||
$('.pma_sql_import_status h2 .close').fadeIn();
|
$('.pma_sql_import_status h2 .close').fadeIn();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -353,41 +360,4 @@ PMA_DROP_IMPORT = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
export default DragDropImport;
|
||||||
* Called when some user drags, dragover, leave
|
|
||||||
* a file to the PMA UI
|
|
||||||
* @param object Event data
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
$(document).on('dragenter', PMA_DROP_IMPORT._dragenter);
|
|
||||||
$(document).on('dragover', PMA_DROP_IMPORT._dragover);
|
|
||||||
$(document).on('dragleave', '.pma_drop_handler', PMA_DROP_IMPORT._dragleave);
|
|
||||||
|
|
||||||
// when file is dropped to PMA UI
|
|
||||||
$(document).on('drop', 'body', PMA_DROP_IMPORT._drop);
|
|
||||||
|
|
||||||
// minimizing-maximising the sql ajax upload status
|
|
||||||
$(document).on('click', '.pma_sql_import_status h2 .minimize', function () {
|
|
||||||
if ($(this).attr('toggle') === 'off') {
|
|
||||||
$('.pma_sql_import_status div').css('height','270px');
|
|
||||||
$(this).attr('toggle','on');
|
|
||||||
$(this).html('-'); // to minimize
|
|
||||||
} else {
|
|
||||||
$('.pma_sql_import_status div').css('height','0px');
|
|
||||||
$(this).attr('toggle','off');
|
|
||||||
$(this).html('+'); // to maximise
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// closing sql ajax upload status
|
|
||||||
$(document).on('click', '.pma_sql_import_status h2 .close', function () {
|
|
||||||
$('.pma_sql_import_status').fadeOut(function () {
|
|
||||||
$('.pma_sql_import_status div').html('');
|
|
||||||
PMA_DROP_IMPORT.importStatus = []; // clear the message array
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// Closing the import result box
|
|
||||||
$(document).on('click', '.pma_drop_result h2 .close', function () {
|
|
||||||
$(this).parent('h2').parent('div').remove();
|
|
||||||
});
|
|
||||||
@ -1,4 +1,15 @@
|
|||||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
|
||||||
|
import { PMA_Messages as PMA_messages } from '../variables/export_variables';
|
||||||
|
import { PMA_ajaxShowMessage,
|
||||||
|
PMA_ajaxRemoveMessage,
|
||||||
|
PMA_slidingMessage
|
||||||
|
} from '../utils/show_ajax_messages';
|
||||||
|
import { PMA_addDatepicker } from '../utils/DateTime';
|
||||||
|
import { PMA_getSQLEditor } from '../functions/Sql/SqlEditor';
|
||||||
|
import { PMA_reloadNavigation } from '../functions/navigation';
|
||||||
|
import { getJSConfirmCommonParam } from '../functions/Common';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* JavaScript functionality for Routines, Triggers and Events.
|
* JavaScript functionality for Routines, Triggers and Events.
|
||||||
*
|
*
|
||||||
@ -457,7 +468,7 @@ RTE.COMMON = {
|
|||||||
|
|
||||||
dropMultipleDialog: function ($this) {
|
dropMultipleDialog: function ($this) {
|
||||||
// We ask for confirmation here
|
// We ask for confirmation here
|
||||||
$this.PMA_confirm(PMA_messages.strDropRTEitems, '', function (url) {
|
$this.PMA_confirm(PMA_messages.strDropRTEitems, '', function () {
|
||||||
/**
|
/**
|
||||||
* @var msg jQuery object containing the reference to
|
* @var msg jQuery object containing the reference to
|
||||||
* the AJAX message shown to the user
|
* the AJAX message shown to the user
|
||||||
@ -610,7 +621,7 @@ RTE.ROUTINE = {
|
|||||||
$('.routine_params_table tbody').sortable({
|
$('.routine_params_table tbody').sortable({
|
||||||
containment: '.routine_params_table tbody',
|
containment: '.routine_params_table tbody',
|
||||||
handle: '.dragHandle',
|
handle: '.dragHandle',
|
||||||
stop: function (event, ui) {
|
stop: function () {
|
||||||
that.reindexParameters();
|
that.reindexParameters();
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@ -914,164 +925,4 @@ RTE.ROUTINE = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
export default RTE;
|
||||||
* Attach Ajax event handlers for the Routines, Triggers and Events editor
|
|
||||||
*/
|
|
||||||
$(function () {
|
|
||||||
/**
|
|
||||||
* Attach Ajax event handlers for the Add/Edit functionality.
|
|
||||||
*/
|
|
||||||
$(document).on('click', 'a.ajax.add_anchor, a.ajax.edit_anchor', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
var type = $(this).attr('href').substr(0, $(this).attr('href').indexOf('?'));
|
|
||||||
if (type.indexOf('routine') !== -1) {
|
|
||||||
type = 'routine';
|
|
||||||
} else if (type.indexOf('trigger') !== -1) {
|
|
||||||
type = 'trigger';
|
|
||||||
} else if (type.indexOf('event') !== -1) {
|
|
||||||
type = 'event';
|
|
||||||
} else {
|
|
||||||
type = '';
|
|
||||||
}
|
|
||||||
var dialog = new RTE.object(type);
|
|
||||||
dialog.editorDialog($(this).hasClass('add_anchor'), $(this));
|
|
||||||
}); // end $(document).on()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attach Ajax event handlers for the Execute routine functionality
|
|
||||||
*/
|
|
||||||
$(document).on('click', 'a.ajax.exec_anchor', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
var dialog = new RTE.object('routine');
|
|
||||||
dialog.executeDialog($(this));
|
|
||||||
}); // end $(document).on()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attach Ajax event handlers for Export of Routines, Triggers and Events
|
|
||||||
*/
|
|
||||||
$(document).on('click', 'a.ajax.export_anchor', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
var dialog = new RTE.object();
|
|
||||||
dialog.exportDialog($(this));
|
|
||||||
}); // end $(document).on()
|
|
||||||
|
|
||||||
$(document).on('click', '#rteListForm.ajax .mult_submit[value="export"]', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
var dialog = new RTE.object();
|
|
||||||
dialog.exportDialog($(this));
|
|
||||||
}); // end $(document).on()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attach Ajax event handlers for Drop functionality
|
|
||||||
* of Routines, Triggers and Events.
|
|
||||||
*/
|
|
||||||
$(document).on('click', 'a.ajax.drop_anchor', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
var dialog = new RTE.object();
|
|
||||||
dialog.dropDialog($(this));
|
|
||||||
}); // end $(document).on()
|
|
||||||
|
|
||||||
$(document).on('click', '#rteListForm.ajax .mult_submit[value="drop"]', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
var dialog = new RTE.object();
|
|
||||||
dialog.dropMultipleDialog($(this));
|
|
||||||
}); // end $(document).on()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attach Ajax event handlers for the "Change event/routine type"
|
|
||||||
* functionality in the events editor, so that the correct
|
|
||||||
* rows are shown in the editor when changing the event type
|
|
||||||
*/
|
|
||||||
$(document).on('change', 'select[name=item_type]', function () {
|
|
||||||
$(this)
|
|
||||||
.closest('table')
|
|
||||||
.find('tr.recurring_event_row, tr.onetime_event_row, tr.routine_return_row, .routine_direction_cell')
|
|
||||||
.toggle();
|
|
||||||
}); // end $(document).on()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attach Ajax event handlers for the "Change parameter type"
|
|
||||||
* functionality in the routines editor, so that the correct
|
|
||||||
* option/length fields, if any, are shown when changing
|
|
||||||
* a parameter type
|
|
||||||
*/
|
|
||||||
$(document).on('change', 'select[name^=item_param_type]', function () {
|
|
||||||
/**
|
|
||||||
* @var row jQuery object containing the reference to
|
|
||||||
* a row in the routine parameters table
|
|
||||||
*/
|
|
||||||
var $row = $(this).parents('tr').first();
|
|
||||||
var rte = new RTE.object('routine');
|
|
||||||
rte.setOptionsForParameter(
|
|
||||||
$row.find('select[name^=item_param_type]'),
|
|
||||||
$row.find('input[name^=item_param_length]'),
|
|
||||||
$row.find('select[name^=item_param_opts_text]'),
|
|
||||||
$row.find('select[name^=item_param_opts_num]')
|
|
||||||
);
|
|
||||||
}); // end $(document).on()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attach Ajax event handlers for the "Change the type of return
|
|
||||||
* variable of function" functionality, so that the correct fields,
|
|
||||||
* if any, are shown when changing the function return type type
|
|
||||||
*/
|
|
||||||
$(document).on('change', 'select[name=item_returntype]', function () {
|
|
||||||
var rte = new RTE.object('routine');
|
|
||||||
var $table = $(this).closest('table.rte_table');
|
|
||||||
rte.setOptionsForParameter(
|
|
||||||
$table.find('select[name=item_returntype]'),
|
|
||||||
$table.find('input[name=item_returnlength]'),
|
|
||||||
$table.find('select[name=item_returnopts_text]'),
|
|
||||||
$table.find('select[name=item_returnopts_num]')
|
|
||||||
);
|
|
||||||
}); // end $(document).on()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attach Ajax event handlers for the "Add parameter to routine" functionality
|
|
||||||
*/
|
|
||||||
$(document).on('click', 'input[name=routine_addparameter]', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
/**
|
|
||||||
* @var routine_params_table jQuery object containing the reference
|
|
||||||
* to the routine parameters table
|
|
||||||
*/
|
|
||||||
var $routine_params_table = $(this).closest('div.ui-dialog').find('.routine_params_table');
|
|
||||||
/**
|
|
||||||
* @var new_param_row A string containing the HTML code for the
|
|
||||||
* new row for the routine parameters table
|
|
||||||
*/
|
|
||||||
var new_param_row = RTE.param_template.replace(/%s/g, $routine_params_table.find('tr').length - 1);
|
|
||||||
// Append the new row to the parameters table
|
|
||||||
$routine_params_table.append(new_param_row);
|
|
||||||
// Make sure that the row is correctly shown according to the type of routine
|
|
||||||
if ($(this).closest('div.ui-dialog').find('table.rte_table select[name=item_type]').val() === 'FUNCTION') {
|
|
||||||
$('tr.routine_return_row').show();
|
|
||||||
$('td.routine_direction_cell').hide();
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* @var newrow jQuery object containing the reference to the newly
|
|
||||||
* inserted row in the routine parameters table
|
|
||||||
*/
|
|
||||||
var $newrow = $(this).closest('div.ui-dialog').find('table.routine_params_table').find('tr').has('td').last();
|
|
||||||
// Enable/disable the 'options' dropdowns for parameters as necessary
|
|
||||||
var rte = new RTE.object('routine');
|
|
||||||
rte.setOptionsForParameter(
|
|
||||||
$newrow.find('select[name^=item_param_type]'),
|
|
||||||
$newrow.find('input[name^=item_param_length]'),
|
|
||||||
$newrow.find('select[name^=item_param_opts_text]'),
|
|
||||||
$newrow.find('select[name^=item_param_opts_num]')
|
|
||||||
);
|
|
||||||
}); // end $(document).on()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Attach Ajax event handlers for the
|
|
||||||
* "Remove parameter from routine" functionality
|
|
||||||
*/
|
|
||||||
$(document).on('click', 'a.routine_param_remove_anchor', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
$(this).parent().parent().remove();
|
|
||||||
// After removing a parameter, the indices of the name attributes in
|
|
||||||
// the input fields lose the correct order and need to be reordered.
|
|
||||||
RTE.ROUTINE.reindexParameters();
|
|
||||||
}); // end $(document).on()
|
|
||||||
}); // end of $()
|
|
||||||
@ -7,7 +7,19 @@
|
|||||||
* @type {Object} files
|
* @type {Object} files
|
||||||
*/
|
*/
|
||||||
const PhpToJsFileMapping = {
|
const PhpToJsFileMapping = {
|
||||||
global: ['error_report', 'config', 'navigation', 'page_settings', 'shortcuts_handler', 'functions', 'indexes'],
|
global: [
|
||||||
|
'error_report',
|
||||||
|
'config',
|
||||||
|
'navigation',
|
||||||
|
'page_settings',
|
||||||
|
'shortcuts_handler',
|
||||||
|
'functions',
|
||||||
|
'indexes',
|
||||||
|
'key_handler',
|
||||||
|
'cross_framing_protection',
|
||||||
|
'drag_drop_import',
|
||||||
|
'rte'
|
||||||
|
],
|
||||||
server_privileges: ['server_privileges'],
|
server_privileges: ['server_privileges'],
|
||||||
server_databases: ['server_databases'],
|
server_databases: ['server_databases'],
|
||||||
server_status_advisor: ['server_status_advisor'],
|
server_status_advisor: ['server_status_advisor'],
|
||||||
@ -45,7 +57,8 @@ const PhpToJsFileMapping = {
|
|||||||
tbl_zoom_select: ['sql', 'tbl_change'],
|
tbl_zoom_select: ['sql', 'tbl_change'],
|
||||||
tbl_find_replace: ['tbl_find_replace'],
|
tbl_find_replace: ['tbl_find_replace'],
|
||||||
tbl_import: ['import'],
|
tbl_import: ['import'],
|
||||||
tbl_export: ['export']
|
tbl_export: ['export'],
|
||||||
|
normalization: ['normalization']
|
||||||
};
|
};
|
||||||
|
|
||||||
const JsFileList = [
|
const JsFileList = [
|
||||||
@ -84,7 +97,12 @@ const JsFileList = [
|
|||||||
'tbl_tracking',
|
'tbl_tracking',
|
||||||
'tbl_change',
|
'tbl_change',
|
||||||
'tbl_select',
|
'tbl_select',
|
||||||
'tbl_find_replace'
|
'tbl_find_replace',
|
||||||
|
'key_handler',
|
||||||
|
'cross_framing_protection',
|
||||||
|
'drag_drop_import',
|
||||||
|
'normalization',
|
||||||
|
'rte'
|
||||||
];
|
];
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
|||||||
16
js/src/cross_framing_protection.js
Normal file
16
js/src/cross_framing_protection.js
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Conditionally included if framing is not allowed
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (self === top) {
|
||||||
|
var styleElement = document.getElementById('cfs-style');
|
||||||
|
// check if styleElement has already been removed
|
||||||
|
// to avoid frequently reported js error
|
||||||
|
if (typeof(styleElement) !== 'undefined' && styleElement !== null) {
|
||||||
|
styleElement.parentNode.removeChild(styleElement);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
top.location = self.location;
|
||||||
|
}
|
||||||
@ -12,6 +12,7 @@ import { escapeHtml } from './utils/Sanitise';
|
|||||||
import { PMA_prepareForAjaxRequest } from './functions/AjaxRequest';
|
import { PMA_prepareForAjaxRequest } from './functions/AjaxRequest';
|
||||||
import { PMA_sprintf } from './utils/sprintf';
|
import { PMA_sprintf } from './utils/sprintf';
|
||||||
import { getJSConfirmCommonParam } from './functions/Common';
|
import { getJSConfirmCommonParam } from './functions/Common';
|
||||||
|
import { PMA_reloadNavigation } from './functions/navigation';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @fileoverview function used in server privilege pages
|
* @fileoverview function used in server privilege pages
|
||||||
@ -74,7 +75,7 @@ export function onloadDbOperations () {
|
|||||||
PMA_reloadNavigation(function () {
|
PMA_reloadNavigation(function () {
|
||||||
$('#pma_navigation_tree')
|
$('#pma_navigation_tree')
|
||||||
.find('a:not(\'.expander\')')
|
.find('a:not(\'.expander\')')
|
||||||
.each(function (index) {
|
.each(function () {
|
||||||
var $thisAnchor = $(this);
|
var $thisAnchor = $(this);
|
||||||
if ($thisAnchor.text() === data.newname) {
|
if ($thisAnchor.text() === data.newname) {
|
||||||
// simulate a click on the new db name
|
// simulate a click on the new db name
|
||||||
|
|||||||
59
js/src/drag_drop_import.js
Normal file
59
js/src/drag_drop_import.js
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module import
|
||||||
|
*/
|
||||||
|
import DragDropImport from './classes/DragDropImport';
|
||||||
|
|
||||||
|
/* This script handles PMA Drag Drop Import, loaded only when configuration is enabled.*/
|
||||||
|
|
||||||
|
export function teardownDragDropImport () {
|
||||||
|
$(document).off('dragenter');
|
||||||
|
$(document).off('dragover');
|
||||||
|
$(document).off('dragleave', '.pma_drop_handler');
|
||||||
|
$(document).off('drop', 'body');
|
||||||
|
$(document).off('click', '.pma_sql_import_status h2 .minimize');
|
||||||
|
$(document).off('click', '.pma_sql_import_status h2 .close');
|
||||||
|
$(document).off('click', '.pma_drop_result h2 .close');
|
||||||
|
}
|
||||||
|
|
||||||
|
export function onloadDragDropImport () {
|
||||||
|
/**
|
||||||
|
* Called when some user drags, dragover, leave
|
||||||
|
* a file to the PMA UI
|
||||||
|
* @param object Event data
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
$(document).on('dragenter', DragDropImport._dragenter);
|
||||||
|
$(document).on('dragover', DragDropImport._dragover);
|
||||||
|
$(document).on('dragleave', '.pma_drop_handler', DragDropImport._dragleave);
|
||||||
|
|
||||||
|
// when file is dropped to PMA UI
|
||||||
|
$(document).on('drop', 'body', DragDropImport._drop);
|
||||||
|
|
||||||
|
// minimizing-maximising the sql ajax upload status
|
||||||
|
$(document).on('click', '.pma_sql_import_status h2 .minimize', function () {
|
||||||
|
if ($(this).attr('toggle') === 'off') {
|
||||||
|
$('.pma_sql_import_status div').css('height','270px');
|
||||||
|
$(this).attr('toggle','on');
|
||||||
|
$(this).html('-'); // to minimize
|
||||||
|
} else {
|
||||||
|
$('.pma_sql_import_status div').css('height','0px');
|
||||||
|
$(this).attr('toggle','off');
|
||||||
|
$(this).html('+'); // to maximise
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// closing sql ajax upload status
|
||||||
|
$(document).on('click', '.pma_sql_import_status h2 .close', function () {
|
||||||
|
$('.pma_sql_import_status').fadeOut(function () {
|
||||||
|
$('.pma_sql_import_status div').html('');
|
||||||
|
DragDropImport.importStatus = []; // clear the message array
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Closing the import result box
|
||||||
|
$(document).on('click', '.pma_drop_result h2 .close', function () {
|
||||||
|
$(this).parent('h2').parent('div').remove();
|
||||||
|
});
|
||||||
|
}
|
||||||
@ -8,7 +8,7 @@ var ctrlKeyHistory = 0;
|
|||||||
*
|
*
|
||||||
* @param object event data
|
* @param object event data
|
||||||
*/
|
*/
|
||||||
function onKeyDownArrowsHandler (e) {
|
export function onKeyDownArrowsHandler (e) {
|
||||||
e = e || window.event;
|
e = e || window.event;
|
||||||
|
|
||||||
var o = (e.srcElement || e.target);
|
var o = (e.srcElement || e.target);
|
||||||
@ -71,7 +71,7 @@ function onKeyDownArrowsHandler (e) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var is_firefox = navigator.userAgent.toLowerCase().indexOf('firefox/') > -1;
|
var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox/') > -1;
|
||||||
|
|
||||||
var id = 'field_' + y + '_' + x;
|
var id = 'field_' + y + '_' + x;
|
||||||
|
|
||||||
@ -92,12 +92,12 @@ function onKeyDownArrowsHandler (e) {
|
|||||||
|
|
||||||
nO.focus();
|
nO.focus();
|
||||||
|
|
||||||
if (is_firefox) {
|
if (isFirefox) {
|
||||||
var ffcheck = 0;
|
var ffcheck = 0;
|
||||||
var ffversion;
|
var ffversion;
|
||||||
for (ffversion = 3 ; ffversion < 25 ; ffversion++) {
|
for (ffversion = 3 ; ffversion < 25 ; ffversion++) {
|
||||||
var is_firefox_v_24 = navigator.userAgent.toLowerCase().indexOf('firefox/' + ffversion) > -1;
|
var isFirefoxV24 = navigator.userAgent.toLowerCase().indexOf('firefox/' + ffversion) > -1;
|
||||||
if (is_firefox_v_24) {
|
if (isFirefoxV24) {
|
||||||
ffcheck = 1;
|
ffcheck = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -124,17 +124,3 @@ function onKeyDownArrowsHandler (e) {
|
|||||||
}
|
}
|
||||||
e.returnValue = false;
|
e.returnValue = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
AJAX.registerTeardown('keyhandler.js', function () {
|
|
||||||
$(document).off('keydown keyup', '#table_columns');
|
|
||||||
$(document).off('keydown keyup', 'table.insertRowTable');
|
|
||||||
});
|
|
||||||
|
|
||||||
AJAX.registerOnload('keyhandler.js', function () {
|
|
||||||
$(document).on('keydown keyup', '#table_columns', function (event) {
|
|
||||||
onKeyDownArrowsHandler(event.originalEvent);
|
|
||||||
});
|
|
||||||
$(document).on('keydown keyup', 'table.insertRowTable', function (event) {
|
|
||||||
onKeyDownArrowsHandler(event.originalEvent);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
@ -1,20 +1,16 @@
|
|||||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
/**
|
|
||||||
* @fileoverview events handling from normalization page
|
|
||||||
* @name normalization
|
|
||||||
*
|
|
||||||
* @requires jQuery
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* AJAX scripts for normalization.php
|
* Module Import
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
import { PMA_Messages as PMA_messages } from '../../variables/export_variables';
|
||||||
|
import PMA_commonParams from '../../variables/common_params';
|
||||||
|
import { PMA_sprintf } from '../../utils/sprintf';
|
||||||
|
import { escapeHtml, escapeJsString } from '../../utils/Sanitise';
|
||||||
|
import { PMA_ajaxShowMessage } from '../../utils/show_ajax_messages';
|
||||||
|
import NormalizationEnum from '../../utils/NormalizationEnum';
|
||||||
|
|
||||||
var normalizeto = '1nf';
|
export function appendHtmlColumnsList () {
|
||||||
var primary_key;
|
|
||||||
var data_parsed = null;
|
|
||||||
function appendHtmlColumnsList () {
|
|
||||||
$.get(
|
$.get(
|
||||||
'normalization.php',
|
'normalization.php',
|
||||||
{
|
{
|
||||||
@ -30,6 +26,7 @@ function appendHtmlColumnsList () {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function goTo3NFStep1 (newTables) {
|
function goTo3NFStep1 (newTables) {
|
||||||
if (Object.keys(newTables).length === 1) {
|
if (Object.keys(newTables).length === 1) {
|
||||||
newTables = [PMA_commonParams.get('table')];
|
newTables = [PMA_commonParams.get('table')];
|
||||||
@ -67,6 +64,7 @@ function goTo3NFStep1 (newTables) {
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function goTo2NFStep1 () {
|
function goTo2NFStep1 () {
|
||||||
$.post(
|
$.post(
|
||||||
'normalization.php',
|
'normalization.php',
|
||||||
@ -90,7 +88,7 @@ function goTo2NFStep1 () {
|
|||||||
})
|
})
|
||||||
.appendTo('.tblFooters');
|
.appendTo('.tblFooters');
|
||||||
} else {
|
} else {
|
||||||
if (normalizeto === '3nf') {
|
if (NormalizationEnum.normalizeto === '3nf') {
|
||||||
$('#mainContent #newCols').html(PMA_messages.strToNextStep);
|
$('#mainContent #newCols').html(PMA_messages.strToNextStep);
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
goTo3NFStep1([PMA_commonParams.get('table')]);
|
goTo3NFStep1([PMA_commonParams.get('table')]);
|
||||||
@ -101,7 +99,7 @@ function goTo2NFStep1 () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function goToFinish1NF () {
|
function goToFinish1NF () {
|
||||||
if (normalizeto !== '1nf') {
|
if (NormalizationEnum.normalizeto !== '1nf') {
|
||||||
goTo2NFStep1();
|
goTo2NFStep1();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -130,14 +128,14 @@ function goToStep4 () {
|
|||||||
$('#mainContent #extra').html(data.extra);
|
$('#mainContent #extra').html(data.extra);
|
||||||
$('#mainContent #newCols').html('');
|
$('#mainContent #newCols').html('');
|
||||||
$('.tblFooters').html('');
|
$('.tblFooters').html('');
|
||||||
for (var pk in primary_key) {
|
for (var pk in NormalizationEnum.primary_key) {
|
||||||
$('#extra input[value=\'' + escapeJsString(primary_key[pk]) + '\']').attr('disabled','disabled');
|
$('#extra input[value=\'' + escapeJsString(NormalizationEnum.primary_key[pk]) + '\']').attr('disabled','disabled');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function goToStep3 () {
|
export function goToStep3 () {
|
||||||
$.post(
|
$.post(
|
||||||
'normalization.php',
|
'normalization.php',
|
||||||
{
|
{
|
||||||
@ -152,15 +150,15 @@ function goToStep3 () {
|
|||||||
$('#mainContent #extra').html(data.extra);
|
$('#mainContent #extra').html(data.extra);
|
||||||
$('#mainContent #newCols').html('');
|
$('#mainContent #newCols').html('');
|
||||||
$('.tblFooters').html('');
|
$('.tblFooters').html('');
|
||||||
primary_key = JSON.parse(data.primary_key);
|
NormalizationEnum.primary_key = JSON.parse(data.primary_key);
|
||||||
for (var pk in primary_key) {
|
for (var pk in NormalizationEnum.primary_key) {
|
||||||
$('#extra input[value=\'' + escapeJsString(primary_key[pk]) + '\']').attr('disabled','disabled');
|
$('#extra input[value=\'' + escapeJsString(NormalizationEnum.primary_key[pk]) + '\']').attr('disabled','disabled');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function goToStep2 (extra) {
|
export function goToStep2 (extra) {
|
||||||
$.post(
|
$.post(
|
||||||
'normalization.php',
|
'normalization.php',
|
||||||
{
|
{
|
||||||
@ -199,13 +197,14 @@ function goTo2NFFinish (pd) {
|
|||||||
for (var dependson in pd) {
|
for (var dependson in pd) {
|
||||||
tables[dependson] = $('#extra input[name="' + dependson + '"]').val();
|
tables[dependson] = $('#extra input[name="' + dependson + '"]').val();
|
||||||
}
|
}
|
||||||
datastring = {
|
var datastring = {
|
||||||
'ajax_request': true,
|
'ajax_request': true,
|
||||||
'db': PMA_commonParams.get('db'),
|
'db': PMA_commonParams.get('db'),
|
||||||
'table': PMA_commonParams.get('table'),
|
'table': PMA_commonParams.get('table'),
|
||||||
'pd': JSON.stringify(pd),
|
'pd': JSON.stringify(pd),
|
||||||
'newTablesName':JSON.stringify(tables),
|
'newTablesName':JSON.stringify(tables),
|
||||||
'createNewTables2NF':1 };
|
'createNewTables2NF':1
|
||||||
|
};
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
url: 'normalization.php',
|
url: 'normalization.php',
|
||||||
@ -214,7 +213,7 @@ function goTo2NFFinish (pd) {
|
|||||||
success: function (data) {
|
success: function (data) {
|
||||||
if (data.success === true) {
|
if (data.success === true) {
|
||||||
if (data.queryError === false) {
|
if (data.queryError === false) {
|
||||||
if (normalizeto === '3nf') {
|
if (NormalizationEnum.normalizeto === '3nf') {
|
||||||
$('#pma_navigation_reload').trigger('click');
|
$('#pma_navigation_reload').trigger('click');
|
||||||
goTo3NFStep1(tables);
|
goTo3NFStep1(tables);
|
||||||
return true;
|
return true;
|
||||||
@ -245,11 +244,12 @@ function goTo3NFFinish (newTables) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
datastring = {
|
var datastring = {
|
||||||
'ajax_request': true,
|
'ajax_request': true,
|
||||||
'db': PMA_commonParams.get('db'),
|
'db': PMA_commonParams.get('db'),
|
||||||
'newTables':JSON.stringify(newTables),
|
'newTables':JSON.stringify(newTables),
|
||||||
'createNewTables3NF':1 };
|
'createNewTables3NF':1
|
||||||
|
};
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
url: 'normalization.php',
|
url: 'normalization.php',
|
||||||
@ -273,7 +273,7 @@ function goTo3NFFinish (newTables) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
var backup = '';
|
|
||||||
function goTo2NFStep2 (pd, primary_key) {
|
function goTo2NFStep2 (pd, primary_key) {
|
||||||
$('#newCols').html('');
|
$('#newCols').html('');
|
||||||
$('#mainContent legend').html(PMA_messages.strStep + ' 2.2 ' + PMA_messages.strConfirmPd);
|
$('#mainContent legend').html(PMA_messages.strStep + ' 2.2 ' + PMA_messages.strConfirmPd);
|
||||||
@ -292,12 +292,13 @@ function goTo2NFStep2 (pd, primary_key) {
|
|||||||
extra += '</div>';
|
extra += '</div>';
|
||||||
} else {
|
} else {
|
||||||
extra += '</div>';
|
extra += '</div>';
|
||||||
datastring = {
|
var datastring = {
|
||||||
'ajax_request': true,
|
'ajax_request': true,
|
||||||
'db': PMA_commonParams.get('db'),
|
'db': PMA_commonParams.get('db'),
|
||||||
'table': PMA_commonParams.get('table'),
|
'table': PMA_commonParams.get('table'),
|
||||||
'pd': JSON.stringify(pd),
|
'pd': JSON.stringify(pd),
|
||||||
'getNewTables2NF':1 };
|
'getNewTables2NF':1
|
||||||
|
};
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
url: 'normalization.php',
|
url: 'normalization.php',
|
||||||
@ -328,7 +329,7 @@ function goTo3NFStep2 (pd, tablesTds) {
|
|||||||
var pdFound = false;
|
var pdFound = false;
|
||||||
for (var table in tablesTds) {
|
for (var table in tablesTds) {
|
||||||
for (var i in tablesTds[table]) {
|
for (var i in tablesTds[table]) {
|
||||||
dependson = tablesTds[table][i];
|
var dependson = tablesTds[table][i];
|
||||||
if (dependson !== '' && dependson !== table) {
|
if (dependson !== '' && dependson !== table) {
|
||||||
pdFound = true;
|
pdFound = true;
|
||||||
extra += '<p class="displayblock desc">' + escapeHtml(dependson) + ' -> ' + escapeHtml(pd[dependson].toString()) + '</p>';
|
extra += '<p class="displayblock desc">' + escapeHtml(dependson) + ' -> ' + escapeHtml(pd[dependson].toString()) + '</p>';
|
||||||
@ -340,21 +341,22 @@ function goTo3NFStep2 (pd, tablesTds) {
|
|||||||
extra += '</div>';
|
extra += '</div>';
|
||||||
} else {
|
} else {
|
||||||
extra += '</div>';
|
extra += '</div>';
|
||||||
datastring = {
|
var datastring = {
|
||||||
'ajax_request': true,
|
'ajax_request': true,
|
||||||
'db': PMA_commonParams.get('db'),
|
'db': PMA_commonParams.get('db'),
|
||||||
'tables': JSON.stringify(tablesTds),
|
'tables': JSON.stringify(tablesTds),
|
||||||
'pd': JSON.stringify(pd),
|
'pd': JSON.stringify(pd),
|
||||||
'getNewTables3NF':1 };
|
'getNewTables3NF':1
|
||||||
|
};
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
url: 'normalization.php',
|
url: 'normalization.php',
|
||||||
data: datastring,
|
data: datastring,
|
||||||
async:false,
|
async:false,
|
||||||
success: function (data) {
|
success: function (data) {
|
||||||
data_parsed = data;
|
NormalizationEnum.data_parsed = data;
|
||||||
if (data.success === true) {
|
if (data.success === true) {
|
||||||
extra += data_parsed.html;
|
extra += NormalizationEnum.data_parsed.html;
|
||||||
} else {
|
} else {
|
||||||
PMA_ajaxShowMessage(data.error, false);
|
PMA_ajaxShowMessage(data.error, false);
|
||||||
}
|
}
|
||||||
@ -367,10 +369,11 @@ function goTo3NFStep2 (pd, tablesTds) {
|
|||||||
if (!pdFound) {
|
if (!pdFound) {
|
||||||
goTo3NFFinish([]);
|
goTo3NFFinish([]);
|
||||||
} else {
|
} else {
|
||||||
goTo3NFFinish(data_parsed.newTables);
|
goTo3NFFinish(NormalizationEnum.data_parsed.newTables);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function processDependencies (primary_key, isTransitive) {
|
function processDependencies (primary_key, isTransitive) {
|
||||||
var pd = {};
|
var pd = {};
|
||||||
var tablesTds = {};
|
var tablesTds = {};
|
||||||
@ -411,7 +414,7 @@ function processDependencies (primary_key, isTransitive) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
backup = $('#mainContent').html();
|
NormalizationEnum.backup = $('#mainContent').html();
|
||||||
if (isTransitive === true) {
|
if (isTransitive === true) {
|
||||||
goTo3NFStep2(pd, tablesTds);
|
goTo3NFStep2(pd, tablesTds);
|
||||||
} else {
|
} else {
|
||||||
@ -420,7 +423,7 @@ function processDependencies (primary_key, isTransitive) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function moveRepeatingGroup (repeatingCols) {
|
export function moveRepeatingGroup (repeatingCols) {
|
||||||
var newTable = $('input[name=repeatGroupTable]').val();
|
var newTable = $('input[name=repeatGroupTable]').val();
|
||||||
var newColumn = $('input[name=repeatGroupColumn]').val();
|
var newColumn = $('input[name=repeatGroupColumn]').val();
|
||||||
if (!newTable) {
|
if (!newTable) {
|
||||||
@ -431,14 +434,14 @@ function moveRepeatingGroup (repeatingCols) {
|
|||||||
$('input[name=repeatGroupColumn]').focus();
|
$('input[name=repeatGroupColumn]').focus();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
datastring = {
|
var datastring = {
|
||||||
'ajax_request': true,
|
'ajax_request': true,
|
||||||
'db': PMA_commonParams.get('db'),
|
'db': PMA_commonParams.get('db'),
|
||||||
'table': PMA_commonParams.get('table'),
|
'table': PMA_commonParams.get('table'),
|
||||||
'repeatingColumns': repeatingCols,
|
'repeatingColumns': repeatingCols,
|
||||||
'newTable':newTable,
|
'newTable': newTable,
|
||||||
'newColumn':newColumn,
|
'newColumn': newColumn,
|
||||||
'primary_columns':primary_key.toString()
|
'primary_columns': NormalizationEnum.primary_key.toString()
|
||||||
};
|
};
|
||||||
$.ajax({
|
$.ajax({
|
||||||
type: 'POST',
|
type: 'POST',
|
||||||
@ -458,272 +461,3 @@ function moveRepeatingGroup (repeatingCols) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
AJAX.registerTeardown('normalization.js', function () {
|
|
||||||
$('#extra').off('click', '#selectNonAtomicCol');
|
|
||||||
$('#splitGo').off('click');
|
|
||||||
$('.tblFooters').off('click', '#saveSplit');
|
|
||||||
$('#extra').off('click', '#addNewPrimary');
|
|
||||||
$('.tblFooters').off('click', '#saveNewPrimary');
|
|
||||||
$('#extra').off('click', '#removeRedundant');
|
|
||||||
$('#mainContent p').off('click', '#createPrimaryKey');
|
|
||||||
$('#mainContent').off('click', '#backEditPd');
|
|
||||||
$('#mainContent').off('click', '#showPossiblePd');
|
|
||||||
$('#mainContent').off('click', '.pickPd');
|
|
||||||
});
|
|
||||||
|
|
||||||
AJAX.registerOnload('normalization.js', function () {
|
|
||||||
var selectedCol;
|
|
||||||
normalizeto = $('#mainContent').data('normalizeto');
|
|
||||||
$('#extra').on('click', '#selectNonAtomicCol', function () {
|
|
||||||
if ($(this).val() === 'no_such_col') {
|
|
||||||
goToStep2();
|
|
||||||
} else {
|
|
||||||
selectedCol = $(this).val();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#splitGo').on('click', function () {
|
|
||||||
if (!selectedCol || selectedCol === '') {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
var numField = $('#numField').val();
|
|
||||||
$.get(
|
|
||||||
'normalization.php',
|
|
||||||
{
|
|
||||||
'ajax_request': true,
|
|
||||||
'db': PMA_commonParams.get('db'),
|
|
||||||
'table': PMA_commonParams.get('table'),
|
|
||||||
'splitColumn': true,
|
|
||||||
'numFields': numField
|
|
||||||
},
|
|
||||||
function (data) {
|
|
||||||
if (data.success === true) {
|
|
||||||
$('#newCols').html(data.message);
|
|
||||||
$('.default_value').hide();
|
|
||||||
$('.enum_notice').hide();
|
|
||||||
|
|
||||||
$('<input />')
|
|
||||||
.attr({ type: 'submit', id: 'saveSplit', value: PMA_messages.strSave })
|
|
||||||
.appendTo('.tblFooters');
|
|
||||||
|
|
||||||
var cancelSplitButton = $('<input />')
|
|
||||||
.attr({ type: 'submit', id: 'cancelSplit', value: PMA_messages.strCancel })
|
|
||||||
.on('click', function () {
|
|
||||||
$('#newCols').html('');
|
|
||||||
$(this).parent().html('');
|
|
||||||
})
|
|
||||||
.appendTo('.tblFooters');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
$('.tblFooters').on('click','#saveSplit', function () {
|
|
||||||
central_column_list = [];
|
|
||||||
if ($('#newCols #field_0_1').val() === '') {
|
|
||||||
$('#newCols #field_0_1').focus();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
var argsep = PMA_commonParams.get('arg_separator');
|
|
||||||
datastring = $('#newCols :input').serialize();
|
|
||||||
datastring += argsep + 'ajax_request=1' + argsep + 'do_save_data=1' + argsep + 'field_where=last';
|
|
||||||
$.post('tbl_addfield.php', datastring, function (data) {
|
|
||||||
if (data.success) {
|
|
||||||
$.post(
|
|
||||||
'sql.php',
|
|
||||||
{
|
|
||||||
'ajax_request': true,
|
|
||||||
'db': PMA_commonParams.get('db'),
|
|
||||||
'table': PMA_commonParams.get('table'),
|
|
||||||
'dropped_column': selectedCol,
|
|
||||||
'purge' : 1,
|
|
||||||
'sql_query': 'ALTER TABLE `' + PMA_commonParams.get('table') + '` DROP `' + selectedCol + '`;',
|
|
||||||
'is_js_confirmed': 1
|
|
||||||
},
|
|
||||||
function (data) {
|
|
||||||
if (data.success === true) {
|
|
||||||
appendHtmlColumnsList();
|
|
||||||
$('#newCols').html('');
|
|
||||||
$('.tblFooters').html('');
|
|
||||||
} else {
|
|
||||||
PMA_ajaxShowMessage(data.error, false);
|
|
||||||
}
|
|
||||||
selectedCol = '';
|
|
||||||
}
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
PMA_ajaxShowMessage(data.error, false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
$('#extra').on('click', '#addNewPrimary', function () {
|
|
||||||
$.get(
|
|
||||||
'normalization.php',
|
|
||||||
{
|
|
||||||
'ajax_request': true,
|
|
||||||
'db': PMA_commonParams.get('db'),
|
|
||||||
'table': PMA_commonParams.get('table'),
|
|
||||||
'addNewPrimary': true
|
|
||||||
},
|
|
||||||
function (data) {
|
|
||||||
if (data.success === true) {
|
|
||||||
$('#newCols').html(data.message);
|
|
||||||
$('.default_value').hide();
|
|
||||||
$('.enum_notice').hide();
|
|
||||||
|
|
||||||
$('<input />')
|
|
||||||
.attr({ type: 'submit', id: 'saveNewPrimary', value: PMA_messages.strSave })
|
|
||||||
.appendTo('.tblFooters');
|
|
||||||
$('<input />')
|
|
||||||
.attr({ type: 'submit', id: 'cancelSplit', value: PMA_messages.strCancel })
|
|
||||||
.on('click', function () {
|
|
||||||
$('#newCols').html('');
|
|
||||||
$(this).parent().html('');
|
|
||||||
})
|
|
||||||
.appendTo('.tblFooters');
|
|
||||||
} else {
|
|
||||||
PMA_ajaxShowMessage(data.error, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
$('.tblFooters').on('click', '#saveNewPrimary', function () {
|
|
||||||
var datastring = $('#newCols :input').serialize();
|
|
||||||
var argsep = PMA_commonParams.get('arg_separator');
|
|
||||||
datastring += argsep + 'field_key[0]=primary_0' + argsep + 'ajax_request=1' + argsep + 'do_save_data=1' + argsep + 'field_where=last';
|
|
||||||
$.post('tbl_addfield.php', datastring, function (data) {
|
|
||||||
if (data.success === true) {
|
|
||||||
$('#mainContent h4').html(PMA_messages.strPrimaryKeyAdded);
|
|
||||||
$('#mainContent p').html(PMA_messages.strToNextStep);
|
|
||||||
$('#mainContent #extra').html('');
|
|
||||||
$('#mainContent #newCols').html('');
|
|
||||||
$('.tblFooters').html('');
|
|
||||||
setTimeout(function () {
|
|
||||||
goToStep3();
|
|
||||||
}, 2000);
|
|
||||||
} else {
|
|
||||||
PMA_ajaxShowMessage(data.error, false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$('#extra').on('click', '#removeRedundant', function () {
|
|
||||||
var dropQuery = 'ALTER TABLE `' + PMA_commonParams.get('table') + '` ';
|
|
||||||
$('#extra input[type=checkbox]:checked').each(function () {
|
|
||||||
dropQuery += 'DROP `' + $(this).val() + '`, ';
|
|
||||||
});
|
|
||||||
dropQuery = dropQuery.slice(0, -2);
|
|
||||||
$.post(
|
|
||||||
'sql.php',
|
|
||||||
{
|
|
||||||
'ajax_request': true,
|
|
||||||
'db': PMA_commonParams.get('db'),
|
|
||||||
'table': PMA_commonParams.get('table'),
|
|
||||||
'sql_query': dropQuery,
|
|
||||||
'is_js_confirmed': 1
|
|
||||||
},
|
|
||||||
function (data) {
|
|
||||||
if (data.success === true) {
|
|
||||||
goToStep2('goToFinish1NF');
|
|
||||||
} else {
|
|
||||||
PMA_ajaxShowMessage(data.error, false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
});
|
|
||||||
$('#extra').on('click', '#moveRepeatingGroup', function () {
|
|
||||||
var repeatingCols = '';
|
|
||||||
$('#extra input[type=checkbox]:checked').each(function () {
|
|
||||||
repeatingCols += $(this).val() + ', ';
|
|
||||||
});
|
|
||||||
|
|
||||||
if (repeatingCols !== '') {
|
|
||||||
var newColName = $('#extra input[type=checkbox]:checked:first').val();
|
|
||||||
repeatingCols = repeatingCols.slice(0, -2);
|
|
||||||
var confirmStr = PMA_sprintf(PMA_messages.strMoveRepeatingGroup, escapeHtml(repeatingCols), escapeHtml(PMA_commonParams.get('table')));
|
|
||||||
confirmStr += '<input type="text" name="repeatGroupTable" placeholder="' + PMA_messages.strNewTablePlaceholder + '"/>' +
|
|
||||||
'( ' + escapeHtml(primary_key.toString()) + ', <input type="text" name="repeatGroupColumn" placeholder="' + PMA_messages.strNewColumnPlaceholder + '" value="' + escapeHtml(newColName) + '">)' +
|
|
||||||
'</ol>';
|
|
||||||
$('#newCols').html(confirmStr);
|
|
||||||
|
|
||||||
$('<input />')
|
|
||||||
.attr({ type: 'submit', value: PMA_messages.strCancel })
|
|
||||||
.on('click', function () {
|
|
||||||
$('#newCols').html('');
|
|
||||||
$('#extra input[type=checkbox]').prop('checked', false);
|
|
||||||
})
|
|
||||||
.appendTo('.tblFooters');
|
|
||||||
$('<input />')
|
|
||||||
.attr({ type: 'submit', value: PMA_messages.strGo })
|
|
||||||
.on('click', function () {
|
|
||||||
moveRepeatingGroup(repeatingCols);
|
|
||||||
})
|
|
||||||
.appendTo('.tblFooters');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$('#mainContent p').on('click', '#createPrimaryKey', function (event) {
|
|
||||||
event.preventDefault();
|
|
||||||
var url = { create_index: 1,
|
|
||||||
server: PMA_commonParams.get('server'),
|
|
||||||
db: PMA_commonParams.get('db'),
|
|
||||||
table: PMA_commonParams.get('table'),
|
|
||||||
added_fields: 1,
|
|
||||||
add_fields:1,
|
|
||||||
index: { Key_name:'PRIMARY' },
|
|
||||||
ajax_request: true
|
|
||||||
};
|
|
||||||
var title = PMA_messages.strAddPrimaryKey;
|
|
||||||
indexEditorDialog(url, title, function () {
|
|
||||||
// on success
|
|
||||||
$('.sqlqueryresults').remove();
|
|
||||||
$('.result_query').remove();
|
|
||||||
$('.tblFooters').html('');
|
|
||||||
goToStep2('goToStep3');
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
});
|
|
||||||
$('#mainContent').on('click', '#backEditPd', function () {
|
|
||||||
$('#mainContent').html(backup);
|
|
||||||
});
|
|
||||||
$('#mainContent').on('click', '#showPossiblePd', function () {
|
|
||||||
if ($(this).hasClass('hideList')) {
|
|
||||||
$(this).html('+ ' + PMA_messages.strShowPossiblePd);
|
|
||||||
$(this).removeClass('hideList');
|
|
||||||
$('#newCols').slideToggle('slow');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if ($('#newCols').html() !== '') {
|
|
||||||
$('#showPossiblePd').html('- ' + PMA_messages.strHidePd);
|
|
||||||
$('#showPossiblePd').addClass('hideList');
|
|
||||||
$('#newCols').slideToggle('slow');
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
$('#newCols').insertAfter('#mainContent h4');
|
|
||||||
$('#newCols').html('<div class="center">' + PMA_messages.strLoading + '<br/>' + PMA_messages.strWaitForPd + '</div>');
|
|
||||||
$.post(
|
|
||||||
'normalization.php',
|
|
||||||
{
|
|
||||||
'ajax_request': true,
|
|
||||||
'db': PMA_commonParams.get('db'),
|
|
||||||
'table': PMA_commonParams.get('table'),
|
|
||||||
'findPdl': true
|
|
||||||
}, function (data) {
|
|
||||||
$('#showPossiblePd').html('- ' + PMA_messages.strHidePd);
|
|
||||||
$('#showPossiblePd').addClass('hideList');
|
|
||||||
$('#newCols').html(data.message);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
$('#mainContent').on('click', '.pickPd', function () {
|
|
||||||
var strColsLeft = $(this).next('.determinants').html();
|
|
||||||
var colsLeft = strColsLeft.split(',');
|
|
||||||
var strColsRight = $(this).next().next().html();
|
|
||||||
var colsRight = strColsRight.split(',');
|
|
||||||
for (var i in colsRight) {
|
|
||||||
$('form[data-colname="' + colsRight[i].trim() + '"] input[type="checkbox"]').prop('checked', false);
|
|
||||||
for (var j in colsLeft) {
|
|
||||||
$('form[data-colname="' + colsRight[i].trim() + '"] input[value="' + colsLeft[j].trim() + '"]').prop('checked', true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
28
js/src/key_handler.js
Normal file
28
js/src/key_handler.js
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module import
|
||||||
|
*/
|
||||||
|
import { onKeyDownArrowsHandler } from './functions/KeyHandler';
|
||||||
|
|
||||||
|
function teardownKeyhandler () {
|
||||||
|
$(document).off('keydown keyup', '#table_columns');
|
||||||
|
$(document).off('keydown keyup', 'table.insertRowTable');
|
||||||
|
}
|
||||||
|
|
||||||
|
function onloadKeyhandler () {
|
||||||
|
$(document).on('keydown keyup', '#table_columns', function (event) {
|
||||||
|
onKeyDownArrowsHandler(event.originalEvent);
|
||||||
|
});
|
||||||
|
$(document).on('keydown keyup', 'table.insertRowTable', function (event) {
|
||||||
|
onKeyDownArrowsHandler(event.originalEvent);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module export
|
||||||
|
*/
|
||||||
|
export {
|
||||||
|
teardownKeyhandler,
|
||||||
|
onloadKeyhandler
|
||||||
|
};
|
||||||
@ -1,9 +1,13 @@
|
|||||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
|
||||||
|
/* Module import */
|
||||||
import * as Navigation from './functions/navigation';
|
import * as Navigation from './functions/navigation';
|
||||||
import { PMA_Messages as PMA_messages } from './variables/export_variables';
|
import { PMA_Messages as PMA_messages } from './variables/export_variables';
|
||||||
import CommonParams from './variables/common_params';
|
import CommonParams from './variables/common_params';
|
||||||
import { PMA_ajaxShowMessage, PMA_ajaxRemoveMessage, PMA_tooltip } from './utils/show_ajax_messages';
|
import { PMA_ajaxShowMessage, PMA_ajaxRemoveMessage, PMA_tooltip } from './utils/show_ajax_messages';
|
||||||
import { isStorageSupported } from './functions/config';
|
import { isStorageSupported } from './functions/config';
|
||||||
|
import { indexEditorDialog } from './functions/Indexes';
|
||||||
|
import RTE from './classes/RTE';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* function used in or for navigation panel
|
* function used in or for navigation panel
|
||||||
|
|||||||
299
js/src/normalization.js
Normal file
299
js/src/normalization.js
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Module import
|
||||||
|
*/
|
||||||
|
import { PMA_Messages as PMA_messages } from './variables/export_variables';
|
||||||
|
import PMA_commonParams from './variables/common_params';
|
||||||
|
import { PMA_ajaxShowMessage } from './utils/show_ajax_messages';
|
||||||
|
import { PMA_sprintf } from './utils/sprintf';
|
||||||
|
import { escapeHtml } from './utils/Sanitise';
|
||||||
|
import {
|
||||||
|
goToStep2,
|
||||||
|
goToStep3,
|
||||||
|
moveRepeatingGroup,
|
||||||
|
appendHtmlColumnsList
|
||||||
|
} from './functions/Table/Normalization';
|
||||||
|
import NormalizationEnum from './utils/NormalizationEnum';
|
||||||
|
import { indexEditorDialog } from './functions/Indexes';
|
||||||
|
/**
|
||||||
|
* @fileoverview events handling from normalization page
|
||||||
|
* @name normalization
|
||||||
|
*
|
||||||
|
* @requires jQuery
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* AJAX scripts for normalization.php
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
export function teardownNormalization () {
|
||||||
|
$('#extra').off('click', '#selectNonAtomicCol');
|
||||||
|
$('#splitGo').off('click');
|
||||||
|
$('.tblFooters').off('click', '#saveSplit');
|
||||||
|
$('#extra').off('click', '#addNewPrimary');
|
||||||
|
$('.tblFooters').off('click', '#saveNewPrimary');
|
||||||
|
$('#extra').off('click', '#removeRedundant');
|
||||||
|
$('#mainContent p').off('click', '#createPrimaryKey');
|
||||||
|
$('#mainContent').off('click', '#backEditPd');
|
||||||
|
$('#mainContent').off('click', '#showPossiblePd');
|
||||||
|
$('#mainContent').off('click', '.pickPd');
|
||||||
|
}
|
||||||
|
|
||||||
|
export function onloadNormalization () {
|
||||||
|
var selectedCol;
|
||||||
|
NormalizationEnum.normalizeto = $('#mainContent').data('normalizeto');
|
||||||
|
$('#extra').on('click', '#selectNonAtomicCol', function () {
|
||||||
|
if ($(this).val() === 'no_such_col') {
|
||||||
|
goToStep2();
|
||||||
|
} else {
|
||||||
|
selectedCol = $(this).val();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#splitGo').on('click', function () {
|
||||||
|
if (!selectedCol || selectedCol === '') {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var numField = $('#numField').val();
|
||||||
|
$.get(
|
||||||
|
'normalization.php',
|
||||||
|
{
|
||||||
|
'ajax_request': true,
|
||||||
|
'db': PMA_commonParams.get('db'),
|
||||||
|
'table': PMA_commonParams.get('table'),
|
||||||
|
'splitColumn': true,
|
||||||
|
'numFields': numField
|
||||||
|
},
|
||||||
|
function (data) {
|
||||||
|
if (data.success === true) {
|
||||||
|
$('#newCols').html(data.message);
|
||||||
|
$('.default_value').hide();
|
||||||
|
$('.enum_notice').hide();
|
||||||
|
|
||||||
|
$('<input />')
|
||||||
|
.attr({ type: 'submit', id: 'saveSplit', value: PMA_messages.strSave })
|
||||||
|
.appendTo('.tblFooters');
|
||||||
|
|
||||||
|
var cancelSplitButton = $('<input />')
|
||||||
|
.attr({ type: 'submit', id: 'cancelSplit', value: PMA_messages.strCancel })
|
||||||
|
.on('click', function () {
|
||||||
|
$('#newCols').html('');
|
||||||
|
$(this).parent().html('');
|
||||||
|
})
|
||||||
|
.appendTo('.tblFooters');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('.tblFooters').on('click','#saveSplit', function () {
|
||||||
|
central_column_list = [];
|
||||||
|
if ($('#newCols #field_0_1').val() === '') {
|
||||||
|
$('#newCols #field_0_1').focus();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var argsep = PMA_commonParams.get('arg_separator');
|
||||||
|
var datastring = $('#newCols :input').serialize();
|
||||||
|
datastring += argsep + 'ajax_request=1' + argsep + 'do_save_data=1' + argsep + 'field_where=last';
|
||||||
|
$.post('tbl_addfield.php', datastring, function (data) {
|
||||||
|
if (data.success) {
|
||||||
|
$.post(
|
||||||
|
'sql.php',
|
||||||
|
{
|
||||||
|
'ajax_request': true,
|
||||||
|
'db': PMA_commonParams.get('db'),
|
||||||
|
'table': PMA_commonParams.get('table'),
|
||||||
|
'dropped_column': selectedCol,
|
||||||
|
'purge' : 1,
|
||||||
|
'sql_query': 'ALTER TABLE `' + PMA_commonParams.get('table') + '` DROP `' + selectedCol + '`;',
|
||||||
|
'is_js_confirmed': 1
|
||||||
|
},
|
||||||
|
function (data) {
|
||||||
|
if (data.success === true) {
|
||||||
|
appendHtmlColumnsList();
|
||||||
|
$('#newCols').html('');
|
||||||
|
$('.tblFooters').html('');
|
||||||
|
} else {
|
||||||
|
PMA_ajaxShowMessage(data.error, false);
|
||||||
|
}
|
||||||
|
selectedCol = '';
|
||||||
|
}
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
PMA_ajaxShowMessage(data.error, false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#extra').on('click', '#addNewPrimary', function () {
|
||||||
|
$.get(
|
||||||
|
'normalization.php',
|
||||||
|
{
|
||||||
|
'ajax_request': true,
|
||||||
|
'db': PMA_commonParams.get('db'),
|
||||||
|
'table': PMA_commonParams.get('table'),
|
||||||
|
'addNewPrimary': true
|
||||||
|
},
|
||||||
|
function (data) {
|
||||||
|
if (data.success === true) {
|
||||||
|
$('#newCols').html(data.message);
|
||||||
|
$('.default_value').hide();
|
||||||
|
$('.enum_notice').hide();
|
||||||
|
|
||||||
|
$('<input />')
|
||||||
|
.attr({ type: 'submit', id: 'saveNewPrimary', value: PMA_messages.strSave })
|
||||||
|
.appendTo('.tblFooters');
|
||||||
|
$('<input />')
|
||||||
|
.attr({ type: 'submit', id: 'cancelSplit', value: PMA_messages.strCancel })
|
||||||
|
.on('click', function () {
|
||||||
|
$('#newCols').html('');
|
||||||
|
$(this).parent().html('');
|
||||||
|
})
|
||||||
|
.appendTo('.tblFooters');
|
||||||
|
} else {
|
||||||
|
PMA_ajaxShowMessage(data.error, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('.tblFooters').on('click', '#saveNewPrimary', function () {
|
||||||
|
var datastring = $('#newCols :input').serialize();
|
||||||
|
var argsep = PMA_commonParams.get('arg_separator');
|
||||||
|
datastring += argsep + 'field_key[0]=primary_0' + argsep + 'ajax_request=1' + argsep + 'do_save_data=1' + argsep + 'field_where=last';
|
||||||
|
$.post('tbl_addfield.php', datastring, function (data) {
|
||||||
|
if (data.success === true) {
|
||||||
|
$('#mainContent h4').html(PMA_messages.strPrimaryKeyAdded);
|
||||||
|
$('#mainContent p').html(PMA_messages.strToNextStep);
|
||||||
|
$('#mainContent #extra').html('');
|
||||||
|
$('#mainContent #newCols').html('');
|
||||||
|
$('.tblFooters').html('');
|
||||||
|
setTimeout(function () {
|
||||||
|
goToStep3();
|
||||||
|
}, 2000);
|
||||||
|
} else {
|
||||||
|
PMA_ajaxShowMessage(data.error, false);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$('#extra').on('click', '#removeRedundant', function () {
|
||||||
|
var dropQuery = 'ALTER TABLE `' + PMA_commonParams.get('table') + '` ';
|
||||||
|
$('#extra input[type=checkbox]:checked').each(function () {
|
||||||
|
dropQuery += 'DROP `' + $(this).val() + '`, ';
|
||||||
|
});
|
||||||
|
dropQuery = dropQuery.slice(0, -2);
|
||||||
|
$.post(
|
||||||
|
'sql.php',
|
||||||
|
{
|
||||||
|
'ajax_request': true,
|
||||||
|
'db': PMA_commonParams.get('db'),
|
||||||
|
'table': PMA_commonParams.get('table'),
|
||||||
|
'sql_query': dropQuery,
|
||||||
|
'is_js_confirmed': 1
|
||||||
|
},
|
||||||
|
function (data) {
|
||||||
|
if (data.success === true) {
|
||||||
|
goToStep2('goToFinish1NF');
|
||||||
|
} else {
|
||||||
|
PMA_ajaxShowMessage(data.error, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
});
|
||||||
|
$('#extra').on('click', '#moveRepeatingGroup', function () {
|
||||||
|
var repeatingCols = '';
|
||||||
|
$('#extra input[type=checkbox]:checked').each(function () {
|
||||||
|
repeatingCols += $(this).val() + ', ';
|
||||||
|
});
|
||||||
|
|
||||||
|
if (repeatingCols !== '') {
|
||||||
|
var newColName = $('#extra input[type=checkbox]:checked:first').val();
|
||||||
|
repeatingCols = repeatingCols.slice(0, -2);
|
||||||
|
var confirmStr = PMA_sprintf(PMA_messages.strMoveRepeatingGroup, escapeHtml(repeatingCols), escapeHtml(PMA_commonParams.get('table')));
|
||||||
|
confirmStr += '<input type="text" name="repeatGroupTable" placeholder="' + PMA_messages.strNewTablePlaceholder + '"/>' +
|
||||||
|
'( ' + escapeHtml(NormalizationEnum.primary_key.toString()) + ', <input type="text" name="repeatGroupColumn" placeholder="' + PMA_messages.strNewColumnPlaceholder + '" value="' + escapeHtml(newColName) + '">)' +
|
||||||
|
'</ol>';
|
||||||
|
$('#newCols').html(confirmStr);
|
||||||
|
|
||||||
|
$('<input />')
|
||||||
|
.attr({ type: 'submit', value: PMA_messages.strCancel })
|
||||||
|
.on('click', function () {
|
||||||
|
$('#newCols').html('');
|
||||||
|
$('#extra input[type=checkbox]').prop('checked', false);
|
||||||
|
})
|
||||||
|
.appendTo('.tblFooters');
|
||||||
|
$('<input />')
|
||||||
|
.attr({ type: 'submit', value: PMA_messages.strGo })
|
||||||
|
.on('click', function () {
|
||||||
|
moveRepeatingGroup(repeatingCols);
|
||||||
|
})
|
||||||
|
.appendTo('.tblFooters');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#mainContent p').on('click', '#createPrimaryKey', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var url = { create_index: 1,
|
||||||
|
server: PMA_commonParams.get('server'),
|
||||||
|
db: PMA_commonParams.get('db'),
|
||||||
|
table: PMA_commonParams.get('table'),
|
||||||
|
added_fields: 1,
|
||||||
|
add_fields:1,
|
||||||
|
index: { Key_name:'PRIMARY' },
|
||||||
|
ajax_request: true
|
||||||
|
};
|
||||||
|
var title = PMA_messages.strAddPrimaryKey;
|
||||||
|
indexEditorDialog(url, title, function () {
|
||||||
|
// on success
|
||||||
|
$('.sqlqueryresults').remove();
|
||||||
|
$('.result_query').remove();
|
||||||
|
$('.tblFooters').html('');
|
||||||
|
goToStep2('goToStep3');
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#mainContent').on('click', '#backEditPd', function () {
|
||||||
|
$('#mainContent').html(NormalizationEnum.backup);
|
||||||
|
});
|
||||||
|
$('#mainContent').on('click', '#showPossiblePd', function () {
|
||||||
|
if ($(this).hasClass('hideList')) {
|
||||||
|
$(this).html('+ ' + PMA_messages.strShowPossiblePd);
|
||||||
|
$(this).removeClass('hideList');
|
||||||
|
$('#newCols').slideToggle('slow');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ($('#newCols').html() !== '') {
|
||||||
|
$('#showPossiblePd').html('- ' + PMA_messages.strHidePd);
|
||||||
|
$('#showPossiblePd').addClass('hideList');
|
||||||
|
$('#newCols').slideToggle('slow');
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
$('#newCols').insertAfter('#mainContent h4');
|
||||||
|
$('#newCols').html('<div class="center">' + PMA_messages.strLoading + '<br/>' + PMA_messages.strWaitForPd + '</div>');
|
||||||
|
$.post(
|
||||||
|
'normalization.php',
|
||||||
|
{
|
||||||
|
'ajax_request': true,
|
||||||
|
'db': PMA_commonParams.get('db'),
|
||||||
|
'table': PMA_commonParams.get('table'),
|
||||||
|
'findPdl': true
|
||||||
|
}, function (data) {
|
||||||
|
$('#showPossiblePd').html('- ' + PMA_messages.strHidePd);
|
||||||
|
$('#showPossiblePd').addClass('hideList');
|
||||||
|
$('#newCols').html(data.message);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
$('#mainContent').on('click', '.pickPd', function () {
|
||||||
|
var strColsLeft = $(this).next('.determinants').html();
|
||||||
|
var colsLeft = strColsLeft.split(',');
|
||||||
|
var strColsRight = $(this).next().next().html();
|
||||||
|
var colsRight = strColsRight.split(',');
|
||||||
|
for (var i in colsRight) {
|
||||||
|
$('form[data-colname="' + colsRight[i].trim() + '"] input[type="checkbox"]').prop('checked', false);
|
||||||
|
for (var j in colsLeft) {
|
||||||
|
$('form[data-colname="' + colsRight[i].trim() + '"] input[value="' + colsLeft[j].trim() + '"]').prop('checked', true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
@ -1,7 +1,12 @@
|
|||||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
|
||||||
|
/* Module Import */
|
||||||
|
import { PMA_messages as PMA_messages } from './variables/export_variables';
|
||||||
|
import { PMA_ajaxShowMessage } from './utils/show_ajax_messages';
|
||||||
|
import { AJAX } from './ajax';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* for server_replication.php
|
* for server_replication.php
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
var random_server_id = Math.floor(Math.random() * 10000000);
|
var random_server_id = Math.floor(Math.random() * 10000000);
|
||||||
var conf_prefix = 'server-id=' + random_server_id + '\nlog_bin=mysql-bin\nlog_error=mysql-bin.err\n';
|
var conf_prefix = 'server-id=' + random_server_id + '\nlog_bin=mysql-bin\nlog_error=mysql-bin.err\n';
|
||||||
@ -29,7 +34,7 @@ function update_config () {
|
|||||||
/**
|
/**
|
||||||
* Unbind all event handlers before tearing down a page
|
* Unbind all event handlers before tearing down a page
|
||||||
*/
|
*/
|
||||||
export function teardown1 () {
|
export function teardownReplication () {
|
||||||
$('#db_type').off('change');
|
$('#db_type').off('change');
|
||||||
$('#db_select').off('change');
|
$('#db_select').off('change');
|
||||||
$('#master_status_href').off('click');
|
$('#master_status_href').off('click');
|
||||||
@ -43,7 +48,7 @@ export function teardown1 () {
|
|||||||
$('#reset_slave').off('click');
|
$('#reset_slave').off('click');
|
||||||
}
|
}
|
||||||
|
|
||||||
export function onload1 () {
|
export function onloadReplication () {
|
||||||
$('#rep').text(conf_prefix);
|
$('#rep').text(conf_prefix);
|
||||||
$('#db_type').on('change', update_config);
|
$('#db_type').on('change', update_config);
|
||||||
$('#db_select').on('change', update_config);
|
$('#db_select').on('change', update_config);
|
||||||
|
|||||||
166
js/src/rte.js
Normal file
166
js/src/rte.js
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
|
||||||
|
/* Module import */
|
||||||
|
import RTE from './classes/RTE';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attach Ajax event handlers for the Routines, Triggers and Events editor
|
||||||
|
*/
|
||||||
|
$(function () {
|
||||||
|
/**
|
||||||
|
* Attach Ajax event handlers for the Add/Edit functionality.
|
||||||
|
*/
|
||||||
|
$(document).on('click', 'a.ajax.add_anchor, a.ajax.edit_anchor', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var type = $(this).attr('href').substr(0, $(this).attr('href').indexOf('?'));
|
||||||
|
if (type.indexOf('routine') !== -1) {
|
||||||
|
type = 'routine';
|
||||||
|
} else if (type.indexOf('trigger') !== -1) {
|
||||||
|
type = 'trigger';
|
||||||
|
} else if (type.indexOf('event') !== -1) {
|
||||||
|
type = 'event';
|
||||||
|
} else {
|
||||||
|
type = '';
|
||||||
|
}
|
||||||
|
var dialog = new RTE.object(type);
|
||||||
|
dialog.editorDialog($(this).hasClass('add_anchor'), $(this));
|
||||||
|
}); // end $(document).on()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attach Ajax event handlers for the Execute routine functionality
|
||||||
|
*/
|
||||||
|
$(document).on('click', 'a.ajax.exec_anchor', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var dialog = new RTE.object('routine');
|
||||||
|
dialog.executeDialog($(this));
|
||||||
|
}); // end $(document).on()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attach Ajax event handlers for Export of Routines, Triggers and Events
|
||||||
|
*/
|
||||||
|
$(document).on('click', 'a.ajax.export_anchor', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var dialog = new RTE.object();
|
||||||
|
dialog.exportDialog($(this));
|
||||||
|
}); // end $(document).on()
|
||||||
|
|
||||||
|
$(document).on('click', '#rteListForm.ajax .mult_submit[value="export"]', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var dialog = new RTE.object();
|
||||||
|
dialog.exportDialog($(this));
|
||||||
|
}); // end $(document).on()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attach Ajax event handlers for Drop functionality
|
||||||
|
* of Routines, Triggers and Events.
|
||||||
|
*/
|
||||||
|
$(document).on('click', 'a.ajax.drop_anchor', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var dialog = new RTE.object();
|
||||||
|
dialog.dropDialog($(this));
|
||||||
|
}); // end $(document).on()
|
||||||
|
|
||||||
|
$(document).on('click', '#rteListForm.ajax .mult_submit[value="drop"]', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
var dialog = new RTE.object();
|
||||||
|
dialog.dropMultipleDialog($(this));
|
||||||
|
}); // end $(document).on()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attach Ajax event handlers for the "Change event/routine type"
|
||||||
|
* functionality in the events editor, so that the correct
|
||||||
|
* rows are shown in the editor when changing the event type
|
||||||
|
*/
|
||||||
|
$(document).on('change', 'select[name=item_type]', function () {
|
||||||
|
$(this)
|
||||||
|
.closest('table')
|
||||||
|
.find('tr.recurring_event_row, tr.onetime_event_row, tr.routine_return_row, .routine_direction_cell')
|
||||||
|
.toggle();
|
||||||
|
}); // end $(document).on()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attach Ajax event handlers for the "Change parameter type"
|
||||||
|
* functionality in the routines editor, so that the correct
|
||||||
|
* option/length fields, if any, are shown when changing
|
||||||
|
* a parameter type
|
||||||
|
*/
|
||||||
|
$(document).on('change', 'select[name^=item_param_type]', function () {
|
||||||
|
/**
|
||||||
|
* @var row jQuery object containing the reference to
|
||||||
|
* a row in the routine parameters table
|
||||||
|
*/
|
||||||
|
var $row = $(this).parents('tr').first();
|
||||||
|
var rte = new RTE.object('routine');
|
||||||
|
rte.setOptionsForParameter(
|
||||||
|
$row.find('select[name^=item_param_type]'),
|
||||||
|
$row.find('input[name^=item_param_length]'),
|
||||||
|
$row.find('select[name^=item_param_opts_text]'),
|
||||||
|
$row.find('select[name^=item_param_opts_num]')
|
||||||
|
);
|
||||||
|
}); // end $(document).on()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attach Ajax event handlers for the "Change the type of return
|
||||||
|
* variable of function" functionality, so that the correct fields,
|
||||||
|
* if any, are shown when changing the function return type type
|
||||||
|
*/
|
||||||
|
$(document).on('change', 'select[name=item_returntype]', function () {
|
||||||
|
var rte = new RTE.object('routine');
|
||||||
|
var $table = $(this).closest('table.rte_table');
|
||||||
|
rte.setOptionsForParameter(
|
||||||
|
$table.find('select[name=item_returntype]'),
|
||||||
|
$table.find('input[name=item_returnlength]'),
|
||||||
|
$table.find('select[name=item_returnopts_text]'),
|
||||||
|
$table.find('select[name=item_returnopts_num]')
|
||||||
|
);
|
||||||
|
}); // end $(document).on()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attach Ajax event handlers for the "Add parameter to routine" functionality
|
||||||
|
*/
|
||||||
|
$(document).on('click', 'input[name=routine_addparameter]', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
/**
|
||||||
|
* @var routine_params_table jQuery object containing the reference
|
||||||
|
* to the routine parameters table
|
||||||
|
*/
|
||||||
|
var $routine_params_table = $(this).closest('div.ui-dialog').find('.routine_params_table');
|
||||||
|
/**
|
||||||
|
* @var new_param_row A string containing the HTML code for the
|
||||||
|
* new row for the routine parameters table
|
||||||
|
*/
|
||||||
|
var new_param_row = RTE.param_template.replace(/%s/g, $routine_params_table.find('tr').length - 1);
|
||||||
|
// Append the new row to the parameters table
|
||||||
|
$routine_params_table.append(new_param_row);
|
||||||
|
// Make sure that the row is correctly shown according to the type of routine
|
||||||
|
if ($(this).closest('div.ui-dialog').find('table.rte_table select[name=item_type]').val() === 'FUNCTION') {
|
||||||
|
$('tr.routine_return_row').show();
|
||||||
|
$('td.routine_direction_cell').hide();
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* @var newrow jQuery object containing the reference to the newly
|
||||||
|
* inserted row in the routine parameters table
|
||||||
|
*/
|
||||||
|
var $newrow = $(this).closest('div.ui-dialog').find('table.routine_params_table').find('tr').has('td').last();
|
||||||
|
// Enable/disable the 'options' dropdowns for parameters as necessary
|
||||||
|
var rte = new RTE.object('routine');
|
||||||
|
rte.setOptionsForParameter(
|
||||||
|
$newrow.find('select[name^=item_param_type]'),
|
||||||
|
$newrow.find('input[name^=item_param_length]'),
|
||||||
|
$newrow.find('select[name^=item_param_opts_text]'),
|
||||||
|
$newrow.find('select[name^=item_param_opts_num]')
|
||||||
|
);
|
||||||
|
}); // end $(document).on()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Attach Ajax event handlers for the
|
||||||
|
* "Remove parameter from routine" functionality
|
||||||
|
*/
|
||||||
|
$(document).on('click', 'a.routine_param_remove_anchor', function (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
$(this).parent().parent().remove();
|
||||||
|
// After removing a parameter, the indices of the name attributes in
|
||||||
|
// the input fields lose the correct order and need to be reordered.
|
||||||
|
RTE.ROUTINE.reindexParameters();
|
||||||
|
}); // end $(document).on()
|
||||||
|
}); // end of $()
|
||||||
13
js/src/utils/NormalizationEnum.js
Normal file
13
js/src/utils/NormalizationEnum.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var NormalizationEnum Object to sore data related to Normalization
|
||||||
|
*/
|
||||||
|
var NormalizationEnum = {
|
||||||
|
normalizeto: '1nf',
|
||||||
|
primary_key: null,
|
||||||
|
data_parsed: null,
|
||||||
|
backup: ''
|
||||||
|
};
|
||||||
|
|
||||||
|
export default NormalizationEnum;
|
||||||
@ -220,11 +220,99 @@ function PMA_ajaxRemoveMessage ($thisMsgbox) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a message inside an object with a sliding effect
|
||||||
|
*
|
||||||
|
* @param msg A string containing the text to display
|
||||||
|
* @param $obj a jQuery object containing the reference
|
||||||
|
* to the element where to put the message
|
||||||
|
* This is optional, if no element is
|
||||||
|
* provided, one will be created below the
|
||||||
|
* navigation links at the top of the page
|
||||||
|
*
|
||||||
|
* @return bool True on success, false on failure
|
||||||
|
*/
|
||||||
|
function PMA_slidingMessage (msg, $obj) {
|
||||||
|
if (msg === undefined || msg.length === 0) {
|
||||||
|
// Don't show an empty message
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if ($obj === undefined || !($obj instanceof jQuery) || $obj.length === 0) {
|
||||||
|
// If the second argument was not supplied,
|
||||||
|
// we might have to create a new DOM node.
|
||||||
|
if ($('#PMA_slidingMessage').length === 0) {
|
||||||
|
$('#page_content').prepend(
|
||||||
|
'<span id="PMA_slidingMessage" ' +
|
||||||
|
'class="pma_sliding_message"></span>'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
$obj = $('#PMA_slidingMessage');
|
||||||
|
}
|
||||||
|
if ($obj.has('div').length > 0) {
|
||||||
|
// If there already is a message inside the
|
||||||
|
// target object, we must get rid of it
|
||||||
|
$obj
|
||||||
|
.find('div')
|
||||||
|
.first()
|
||||||
|
.fadeOut(function () {
|
||||||
|
$obj
|
||||||
|
.children()
|
||||||
|
.remove();
|
||||||
|
$obj
|
||||||
|
.append('<div>' + msg + '</div>');
|
||||||
|
// highlight any sql before taking height;
|
||||||
|
PMA_highlightSQL($obj);
|
||||||
|
$obj.find('div')
|
||||||
|
.first()
|
||||||
|
.hide();
|
||||||
|
$obj
|
||||||
|
.animate({
|
||||||
|
height: $obj.find('div').first().height()
|
||||||
|
})
|
||||||
|
.find('div')
|
||||||
|
.first()
|
||||||
|
.fadeIn();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
// Object does not already have a message
|
||||||
|
// inside it, so we simply slide it down
|
||||||
|
$obj.width('100%')
|
||||||
|
.html('<div>' + msg + '</div>');
|
||||||
|
// highlight any sql before taking height;
|
||||||
|
PMA_highlightSQL($obj);
|
||||||
|
var h = $obj
|
||||||
|
.find('div')
|
||||||
|
.first()
|
||||||
|
.hide()
|
||||||
|
.height();
|
||||||
|
$obj
|
||||||
|
.find('div')
|
||||||
|
.first()
|
||||||
|
.css('height', 0)
|
||||||
|
.show()
|
||||||
|
.animate({
|
||||||
|
height: h
|
||||||
|
}, function () {
|
||||||
|
// Set the height of the parent
|
||||||
|
// to the height of the child
|
||||||
|
$obj
|
||||||
|
.height(
|
||||||
|
$obj
|
||||||
|
.find('div')
|
||||||
|
.first()
|
||||||
|
.height()
|
||||||
|
);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
} // end PMA_slidingMessage()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module export
|
* Module export
|
||||||
*/
|
*/
|
||||||
export {
|
export {
|
||||||
PMA_ajaxRemoveMessage,
|
PMA_ajaxRemoveMessage,
|
||||||
PMA_ajaxShowMessage,
|
PMA_ajaxShowMessage,
|
||||||
PMA_tooltip
|
PMA_tooltip,
|
||||||
|
PMA_slidingMessage
|
||||||
};
|
};
|
||||||
|
|||||||
@ -184,12 +184,12 @@ class Header
|
|||||||
$this->_scripts->addFile('messages.php', array('l' => $GLOBALS['lang']));
|
$this->_scripts->addFile('messages.php', array('l' => $GLOBALS['lang']));
|
||||||
$this->_scripts->addFile('vendors~index_new.js');
|
$this->_scripts->addFile('vendors~index_new.js');
|
||||||
$this->_scripts->addFile('index_new.js');
|
$this->_scripts->addFile('index_new.js');
|
||||||
$this->_scripts->addFile('keyhandler.js');
|
$this->_scripts->addFile('key_handler');
|
||||||
// Cross-framing protection
|
// Cross-framing protection
|
||||||
if ($GLOBALS['cfg']['AllowThirdPartyFraming'] === false) {
|
if ($GLOBALS['cfg']['AllowThirdPartyFraming'] === false) {
|
||||||
$this->_scripts->addFile('cross_framing_protection.js');
|
$this->_scripts->addFile('cross_framing_protection');
|
||||||
}
|
}
|
||||||
$this->_scripts->addFile('rte.js');
|
$this->_scripts->addFile('rte');
|
||||||
if ($GLOBALS['cfg']['SendErrorReports'] !== 'never') {
|
if ($GLOBALS['cfg']['SendErrorReports'] !== 'never') {
|
||||||
$this->_scripts->addFile('vendor/tracekit.js');
|
$this->_scripts->addFile('vendor/tracekit.js');
|
||||||
$this->_scripts->addFile('error_report.js');
|
$this->_scripts->addFile('error_report.js');
|
||||||
@ -213,7 +213,7 @@ class Header
|
|||||||
$this->_scripts->addFile('common.js');
|
$this->_scripts->addFile('common.js');
|
||||||
|
|
||||||
if($GLOBALS['cfg']['enable_drag_drop_import'] === true) {
|
if($GLOBALS['cfg']['enable_drag_drop_import'] === true) {
|
||||||
$this->_scripts->addFile('drag_drop_import.js');
|
$this->_scripts->addFile('drag_drop_import');
|
||||||
}
|
}
|
||||||
$this->_scripts->addFile('page_settings');
|
$this->_scripts->addFile('page_settings');
|
||||||
if (! $GLOBALS['PMA_Config']->get('DisableShortcutKeys')) {
|
if (! $GLOBALS['PMA_Config']->get('DisableShortcutKeys')) {
|
||||||
|
|||||||
@ -75,7 +75,7 @@ if (isset($_REQUEST['getNewTables3NF'])) {
|
|||||||
|
|
||||||
$header = $response->getHeader();
|
$header = $response->getHeader();
|
||||||
$scripts = $header->getScripts();
|
$scripts = $header->getScripts();
|
||||||
$scripts->addFile('normalization.js');
|
$scripts->addFile('normalization');
|
||||||
$scripts->addFile('vendor/jquery/jquery.uitablefilter.js');
|
$scripts->addFile('vendor/jquery/jquery.uitablefilter.js');
|
||||||
$normalForm = '1nf';
|
$normalForm = '1nf';
|
||||||
if (Core::isValid($_REQUEST['normalizeTo'], ['1nf', '2nf', '3nf'])) {
|
if (Core::isValid($_REQUEST['normalizeTo'], ['1nf', '2nf', '3nf'])) {
|
||||||
|
|||||||
14
package.json
14
package.json
@ -17,13 +17,13 @@
|
|||||||
"jquery": "3.3.1",
|
"jquery": "3.3.1",
|
||||||
"jquery-migrate": "3.0.0",
|
"jquery-migrate": "3.0.0",
|
||||||
"jquery-mousewheel": "3.1.13",
|
"jquery-mousewheel": "3.1.13",
|
||||||
"jquery-ui": "^1.12.1",
|
"jquery-ui": "1.12.1",
|
||||||
"jquery-ui-bundle": "^1.12.1-migrate",
|
"jquery-ui-bundle": "1.12.1-migrate",
|
||||||
"jquery-ui-timepicker-addon": "1.6.3",
|
"jquery-ui-timepicker-addon": "1.6.3",
|
||||||
"jquery-validation": "1.17.0",
|
"jquery-validation": "1.17.0",
|
||||||
"jquery.event.drag": "2.2.2",
|
"jquery.event.drag": "2.2.2",
|
||||||
"js-cookie": "2.2.0",
|
"js-cookie": "2.2.0",
|
||||||
"sprintf-js": "^1.1.1",
|
"sprintf-js": "1.1.1",
|
||||||
"tracekit": "0.4.5",
|
"tracekit": "0.4.5",
|
||||||
"updated-jqplot": "1.0.9-2",
|
"updated-jqplot": "1.0.9-2",
|
||||||
"zxcvbn": "4.4.2"
|
"zxcvbn": "4.4.2"
|
||||||
@ -39,9 +39,9 @@
|
|||||||
"eslint": "^4.9.0",
|
"eslint": "^4.9.0",
|
||||||
"jsdoc": "^3.5.5",
|
"jsdoc": "^3.5.5",
|
||||||
"minami": "^1.2.3",
|
"minami": "^1.2.3",
|
||||||
"webpack": "^4.8.3",
|
"webpack": "4.8.3",
|
||||||
"webpack-bundle-analyzer": "^2.13.1",
|
"webpack-bundle-analyzer": "2.13.1",
|
||||||
"webpack-cli": "^2.1.3",
|
"webpack-cli": "2.1.3",
|
||||||
"webpack-dev-server": "^3.1.4"
|
"webpack-dev-server": "3.1.4"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user