Show More
@@ -0,0 +1,2 b'' | |||||
|
1 | {% extends "/layout_base.jinja2" %} | |||
|
2 | {% block non_angular_content %}{% endblock %} |
@@ -0,0 +1,36 b'' | |||||
|
1 | // # Copyright (C) 2010-2016 RhodeCode GmbH | |||
|
2 | // # | |||
|
3 | // # This program is free software: you can redistribute it and/or modify | |||
|
4 | // # it under the terms of the GNU Affero General Public License, version 3 | |||
|
5 | // # (only), as published by the Free Software Foundation. | |||
|
6 | // # | |||
|
7 | // # This program is distributed in the hope that it will be useful, | |||
|
8 | // # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
9 | // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
10 | // # GNU General Public License for more details. | |||
|
11 | // # | |||
|
12 | // # You should have received a copy of the GNU Affero General Public License | |||
|
13 | // # along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
|
14 | // # | |||
|
15 | // # This program is dual-licensed. If you wish to learn more about the | |||
|
16 | // # AppEnlight Enterprise Edition, including its added features, Support | |||
|
17 | // # services, and proprietary license terms, please see | |||
|
18 | // # https://rhodecode.com/licenses/ | |||
|
19 | ||||
|
20 | angular.module('appenlight.components.appenlightApp', []) | |||
|
21 | .component('appenlightApp', { | |||
|
22 | templateUrl: 'templates/components/appenlight-app.html', | |||
|
23 | controller: AppEnlightAppController | |||
|
24 | }); | |||
|
25 | ||||
|
26 | AppEnlightAppController.$inject = ['$scope','$state', 'stateHolder', 'AeConfig']; | |||
|
27 | ||||
|
28 | function AppEnlightAppController($scope, $state, stateHolder, AeConfig){ | |||
|
29 | console.log('app start'); | |||
|
30 | // to keep bw compatibility | |||
|
31 | $scope.$state = $state; | |||
|
32 | $scope.stateHolder = stateHolder; | |||
|
33 | $scope.flash = stateHolder.flashMessages.list; | |||
|
34 | $scope.closeAlert = stateHolder.flashMessages.closeAlert; | |||
|
35 | $scope.AeConfig = AeConfig; | |||
|
36 | } |
@@ -0,0 +1,32 b'' | |||||
|
1 | // # Copyright (C) 2010-2016 RhodeCode GmbH | |||
|
2 | // # | |||
|
3 | // # This program is free software: you can redistribute it and/or modify | |||
|
4 | // # it under the terms of the GNU Affero General Public License, version 3 | |||
|
5 | // # (only), as published by the Free Software Foundation. | |||
|
6 | // # | |||
|
7 | // # This program is distributed in the hope that it will be useful, | |||
|
8 | // # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
9 | // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
10 | // # GNU General Public License for more details. | |||
|
11 | // # | |||
|
12 | // # You should have received a copy of the GNU Affero General Public License | |||
|
13 | // # along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
|
14 | // # | |||
|
15 | // # This program is dual-licensed. If you wish to learn more about the | |||
|
16 | // # AppEnlight Enterprise Edition, including its added features, Support | |||
|
17 | // # services, and proprietary license terms, please see | |||
|
18 | // # https://rhodecode.com/licenses/ | |||
|
19 | ||||
|
20 | angular.module('appenlight.components.appenlightHeader', []) | |||
|
21 | .component('appenlightFooter', { | |||
|
22 | templateUrl: 'templates/components/appenlight-footer.html', | |||
|
23 | controller: AppEnlightFooterController | |||
|
24 | }); | |||
|
25 | ||||
|
26 | ChannelstreamController.$inject = ['stateHolder', 'AeConfig']; | |||
|
27 | ||||
|
28 | function AppEnlightFooterController(stateHolder, AeConfig){ | |||
|
29 | var vm = this; | |||
|
30 | vm.AeConfig = AeConfig; | |||
|
31 | vm.stateHolder = stateHolder; | |||
|
32 | } |
@@ -0,0 +1,5 b'' | |||||
|
1 | <channelstream config="AeConfig"></channelstream> | |||
|
2 | <appenlight-header></appenlight-header> | |||
|
3 | <div id="outer-content"> | |||
|
4 | <div ui-view class="container"></div> | |||
|
5 | </div> |
@@ -0,0 +1,101 b'' | |||||
|
1 | <!-- Fixed navbar --> | |||
|
2 | <div id="top-navbar" class="navbar navbar-default navbar-fixed-top" role="navigation"> | |||
|
3 | <div class="pattern"> | |||
|
4 | <div class="container"> | |||
|
5 | <div class="navbar-header pull-left"> | |||
|
6 | <a data-ui-sref="front_dashboard" class="navbar-brand"> | |||
|
7 | <div id="logo-normal" class="hidden-sm hidden-xs"></div> | |||
|
8 | <div id="logo-icon" class="visible-sm visible-xs"></div> | |||
|
9 | </a> | |||
|
10 | </div> | |||
|
11 | ||||
|
12 | <div class="container-fluid"> | |||
|
13 | <div> | |||
|
14 | <ul class="nav navbar-nav navbar-right" ng-if="$ctrl.stateHolder.AeUser.id !== null"> | |||
|
15 | <li id="user-notifications" class="dropdown ng-cloak" data-uib-dropdown> | |||
|
16 | ||||
|
17 | <a class="dropdown-toggle" data-uib-dropdown-toggle> | |||
|
18 | <span class="badge">{{$ctrl.assignedReports.length}}</span> | |||
|
19 | <span class="fa fa-envelope-o"></span> | |||
|
20 | </a> | |||
|
21 | <ul class="dropdown-menu"> | |||
|
22 | <li role="presentation" class="dropdown-header">Assigned reports</li> | |||
|
23 | <li data-ng-repeat="report in $ctrl.assignedReports" role="presentation"> | |||
|
24 | <a href="{{report.front_url}}" role="menuitem" tabindex="-1"> | |||
|
25 | <small>{{ report.error || 'Slow Report: ' + report.view_name |truncate:65}}</small> | |||
|
26 | </a> | |||
|
27 | ||||
|
28 | </li> | |||
|
29 | <li data-ng-if="$ctrl.assignedReports.length == 0"><a><small>No reports</small></a></li> | |||
|
30 | </ul> | |||
|
31 | </li> | |||
|
32 | <li id="alert-notifications" class="dropdown ng-cloak" data-uib-dropdown auto-close="outsideClick"> | |||
|
33 | <a class="dropdown-toggle" data-uib-dropdown-toggle> | |||
|
34 | <span class="badge {{ activeEvents ? 'danger' : '' }}">{{$ctrl.activeEvents}}</span> | |||
|
35 | <span class="fa fa-bell-o"></span></a> | |||
|
36 | <ul class="dropdown-menu"> | |||
|
37 | <li role="presentation" class="dropdown-header"> | |||
|
38 | <a data-ui-sref="events" class="btn btn-xs btn-default">Show me more</a></li> | |||
|
39 | <li role="presentation" class="dropdown-header">Latest events</li> | |||
|
40 | <li data-ng-repeat="event in $ctrl.latestEvents" role="presentation"> | |||
|
41 | <a data-ng-click="$ctrl.clickedEvent(event)"><small class="resource-name">For {{ event.resource_name }}</small><br/> | |||
|
42 | <small>{{ event.text |truncate:65}}</small><br/> | |||
|
43 | <small class="date" data-uib-tooltip="{{event.start_date}}">created: <iso-to-relative-time time="{{event.start_date}}"/></small> | |||
|
44 | <small class="date" data-ng-show="event.end_date" data-uib-tooltip="{{event.end_date}}">closed: <iso-to-relative-time time="{{event.end_date}}"/></small> | |||
|
45 | </a> | |||
|
46 | </li> | |||
|
47 | <li data-ng-if="$ctrl.latestEvents.length == 0"><a><small>No events</small></a></li> | |||
|
48 | </ul> | |||
|
49 | </li> | |||
|
50 | ||||
|
51 | <li id="dashboards" class="dropdown" data-uib-dropdown> | |||
|
52 | <a class="dropdown-toggle" data-uib-dropdown-toggle tooltip-placement="bottom" data-uib-tooltip="Dashboards"> | |||
|
53 | <span class="fa fa-bar-chart-o "></span></a> | |||
|
54 | <ul class="dropdown-menu"> | |||
|
55 | <li role="presentation"><a data-ui-sref="front_dashboard">Main dashboard</a></li> | |||
|
56 | <li role="presentation" ng-repeat="item in $ctrl.AeConfig.topNav.menu_dashboards_items"> | |||
|
57 | <a data-ui-sref="{{ item.sref }}">{{ item.label }}</a> | |||
|
58 | </li> | |||
|
59 | </ul> | |||
|
60 | </li> | |||
|
61 | ||||
|
62 | <li class="dropdown" data-uib-dropdown> | |||
|
63 | <a class="dropdown-toggle" data-uib-dropdown-toggle tooltip-placement="bottom" data-uib-tooltip="Reports"> | |||
|
64 | <span class="fa fa-exclamation-triangle"></span></a> | |||
|
65 | <ul class="dropdown-menu"> | |||
|
66 | <li role="presentation"> | |||
|
67 | <a data-ui-sref="report.list({resource:$ctrl.stateHolder.resource})">Error Reports</a> | |||
|
68 | </li> | |||
|
69 | <li role="presentation"> | |||
|
70 | <a data-ui-sref="report.list_slow({resource:$ctrl.stateHolder.resource})">Slowness Reports</a> | |||
|
71 | </li> | |||
|
72 | ||||
|
73 | </ul> | |||
|
74 | </li> | |||
|
75 | ||||
|
76 | <li> | |||
|
77 | <a data-ui-sref="logs({resource:$ctrl.stateHolder.resource})" data-uib-tooltip="Logs" tooltip-placement="bottom"><span class="fa fa-list-alt "></span></a></li> | |||
|
78 | <li> | |||
|
79 | <a data-ui-sref="user" data-uib-tooltip="Settings" tooltip-placement="bottom"><span class="fa fa-cog "></span></a> | |||
|
80 | </li> | |||
|
81 | <li class="dropdown" data-uib-dropdown data-ng-if="$ctrl.AeConfig.topNav.menu_admin_items.length"> | |||
|
82 | <a class="dropdown-toggle" data-uib-dropdown-toggle tooltip-placement="bottom" data-uib-tooltip="Admin Settings"> | |||
|
83 | <span class="fa fa-wrench"></span></a> | |||
|
84 | <ul class="dropdown-menu"> | |||
|
85 | <li role="presentation" ng-repeat="item in $ctrl.AeConfig.topNav.menu_admin_items"> | |||
|
86 | <a data-ui-sref="{{ item.sref }}">{{ item.label }}</a> | |||
|
87 | </li> | |||
|
88 | </ul> | |||
|
89 | </li> | |||
|
90 | <li><a href="{{ $ctrl.AeConfig.urls.otherRoutes.signOut }}" target="_self" | |||
|
91 | data-uib-tooltip="Sign out" tooltip-placement="bottom"> | |||
|
92 | <span class="fa fa-power-off "></span></a></li> | |||
|
93 | </ul> | |||
|
94 | <ul class="nav navbar-nav pull-right" ng-if="$ctrl.stateHolder.AeUser.id === null"> | |||
|
95 | <li><a href="{{ $ctrl.AeConfig.urls.otherRoutes.register }}" target="_self" class="btn btn-orange">Sign In</a></li> | |||
|
96 | </ul> | |||
|
97 | </div><!-- /.navbar-collapse --> | |||
|
98 | </div><!-- /.container-fluid --> | |||
|
99 | </div> | |||
|
100 | </div> | |||
|
101 | </div> |
@@ -2675,7 +2675,9 b" angular.module('appenlight.controllers', [" | |||||
2675 | 'appenlight.base' |
|
2675 | 'appenlight.base' | |
2676 | ]); |
|
2676 | ]); | |
2677 | angular.module('appenlight.components', [ |
|
2677 | angular.module('appenlight.components', [ | |
2678 | 'appenlight.components.channelstream' |
|
2678 | 'appenlight.components.channelstream', | |
|
2679 | 'appenlight.components.appenlightApp', | |||
|
2680 | 'appenlight.components.appenlightHeader' | |||
2679 | ]); |
|
2681 | ]); | |
2680 | angular.module('appenlight.directives', [ |
|
2682 | angular.module('appenlight.directives', [ | |
2681 | 'appenlight.directives.appVersion', |
|
2683 | 'appenlight.directives.appVersion', | |
@@ -4848,6 +4850,120 b' function kickstartAE(initialUserData) {' | |||||
4848 | ); |
|
4850 | ); | |
4849 |
|
4851 | |||
4850 |
|
4852 | |||
|
4853 | $templateCache.put('templates/components/appenlight-app.html', | |||
|
4854 | "<channelstream config=\"AeConfig\"></channelstream>\n" + | |||
|
4855 | "<appenlight-header></appenlight-header>\n" + | |||
|
4856 | "<div id=\"outer-content\">\n" + | |||
|
4857 | " <div ui-view class=\"container\"></div>\n" + | |||
|
4858 | "</div>\n" | |||
|
4859 | ); | |||
|
4860 | ||||
|
4861 | ||||
|
4862 | $templateCache.put('templates/components/appenlight-header.html', | |||
|
4863 | "<!-- Fixed navbar -->\n" + | |||
|
4864 | "<div id=\"top-navbar\" class=\"navbar navbar-default navbar-fixed-top\" role=\"navigation\">\n" + | |||
|
4865 | " <div class=\"pattern\">\n" + | |||
|
4866 | " <div class=\"container\">\n" + | |||
|
4867 | " <div class=\"navbar-header pull-left\">\n" + | |||
|
4868 | " <a data-ui-sref=\"front_dashboard\" class=\"navbar-brand\">\n" + | |||
|
4869 | " <div id=\"logo-normal\" class=\"hidden-sm hidden-xs\"></div>\n" + | |||
|
4870 | " <div id=\"logo-icon\" class=\"visible-sm visible-xs\"></div>\n" + | |||
|
4871 | " </a>\n" + | |||
|
4872 | " </div>\n" + | |||
|
4873 | "\n" + | |||
|
4874 | " <div class=\"container-fluid\">\n" + | |||
|
4875 | " <div>\n" + | |||
|
4876 | " <ul class=\"nav navbar-nav navbar-right\" ng-if=\"$ctrl.stateHolder.AeUser.id !== null\">\n" + | |||
|
4877 | " <li id=\"user-notifications\" class=\"dropdown ng-cloak\" data-uib-dropdown>\n" + | |||
|
4878 | "\n" + | |||
|
4879 | " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle>\n" + | |||
|
4880 | " <span class=\"badge\">{{$ctrl.assignedReports.length}}</span>\n" + | |||
|
4881 | " <span class=\"fa fa-envelope-o\"></span>\n" + | |||
|
4882 | " </a>\n" + | |||
|
4883 | " <ul class=\"dropdown-menu\">\n" + | |||
|
4884 | " <li role=\"presentation\" class=\"dropdown-header\">Assigned reports</li>\n" + | |||
|
4885 | " <li data-ng-repeat=\"report in $ctrl.assignedReports\" role=\"presentation\">\n" + | |||
|
4886 | " <a href=\"{{report.front_url}}\" role=\"menuitem\" tabindex=\"-1\">\n" + | |||
|
4887 | " <small>{{ report.error || 'Slow Report: ' + report.view_name |truncate:65}}</small>\n" + | |||
|
4888 | " </a>\n" + | |||
|
4889 | "\n" + | |||
|
4890 | " </li>\n" + | |||
|
4891 | " <li data-ng-if=\"$ctrl.assignedReports.length == 0\"><a><small>No reports</small></a></li>\n" + | |||
|
4892 | " </ul>\n" + | |||
|
4893 | " </li>\n" + | |||
|
4894 | " <li id=\"alert-notifications\" class=\"dropdown ng-cloak\" data-uib-dropdown auto-close=\"outsideClick\">\n" + | |||
|
4895 | " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle>\n" + | |||
|
4896 | " <span class=\"badge {{ activeEvents ? 'danger' : '' }}\">{{$ctrl.activeEvents}}</span>\n" + | |||
|
4897 | " <span class=\"fa fa-bell-o\"></span></a>\n" + | |||
|
4898 | " <ul class=\"dropdown-menu\">\n" + | |||
|
4899 | " <li role=\"presentation\" class=\"dropdown-header\">\n" + | |||
|
4900 | " <a data-ui-sref=\"events\" class=\"btn btn-xs btn-default\">Show me more</a></li>\n" + | |||
|
4901 | " <li role=\"presentation\" class=\"dropdown-header\">Latest events</li>\n" + | |||
|
4902 | " <li data-ng-repeat=\"event in $ctrl.latestEvents\" role=\"presentation\">\n" + | |||
|
4903 | " <a data-ng-click=\"$ctrl.clickedEvent(event)\"><small class=\"resource-name\">For {{ event.resource_name }}</small><br/>\n" + | |||
|
4904 | " <small>{{ event.text |truncate:65}}</small><br/>\n" + | |||
|
4905 | " <small class=\"date\" data-uib-tooltip=\"{{event.start_date}}\">created: <iso-to-relative-time time=\"{{event.start_date}}\"/></small>\n" + | |||
|
4906 | " <small class=\"date\" data-ng-show=\"event.end_date\" data-uib-tooltip=\"{{event.end_date}}\">closed: <iso-to-relative-time time=\"{{event.end_date}}\"/></small>\n" + | |||
|
4907 | " </a>\n" + | |||
|
4908 | " </li>\n" + | |||
|
4909 | " <li data-ng-if=\"$ctrl.latestEvents.length == 0\"><a><small>No events</small></a></li>\n" + | |||
|
4910 | " </ul>\n" + | |||
|
4911 | " </li>\n" + | |||
|
4912 | "\n" + | |||
|
4913 | " <li id=\"dashboards\" class=\"dropdown\" data-uib-dropdown>\n" + | |||
|
4914 | " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle tooltip-placement=\"bottom\" data-uib-tooltip=\"Dashboards\">\n" + | |||
|
4915 | " <span class=\"fa fa-bar-chart-o \"></span></a>\n" + | |||
|
4916 | " <ul class=\"dropdown-menu\">\n" + | |||
|
4917 | " <li role=\"presentation\"><a data-ui-sref=\"front_dashboard\">Main dashboard</a></li>\n" + | |||
|
4918 | " <li role=\"presentation\" ng-repeat=\"item in $ctrl.AeConfig.topNav.menu_dashboards_items\">\n" + | |||
|
4919 | " <a data-ui-sref=\"{{ item.sref }}\">{{ item.label }}</a>\n" + | |||
|
4920 | " </li>\n" + | |||
|
4921 | " </ul>\n" + | |||
|
4922 | " </li>\n" + | |||
|
4923 | "\n" + | |||
|
4924 | " <li class=\"dropdown\" data-uib-dropdown>\n" + | |||
|
4925 | " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle tooltip-placement=\"bottom\" data-uib-tooltip=\"Reports\">\n" + | |||
|
4926 | " <span class=\"fa fa-exclamation-triangle\"></span></a>\n" + | |||
|
4927 | " <ul class=\"dropdown-menu\">\n" + | |||
|
4928 | " <li role=\"presentation\">\n" + | |||
|
4929 | " <a data-ui-sref=\"report.list({resource:$ctrl.stateHolder.resource})\">Error Reports</a>\n" + | |||
|
4930 | " </li>\n" + | |||
|
4931 | " <li role=\"presentation\">\n" + | |||
|
4932 | " <a data-ui-sref=\"report.list_slow({resource:$ctrl.stateHolder.resource})\">Slowness Reports</a>\n" + | |||
|
4933 | " </li>\n" + | |||
|
4934 | "\n" + | |||
|
4935 | " </ul>\n" + | |||
|
4936 | " </li>\n" + | |||
|
4937 | "\n" + | |||
|
4938 | " <li>\n" + | |||
|
4939 | " <a data-ui-sref=\"logs({resource:$ctrl.stateHolder.resource})\" data-uib-tooltip=\"Logs\" tooltip-placement=\"bottom\"><span class=\"fa fa-list-alt \"></span></a></li>\n" + | |||
|
4940 | " <li>\n" + | |||
|
4941 | " <a data-ui-sref=\"user\" data-uib-tooltip=\"Settings\" tooltip-placement=\"bottom\"><span class=\"fa fa-cog \"></span></a>\n" + | |||
|
4942 | " </li>\n" + | |||
|
4943 | " <li class=\"dropdown\" data-uib-dropdown data-ng-if=\"$ctrl.AeConfig.topNav.menu_admin_items.length\">\n" + | |||
|
4944 | " <a class=\"dropdown-toggle\" data-uib-dropdown-toggle tooltip-placement=\"bottom\" data-uib-tooltip=\"Admin Settings\">\n" + | |||
|
4945 | " <span class=\"fa fa-wrench\"></span></a>\n" + | |||
|
4946 | " <ul class=\"dropdown-menu\">\n" + | |||
|
4947 | " <li role=\"presentation\" ng-repeat=\"item in $ctrl.AeConfig.topNav.menu_admin_items\">\n" + | |||
|
4948 | " <a data-ui-sref=\"{{ item.sref }}\">{{ item.label }}</a>\n" + | |||
|
4949 | " </li>\n" + | |||
|
4950 | " </ul>\n" + | |||
|
4951 | " </li>\n" + | |||
|
4952 | " <li><a href=\"{{ $ctrl.AeConfig.urls.otherRoutes.signOut }}\" target=\"_self\"\n" + | |||
|
4953 | " data-uib-tooltip=\"Sign out\" tooltip-placement=\"bottom\">\n" + | |||
|
4954 | " <span class=\"fa fa-power-off \"></span></a></li>\n" + | |||
|
4955 | " </ul>\n" + | |||
|
4956 | " <ul class=\"nav navbar-nav pull-right\" ng-if=\"$ctrl.stateHolder.AeUser.id === null\">\n" + | |||
|
4957 | " <li><a href=\"{{ $ctrl.AeConfig.urls.otherRoutes.register }}\" target=\"_self\" class=\"btn btn-orange\">Sign In</a></li>\n" + | |||
|
4958 | " </ul>\n" + | |||
|
4959 | " </div><!-- /.navbar-collapse -->\n" + | |||
|
4960 | " </div><!-- /.container-fluid -->\n" + | |||
|
4961 | " </div>\n" + | |||
|
4962 | " </div>\n" + | |||
|
4963 | "</div>\n" | |||
|
4964 | ); | |||
|
4965 | ||||
|
4966 | ||||
4851 | $templateCache.put('templates/dashboard.html', |
|
4967 | $templateCache.put('templates/dashboard.html', | |
4852 | "<style type=\"text/css\">\n" + |
|
4968 | "<style type=\"text/css\">\n" + | |
4853 | " #metrics_chart .c3-line {\n" + |
|
4969 | " #metrics_chart .c3-line {\n" + | |
@@ -4864,21 +4980,20 b' function kickstartAE(initialUserData) {' | |||||
4864 | "\n" + |
|
4980 | "\n" + | |
4865 | "<div class=\"row\">\n" + |
|
4981 | "<div class=\"row\">\n" + | |
4866 | " <div class=\"col-sm-12 dashboard\" id=\"content\">\n" + |
|
4982 | " <div class=\"col-sm-12 dashboard\" id=\"content\">\n" + | |
4867 | "\n" + |
|
4983 | " <div ng-if=\"!index.stateHolder.AeUser.applications.length\">\n" + | |
4868 | " <div ng-if=\"!stateHolder.AeUser.applications.length\">\n" + |
|
|||
4869 | "\n" + |
|
4984 | "\n" + | |
4870 | " <div ng-include=\"'templates/quickstart.html'\"></div>\n" + |
|
4985 | " <div ng-include=\"'templates/quickstart.html'\"></div>\n" + | |
4871 | "\n" + |
|
4986 | "\n" + | |
4872 | " </div>\n" + |
|
4987 | " </div>\n" + | |
4873 | "\n" + |
|
4988 | "\n" + | |
4874 | " <div ng-if=\"stateHolder.AeUser.applications.length\">\n" + |
|
4989 | " <div ng-if=\"index.stateHolder.AeUser.applications.length\">\n" + | |
4875 | "\n" + |
|
4990 | "\n" + | |
4876 | " <div class=\"row\">\n" + |
|
4991 | " <div class=\"row\">\n" + | |
4877 | " <div class=\"col-sm-6\">\n" + |
|
4992 | " <div class=\"col-sm-6\">\n" + | |
4878 | " <div class=\"panel panel-default\">\n" + |
|
4993 | " <div class=\"panel panel-default\">\n" + | |
4879 | " <div class=\"panel-body\">\n" + |
|
4994 | " <div class=\"panel-body\">\n" + | |
4880 | " <form class=\"graph-type form-inline\">\n" + |
|
4995 | " <form class=\"graph-type form-inline\">\n" + | |
4881 | " <select ng-model=\"index.resource\" ng-options=\"r.resource_id as r.resource_name for r in stateHolder.AeUser.applications\" ng-change=\"index.updateSearchParams()\"\n" + |
|
4996 | " <select ng-model=\"index.resource\" ng-options=\"r.resource_id as r.resource_name for r in index.stateHolder.AeUser.applications\" ng-change=\"index.updateSearchParams()\"\n" + | |
4882 | " class=\"SelectField form-control input-sm slim-input\"></select>\n" + |
|
4997 | " class=\"SelectField form-control input-sm slim-input\"></select>\n" + | |
4883 | "\n" + |
|
4998 | "\n" + | |
4884 | " <select class=\"SelectField form-control input-sm slim-input\" ng-model=\"index.timeSpan\"\n" + |
|
4999 | " <select class=\"SelectField form-control input-sm slim-input\" ng-model=\"index.timeSpan\"\n" + | |
@@ -6150,7 +6265,7 b' function kickstartAE(initialUserData) {' | |||||
6150 | "\n" + |
|
6265 | "\n" + | |
6151 | "<div ng-if=\"report.report !== null && !report.is_loading.report\">\n" + |
|
6266 | "<div ng-if=\"report.report !== null && !report.is_loading.report\">\n" + | |
6152 | "\n" + |
|
6267 | "\n" + | |
6153 | " <div ng-if=\"stateHolder.AeUser.id\" class=\"row\">\n" + |
|
6268 | " <div ng-if=\"report.stateHolder.AeUser.id\" class=\"row\">\n" + | |
6154 | " <div class=\"col-lg-12\">\n" + |
|
6269 | " <div class=\"col-lg-12\">\n" + | |
6155 | " <a onclick=\"window.history.back()\" class=\"btn btn-default\" ng-if=\"report.window.history.length > 2\"><span class=\"fa fa-arrow-circle-o-left\"></span>\n" + |
|
6270 | " <a onclick=\"window.history.back()\" class=\"btn btn-default\" ng-if=\"report.window.history.length > 2\"><span class=\"fa fa-arrow-circle-o-left\"></span>\n" + | |
6156 | " Go back</a>\n" + |
|
6271 | " Go back</a>\n" + | |
@@ -6210,7 +6325,7 b' function kickstartAE(initialUserData) {' | |||||
6210 | " <td class=\"table-label\">Public URL</td>\n" + |
|
6325 | " <td class=\"table-label\">Public URL</td>\n" + | |
6211 | " <td class=\"data\">\n" + |
|
6326 | " <td class=\"data\">\n" + | |
6212 | " <form>\n" + |
|
6327 | " <form>\n" + | |
6213 | " <textarea class=\"TextAreaField form-control\" id=\"public-url\" onclick=\"this.select()\">{{$state.href($state.current.name, $state.params, {absolute: true})}}</textarea>\n" + |
|
6328 | " <textarea class=\"TextAreaField form-control\" id=\"public-url\" onclick=\"this.select()\">{{report.$state.href(report.$state.current.name, report.$state.params, {absolute: true})}}</textarea>\n" + | |
6214 | " </form>\n" + |
|
6329 | " </form>\n" + | |
6215 | " </td>\n" + |
|
6330 | " </td>\n" + | |
6216 | " </tr>\n" + |
|
6331 | " </tr>\n" + | |
@@ -7022,6 +7137,135 b' function kickstartAE(initialUserData) {' | |||||
7022 | // # services, and proprietary license terms, please see |
|
7137 | // # services, and proprietary license terms, please see | |
7023 | // # https://rhodecode.com/licenses/ |
|
7138 | // # https://rhodecode.com/licenses/ | |
7024 |
|
7139 | |||
|
7140 | angular.module('appenlight.components.appenlightApp', []) | |||
|
7141 | .component('appenlightApp', { | |||
|
7142 | templateUrl: 'templates/components/appenlight-app.html', | |||
|
7143 | controller: AppEnlightAppController | |||
|
7144 | }); | |||
|
7145 | ||||
|
7146 | AppEnlightAppController.$inject = ['$scope','$state', 'stateHolder', 'AeConfig']; | |||
|
7147 | ||||
|
7148 | function AppEnlightAppController($scope, $state, stateHolder, AeConfig){ | |||
|
7149 | ||||
|
7150 | // to keep bw compatibility | |||
|
7151 | $scope.$state = $state; | |||
|
7152 | $scope.stateHolder = stateHolder; | |||
|
7153 | $scope.flash = stateHolder.flashMessages.list; | |||
|
7154 | $scope.closeAlert = stateHolder.flashMessages.closeAlert; | |||
|
7155 | $scope.AeConfig = AeConfig; | |||
|
7156 | } | |||
|
7157 | ||||
|
7158 | ;// # Copyright (C) 2010-2016 RhodeCode GmbH | |||
|
7159 | // # | |||
|
7160 | // # This program is free software: you can redistribute it and/or modify | |||
|
7161 | // # it under the terms of the GNU Affero General Public License, version 3 | |||
|
7162 | // # (only), as published by the Free Software Foundation. | |||
|
7163 | // # | |||
|
7164 | // # This program is distributed in the hope that it will be useful, | |||
|
7165 | // # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
7166 | // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
7167 | // # GNU General Public License for more details. | |||
|
7168 | // # | |||
|
7169 | // # You should have received a copy of the GNU Affero General Public License | |||
|
7170 | // # along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
|
7171 | // # | |||
|
7172 | // # This program is dual-licensed. If you wish to learn more about the | |||
|
7173 | // # AppEnlight Enterprise Edition, including its added features, Support | |||
|
7174 | // # services, and proprietary license terms, please see | |||
|
7175 | // # https://rhodecode.com/licenses/ | |||
|
7176 | ||||
|
7177 | angular.module('appenlight.components.appenlightHeader', []) | |||
|
7178 | .component('appenlightFooter', { | |||
|
7179 | templateUrl: 'templates/components/appenlight-footer.html', | |||
|
7180 | controller: AppEnlightFooterController | |||
|
7181 | }); | |||
|
7182 | ||||
|
7183 | ChannelstreamController.$inject = ['stateHolder', 'AeConfig']; | |||
|
7184 | ||||
|
7185 | function AppEnlightFooterController(stateHolder, AeConfig){ | |||
|
7186 | var vm = this; | |||
|
7187 | vm.AeConfig = AeConfig; | |||
|
7188 | vm.stateHolder = stateHolder; | |||
|
7189 | } | |||
|
7190 | ||||
|
7191 | ;// # Copyright (C) 2010-2016 RhodeCode GmbH | |||
|
7192 | // # | |||
|
7193 | // # This program is free software: you can redistribute it and/or modify | |||
|
7194 | // # it under the terms of the GNU Affero General Public License, version 3 | |||
|
7195 | // # (only), as published by the Free Software Foundation. | |||
|
7196 | // # | |||
|
7197 | // # This program is distributed in the hope that it will be useful, | |||
|
7198 | // # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
7199 | // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
7200 | // # GNU General Public License for more details. | |||
|
7201 | // # | |||
|
7202 | // # You should have received a copy of the GNU Affero General Public License | |||
|
7203 | // # along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
|
7204 | // # | |||
|
7205 | // # This program is dual-licensed. If you wish to learn more about the | |||
|
7206 | // # AppEnlight Enterprise Edition, including its added features, Support | |||
|
7207 | // # services, and proprietary license terms, please see | |||
|
7208 | // # https://rhodecode.com/licenses/ | |||
|
7209 | ||||
|
7210 | angular.module('appenlight.components.appenlightHeader', []) | |||
|
7211 | .component('appenlightHeader', { | |||
|
7212 | templateUrl: 'templates/components/appenlight-header.html', | |||
|
7213 | controller: AppEnlightHeaderController | |||
|
7214 | }); | |||
|
7215 | ||||
|
7216 | ChannelstreamController.$inject = ['$state', 'stateHolder', 'AeConfig']; | |||
|
7217 | ||||
|
7218 | function AppEnlightHeaderController($state, stateHolder, AeConfig){ | |||
|
7219 | var vm = this; | |||
|
7220 | vm.AeConfig = AeConfig; | |||
|
7221 | vm.stateHolder = stateHolder; | |||
|
7222 | vm.assignedReports = stateHolder.AeUser.assigned_reports; | |||
|
7223 | vm.latestEvents = stateHolder.AeUser.latest_events; | |||
|
7224 | vm.activeEvents = 0; | |||
|
7225 | _.each(vm.latestEvents, function (event) { | |||
|
7226 | if (event.status === 1 && event.end_date === null) { | |||
|
7227 | vm.activeEvents += 1; | |||
|
7228 | } | |||
|
7229 | }); | |||
|
7230 | ||||
|
7231 | vm.clickedEvent = function(event){ | |||
|
7232 | // exception reports | |||
|
7233 | if (_.contains([1,2], event.event_type)){ | |||
|
7234 | $state.go('report.list', {resource:event.resource_id, start_date:event.start_date}); | |||
|
7235 | } | |||
|
7236 | // slowness reports | |||
|
7237 | else if (_.contains([3,4], event.event_type)){ | |||
|
7238 | $state.go('report.list_slow', {resource:event.resource_id, start_date:event.start_date}); | |||
|
7239 | } | |||
|
7240 | // uptime reports | |||
|
7241 | else if (_.contains([7,8], event.event_type)){ | |||
|
7242 | $state.go('uptime', {resource:event.resource_id, start_date:event.start_date}); | |||
|
7243 | } | |||
|
7244 | else{ | |||
|
7245 | ||||
|
7246 | } | |||
|
7247 | } | |||
|
7248 | } | |||
|
7249 | ||||
|
7250 | ;// # Copyright (C) 2010-2016 RhodeCode GmbH | |||
|
7251 | // # | |||
|
7252 | // # This program is free software: you can redistribute it and/or modify | |||
|
7253 | // # it under the terms of the GNU Affero General Public License, version 3 | |||
|
7254 | // # (only), as published by the Free Software Foundation. | |||
|
7255 | // # | |||
|
7256 | // # This program is distributed in the hope that it will be useful, | |||
|
7257 | // # but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
|
7258 | // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||
|
7259 | // # GNU General Public License for more details. | |||
|
7260 | // # | |||
|
7261 | // # You should have received a copy of the GNU Affero General Public License | |||
|
7262 | // # along with this program. If not, see <http://www.gnu.org/licenses/>. | |||
|
7263 | // # | |||
|
7264 | // # This program is dual-licensed. If you wish to learn more about the | |||
|
7265 | // # AppEnlight Enterprise Edition, including its added features, Support | |||
|
7266 | // # services, and proprietary license terms, please see | |||
|
7267 | // # https://rhodecode.com/licenses/ | |||
|
7268 | ||||
7025 | angular.module('appenlight.components.channelstream', []) |
|
7269 | angular.module('appenlight.components.channelstream', []) | |
7026 | .component('channelstream', { |
|
7270 | .component('channelstream', { | |
7027 | controller: ChannelstreamController, |
|
7271 | controller: ChannelstreamController, | |
@@ -7047,11 +7291,11 b' function ChannelstreamController($rootScope, stateHolder, userSelfPropertyResour' | |||||
7047 | _.each(data, function (message) { |
|
7291 | _.each(data, function (message) { | |
7048 |
|
7292 | |||
7049 | if(typeof message.message.topic !== 'undefined'){ |
|
7293 | if(typeof message.message.topic !== 'undefined'){ | |
7050 |
$rootScope.$ |
|
7294 | $rootScope.$emit( | |
7051 | 'channelstream-message.'+message.message.topic, message); |
|
7295 | 'channelstream-message.'+message.message.topic, message); | |
7052 | } |
|
7296 | } | |
7053 | else{ |
|
7297 | else{ | |
7054 |
$rootScope.$ |
|
7298 | $rootScope.$emit('channelstream-message', message); | |
7055 | } |
|
7299 | } | |
7056 | }); |
|
7300 | }); | |
7057 | }); |
|
7301 | }); | |
@@ -7091,9 +7335,9 b" aeconfig.factory('AeConfig', function () {" | |||||
7091 | obj.flashMessages = decodeEncodedJSON(window.AE.flash_messages); |
|
7335 | obj.flashMessages = decodeEncodedJSON(window.AE.flash_messages); | |
7092 | obj.timeOptions = decodeEncodedJSON(window.AE.timeOptions); |
|
7336 | obj.timeOptions = decodeEncodedJSON(window.AE.timeOptions); | |
7093 | obj.plugins = decodeEncodedJSON(window.AE.plugins); |
|
7337 | obj.plugins = decodeEncodedJSON(window.AE.plugins); | |
|
7338 | obj.topNav = decodeEncodedJSON(window.AE.topNav); | |||
7094 | obj.ws_url = window.AE.ws_url; |
|
7339 | obj.ws_url = window.AE.ws_url; | |
7095 | obj.urls = window.AE.urls; |
|
7340 | obj.urls = window.AE.urls; | |
7096 |
|
||||
7097 | // set keys on values because we wont be able to retrieve them everywhere |
|
7341 | // set keys on values because we wont be able to retrieve them everywhere | |
7098 | for (var key in obj.timeOptions) { |
|
7342 | for (var key in obj.timeOptions) { | |
7099 | obj.timeOptions[key]['key'] = key; |
|
7343 | obj.timeOptions[key]['key'] = key; | |
@@ -8191,9 +8435,9 b' function EventsController(eventsNoIdResource, eventsResource) {' | |||||
8191 | angular.module('appenlight.controllers') |
|
8435 | angular.module('appenlight.controllers') | |
8192 | .controller('IndexDashboardController', IndexDashboardController); |
|
8436 | .controller('IndexDashboardController', IndexDashboardController); | |
8193 |
|
8437 | |||
8194 |
IndexDashboardController.$inject = ['$scope', '$location','$cookies', '$interval', 'stateHolder', |
|
8438 | IndexDashboardController.$inject = ['$rootScope', '$scope', '$location','$cookies', '$interval', 'stateHolder', 'applicationsPropertyResource', 'AeConfig']; | |
8195 |
|
8439 | |||
8196 |
function IndexDashboardController($scope, $location, $cookies, $interval, stateHolder, |
|
8440 | function IndexDashboardController($rootScope, $scope, $location, $cookies, $interval, stateHolder, applicationsPropertyResource, AeConfig) { | |
8197 | var vm = this; |
|
8441 | var vm = this; | |
8198 | stateHolder.section = 'dashboard'; |
|
8442 | stateHolder.section = 'dashboard'; | |
8199 | vm.timeOptions = {}; |
|
8443 | vm.timeOptions = {}; | |
@@ -8203,6 +8447,7 b' function IndexDashboardController($scope, $location, $cookies, $interval, stateH' | |||||
8203 | vm.timeOptions[key] = AeConfig.timeOptions[key]; |
|
8447 | vm.timeOptions[key] = AeConfig.timeOptions[key]; | |
8204 | } |
|
8448 | } | |
8205 | }); |
|
8449 | }); | |
|
8450 | vm.stateHolder = stateHolder; | |||
8206 | vm.urls = AeConfig.urls; |
|
8451 | vm.urls = AeConfig.urls; | |
8207 | vm.applications = stateHolder.AeUser.applications_map; |
|
8452 | vm.applications = stateHolder.AeUser.applications_map; | |
8208 | vm.show_dashboard = false; |
|
8453 | vm.show_dashboard = false; | |
@@ -8547,7 +8792,7 b' function IndexDashboardController($scope, $location, $cookies, $interval, stateH' | |||||
8547 | }; |
|
8792 | }; | |
8548 | vm.stream = {paused: false, filtered: false, messages: [], reports: []}; |
|
8793 | vm.stream = {paused: false, filtered: false, messages: [], reports: []}; | |
8549 |
|
8794 | |||
8550 |
$ |
|
8795 | $rootScope.$on('channelstream-message.front_dashboard.new_topic', function(event, message){ | |
8551 | var ws_report = message.message.report; |
|
8796 | var ws_report = message.message.report; | |
8552 | if (ws_report.http_status != 500) { |
|
8797 | if (ws_report.http_status != 500) { | |
8553 | return |
|
8798 | return | |
@@ -8817,9 +9062,8 b' function IndexDashboardController($scope, $location, $cookies, $interval, stateH' | |||||
8817 | function () { |
|
9062 | function () { | |
8818 | vm.loading.reports = false; |
|
9063 | vm.loading.reports = false; | |
8819 | } |
|
9064 | } | |
8820 | ) |
|
9065 | ); | |
8821 |
|
|
9066 | }; | |
8822 | } |
|
|||
8823 |
|
9067 | |||
8824 | if (stateHolder.AeUser.applications.length){ |
|
9068 | if (stateHolder.AeUser.applications.length){ | |
8825 | vm.show_dashboard = true; |
|
9069 | vm.show_dashboard = true; | |
@@ -8835,64 +9079,6 b' function IndexDashboardController($scope, $location, $cookies, $interval, stateH' | |||||
8835 | } |
|
9079 | } | |
8836 | }); |
|
9080 | }); | |
8837 |
|
9081 | |||
8838 |
|
||||
8839 | } |
|
|||
8840 |
|
||||
8841 | ;// # Copyright (C) 2010-2016 RhodeCode GmbH |
|
|||
8842 | // # |
|
|||
8843 | // # This program is free software: you can redistribute it and/or modify |
|
|||
8844 | // # it under the terms of the GNU Affero General Public License, version 3 |
|
|||
8845 | // # (only), as published by the Free Software Foundation. |
|
|||
8846 | // # |
|
|||
8847 | // # This program is distributed in the hope that it will be useful, |
|
|||
8848 | // # but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|||
8849 | // # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|||
8850 | // # GNU General Public License for more details. |
|
|||
8851 | // # |
|
|||
8852 | // # You should have received a copy of the GNU Affero General Public License |
|
|||
8853 | // # along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
|||
8854 | // # |
|
|||
8855 | // # This program is dual-licensed. If you wish to learn more about the |
|
|||
8856 | // # AppEnlight Enterprise Edition, including its added features, Support |
|
|||
8857 | // # services, and proprietary license terms, please see |
|
|||
8858 | // # https://rhodecode.com/licenses/ |
|
|||
8859 |
|
||||
8860 | angular.module('appenlight.controllers') |
|
|||
8861 | .controller('HeaderCtrl', HeaderCtrl); |
|
|||
8862 |
|
||||
8863 | HeaderCtrl.$inject = ['$state', 'stateHolder']; |
|
|||
8864 |
|
||||
8865 | function HeaderCtrl($state, stateHolder) { |
|
|||
8866 | var vm = this; |
|
|||
8867 | vm.stateHolder = stateHolder; |
|
|||
8868 | vm.assignedReports = stateHolder.AeUser.assigned_reports; |
|
|||
8869 | vm.latestEvents = stateHolder.AeUser.latest_events; |
|
|||
8870 | vm.activeEvents = 0; |
|
|||
8871 | _.each(vm.latestEvents, function (event) { |
|
|||
8872 | if (event.status === 1 && event.end_date === null) { |
|
|||
8873 | vm.activeEvents += 1; |
|
|||
8874 | } |
|
|||
8875 | }); |
|
|||
8876 |
|
||||
8877 | vm.clickedEvent = function(event){ |
|
|||
8878 |
|
||||
8879 | // (from Event model) |
|
|||
8880 | // exception reports |
|
|||
8881 | if (_.contains([1,2], event.event_type)){ |
|
|||
8882 | $state.go('report.list', {resource:event.resource_id, start_date:event.start_date}); |
|
|||
8883 | } |
|
|||
8884 | // slowness reports |
|
|||
8885 | else if (_.contains([3,4], event.event_type)){ |
|
|||
8886 | $state.go('report.list_slow', {resource:event.resource_id, start_date:event.start_date}); |
|
|||
8887 | } |
|
|||
8888 | // uptime reports |
|
|||
8889 | else if (_.contains([7,8], event.event_type)){ |
|
|||
8890 | $state.go('uptime', {resource:event.resource_id, start_date:event.start_date}); |
|
|||
8891 | } |
|
|||
8892 | else{ |
|
|||
8893 |
|
||||
8894 | } |
|
|||
8895 | } |
|
|||
8896 | } |
|
9082 | } | |
8897 |
|
9083 | |||
8898 | ;// # Copyright (C) 2010-2016 RhodeCode GmbH |
|
9084 | ;// # Copyright (C) 2010-2016 RhodeCode GmbH | |
@@ -10304,6 +10490,8 b" ReportsViewController.$inject = ['$window', '$location', '$state', '$uibModal'," | |||||
10304 | function ReportsViewController($window, $location, $state, $uibModal, $cookies, reportGroupPropertyResource, reportGroupResource, logsNoIdResource, stateHolder) { |
|
10490 | function ReportsViewController($window, $location, $state, $uibModal, $cookies, reportGroupPropertyResource, reportGroupResource, logsNoIdResource, stateHolder) { | |
10305 | var vm = this; |
|
10491 | var vm = this; | |
10306 | vm.window = $window; |
|
10492 | vm.window = $window; | |
|
10493 | vm.stateHolder = stateHolder; | |||
|
10494 | vm.$state = $state; | |||
10307 | vm.reportHistoryConfig = { |
|
10495 | vm.reportHistoryConfig = { | |
10308 | data: { |
|
10496 | data: { | |
10309 | json: [], |
|
10497 | json: [], | |
@@ -12879,7 +13067,8 b" angular.module('appenlight.services.stateHolder', []).factory('stateHolder'," | |||||
12879 | resource: null, |
|
13067 | resource: null, | |
12880 | plugins: Plugins, |
|
13068 | plugins: Plugins, | |
12881 | flashMessages: flashMessages, |
|
13069 | flashMessages: flashMessages, | |
12882 | AeUser: AeUser |
|
13070 | AeUser: AeUser, | |
|
13071 | AeConfig: AeConfig | |||
12883 | }; |
|
13072 | }; | |
12884 | return stateHolder; |
|
13073 | return stateHolder; | |
12885 | }]); |
|
13074 | }]); |
@@ -65,7 +65,8 b' def gen_urls(request):' | |||||
65 | 'otherRoutes': { |
|
65 | 'otherRoutes': { | |
66 | 'register': request.route_url('register') , |
|
66 | 'register': request.route_url('register') , | |
67 | 'lostPassword': request.route_url('lost_password') , |
|
67 | 'lostPassword': request.route_url('lost_password') , | |
68 | 'lostPasswordGenerate': request.route_url('lost_password_generate') |
|
68 | 'lostPasswordGenerate': request.route_url('lost_password_generate'), | |
|
69 | 'signOut': request.route_url('ziggurat.routes.sign_out') | |||
69 | }, |
|
70 | }, | |
70 | 'social_auth': { |
|
71 | 'social_auth': { | |
71 | 'google':request.route_url('social_auth', provider='google'), |
|
72 | 'google':request.route_url('social_auth', provider='google'), |
@@ -4,9 +4,7 b'' | |||||
4 | <div class="col-sm-10 col-sm-offset-1" id="content"> |
|
4 | <div class="col-sm-10 col-sm-offset-1" id="content"> | |
5 |
|
5 | |||
6 | <span class="fa fa-ambulance" style="float: left; font-size: 666%; margin: 20px 20px"></span> |
|
6 | <span class="fa fa-ambulance" style="float: left; font-size: 666%; margin: 20px 20px"></span> | |
7 |
|
||||
8 |
|
||||
9 | <p class="heading-text"><strong>500:</strong> OMG!!! Internal Server Error </p> |
|
7 | <p class="heading-text"><strong>500:</strong> OMG!!! Internal Server Error </p> | |
10 | </div> |
|
8 | </div> | |
11 | {% endblock %} |
|
9 | {% endblock %} | |
12 | {% block section_name %}errorPage{% endblock %} No newline at end of file |
|
10 | {% block section_name %}errorPage{% endblock %} |
@@ -1,9 +1,6 b'' | |||||
1 | <div class="footer"> |
|
1 | <div class="footer"> | |
2 | <div class="container"> |
|
2 | <div class="container"> | |
3 |
|
||||
4 | {{ template_footer_html |safe }} |
|
3 | {{ template_footer_html |safe }} | |
5 |
|
||||
6 | </div> |
|
4 | </div> | |
7 |
|
||||
8 | <div id="app_instance">{{ appenlight_app_instance }}</div> |
|
5 | <div id="app_instance">{{ appenlight_app_instance }}</div> | |
9 | </div> |
|
6 | </div> |
@@ -1,115 +1,22 b'' | |||||
1 | <!-- Fixed navbar --> |
|
1 | <!-- Fixed navbar --> | |
2 |
<div id="top-navbar" class="navbar navbar-default navbar-fixed-top" |
|
2 | <div id="top-navbar" class="navbar navbar-default navbar-fixed-top" | |
3 | {% raw %}<channelstream config="AeConfig"></channelstream>{% endraw %} |
|
3 | role="navigation"> | |
4 | <div class="pattern"> |
|
4 | <div class="pattern"> | |
5 | <div class="container"> |
|
5 | <div class="container"> | |
6 | <div class="navbar-header pull-left"> |
|
6 | <div class="navbar-header pull-left"> | |
7 | <a href="{{ request.route_url('/') }}" class="navbar-brand"> |
|
7 | <a href="{{ request.route_url('/') }}" class="navbar-brand"> | |
8 | <div id="logo-normal" class="hidden-sm hidden-xs"></div> |
|
8 | <div id="logo-normal" class="hidden-sm hidden-xs"></div> | |
9 | <div id="logo-icon" class="visible-sm visible-xs"></div> |
|
9 | <div id="logo-icon" class="visible-sm visible-xs"></div> | |
10 | </a> |
|
10 | </a> | |
11 | </div> |
|
11 | </div> | |
12 |
|
||||
13 | <div class="container-fluid"> |
|
12 | <div class="container-fluid"> | |
14 | <div> |
|
|||
15 | {% if request.user -%} |
|
|||
16 | <ul class="nav navbar-nav navbar-right"> |
|
|||
17 | <li id="user-notifications" class="dropdown ng-cloak" data-uib-dropdown> |
|
|||
18 |
|
||||
19 | <a class="dropdown-toggle" data-uib-dropdown-toggle> |
|
|||
20 | <span class="badge">{% raw %}{{header.assignedReports.length}}{% endraw %}</span> |
|
|||
21 | <span class="fa fa-envelope-o"></span> |
|
|||
22 | </a> |
|
|||
23 | <ul class="dropdown-menu"> |
|
|||
24 | <li role="presentation" class="dropdown-header">Assigned reports</li> |
|
|||
25 | {% raw %} |
|
|||
26 | <li data-ng-repeat="report in header.assignedReports" role="presentation"> |
|
|||
27 | <a href="{{report.front_url}}" role="menuitem" tabindex="-1"> |
|
|||
28 | <small>{{ report.error || 'Slow Report: ' + report.view_name |truncate:65}}</small> |
|
|||
29 | </a> |
|
|||
30 |
|
||||
31 | </li> |
|
|||
32 | <li data-ng-if="header.assignedReports.length == 0"><a><small>No reports</small></a></li> |
|
|||
33 | {% endraw %} |
|
|||
34 | </ul> |
|
|||
35 | </li> |
|
|||
36 | <li id="alert-notifications" class="dropdown ng-cloak" data-uib-dropdown auto-close="outsideClick"> |
|
|||
37 | {% raw %} |
|
|||
38 | <a class="dropdown-toggle" data-uib-dropdown-toggle> |
|
|||
39 | <span class="badge {{ activeEvents ? 'danger' : '' }}">{{header.activeEvents}}</span> |
|
|||
40 | <span class="fa fa-bell-o"></span></a> |
|
|||
41 | <ul class="dropdown-menu"> |
|
|||
42 | <li role="presentation" class="dropdown-header"> |
|
|||
43 | <a data-ui-sref="events" class="btn btn-xs btn-default">Show me more</a></li> |
|
|||
44 | <li role="presentation" class="dropdown-header">Latest events</li> |
|
|||
45 | <li data-ng-repeat="event in header.latestEvents" role="presentation"> |
|
|||
46 | <a data-ng-click="header.clickedEvent(event)"><small class="resource-name">For {{ event.resource_name }}</small><br/> |
|
|||
47 | <small>{{ event.text |truncate:65}}</small><br/> |
|
|||
48 | <small class="date" data-uib-tooltip="{{event.start_date}}">created: <iso-to-relative-time time="{{event.start_date}}"/></small> |
|
|||
49 | <small class="date" data-ng-show="event.end_date" data-uib-tooltip="{{event.end_date}}">closed: <iso-to-relative-time time="{{event.end_date}}"/></small> |
|
|||
50 | </a> |
|
|||
51 | </li> |
|
|||
52 | <li data-ng-if="header.latestEvents.length == 0"><a><small>No events</small></a></li> |
|
|||
53 | {% endraw %} |
|
|||
54 | </ul> |
|
|||
55 | </li> |
|
|||
56 |
|
||||
57 | <li id="dashboards" class="dropdown" data-uib-dropdown> |
|
|||
58 | <a class="dropdown-toggle" data-uib-dropdown-toggle tooltip-placement="bottom" data-uib-tooltip="Dashboards"> |
|
|||
59 | <span class="fa fa-bar-chart-o "></span></a> |
|
|||
60 | <ul class="dropdown-menu"> |
|
|||
61 | <li role="presentation"><a data-ui-sref="front_dashboard">Main dashboard</a> |
|
|||
62 | {% for item in top_nav['menu_dashboards_items'] %} |
|
|||
63 | <li role="presentation"> |
|
|||
64 | <a data-ui-sref="{{ item.sref }}">{{ item.label }}</a> |
|
|||
65 | </li> |
|
|||
66 | {% endfor %} |
|
|||
67 | </ul> |
|
|||
68 | </li> |
|
|||
69 |
|
||||
70 | <li class="dropdown" data-uib-dropdown> |
|
|||
71 | <a class="dropdown-toggle" data-uib-dropdown-toggle tooltip-placement="bottom" data-uib-tooltip="Reports"> |
|
|||
72 | <span class="fa fa-exclamation-triangle"></span></a> |
|
|||
73 | <ul class="dropdown-menu"> |
|
|||
74 | <li role="presentation"> |
|
|||
75 | <a data-ui-sref="report.list({resource:stateHolder.resource})">Error Reports</a> |
|
|||
76 | </li> |
|
|||
77 | <li role="presentation"> |
|
|||
78 | <a data-ui-sref="report.list_slow({resource:stateHolder.resource})">Slowness Reports</a> |
|
|||
79 | </li> |
|
|||
80 |
|
||||
81 | </ul> |
|
|||
82 | </li> |
|
|||
83 |
|
||||
84 | <li> |
|
|||
85 | <a data-ui-sref="logs({resource:stateHolder.resource})" data-uib-tooltip="Logs" tooltip-placement="bottom"><span class="fa fa-list-alt "></span></a></li> |
|
|||
86 | <li> |
|
|||
87 | <a data-ui-sref="user" data-uib-tooltip="Settings" tooltip-placement="bottom"><span class="fa fa-cog "></span></a> |
|
|||
88 | </li> |
|
|||
89 | {% if top_nav['menu_admin_items'] %} |
|
|||
90 | <li class="dropdown" data-uib-dropdown> |
|
|||
91 | <a class="dropdown-toggle" data-uib-dropdown-toggle tooltip-placement="bottom" data-uib-tooltip="Admin Settings"> |
|
|||
92 | <span class="fa fa-wrench"></span></a> |
|
|||
93 | <ul class="dropdown-menu"> |
|
|||
94 | {% for item in top_nav['menu_admin_items'] %} |
|
|||
95 | <li role="presentation"> |
|
|||
96 | <a data-ui-sref="{{ item.sref }}">{{ item.label }}</a> |
|
|||
97 | </li> |
|
|||
98 | {% endfor %} |
|
|||
99 | </ul> |
|
|||
100 | </li> |
|
|||
101 | {% endif %} |
|
|||
102 | <li><a href="{{ request.route_url('ziggurat.routes.sign_out') }}" target="_self" |
|
|||
103 | data-uib-tooltip="Sign out" tooltip-placement="bottom"> |
|
|||
104 | <span class="fa fa-power-off "></span></a></li> |
|
|||
105 | </ul> |
|
|||
106 | {% else -%} |
|
|||
107 | <ul class="nav navbar-nav pull-right"> |
|
13 | <ul class="nav navbar-nav pull-right"> | |
108 | <li><a href="{{ request.route_url('register', _query={'sign_in':'1'}) }}" target="_self" class="btn btn-orange">{{ _('Sign In') }}</a></li> |
|
14 | <li> | |
|
15 | <a href="{{ request.route_url('register', _query={'sign_in':'1'}) }}" | |||
|
16 | target="_self" | |||
|
17 | class="btn btn-orange">{{ _('Sign In') }}</a></li> | |||
109 | </ul> |
|
18 | </ul> | |
110 | {% endif %} |
|
|||
111 | </div><!-- /.navbar-collapse --> |
|
|||
112 | </div><!-- /.container-fluid --> |
|
19 | </div><!-- /.container-fluid --> | |
|
20 | </div> | |||
113 | </div> |
|
21 | </div> | |
114 | </div> |
|
22 | </div> | |
115 | </div> |
|
@@ -10,15 +10,8 b'' | |||||
10 | {% endraw %} |
|
10 | {% endraw %} | |
11 | </div> |
|
11 | </div> | |
12 | </div> |
|
12 | </div> | |
13 |
|
13 | <div class="row"> | ||
14 |
|
|
14 | {% block content %}{% endblock %} | |
15 | <div class="row"> |
|
|||
16 | <!-- container --> |
|
|||
17 | <!-- content --> |
|
|||
18 | {% block content %}{% endblock %} |
|
|||
19 | <!-- content --> |
|
|||
20 | <!-- container --> |
|
|||
21 | </div> |
|
|||
22 | </div> |
|
15 | </div> | |
23 | </div> |
|
16 | </div> | |
24 |
|
17 |
@@ -1,6 +1,6 b'' | |||||
1 | {% import 'widgets.jinja2' as widgets %} |
|
1 | {% import 'widgets.jinja2' as widgets %} | |
2 | <!DOCTYPE html> |
|
2 | <!DOCTYPE html> | |
3 | <html {% block ng_controller %}{% endblock %}> |
|
3 | <html> | |
4 | <head> |
|
4 | <head> | |
5 | <title>{% block title %}Application performance, exception and error monitoring for Python, |
|
5 | <title>{% block title %}Application performance, exception and error monitoring for Python, | |
6 | Django, Flask and Javascript - AppEnlight{% endblock %}</title> |
|
6 | Django, Flask and Javascript - AppEnlight{% endblock %}</title> | |
@@ -19,9 +19,7 b'' | |||||
19 | {% block styles %} |
|
19 | {% block styles %} | |
20 | <link href="{{ request.static_url('appenlight:webassets/appenlight/css/front.css', _query={'rev':css_hash}) }}" rel="stylesheet" type="text/css"/> |
|
20 | <link href="{{ request.static_url('appenlight:webassets/appenlight/css/front.css', _query={'rev':css_hash}) }}" rel="stylesheet" type="text/css"/> | |
21 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
21 | <meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
22 |
|
||||
23 | {% endblock %} |
|
22 | {% endblock %} | |
24 | {% block additional_styles %}{% endblock %} |
|
|||
25 | <script type="text/javascript"> |
|
23 | <script type="text/javascript"> | |
26 | var AE = {}; |
|
24 | var AE = {}; | |
27 | AE.urls = {{ url_list|tojson|safe }}; |
|
25 | AE.urls = {{ url_list|tojson|safe }}; | |
@@ -29,6 +27,7 b'' | |||||
29 | AE.flash_messages = {{ flash_msgs|toJSONUnsafe }}; |
|
27 | AE.flash_messages = {{ flash_msgs|toJSONUnsafe }}; | |
30 | AE.timeOptions = {{ h.time_options|toJSONUnsafe }}; |
|
28 | AE.timeOptions = {{ h.time_options|toJSONUnsafe }}; | |
31 | AE.plugins = {{ js_plugins|toJSONUnsafe }}; |
|
29 | AE.plugins = {{ js_plugins|toJSONUnsafe }}; | |
|
30 | AE.topNav = {{ top_nav|toJSONUnsafe }}; | |||
32 | </script> |
|
31 | </script> | |
33 | {% if request.registry.settings.get('appenlight.public_api_key') %} |
|
32 | {% if request.registry.settings.get('appenlight.public_api_key') %} | |
34 | <script type="application/javascript"> |
|
33 | <script type="application/javascript"> | |
@@ -99,18 +98,25 b'' | |||||
99 | </script> |
|
98 | </script> | |
100 | </head> |
|
99 | </head> | |
101 | <body class="{% block section_name %}{% endblock %} {% raw %}top-state-{{$state.current.name.split('.')[0].replace('.', '-').replace('.', '-')}} state-{{$state.current.name.replace('.', '-').replace('.', '-')}}{% endraw %} {% if request.user %}user-logged {% else %}user-unlogged{% endif %}" id="html_body"> |
|
100 | <body class="{% block section_name %}{% endblock %} {% raw %}top-state-{{$state.current.name.split('.')[0].replace('.', '-').replace('.', '-')}} state-{{$state.current.name.replace('.', '-').replace('.', '-')}}{% endraw %} {% if request.user %}user-logged {% else %}user-unlogged{% endif %}" id="html_body"> | |
102 | <div class="extra-deco1"></div> |
|
|||
103 | <div class="extra-deco2"></div> |
|
|||
104 |
|
||||
105 |
|
||||
106 | <div id="holder"> |
|
101 | <div id="holder"> | |
107 | {% include "/header.jinja2" with context %} |
|
102 | {% block app_block %} | |
108 | <div id="outer-content"> |
|
103 | <appenlight-app> | |
109 | {% block outer_content %}Content{% endblock %} |
|
104 | <div class="text-center"> | |
110 | </div> |
|
105 | <span class="fa fa-cog fa-spin fa-5x loader"></span> | |
|
106 | </div> | |||
|
107 | </appenlight-app> | |||
|
108 | {% endblock %} | |||
|
109 | ||||
|
110 | {% block non_angular_content %} | |||
|
111 | {% if not request.user %} | |||
|
112 | {% include "/header.jinja2" with context %} | |||
|
113 | <div id="outer-content"> | |||
|
114 | {% block outer_content %}{% endblock %} | |||
|
115 | </div> | |||
|
116 | {% endif %} | |||
|
117 | {% endblock %} | |||
111 |
|
118 | |||
112 | {% include "/footer.jinja2" %} |
|
119 | {% include "/footer.jinja2" %} | |
113 | </div> |
|
120 | </div> | |
114 |
|
||||
115 | </body> |
|
121 | </body> | |
116 | </html> |
|
122 | </html> |
@@ -1,4 +1,5 b'' | |||||
1 | {% extends "/layout.jinja2" %} |
|
1 | {% extends "/layout.jinja2" %} | |
|
2 | {% block app_block %}{% endblock %} | |||
2 | {% block content %} |
|
3 | {% block content %} | |
3 |
|
4 | |||
4 | <div class="col-sm-offset-1 col-sm-10"> |
|
5 | <div class="col-sm-offset-1 col-sm-10"> |
@@ -1,4 +1,5 b'' | |||||
1 | {% extends "/layout.jinja2" %} |
|
1 | {% extends "/layout.jinja2" %} | |
|
2 | {% block app_block %}{% endblock %} | |||
2 | {% block content %} |
|
3 | {% block content %} | |
3 | <div class="col-sm-offset-1 col-sm-10"> |
|
4 | <div class="col-sm-offset-1 col-sm-10"> | |
4 |
|
5 |
@@ -1,9 +1,7 b'' | |||||
1 | {% extends "/layout.jinja2" %} |
|
1 | {% extends "/layout.jinja2" %} | |
2 | {% block ng_controller %} data-ng-controller="RegisterController as |
|
|||
3 | register" {% endblock %} |
|
|||
4 | {% block content_class %}two-col equal{% endblock %} |
|
2 | {% block content_class %}two-col equal{% endblock %} | |
5 | {% block section_name %}register-section{% endblock %} |
|
3 | {% block section_name %}register-section{% endblock %} | |
6 |
|
4 | {% block app_block %}{% endblock %} | ||
7 | {% block page_title %}{% endblock %} |
|
5 | {% block page_title %}{% endblock %} | |
8 |
|
6 | |||
9 | {% block content %} |
|
7 | {% block content %} |
@@ -222,13 +222,13 b' def register(request):' | |||||
222 |
|
222 | |||
223 |
|
223 | |||
224 | @view_config(route_name='/', |
|
224 | @view_config(route_name='/', | |
225 |
renderer='appenlight:templates/ |
|
225 | renderer='appenlight:templates/app.jinja2', | |
226 | permission=NO_PERMISSION_REQUIRED) |
|
226 | permission=NO_PERMISSION_REQUIRED) | |
227 | @view_config(route_name='angular_app_ui', |
|
227 | @view_config(route_name='angular_app_ui', | |
228 |
renderer='appenlight:templates/ |
|
228 | renderer='appenlight:templates/app.jinja2', | |
229 | permission=NO_PERMISSION_REQUIRED) |
|
229 | permission=NO_PERMISSION_REQUIRED) | |
230 | @view_config(route_name='angular_app_ui_ix', |
|
230 | @view_config(route_name='angular_app_ui_ix', | |
231 |
renderer='appenlight:templates/ |
|
231 | renderer='appenlight:templates/app.jinja2', | |
232 | permission=NO_PERMISSION_REQUIRED) |
|
232 | permission=NO_PERMISSION_REQUIRED) | |
233 | def app_main_index(request): |
|
233 | def app_main_index(request): | |
234 | """ |
|
234 | """ |
@@ -40,7 +40,9 b" angular.module('appenlight.controllers', [" | |||||
40 | 'appenlight.base' |
|
40 | 'appenlight.base' | |
41 | ]); |
|
41 | ]); | |
42 | angular.module('appenlight.components', [ |
|
42 | angular.module('appenlight.components', [ | |
43 | 'appenlight.components.channelstream' |
|
43 | 'appenlight.components.channelstream', | |
|
44 | 'appenlight.components.appenlightApp', | |||
|
45 | 'appenlight.components.appenlightHeader' | |||
44 | ]); |
|
46 | ]); | |
45 | angular.module('appenlight.directives', [ |
|
47 | angular.module('appenlight.directives', [ | |
46 | 'appenlight.directives.appVersion', |
|
48 | 'appenlight.directives.appVersion', |
@@ -17,13 +17,17 b'' | |||||
17 | // # services, and proprietary license terms, please see |
|
17 | // # services, and proprietary license terms, please see | |
18 | // # https://rhodecode.com/licenses/ |
|
18 | // # https://rhodecode.com/licenses/ | |
19 |
|
19 | |||
20 |
angular.module('appenlight.co |
|
20 | angular.module('appenlight.components.appenlightHeader', []) | |
21 | .controller('HeaderCtrl', HeaderCtrl); |
|
21 | .component('appenlightHeader', { | |
|
22 | templateUrl: 'templates/components/appenlight-header.html', | |||
|
23 | controller: AppEnlightHeaderController | |||
|
24 | }); | |||
22 |
|
25 | |||
23 |
|
|
26 | ChannelstreamController.$inject = ['$state', 'stateHolder', 'AeConfig']; | |
24 |
|
27 | |||
25 |
function HeaderCtrl($state, stateHolder) |
|
28 | function AppEnlightHeaderController($state, stateHolder, AeConfig){ | |
26 | var vm = this; |
|
29 | var vm = this; | |
|
30 | vm.AeConfig = AeConfig; | |||
27 | vm.stateHolder = stateHolder; |
|
31 | vm.stateHolder = stateHolder; | |
28 | vm.assignedReports = stateHolder.AeUser.assigned_reports; |
|
32 | vm.assignedReports = stateHolder.AeUser.assigned_reports; | |
29 | vm.latestEvents = stateHolder.AeUser.latest_events; |
|
33 | vm.latestEvents = stateHolder.AeUser.latest_events; | |
@@ -35,8 +39,6 b' function HeaderCtrl($state, stateHolder) {' | |||||
35 | }); |
|
39 | }); | |
36 |
|
40 | |||
37 | vm.clickedEvent = function(event){ |
|
41 | vm.clickedEvent = function(event){ | |
38 | console.log(event); |
|
|||
39 | // (from Event model) |
|
|||
40 | // exception reports |
|
42 | // exception reports | |
41 | if (_.contains([1,2], event.event_type)){ |
|
43 | if (_.contains([1,2], event.event_type)){ | |
42 | $state.go('report.list', {resource:event.resource_id, start_date:event.start_date}); |
|
44 | $state.go('report.list', {resource:event.resource_id, start_date:event.start_date}); |
@@ -42,11 +42,11 b' function ChannelstreamController($rootScope, stateHolder, userSelfPropertyResour' | |||||
42 | _.each(data, function (message) { |
|
42 | _.each(data, function (message) { | |
43 | console.log('channelstream-message', message); |
|
43 | console.log('channelstream-message', message); | |
44 | if(typeof message.message.topic !== 'undefined'){ |
|
44 | if(typeof message.message.topic !== 'undefined'){ | |
45 |
$rootScope.$ |
|
45 | $rootScope.$emit( | |
46 | 'channelstream-message.'+message.message.topic, message); |
|
46 | 'channelstream-message.'+message.message.topic, message); | |
47 | } |
|
47 | } | |
48 | else{ |
|
48 | else{ | |
49 |
$rootScope.$ |
|
49 | $rootScope.$emit('channelstream-message', message); | |
50 | } |
|
50 | } | |
51 | }); |
|
51 | }); | |
52 | }); |
|
52 | }); |
@@ -23,9 +23,9 b" aeconfig.factory('AeConfig', function () {" | |||||
23 | obj.flashMessages = decodeEncodedJSON(window.AE.flash_messages); |
|
23 | obj.flashMessages = decodeEncodedJSON(window.AE.flash_messages); | |
24 | obj.timeOptions = decodeEncodedJSON(window.AE.timeOptions); |
|
24 | obj.timeOptions = decodeEncodedJSON(window.AE.timeOptions); | |
25 | obj.plugins = decodeEncodedJSON(window.AE.plugins); |
|
25 | obj.plugins = decodeEncodedJSON(window.AE.plugins); | |
|
26 | obj.topNav = decodeEncodedJSON(window.AE.topNav); | |||
26 | obj.ws_url = window.AE.ws_url; |
|
27 | obj.ws_url = window.AE.ws_url; | |
27 | obj.urls = window.AE.urls; |
|
28 | obj.urls = window.AE.urls; | |
28 |
|
||||
29 | // set keys on values because we wont be able to retrieve them everywhere |
|
29 | // set keys on values because we wont be able to retrieve them everywhere | |
30 | for (var key in obj.timeOptions) { |
|
30 | for (var key in obj.timeOptions) { | |
31 | obj.timeOptions[key]['key'] = key; |
|
31 | obj.timeOptions[key]['key'] = key; |
@@ -20,9 +20,9 b'' | |||||
20 | angular.module('appenlight.controllers') |
|
20 | angular.module('appenlight.controllers') | |
21 | .controller('IndexDashboardController', IndexDashboardController); |
|
21 | .controller('IndexDashboardController', IndexDashboardController); | |
22 |
|
22 | |||
23 |
IndexDashboardController.$inject = ['$scope', '$location','$cookies', '$interval', 'stateHolder', |
|
23 | IndexDashboardController.$inject = ['$rootScope', '$scope', '$location','$cookies', '$interval', 'stateHolder', 'applicationsPropertyResource', 'AeConfig']; | |
24 |
|
24 | |||
25 |
function IndexDashboardController($scope, $location, $cookies, $interval, stateHolder, |
|
25 | function IndexDashboardController($rootScope, $scope, $location, $cookies, $interval, stateHolder, applicationsPropertyResource, AeConfig) { | |
26 | var vm = this; |
|
26 | var vm = this; | |
27 | stateHolder.section = 'dashboard'; |
|
27 | stateHolder.section = 'dashboard'; | |
28 | vm.timeOptions = {}; |
|
28 | vm.timeOptions = {}; | |
@@ -32,6 +32,7 b' function IndexDashboardController($scope, $location, $cookies, $interval, stateH' | |||||
32 | vm.timeOptions[key] = AeConfig.timeOptions[key]; |
|
32 | vm.timeOptions[key] = AeConfig.timeOptions[key]; | |
33 | } |
|
33 | } | |
34 | }); |
|
34 | }); | |
|
35 | vm.stateHolder = stateHolder; | |||
35 | vm.urls = AeConfig.urls; |
|
36 | vm.urls = AeConfig.urls; | |
36 | vm.applications = stateHolder.AeUser.applications_map; |
|
37 | vm.applications = stateHolder.AeUser.applications_map; | |
37 | vm.show_dashboard = false; |
|
38 | vm.show_dashboard = false; | |
@@ -376,7 +377,7 b' function IndexDashboardController($scope, $location, $cookies, $interval, stateH' | |||||
376 | }; |
|
377 | }; | |
377 | vm.stream = {paused: false, filtered: false, messages: [], reports: []}; |
|
378 | vm.stream = {paused: false, filtered: false, messages: [], reports: []}; | |
378 |
|
379 | |||
379 |
$ |
|
380 | $rootScope.$on('channelstream-message.front_dashboard.new_topic', function(event, message){ | |
380 | var ws_report = message.message.report; |
|
381 | var ws_report = message.message.report; | |
381 | if (ws_report.http_status != 500) { |
|
382 | if (ws_report.http_status != 500) { | |
382 | return |
|
383 | return | |
@@ -646,9 +647,8 b' function IndexDashboardController($scope, $location, $cookies, $interval, stateH' | |||||
646 | function () { |
|
647 | function () { | |
647 | vm.loading.reports = false; |
|
648 | vm.loading.reports = false; | |
648 | } |
|
649 | } | |
649 | ) |
|
650 | ); | |
650 |
|
|
651 | }; | |
651 | } |
|
|||
652 |
|
652 | |||
653 | if (stateHolder.AeUser.applications.length){ |
|
653 | if (stateHolder.AeUser.applications.length){ | |
654 | vm.show_dashboard = true; |
|
654 | vm.show_dashboard = true; | |
@@ -664,5 +664,4 b' function IndexDashboardController($scope, $location, $cookies, $interval, stateH' | |||||
664 | } |
|
664 | } | |
665 | }); |
|
665 | }); | |
666 |
|
666 | |||
667 |
|
||||
668 | } |
|
667 | } |
@@ -25,6 +25,8 b" ReportsViewController.$inject = ['$window', '$location', '$state', '$uibModal'," | |||||
25 | function ReportsViewController($window, $location, $state, $uibModal, $cookies, reportGroupPropertyResource, reportGroupResource, logsNoIdResource, stateHolder) { |
|
25 | function ReportsViewController($window, $location, $state, $uibModal, $cookies, reportGroupPropertyResource, reportGroupResource, logsNoIdResource, stateHolder) { | |
26 | var vm = this; |
|
26 | var vm = this; | |
27 | vm.window = $window; |
|
27 | vm.window = $window; | |
|
28 | vm.stateHolder = stateHolder; | |||
|
29 | vm.$state = $state; | |||
28 | vm.reportHistoryConfig = { |
|
30 | vm.reportHistoryConfig = { | |
29 | data: { |
|
31 | data: { | |
30 | json: [], |
|
32 | json: [], |
@@ -154,7 +154,8 b" angular.module('appenlight.services.stateHolder', []).factory('stateHolder'," | |||||
154 | resource: null, |
|
154 | resource: null, | |
155 | plugins: Plugins, |
|
155 | plugins: Plugins, | |
156 | flashMessages: flashMessages, |
|
156 | flashMessages: flashMessages, | |
157 | AeUser: AeUser |
|
157 | AeUser: AeUser, | |
|
158 | AeConfig: AeConfig | |||
158 | }; |
|
159 | }; | |
159 | return stateHolder; |
|
160 | return stateHolder; | |
160 | }]); |
|
161 | }]); |
@@ -13,21 +13,20 b'' | |||||
13 |
|
13 | |||
14 | <div class="row"> |
|
14 | <div class="row"> | |
15 | <div class="col-sm-12 dashboard" id="content"> |
|
15 | <div class="col-sm-12 dashboard" id="content"> | |
16 |
|
16 | <div ng-if="!index.stateHolder.AeUser.applications.length"> | ||
17 | <div ng-if="!stateHolder.AeUser.applications.length"> |
|
|||
18 |
|
17 | |||
19 | <div ng-include="'templates/quickstart.html'"></div> |
|
18 | <div ng-include="'templates/quickstart.html'"></div> | |
20 |
|
19 | |||
21 | </div> |
|
20 | </div> | |
22 |
|
21 | |||
23 | <div ng-if="stateHolder.AeUser.applications.length"> |
|
22 | <div ng-if="index.stateHolder.AeUser.applications.length"> | |
24 |
|
23 | |||
25 | <div class="row"> |
|
24 | <div class="row"> | |
26 | <div class="col-sm-6"> |
|
25 | <div class="col-sm-6"> | |
27 | <div class="panel panel-default"> |
|
26 | <div class="panel panel-default"> | |
28 | <div class="panel-body"> |
|
27 | <div class="panel-body"> | |
29 | <form class="graph-type form-inline"> |
|
28 | <form class="graph-type form-inline"> | |
30 | <select ng-model="index.resource" ng-options="r.resource_id as r.resource_name for r in stateHolder.AeUser.applications" ng-change="index.updateSearchParams()" |
|
29 | <select ng-model="index.resource" ng-options="r.resource_id as r.resource_name for r in index.stateHolder.AeUser.applications" ng-change="index.updateSearchParams()" | |
31 | class="SelectField form-control input-sm slim-input"></select> |
|
30 | class="SelectField form-control input-sm slim-input"></select> | |
32 |
|
31 | |||
33 | <select class="SelectField form-control input-sm slim-input" ng-model="index.timeSpan" |
|
32 | <select class="SelectField form-control input-sm slim-input" ng-model="index.timeSpan" |
@@ -94,7 +94,7 b'' | |||||
94 |
|
94 | |||
95 | <div ng-if="report.report !== null && !report.is_loading.report"> |
|
95 | <div ng-if="report.report !== null && !report.is_loading.report"> | |
96 |
|
96 | |||
97 | <div ng-if="stateHolder.AeUser.id" class="row"> |
|
97 | <div ng-if="report.stateHolder.AeUser.id" class="row"> | |
98 | <div class="col-lg-12"> |
|
98 | <div class="col-lg-12"> | |
99 | <a onclick="window.history.back()" class="btn btn-default" ng-if="report.window.history.length > 2"><span class="fa fa-arrow-circle-o-left"></span> |
|
99 | <a onclick="window.history.back()" class="btn btn-default" ng-if="report.window.history.length > 2"><span class="fa fa-arrow-circle-o-left"></span> | |
100 | Go back</a> |
|
100 | Go back</a> | |
@@ -154,7 +154,7 b'' | |||||
154 | <td class="table-label">Public URL</td> |
|
154 | <td class="table-label">Public URL</td> | |
155 | <td class="data"> |
|
155 | <td class="data"> | |
156 | <form> |
|
156 | <form> | |
157 | <textarea class="TextAreaField form-control" id="public-url" onclick="this.select()">{{$state.href($state.current.name, $state.params, {absolute: true})}}</textarea> |
|
157 | <textarea class="TextAreaField form-control" id="public-url" onclick="this.select()">{{report.$state.href(report.$state.current.name, report.$state.params, {absolute: true})}}</textarea> | |
158 | </form> |
|
158 | </form> | |
159 | </td> |
|
159 | </td> | |
160 | </tr> |
|
160 | </tr> |
1 | NO CONTENT: file was removed |
|
NO CONTENT: file was removed |
General Comments 0
You need to be logged in to leave comments.
Login now