npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

vue-vtable-grid

v1.0.1

Published

A high-performance table component for Vue.js

Downloads

22

Readme

Vue-Vtable-Grid

  • 😊 基于 Vue 2.0 开发;
  • 👍 使用 VTable

安装

npm i vue-vtable-grid -S
# OR
yarn add vue-vtable-grid -S

全局使用

// main.js
import Vue from 'vue';
import App from './App.vue';
// ...
import vueVtableGrid from 'vue-vtable-grid';
Vue.use(vueVtableGrid);
// ...
new Vue({
  el: '#app',
  render: (h) => h(App),
});
<template>
  <div id="app">
    <vue-vtable-grid
      ref="table"
      @click-cell="clickCell"
      :records="records"
      :columns="columns"
      :options="options"
    />
  </div>
</template>

<script>
const generatePersons = (count) => {
  return Array.from(new Array(count)).map((_, i) => ({
    id: i + 1,
    email1: `${i + 1}@xxx.com`,
    name: `小明${i + 1}`,
    lastName: '王',
    date1: '2022年9月1日',
    tel: '000-0000-0000',
    sex: i % 2 === 0 ? 'boy' : 'girl',
    work: i % 2 === 0 ? 'back-end engineer' : 'front-end engineer',
    city: 'beijing',
  }));
};
export default {
  name: 'App',
  components: {
    // vtableGrid,
  },
  data() {
    return {
      records: [],
      columns: [
        {
          field: 'id',
          title: 'ID ff',
          width: '1%',
          minWidth: 200,
          sort: true,
        },
        {
          field: 'email1',
          title: 'email',
          width: 200,
          sort: true,
        },
        {
          field: 'date1',
          title: 'birthday',
          width: 200,
        },
        {
          field: 'sex',
          title: 'sex',
          width: 100,
        },
        {
          field: 'tel',
          title: 'telephone',
          width: 150,
        },
        {
          field: 'work',
          title: 'job',
          width: 200,
        },
        {
          field: 'city',
          title: 'city',
          width: 150,
        },
      ],
      options: {},
    };
  },
  methods: {
    clickCell(obj) {
      console.log(obj);
    },
  },
  created() {
    this.records = generatePersons(100000);
    this.options = {
      dragHeaderMode: 'all',
    };
  },
};
</script>
<style>
* {
  margin: 0;
  padding: 0;
}
html,
body {
  width: 100%;
  height: 100%;
}
#app {
  width: 100%;
  height: 100%;
}
</style>

局部引入

基本用法

<template>
  <div id="app">
    <vue-vtable-grid
      ref="table"
      @click-cell="clickCell"
      :records="records"
      :columns="columns"
      :options="options"
    />
  </div>
</template>

<script>
import vueVtableGrid from 'vue-vtable-grid';
const generatePersons = (count) => {
  return Array.from(new Array(count)).map((_, i) => ({
    id: i + 1,
    email1: `${i + 1}@xxx.com`,
    name: `小明${i + 1}`,
    lastName: '王',
    date1: '2022年9月1日',
    tel: '000-0000-0000',
    sex: i % 2 === 0 ? 'boy' : 'girl',
    work: i % 2 === 0 ? 'back-end engineer' : 'front-end engineer',
    city: 'beijing',
  }));
};
export default {
  name: 'App',
  components: {
    vueVtableGrid,
  },
  data() {
    return {
      records: [],
      columns: [
        {
          field: 'id',
          title: 'ID ff',
          width: '1%',
          minWidth: 200,
          sort: true,
        },
        {
          field: 'email1',
          title: 'email',
          width: 200,
          sort: true,
        },
        {
          field: 'date1',
          title: 'birthday',
          width: 200,
        },
        {
          field: 'sex',
          title: 'sex',
          width: 100,
        },
        {
          field: 'tel',
          title: 'telephone',
          width: 150,
        },
        {
          field: 'work',
          title: 'job',
          width: 200,
        },
        {
          field: 'city',
          title: 'city',
          width: 150,
        },
      ],
      options: {},
    };
  },
  methods: {
    clickCell(obj) {
      console.log(obj);
    },
  },
  created() {
    this.records = generatePersons(100000);
    this.options = {
      dragHeaderMode: 'all',
    };
  },
};
</script>
<style>
* {
  margin: 0;
  padding: 0;
}
html,
body {
  width: 100%;
  height: 100%;
}
#app {
  width: 100%;
  height: 100%;
}
</style>

属性

| 参数 | 说明 | 类型 | 可选值 | 默认值 | | ------- | ---------------------------------------------------------------------------- | ------ | ------ | ------ | | width | 表格宽度 | String | — | 100% | | height | 表格高度 | String | — | 100% | | records | 表格数据,详见records | Array | — | — | | columns | 表格列,,详见columns | Array | — | — | | options | 表格配置项,详见options | Object | — | — |

