From b62f446045fe8880d7b7832696cc2905b3f5064d Mon Sep 17 00:00:00 2001 From: Kushan Joshi <0o3ko0@gmail.com> Date: Fri, 17 Jun 2016 16:57:00 +0530 Subject: [PATCH] final iD.ui changes --- Makefile | 16 +- index.html | 9 +- js/lib/id/{ui.js => ui/core.js} | 0 js/lib/id/ui/index.js | 251 ++++++++++++++++++ modules/ui/{ => core}/account.js | 0 modules/ui/{ => core}/attribution.js | 0 modules/ui/{ => core}/background.js | 0 modules/ui/{ => core}/cmd.js | 0 modules/ui/{ => core}/commit.js | 0 modules/ui/{ => core}/confirm.js | 0 modules/ui/{ => core}/conflicts.js | 0 modules/ui/{ => core}/contributors.js | 0 modules/ui/{ => core}/disclosure.js | 0 modules/ui/{ => core}/entity_editor.js | 0 modules/ui/{ => core}/feature_info.js | 0 modules/ui/{ => core}/feature_list.js | 0 modules/ui/{ => core}/flash.js | 0 modules/ui/{ => core}/full_screen.js | 0 modules/ui/{ => core}/geolocate.js | 0 modules/ui/{ => core}/help.js | 0 modules/ui/{ => core}/index.js | 0 modules/ui/{ => core}/info.js | 0 modules/ui/{ => core}/inspector.js | 0 modules/ui/{ => core}/intro.js | 0 modules/ui/{ => core}/lasso.js | 0 modules/ui/{ => core}/loading.js | 0 modules/ui/{ => core}/map_data.js | 0 modules/ui/{ => core}/map_in_map.js | 0 modules/ui/{ => core}/modal.js | 0 modules/ui/{ => core}/modes.js | 0 modules/ui/{ => core}/notice.js | 0 modules/ui/{ => core}/preset.js | 0 modules/ui/{ => core}/preset_icon.js | 0 modules/ui/{ => core}/preset_list.js | 0 modules/ui/{ => core}/radial_menu.js | 0 modules/ui/{ => core}/raw_member_editor.js | 0 .../ui/{ => core}/raw_membership_editor.js | 0 modules/ui/{ => core}/raw_tag_editor.js | 0 modules/ui/{ => core}/restore.js | 0 modules/ui/{ => core}/save.js | 0 modules/ui/{ => core}/scale.js | 0 modules/ui/{ => core}/selection_list.js | 0 modules/ui/{ => core}/sidebar.js | 0 modules/ui/{ => core}/source_switch.js | 0 modules/ui/{ => core}/spinner.js | 0 modules/ui/{ => core}/splash.js | 0 modules/ui/{ => core}/status.js | 0 modules/ui/{ => core}/success.js | 0 modules/ui/{ => core}/tag_reference.js | 0 modules/ui/{ => core}/toggle.js | 0 modules/ui/{ => core}/undo_redo.js | 0 modules/ui/{ => core}/view_on_osm.js | 0 modules/ui/{ => core}/zoom.js | 0 {js/id => modules/ui}/ui.js | 6 +- test/index.html | 7 +- 55 files changed, 273 insertions(+), 16 deletions(-) rename js/lib/id/{ui.js => ui/core.js} (100%) create mode 100644 js/lib/id/ui/index.js rename modules/ui/{ => core}/account.js (100%) rename modules/ui/{ => core}/attribution.js (100%) rename modules/ui/{ => core}/background.js (100%) rename modules/ui/{ => core}/cmd.js (100%) rename modules/ui/{ => core}/commit.js (100%) rename modules/ui/{ => core}/confirm.js (100%) rename modules/ui/{ => core}/conflicts.js (100%) rename modules/ui/{ => core}/contributors.js (100%) rename modules/ui/{ => core}/disclosure.js (100%) rename modules/ui/{ => core}/entity_editor.js (100%) rename modules/ui/{ => core}/feature_info.js (100%) rename modules/ui/{ => core}/feature_list.js (100%) rename modules/ui/{ => core}/flash.js (100%) rename modules/ui/{ => core}/full_screen.js (100%) rename modules/ui/{ => core}/geolocate.js (100%) rename modules/ui/{ => core}/help.js (100%) rename modules/ui/{ => core}/index.js (100%) rename modules/ui/{ => core}/info.js (100%) rename modules/ui/{ => core}/inspector.js (100%) rename modules/ui/{ => core}/intro.js (100%) rename modules/ui/{ => core}/lasso.js (100%) rename modules/ui/{ => core}/loading.js (100%) rename modules/ui/{ => core}/map_data.js (100%) rename modules/ui/{ => core}/map_in_map.js (100%) rename modules/ui/{ => core}/modal.js (100%) rename modules/ui/{ => core}/modes.js (100%) rename modules/ui/{ => core}/notice.js (100%) rename modules/ui/{ => core}/preset.js (100%) rename modules/ui/{ => core}/preset_icon.js (100%) rename modules/ui/{ => core}/preset_list.js (100%) rename modules/ui/{ => core}/radial_menu.js (100%) rename modules/ui/{ => core}/raw_member_editor.js (100%) rename modules/ui/{ => core}/raw_membership_editor.js (100%) rename modules/ui/{ => core}/raw_tag_editor.js (100%) rename modules/ui/{ => core}/restore.js (100%) rename modules/ui/{ => core}/save.js (100%) rename modules/ui/{ => core}/scale.js (100%) rename modules/ui/{ => core}/selection_list.js (100%) rename modules/ui/{ => core}/sidebar.js (100%) rename modules/ui/{ => core}/source_switch.js (100%) rename modules/ui/{ => core}/spinner.js (100%) rename modules/ui/{ => core}/splash.js (100%) rename modules/ui/{ => core}/status.js (100%) rename modules/ui/{ => core}/success.js (100%) rename modules/ui/{ => core}/tag_reference.js (100%) rename modules/ui/{ => core}/toggle.js (100%) rename modules/ui/{ => core}/undo_redo.js (100%) rename modules/ui/{ => core}/view_on_osm.js (100%) rename modules/ui/{ => core}/zoom.js (100%) rename {js/id => modules/ui}/ui.js (98%) diff --git a/Makefile b/Makefile index 90fd89932..b079b12d5 100644 --- a/Makefile +++ b/Makefile @@ -54,7 +54,8 @@ MODULE_TARGETS = \ js/lib/id/services.js \ js/lib/id/ui/intro.js \ js/lib/id/svg.js \ - js/lib/id/ui.js \ + js/lib/id/ui/index.js \ + js/lib/id/ui/core.js \ js/lib/id/ui/intro.js \ js/lib/id/ui/preset.js \ js/lib/id/util.js \ @@ -100,14 +101,18 @@ js/lib/id/svg.js: $(shell find modules/svg -type f) @rm -f $@ node_modules/.bin/rollup -f umd -n iD.svg modules/svg/index.js --no-strict -o $@ +js/lib/id/ui/index.js: $(shell find modules/ui -type f) + @rm -f $@ + node_modules/.bin/rollup -f umd -n iD modules/ui/ui.js --no-strict -o $@ + +js/lib/id/ui/core.js: $(shell find modules/ui/core -type f) + @rm -f $@ + node_modules/.bin/rollup -f umd -n iD.ui modules/ui/core/index.js --no-strict -o $@ + js/lib/id/ui/intro.js: $(shell find modules/ui/intro -type f) @rm -f $@ node_modules/.bin/rollup -f umd -n iD.ui.intro modules/ui/intro/index.js --no-strict -o $@ -js/lib/id/ui.js: $(shell find modules/ui -type f) - @rm -f $@ - node_modules/.bin/rollup -f umd -n iD.ui modules/ui/index.js --no-strict -o $@ - js/lib/id/ui/preset.js: $(shell find modules/ui/preset -type f) @rm -f $@ node_modules/.bin/rollup -f umd -n iD.ui.preset modules/ui/preset/index.js --no-strict -o $@ @@ -142,7 +147,6 @@ dist/iD.js: \ js/lib/marked.js \ js/id/start.js \ js/id/id.js \ - js/id/ui.js \ $(MODULE_TARGETS) \ js/id/end.js \ js/lib/locale.js \ diff --git a/index.html b/index.html index 18c48b90b..64befdbcb 100644 --- a/index.html +++ b/index.html @@ -45,13 +45,16 @@ + + + + + + - - - diff --git a/js/lib/id/ui.js b/js/lib/id/ui/core.js similarity index 100% rename from js/lib/id/ui.js rename to js/lib/id/ui/core.js diff --git a/js/lib/id/ui/index.js b/js/lib/id/ui/index.js new file mode 100644 index 000000000..1df22b9df --- /dev/null +++ b/js/lib/id/ui/index.js @@ -0,0 +1,251 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.iD = global.iD || {}))); +}(this, function (exports) { 'use strict'; + + function ui(context) { + function render(container) { + var map = context.map(); + + if (iD.detect().opera) container.classed('opera', true); + + var hash = iD.behavior.Hash(context); + + hash(); + + if (!hash.hadHash) { + map.centerZoom([0, 0], 2); + } + + container.append('svg') + .attr('id', 'defs') + .call(iD.svg.Defs(context)); + + container.append('div') + .attr('id', 'sidebar') + .attr('class', 'col4') + .call(ui.sidebar); + + var content = container.append('div') + .attr('id', 'content'); + + var bar = content.append('div') + .attr('id', 'bar') + .attr('class', 'fillD'); + + content.append('div') + .attr('id', 'map') + .call(map); + + content + .call(iD.ui.MapInMap(context)); + + content.append('div') + .call(iD.ui.Info(context)); + + bar.append('div') + .attr('class', 'spacer col4'); + + var limiter = bar.append('div') + .attr('class', 'limiter'); + + limiter.append('div') + .attr('class', 'button-wrap joined col3') + .call(iD.ui.Modes(context), limiter); + + limiter.append('div') + .attr('class', 'button-wrap joined col1') + .call(iD.ui.UndoRedo(context)); + + limiter.append('div') + .attr('class', 'button-wrap col1') + .call(iD.ui.Save(context)); + + bar.append('div') + .attr('class', 'full-screen') + .call(iD.ui.FullScreen(context)); + + bar.append('div') + .attr('class', 'spinner') + .call(iD.ui.Spinner(context)); + + var controls = bar.append('div') + .attr('class', 'map-controls'); + + controls.append('div') + .attr('class', 'map-control zoombuttons') + .call(iD.ui.Zoom(context)); + + controls.append('div') + .attr('class', 'map-control geolocate-control') + .call(iD.ui.Geolocate(context)); + + controls.append('div') + .attr('class', 'map-control background-control') + .call(iD.ui.Background(context)); + + controls.append('div') + .attr('class', 'map-control map-data-control') + .call(iD.ui.MapData(context)); + + controls.append('div') + .attr('class', 'map-control help-control') + .call(iD.ui.Help(context)); + + var about = content.append('div') + .attr('id', 'about'); + + about.append('div') + .attr('id', 'attrib') + .call(iD.ui.Attribution(context)); + + var footer = about.append('div') + .attr('id', 'footer') + .attr('class', 'fillD'); + + footer.append('div') + .attr('class', 'api-status') + .call(iD.ui.Status(context)); + + footer.append('div') + .attr('id', 'scale-block') + .call(iD.ui.Scale(context)); + + var aboutList = footer.append('div') + .attr('id', 'info-block') + .append('ul') + .attr('id', 'about-list'); + + if (!context.embed()) { + aboutList.call(iD.ui.Account(context)); + } + + aboutList.append('li') + .append('a') + .attr('target', '_blank') + .attr('tabindex', -1) + .attr('href', 'https://github.com/openstreetmap/iD') + .text(iD.version); + + var issueLinks = aboutList.append('li'); + + issueLinks.append('a') + .attr('target', '_blank') + .attr('tabindex', -1) + .attr('href', 'https://github.com/openstreetmap/iD/issues') + .call(iD.svg.Icon('#icon-bug', 'light')) + .call(bootstrap.tooltip() + .title(t('report_a_bug')) + .placement('top') + ); + + issueLinks.append('a') + .attr('target', '_blank') + .attr('tabindex', -1) + .attr('href', 'https://github.com/openstreetmap/iD/blob/master/CONTRIBUTING.md#translating') + .call(iD.svg.Icon('#icon-translate', 'light')) + .call(bootstrap.tooltip() + .title(t('help_translate')) + .placement('top') + ); + + aboutList.append('li') + .attr('class', 'feature-warning') + .attr('tabindex', -1) + .call(iD.ui.FeatureInfo(context)); + + aboutList.append('li') + .attr('class', 'user-list') + .attr('tabindex', -1) + .call(iD.ui.Contributors(context)); + + window.onbeforeunload = function() { + return context.save(); + }; + + window.onunload = function() { + context.history().unlock(); + }; + + var mapDimensions = map.dimensions(); + + d3.select(window).on('resize.editor', function() { + mapDimensions = content.dimensions(null); + map.dimensions(mapDimensions); + }); + + function pan(d) { + return function() { + d3.event.preventDefault(); + if (!context.inIntro()) context.pan(d); + }; + } + + // pan amount + var pa = 10; + + var keybinding = d3.keybinding('main') + .on('⌫', function() { d3.event.preventDefault(); }) + .on('←', pan([pa, 0])) + .on('↑', pan([0, pa])) + .on('→', pan([-pa, 0])) + .on('↓', pan([0, -pa])) + .on('⇧←', pan([mapDimensions[0], 0])) + .on('⇧↑', pan([0, mapDimensions[1]])) + .on('⇧→', pan([-mapDimensions[0], 0])) + .on('⇧↓', pan([0, -mapDimensions[1]])) + .on(iD.ui.cmd('⌘←'), pan([mapDimensions[0], 0])) + .on(iD.ui.cmd('⌘↑'), pan([0, mapDimensions[1]])) + .on(iD.ui.cmd('⌘→'), pan([-mapDimensions[0], 0])) + .on(iD.ui.cmd('⌘↓'), pan([0, -mapDimensions[1]])); + + d3.select(document) + .call(keybinding); + + context.enter(iD.modes.Browse(context)); + + context.container() + .call(iD.ui.Splash(context)) + .call(iD.ui.Restore(context)); + + var authenticating = iD.ui.Loading(context) + .message(t('loading_auth')); + + context.connection() + .on('authenticating.ui', function() { + context.container() + .call(authenticating); + }) + .on('authenticated.ui', function() { + authenticating.close(); + }); + } + + function ui(container) { + context.container(container); + context.loadLocale(function() { + render(container); + }); + } + + ui.sidebar = iD.ui.Sidebar(context); + + return ui; + } + + ui.tooltipHtml = function(text, key) { + var s = '' + text + ''; + if (key) { + s += '
' + + ' ' + (t('tooltip_keyhint')) + ' ' + + ' ' + key + '
'; + } + return s; + }; + + exports.ui = ui; + + Object.defineProperty(exports, '__esModule', { value: true }); + +})); \ No newline at end of file diff --git a/modules/ui/account.js b/modules/ui/core/account.js similarity index 100% rename from modules/ui/account.js rename to modules/ui/core/account.js diff --git a/modules/ui/attribution.js b/modules/ui/core/attribution.js similarity index 100% rename from modules/ui/attribution.js rename to modules/ui/core/attribution.js diff --git a/modules/ui/background.js b/modules/ui/core/background.js similarity index 100% rename from modules/ui/background.js rename to modules/ui/core/background.js diff --git a/modules/ui/cmd.js b/modules/ui/core/cmd.js similarity index 100% rename from modules/ui/cmd.js rename to modules/ui/core/cmd.js diff --git a/modules/ui/commit.js b/modules/ui/core/commit.js similarity index 100% rename from modules/ui/commit.js rename to modules/ui/core/commit.js diff --git a/modules/ui/confirm.js b/modules/ui/core/confirm.js similarity index 100% rename from modules/ui/confirm.js rename to modules/ui/core/confirm.js diff --git a/modules/ui/conflicts.js b/modules/ui/core/conflicts.js similarity index 100% rename from modules/ui/conflicts.js rename to modules/ui/core/conflicts.js diff --git a/modules/ui/contributors.js b/modules/ui/core/contributors.js similarity index 100% rename from modules/ui/contributors.js rename to modules/ui/core/contributors.js diff --git a/modules/ui/disclosure.js b/modules/ui/core/disclosure.js similarity index 100% rename from modules/ui/disclosure.js rename to modules/ui/core/disclosure.js diff --git a/modules/ui/entity_editor.js b/modules/ui/core/entity_editor.js similarity index 100% rename from modules/ui/entity_editor.js rename to modules/ui/core/entity_editor.js diff --git a/modules/ui/feature_info.js b/modules/ui/core/feature_info.js similarity index 100% rename from modules/ui/feature_info.js rename to modules/ui/core/feature_info.js diff --git a/modules/ui/feature_list.js b/modules/ui/core/feature_list.js similarity index 100% rename from modules/ui/feature_list.js rename to modules/ui/core/feature_list.js diff --git a/modules/ui/flash.js b/modules/ui/core/flash.js similarity index 100% rename from modules/ui/flash.js rename to modules/ui/core/flash.js diff --git a/modules/ui/full_screen.js b/modules/ui/core/full_screen.js similarity index 100% rename from modules/ui/full_screen.js rename to modules/ui/core/full_screen.js diff --git a/modules/ui/geolocate.js b/modules/ui/core/geolocate.js similarity index 100% rename from modules/ui/geolocate.js rename to modules/ui/core/geolocate.js diff --git a/modules/ui/help.js b/modules/ui/core/help.js similarity index 100% rename from modules/ui/help.js rename to modules/ui/core/help.js diff --git a/modules/ui/index.js b/modules/ui/core/index.js similarity index 100% rename from modules/ui/index.js rename to modules/ui/core/index.js diff --git a/modules/ui/info.js b/modules/ui/core/info.js similarity index 100% rename from modules/ui/info.js rename to modules/ui/core/info.js diff --git a/modules/ui/inspector.js b/modules/ui/core/inspector.js similarity index 100% rename from modules/ui/inspector.js rename to modules/ui/core/inspector.js diff --git a/modules/ui/intro.js b/modules/ui/core/intro.js similarity index 100% rename from modules/ui/intro.js rename to modules/ui/core/intro.js diff --git a/modules/ui/lasso.js b/modules/ui/core/lasso.js similarity index 100% rename from modules/ui/lasso.js rename to modules/ui/core/lasso.js diff --git a/modules/ui/loading.js b/modules/ui/core/loading.js similarity index 100% rename from modules/ui/loading.js rename to modules/ui/core/loading.js diff --git a/modules/ui/map_data.js b/modules/ui/core/map_data.js similarity index 100% rename from modules/ui/map_data.js rename to modules/ui/core/map_data.js diff --git a/modules/ui/map_in_map.js b/modules/ui/core/map_in_map.js similarity index 100% rename from modules/ui/map_in_map.js rename to modules/ui/core/map_in_map.js diff --git a/modules/ui/modal.js b/modules/ui/core/modal.js similarity index 100% rename from modules/ui/modal.js rename to modules/ui/core/modal.js diff --git a/modules/ui/modes.js b/modules/ui/core/modes.js similarity index 100% rename from modules/ui/modes.js rename to modules/ui/core/modes.js diff --git a/modules/ui/notice.js b/modules/ui/core/notice.js similarity index 100% rename from modules/ui/notice.js rename to modules/ui/core/notice.js diff --git a/modules/ui/preset.js b/modules/ui/core/preset.js similarity index 100% rename from modules/ui/preset.js rename to modules/ui/core/preset.js diff --git a/modules/ui/preset_icon.js b/modules/ui/core/preset_icon.js similarity index 100% rename from modules/ui/preset_icon.js rename to modules/ui/core/preset_icon.js diff --git a/modules/ui/preset_list.js b/modules/ui/core/preset_list.js similarity index 100% rename from modules/ui/preset_list.js rename to modules/ui/core/preset_list.js diff --git a/modules/ui/radial_menu.js b/modules/ui/core/radial_menu.js similarity index 100% rename from modules/ui/radial_menu.js rename to modules/ui/core/radial_menu.js diff --git a/modules/ui/raw_member_editor.js b/modules/ui/core/raw_member_editor.js similarity index 100% rename from modules/ui/raw_member_editor.js rename to modules/ui/core/raw_member_editor.js diff --git a/modules/ui/raw_membership_editor.js b/modules/ui/core/raw_membership_editor.js similarity index 100% rename from modules/ui/raw_membership_editor.js rename to modules/ui/core/raw_membership_editor.js diff --git a/modules/ui/raw_tag_editor.js b/modules/ui/core/raw_tag_editor.js similarity index 100% rename from modules/ui/raw_tag_editor.js rename to modules/ui/core/raw_tag_editor.js diff --git a/modules/ui/restore.js b/modules/ui/core/restore.js similarity index 100% rename from modules/ui/restore.js rename to modules/ui/core/restore.js diff --git a/modules/ui/save.js b/modules/ui/core/save.js similarity index 100% rename from modules/ui/save.js rename to modules/ui/core/save.js diff --git a/modules/ui/scale.js b/modules/ui/core/scale.js similarity index 100% rename from modules/ui/scale.js rename to modules/ui/core/scale.js diff --git a/modules/ui/selection_list.js b/modules/ui/core/selection_list.js similarity index 100% rename from modules/ui/selection_list.js rename to modules/ui/core/selection_list.js diff --git a/modules/ui/sidebar.js b/modules/ui/core/sidebar.js similarity index 100% rename from modules/ui/sidebar.js rename to modules/ui/core/sidebar.js diff --git a/modules/ui/source_switch.js b/modules/ui/core/source_switch.js similarity index 100% rename from modules/ui/source_switch.js rename to modules/ui/core/source_switch.js diff --git a/modules/ui/spinner.js b/modules/ui/core/spinner.js similarity index 100% rename from modules/ui/spinner.js rename to modules/ui/core/spinner.js diff --git a/modules/ui/splash.js b/modules/ui/core/splash.js similarity index 100% rename from modules/ui/splash.js rename to modules/ui/core/splash.js diff --git a/modules/ui/status.js b/modules/ui/core/status.js similarity index 100% rename from modules/ui/status.js rename to modules/ui/core/status.js diff --git a/modules/ui/success.js b/modules/ui/core/success.js similarity index 100% rename from modules/ui/success.js rename to modules/ui/core/success.js diff --git a/modules/ui/tag_reference.js b/modules/ui/core/tag_reference.js similarity index 100% rename from modules/ui/tag_reference.js rename to modules/ui/core/tag_reference.js diff --git a/modules/ui/toggle.js b/modules/ui/core/toggle.js similarity index 100% rename from modules/ui/toggle.js rename to modules/ui/core/toggle.js diff --git a/modules/ui/undo_redo.js b/modules/ui/core/undo_redo.js similarity index 100% rename from modules/ui/undo_redo.js rename to modules/ui/core/undo_redo.js diff --git a/modules/ui/view_on_osm.js b/modules/ui/core/view_on_osm.js similarity index 100% rename from modules/ui/view_on_osm.js rename to modules/ui/core/view_on_osm.js diff --git a/modules/ui/zoom.js b/modules/ui/core/zoom.js similarity index 100% rename from modules/ui/zoom.js rename to modules/ui/core/zoom.js diff --git a/js/id/ui.js b/modules/ui/ui.js similarity index 98% rename from js/id/ui.js rename to modules/ui/ui.js index f06f3a845..74b3d07bb 100644 --- a/js/id/ui.js +++ b/modules/ui/ui.js @@ -1,4 +1,4 @@ -iD.ui = function(context) { +export function ui(context) { function render(container) { var map = context.map(); @@ -226,9 +226,9 @@ iD.ui = function(context) { ui.sidebar = iD.ui.Sidebar(context); return ui; -}; +} -iD.ui.tooltipHtml = function(text, key) { +ui.tooltipHtml = function(text, key) { var s = '' + text + ''; if (key) { s += '
' + diff --git a/test/index.html b/test/index.html index d305c0218..125e39bab 100644 --- a/test/index.html +++ b/test/index.html @@ -52,13 +52,12 @@ - - - - + + +