| <!-- |
| The <ct-runs-summary-sk> custom element declaration. Displays a summary of |
| recent CT runs. |
| |
| Attributes: |
| tasks: The successful tasks run by non-admins in the last week/month/year/all-time. |
| findTasksBeforeDays: Find above tasks that completed before these many days. |
| uniqueUsers: The number of unique users who triggered the above tasks. |
| |
| Events: |
| None. |
| |
| Methods: |
| reload: Queries for updated information on tasks. |
| weeklySummary: Sets findTasksBeforeDays to 7. |
| monthlySummary: Sets findTasksBeforeDays to 30. |
| yearlySummary: Sets findTasksBeforeDays to 365. |
| allTimeSummary: Sets findTasksBeforeDays to 0. |
| --> |
| |
| <dom-module id="ct-runs-summary-sk"> |
| <style> |
| tr.headers { |
| background-color: #CCCCFF; |
| text-align: center; |
| } |
| td.nowrap { |
| white-space: nowrap; |
| } |
| </style> |
| <template> |
| |
| <h4>CT Runs Summary</h3> |
| <paper-button raised on-click="weeklySummary">Last Week</paper-button> |
| <paper-button raised on-click="monthlySummary">Last Month</paper-button> |
| <paper-button raised on-click="yearlySummary">Last Year</paper-button> |
| <paper-button raised on-click="allTimeSummary">All Time</paper-button> |
| <br/><br/> |
| <span>[[tasks.length]] runs by [[uniqueUsers]] users [[ getDaysText(findTasksBeforeDays) ]]</span> |
| <br/> |
| |
| <template is="dom-if" if="{{tasks}}"> |
| <table class="runssummary" id="runssummary" cellpadding="5" border="1"> |
| <tr class="headers"> |
| <td>Type</td> |
| <td>User</td> |
| <td>Description</td> |
| <td>Completed</td> |
| </tr> |
| |
| <template is="dom-repeat" items="{{tasks}}" as="task" index-as="index"> |
| <tr style="border: 1px solid black;"> |
| <!-- Type col --> |
| <td>{{task.Type}}</td> |
| |
| <!-- User col --> |
| <td>{{task.Username}}</td> |
| |
| <!-- Description col --> |
| <td>{{task.Description}}</td> |
| |
| <!-- Timestamps col --> |
| <td class="nowrap">{{task.TsCompleted}}</td> |
| </tr> |
| </template> |
| </table> |
| </template> |
| </template> |
| </dom-module> |
| |
| <script> |
| Polymer({ |
| is: "ct-runs-summary-sk", |
| properties: { |
| tasks: { |
| type: Array, |
| value: function() { return []; }, |
| }, |
| findTasksBeforeDays: { |
| type: Number, |
| value: 7, |
| }, |
| uniqueUsers: { |
| type: Number, |
| value: 0, |
| }, |
| }, |
| |
| ready: function() { |
| this.reload(); |
| }, |
| |
| reload: function() { |
| if (this.findTasksBeforeDays > 0) { |
| var d = new Date(); |
| d.setDate(d.getDate() - this.findTasksBeforeDays); |
| var completedAfter = this.getCtDbTimestamp(d); |
| } else { |
| var completedAfter = this.getCtDbTimestamp(new Date(0)); |
| } |
| |
| var queryParams = { |
| 'completed_after': completedAfter, |
| 'exclude_ctadmin_tasks': true, |
| } |
| var queryStr = "?" + sk.query.fromObject(queryParams); |
| sk.post('/_/completed_tasks' + queryStr).then(JSON.parse).then(function(json) { |
| this.tasks = json.CompletedTasks; |
| this.uniqueUsers = json.UniqueUsers; |
| }.bind(this)).catch(sk.errorMessage); |
| }, |
| |
| weeklySummary: function() { |
| this.findTasksBeforeDays = 7; |
| this.reload(); |
| }, |
| |
| monthlySummary: function() { |
| this.findTasksBeforeDays = 30; |
| this.reload(); |
| }, |
| |
| yearlySummary: function() { |
| this.findTasksBeforeDays = 365; |
| this.reload(); |
| }, |
| |
| allTimeSummary: function() { |
| this.findTasksBeforeDays = 0; |
| this.reload(); |
| }, |
| |
| getDaysText: function(days) { |
| if (days > 0) { |
| return "last " + days + " days"; |
| } else { |
| return "all time"; |
| } |
| }, |
| |
| getCtDbTimestamp: ctfe.getCtDbTimestamp, |
| }); |
| </script> |