事件

详细参数见:Events

| 事件名 | 说明 | 参数 | | --------------------------- | -------------------------------------------------------------- | ---- | | click-cell | 鼠标点击单元格事件 | | | dblclick-cell | 鼠标双击单元格事件 | | | mousedown-cell | 单元格上鼠标按下事件 | | | mouseup-cell | 单元格鼠标松开事件 | | | selected-cell | 单元格选中状态改变事件 | | | keydown | 键盘按下事件 | | | mouseenter-table | 鼠标进入表格事件 | | | mouseleave-table | 鼠标离开表格事件 | | | mousemove-cell | 鼠标在某个单元格上移动事件 | | | mouseenter-cell | 鼠标进入单元格事件 | | | mouseleave-cell | 鼠标离开单元格事件 | | | contextmenu-cell | 单元格右键事件 | | | resize-column | 列宽调整事件 | | | resize-column-end | 列宽调整结束事件 | | | change-header-position | 拖拽表头移动位置的事件 | | | sort-click | 点击排序图标事件 | | | freeze-click | 点击固定列图标冻结或者解冻事件 | | | scroll | 滚动表格事件 | | | dropdownmenu-click | 点击下拉菜单图标事件 | | | mouseover-chart-symbol | 鼠标经过迷你图标记事件 | | | drag-select-end | 拖拽框选单元格鼠标松开事件 | | | dropdown-icon-click | 点击下拉菜单按钮 | | | dropdown-menu-clear | 清空下拉菜单事件(菜单显示时点击其他区域) | | | tree-hierarchy-state-change | 树形结构展开收起的点击事件 | | | show-menu | 显示菜单事件 | | | hide-menu | 隐藏菜单事件 | | | icon-click | icon 图标点击事件 | | | drillmenu-click | 下钻按钮点击事件。透视表专有事件 | | | pivot-sort-click | 透视表中排序图标点击事件。透视表专有事件 | | | legend-item-click | 图例项点击事件。图例专有事件 | | | legend-item-hover | 图例项 hover 事件。图例专有事件 | | | legend-item-unhover | 图例项 hover 到 unhover 事件。图例专有事件 | | | legend-change | 颜色图例,尺寸图例,用户操作图例范围后触发该事件。图例专有事件 | | | mouseenter-axis | 鼠标进入到坐标轴上事件。坐标轴专有事件 | | | mouseleave-axis | 鼠标离开坐标轴事件。坐标轴专有事件 | |

方法

详细参数见:Methods

| 事件名 | 说明 | 参数 | | --------------------------- | ---------------------------------------------------------------- | ------------------------ | | updateOption | 更新表格配置项,调用后会自动重绘 | options | | updateTheme | 更新表格主题,调用后会自动重绘 | theme | | updateColumns | 更新表格的 columns 字段配置信息,调用后会自动重绘。 | columns | | updatePagination | 更新页码配置信息 | pagination | | release | 销毁表格实例 | | | selectCell | 选中某个单元格 | col, row | | selectCells | 选中一个或者多个单元格区域 | [] | | getCellStyle | 获取某个单元格的样式 | col, row | | getAllCells | 获取所有单元格上下文信息 | colMaxCount, rowMaxCount | | getAllBodyCells | 获取所有 body 单元格上下文信息 | colMaxCount, rowMaxCount | | getAllColumnHeaderCells | 获取所有列表头单元格上下文信息 | colMaxCount, rowMaxCount | | getAllRowHeaderCells | 获取所有行表头单元格上下文信息 | colMaxCount, rowMaxCount | | getCellOverflowText | 获取有省略文字的的单元格文本内容 | col, row | | getCellHeaderPaths | 获取行列表头的路径 | col, row | | getCellAddress | 根据数据和 field 属性字段名称获取 body 中某条数据的行列号 | findTargetRecord, field | | getCellAddressByHeaderPaths | 针对透视表格的接口,根据要匹配表头维度路径来获取具体的单元格地址 | dimensionPaths | | scrollToCell | 滚动到具体某个单元格位置 | cellAddr | | updateSortState | 更新排序状态 | sortState, executeSort | | updatePivotSortState | 更新排序状态,PivotTable 专有 | pivotSortStateConfig | | setDropDownMenuHighlight | 设置下拉菜单选中状态 | | | showTooltip | 显示 tooltip 信息提示框 | col, row, tooltipOptions | | updateFilterRules | 更新数据过滤规则 | filterRules | | exportImg | 导出表格中当前可视区域的图片 | | | exportCellImg | 导出某个单元格图片 | col, row | | exportCellRangeImg | 导出某一片单元格区域的图片 | [] |