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;