Merge pull request #3323 from FinnStutzenstein/hide-error-on-load

Delay the projector not loaded error.
This commit is contained in:
Emanuel Schütze 2017-07-27 10:51:18 +02:00 committed by GitHub
commit 41ab706939
3 changed files with 17 additions and 6 deletions

View File

@ -59,6 +59,8 @@ Core:
- Highlight list entries in a light blue, if a related object is projected - Highlight list entries in a light blue, if a related object is projected
(e. g. a list of speakers of a motion) [#3301]. (e. g. a list of speakers of a motion) [#3301].
- Select the projector resolution with a slider and an aspect ratio [#3311]. - Select the projector resolution with a slider and an aspect ratio [#3311].
- Delay the 'could not load projector' error 3 seconds to not irritate users
with a slow internet connection [#3323]
Mediafiles: Mediafiles:
- Fixed reloading of PDF on page change [#3274]. - Fixed reloading of PDF on page change [#3274].

View File

@ -104,11 +104,12 @@ angular.module('OpenSlidesApp.core.projector', ['OpenSlidesApp.core'])
// Projector Container Controller // Projector Container Controller
.controller('ProjectorContainerCtrl', [ .controller('ProjectorContainerCtrl', [
'$scope', '$scope',
'$timeout',
'$location', '$location',
'gettext', 'gettext',
'Projector', 'Projector',
function($scope, $location, gettext, Projector) { function($scope, $timeout, $location, gettext, Projector) {
$scope.error = ''; $scope.showError = true;
// watch for changes in Projector // watch for changes in Projector
$scope.$watch(function () { $scope.$watch(function () {
@ -116,13 +117,21 @@ angular.module('OpenSlidesApp.core.projector', ['OpenSlidesApp.core'])
}, function () { }, function () {
var projector = Projector.get($scope.projectorId); var projector = Projector.get($scope.projectorId);
if (projector) { if (projector) {
$scope.error = ''; $scope.showError = false;
$scope.projectorWidth = projector.width; $scope.projectorWidth = projector.width;
$scope.projectorHeight = projector.height; $scope.projectorHeight = projector.height;
$scope.recalculateIframe(); $scope.recalculateIframe();
} else { } else {
$scope.showError = true;
// delay displaying the error message, because with a slow internet
// connection, the autoupdate with the projector may be delayed. We
// de not want to irritate the user by showing this error to early.
$timeout(function () {
if ($scope.showError) {
$scope.error = gettext('Can not open the projector.'); $scope.error = gettext('Can not open the projector.');
} }
}, 3000);
}
}); });
// recalculate the actual Iframesize and scale // recalculate the actual Iframesize and scale

View File

@ -38,12 +38,12 @@
} }
</style> </style>
<div id="iframewrapper" ng-hide="error"> <div id="iframewrapper" ng-hide="showError">
<iframe id="iframe" ng-src="{{ '/real-projector/' + projectorId + '/'}}" frameborder="0"></iframe> <iframe id="iframe" ng-src="{{ '/real-projector/' + projectorId + '/'}}" frameborder="0"></iframe>
<div id="iframeoverlay"></div> <div id="iframeoverlay"></div>
</div> </div>
<div class="error" ng-show="error"> <div class="error" ng-show="showError">
<p>{{ error | translate }}</p> <p>{{ error | translate }}</p>
</div> </div>
</div> </div>