首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更改PerformancePoint时间智能后公式默认值

更改PerformancePoint时间智能后公式默认值
EN

Stack Overflow用户
提问于 2010-01-12 14:34:44
回答 3查看 2K关注 0票数 1

是否有一种方法可以更改时间智能邮政公式的默认值?

我有一个仪表板,在这里我使用From日期和To Date过滤器来计算用户选择的时间段之间的值,对于这些筛选器,我使用Time Intelligence Post公式,但是当用户进入页面时,默认的日期始终是今天在这两个过滤器上的日期。(从今天到今天,分析是没有意义的)

我想要的是在今天的日期前30天左右,但不是强制报告接收过滤器,我只是希望过滤器有一个默认值,然后让用户选择他想要的。

有人知道什么是可以做的,还是这件事做不到?

编辑:

通过研究,在这个链接上向我表明,它不能通过正常的方式完成:

sgrice问了这个问题:我喜欢日历,喜欢把它链接到我的多维数据集;然而,我们从来没有“今天”的数据,这是默认的日期。因此,当仪表板第一次出现时,仪表板总是空白的,我们的客户必须选择一个日期。是否有办法更改默认日期?

这篇文章的作者在评论中说:

不,对不起,但我将输入此功能建议。

谢谢,

艾里森

所以没有正式的方法来做,所以我尝试用另一种方式来做。因此,我试图通过javascript,以一种更无文档和更模糊的方式来实现它。我很感激你能帮我找个办法。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-28 16:03:08

我已经通过javascript和JQuery解决了这个问题。我基本上检查了日历做了什么,并复制了它,我已经意识到,当你在一天中点击的时候,它也会影响日历的可见性。因为我对此不感兴趣,所以我删除了它,并调用了一个方法,其中一个名为pps_TI_calendar_render,传递了三个参数,一个是日历td的id,另两个是您在完整名称中选择的日期。我检查了它是否只接受两个参数,日期以更简单的格式显示,结果是这个javascript调用(请注意,我只更改了第一个pps日期日历):

代码语言:javascript
复制
pps_TI_calendar_render(  $('.pps_calendarToggleDown').first().parent().closest('td').attr('id'),'01/01/2010');

(此日期格式为月/日/年)如果以2010年1月14日为例,它将把日历放在2011年2月1日。所以小心点。

注意,在第一个参数中,我使用了一个JQuery选择来获得我想要的id,这是可以更改的,但是参数需要是pps使用的元素的id。

希望这能有所帮助。

票数 -1
EN

Stack Overflow用户

发布于 2012-10-25 11:46:17

好吧,我跟踪这个帖子有一段时间了,我尝试了这么多方法来让它工作,最终我黑进了几乎所有的SP2010和SP2007 JavaScript,发现下面的内容可以在SP2010上工作,我让它在SP2007中使用一个不同的tad前缀。

步骤1:找出日历部件的Javascript id前缀是什么。

  • 为此,在IE8或IE9中启动仪表板,然后按F12启动Javascript。
  • 使用Javascript GetElementByTagName(" TD ")获取页面上所有TD标记的完整列表。
  • 查找id中有GUID并以_Selection和Selection_Toggle结尾的标记。
  • 这些将是你的日历过滤部件。注意起始前缀(在SP2007中是ct_100_,在SP2010中是pps_)

步骤2:将以下Javascript添加到用于仪表板的母版页的末尾(查看文章的末尾)

步骤3:保存母版页并刷新浏览器,日期应更改为昨天。

我还创建了一个仪表板,其中包含两个日历过滤器,以便对日期范围进行筛选,这将使第一个日期提前11天,第二个日期设置为昨天。任何问题emil.swanepoel@live.co.za

代码语言:javascript
复制
<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>
票数 2
EN

Stack Overflow用户

发布于 2010-03-23 03:49:16

您必须创建两个日历,然后将一个映射到开始日期,另一个映射到结束日期。这在Performance上的这句话中有描述。

该技术如下:

要使用开始日期和结束日期,您需要创建2个日历。然后将一个日历链接到<>,另一个链接到<>。作为公式,您只需输入Day:Day。在报告中,您必须创建一个名为“DateRange”或类似的集合。

代码语言:javascript
复制
WITH 
SET [DateRange] AS
   <<StartDate>>.Item(0) :  <<EndDate>>.Item(0)
SELECT
NON EMPTY 
[DateRange]
ON COLUMNS,
{ [Measures].[Price Total] }
ON ROWS
FROM [TurnoverCube]
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2049660

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档