mirror of
https://github.com/umap-project/umap.git
synced 2025-04-29 03:42:37 +02:00
wip: remove old tableeditor class
This commit is contained in:
parent
2f8cda83b6
commit
3fb7be28ec
1 changed files with 0 additions and 124 deletions
|
@ -1,124 +0,0 @@
|
|||
U.TableEditor = L.Class.extend({
|
||||
initialize: function (datalayer) {
|
||||
this.datalayer = datalayer
|
||||
this.table = L.DomUtil.create('div', 'table')
|
||||
this.header = L.DomUtil.create('div', 'thead', this.table)
|
||||
this.body = L.DomUtil.create('div', 'tbody', this.table)
|
||||
this.resetProperties()
|
||||
},
|
||||
|
||||
renderHeaders: function () {
|
||||
this.header.innerHTML = ''
|
||||
for (let i = 0; i < this.properties.length; i++) {
|
||||
this.renderHeader(this.properties[i])
|
||||
}
|
||||
},
|
||||
|
||||
renderHeader: function (property) {
|
||||
const container = L.DomUtil.create('div', 'tcell', this.header)
|
||||
const title = L.DomUtil.add('span', '', container, property)
|
||||
const del = L.DomUtil.create('i', 'umap-delete', container)
|
||||
const rename = L.DomUtil.create('i', 'umap-edit', container)
|
||||
del.title = L._('Delete this property on all the features')
|
||||
rename.title = L._('Rename this property on all the features')
|
||||
L.DomEvent.on(del, 'click', () => this.deleteProperty(property))
|
||||
L.DomEvent.on(rename, 'click', () => this.renameProperty(property))
|
||||
},
|
||||
|
||||
renderRow: function (feature) {
|
||||
const builder = new U.FormBuilder(feature, this.field_properties, {
|
||||
id: `umap-feature-properties_${L.stamp(feature)}`,
|
||||
className: 'trow',
|
||||
callback: feature.resetTooltip,
|
||||
})
|
||||
this.body.appendChild(builder.build())
|
||||
},
|
||||
|
||||
compileProperties: function () {
|
||||
this.resetProperties()
|
||||
if (this.properties.length === 0) this.properties = ['name']
|
||||
// description is a forced textarea, don't edit it in a text input, or you lose cariage returns
|
||||
if (this.properties.indexOf('description') !== -1)
|
||||
this.properties.splice(this.properties.indexOf('description'), 1)
|
||||
this.properties.sort()
|
||||
this.field_properties = []
|
||||
for (let i = 0; i < this.properties.length; i++) {
|
||||
this.field_properties.push([
|
||||
`properties.${this.properties[i]}`,
|
||||
{ wrapper: 'div', wrapperClass: 'tcell' },
|
||||
])
|
||||
}
|
||||
},
|
||||
|
||||
resetProperties: function () {
|
||||
this.properties = this.datalayer._propertiesIndex
|
||||
},
|
||||
|
||||
validateName: (name) => {
|
||||
if (name.indexOf('.') !== -1) {
|
||||
U.Alert.error(L._('Invalide property name: {name}', { name: name }))
|
||||
return false
|
||||
}
|
||||
return true
|
||||
},
|
||||
|
||||
renameProperty: function (property) {
|
||||
this.datalayer.map.dialog
|
||||
.prompt(L._('Please enter the new name of this property'))
|
||||
.then(({ prompt }) => {
|
||||
if (!prompt || !this.validateName(prompt)) return
|
||||
this.datalayer.eachLayer((feature) => {
|
||||
feature.renameProperty(property, prompt)
|
||||
})
|
||||
this.datalayer.deindexProperty(property)
|
||||
this.datalayer.indexProperty(prompt)
|
||||
this.edit()
|
||||
})
|
||||
},
|
||||
|
||||
deleteProperty: function (property) {
|
||||
this.datalayer.map.dialog
|
||||
.confirm(
|
||||
L._('Are you sure you want to delete this property on all the features?')
|
||||
)
|
||||
.then(() => {
|
||||
this.datalayer.eachLayer((feature) => {
|
||||
feature.deleteProperty(property)
|
||||
})
|
||||
this.datalayer.deindexProperty(property)
|
||||
this.resetProperties()
|
||||
this.edit()
|
||||
})
|
||||
},
|
||||
|
||||
addProperty: function () {
|
||||
this.datalayer.map.dialog
|
||||
.prompt(L._('Please enter the name of the property'))
|
||||
.then(({ prompt }) => {
|
||||
if (!prompt || !this.validateName(prompt)) return
|
||||
this.datalayer.indexProperty(prompt)
|
||||
this.edit()
|
||||
})
|
||||
},
|
||||
|
||||
edit: function () {
|
||||
const id = 'tableeditor:edit'
|
||||
this.compileProperties()
|
||||
this.renderHeaders()
|
||||
this.body.innerHTML = ''
|
||||
this.datalayer.eachLayer(this.renderRow, this)
|
||||
const addButton = L.DomUtil.createButton(
|
||||
'flat',
|
||||
undefined,
|
||||
L._('Add a new property')
|
||||
)
|
||||
const iconElement = L.DomUtil.createIcon(addButton, 'icon-add')
|
||||
addButton.insertBefore(iconElement, addButton.firstChild)
|
||||
L.DomEvent.on(addButton, 'click', this.addProperty, this)
|
||||
this.datalayer.map.fullPanel.open({
|
||||
content: this.table,
|
||||
className: 'umap-table-editor',
|
||||
actions: [addButton],
|
||||
})
|
||||
},
|
||||
})
|
Loading…
Reference in a new issue