Free cookie consent management tool by TermsFeed Policy Generator

source: branches/PersistenceOverhaul/HeuristicLab.Services.WebApp.Statistics/3.3/WebApp/jobs/details/jobDetails.cshtml @ 18242

Last change on this file since 18242 was 12551, checked in by dglaser, 9 years ago

#2388:

HeuristicLab.Services.Hive.DataAccess-3.3:

  • updated database schema
  • updated sql scripts
  • updated HiveStatisticsGenerator

HeuristicLab.Services.WebApp-3.3:

  • merged from trunk

HeuristicLab.Services.WebApp.Status-3.3:

  • updated data api controller

HeuristicLab.Services.WebApp.Statistics-3.3:

  • added exception page
  • improved jobs, clients, users and groups page
File size: 10.2 KB
Line 
1@using HeuristicLab.Services.Access.DataTransfer
2@using HeuristicLab.Services.Hive
3<header class="view-header">
4    <ul class="nav nav-list nav-list-topbar pull-left">
5        <li class="active">
6            <a ng-href="#/statistics/jobs">Jobs</a>
7        </li>
8        @if (Request.IsAuthenticated && User.IsInRole(HiveRoles.Administrator)) {
9            <li>
10                <a ng-href="#/statistics/users">Users</a>
11            </li>
12        }
13        <li>
14            <a ng-href="#/statistics/clients">Clients</a>
15        </li>
16        <li>
17            <a ng-href="#/statistics/groups">Groups</a>
18        </li>
19        @if (Request.IsAuthenticated && User.IsInRole(HiveRoles.Administrator)) {
20            <li>
21                <a ng-href="#/statistics/exceptions">Exceptions</a>
22            </li>
23        }
24    </ul>
25</header>
26
27<div class="default-view-container">
28    <div class="row">
29        <div class="col-lg-9 col-md-9">
30            <div class="panel panel-default">
31                <div class="panel-heading">
32                    <h3 class="panel-title">Job Details</h3>
33                </div>
34                <div class="panel-body">
35                    <div class="row">
36                        <div class="col-md-12">
37                            <table class="table table-no-border table-condensed table-auto-width table-content">
38                                <tr>
39                                    <td class="text-left">Name:</td>
40                                    <td>{{job.Name}}</td>
41                                </tr>
42                                <tr>
43                                    <td class="text-left">Created at:</td>
44                                    <td>{{job.DateCreated | toDate}}</td>
45                                </tr>
46                                <tr>
47                                    <td class="text-left">Completed at:</td>
48                                    <td ng-show="job.DateCompleted">{{job.DateCompleted | toDate}}</td>
49                                    <td ng-hide="job.DateCompleted">Not completed yet</td>
50                                </tr>
51                                @if (Request.IsAuthenticated && User.IsInRole(HiveRoles.Administrator)) {
52                                    <tr>
53                                        <td class="text-left">User:</td>
54                                        <td>
55                                            <a ng-href="#/statistics/users/{{job.UserId}}" ng-show="job.UserName">{{job.UserName}}</a>
56                                            <span ng-hide="job.UserName">None</span>
57                                        </td>
58                                    </tr>
59                                }
60                            </table>
61                        </div>
62                    </div>
63                    <div class="row" style="height: 20px"></div>
64                    <div class="row">
65                        <div class="col-md-5">
66                            <table class="table table-no-border table-condensed table-auto-width table-content">
67                                <tr>
68                                    <td class="text-left">Total Time:</td>
69                                    <td class="text-right">{{job.TotalTime | toTimespan}}</td>
70                                </tr>
71                                <tr>
72                                    <td class="text-left">Total Calculating Time:</td>
73                                    <td class="text-right">{{job.TotalCalculatingTime | toTimespan}}</td>
74                                </tr>
75                                <tr>
76                                    <td class="text-left">Total Waiting Time:</td>
77                                    <td class="text-right">{{job.TotalWaitingTime | toTimespan}}</td>
78                                </tr>
79                                <tr>
80                                    <td class="text-left">Calc. / Waiting Ratio:</td>
81                                    <td class="text-right">{{job.CalculatingWaitingRatio | number: 3}}</td>
82                                </tr>
83                            </table>
84                        </div>
85                        <div class="col-md-5">
86                            <table class="table table-no-border table-condensed table-auto-width table-content">
87                                <tr>
88                                    <td class="text-left">Min Calculating Time:</td>
89                                    <td class="text-right">{{job.MinCalculatingTime | toTimespan}}</td>
90                                </tr>
91                                <tr>
92                                    <td class="text-left">Max Calculating Time:</td>
93                                    <td class="text-right">{{job.MaxCalculatingTime | toTimespan}}</td>
94                                </tr>
95                                <tr>
96                                    <td class="text-left">Avg. Calculating Time:</td>
97                                    <td class="text-right">{{job.AvgCalculatingTime | toTimespan}}</td>
98                                </tr>
99                                <tr>
100                                    <td class="text-left">Avg. Transferring Time:</td>
101                                    <td class="text-right">{{job.AvgTransferringTime | toTimespan}}</td>
102                                </tr>
103                            </table>
104                        </div>
105
106                        <div class="col-md-2"></div>
107                        </div>
108                    </div>
109
110            </div>
111        </div>
112
113        <div class="col-lg-3 col-md-3">
114            <div class="panel panel-default">
115                <div class="panel-heading">
116                    <h3 class="panel-title">Tasks Overview</h3>
117                </div>
118                <div class="panel-body">
119                    <table class="table table-no-border table-condensed table-auto-width table-content">
120                        <tr>
121                            <td class="text-left">Total:</td>
122                            <td class="text-right">{{totalJobTasks}}</td>
123                        </tr>
124                        <tr ng-repeat="state in states">
125                            <td class="text-left">{{state.State}}:</td>
126                            <td class="text-right">{{state.Count}}</td>
127                        </tr>
128                    </table>
129                </div>
130            </div>
131        </div>
132    </div>
133</div>
134
135<div id="job-filter-header" class="text-center">
136    <form class="form-inline">
137        <div class="form-group">
138            <div class="btn-group" data-toggle="buttons">
139                <label class="btn btn-default" ng-class="{active: state.Selected}" ng-repeat="state in states"
140                       ng-click="filterState(state)">
141                    <input type="checkbox" autocomplete="off" checked> {{state.State}}
142                </label>
143            </div>
144        </div>
145    </form>
146</div>
147
148<div class="default-view-container">
149    <div id="taskListContainer" class="row" ng-show="taskPage.Tasks.length">
150        <div class="col-lg-4 col-md-4" ng-repeat="task in taskPage.Tasks">
151            <div class="panel panel-default">
152                <div class="panel-heading cursor-pointer" ng-click="openDialog(($index + 1)+((curTaskPage-1)*(taskPageSize)), task)">
153                    <h3 class="panel-title" style="display: inline">Task {{($index + 1)+((curTaskPage-1)*(taskPageSize))}}</h3>
154                    <span ng-if="task.State == 'Finished'" class="label label-success" style="float: right;">{{task.State}}</span>
155                    <span ng-if="task.State == 'Aborted' || task.State == 'Failed'" class="label label-danger" style="float: right;">{{task.State}}</span>
156                    <span ng-if="task.State == 'Waiting'" class="label label-warning" style="float: right;">{{task.State}}</span>
157                    <span ng-if="task.State != 'Waiting' && task.State != 'Failed' && task.State != 'Aborted' && task.State != 'Finished'" class="label label-default" style="float: right;">{{task.State}}</span>
158                </div>
159                <div class="panel-body">
160                    <table class="table table-condensed table-no-border table-auto-width">
161                        <tr>
162                            <td colspan="2"><span data-fittext="0.99">{{task.Id}}</span></td>
163                        </tr>
164                        <tr>
165                            <td>Start Time:</td>
166                            <td ng-show="task.StartTime" class="text-right">{{task.StartTime | toDate}}</td>
167                            <td ng-hide="task.StartTime" class="text-right">Not started</td>
168                        </tr>
169                        <tr>
170                            <td>End Time:</td>
171                            <td ng-show="task.EndTime" class="text-right">{{task.EndTime | toDate}}</td>
172                            <td ng-hide="task.EndTime" class="text-right">Not finished</td>
173                        </tr>
174                        <tr>
175                            <td>Calculating Time:</td>
176                            <td class="text-right">{{task.CalculatingTime | toTimespan}}</td>
177                        </tr>
178                        <tr>
179                            <td>Slave:</td>
180                            <td class="text-right">
181                                <a ng-href="#/statistics/clients/{{task.LastClientId}}" ng-show="task.LastClientName">{{task.LastClientName}}</a>
182                                <span ng-hide="task.LastClientName">None</span>
183                            </td>
184                        </tr>
185                    </table>
186                </div>
187
188            </div>
189        </div>
190    </div>
191    <div ng-hide="taskPage.Tasks.length">
192        <p class="text-center">Please select at least one state!</p>
193    </div>
194    <div class="row text-center" ng-show="taskPage.TotalTasks > taskPage.Tasks.length">
195        <pagination max-size="10" total-items="taskPage.TotalTasks" ng-model="curTaskPage" ng-change="changeTaskPage()" items-per-page="taskPageSize"
196                    boundary-links="true" rotate="false" num-pages="numPages"></pagination>
197    </div>
198</div>
Note: See TracBrowser for help on using the repository browser.