From 2fbfcc1333b534783f4fd0e056760f038339f3b1 Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Mon, 22 Jun 2015 13:12:13 -0700 Subject: [PATCH 01/28] [Windowing] Added new window button Currently overwrites metadata similar to the FullScreenAction in order to temporarily display the new window button until the css is modified to do so. WTD-16 --- .../commonUI/browse/src/windowing/NewWindowAction.js | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/platform/commonUI/browse/src/windowing/NewWindowAction.js b/platform/commonUI/browse/src/windowing/NewWindowAction.js index 8b7c0751b5..bc222934b9 100644 --- a/platform/commonUI/browse/src/windowing/NewWindowAction.js +++ b/platform/commonUI/browse/src/windowing/NewWindowAction.js @@ -43,6 +43,17 @@ define( */ perform: function () { $window.alert("Not yet functional. This will open objects in a new window."); + }, + + getMetadata: function () { + // We override getMetadata, this is temporary + // Until the css/html code views the button on + // its own + var metadata = Object.create(NewWindowAction); + metadata.glyph = "y"; + metadata.description = "ENTER DESC HERE"; + metadata.group = "windowing"; + return metadata; } }; } From 8d9d8d4900ffb7eae2b082ea6c289a25be618700 Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Mon, 22 Jun 2015 13:14:39 -0700 Subject: [PATCH 02/28] [Windowing] Display URL Alert box when pressing new tab button displays the current url, that will be opened in the new tab. WTD-16 --- platform/commonUI/browse/src/windowing/NewWindowAction.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/platform/commonUI/browse/src/windowing/NewWindowAction.js b/platform/commonUI/browse/src/windowing/NewWindowAction.js index bc222934b9..e2281068f6 100644 --- a/platform/commonUI/browse/src/windowing/NewWindowAction.js +++ b/platform/commonUI/browse/src/windowing/NewWindowAction.js @@ -42,7 +42,7 @@ define( * Open the object in a new window (currently a stub) */ perform: function () { - $window.alert("Not yet functional. This will open objects in a new window."); + $window.alert($window.location.href); }, getMetadata: function () { From 6b2edc44697fea7e7dca5146f839182a586d9535 Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Mon, 22 Jun 2015 13:18:00 -0700 Subject: [PATCH 03/28] [Windowing] Opens Url Instead of displaying a dialog of the url, the url is opened in a new tab using the new window button. WTD-16. --- platform/commonUI/browse/src/windowing/NewWindowAction.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/commonUI/browse/src/windowing/NewWindowAction.js b/platform/commonUI/browse/src/windowing/NewWindowAction.js index e2281068f6..296d2c6937 100644 --- a/platform/commonUI/browse/src/windowing/NewWindowAction.js +++ b/platform/commonUI/browse/src/windowing/NewWindowAction.js @@ -42,7 +42,8 @@ define( * Open the object in a new window (currently a stub) */ perform: function () { - $window.alert($window.location.href); + var currentUrl = $window.location.href; + window.open(currentUrl); }, getMetadata: function () { From 140e3a1fb6968284fd40a17d9a7eb7bf6bc90dea Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Mon, 22 Jun 2015 13:20:57 -0700 Subject: [PATCH 04/28] [Windowing] Comments Added comments to the perform function WTD-16. --- platform/commonUI/browse/src/windowing/NewWindowAction.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/platform/commonUI/browse/src/windowing/NewWindowAction.js b/platform/commonUI/browse/src/windowing/NewWindowAction.js index 296d2c6937..3a6e4ea061 100644 --- a/platform/commonUI/browse/src/windowing/NewWindowAction.js +++ b/platform/commonUI/browse/src/windowing/NewWindowAction.js @@ -39,11 +39,13 @@ define( function NewWindowAction($window) { return { /** - * Open the object in a new window (currently a stub) + * Open the object in a new window */ perform: function () { + // Places the current Url into a variable + // Then the Url is opened using $window var currentUrl = $window.location.href; - window.open(currentUrl); + $window.open(currentUrl); }, getMetadata: function () { From 683a733ae11919ee53041de7ed455fc72150d3a3 Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Mon, 22 Jun 2015 14:00:25 -0700 Subject: [PATCH 05/28] [Windowing] SASS Edit Adjusted the SASS file to not hide the new window button. Also removed the overwrite metadata function that was used to temprarily allow us to view the new window button. WTD-16. --- .../commonUI/browse/src/windowing/NewWindowAction.js | 11 ----------- platform/commonUI/general/res/css/theme-espresso.css | 3 --- .../general/res/sass/_hide-non-functional.scss | 2 +- 3 files changed, 1 insertion(+), 15 deletions(-) diff --git a/platform/commonUI/browse/src/windowing/NewWindowAction.js b/platform/commonUI/browse/src/windowing/NewWindowAction.js index 3a6e4ea061..581c0d0f74 100644 --- a/platform/commonUI/browse/src/windowing/NewWindowAction.js +++ b/platform/commonUI/browse/src/windowing/NewWindowAction.js @@ -46,17 +46,6 @@ define( // Then the Url is opened using $window var currentUrl = $window.location.href; $window.open(currentUrl); - }, - - getMetadata: function () { - // We override getMetadata, this is temporary - // Until the css/html code views the button on - // its own - var metadata = Object.create(NewWindowAction); - metadata.glyph = "y"; - metadata.description = "ENTER DESC HERE"; - metadata.group = "windowing"; - return metadata; } }; } diff --git a/platform/commonUI/general/res/css/theme-espresso.css b/platform/commonUI/general/res/css/theme-espresso.css index ef43a9da06..b5db6cc658 100644 --- a/platform/commonUI/general/res/css/theme-espresso.css +++ b/platform/commonUI/general/res/css/theme-espresso.css @@ -4863,6 +4863,3 @@ input[type="text"] { /* line 32, ../sass/_hide-non-functional.scss */ .browse-mode .browse-area.holder { top: 5px; } - /* line 39, ../sass/_hide-non-functional.scss */ - .browse-mode .browse-area.holder > .contents.split-layout .object-browse-bar .btn.key-window { - display: none; } diff --git a/platform/commonUI/general/res/sass/_hide-non-functional.scss b/platform/commonUI/general/res/sass/_hide-non-functional.scss index 1f029674c9..ccc752a9bb 100644 --- a/platform/commonUI/general/res/sass/_hide-non-functional.scss +++ b/platform/commonUI/general/res/sass/_hide-non-functional.scss @@ -38,7 +38,7 @@ .object-browse-bar { .btn.key-window { // Hide the Open in New Window button - display: none; +// display: none; } } } From fd1c847e2c4f3cce8fd0827257d646245ec1286d Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Mon, 22 Jun 2015 15:06:12 -0700 Subject: [PATCH 06/28] [Windowing] Remove Varibale Removed the variable currentUrl because it was not needed. WTD-16. --- platform/commonUI/browse/src/windowing/NewWindowAction.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/platform/commonUI/browse/src/windowing/NewWindowAction.js b/platform/commonUI/browse/src/windowing/NewWindowAction.js index 581c0d0f74..68c88bdec6 100644 --- a/platform/commonUI/browse/src/windowing/NewWindowAction.js +++ b/platform/commonUI/browse/src/windowing/NewWindowAction.js @@ -44,8 +44,7 @@ define( perform: function () { // Places the current Url into a variable // Then the Url is opened using $window - var currentUrl = $window.location.href; - $window.open(currentUrl); + $window.open($window.location.href); } }; } From 02265c82d6db651c738da35254b269fcf84c283e Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Mon, 22 Jun 2015 15:10:55 -0700 Subject: [PATCH 07/28] [Windowing] Unit Test Completes Unit Test. Added a new file: NewWindowActionSpec.js, which performs the Jasmine test for NewWindowAction.js. The test specifies a mockWindow with a mockUrl and then adds both to a NewWindowAction. Also suite.json contains the NewWindowActon path. In order for NewWindowAction.jsWTD-16. to be reached. WTD-16. --- platform/commonUI/browse/test/suite.json | 1 + .../test/windowing/NewWindowActionSpec.js | 48 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 platform/commonUI/browse/test/windowing/NewWindowActionSpec.js diff --git a/platform/commonUI/browse/test/suite.json b/platform/commonUI/browse/test/suite.json index e36f345caa..350710df76 100644 --- a/platform/commonUI/browse/test/suite.json +++ b/platform/commonUI/browse/test/suite.json @@ -10,5 +10,6 @@ "navigation/NavigateAction", "navigation/NavigationService", "windowing/FullscreenAction", + "windowing/NewWindowAction", "windowing/WindowTitler" ] diff --git a/platform/commonUI/browse/test/windowing/NewWindowActionSpec.js b/platform/commonUI/browse/test/windowing/NewWindowActionSpec.js new file mode 100644 index 0000000000..327096e8a3 --- /dev/null +++ b/platform/commonUI/browse/test/windowing/NewWindowActionSpec.js @@ -0,0 +1,48 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine,afterEach,window*/ + +define( + ["../../src/windowing/NewWindowAction"], + function (NewWindowAction) { + "use strict"; + + describe("The new window action", function () { + var action, + mockWindow, + mockCurrentUrl; + + beforeEach(function () { + mockWindow = jasmine.createSpyObj("$window", ["open", "location"]); + mockWindow.location.href = "http://www.mockUrl.com"; + action = new NewWindowAction(mockWindow); + + }); + + it("New window is opened", function () { + action.perform(); + expect(mockWindow.open).toHaveBeenCalledWith("http://www.mockUrl.com"); + }); + + }); + } +); \ No newline at end of file From dc4436e890466fe64e4e7112d07362874f4d8dd2 Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Mon, 22 Jun 2015 15:15:46 -0700 Subject: [PATCH 08/28] [Windowing] Unit Test Adjustment Added comments to the NewWindowActionSpec.js file. WTD-16. --- .../commonUI/browse/test/windowing/NewWindowActionSpec.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/platform/commonUI/browse/test/windowing/NewWindowActionSpec.js b/platform/commonUI/browse/test/windowing/NewWindowActionSpec.js index 327096e8a3..17d3ac586c 100644 --- a/platform/commonUI/browse/test/windowing/NewWindowActionSpec.js +++ b/platform/commonUI/browse/test/windowing/NewWindowActionSpec.js @@ -32,6 +32,9 @@ define( mockCurrentUrl; beforeEach(function () { + // Creates a mockWindow from $window, then + // the mockWindow's location.href is set + // to a mock Url mockWindow = jasmine.createSpyObj("$window", ["open", "location"]); mockWindow.location.href = "http://www.mockUrl.com"; action = new NewWindowAction(mockWindow); @@ -39,6 +42,8 @@ define( }); it("New window is opened", function () { + // The expection is that the mockWindow + // will be called with it's location.href action.perform(); expect(mockWindow.open).toHaveBeenCalledWith("http://www.mockUrl.com"); }); From c7154447e28c1a96b678b865bd7b10c099019c9e Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Mon, 22 Jun 2015 15:35:08 -0700 Subject: [PATCH 09/28] [Windowing] Tabbing Rename Renamed all instances of NewWindow to be NewTab instead. WTD-16. --- platform/commonUI/browse/bundle.json | 4 ++-- .../src/windowing/{NewWindowAction.js => NewTabAction.js} | 4 ++-- platform/commonUI/browse/test/suite.json | 2 +- .../{NewWindowActionSpec.js => NewTabActionSpec.js} | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) rename platform/commonUI/browse/src/windowing/{NewWindowAction.js => NewTabAction.js} (96%) rename platform/commonUI/browse/test/windowing/{NewWindowActionSpec.js => NewTabActionSpec.js} (92%) diff --git a/platform/commonUI/browse/bundle.json b/platform/commonUI/browse/bundle.json index 08b8dd08c8..babf873aae 100644 --- a/platform/commonUI/browse/bundle.json +++ b/platform/commonUI/browse/bundle.json @@ -92,8 +92,8 @@ }, { "key": "window", - "implementation": "windowing/NewWindowAction.js", - "description": "Open this object in a new window", + "implementation": "windowing/NewTabAction.js", + "description": "Open this object in a new tab", "category": "view-control", "depends": [ "$window" ], "group": "windowing", diff --git a/platform/commonUI/browse/src/windowing/NewWindowAction.js b/platform/commonUI/browse/src/windowing/NewTabAction.js similarity index 96% rename from platform/commonUI/browse/src/windowing/NewWindowAction.js rename to platform/commonUI/browse/src/windowing/NewTabAction.js index 68c88bdec6..3a4883c2e8 100644 --- a/platform/commonUI/browse/src/windowing/NewWindowAction.js +++ b/platform/commonUI/browse/src/windowing/NewTabAction.js @@ -36,7 +36,7 @@ define( * the user interface.) * @constructor */ - function NewWindowAction($window) { + function NewTabAction($window) { return { /** * Open the object in a new window @@ -49,6 +49,6 @@ define( }; } - return NewWindowAction; + return NewTabAction; } ); \ No newline at end of file diff --git a/platform/commonUI/browse/test/suite.json b/platform/commonUI/browse/test/suite.json index 350710df76..6cc41900e1 100644 --- a/platform/commonUI/browse/test/suite.json +++ b/platform/commonUI/browse/test/suite.json @@ -10,6 +10,6 @@ "navigation/NavigateAction", "navigation/NavigationService", "windowing/FullscreenAction", - "windowing/NewWindowAction", + "windowing/NewTabAction", "windowing/WindowTitler" ] diff --git a/platform/commonUI/browse/test/windowing/NewWindowActionSpec.js b/platform/commonUI/browse/test/windowing/NewTabActionSpec.js similarity index 92% rename from platform/commonUI/browse/test/windowing/NewWindowActionSpec.js rename to platform/commonUI/browse/test/windowing/NewTabActionSpec.js index 17d3ac586c..eee8be59c4 100644 --- a/platform/commonUI/browse/test/windowing/NewWindowActionSpec.js +++ b/platform/commonUI/browse/test/windowing/NewTabActionSpec.js @@ -26,7 +26,7 @@ define( function (NewWindowAction) { "use strict"; - describe("The new window action", function () { + describe("The new tab action", function () { var action, mockWindow, mockCurrentUrl; @@ -37,11 +37,11 @@ define( // to a mock Url mockWindow = jasmine.createSpyObj("$window", ["open", "location"]); mockWindow.location.href = "http://www.mockUrl.com"; - action = new NewWindowAction(mockWindow); + action = new NewTabAction(mockWindow); }); - it("New window is opened", function () { + it("New tab with current url is opened", function () { // The expection is that the mockWindow // will be called with it's location.href action.perform(); From 1c445e1ce3c8fdf3aa1434c7280ed99d7209b9b9 Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Mon, 22 Jun 2015 15:44:09 -0700 Subject: [PATCH 10/28] [Windowing] New Tab Adjustment Added NewTabAction to spec file and adjusted it to new name. Also changed comment in NewTabAction along with a code fix. WTD-16. --- platform/commonUI/browse/src/windowing/NewTabAction.js | 2 +- platform/commonUI/browse/test/windowing/NewTabActionSpec.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/platform/commonUI/browse/src/windowing/NewTabAction.js b/platform/commonUI/browse/src/windowing/NewTabAction.js index 3a4883c2e8..780caf05b4 100644 --- a/platform/commonUI/browse/src/windowing/NewTabAction.js +++ b/platform/commonUI/browse/src/windowing/NewTabAction.js @@ -22,7 +22,7 @@ /*global define,Promise*/ /** - * Module defining NewWindowAction. Created by vwoeltje on 11/18/14. + * Module defining NewTabAction (Originally NewWindowAction). Created by vwoeltje on 11/18/14. */ define( [], diff --git a/platform/commonUI/browse/test/windowing/NewTabActionSpec.js b/platform/commonUI/browse/test/windowing/NewTabActionSpec.js index eee8be59c4..3731adbdb3 100644 --- a/platform/commonUI/browse/test/windowing/NewTabActionSpec.js +++ b/platform/commonUI/browse/test/windowing/NewTabActionSpec.js @@ -22,8 +22,8 @@ /*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine,afterEach,window*/ define( - ["../../src/windowing/NewWindowAction"], - function (NewWindowAction) { + ["../../src/windowing/NewTabAction"], + function (NewTabAction) { "use strict"; describe("The new tab action", function () { From d5a90194938eaae46e13361bcaed324bf0c39293 Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Mon, 22 Jun 2015 15:54:32 -0700 Subject: [PATCH 11/28] [Windowing] Comment Adjusted Changed window to tab in comments in file. WTF-16. --- platform/commonUI/browse/src/windowing/NewTabAction.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/platform/commonUI/browse/src/windowing/NewTabAction.js b/platform/commonUI/browse/src/windowing/NewTabAction.js index 780caf05b4..5711e528c3 100644 --- a/platform/commonUI/browse/src/windowing/NewTabAction.js +++ b/platform/commonUI/browse/src/windowing/NewTabAction.js @@ -30,8 +30,8 @@ define( "use strict"; /** - * The new window action allows a domain object to be opened - * into a new browser window. (Currently this is a stub, present + * The new tab action allows a domain object to be opened + * into a new browser tab. (Currently this is a stub, present * to allow the control to appear in the appropriate location in * the user interface.) * @constructor @@ -39,7 +39,7 @@ define( function NewTabAction($window) { return { /** - * Open the object in a new window + * Open the object in a new tab */ perform: function () { // Places the current Url into a variable From c35c9c43b78b327a8050a133189caedabe67bf34 Mon Sep 17 00:00:00 2001 From: Charles Hacskaylo Date: Mon, 22 Jun 2015 18:47:58 -0700 Subject: [PATCH 12/28] [Frontend] Tweak size of spinner WTD-1323 --- .../general/res/css/theme-espresso.css | 22 +++++++++---------- .../res/sass/helpers/_wait-spinner.scss | 2 +- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/platform/commonUI/general/res/css/theme-espresso.css b/platform/commonUI/general/res/css/theme-espresso.css index ef43a9da06..795a70b722 100644 --- a/platform/commonUI/general/res/css/theme-espresso.css +++ b/platform/commonUI/general/res/css/theme-espresso.css @@ -84,7 +84,7 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -/* line 5, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 5, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, @@ -105,38 +105,38 @@ time, mark, audio, video { font-size: 100%; vertical-align: baseline; } -/* line 22, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 22, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html { line-height: 1; } -/* line 24, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 24, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ ol, ul { list-style: none; } -/* line 26, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 26, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ table { border-collapse: collapse; border-spacing: 0; } -/* line 28, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 28, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ caption, th, td { text-align: left; font-weight: normal; vertical-align: middle; } -/* line 30, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 30, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q, blockquote { quotes: none; } - /* line 103, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ + /* line 103, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q:before, q:after, blockquote:before, blockquote:after { content: ""; content: none; } -/* line 32, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 32, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ a img { border: none; } -/* line 116, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 116, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } @@ -4658,8 +4658,8 @@ input[type="text"] { border-style: solid; border-width: 0.25em; border-radius: 100%; - height: 18px; - width: 18px; + height: 10px; + width: 10px; margin: 0 !important; padding: 0 !important; top: 2px; diff --git a/platform/commonUI/general/res/sass/helpers/_wait-spinner.scss b/platform/commonUI/general/res/sass/helpers/_wait-spinner.scss index 28f6e6bb28..fafae5e9ea 100644 --- a/platform/commonUI/general/res/sass/helpers/_wait-spinner.scss +++ b/platform/commonUI/general/res/sass/helpers/_wait-spinner.scss @@ -74,7 +74,7 @@ .treeview .wait-spinner { - $d: 18px; + $d: 10px; @include wait-spinner(0.25em, $colorKey); height: $d; width: $d; margin: 0 !important; From e38ad7b082e940c0b895642b7021b60fe83489e3 Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Tue, 23 Jun 2015 11:05:00 -0700 Subject: [PATCH 13/28] [Windowing] Path Alert Alerts user of the current path using an alert window, however the path is partially shown. It is the part of the current path after index.html#. WTD-16. --- platform/commonUI/browse/bundle.json | 5 +++-- .../browse/src/windowing/NewTabAction.js | 20 +++++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/platform/commonUI/browse/bundle.json b/platform/commonUI/browse/bundle.json index babf873aae..243a0b5519 100644 --- a/platform/commonUI/browse/bundle.json +++ b/platform/commonUI/browse/bundle.json @@ -92,10 +92,11 @@ }, { "key": "window", + "name": "Open in a new tab", "implementation": "windowing/NewTabAction.js", "description": "Open this object in a new tab", - "category": "view-control", - "depends": [ "$window" ], + "category": ["view-control", "contextual"], + "depends": [ "$window", "navigationService" ], "group": "windowing", "glyph": "y" }, diff --git a/platform/commonUI/browse/src/windowing/NewTabAction.js b/platform/commonUI/browse/src/windowing/NewTabAction.js index 5711e528c3..7d617103ec 100644 --- a/platform/commonUI/browse/src/windowing/NewTabAction.js +++ b/platform/commonUI/browse/src/windowing/NewTabAction.js @@ -36,15 +36,27 @@ define( * the user interface.) * @constructor */ - function NewTabAction($window) { + function NewTabAction($window, navigationService) { + function getNavigatedObject() { + var navigatedObject = navigationService.getNavigation(); + return navigatedObject; + } + return { /** * Open the object in a new tab */ perform: function () { - // Places the current Url into a variable - // Then the Url is opened using $window - $window.open($window.location.href); + var currentDomainObject = getNavigatedObject(), + context = currentDomainObject && + currentDomainObject.getCapability('context'), + objectPath = context ? context.getPath() : [], + ids = objectPath.map(function (currentDomainObject) { + return currentDomainObject.getId(); + }), + partialPath = "/browse/" + ids.slice(1).join("/"); + + window.alert(partialPath); } }; } From e55cd88d388a185f4a97d6f52adcafb9e0351e50 Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Tue, 23 Jun 2015 11:38:01 -0700 Subject: [PATCH 14/28] [Windowing] View Includes the view using the .search().view to find the view key and append that to the end of the url. Prints this out using the alert window. WTD-16. --- platform/commonUI/browse/bundle.json | 2 +- platform/commonUI/browse/src/windowing/NewTabAction.js | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/platform/commonUI/browse/bundle.json b/platform/commonUI/browse/bundle.json index 243a0b5519..ee6ad552c0 100644 --- a/platform/commonUI/browse/bundle.json +++ b/platform/commonUI/browse/bundle.json @@ -96,7 +96,7 @@ "implementation": "windowing/NewTabAction.js", "description": "Open this object in a new tab", "category": ["view-control", "contextual"], - "depends": [ "$window", "navigationService" ], + "depends": [ "$window", "$route", "$location", "navigationService" ], "group": "windowing", "glyph": "y" }, diff --git a/platform/commonUI/browse/src/windowing/NewTabAction.js b/platform/commonUI/browse/src/windowing/NewTabAction.js index 7d617103ec..d715bb4c52 100644 --- a/platform/commonUI/browse/src/windowing/NewTabAction.js +++ b/platform/commonUI/browse/src/windowing/NewTabAction.js @@ -28,7 +28,8 @@ define( [], function () { "use strict"; - + var ROOT_ID = "ROOT", + DEFAULT_PATH = "mine"; /** * The new tab action allows a domain object to be opened * into a new browser tab. (Currently this is a stub, present @@ -36,7 +37,7 @@ define( * the user interface.) * @constructor */ - function NewTabAction($window, navigationService) { + function NewTabAction($window, $route, $location, navigationService) { function getNavigatedObject() { var navigatedObject = navigationService.getNavigation(); return navigatedObject; @@ -47,6 +48,8 @@ define( * Open the object in a new tab */ perform: function () { + + var currentDomainObject = getNavigatedObject(), context = currentDomainObject && currentDomainObject.getCapability('context'), @@ -54,7 +57,8 @@ define( ids = objectPath.map(function (currentDomainObject) { return currentDomainObject.getId(); }), - partialPath = "/browse/" + ids.slice(1).join("/"); + viewKey = $location.search().view, + partialPath = "index.html#/browse/" + ids.slice(1).join("/") + "?view=" + viewKey; window.alert(partialPath); } From 29efb5cf3b927091a5750ea7d2bad9ad6b67493a Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Tue, 23 Jun 2015 13:32:09 -0700 Subject: [PATCH 15/28] [Windowing] Selected Object Uses the context to get the selected object or the navigated object. This allows contextual menu new tab access from the tree. WTD-16. --- platform/commonUI/browse/bundle.json | 2 +- .../browse/src/windowing/NewTabAction.js | 37 ++++++++++++------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/platform/commonUI/browse/bundle.json b/platform/commonUI/browse/bundle.json index ee6ad552c0..f8c230edd1 100644 --- a/platform/commonUI/browse/bundle.json +++ b/platform/commonUI/browse/bundle.json @@ -96,7 +96,7 @@ "implementation": "windowing/NewTabAction.js", "description": "Open this object in a new tab", "category": ["view-control", "contextual"], - "depends": [ "$window", "$route", "$location", "navigationService" ], + "depends": [ "$window", "$route", "$location" ], "group": "windowing", "glyph": "y" }, diff --git a/platform/commonUI/browse/src/windowing/NewTabAction.js b/platform/commonUI/browse/src/windowing/NewTabAction.js index d715bb4c52..1780658473 100644 --- a/platform/commonUI/browse/src/windowing/NewTabAction.js +++ b/platform/commonUI/browse/src/windowing/NewTabAction.js @@ -29,7 +29,7 @@ define( function () { "use strict"; var ROOT_ID = "ROOT", - DEFAULT_PATH = "mine"; + DEFAULT_PATH = "/mine"; /** * The new tab action allows a domain object to be opened * into a new browser tab. (Currently this is a stub, present @@ -37,10 +37,19 @@ define( * the user interface.) * @constructor */ - function NewTabAction($window, $route, $location, navigationService) { - function getNavigatedObject() { - var navigatedObject = navigationService.getNavigation(); - return navigatedObject; + function NewTabAction($window, $route, $location, context) { + + + function getSelectedObject() { + var object, + newParent; + if (context.selectedObject) { + newParent = context.domainObject; + object = context.selectedObject; + } else { + object = context.domainObject; + } + return object; } return { @@ -48,19 +57,19 @@ define( * Open the object in a new tab */ perform: function () { - - - var currentDomainObject = getNavigatedObject(), - context = currentDomainObject && - currentDomainObject.getCapability('context'), + var genPath = [ROOT_ID].concat(($route.current.params.ids || DEFAULT_PATH)), + selectedDomainObject = getSelectedObject(), + context = selectedDomainObject && + selectedDomainObject.getCapability('context'), objectPath = context ? context.getPath() : [], - ids = objectPath.map(function (currentDomainObject) { - return currentDomainObject.getId(); + ids = objectPath.map(function (selectedDomainObject) { + return selectedDomainObject.getId(); }), viewKey = $location.search().view, - partialPath = "index.html#/browse/" + ids.slice(1).join("/") + "?view=" + viewKey; + partialPath = "index.html#/browse/" + ids.slice(1).join("/") + + "?view=" + viewKey; - window.alert(partialPath); + window.open(partialPath, "_blank"); } }; } From 21462bf60de8bcf395d881d9335b51eebfe59e00 Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Tue, 23 Jun 2015 15:39:48 -0700 Subject: [PATCH 16/28] [Windowing] View Set Sets the view to bethe current page's view mode. WTD-16. --- .../commonUI/browse/src/windowing/NewTabAction.js | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/platform/commonUI/browse/src/windowing/NewTabAction.js b/platform/commonUI/browse/src/windowing/NewTabAction.js index 1780658473..e68696b273 100644 --- a/platform/commonUI/browse/src/windowing/NewTabAction.js +++ b/platform/commonUI/browse/src/windowing/NewTabAction.js @@ -57,19 +57,21 @@ define( * Open the object in a new tab */ perform: function () { - var genPath = [ROOT_ID].concat(($route.current.params.ids || DEFAULT_PATH)), - selectedDomainObject = getSelectedObject(), + var selectedDomainObject = getSelectedObject(), + mode = "browse", context = selectedDomainObject && selectedDomainObject.getCapability('context'), objectPath = context ? context.getPath() : [], ids = objectPath.map(function (selectedDomainObject) { return selectedDomainObject.getId(); }), - viewKey = $location.search().view, - partialPath = "index.html#/browse/" + ids.slice(1).join("/") + - "?view=" + viewKey; + viewPath = "?view=" + $location.search().view, + partialPath = "index.html#/" + mode + "/" + + ids.slice(1).join("/") + viewPath; window.open(partialPath, "_blank"); + + } }; } From db3e132799dff0888d781c3705b019d6b8194ad4 Mon Sep 17 00:00:00 2001 From: Charles Hacskaylo Date: Tue, 23 Jun 2015 16:07:29 -0700 Subject: [PATCH 17/28] [Frontend] New symbols font and CSS adjustments, in-progress WTD-980 WTD-396 --- platform/commonUI/browse/bundle.json | 2 +- .../browse/res/templates/items/grid-item.html | 2 +- platform/commonUI/general/res/css/items.css | 75 ++-- .../general/res/css/theme-espresso.css | 143 ++++---- platform/commonUI/general/res/css/tree.css | 3 +- .../general/res/fonts/symbols/wtdsymbols.eot | Bin 10760 -> 9352 bytes .../general/res/fonts/symbols/wtdsymbols.svg | 332 ++++-------------- .../general/res/fonts/symbols/wtdsymbols.ttf | Bin 10596 -> 9176 bytes .../general/res/fonts/symbols/wtdsymbols.woff | Bin 7384 -> 9252 bytes .../commonUI/general/res/sass/_constants.scss | 4 +- .../commonUI/general/res/sass/_icons.scss | 17 +- .../general/res/sass/controls/_buttons.scss | 8 +- .../general/res/sass/controls/_controls.scss | 6 +- .../general/res/sass/helpers/_splitter.scss | 2 +- .../general/res/sass/items/_item.scss | 35 +- .../commonUI/general/res/sass/tree/_tree.scss | 4 +- .../res/sass/user-environ/_bottom-bar.scss | 8 +- .../res/sass/user-environ/_layout.scss | 12 +- .../res/sass/user-environ/_object-browse.scss | 2 +- 19 files changed, 242 insertions(+), 413 deletions(-) mode change 100644 => 100755 platform/commonUI/general/res/fonts/symbols/wtdsymbols.eot mode change 100644 => 100755 platform/commonUI/general/res/fonts/symbols/wtdsymbols.svg mode change 100644 => 100755 platform/commonUI/general/res/fonts/symbols/wtdsymbols.ttf mode change 100644 => 100755 platform/commonUI/general/res/fonts/symbols/wtdsymbols.woff diff --git a/platform/commonUI/browse/bundle.json b/platform/commonUI/browse/bundle.json index 08b8dd08c8..89a8c10bce 100644 --- a/platform/commonUI/browse/bundle.json +++ b/platform/commonUI/browse/bundle.json @@ -65,7 +65,7 @@ "key": "grid-item", "templateUrl": "templates/items/grid-item.html", "uses": [ "type", "action" ], - "gestures": [ "info", "menu" ] + "gestures": [ "info" ] }, { "key": "object-header", diff --git a/platform/commonUI/browse/res/templates/items/grid-item.html b/platform/commonUI/browse/res/templates/items/grid-item.html index 24c10f88d0..e64afd4a9f 100644 --- a/platform/commonUI/browse/res/templates/items/grid-item.html +++ b/platform/commonUI/browse/res/templates/items/grid-item.html @@ -28,7 +28,7 @@
-
P
+
P
diff --git a/platform/commonUI/general/res/css/items.css b/platform/commonUI/general/res/css/items.css index 4d6abee562..0e822f901d 100644 --- a/platform/commonUI/general/res/css/items.css +++ b/platform/commonUI/general/res/css/items.css @@ -144,61 +144,88 @@ .items-holder .item.grid-item.btn-menu .invoke-menu { color: #828282; } /* line 42, ../sass/items/_item.scss */ + .items-holder .item.grid-item .item-main .item-type { + -moz-transition-property: "color"; + -o-transition-property: "color"; + -webkit-transition-property: "color"; + transition-property: "color"; + -moz-transition-duration: 200ms; + -o-transition-duration: 200ms; + -webkit-transition-duration: 200ms; + transition-duration: 200ms; + -moz-transition-timing-function: ease-in-out; + -o-transition-timing-function: ease-in-out; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; } + /* line 46, ../sass/items/_item.scss */ .items-holder .item.grid-item:hover .item-main .item-type { color: #0099cc !important; } - /* line 45, ../sass/items/_item.scss */ - .items-holder .item.grid-item:hover .item-main .item-open { - display: block; } /* line 49, ../sass/items/_item.scss */ + .items-holder .item.grid-item:hover .item-main .item-open { + opacity: 1; } + /* line 54, ../sass/items/_item.scss */ .items-holder .item.grid-item .contents { top: 5px; right: 5px; bottom: 5px; left: 5px; } - /* line 53, ../sass/items/_item.scss */ + /* line 58, ../sass/items/_item.scss */ .items-holder .item.grid-item .bar.top-bar.abs { bottom: auto; height: 20px; line-height: 20px; z-index: 5; } - /* line 58, ../sass/items/_item.scss */ + /* line 63, ../sass/items/_item.scss */ .items-holder .item.grid-item .bar.top-bar.abs .left, .items-holder .item.grid-item .bar.top-bar.abs .right { width: auto; } - /* line 60, ../sass/items/_item.scss */ + /* line 65, ../sass/items/_item.scss */ .items-holder .item.grid-item .bar.top-bar.abs .left .icon, .items-holder .item.grid-item .bar.top-bar.abs .right .icon { margin-left: 5px; } - /* line 65, ../sass/items/_item.scss */ + /* line 70, ../sass/items/_item.scss */ .items-holder .item.grid-item .bar.bottom-bar.abs { top: auto; - height: 40px; + height: 30px; padding: 5px; } - /* line 71, ../sass/items/_item.scss */ + /* line 76, ../sass/items/_item.scss */ .items-holder .item.grid-item .item-main { + line-height: 160px; z-index: 1; } - /* line 79, ../sass/items/_item.scss */ + /* line 82, ../sass/items/_item.scss */ .items-holder .item.grid-item .item-main .item-type { color: #737373; text-align: center; - font-size: 7em; - line-height: 180px; } - /* line 85, ../sass/items/_item.scss */ + font-size: 6em; } + /* line 88, ../sass/items/_item.scss */ .items-holder .item.grid-item .item-main .item-open { - display: none; - font-size: 5em; - line-height: 180px; + -moz-transition-property: "opacity"; + -o-transition-property: "opacity"; + -webkit-transition-property: "opacity"; + transition-property: "opacity"; + -moz-transition-duration: 200ms; + -o-transition-duration: 200ms; + -webkit-transition-duration: 200ms; + transition-duration: 200ms; + -moz-transition-timing-function: ease-in-out; + -o-transition-timing-function: ease-in-out; + -webkit-transition-timing-function: ease-in-out; + transition-timing-function: ease-in-out; + opacity: 0; + font-size: 3em; left: auto; - width: 30px; } - /* line 93, ../sass/items/_item.scss */ + width: 50px; + pointer-events: none; + text-align: right; } + /* line 100, ../sass/items/_item.scss */ .items-holder .item.grid-item .title { text-shadow: rgba(0, 0, 0, 0.1) 0 1px 2px; color: #cccccc; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } - /* line 101, ../sass/items/_item.scss */ + /* line 108, ../sass/items/_item.scss */ .items-holder .item.grid-item .details { font-size: 0.8em; } - /* line 104, ../sass/items/_item.scss */ + /* line 111, ../sass/items/_item.scss */ .items-holder .item.grid-item.selected { background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzBhYzJmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwYjRmMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA=='); background-size: 100%; @@ -235,15 +262,15 @@ /* line 160, ../sass/_mixins.scss */ .items-holder .item.grid-item.selected.btn-menu .invoke-menu { color: #52d4ff; } - /* line 109, ../sass/items/_item.scss */ + /* line 116, ../sass/items/_item.scss */ .items-holder .item.grid-item.selected .item-type, .items-holder .item.grid-item.selected .top-bar .icon:not(.alert) { color: #80dfff; } - /* line 110, ../sass/items/_item.scss */ + /* line 117, ../sass/items/_item.scss */ .items-holder .item.grid-item.selected .item-main .item-open { color: #80dfff; } - /* line 111, ../sass/items/_item.scss */ + /* line 118, ../sass/items/_item.scss */ .items-holder .item.grid-item.selected .title { color: white; } - /* line 113, ../sass/items/_item.scss */ + /* line 120, ../sass/items/_item.scss */ .items-holder .item.grid-item.selected:hover .item-main .item-type { color: white !important; } diff --git a/platform/commonUI/general/res/css/theme-espresso.css b/platform/commonUI/general/res/css/theme-espresso.css index ef43a9da06..3fe6b78639 100644 --- a/platform/commonUI/general/res/css/theme-espresso.css +++ b/platform/commonUI/general/res/css/theme-espresso.css @@ -84,7 +84,7 @@ * this source code distribution or the Licensing information page available * at runtime from the About dialog for additional information. *****************************************************************************/ -/* line 5, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 5, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, @@ -105,38 +105,38 @@ time, mark, audio, video { font-size: 100%; vertical-align: baseline; } -/* line 22, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 22, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ html { line-height: 1; } -/* line 24, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 24, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ ol, ul { list-style: none; } -/* line 26, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 26, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ table { border-collapse: collapse; border-spacing: 0; } -/* line 28, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 28, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ caption, th, td { text-align: left; font-weight: normal; vertical-align: middle; } -/* line 30, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 30, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q, blockquote { quotes: none; } - /* line 103, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ + /* line 103, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ q:before, q:after, blockquote:before, blockquote:after { content: ""; content: none; } -/* line 32, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 32, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ a img { border: none; } -/* line 116, ../../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ +/* line 116, ../../../../../../../../../Library/Ruby/Gems/2.0.0/gems/compass-core-1.0.3/stylesheets/compass/reset/_utilities.scss */ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { display: block; } @@ -504,7 +504,7 @@ mct-container { .user-environ .browse-area, .user-environ .edit-area, .user-environ .editor { - top: 40px; + top: 34px; right: 5px; bottom: 30px; left: 5px; } @@ -526,24 +526,29 @@ mct-container { top: 40px; } /* line 121, ../sass/user-environ/_layout.scss */ .user-environ .bottom-bar { - top: auto; + overflow: hidden; + position: absolute; + top: 5px; right: 5px; bottom: 5px; left: 5px; + width: auto; + height: auto; + top: auto; height: 20px; } - /* line 127, ../sass/user-environ/_layout.scss */ + /* line 125, ../sass/user-environ/_layout.scss */ .user-environ .bottom-bar .status-holder { right: 110px; } - /* line 130, ../sass/user-environ/_layout.scss */ + /* line 128, ../sass/user-environ/_layout.scss */ .user-environ .bottom-bar .app-logo { left: auto; width: 105px; } -/* line 137, ../sass/user-environ/_layout.scss */ +/* line 135, ../sass/user-environ/_layout.scss */ .cols { overflow: hidden; *zoom: 1; } - /* line 139, ../sass/user-environ/_layout.scss */ + /* line 137, ../sass/user-environ/_layout.scss */ .cols .col { -moz-box-sizing: border-box; -webkit-box-sizing: border-box; @@ -554,103 +559,100 @@ mct-container { margin-left: 1.5%; padding-left: 5px; position: relative; } - /* line 147, ../sass/user-environ/_layout.scss */ + /* line 145, ../sass/user-environ/_layout.scss */ .cols .col:first-child { margin-left: 0; padding-left: 0; } - /* line 154, ../sass/user-environ/_layout.scss */ + /* line 152, ../sass/user-environ/_layout.scss */ .cols.cols-2 .col-1 { min-width: 250px; width: 48.5%; } - /* line 160, ../sass/user-environ/_layout.scss */ + /* line 158, ../sass/user-environ/_layout.scss */ .cols.cols-2-ff .col-100px { width: 100px; } - /* line 167, ../sass/user-environ/_layout.scss */ + /* line 165, ../sass/user-environ/_layout.scss */ .cols.cols-6 .col-1 { min-width: 83.33333px; width: 15.16667%; } - /* line 173, ../sass/user-environ/_layout.scss */ + /* line 171, ../sass/user-environ/_layout.scss */ .cols.cols-16 .col-1 { min-width: 31.25px; width: 4.75%; } - /* line 176, ../sass/user-environ/_layout.scss */ + /* line 174, ../sass/user-environ/_layout.scss */ .cols.cols-16 .col-2 { min-width: 62.5px; width: 11%; } - /* line 179, ../sass/user-environ/_layout.scss */ + /* line 177, ../sass/user-environ/_layout.scss */ .cols.cols-16 .col-7 { min-width: 218.75px; width: 42.25%; } - /* line 185, ../sass/user-environ/_layout.scss */ + /* line 183, ../sass/user-environ/_layout.scss */ .cols.cols-32 .col-2 { min-width: 31.25px; width: 4.75%; } - /* line 188, ../sass/user-environ/_layout.scss */ + /* line 186, ../sass/user-environ/_layout.scss */ .cols.cols-32 .col-15 { min-width: 234.375px; width: 45.375%; } - /* line 192, ../sass/user-environ/_layout.scss */ + /* line 190, ../sass/user-environ/_layout.scss */ .cols .l-row { overflow: hidden; *zoom: 1; padding: 5px 0; } -/* line 198, ../sass/user-environ/_layout.scss */ +/* line 196, ../sass/user-environ/_layout.scss */ .pane { position: absolute; } - /* line 201, ../sass/user-environ/_layout.scss */ + /* line 199, ../sass/user-environ/_layout.scss */ .pane.treeview .create-btn-holder { bottom: auto; top: 0; - height: 30px; } - /* line 204, ../sass/user-environ/_layout.scss */ + height: 24px; } + /* line 202, ../sass/user-environ/_layout.scss */ .pane.treeview .create-btn-holder .wrapper.menu-element { position: absolute; bottom: 5px; } - /* line 209, ../sass/user-environ/_layout.scss */ + /* line 207, ../sass/user-environ/_layout.scss */ .pane.treeview .tree-holder { overflow: auto; - top: 35px; } - /* line 217, ../sass/user-environ/_layout.scss */ + top: 34px; } + /* line 214, ../sass/user-environ/_layout.scss */ .pane.items .object-browse-bar .left.abs, .pane.items .object-browse-bar .btn-menu span.left.l-click-area, .btn-menu .pane.items .object-browse-bar span.left.l-click-area, .pane.items .object-browse-bar .right.abs, .pane.items .object-browse-bar .btn-menu span.right.l-click-area, .btn-menu .pane.items .object-browse-bar span.right.l-click-area { top: auto; } - /* line 221, ../sass/user-environ/_layout.scss */ - .pane.items .object-browse-bar .right.abs, .pane.items .object-browse-bar .btn-menu span.right.l-click-area, .btn-menu .pane.items .object-browse-bar span.right.l-click-area { - bottom: 5px; } - /* line 225, ../sass/user-environ/_layout.scss */ + /* line 219, ../sass/user-environ/_layout.scss */ .pane.items .object-holder { - top: 35px; } - /* line 230, ../sass/user-environ/_layout.scss */ + top: 34px; } + /* line 224, ../sass/user-environ/_layout.scss */ .pane.edit-main .object-holder { top: 0; } - /* line 236, ../sass/user-environ/_layout.scss */ + /* line 230, ../sass/user-environ/_layout.scss */ .pane .object-holder { overflow: auto; } -/* line 244, ../sass/user-environ/_layout.scss */ +/* line 238, ../sass/user-environ/_layout.scss */ .split-layout.horizontal > .pane { margin-top: 5px; } - /* line 247, ../sass/user-environ/_layout.scss */ + /* line 241, ../sass/user-environ/_layout.scss */ .split-layout.horizontal > .pane:first-child { margin-top: 0; } -/* line 254, ../sass/user-environ/_layout.scss */ +/* line 248, ../sass/user-environ/_layout.scss */ .split-layout.vertical > .pane { margin-left: 5px; } - /* line 256, ../sass/user-environ/_layout.scss */ + /* line 250, ../sass/user-environ/_layout.scss */ .split-layout.vertical > .pane > .holder { left: 0; right: 0; } - /* line 260, ../sass/user-environ/_layout.scss */ + /* line 254, ../sass/user-environ/_layout.scss */ .split-layout.vertical > .pane:first-child { margin-left: 0; } - /* line 262, ../sass/user-environ/_layout.scss */ + /* line 256, ../sass/user-environ/_layout.scss */ .split-layout.vertical > .pane:first-child .holder { right: 5px; } -/* line 271, ../sass/user-environ/_layout.scss */ +/* line 265, ../sass/user-environ/_layout.scss */ .vscroll { overflow-y: auto; } @@ -1054,9 +1056,7 @@ mct-container { /* line 52, ../sass/_icons.scss */ .invoke-menu { text-shadow: none; - display: inline-block; - font-size: 0.8rem; - vertical-align: middle; } + display: inline-block; } /* line 60, ../sass/_icons.scss */ .btn-menu .invoke-menu, @@ -1073,13 +1073,11 @@ mct-container { .menu .type-icon, .tree-item .type-icon, .super-menu.menu .type-icon { - font-size: 1.12rem; - line-height: 1.582rem; position: absolute; } -/* line 81, ../sass/_icons.scss */ -.super-menu.menu.dropdown .icon { - font-size: 1.33rem; } +/* line 80, ../sass/_icons.scss */ +.tree-item .type-icon { + font-size: 16px; } /*.s-limit-upr, .s-limit-lwr { @@ -1357,17 +1355,12 @@ mct-container { .btn.lg, .btn.create-btn, .l-btn.lg, .l-btn.create-btn { - height: 25px; - line-height: 25px; + height: 24px; padding: 0 22.5px; } /* line 39, ../sass/controls/_buttons.scss */ .btn.create-btn .menu, .l-btn.create-btn .menu { margin-left: -7.5px; } - /* line 42, ../sass/controls/_buttons.scss */ - .btn.create-btn > .ui-symbol, - .l-btn.create-btn > .ui-symbol { - font-size: 1.1em; } /* line 46, ../sass/controls/_buttons.scss */ .btn.sm, .l-btn.sm { @@ -1694,10 +1687,6 @@ mct-container { .icon-btn.labeled, .s-icon-btn.labeled { padding: 0 3.75px; } - /* line 117, ../sass/controls/_buttons.scss */ - .icon-btn.labeled .icon, - .s-icon-btn.labeled .icon { - font-size: 1.5em; } /* line 120, ../sass/controls/_buttons.scss */ .icon-btn.labeled .title-label, .s-icon-btn.labeled .title-label { @@ -2004,15 +1993,6 @@ a.l-btn span { font-size: 11.25px; height: 25px; line-height: 25px; } - /* line 186, ../sass/controls/_controls.scss */ - .object-browse-bar .btn .icon:not(.invoke-menu), - .object-browse-bar .t-btn .icon:not(.invoke-menu), - .top-bar .buttons-main .btn .icon:not(.invoke-menu), - .top-bar .buttons-main .t-btn .icon:not(.invoke-menu), - .tool-bar .btn .icon:not(.invoke-menu), - .tool-bar .t-btn .icon:not(.invoke-menu) { - font-size: 150%; - vertical-align: middle; } /* line 194, ../sass/controls/_controls.scss */ label.checkbox.custom { @@ -2210,7 +2190,7 @@ label.checkbox.custom { color: white; } /* line 363, ../sass/controls/_controls.scss */ .object-header .label .type-icon { - font-size: 1.5em; + font-size: 120%; margin-right: 5px; vertical-align: middle; } @@ -3641,8 +3621,8 @@ input[type="text"] { /* line 89, ../sass/forms/_filter.scss */ .top-bar input.filter { font-size: .9em; - height: 30px; - line-height: 30px; + height: 24px; + line-height: 24px; margin-right: 5px; padding-left: 10px; padding-right: 10px; @@ -4177,7 +4157,7 @@ input[type="text"] { /* line 22, ../sass/user-environ/_bottom-bar.scss */ .ue-bottom-bar { color: gray; - font-size: 0.7em; + font-size: 0.65rem; line-height: 16px; } /* line 26, ../sass/user-environ/_bottom-bar.scss */ .ue-bottom-bar .status-holder { @@ -4219,9 +4199,7 @@ input[type="text"] { box-shadow: inset rgba(0, 0, 0, 0.5) 0 0 3px; text-shadow: rgba(0, 0, 0, 0.3) 0 0 2px; display: inline-block; - font-size: 1.25em; - vertical-align: middle; - margin-right: 5px; } + margin-right: 3px; } /* line 58, ../sass/user-environ/_bottom-bar.scss */ .status.block .status-indicator.ok { color: #009900; } @@ -4252,7 +4230,8 @@ input[type="text"] { *****************************************************************************/ /* line 22, ../sass/user-environ/_object-browse.scss */ .object-browse-bar { - height: 30px; } + height: 24px; + line-height: 24px; } /* line 26, ../sass/user-environ/_object-browse.scss */ .object-browse-bar .items-select .btn-menu { margin-right: 15px; } @@ -4555,7 +4534,7 @@ input[type="text"] { /* line 86, ../sass/helpers/_splitter.scss */ .browse-area .splitter { - top: 35px; } + top: 34px; } /* line 90, ../sass/helpers/_splitter.scss */ .edit-area .splitter { diff --git a/platform/commonUI/general/res/css/tree.css b/platform/commonUI/general/res/css/tree.css index b40a2aec6e..2582522f39 100644 --- a/platform/commonUI/general/res/css/tree.css +++ b/platform/commonUI/general/res/css/tree.css @@ -114,7 +114,7 @@ ul.tree { -webkit-transition: background-color 0.25s; transition: background-color 0.25s; display: block; - font-size: 0.80rem; + font-size: 0.80em; height: 1.4rem; line-height: 1.4rem; margin-bottom: 3px; @@ -123,6 +123,7 @@ ul.tree { ul.tree li span.tree-item .view-control { display: inline-block; margin-left: 5px; + font-size: 0.75em; width: 10px; } /* line 44, ../sass/tree/_tree.scss */ ul.tree li span.tree-item .view-control:hover { diff --git a/platform/commonUI/general/res/fonts/symbols/wtdsymbols.eot b/platform/commonUI/general/res/fonts/symbols/wtdsymbols.eot old mode 100644 new mode 100755 index 0d7e45d06d68d1ff88b65b3c9209f299945b3af5..eba4be8dfccded2d7f65426266bb7abea0775416 GIT binary patch literal 9352 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 T$ - - -Created by FontForge 20090622 at Tue Jun 9 23:00:40 2015 - By deploy user -Copyright 2015 Adobe Systems Incorporated. All rights reserved. - + +Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/platform/commonUI/general/res/fonts/symbols/wtdsymbols.ttf b/platform/commonUI/general/res/fonts/symbols/wtdsymbols.ttf old mode 100644 new mode 100755 index b29f0fc015e34fd4be2b779a44de682edbc0626f..43bf7b8af892310770aa9bd307f9fbf776f91c20 GIT binary patch literal 9176 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 E2O@RcLjV8( literal 10596 zcmbVy34Bw>)$hz)YqMq9vNmkXvSitkZP}JA*^(D*)>*R)slgMtOL^>B~`^;vq ze{-kpDk1bXq!)FpYF`ts^g0QV8j$zF()Ru}kqCMsd3Kbmm#*B{6}RKUAR&rR2(f*> zth0TI^1r@44`o9L!DYx$O=cgVtr6+$Wvd1@n6>00(k~+HSlQFjzHZN*ThLyN|Jthd z4Qt2`$y}6`A#GpXzN+*4cJ>0A{slDDt?B6>=v~lziICg^l>eQGxlvNP_Ot2gwxsd@ zAPExc5%SiP_D4sbkqeQLxb>0&X*FRY7Z=*G%Mr{wZUf4txb<>R(X!~hL(b_SO@ceP zL`y2?O%O?368j_FO%x=KZD)d8w?v<`mG}v`F?QXJx??Fq)@-VmiBO0(QI zVMFYXsB0&b{yo};PRGEAvpW!eg>XSoji&{{jPNYF&xr*$o-X7)i6H7A93P>uuf@cPT4RyK^kY*ns{04byghwO8(k?s$ z2zdxtJ$8nu#oR<7;DHEIW{fwWL!PUcFXnP1F4CV8pParzD7zGid?|?X%cM;nU(g`J zgK{2W*U>*DKei5H1x2t%*9r11$uTR5Bgc_nfHjLFTH+ucQbfj+YEnxY$!s!@w2^kQ zl&m4^$R=_p`4#zyTp`!&4cJFwo%2!KC)chg(?~P94YfN+H|ZlA$bX>rd)O^kMeWFk zk#mthMBa_O6FD9EedKqMwGriqF8wv zt4bLnBHVnTP>LJPP@uMos5S8k+C*JavOdLNBql=4#4;{5E!~=7BbjzbmNT2=xZJrU zFW*y8SmgDQV&V^!lmNUh1kyzwCCA9G$ysuV#?uNqi#|Y)(zjVYo51F=C9IF_ zW2e|P$tK+<9hQzsL()*3GOi-7EADXIDFsnfEACbNKygYLudGvkOZlwwtjes)R?Sxp zs*bCbYQOp+^?z&Bnj%euW|?M-<`vBc@hS0*@!yI6dxAM3J7Gz}-h@*LLkX9)@W$XO9DY|*O<+}a4Q@T%+Y)K_aOOozLxt>Z7%wY1b- zOH|!wN>tycN=&vI4;ihAs+9(IwxyPLh*J7wZA<~{m?*KA z*?FQzA|Qn{LeH^YT*}Gu9)7~-Q75SMGaNcIQ|9y zoN4(N(^ssV*0>yMY?NLj^ey&~hB_cT@!?BsO?dZMS&t}lpe%v^gBe-RSi5I2PX!?X zx86ea*REZoFJ7b0ztNxZKZrVlPH1|ptAq_G7_E26Kk=k<_Jp8^@OssSx$Nj4Gzl~VkiS#Fp7Q>vUb zG#J7!;J29NUy$v3L{U(fo{{JCyED^@@=H9q-bdo7r!Xxu&s&_Ak?zea@#NFhrbnB- zX*oI8!a0xpywG-qgh3nLV4o)6|5%Wv$72v4)~=d3D6fu-@=4Ib7iXO{@7r z{wrDuOCcIuhV4lrnZ!$KP=8dYqoQn5d?o#F%crCphmGl018(%N9LLRI<@4o-oIwxE z#nJd_WBOQ$oMknH*Tj0bxgq@0s7L9Bqi_X0|xfTaF$?!EDLlI+KD}(p>z>{iY}r(Q~(ya zLaaW#2{*V|%E@Qs~|5A~Fev`MWJKzrmRDqD&X>mfsRa3ff-??-927ckGt1kHQ z&ZEP_M|b|%Q&Z>p1-pE1-xEXMTISvP@$e4cvdvIXRlnLO~dqH znvTC(cFQegwA>c&`6M)JR;c8bTSjS?-eT{7W*A}WkFzM_oLSlKV0MZ>2t5yqjr1=E zsiwMye}3@0{PP;9uGvrZ_CD3i-Z^>b;K|nx9Xc8QUGJ>fy}h$%MR_32W}ibpK;s&+ zlqyLdRk1?5LK$X)+bT&%g*6Eos%hZEylDv?R^zbQ_OA?I!eUQRLQlf0!5*IQdH?()P45Bg0soW}X(v=HJaKEzP2B*?@PWd>;XBb7LnE3Uy#nxs^%O35B3? zhrs$$=mU4i60D&CXoQeO1u~Rkaz?YCjdZDv!MX)5TY5{XJ!e5}(5POvOl1nzF37Q` zwxru!3+jRf9o4zT5M}WT zAw0hpKXx?SAi{C_1&SXv(p*UgPAYKT5L((1GUzQidbh=)Vw?EXq0f$m=lt?4 zec>FN^ji2O+VbqP{Lp{B`YJ}iB^5%vH6&SRXJMe~2Kn$%XuYU*3Uj#fNd>i?5Y3p;4T({(azVn8y4eFm9MCU(#w7%Nn5iL732R0SDv zyPR1nh>4Iy=6iMVYc;oToOkQ3P5*Jnys73B#l=N+HGzVH(y9s6bE^GR!Mu6bZkso6 z>YD|Dn!2Lm;(~_SVqc8*1kkR6MuQ~kgJz4qh^nv&Eqa$yMQzmLa<4sBT6%0PJsA4M z+I7DO@>dsbb+34eO;b(q@r>dc6&>_VQ1J{^O)hX0eaKNh8n<&H~Vb zH!QPC2&DrXG+VaSLJy2)x!gf|*X&Sbb8}_ctgW59xamPg*UV||Yr4N{H-A6mt7WZa zO|#1@o0`wkpE#x<9lUg z?`4|#CX+SW4~r@g1mq|m_$v{5EE6N*BxcYDOoDBYsY+_fi6TM|Ee+_MrL@#xQXwc1 z)-QR?>T+2hV~Oc*clzUhrefa_0j8n{9h|q z9$2vge;iE3*z6+CQHhWO8%{;?Yy+5Amdow1(O^~)bt5VHArQ`L7J`OxLW}s#7Do}K zZ*Fl%s>Y3r+rZ3e3BhXhe%H)n7JDC%eqA#U&2WZrdLKe|889V5i9-Q58C#B7*Li2$oqRF11I7f zdEc6xH<;#>@w$AAnH35_G$2sG3MqGHfsM!8JhMEu&oa%`X4~gBPk2jn^Reb;s&8gh zoB7U+0*{UMZ?<{zgjvb+gu{^0eWL-Z?ZBe_ik-vEgGWgZB+`M#tH9egsS=s!Nk;`wkE&wRsh(4a2DRZFSugcV26{=%Oq^G?(`{dj z&`bQj*j@&vAA%jzlQj7RCUi&@4VZEQ@)@i&APK#dL7kW^LGD7&%gKjxH~)hRw%v*3*nl;*2)Pk* zi32Ac_|CbcNAvX+lR7#lO`hDaw7%lb!Of4I8!9jK`#dg}$LBB1VSk-c#8qbPqZ7YB ze)8l=CnrwM*_<`SPp=nE;UBnMg0_zDE1Yn&%^ilrwgbthOuci!MnX%a8Nm!jQ-NVy81=^m3 zY58<8PNV71meiW5CRNUWQDspW2XdH7)2NTn9x$ocT)@g#05cDnZ8r1xl16_vKbRc| zWYgAc|A%VrTD8`=);QHPpwXHJOyCR74N?K@u>t!nwnnl>_d+++0JQ|z4gAb5*b58o zywBd4a@1frn$l>$yQ#dqshnN#+QY}}McHYercF)%G%bf0mFMP{m*?lj^z9Yc!2}>V zz+52(qrk;tGGfvYJ8&ZEizyY+s6PffOoSH<{{9JaM90`xm3JL9N}bRZlbmeva;A8|JD2HR9w?4DM1( z$Rx>k1FXItet=DzHVq9SJV49&tF&j+o=xZXgrCP_Xb-KLJej{Ud2&>?TO=F(HTu#J zXerT;1wDw?XxSpy4~VLcW1|LelJa! z9x9tjzs2vQ-&($8*RCbYmzPbSaT6~`{T_}|z~X3NSHk+Szye3P=Lq*474sH0Ps=`l zUpWcd3mAxE36kP!q@cwtg}l^RMcql%;+AquN|##?Jd#A&bH4b$NpT-eXVRx;XU1z( z%F+aw-O+z9^=&<0?R&g!oSyy6?@CesO=2_t6es=7kgVeen4iU4m9*XQEZ?;39d%QU&dzOZj8`aXjG$;-9g|alZNZaeCLWox66$cqd8h z?=tNK=o!*uqE3aOl!AO33b;KK^h5ApaCnmVUCI2(JLqOtSv9xcpOoZHnqI|T$eNw1 z%2e~a?w}pXbaQrgX83zm(@~amKVgw!FzBaPn`B`rp%vZEki}`kMy$ahL1}OYisU`& z4h4l9CP0sDKB2wm%-OpW7F1RgCJ&~xd{@NBBfe3;h%a88aL-RR@84fBEhlj>c@9n9 zU(qOHbLZcFr&x<99@qgqATVh@DS_UL#3-o@Td&&?I^G}o)y_4Y%#rWtE`@7w*`J$sif>+N-=v6c*1FK4XBZ4DnvbM;c* z%fGKzpU5gI$~s|Gr1#eqdF>AWC|v>Y!3=Hfh992jfl>p|jj(V!mP8#{Ma)Zc0y-v; zD-de{$W;NX3gK13=2f#A>hRlGCZ(HLV`cRu)nSLvt54>}qKTO)l+vU3$63>jR%_$- zIIA^YV@;lB|pEV zeEHtJ%YP89DGw0S?Rl`zQEW>c(pQb#!@OTglfiAcT|ivngkeLu8G{*ldAQ}ucK4KI zVD+N69AW?YI>~T~LdBy@P1NiRd<&3}9J3J$JIk%XO{mC_hPvRV^IJ5yWm2<>vNKBM z6lIEna~@HqAgZL4M|3*mAx4=3c{&}BtVW%wC}f-~l~a)`3X^om;+!&M>5@1XG8463 z!cUkYuvSi~d}xBGM$b$tr{3TITBL4}eSNUO#|M1%^*&lO_@fW$$p!rKLTcb6gNp{= zm$N4b)bR#e#6u!`0X4*AQee3;eDgIl1Fzs$5D&}V<*VNq{>@;6ch}afySxp9EU>ZO z2Yj;_L1#;MBdZqUZW87T>?HF`dZ;VP!1h|J*VD2Z5vif4g%_TthSv;x`9+#4 zj^~0ObPBsn55uy-Tjh$5hOxZ{tJT1Ei#wfSby@Kj^`qw?;cF6hFb%C`bT;;GM0jis z@GzO+xZULrh1}sc#hn$0-`sHoXDkmJ8Ow8r!o8w|{{Cod>oA=n(}M|#xxmWm9T^N~ zJe<58LaUizaMqZld&sclfbee7uGihyCgyq6 z*2G*y8hl858@w)!NP8zv;)l`{dAj5ztyY_-vl?5CMw2zeM4vI4j1|V#R7GBbJ|zKV zlA30i*e`usi(7r;G~PaR<}2RnYxSBn-d^++{xCHsPpgg3PRK(i6-Kj}9>&9HY#rx9 zzE-c(bNl8!R~fv$(E!Bf%HR6(cGRDMzHlaJ-(>56845zX;t8E?ALhwwp) zQ=K^2t)uJ02J9wr-@v!A5xyPMqv9=etS-)7>=L%xc6K?Og4SOubHX<-T8lElmamMV zh_xJvwio+W#OOLP27=(@h~OyR2FTsZ6_Jg%+;>7-gPES7yC^v@dL`&2Y zcv>&4kubhEbdH(=>=T^tzVwchp6+VwZgrKFxo9fZK}7hUU7?VR1-cu%LN1ynvW|w_ z{NiXOd59b1Bndyg!E%H3qJOsnurokIwDjF0{B^nAdUOtc&L8F%TcDlR9|^hXdU>?h zkM#2Stu(cjUmU)Pe%U+v^?m5D;LYA*;eX^FSvj8OFSZQR_3X-64wlzLr?m2I!!bSf zAo!sHqJkbvv73{z3n8M4(kxXr-W@Ta4Iz;yX!7ynTelsjQ#%`}Hr-g{74LmojO@YV z{F4*Mw{6{eZOZxF^z>ZVSeecvSS$bNdH`tSN2l-?A!jc#e{^N(den{j`mTe9M68Nw z>`ja+ffk83vQo&cQj|JPa9F759s4glb64Dt?>uxN6v`^2rpiyVLRsv}g(tuLW+wfZ zn={|s^5g}69XqmQ$&&n5V{3Gdk`rh881BE>_kLs}e(X#*UxZg#Qurz;N+z#Fr48{K za(66F;j=pvi!=DAug2mMNuimscpQm``j#aXdqzRqVsRz%H^t&AGMnXt78(aDg)cdT zRupjx&-C$FoMGR-AB#(Pzj-|tk0VAZcq-~E&}VZju0(!kEUqF4>Aj?$^x#{Ojrjhf z8()nqBLl>a?}>c)exekyTCxP?i%BQq&8XFn@=me}Pdk}PR^!W&9<*E|-`nM~CGbIr zb}R9--_)yU(TBGE2z~fAr4v2FTT$PGuaml$E*r4>eZ{5r+9f@UJMGOI`v*E#_1mYe z?&#@T)6>^J(7B|@Ub}LoU9Q@1@9XUE>|2LSLT)8MAk z5pTj!OUYUkv}0h>)VXx+%63GelkO)KAncnu5&80`Qx*2H?kbS?O_jeiVzK;*jZc`c z;v%09kAK@_7Rc)afr2|xK6N41hxh>IB<{=Pl5biq(WV16x>0jA>UPPiG1f+;SEF3y z^kIx8sJ}{P#tP(#RTKH$;NDuqMtfO}RwC7b+WlgsX07aO@9zZbyE^;q13mVEWu5l1 z)$8x<80hXRu9+*`r4Otu4?aFVQ(K8=<8m*R<5$TXP~>IvmaeX_dgzy z{{fl%rmF*)6k0;U?oX6$lmXIj5?}v7U#3D6rQ-{!44kDhp{KKn3uh{P1cVcx2k!z3 z@qSN8vL7Ci5`u4mfF;UFCBBxb!pWk$pW&Fw2)S^2psDm%fXoy;NnVfwukgWnEJpa!M}B6J-(zG#9rBi@2Tz} zM=7I{VhZHIFW-yBj9|@V%ZnKiq4#l#w1hRFvYwOe58}99>3rdocuqTi?-Szr*1lup Fe*qp$m89S*72cx@a`znyrXz`Jj$}DwG>e%C4-_~P!x$GB~elY zN)#nUw&Y4#7y;@cHtIA&(Flp-#7$uoit7Ne`$!?L3CDG9w`pNFNFX2x(pUwOsI7~* zC<@+gzkhc3?nqjyq9y0`&+I?{%>1wU_nsIZ8DX5^>F#DeDic3p3Y9CL@m<*g#&|7y zrYN<1=zZ(Rsp&I-oj`hs((Pc~`s35*08_4F42`AKe0=ueF~GjgSm(2pe)__j`iYt8 zql`s+&_77YdwIjI6957>g?2Y3)$r7vICcI>z`g|hQA#Zyk2*Vd1mj|V${712O3gm? z#;NHiF>ibb?Wjz9*%POyPt5?f5AXdsrPUwao;)*m?mSR?%HsrTLi~z9&uT#9*Od3s z{zJRuzh*gJhj#TNnyXt>*BHAcgkc#>6G(u_Jr&#&SvkA7F?PdGfAvVp9vSaKNJHyVi3+yR&nSI3mgZ=j{ zVU;Wk7-+@^fnk6Z91NS;2;0ua*)Cw%$0i*Nvuuu?1%@Yq;pgn%*vAeAZvCru)B36P zW9wh6f3kjL{e$(s^`7*msH$u#u>*tnyN4=LAWM)F4K+szNL2jS8Z=OonWCF|dotP1WsWt4EJOSTbOk_Dx+a(iCe=pXmJ~TrQ%s8AOq;L8 z--?^BP4ijv>NMYm2H!SqUR7pa{)m6YocrkI>(^iY$eiO}L5;Y@T_@y)$FMLg0Sm=y zJ2|ZuOUClBWUL!&#kvji^;Bdwk}_W>0{NJ1@G)vA8kba?_F_%B4z9^X+uW;TPa)4N z$XYSq@-0k?01pNfV_QKlY?B$+j77uXZWAy}QPR20!5|g-!TWVeppJW330uZ>MHdDJ zqHdy2ywq4;YcmV82wM#uu|`VD5Zk~uv8~{7w&I+5E}SUD%2}l;YXR!0)I_-{-%xam z(L%V)OFCA$n2&B9g*zc$#i%oQ7iW6zff4iZ|rCGd!IUY07yb?p6I<^$VGERRYtAF5cE9 z+9>C_fx+T1FAfWt^P&W{<%G!vS3|2h1A%z3dt}wBkz`AvIncQ(qz1Z!4dL3_P(w?+ z>4*0?%Bb;qquVDYx|8d|4@M#nhSw##CnmN>M=oZ&dKw#hx_VDFZMLxz!bImj?W_%nO>-}8kp{Kq&aqPKIMk(-r{S@93Myz2l!OD6g}j*BMedeZ6eF38q@)xI!=1q` zOAu17(-0EZNNUNvy_h%TR}%3ImNtyJyOc1eM!=;cK;0hZVslG#1tEg=LRlsNtp$grOV zStLyZds<*}jkEc2*Z6qA@z9={!p7$bCuE~am(-Gf7v#{e#QP*c^k?DJfCv%;c>+Re z6SRa}Avsz`TMP6q0|Ps@G_Z!-WN~R;VgbTH6atq{1kR5W_VIaBt58|G!Ji(VUj*e( zn>T>JA}?w9D=djaA#sE{OOU|&1xXK77b&f_VzQd0Z61ENI~9ocN28+?d;9wKPK-vQ z{c&h82eSF{;JbRsC>$gPK3H%|?cKr4n^%r5LsH%E>PGbo^kUVXl3$T!4`Vk#7g<&^ zytd6<4yYl8+{Iy)=>%hFIaS2~V{a?S%+xA%MKdC6!@UKr&ySlLj$F~m4RJTrkV&9zw@bOF8e|cFu+?3lak-_&4nr%%pcXp0z)9%zHnNgNONPD1Vik!}lMGj4 z{bl7o1WqVU4*mRCXN!~Ctjq0`og-J03 zY@dVQ!|IryB^dmA7{gehjWU%oo(SiL_}TyxY7PyYnz@49V{&~83ABkDO;}!J8f6M2 zLrm0^oKn{nL)YzpMK@sTZAupnv~1Gkx)tWZzAj>4V{9|z3C09Ug-j{^lWjpW=WuSW z2Hqre5!qt;hnAsc!Zta@#0PDOnnsA zAKVU;*}DKeaLl}BUgO8$fEXr|=Lq{~{2Wh}?(*T*@)*u3QAmVwB;i~k$A3p@R&XHn zaQ(idTG8a&rhZ@2U9E>b>>=E}Y@YjF7h&_8VE4TQlier%6`dbvX{=zaJPlVlkyLa* zJjw^1>(7&s=7~U#ER2)EgN4iAo`fhuEXkapFc}WTNkWs>Sex9mY0{Qzu2a1vrHdqt z5?D;y55vP0gSZWLhj@ybCi*J0Hn3GJ1>Rvr2rIaT=ndz}g1rHfUIUp%Cm0J%T9)xn zo+}uTPx79jHz2Ea3w2a&h}}yqs8VXUbb$b&%X?Ui$1-pQ;fxIyQHRH^!E9;f&tez0 z>iX6TF&;M!94fqTp_|6KttQ*L4iNkSSw)Vd|B)m?uX4LWUKI)g4j(*Bas^!vteBQlwyls-yjTdUz!UAK(N?Ec-`bg3zLU<0l?@Y197`?1v4U_W4~@$Y2d6LPHVgeVV~+9c=3$*a!aOFmW& z`B(uSuvI8AymYP{1*+ldtJBQ__gX_}Qh~~K+cbQSwID*oILt)Kt8!H&i=5n{RGOzZ z;+~odH*s;TbGS3V&R1IWe4F1=d8yW4%$9bKjI?OF`kvU|+1J<_Xece#nTbF1a#QVS zO&!jb{3GwFx)$6*GUwIL+_fMNQu+6lUc{0 zk@shmwW<6@J~+_E`-hdag9EEEPNgA=!TW;2nP4GkelR&diE<_wjJUG_V(UuxrwEkwdz~dL?b{l}1nYNLQ9D-o4v3M32gL%`z>6 zn~?1qXd-#n<0k1U3xAwxbY`TG=;764g&eEMYo#0xPfsc?dAxwQIuf2DU6|b%1_Gtw zfQPx>J9+o`x0#WEn5V-30=_(}6Jf5_@w7)00&@23A*%K$P>dApgLcG@b6vx$G%we| za}0L?+==Baou(uTG>WSV8CPAz_+&e^+mozvm!>!&Y11V~3jvb4o#V2C8;j6OjLe0Q zc?oYLrbk|=KxCrQwWy6iy-8Pig+bLd%Zxo z3AW+}_$h-g5cqBa%LGH*#Qg}Rl&c}S_P~|d2wRm#e8s7f)pD*qB>3`vlmh@RoIAdi zjGVj~C17XB&N)a^5*aB$=m>Emx~sQ$S5zMgq#N5G?xJc8&ob!Fn1q&Y>Hb78nDBRW zP{mW{8LFixYb7DA#k_F4Jb^ zIAD_J?XnWJOr;Z?QGj||;rZ@;$L2Rs_%PUVQvtwQ4g@b2w&DMwtpn}kQ0Ar|LeOeC zsEV#8cq447^u*|r0HHNpA;-Od>uzud8d5{2j>xoWEg&|%0Bq1iQn|#q>Bg}a8DF4_ zfK)^k-GUvdaqkEk)F>t|>mBsT`vaj62E}&oFo%toa=u{Cw-OID7D#}Gqe&EY1+-oP ztrTmpy+0Y(x?;!2C>IN^3rOQ#T^N$~gdBKB!$7?wuCkujEY~;`ys>>xJ+=9>1J9E4 zNLt7KGNKr=L7-;`KD#+p9!%X;^EKn1#CVa*Fp}#I^JF5xRf>)9sH!7!3 z>K`E$%*UW8vA2S0P8=$P$l)4bULFk(AV81{1f368&etl19enB1$jGIa4!Y&-zNfZ8 z#Y=6EOlZ}eG|1F$XA0)43bU<1vYpP>TEHD|!TAP=c#VumInj4%xnj#r**%QF<(Q(? zh`!?%tZ3COipk%pPub+YQ$2?2r82hVJ=j0k2XRa6VsuBw{v~-Tu5vqqo=%p-)>uZ+ z)}wH?GP(%tMMIkwRcYWWhPVV z$UORJCSZ?5(QDL33OS|Qc1s0vjXEWktQyl$Rd>g_rB>DFsj9pE z%S*yl{SNiZ6<56*bn6J9L$6t;+rC4&sRFMaTdrTJ^vm_T^W*&S)Uy!cxF_*zhj-Y2 z@mhX~Kd*R|kP=r8D1V~-M1;fz@uGN3{MIw(dBO9K9F7YFA3vX%!A~a6vCpIHG>hT_onifVfBo*gJ7d>!O6fMz1#DDW=Y_s literal 7384 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 QpI6<8&im)*^7{b)2e-}obN~PV diff --git a/platform/commonUI/general/res/sass/_constants.scss b/platform/commonUI/general/res/sass/_constants.scss index feab47efab..e53d6d1b96 100644 --- a/platform/commonUI/general/res/sass/_constants.scss +++ b/platform/commonUI/general/res/sass/_constants.scss @@ -75,7 +75,7 @@ $ltGamma: 20%; $btnFontSizeToH: 0.45; // User Environment -$ueTopBarH: 30px; // Change to 45px when breadcrumb is enabled +$ueTopBarH: 24px; // Change to when breadcrumb is enabled $ueTopBarEditH: 30px; $ueTopBarBtnH: 35px; $ueFooterH: 20px; @@ -96,7 +96,7 @@ $ovrFooterH: 40px; //Items $ueBrowseGridItemLg: 200px; $ueBrowseGridItemTopBarH: 20px; -$ueBrowseGridItemBottomBarH: 40px; +$ueBrowseGridItemBottomBarH: 30px; $colorItemBase: lighten($colorBodyBg, 5%); $colorItemFg: lighten($colorItemBase, 20%); $colorItemSelected: $colorKey; diff --git a/platform/commonUI/general/res/sass/_icons.scss b/platform/commonUI/general/res/sass/_icons.scss index 1b90e6f0d3..71be99d43a 100644 --- a/platform/commonUI/general/res/sass/_icons.scss +++ b/platform/commonUI/general/res/sass/_icons.scss @@ -53,8 +53,8 @@ //@include invokeMenu(); // $colorKey text-shadow: none; display: inline-block; - font-size: 0.8rem; - vertical-align: middle; + //font-size: 0.8rem;// Normalizing for new icomoon symbols font + //vertical-align: middle;// Normalizing for new icomoon symbols font } .btn-menu .invoke-menu, @@ -72,13 +72,16 @@ .menu .type-icon, .tree-item .type-icon, .super-menu.menu .type-icon { - font-size: $menuLineH * 0.8; //.93 - line-height: $menuLineH * 1.13; + //font-size: $menuLineH * 0.8; //.93 // Normalizing for new icomoon symbols font + //line-height: $menuLineH * 1.13; // Normalizing for new icomoon symbols font position: absolute; } - -.super-menu.menu.dropdown .icon { - font-size: $menuLineH * 0.95 +.tree-item .type-icon { + font-size: 16px; // 16px is crisp size +} + +.super-menu.menu.dropdown .icon { + //font-size: $menuLineH * 0.95 // Normalizing for new icomoon symbols font } diff --git a/platform/commonUI/general/res/sass/controls/_buttons.scss b/platform/commonUI/general/res/sass/controls/_buttons.scss index 98ca1378e4..b2809e760a 100644 --- a/platform/commonUI/general/res/sass/controls/_buttons.scss +++ b/platform/commonUI/general/res/sass/controls/_buttons.scss @@ -30,9 +30,9 @@ $pad: $interiorMargin * $baseRatio; text-decoration: none; &.lg, &.create-btn { - $h: $ueTopBarH - $interiorMargin; + $h: $ueTopBarH; // - $interiorMargin; height: $h; - line-height: $h; + //line-height: $h; padding: 0 $pad * 3; } &.create-btn { @@ -40,7 +40,7 @@ $pad: $interiorMargin * $baseRatio; margin-left: $pad * -1; } >.ui-symbol { - font-size: 1.1em; + //font-size: 1.1em; // Normalizing for new icomoon symbols font } } &.sm { @@ -115,7 +115,7 @@ $pad: $interiorMargin * $baseRatio; &.labeled { padding: 0 $pad/2; .icon { - font-size: 1.5em; + //font-size: 1.5em; } .title-label { margin-left: $interiorMargin; diff --git a/platform/commonUI/general/res/sass/controls/_controls.scss b/platform/commonUI/general/res/sass/controls/_controls.scss index 83da982937..571c9f1146 100644 --- a/platform/commonUI/general/res/sass/controls/_controls.scss +++ b/platform/commonUI/general/res/sass/controls/_controls.scss @@ -186,8 +186,8 @@ .icon:not(.invoke-menu) { // position: relative; // top: -0.04em; - font-size: 150%; - vertical-align: middle; + //font-size: 150%; + //vertical-align: middle; } } @@ -361,7 +361,7 @@ label.checkbox.custom { color: lighten($colorBodyFg, 40%); } .type-icon { - font-size: 1.5em; + font-size: 120%; margin-right: $interiorMargin; vertical-align: middle; } diff --git a/platform/commonUI/general/res/sass/helpers/_splitter.scss b/platform/commonUI/general/res/sass/helpers/_splitter.scss index 4ca7470fdc..f1adebce9a 100644 --- a/platform/commonUI/general/res/sass/helpers/_splitter.scss +++ b/platform/commonUI/general/res/sass/helpers/_splitter.scss @@ -84,7 +84,7 @@ } .browse-area .splitter { - top: $ueTopBarH + $interiorMargin; + top: $ueTopBarH + $interiorMarginLg; } .edit-area .splitter { diff --git a/platform/commonUI/general/res/sass/items/_item.scss b/platform/commonUI/general/res/sass/items/_item.scss index 71f465a8dc..5a5cdaf9a3 100644 --- a/platform/commonUI/general/res/sass/items/_item.scss +++ b/platform/commonUI/general/res/sass/items/_item.scss @@ -27,23 +27,28 @@ } .item { &.grid-item { + //div { @include test() } $d: $ueBrowseGridItemLg; + $transTime: 200ms; @include btnSubtle($colorItemBase); box-sizing: border-box; cursor: pointer; float: left; height: $d; -// padding-bottom: 32%; width: $d; margin-bottom: $interiorMarginSm; margin-right: $interiorMarginSm; position: relative; + .item-main .item-type { + @include trans-prop-nice("color", $transTime); + } &:hover .item-main { .item-type { color: $colorKey !important; } .item-open { - display: block; + //display: block; + opacity: 1; } } .contents { @@ -70,24 +75,26 @@ } .item-main { $h: $ueBrowseGridItemLg; - $lh: $h * 0.9; -// @include test(); - div { -// background: rgba(deeppink, 0.2); - } + $lh: $h * 0.8; + //top: $ueBrowseGridItemTopBarH; bottom: $ueBrowseGridItemBottomBarH; + line-height: $lh; z-index: 1; .item-type { color: $colorItemFg; text-align: center; - font-size: 7em; - line-height: $lh; + font-size: 6em; + //line-height: $lh; } .item-open { -// color: lighten($colorItemBase, 15%); - display: none; - font-size: 5em; - line-height: $lh; - left: auto; width: 30px; + //@include test(); + @include trans-prop-nice("opacity", $transTime); + opacity: 0; + //display: none; + font-size: 3em; + //line-height: $lh; + left: auto; width: 50px; + pointer-events: none; + text-align: right; } } .title { diff --git a/platform/commonUI/general/res/sass/tree/_tree.scss b/platform/commonUI/general/res/sass/tree/_tree.scss index 344e5553ab..356bb8a527 100644 --- a/platform/commonUI/general/res/sass/tree/_tree.scss +++ b/platform/commonUI/general/res/sass/tree/_tree.scss @@ -29,7 +29,7 @@ ul.tree { @include border-radius($basicCr); @include single-transition(background-color, 0.25s); display: block; - font-size: 0.80rem; + font-size: 0.80em; height: $menuLineH; line-height: $menuLineH; margin-bottom: $interiorMarginSm; @@ -38,7 +38,7 @@ ul.tree { .view-control { display: inline-block; margin-left: $interiorMargin; - // vertical-align: middle; + font-size: 0.75em; width: $treeVCW; $runningItemW: $interiorMargin + $treeVCW; &:hover { diff --git a/platform/commonUI/general/res/sass/user-environ/_bottom-bar.scss b/platform/commonUI/general/res/sass/user-environ/_bottom-bar.scss index d6ddecff83..379626b5d2 100644 --- a/platform/commonUI/general/res/sass/user-environ/_bottom-bar.scss +++ b/platform/commonUI/general/res/sass/user-environ/_bottom-bar.scss @@ -21,7 +21,7 @@ *****************************************************************************/ .ue-bottom-bar { color: lighten($colorBodyBg, 30%); - font-size: 0.7em; + font-size: 0.65rem; line-height: $ueFooterH - 4px; .status-holder { @include border-radius($basicCr * 1.75); @@ -52,9 +52,9 @@ @include box-shadow(inset rgba(black, 0.5) 0 0 3px); @include text-shadow(rgba(black, 0.3) 0 0 2px); display: inline-block; - font-size: 1.25em; - vertical-align: middle; - margin-right: $interiorMargin; + //font-size: 1.25em; // Normalized for new wtdsymbols font v2 + //vertical-align: middle; // Normalized for new wtdsymbols font v2 + margin-right: $interiorMarginSm; &.ok { color: #009900; } diff --git a/platform/commonUI/general/res/sass/user-environ/_layout.scss b/platform/commonUI/general/res/sass/user-environ/_layout.scss index 8201597ca9..dd0c34654e 100644 --- a/platform/commonUI/general/res/sass/user-environ/_layout.scss +++ b/platform/commonUI/general/res/sass/user-environ/_layout.scss @@ -119,10 +119,8 @@ } .bottom-bar { + @include absPosDefault($bodyMargin); top: auto; - right: $bodyMargin; - bottom: $bodyMargin; - left: $bodyMargin; height: $ueFooterH; .status-holder { right: $ueAppLogoW + $bodyMargin; @@ -208,22 +206,18 @@ } .tree-holder { overflow: auto; - top: $ueTopBarH + $interiorMargin; + top: $ueTopBarH + $interiorMarginLg; } } &.items { .object-browse-bar { -// bottom: auto; .left.abs, .right.abs { top: auto; } - .right.abs { - bottom: $interiorMargin; - } } .object-holder { - top: $ueTopBarH + $interiorMargin; + top: $ueTopBarH + $interiorMarginLg; } } &.edit-main { diff --git a/platform/commonUI/general/res/sass/user-environ/_object-browse.scss b/platform/commonUI/general/res/sass/user-environ/_object-browse.scss index 3ebbebecf4..3ab3f8c5f7 100644 --- a/platform/commonUI/general/res/sass/user-environ/_object-browse.scss +++ b/platform/commonUI/general/res/sass/user-environ/_object-browse.scss @@ -21,7 +21,7 @@ *****************************************************************************/ .object-browse-bar { height: $ueTopBarH; - //line-height: $ueTopBarBtnH; + line-height: $ueTopBarH; .items-select { .btn-menu { margin-right: $interiorMargin * 3; From 61d9545414ef60f474f319219d9b0757fd8d71ee Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Tue, 23 Jun 2015 16:11:06 -0700 Subject: [PATCH 18/28] [Windowing] UrlService UrlService added which takes in a mode (browse or edit), and also a domainObject. Returns the url path to that domainObject. WTD-16. --- platform/commonUI/browse/bundle.json | 9 ++- .../browse/src/services/UrlService.js | 59 +++++++++++++++++++ .../browse/src/windowing/NewTabAction.js | 34 ++++------- 3 files changed, 78 insertions(+), 24 deletions(-) create mode 100644 platform/commonUI/browse/src/services/UrlService.js diff --git a/platform/commonUI/browse/bundle.json b/platform/commonUI/browse/bundle.json index f8c230edd1..b4fad0dc56 100644 --- a/platform/commonUI/browse/bundle.json +++ b/platform/commonUI/browse/bundle.json @@ -78,11 +78,16 @@ "key": "navigationService", "implementation": "navigation/NavigationService.js" }, + { + "key": "urlService", + "implementation": "services/UrlService.js", + "depends": [ "$location" ] + }, { "key": "creationService", "implementation": "creation/CreationService.js", "depends": [ "persistenceService", "$q", "$log" ] - } + } ], "actions": [ { @@ -96,7 +101,7 @@ "implementation": "windowing/NewTabAction.js", "description": "Open this object in a new tab", "category": ["view-control", "contextual"], - "depends": [ "$window", "$route", "$location" ], + "depends": [ "urlService", "$window", "$route", "$location" ], "group": "windowing", "glyph": "y" }, diff --git a/platform/commonUI/browse/src/services/UrlService.js b/platform/commonUI/browse/src/services/UrlService.js new file mode 100644 index 0000000000..4fcf836d36 --- /dev/null +++ b/platform/commonUI/browse/src/services/UrlService.js @@ -0,0 +1,59 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,Promise*/ + +/** + * Module defining UrlService. + */ +define( + [], + function () { + "use strict"; + + /** + * The navigation service maintains the application's current + * navigation state, and allows listening for changes thereto. + * @constructor + */ + function UrlService($location) { + function urlFor(mode, domainObject) { + var context = domainObject && + domainObject.getCapability('context'), + objectPath = context ? context.getPath() : [], + ids = objectPath.map(function (domainObject) { + return domainObject.getId();}), + viewPath = "?view=" + $location.search().view, + path = "index.html#/" + mode + "/" + + ids.slice(1).join("/") + viewPath; + return path; + } + + return { + + urlFor: urlFor + + }; + } + + return UrlService; + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/src/windowing/NewTabAction.js b/platform/commonUI/browse/src/windowing/NewTabAction.js index e68696b273..5cad39686c 100644 --- a/platform/commonUI/browse/src/windowing/NewTabAction.js +++ b/platform/commonUI/browse/src/windowing/NewTabAction.js @@ -37,9 +37,11 @@ define( * the user interface.) * @constructor */ - function NewTabAction($window, $route, $location, context) { - - + function NewTabAction(urlService, $window, $route, $location, context) { + // Returns the selected domain object + // when using the context menu or the top right button + // based on the context and the existance of the object + // It is set to object an returned function getSelectedObject() { var object, newParent; @@ -53,25 +55,13 @@ define( } return { - /** - * Open the object in a new tab - */ - perform: function () { - var selectedDomainObject = getSelectedObject(), - mode = "browse", - context = selectedDomainObject && - selectedDomainObject.getCapability('context'), - objectPath = context ? context.getPath() : [], - ids = objectPath.map(function (selectedDomainObject) { - return selectedDomainObject.getId(); - }), - viewPath = "?view=" + $location.search().view, - partialPath = "index.html#/" + mode + "/" + - ids.slice(1).join("/") + viewPath; - - window.open(partialPath, "_blank"); - - + // Performs the open in new tab function + // By calling the url service, the mode needed + // (browse) and the domainObject is passed in and + // the path is returned and opened in a new tab + perform: function () { + window.open(urlService.urlFor("browse", getSelectedObject()), + "_blank"); } }; } From 83cc0b65d5e5e6bcb41f4abaafb5828024c7fbb4 Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Tue, 23 Jun 2015 16:35:34 -0700 Subject: [PATCH 19/28] [Windowing] Comments Added comments to files. WTD-16. --- .../browse/src/services/UrlService.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/platform/commonUI/browse/src/services/UrlService.js b/platform/commonUI/browse/src/services/UrlService.js index 4fcf836d36..8bae239d1c 100644 --- a/platform/commonUI/browse/src/services/UrlService.js +++ b/platform/commonUI/browse/src/services/UrlService.js @@ -30,11 +30,15 @@ define( "use strict"; /** - * The navigation service maintains the application's current - * navigation state, and allows listening for changes thereto. - * @constructor + * The url service handles calls for url paths + * using domain objects. */ function UrlService($location) { + // Returns the url for the mode wanted + // and the domainObject passed in. A path + // is returned. The view is defaulted to + // the current location's (current object's) + // view set. function urlFor(mode, domainObject) { var context = domainObject && domainObject.getCapability('context'), @@ -48,9 +52,14 @@ define( } return { - + /** + * Returns the Url path for a specific domain object + * @param {value} value of the browse or edit mode + * for the path + * @param {DomainObject} value of the domain object + * to get the path of + */ urlFor: urlFor - }; } From 43cfab1031b3473ad7c8198a8b7d1342f7207fab Mon Sep 17 00:00:00 2001 From: Shivam Dave Date: Wed, 24 Jun 2015 11:32:59 -0700 Subject: [PATCH 20/28] [Windowing] Unit Test Unit Tests for UrlService and NewTabAction created and partially written. UrlService returns 100% and NewTabAction returns 88%. WTD 16. --- platform/commonUI/browse/bundle.json | 2 +- .../browse/src/services/UrlService.js | 5 +- .../browse/src/windowing/NewTabAction.js | 8 +-- .../browse/test/services/UrlServiceSpec.js | 70 +++++++++++++++++++ platform/commonUI/browse/test/suite.json | 1 + .../browse/test/windowing/NewTabActionSpec.js | 25 +++++-- 6 files changed, 97 insertions(+), 14 deletions(-) create mode 100644 platform/commonUI/browse/test/services/UrlServiceSpec.js diff --git a/platform/commonUI/browse/bundle.json b/platform/commonUI/browse/bundle.json index b4fad0dc56..5f13a124a8 100644 --- a/platform/commonUI/browse/bundle.json +++ b/platform/commonUI/browse/bundle.json @@ -101,7 +101,7 @@ "implementation": "windowing/NewTabAction.js", "description": "Open this object in a new tab", "category": ["view-control", "contextual"], - "depends": [ "urlService", "$window", "$route", "$location" ], + "depends": [ "urlService", "$window" ], "group": "windowing", "glyph": "y" }, diff --git a/platform/commonUI/browse/src/services/UrlService.js b/platform/commonUI/browse/src/services/UrlService.js index 8bae239d1c..b227ab2c2f 100644 --- a/platform/commonUI/browse/src/services/UrlService.js +++ b/platform/commonUI/browse/src/services/UrlService.js @@ -44,7 +44,8 @@ define( domainObject.getCapability('context'), objectPath = context ? context.getPath() : [], ids = objectPath.map(function (domainObject) { - return domainObject.getId();}), + return domainObject.getId(); + }), viewPath = "?view=" + $location.search().view, path = "index.html#/" + mode + "/" + ids.slice(1).join("/") + viewPath; @@ -59,7 +60,7 @@ define( * @param {DomainObject} value of the domain object * to get the path of */ - urlFor: urlFor + urlFor: urlFor }; } diff --git a/platform/commonUI/browse/src/windowing/NewTabAction.js b/platform/commonUI/browse/src/windowing/NewTabAction.js index 5cad39686c..18fd4a7209 100644 --- a/platform/commonUI/browse/src/windowing/NewTabAction.js +++ b/platform/commonUI/browse/src/windowing/NewTabAction.js @@ -37,16 +37,14 @@ define( * the user interface.) * @constructor */ - function NewTabAction(urlService, $window, $route, $location, context) { + function NewTabAction(urlService, $window, context) { // Returns the selected domain object // when using the context menu or the top right button // based on the context and the existance of the object // It is set to object an returned function getSelectedObject() { - var object, - newParent; + var object; if (context.selectedObject) { - newParent = context.domainObject; object = context.selectedObject; } else { object = context.domainObject; @@ -59,7 +57,7 @@ define( // By calling the url service, the mode needed // (browse) and the domainObject is passed in and // the path is returned and opened in a new tab - perform: function () { + perform: function () { window.open(urlService.urlFor("browse", getSelectedObject()), "_blank"); } diff --git a/platform/commonUI/browse/test/services/UrlServiceSpec.js b/platform/commonUI/browse/test/services/UrlServiceSpec.js new file mode 100644 index 0000000000..b03170c7ca --- /dev/null +++ b/platform/commonUI/browse/test/services/UrlServiceSpec.js @@ -0,0 +1,70 @@ +/***************************************************************************** + * Open MCT Web, Copyright (c) 2014-2015, United States Government + * as represented by the Administrator of the National Aeronautics and Space + * Administration. All rights reserved. + * + * Open MCT Web is licensed under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * http://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * Open MCT Web includes source code licensed under additional open source + * licenses. See the Open Source Licenses file (LICENSES.md) included with + * this source code distribution or the Licensing information page available + * at runtime from the About dialog for additional information. + *****************************************************************************/ +/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/ + +/** + * MCTRepresentationSpec. Created by vwoeltje on 11/6/14. + */ +define( + ["../../src/services/UrlService"], + function (UrlService) { + "use strict"; + + describe("The url service", function () { + var mockUrl, + mockUrlFor, + urlService, + mockLocation, + mockDomainObject, + mockMode, + mockObject; + + beforeEach(function () { + mockLocation = jasmine.createSpyObj( + "$location", + [ "path", "search" ] + ); + + urlService = new UrlService(mockLocation); + }); + + it("Get url for a domainObject and mode", function () { + var mockDomainObject = jasmine.createSpyObj( + "domainObject", + [ "getId", "getCapability", "getModel", "useCapability" ] + ), + testViews = [ + { key: 'abc' }, + { key: 'def', someKey: 'some value' }, + { key: 'xyz' } + ]; + + mockDomainObject.useCapability.andCallFake(function (c) { + return (c === 'view') && testViews; + }); + mockDomainObject.getId.andReturn(true); + mockLocation.search.andReturn({ view: 'def' }); + urlService.urlFor("browse", mockDomainObject); + }); + }); + } +); \ No newline at end of file diff --git a/platform/commonUI/browse/test/suite.json b/platform/commonUI/browse/test/suite.json index 6cc41900e1..810b75d673 100644 --- a/platform/commonUI/browse/test/suite.json +++ b/platform/commonUI/browse/test/suite.json @@ -9,6 +9,7 @@ "creation/LocatorController", "navigation/NavigateAction", "navigation/NavigationService", + "services/UrlService", "windowing/FullscreenAction", "windowing/NewTabAction", "windowing/WindowTitler" diff --git a/platform/commonUI/browse/test/windowing/NewTabActionSpec.js b/platform/commonUI/browse/test/windowing/NewTabActionSpec.js index 3731adbdb3..986dcb832d 100644 --- a/platform/commonUI/browse/test/windowing/NewTabActionSpec.js +++ b/platform/commonUI/browse/test/windowing/NewTabActionSpec.js @@ -28,24 +28,37 @@ define( describe("The new tab action", function () { var action, + action2, mockWindow, - mockCurrentUrl; + mockDomainObject, + mockContext, + mock2Context, + mockUrlService; beforeEach(function () { // Creates a mockWindow from $window, then // the mockWindow's location.href is set // to a mock Url - mockWindow = jasmine.createSpyObj("$window", ["open", "location"]); - mockWindow.location.href = "http://www.mockUrl.com"; - action = new NewTabAction(mockWindow); + mockWindow = jasmine.createSpyObj("$window", ["open", "location"]); + + mockContext = jasmine.createSpyObj("context", ["selectedObject", + "domainObject"]); + + mock2Context = jasmine.createSpyObj("context", ["domainObject"]); + + mockUrlService = jasmine.createSpyObj("urlService", ["urlFor"]); + + + action = new NewTabAction(mockUrlService, mockWindow, mockContext); + action2 = new NewTabAction(mockUrlService, mockWindow, mock2Context); }); - + it("New tab with current url is opened", function () { // The expection is that the mockWindow // will be called with it's location.href action.perform(); - expect(mockWindow.open).toHaveBeenCalledWith("http://www.mockUrl.com"); + action2.perform(); }); }); From fdfa35d1da796818352ecf7a012489d605e3db20 Mon Sep 17 00:00:00 2001 From: Charles Hacskaylo Date: Wed, 24 Jun 2015 11:42:29 -0700 Subject: [PATCH 21/28] [Frontend] New symbols font and CSS adjustments WTD-980 WTD-396 Changed glyph for stacked plots; Normalized button line-heights and size of required symbol; Updated symbol art in symbols font; Restored mistakenly removed "menu" gesture to grid-item; --- platform/commonUI/browse/bundle.json | 2 +- .../res/templates/create/create-button.html | 2 +- .../res/templates/create/create-menu.html | 2 +- .../general/res/css/theme-espresso.css | 144 ++++++++++-------- .../general/res/fonts/symbols/wtdsymbols.eot | Bin 9352 -> 9440 bytes .../general/res/fonts/symbols/wtdsymbols.svg | 12 +- .../general/res/fonts/symbols/wtdsymbols.ttf | Bin 9176 -> 9264 bytes .../general/res/fonts/symbols/wtdsymbols.woff | Bin 9252 -> 9340 bytes .../commonUI/general/res/sass/_constants.scss | 7 +- .../general/res/sass/controls/_buttons.scss | 13 +- .../general/res/sass/controls/_menus.scss | 26 ++-- .../general/res/sass/forms/_validation.scss | 14 +- .../general/res/sass/overlay/_overlay.scss | 1 + .../plot/src/modes/PlotModeOptions.js | 2 +- 14 files changed, 126 insertions(+), 99 deletions(-) diff --git a/platform/commonUI/browse/bundle.json b/platform/commonUI/browse/bundle.json index 89a8c10bce..2c2585da29 100644 --- a/platform/commonUI/browse/bundle.json +++ b/platform/commonUI/browse/bundle.json @@ -65,7 +65,7 @@ "key": "grid-item", "templateUrl": "templates/items/grid-item.html", "uses": [ "type", "action" ], - "gestures": [ "info" ] + "gestures": [ "info","menu" ] }, { "key": "object-header", diff --git a/platform/commonUI/browse/res/templates/create/create-button.html b/platform/commonUI/browse/res/templates/create/create-button.html index bafde4f975..527afd9882 100644 --- a/platform/commonUI/browse/res/templates/create/create-button.html +++ b/platform/commonUI/browse/res/templates/create/create-button.html @@ -21,7 +21,7 @@ -->