102 lines
3.1 KiB
JavaScript
102 lines
3.1 KiB
JavaScript
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
|
|
|
/**
|
|
* Resizer object
|
|
* Careful: this object UI logics highly related with functions under PMA_console
|
|
* Resizing min-height is 32, if small than it, console will collapse
|
|
* @class ConsoleResizer
|
|
*/
|
|
export default class ConsoleResizer {
|
|
/**
|
|
* @param {Object} instance Instance of PMA Console
|
|
*/
|
|
constructor (instance) {
|
|
this._posY = 0;
|
|
this._height = 0;
|
|
this._resultHeight = 0;
|
|
this.pmaConsole = null;
|
|
this.initialize = this.initialize.bind(this);
|
|
this._mousedown = this._mousedown.bind(this);
|
|
this._mousemove = this._mousemove.bind(this);
|
|
this._mouseup = this._mouseup.bind(this);
|
|
this.setPmaConsole(instance);
|
|
}
|
|
|
|
/**
|
|
* @param {Object} instance Instance of PMA Console
|
|
* @return {void}
|
|
*/
|
|
setPmaConsole (instance) {
|
|
this.pmaConsole = instance;
|
|
this.initialize();
|
|
}
|
|
|
|
/**
|
|
* Mousedown event handler for bind to resizer
|
|
*
|
|
* @return void
|
|
*/
|
|
_mousedown (event) {
|
|
if (this.pmaConsole.config.Mode !== 'show') {
|
|
return;
|
|
}
|
|
this._posY = event.pageY;
|
|
this._height = this.pmaConsole.$consoleContent.height();
|
|
$(document).mousemove(this._mousemove);
|
|
$(document).mouseup(this._mouseup);
|
|
// Disable text selection while resizing
|
|
$(document).on('selectstart', function () {
|
|
return false;
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Mousemove event handler for bind to resizer
|
|
*
|
|
* @return void
|
|
*/
|
|
_mousemove (event) {
|
|
if (event.pageY < 35) {
|
|
event.pageY = 35;
|
|
}
|
|
this._resultHeight = this._height + (this._posY - event.pageY);
|
|
// Content min-height is 32, if adjusting height small than it we'll move it out of the page
|
|
if (this._resultHeight <= 32) {
|
|
this.pmaConsole.$consoleAllContents.height(32);
|
|
this.pmaConsole.$consoleContent.css('margin-bottom', this._resultHeight - 32);
|
|
} else {
|
|
// Logic below makes viewable area always at bottom when adjusting height and content already at bottom
|
|
if (this.pmaConsole.$consoleContent.scrollTop() + this.pmaConsole.$consoleContent.innerHeight() + 16
|
|
>= this.pmaConsole.$consoleContent.prop('scrollHeight')) {
|
|
this.pmaConsole.$consoleAllContents.height(this._resultHeight);
|
|
this.pmaConsole.scrollBottom();
|
|
} else {
|
|
this.pmaConsole.$consoleAllContents.height(this._resultHeight);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Mouseup event handler for bind to resizer
|
|
*
|
|
* @return void
|
|
*/
|
|
_mouseup () {
|
|
this.pmaConsole.setConfig('Height', this._resultHeight);
|
|
this.pmaConsole.show();
|
|
$(document).off('mousemove');
|
|
$(document).off('mouseup');
|
|
$(document).off('selectstart');
|
|
}
|
|
|
|
/**
|
|
* Used for console resizer initialize
|
|
*
|
|
* @return void
|
|
*/
|
|
initialize () {
|
|
$('#pma_console').find('.toolbar').off('mousedown');
|
|
$('#pma_console').find('.toolbar').mousedown(this._mousedown);
|
|
}
|
|
}
|