Files
iD/modules/ui/data_editor.js
2021-12-07 16:22:01 +01:00

86 lines
2.2 KiB
JavaScript

import { t } from '../core/localizer';
import { modeBrowse } from '../modes/browse';
import { svgIcon } from '../svg/icon';
import { uiDataHeader } from './data_header';
import { uiSectionRawTagEditor } from './sections/raw_tag_editor';
export function uiDataEditor(context) {
var dataHeader = uiDataHeader();
var rawTagEditor = uiSectionRawTagEditor('custom-data-tag-editor', context)
.expandedByDefault(true)
.readOnlyTags([/./]);
var _datum;
function dataEditor(selection) {
var header = selection.selectAll('.header')
.data([0]);
var headerEnter = header.enter()
.append('div')
.attr('class', 'header fillL');
headerEnter
.append('button')
.attr('class', 'close')
.attr('title', t('icons.close'))
.on('click', function() {
context.enter(modeBrowse(context));
})
.call(svgIcon('#iD-icon-close'));
headerEnter
.append('h2')
.call(t.append('map_data.title'));
var body = selection.selectAll('.body')
.data([0]);
body = body.enter()
.append('div')
.attr('class', 'body')
.merge(body);
var editor = body.selectAll('.data-editor')
.data([0]);
// enter/update
editor.enter()
.append('div')
.attr('class', 'modal-section data-editor')
.merge(editor)
.call(dataHeader.datum(_datum));
var rte = body.selectAll('.raw-tag-editor')
.data([0]);
// enter/update
rte.enter()
.append('div')
.attr('class', 'raw-tag-editor data-editor')
.merge(rte)
.call(rawTagEditor
.tags((_datum && _datum.properties) || {})
.state('hover')
.render
)
.selectAll('textarea.tag-text')
.attr('readonly', true)
.classed('readonly', true);
}
dataEditor.datum = function(val) {
if (!arguments.length) return _datum;
_datum = val;
return this;
};
return dataEditor;
}