【仅供内部供应商使用,不提供对外解答和培训】

Page tree

【仅供内部供应商使用,不提供对外解答和培训】

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

前言

一般情况下,我们在报表展示时,如果需要特殊的提示信息,会给单元格设置一个“单元格提示”,当鼠标移动到这个格子上时可以显示出完整的格子内容。效果如下图所示:

默认的提示效果对于特别长的文字的时候并不是特别适合,这个时候就需要自定义提示信息了。

关键接口

我们需要去标记需要输出到前端的格子,给HTML标签加上额外的class说明,可以使用下面这个接口来实现:

CellTagTransformer
 /**
 * 更改单元格输出成的HTML标记Tag
 */
public interface CellTagTransformer extends Level {

    String MARK_STRING = "CellTagTransformer";
    int CURRENT_LEVEL = 1;

    /**
     * 处理单元格提示效果
     *
     * @param c        算子
     * @param tag      单元格HTML标签
     * @param tooltip  提示内容
     * @param rawValue 单元格的值
     * @return HTML标签
     */
    Tag process(Calculator c, Tag tag, String tooltip, Object rawValue);
}

下面还需要在页面加载完成后使用JavaScript来改变这个Tooltip的样式,可以使用这个页面对象事件接口:

加载后事件
FR.Report.Plugin.Panel.Events

示例实现

更改单元格的HTML标签class信息实现,增加一个beautiful-tooltip的class:

public class BeautifulTooltip extends AbstractCellTagTransformer {

    @Override
    public Tag process(Calculator c, Tag tag, String tooltip, Object rawValue) {
        if (StringUtils.isBlank(tooltip)) {
            return tag;
        }
        tag.cls("beautiful-tooltip").attr("title", tooltip);
        return tag;
    }
}

再使用JavaScriptFileHander引入一个jQuery插件,结合着事件代码可以这么写:

(function($){
    FR.Report.Plugin.Panel.Events.push({

        name : 'afterload',

        action : function() {
            $('.beautiful-tooltip').poshytip();
        }
    });
})(jQuery);

最后用上插件后,提示信息就变成下面这样了:

源码

源代码可以参考这里:http://www.finedevelop.com:2015/projects/FS/repos/plugins/browse/plugin-tooltip

 

  • No labels