widgetview 是什么
todo 图表分成多个 group, 变成分组表 ?
com.finebi.dashboard.api.chart.utils.CalculateWidgetUtils#getGeomIds
WidgetView chartView = bean.getView();
return getTargetIds(toGeoms == BIChartSettingConstants.CHART.MEASURE_TO_GEOMS.V_AXIS ? chartView.getViews() : chartView.getDimension(), widget);
模板层级的过滤条件
com.finebi.base.impl.adaptor.generator.impl.condition.entity.HyperReportConditionGenerator#create
组件层级的过滤条件
com.finebi.base.impl.adaptor.generator.impl.condition.level.WidgetConditionGenerator
联动
com.finebi.dashboard.api.bean.widget.link.ClickValue
private String dId;
private List<ClickValueItem> value;
private String fieldId;
com.finebi.dashboard.impl.widget.parser.link.strategy.LinkFilterGenerator#create
- 处理 n 个 linkWidget
com.finebi.dashboard.impl.widget.parser.link.strategy.ClickedLinkStrategy
联动的时候,传递过滤层级, 都传递哪些呢?
com.finebi.dashboard.impl.widget.parser.link.helper.WidgetFilterToFilterTranslator#translate(java.util.function.Function<java.util.List<com.finebi.base.api.widget.filter.Filter>,com.finebi.base.api.widget.field.FilterNoField>)
???
翻译成引擎层的东西
com.finebi.base.api.adapter.HyperAbstractAdapter#getCriteria
prepare
com.finebi.base.api.adapter.HyperAbstractAdapter#translateWidget
com.finebi.base.api.adapter.HyperAbstractAdapter#handler
计算???
com.finebi.base.api.executor.WidgetExecutorWrapper
计算入口
/cache/widget/data
com.finebi.web.action.v5.cache.FineCacheWidgetDataAction#getWidgetData
com.finebi.dashboard.impl.service.FineWidgetExecutorServiceImpl
WidgetBean
转化成FineWidget
com.finebi.dashboard.api.widget.fine.creator.FineWidgetTranslatorManager#translate(com.finebi.dashboard.api.bean.widget.WidgetBean, com.finebi.common.api.cell.user.authority.UserAuthority, com.finebi.dashboard.api.widget.fine.creator.FineWidgetProcessor…)
- 部分值,懒处理
com.finebi.dashboard.api.widget.AbstractTableWidget#targetBeanToTarget
com.finebi.dashboard.impl.manager.AbstractEngineWidgetExecutorManager#visit(com.finebi.dashboard.api.chart.VanChartWidget)
FineWidget
转化成Widget
, 可以理解为计算 Widget
com.finebi.dashboard.impl.widget.creator.AbstractWidgetCreator#AbstractWidgetCreator
- 组件创建、解析
com.finebi.dashboard.impl.widget.creator.GroupWidgetCreator#create
com.finebi.dashboard.impl.widget.creator.AbstractSummaryWidgetCreator#update
- 组件创建、解析
com.finebi.dashboard.api.widget.AbstractTableWidget#targetBeanToTarget
过滤
BaseConditionResult
FilterField
FilterNoField
- 区别是啥?
过滤有两种
DEF 函数,汇总层级,绑定维度
过滤层级的计算方式
com.finebi.dashboard.impl.widget.parser.filter.utils.FieldFilterLevelCalculator#getFilterLevel(com.finebi.base.api.widget.targets.v2.WidgetTarget, com.finebi.base.api.widget.field.FilterField.FilterLevel)
结果过滤器
维度明细过滤
指标明细过滤
指标分组过滤
字段
添加字段
- measure/modify
主题
主题新建
com.finebi.common.impl.service.conf.SubjectEditSessionHelper#openNewSubjectEditSession
com.finebi.common.impl.service.conf.SubjectEditSessionHelper#openSession
- 之后每一次都会经过
com.finebi.foundation.session.api.aspect.SessionActiveAspect
保存
模板保存-临时
com.finebi.dashboard.api.service.FineDashBoardService#saveReportInSubjectEdit
com.finebi.common.impl.persist.bo.dashboard.ModifyReportBOImpl#update(com.finebi.common.api.bo.dashboard.ReportBundleInfo)
com.finebi.common.impl.persist.bo.dashboard.ReportUpdateHandler#modify
com.finebi.common.impl.persist.bo.dashboard.DashboardCollectionConsanguinityObverseHandler#modifyThisThat
com.finebi.common.impl.persist.session.cacheitem.read.CacheConfSession#putAll
com.finebi.common.impl.persist.session.cacheitem.write.base.SessionVersionedWriteContainer#putAll
- 关键交叉点
com.finebi.common.impl.persist.session.cacheitem.write.SessionWriteInProcessValue#getUnsavedKvMap
主题保存
com.finebi.common.impl.service.conf.FineSubjectEditSessionServiceImpl#saveSubject
com.finebi.foundation.session.api.SessionManager.Current#flushCachedValue(com.finebi.foundation.session.api.cache.CacheItemKey…)
com.finebi.foundation.session.impl.cache.DefaultCache#flush(com.finebi.foundation.session.api.cache.CacheItem<?>)
com.finebi.common.impl.persist.session.cacheitem.write.base.VersionedTransactionSessionImpl#commitToPersist
- 关键交叉点
com.finebi.common.impl.persist.session.cacheitem.write.SessionWriteInProcessValue#getUnsavedKvMap
组件
com.finebi.dashboard.api.bean.widget.table.TableWidgetBean
- 转换器
com.finebi.dashboard.api.bean.widget.WidgetBeanTypeIdResolver
dimension 有自己的 id
field 有自己的 id == 表里面的 id 见字段
widgetMeasures 使用 fieldId
dimensionGroups 使用 widgetMeasures+group
其他
二次计算
支持设置二次计算的功能 | 快速计算中的所有值、组内所有值、累计值、组内累计值、排名、组内排名、占比、组内占比。 |
---|---|
支持取消二次计算的功能 | 快速计算中的所有值、组内所有值、排名、组内排名、占比、组内占比的计算方式。 |
快速计算
计算类型 | 文档 |
---|---|
占比 | 占比(快速计算) |
排名 | 排名(快速计算) |
汇总值 | 所有值(快速计算) |
累计值 | 累计值(快速计算) |
同比、环比、同期、环期 | 同比/环比(快速计算) |
问题
双向联动的逻辑?