Skip to content

Commit

Permalink
[console] use resize checker
Browse files Browse the repository at this point in the history
  • Loading branch information
spalger committed Mar 24, 2016
1 parent 78d0039 commit b59a241
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 53 deletions.
10 changes: 0 additions & 10 deletions src/plugins/console/public/src/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -122,15 +122,5 @@ history.restoreFromHistory = function applyHistoryElem(req) {
input.focus();
};

function resize() {
input.resize();
output.resize();
}

resize();
$(window).resize((event) => {
if (event.target === window) resize();
});

loadSavedState();
setupAutosave();
Original file line number Diff line number Diff line change
@@ -1,14 +1,18 @@
const SenseEditor = require('../sense_editor/editor');
const exampleText = require('raw!./helpExample.txt').trim();
import { useResizeCheckerProvider } from '../sense_editor_resize';

require('ui/modules')
.get('app/sense')
.directive('senseHelpExample', function () {
.directive('senseHelpExample', function (Private) {
const useResizeChecker = Private(useResizeCheckerProvider);

return {
restrict: 'E',
link: function ($scope, $el) {
$el.text(exampleText);
$scope.editor = new SenseEditor($el);
useResizeChecker($scope, $el, $scope.editor);
$scope.editor.setReadOnly(true);
$scope.editor.$blockScrolling = Infinity;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
const history = require('../history');
let SenseEditor = require('../sense_editor/editor');
import { useResizeCheckerProvider } from '../sense_editor_resize';

require('ui/modules')
.get('app/sense')
.directive('senseHistoryViewer', function () {
.directive('senseHistoryViewer', function (Private) {
const useResizeChecker = Private(useResizeCheckerProvider);

return {
restrict: 'E',
scope: {
Expand All @@ -13,6 +16,7 @@ require('ui/modules')
const viewer = new SenseEditor($el);
viewer.setReadOnly(true);
viewer.renderer.setShowPrintMargin(false);
useResizeChecker($scope, $el, viewer);
require('../settings').applyCurrentSettings(viewer);

$scope.$watch('req', function (req) {
Expand Down
10 changes: 8 additions & 2 deletions src/plugins/console/public/src/input.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,14 @@ let storage = require('./storage');
let utils = require('./utils');
let es = require('./es');
let history = require('./history');

var input = new SenseEditor($('#editor'));
import { useResizeCheckerProvider } from './sense_editor_resize';
import uiModules from 'ui/modules';

var $el = $('#editor');
var input = new SenseEditor($el);
uiModules.get('kibana').run(function (Private, $rootScope) {

This comment has been minimized.

Copy link
@w33ble

w33ble Apr 1, 2016

Contributor

This isn't being called at load time, so the resize checking is never actually hooked up

Private(useResizeCheckerProvider)($rootScope, $el, input, output);
})

input.autocomplete = new Autocomplete(input);

Expand Down
11 changes: 11 additions & 0 deletions src/plugins/console/public/src/sense_editor_resize.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
import ResizeCheckerProvider from 'ui/vislib/lib/resize_checker'

export function useResizeCheckerProvider(Private) {
const ResizeChecker = Private(ResizeCheckerProvider);

return function useResizeChecker($scope, $el, ...editors) {
const checker = new ResizeChecker($el);
checker.on('resize', () => editors.forEach(e => e.resize()));
$scope.$on('$destroy', () => checker.destroy())
}
}
40 changes: 1 addition & 39 deletions src/plugins/console/public/src/smart_resize.js
Original file line number Diff line number Diff line change
@@ -1,43 +1,5 @@
import { throttle } from 'lodash';

module.exports = function (editor) {
let resize = editor.resize;
let lastDemensions = [];
let timeout = null;

let checkDelay = 250;
let stableChecks = 0;
let maxStableChecks = 20;

function check() {
clearTimeout(timeout);

const $container = editor.$el.parent();
const demensions = [$container.width(), $container.height()];
const [ width, height ] = demensions;
const [ lastWidth, lastHieght ] = lastDemensions;
lastDemensions = demensions;

if (width !== lastWidth || height !== lastHieght) {
resize.call(editor, true);
stableChecks = 0;
} else {
stableChecks += 1;
}

if (stableChecks < maxStableChecks) {
scheduleCheck();
}
}

function scheduleCheck() {
if (!timeout) timeout = setTimeout(check, checkDelay);
}

function requestResize() {
stableChecks = 0;
scheduleCheck();
}

return requestResize;
return throttle(() => editor.resize(), 35)
};

0 comments on commit b59a241

Please sign in to comment.