(config: Partial<Config>)
| 217 | } |
| 218 | |
| 219 | static createFromConfig(config: Partial<Config>): Header | null { |
| 220 | const header = new Header(); |
| 221 | |
| 222 | // TODO: this part needs some refactoring |
| 223 | if (config.from) { |
| 224 | header.columns = Header.fromHTMLTable(config.from).columns; |
| 225 | } else if (config.columns) { |
| 226 | header.columns = Header.fromColumns(config.columns).columns; |
| 227 | } else if ( |
| 228 | config.data && |
| 229 | typeof config.data[0] === 'object' && |
| 230 | !(config.data[0] instanceof Array) |
| 231 | ) { |
| 232 | // if data[0] is an object but not an Array |
| 233 | // used for when a JSON payload is provided |
| 234 | header.columns = Object.keys(config.data[0]).map((name) => { |
| 235 | return { name: name }; |
| 236 | }); |
| 237 | } |
| 238 | |
| 239 | if (header.columns.length) { |
| 240 | header.setID(); |
| 241 | header.setSort(config.sort); |
| 242 | header.setResizable(config.resizable); |
| 243 | header.populatePlugins(config.plugin, header.columns); |
| 244 | return header; |
| 245 | } |
| 246 | |
| 247 | return null; |
| 248 | } |
| 249 | |
| 250 | static fromHTMLTable(element: HTMLElement): Header { |
| 251 | const header = new Header(); |
no test coverage detected