| <j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:l="/lib/layout"> |
| |
| <l:layout norefresh="true"> |
| |
| <j:set var="resourcesURL" value="${resURL}/plugin/vanadium-build-monitor-plugin" /> |
| <j:set var="jobsURL" value="${rootURL}/job" /> |
| <j:set var="angularVersion" value="1.1.5" /> |
| |
| <l:header> |
| <link rel="stylesheet" href="${resourcesURL}/styles/normalize.css"/> |
| <link rel="stylesheet" href="${resourcesURL}/styles/bootstrap-combined.2.3.2.min.css"/> |
| <link rel="stylesheet" href="${resourcesURL}/styles/angular-slider.css"/> |
| |
| <link rel="stylesheet" href="${resourcesURL}/themes/industrial.css"/> |
| <link rel="stylesheet" href="${rootURL}/vanadium-build-monitor-plugin/style.css"/> |
| |
| <script src="${resURL}/scripts/yui/cookie/cookie-min.js"></script> |
| |
| <script src="${resourcesURL}/vendor/modernizr.custom.27682.js"></script> |
| <script src="${resourcesURL}/vendor/angular-${angularVersion}.min.js"></script> |
| <script src="${resourcesURL}/vendor/ui-bootstrap-custom-tpls-0.4.0.js"></script> |
| <script src="${resourcesURL}/vendor/angular-slider-0.1.6.js"></script> |
| <script src="${resourcesURL}/vendor/angular-slugify-1.0.0.js"></script> |
| </l:header> |
| |
| <l:main-panel> |
| <div class="build-monitor dashboard" |
| data-ng-app="buildMonitor" |
| data-ng-controller="JobViews"> |
| <header> |
| <a class="oncall" href="${rootURL}/" title="Jenkins">{{oncall}}</a> |
| <h1><a href="configure" title="Configure the '${it.displayName}' view">{{title}}</a></h1> |
| </header> |
| |
| <st:include page="main-settings.jelly"/> |
| |
| <j:choose> |
| <j:when test="${it.isEmpty()}"> |
| <st:include page="main-empty.jelly"/> |
| </j:when> |
| <j:otherwise> |
| <st:include page="main-jobViews.jelly"/> |
| </j:otherwise> |
| </j:choose> |
| </div> |
| |
| <script> |
| /* |
| * todo: (13.08.2013) Replace the below workaround with a custom Jelly tag (ExposeBindTag) |
| * extending either org.kohsuke.stapler.jelly.BindTag or AbstractStaplerTag, |
| * that would supersede currently defective BindTag implementation: |
| * - https://groups.google.com/forum/#!topic/jenkinsci-dev/S9bhX4ts0g4 |
| * - https://issues.jenkins-ci.org/browse/JENKINS-18641 |
| * |
| * Defect in BindTag manifests itself by causing a JavaScript error and preventing scripts after |
| * the <st:bind> invocation from executing, which results in an "empty Build Monitor". |
| * The issue occurs on Jenkins 1.521-1.526, only if the jQuery plugin is used. |
| * |
| * Motivation behind a custom Jelly tag: |
| * Original implementation of the BindTag doesn't provide an easy way of handling AJAX errors, |
| * which may happen if a network connection is lost or when Jenkins is restarted (which then makes |
| * Stapler's binding hash obsolete and Jenkins return 404 for any subsequent requests). |
| * |
| * Custom Jelly tag should generate a JSON object exposing the binding, leaving the implementation |
| * of the proxy to the Developer. It makes more sense for a developer to require a binding adapter |
| * implementation specific to their JavaScript framework of choice, rather than for Stapler to try |
| * to predict what JavaScript libraries will ever be used with it in the future... |
| */ |
| window.originalMakeStaplerProxy = window.makeStaplerProxy; |
| window.makeStaplerProxy = function(url, crumb, methods) { |
| return { url: url, crumb: crumb, methods: methods } |
| }; |
| window.bindings={}; |
| </script> |
| <st:bind var="window.bindings['buildMonitor']" value="${it}" /> |
| <script> |
| window.makeStaplerProxy = window.originalMakeStaplerProxy; |
| delete window.originalMakeStaplerProxy; |
| </script> |
| |
| <script src="${resourcesURL}/scripts/app.js"></script> |
| <script src="${resourcesURL}/scripts/cron.js"></script> |
| <script src="${resourcesURL}/scripts/services.js"></script> |
| <script src="${resourcesURL}/scripts/jenkins.js"></script> |
| <script src="${resourcesURL}/scripts/controllers.js"></script> |
| <script src="${resourcesURL}/scripts/templates.js"></script> |
| <script src="${resourcesURL}/scripts/settings.js"></script> |
| <script> |
| 'use strict'; |
| |
| angular. |
| |
| module('buildMonitor'). |
| |
| config(function(proxyProvider, cookieJarProvider, hashCodeProvider) { |
| var hashCodeOf = hashCodeProvider.hashCodeOf; |
| |
| proxyProvider.configureProxiesUsing(window.bindings); |
| |
| cookieJarProvider.describe({ |
| label: 'buildMonitor.' + hashCodeOf('${it.displayName}'), |
| shelfLife: 365 |
| }); |
| }); |
| </script> |
| </l:main-panel> |
| </l:layout> |
| </j:jelly> |