# API

suwis-paths api用法详解

# from 入口来源

此数据为图表的第一列数据,用来展示进入落地页的所有来源,数据格式为一个对象数组

数据结构示例

[{
  name: '百度',
  pv: '122034',
  uv: '12123'
}, {
  name: '谷歌',
  pv: '365642',
  uv: '2323'
}, {
  name: '360',
  pv: '12232',
  uv: '1213'
}]

# land 落地页

落地页为图表中的第二列数据,只包含一个节点,用来展示需要统计的落地页的信息

数据结构示例

{
  name: '公司官网',
  pv: '54654646',
  uv: '3534534'
}

# towards 落地页跳出走向

用于展示,用户进入落地页跳出离开后都走向了哪些页面,便于分析用户的行为轨迹

数据结构示例

[{
  name: '产品列表',
  pv: '35455',
  uv: '4875',
  item_next: 'Y', // 是否有下级
  children: [{
      name: '智能办公桌',
      pv: '3253',
      uv: '2333'
    },
    {
      name: '按摩椅',
      pv: '325',
      uv: '223'
    }
  ]
}, {
  name: '售后支持',
  pv: '13455',
  uv: '2323',
  item_next: 'Y',
  children: [{
      name: '常见问题',
      pv: '323',
      uv: '133'
    },
    {
      name: '联系我们',
      pv: '235',
      uv: '22'
    }
  ]
}, {
  name: '合作伙伴',
  pv: '2323',
  uv: '1343',
  item_next: 'Y',
  children: [{
      name: '材料供应商',
      pv: '743',
      uv: '93'
    },
    {
      name: '加工供应商',
      pv: '532',
      uv: '678'
    }
  ]
}]

# options 图表配置

可对图表颜色、节点大小、节点文字序列化、滚动设置、容器尺寸等配置

数据结构说明

{
  // 节点间的水平距离, 默认180
  horizontalInterval: 180,
  // 图表每列最多渲染行
  maxRows: 12,
  // 子集key,通过此key访问数据结构中的子节点		
  childkey: 'children',
  // 渲染模式	canvas/svg 建议选择canvas
  renderer: 'canvas',
  // 网格用来控制整体节点的垂直偏移
  grid.top: 5,
  // 节点配置
  nodes: {
    // 节点宽度
    width: 230,
    // 节点高度
    height: 50,
    // 节点圆角
    radius: 10,
    // 节点标题 默认从对象数组中的name属性
    namekey: 'name',
    // 节点值
    valkey: 'value',
    // 节点显示文字
    text: (data) => {
      return data.item.value
    },
    // 重写节点上的样式
    render: (data) => {
      // tips 这里返回一个styleObject, 用于覆盖节点样式, styleObject 的属性参考文档下方描述
      return {}
    }
  },
  paths	自定义路径属性	Object	{}
  // 是否开启鼠标滚动
  mousewheel: false,
  // 是否可拖拽
  draggable: true,
  // 滚动条配置
  scrollbar:{
    // 滚动速度
    speed: 5,
    // 圆角
    radius: 5,
    // 滚动条高度
    height: 5
  },
  // 节点线条配置
  bezier: {
    opacity: 0.6,
    hoverOpacity: 0.8
  },
  // 列配置
  columns:{
    // 每列的头部标题
    headText: (data) => {
      return data.item.name
    },
    // 每列的低部标题
    footerText: (data) => {
      return data.item.name
    }
  },
  // 节点悬浮层配置
  layer: {
    // 悬浮窗宽度
    width: 230,
    // 悬浮窗高度
    height: 60,
    // 背景颜色
    fill: rgba(88, 94, 107, 1),
    // 文字填充颜色
    textFill: #fff,
    // 移动速度, 单位毫秒
    speed: 200,
    // 位置偏移量
    offset: 20,
    // 自动根据屏幕位置向右侧转向显示
    autodir: true,
    // 文本格式化函数
    text: (data) => {
      return data.item.pv + '\n' + data.item.uv
    }
  }
}

# styleObject 样式对象

用于配置节点样式的对象

数据结构说明

{
  // 描边样式。
  stroke: '#fff',
  // 不透明度。
  opacity: 0.8,
  // 阴影模糊大小。
  shadowBlur: 10,
  // 阴影颜色。
  shadowColor: '#fff',
  // 阴影横向偏移。
  shadowOffsetX: 0,
  // 阴影纵向偏移。
  shadowOffsetY: 0,
  // 线宽。
  lineWidth: 0,
  // 描边粗细不随缩放而改变,false 则会根据缩放同比例缩放描边粗细。
  strokeNoScale: false,
  // 文字样式,由 fontSize、 fontFamily、 fontStyle、 fontWeight 组成,建议分别设置这几项而非直接设置 font。
  font: '黑体 16px',
  // 同 CSS font-style。
  fontStyle: 'normal'
  // 同 CSS font-weight。
  fontWeight: 'normal',
  // 同 CSS font-size。
  fontSize: '16px',
  // 同 CSS font-family。
  fontFamily: '黑体',
  // 文字填充样式。
  textFill: '#fff',
  // 文字水平对齐方式,可取值:'left'、 'center'、 'right',默认根据 textPosition 计算。
  textAlign: 'left',
  // 文字垂直对齐方式,可取值:'top'、 'middle'、 'bottom',默认根据 textPosition 计算。
  textVerticalAlign: 'top',
  // 文字内边距,可以是 2 或 [2, 4] 或 [2, 3, 4, 5] 的形式,同 CSS Padding,单位是像素。
  textPadding: 2,
  // 当文字过长显示不下时,显示省略号表示。
  truncate:{
    // 包含了 textPadding 的宽度,超出这个范围就裁剪。
    outerWidth: 30,
    // 包含了 textPadding 的高度,超出这个范围就裁剪。
    outerHeight: 30,
    // 默认用省略号表示超出部分,也可以对其进行自定义。
    ellipsis: '...',
    // 如果空间过小,导致省略号也显示不下,但是又不想空着,可能得有个什么标记表示这里是有字符的,就用个 “点”,就是在这个 placeholder 里设置。
    placeholder: '内容'
  }
}

# lazyLoad 懒加载

当节点的值 item_next = 'Y' 的时候,节点右侧会显示下拉箭头, 点击节点如果节点 有 children 则直接展开显示 children 的值, 否则将会尝试调用 lazyLoad 获取节点的子集

lazyLoad 方法示例

lazyLoad(opt) {
  // TODO: 获取集合
  // 可在此执行ajax操作
  let subitems = [{
    name: '远程节点',
    pv: '324242',
    uv: '2342',
    item_next: 'Y'
  }]
  opt.resolve(subitems)
}
上次更新: 7/25/2020, 11:26:25 PM