// Copyright (c) IPython Development Team. // Distributed under the terms of the Modified BSD License. define([ 'base/js/namespace', 'jquery', 'base/js/utils', ], function(IPython, $, utils) { "use strict"; var ClusterList = function (selector, options) { this.selector = selector; if (this.selector !== undefined) { this.element = $(selector); this.style(); this.bind_events(); } options = options || {}; this.options = options; this.base_url = options.base_url || utils.get_body_data("baseUrl"); this.notebook_path = options.notebook_path || utils.get_body_data("notebookPath"); }; ClusterList.prototype.style = function () { $('#cluster_list').addClass('list_container'); $('#cluster_toolbar').addClass('list_toolbar'); $('#cluster_list_info').addClass('toolbar_info'); $('#cluster_buttons').addClass('toolbar_buttons'); }; ClusterList.prototype.bind_events = function () { var that = this; $('#refresh_cluster_list').click(function () { that.load_list(); }); }; ClusterList.prototype.load_list = function () { var settings = { processData : false, cache : false, type : "GET", dataType : "json", success : $.proxy(this.load_list_success, this), error : utils.log_ajax_error, }; var url = utils.url_join_encode(this.base_url, 'clusters'); $.ajax(url, settings); }; ClusterList.prototype.clear_list = function () { this.element.children('.list_item').remove(); }; ClusterList.prototype.load_list_success = function (data, status, xhr) { this.clear_list(); var len = data.length; for (var i=0; i'); var item = new ClusterItem(element, this.options); item.update_state(data[i]); element.data('item', item); this.element.append(element); } }; var ClusterItem = function (element, options) { this.element = $(element); this.base_url = options.base_url || utils.get_body_data("baseUrl"); this.notebook_path = options.notebook_path || utils.get_body_data("notebookPath"); this.data = null; this.style(); }; ClusterItem.prototype.style = function () { this.element.addClass('list_item').addClass("row"); }; ClusterItem.prototype.update_state = function (data) { this.data = data; if (data.status === 'running') { this.state_running(); } else if (data.status === 'stopped') { this.state_stopped(); } }; ClusterItem.prototype.state_stopped = function () { var that = this; var profile_col = $('
').addClass('profile_col col-xs-4').text(this.data.profile); var status_col = $('
').addClass('status_col col-xs-3').text('stopped'); var engines_col = $('
').addClass('engine_col col-xs-3'); var input = $('').attr('type','number') .attr('min',1) .attr('size',3) .addClass('engine_num_input form-control'); engines_col.append(input); var start_button = $('