문제

Time Intelligence Post 공식의 기본값을 변경하는 방법이 있습니까 ??

날짜와 데이트 필터를 사용하는 대시 보드가있어 사용자가 선택한 기간 간의 값을 계산합니다. 시간 지능 포스트 공식그러나 사용자가 페이지를 입력 할 때 기본값은 항상 두 필터에서 오늘날의 날짜입니다. (그리고 오늘부터 오늘까지 분석에 맞지 않습니다)

제가 원하는 것은 오늘 날짜 전 30 일 전과 같은 날짜가 있지만 필터를 수신 한 보고서에 강요되지는 않습니다. 필터가 기본값을 갖고 사용자가 원하는 것을 선택하게하기를 원합니다.

누구든지 할 수있는 일을 아는 사람이 있습니까, 아니면 이렇게 할 수 없습니까?

편집하다:

Throught 연구 이 링크에서 정상적인 방법을 통해 할 수 없다는 것을 보여주었습니다.

Sgrice는이 질문을했습니다. 나는 달력과 큐브에 연결하는 용이성을 좋아합니다. 그러나 기본 날짜 인 "오늘"에 대한 데이터가 없습니다. 따라서 대시 보드가 처음 등장 할 때 항상 비어 있고 고객은 날짜를 선택해야합니다. 기본 날짜를 변경하는 방법이 있습니까?

게시물의 저자는 의견 답장에 대해 말합니다.

죄송하지만 기능 제안으로 입력하겠습니다.

감사,

앨리슨

따라서 공식적인 방법은 없으므로 다른 방식 으로이 작업을 수행하려고합니다. 그래서 나는 JavaScript를 통해 더 문서화되지 않고 모호한 방식으로 그것을하려고 노력하고 있습니다. 이 작업을 수행하는 방법을 찾는 데 도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책 3

JavaScript와 jQuery를 통해 해결했습니다. 나는 기본적으로 달력이 무엇을했는지 확인하고 재생산했다. 나는 당신이 하루에 클릭했을 때 달력의 가시성을 gogle 다한다는 것을 깨달았다. 세 가지 매개 변수를 전달하는 것은 캘린더 TD의 ID 였고 다른 두 가지는 전체 이름으로 선택한 날짜였습니다. 두 개의 매개 변수 만 수락 할 것인지 확인했으며, 더 간단한 형식의 날짜는이 JavaScript 호출입니다 (첫 번째 PPS 날짜 캘린더 만 변경하는 것만 참고) :

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

(이 날짜 형식은 월/일/년입니다) 예를 들어 2011 년 14/01/2010을 넣으면 2011 년 2 월 1 일에 캘린더가 배치됩니다. 따라서 조심하십시오.

노트 첫 번째 매개 변수에서 jQuery 선택을 사용하여 원하는 ID를 얻었으므로 변경 될 수 있지만 매개 변수는 PPS가 사용하는 요소의 ID 여야합니다.

도움이 되었기를 바랍니다.

다른 팁

좋아, 나는이 스레드를 한동안 따랐고 이것을 작동시키기 위해 너무 많은 방법을 시도했는데 결국 거의 모든 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 일 전에, 두 번째 날짜는 어제로 설정됩니다. 질문이 있으면 emil.wanepoel@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>

두 개의 캘린더를 생성 한 다음 하나를 시작 날짜와 끝 날짜에 매핑해야합니다. 이것은 다음에 설명되어 있습니다 이 의견 Performance Point 블로그에서.

이 기술은 다음과 같습니다.

시작 및 종료 날짜로 작업하려면 2 개의 캘린더를 만들어야합니다. 그런 다음 한 캘린더를 <>에 연결하고 다른 달력을 <>에 연결합니다. 공식으로 당신은 방금 날에 들어갑니다 : 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]
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top