server/resources/queuePage.jsp (115 lines of code) (raw):

<%--suppress CheckValidXmlInScriptTagBody --%> <%@ include file="/include.jsp" %> <%@ page import="jetbrains.buildServer.queueManager.PluginConstants" %> <%@ page import="jetbrains.buildServer.queueManager.settings.Actor" %> <%@ page import="jetbrains.buildServer.web.util.WebUtil" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <c:set var="PARAM_NEW_QUEUE_STATE" value="<%=PluginConstants.WEB.PARAM_NEW_QUEUE_STATE%>"/> <c:set var="PARAM_STATE_CHANGE_REASON" value="<%=PluginConstants.WEB.PARAM_STATE_CHANGE_REASON%>"/> <c:set var="QUEUE_ACTIONS_URL" value="<%=PluginConstants.WEB.QUEUE_ACTIONS_URL%>"/> <c:set var="ACTOR_USER" value="<%=Actor.USER%>"/> <jsp:useBean id="queueState" scope="request" type="jetbrains.buildServer.queueManager.settings.QueueState"/> <c:set var="queueIsActive" value="${queueState.queueEnabled}"/> <c:choose> <c:when test="${queueIsActive}"> <c:set var="switchQueueStateActionText" value="Pause Build Queue"/> </c:when> <c:otherwise> <c:set var="switchQueueStateActionText" value="Resume Build Queue"/> </c:otherwise> </c:choose> <c:url var="actionUrl" value="${QUEUE_ACTIONS_URL}"/> <c:set var="isSakuraPlugin" value="${not empty param.pluginUIContext}"/> <bs:refreshable containerId="pause-build-queue" pageUrl="${pageUrl}"> <script type="text/javascript"> BS.ChangeQueueStateDialog = OO.extend(BS.AbstractWebForm, OO.extend(BS.AbstractModalDialog, { formElement: function() { return $('changeQueueStateForm'); }, getContainer: function() { return $('changeQueueStateFormDialog'); }, showDialog: function() { this.formElement().${PARAM_STATE_CHANGE_REASON}.value = this.formElement().${PARAM_STATE_CHANGE_REASON}.defaultValue; this.showCentered(); this.formElement().${PARAM_STATE_CHANGE_REASON}.focus(); this.formElement().${PARAM_STATE_CHANGE_REASON}.select(); var dialogTitle; var dialogSubmitButtonTitle; <c:choose> <c:when test="${queueIsActive}"> dialogTitle = "Pause build queue"; dialogSubmitButtonTitle = "Pause"; </c:when> <c:otherwise> dialogTitle = "Resume build queue"; dialogSubmitButtonTitle = "Resume"; </c:otherwise> </c:choose> $j("#ChangeQueueStateSubmitButton").prop('value', dialogSubmitButtonTitle); $j("#changeQueueStateFormTitle").html(dialogTitle); this.bindCtrlEnterHandler(this.submit.bind(this)); return false; }, submit: function() { var val = this.formElement().${PARAM_STATE_CHANGE_REASON}.value; var defaultVal = this.formElement().${PARAM_STATE_CHANGE_REASON}.defaultValue; if (val === defaultVal) { val = ''; } this.formElement().${PARAM_STATE_CHANGE_REASON}.value = val; BS.FormSaver.save(BS.ChangeQueueStateDialog, BS.ChangeQueueStateDialog.formElement().action, OO.extend(BS.SimpleListener, { onCompleteSave: function(form, responseXML, err) { if (${isSakuraPlugin}) { // for some reason, wait reasons don't update right away, therefore the delay setTimeout(() => ReactUIPromise.then(ReactUI => ReactUI.updateQueue()), 500); var container = document.getElementById('pause-build-queue'); if (container != null) { container.refresh(); } var healthItems = document.getElementById('globalHealthItems'); if (healthItems != null) { healthItems.refresh(); } BS.ChangeQueueStateDialog.close(); } else { BS.reload(true); } } // todo: onFailure or onException })); return false; } })); </script> <c:if test="${queueState.actor eq ACTOR_USER || queueState.queueEnabled}"> <c:choose> <c:when test="${isSakuraPlugin}"> <ring:button onclick="BS.ChangeQueueStateDialog.showDialog();">${switchQueueStateActionText}</ring:button> </c:when> <c:otherwise> <script> $j('.quickLinks').append('<a href="#" class="quickLinksItem" onclick="BS.ChangeQueueStateDialog.showDialog();">${switchQueueStateActionText}</a>'); </script> </c:otherwise> </c:choose> </c:if> <bs:modalDialog formId="changeQueueStateForm" title="Disable queue" action="${actionUrl}" closeCommand="BS.ChangeQueueStateDialog.close();" saveCommand="BS.ChangeQueueStateDialog.submit()"> <label for="${PARAM_STATE_CHANGE_REASON}">Reason:</label> <textarea id="${PARAM_STATE_CHANGE_REASON}" name="${PARAM_STATE_CHANGE_REASON}" rows="3" cols="46" class="commentTextArea" onkeyup="if (this.value.length > 140) this.value = this.value.substring(0, 140)" onfocus="if (this.value == this.defaultValue) this.value = ''" onblur="if (this.value == '') this.value='&lt;your comment here&gt;'">&lt;your comment here&gt;</textarea> <input type="hidden" name="${PARAM_NEW_QUEUE_STATE}" value="${not queueIsActive}"> <div class="popupSaveButtonsBlock"> <forms:submit label="Save" id="ChangeQueueStateSubmitButton"/> <forms:cancel onclick="BS.ChangeQueueStateDialog.close()"/> <forms:saving/> </div> </bs:modalDialog> </bs:refreshable>