diff --git a/frontend-js/.idea/workspace.xml b/frontend-js/.idea/workspace.xml index d9343e2ca6e44381bc048c5e36621f30c5ee9d1c..8af6484888f36a43cfcc07185a070bac91a2149b 100644 --- a/frontend-js/.idea/workspace.xml +++ b/frontend-js/.idea/workspace.xml @@ -6,11 +6,8 @@ </component> <component name="ChangeListManager"> <list default="true" id="c119f0dd-fdda-4d02-a51e-86bc6ef7e50c" name="Default" comment=""> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/js/map/data/IdentifiedElement.js" afterPath="$PROJECT_DIR$/src/main/js/map/data/IdentifiedElement.js" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/js/map/window/AbstractInfoWindow.js" afterPath="$PROJECT_DIR$/src/main/js/map/window/AbstractInfoWindow.js" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/js/map/window/AliasInfoWindow.js" afterPath="$PROJECT_DIR$/src/main/js/map/window/AliasInfoWindow.js" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/js/map/window/PointInfoWindow.js" afterPath="$PROJECT_DIR$/src/main/js/map/window/PointInfoWindow.js" /> - <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/js/map/window/ReactionInfoWindow.js" afterPath="$PROJECT_DIR$/src/main/js/map/window/ReactionInfoWindow.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/main/js/gui/topMenu/TopMenu.js" afterPath="$PROJECT_DIR$/src/main/js/gui/topMenu/TopMenu.js" /> + <change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/test/js/gui/topMenu/TopMenu-test.js" afterPath="$PROJECT_DIR$/src/test/js/gui/topMenu/TopMenu-test.js" /> </list> <ignored path="$PROJECT_DIR$/.tmp/" /> <ignored path="$PROJECT_DIR$/temp/" /> @@ -24,26 +21,6 @@ </component> <component name="FileEditorManager"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> - <file leaf-file-name="ServerConnector.js" pinned="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/src/main/js/ServerConnector.js"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="201"> - <caret line="699" column="0" lean-forward="false" selection-start-line="699" selection-start-column="0" selection-end-line="699" selection-end-column="0" /> - <folding /> - </state> - </provider> - </entry> - </file> - <file leaf-file-name="ServerConnector-test.js" pinned="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/src/test/js/ServerConnector-test.js"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="405"> - <caret line="99" column="45" lean-forward="false" selection-start-line="99" selection-start-column="45" selection-end-line="99" selection-end-column="45" /> - <folding /> - </state> - </provider> - </entry> - </file> <file leaf-file-name="minerva.js" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/src/main/js/minerva.js"> <provider selected="true" editor-type-id="text-editor"> @@ -61,22 +38,42 @@ <file leaf-file-name="TopMenu.js" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/src/main/js/gui/topMenu/TopMenu.js"> <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="269"> - <caret line="176" column="49" lean-forward="false" selection-start-line="176" selection-start-column="49" selection-end-line="176" selection-end-column="49" /> + <state relative-caret-position="235"> + <caret line="187" column="31" lean-forward="false" selection-start-line="187" selection-start-column="31" selection-end-line="187" selection-end-column="31" /> <folding> - <marker date="1503674880088" expanded="true" signature="2338:2390" ph="..." /> - <marker date="1503674880088" expanded="true" signature="4001:4033" ph="..." /> - <marker date="1503674880088" expanded="true" signature="4435:4487" ph="..." /> + <marker date="1503676564911" expanded="true" signature="2208:2260" ph="..." /> + <marker date="1503676564911" expanded="true" signature="3751:3783" ph="..." /> + <marker date="1503676564911" expanded="true" signature="4157:4209" ph="..." /> </folding> </state> </provider> </entry> </file> - <file leaf-file-name="AbstractInfoWindow.js" pinned="false" current-in-tab="true"> + <file leaf-file-name="AbstractInfoWindow.js" pinned="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/src/main/js/map/window/AbstractInfoWindow.js"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="-1482"> - <caret line="96" column="31" lean-forward="true" selection-start-line="96" selection-start-column="31" selection-end-line="96" selection-end-column="31" /> + <caret line="96" column="31" lean-forward="false" selection-start-line="96" selection-start-column="31" selection-end-line="96" selection-end-column="31" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="TopMenu-test.js" pinned="false" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/src/test/js/gui/topMenu/TopMenu-test.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="485"> + <caret line="52" column="47" lean-forward="false" selection-start-line="52" selection-start-column="47" selection-end-line="52" selection-end-column="47" /> + <folding /> + </state> + </provider> + </entry> + </file> + <file leaf-file-name="Legend.js" pinned="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/main/js/gui/Legend.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="459"> + <caret line="34" column="5" lean-forward="true" selection-start-line="34" selection-start-column="5" selection-end-line="34" selection-end-column="5" /> <folding /> </state> </provider> @@ -136,7 +133,6 @@ </component> <component name="FindInProjectRecents"> <findStrings> - <find>makeL</find> <find>trigger</find> <find>MakeL</find> <find>onSaveClicked</find> @@ -166,6 +162,7 @@ <find>getI</find> <find>getEl</find> <find>getIde</find> + <find>legend.sh</find> </findStrings> <replaceStrings> <replace>ValidationError</replace> @@ -181,7 +178,6 @@ <component name="IdeDocumentHistory"> <option name="CHANGED_PATHS"> <list> - <option value="$PROJECT_DIR$/src/test/js/gui/leftPanel/ProjectInfoPanel-test.js" /> <option value="$PROJECT_DIR$/src/test/js/gui/Panel-test.js" /> <option value="$PROJECT_DIR$/src/main/js/gui/leftPanel/SubmapPanel.js" /> <option value="$PROJECT_DIR$/src/main/js/map/Submap.js" /> @@ -226,12 +222,13 @@ <option value="$PROJECT_DIR$/src/test/js/ServerConnector-test.js" /> <option value="$PROJECT_DIR$/src/main/js/ServerConnector.js" /> <option value="$PROJECT_DIR$/src/main/js/minerva.js" /> - <option value="$PROJECT_DIR$/src/main/js/gui/topMenu/TopMenu.js" /> <option value="$PROJECT_DIR$/src/main/js/map/window/ReactionInfoWindow.js" /> <option value="$PROJECT_DIR$/src/main/js/map/window/PointInfoWindow.js" /> <option value="$PROJECT_DIR$/src/main/js/map/window/AliasInfoWindow.js" /> <option value="$PROJECT_DIR$/src/main/js/map/data/IdentifiedElement.js" /> <option value="$PROJECT_DIR$/src/main/js/map/window/AbstractInfoWindow.js" /> + <option value="$PROJECT_DIR$/src/main/js/gui/topMenu/TopMenu.js" /> + <option value="$PROJECT_DIR$/src/test/js/gui/topMenu/TopMenu-test.js" /> </list> </option> </component> @@ -314,16 +311,7 @@ <item name="src" type="462c0819:PsiDirectoryNode" /> <item name="main" type="462c0819:PsiDirectoryNode" /> <item name="js" type="462c0819:PsiDirectoryNode" /> - <item name="map" type="462c0819:PsiDirectoryNode" /> - </path> - <path> - <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" /> - <item name="frontend-js" type="462c0819:PsiDirectoryNode" /> - <item name="src" type="462c0819:PsiDirectoryNode" /> - <item name="main" type="462c0819:PsiDirectoryNode" /> - <item name="js" type="462c0819:PsiDirectoryNode" /> - <item name="map" type="462c0819:PsiDirectoryNode" /> - <item name="window" type="462c0819:PsiDirectoryNode" /> + <item name="gui" type="462c0819:PsiDirectoryNode" /> </path> <path> <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" /> @@ -353,7 +341,7 @@ <item name="test" type="462c0819:PsiDirectoryNode" /> <item name="js" type="462c0819:PsiDirectoryNode" /> <item name="gui" type="462c0819:PsiDirectoryNode" /> - <item name="admin" type="462c0819:PsiDirectoryNode" /> + <item name="topMenu" type="462c0819:PsiDirectoryNode" /> </path> <path> <item name="frontend-js" type="b2602c69:ProjectViewProjectNode" /> @@ -407,7 +395,7 @@ </list> </option> </component> - <component name="RunManager" selected="Node.js.test without coverage"> + <component name="RunManager" selected="npm.test"> <configuration name="AddProjectDialog" type="mocha-javascript-test-runner" factoryName="Mocha" temporary="true" nameIsGenerated="true"> <node-interpreter>project</node-interpreter> <node-options /> @@ -484,6 +472,21 @@ <name value="default" /> </test-names> </configuration> + <configuration name="TopMenu.toggleLegend" type="mocha-javascript-test-runner" factoryName="Mocha" temporary="true" nameIsGenerated="true"> + <node-interpreter>project</node-interpreter> + <node-options /> + <working-directory>$PROJECT_DIR$</working-directory> + <pass-parent-env>true</pass-parent-env> + <envs /> + <ui>bdd</ui> + <extra-mocha-options /> + <test-kind>TEST</test-kind> + <test-file>$PROJECT_DIR$/src/test/js/gui/topMenu/TopMenu-test.js</test-file> + <test-names> + <name value="TopMenu" /> + <name value="toggleLegend" /> + </test-names> + </configuration> <configuration default="true" type="mocha-javascript-test-runner" factoryName="Mocha"> <node-interpreter>project</node-interpreter> <node-options /> @@ -564,17 +567,6 @@ <profiling do-profile="true" /> </EXTENSION> </configuration> - <configuration name="src\test\js\gui\admin\AddProjectDialog-test.js" type="mocha-javascript-test-runner" factoryName="Mocha" temporary="true" nameIsGenerated="true"> - <node-interpreter>project</node-interpreter> - <node-options /> - <working-directory>$PROJECT_DIR$</working-directory> - <pass-parent-env>true</pass-parent-env> - <envs /> - <ui>bdd</ui> - <extra-mocha-options /> - <test-kind>TEST_FILE</test-kind> - <test-file>$PROJECT_DIR$/src/test/js/gui/admin/AddProjectDialog-test.js</test-file> - </configuration> <configuration name="test without coverage" type="NodeJSConfigurationType" factoryName="Node.js" path-to-node="project" path-to-js-file="node_modules/mocha/bin/_mocha" application-parameters="--recursive src/test" working-dir="$PROJECT_DIR$"> <EXTENSION ID="com.jetbrains.nodejs.remote.docker.NodeJSDockerRunConfigurationExtension"> <option name="envVars"> @@ -613,18 +605,18 @@ <item index="2" class="java.lang.String" itemvalue="npm.build-deploy" /> <item index="3" class="java.lang.String" itemvalue="npm.test" /> <item index="4" class="java.lang.String" itemvalue="Mocha.AddProjectDialog" /> - <item index="5" class="java.lang.String" itemvalue="Mocha.src\test\js\gui\admin\AddProjectDialog-test.js" /> - <item index="6" class="java.lang.String" itemvalue="Mocha.ServerConnector.removeProject.default" /> - <item index="7" class="java.lang.String" itemvalue="Node.js.GuiConnector.js" /> - <item index="8" class="java.lang.String" itemvalue="Node.js.AddProjectDialog.js" /> + <item index="5" class="java.lang.String" itemvalue="Mocha.ServerConnector.removeProject.default" /> + <item index="6" class="java.lang.String" itemvalue="Node.js.GuiConnector.js" /> + <item index="7" class="java.lang.String" itemvalue="Node.js.AddProjectDialog.js" /> + <item index="8" class="java.lang.String" itemvalue="Mocha.TopMenu.toggleLegend" /> </list> <recent_temporary> <list size="5"> - <item index="0" class="java.lang.String" itemvalue="Mocha.ServerConnector.removeProject.default" /> - <item index="1" class="java.lang.String" itemvalue="Node.js.AddProjectDialog.js" /> - <item index="2" class="java.lang.String" itemvalue="Node.js.GuiConnector.js" /> - <item index="3" class="java.lang.String" itemvalue="Mocha.AddProjectDialog" /> - <item index="4" class="java.lang.String" itemvalue="Mocha.src\test\js\gui\admin\AddProjectDialog-test.js" /> + <item index="0" class="java.lang.String" itemvalue="Mocha.TopMenu.toggleLegend" /> + <item index="1" class="java.lang.String" itemvalue="Mocha.ServerConnector.removeProject.default" /> + <item index="2" class="java.lang.String" itemvalue="Node.js.AddProjectDialog.js" /> + <item index="3" class="java.lang.String" itemvalue="Node.js.GuiConnector.js" /> + <item index="4" class="java.lang.String" itemvalue="Mocha.AddProjectDialog" /> </list> </recent_temporary> </component> @@ -646,29 +638,11 @@ <workItem from="1503502231792" duration="5017000" /> <workItem from="1503560609163" duration="22426000" /> <workItem from="1503648028157" duration="9357000" /> - <workItem from="1503673204553" duration="2778000" /> + <workItem from="1503673204553" duration="3503000" /> </task> <servers /> </component> <component name="TestHistory"> - <history-entry file="AddProjectDialog - 2017.08.25 at 15h 46m 22s.xml"> - <configuration name="AddProjectDialog" configurationId="mocha-javascript-test-runner" /> - </history-entry> - <history-entry file="AddProjectDialog - 2017.08.25 at 15h 46m 42s.xml"> - <configuration name="AddProjectDialog" configurationId="mocha-javascript-test-runner" /> - </history-entry> - <history-entry file="ServerConnector_removeProject_default - 2017.08.25 at 16h 34m 51s.xml"> - <configuration name="ServerConnector.removeProject.default" configurationId="mocha-javascript-test-runner" /> - </history-entry> - <history-entry file="ServerConnector_removeProject_default - 2017.08.25 at 16h 36m 31s.xml"> - <configuration name="ServerConnector.removeProject.default" configurationId="mocha-javascript-test-runner" /> - </history-entry> - <history-entry file="ServerConnector_removeProject_default - 2017.08.25 at 16h 36m 48s.xml"> - <configuration name="ServerConnector.removeProject.default" configurationId="mocha-javascript-test-runner" /> - </history-entry> - <history-entry file="ServerConnector_removeProject_default - 2017.08.25 at 16h 37m 17s.xml"> - <configuration name="ServerConnector.removeProject.default" configurationId="mocha-javascript-test-runner" /> - </history-entry> <history-entry file="ServerConnector_removeProject_default - 2017.08.25 at 16h 37m 49s.xml"> <configuration name="ServerConnector.removeProject.default" configurationId="mocha-javascript-test-runner" /> </history-entry> @@ -681,9 +655,27 @@ <history-entry file="ServerConnector_removeProject_default - 2017.08.25 at 16h 42m 14s.xml"> <configuration name="ServerConnector.removeProject.default" configurationId="mocha-javascript-test-runner" /> </history-entry> + <history-entry file="TopMenu_toggleLegend - 2017.08.25 at 17h 52m 36s.xml"> + <configuration name="TopMenu.toggleLegend" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="TopMenu_toggleLegend - 2017.08.25 at 17h 53m 16s.xml"> + <configuration name="TopMenu.toggleLegend" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="TopMenu_toggleLegend - 2017.08.25 at 17h 53m 32s.xml"> + <configuration name="TopMenu.toggleLegend" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="TopMenu_toggleLegend - 2017.08.25 at 17h 53m 45s.xml"> + <configuration name="TopMenu.toggleLegend" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="TopMenu_toggleLegend - 2017.08.25 at 17h 55m 56s.xml"> + <configuration name="TopMenu.toggleLegend" configurationId="mocha-javascript-test-runner" /> + </history-entry> + <history-entry file="TopMenu_toggleLegend - 2017.08.25 at 17h 56m 08s.xml"> + <configuration name="TopMenu.toggleLegend" configurationId="mocha-javascript-test-runner" /> + </history-entry> </component> <component name="TimeTrackingManager"> - <option name="totallyTimeSpent" value="39731000" /> + <option name="totallyTimeSpent" value="40456000" /> </component> <component name="ToolWindowManager"> <frame x="-8" y="-8" width="1936" height="1176" extended-state="6" /> @@ -695,7 +687,7 @@ <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" /> <window_info id="V8 CPU Profiling" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.34489223" sideWeight="0.66197914" order="0" side_tool="false" content_ui="tabs" /> <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" /> - <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.33833176" sideWeight="0.49791667" order="10" side_tool="false" content_ui="tabs" x="-170" y="502" width="1920" height="493" /> + <window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.33833176" sideWeight="0.49791667" order="10" side_tool="false" content_ui="tabs" x="-170" y="502" width="1920" height="493" /> <window_info id="npm" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" /> <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" /> <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" /> @@ -742,14 +734,6 @@ <watches-manager /> </component> <component name="editorHistoryManager"> - <entry file="file://$PROJECT_DIR$/node_modules/bluebird/js/release/promise.js"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="216"> - <caret line="681" column="45" lean-forward="false" selection-start-line="681" selection-start-column="45" selection-end-line="681" selection-end-column="45" /> - </state> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/isolate-0000000000455D70-v8-2017-08-24_16-56-20-.log" /> <entry file="file://$PROJECT_DIR$/src/main/js/Admin.js"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="335"> @@ -1089,18 +1073,6 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/main/js/gui/topMenu/TopMenu.js"> - <provider selected="true" editor-type-id="text-editor"> - <state relative-caret-position="269"> - <caret line="176" column="49" lean-forward="false" selection-start-line="176" selection-start-column="49" selection-end-line="176" selection-end-column="49" /> - <folding> - <marker date="1503674880088" expanded="true" signature="2338:2390" ph="..." /> - <marker date="1503674880088" expanded="true" signature="4001:4033" ph="..." /> - <marker date="1503674880088" expanded="true" signature="4435:4487" ph="..." /> - </folding> - </state> - </provider> - </entry> <entry file="file://$PROJECT_DIR$/src/main/js/map/AbstractCustomMap.js"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="226"> @@ -1144,7 +1116,35 @@ <entry file="file://$PROJECT_DIR$/src/main/js/map/window/AbstractInfoWindow.js"> <provider selected="true" editor-type-id="text-editor"> <state relative-caret-position="-1482"> - <caret line="96" column="31" lean-forward="true" selection-start-line="96" selection-start-column="31" selection-end-line="96" selection-end-column="31" /> + <caret line="96" column="31" lean-forward="false" selection-start-line="96" selection-start-column="31" selection-end-line="96" selection-end-column="31" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/js/gui/topMenu/TopMenu.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="235"> + <caret line="187" column="31" lean-forward="false" selection-start-line="187" selection-start-column="31" selection-end-line="187" selection-end-column="31" /> + <folding> + <marker date="1503676564911" expanded="true" signature="2208:2260" ph="..." /> + <marker date="1503676564911" expanded="true" signature="3751:3783" ph="..." /> + <marker date="1503676564911" expanded="true" signature="4157:4209" ph="..." /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/main/js/gui/Legend.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="459"> + <caret line="34" column="5" lean-forward="true" selection-start-line="34" selection-start-column="5" selection-end-line="34" selection-end-column="5" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/test/js/gui/topMenu/TopMenu-test.js"> + <provider selected="true" editor-type-id="text-editor"> + <state relative-caret-position="485"> + <caret line="52" column="47" lean-forward="false" selection-start-line="52" selection-start-column="47" selection-end-line="52" selection-end-column="47" /> <folding /> </state> </provider> diff --git a/frontend-js/src/main/js/gui/topMenu/TopMenu.js b/frontend-js/src/main/js/gui/topMenu/TopMenu.js index 724a7391d339f1aad580032348bb0e3e59d20ab8..9fa110dd8f98fbc7182f4d3368ddde06aa2767b5 100644 --- a/frontend-js/src/main/js/gui/topMenu/TopMenu.js +++ b/frontend-js/src/main/js/gui/topMenu/TopMenu.js @@ -13,223 +13,228 @@ var Functions = require('../../Functions'); var logger = require('../../logger'); function TopMenu(params) { - AbstractGuiElement.call(this, params); - var self = this; + AbstractGuiElement.call(this, params); + var self = this; - self._createGui(); + self._createGui(); } TopMenu.prototype = Object.create(AbstractGuiElement.prototype); TopMenu.prototype.constructor = TopMenu; TopMenu.prototype._createGui = function () { - var self = this; - - var overviewDialogDiv = Functions.createElement({ - type: "div", - name: "overviewDialog" - }); - self.getElement().appendChild(overviewDialogDiv); - self.setControlElement(PanelControlElementType.OVERVIEW_DIALOG_DIV, overviewDialogDiv); - - var hideButtonDiv = Functions.createElement({ - type: "div", - className: "headerHideDivButton" - }); - self.getElement().appendChild(hideButtonDiv); - - var hideButton = Functions.createElement({ - type: "button", - className: "headerHideButton", - name: "hideButton", - }); - hideButtonDiv.appendChild(hideButton); - self.setControlElement(PanelControlElementType.MENU_HIDE_LEFT_PANEL_BUTTON, hideButton); - - var hideButtonIcon = Functions.createElement({ - type: "i", - className: "fa fa-chevron-left", - name: "hideButtonIcon", - }); - hideButton.appendChild(hideButtonIcon); - self.setControlElement(PanelControlElementType.MENU_HIDE_LEFT_PANEL_BUTTON_ICON, hideButtonIcon); - - var versionDiv = Functions.createElement({ - type: "div", - className: "headerTextBold", - name: "versionDiv" - }); - self.getElement().appendChild(versionDiv); - self.setControlElement(PanelControlElementType.MENU_VERSION_DIV, versionDiv); - - var showOverviewDiv = Functions.createElement({ - type: "div", - style: "float: left;", - }); - self.getElement().appendChild(showOverviewDiv); - - var showOverviewButton = Functions.createElement({ - type: "button", - className: "minerva-overview-button", - name: "showOverviewButton", - content: "<i class='fa fa-sitemap' style='font-size:18px; font-weight:400; padding-right:10px;'></i><span >SHOW OVERVIEW</span>", - style: "display:none", - }); - showOverviewDiv.appendChild(showOverviewButton); - self.setControlElement(PanelControlElementType.MENU_SHOW_OVERVIEW_BUTTON, showOverviewButton); - - var rightHeaderMenuDiv = Functions.createElement({ - type: "div", - className: "rightHeaderMenu", - }); - self.getElement().appendChild(rightHeaderMenuDiv); - - var div4checkboxes = Functions.createElement({ - type: "div", - className: "minerva-top-checkbox-div", - }); - rightHeaderMenuDiv.appendChild(div4checkboxes); - - var legendCheckbox = Functions.createElement({ - type: "input", - inputType: "checkbox", - name: "legendCheckbox", - }); - div4checkboxes.appendChild(legendCheckbox); - self.setControlElement(PanelControlElementType.MENU_LEGEND_CHECKBOX, legendCheckbox); - - div4checkboxes.appendChild(Functions.createElement({ - type: "label", - content: "LEGEND", - })); - - var commentCheckbox = Functions.createElement({ - type: "input", - inputType: "checkbox", - name: "commentCheckbox", - }); - div4checkboxes.appendChild(commentCheckbox); - self.setControlElement(PanelControlElementType.MENU_COMMENTS_CHECKBOX, commentCheckbox); - - div4checkboxes.appendChild(Functions.createElement({ - type: "label", - content: "COMMENTS", - })); - - var refreshCommentButton = Functions.createElement({ - type: "button", - className: "minerva-overview-button", - name: "refreshCommentButton", - content: "<i class='fa fa-refresh' style='font-size:21px; font-weight:400;'></i>", - style: "display:none", - }); - div4checkboxes.appendChild(refreshCommentButton); - self.setControlElement(PanelControlElementType.MENU_REFRESH_COMMENTS_BUTTON, refreshCommentButton); - - var clearButton = Functions.createElement({ - type: "button", - className: "minerva-overview-button", - name: "clearButton", - content: "<i class='fa fa-times' style='font-size:18px; font-weight:300; padding-right:10px;'></i>CLEAR", - }); - rightHeaderMenuDiv.appendChild(clearButton); - self.setControlElement(PanelControlElementType.MENU_CLEAR_BUTTON, clearButton); + var self = this; + + var overviewDialogDiv = Functions.createElement({ + type: "div", + name: "overviewDialog" + }); + self.getElement().appendChild(overviewDialogDiv); + self.setControlElement(PanelControlElementType.OVERVIEW_DIALOG_DIV, overviewDialogDiv); + + var hideButtonDiv = Functions.createElement({ + type: "div", + className: "headerHideDivButton" + }); + self.getElement().appendChild(hideButtonDiv); + + var hideButton = Functions.createElement({ + type: "button", + className: "headerHideButton", + name: "hideButton", + }); + hideButtonDiv.appendChild(hideButton); + self.setControlElement(PanelControlElementType.MENU_HIDE_LEFT_PANEL_BUTTON, hideButton); + + var hideButtonIcon = Functions.createElement({ + type: "i", + className: "fa fa-chevron-left", + name: "hideButtonIcon", + }); + hideButton.appendChild(hideButtonIcon); + self.setControlElement(PanelControlElementType.MENU_HIDE_LEFT_PANEL_BUTTON_ICON, hideButtonIcon); + + var versionDiv = Functions.createElement({ + type: "div", + className: "headerTextBold", + name: "versionDiv" + }); + self.getElement().appendChild(versionDiv); + self.setControlElement(PanelControlElementType.MENU_VERSION_DIV, versionDiv); + + var showOverviewDiv = Functions.createElement({ + type: "div", + style: "float: left;", + }); + self.getElement().appendChild(showOverviewDiv); + + var showOverviewButton = Functions.createElement({ + type: "button", + className: "minerva-overview-button", + name: "showOverviewButton", + content: "<i class='fa fa-sitemap' style='font-size:18px; font-weight:400; padding-right:10px;'></i><span >SHOW OVERVIEW</span>", + style: "display:none", + }); + showOverviewDiv.appendChild(showOverviewButton); + self.setControlElement(PanelControlElementType.MENU_SHOW_OVERVIEW_BUTTON, showOverviewButton); + + var rightHeaderMenuDiv = Functions.createElement({ + type: "div", + className: "rightHeaderMenu", + }); + self.getElement().appendChild(rightHeaderMenuDiv); + + var div4checkboxes = Functions.createElement({ + type: "div", + className: "minerva-top-checkbox-div", + }); + rightHeaderMenuDiv.appendChild(div4checkboxes); + + var legendCheckbox = Functions.createElement({ + type: "input", + inputType: "checkbox", + name: "legendCheckbox", + }); + div4checkboxes.appendChild(legendCheckbox); + self.setControlElement(PanelControlElementType.MENU_LEGEND_CHECKBOX, legendCheckbox); + + div4checkboxes.appendChild(Functions.createElement({ + type: "label", + content: "LEGEND", + })); + + var commentCheckbox = Functions.createElement({ + type: "input", + inputType: "checkbox", + name: "commentCheckbox", + }); + div4checkboxes.appendChild(commentCheckbox); + self.setControlElement(PanelControlElementType.MENU_COMMENTS_CHECKBOX, commentCheckbox); + + div4checkboxes.appendChild(Functions.createElement({ + type: "label", + content: "COMMENTS", + })); + + var refreshCommentButton = Functions.createElement({ + type: "button", + className: "minerva-overview-button", + name: "refreshCommentButton", + content: "<i class='fa fa-refresh' style='font-size:21px; font-weight:400;'></i>", + style: "display:none", + }); + div4checkboxes.appendChild(refreshCommentButton); + self.setControlElement(PanelControlElementType.MENU_REFRESH_COMMENTS_BUTTON, refreshCommentButton); + + var clearButton = Functions.createElement({ + type: "button", + className: "minerva-overview-button", + name: "clearButton", + content: "<i class='fa fa-times' style='font-size:18px; font-weight:300; padding-right:10px;'></i>CLEAR", + }); + rightHeaderMenuDiv.appendChild(clearButton); + self.setControlElement(PanelControlElementType.MENU_CLEAR_BUTTON, clearButton); }; TopMenu.prototype.init = function () { - var self = this; - self.getControlElement(PanelControlElementType.MENU_LEGEND_CHECKBOX).onclick = function () { - var legend = self.getLegend(); - if (this.checked) { - legend.show(); - } else { - legend.hide(); - } + var self = this; + self.getControlElement(PanelControlElementType.MENU_LEGEND_CHECKBOX).onclick = function () { + return self.toggleLegend(); + }; + var hideButton = self.getControlElement(PanelControlElementType.MENU_HIDE_LEFT_PANEL_BUTTON); + var icon = self.getControlElement(PanelControlElementType.MENU_HIDE_LEFT_PANEL_BUTTON_ICON); + hideButton.onclick = function () { + if (icon.className.indexOf("fa-chevron-left") >= 0) { + icon.className = "fa fa-chevron-right"; + self.getLeftPanel().hide(); + } else { + icon.className = "fa fa-chevron-left"; + self.getLeftPanel().show(); + } + google.maps.event.trigger(self.getMap().getGoogleMap(), 'resize'); + }; + + var project = self.getMap().getProject(); + self.getControlElement(PanelControlElementType.MENU_VERSION_DIV).innerHTML = project.getVersion(); + + var commentCheckbox = self.getControlElement(PanelControlElementType.MENU_COMMENTS_CHECKBOX); + var refreshCommentButton = self.getControlElement(PanelControlElementType.MENU_REFRESH_COMMENTS_BUTTON); + commentCheckbox.onclick = function () { + ServerConnector.getSessionData(project).setShowComments(commentCheckbox.checked); + if (commentCheckbox.checked) { + refreshCommentButton.style.display = 'inline'; + } else { + refreshCommentButton.style.display = 'none'; + } + return self.getMap().refreshComments().then(null, GuiConnector.alert); + }; + refreshCommentButton.onclick = (function () { + return function () { + self.getMap().refreshComments(); + return false; }; - var hideButton = self.getControlElement(PanelControlElementType.MENU_HIDE_LEFT_PANEL_BUTTON); - var icon = self.getControlElement(PanelControlElementType.MENU_HIDE_LEFT_PANEL_BUTTON_ICON); - hideButton.onclick = function () { - if (icon.className.indexOf("fa-chevron-left") >= 0) { - icon.className = "fa fa-chevron-right"; - self.getLeftPanel().hide(); - } else { - icon.className = "fa fa-chevron-left"; - self.getLeftPanel().show(); - } - google.maps.event.trigger(self.getMap().getGoogleMap(), 'resize'); + })(); + + var clearButton = self.getControlElement(PanelControlElementType.MENU_CLEAR_BUTTON); + clearButton.onclick = (function () { + return function () { + return self.getMap().clearDbOverlays(); }; + })(); - var project = self.getMap().getProject(); - self.getControlElement(PanelControlElementType.MENU_VERSION_DIV).innerHTML = project.getVersion(); - - var commentCheckbox = self.getControlElement(PanelControlElementType.MENU_COMMENTS_CHECKBOX); - var refreshCommentButton = self.getControlElement(PanelControlElementType.MENU_REFRESH_COMMENTS_BUTTON); - commentCheckbox.onclick = function () { - ServerConnector.getSessionData(project).setShowComments(commentCheckbox.checked); - if (commentCheckbox.checked) { - refreshCommentButton.style.display = 'inline'; - } else { - refreshCommentButton.style.display = 'none'; - } - return self.getMap().refreshComments().then(null, GuiConnector.alert); + if (project.getTopOverviewImage() !== undefined && project.getTopOverviewImage() !== null) { + self._overviewDialog = new OverviewDialog({ + customMap: self.getMap(), + element: self.getControlElement(PanelControlElementType.OVERVIEW_DIALOG_DIV) + }); + var showOverviewButton = self.getControlElement(PanelControlElementType.MENU_SHOW_OVERVIEW_BUTTON); + showOverviewButton.onclick = function () { + return self._overviewDialog.showOverview(); }; - refreshCommentButton.onclick = (function () { - return function () { - self.getMap().refreshComments(); - return false; - }; - })(); - - var clearButton = self.getControlElement(PanelControlElementType.MENU_CLEAR_BUTTON); - clearButton.onclick = (function () { - return function () { - return self.getMap().clearDbOverlays(); - }; - })(); - - if (project.getTopOverviewImage() !== undefined && project.getTopOverviewImage() !== null) { - self._overviewDialog = new OverviewDialog({ - customMap: self.getMap(), - element: self.getControlElement(PanelControlElementType.OVERVIEW_DIALOG_DIV) - }); - var showOverviewButton = self.getControlElement(PanelControlElementType.MENU_SHOW_OVERVIEW_BUTTON); - showOverviewButton.onclick = function () { - return self._overviewDialog.showOverview(); - }; - showOverviewButton.style.display = ""; - } + showOverviewButton.style.display = ""; + } - if (ServerConnector.getSessionData().getShowComments()) { - self.getControlElement(PanelControlElementType.MENU_COMMENTS_CHECKBOX).checked = true; - return self.getMap().refreshComments(); - } else { - return Promise.resolve(); - } + if (ServerConnector.getSessionData().getShowComments()) { + self.getControlElement(PanelControlElementType.MENU_COMMENTS_CHECKBOX).checked = true; + return self.getMap().refreshComments(); + } else { + return Promise.resolve(); + } }; TopMenu.prototype.setLegend = function (legend) { - this._legend = legend; + this._legend = legend; }; TopMenu.prototype.getLegend = function () { - return this._legend; + return this._legend; }; TopMenu.prototype.setLeftPanel = function (leftPanel) { - this._leftPanel = leftPanel; + this._leftPanel = leftPanel; }; TopMenu.prototype.getLeftPanel = function () { - return this._leftPanel; + return this._leftPanel; }; TopMenu.prototype.destroy = function () { - var self = this; - if (self._overviewDialog !== undefined) { - self._overviewDialog.destroy(); - } - return Promise.resolve(); + var self = this; + if (self._overviewDialog !== undefined) { + self._overviewDialog.destroy(); + } + return Promise.resolve(); }; +TopMenu.prototype.toggleLegend = function () { + var self = this; + var legend = self.getLegend(); + if (self.getControlElement(PanelControlElementType.MENU_LEGEND_CHECKBOX).checked) { + legend.show(); + } else { + legend.hide(); + } +} + module.exports = TopMenu; \ No newline at end of file diff --git a/frontend-js/src/test/js/gui/topMenu/TopMenu-test.js b/frontend-js/src/test/js/gui/topMenu/TopMenu-test.js index 223975808184fe07a2ba6b753563dbd65affda56..65831942a8c30833c472234af814947229b8a566 100644 --- a/frontend-js/src/test/js/gui/topMenu/TopMenu-test.js +++ b/frontend-js/src/test/js/gui/topMenu/TopMenu-test.js @@ -4,36 +4,55 @@ require('../../mocha-config.js'); +var Legend = require('../../../../main/js/gui/Legend'); var TopMenu = require('../../../../main/js/gui/topMenu/TopMenu'); var chai = require('chai'); var assert = chai.assert; var logger = require('../../logger'); -describe('TopMenu', function() { +describe('TopMenu', function () { - it('constructor', function() { + it('constructor', function () { var map = helper.createCustomMap(); new TopMenu({ - element : testDiv, - customMap : map + element: testDiv, + customMap: map }); assert.equal(logger.getWarnings().length, 0); }); - - it('init', function() { + + it('init', function () { var map = helper.createCustomMap(); var topMenu = new TopMenu({ - element : testDiv, - customMap : map + element: testDiv, + customMap: map }); - + return topMenu.init(); }); + it('toggleLegend', function () { + var map = helper.createCustomMap(); + + var topMenu = new TopMenu({ + element: testDiv, + customMap: map + }); + var legend = new Legend({element: document.createElement("div"), customMap: map}); + topMenu.setLegend(legend); + return topMenu.init().then(function () { + $("input", testDiv).prop('checked', true); + return topMenu.toggleLegend(); + }).then(function () { + $("input", testDiv).prop('checked', false); + return topMenu.toggleLegend(); + }); + }); + });