| /* global jQuery, URL, DemoStatusBasic, DemoStatusOpenStack, DemoStatusTree, BuiltinConfig */ |
| // Client script for Zuul status page |
| // |
| // @licstart The following is the entire license notice for the |
| // JavaScript code in this page. |
| // |
| // Copyright 2013 OpenStack Foundation |
| // Copyright 2013 Timo Tijhof |
| // Copyright 2013 Wikimedia Foundation |
| // Copyright 2014 Rackspace Australia |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); you may |
| // not use this file except in compliance with the License. You may obtain |
| // a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| // License for the specific language governing permissions and limitations |
| // under the License. |
| // |
| // @licend The above is the entire license notice |
| // for the JavaScript code in this page. |
| |
| import 'bootstrap/dist/css/bootstrap.css' |
| import 'jquery-visibility/jquery-visibility' |
| import 'graphitejs/jquery.graphite.js' |
| import angular from 'angular' |
| |
| import './styles/zuul.css' |
| import './jquery.zuul' |
| import { getSourceUrl } from './util' |
| |
| /** |
| * @return The $.zuul instance |
| */ |
| function zuulStart ($) { |
| // Start the zuul app (expects default dom) |
| |
| let $container, $indicator |
| |
| let url = new URL(window.location) |
| let params = { |
| // graphite_url: 'http://graphite.openstack.org/render/' |
| } |
| |
| if (typeof BuiltinConfig !== 'undefined') { |
| params['source'] = BuiltinConfig.api_endpoint + '/' + 'status' |
| } else if (url.searchParams.has('source_url')) { |
| params['source'] = url.searchParams.get('source_url') + '/' + 'status' |
| } else if (url.searchParams.has('demo')) { |
| let demo = url.searchParams.get('demo') || 'basic' |
| if (demo === 'basic') { |
| params['source_data'] = DemoStatusBasic |
| } else if (demo === 'openstack') { |
| params['source_data'] = DemoStatusOpenStack |
| } else if (demo === 'tree') { |
| params['source_data'] = DemoStatusTree |
| } |
| } else { |
| params['source'] = getSourceUrl('status') |
| } |
| |
| let zuul = $.zuul(params) |
| |
| zuul.jq.on('update-start', function () { |
| $container.addClass('zuul-container-loading') |
| $indicator.addClass('zuul-spinner-on') |
| }) |
| |
| zuul.jq.on('update-end', function () { |
| $container.removeClass('zuul-container-loading') |
| setTimeout(function () { |
| $indicator.removeClass('zuul-spinner-on') |
| }, 500) |
| }) |
| |
| zuul.jq.one('update-end', function () { |
| // Do this asynchronous so that if the first update adds a |
| // message, it will not animate while we fade in the content. |
| // Instead it simply appears with the rest of the content. |
| setTimeout(function () { |
| // Fade in the content |
| $container.addClass('zuul-container-ready') |
| }) |
| }) |
| |
| $(function ($) { |
| // DOM ready |
| $container = $('#zuul-container') |
| $indicator = $('#zuul-spinner') |
| $('#zuul_controls').append(zuul.app.controlForm()) |
| |
| zuul.app.schedule() |
| |
| $(document).on({ |
| 'show.visibility': function () { |
| zuul.options.enabled = true |
| zuul.app.update() |
| }, |
| 'hide.visibility': function () { |
| zuul.options.enabled = false |
| } |
| }) |
| }) |
| |
| return zuul |
| } |
| |
| if (module.hot) { |
| // This doesn't fully work with our jquery plugin because $.zuul is already |
| // instantiated. Leaving it here to show where a hook can happen if we can |
| // figure out a way to live update it. When it's not there, an update to |
| // jquery.zuul.js triggers a page reload. |
| // module.hot.accept('./jquery.zuul', function() { |
| // console.log('Accepting the updated module!'); |
| // }) |
| } |
| |
| angular.module('zuulStatus', []).controller( |
| 'mainController', function ($scope, $http) { |
| zuulStart(jQuery) |
| } |
| ) |