in modules/ui/conflicts.js [51:143]
function conflicts(selection) {
keybindingOn();
var headerEnter = selection.selectAll('.header')
.data([0])
.enter()
.append('div')
.attr('class', 'header fillL');
headerEnter
.append('button')
.attr('class', 'fr')
.on('click', cancel)
.call(svgIcon('#iD-icon-close'));
headerEnter
.append('h3')
.text(t('save.conflict.header'));
var bodyEnter = selection.selectAll('.body')
.data([0])
.enter()
.append('div')
.attr('class', 'body fillL');
var conflictsHelpEnter = bodyEnter
.append('div')
.attr('class', 'conflicts-help')
.text(t('save.conflict.help'));
// Download changes link
var detected = utilDetect();
var changeset = new osmChangeset();
delete changeset.id; // Export without changeset_id
var data = JXON.stringify(changeset.osmChangeJXON(_origChanges));
var blob = new Blob([data], { type: 'text/xml;charset=utf-8;' });
var fileName = 'changes.osc';
var linkEnter = conflictsHelpEnter.selectAll('.download-changes')
.append('a')
.attr('class', 'download-changes');
if (detected.download) { // All except IE11 and Edge
linkEnter // download the data as a file
.attr('href', window.URL.createObjectURL(blob))
.attr('download', fileName);
} else { // IE11 and Edge
linkEnter // open data uri in a new tab
.attr('target', '_blank')
.on('click.download', function() {
navigator.msSaveBlob(blob, fileName);
});
}
linkEnter
.call(svgIcon('#iD-icon-load', 'inline'))
.append('span')
.text(t('save.conflict.download_changes'));
bodyEnter
.append('div')
.attr('class', 'conflict-container fillL3')
.call(showConflict, 0);
bodyEnter
.append('div')
.attr('class', 'conflicts-done')
.attr('opacity', 0)
.style('display', 'none')
.text(t('save.conflict.done'));
var buttonsEnter = bodyEnter
.append('div')
.attr('class','buttons col12 joined conflicts-buttons');
buttonsEnter
.append('button')
.attr('disabled', _conflictList.length > 1)
.attr('class', 'action conflicts-button col6')
.text(t('save.title'))
.on('click.try_again', tryAgain);
buttonsEnter
.append('button')
.attr('class', 'secondary-action conflicts-button col6')
.text(t('confirm.cancel'))
.on('click.cancel', cancel);
}