JS页面引用功能

js页面引用属于商业版功能,它可将统计项(包括统计项中的所有运算函数图表中的一个或多个图表)和视图(包括视图中所有元素中的一个或多个图表)以引入js文件的形式嵌入到其他外部系统中。

要使用js页面引用,需要首先执行以下操作:

  • 创建相应调用方
  • 调用方已申请相关元素的授权信息(如果申请统计项授权,则只能嵌入该统计项的图表。如果申请工程授权,则可以嵌入该统计工程下所有图表。如果需要嵌入视图,则需要申请视图和视图内所包含统计项的授权) 授权申请在管理员审批后,与三分钟左右生效。

执行完以上操作后,即可嵌入图表到外部系统中,您可以在普通html、jquery项目、React项目、Vue项目等项目中使用该功能。

在项目中引用下面的文件,并调用渲染函数即可!

http://10.206.6.31:8181/open/lighthouse-external-embed.js
http://10.206.6.31:8181/open/lighthouse-external-embed.css

统计项图表嵌入

Html文件嵌入示例

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Embed LightHouse Component</title>
</head>
<body>
  <!-- 图表嵌入容器,一个页面中可以有多个嵌入div容器,每个嵌入div容器中可以嵌入统计项中的一个或多个图表 -->  
  <div id="your-page-container1"></div>
  <div id="your-page-container2"></div>
  <!-- 引入资源文件 -->
  <script src="http://10.206.6.31:8181/open/lighthouse-external-embed.js"></script>
  <link rel="stylesheet" href="http://10.206.6.31:8181/open/lighthouse-external-embed.css" />
  <script>
    <!-- 渲染参数设置,非必要参数,可以根据需要选择设置 -->
    const extendConfig = {
        'theme':'light',
        'lang':'zh-CN',
        'indicator-0':{
            'title':{
                show:true,
                specify:'测试图表1',
            }
        },
        'indicator-1':{
            'title':{
                show:true,
                specify:'测试图表2',
            }
        },
        'indicator-2':{
            'title':{
                show:true,
                specify:'测试图表3',
            }
        },
        'indicator-3':{
            'title':{
                show:true,
                specify:'测试图表4',
            }
        }
    }
    LightHouse.renderStat('your-page-container1','caller:test_caller','wTSdRfENOXdzpeXaqQOOX4Ol34p1GX8Fh4oe8Rfq',1100619,[0,1,2,3],extendConfig);
    LightHouse.renderStat('your-page-container2','caller:test_caller','wTSdRfENOXdzpeXaqQOOX4Ol34p1GX8Fh4oe8Rfq',1100619,[0,1,2],extendConfig);
  </script>
</body>
</html>

图表渲染函数为:

LightHouse.renderStat('your-page-container1','caller:test_caller','wTSdRfENOXdzpeXaqQOOX4Ol34p1GX8Fh4oe8Rfq',1100619,[0,1,2,3],extendConfig);

参数:

  • div,渲染容器
  • callerName,调用方名称
  • callerKey,调用方秘钥
  • statId,要嵌入的统计项ID
  • indicatorIndexes,要嵌入的图表index,xl-lighthouse中每个统计项都一个包括一个或多个统计运算函数,使用Index标识每个函数,按照:整体指标、每个统计运算函数指标、limit指标依次排序。 比如:在一个点击率计算统计项中:

     <stat-item title="每小时_各省份_点击率top50" stat="count(behavior_type == '点击')/count(behavior_type == '曝光')" dimens="province" limit="top50"/>
    

    其中 0:表示点击率图表,1:表示点击量图表,2:表示总用户行为曝光量图表,3:表示:limit图表。 如果指定 [0,1,2,3] 则表示将所有图标都嵌入到div中; 如果指定 [0] 则表示只嵌入点击率图表; 如果指定 [2,3]则表示嵌入曝光量图表和limit图表;

  • extendConfig,渲染设置参数 其中theme:表示主题,可选择包括light或dark lang:表示语言,可选包括zh-CN或en-US indicator-#参数用于给每个图标指定是否显示title和指定显示的title名称。

