fix: Resolve output issue

This commit is contained in:
1ambda 2017-01-26 02:56:47 +09:00
parent fc4389e7e6
commit 0f2d8b6573
2 changed files with 13 additions and 7 deletions

View file

@ -1199,10 +1199,10 @@ function ParagraphCtrl($scope, $rootScope, $route, $window, $routeParams, $locat
if (newPara.results && newPara.results.msg) {
for (let i in newPara.results.msg) {
const newResult = newPara.results.msg ? newPara.results.msg[i] : {};
const oldResult = (newPara.results && newPara.results.msg) ?
newPara.results.msg[i] : {};
const oldResult = (oldPara.results && oldPara.results.msg) ?
oldPara.results.msg[i] : {};
const newConfig = newPara.config.results ? newPara.config.results[i] : {};
const oldConfig = newPara.config.results ? newPara.config.results[i] : {};
const oldConfig = oldPara.config.results ? oldPara.config.results[i] : {};
if (!angular.equals(newResult, oldResult) ||
!angular.equals(newConfig, oldConfig)) {
$rootScope.$broadcast('updateResult', newResult, newConfig, newPara, parseInt(i));

View file

@ -155,6 +155,9 @@ function ResultCtrl($scope, $rootScope, $route, $window, $routeParams, $location
$scope.imageData;
$scope.textRendererInitialized = false;
// queue for append output
const textAppendQueueBeforeInitialize = [];
$scope.init = function(result, config, paragraph, index) {
// register helium plugin vis
var visBundles = heliumService.getVisualizationBundles();
@ -191,6 +194,7 @@ function ResultCtrl($scope, $rootScope, $route, $window, $routeParams, $location
if (paragraph.id !== paragraphRef.id || index !== resultIndex) {
return;
}
console.log('updateResult %o %o %o %o', result, newConfig, paragraphRef, index);
var refresh = !angular.equals(newConfig, $scope.config) ||
!angular.equals(result.type, $scope.type) ||
@ -451,8 +455,12 @@ function ResultCtrl($scope, $rootScope, $route, $window, $routeParams, $location
// clear all lines before render
clearTextOutput();
$scope.textRendererInitialized = true;
if (generated) { appendTextOutput(generated); }
else { flushAppendQueue(); }
if (generated) {
const divDOM = angular.element('<div></div>').text(generated);
elem.append(divDOM);
}
elem.bind('mousewheel', (e) => { $scope.keepScrollDown = false; });
},
(error) => { elem.html(`${error.stack}`); }
@ -469,8 +477,6 @@ function ResultCtrl($scope, $rootScope, $route, $window, $routeParams, $location
}
};
var textAppendQueueBeforeInitialize = [];
var flushAppendQueue = function() {
while (textAppendQueueBeforeInitialize.length > 0) {
appendTextOutput(textAppendQueueBeforeInitialize.pop());