github.com/nsqio/nsq@v1.3.0/nsqadmin/static/js/views/lookup.js (about) 1 var _ = require('underscore'); 2 var $ = require('jquery'); 3 4 var AppState = require('../app_state'); 5 var Pubsub = require('../lib/pubsub'); 6 var BaseView = require('./base'); 7 8 var Topic = require('../models/topic'); 9 var Channel = require('../models/channel'); 10 11 var LookupView = BaseView.extend({ 12 className: 'lookup container-fluid', 13 14 template: require('./spinner.hbs'), 15 16 events: { 17 'click .hierarchy button': 'onCreateTopicChannel', 18 'click .delete-topic-link': 'onDeleteTopic', 19 'click .delete-channel-link': 'onDeleteChannel' 20 }, 21 22 initialize: function() { 23 BaseView.prototype.initialize.apply(this, arguments); 24 var isAdmin = arguments[0]['isAdmin']; 25 $.ajax(AppState.apiPath('/topics?inactive=true')) 26 .done(function(data) { 27 this.template = require('./lookup.hbs'); 28 this.render({ 29 'topics': _.map(data['topics'], function(v, k) { 30 return {'name': k, 'channels': v}; 31 }), 32 'message': data['message'], 33 'isAdmin': isAdmin 34 }); 35 }.bind(this)) 36 .fail(this.handleViewError.bind(this)) 37 .always(Pubsub.trigger.bind(Pubsub, 'view:ready')); 38 }, 39 40 onCreateTopicChannel: function(e) { 41 e.preventDefault(); 42 e.stopPropagation(); 43 var topic = $(e.target.form.elements['topic']).val(); 44 var channel = $(e.target.form.elements['channel']).val(); 45 if (topic === '' && channel === '') { 46 return; 47 } 48 $.post(AppState.apiPath('/topics'), JSON.stringify({ 49 'topic': topic, 50 'channel': channel 51 })) 52 .done(function() { window.location.reload(true); }) 53 .fail(this.handleAJAXError.bind(this)); 54 }, 55 56 onDeleteTopic: function(e) { 57 e.preventDefault(); 58 e.stopPropagation(); 59 var topic = new Topic({ 60 'name': $(e.target).data('topic') 61 }); 62 topic.destroy({'dataType': 'text'}) 63 .done(function() { window.location.reload(true); }) 64 .fail(this.handleAJAXError.bind(this)); 65 }, 66 67 onDeleteChannel: function(e) { 68 e.preventDefault(); 69 e.stopPropagation(); 70 var channel = new Channel({ 71 'topic': $(e.target).data('topic'), 72 'name': $(e.target).data('channel') 73 }); 74 channel.destroy({'dataType': 'text'}) 75 .done(function() { window.location.reload(true); }) 76 .fail(this.handleAJAXError.bind(this)); 77 } 78 }); 79 80 module.exports = LookupView;