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

ngx-ourpalm-table

v2.1.10

Published

基于angular2.x、bootstrap的表格控件,支持编程式和声明式列配置

Downloads

26

Readme

ngx-ourpalm-table

基于angular5.x、bootstrap的表格控件,支持编程式和声明式列配置

Installation

npm install ngx-ourpalm-table --save

Demo(声明式配置) plnkr

<ourpalm-table [table]="table">
    <ourpalm-table-column [column]="{header: '全选', field: 'checkAll', checkbox: true}"></ourpalm-table-column>
    <ourpalm-table-column [column]="{header: '序号', field: 'number', rownumbers: true}"></ourpalm-table-column>
    <ourpalm-table-column [column]="{header: '姓名', field: 'name'}">
        <ng-template let-data="$row">
            {{data.name}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-column [column]="{header: '年龄', field: 'age'}">
        <ng-template let-row="$row">
            {{row.age}}
        </ng-template>
    </ourpalm-table-column>
</ourpalm-table>
export class AppComponent {

    table: OurpalmTable;

    constructor() {
        this.table = new OurpalmTable({
            loadData: (table: OurpalmTable, callback: (page: Page) => {}) => {
                var start = (table.currentPage - 1) * table.pageSize + 1;
                var end = start + table.pageSize;
                end = end > 86 ? 86 : end;
                //构造服务器假数据
                var rows = [];
                for (; start < end; start++) {
                    rows.push({
                        name: `zhangsan${start}`,
                        age: start,
                        email: `zhangsan${start}@163.com`
                    });
                }

                setTimeout(function () {
                    callback({
                        total: 86,
                        rows: rows
                    });
                }, 300);
            }
        });
    }
}

Demo(编程式配置) plnkr

<ourpalm-table [table]="table"></ourpalm-table>
export class AppComponent {

    table: OurpalmTable;

    constructor() {
        this.table = new OurpalmTable({
            columns: [{
                header: '全选',
                checkbox: true
            }, {
                header: '序号',
                rownumbers: true
            }, {
                header: '姓名',
                field: 'name'
            }, {
                header: '年龄',
                field: 'age'
            }],
            loadData: (table: OurpalmTable, callback: (page: Page) => {}) => {
                var start = (table.currentPage - 1) * table.pageSize + 1;
                var end = start + table.pageSize;
                end = end > 86 ? 86 : end;
                //构造服务器假数据
                var rows = [];
                for (; start < end; start++) {
                    rows.push({
                        name: `zhangsan${start}`,
                        age: start,
                        email: `zhangsan${start}@163.com`
                    });
                }

                setTimeout(function () {
                    callback({
                        total: 86,
                        rows: rows
                    });
                }, 300);
            }
        });
    }
}

Demo(Card View)

<ourpalm-table [table]="table">
    <ourpalm-table-column
            [column]="{header: 'Select', field: 'checkAll', checkbox: true}"></ourpalm-table-column>
    <ourpalm-table-column
            [column]="{header: 'Number', field: 'number', rownumbers: true}"></ourpalm-table-column>
    <ourpalm-table-column [column]="{header: 'ID', field: 'ID'}">
        <ng-template let-row="$row">
            {{row.ID}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-column [column]="{header: 'Price', field: 'Price', sort: true}">
        <ng-template let-row="$row">
            {{row.Price}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-column [column]="{header: 'Cost', field: 'Cost'}">
        <ng-template let-row="$row">
            {{row.Cost}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-column [column]="{header: 'Url', field: 'Url'}">
        <ng-template let-row="$row">
            {{row.Url}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-column [column]="{header: 'Other', field: 'Other'}">
        <ng-template let-row="$row">
            {{row.Other}}
        </ng-template>
    </ourpalm-table-column>
    <ourpalm-table-rowview>
        <ng-template let-row="$row" let-index="$index">
            <div>
                <div style="display:inline-block;float:left;"><img [src]="row.Url"></div>
                <div style="text-align:left;padding-left:10px;display:inline-block;overflow:auto;">
                    <p>ID:{{row.ID}}</p>
                    <p>Price:{{row.Price}}</p>
                    <p>Cost:{{row.Cost}}</p>
                    <p style="overflow:auto">Other:{{row.Other}}</p>
                </div>
            </div>
        </ng-template>
    </ourpalm-table-rowview>
</ourpalm-table>
export class CardViewComponent {

    table: OurpalmTable;

    constructor(private http: Http) {
        this.table = new OurpalmTable({
            rowViewShowType: 'both',
            loadData: (table: OurpalmTable, callback: (page: Page) => {}) => {
                this.http
                    .get('http://rapapi.org/mockjsdata/3828/ngx-ourpalm-table/cardview.do')
                    .map((response) => response.json())
                    .subscribe((result) => {
                        console.log(result);
                        callback({
                            total: result.data.length,
                            rows: result.data
                        });
                    });
            }
        });
    }
}

表属性

| 属性名 | 属性值类型 | 默认值 | 描述 | |-------------------------|-------------------|--------------------|-----------------------------| | tableClass | string | table table-bordered table-striped table-hover text-center | 自定义表格的class | | autoLoadData | boolean | true | 初始化表格的时候是否自动加载第一页 | | pagination | boolean | true | 是否显示分页控件 | | singleSelect | boolean | false | 是否限制只能选中一行 | | serverSort | boolean | true | 是否要服务器排序 | | multiSort | boolean | true | 是否允许多列排序 | | pageList | array | [10,20,30,40,50] | 在设置分页属性的时候 初始化页面大小选择列表 | | pageSize | int | 10 | 在设置分页属性的时候初始化页面大小 | | skipPage | boolean | true | 在设置分页属性的时候是否允许用户跳转页面 | | cacheKey | string | '' | 客户端存储table信息是对应存放在localStorage中的key | | cachePageSize | boolean | false | 是否在客户端存储table的页大小,刷新的时候页大小不变,保存在localStorage中,key为${cacheKey}-pageSize | | cacheColumns | boolean | false | 是否在客户端存在table的列隐藏信息,刷新的时候列的隐藏信息不变,保存在localStorage中,key为${cacheKey}-columns | | pagePosition | string | bottom | 分页条在那里显示可取值 'bottom', 'top', 'both' | | showRefreshBtn | boolean | true | 是否显示刷新按钮 | | showSettingBtn | boolean | true | 是否显示设置按钮 | | checkOnSelect | boolean | true | 选择CheckBox时级联选中当前行 | | selectOnCheck | boolean | true | 选择当前行时级联选中checkbox | | ctrlSelect | boolean | false | 多选时需要按住ctrl键 | | rowMenus | any[] | null | 右键上下文菜单 | | rowView | RowView | null | 自定义row显示 | | rowViewShowType | 'rowView' | 'column' | 'both' | rowView | 自定义行渲染模式 |

列属性

| 属性名 | 属性值类型 | 默认值 | 描述 | |-------------------------|-------------------|--------------------|-----------------------------| | header | string | '' | 表头 | | field | string | '' | 字段名称 | | sort | boolean | false | 是否列排序 | | sortOrder | string | null | 列排序方向,取值 asc 或 desc 或 null| | rownumbers | boolean | false | 是否为行号列 1...* | | show | boolean | true | 是否隐藏列 | | checkbox | boolean | false | 是否为多选列 | | sorter | function | undefined | 服务器排序不需要设置,客户端排序需要设置,sorter: (column, row1, row2) => row1[column.field] - row2[column.field] | | styler | ()=>any | any | '' | 设置表格cell的样式,styler: (rowIndex, columnIndex, rowData) => return { color: 'red' } or styler: { color: 'red' } | | clazz | string | '' | 设置表格cell的class | | disabledContextMenu | boolean | false | 是否在当前列上禁用上下文菜单 |

右键菜单属性

| 属性名 | 属性值类型 | 默认值 | 描述 | |-------------------------|-------------------|--------------------|-----------------------------| | text | string | '' | 菜单名字 | | iconCls | string | '' | 菜单icon | | separator | boolean | false | 分割线 | | show | boolean | ()=>boolean | true | 是否显示 | | onclick | function | false | 点击时触发 | | submenus | any[] | null | 子菜单 |

方法

| 方法名 | 参数 | 描述 | |-------------------------|-------------------|-------------------------------------------------| | getDisplayedColumns | | 获取显示的列信息 | | getDisplayedRows | | 获取显示的行信息 | | getSelectedRows | | 获取选中的行信息 | | getCheck edRows | | 获取勾选中的行信息 | | getSortColumns | | 获取排序的列信息 | | changeColumns | columns[] | 动态修改表的列定义,只支持编程方式,不支持声明式方式 | | chagePageSize | pageSize | 动态修改表的分页大小 | | firstPage | | 跳转到第一页 | | prePage | | 跳转到上一页 | | nextPage | | 跳转到下一页 | | lastPage | | 跳转到最后一页 | | refresh | | 刷新当前页 | | gotoSkipPage | page:number | 跳转页 1...最大页 | | setOptions |options:OurpalmTable| 修改表配置项,修改后将触发加载数据 | | setPageData | pageData: Page | 设置当页数据 | | checkAll | | 勾选当前页中的所有行 | | uncheckAll | | 取消勾选当前页中的所有行 | | checkRow | index | 勾选一行,行索引从0开始,传入行索引 | | uncheckRow | index | 取消勾选一行,行索引从0开始,传入行索引 | | openSetting | | 打开设置列面板 |

事件

| 事件名 | 参数 | 描述 | |-------------------------|-------------------|-------------------------------------------------| | onClickRow | rowIndex, rowData | 在用户点击一行的时候触发,参数包括:rowIndex:点击的行的索引值,该索引值从0开始。rowData:对应于点击行的记录。 | | onDblClickRow | rowIndex, rowData | 在用户双击一行的时候触发,参数包括:rowIndex:点击的行的索引值,该索引值从0开始。rowData:对应于点击行的记录。 | | onClickCell | rowIndex, cellIndex, rowData, column | 在用户点击一个单元格的时候触发。 | | onDblClickCell | rowIndex, cellIndex, rowData, column | 在用户双击一个单元格的时候触发。 | | onHeaderCheckBoxChange| | 选择header中多选框时触发 | | onRowCheckBoxChange | rowData, rowIndex | 用户选中表格行时触发 | | trackByFun | rowIndex, rowData | ngFor tr trackBy |

全局配置

@NgModule({
    imports: [
        OurpalmTableModule.forRoot()
    ]
})
export class AppModule {

    constructor(private tableConfig: TableConfig) {
        this.tableConfig.config = {
            pageSize: 50,
            pageList: [50, 100, 200]
        }
    }
}

创建table

@Component({
    selector: 'dynamic-table',
    template: `
        <button (click)="log()">click event test</button>
        <button (click)="changeTable1()">table01</button>
        <button (click)="changeTable2()">table02</button>
        <ourpalm-table [table]="table"></ourpalm-table>
    `
})
export class DynamicTableComponent {

    table: OurpalmTable;

    constructor(private tableConfig: TableConfig) {

        //不继承全局配置
        this.table = new Table({
            cacheKey: 'table01',
            cachePageSize: true,
            cacheColumns: true,
            loadData: () => {
            }
        });

        //继承全局配置
        this.table = this.tableConfig.create({
            cacheKey: 'table01',
            cachePageSize: true,
            cacheColumns: true,
            pagePosition: 'both',
            loadData: () => {
            }
        });

    }
}