You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
3.9 KiB
110 lines
3.9 KiB
/* TODO: jink to replace theme_utils with that from core */
|
|
require.config({
|
|
paths: {
|
|
app: '../app',
|
|
theme_utils: '../app/simple_xml_examples/theme_utils'
|
|
}
|
|
});
|
|
|
|
require([
|
|
'theme_utils',
|
|
'splunkjs/mvc/simplexml/ready!',
|
|
'css!app/simple_xml_examples/showtokens.css'
|
|
],
|
|
function(themeUtils) {
|
|
var _ = require('underscore');
|
|
var $ = require('jquery');
|
|
var Backbone = require('backbone');
|
|
var mvc = require('splunkjs/mvc');
|
|
var defaultTokenModel = mvc.Components.get('default');
|
|
var submittedTokenModel = mvc.Components.get('submitted');
|
|
var urlTokenModel = mvc.Components.get('url');
|
|
var models = [defaultTokenModel, submittedTokenModel, urlTokenModel];
|
|
var isDarkTheme = themeUtils.getCurrentTheme && themeUtils.getCurrentTheme() === 'dark';
|
|
|
|
var TokenDebugView = Backbone.View.extend({
|
|
className: 'show-tokens',
|
|
initialize: function() {
|
|
this.model = new Backbone.Model({ includeFormTokens: false });
|
|
this.listenTo(this.model, 'change', this.render);
|
|
this.listenTo(defaultTokenModel, 'change', this.render);
|
|
this.listenTo(submittedTokenModel, 'change', this.render);
|
|
this.listenTo(urlTokenModel, 'change', this.render);
|
|
},
|
|
events: {
|
|
'click .checkbox a': function(e) {
|
|
e.preventDefault();
|
|
this.model.set('includeFormTokens', !this.model.get('includeFormTokens'));
|
|
}
|
|
},
|
|
render: function() {
|
|
this.$el.addClass('show-tokens');
|
|
if (isDarkTheme){
|
|
this.$el.addClass('dark');
|
|
}
|
|
if (this.$el.is(':empty')) {
|
|
this.$el.html(this.template);
|
|
}
|
|
|
|
var includeFormTokens = this.model.get('includeFormTokens');
|
|
this.$('.checkbox>a>i')[includeFormTokens ? 'show' : 'hide']();
|
|
|
|
var tbody = this.$('tbody');
|
|
tbody.empty();
|
|
|
|
var keys = _.union.apply(_, _(models).invoke('keys'));
|
|
|
|
if (!includeFormTokens) {
|
|
keys = _(keys).filter(function(k) { return k.indexOf('form.') !== 0; });
|
|
}
|
|
|
|
keys.sort();
|
|
|
|
_(keys).each(function(token) {
|
|
var tr = $('<tr></tr>');
|
|
$('<td class="token-name"></td>').text('$' + token + '$').appendTo(tr);
|
|
_(models).each(function(ns) {
|
|
var td = $('<td class="token-value"></td>').appendTo(tr);
|
|
var val = ns.get(token);
|
|
if (val === undefined) {
|
|
td.addClass('undefined').text('undefined');
|
|
} else {
|
|
if (_.isString(val)) {
|
|
td.text(val);
|
|
} else {
|
|
$('<code title="Non-string value"></code>').text(JSON.stringify(val)).appendTo(td);
|
|
}
|
|
}
|
|
});
|
|
tr.appendTo(tbody);
|
|
});
|
|
|
|
return this;
|
|
},
|
|
template: '<div class="form-switch">' +
|
|
'<label class="checkbox">' +
|
|
'<a href="#" class="btn"><i class="icon-check" style="display:none"></i></a>' +
|
|
' Show <code>form.</code> tokens' +
|
|
'</label>' +
|
|
'</div>' +
|
|
'<h3>Token Debug Info</h3>' +
|
|
'<table class="table table-striped table-chrome table-hover">' +
|
|
'<thead>' +
|
|
'<tr>' +
|
|
' <th>Token</th>' +
|
|
' <th>Default</th>' +
|
|
' <th>Submitted</th>' +
|
|
' <th>URL</th>' +
|
|
'</tr>' +
|
|
'</thead>' +
|
|
'<tbody></tbody>' +
|
|
'</table>'
|
|
});
|
|
|
|
var ct = $('#show-tokens');
|
|
if (!ct.length) {
|
|
ct = $('<div id="show-tokens"></div>').insertAfter($('.dashboard-body'));
|
|
}
|
|
window.tokenDebug = new TokenDebugView({ el: ct }).render();
|
|
});
|