glowingbear-mainbox/js/plugin-directive.js
Lorenz Hübschle-Schneider a80db339f8 Use strict
Requires turning IrcUtils into an Angular service, because the global variable
trick won't work with use strict.
Reuse is still easily possible by removing the angular wrapping around it.
2014-09-07 16:55:18 +01:00

61 lines
1.8 KiB
JavaScript

(function() {
'use strict';
var weechat = angular.module('weechat');
weechat.directive('plugin', ['$rootScope', function($rootScope) {
/*
* Plugin directive
* Shows additional plugin content
*/
return {
templateUrl: 'directives/plugin.html',
scope: {
plugin: '=data'
},
controller: ['$scope', function($scope) {
$scope.displayedContent = "";
$scope.plugin.visible = $rootScope.auto_display_embedded_content;
$scope.hideContent = function() {
$scope.plugin.visible = false;
};
$scope.showContent = function() {
/*
* Shows the plugin content.
* displayedContent is bound to the DOM.
* Actual plugin content is only fetched when
* content is shown.
*/
// If the plugin is asynchronous / lazy, execute it now and store
// the result. This ensures that the callback is executed only once
if ($scope.plugin.content instanceof Function) {
$scope.plugin.content = $scope.plugin.content();
}
$scope.displayedContent = $scope.plugin.content;
$scope.plugin.visible = true;
// Scroll embed content into view
var scroll = function() {
var embed = document.querySelector(".embed_" + $scope.plugin.$$hashKey);
if (embed) {
embed.scrollIntoViewIfNeeded();
}
};
setTimeout(scroll, 100);
};
if ($scope.plugin.visible) {
$scope.showContent();
}
}]
};
}]);
})();