1 | export 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 |
|
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 |
|
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 | };
|