Path: blob/master/webroot/rsrc/js/phuix/PHUIXFormationColumnView.js
12241 views
/**1* @provides phuix-formation-column-view2* @requires javelin-install3* javelin-dom4*/56JX.install('PHUIXFormationColumnView', {78construct: function(node) {9this._node = node;10},1112properties: {13isRightAligned: false,14isVisible: true,15expanderNode: null,16resizerItem: null,17resizerControl: null,18width: null,19widthSettingKey: null,20visibleSettingKey: null,21minimumWidth: null,22maximumWidth: null,23flank: null24},2526members: {27_node: null,28_resizingWidth: null,29_resizingBarPosition: null,30_dragging: null,3132start: function() {33var onshow = JX.bind(this, this._setVisibility, true);34var onhide = JX.bind(this, this._setVisibility, false);3536JX.DOM.listen(this._node, 'click', 'phui-flank-header-hide', onhide);3738var expander = this.getExpanderNode();39if (expander) {40JX.DOM.listen(expander, 'click', null, onshow);41}4243var resizer = this.getResizerItem();44if (resizer) {45var ondown = JX.bind(this, this._onresizestart);46JX.DOM.listen(resizer, 'mousedown', null, ondown);4748var onmove = JX.bind(this, this._onresizemove);49JX.Stratcom.listen('mousemove', null, onmove);5051var onup = JX.bind(this, this._onresizeend);52JX.Stratcom.listen('mouseup', null, onup);53}5455this.repaint();56},5758_onresizestart: function(e) {59if (!e.isNormalMouseEvent()) {60return;61}6263this._dragging = JX.$V(e);64this._resizingWidth = this.getWidth();65this._resizingBarPosition = JX.$V(this.getResizerControl());6667// Show the "col-resize" cursor on the whole document while we're68// dragging, since the mouse will slip off the actual bar fairly often69// and we don't want it to flicker.70JX.DOM.alterClass(document.body, 'jx-drag-col', true);7172e.kill();73},7475_onresizemove: function(e) {76if (!this._dragging) {77return;78}7980var dx = (JX.$V(e).x - this._dragging.x);8182var width;83if (this.getIsRightAligned()) {84width = this.getWidth() - dx;85} else {86width = this.getWidth() + dx;87}8889var min_width = this.getMinimumWidth();90if (min_width) {91width = Math.max(width, min_width);92}9394var max_width = this.getMaximumWidth();95if (max_width) {96width = Math.min(width, max_width);97}9899this._resizingWidth = width;100101this._node.style.width = this._resizingWidth + 'px';102103var adjust_x = (this._resizingWidth - this.getWidth());104if (this.getIsRightAligned()) {105adjust_x = -adjust_x;106}107108this.getResizerControl().style.left =109(this._resizingBarPosition.x + adjust_x) + 'px';110111var flank = this.getFlank();112if (flank) {113flank114.setWidth(this._resizingWidth)115.repaint();116}117},118119_onresizeend: function(e) {120if (!this._dragging) {121return;122}123124this.setWidth(this._resizingWidth);125126JX.DOM.alterClass(document.body, 'jx-drag-col', false);127this._dragging = null;128129var width_key = this.getWidthSettingKey();130if (width_key) {131this._adjustSetting(width_key, this.getWidth());132}133},134135_setVisibility: function(visible, e) {136e.kill();137this.setVisibility(visible);138},139140toggleVisibility: function() {141return this.setVisibility(!this.getIsVisible());142},143144setVisibility: function(visible) {145this.setIsVisible(visible);146this.repaint();147148var visible_key = this.getVisibleSettingKey();149if (visible_key) {150this._adjustSetting(visible_key, visible ? 1 : 0);151}152153return this;154},155156_adjustSetting: function(key, value) {157new JX.Request('/settings/adjust/', JX.bag)158.setData(159{160key: key,161value: value162})163.send();164},165166repaint: function() {167var resizer = this.getResizerItem();168var expander = this.getExpanderNode();169170if (this.getIsVisible()) {171JX.DOM.show(this._node);172if (resizer) {173JX.DOM.show(resizer);174}175if (expander) {176JX.DOM.hide(expander);177}178} else {179JX.DOM.hide(this._node);180if (resizer) {181JX.DOM.hide(resizer);182}183if (expander) {184JX.DOM.show(expander);185}186}187188if (this.getFlank()) {189this.getFlank().repaint();190}191192},193194195}196197});198199200