don't compile html in real time

This commit is contained in:
Jake McDermott
2018-11-05 19:20:07 -05:00
parent 4c74c8c40c
commit 0c2b1b7747
2 changed files with 31 additions and 24 deletions

View File

@@ -6,7 +6,6 @@ import {
OUTPUT_PAGE_SIZE, OUTPUT_PAGE_SIZE,
} from './constants'; } from './constants';
let $compile;
let $q; let $q;
let $scope; let $scope;
let $state; let $state;
@@ -97,6 +96,7 @@ function firstRange () {
.then(() => render.pushFront(results)); .then(() => render.pushFront(results));
}) })
.finally(() => { .finally(() => {
render.compile();
scroll.resume(); scroll.resume();
lockFollow = false; lockFollow = false;
}); });
@@ -124,6 +124,7 @@ function nextRange () {
.then(() => render.pushFront(results)); .then(() => render.pushFront(results));
}) })
.finally(() => { .finally(() => {
render.compile();
scroll.resume(); scroll.resume();
lockFrames = false; lockFrames = false;
@@ -162,6 +163,7 @@ function previousRange () {
return $q.resolve(); return $q.resolve();
}) })
.finally(() => { .finally(() => {
render.compile();
scroll.resume(); scroll.resume();
lockFrames = false; lockFrames = false;
@@ -189,6 +191,7 @@ function lastRange () {
return $q.resolve(); return $q.resolve();
}) })
.finally(() => { .finally(() => {
render.compile();
scroll.resume(); scroll.resume();
return $q.resolve(); return $q.resolve();
@@ -280,6 +283,7 @@ function firstPage () {
.then(() => render.pushFront(results)); .then(() => render.pushFront(results));
}) })
.finally(() => { .finally(() => {
render.compile();
scroll.resume(); scroll.resume();
return $q.resolve(); return $q.resolve();
@@ -309,6 +313,7 @@ function lastPage () {
return $q.resolve(); return $q.resolve();
}) })
.finally(() => { .finally(() => {
render.compile();
scroll.resume(); scroll.resume();
return $q.resolve(); return $q.resolve();
@@ -330,6 +335,7 @@ function nextPage () {
.then(() => render.pushFront(results)); .then(() => render.pushFront(results));
}) })
.finally(() => { .finally(() => {
render.compile();
scroll.resume(); scroll.resume();
}); });
} }
@@ -363,6 +369,7 @@ function previousPage () {
return $q.resolve(); return $q.resolve();
}) })
.finally(() => { .finally(() => {
render.compile();
scroll.resume(); scroll.resume();
return $q.resolve(); return $q.resolve();
@@ -546,10 +553,6 @@ function toggleTaskCollapse (uuid) {
render.records[uuid].isCollapsed = !isCollapsed; render.records[uuid].isCollapsed = !isCollapsed;
} }
function compile (html) {
return $compile(html)($scope);
}
function showHostDetails (id, uuid) { function showHostDetails (id, uuid) {
$state.go('output.host-event.json', { eventId: id, taskUuid: uuid }); $state.go('output.host-event.json', { eventId: id, taskUuid: uuid });
} }
@@ -599,7 +602,7 @@ function showMissingEvents (uuid) {
delete render.records[uuid]; delete render.records[uuid];
} }
}) })
.then(() => render.compile(elements)) .then(() => render.compile())
.then(() => lines); .then(() => lines);
}); });
} }
@@ -709,7 +712,6 @@ function clear () {
} }
function OutputIndexController ( function OutputIndexController (
_$compile_,
_$q_, _$q_,
_$scope_, _$scope_,
_$state_, _$state_,
@@ -727,7 +729,6 @@ function OutputIndexController (
const { isPanelExpanded, _debug } = $stateParams; const { isPanelExpanded, _debug } = $stateParams;
const isProcessingFinished = !_debug && _resource_.model.get('event_processing_finished'); const isProcessingFinished = !_debug && _resource_.model.get('event_processing_finished');
$compile = _$compile_;
$q = _$q_; $q = _$q_;
$scope = _$scope_; $scope = _$scope_;
$state = _$state_; $state = _$state_;
@@ -765,7 +766,7 @@ function OutputIndexController (
vm.debug = _debug; vm.debug = _debug;
render.requestAnimationFrame(() => { render.requestAnimationFrame(() => {
render.init({ compile, toggles: vm.toggleLineEnabled }); render.init($scope, { toggles: vm.toggleLineEnabled });
status.init(resource); status.init(resource);
page.init(resource.events); page.init(resource.events);
@@ -815,6 +816,7 @@ function OutputIndexController (
status.sync(); status.sync();
scroll.unlock(); scroll.unlock();
scroll.unhide(); scroll.unhide();
render.compile();
} }
}); });
@@ -850,7 +852,6 @@ function OutputIndexController (
} }
OutputIndexController.$inject = [ OutputIndexController.$inject = [
'$compile',
'$q', '$q',
'$scope', '$scope',
'$state', '$state',

View File

@@ -33,9 +33,13 @@ const pattern = [
const re = new RegExp(pattern); const re = new RegExp(pattern);
const hasAnsi = input => re.test(input); const hasAnsi = input => re.test(input);
function JobRenderService ($q, $sce, $window) { let $scope;
this.init = ({ compile, toggles }) => {
this.hooks = { compile }; function JobRenderService ($q, $compile, $sce, $window) {
this.init = (_$scope_, { toggles }) => {
$scope = _$scope_;
this.setScope();
this.el = $(OUTPUT_ELEMENT_TBODY); this.el = $(OUTPUT_ELEMENT_TBODY);
this.parent = null; this.parent = null;
@@ -434,8 +438,16 @@ function JobRenderService ($q, $sce, $window) {
}); });
}); });
this.compile = content => { this.setScope = () => {
this.hooks.compile(content); if (this.scope) this.scope.$destroy();
delete this.scope;
this.scope = $scope.$new();
};
this.compile = () => {
this.setScope();
$compile(this.el)(this.scope);
return this.requestAnimationFrame(); return this.requestAnimationFrame();
}; };
@@ -471,10 +483,7 @@ function JobRenderService ($q, $sce, $window) {
const result = this.prependEventGroup(events); const result = this.prependEventGroup(events);
const html = this.trustHtml(result.html); const html = this.trustHtml(result.html);
const newElements = angular.element(html); return this.requestAnimationFrame(() => this.el.prepend(html))
return this.requestAnimationFrame(() => this.el.prepend(newElements))
.then(() => this.compile(newElements))
.then(() => result.lines); .then(() => result.lines);
}; };
@@ -486,10 +495,7 @@ function JobRenderService ($q, $sce, $window) {
const result = this.appendEventGroup(events); const result = this.appendEventGroup(events);
const html = this.trustHtml(result.html); const html = this.trustHtml(result.html);
const newElements = angular.element(html); return this.requestAnimationFrame(() => this.el.append(html))
return this.requestAnimationFrame(() => this.el.append(newElements))
.then(() => this.compile(newElements))
.then(() => result.lines); .then(() => result.lines);
}; };
@@ -600,6 +606,6 @@ function JobRenderService ($q, $sce, $window) {
this.getCapacity = () => OUTPUT_EVENT_LIMIT - (this.getTailCounter() - this.getHeadCounter()); this.getCapacity = () => OUTPUT_EVENT_LIMIT - (this.getTailCounter() - this.getHeadCounter());
} }
JobRenderService.$inject = ['$q', '$sce', '$window']; JobRenderService.$inject = ['$q', '$compile', '$sce', '$window'];
export default JobRenderService; export default JobRenderService;