1

Time Intelligence Post Formula のデフォルト値を変更する方法はありますか??

From Date フィルターと To Date フィルターを使用して、ユーザーが選択した期間の間の値を計算するダッシュボードがあります。これらのフィルターでは、Time Intelligence Post Formulaを使用しますが、ユーザーがページに入ったときのデフォルトは常に両方の今日の日付です。フィルター。(そして今日から今日までの分析はこれには意味がありません)

私がしたいのは、From Date を今日の日付の 30 日前のようなものにすることですが、フィルターを受け取るレポートに強制することはありません。フィルターにデフォルト値を設定し、ユーザーが好きなものを選択できるようにするだけです。

誰かができること、またはこれができないことを知っていますか?

編集:

このリンクに関する調査を通じて、通常の方法では実行できないことがわかりました。

sgrice さんがこの質問をしました: カレンダーと、それをキューブに簡単にリンクできる点が気に入っています。ただし、デフォルトの日付である「今日」のデータはありません。したがって、ダッシュボードが最初に表示されるときは常に空白であり、クライアントは日付を選択する必要があります。デフォルトの日付を変更する方法はありますか?

投稿者は、コメントへの返信で次のように述べています。

申し訳ありませんが、機能の提案としてこれを入力します。

ありがとう、

アリソン

正式な方法はないので、別の方法でやろうとしています。だから私はそれをもっと文書化されていないあいまいな方法でやろうとしています.javascriptを通して. これを行う方法を見つけるための助けをいただければ幸いです。

4

3 に答える 3

2

さて、私はしばらくこのスレッドをたどり、これを機能させるために非常に多くの方法を試しました.ちょっと違う接頭辞。

ステップ 1: カレンダー パーツの Javascript id プレフィックスを確認します。

  • これを行うには、IE8 または IE9 でダッシュボードを開始し、F12 を押して Javascript Debugger を開始します。
  • Javascript GetElementByTagName("TD") を使用して、ページ上のすべての TD タグの完全なリストを取得します。
  • ID に GUID があり、_Selection と Selection_Toggle で終わるタグを探します。
  • これらがカレンダー フィルター パーツになります。開始プレフィックスに注意してください (SP2007 では ct_100_、SP2010 では pps_)。

ステップ 2: ダッシュボードに使用されるマスター ページの最後に次の Javascript を追加します (投稿の最後を参照)。

手順 3: マスター ページを保存し、ブラウザーを更新すると、日付が昨日に変わります。

また、日付範囲のフィルタリングを可能にする 2 つのカレンダー フィルターを含むダッシュボード用にこれを作成しました。これにより、最初の日付が 11 日前に設定され、2 番目の日付が昨日に設定されます。ご質問はemil.swanepoel@live.co.za

<script type="text/JavaScript">


var isFirstLoad;
var calendarLoaded = false;
var srcID = "ctl00_m_WebPart_293af46d1c5c4320893d47f86614325bSelection";
var strDate = "Tue Aug 2 00:00:00 UTC+0200 2011";
var t;
var dateBackA = 1;
var dateBackB = 10;
testForCalendar();

function testForCalendar()
{
    isFirstLoad = true;
    if(calendarLoaded != true)
        t = setTimeout("waitForIt()", 5);
}

function waitForIt()
{
    var foundControl = -1;
    var t = document.getElementsByTagName("TD");
    var ts = "";
    var subDateFound = false;
    var xPoint = 0;
    for(var x = 0; x < t.length; x++)
    {
        if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
        {
            foundControl = x;
            ts = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
            xPoint = x;
            x = t.length;
        }
    }
    if(foundControl > -1)
    {
        if(isFirstLoad == true)
        {   
            if(t[xPoint].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
                calendarIntercept(ts, calendarDate(new Date(), dateBackB));
            else 
                calendarIntercept(ts, calendarDate(new Date(), dateBackA));
            waitForItSub(xPoint, ts);
            calendarLoaded = true;
            isFirstLoad = false;
        }
        else
            t = setTimeout("waitForIt()", 5);
    }
    else
        t = setTimeout("waitForIt()", 5);   
}

function waitForItSub(startPoint, firstTag)
{
    var foundControl = -1;
    var t = document.getElementsByTagName("TD");
    var tsub = "";
    var xPointNew = 0;
    for(var x = (startPoint++); x < t.length; x++)
    {
        if(t[x].id.indexOf(firstTag) == -1)
        {
            if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
            {
                foundControl = x;
                tsub = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
                xPointNew = x;
                x = t.length;
            }
        }
    }
    if(foundControl > -1)
    {
        if(isFirstLoad == true)
        {   
            if(t[xPointNew].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
                calendarIntercept(tsub, calendarDate(new Date(), dateBackB));
            else
                calendarIntercept(tsub, calendarDate(new Date(), dateBackA));
            calendarLoaded = true;
            isFirstLoad = false;
        }
    }
}

function calendarIntercept(inSrcID, inDate)
{
    strDate = (inDate.getMonth()+1) + "/" + inDate.getDate() + "/" + inDate.getFullYear(); 
    pps_TI_calendar_render ( inSrcID, strDate , strDate );
}

function calendarDate(inDate, daysBack)
{
    var returnValue = new Date();
    returnValue.setDate(returnValue.getDate() - daysBack);
    return returnValue;
}

</script>
于 2012-10-25T11:46:17.407 に答える
-1

2 つのカレンダーを作成し、1 つを開始日に、もう 1 つを終了日にマッピングする必要があります。これについては、Performance Point ブログのこのコメントで説明されています。

テクニックは次のとおりです。

開始日と終了日を操作するには、2 つのカレンダーを作成する必要があります。次に、1 つのカレンダーを <> にリンクし、もう 1 つのカレンダーを <> にリンクします。式として、Day:Day と入力するだけです。レポートでは、'DateRange' などと呼ばれるセットを作成する必要があります。

WITH 
SET [DateRange] AS
   <<StartDate>>.Item(0) :  <<EndDate>>.Item(0)
SELECT
NON EMPTY 
[DateRange]
ON COLUMNS,
{ [Measures].[Price Total] }
ON ROWS
FROM [TurnoverCube]
于 2010-03-23T03:49:16.413 に答える
-1

javascriptとJQueryで解決しました。私は基本的にカレンダーが何をしたかをチェックし、それを再現しました。あなたが日をクリックしたときにカレンダーの可視性を調整していることに気付きました. 3 つのパラメーターを渡します。1 つはカレンダー td の ID で、残りの 2 つは完全な名前で選択した日付です。2つのパラメーターのみを受け入れるかどうかを確認しました。より単純な形式の日付は、結果としてこのjavascript呼び出しになります(最初のpps日付カレンダーのみを変更していることに注意してください):

pps_TI_calendar_render(  $('.pps_calendarToggleDown').first().parent().closest('td').attr('id'),'01/01/2010');

(この日付形式は月/日/年です) たとえば 14/01/2010 と入力すると、カレンダーは 2011 年 2 月 1 日に配置されます。

最初のパラメーターでは、必要な ID を取得するために JQuery 選択を使用しました。これは変更できますが、パラメーターは pps が使用する要素の ID である必要があります。

お役に立てれば。

于 2010-05-28T16:03:08.290 に答える