Przeglądaj źródła

Table: respect column_options

master
Bing Sun 5 lat temu
rodzic
commit
b35746b05e
Podpisane przez: sunb ID klucza GPG: F7795F8C590626AB
1 zmienionych plików z 21 dodań i 10 usunięć
  1. +21
    -10
      src/components/Table.js

+ 21
- 10
src/components/Table.js Wyświetl plik

@@ -1,7 +1,7 @@
/*
columns: <displayed columns>,
columns_options: {}
serial: true/false,
model_options: <model.options>
model: model
*/

export default initial_vnode => {
@@ -9,20 +9,23 @@ export default initial_vnode => {
let model = initial_vnode.attrs.model

// displayed columns
let columns = initial_vnode.attrs.columns
if (!columns) {
if (model.configs().selects) {
columns = model.configs().selects.map(select => ({
label: select.alias || select.label
}))
}
let columns = []
if (model.configs().selects) {
// construct by selects
columns = model.configs().selects.map(select => ({
label: select.alias || select.label
}))
// merge column options
columns = columns.map(
column => column.label in initial_vnode.attrs.columns_options
? {...initial_vnode.attrs.columns_options[column.label], ...column} : column
).filter(column => !('display' in column) || column.display != false)
}

// pagination
let offset = 0
let limit = initial_vnode.attrs.pagination && initial_vnode.attrs.pagination.size || Infinity
let pages = [] // [{activie: boolean, show: boolean}]

function generate_pages() {
if (limit > 0 && limit < Infinity && model.cache().count) {
let active_page = offset / limit
@@ -63,7 +66,13 @@ export default initial_vnode => {
view: vnode => {
// try to generate columns if it is still uninitialized
if (typeof columns == 'undefined' || columns.length == 0) {
// construct by data
columns = model.data(offset, limit) && model.data(offset, limit).length && Object.keys(model.data(offset, limit)[0]).map(key => ({label: key})) || []
// merge column options
columns = columns.map(
column => column.label in initial_vnode.attrs.columns_options
? {...initial_vnode.attrs.columns_options[column.label], ...column} : column
).filter(column => !('display' in column) || column.display != false)
}

// refresh paginations
@@ -76,6 +85,7 @@ export default initial_vnode => {
vnode.attrs.serial ? m('th.centered', '序号') : undefined,
...columns.map(column => m('th.centered', column.label))
])),
// table content
model.data(offset, limit).length ? m('tbody', model.data(offset, limit).map((row, i) => m('tr', [
vnode.attrs.serial ? m('td.centered', offset+i+1) : undefined,
...columns.map(column => {
@@ -88,6 +98,7 @@ export default initial_vnode => {
})
]))) : m('', 'Empty')
]),
// page navigation
pages.length > 1 ?
m('.centered',
m('.pagination.centered', pages.map((page, i) => page.show ? m('a', {


Ładowanie…
Anuluj
Zapisz