UNPKG

2.48 kBJavaScriptView Raw
1export default {
2 name: "cjsLoadingOverlay",
3 injections: ["$compile"],
4 fn: ($compile) => ({
5 restrict: 'A',
6 scope: true,
7 link: function(scope, element, attrs) {
8 var contentElement;
9 if (element.children().length == 1) {
10 contentElement = element.children().first();
11 } else {
12 contentElement = element.wrapInner("<div/>").children().first();
13 }
14
15
16 // get the contents of the element. If there is a single element, use it directly. if not, wrap it.
17 var overlay;
18 if (attrs.overlayType == "compact") {
19 overlay = angular.element(require("./cjs-loading-overlay-compact.html"));
20 } else if (attrs.overlayType == "simple") {
21 overlay = angular.element(require("./cjs-loading-overlay-simple.html"));
22 } else {
23 overlay = angular.element(require("./cjs-loading-overlay.html"));
24 }
25
26 element.append(overlay);
27 element.addClass("cjs-loading-overlay-container");
28 $compile(overlay)(scope);
29
30
31 function onUpdate(taskGroup) {
32 scope.taskGroup = taskGroup;
33 scope.currentTask = taskGroup.currentTask;
34 if (taskGroup.completed) {
35 // finished
36 scope.message = "finished";
37 if (attrs.showUnloaded === undefined)
38 contentElement.addClass("ui-show").removeClass("ui-hide");
39 contentElement.addClass("cjs-loaded").removeClass("cjs-unloaded");
40 overlay.addClass("ui-hide").removeClass("ui-show");
41 } else {
42 if (attrs.showUnloaded === undefined)
43 contentElement.addClass("ui-hide").removeClass("ui-show");
44 contentElement.addClass("cjs-unloaded").removeClass("cjs-loaded");
45 contentElement.addClass("cjs-unloaded");
46 overlay.addClass("ui-show").removeClass("ui-hide");
47 scope.title = taskGroup.title;
48 scope.error = taskGroup.error;
49 scope.message = taskGroup.message;
50 }
51 }
52 scope.$watch("loadStatus", function(val) {
53 if (!val) return;
54 val.onUpdate(scope.$eval(attrs.cjsLoadingOverlay), onUpdate);
55 });
56
57 }
58 })
59};