Initial commit
This commit is contained in:
+95
@@ -0,0 +1,95 @@
|
||||
var CoreView = require('backbone/core-view');
|
||||
var _ = require('underscore');
|
||||
var cellTemplate = require('./table-body-cell.tpl');
|
||||
var pointGeojsonParser = require('builder/helpers/point-geojson-parser');
|
||||
var checkAndBuildOpts = require('builder/helpers/required-opts');
|
||||
|
||||
var FORMATTED_TYPE_VALUES = {
|
||||
'geometry': pointGeojsonParser
|
||||
};
|
||||
|
||||
var REQUIRED_OPTS = [
|
||||
'columnsCollection',
|
||||
'tableViewModel',
|
||||
'canHideColumns'
|
||||
];
|
||||
|
||||
/*
|
||||
* Table body row view
|
||||
*/
|
||||
|
||||
module.exports = CoreView.extend({
|
||||
|
||||
className: 'Table-row',
|
||||
tagName: 'tr',
|
||||
|
||||
options: {
|
||||
simpleGeometry: ''
|
||||
},
|
||||
|
||||
initialize: function (opts) {
|
||||
checkAndBuildOpts(opts, REQUIRED_OPTS, this);
|
||||
|
||||
this.el.setAttribute('data-model', this.model.cid);
|
||||
|
||||
this._initBinds();
|
||||
},
|
||||
|
||||
render: function () {
|
||||
this.$el.empty();
|
||||
this._generateRowsHTML();
|
||||
return this;
|
||||
},
|
||||
|
||||
_initBinds: function () {
|
||||
this.model.bind('change', this.render, this);
|
||||
this.model.bind('destroy', this.remove, this);
|
||||
},
|
||||
|
||||
_generateRowsHTML: function () {
|
||||
var r = [];
|
||||
|
||||
for (var i = 0, l = this._columnsCollection.size(); i < l; i++) {
|
||||
var model = this._columnsCollection.at(i);
|
||||
var columnName = model.get('name');
|
||||
|
||||
if (!this._tableViewModel.isCustomQueryApplied() && columnName === 'the_geom_webmercator') {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (this._canHideColumns && columnName === 'center' && model.isGeometryColumn()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
r[i] = this._generateCellHTML(columnName);
|
||||
}
|
||||
|
||||
this.el.innerHTML = r.join('');
|
||||
},
|
||||
|
||||
_generateCellHTML: function (columnName) {
|
||||
var simpleGeometry = this.options.simpleGeometry;
|
||||
var columnModel = _.first(this._columnsCollection.where({ name: columnName }));
|
||||
var columnType = columnModel.get('type');
|
||||
var value = this.model.get(columnName);
|
||||
var formattedValue = value;
|
||||
|
||||
if (columnType === 'geometry') {
|
||||
if (simpleGeometry === 'point') {
|
||||
formattedValue = FORMATTED_TYPE_VALUES[columnType](value);
|
||||
} else {
|
||||
formattedValue = simpleGeometry && (simpleGeometry.charAt(0).toUpperCase() + simpleGeometry.slice(1));
|
||||
}
|
||||
} else if (FORMATTED_TYPE_VALUES[columnType]) {
|
||||
formattedValue = FORMATTED_TYPE_VALUES[columnType](value);
|
||||
}
|
||||
|
||||
return cellTemplate({
|
||||
value: value,
|
||||
formattedValue: formattedValue,
|
||||
type: columnType,
|
||||
columnName: columnName,
|
||||
geometry: simpleGeometry
|
||||
});
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user