Split out commitWarnings and commitChanges sections into smaller modules

This commit is contained in:
Bryan Housel
2017-08-15 01:50:52 -04:00
parent d7a07208e1
commit ba3f823141
4 changed files with 222 additions and 151 deletions
+9 -151
View File
@@ -2,18 +2,12 @@ import * as d3 from 'd3';
import _ from 'lodash';
import { t } from '../util/locale';
import { osmChangeset } from '../osm';
import { modeSelect } from '../modes';
import { svgIcon } from '../svg';
import { tooltip } from '../util/tooltip';
import { uiChangesetEditor } from './changeset_editor';
import { uiCommitChanges } from './commit_changes';
import { uiCommitWarnings } from './commit_warnings';
import { uiRawTagEditor } from './raw_tag_editor';
import { utilDetect } from '../util/detect';
import {
utilDisplayName,
utilDisplayType,
utilEntityOrMemberSelector,
utilRebind
} from '../util';
import { utilRebind } from '../util';
var changeset;
@@ -28,6 +22,8 @@ export function uiCommit(context) {
.on('change', changeTags);
var rawTagEditor = uiRawTagEditor(context)
.on('change', changeTags);
var commitChanges = uiCommitChanges(context);
var commitWarnings = uiCommitWarnings(context);
function commit(selection) {
@@ -36,9 +32,7 @@ export function uiCommit(context) {
var osm = context.connection();
if (!osm) return;
var changes = context.history().changes(),
summary = context.history().difference().summary(),
comment = context.storage('comment') || '',
var comment = context.storage('comment') || '',
commentDate = +context.storage('commentDate') || 0,
currDate = Date.now(),
cutoff = 2 * 86400 * 1000; // 2 days
@@ -99,54 +93,7 @@ export function uiCommit(context) {
// Warnings
var warnings = context.history().validate(changes);
var warningSection = body.selectAll('div.warning-section')
.data(warnings.length ? [0] : []);
warningSection.exit()
.remove();
var warningEnter = warningSection.enter()
.append('div')
.attr('class', 'modal-section warning-section fillL2');
warningEnter
.append('h3')
.text(t('commit.warnings'));
warningEnter
.append('ul')
.attr('class', 'changeset-list');
warningSection = warningEnter
.merge(warningSection);
var warningItems = warningSection.select('ul').selectAll('li')
.data(warnings);
warningItems.exit()
.remove();
warningItems = warningItems.enter()
.append('li')
.on('mouseover', mouseover)
.on('mouseout', mouseout)
.on('click', warningClick)
.merge(warningItems);
warningItems
.call(svgIcon('#icon-alert', 'pre-text'));
warningItems
.append('strong')
.text(function(d) { return d.message; });
warningItems.filter(function(d) { return d.tooltip; })
.call(tooltip()
.title(function(d) { return d.tooltip; })
.placement('top')
);
body.call(commitWarnings);
// Upload Explanation
@@ -274,95 +221,8 @@ export function uiCommit(context) {
);
// TODO check this below (maybe refactor to own module)...
// Changes
var changeSection = body.selectAll('.modal-section.commit-section')
.data([0]);
var changeEnter = changeSection.enter()
.append('div')
.attr('class', 'commit-section modal-section fillL2');
changeEnter
.append('h3')
.text(t('commit.changes', { count: summary.length }));
var li = changeEnter
.append('ul')
.attr('class', 'changeset-list')
.selectAll('li')
.data(summary);
li = li.enter()
.append('li')
.on('mouseover', mouseover)
.on('mouseout', mouseout)
.on('click', zoomToEntity)
.merge(li);
li.each(function(d) {
d3.select(this)
.call(svgIcon('#icon-' + d.entity.geometry(d.graph), 'pre-text ' + d.changeType));
});
li.append('span')
.attr('class', 'change-type')
.text(function(d) { return t('commit.' + d.changeType) + ' '; });
li.append('strong')
.attr('class', 'entity-type')
.text(function(d) {
var matched = context.presets().match(d.entity, d.graph);
return (matched && matched.name()) || utilDisplayType(d.entity.id);
});
li.append('span')
.attr('class', 'entity-name')
.text(function(d) {
var name = utilDisplayName(d.entity) || '',
string = '';
if (name !== '') string += ':';
return string += ' ' + name;
});
li.style('opacity', 0)
.transition()
.style('opacity', 1);
function mouseover(d) {
if (d.entity) {
context.surface().selectAll(
utilEntityOrMemberSelector([d.entity.id], context.graph())
).classed('hover', true);
}
}
function mouseout() {
context.surface().selectAll('.hover')
.classed('hover', false);
}
function warningClick(d) {
if (d.entity) {
context.map().zoomTo(d.entity);
context.enter(modeSelect(context, [d.entity.id]));
}
}
function zoomToEntity(change) {
var entity = change.entity;
if (change.changeType !== 'deleted' &&
context.graph().entity(entity.id).geometry(context.graph()) !== 'vertex') {
context.map().zoomTo(entity);
context.surface().selectAll(utilEntityOrMemberSelector([entity.id], context.graph()))
.classed('hover', true);
}
}
// Change summary
body.call(commitChanges);
function toggleRequestReview() {
@@ -378,7 +238,6 @@ export function uiCommit(context) {
.tags(_.clone(changeset.tags))
);
}
}
@@ -433,7 +292,6 @@ export function uiCommit(context) {
}
commit.reset = function() {
changeset = null;
};
+116
View File
@@ -0,0 +1,116 @@
import * as d3 from 'd3';
import { t } from '../util/locale';
import { svgIcon } from '../svg';
import {
utilDisplayName,
utilDisplayType,
utilEntityOrMemberSelector
} from '../util';
export function uiCommitChanges(context) {
function commitChanges(selection) {
var summary = context.history().difference().summary();
var container = selection.selectAll('.modal-section.commit-section')
.data([0]);
var containerEnter = container.enter()
.append('div')
.attr('class', 'commit-section modal-section fillL2');
containerEnter
.append('h3')
.text(t('commit.changes', { count: summary.length }));
containerEnter
.append('ul')
.attr('class', 'changeset-list');
container = containerEnter
.merge(container);
var items = container.select('ul').selectAll('li')
.data(summary);
var itemsEnter = items.enter()
.append('li')
.attr('class', 'change-item');
itemsEnter
.each(function(d) {
d3.select(this)
.call(svgIcon('#icon-' + d.entity.geometry(d.graph), 'pre-text ' + d.changeType));
});
itemsEnter
.append('span')
.attr('class', 'change-type')
.text(function(d) { return t('commit.' + d.changeType) + ' '; });
itemsEnter
.append('strong')
.attr('class', 'entity-type')
.text(function(d) {
var matched = context.presets().match(d.entity, d.graph);
return (matched && matched.name()) || utilDisplayType(d.entity.id);
});
itemsEnter
.append('span')
.attr('class', 'entity-name')
.text(function(d) {
var name = utilDisplayName(d.entity) || '',
string = '';
if (name !== '') {
string += ':';
}
return string += ' ' + name;
});
itemsEnter
.style('opacity', 0)
.transition()
.style('opacity', 1);
items = itemsEnter
.merge(items);
items
.on('mouseover', mouseover)
.on('mouseout', mouseout)
.on('click', zoomToEntity);
function mouseover(d) {
if (d.entity) {
context.surface().selectAll(
utilEntityOrMemberSelector([d.entity.id], context.graph())
).classed('hover', true);
}
}
function mouseout() {
context.surface().selectAll('.hover')
.classed('hover', false);
}
function zoomToEntity(change) {
var entity = change.entity;
if (change.changeType !== 'deleted' &&
context.graph().entity(entity.id).geometry(context.graph()) !== 'vertex') {
context.map().zoomTo(entity);
context.surface().selectAll(utilEntityOrMemberSelector([entity.id], context.graph()))
.classed('hover', true);
}
}
}
return commitChanges;
}
+95
View File
@@ -0,0 +1,95 @@
import { t } from '../util/locale';
import { modeSelect } from '../modes';
import { svgIcon } from '../svg';
import { tooltip } from '../util/tooltip';
import { utilEntityOrMemberSelector } from '../util';
export function uiCommitWarnings(context) {
function commitWarnings(selection) {
var changes = context.history().changes();
var warnings = context.history().validate(changes);
var container = selection.selectAll('.warning-section')
.data(warnings.length ? [0] : []);
container.exit()
.remove();
var containerEnter = container.enter()
.append('div')
.attr('class', 'modal-section warning-section fillL2');
containerEnter
.append('h3')
.text(t('commit.warnings'));
containerEnter
.append('ul')
.attr('class', 'changeset-list');
container = containerEnter
.merge(container);
var items = container.select('ul').selectAll('li')
.data(warnings);
items.exit()
.remove();
var itemsEnter = items.enter()
.append('li')
.attr('class', 'warning-item');
itemsEnter
.call(svgIcon('#icon-alert', 'pre-text'));
itemsEnter
.append('strong')
.text(function(d) { return d.message; });
itemsEnter.filter(function(d) { return d.tooltip; })
.call(tooltip()
.title(function(d) { return d.tooltip; })
.placement('top')
);
items = itemsEnter
.merge(items);
items
.on('mouseover', mouseover)
.on('mouseout', mouseout)
.on('click', warningClick);
function mouseover(d) {
if (d.entity) {
context.surface().selectAll(
utilEntityOrMemberSelector([d.entity.id], context.graph())
).classed('hover', true);
}
}
function mouseout() {
context.surface().selectAll('.hover')
.classed('hover', false);
}
function warningClick(d) {
if (d.entity) {
context.map().zoomTo(d.entity);
context.enter(modeSelect(context, [d.entity.id]));
}
}
}
return commitWarnings;
}
+2
View File
@@ -5,6 +5,8 @@ export { uiBackground } from './background';
export { uiChangesetEditor } from './changeset_editor';
export { uiCmd } from './cmd';
export { uiCommit } from './commit';
export { uiCommitChanges } from './commit_changes';
export { uiCommitWarnings } from './commit_warnings';
export { uiConfirm } from './confirm';
export { uiConflicts } from './conflicts';
export { uiContributors } from './contributors';