Merge branch 'master' into open638_rebase
This commit is contained in:
@@ -26,12 +26,26 @@ define([
|
||||
"./src/LogoController",
|
||||
"./src/AboutController",
|
||||
"./src/LicenseController",
|
||||
"text!./res/templates/app-logo.html",
|
||||
"text!./res/templates/about-logo.html",
|
||||
"text!./res/templates/overlay-about.html",
|
||||
"text!./res/templates/license-apache.html",
|
||||
"text!./res/templates/license-mit.html",
|
||||
"text!./res/templates/licenses.html",
|
||||
"text!./res/templates/licenses-export-md.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
aboutDialogTemplate,
|
||||
LogoController,
|
||||
AboutController,
|
||||
LicenseController,
|
||||
appLogoTemplate,
|
||||
aboutLogoTemplate,
|
||||
overlayAboutTemplate,
|
||||
licenseApacheTemplate,
|
||||
licenseMitTemplate,
|
||||
licensesTemplate,
|
||||
licensesExportMdTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -43,12 +57,12 @@ define([
|
||||
{
|
||||
"key": "app-logo",
|
||||
"priority": "optional",
|
||||
"templateUrl": "templates/app-logo.html"
|
||||
"template": appLogoTemplate
|
||||
},
|
||||
{
|
||||
"key": "about-logo",
|
||||
"priority": "preferred",
|
||||
"templateUrl": "templates/about-logo.html"
|
||||
"template": aboutLogoTemplate
|
||||
},
|
||||
{
|
||||
"key": "about-dialog",
|
||||
@@ -56,15 +70,15 @@ define([
|
||||
},
|
||||
{
|
||||
"key": "overlay-about",
|
||||
"templateUrl": "templates/overlay-about.html"
|
||||
"template": overlayAboutTemplate
|
||||
},
|
||||
{
|
||||
"key": "license-apache",
|
||||
"templateUrl": "templates/license-apache.html"
|
||||
"template": licenseApacheTemplate
|
||||
},
|
||||
{
|
||||
"key": "license-mit",
|
||||
"templateUrl": "templates/license-mit.html"
|
||||
"template": licenseMitTemplate
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
@@ -156,11 +170,11 @@ define([
|
||||
"routes": [
|
||||
{
|
||||
"when": "/licenses",
|
||||
"templateUrl": "templates/licenses.html"
|
||||
"template": licensesTemplate
|
||||
},
|
||||
{
|
||||
"when": "/licenses-md",
|
||||
"templateUrl": "templates/licenses-export-md.html"
|
||||
"template": licensesExportMdTemplate
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -20,11 +20,7 @@
|
||||
at runtime from the About dialog for additional information.
|
||||
-->
|
||||
<div class="abs t-about l-about t-about-openmctweb s-about" ng-controller = "AboutController as about">
|
||||
<div class="l-logo-holder s-logo-holder">
|
||||
<div class="l-logo s-logo s-logo-nasa"></div>
|
||||
<div class="l-logo l-logo-app s-logo s-logo-openmctweb"></div>
|
||||
</div>
|
||||
|
||||
<div class="l-splash s-splash"></div>
|
||||
<div class="s-text l-content">
|
||||
<h1 class="l-title s-title">OpenMCT Web</h1>
|
||||
<div class="l-description s-description">
|
||||
|
||||
@@ -37,6 +37,16 @@ define([
|
||||
"./src/creation/AddActionProvider",
|
||||
"./src/creation/CreationService",
|
||||
"./src/windowing/WindowTitler",
|
||||
"text!./res/templates/browse.html",
|
||||
"text!./res/templates/create/locator.html",
|
||||
"text!./res/templates/browse-object.html",
|
||||
"text!./res/templates/create/create-button.html",
|
||||
"text!./res/templates/create/create-menu.html",
|
||||
"text!./res/templates/items/grid-item.html",
|
||||
"text!./res/templates/browse/object-header.html",
|
||||
"text!./res/templates/menu-arrow.html",
|
||||
"text!./res/templates/back-arrow.html",
|
||||
"text!./res/templates/items/items.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
BrowseController,
|
||||
@@ -54,6 +64,16 @@ define([
|
||||
AddActionProvider,
|
||||
CreationService,
|
||||
WindowTitler,
|
||||
browseTemplate,
|
||||
locatorTemplate,
|
||||
browseObjectTemplate,
|
||||
createButtonTemplate,
|
||||
createMenuTemplate,
|
||||
gridItemTemplate,
|
||||
objectHeaderTemplate,
|
||||
menuArrowTemplate,
|
||||
backArrowTemplate,
|
||||
itemsTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -63,15 +83,22 @@ define([
|
||||
"routes": [
|
||||
{
|
||||
"when": "/browse/:ids*",
|
||||
"templateUrl": "templates/browse.html",
|
||||
"template": browseTemplate,
|
||||
"reloadOnSearch": false
|
||||
},
|
||||
{
|
||||
"when": "",
|
||||
"templateUrl": "templates/browse.html",
|
||||
"template": browseTemplate,
|
||||
"reloadOnSearch": false
|
||||
}
|
||||
],
|
||||
"constants": [
|
||||
{
|
||||
"key": "DEFAULT_PATH",
|
||||
"value": "mine",
|
||||
"priority": "fallback"
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
{
|
||||
"key": "BrowseController",
|
||||
@@ -83,7 +110,8 @@ define([
|
||||
"$q",
|
||||
"objectService",
|
||||
"navigationService",
|
||||
"urlService"
|
||||
"urlService",
|
||||
"DEFAULT_PATH"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -134,13 +162,13 @@ define([
|
||||
"controls": [
|
||||
{
|
||||
"key": "locator",
|
||||
"templateUrl": "templates/create/locator.html"
|
||||
"template": locatorTemplate
|
||||
}
|
||||
],
|
||||
"representations": [
|
||||
{
|
||||
"key": "browse-object",
|
||||
"templateUrl": "templates/browse-object.html",
|
||||
"template": browseObjectTemplate,
|
||||
"gestures": [
|
||||
"drop"
|
||||
],
|
||||
@@ -150,18 +178,18 @@ define([
|
||||
},
|
||||
{
|
||||
"key": "create-button",
|
||||
"templateUrl": "templates/create/create-button.html"
|
||||
"template": createButtonTemplate
|
||||
},
|
||||
{
|
||||
"key": "create-menu",
|
||||
"templateUrl": "templates/create/create-menu.html",
|
||||
"template": createMenuTemplate,
|
||||
"uses": [
|
||||
"action"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "grid-item",
|
||||
"templateUrl": "templates/items/grid-item.html",
|
||||
"template": gridItemTemplate,
|
||||
"uses": [
|
||||
"type",
|
||||
"action",
|
||||
@@ -174,14 +202,14 @@ define([
|
||||
},
|
||||
{
|
||||
"key": "object-header",
|
||||
"templateUrl": "templates/browse/object-header.html",
|
||||
"template": objectHeaderTemplate,
|
||||
"uses": [
|
||||
"type"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "menu-arrow",
|
||||
"templateUrl": "templates/menu-arrow.html",
|
||||
"template": menuArrowTemplate,
|
||||
"uses": [
|
||||
"action"
|
||||
],
|
||||
@@ -194,7 +222,7 @@ define([
|
||||
"uses": [
|
||||
"context"
|
||||
],
|
||||
"templateUrl": "templates/back-arrow.html"
|
||||
"template": backArrowTemplate
|
||||
},
|
||||
{
|
||||
"key": "object-properties",
|
||||
@@ -258,7 +286,7 @@ define([
|
||||
"name": "Items",
|
||||
"glyph": "9",
|
||||
"description": "Grid of available items",
|
||||
"templateUrl": "templates/items/items.html",
|
||||
"template": itemsTemplate,
|
||||
"uses": [
|
||||
"composition"
|
||||
],
|
||||
|
||||
@@ -34,7 +34,6 @@ define(
|
||||
"use strict";
|
||||
|
||||
var ROOT_ID = "ROOT",
|
||||
DEFAULT_PATH = "mine",
|
||||
CONFIRM_MSG = "Unsaved changes will be lost if you leave this page.";
|
||||
|
||||
/**
|
||||
@@ -47,9 +46,18 @@ define(
|
||||
* @memberof platform/commonUI/browse
|
||||
* @constructor
|
||||
*/
|
||||
function BrowseController($scope, $route, $location, $q, objectService, navigationService, urlService) {
|
||||
function BrowseController(
|
||||
$scope,
|
||||
$route,
|
||||
$location,
|
||||
$q,
|
||||
objectService,
|
||||
navigationService,
|
||||
urlService,
|
||||
defaultPath
|
||||
) {
|
||||
var path = [ROOT_ID].concat(
|
||||
($route.current.params.ids || DEFAULT_PATH).split("/")
|
||||
($route.current.params.ids || defaultPath).split("/")
|
||||
);
|
||||
|
||||
function isDirty(){
|
||||
@@ -143,6 +151,12 @@ define(
|
||||
} else {
|
||||
doNavigate(nextObject, index + 1);
|
||||
}
|
||||
} else if (index === 1 && c.length > 0) {
|
||||
// Roots are in a top-level container that we don't
|
||||
// want to be selected, so if we couldn't find an
|
||||
// object at the path we wanted, at least select
|
||||
// one of its children.
|
||||
navigateTo(c[c.length - 1]);
|
||||
} else {
|
||||
// Couldn't find the next element of the path
|
||||
// so navigate to the last path object we did find
|
||||
|
||||
@@ -40,6 +40,7 @@ define(
|
||||
mockUrlService,
|
||||
mockDomainObject,
|
||||
mockNextObject,
|
||||
testDefaultRoot,
|
||||
controller;
|
||||
|
||||
function mockPromise(value) {
|
||||
@@ -50,7 +51,21 @@ define(
|
||||
};
|
||||
}
|
||||
|
||||
function instantiateController() {
|
||||
controller = new BrowseController(
|
||||
mockScope,
|
||||
mockRoute,
|
||||
mockLocation,
|
||||
mockObjectService,
|
||||
mockNavigationService,
|
||||
mockUrlService,
|
||||
testDefaultRoot
|
||||
);
|
||||
}
|
||||
|
||||
beforeEach(function () {
|
||||
testDefaultRoot = "some-root-level-domain-object";
|
||||
|
||||
mockScope = jasmine.createSpyObj(
|
||||
"$scope",
|
||||
[ "$on", "$watch" ]
|
||||
@@ -101,41 +116,28 @@ define(
|
||||
]));
|
||||
mockNextObject.useCapability.andReturn(undefined);
|
||||
mockNextObject.getId.andReturn("next");
|
||||
mockDomainObject.getId.andReturn("mine");
|
||||
mockDomainObject.getId.andReturn(testDefaultRoot);
|
||||
|
||||
controller = new BrowseController(
|
||||
mockScope,
|
||||
mockRoute,
|
||||
mockLocation,
|
||||
mockObjectService,
|
||||
mockNavigationService,
|
||||
mockUrlService
|
||||
);
|
||||
instantiateController();
|
||||
});
|
||||
|
||||
it("uses composition to set the navigated object, if there is none", function () {
|
||||
controller = new BrowseController(
|
||||
mockScope,
|
||||
mockRoute,
|
||||
mockLocation,
|
||||
mockObjectService,
|
||||
mockNavigationService,
|
||||
mockUrlService
|
||||
);
|
||||
instantiateController();
|
||||
expect(mockNavigationService.setNavigation)
|
||||
.toHaveBeenCalledWith(mockDomainObject);
|
||||
});
|
||||
|
||||
it("navigates to a root-level object, even when default path is not found", function () {
|
||||
mockDomainObject.getId
|
||||
.andReturn("something-other-than-the-" + testDefaultRoot);
|
||||
instantiateController();
|
||||
expect(mockNavigationService.setNavigation)
|
||||
.toHaveBeenCalledWith(mockDomainObject);
|
||||
});
|
||||
|
||||
it("does not try to override navigation", function () {
|
||||
mockNavigationService.getNavigation.andReturn(mockDomainObject);
|
||||
controller = new BrowseController(
|
||||
mockScope,
|
||||
mockRoute,
|
||||
mockLocation,
|
||||
mockObjectService,
|
||||
mockNavigationService,
|
||||
mockUrlService
|
||||
);
|
||||
instantiateController();
|
||||
expect(mockScope.navigatedObject).toBe(mockDomainObject);
|
||||
});
|
||||
|
||||
@@ -162,14 +164,8 @@ define(
|
||||
});
|
||||
|
||||
it("uses route parameters to choose initially-navigated object", function () {
|
||||
mockRoute.current.params.ids = "mine/next";
|
||||
controller = new BrowseController(
|
||||
mockScope,
|
||||
mockRoute,
|
||||
mockLocation,
|
||||
mockObjectService,
|
||||
mockNavigationService
|
||||
);
|
||||
mockRoute.current.params.ids = testDefaultRoot + "/next";
|
||||
instantiateController();
|
||||
expect(mockScope.navigatedObject).toBe(mockNextObject);
|
||||
expect(mockNavigationService.setNavigation)
|
||||
.toHaveBeenCalledWith(mockNextObject);
|
||||
@@ -179,14 +175,8 @@ define(
|
||||
// Idea here is that if we get a bad path of IDs,
|
||||
// browse controller should traverse down it until
|
||||
// it hits an invalid ID.
|
||||
mockRoute.current.params.ids = "mine/junk";
|
||||
controller = new BrowseController(
|
||||
mockScope,
|
||||
mockRoute,
|
||||
mockLocation,
|
||||
mockObjectService,
|
||||
mockNavigationService
|
||||
);
|
||||
mockRoute.current.params.ids = testDefaultRoot + "/junk";
|
||||
instantiateController();
|
||||
expect(mockScope.navigatedObject).toBe(mockDomainObject);
|
||||
expect(mockNavigationService.setNavigation)
|
||||
.toHaveBeenCalledWith(mockDomainObject);
|
||||
@@ -196,14 +186,8 @@ define(
|
||||
// Idea here is that if we get a path which passes
|
||||
// through an object without a composition, browse controller
|
||||
// should stop at it since remaining IDs cannot be loaded.
|
||||
mockRoute.current.params.ids = "mine/next/junk";
|
||||
controller = new BrowseController(
|
||||
mockScope,
|
||||
mockRoute,
|
||||
mockLocation,
|
||||
mockObjectService,
|
||||
mockNavigationService
|
||||
);
|
||||
mockRoute.current.params.ids = testDefaultRoot + "/next/junk";
|
||||
instantiateController();
|
||||
expect(mockScope.navigatedObject).toBe(mockNextObject);
|
||||
expect(mockNavigationService.setNavigation)
|
||||
.toHaveBeenCalledWith(mockNextObject);
|
||||
|
||||
@@ -24,10 +24,24 @@
|
||||
define([
|
||||
"./src/DialogService",
|
||||
"./src/OverlayService",
|
||||
"text!./res/templates/overlay-dialog.html",
|
||||
"text!./res/templates/overlay-options.html",
|
||||
"text!./res/templates/dialog.html",
|
||||
"text!./res/templates/overlay-blocking-message.html",
|
||||
"text!./res/templates/message.html",
|
||||
"text!./res/templates/overlay-message-list.html",
|
||||
"text!./res/templates/overlay.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
DialogService,
|
||||
OverlayService,
|
||||
overlayDialogTemplate,
|
||||
overlayOptionsTemplate,
|
||||
dialogTemplate,
|
||||
overlayBlockingMessageTemplate,
|
||||
messageTemplate,
|
||||
overlayMessageListTemplate,
|
||||
overlayTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -57,33 +71,33 @@ define([
|
||||
"templates": [
|
||||
{
|
||||
"key": "overlay-dialog",
|
||||
"templateUrl": "templates/overlay-dialog.html"
|
||||
"template": overlayDialogTemplate
|
||||
},
|
||||
{
|
||||
"key": "overlay-options",
|
||||
"templateUrl": "templates/overlay-options.html"
|
||||
"template": overlayOptionsTemplate
|
||||
},
|
||||
{
|
||||
"key": "form-dialog",
|
||||
"templateUrl": "templates/dialog.html"
|
||||
"template": dialogTemplate
|
||||
},
|
||||
{
|
||||
"key": "overlay-blocking-message",
|
||||
"templateUrl": "templates/overlay-blocking-message.html"
|
||||
"template": overlayBlockingMessageTemplate
|
||||
},
|
||||
{
|
||||
"key": "message",
|
||||
"templateUrl": "templates/message.html"
|
||||
"template": messageTemplate
|
||||
},
|
||||
{
|
||||
"key": "overlay-message-list",
|
||||
"templateUrl": "templates/overlay-message-list.html"
|
||||
"template": overlayMessageListTemplate
|
||||
}
|
||||
],
|
||||
"containers": [
|
||||
{
|
||||
"key": "overlay",
|
||||
"templateUrl": "templates/overlay.html"
|
||||
"template": overlayTemplate
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -36,6 +36,12 @@ define([
|
||||
"./src/policies/EditActionPolicy",
|
||||
"./src/representers/EditRepresenter",
|
||||
"./src/representers/EditToolbarRepresenter",
|
||||
"text!./res/templates/edit.html",
|
||||
"text!./res/templates/library.html",
|
||||
"text!./res/templates/edit-object.html",
|
||||
"text!./res/templates/edit-action-buttons.html",
|
||||
"text!./res/templates/elements.html",
|
||||
"text!./res/templates/topbar-edit.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
EditController,
|
||||
@@ -52,6 +58,12 @@ define([
|
||||
EditActionPolicy,
|
||||
EditRepresenter,
|
||||
EditToolbarRepresenter,
|
||||
editTemplate,
|
||||
libraryTemplate,
|
||||
editObjectTemplate,
|
||||
editActionButtonsTemplate,
|
||||
elementsTemplate,
|
||||
topbarEditTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -61,7 +73,7 @@ define([
|
||||
"routes": [
|
||||
{
|
||||
"when": "/edit",
|
||||
"templateUrl": "templates/edit.html"
|
||||
"template": editTemplate
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
@@ -185,27 +197,27 @@ define([
|
||||
"templates": [
|
||||
{
|
||||
"key": "edit-library",
|
||||
"templateUrl": "templates/library.html"
|
||||
"template": libraryTemplate
|
||||
}
|
||||
],
|
||||
"representations": [
|
||||
{
|
||||
"key": "edit-object",
|
||||
"templateUrl": "templates/edit-object.html",
|
||||
"template": editObjectTemplate,
|
||||
"uses": [
|
||||
"view"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "edit-action-buttons",
|
||||
"templateUrl": "templates/edit-action-buttons.html",
|
||||
"template": editActionButtonsTemplate,
|
||||
"uses": [
|
||||
"action"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "edit-elements",
|
||||
"templateUrl": "templates/elements.html",
|
||||
"template": elementsTemplate,
|
||||
"uses": [
|
||||
"composition"
|
||||
],
|
||||
@@ -215,7 +227,7 @@ define([
|
||||
},
|
||||
{
|
||||
"key": "topbar-edit",
|
||||
"templateUrl": "templates/topbar-edit.html"
|
||||
"template": topbarEditTemplate
|
||||
}
|
||||
],
|
||||
"representers": [
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
define([
|
||||
"./src/services/UrlService",
|
||||
"./src/services/PopupService",
|
||||
"./src/SplashScreenManager",
|
||||
"./src/StyleSheetLoader",
|
||||
"./src/UnsupportedBrowserWarning",
|
||||
"./src/controllers/TimeRangeController",
|
||||
@@ -48,10 +49,30 @@ define([
|
||||
"./src/directives/MCTScroll",
|
||||
"./src/directives/MCTSplitPane",
|
||||
"./src/directives/MCTSplitter",
|
||||
"text!./res/templates/bottombar.html",
|
||||
"text!./res/templates/controls/action-button.html",
|
||||
"text!./res/templates/controls/input-filter.html",
|
||||
"text!./res/templates/indicator.html",
|
||||
"text!./res/templates/message-banner.html",
|
||||
"text!./res/templates/progress-bar.html",
|
||||
"text!./res/templates/controls/time-controller.html",
|
||||
"text!./res/templates/containers/accordion.html",
|
||||
"text!./res/templates/subtree.html",
|
||||
"text!./res/templates/tree.html",
|
||||
"text!./res/templates/tree-node.html",
|
||||
"text!./res/templates/label.html",
|
||||
"text!./res/templates/controls/action-group.html",
|
||||
"text!./res/templates/menu/context-menu.html",
|
||||
"text!./res/templates/controls/switcher.html",
|
||||
"text!./res/templates/object-inspector.html",
|
||||
"text!./res/templates/controls/selector.html",
|
||||
"text!./res/templates/controls/datetime-picker.html",
|
||||
"text!./res/templates/controls/datetime-field.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
UrlService,
|
||||
PopupService,
|
||||
SplashScreenManager,
|
||||
StyleSheetLoader,
|
||||
UnsupportedBrowserWarning,
|
||||
TimeRangeController,
|
||||
@@ -76,6 +97,25 @@ define([
|
||||
MCTScroll,
|
||||
MCTSplitPane,
|
||||
MCTSplitter,
|
||||
bottombarTemplate,
|
||||
actionButtonTemplate,
|
||||
inputFilterTemplate,
|
||||
indicatorTemplate,
|
||||
messageBannerTemplate,
|
||||
progressBarTemplate,
|
||||
timeControllerTemplate,
|
||||
accordionTemplate,
|
||||
subtreeTemplate,
|
||||
treeTemplate,
|
||||
treeNodeTemplate,
|
||||
labelTemplate,
|
||||
actionGroupTemplate,
|
||||
contextMenuTemplate,
|
||||
switcherTemplate,
|
||||
objectInspectorTemplate,
|
||||
selectorTemplate,
|
||||
datetimePickerTemplate,
|
||||
datetimeFieldTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -117,6 +157,12 @@ define([
|
||||
"notificationService",
|
||||
"agentService"
|
||||
]
|
||||
},
|
||||
{
|
||||
"implementation": SplashScreenManager,
|
||||
"depends": [
|
||||
"$document"
|
||||
]
|
||||
}
|
||||
],
|
||||
"filters": [
|
||||
@@ -138,31 +184,31 @@ define([
|
||||
"templates": [
|
||||
{
|
||||
"key": "bottombar",
|
||||
"templateUrl": "templates/bottombar.html"
|
||||
"template": bottombarTemplate
|
||||
},
|
||||
{
|
||||
"key": "action-button",
|
||||
"templateUrl": "templates/controls/action-button.html"
|
||||
"template": actionButtonTemplate
|
||||
},
|
||||
{
|
||||
"key": "input-filter",
|
||||
"templateUrl": "templates/controls/input-filter.html"
|
||||
"template": inputFilterTemplate
|
||||
},
|
||||
{
|
||||
"key": "indicator",
|
||||
"templateUrl": "templates/indicator.html"
|
||||
"template": indicatorTemplate
|
||||
},
|
||||
{
|
||||
"key": "message-banner",
|
||||
"templateUrl": "templates/message-banner.html"
|
||||
"template": messageBannerTemplate
|
||||
},
|
||||
{
|
||||
"key": "progress-bar",
|
||||
"templateUrl": "templates/progress-bar.html"
|
||||
"template": progressBarTemplate
|
||||
},
|
||||
{
|
||||
"key": "time-controller",
|
||||
"templateUrl": "templates/controls/time-controller.html"
|
||||
"template": timeControllerTemplate
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
@@ -371,7 +417,7 @@ define([
|
||||
"containers": [
|
||||
{
|
||||
"key": "accordion",
|
||||
"templateUrl": "templates/containers/accordion.html",
|
||||
"template": accordionTemplate,
|
||||
"attributes": [
|
||||
"label"
|
||||
]
|
||||
@@ -380,7 +426,7 @@ define([
|
||||
"representations": [
|
||||
{
|
||||
"key": "tree",
|
||||
"templateUrl": "templates/subtree.html",
|
||||
"template": subtreeTemplate,
|
||||
"uses": [
|
||||
"composition"
|
||||
],
|
||||
@@ -389,25 +435,25 @@ define([
|
||||
},
|
||||
{
|
||||
"key": "tree",
|
||||
"templateUrl": "templates/tree.html"
|
||||
"template": treeTemplate
|
||||
},
|
||||
{
|
||||
"key": "subtree",
|
||||
"templateUrl": "templates/subtree.html",
|
||||
"template": subtreeTemplate,
|
||||
"uses": [
|
||||
"composition"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "tree-node",
|
||||
"templateUrl": "templates/tree-node.html",
|
||||
"template": treeNodeTemplate,
|
||||
"uses": [
|
||||
"action"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "label",
|
||||
"templateUrl": "templates/label.html",
|
||||
"template": labelTemplate,
|
||||
"uses": [
|
||||
"type",
|
||||
"location"
|
||||
@@ -420,7 +466,7 @@ define([
|
||||
},
|
||||
{
|
||||
"key": "node",
|
||||
"templateUrl": "templates/label.html",
|
||||
"template": labelTemplate,
|
||||
"uses": [
|
||||
"type"
|
||||
],
|
||||
@@ -431,42 +477,42 @@ define([
|
||||
},
|
||||
{
|
||||
"key": "action-group",
|
||||
"templateUrl": "templates/controls/action-group.html",
|
||||
"template": actionGroupTemplate,
|
||||
"uses": [
|
||||
"action"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "context-menu",
|
||||
"templateUrl": "templates/menu/context-menu.html",
|
||||
"template": contextMenuTemplate,
|
||||
"uses": [
|
||||
"action"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "switcher",
|
||||
"templateUrl": "templates/controls/switcher.html",
|
||||
"template": switcherTemplate,
|
||||
"uses": [
|
||||
"view"
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "object-inspector",
|
||||
"templateUrl": "templates/object-inspector.html"
|
||||
"template": objectInspectorTemplate
|
||||
}
|
||||
],
|
||||
"controls": [
|
||||
{
|
||||
"key": "selector",
|
||||
"templateUrl": "templates/controls/selector.html"
|
||||
"template": selectorTemplate
|
||||
},
|
||||
{
|
||||
"key": "datetime-picker",
|
||||
"templateUrl": "templates/controls/datetime-picker.html"
|
||||
"template": datetimePickerTemplate
|
||||
},
|
||||
{
|
||||
"key": "datetime-field",
|
||||
"templateUrl": "templates/controls/datetime-field.html"
|
||||
"template": datetimeFieldTemplate
|
||||
}
|
||||
],
|
||||
"licenses": [
|
||||
|
||||
|
Before Width: | Height: | Size: 218 KiB After Width: | Height: | Size: 218 KiB |
32
platform/commonUI/general/res/images/logo-app-shdw.svg
Normal file
32
platform/commonUI/general/res/images/logo-app-shdw.svg
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="20 0 640 150" enable-background="new 20 0 640 150" xml:space="preserve">
|
||||
<filter height="130%" width="150%" id="AI_Shadow_Custom" x="-15%" filterUnits="objectBoundingBox" y="-15%">
|
||||
<feGaussianBlur in="SourceAlpha" result="blur" stdDeviation="6"></feGaussianBlur>
|
||||
<feOffset in="blur" dy="3" result="offsetBlurredAlpha" dx="0"></feOffset>
|
||||
<feMerge>
|
||||
<feMergeNode in="offsetBlurredAlpha"></feMergeNode>
|
||||
<feMergeNode in="SourceGraphic"></feMergeNode>
|
||||
</feMerge>
|
||||
</filter>
|
||||
<g filter="url(#AI_Shadow_Custom)">
|
||||
<path fill="#FFFFFF" d="M90.7,13.2c14.8,0,22.8,8,22.8,22.8v46.3c0,14.8-8,22.8-22.8,22.8H62.8c-14.8,0-22.8-8-22.8-22.8V36
|
||||
c0-14.8,8-22.8,22.8-22.8H90.7z M97.8,36.2c0-5.8-3.1-9.2-9.2-9.2h-24c-5.8,0-9.2,3.2-9.2,9.2v45.9c0,6,3.4,9.2,9.2,9.2h24
|
||||
c6,0,9.2-3.2,9.2-9.2V36.2z"/>
|
||||
<path fill="#FFFFFF" d="M173.2,13.2c14.8,0,22.8,8,22.8,22.8v46.3c0,14.8-8,22.8-22.8,22.8h-9c-11.2,0-19.2-6.6-26.5-13.6v44.2
|
||||
h-15.5V13.2h15.5v13.6c7.3-7,15.3-13.6,26.5-13.6H173.2z M180.3,36.2c0-5.8-3.1-9.2-9.2-9.2h-8.3c-9.4,0-17,3.6-25.2,9.2v45.9
|
||||
c8.2,5.6,15.8,9.2,25.2,9.2h8.3c6.1,0,9.2-3.4,9.2-9.2V36.2z"/>
|
||||
<path fill="#FFFFFF" d="M220.3,82.8c0,6,3.2,9.2,9.2,9.2h23c6,0,9.2-3.4,9.2-9.2V76h15.6v6.3c0,14.8-8,22.8-22.8,22.8h-27
|
||||
c-14.8,0-22.8-8-22.8-22.8V36c0-14.8,8-22.8,22.8-22.8h27c14.8,0,22.8,8,22.8,22.8v26.9h-57V82.8z M229.5,26.3
|
||||
c-6,0-9.2,3.2-9.2,9.2v15.8h41.3V35.5c0-6-3.1-9.2-9.2-9.2H229.5z"/>
|
||||
<path fill="#FFFFFF" d="M285.7,13.2h15.5v13.6c7.3-7,15.3-13.6,26.5-13.6h7.1c14.8,0,22.8,8,22.8,22.8v69.1h-15.5V36.6
|
||||
c0-6-3.2-9.2-9.2-9.2h-6.6c-9.4,0-17,3.4-25.2,9.2v68.5h-15.5V13.2z"/>
|
||||
<path fill="#4F79F7" d="M495.4,105.1c-12.5,0-18.4-6-18.4-18.4V28.7c0-12.5,6.2-18.4,18.7-18.4h42.2c12.5,0,18.1,6,18.1,18.4v17.7
|
||||
h-25.4V33.9c0-1.9-0.5-2.4-2.4-2.4h-23.3c-1.9,0-2.4,0.5-2.4,2.4v47.6c0,1.9,0.5,2.4,2.4,2.4h23.3c1.9,0,2.4-0.5,2.4-2.4V69H556
|
||||
v17.7c0,12.5-6,18.4-18.4,18.4H495.4z"/>
|
||||
<path fill="#4F79F7" d="M613.7,32v73.1h-25.4V32H562V10.3h78V32H613.7z"/>
|
||||
<path fill="#4F79F7" d="M425.3,93.6l17.4-42.4v48.6c0,3,2.4,5.4,5.4,5.4h19V15.7c0-3-2.4-5.4-5.4-5.4h-23.3l-21.2,49.4l-21.2-49.4
|
||||
h-23.3c-3,0-5.4,2.4-5.4,5.4v89.5h19c3,0,5.4-2.4,5.4-5.4V51.2l17.4,42.4H425.3z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.4 KiB |
24
platform/commonUI/general/res/images/logo-app.svg
Normal file
24
platform/commonUI/general/res/images/logo-app.svg
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 18.1.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="20 0 640 150" enable-background="new 20 0 640 150" xml:space="preserve">
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M90.7,13.2c14.8,0,22.8,8,22.8,22.8v46.3c0,14.8-8,22.8-22.8,22.8H62.8c-14.8,0-22.8-8-22.8-22.8V36
|
||||
c0-14.8,8-22.8,22.8-22.8H90.7z M97.8,36.2c0-5.8-3.1-9.2-9.2-9.2h-24c-5.8,0-9.2,3.2-9.2,9.2v45.9c0,6,3.4,9.2,9.2,9.2h24
|
||||
c6,0,9.2-3.2,9.2-9.2V36.2z"/>
|
||||
<path fill="#FFFFFF" d="M173.2,13.2c14.8,0,22.8,8,22.8,22.8v46.3c0,14.8-8,22.8-22.8,22.8h-9c-11.2,0-19.2-6.6-26.5-13.6v44.2
|
||||
h-15.5V13.2h15.5v13.6c7.3-7,15.3-13.6,26.5-13.6H173.2z M180.3,36.2c0-5.8-3.1-9.2-9.2-9.2h-8.3c-9.4,0-17,3.6-25.2,9.2v45.9
|
||||
c8.2,5.6,15.8,9.2,25.2,9.2h8.3c6.1,0,9.2-3.4,9.2-9.2V36.2z"/>
|
||||
<path fill="#FFFFFF" d="M220.3,82.8c0,6,3.2,9.2,9.2,9.2h23c6,0,9.2-3.4,9.2-9.2V76h15.6v6.3c0,14.8-8,22.8-22.8,22.8h-27
|
||||
c-14.8,0-22.8-8-22.8-22.8V36c0-14.8,8-22.8,22.8-22.8h27c14.8,0,22.8,8,22.8,22.8v26.9h-57V82.8z M229.5,26.3
|
||||
c-6,0-9.2,3.2-9.2,9.2v15.8h41.3V35.5c0-6-3.1-9.2-9.2-9.2H229.5z"/>
|
||||
<path fill="#FFFFFF" d="M285.7,13.2h15.5v13.6c7.3-7,15.3-13.6,26.5-13.6h7.1c14.8,0,22.8,8,22.8,22.8v69.1h-15.5V36.6
|
||||
c0-6-3.2-9.2-9.2-9.2h-6.6c-9.4,0-17,3.4-25.2,9.2v68.5h-15.5V13.2z"/>
|
||||
<path fill="#4F79F7" d="M495.4,105.1c-12.5,0-18.4-6-18.4-18.4V28.7c0-12.5,6.2-18.4,18.7-18.4h42.2c12.5,0,18.1,6,18.1,18.4v17.7
|
||||
h-25.4V33.9c0-1.9-0.5-2.4-2.4-2.4h-23.3c-1.9,0-2.4,0.5-2.4,2.4v47.6c0,1.9,0.5,2.4,2.4,2.4h23.3c1.9,0,2.4-0.5,2.4-2.4V69H556
|
||||
v17.7c0,12.5-6,18.4-18.4,18.4H495.4z"/>
|
||||
<path fill="#4F79F7" d="M613.7,32v73.1h-25.4V32H562V10.3h78V32H613.7z"/>
|
||||
<path fill="#4F79F7" d="M425.3,93.6l17.4-42.4v48.6c0,3,2.4,5.4,5.4,5.4h19V15.7c0-3-2.4-5.4-5.4-5.4h-23.3l-21.2,49.4l-21.2-49.4
|
||||
h-23.3c-3,0-5.4,2.4-5.4,5.4v89.5h19c3,0,5.4-2.4,5.4-5.4V51.2l17.4,42.4H425.3z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
@@ -1,99 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 17.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="1040px" height="150px" viewBox="0 0 1040 150" enable-background="new 0 0 1040 150" xml:space="preserve">
|
||||
<filter width="150%" height="130%" x="-15%" y="-15%" filterUnits="objectBoundingBox" id="AI_Shadow_Custom">
|
||||
<feGaussianBlur in="SourceAlpha" stdDeviation="6" result="blur"></feGaussianBlur>
|
||||
<feOffset dy="3" dx="0" in="blur" result="offsetBlurredAlpha"></feOffset>
|
||||
<feMerge>
|
||||
<feMergeNode in="offsetBlurredAlpha"></feMergeNode>
|
||||
<feMergeNode in="SourceGraphic"></feMergeNode>
|
||||
</feMerge>
|
||||
</filter>
|
||||
<g filter="url(#AI_Shadow_Custom)">
|
||||
<path fill="#FFFFFF" d="M121.932,76.064c0,5.952-0.992,11.507-3.174,16.665c-1.984,4.96-4.96,9.324-8.531,13.094
|
||||
c-3.769,3.769-7.936,6.547-13.094,8.531c-4.96,1.984-10.515,2.976-16.466,2.976H56.463c-5.952,0-11.507-0.992-16.466-2.976
|
||||
s-9.523-4.96-13.094-8.531c-3.769-3.769-6.547-8.134-8.729-13.094C15.992,87.57,15,82.015,15,76.064V57.217
|
||||
c0-5.952,0.992-11.507,3.174-16.665s4.96-9.523,8.729-13.094c3.571-3.571,7.936-6.547,12.895-8.531s10.515-3.174,16.466-3.174
|
||||
h24.203c5.952,0,11.507,0.992,16.466,3.174c4.96,1.984,9.324,4.96,13.094,8.531s6.547,7.936,8.531,13.094
|
||||
c1.984,5.158,3.174,10.515,3.174,16.665v18.847H121.932z M103.878,57.217c0-3.571-0.595-6.745-1.786-9.523
|
||||
c-1.19-2.777-2.777-5.357-4.761-7.34c-1.984-1.984-4.563-3.571-7.34-4.761c-2.777-1.19-5.952-1.786-9.523-1.786H56.463
|
||||
c-3.571,0-6.745,0.595-9.523,1.786c-2.777,1.19-5.357,2.777-7.34,4.761c-1.984,1.984-3.571,4.563-4.761,7.34
|
||||
c-1.389,2.777-1.984,5.952-1.984,9.523v18.847c0,3.571,0.595,6.745,1.786,9.523c1.19,2.976,2.777,5.357,4.761,7.34
|
||||
s4.563,3.571,7.34,4.761c2.777,1.19,6.15,1.786,9.523,1.786h24.203c3.571,0,6.745-0.595,9.523-1.786
|
||||
c2.777-1.19,5.357-2.777,7.34-4.761s3.571-4.563,4.761-7.34c1.19-2.777,1.786-6.15,1.786-9.523L103.878,57.217z"/>
|
||||
<path fill="#FFFFFF" d="M209.62,90.943c0,3.174-0.397,5.753-1.19,8.332c-0.794,2.381-1.786,4.563-3.174,6.547
|
||||
c-1.19,1.786-2.777,3.373-4.563,4.761c-1.786,1.389-3.571,2.381-5.357,3.174c-1.786,0.794-3.769,1.389-5.555,1.786
|
||||
c-1.984,0.397-3.769,0.595-5.357,0.595h-32.337V98.283h32.337c2.381,0,4.166-0.595,5.357-1.786c1.19-1.19,1.786-2.976,1.786-5.357
|
||||
V66.739c0-2.579-0.595-4.365-1.786-5.555c-1.19-1.19-2.976-1.786-5.357-1.786h-32.139c-2.381,0-4.365,0.595-5.555,1.786
|
||||
c-1.19,1.19-1.786,2.976-1.786,5.357v72.809H127.09V66.541c0-3.174,0.397-5.753,1.19-8.332c0.794-2.381,1.786-4.563,3.174-6.547
|
||||
c1.389-1.786,2.777-3.373,4.563-4.761s3.571-2.381,5.357-3.174s3.769-1.389,5.555-1.786c1.984-0.397,3.769-0.595,5.357-0.595
|
||||
h32.337c3.174,0,5.753,0.397,8.332,1.19c2.381,0.794,4.563,1.786,6.348,3.174c1.786,1.19,3.373,2.777,4.761,4.563
|
||||
s2.381,3.571,3.174,5.357c0.794,1.786,1.389,3.769,1.785,5.555c0.397,1.984,0.595,3.769,0.595,5.357L209.62,90.943L209.62,90.943z"
|
||||
/>
|
||||
<path fill="#FFFFFF" d="M295.126,66.144c0,2.579-0.397,5.158-1.389,7.936c-0.794,2.777-2.381,5.555-4.166,7.936
|
||||
c-1.984,2.381-4.563,4.563-7.737,6.15c-3.174,1.587-6.944,2.579-11.507,2.579H237.99V73.683h32.337
|
||||
c2.381,0,4.365-0.794,5.555-2.182c1.389-1.587,1.984-3.373,1.984-5.555c0-2.381-0.794-4.166-2.182-5.555
|
||||
c-1.587-1.389-3.373-1.984-5.357-1.984H237.99c-2.381,0-4.365,0.794-5.753,2.182c-1.389,1.587-1.984,3.373-1.984,5.555V91.34
|
||||
c0,2.381,0.794,4.166,2.182,5.555c1.587,1.389,3.373,1.984,5.555,1.984h46.82v17.061h-47.018c-2.579,0-5.158-0.397-7.936-1.389
|
||||
c-2.777-0.794-5.555-2.381-7.936-4.166c-2.381-1.984-4.563-4.563-6.15-7.737c-1.587-3.174-2.381-6.944-2.381-11.507V66.144
|
||||
c0-2.579,0.397-5.158,1.389-7.936c0.794-2.777,2.381-5.555,4.166-7.936c1.984-2.381,4.563-4.563,7.737-6.15
|
||||
s6.944-2.579,11.507-2.579h32.337c2.579,0,5.158,0.397,7.936,1.389c2.777,0.794,5.555,2.381,7.936,4.166
|
||||
c2.381,1.984,4.563,4.563,6.15,7.737C294.332,57.812,295.126,61.78,295.126,66.144z"/>
|
||||
<path fill="#FFFFFF" d="M379.838,116.138h-17.855V74.675c0-2.381-0.397-4.365-1.19-6.348c-0.794-1.785-1.984-3.373-3.373-4.761
|
||||
c-1.389-1.389-2.976-2.381-4.96-2.976c-1.785-0.794-3.968-0.992-5.952-0.992h-31.346v56.541h-17.855V50.471
|
||||
c0-1.19,0.198-2.381,0.595-3.571c0.397-0.992,1.19-1.984,1.984-2.777c0.794-0.794,1.785-1.389,2.976-1.984
|
||||
c1.19-0.397,2.182-0.595,3.571-0.595h40.471c2.182,0,4.563,0.198,7.142,0.794c2.579,0.595,4.96,1.389,7.539,2.381
|
||||
c2.381,1.19,4.761,2.579,6.944,4.365c2.182,1.786,4.166,3.769,5.952,6.348c1.785,2.381,3.174,5.357,4.166,8.531
|
||||
c0.992,3.174,1.587,6.944,1.587,10.911v41.265H379.838z"/>
|
||||
<path fill="#FFFFFF" d="M502.839,116.138h-18.053V57.217l-31.742,55.946c-0.794,1.389-1.785,2.579-3.373,3.174
|
||||
c-1.389,0.794-2.976,1.19-4.563,1.19s-2.976-0.397-4.365-1.19c-1.389-0.794-2.381-1.786-3.174-3.174l-31.941-55.946v58.922h-17.855
|
||||
V24.879c0-1.984,0.595-3.968,1.785-5.555c1.19-1.587,2.777-2.777,4.761-3.174c0.992-0.198,1.984-0.397,2.976-0.198
|
||||
c0.992,0,1.984,0.198,2.777,0.595c0.992,0.397,1.785,0.794,2.381,1.389c0.794,0.595,1.389,1.389,1.785,2.182l40.868,71.023
|
||||
l40.868-71.023c0.992-1.786,2.579-2.976,4.365-3.769c1.785-0.794,3.769-0.794,5.753-0.397c1.984,0.595,3.571,1.587,4.761,3.174
|
||||
c1.19,1.587,1.785,3.373,1.785,5.555v91.457H502.839z"/>
|
||||
<path fill="#FFFFFF" d="M595.685,116.138h-62.493c-1.587,0-3.373-0.198-5.357-0.595c-1.984-0.397-3.769-0.992-5.753-1.786
|
||||
c-1.786-0.794-3.571-1.984-5.357-3.174c-1.786-1.389-3.174-2.976-4.563-4.761c-1.389-1.786-2.381-3.968-3.174-6.547
|
||||
c-0.794-2.381-1.19-5.158-1.19-8.332V42.337c0-1.587,0.198-3.373,0.595-5.357c0.397-1.984,0.992-3.769,1.785-5.753
|
||||
c0.794-1.786,1.984-3.571,3.174-5.357c1.389-1.786,2.976-3.174,4.761-4.563c1.786-1.389,3.968-2.381,6.348-3.174
|
||||
c2.381-0.794,5.158-1.19,8.332-1.19h62.493v17.855h-62.493c-2.381,0-4.166,0.595-5.357,1.786c-1.19,1.19-1.785,3.174-1.785,5.555
|
||||
v48.407c0,2.381,0.595,4.166,1.984,5.357c1.19,1.19,2.976,1.984,5.357,1.984h62.493v18.252H595.685z"/>
|
||||
<path fill="#FFFFFF" d="M697.658,35.195h-39.479v80.943h-17.855V35.195h-39.479V17.34h97.012v17.855H697.658z"/>
|
||||
<path fill="#4F79F7" d="M98.125,49.083c-0.992-2.381-2.182-4.166-3.769-5.952c-1.587-1.587-3.571-2.777-5.952-3.769
|
||||
c-2.381-0.992-4.96-1.389-7.936-1.389H65.192c-1.389,7.34-1.389,12.697-0.794,15.474c0.198-0.198,0.397-0.198,0.397-0.397
|
||||
c1.587-1.389,3.571-3.174,6.15-4.166c1.785-0.794,3.769-1.19,5.555-1.19c3.174,0,5.952,1.19,7.936,3.373
|
||||
c2.777,3.174,3.968,8.332,3.174,14.879c-1.984,16.07-11.308,17.26-14.086,17.26c-1.786,0-3.769-0.397-5.555-1.19
|
||||
c-2.579-1.19-4.365-2.976-5.555-4.365l-0.198-0.198c-1.389,2.579-2.976,8.531-3.571,17.26h21.823c2.976,0,5.555-0.397,7.936-1.389
|
||||
c2.381-0.992,4.365-2.182,5.952-3.769c1.587-1.587,2.777-3.571,3.769-5.753c0.992-2.381,1.389-4.96,1.389-7.936V57.018
|
||||
C99.514,54.241,99.117,51.463,98.125,49.083z M61.82,72.096c2.777,0,4.365,4.365,7.936,5.952c4.761,2.182,11.308,0.397,12.895-12.3
|
||||
s-4.761-14.482-9.919-12.3c-3.968,1.587-6.547,5.952-9.324,5.952c-3.571,0-5.158-8.134-2.976-21.426h-4.166
|
||||
c-2.976,0-5.555,0.397-7.936,1.389c-2.381,0.992-4.365,2.182-5.952,3.769c-1.587,1.587-2.976,3.571-3.769,5.952
|
||||
c-0.992,2.381-1.389,4.96-1.389,7.936v18.847c0,2.976,0.397,5.753,1.389,7.936c0.992,2.381,2.182,4.166,3.769,5.753
|
||||
c1.587,1.587,3.571,2.777,5.952,3.769c1.587,0.595,3.373,0.992,5.357,1.19C54.479,80.825,58.249,72.096,61.82,72.096z"/>
|
||||
<path fill="#4F79F7" d="M858.155,17.142l-16.665,93.045c-0.397,1.786-1.19,3.373-2.579,4.761c-1.389,1.389-2.777,2.182-4.761,2.579
|
||||
s-3.769,0.198-5.357-0.595c-1.587-0.794-2.976-1.984-3.968-3.373l-32.933-54.16l-32.933,54.16
|
||||
c-0.794,1.389-1.786,2.381-3.174,3.174c-1.389,0.794-2.777,1.19-4.365,1.19c-2.182,0-4.166-0.595-5.753-1.984
|
||||
s-2.579-3.174-2.976-5.357l-16.665-93.045h18.252l11.903,65.468l28.37-45.233c0.794-1.389,1.786-2.381,3.174-3.174
|
||||
s2.777-1.19,4.365-1.19c1.587,0,2.976,0.397,4.365,1.19c1.389,0.794,2.381,1.786,3.373,3.174l28.171,45.233l11.903-65.468h18.252
|
||||
V17.142z"/>
|
||||
<path fill="#4F79F7" d="M1024.802,91.141c0,1.786-0.198,3.571-0.595,5.357c-0.397,1.984-0.992,3.769-1.786,5.555
|
||||
c-0.794,1.786-1.984,3.571-3.174,5.357c-1.389,1.786-2.976,3.174-4.761,4.563c-1.786,1.389-3.968,2.381-6.547,3.174
|
||||
c-2.381,0.794-5.158,1.19-8.332,1.19H967.07c-1.786,0-3.571-0.198-5.357-0.595c-1.984-0.397-3.769-0.992-5.555-1.786
|
||||
c-1.785-0.794-3.571-1.984-5.357-3.174c-1.786-1.389-3.174-2.976-4.563-4.761c-1.389-1.786-2.381-3.968-3.174-6.547
|
||||
c-0.794-2.381-1.19-5.158-1.19-8.332V10h18.053v81.141c0,2.182,0.595,3.968,1.984,5.357s3.174,1.984,5.158,1.984h32.536
|
||||
c2.182,0,3.968-0.595,5.357-1.984c1.19-1.389,1.984-3.174,1.984-5.357V66.938c0-2.182-0.595-3.968-1.984-5.357
|
||||
c-1.389-1.19-2.976-1.984-5.158-1.984h-32.536V41.544h32.536c1.786,0,3.571,0.198,5.357,0.595c1.984,0.397,3.769,0.992,5.555,1.786
|
||||
c1.786,0.794,3.571,1.984,5.357,3.174c1.785,1.389,3.174,2.976,4.563,4.761s2.381,3.968,3.174,6.547
|
||||
c0.794,2.381,1.19,5.158,1.19,8.332v24.402H1024.802z"/>
|
||||
<path fill="#4F79F7" d="M937.709,66.144c0,2.579-0.397,5.158-1.389,7.936c-0.794,2.777-2.381,5.555-4.166,7.936
|
||||
c-1.984,2.381-4.563,4.563-7.737,6.15c-3.174,1.587-6.944,2.579-11.507,2.579h-32.337V73.683h32.337
|
||||
c2.381,0,4.365-0.794,5.555-2.182c1.389-1.587,1.984-3.373,1.984-5.555c0-2.381-0.794-4.166-2.182-5.555
|
||||
c-1.587-1.389-3.373-1.984-5.357-1.984h-32.337c-2.381,0-4.365,0.794-5.753,2.182c-1.389,1.587-1.984,3.373-1.984,5.555V91.34
|
||||
c0,2.381,0.794,4.166,2.182,5.555c1.587,1.389,3.373,1.984,5.555,1.984h47.018v17.061h-47.018c-2.579,0-5.158-0.397-7.936-1.389
|
||||
c-2.777-0.794-5.555-2.381-7.936-4.166c-2.381-1.984-4.563-4.563-6.15-7.737c-1.587-3.174-2.381-6.944-2.381-11.507V66.144
|
||||
c0-2.579,0.397-5.158,1.389-7.936c0.794-2.777,2.381-5.555,4.166-7.936c1.984-2.381,4.563-4.563,7.737-6.15
|
||||
c3.174-1.587,6.944-2.579,11.507-2.579h32.337c2.579,0,5.158,0.397,7.936,1.389c2.777,0.794,5.555,2.381,7.936,4.166
|
||||
c2.381,1.984,4.563,4.563,6.15,7.737C936.717,57.812,937.709,61.78,937.709,66.144z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 9.8 KiB |
@@ -1,70 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
viewBox="0 0 509 65.2" enable-background="new 0 0 509 65.2" xml:space="preserve">
|
||||
<g id="logo_s3_4_">
|
||||
<g>
|
||||
<g>
|
||||
<path fill="#FFFFFF" d="M53.9,33.3c0,3-0.5,5.8-1.6,8.4c-1,2.5-2.5,4.7-4.3,6.6c-1.9,1.9-4,3.3-6.6,4.3c-2.5,1-5.3,1.5-8.3,1.5
|
||||
H20.9c-3,0-5.8-0.5-8.3-1.5c-2.5-1-4.8-2.5-6.6-4.3c-1.9-1.9-3.3-4.1-4.4-6.6C0.5,39.1,0,36.3,0,33.3v-9.5c0-3,0.5-5.8,1.6-8.4
|
||||
c1.1-2.6,2.5-4.8,4.4-6.6C7.8,7,10,5.5,12.5,4.5c2.5-1,5.3-1.6,8.3-1.6h12.2c3,0,5.8,0.5,8.3,1.6c2.5,1,4.7,2.5,6.6,4.3
|
||||
c1.9,1.8,3.3,4,4.3,6.6c1,2.6,1.6,5.3,1.6,8.4V33.3z M44.8,23.8c0-1.8-0.3-3.4-0.9-4.8c-0.6-1.4-1.4-2.7-2.4-3.7
|
||||
c-1-1-2.3-1.8-3.7-2.4c-1.4-0.6-3-0.9-4.8-0.9H20.9c-1.8,0-3.4,0.3-4.8,0.9c-1.4,0.6-2.7,1.4-3.7,2.4c-1,1-1.8,2.3-2.4,3.7
|
||||
C9.3,20.4,9,22,9,23.8v9.5c0,1.8,0.3,3.4,0.9,4.8c0.6,1.5,1.4,2.7,2.4,3.7c1,1,2.3,1.8,3.7,2.4c1.4,0.6,3.1,0.9,4.8,0.9H33
|
||||
c1.8,0,3.4-0.3,4.8-0.9c1.4-0.6,2.7-1.4,3.7-2.4c1-1,1.8-2.3,2.4-3.7c0.6-1.4,0.9-3.1,0.9-4.8V23.8z"/>
|
||||
<path fill="#FFFFFF" d="M98.1,40.8c0,1.6-0.2,2.9-0.6,4.2c-0.4,1.2-0.9,2.3-1.6,3.3c-0.6,0.9-1.4,1.7-2.3,2.4
|
||||
c-0.9,0.7-1.8,1.2-2.7,1.6c-0.9,0.4-1.9,0.7-2.8,0.9c-1,0.2-1.9,0.3-2.7,0.3H69.1v-9h16.3c1.2,0,2.1-0.3,2.7-0.9
|
||||
c0.6-0.6,0.9-1.5,0.9-2.7V28.6c0-1.3-0.3-2.2-0.9-2.8c-0.6-0.6-1.5-0.9-2.7-0.9H69.2c-1.2,0-2.2,0.3-2.8,0.9
|
||||
c-0.6,0.6-0.9,1.5-0.9,2.7v36.7h-9V28.5c0-1.6,0.2-2.9,0.6-4.2c0.4-1.2,0.9-2.3,1.6-3.3c0.7-0.9,1.4-1.7,2.3-2.4
|
||||
c0.9-0.7,1.8-1.2,2.7-1.6c0.9-0.4,1.9-0.7,2.8-0.9c1-0.2,1.9-0.3,2.7-0.3h16.3c1.6,0,2.9,0.2,4.2,0.6c1.2,0.4,2.3,0.9,3.2,1.6
|
||||
c0.9,0.6,1.7,1.4,2.4,2.3c0.7,0.9,1.2,1.8,1.6,2.7c0.4,0.9,0.7,1.9,0.9,2.8c0.2,1,0.3,1.9,0.3,2.7V40.8z"/>
|
||||
<path fill="#FFFFFF" d="M141.2,28.3c0,1.3-0.2,2.6-0.7,4c-0.4,1.4-1.2,2.8-2.1,4c-1,1.2-2.3,2.3-3.9,3.1
|
||||
c-1.6,0.8-3.5,1.3-5.8,1.3h-16.3v-8.6h16.3c1.2,0,2.2-0.4,2.8-1.1c0.7-0.8,1-1.7,1-2.8c0-1.2-0.4-2.1-1.1-2.8
|
||||
c-0.8-0.7-1.7-1-2.7-1h-16.3c-1.2,0-2.2,0.4-2.9,1.1c-0.7,0.8-1,1.7-1,2.8V41c0,1.2,0.4,2.1,1.1,2.8c0.8,0.7,1.7,1,2.8,1h23.6
|
||||
v8.6h-23.7c-1.3,0-2.6-0.2-4-0.7c-1.4-0.4-2.8-1.2-4-2.1c-1.2-1-2.3-2.3-3.1-3.9c-0.8-1.6-1.2-3.5-1.2-5.8V28.3
|
||||
c0-1.3,0.2-2.6,0.7-4c0.4-1.4,1.2-2.8,2.1-4c1-1.2,2.3-2.3,3.9-3.1c1.6-0.8,3.5-1.3,5.8-1.3h16.3c1.3,0,2.6,0.2,4,0.7
|
||||
c1.4,0.4,2.8,1.2,4,2.1c1.2,1,2.3,2.3,3.1,3.9C140.8,24.1,141.2,26.1,141.2,28.3z"/>
|
||||
<path fill="#FFFFFF" d="M183.9,53.5h-9V32.6c0-1.2-0.2-2.2-0.6-3.2c-0.4-0.9-1-1.7-1.7-2.4c-0.7-0.7-1.5-1.2-2.5-1.5
|
||||
c-0.9-0.4-2-0.5-3-0.5h-15.8v28.5h-9V20.4c0-0.6,0.1-1.2,0.3-1.8c0.2-0.5,0.6-1,1-1.4c0.4-0.4,0.9-0.7,1.5-1
|
||||
c0.6-0.2,1.1-0.3,1.8-0.3h20.4c1.1,0,2.3,0.1,3.6,0.4c1.3,0.3,2.5,0.7,3.8,1.2c1.2,0.6,2.4,1.3,3.5,2.2c1.1,0.9,2.1,1.9,3,3.2
|
||||
c0.9,1.2,1.6,2.7,2.1,4.3c0.5,1.6,0.8,3.5,0.8,5.5V53.5z"/>
|
||||
<path fill="#FFFFFF" d="M245.9,53.5h-9.1V23.8l-16,28.2c-0.4,0.7-0.9,1.3-1.7,1.6c-0.7,0.4-1.5,0.6-2.3,0.6
|
||||
c-0.8,0-1.5-0.2-2.2-0.6c-0.7-0.4-1.2-0.9-1.6-1.6l-16.1-28.2v29.7h-9v-46c0-1,0.3-2,0.9-2.8c0.6-0.8,1.4-1.4,2.4-1.6
|
||||
c0.5-0.1,1-0.2,1.5-0.1c0.5,0,1,0.1,1.4,0.3c0.5,0.2,0.9,0.4,1.2,0.7c0.4,0.3,0.7,0.7,0.9,1.1l20.6,35.8l20.6-35.8
|
||||
c0.5-0.9,1.3-1.5,2.2-1.9c0.9-0.4,1.9-0.4,2.9-0.2c1,0.3,1.8,0.8,2.4,1.6c0.6,0.8,0.9,1.7,0.9,2.8V53.5z"/>
|
||||
<path fill="#FFFFFF" d="M292.7,53.5h-31.5c-0.8,0-1.7-0.1-2.7-0.3c-1-0.2-1.9-0.5-2.9-0.9c-0.9-0.4-1.8-1-2.7-1.6
|
||||
c-0.9-0.7-1.6-1.5-2.3-2.4c-0.7-0.9-1.2-2-1.6-3.3c-0.4-1.2-0.6-2.6-0.6-4.2V16.3c0-0.8,0.1-1.7,0.3-2.7c0.2-1,0.5-1.9,0.9-2.9
|
||||
c0.4-0.9,1-1.8,1.6-2.7c0.7-0.9,1.5-1.6,2.4-2.3c0.9-0.7,2-1.2,3.2-1.6c1.2-0.4,2.6-0.6,4.2-0.6h31.5v9h-31.5
|
||||
c-1.2,0-2.1,0.3-2.7,0.9c-0.6,0.6-0.9,1.6-0.9,2.8v24.4c0,1.2,0.3,2.1,1,2.7c0.6,0.6,1.5,1,2.7,1h31.5V53.5z"/>
|
||||
<path fill="#FFFFFF" d="M344.1,12.7h-19.9v40.8h-9V12.7h-19.9v-9h48.9V12.7z"/>
|
||||
<path fill="#4F79F7" d="M41.9,19.7c-0.5-1.2-1.1-2.1-1.9-3c-0.8-0.8-1.8-1.4-3-1.9c-1.2-0.5-2.5-0.7-4-0.7h-7.7
|
||||
c-0.7,3.7-0.7,6.4-0.4,7.8c0.1-0.1,0.2-0.1,0.2-0.2c0.8-0.7,1.8-1.6,3.1-2.1c0.9-0.4,1.9-0.6,2.8-0.6c1.6,0,3,0.6,4,1.7
|
||||
c1.4,1.6,2,4.2,1.6,7.5c-1,8.1-5.7,8.7-7.1,8.7c-0.9,0-1.9-0.2-2.8-0.6c-1.3-0.6-2.2-1.5-2.8-2.2c0,0-0.1-0.1-0.1-0.1
|
||||
c-0.7,1.3-1.5,4.3-1.8,8.7h11c1.5,0,2.8-0.2,4-0.7c1.2-0.5,2.2-1.1,3-1.9c0.8-0.8,1.4-1.8,1.9-2.9c0.5-1.2,0.7-2.5,0.7-4v-9.5
|
||||
C42.6,22.3,42.4,20.9,41.9,19.7z M23.6,31.3c1.4,0,2.2,2.2,4,3c2.4,1.1,5.7,0.2,6.5-6.2c0.8-6.4-2.4-7.3-5-6.2
|
||||
c-2,0.8-3.3,3-4.7,3c-1.8,0-2.6-4.1-1.5-10.8h-2.1c-1.5,0-2.8,0.2-4,0.7c-1.2,0.5-2.2,1.1-3,1.9c-0.8,0.8-1.5,1.8-1.9,3
|
||||
c-0.5,1.2-0.7,2.5-0.7,4v9.5c0,1.5,0.2,2.9,0.7,4c0.5,1.2,1.1,2.1,1.9,2.9c0.8,0.8,1.8,1.4,3,1.9c0.8,0.3,1.7,0.5,2.7,0.6
|
||||
C19.9,35.7,21.8,31.3,23.6,31.3z"/>
|
||||
</g>
|
||||
<g>
|
||||
<path fill="#4F79F7" d="M425,3.6l-8.4,46.9c-0.2,0.9-0.6,1.7-1.3,2.4c-0.7,0.7-1.4,1.1-2.4,1.3c-1,0.2-1.9,0.1-2.7-0.3
|
||||
c-0.8-0.4-1.5-1-2-1.7l-16.6-27.3L375,52.2c-0.4,0.7-0.9,1.2-1.6,1.6s-1.4,0.6-2.2,0.6c-1.1,0-2.1-0.3-2.9-1
|
||||
c-0.8-0.7-1.3-1.6-1.5-2.7l-8.4-46.9h9.2l6,33l14.3-22.8c0.4-0.7,0.9-1.2,1.6-1.6c0.7-0.4,1.4-0.6,2.2-0.6c0.8,0,1.5,0.2,2.2,0.6
|
||||
c0.7,0.4,1.2,0.9,1.7,1.6l14.2,22.8l6-33H425z"/>
|
||||
<path fill="#4F79F7" d="M509,40.9c0,0.9-0.1,1.8-0.3,2.7c-0.2,1-0.5,1.9-0.9,2.8c-0.4,0.9-1,1.8-1.6,2.7
|
||||
c-0.7,0.9-1.5,1.6-2.4,2.3c-0.9,0.7-2,1.2-3.3,1.6c-1.2,0.4-2.6,0.6-4.2,0.6h-16.4c-0.9,0-1.8-0.1-2.7-0.3
|
||||
c-1-0.2-1.9-0.5-2.8-0.9c-0.9-0.4-1.8-1-2.7-1.6c-0.9-0.7-1.6-1.5-2.3-2.4c-0.7-0.9-1.2-2-1.6-3.3c-0.4-1.2-0.6-2.6-0.6-4.2V0
|
||||
h9.1v40.9c0,1.1,0.3,2,1,2.7c0.7,0.7,1.6,1,2.6,1h16.4c1.1,0,2-0.3,2.7-1c0.6-0.7,1-1.6,1-2.7V28.7c0-1.1-0.3-2-1-2.7
|
||||
c-0.7-0.6-1.5-1-2.6-1h-16.4v-9.1h16.4c0.9,0,1.8,0.1,2.7,0.3c1,0.2,1.9,0.5,2.8,0.9c0.9,0.4,1.8,1,2.7,1.6
|
||||
c0.9,0.7,1.6,1.5,2.3,2.4c0.7,0.9,1.2,2,1.6,3.3c0.4,1.2,0.6,2.6,0.6,4.2V40.9z"/>
|
||||
<path fill="#4F79F7" d="M465.1,28.3c0,1.3-0.2,2.6-0.7,4c-0.4,1.4-1.2,2.8-2.1,4c-1,1.2-2.3,2.3-3.9,3.1
|
||||
c-1.6,0.8-3.5,1.3-5.8,1.3h-16.3v-8.6h16.3c1.2,0,2.2-0.4,2.8-1.1c0.7-0.8,1-1.7,1-2.8c0-1.2-0.4-2.1-1.1-2.8
|
||||
c-0.8-0.7-1.7-1-2.7-1h-16.3c-1.2,0-2.2,0.4-2.9,1.1c-0.7,0.8-1,1.7-1,2.8V41c0,1.2,0.4,2.1,1.1,2.8c0.8,0.7,1.7,1,2.8,1H460v8.6
|
||||
h-23.7c-1.3,0-2.6-0.2-4-0.7c-1.4-0.4-2.8-1.2-4-2.1c-1.2-1-2.3-2.3-3.1-3.9c-0.8-1.6-1.2-3.5-1.2-5.8V28.3c0-1.3,0.2-2.6,0.7-4
|
||||
c0.4-1.4,1.2-2.8,2.1-4c1-1.2,2.3-2.3,3.9-3.1c1.6-0.8,3.5-1.3,5.8-1.3h16.3c1.3,0,2.6,0.2,4,0.7c1.4,0.4,2.8,1.2,4,2.1
|
||||
c1.2,1,2.3,2.3,3.1,3.9C464.6,24.1,465.1,26.1,465.1,28.3z"/>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 6.6 KiB |
@@ -20,64 +20,29 @@
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
// General About dialog styling
|
||||
|
||||
// Depends on styles loaded via /platform/commonUI/general/res/sass/startup-base.scss
|
||||
.l-about {
|
||||
// Layout
|
||||
&.abs {
|
||||
// top: 20px;
|
||||
overflow: auto;
|
||||
}
|
||||
$contentH: 200px;
|
||||
.l-logo-holder {
|
||||
.l-splash {
|
||||
position: relative;
|
||||
height: 45%;
|
||||
.l-logo {
|
||||
$w: 5%;
|
||||
position: absolute;
|
||||
&.l-logo-app {
|
||||
// @include test(blue);
|
||||
top: 0; right: 15%; bottom: 0; left: 15%;
|
||||
}
|
||||
&.s-logo-nasa {
|
||||
// @include test(red);
|
||||
$m: 10px;
|
||||
background-image: url($dirImgs + 'logo-nasa.svg');
|
||||
top: $m; right: auto; bottom: auto; left: $m;
|
||||
width: $w * 2; height: auto; padding-bottom: $w; padding-top: $w;
|
||||
}
|
||||
}
|
||||
}
|
||||
.l-content {
|
||||
// @include test();
|
||||
position: relative;
|
||||
margin-top: $interiorMarginLg;
|
||||
}
|
||||
}
|
||||
|
||||
.s-about {
|
||||
// Styling
|
||||
line-height: 120%;
|
||||
|
||||
a {
|
||||
color: $colorAboutLink;
|
||||
}
|
||||
.s-description,
|
||||
.s-info {
|
||||
// font-size: 0.8em;
|
||||
}
|
||||
.s-logo-holder {
|
||||
background: url($dirImgs + "bg-about-openmctweb.jpg") no-repeat center; // For OpenMCT Web.
|
||||
background-size: cover;
|
||||
}
|
||||
.s-logo {
|
||||
// @include txtShdwLarge(); // text-shadow doesn't work for svg
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
background-size: contain;
|
||||
}
|
||||
.s-logo-openmctweb {
|
||||
background-image: url($dirImgs + 'logo-openmctweb-shdw.svg');
|
||||
}
|
||||
.s-btn {
|
||||
line-height: 2em;
|
||||
}
|
||||
@@ -90,10 +55,6 @@
|
||||
}
|
||||
em {
|
||||
color: pushBack($colorBodyFg, 20%);
|
||||
// margin-left: 2em;
|
||||
&:first-child {
|
||||
// margin-left: 0;
|
||||
}
|
||||
}
|
||||
h3 {
|
||||
font-size: 1.25em;
|
||||
@@ -104,4 +65,3 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,7 +40,7 @@ $ueTopBarEditH: 30px;
|
||||
$ueTopBarBtnH: 35px;
|
||||
$ueFooterH: 25px;
|
||||
$ueColMargin: 1.5%;
|
||||
$ueAppLogoW: 105px;
|
||||
$ueAppLogoW: 80px;
|
||||
$ueEditToolBarH: 25px;
|
||||
$ueCollapsedPaneEdgeM: 22px;
|
||||
$uePaneMiniTabH: $ueTopBarH;
|
||||
|
||||
@@ -19,26 +19,6 @@
|
||||
* this source code distribution or the Licensing information page available
|
||||
* at runtime from the About dialog for additional information.
|
||||
*****************************************************************************/
|
||||
.disabled,
|
||||
a.disabled {
|
||||
opacity: $controlDisabledOpacity;
|
||||
pointer-events: none !important;
|
||||
cursor: default !important;
|
||||
}
|
||||
|
||||
.incised {
|
||||
@include boxIncised(0.8);
|
||||
border-bottom: 1px solid rgba(#fff, 0.3);
|
||||
}
|
||||
|
||||
.test-stripes {
|
||||
@include bgDiagonalStripes();
|
||||
}
|
||||
|
||||
.test {
|
||||
@include test();
|
||||
}
|
||||
|
||||
@mixin pulse($animName: pulse, $dur: 500ms, $iteration: infinite, $opacity0: 0.5, $opacity100: 1) {
|
||||
@include keyframes($animName) {
|
||||
0% { opacity: $opacity0; }
|
||||
|
||||
@@ -112,6 +112,13 @@ mct-container {
|
||||
padding: 1em;
|
||||
}
|
||||
|
||||
.disabled,
|
||||
a.disabled {
|
||||
opacity: $controlDisabledOpacity;
|
||||
pointer-events: none !important;
|
||||
cursor: default !important;
|
||||
}
|
||||
|
||||
.align-right {
|
||||
text-align: right;
|
||||
}
|
||||
@@ -158,4 +165,12 @@ mct-container {
|
||||
|
||||
.sep {
|
||||
color: rgba(#fff, 0.2);
|
||||
}
|
||||
}
|
||||
|
||||
.test-stripes {
|
||||
@include bgDiagonalStripes();
|
||||
}
|
||||
|
||||
.test {
|
||||
@include test();
|
||||
}
|
||||
|
||||
64
platform/commonUI/general/res/sass/_logo-and-bg.scss
Normal file
64
platform/commonUI/general/res/sass/_logo-and-bg.scss
Normal file
@@ -0,0 +1,64 @@
|
||||
/*****************************************************************************
|
||||
* 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.
|
||||
*****************************************************************************/
|
||||
.l-splash,
|
||||
.l-splash:before,
|
||||
.l-splash:after {
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.l-splash {
|
||||
background-size: cover;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
&:before,
|
||||
&:after {
|
||||
background-size: contain;
|
||||
content: '';
|
||||
}
|
||||
|
||||
&:before {
|
||||
// NASA logo, dude
|
||||
$w: 5%;
|
||||
$m: 10px;
|
||||
background-image: url('../images/logo-nasa.svg');
|
||||
top: $m;
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
left: $m;
|
||||
height: auto;
|
||||
width: $w * 2;
|
||||
padding-bottom: $w;
|
||||
padding-top: $w;
|
||||
}
|
||||
|
||||
&:after {
|
||||
// App logo
|
||||
top: 0;
|
||||
right: 15%;
|
||||
bottom: 0;
|
||||
left: 15%;
|
||||
}
|
||||
}
|
||||
@@ -36,43 +36,49 @@
|
||||
}
|
||||
}
|
||||
|
||||
mct-include.status-block-holder {
|
||||
// mct-include that wraps status.block
|
||||
// Must use display: inline-block to fix white space problems
|
||||
display: inline-block;
|
||||
// Status coloring
|
||||
.ok, .info {
|
||||
.status-indicator {
|
||||
color: $colorStatusInfo;
|
||||
}
|
||||
}
|
||||
|
||||
.status.block {
|
||||
.alert, .caution, .warning {
|
||||
.status-indicator, .count {
|
||||
color: $colorStatusAlert;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.error, .err {
|
||||
.status-indicator, .count {
|
||||
color: $colorStatusError;
|
||||
}
|
||||
}
|
||||
|
||||
.available {
|
||||
.status-indicator, .count {
|
||||
color: $colorStatusAvailable;
|
||||
}
|
||||
}
|
||||
|
||||
.status-block-holder {
|
||||
// Applied to mct-include element
|
||||
// Contains status.block elements
|
||||
$transDelay: 1.5s;
|
||||
$transSpeed: .25s;
|
||||
color: $colorStatusDefault;
|
||||
display: inline-block;
|
||||
margin-right: $interiorMargin;
|
||||
.status-indicator,
|
||||
.label,
|
||||
.count {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
display: inline-block;
|
||||
&.clickable { cursor: pointer; }
|
||||
&:not(.clickable) { cursor: default; }
|
||||
|
||||
&.no-icon {
|
||||
&.no-icon .status.block {
|
||||
.status-indicator {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
&.float-right {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.status-indicator {
|
||||
margin-right: $interiorMarginSm;
|
||||
}
|
||||
|
||||
&:not(.no-collapse) {
|
||||
&:not(.no-collapse) .status.block {
|
||||
.label {
|
||||
// Max-width silliness is necessary for width transition
|
||||
@include trans-prop-nice(max-width, $transSpeed, $transDelay);
|
||||
@@ -92,21 +98,25 @@ mct-include.status-block-holder {
|
||||
}
|
||||
}
|
||||
|
||||
&.ok .status-indicator,
|
||||
&.info .status-indicator {
|
||||
color: $colorStatusInfo;
|
||||
}
|
||||
|
||||
.status.block {
|
||||
$transDelay: 1.5s;
|
||||
$transSpeed: .25s;
|
||||
color: $colorStatusDefault;
|
||||
display: inline-block;
|
||||
margin-right: $interiorMargin;
|
||||
.status-indicator,
|
||||
.label,
|
||||
.count {
|
||||
display: inline-block;
|
||||
vertical-align: top;
|
||||
}
|
||||
&.alert .status-indicator,
|
||||
&.warning .status-indicator,
|
||||
&.caution .status-indicator {
|
||||
color: $colorStatusAlert;
|
||||
|
||||
.status-indicator {
|
||||
margin-right: $interiorMarginSm;
|
||||
}
|
||||
&.error .status-indicator {
|
||||
color: $colorStatusError;
|
||||
}
|
||||
&.available .status-indicator {
|
||||
color: $colorStatusAvailable;
|
||||
}
|
||||
|
||||
.count {
|
||||
@include trans-prop-nice(opacity, $transSpeed, $transDelay);
|
||||
font-weight: bold;
|
||||
@@ -191,12 +201,6 @@ mct-include.status-block-holder {
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.s-message-banner {
|
||||
//@include transition-property(left, opacity);
|
||||
//@include transition-duration(0.35s);
|
||||
//@include transition-timing-function(ease-in-out);
|
||||
}
|
||||
|
||||
.s-message-banner {
|
||||
border-radius: $controlCr;
|
||||
@include statusBannerColors($colorStatusDefault, $colorStatusFg);
|
||||
|
||||
39
platform/commonUI/general/res/sass/openmct.scss
Normal file
39
platform/commonUI/general/res/sass/openmct.scss
Normal file
@@ -0,0 +1,39 @@
|
||||
/*****************************************************************************
|
||||
* 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.
|
||||
*****************************************************************************/
|
||||
.app-logo {
|
||||
background: url('../images/logo-app.svg') no-repeat center center;
|
||||
}
|
||||
|
||||
.l-splash-holder {
|
||||
background: #333;
|
||||
.s-splash {
|
||||
border-radius: 10px;
|
||||
box-shadow: 0 5px 50px 25px rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
}
|
||||
|
||||
.s-splash {
|
||||
background-image: url('../images/bg-splash.jpg');
|
||||
&:after {
|
||||
background-image: url('../images/logo-app-shdw.svg');
|
||||
}
|
||||
}
|
||||
70
platform/commonUI/general/res/sass/startup-base.scss
Normal file
70
platform/commonUI/general/res/sass/startup-base.scss
Normal file
@@ -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.
|
||||
*****************************************************************************/
|
||||
@import "bourbon";
|
||||
@import "logo-and-bg";
|
||||
|
||||
@mixin splashElem($m: 20%) {
|
||||
top: $m; right: $m * 1.25; bottom: $m; left: $m * 1.25;
|
||||
}
|
||||
|
||||
.l-splash-holder {
|
||||
// Main outer holder.
|
||||
@include transition-property(opacity);
|
||||
@include transition-duration(500ms);
|
||||
@include transition-timing-function(ease-in-out);
|
||||
@include transition-delay(1s);
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
z-index: 10000;
|
||||
opacity: 1;
|
||||
&.fadeout {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
.l-splash {
|
||||
// The splash element.
|
||||
@include splashElem();
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-device-width: 767px) {
|
||||
.l-splash-holder .l-splash {
|
||||
@include splashElem(0);
|
||||
border-radius: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-device-width: 767px) and (orientation: portrait) {
|
||||
.l-splash-holder .l-splash {
|
||||
&:before {
|
||||
// Make the NASA logo a bit bigger when we're in portrait mode.
|
||||
$w: 12%;
|
||||
width: $w * 2;
|
||||
padding-bottom: $w;
|
||||
padding-top: $w;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -94,15 +94,13 @@
|
||||
z-index: 1;
|
||||
}
|
||||
.app-logo {
|
||||
background-position: right center;
|
||||
box-sizing: border-box;
|
||||
@include absPosDefault($interiorMargin);
|
||||
@include absPosDefault($interiorMargin - 1);
|
||||
cursor: pointer;
|
||||
left: auto;
|
||||
left: auto; right: $interiorMargin;
|
||||
width: $ueAppLogoW;
|
||||
z-index: 2;
|
||||
&.logo-openmctweb {
|
||||
background: url($dirImgs + 'logo-openmctweb.svg') no-repeat center center;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,8 @@
|
||||
<mct-include ng-repeat="indicator in bar.getIndicators()"
|
||||
ng-model="indicator.ngModel"
|
||||
key="indicator.template"
|
||||
class="status-block-holder">
|
||||
class="status-block-holder"
|
||||
ng-class='indicator.ngModel.getGlyphClass()'>
|
||||
</mct-include>
|
||||
</div>
|
||||
<mct-include key="'message-banner'"></mct-include>
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
<div class='status block'
|
||||
title="{{ngModel.getDescription()}}"
|
||||
ng-click='ngModel.configure()'
|
||||
ng-class='ngModel.getGlyphClass()'
|
||||
ng-show="ngModel.getText().length > 0">
|
||||
<span class="ui-symbol status-indicator">
|
||||
{{ngModel.getGlyph()}}
|
||||
@@ -32,6 +31,5 @@
|
||||
{{ngModel.getText()}}
|
||||
<a class="s-btn ui-symbol" ng-if="ngModel.configure">G</a>
|
||||
</span><span class="count">
|
||||
<!-- Add int count value here if this type of indicator has one or more messages associated with it -->
|
||||
</span>
|
||||
</div>
|
||||
46
platform/commonUI/general/src/SplashScreenManager.js
Normal file
46
platform/commonUI/general/src/SplashScreenManager.js
Normal file
@@ -0,0 +1,46 @@
|
||||
/*****************************************************************************
|
||||
* 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*/
|
||||
|
||||
define([
|
||||
|
||||
], function (
|
||||
|
||||
) {
|
||||
'use strict';
|
||||
|
||||
function SplashScreenManager($document) {
|
||||
var splash;
|
||||
$document = $document[0];
|
||||
splash = $document.querySelectorAll('.l-splash-holder')[0];
|
||||
if (!splash) {
|
||||
return;
|
||||
}
|
||||
splash.className += ' fadeout';
|
||||
splash.addEventListener('transitionend', function () {
|
||||
splash.parentNode.removeChild(splash);
|
||||
});
|
||||
}
|
||||
|
||||
return SplashScreenManager;
|
||||
});
|
||||
@@ -47,13 +47,7 @@ define(
|
||||
|
||||
// Initialize container map from extensions
|
||||
containers.forEach(function (container) {
|
||||
var key = container.key;
|
||||
containerMap[key] = Object.create(container);
|
||||
containerMap[key].templateUrl = [
|
||||
container.bundle.path,
|
||||
container.bundle.resources,
|
||||
container.templateUrl
|
||||
].join("/");
|
||||
containerMap[container.key] = container;
|
||||
});
|
||||
|
||||
return {
|
||||
@@ -85,13 +79,11 @@ define(
|
||||
scope[alias] = copiedAttributes;
|
||||
},
|
||||
|
||||
// Get the template URL for this container, based
|
||||
// on its attributes.
|
||||
templateUrl: function (element, attrs) {
|
||||
var key = attrs.key;
|
||||
return containerMap[key].templateUrl;
|
||||
template: function (element, attrs) {
|
||||
var key = attrs.key,
|
||||
container = containerMap[key];
|
||||
return container ? container.template : "";
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
91
platform/commonUI/general/test/SplashScreenManagerSpec.js
Normal file
91
platform/commonUI/general/test/SplashScreenManagerSpec.js
Normal file
@@ -0,0 +1,91 @@
|
||||
/*****************************************************************************
|
||||
* 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,describe,beforeEach,jasmine,it,expect*/
|
||||
|
||||
define([
|
||||
'../src/SplashScreenManager'
|
||||
], function (SplashScreenManager) {
|
||||
'use strict';
|
||||
|
||||
describe('SplashScreenManager', function () {
|
||||
var $document,
|
||||
splashElement;
|
||||
|
||||
beforeEach(function () {
|
||||
$document = jasmine.createSpyObj(
|
||||
'$document',
|
||||
['querySelectorAll']
|
||||
);
|
||||
|
||||
splashElement = jasmine.createSpyObj(
|
||||
'splashElement',
|
||||
['addEventListener']
|
||||
);
|
||||
|
||||
splashElement.parentNode = jasmine.createSpyObj(
|
||||
'splashParent',
|
||||
['removeChild']
|
||||
);
|
||||
|
||||
splashElement.className = 'some-class-name';
|
||||
|
||||
$document.querySelectorAll.andReturn([splashElement]);
|
||||
});
|
||||
|
||||
describe('when element exists', function () {
|
||||
beforeEach(function () {
|
||||
$document.querySelectorAll.andReturn([splashElement]);
|
||||
new SplashScreenManager([$document]);
|
||||
});
|
||||
|
||||
it('adds fade out class', function () {
|
||||
expect(splashElement.className).toBe('some-class-name fadeout');
|
||||
});
|
||||
|
||||
it('removes the element when the transition ends', function () {
|
||||
expect(splashElement.addEventListener)
|
||||
.toHaveBeenCalledWith(
|
||||
'transitionend',
|
||||
jasmine.any(Function)
|
||||
);
|
||||
expect(splashElement.parentNode.removeChild)
|
||||
.not
|
||||
.toHaveBeenCalled();
|
||||
|
||||
splashElement.addEventListener.mostRecentCall.args[1]();
|
||||
expect(splashElement.parentNode.removeChild)
|
||||
.toHaveBeenCalledWith(splashElement);
|
||||
});
|
||||
});
|
||||
|
||||
it('does not error when element doesn\'t exist', function () {
|
||||
$document.querySelectorAll.andReturn([]);
|
||||
|
||||
function run() {
|
||||
new SplashScreenManager([$document]);
|
||||
}
|
||||
|
||||
expect(run).not.toThrow();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -30,12 +30,12 @@ define(
|
||||
var testContainers = [
|
||||
{
|
||||
bundle: { path: "a", resources: "b" },
|
||||
templateUrl: "c/template.html",
|
||||
template: "<div>foo</div>",
|
||||
key: "abc"
|
||||
},
|
||||
{
|
||||
bundle: { path: "x", resources: "y" },
|
||||
templateUrl: "z/template.html",
|
||||
template: "<span>bar</span>",
|
||||
key: "xyz",
|
||||
attributes: [ "someAttr", "someOtherAttr" ]
|
||||
}
|
||||
@@ -55,15 +55,15 @@ define(
|
||||
});
|
||||
|
||||
it("chooses a template based on key", function () {
|
||||
expect(mctContainer.templateUrl(
|
||||
expect(mctContainer.template(
|
||||
undefined,
|
||||
{ key: "abc" }
|
||||
)).toEqual("a/b/c/template.html");
|
||||
)).toEqual(testContainers[0].template);
|
||||
|
||||
expect(mctContainer.templateUrl(
|
||||
expect(mctContainer.template(
|
||||
undefined,
|
||||
{ key: "xyz" }
|
||||
)).toEqual("x/y/z/template.html");
|
||||
)).toEqual(testContainers[1].template);
|
||||
});
|
||||
|
||||
it("copies attributes needed by the container", function () {
|
||||
|
||||
@@ -25,11 +25,19 @@ define([
|
||||
"./src/gestures/InfoGesture",
|
||||
"./src/gestures/InfoButtonGesture",
|
||||
"./src/services/InfoService",
|
||||
"text!./res/info-table.html",
|
||||
"text!./res/info-bubble.html",
|
||||
"text!./res/bubble.html",
|
||||
"text!./res/templates/info-button.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
InfoGesture,
|
||||
InfoButtonGesture,
|
||||
InfoService,
|
||||
infoTableTemplate,
|
||||
infoBubbleTemplate,
|
||||
bubbleTemplate,
|
||||
infoButtonTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -39,17 +47,17 @@ define([
|
||||
"templates": [
|
||||
{
|
||||
"key": "info-table",
|
||||
"templateUrl": "info-table.html"
|
||||
"template": infoTableTemplate
|
||||
},
|
||||
{
|
||||
"key": "info-bubble",
|
||||
"templateUrl": "info-bubble.html"
|
||||
"template": infoBubbleTemplate
|
||||
}
|
||||
],
|
||||
"containers": [
|
||||
{
|
||||
"key": "bubble",
|
||||
"templateUrl": "bubble.html",
|
||||
"template": bubbleTemplate,
|
||||
"attributes": [
|
||||
"bubbleTitle",
|
||||
"bubbleLayout"
|
||||
@@ -99,7 +107,7 @@ define([
|
||||
"representations": [
|
||||
{
|
||||
"key": "info-button",
|
||||
"templateUrl": "templates/info-button.html",
|
||||
"template": infoButtonTemplate,
|
||||
"gestures": [
|
||||
"infobutton"
|
||||
]
|
||||
|
||||
@@ -25,11 +25,13 @@ define([
|
||||
"./src/NotificationIndicatorController",
|
||||
"./src/NotificationIndicator",
|
||||
"./src/NotificationService",
|
||||
"text!./res/notification-indicator.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
NotificationIndicatorController,
|
||||
NotificationIndicator,
|
||||
NotificationService,
|
||||
notificationIndicatorTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -53,7 +55,7 @@ define([
|
||||
"templates": [
|
||||
{
|
||||
"key": "notificationIndicatorTemplate",
|
||||
"templateUrl": "notification-indicator.html"
|
||||
"template": notificationIndicatorTemplate
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
<!-- DO NOT ADD SPACES BETWEEN THE SPANS - IT ADDS WHITE SPACE!! -->
|
||||
<span ng-show="notifications.length > 0" class="status block"
|
||||
ng-class="highest.severity"
|
||||
ng-controller="NotificationIndicatorController">
|
||||
<span class="ui-symbol status-indicator"></span>
|
||||
<span class="label">
|
||||
<span class="ui-symbol status-indicator"></span><span class="label">
|
||||
<a ng-click="showNotificationsList()">{{notifications.length}}
|
||||
Notifications</a>
|
||||
</span>
|
||||
<span class="count">{{notifications.length}}</span>
|
||||
</span><span class="count">{{notifications.length}}</span>
|
||||
</span>
|
||||
80
platform/exporters/ExportService.js
Normal file
80
platform/exporters/ExportService.js
Normal file
@@ -0,0 +1,80 @@
|
||||
/*****************************************************************************
|
||||
* 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,Blob*/
|
||||
|
||||
/**
|
||||
* @namespace platform/exporters
|
||||
*/
|
||||
define(['csv'], function (CSV) {
|
||||
|
||||
/**
|
||||
* Callback used to initiate saving files from the export service;
|
||||
* typical implementation is
|
||||
* [FileSaver.js](https://github.com/eligrey/FileSaver.js/).
|
||||
* @callback platform/exporters.ExportService~saveAs
|
||||
* @param {Blob} blob the contents of the file to export
|
||||
* @param {string} filename the name of the file to export
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* The `exportService` provides a means to initiate downloads of
|
||||
* structured data in the CSV format.
|
||||
* @param {platform/exporters.ExportService~saveAs} saveAs function
|
||||
* used to initiate saving files
|
||||
* @constructor
|
||||
* @memberof platform/exporters
|
||||
*/
|
||||
function ExportService(saveAs) {
|
||||
this.saveAs = saveAs;
|
||||
}
|
||||
|
||||
/**
|
||||
* Export a set of data as comma-separated values. Triggers a download
|
||||
* using the function provided when the ExportService was instantiated.
|
||||
*
|
||||
* @param {Object[]} rows an array of objects containing key-value pairs,
|
||||
* where keys are header names, and values are values
|
||||
* @param {ExportOptions} [options] additional parameters for the file
|
||||
* export
|
||||
*/
|
||||
ExportService.prototype.exportCSV = function (rows, options) {
|
||||
var headers = (options && options.headers) ||
|
||||
(Object.keys((rows[0] || {})).sort()),
|
||||
filename = (options && options.filename) || "export.csv",
|
||||
csvText = new CSV(rows, { header: headers }).encode(),
|
||||
blob = new Blob([ csvText ] , { type: "text/csv" });
|
||||
this.saveAs(blob, filename);
|
||||
};
|
||||
|
||||
/**
|
||||
* Additional parameters for file export.
|
||||
* @typedef ExportOptions
|
||||
* @property {string} filename the name of the file to write
|
||||
* @property {string[]} headers column header names, both as they
|
||||
* should appear in the output and as they should be
|
||||
* used to look up values from the data set. Defaults
|
||||
* to the keys in the first object in the data set.
|
||||
*/
|
||||
|
||||
return ExportService;
|
||||
});
|
||||
144
platform/exporters/ExportServiceSpec.js
Normal file
144
platform/exporters/ExportServiceSpec.js
Normal file
@@ -0,0 +1,144 @@
|
||||
/*****************************************************************************
|
||||
* 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,describe,it,expect,beforeEach,waitsFor,jasmine,Blob,FileReader*/
|
||||
|
||||
define(
|
||||
["./ExportService", "csv"],
|
||||
function (ExportService, CSV) {
|
||||
'use strict';
|
||||
|
||||
describe("ExportService", function () {
|
||||
var mockSaveAs,
|
||||
testRows,
|
||||
csvContents,
|
||||
exportService;
|
||||
|
||||
function finishedReadingCSV() {
|
||||
return !!csvContents;
|
||||
}
|
||||
|
||||
beforeEach(function () {
|
||||
csvContents = undefined;
|
||||
testRows = [
|
||||
{ a: 1, b: 2, c: 3 },
|
||||
{ a: 4, b: 5, c: 6 },
|
||||
{ a: 7, b: 8, c: 9 }
|
||||
];
|
||||
mockSaveAs = jasmine.createSpy('saveAs');
|
||||
mockSaveAs.andCallFake(function (blob) {
|
||||
var reader = new FileReader();
|
||||
reader.onloadend = function () {
|
||||
csvContents = new CSV(reader.result).parse();
|
||||
};
|
||||
reader.readAsText(blob);
|
||||
});
|
||||
exportService = new ExportService(mockSaveAs);
|
||||
});
|
||||
|
||||
describe("#exportCSV(rows)", function () {
|
||||
beforeEach(function () {
|
||||
exportService.exportCSV(testRows);
|
||||
waitsFor(finishedReadingCSV);
|
||||
});
|
||||
|
||||
it("triggers saving of a file", function () {
|
||||
expect(mockSaveAs).toHaveBeenCalledWith(
|
||||
jasmine.any(Blob),
|
||||
jasmine.any(String)
|
||||
);
|
||||
});
|
||||
|
||||
it("includes headers from the data set", function () {
|
||||
expect(csvContents[0])
|
||||
.toEqual(Object.keys(testRows[0]).sort());
|
||||
});
|
||||
|
||||
it("includes data from the data set", function () {
|
||||
var headers = csvContents[0],
|
||||
expectedData = testRows.map(function (row) {
|
||||
return headers.map(function (key) {
|
||||
return String(row[key]);
|
||||
});
|
||||
});
|
||||
// Everything after header should be data
|
||||
expect(csvContents.slice(1)).toEqual(expectedData);
|
||||
});
|
||||
});
|
||||
|
||||
describe("#exportCSV(rows, options.headers)", function () {
|
||||
var testHeaders;
|
||||
|
||||
beforeEach(function () {
|
||||
testHeaders = [ 'a', 'b' ];
|
||||
exportService
|
||||
.exportCSV(testRows, { headers: testHeaders });
|
||||
waitsFor(finishedReadingCSV);
|
||||
});
|
||||
|
||||
it("triggers saving of a file", function () {
|
||||
expect(mockSaveAs).toHaveBeenCalledWith(
|
||||
jasmine.any(Blob),
|
||||
jasmine.any(String)
|
||||
);
|
||||
});
|
||||
|
||||
it("includes only the specified headers", function () {
|
||||
expect(csvContents[0])
|
||||
.toEqual(testHeaders);
|
||||
expect(csvContents[0])
|
||||
.not.toEqual(Object.keys(testRows[0]).sort());
|
||||
});
|
||||
|
||||
it("includes a subset data from the data set", function () {
|
||||
var headers = testHeaders,
|
||||
expectedData = testRows.map(function (row) {
|
||||
return headers.map(function (key) {
|
||||
return String(row[key]);
|
||||
});
|
||||
});
|
||||
expect(csvContents.slice(1)).toEqual(expectedData);
|
||||
});
|
||||
});
|
||||
|
||||
describe("#exportCSV(rows, options.filename)", function () {
|
||||
var testFilename;
|
||||
|
||||
beforeEach(function () {
|
||||
testFilename = "some-test-filename.csv";
|
||||
exportService
|
||||
.exportCSV(testRows, { filename: testFilename });
|
||||
waitsFor(finishedReadingCSV);
|
||||
});
|
||||
|
||||
it("saves a file with the specified name", function () {
|
||||
expect(mockSaveAs).toHaveBeenCalledWith(
|
||||
jasmine.any(Blob),
|
||||
testFilename
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
);
|
||||
65
platform/exporters/bundle.js
Normal file
65
platform/exporters/bundle.js
Normal file
@@ -0,0 +1,65 @@
|
||||
/*****************************************************************************
|
||||
* 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*/
|
||||
|
||||
define([
|
||||
"./ExportService",
|
||||
"saveAs",
|
||||
"legacyRegistry"
|
||||
], function (ExportService, saveAs, legacyRegistry) {
|
||||
'use strict';
|
||||
|
||||
legacyRegistry.register("platform/exporters", {
|
||||
extensions: {
|
||||
services: [
|
||||
{
|
||||
key: "exportService",
|
||||
implementation: function () {
|
||||
return new ExportService(saveAs);
|
||||
}
|
||||
}
|
||||
],
|
||||
licenses: [
|
||||
{
|
||||
"name": "CSV.js",
|
||||
"version": "3.6.4",
|
||||
"author": "Kash Nouroozi",
|
||||
"description": "Encoder for CSV (comma separated values) export",
|
||||
"website": "https://github.com/knrz/CSV.js",
|
||||
"copyright": "Copyright (c) 2014 Kash Nouroozi",
|
||||
"license": "license-mit",
|
||||
"link": "https://github.com/knrz/CSV.js/blob/3.6.4/LICENSE"
|
||||
},
|
||||
{
|
||||
"name": "FileSaver.js",
|
||||
"version": "0.0.2",
|
||||
"author": "Eli Grey",
|
||||
"description": "File download initiator (for file exports)",
|
||||
"website": "https://github.com/eligrey/FileSaver.js/",
|
||||
"copyright": "Copyright © 2015 Eli Grey.",
|
||||
"license": "license-mit",
|
||||
"link": "https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md"
|
||||
}
|
||||
]
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -29,6 +29,8 @@ define([
|
||||
"./src/controllers/RefreshingController",
|
||||
"./src/actions/StartTimerAction",
|
||||
"./src/actions/RestartTimerAction",
|
||||
"text!./res/templates/clock.html",
|
||||
"text!./res/templates/timer.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
ClockIndicator,
|
||||
@@ -38,6 +40,8 @@ define([
|
||||
RefreshingController,
|
||||
StartTimerAction,
|
||||
RestartTimerAction,
|
||||
clockTemplate,
|
||||
timerTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -116,13 +120,13 @@ define([
|
||||
"key": "clock",
|
||||
"type": "clock",
|
||||
"editable": false,
|
||||
"templateUrl": "templates/clock.html"
|
||||
"template": clockTemplate
|
||||
},
|
||||
{
|
||||
"key": "timer",
|
||||
"type": "timer",
|
||||
"editable": false,
|
||||
"templateUrl": "templates/timer.html"
|
||||
"template": timerTemplate
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
|
||||
@@ -25,11 +25,13 @@ define([
|
||||
"./src/ConductorRepresenter",
|
||||
"./src/ConductorTelemetryDecorator",
|
||||
"./src/ConductorService",
|
||||
"text!./res/templates/time-conductor.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
ConductorRepresenter,
|
||||
ConductorTelemetryDecorator,
|
||||
ConductorService,
|
||||
timeConductorTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -70,7 +72,7 @@ define([
|
||||
"templates": [
|
||||
{
|
||||
"key": "time-conductor",
|
||||
"templateUrl": "templates/time-conductor.html"
|
||||
"template": timeConductorTemplate
|
||||
}
|
||||
],
|
||||
"constants": [
|
||||
|
||||
@@ -25,11 +25,13 @@ define([
|
||||
"./src/EventListController",
|
||||
"./src/directives/MCTDataTable",
|
||||
"./src/policies/MessagesViewPolicy",
|
||||
"text!./res/templates/messages.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
EventListController,
|
||||
MCTDataTable,
|
||||
MessagesViewPolicy,
|
||||
messagesTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -44,7 +46,7 @@ define([
|
||||
"name": "Messages",
|
||||
"glyph": "5",
|
||||
"description": "Scrolling list of messages.",
|
||||
"templateUrl": "templates/messages.html",
|
||||
"template": messagesTemplate,
|
||||
"needs": [
|
||||
"telemetry"
|
||||
],
|
||||
|
||||
@@ -25,14 +25,14 @@
|
||||
* Module defining MCTDataTable. Created by shale on 06/22/2015.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
['text!../../res/templates/mct-data-table.html'],
|
||||
function (dataTableTemplate) {
|
||||
"use strict";
|
||||
|
||||
function MCTDataTable($window) {
|
||||
return {
|
||||
restrict: "E",
|
||||
templateUrl: "platform/features/events/res/templates/mct-data-table.html",
|
||||
template: dataTableTemplate,
|
||||
scope: {
|
||||
headers: "=",
|
||||
rows: "=",
|
||||
|
||||
@@ -25,11 +25,13 @@ define([
|
||||
"./src/policies/ImageryViewPolicy",
|
||||
"./src/controllers/ImageryController",
|
||||
"./src/directives/MCTBackgroundImage",
|
||||
"text!./res/templates/imagery.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
ImageryViewPolicy,
|
||||
ImageryController,
|
||||
MCTBackgroundImage,
|
||||
imageryTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -42,7 +44,7 @@ define([
|
||||
"name": "Imagery",
|
||||
"key": "imagery",
|
||||
"glyph": "ã",
|
||||
"templateUrl": "templates/imagery.html",
|
||||
"template": imageryTemplate,
|
||||
"priority": "preferred",
|
||||
"needs": [
|
||||
"telemetry"
|
||||
|
||||
@@ -25,11 +25,27 @@ define([
|
||||
"./src/LayoutController",
|
||||
"./src/FixedController",
|
||||
"./src/LayoutCompositionPolicy",
|
||||
"text!./res/templates/layout.html",
|
||||
"text!./res/templates/fixed.html",
|
||||
"text!./res/templates/frame.html",
|
||||
"text!./res/templates/elements/telemetry.html",
|
||||
"text!./res/templates/elements/box.html",
|
||||
"text!./res/templates/elements/line.html",
|
||||
"text!./res/templates/elements/text.html",
|
||||
"text!./res/templates/elements/image.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
LayoutController,
|
||||
FixedController,
|
||||
LayoutCompositionPolicy,
|
||||
layoutTemplate,
|
||||
fixedTemplate,
|
||||
frameTemplate,
|
||||
telemetryTemplate,
|
||||
boxTemplate,
|
||||
lineTemplate,
|
||||
textTemplate,
|
||||
imageTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -44,7 +60,7 @@ define([
|
||||
"name": "Display Layout",
|
||||
"glyph": "L",
|
||||
"type": "layout",
|
||||
"templateUrl": "templates/layout.html",
|
||||
"template": layoutTemplate,
|
||||
"editable": true,
|
||||
"uses": []
|
||||
},
|
||||
@@ -53,7 +69,7 @@ define([
|
||||
"name": "Fixed Position",
|
||||
"glyph": "3",
|
||||
"type": "telemetry.panel",
|
||||
"templateUrl": "templates/fixed.html",
|
||||
"template": fixedTemplate,
|
||||
"uses": [
|
||||
"composition"
|
||||
],
|
||||
@@ -191,7 +207,7 @@ define([
|
||||
"representations": [
|
||||
{
|
||||
"key": "frame",
|
||||
"templateUrl": "templates/frame.html"
|
||||
"template": frameTemplate
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
@@ -218,23 +234,23 @@ define([
|
||||
"templates": [
|
||||
{
|
||||
"key": "fixed.telemetry",
|
||||
"templateUrl": "templates/elements/telemetry.html"
|
||||
"template": telemetryTemplate
|
||||
},
|
||||
{
|
||||
"key": "fixed.box",
|
||||
"templateUrl": "templates/elements/box.html"
|
||||
"template": boxTemplate
|
||||
},
|
||||
{
|
||||
"key": "fixed.line",
|
||||
"templateUrl": "templates/elements/line.html"
|
||||
"template": lineTemplate
|
||||
},
|
||||
{
|
||||
"key": "fixed.text",
|
||||
"templateUrl": "templates/elements/text.html"
|
||||
"template": textTemplate
|
||||
},
|
||||
{
|
||||
"key": "fixed.image",
|
||||
"templateUrl": "templates/elements/image.html"
|
||||
"template": imageTemplate
|
||||
}
|
||||
],
|
||||
"policies": [
|
||||
|
||||
@@ -303,12 +303,16 @@ define(
|
||||
this.generateDragHandles = generateDragHandles;
|
||||
|
||||
// Track current selection state
|
||||
this.selection = $scope.selection;
|
||||
$scope.$watch("selection", function (selection) {
|
||||
this.selection = selection;
|
||||
|
||||
// Expose the view's selection proxy
|
||||
if (this.selection) {
|
||||
this.selection.proxy(new FixedProxy(addElement, $q, dialogService));
|
||||
}
|
||||
// Expose the view's selection proxy
|
||||
if (this.selection) {
|
||||
this.selection.proxy(
|
||||
new FixedProxy(addElement, $q, dialogService)
|
||||
);
|
||||
}
|
||||
}.bind(this));
|
||||
|
||||
// Refresh list of elements whenever model changes
|
||||
$scope.$watch("model.modified", refreshElements);
|
||||
|
||||
@@ -148,6 +148,8 @@ define(
|
||||
mockHandler,
|
||||
mockFormatter
|
||||
);
|
||||
|
||||
findWatch("selection")(mockScope.selection);
|
||||
});
|
||||
|
||||
it("subscribes when a domain object is available", function () {
|
||||
|
||||
@@ -23,9 +23,11 @@
|
||||
|
||||
define([
|
||||
"./src/EmbeddedPageController",
|
||||
"text!./res/iframe.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
EmbeddedPageController,
|
||||
iframeTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -54,7 +56,7 @@ define([
|
||||
],
|
||||
"views": [
|
||||
{
|
||||
"templateUrl": "iframe.html",
|
||||
"template": iframeTemplate,
|
||||
"name": "Page",
|
||||
"type": "example.page",
|
||||
"key": "example.page",
|
||||
|
||||
@@ -26,12 +26,14 @@ define([
|
||||
"./src/PlotController",
|
||||
"./src/policies/PlotViewPolicy",
|
||||
"./src/PlotOptionsController",
|
||||
"text!./res/templates/plot.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
MCTChart,
|
||||
PlotController,
|
||||
PlotViewPolicy,
|
||||
PlotOptionsController,
|
||||
plotTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -44,7 +46,7 @@ define([
|
||||
"name": "Plot",
|
||||
"key": "plot",
|
||||
"glyph": "6",
|
||||
"templateUrl": "templates/plot.html",
|
||||
"template": plotTemplate,
|
||||
"needs": [
|
||||
"telemetry"
|
||||
],
|
||||
|
||||
@@ -25,11 +25,13 @@ define([
|
||||
"./src/RTEventListController",
|
||||
"./src/directives/MCTRTDataTable",
|
||||
"./src/policies/RTMessagesViewPolicy",
|
||||
"text!./res/templates/rtmessages.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
RTEventListController,
|
||||
MCTRTDataTable,
|
||||
RTMessagesViewPolicy,
|
||||
rtmessagesTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -44,7 +46,7 @@ define([
|
||||
"name": "RT Messages",
|
||||
"glyph": "5",
|
||||
"description": "Scrolling list of real time messages.",
|
||||
"templateUrl": "templates/rtmessages.html",
|
||||
"template": rtmessagesTemplate,
|
||||
"needs": [
|
||||
"telemetry"
|
||||
],
|
||||
|
||||
@@ -25,14 +25,14 @@
|
||||
* Module defining MCTRTDataTable. Created by shale on 06/25/2015.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
['text!../../res/templates/mct-rt-data-table.html'],
|
||||
function (dataTableTemplate) {
|
||||
"use strict";
|
||||
|
||||
function MCTRTDataTable($window) {
|
||||
return {
|
||||
restrict: "E",
|
||||
templateUrl: "platform/features/rtevents/res/templates/mct-rt-data-table.html",
|
||||
template: dataTableTemplate,
|
||||
scope: {
|
||||
headers: "=",
|
||||
rows: "=",
|
||||
|
||||
@@ -23,9 +23,11 @@
|
||||
|
||||
define([
|
||||
"./src/RTScrollingListController",
|
||||
"text!./res/templates/rtscrolling.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
RTScrollingListController,
|
||||
rtscrollingTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -40,7 +42,7 @@ define([
|
||||
"name": "Scrolling",
|
||||
"glyph": "5",
|
||||
"description": "Scrolling list of data values.",
|
||||
"templateUrl": "templates/rtscrolling.html",
|
||||
"template": rtscrollingTemplate,
|
||||
"needs": [
|
||||
"telemetry"
|
||||
],
|
||||
|
||||
@@ -23,9 +23,11 @@
|
||||
|
||||
define([
|
||||
"./src/ScrollingListController",
|
||||
"text!./res/templates/scrolling.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
ScrollingListController,
|
||||
scrollingTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -40,7 +42,7 @@ define([
|
||||
"name": "Scrolling",
|
||||
"glyph": "5",
|
||||
"description": "Scrolling list of data values.",
|
||||
"templateUrl": "templates/scrolling.html",
|
||||
"template": scrollingTemplate,
|
||||
"needs": [
|
||||
"telemetry"
|
||||
],
|
||||
|
||||
@@ -23,9 +23,11 @@
|
||||
|
||||
define([
|
||||
|
||||
"text!./res/markup.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
|
||||
markupTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -45,7 +47,7 @@ define([
|
||||
],
|
||||
"views": [
|
||||
{
|
||||
"templateUrl": "markup.html",
|
||||
"template": markupTemplate,
|
||||
"name": "Static Markup",
|
||||
"type": "static.markup",
|
||||
"key": "static.markup"
|
||||
|
||||
@@ -38,6 +38,16 @@ define([
|
||||
"./src/directives/MCTSwimlaneDrop",
|
||||
"./src/directives/MCTSwimlaneDrag",
|
||||
"./src/services/ObjectLoader",
|
||||
"text!./res/templates/values.html",
|
||||
"text!./res/templates/timeline.html",
|
||||
"text!./res/templates/activity-gantt.html",
|
||||
"text!./res/templates/tabular-swimlane-cols-tree.html",
|
||||
"text!./res/templates/tabular-swimlane-cols-data.html",
|
||||
"text!./res/templates/resource-graphs.html",
|
||||
"text!./res/templates/resource-graph-labels.html",
|
||||
"text!./res/templates/legend-item.html",
|
||||
"text!./res/templates/ticks.html",
|
||||
"text!./res/templates/controls/datetime.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
TimelineController,
|
||||
@@ -56,6 +66,16 @@ define([
|
||||
MCTSwimlaneDrop,
|
||||
MCTSwimlaneDrag,
|
||||
ObjectLoader,
|
||||
valuesTemplate,
|
||||
timelineTemplate,
|
||||
activityGanttTemplate,
|
||||
tabularSwimlaneColsTreeTemplate,
|
||||
tabularSwimlaneColsDataTemplate,
|
||||
resourceGraphsTemplate,
|
||||
resourceGraphLabelsTemplate,
|
||||
legendItemTemplate,
|
||||
ticksTemplate,
|
||||
datetimeTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -226,7 +246,7 @@ define([
|
||||
"key": "values",
|
||||
"name": "Values",
|
||||
"glyph": "A",
|
||||
"templateUrl": "templates/values.html",
|
||||
"template": valuesTemplate,
|
||||
"type": "mode",
|
||||
"uses": [
|
||||
"cost"
|
||||
@@ -239,7 +259,7 @@ define([
|
||||
"glyph": "S",
|
||||
"type": "timeline",
|
||||
"description": "A timeline view of Timelines and Activities.",
|
||||
"templateUrl": "templates/timeline.html",
|
||||
"template": timelineTemplate,
|
||||
"editable": true,
|
||||
"toolbar": {
|
||||
"sections": [
|
||||
@@ -335,7 +355,7 @@ define([
|
||||
"representations": [
|
||||
{
|
||||
"key": "gantt",
|
||||
"templateUrl": "templates/activity-gantt.html",
|
||||
"template": activityGanttTemplate,
|
||||
"uses": [
|
||||
"timespan",
|
||||
"type"
|
||||
@@ -346,42 +366,42 @@ define([
|
||||
{
|
||||
"key": "timeline-tabular-swimlane-cols-tree",
|
||||
"priority": "mandatory",
|
||||
"templateUrl": "templates/tabular-swimlane-cols-tree.html"
|
||||
"template": tabularSwimlaneColsTreeTemplate
|
||||
},
|
||||
{
|
||||
"key": "timeline-tabular-swimlane-cols-data",
|
||||
"priority": "mandatory",
|
||||
"templateUrl": "templates/tabular-swimlane-cols-data.html"
|
||||
"template": tabularSwimlaneColsDataTemplate
|
||||
},
|
||||
{
|
||||
"key": "timeline-resource-graphs",
|
||||
"priority": "mandatory",
|
||||
"templateUrl": "templates/resource-graphs.html"
|
||||
"template": resourceGraphsTemplate
|
||||
},
|
||||
{
|
||||
"key": "timeline-resource-graph-labels",
|
||||
"priority": "mandatory",
|
||||
"templateUrl": "templates/resource-graph-labels.html"
|
||||
"template": resourceGraphLabelsTemplate
|
||||
},
|
||||
{
|
||||
"key": "timeline-legend-item",
|
||||
"priority": "mandatory",
|
||||
"templateUrl": "templates/legend-item.html"
|
||||
"template": legendItemTemplate
|
||||
},
|
||||
{
|
||||
"key": "timeline-ticks",
|
||||
"priority": "mandatory",
|
||||
"templateUrl": "templates/ticks.html"
|
||||
"template": ticksTemplate
|
||||
}
|
||||
],
|
||||
"controls": [
|
||||
{
|
||||
"key": "timeline-datetime",
|
||||
"templateUrl": "templates/controls/datetime.html"
|
||||
"template": datetimeTemplate
|
||||
},
|
||||
{
|
||||
"key": "duration",
|
||||
"templateUrl": "templates/controls/datetime.html"
|
||||
"template": datetimeTemplate
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
|
||||
@@ -22,10 +22,10 @@
|
||||
<div class="t-timeline-gantt l-timeline-gantt s-timeline-gantt"
|
||||
title="{{model.name}}"
|
||||
ng-controller="TimelineGanttController as gantt"
|
||||
ng-style="{
|
||||
ng-style="timespan ? {
|
||||
left: gantt.left(timespan, parameters.scroll, parameters.toPixels) + 'px',
|
||||
width: gantt.width(timespan, parameters.scroll, parameters.toPixels) + 'px'
|
||||
}">
|
||||
} : {}">
|
||||
|
||||
<div class="bar">
|
||||
<span class="s-activity-type ui-symbol">
|
||||
|
||||
@@ -98,7 +98,7 @@ define(
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Recalculate swimlane state on changes
|
||||
$scope.$watch("domainObject", swimlanePopulator.populate);
|
||||
|
||||
@@ -108,6 +108,9 @@ define(
|
||||
// Carry over changes in swimlane set to changes in graphs
|
||||
$scope.$watch(graphMask, repopulateGraphs);
|
||||
|
||||
// Pass selection object into swimlane populator
|
||||
$scope.$watch("selection", swimlanePopulator.selection);
|
||||
|
||||
// Convey current selection to drag handle populator
|
||||
$scope.$watch("selection.get()", dragPopulator.select);
|
||||
|
||||
|
||||
@@ -46,7 +46,8 @@ define(
|
||||
start = Number.POSITIVE_INFINITY,
|
||||
end = Number.NEGATIVE_INFINITY,
|
||||
colors = (configuration.colors || {}),
|
||||
assigner = new TimelineColorAssigner(colors);
|
||||
assigner = new TimelineColorAssigner(colors),
|
||||
lastDomainObject;
|
||||
|
||||
// Track extremes of start/end times
|
||||
function trackStartEnd(timespan) {
|
||||
@@ -144,12 +145,25 @@ define(
|
||||
domainObject && new TimelineProxy(domainObject, selection)
|
||||
);
|
||||
}
|
||||
|
||||
lastDomainObject = domainObject;
|
||||
}
|
||||
|
||||
function setSelectionObject(s) {
|
||||
selection = s;
|
||||
recalculateSwimlanes(lastDomainObject);
|
||||
}
|
||||
|
||||
// Ensure colors are exposed in configuration
|
||||
configuration.colors = colors;
|
||||
|
||||
return {
|
||||
/**
|
||||
* Set the selection object associated with this timeline view.
|
||||
* @param {Object} selection the selection object
|
||||
*/
|
||||
selection: setSelectionObject,
|
||||
|
||||
/**
|
||||
* Update list of swimlanes to match those reachable from this
|
||||
* object.
|
||||
|
||||
@@ -150,6 +150,15 @@ define(
|
||||
expect(mockSelection.proxy).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("allows selection object to be changed", function () {
|
||||
var mockNewSelectionObject = jasmine.createSpyObj(
|
||||
'new-selection',
|
||||
['get', 'select', 'proxy']
|
||||
);
|
||||
populator.selection(mockNewSelectionObject);
|
||||
expect(mockNewSelectionObject.proxy)
|
||||
.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@@ -29,6 +29,15 @@ define([
|
||||
"./src/controllers/CompositeController",
|
||||
"./src/controllers/ColorController",
|
||||
"./src/controllers/DialogButtonController",
|
||||
"text!./res/templates/controls/checkbox.html",
|
||||
"text!./res/templates/controls/datetime.html",
|
||||
"text!./res/templates/controls/select.html",
|
||||
"text!./res/templates/controls/textfield.html",
|
||||
"text!./res/templates/controls/button.html",
|
||||
"text!./res/templates/controls/color.html",
|
||||
"text!./res/templates/controls/composite.html",
|
||||
"text!./res/templates/controls/menu-button.html",
|
||||
"text!./res/templates/controls/dialog.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
MCTForm,
|
||||
@@ -38,6 +47,15 @@ define([
|
||||
CompositeController,
|
||||
ColorController,
|
||||
DialogButtonController,
|
||||
checkboxTemplate,
|
||||
datetimeTemplate,
|
||||
selectTemplate,
|
||||
textfieldTemplate,
|
||||
buttonTemplate,
|
||||
colorTemplate,
|
||||
compositeTemplate,
|
||||
menuButtonTemplate,
|
||||
dialogTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -59,6 +77,7 @@ define([
|
||||
"key": "mctControl",
|
||||
"implementation": MCTControl,
|
||||
"depends": [
|
||||
"templateLinker",
|
||||
"controls[]"
|
||||
]
|
||||
}
|
||||
@@ -66,7 +85,7 @@ define([
|
||||
"controls": [
|
||||
{
|
||||
"key": "checkbox",
|
||||
"templateUrl": "templates/controls/checkbox.html"
|
||||
"template": checkboxTemplate
|
||||
},
|
||||
{
|
||||
"key": "radio",
|
||||
@@ -74,35 +93,35 @@ define([
|
||||
},
|
||||
{
|
||||
"key": "datetime",
|
||||
"templateUrl": "templates/controls/datetime.html"
|
||||
"template": datetimeTemplate
|
||||
},
|
||||
{
|
||||
"key": "select",
|
||||
"templateUrl": "templates/controls/select.html"
|
||||
"template": selectTemplate
|
||||
},
|
||||
{
|
||||
"key": "textfield",
|
||||
"templateUrl": "templates/controls/textfield.html"
|
||||
"template": textfieldTemplate
|
||||
},
|
||||
{
|
||||
"key": "button",
|
||||
"templateUrl": "templates/controls/button.html"
|
||||
"template": buttonTemplate
|
||||
},
|
||||
{
|
||||
"key": "color",
|
||||
"templateUrl": "templates/controls/color.html"
|
||||
"template": colorTemplate
|
||||
},
|
||||
{
|
||||
"key": "composite",
|
||||
"templateUrl": "templates/controls/composite.html"
|
||||
"template": compositeTemplate
|
||||
},
|
||||
{
|
||||
"key": "menu-button",
|
||||
"templateUrl": "templates/controls/menu-button.html"
|
||||
"template": menuButtonTemplate
|
||||
},
|
||||
{
|
||||
"key": "dialog-button",
|
||||
"templateUrl": "templates/controls/dialog.html"
|
||||
"template": dialogTemplate
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
|
||||
@@ -36,23 +36,18 @@ define(
|
||||
* @constructor
|
||||
* @memberof platform/forms
|
||||
*/
|
||||
function MCTControl(controls) {
|
||||
function MCTControl(templateLinker, controls) {
|
||||
var controlMap = {};
|
||||
|
||||
// Prepopulate controlMap for easy look up by key
|
||||
controls.forEach(function (control) {
|
||||
var path = [
|
||||
control.bundle.path,
|
||||
control.bundle.resources,
|
||||
control.templateUrl
|
||||
].join("/");
|
||||
controlMap[control.key] = path;
|
||||
controlMap[control.key] = control;
|
||||
});
|
||||
|
||||
function link(scope, element, attrs, ngModelController) {
|
||||
var changeTemplate = templateLinker.link(scope, element);
|
||||
scope.$watch("key", function (key) {
|
||||
// Pass the template URL to ng-include via scope.
|
||||
scope.inclusion = controlMap[key];
|
||||
changeTemplate(controlMap[key]);
|
||||
});
|
||||
scope.ngModelController = ngModelController;
|
||||
}
|
||||
@@ -61,10 +56,6 @@ define(
|
||||
// Only show at the element level
|
||||
restrict: "E",
|
||||
|
||||
// Use ng-include as a template; "inclusion" will be the real
|
||||
// template path
|
||||
template: '<ng-include src="inclusion"></ng-include>',
|
||||
|
||||
// ngOptions is terminal, so we need to be higher priority
|
||||
priority: 1000,
|
||||
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
* @namespace platform/forms
|
||||
*/
|
||||
define(
|
||||
["./controllers/FormController"],
|
||||
function (FormController) {
|
||||
["./controllers/FormController", "text!../res/templates/form.html"],
|
||||
function (FormController, formTemplate) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
@@ -52,18 +52,12 @@ define(
|
||||
* @constructor
|
||||
*/
|
||||
function MCTForm() {
|
||||
var templatePath = [
|
||||
"platform/forms", //MCTForm.bundle.path,
|
||||
"res", //MCTForm.bundle.resources,
|
||||
"templates/form.html"
|
||||
].join("/");
|
||||
|
||||
return {
|
||||
// Only show at the element level
|
||||
restrict: "E",
|
||||
|
||||
// Load the forms template
|
||||
templateUrl: templatePath,
|
||||
template: formTemplate,
|
||||
|
||||
// Use FormController to populate/respond to changes in scope
|
||||
controller: [ '$scope', FormController ],
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
* Module defining MCTForm. Created by vwoeltje on 11/10/14.
|
||||
*/
|
||||
define(
|
||||
["./controllers/FormController"],
|
||||
function (FormController) {
|
||||
["./MCTForm", "text!../res/templates/toolbar.html"],
|
||||
function (MCTForm, toolbarTemplate) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
@@ -49,38 +49,14 @@ define(
|
||||
* @memberof platform/forms
|
||||
* @constructor
|
||||
*/
|
||||
function MCTForm() {
|
||||
var templatePath = [
|
||||
"platform/forms", //MCTForm.bundle.path,
|
||||
"res", //MCTForm.bundle.resources,
|
||||
"templates/toolbar.html"
|
||||
].join("/");
|
||||
|
||||
return {
|
||||
// Only show at the element level
|
||||
restrict: "E",
|
||||
|
||||
// Load the forms template
|
||||
templateUrl: templatePath,
|
||||
|
||||
// Use FormController to populate/respond to changes in scope
|
||||
controller: [ '$scope', FormController ],
|
||||
|
||||
// Initial an isolate scope
|
||||
scope: {
|
||||
|
||||
// The model: Where form input will actually go
|
||||
ngModel: "=",
|
||||
|
||||
// Form structure; what sections/rows to show
|
||||
structure: "=",
|
||||
|
||||
// Name under which to publish the form
|
||||
name: "@"
|
||||
}
|
||||
};
|
||||
function MCTToolbar() {
|
||||
// Use Directive Definition Object from mct-form,
|
||||
// but use the toolbar's template instead.
|
||||
var ddo = new MCTForm();
|
||||
ddo.template = toolbarTemplate;
|
||||
return ddo;
|
||||
}
|
||||
|
||||
return MCTForm;
|
||||
return MCTToolbar;
|
||||
}
|
||||
);
|
||||
|
||||
@@ -29,6 +29,8 @@ define(
|
||||
describe("The mct-control directive", function () {
|
||||
var testControls,
|
||||
mockScope,
|
||||
mockLinker,
|
||||
mockChangeTemplate,
|
||||
mctControl;
|
||||
|
||||
beforeEach(function () {
|
||||
@@ -46,8 +48,11 @@ define(
|
||||
];
|
||||
|
||||
mockScope = jasmine.createSpyObj("$scope", [ "$watch" ]);
|
||||
mockLinker = jasmine.createSpyObj("templateLinker", ["link"]);
|
||||
mockChangeTemplate = jasmine.createSpy('changeTemplate');
|
||||
mockLinker.link.andReturn(mockChangeTemplate);
|
||||
|
||||
mctControl = new MCTControl(testControls);
|
||||
mctControl = new MCTControl(mockLinker, testControls);
|
||||
});
|
||||
|
||||
it("is restricted to the element level", function () {
|
||||
@@ -66,14 +71,16 @@ define(
|
||||
it("changes its template dynamically", function () {
|
||||
mctControl.link(mockScope);
|
||||
|
||||
expect(mockChangeTemplate)
|
||||
.not.toHaveBeenCalledWith(testControls[1]);
|
||||
|
||||
mockScope.key = "xyz";
|
||||
mockScope.$watch.mostRecentCall.args[1]("xyz");
|
||||
|
||||
// Should have communicated the template path to
|
||||
// ng-include via the "inclusion" field in scope
|
||||
expect(mockScope.inclusion).toEqual(
|
||||
"x/y/z/template.html"
|
||||
);
|
||||
expect(mockChangeTemplate)
|
||||
.toHaveBeenCalledWith(testControls[1]);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@@ -25,11 +25,13 @@ define([
|
||||
"./src/QueuingPersistenceCapabilityDecorator",
|
||||
"./src/PersistenceQueue",
|
||||
"./src/PersistenceFailureController",
|
||||
"text!./res/templates/persistence-failure-dialog.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
QueuingPersistenceCapabilityDecorator,
|
||||
PersistenceQueue,
|
||||
PersistenceFailureController,
|
||||
persistenceFailureDialogTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -67,7 +69,7 @@ define([
|
||||
"templates": [
|
||||
{
|
||||
"key": "persistence-failure-dialog",
|
||||
"templateUrl": "templates/persistence-failure-dialog.html"
|
||||
"template": persistenceFailureDialogTemplate
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
|
||||
@@ -27,6 +27,9 @@ define([
|
||||
"./src/controllers/ClickAwayController",
|
||||
"./src/services/GenericSearchProvider",
|
||||
"./src/services/SearchAggregator",
|
||||
"text!./res/templates/search-item.html",
|
||||
"text!./res/templates/search.html",
|
||||
"text!./res/templates/search-menu.html",
|
||||
'legacyRegistry'
|
||||
], function (
|
||||
SearchController,
|
||||
@@ -34,6 +37,9 @@ define([
|
||||
ClickAwayController,
|
||||
GenericSearchProvider,
|
||||
SearchAggregator,
|
||||
searchItemTemplate,
|
||||
searchTemplate,
|
||||
searchMenuTemplate,
|
||||
legacyRegistry
|
||||
) {
|
||||
"use strict";
|
||||
@@ -80,17 +86,17 @@ define([
|
||||
"representations": [
|
||||
{
|
||||
"key": "search-item",
|
||||
"templateUrl": "templates/search-item.html"
|
||||
"template": searchItemTemplate
|
||||
}
|
||||
],
|
||||
"templates": [
|
||||
{
|
||||
"key": "search",
|
||||
"templateUrl": "templates/search.html"
|
||||
"template": searchTemplate
|
||||
},
|
||||
{
|
||||
"key": "search-menu",
|
||||
"templateUrl": "templates/search-menu.html"
|
||||
"template": searchMenuTemplate
|
||||
}
|
||||
],
|
||||
"components": [
|
||||
|
||||
Reference in New Issue
Block a user