Browse Source

Merge pull request #606 from ryandeba/thead-tbody-tfoot #563

Add new table components
pull/652/head
Artur Arseniev 9 years ago
committed by GitHub
parent
commit
e8864dc9f9
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 15
      src/dom_components/index.js
  2. 52
      src/dom_components/model/ComponentTable.js
  3. 62
      src/dom_components/model/ComponentTableBody.js
  4. 29
      src/dom_components/model/ComponentTableFoot.js
  5. 29
      src/dom_components/model/ComponentTableHead.js
  6. 1
      src/dom_components/model/ComponentTableRow.js
  7. 4
      src/dom_components/view/ComponentTableBodyView.js
  8. 4
      src/dom_components/view/ComponentTableFootView.js
  9. 4
      src/dom_components/view/ComponentTableHeadView.js

15
src/dom_components/index.js

@ -57,6 +57,21 @@ module.exports = () => {
model: require('./model/ComponentTable'),
view: require('./view/ComponentTableView'),
},
{
id: 'thead',
model: require('./model/ComponentTableHead'),
view: require('./view/ComponentTableHeadView'),
},
{
id: 'tbody',
model: require('./model/ComponentTableBody'),
view: require('./view/ComponentTableBodyView'),
},
{
id: 'tfoot',
model: require('./model/ComponentTableFoot'),
view: require('./view/ComponentTableFootView'),
},
{
id: 'map',
model: require('./model/ComponentMap'),

52
src/dom_components/model/ComponentTable.js

@ -5,20 +5,7 @@ module.exports = Component.extend({
defaults: _.extend({}, Component.prototype.defaults, {
type: 'table',
tagName: 'table',
droppable: ['tr', 'tbody', 'thead', 'tfoot'],
columns: 3,
rows: 2,
/*
traits: [{
label: 'Columns',
name: 'columns',
changeProp: 1,
},{
label: 'Rows',
name: 'rows',
changeProp: 1,
}]
*/
droppable: ['tbody', 'thead', 'tfoot'],
}),
initialize(o, opt) {
@ -29,43 +16,8 @@ module.exports = Component.extend({
// Init components if empty
if(!components.length){
var rowsToAdd = [];
while(rows--){
var columnsToAdd = [];
var clm = columns;
while (clm--) {
columnsToAdd.push({
type: 'cell',
classes: ['cell']
});
}
rowsToAdd.push({
type: 'row',
classes: ['row'],
components: columnsToAdd
});
}
components.add(rowsToAdd);
components.add({type: 'tbody'});
}
// Clean table from non rows
var rowsColl = [];
components.each(model => {
if(model.get('type') != 'row'){
model.get('components').each(row => {
if(row.get('type') == 'row'){
row.collection = components;
rowsColl.push(row);
}
});
}else{
rowsColl.push(model);
}
});
components.reset(rowsColl);
},
},{

62
src/dom_components/model/ComponentTableBody.js

@ -0,0 +1,62 @@
var Component = require('./Component');
module.exports = Component.extend({
defaults: _.extend({}, Component.prototype.defaults, {
type: 'tbody',
tagName: 'tbody',
droppable: ['tr'],
columns: 1,
rows: 1,
}),
initialize(o, opt) {
Component.prototype.initialize.apply(this, arguments);
var components = this.get('components');
var rows = this.get('rows');
var columns = this.get('columns');
// Init components if empty
if(!components.length){
var rowsToAdd = [];
while(rows--){
var columnsToAdd = [];
var clm = columns;
while (clm--) {
columnsToAdd.push({
type: 'cell',
classes: ['cell']
});
}
rowsToAdd.push({
type: 'row',
classes: ['row'],
components: columnsToAdd
});
}
components.add(rowsToAdd);
}
},
},{
/**
* Detect if the passed element is a valid component.
* In case the element is valid an object abstracted
* from the element will be returned
* @param {HTMLElement}
* @return {Object}
* @private
*/
isComponent(el) {
var result = '';
if(el.tagName == 'TBODY'){
result = {type: 'tbody'};
}
return result;
},
});

29
src/dom_components/model/ComponentTableFoot.js

@ -0,0 +1,29 @@
var ComponentTableBody = require('./ComponentTableBody');
module.exports = ComponentTableBody.extend({
defaults: _.extend({}, ComponentTableBody.prototype.defaults, {
type: 'tfoot',
tagName: 'tfoot',
droppable: ['tr']
}),
},{
/**
* Detect if the passed element is a valid component.
* In case the element is valid an object abstracted
* from the element will be returned
* @param {HTMLElement}
* @return {Object}
* @private
*/
isComponent(el) {
var result = '';
if(el.tagName == 'TFOOT'){
result = {type: 'tfoot'};
}
return result;
},
});

29
src/dom_components/model/ComponentTableHead.js

@ -0,0 +1,29 @@
var ComponentTableBody = require('./ComponentTableBody');
module.exports = ComponentTableBody.extend({
defaults: _.extend({}, ComponentTableBody.prototype.defaults, {
type: 'thead',
tagName: 'thead',
droppable: ['tr']
}),
},{
/**
* Detect if the passed element is a valid component.
* In case the element is valid an object abstracted
* from the element will be returned
* @param {HTMLElement}
* @return {Object}
* @private
*/
isComponent(el) {
var result = '';
if(el.tagName == 'THEAD'){
result = {type: 'thead'};
}
return result;
},
});

1
src/dom_components/model/ComponentTableRow.js

@ -5,7 +5,6 @@ module.exports = Component.extend({
defaults: _.extend({}, Component.prototype.defaults, {
type: 'row',
tagName: 'tr',
draggable: ['table', 'tbody', 'thead'],
droppable: ['th', 'td']
}),

4
src/dom_components/view/ComponentTableBodyView.js

@ -0,0 +1,4 @@
var Backbone = require('backbone');
var ComponentView = require('./ComponentView');
module.exports = ComponentView.extend({});

4
src/dom_components/view/ComponentTableFootView.js

@ -0,0 +1,4 @@
var Backbone = require('backbone');
var ComponentView = require('./ComponentView');
module.exports = ComponentView.extend({});

4
src/dom_components/view/ComponentTableHeadView.js

@ -0,0 +1,4 @@
var Backbone = require('backbone');
var ComponentView = require('./ComponentView');
module.exports = ComponentView.extend({});
Loading…
Cancel
Save