React项目嵌入示例

import React, { useEffect } from 'react';

declare global {
    interface Window {
        LightHouse: any;
    }
}

function MyComponent({ containerId, extendConfig }) {

    useEffect(() => {
        const script = document.createElement('script');
        script.src = 'http://10.206.6.31:8181/open/lighthouse-external-embed.js';
        script.async = true;

        const link = document.createElement('link');
        link.rel = 'stylesheet';
        link.href = 'http://10.206.6.31:8181/open/lighthouse-external-embed.css';
        document.head.appendChild(link);

        document.body.appendChild(script);

        script.onload = () => {
            if (typeof window.LightHouse !== 'undefined' && window.LightHouse.renderStat) {
                window.LightHouse.renderStat(
                    containerId,
                    'caller:lighthouse_test_call',
                    'aod36BtsDqLIevpCTIpPgP4MZLkujBpDUPLy9oGd',
                    1100619,
                    [0]
                );
            } else {
                console.warn('LightHouse is not available.');
            }
        };
        return () => {
            document.body.removeChild(script);
            document.head.removeChild(link);
        };
    }, [containerId]);

    return <div id={containerId}></div>;
};

export default MyComponent;

Vue项目嵌入示例

 <template>
  <div>
    <div id="your-page-container"></div> 
  </div>
</template>

<script>
export default {
  name: "ExternalJsComponent",
  mounted() {
    this.loadExternalStylesheet("http://10.206.6.31:8181/open/lighthouse-external-embed.css");
    this.loadExternalScript("http://10.206.6.31:8181/open/lighthouse-external-embed.js", () => {
      this.renderExternalComponent();
    });
  },
  methods: {
    loadExternalStylesheet(href) {
      const link = document.createElement('link');
      link.rel = 'stylesheet';
      link.href = href;
      document.head.appendChild(link);
    },
    loadExternalScript(src, callback) {
      const script = document.createElement("script");
      script.src = src;
      script.onload = callback;
      script.onerror = () => {
        console.error(`Script load error for ${src}`);
      };
      document.body.appendChild(script);
    },
    renderExternalComponent() {
      const extendConfig = {
        theme: 'light',
        lang: 'en-US',
      };

      if (typeof LightHouse !== 'undefined' && LightHouse.renderStat) {
        LightHouse.renderStat(
          'your-page-container',
          'caller:lighthouse_test_call',
          'aod36BtsDqLIevpCTIpPgP4MZLkujBpDUPLy9oGd',
          1100619,
          [0]
        );
      } else {
        console.error('LightHouse is not defined.');
      }
    },
  },
};
</script>

<style scoped>
/* Vue 组件的样式 */
</style>

视图嵌入

视图嵌入函数定义:


LightHouse.renderView('your-page-container','caller:test_caller','wTSdRfENOXdzpeXaqQOOX4Ol34p1GX8Fh4oe8Rfq',1100042,['Widget-Cidkq'],extendConfig);
LightHouse.renderView('your-page-container2','caller:test_caller','wTSdRfENOXdzpeXaqQOOX4Ol34p1GX8Fh4oe8Rfq',1100042,['Widget-Cidkq'],extendConfig);
const extendViewConfig:ViewOpenExtendConfig = {
        'theme':'light',
        'lang':'zh-CN',
        'header':{
            'show':true,
            'specifyTitle':'测试看板'
        },
    }

参数:

  • div,渲染容器
  • callerName,调用方名称
  • callerKey,调用方秘钥
  • viewId,要嵌入的视图ID
  • widgetKeys,要嵌入视图中的组件key,可以指定视图中的任意一个或多个组件,如果不指定则默认嵌入整个视图。
  • extendConfig,扩展参数。 theme:主题; lang:语言; header.show:是否显示Header; specifyTitle:指定header的显示名称;

其他逻辑与统计项一致。

results matching ""

    No results matching ""