github.com/nsqio/nsq@v1.3.0/nsqadmin/static/js/app_state.js (about) 1 var Backbone = require('backbone'); 2 var _ = require('underscore'); 3 4 var AppState = Backbone.Model.extend({ 5 defaults: function() { 6 return { 7 'VERSION': VERSION, 8 'GRAPHITE_URL': GRAPHITE_URL, 9 'GRAPH_ENABLED': GRAPH_ENABLED, 10 'STATSD_INTERVAL': STATSD_INTERVAL, 11 'STATSD_COUNTER_FORMAT': STATSD_COUNTER_FORMAT, 12 'STATSD_GAUGE_FORMAT': STATSD_GAUGE_FORMAT, 13 'STATSD_PREFIX': STATSD_PREFIX, 14 'NSQLOOKUPD': NSQLOOKUPD, 15 'graph_interval': '2h', 16 'IS_ADMIN': IS_ADMIN, 17 'BASE_PATH': BASE_PATH 18 }; 19 }, 20 21 initialize: function() { 22 this.on('change:graph_interval', function(model, v) { 23 localStorage.setItem('graph_interval', v); 24 }); 25 26 var qp = _.object(_.compact(_.map(window.location.search.slice(1).split('&'), 27 function(item) { return item ? item.split('=') : false; }))); 28 29 var def = this.get('GRAPH_ENABLED') ? '2h' : 'off'; 30 var interval = qp['t'] || localStorage.getItem('graph_interval') || def; 31 this.set('graph_interval', interval); 32 }, 33 34 basePath: function(p) { 35 // if base path is / then don't prefix 36 var bp = this.get('BASE_PATH') === '/' ? '' : this.get('BASE_PATH'); 37 // remove trailing /, but guarantee at least / 38 return (bp + p).replace(/\/$/, '') || '/'; 39 }, 40 41 apiPath: function(p) { 42 return this.basePath('/api' + p); 43 } 44 }); 45 46 var appState = new AppState(); 47 48 window.AppState = appState; 49 50 module.exports = appState;