0.0.3 • Published 6 years ago

mini-report v0.0.3

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

Mini Report

Report Data Conversion

Install

  • npm install mini-report --save-dev

How to use

Prepaire Data

let data = {
    fields: ['name', 'subject', 'score'],
    data: [
        ['张三', '语文', 86],
        ['李四', '语文', 92],
        ['王五', '语文', 56],
        ['张三', '数学', 100],
        ['李四', '数学', 88],
        ['王五', '数学', 98],
        ['张三', '英语', 62],
        ['李四', '英语', 83]
    ]
}
  • The data format is similar to the database table. The header attribute is the header field, and the data attribute is table data

Require Library

let Report = require('../index')
1. List
Report.format(data, [{ converge: 'v' }, 2, 1])
// The same way of calling: 
// Report.format(data, [{ converge: 'v' }, 'score', 'subject'])
// Report.format(data, [{ converge: 'v' }, { field: 'score' }, { field: 'subject' }])

output:

'score''subject'
86'语文'
92'语文'
56'语文'
100'数学'
88'数学'
98'数学'
62'英语'
83'英语'

2. Formula

Report.format(data, [{
    converge: 'v',
    formula: 'sum'
}, 0, 1, 2], {
    name: '姓名',
    subject: '科目',
    score: '成绩'
})

output:

'姓名''科目''成绩'
'张三''语文'86
'李四''语文'92
'王五''语文'56
'张三''数学'100
'李四''数学'88
'王五''数学'98
'张三''英语'62
'李四''英语'83
''''665

3. Multilevel Formula

Report.format(data, [{
    field: 0,
    converge: 'v',
    formula: {
        formula: 'sum',
        label: '总分'
    }
}, {
    field: 1,
    converge: 'v',
    formula: {
        formula: 'sum',
        label: '总成绩'
    }
}, 2])

output:

'name''subject''score'
'张三''语文'86
'''数学'100
'''英语'62
'''总成绩'248
'李四''语文'92
'''数学'88
'''英语'83
'''总成绩'263
'王五''语文'56
'''数学'98
'''总成绩'154
'总分'''665

4. Cross Formula

Report.format(data, [{
    field: 0,
    converge: 'v',
    formula: 'avg'
}, {
    field: 1,
    converge: 'h',
    formula: 'sum'
}, 2])

output:

'name''语文''数学''英语''sum'
'张三'8610062248
'李四'928883263
'王五'56980154
'avg'78.0095.3348.33221.67

5. Cross Formula without Detail

Report.format(data, [{
    field: 0,
    converge: 'v',
    formula: 'avg'
}, {
    field: 1,
    converge: 'h',
    formula: {
        detail: false,
        formula: 'sum'
    }
}, 2])

output:

'name''sum'
'张三'248
'李四'263
'王五'154
'avg'221.67

6. Flat Formula

Report.format(data, [{
    converge: 'v'
}, {
    field: 1,
    converge: 'v',
    formula: {
        formula: 'sum',
        field: 2
    }
}, 2])

output:

'subject''sum''score'
'语文'23486
''''92
''''56
'数学'286100
''''88
''''98
'英语'14562
''''83

7. Multilevel Cross Formula

Report.format({
    fields: ['province', 'city', 'count', 'industry', 'type'],
    data: [
        ["湖北", "武汉", 18000, "房地产", "收入"],
        ["湖北", "武汉", 10000, "房地产", "收入"],
        ["湖北", "武汉", 2000, "卫生", "支出"],
        ["湖北", "武汉", 1200, "卫生", "支出"],
        ["湖北", "武汉", 8000, "卫生", "收入"],
        ["湖北", "武汉", 12000, "房地产", "支出"],
        ["湖北", "黄石", 1500, "卫生", "支出"],
        ["湖北", "黄石", 3500, "卫生", "收入"],
        ["湖北", "襄阳", 15800, "房地产", "收入"],
        ["湖北", "襄阳", 5800, "卫生", "收入"],
        ["湖北", "襄阳", 11800, "房地产", "支出"],
        ["湖北", "襄阳", 1800, "卫生", "支出"],
        ["湖南", "长沙", 16000, "房地产", "收入"],
        ["湖南", "长沙", 6000, "卫生", "收入"],
        ["湖南", "长沙", 11500, "房地产", "支出"],
        ["湖南", "长沙", 1500, "卫生", "支出"],
        ["湖南", "岳阳", 13600, "房地产", "收入"],
        ["湖南", "岳阳", 3600, "卫生", "收入"],
        ["湖南", "岳阳", 11000, "房地产", "支出"],
        ["湖南", "岳阳", 1000, "卫生", "支出"],
        ["江西", "南昌", 15400, "房地产", "收入"],
        ["江西", "南昌", 5400, "卫生", "收入"],
        ["江西", "南昌", 11800, "房地产", "支出"],
        ["江西", "南昌", 1800, "卫生", "支出"],
        ["江西", "九江", 14800, "房地产", "收入"],
        ["江西", "九江", 4800, "卫生", "收入"],
        ["江西", "九江", 11600, "房地产", "支出"],
        ["江西", "九江", 1600, "卫生", "支出"]
    ]
}, [{
    field: 0,
    formula: [{ formula: 'sum', label: '全国合计' }],
    converge: 'v'
}, {
    field: 1,
    formula: [{ formula: 'sum', label: '省合计' }],
    converge: 'v'
}, {
    field: 3,
    formula: [{
        formula: 'fmt',
        label: '总利润',
        format: function(data) {
            let fmt = 0;
            for (let i = 0, len = data.length; i < len; i += 2) {
                fmt += (data[i] - data[i + 1]);
            }
            return fmt;
        }
    }],
    converge: 'h'
}, {
    field: 4,
    formula: [{
        formula: 'fmt',
        label: '利润',
        format: function(data) {
            return data[0] - data[1];
        }
    }],
    converge: 'h'
}, {
    field: 2
}], { province: '省', city: '市' })

output:

房地产''''卫生''''总利润
''''收入支出利润收入支出利润''
湖北武汉28000120001600080003200480020800
''黄石0003500150020002000
''襄阳158001180040005800180040008000
''省合计4380023800200001730065001080030800
湖南岳阳136001100026003600100026005200
''长沙160001150045006000150045009000
''省合计2960022500710096002500710014200
江西九江148001160032004800160032006400
''南昌154001180036005400180036007200
''省合计30200234006800102003400680013600
全国合计''103600697003390037100124002470058600

API

1. Conversion Of Data

Report.format(data, fields, options)
data: Object
  • fields
  • data
fields: Array(Number/String/Object)
  • Number: Field Index
  • String: Field String
  • Object
    • field(Number/String)
    • converge: 'h'/'v'
    • formula(String/Object)
      • String: 'sum', 'avg', 'cnt', 'lst', 'fmt'
      • Object
        • formula(String)
        • label(String/Function)
        • field(Number/String)
        • format(Function/Object)
        • detail(Boolean)
options: Object
  • {field}(String)
  • {formula}(String)

2. Configuring Conversion Parameters

Report.config(options)
options
  • VALUE(String): The result of the value key in the result data, the default is '$val'
  • ROWSPAN(String): The result of the rowspan key in the result data, the default is '$rs'
  • COLSPAN(String): The result of the colspan key in the result data, the default is '$cs'
  • {field}(String)
  • {formula}(String)

LICENSE

MIT