UNPKG

vue-django

Version:

个人实验项目, 本框架的目标是借鉴并超越django admin的自动化思想, 实现UI前端的极简快速定制开发

106 lines (96 loc) 2.56 kB
/** * Created by denishuang on 2019/8/25. */ import {mergeWith, isArray} from 'lodash' export const DEFAULT_PAGE_SIZE = 20 export const DEFAULT_MAX_PAGE_SIZE = 1000 function customizer(objValue, srcValue) { if (isArray(objValue)) { return srcValue } } export function mergeOptions(a, b) { return mergeWith(a, b, customizer) } export function genSpanMap(data, fields, group) { let vs = data let fs = fields let m = {} let lm = {} let pm = {} vs.forEach((r, i) => { m[i] = {} let b = true fs.forEach((f, j) => { if (group > 0 && j >= group) { m[i][j] = 1 return } if (b === false || r[f] !== lm[f]) { let c = pm[f] || 0 m[i - c][j] = c pm[f] = 0 b = false } pm[f] = pm[f] + 1 m[i][j] = 0 lm[f] = r[f] }) }) fs.forEach((f, j) => { let c = pm[f] || 1 m[vs.length - c][j] = c }) // console.log(m) return m } export function flatten(ns, children_field_name) { let r = [] ns.forEach(a => { let sns = a[children_field_name] if (sns) { r = r.concat(flatten(sns, children_field_name)) } else { let n = Object.assign({}, a) // delete n[children_field_name] r.push(n) } }) return r } export function csv2array(s, delimiter) { delimiter = delimiter || '\t' return s.split('\n').map(l => l.split(delimiter)) } export function guessDelimit(l, allDelimits) { allDelimits = allDelimits || [',', '\t', '|'] return allDelimits.map((a) => { return [l.split(a).length, a] }).sort().reverse()[0][1] } export function rowIsEmpty(obj) { return Object.values(obj).find(a => a === 0 || ![undefined, null, ''].includes(a)) === undefined } export function clearEmptyRow(table) { return table.filter(r => !rowIsEmpty(r)) } export function autoFill(table, items, group) { let lr = undefined table.forEach(r => { if (lr) { let b = true items.forEach((i, j) => { if (group > 0 && j >= group) { return } if ( b && [undefined, null, ''].includes(r[i.name])) { r[i.name] = lr[i.name] } else { b = false } }) } lr = r }) return table }