2010-01-12 19 views
1

有沒有辦法更改時間智能發佈公式的默認值?更改PerformancePoint時間智能發佈公式默認值

我有一個儀表板,我使用起始日期和結束日期過濾器,來計算用戶選擇週期之間的值,這些過濾器我用的是時間智能後公式,但是默認當用戶進入頁面在兩個過濾器上始終是今天的日期。 (從今天到今天的分析對此沒有意義)

我想要的是一個From日期類似於今天的日期之前的30天,但不強制接收過濾器的報告,我只想讓過濾器具有默認值,然後讓用戶選擇他想要的任何內容。

任何人都知道可以做的事情,或者這是不能做到的?

編輯:

Throught研究on this link給我看,它無法通過正常方式進行:

sgrice問這個問題: 我愛的日曆,並且易於將其鏈接到我的立方體;然而,我們從來沒有關於默認日期的「今日」的數據。因此,我們的儀表板首次出現時總是空白,我們的客戶必須選擇一個日期。有沒有辦法改變默認日期?

該帖子的作者說,在一個評論回覆:

沒有遺憾,但我會進入這是一個功能建議。

感謝,

阿利森

因此,有這樣做,所以我想這樣做另一種方式的沒有正式的辦法。 因此,我試圖以一種更加無證和晦澀的方式,通過JavaScript。 我希望能找到辦法做到這一點。

回答

-1

我已經解決了它的JavaScript throught和JQuery。 我基本上檢查了日曆做了什麼,並將其複製,我意識到它在日期點擊時突出了日曆的可見性,並且因爲我對它沒有興趣,並且調用了此名稱的方法pps_TI_calendar_render傳遞三個參數,一個是日曆td的ID,另外兩個是您以完整名稱選擇的日期。 我檢查它是否會接受只有兩個參數,並以簡單的格式 結果的日期是這個JavaScript調用(請注意,我只改變第一PPS日期日曆):

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

(這個日期格式是月/日/年) 如果你把例如14/01/2010放在2011年2月的第一個日曆。所以小心。

注意在我使用一個jQuery選擇,以獲得我想要的ID的第一個參數,這可能會改變,但參數需要的元素PPS的ID使用。

希望這會有所幫助。

-1

您必須創建兩個日曆,然後將其中一個映射到開始日期,一個映射到結束日期。這在Performance Point博客上的this comment中有描述。

的技術如下:

不同,需要創建2個日曆開始和結束日期的工作。然後您將一個日曆鏈接到<>,另一個鏈接到<>。作爲公式,你只需輸入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] 
+0

彌敦道任何問題,這不是我問的,我wan't更改日曆的默認日期之一,而不是報告接收的價值,我有兩個日曆所以用戶可以設置一個範圍,報告儀表板務必顯示用戶選擇的日期,而不是 - 第一個日期的30天。 –

+0

你甚至讀過這個問題的標題嗎? –

+0

放鬆gabriel。你已經說過這不是正確的答案,你低估了我。休息一下。 –

2

好的,我已經關注了這個線程一段時間,並嘗試了很多方法來實現它,最終我入侵了幾乎所有的SP2010和SP2007 JavaScript,並發現了以下工作在SP2010上,我擁有它在SP2007中使用不同的前綴。

第1步:找出你的日曆部件的Javascript ID前綴是什麼。

  • 爲此,請在IE8或IE9中啓動儀表板,然後按F12啓動Javascript調試器。
  • 使用Javascript GetElementByTagName(「TD」)獲取頁面上所有TD標籤的完整列表。
  • 查找ID中具有GUID且以_Selection和Selection_Toggle結尾的標籤。
  • 這些將是您的日曆過濾器零件。注意起始前綴(在SP2007它在SP2010是ct_100_是pps_)

第2步:添加以下JavaScript到用於儀表板的母版頁的末尾(看帖子的結尾)

第3步:保存母版頁並刷新瀏覽器,日期應該更改爲昨天。

我也創建了這個儀表板上有兩個日曆過濾器,以允許日期範圍過濾,這將設置第一個日期提前11天和第二個日期到昨天。 [email protected]

<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>