require(['splunkjs/mvc/simplexml/ready!'], function(){
require(['splunkjs/ready!', 'splunkjs/mvc'], function(mvc){
/*
--------------------------------------------------------------
Multi depends buttons - Written by François Toulouse, thanks !
--------------------------------------------------------------
Usage: Add an html bootstrap button
*/
var defaultTokenModel = mvc.Components.getInstance('default', {create: true});
var submittedTokenModel = mvc.Components.getInstance('submitted', {create: true});
function setToken(name, value) {
defaultTokenModel.set(name, value);
submittedTokenModel.set(name, value);
}
function getToken(name) {
var ret = null;
if(defaultTokenModel.get(name) != undefined){
ret = defaultTokenModel.get(name);
}
else if(submittedTokenModel.get(name) != undefined){
ret = submittedTokenModel.get(name);
}
return ret;
}
function unsetToken(name) {
defaultTokenModel.unset(name);
submittedTokenModel.unset(name);
}
// For each button with the class "custom-sub-nav"
$('.custom-sub-nav').each(function(){
var $btn_group = $(this);
/* for each button in this nav:
- Cliking on the button: create the token "data-token-name" with attribute value "data-token-value"
- Button has been clicked already and the user click on it again: removes the token "data-token-name"
*/
$btn_group.find('button').on('click', function(){
var $btn = $(this);
var btn_current_label = $btn.html();
var btn_alt_label = $btn.attr('data-alt-label');
var tk_name = $btn.attr('data-token-name');
var tk_value = $btn.attr('data-token-value');
if( getToken(tk_name) == null){
setToken(tk_name, tk_value);
$btn.addClass('active');
}
else{
unsetToken(tk_name);
$btn.removeClass('active');
}
// Manage button label
$btn.html(btn_alt_label);
$btn.attr('data-alt-label', btn_current_label);
});
});
});
});