【发布时间】:2017-10-05 11:32:30
【问题描述】:
【问题讨论】:
【问题讨论】:
无法使用现有数据选项设置此类预选,但您可以使用 Widget 的 JavaScript Hooks 实现所需的行为。
例如就像上面的截图一样,但没有预选
转到小部件选项的钩子类别
将下面的代码复制到“收到数据”挂钩值:
关于收到的数据(对于 icCube 6.1):
/**
* Return data object
*/
function(context, data, $box) {
context.fireEvent('initDate', {caption_: moment().set('date', 1).format('YYYY-MM-DD')})
return data;
}
关于收到的数据(对于早期版本):
/**
* Return data object
*/
function(context, data, $box) {
context.eventMgr().fireEvent('initDate', {caption_: moment().set('date', 1).format('YYYY-MM-DD')})
return data;
}
为了应用范围预选,将 On Data Received 挂钩的 JavaScript 主体更改为:
/**
* Return data object
*/
function(context, data, $box) {
let event = new viz.event.RangeSelectionEvent([
{name: moment().set('date', 1).format('YYYY-MM-DD')},
{name: moment().set('date', 2).format('YYYY-MM-DD')}
]);
context.fireEvent('initDate2', event)
return data;
}
附注检查Demo Report 看看它是如何工作的。
【讨论】:
还有另一个选项不需要 javascript,而且很可能寿命更长。 Range 选择可以使用 MDX 中的值,因此我们可以更改查询以获取我们正在寻找的内容:
WITH
SET [dates] as [Time].[Calendar].[Day].allmembers
Function ic3Min() as Head([dates])
Function ic3Max() as Tail([dates])
Function ic3DefFrom() as Tail([dates]).dtWithDayOfMonth(1) // first day of month , not the same as withDayOfMonth
Function ic3DefTo() as Tail([dates])
SELECT
{ic3Min(),ic3Max(),ic3DefFrom(),ic3DefTo()} on 0
FROM [Sales]
CELL PROPERTIES CELL_ORDINAL
您在 MDX 中有一系列不错的日期函数,可用于导航时间。在我们的示例中,LookupByKey、Today 和 withDayOfMonth。类似的东西
[Time].[Calendar].[Day].lookupByKey( Today()->withDayOfMonth(1) )
这可以转化为一个函数来重复使用:
Function myDatesStartOfCurrentMonth() as [Time].[Calendar].[Day].lookupByKey(Today()->withDayOfMonth(1) )
最终您必须更改过滤器以使用 MDX 值:
应该会成功的。
【讨论】: