Although I read Jason's post at http://splunk-base.splunk.com/answers/5129/3x-style-list-of-saved-searches-on-dashboard-followup a hundred times, it finally made sense after posting this question myslef. Article 5129 really contained the fix / workaround for the issue with the EntityLinkLister not stopping pushes to downstream modules. Thanks Jason and others that contributed to that article. The push downstream is what caused the annoying behaviour of opening the flashtimeline when "prev","next", or page numbers are clicked in the Paginator.
To paraphrase article 5129 a bit, I fixed my issue by:
Created the new file called "application.js" (see code below) and put it in $SPLUNK_HOME/etc/apps/myapp/appserver/static. Note this script refers to the value of the EntityLinkLister's "settingToCreate" parameter. I called this "SavedSearches" in my original view xml. I changed this to "savedSearchName" to match the application.js. Any name will do, as long as the names match between the EntityLinkLister and the applicaion.js script.
Replaced the Hidden Search/ConvertToIntention/ViewRedirector modules ( or just the search module if using Sideview Utils ) with the NullModule module.
Restarted splunkd to get splunk to see the new application.js script.
That's it. The paginator and EntityLinkLister work as I expect now with the added bonus, compliments of the application.js script, is that the saved searches run by default in the view and with the timerang that was saved with the save search.
My new view xml code now looks like this:
<view template="dashboard.html">
<label>Saved Searches</label>
<module name="AccountBar" layoutPanel="appHeader"/>
<module name="AppBar" layoutPanel="navigationHeader"/>
<module name="Message" layoutPanel="messaging">
<param name="filter">*</param>
<param name="clearOnJobDispatch">False</param>
<param name="maxSize">3</param>
</module>
<!--Display List of Saved Searches -->
<module name="Paginator" layoutPanel="panel_row1_col1" >
<param name="entityName">settings</param>
<param name="count">20</param>
<module name="EntityLinkLister">
<param name="namespace">ADP_Performance</param>
<param name="count">20</param>
<param name="entityPath">/saved/searches</param>
<param name="settingToCreate">savedSearchName</param>
<param name="entityFieldsToDisplay">
<list>
<param name="label">name</param>
<param name="value">name</param>
</list>
</param>
<!-- PLACE NULL MODULE HERE , EntitiyLinkLister module is processed by application.js -->
<module name="NullModule" />
</module> <!-- EntityLinkLister -->
</module> <!-- Paginator -->
$SPLUNK_HOME/etc/apps/your-application-name-goes-here/appserver/static/application.js looks like this:
switch (Splunk.util.getCurrentView()) {
case "SavedSearches" :
// PATCH 1
// -- the entityLinkLister does not stop framework pushes.
if (Splunk.Module.EntityLinkLister) {
Splunk.Module.EntityLinkLister= $.klass(Splunk.Module.EntityLinkLister, {
onUserAction: function($super, event) {
$super(event);
this.pushContextToChildren(null, true);
},
pushContextToChildren: function($super, explicitContext, simonSays) {
if (!this.isPageLoadComplete || simonSays) {
$super(explicitContext);
}
}
});
}
// PATCH 2 - Neither ViewRedirector nor anyone else
// allows you to redirect a saved search link such that
// the displayView and the timerange are set correctly.
if (Splunk.Module.NullModule) {
Splunk.Module.NullModule= $.klass(Splunk.Module.NullModule, {
onContextChange: function() {
var context = this.getContext();
var savedSearchName = context.get("savedSearchName");
Splunk.util.redirect_to("/app/" + Splunk.util.getCurrentApp() + "/@go?s=" + encodeURIComponent(savedSearchName));
}
});
}
break;
}
Thanks.
... View more