| <!-- |
| The <admin-tasks-sk> custom element declaration. Displays a form that allows the user to queue |
| either a recreate page sets task or recreate webpage archives task. |
| |
| Attributes: |
| selectedTab: One of "pagesets" or "archives" to control which tab to display initially, default |
| "pagesets". |
| pageSets: List of all defined page sets, as accepted by page-set-selector-sk property |
| pageSets. Must be set. |
| chromiumBuilds: List of all supported Chromium builds, as accepted by chromium-build-selector-sk |
| attribute chromiumBuilds. Must be set. |
| |
| Events: |
| None. |
| |
| Methods: |
| None. |
| --> |
| |
| <dom-module id="admin-tasks-sk"> |
| <style> |
| paper-tabs { |
| background-color: #D6ECF2; |
| } |
| |
| .triggering-spinner { |
| margin: auto; |
| vertical-align: middle; |
| } |
| |
| .iron-selected { |
| background-color: #D6ECF2; |
| } |
| |
| .hidden { |
| display: none; |
| } |
| |
| table.options { |
| margin: auto |
| } |
| |
| table.options td { |
| padding: 1em 2em; |
| } |
| |
| td.center { |
| text-align:center; |
| padding-top:2em; |
| } |
| |
| .panel { |
| @apply(--shadow-elevation-2dp); |
| margin-right: 10px |
| } |
| </style> |
| <template> |
| |
| <confirm-dialog-sk id="confirm_dialog"></confirm-dialog-sk> |
| |
| <div class="panel"> |
| <paper-tabs id="tabs" attr-for-selected="id" selected="{{selectedTab}}" noink> |
| <paper-tab id="pagesets">Recreate Pagesets</paper-tab> |
| <paper-tab id="archives">Recreate Webpage Archives</paper-tab> |
| </paper-tabs> |
| |
| <table class="options"> |
| <tr> |
| <td>PageSets Type</td> |
| <td> |
| <page-set-selector-sk id="page_sets" page-sets="{{pageSets}}"></page-set-selector-sk> |
| </td> |
| </tr> |
| |
| <tr id="chromium_build_row" class="hidden"> |
| <td>Chromium Build</td> |
| <td> |
| <chromium-build-selector-sk id="chromium_build" |
| chromium-builds="{{chromiumBuilds}}"> |
| </chromium-build-selector-sk> |
| </td> |
| </tr> |
| |
| <tr> |
| <td>Repeat this task</td> |
| <td> |
| <repeat-after-days-sk id="repeat_after_days"></repeat-after-days-sk> |
| </td> |
| </tr> |
| |
| <tr> |
| <td colspan="2" class="center"> |
| <div class="triggering-spinner"> |
| <paper-spinner active="[[ triggeringTask ]]" alt="Trigger task"></paper-spinner> |
| </div> |
| <paper-button raised id="submit_task" disabled="[[ triggeringTask ]]">Queue Task</paper-button> |
| </td> |
| </tr> |
| <tr> |
| <td colspan="2" class="center"> |
| <paper-button raised id="view_history">View runs history</paper-button> |
| </td> |
| </tr> |
| </table> |
| </div> |
| </template> |
| </dom-module> |
| |
| <script> |
| Polymer({ |
| is: "admin-tasks-sk", |
| properties: { |
| selectedTab: { |
| type: String, |
| value: "pagesets", |
| observer: "tabChanged", |
| }, |
| pageSets: { |
| type: Array, |
| observer: "pageSetsChanged", |
| }, |
| chromiumBuilds: { |
| type: Array, |
| observer: "chromiumBuildsChanged", |
| }, |
| triggeringTask: { |
| type: Boolean, |
| value: false, |
| }, |
| }, |
| |
| ready: function() { |
| this.$.tabs.selected = "pagesets"; |
| var that = this; |
| this.$.submit_task.addEventListener('click', function(e) { |
| that.validateTask(); |
| }); |
| this.$.view_history.addEventListener('click', function(e) { |
| that.gotoRunsHistory(); |
| }); |
| }, |
| |
| tabChanged: function() { |
| this.$.chromium_build_row.classList |
| .toggle("hidden", this.selectedTab != "archives"); |
| }, |
| |
| pageSetsChanged: function(newValue, oldValue) { |
| if (!oldValue || oldValue.length == 0) { |
| this.$.page_sets.selectFirst(); |
| } |
| }, |
| |
| chromiumBuildsChanged: function(newValue, oldValue) { |
| if (!oldValue || oldValue.length == 0) { |
| this.$.chromium_build.selectFirst(); |
| } |
| }, |
| |
| validateTask: function() { |
| if (this.selectedTab == "archives") { |
| if (!this.$.chromium_build.selected) { |
| sk.errorMessage("Please select a Chromium build"); |
| this.$.chromium_build.focus(); |
| return; |
| } |
| } |
| if (ctfe.moreThanThreeActiveTasks($$$("drawer-sk").sizeOfUserQueue)) { |
| return; |
| } |
| this.$.confirm_dialog.open("Proceed with queueing task?") |
| .then(this.queueTask.bind(this)) |
| .catch(function() { |
| sk.errorMessage("Did not queue"); |
| }) |
| }, |
| |
| queueTask: function() { |
| if (this.selectedTab == "pagesets") { |
| this.queuePagesetsTask(); |
| } else if (this.selectedTab == "archives") { |
| this.queueArchivesTask(); |
| } else { |
| sk.errorMessage(new Error("Unknown selectedTab: " + this.selectedTab)); |
| } |
| }, |
| |
| queuePagesetsTask: function() { |
| this.triggeringTask = true; |
| var params = {}; |
| params["page_sets"] = this.$.page_sets.selected; |
| params["repeat_after_days"] = this.$.repeat_after_days.selected; |
| |
| sk.post("/_/add_recreate_page_sets_task", JSON.stringify(params)) |
| .then(function(resp) { |
| this.gotoRunsHistory(); |
| }.bind(this)).catch(function(e) { |
| this.triggeringTask = false; |
| sk.errorMessage(e); |
| }.bind(this)); |
| }, |
| |
| queueArchivesTask: function() { |
| this.triggeringTask = true; |
| var params = {}; |
| params["page_sets"] = this.$.page_sets.selected; |
| params["chromium_build"] = this.$.chromium_build.selected; |
| params["repeat_after_days"] = this.$.repeat_after_days.selected; |
| |
| sk.post("/_/add_recreate_webpage_archives_task", JSON.stringify(params)) |
| .then(function(resp) { |
| this.gotoRunsHistory(); |
| }.bind(this)).catch(function(e) { |
| this.triggeringTask = false; |
| sk.errorMessage(e); |
| }.bind(this)); |
| }, |
| |
| gotoRunsHistory: function() { |
| if (this.selectedTab == "pagesets") { |
| window.location.href = "/recreate_page_sets_runs/"; |
| } else if (this.selectedTab == "archives") { |
| window.location.href = "/recreate_webpage_archives_runs/"; |
| } else { |
| sk.errorMessage(new Error("Unknown selectedTab: " + this.selectedTab)); |
| } |
| }, |
| }); |
| </script> |