Die Präsentation des Discovery Summit Ein filterbares Dashboard mit mehreren Registerkarten stellt ein universelles Skript zum Generieren eines Dashboards mit mehreren Registerkarten vor.Ich verwende eine Kopie dieses Skripts (siehe unten), um eine Reihe von Dashboards in einem Dashboard mit mehreren Registerkarten zu kombinieren. Das Skript zerlegt jedoch alle Dashboards und kombiniert sie 1 zu 1 oder 2 zu 2 wieder. So wird ein ursprüngliches Dashboard mit zwei übereinander liegenden Diagrammen in ein Dashboard mit den beiden Diagrammen nebeneinander umgewandelt.
Meine Dashboards basieren auf mehreren verschiedenen Datentabellen. Daher ist es schwierig, lokale Datenfilter für jede der Tabellen zu verwenden, wenn ich nur separate Registerkarten innerhalb desselben Dashboards verwende.
Was ich bräuchte, ist ein Skript, das alle geöffneten Dashboards aufnimmt und kombiniert, ohne die Einrichtung der Dashboards zu ändern. Irgendwelche Vorschläge, wie Sie das folgende Skript ändern oder von vorne beginnen können?
///////////////////////////////// Create Tabbed Dashboard //////////////////////////////////////////////////
wait( 2 );
dashes = Find All(Reports);
tb = Expr(Tab Box());
For(i = 1, i<= N Items(dashes), i ++,
tabPage = Expr(Tab Page Box());
dfcb = Expr(Data Filter Context Box());
lub = Expr(Line Up Box(N Col(2)));
hlb = Expr(H List Box());
//Get Data table name to use with the data filter
wintitle = dashes[i] << Get Window Title;
wordone = Word(1, wintitle, "-");
wordtwo = Word(2, wintitle, "-");
dtname = Substr(wordone, 1, Length(wordone)-1 );
dt = Eval Expr(Data Table(Expr(dtName)));
//Get dashboard name
dashName = Substr(wordtwo, 2);
failed = 0;
j = 1;
//Loop through the tab page boxes in the dashboard, and extract the scripts
While(failed ==0,
Try(tpb = dashes[i] << Find(TabPageBox(j)),
failed = 1; Continue();
);
//Try to get the script from the display box if it exisits
Try(obj = tpb << Get Scriptable Object;
script = obj << Get Script,
j ++; Continue();
);
//If the script is for the local data filter add the script to the H List Box
If(Char(Head(Name Expr(script))) == "Data Filter",
FilterExprStr = char(NameExpr(dt)) || " << " || char(Name Expr(script));
FilterExpr = Parse(FilterExprStr);
Insert Into(hlb,NameExpr(FilterExpr));
,
//Else add it to the lineup box
If( Char(Name Expr(script)) != "Scriptable[]",
reportExprStr = char(NameExpr(dt)) || " << " || char(Name Expr(script));
reportExpr = Parse(reportExprStr);
scrollbox = Expr(Scroll Box());
Insert Into(scrollbox, Name Expr(reportExpr));
Insert Into(lub,Name Expr(scrollbox));
);
);
j ++;
);
//Build up the display boxes
Insert Into(hlb, Name Expr(lub));
Insert Into(dfcb, Name Expr(hlb));
Insert Into(tabPage, Eval Expr(Title(Expr(dashName))), 1);
Insert Into(tabPage, Name Expr(dfcb), 2);
Insert Into(tb, Name Expr(tabPage));
);
//Create combined dashboard window
New Window("Combined Dashboard", tb);
//Close all the individual dash reports
For( w = 1, w <= N Items(dashes), w ++,
dashes[w] << Close Window;
);