Spread Some Love - Give The Gift Of Knowledge

We know you’ve got some great Dundas BI knowledge to share, so spread the love and share with the community your TOP PRODUCT TIP!

What’s that secret sauce of yours that makes Dundas BI work the best? Maybe it’s a keyboard shortcut, maybe it’s a script, maybe it’s something as simple as re-using themes. Whatever it is, we want to know the one tip you’d like most to share with us.

Who knows… maybe we’ll even feature your tip in our weekly challenges!

Whenever you need to change any properties, just press tab to see them in effect immediately. Would save a couple of seconds in scrolling through using a mouse.

Use state styles if you want to see it in the excel export while colour rules of you don’t need it in the export.

1 Like

When trying to work out how to do something in script, it is helpful to be able to enter debug mode from within the dashboard.

You can put debugger; into your script - as described here - or place it in a button on the canvas - as described here - which can get annoying as you need to take it off before making the dashboard live.

I have a script that puts on the button and goes into debugger mode and then removes the button.

var b = new dundas.view.controls.Button;
dundas.context.baseViewService.currentView.addAdapters(b);
var a = new dundas.view.ScriptAction();
a.script = “debugger;”;
b.clickActions.push(a);
document.getElementById(b.id).click();
dundas.context.baseViewService.currentView.removeAdapters(b);

I have gone a step further and put this in a function (window.d=function(){....}) in the js override file on the BI server. This means that on any dashboard, I can press ‘F12’, type d() into the console and immediately get into debugger mode inside the Dundas environment.

Only place it may not work is if you have subcanvases or popups.

2 Likes

Ever set a Filter to Current time frame but the data is not always there yet?
Time card data is a good example, it has to be approved then processed and sometimes that gets done in two day some time 4 days.

Do not set it back far enough so there always data or make the user go back if there is no data, use a script in no data.

// Get the parent view.
var parentView = this.parentView;
// Get the view parameters.
var viewParameters = parentView.control.viewParameters;
// Using the library, get the view parameter based on it’s name
var viewParameter = this.parentView.control.getViewParameterByName(“viewParameter”);
//Go back one time period on offset
viewParameter.parameterValue.token.offset = viewParameter.parameterValue.token.offset -1;
viewParameter.invalidateParameterValueLastModifiedTime();
viewParameter.refreshAllAdapters();

Simple but very effective.

This can go wrong if the user tries to view a period of time before your data starts, it will take over and just keep going back. Have the user clear personalization or you could disable it for the page (but that for the entire page, works if everything on the page has this script on it).

Arrange button for elements , effective way to align all elements in easy and quick way

1 Like

Use API to manage users and groups, including the creation, assigning users to groups, deleting users, etc.

That is a good one Jian.
I created a dashboard to bulk upload a csv to create many users at once.

This is a great idea David!

Give all elements relevant names, even if it’s not some consistent naming convention. It’s a pain to troubleshoot Metric Set 62, or viewParameter1 and try to figure out what it was meant to do, especially when the project was created by someone else.

Constants have aggregators - Imagine that you define a state, to for instance display in green a cell of a table if the value is greater than 30%. If there are total rows in your table, then the value looked at by the state will be the “aggregated” value (so eg. 60% by default for the first aggregated level), which might not be what you might want.

in that case, just either select a constant aggregator (eg. min or max: min(contant) == constant) or remove the aggregator and define your custom total formula (which will be the constant again).

1 Like

Inside dashboards we can add a full text editor.

@costin.manea, how and why?

@costin.manea - I’ve seen another company add a full text editor for the purpose of content write-back. To do think you’ll probably want to use the html label control to add your own custom control.

1 Like

@david.glickman and @jeff I was referring to the full text editor for the purpose of content write-back.

We can parse JSON files with python inside the data cube for generating live data.

1 Like

The use of auto generated metric sets and individual metric sets. When one individual metric set is used in two or more dashboards, you can simply change the metric set format and it will be updated in all dashboards.

1 Like

It’s not strictly limited to Dundas, but what’s saved me the most time so far has been investing a bit of time into making a waterfall structure for my data cubes. Since most of my request for new metrics come from the same basic source, I’ve created a small handful of “Core” cubes that return the usual subset of data formatted in a pleasant way. I think create a 2nd set of cubes to act as 1st-level filters, then another set to act as 2nd layer, etc. The setup took a bit of time, but now I can adjust the entire environment in a couple clicks which get reflected downstream vs. needing to update dozens of queries. The downside (other than initial investment) is that it can be tricky to figure out where a particular filter is if you don’t name your cubes in a meaningful way (as I learned early on).

1 Like

Multi-tenancy creates an ability for you to create a potential product stream for your clients, building one report can be shared with multiple companies with their private data and maintained once. Worth investigating if you are a software company and not already familiar with it.

1 Like

Use color state styles if you want to see it in the file export