mirror of
https://github.com/nasa/openmct.git
synced 2025-05-04 01:32:54 +00:00
[Common UI] Initial commonUI bundles
Bring in work on general-purpose and over-arching user interface bundles from the sandbox transition branch. WTD-574.
This commit is contained in:
parent
0cd331e8a5
commit
1b0303e517
126
platform/commonUI/browse/bundle.json
Normal file
126
platform/commonUI/browse/bundle.json
Normal file
@ -0,0 +1,126 @@
|
||||
{
|
||||
"extensions": {
|
||||
"routes": [
|
||||
{
|
||||
"when": "/browse",
|
||||
"templateUrl": "templates/browse.html"
|
||||
},
|
||||
{
|
||||
"when": "",
|
||||
"templateUrl": "templates/browse.html"
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
{
|
||||
"key": "BrowseController",
|
||||
"implementation": "BrowseController.js",
|
||||
"depends": [ "$scope", "objectService", "navigationService" ]
|
||||
},
|
||||
{
|
||||
"key": "ViewSwitcherController",
|
||||
"implementation": "ViewSwitcherController.js",
|
||||
"depends": [ "$scope" ]
|
||||
},
|
||||
{
|
||||
"key": "CreateButtonController",
|
||||
"implementation": "creation/CreateButtonController",
|
||||
"depends": [ "$scope", "$document" ]
|
||||
},
|
||||
{
|
||||
"key": "CreateMenuController",
|
||||
"implementation": "creation/CreateMenuController",
|
||||
"depends": [ "$scope" ]
|
||||
}
|
||||
],
|
||||
"templates": [
|
||||
{
|
||||
"key": "topbar-browse",
|
||||
"templateUrl": "templates/topbar-browse.html"
|
||||
}
|
||||
],
|
||||
"representations": [
|
||||
{
|
||||
"key": "browse-object",
|
||||
"templateUrl": "templates/browse-object.html",
|
||||
"uses": [ "view" ]
|
||||
},
|
||||
{
|
||||
"key": "create-button",
|
||||
"templateUrl": "templates/create-button.html"
|
||||
},
|
||||
{
|
||||
"key": "create-menu",
|
||||
"templateUrl": "templates/create-menu.html",
|
||||
"uses": [ "action" ]
|
||||
},
|
||||
{
|
||||
"key": "grid-item",
|
||||
"templateUrl": "templates/items/grid-item.html",
|
||||
"uses": [ "type", "action" ]
|
||||
},
|
||||
{
|
||||
"key": "object-header",
|
||||
"templateUrl": "templates/browse/object-header.html",
|
||||
"uses": [ "type" ]
|
||||
}
|
||||
],
|
||||
"services": [
|
||||
{
|
||||
"key": "navigationService",
|
||||
"implementation": "navigation/NavigationService.js"
|
||||
},
|
||||
{
|
||||
"key": "creationService",
|
||||
"implementation": "creation/CreationService.js",
|
||||
"depends": [ "persistenceService", "uuidService", "$q", "$log" ]
|
||||
},
|
||||
{
|
||||
"key": "uuidService",
|
||||
"implementation": "creation/UUIDService.js"
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"key": "navigate",
|
||||
"implementation": "navigation/NavigateAction.js",
|
||||
"depends": [ "navigationService" ]
|
||||
},
|
||||
{
|
||||
"key": "window",
|
||||
"implementation": "windowing/NewWindowAction.js",
|
||||
"description": "Open this object in a new window.",
|
||||
"category": "view-control",
|
||||
"depends": [ "$window" ],
|
||||
"group": "windowing",
|
||||
"glyph": "y"
|
||||
},
|
||||
{
|
||||
"key": "fullscreen",
|
||||
"implementation": "windowing/FullscreenAction.js",
|
||||
"category": "view-control",
|
||||
"group": "windowing",
|
||||
"glyph": "z"
|
||||
}
|
||||
],
|
||||
"views": [
|
||||
{
|
||||
"key": "items",
|
||||
"name": "Items",
|
||||
"glyph": "i",
|
||||
"description": "Grid of available items.",
|
||||
"templateUrl": "templates/items/items.html",
|
||||
"uses": [ "composition" ],
|
||||
"gestures": [ "drop" ]
|
||||
}
|
||||
],
|
||||
"components": [
|
||||
{
|
||||
"key": "CreateActionProvider",
|
||||
"provides": "actionService",
|
||||
"type": "provider",
|
||||
"implementation": "creation/CreateActionProvider.js",
|
||||
"depends": [ "typeService", "dialogService", "creationService" ]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
6
platform/commonUI/browse/lib/screenfull.min.js
vendored
Normal file
6
platform/commonUI/browse/lib/screenfull.min.js
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
/*!
|
||||
* screenfull
|
||||
* v1.2.0 - 2014-04-29
|
||||
* (c) Sindre Sorhus; MIT License
|
||||
*/
|
||||
!function(){"use strict";var a="undefined"!=typeof module&&module.exports,b="undefined"!=typeof Element&&"ALLOW_KEYBOARD_INPUT"in Element,c=function(){for(var a,b,c=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],d=0,e=c.length,f={};e>d;d++)if(a=c[d],a&&a[1]in document){for(d=0,b=a.length;b>d;d++)f[c[0][d]]=a[d];return f}return!1}(),d={request:function(a){var d=c.requestFullscreen;a=a||document.documentElement,/5\.1[\.\d]* Safari/.test(navigator.userAgent)?a[d]():a[d](b&&Element.ALLOW_KEYBOARD_INPUT)},exit:function(){document[c.exitFullscreen]()},toggle:function(a){this.isFullscreen?this.exit():this.request(a)},onchange:function(){},onerror:function(){},raw:c};return c?(Object.defineProperties(d,{isFullscreen:{get:function(){return!!document[c.fullscreenElement]}},element:{enumerable:!0,get:function(){return document[c.fullscreenElement]}},enabled:{enumerable:!0,get:function(){return!!document[c.fullscreenEnabled]}}}),document.addEventListener(c.fullscreenchange,function(a){d.onchange.call(d,a)}),document.addEventListener(c.fullscreenerror,function(a){d.onerror.call(d,a)}),void(a?module.exports=d:window.screenfull=d)):void(a?module.exports=!1:window.screenfull=!1)}();
|
26
platform/commonUI/browse/res/templates/browse-object.html
Normal file
26
platform/commonUI/browse/res/templates/browse-object.html
Normal file
@ -0,0 +1,26 @@
|
||||
<span ng-controller="ViewSwitcherController">
|
||||
<div class="object-browse-bar bar abs">
|
||||
|
||||
<div class="items-select left abs">
|
||||
<mct-representation key="'object-header'" mct-object="domainObject">
|
||||
</mct-representation>
|
||||
</div>
|
||||
|
||||
<div class="view-controls sort-controls btn-bar right abs">
|
||||
|
||||
<mct-representation key="'action-group'"
|
||||
mct-object="domainObject"
|
||||
parameters="{ category: 'view-control' }">
|
||||
</mct-representation>
|
||||
|
||||
<mct-include key="'switcher'" ng-model="switcher" ng-if="switcher.options.length > 0">
|
||||
</mct-include>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<div class='object-holder abs vscroll'>
|
||||
<mct-representation key="switcher.selected.key" mct-object="domainObject">
|
||||
</mct-representation>
|
||||
</div>
|
||||
</span>
|
25
platform/commonUI/browse/res/templates/browse.html
Normal file
25
platform/commonUI/browse/res/templates/browse.html
Normal file
@ -0,0 +1,25 @@
|
||||
<div content="jquery-wrapper" class="abs holder-all browse-mode">
|
||||
<mct-include key="'topbar-browse'"></mct-include>
|
||||
<div class="holder browse-area outline abs" ng-controller="BrowseController as browse">
|
||||
<div class='split-layout vertical contents abs'>
|
||||
<div class='split-pane-component treeview pane' style="width: 200px;">
|
||||
<mct-representation key="'create-button'" mct-object="navigatedObject">
|
||||
</mct-representation>
|
||||
<div class='holder tree-holder abs'>
|
||||
<mct-representation key="'tree'"
|
||||
mct-object="domainObject"
|
||||
parameters="{callback: browse.setNavigation}">
|
||||
</mct-representation>
|
||||
</div>
|
||||
</div>
|
||||
<div class="splitter" style="left: 200px"></div>
|
||||
<div class='split-pane-component items pane' style="right:0; left:200px;">
|
||||
<div class='holder abs' id='content-area'>
|
||||
<mct-representation mct-object="navigatedObject" key="'browse-object'">
|
||||
</mct-representation>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<mct-include key="'bottombar'"></mct-include>
|
||||
</div>
|
@ -0,0 +1,7 @@
|
||||
<div class='object-header'>
|
||||
<span class='type-icon icon ui-symbol'>{{type.getGlyph()}}</span>
|
||||
<span class='action'>{{parameters.mode}}</span>
|
||||
<span class='type'>{{type.getName()}}</span>
|
||||
<span class='title'>{{model.name}}</span>
|
||||
<a id='actions-menu' class='ui-symbol invoke-menu' onclick="alert('Not yet functional. This will display a dropdown menu of options for this object.');">v</a>
|
||||
</div>
|
@ -0,0 +1,9 @@
|
||||
<div class="menu-element wrapper" ng-controller="CreateButtonController">
|
||||
<div class="btn btn-menu create-btn major" ng-click="toggle()">
|
||||
<span class='ui-symbol major' href=''>+</span> Create<!--span class='ui-symbol invoke-menu'>v</span-->
|
||||
</div>
|
||||
<div class="menu dropdown super-menu" ng-show="createState.visible">
|
||||
<mct-representation mct-object="domainObject" key="'create-menu'">
|
||||
</mct-representation>
|
||||
</div>
|
||||
</div>
|
30
platform/commonUI/browse/res/templates/create-menu.html
Normal file
30
platform/commonUI/browse/res/templates/create-menu.html
Normal file
@ -0,0 +1,30 @@
|
||||
<div class="contents" ng-controller="CreateMenuController">
|
||||
<div class="pane left menu-items">
|
||||
<ul>
|
||||
|
||||
<li ng-repeat="createAction in createActions">
|
||||
<a href=''
|
||||
ng-click="createAction.perform()"
|
||||
ng-mouseover="representation.activeMetadata = createAction.getMetadata()"
|
||||
ng-mouseleave="representation.activeMetadata = undefined">
|
||||
<span class="ui-symbol icon type-icon">
|
||||
{{createAction.getMetadata().glyph}}
|
||||
</span>
|
||||
{{createAction.getMetadata().name}}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
<div class="pane right menu-item-description">
|
||||
<div class="desc-area ui-symbol icon type-icon">
|
||||
{{representation.activeMetadata.glyph}}
|
||||
</div>
|
||||
<div class="desc-area title">
|
||||
{{representation.activeMetadata.name}}
|
||||
</div>
|
||||
<div class="desc-area description">
|
||||
{{representation.activeMetadata.description}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
26
platform/commonUI/browse/res/templates/items/grid-item.html
Normal file
26
platform/commonUI/browse/res/templates/items/grid-item.html
Normal file
@ -0,0 +1,26 @@
|
||||
<!-- For selected, add class 'selected' to outer div -->
|
||||
<div class='item grid-item' ng-click='action.perform("navigate")'>
|
||||
<div class="contents abs">
|
||||
<div class='top-bar bar abs'>
|
||||
<div class='left abs'>
|
||||
<mct-include key="_checkbox"></mct-include>
|
||||
</div>
|
||||
<div class='right abs'>
|
||||
<div class='ui-symbol icon alert hidden' onclick="alert('Not yet functional. When this is visible, it means that this object needs to be updated. Clicking will allow that action via a dialog.');">!</div>
|
||||
<div class='ui-symbol icon profile' onclick="alert('Not yet functional. This will allow sharing and permissions to be controlled for this object.');">P</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class='item-main abs'>
|
||||
<div class='ui-symbol icon lg abs item-type'>{{type.getGlyph()}}</div>
|
||||
<div class='ui-symbol icon abs item-open'>}</div>
|
||||
</div>
|
||||
<div class='bottom-bar bar abs'>
|
||||
<div class='title'>{{model.name}}</div>
|
||||
<div class='details'>
|
||||
<span ng-show="model.composition !== undefined">
|
||||
{{model.composition.length}} Items
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
6
platform/commonUI/browse/res/templates/items/items.html
Normal file
6
platform/commonUI/browse/res/templates/items/items.html
Normal file
@ -0,0 +1,6 @@
|
||||
<div class='items-holder grid abs'>
|
||||
<mct-representation key="'grid-item'"
|
||||
ng-repeat="childObject in composition"
|
||||
mct-object="childObject">
|
||||
</mct-representation>
|
||||
</div>
|
15
platform/commonUI/browse/res/templates/topbar-browse.html
Normal file
15
platform/commonUI/browse/res/templates/topbar-browse.html
Normal file
@ -0,0 +1,15 @@
|
||||
<div class='top-bar browse abs'>
|
||||
<!-- TO-DO: replace JS placeholders for click actions -->
|
||||
<div class='browse-main bar abs left'>
|
||||
<a class="menu-element btn btn-menu browse-btn" onclick="alert('Not yet functional. This will allow filtering of browsed objects and search context.');">
|
||||
<span class='ui-symbol badge major' href=''>*</span>Browse All<span class='ui-symbol invoke-menu'>v</span>
|
||||
</a>
|
||||
<input type='text' class='control filter' name='filter-available'/>
|
||||
<a class='icon icon-filter ui-symbol' onclick="alert('Not yet functional. This will initiate a search.');">M</a>
|
||||
</div>
|
||||
<div class='icon-buttons-main bar abs right'>
|
||||
<a class='ui-symbol icon major alert' onclick="alert('Not yet functional. This will allow updating of domain objects that need to be refreshed.');">!<span id='alert-actions-menu' class='ui-symbol invoke-menu'>v</span></a>
|
||||
<!--a class='ui-symbol icon major profile' href=''>P<span id='profile-actions-menu' class='ui-symbol invoke-menu'>v</span></a-->
|
||||
<a class='ui-symbol icon major settings' onclick="alert('Not yet functional. This will allow access to application configuration settings.');">G<span id='settings-actions-menu' class='ui-symbol invoke-menu'>v</span></a>
|
||||
</div>
|
||||
</div>
|
53
platform/commonUI/browse/src/BrowseController.js
Normal file
53
platform/commonUI/browse/src/BrowseController.js
Normal file
@ -0,0 +1,53 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining BrowseController. Created by vwoeltje on 11/7/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
var ROOT_OBJECT = "ROOT";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function BrowseController($scope, objectService, navigationService) {
|
||||
function setNavigation(domainObject) {
|
||||
$scope.navigatedObject = domainObject;
|
||||
//$scope.$apply("navigatedObject");
|
||||
}
|
||||
|
||||
objectService.getObjects([ROOT_OBJECT]).then(function (objects) {
|
||||
var composition = objects[ROOT_OBJECT].useCapability("composition");
|
||||
$scope.domainObject = objects[ROOT_OBJECT];
|
||||
if (composition) {
|
||||
composition.then(function (c) {
|
||||
// Navigate to the last root level component (usually "mine")
|
||||
if (!navigationService.getNavigation()) {
|
||||
navigationService.setNavigation(c[c.length - 1]);
|
||||
} else {
|
||||
$scope.navigatedObject = navigationService.getNavigation();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$scope.$on("$destroy", function () {
|
||||
navigationService.removeListener(setNavigation);
|
||||
});
|
||||
|
||||
navigationService.addListener(setNavigation);
|
||||
|
||||
return {
|
||||
setNavigation: function (domainObject) {
|
||||
navigationService.setNavigation(domainObject);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return BrowseController;
|
||||
}
|
||||
);
|
48
platform/commonUI/browse/src/ViewSwitcherController.js
Normal file
48
platform/commonUI/browse/src/ViewSwitcherController.js
Normal file
@ -0,0 +1,48 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining ViewSwitcherController. Created by vwoeltje on 11/7/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function ViewSwitcherController($scope) {
|
||||
// If the view capability gets refreshed, try to
|
||||
// keep the same option chosen.
|
||||
function findMatchingOption(options, selected) {
|
||||
var i;
|
||||
|
||||
if (selected) {
|
||||
for (i = 0; i < options.length; i += 1) {
|
||||
if (options[i].key === selected.key) {
|
||||
return options[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return options[0];
|
||||
}
|
||||
|
||||
// Get list of views, read from capability
|
||||
$scope.$watch("view", function () {
|
||||
var options = $scope.view || [ {} ];
|
||||
|
||||
$scope.switcher = {
|
||||
options: options,
|
||||
selected: findMatchingOption(
|
||||
options,
|
||||
($scope.switcher || {}).selected
|
||||
)
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
return ViewSwitcherController;
|
||||
}
|
||||
);
|
67
platform/commonUI/browse/src/creation/CreateAction.js
Normal file
67
platform/commonUI/browse/src/creation/CreateAction.js
Normal file
@ -0,0 +1,67 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining CreateAction. Created by vwoeltje on 11/10/14.
|
||||
*/
|
||||
define(
|
||||
['./CreateWizard'],
|
||||
function (CreateWizard) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function CreateAction(type, parent, context, dialogService, creationService) {
|
||||
/*
|
||||
|
||||
1. Show dialog
|
||||
a. Prepare dialog contents
|
||||
b. Invoke dialogService
|
||||
2. Create new object in persistence service
|
||||
a. Generate UUID
|
||||
b. Store model
|
||||
3. Mutate destination container
|
||||
a. Get mutation capability
|
||||
b. Add new id to composition
|
||||
4. Persist destination container
|
||||
a. ...use persistence capability.
|
||||
|
||||
*/
|
||||
|
||||
function perform() {
|
||||
var wizard = new CreateWizard(type, parent);
|
||||
|
||||
function persistResult(formValue) {
|
||||
var parent = wizard.getLocation(formValue),
|
||||
newModel = wizard.createModel(formValue);
|
||||
return creationService.createObject(newModel, parent);
|
||||
}
|
||||
|
||||
function doNothing() {
|
||||
// Create cancelled, do nothing
|
||||
return false;
|
||||
}
|
||||
|
||||
return dialogService.getUserInput(
|
||||
wizard.getFormModel()
|
||||
).then(persistResult, doNothing);
|
||||
}
|
||||
|
||||
return {
|
||||
perform: perform,
|
||||
getMetadata: function () {
|
||||
return {
|
||||
key: 'create',
|
||||
glyph: type.getGlyph(),
|
||||
name: type.getName(),
|
||||
description: type.getDescription(),
|
||||
context: context
|
||||
};
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return CreateAction;
|
||||
}
|
||||
);
|
@ -0,0 +1,41 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining CreateActionProvider.js. Created by vwoeltje on 11/10/14.
|
||||
*/
|
||||
define(
|
||||
["./CreateAction"],
|
||||
function (CreateAction) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function CreateActionProvider(typeService, dialogService, creationService) {
|
||||
return {
|
||||
getActions: function (actionContext) {
|
||||
var context = actionContext || {},
|
||||
key = context.key,
|
||||
destination = context.domainObject;
|
||||
|
||||
if (key !== 'create' || !destination) {
|
||||
return [];
|
||||
}
|
||||
|
||||
return typeService.listTypes().map(function (type) {
|
||||
return new CreateAction(
|
||||
type,
|
||||
destination,
|
||||
context,
|
||||
dialogService,
|
||||
creationService
|
||||
);
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return CreateActionProvider;
|
||||
}
|
||||
);
|
@ -0,0 +1,36 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining CreateController. Created by vwoeltje on 11/10/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function CreateButtonController($scope, $document) {
|
||||
function collapse() {
|
||||
$scope.createState.visible = false;
|
||||
$scope.$apply("createState.visible");
|
||||
$document.off("mouseup", collapse);
|
||||
return false;
|
||||
}
|
||||
|
||||
$scope.createState = { visible: false };
|
||||
|
||||
$scope.toggle = function () {
|
||||
$scope.createState.visible = !$scope.createState.visible;
|
||||
if ($scope.createState.visible) {
|
||||
$document.on("mouseup", collapse);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
return CreateButtonController;
|
||||
}
|
||||
);
|
@ -0,0 +1,29 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining CreateMenuController. Created by vwoeltje on 11/10/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function CreateMenuController($scope) {
|
||||
function refreshActions() {
|
||||
var actionCapability = $scope.action;
|
||||
if (actionCapability) {
|
||||
$scope.createActions =
|
||||
actionCapability.getActions('create');
|
||||
}
|
||||
}
|
||||
|
||||
$scope.$watch("action", refreshActions);
|
||||
}
|
||||
|
||||
return CreateMenuController;
|
||||
}
|
||||
);
|
79
platform/commonUI/browse/src/creation/CreateWizard.js
Normal file
79
platform/commonUI/browse/src/creation/CreateWizard.js
Normal file
@ -0,0 +1,79 @@
|
||||
/*global define*/
|
||||
|
||||
/**
|
||||
* Defines the CreateWizard, used by the CreateAction to
|
||||
* populate the form shown in dialog based on the created type.
|
||||
*
|
||||
* @module core/action/create-wizard
|
||||
*/
|
||||
define(
|
||||
function () {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Construct a new CreateWizard.
|
||||
*
|
||||
* @param {TypeImpl} type the type of domain object to be created
|
||||
* @param {DomainObject} parent the domain object to serve as
|
||||
* the initial parent for the created object, in the dialog
|
||||
* @constructor
|
||||
* @memberof module:core/action/create-wizard
|
||||
*/
|
||||
function CreateWizard(type, parent) {
|
||||
var model = type.getInitialModel(),
|
||||
properties = type.getProperties();
|
||||
|
||||
return {
|
||||
getFormModel: function () {
|
||||
var parentRow = Object.create(parent),
|
||||
sections = [];
|
||||
|
||||
sections.push({
|
||||
name: "Properties",
|
||||
rows: properties.map(function (property) {
|
||||
// Property definition is same as form row definition
|
||||
var row = Object.create(property.getDefinition());
|
||||
// But pull an initial value from the model
|
||||
row.value = property.getValue(model);
|
||||
return row;
|
||||
})
|
||||
});
|
||||
|
||||
// Ensure there is always a "save in" section
|
||||
parentRow.name = "Save In";
|
||||
parentRow.cssclass = "selector-list";
|
||||
parentRow.control = "_locator";
|
||||
parentRow.key = "createParent";
|
||||
sections.push({ label: 'Location', rows: [parentRow]});
|
||||
|
||||
return {
|
||||
sections: sections,
|
||||
name: "Create a New " + type.getName()
|
||||
};
|
||||
},
|
||||
getLocation: function (formValue) {
|
||||
return formValue.createParent || parent;
|
||||
},
|
||||
createModel: function (formValue) {
|
||||
// Clone
|
||||
var newModel = JSON.parse(JSON.stringify(model));
|
||||
|
||||
// Always use the type from the type definition
|
||||
newModel.type = type.getKey();
|
||||
|
||||
// Update all properties
|
||||
properties.forEach(function (property) {
|
||||
var value = formValue[property.getDefinition().key];
|
||||
property.setValue(newModel, value);
|
||||
});
|
||||
|
||||
return newModel;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
|
||||
return CreateWizard;
|
||||
}
|
||||
);
|
90
platform/commonUI/browse/src/creation/CreationService.js
Normal file
90
platform/commonUI/browse/src/creation/CreationService.js
Normal file
@ -0,0 +1,90 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining CreateService. Created by vwoeltje on 11/10/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
var NON_PERSISTENT_WARNING =
|
||||
"Tried to create an object in non-persistent container.",
|
||||
NO_COMPOSITION_WARNING =
|
||||
"Could not add to composition; no composition in ";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function CreationService(persistenceService, uuidService, $q, $log) {
|
||||
|
||||
function doPersist(space, id, model) {
|
||||
return persistenceService.createObject(
|
||||
space,
|
||||
id,
|
||||
model
|
||||
).then(function () { return id; });
|
||||
}
|
||||
|
||||
function addToComposition(id, parent) {
|
||||
var mutatationResult = parent.useCapability("mutation", function (model) {
|
||||
if (Array.isArray(model.composition)) {
|
||||
if (model.composition.indexOf(id) === -1) {
|
||||
model.composition.push(id);
|
||||
}
|
||||
} else {
|
||||
$log.warn(NO_COMPOSITION_WARNING + parent.getId());
|
||||
}
|
||||
});
|
||||
|
||||
return $q.when(mutatationResult).then(function (result) {
|
||||
var persistence = parent.getCapability("persistence");
|
||||
|
||||
if (!result) {
|
||||
$log.error("Could not mutate " + parent.getId());
|
||||
}
|
||||
|
||||
if (!persistence) {
|
||||
$log.error([
|
||||
"Expected to be able to persist ",
|
||||
parent.getId(),
|
||||
" but could not."
|
||||
].join(""));
|
||||
return undefined;
|
||||
}
|
||||
|
||||
return persistence.persist();
|
||||
});
|
||||
}
|
||||
|
||||
function createObject(model, parent) {
|
||||
var persistence = parent.getCapability("persistence"),
|
||||
result = $q.defer(),
|
||||
space;
|
||||
|
||||
if (persistence) {
|
||||
space = persistence.getSpace();
|
||||
return $q.when(
|
||||
uuidService.getUUID()
|
||||
).then(function (id) {
|
||||
return doPersist(space, id, model);
|
||||
}).then(function (id) {
|
||||
return addToComposition(id, parent);
|
||||
});
|
||||
} else {
|
||||
$log.warn(NON_PERSISTENT_WARNING);
|
||||
$q.reject(new Error(NON_PERSISTENT_WARNING));
|
||||
}
|
||||
|
||||
return result.promise;
|
||||
}
|
||||
|
||||
return {
|
||||
createObject: createObject
|
||||
};
|
||||
}
|
||||
|
||||
return CreationService;
|
||||
}
|
||||
);
|
29
platform/commonUI/browse/src/creation/UUIDService.js
Normal file
29
platform/commonUI/browse/src/creation/UUIDService.js
Normal file
@ -0,0 +1,29 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining UUIDService. Created by vwoeltje on 11/12/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function UUIDService() {
|
||||
var counter = Date.now();
|
||||
|
||||
return {
|
||||
getUUID: function () {
|
||||
counter += 1;
|
||||
return counter.toString(36);
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
return UUIDService;
|
||||
}
|
||||
);
|
35
platform/commonUI/browse/src/navigation/NavigateAction.js
Normal file
35
platform/commonUI/browse/src/navigation/NavigateAction.js
Normal file
@ -0,0 +1,35 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining NavigateAction. Created by vwoeltje on 11/10/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function NavigateAction(navigationService, context) {
|
||||
var domainObject = context.domainObject;
|
||||
|
||||
function perform() {
|
||||
return Promise.resolve(
|
||||
navigationService.setNavigation(domainObject)
|
||||
);
|
||||
}
|
||||
|
||||
return {
|
||||
perform: perform
|
||||
};
|
||||
}
|
||||
|
||||
NavigateAction.appliesTo = function (context) {
|
||||
return context.domainObject !== undefined;
|
||||
};
|
||||
|
||||
return NavigateAction;
|
||||
}
|
||||
);
|
50
platform/commonUI/browse/src/navigation/NavigationService.js
Normal file
50
platform/commonUI/browse/src/navigation/NavigationService.js
Normal file
@ -0,0 +1,50 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining NavigationService. Created by vwoeltje on 11/10/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function NavigationService() {
|
||||
var navigated,
|
||||
callbacks = [];
|
||||
|
||||
function getNavigation() {
|
||||
return navigated;
|
||||
}
|
||||
|
||||
function setNavigation(value) {
|
||||
navigated = value;
|
||||
callbacks.forEach(function (callback) {
|
||||
callback(value);
|
||||
});
|
||||
}
|
||||
|
||||
function addListener(callback) {
|
||||
callbacks.push(callback);
|
||||
}
|
||||
|
||||
function removeListener(callback) {
|
||||
callbacks = callbacks.filter(function (cb) {
|
||||
return cb !== callback;
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
getNavigation: getNavigation,
|
||||
setNavigation: setNavigation,
|
||||
addListener: addListener,
|
||||
removeListener: removeListener
|
||||
};
|
||||
}
|
||||
|
||||
return NavigationService;
|
||||
}
|
||||
);
|
41
platform/commonUI/browse/src/windowing/FullscreenAction.js
Normal file
41
platform/commonUI/browse/src/windowing/FullscreenAction.js
Normal file
@ -0,0 +1,41 @@
|
||||
/*global define,screenfull,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining FullscreenAction. Created by vwoeltje on 11/18/14.
|
||||
*/
|
||||
define(
|
||||
["../../lib/screenfull.min"],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
var ENTER_FULLSCREEN = "Enter full screen mode.",
|
||||
EXIT_FULLSCREEN = "Exit full screen mode.";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function FullscreenAction(context) {
|
||||
return {
|
||||
perform: function () {
|
||||
screenfull.toggle();
|
||||
},
|
||||
getMetadata: function () {
|
||||
// We override getMetadata, because the glyph and
|
||||
// description need to be determined at run-time
|
||||
// based on whether or not we are currently
|
||||
// full screen.
|
||||
var metadata = Object.create(FullscreenAction);
|
||||
metadata.glyph = screenfull.isFullscreen ? "_" : "z";
|
||||
metadata.description = screenfull.isFullscreen ?
|
||||
EXIT_FULLSCREEN : ENTER_FULLSCREEN;
|
||||
metadata.group = "windowing";
|
||||
metadata.context = context;
|
||||
return metadata;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return FullscreenAction;
|
||||
}
|
||||
);
|
25
platform/commonUI/browse/src/windowing/NewWindowAction.js
Normal file
25
platform/commonUI/browse/src/windowing/NewWindowAction.js
Normal file
@ -0,0 +1,25 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining NewWindowAction. Created by vwoeltje on 11/18/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function NewWindowAction($window) {
|
||||
return {
|
||||
perform: function () {
|
||||
$window.alert("Not yet functional. This will open objects in a new window.");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return NewWindowAction;
|
||||
}
|
||||
);
|
17
platform/commonUI/dialog/bundle.json
Normal file
17
platform/commonUI/dialog/bundle.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"extensions": {
|
||||
"services": [
|
||||
{
|
||||
"key": "dialogService",
|
||||
"implementation": "DialogService.js",
|
||||
"depends": [ "$document", "$compile", "$rootScope", "$timeout", "$q", "$log" ]
|
||||
}
|
||||
],
|
||||
"templates": [
|
||||
{
|
||||
"key": "overlay-dialog",
|
||||
"templateUrl": "templates/overlay.html"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
28
platform/commonUI/dialog/res/templates/overlay.html
Normal file
28
platform/commonUI/dialog/res/templates/overlay.html
Normal file
@ -0,0 +1,28 @@
|
||||
<div class="abs overlay" ng-show="ngModel.visible">
|
||||
<div class="abs blocker"></div>
|
||||
<div class="abs holder">
|
||||
<a href=""
|
||||
ng-click="state.cancel()"
|
||||
class="btn normal outline ui-symbol close">x</a>
|
||||
<div class="abs contents">
|
||||
<div class="abs top-bar">
|
||||
<div class="title">{{ngModel.title}}</div>
|
||||
<div class="hint">All fields marked <span class="ui-symbol req">*</span> are required.</div>
|
||||
</div>
|
||||
<div class="abs form outline editor">
|
||||
<div class='abs contents'>
|
||||
<!-- mct-include key="'form'" ng-model="" -->
|
||||
<textarea ng-model="ngModel.value"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="abs bottom-bar">
|
||||
<a class='btn lg major' href='' ng-click="ngModel.confirm()">
|
||||
OK
|
||||
</a>
|
||||
<a class='btn lg subtle' href='' ng-click="ngModel.cancel()">
|
||||
Cancel
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
79
platform/commonUI/dialog/src/DialogService.js
Normal file
79
platform/commonUI/dialog/src/DialogService.js
Normal file
@ -0,0 +1,79 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining DialogService. Created by vwoeltje on 11/10/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function DialogService($document, $compile, $rootScope, $timeout, $q, $log) {
|
||||
var scope;
|
||||
|
||||
function addContent() {
|
||||
scope = $rootScope.$new();
|
||||
$document.find('body').prepend(
|
||||
$compile(
|
||||
"<mct-include ng-model=\"dialog\" key=\"'overlay-dialog'\"></mct-include>"
|
||||
)(scope)
|
||||
);
|
||||
scope.dialog = { visible: false, value: {} };
|
||||
}
|
||||
|
||||
function dismiss() {
|
||||
scope.dialog = { visible: false, value: {} };
|
||||
}
|
||||
|
||||
return {
|
||||
getUserInput: function (formModel, value) {
|
||||
var deferred = $q.defer();
|
||||
|
||||
if (!scope) {
|
||||
addContent();
|
||||
}
|
||||
|
||||
$timeout(function () {
|
||||
if (scope.dialog.visible) {
|
||||
$log.warn([
|
||||
"Dialog already showing; ",
|
||||
"unable to show ",
|
||||
title
|
||||
].join(""));
|
||||
}
|
||||
|
||||
scope.dialog.visible = true;
|
||||
scope.dialog.title = formModel.name;
|
||||
scope.dialog.message = formModel.message;
|
||||
scope.dialog.formModel = formModel;
|
||||
scope.dialog.value = JSON.stringify(value);
|
||||
|
||||
scope.dialog.confirm = function () {
|
||||
var resultingValue;
|
||||
|
||||
try {
|
||||
resultingValue = JSON.parse(scope.dialog.value);
|
||||
} catch (e) {
|
||||
resultingValue = {};
|
||||
}
|
||||
deferred.resolve(resultingValue);
|
||||
dismiss();
|
||||
};
|
||||
scope.dialog.cancel = function () {
|
||||
deferred.reject();
|
||||
dismiss();
|
||||
};
|
||||
});
|
||||
|
||||
return deferred.promise;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return DialogService;
|
||||
}
|
||||
);
|
1
platform/commonUI/edit/README.md
Normal file
1
platform/commonUI/edit/README.md
Normal file
@ -0,0 +1 @@
|
||||
Contains sources and resources associated with Edit mode.
|
85
platform/commonUI/edit/bundle.json
Normal file
85
platform/commonUI/edit/bundle.json
Normal file
@ -0,0 +1,85 @@
|
||||
{
|
||||
"extensions": {
|
||||
"routes": [
|
||||
{
|
||||
"when": "/edit",
|
||||
"templateUrl": "templates/edit.html"
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
{
|
||||
"key": "EditController",
|
||||
"implementation": "EditController.js",
|
||||
"depends": [ "$scope", "navigationService" ]
|
||||
},
|
||||
{
|
||||
"key": "EditActionController",
|
||||
"implementation": "EditActionController.js",
|
||||
"depends": [ "$scope" ]
|
||||
}
|
||||
],
|
||||
"actions": [
|
||||
{
|
||||
"key": "edit",
|
||||
"implementation": "actions/EditAction.js",
|
||||
"depends": [ "$location", "navigationService", "$log" ],
|
||||
"description": "Edit this object.",
|
||||
"category": "view-control",
|
||||
"glyph": "p"
|
||||
},
|
||||
{
|
||||
"key": "remove",
|
||||
"category": "contextual",
|
||||
"implementation": "actions/RemoveAction.js",
|
||||
"glyph": "Z",
|
||||
"name": "Remove",
|
||||
"description": "Remove this object from its containing object.",
|
||||
"depends": [ "$q" ]
|
||||
},
|
||||
{
|
||||
"key": "save",
|
||||
"category": "conclude-editing",
|
||||
"implementation": "actions/SaveAction.js",
|
||||
"name": "Save",
|
||||
"description": "Save changes made to these objects.",
|
||||
"depends": [ "$location" ]
|
||||
},
|
||||
{
|
||||
"key": "cancel",
|
||||
"category": "conclude-editing",
|
||||
"implementation": "actions/CancelAction.js",
|
||||
"name": "Cancel",
|
||||
"description": "Discard changes made to these objects.",
|
||||
"depends": [ "$location" ]
|
||||
}
|
||||
],
|
||||
"templates": [
|
||||
{
|
||||
"key": "topbar-edit",
|
||||
"templateUrl": "templates/topbar-edit.html"
|
||||
},
|
||||
{
|
||||
"key": "edit-library",
|
||||
"templateUrl": "templates/library.html"
|
||||
}
|
||||
],
|
||||
"representations": [
|
||||
{
|
||||
"key": "edit-object",
|
||||
"templateUrl": "templates/edit-object.html",
|
||||
"uses": [ "view", "context" ]
|
||||
},
|
||||
{
|
||||
"key": "edit-action-buttons",
|
||||
"templateUrl": "templates/edit-action-buttons.html",
|
||||
"uses": [ "action" ]
|
||||
},
|
||||
{
|
||||
"key": "edit-elements",
|
||||
"templateUrl": "templates/elements.html",
|
||||
"uses": [ "composition" ],
|
||||
"gestures": [ "drop" ]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
<span ng-controller="EditActionController">
|
||||
<span ng-repeat="currentAction in editActions">
|
||||
<a class='btn'
|
||||
ng-click="currentAction.perform()"
|
||||
ng-class="{ major: $index === 0, subtle: $index !== 0 }">
|
||||
{{currentAction.getMetadata().name}}
|
||||
</a>
|
||||
</span>
|
||||
</span>
|
33
platform/commonUI/edit/res/templates/edit-object.html
Normal file
33
platform/commonUI/edit/res/templates/edit-object.html
Normal file
@ -0,0 +1,33 @@
|
||||
<span ng-controller="ViewSwitcherController">
|
||||
<mct-include key="'topbar-edit'"
|
||||
parameters="{ switcher: switcher, object: domainObject }">
|
||||
</mct-include>
|
||||
<div class="holder edit-area outline abs">
|
||||
<!-- edit toolbar goes here -->
|
||||
<div class='split-layout vertical contents abs work-area'>
|
||||
<div class='split-pane-component edit-main pane' style="right: 200px; left: 0px;">
|
||||
<div class='holder abs object-holder'>
|
||||
<mct-representation key="switcher.selected.key" mct-object="domainObject">
|
||||
</mct-representation>
|
||||
</div>
|
||||
</div>
|
||||
<div class="splitter" style="right: 200px"></div>
|
||||
<div class='split-pane-component edit-objects pane menus-to-left'
|
||||
style="right: 0px; width: 200px">
|
||||
<div class='holder abs split-layout horizontal'>
|
||||
|
||||
<mct-container key="accordion" title="Library" style="position: relative; top: 0px;">
|
||||
<mct-representation key="'tree'" mct-object="context.getRoot()">
|
||||
</mct-representation>
|
||||
</mct-container>
|
||||
|
||||
<mct-container key="accordion" title="Elements" style="position: relative; top: 200px;">
|
||||
<mct-representation key="'edit-elements'" mct-object="domainObject">
|
||||
</mct-representation>
|
||||
</mct-container>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</span>
|
10
platform/commonUI/edit/res/templates/edit.html
Normal file
10
platform/commonUI/edit/res/templates/edit.html
Normal file
@ -0,0 +1,10 @@
|
||||
<div content="jquery-wrapper"
|
||||
class="abs holder-all edit-mode"
|
||||
ng-controller="EditController">
|
||||
|
||||
<mct-representation key="'edit-object'" mct-object="navigatedObject">
|
||||
</mct-representation>
|
||||
|
||||
<mct-include key="'bottombar'"></mct-include>
|
||||
|
||||
</div>
|
11
platform/commonUI/edit/res/templates/elements.html
Normal file
11
platform/commonUI/edit/res/templates/elements.html
Normal file
@ -0,0 +1,11 @@
|
||||
<div class="current-elements abs" style="height: 100%;">
|
||||
<!--p class="hint">Drop objects here to add them...</p-->
|
||||
<ul class="tree">
|
||||
<li ng-repeat="containedObject in composition">
|
||||
<span class="tree-item">
|
||||
<mct-representation key="'label'" mct-object="containedObject">
|
||||
</mct-representation>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
4
platform/commonUI/edit/res/templates/library.html
Normal file
4
platform/commonUI/edit/res/templates/library.html
Normal file
@ -0,0 +1,4 @@
|
||||
<mct-representation key="'tree'"
|
||||
mct-object="parameters.domainObject"
|
||||
parameters="parameters">
|
||||
</mct-representation>
|
17
platform/commonUI/edit/res/templates/topbar-edit.html
Normal file
17
platform/commonUI/edit/res/templates/topbar-edit.html
Normal file
@ -0,0 +1,17 @@
|
||||
<div class='top-bar edit abs'>
|
||||
<mct-representation key="'object-header'" mct-object="parameters.object" parameters="{ mode: 'Edit' }">
|
||||
</mct-representation>
|
||||
<div class='buttons-main btn-bar buttons abs'>
|
||||
<mct-include key="'switcher'"
|
||||
ng-model="parameters.switcher"
|
||||
ng-if="parameters.switcher.options.length > 0">
|
||||
</mct-include>
|
||||
<mct-representation key="'edit-action-buttons'"
|
||||
mct-object="parameters.object"
|
||||
class='conclude-editing'>
|
||||
<!--a class='btn major' href=''>Save<span id='save-actions-menu' class='ui-symbol invoke-menu'>v</span></a>
|
||||
<a class='btn subtle' href=''>Cancel</a-->
|
||||
|
||||
</mct-representation>
|
||||
</div>
|
||||
</div>
|
31
platform/commonUI/edit/src/EditActionController.js
Normal file
31
platform/commonUI/edit/src/EditActionController.js
Normal file
@ -0,0 +1,31 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining EditActionController. Created by vwoeltje on 11/17/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Controller which supplies action instances for Save/Cancel.
|
||||
* @constructor
|
||||
*/
|
||||
function EditActionController($scope) {
|
||||
function updateActions() {
|
||||
if (!$scope.action) {
|
||||
$scope.editActions = [];
|
||||
} else {
|
||||
$scope.editActions = $scope.action.getActions({
|
||||
category: 'conclude-editing'
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
$scope.$watch("action", updateActions);
|
||||
}
|
||||
|
||||
return EditActionController;
|
||||
}
|
||||
);
|
27
platform/commonUI/edit/src/EditController.js
Normal file
27
platform/commonUI/edit/src/EditController.js
Normal file
@ -0,0 +1,27 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining EditController. Created by vwoeltje on 11/14/14.
|
||||
*/
|
||||
define(
|
||||
["./objects/EditableDomainObject"],
|
||||
function (EditableDomainObject) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function EditController($scope, navigationService) {
|
||||
function setNavigation(domainObject) {
|
||||
$scope.navigatedObject =
|
||||
domainObject && new EditableDomainObject(domainObject);
|
||||
}
|
||||
|
||||
setNavigation(navigationService.getNavigation());
|
||||
navigationService.addListener(setNavigation);
|
||||
}
|
||||
|
||||
return EditController;
|
||||
}
|
||||
);
|
51
platform/commonUI/edit/src/actions/CancelAction.js
Normal file
51
platform/commonUI/edit/src/actions/CancelAction.js
Normal file
@ -0,0 +1,51 @@
|
||||
/*global define*/
|
||||
|
||||
/**
|
||||
* The "Save" action; the action triggered by clicking Save from
|
||||
* Edit Mode. Exits the editing user interface and invokes object
|
||||
* capabilities to persist the changes that have been made.
|
||||
*/
|
||||
define(
|
||||
function () {
|
||||
'use strict';
|
||||
|
||||
function CancelAction($location, context) {
|
||||
var domainObject = context.domainObject;
|
||||
|
||||
// Look up the object's "editor.completion" capability;
|
||||
// this is introduced by EditableDomainObject which is
|
||||
// used to insulate underlying objects from changes made
|
||||
// during editing.
|
||||
function getEditorCapability() {
|
||||
return domainObject.getCapability("editor");
|
||||
}
|
||||
|
||||
// Invoke any save behavior introduced by the editor.completion
|
||||
// capability.
|
||||
function doCancel(editor) {
|
||||
return editor.cancel();
|
||||
}
|
||||
|
||||
// Discard the current root view (which will be the editing
|
||||
// UI, which will have been pushed atop the Browise UI.)
|
||||
function returnToBrowse() {
|
||||
$location.path("/browse");
|
||||
}
|
||||
|
||||
return {
|
||||
perform: function () {
|
||||
return doCancel(getEditorCapability())
|
||||
.then(returnToBrowse);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
CancelAction.appliesTo = function (context) {
|
||||
var domainObject = (context || {}).domainObject;
|
||||
return domainObject !== undefined &&
|
||||
domainObject.hasCapability("editor");
|
||||
};
|
||||
|
||||
return CancelAction;
|
||||
}
|
||||
);
|
47
platform/commonUI/edit/src/actions/EditAction.js
Normal file
47
platform/commonUI/edit/src/actions/EditAction.js
Normal file
@ -0,0 +1,47 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining EditAction. Created by vwoeltje on 11/14/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
var NULL_ACTION = {
|
||||
perform: function () {
|
||||
return undefined;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function EditAction($location, navigationService, $log, context) {
|
||||
var domainObject = (context || {}).domainObject;
|
||||
|
||||
if (!domainObject) {
|
||||
$log.error([
|
||||
"No domain object to edit; ",
|
||||
"edit action is not valid."
|
||||
].join(""));
|
||||
|
||||
return NULL_ACTION;
|
||||
}
|
||||
|
||||
return {
|
||||
perform: function () {
|
||||
navigationService.setNavigation(domainObject);
|
||||
$location.path("/edit");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
EditAction.appliesTo = function (context) {
|
||||
return (context || {}).domainObject !== undefined;
|
||||
};
|
||||
|
||||
return EditAction;
|
||||
}
|
||||
);
|
90
platform/commonUI/edit/src/actions/RemoveAction.js
Normal file
90
platform/commonUI/edit/src/actions/RemoveAction.js
Normal file
@ -0,0 +1,90 @@
|
||||
/*global define*/
|
||||
|
||||
/**
|
||||
* Module defining RemoveAction. Created by vwoeltje on 11/17/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Construct an action which will remove the provided object manifestation.
|
||||
* The object will be removed from its parent's composition; the parent
|
||||
* is looked up via the "context" capability (so this will be the
|
||||
* immediate ancestor by which this specific object was reached.)
|
||||
*
|
||||
* @param {DomainObject} object the object to be removed
|
||||
* @param {ActionContext} context the context in which this action is performed
|
||||
* @constructor
|
||||
* @memberof module:editor/actions/remove-action
|
||||
*/
|
||||
function RemoveAction($q, context) {
|
||||
var object = (context || {}).domainObject;
|
||||
|
||||
/**
|
||||
* Check whether an object ID matches the ID of the object being
|
||||
* removed (used to filter a parent's composition to handle the
|
||||
* removal.)
|
||||
*/
|
||||
function isNotObject(otherObjectId) {
|
||||
return otherObjectId !== object.getId();
|
||||
}
|
||||
|
||||
/**
|
||||
* Mutate a parent object such that it no longer contains the object
|
||||
* which is being removed.
|
||||
*/
|
||||
function doMutate(model) {
|
||||
model.composition = model.composition.filter(isNotObject);
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoke persistence on a domain object. This will be called upon
|
||||
* the removed object's parent (as its composition will have changed.)
|
||||
*/
|
||||
function doPersist(domainObject) {
|
||||
var persistence = domainObject.getCapability('persistence');
|
||||
return persistence && persistence.persist();
|
||||
}
|
||||
|
||||
/**
|
||||
* Remove the object from its parent, as identified by its context
|
||||
* capability.
|
||||
* @param {ContextCapability} contextCapability the "context" capability
|
||||
* of the domain object being removed.
|
||||
*/
|
||||
function removeFromContext(contextCapability) {
|
||||
var parent = contextCapability.getParent();
|
||||
$q.when(
|
||||
parent.useCapability('mutation', doMutate)
|
||||
).then(function () {
|
||||
return doPersist(parent);
|
||||
});
|
||||
}
|
||||
|
||||
return {
|
||||
/**
|
||||
* Perform this action.
|
||||
* @return {module:core/promises.Promise} a promise which will be
|
||||
* fulfilled when the action has completed.
|
||||
*/
|
||||
perform: function () {
|
||||
return $q.when(object.getCapability('context'))
|
||||
.then(removeFromContext);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Object needs to have a parent for Remove to be applicable
|
||||
/*RemoveAction.appliesTo = function (context) {
|
||||
var object = context.domainObject,
|
||||
contextCapability = object && object.getCapability("context"),
|
||||
parent = contextCapability && contextCapability.getParent();
|
||||
return parent !== undefined &&
|
||||
Array.isArray(parent.getModel().composition);
|
||||
};*/
|
||||
|
||||
return RemoveAction;
|
||||
}
|
||||
);
|
50
platform/commonUI/edit/src/actions/SaveAction.js
Normal file
50
platform/commonUI/edit/src/actions/SaveAction.js
Normal file
@ -0,0 +1,50 @@
|
||||
/*global define*/
|
||||
|
||||
/**
|
||||
* The "Save" action; the action triggered by clicking Save from
|
||||
* Edit Mode. Exits the editing user interface and invokes object
|
||||
* capabilities to persist the changes that have been made.
|
||||
*/
|
||||
define(
|
||||
function () {
|
||||
'use strict';
|
||||
|
||||
function SaveAction($location, context) {
|
||||
var domainObject = context.domainObject;
|
||||
|
||||
// Look up the object's "editor.completion" capability;
|
||||
// this is introduced by EditableDomainObject which is
|
||||
// used to insulate underlying objects from changes made
|
||||
// during editing.
|
||||
function getEditorCapability() {
|
||||
return domainObject.getCapability("editor");
|
||||
}
|
||||
|
||||
// Invoke any save behavior introduced by the editor.completion
|
||||
// capability.
|
||||
function doSave(editor) {
|
||||
return editor.save();
|
||||
}
|
||||
|
||||
// Discard the current root view (which will be the editing
|
||||
// UI, which will have been pushed atop the Browise UI.)
|
||||
function returnToBrowse() {
|
||||
$location.path("/browse");
|
||||
}
|
||||
|
||||
return {
|
||||
perform: function () {
|
||||
return doSave(getEditorCapability()).then(returnToBrowse);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
SaveAction.appliesTo = function (context) {
|
||||
var domainObject = (context || {}).domainObject;
|
||||
return domainObject !== undefined &&
|
||||
domainObject.hasCapability("editor");
|
||||
};
|
||||
|
||||
return SaveAction;
|
||||
}
|
||||
);
|
@ -0,0 +1,56 @@
|
||||
/*global define*/
|
||||
|
||||
/**
|
||||
* Wrapper for both "context" and "composition" capabilities;
|
||||
* ensures that any domain objects reachable in Edit mode
|
||||
* are also wrapped as EditableDomainObjects
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
'use strict';
|
||||
|
||||
return function EditableContextCapability(
|
||||
contextCapability,
|
||||
editableObject,
|
||||
domainObject,
|
||||
factory
|
||||
) {
|
||||
var capability = Object.create(contextCapability);
|
||||
|
||||
function isDomainObject(obj) {
|
||||
return typeof obj.getId === 'function' &&
|
||||
typeof obj.getModel === 'function' &&
|
||||
typeof obj.getCapability === 'function';
|
||||
}
|
||||
|
||||
function makeEditableObject(obj) {
|
||||
return isDomainObject(obj) ?
|
||||
factory.getEditableObject(obj) :
|
||||
obj;
|
||||
}
|
||||
|
||||
function makeEditable(obj) {
|
||||
return Array.isArray(obj) ?
|
||||
obj.map(makeEditableObject) :
|
||||
makeEditableObject(obj);
|
||||
}
|
||||
|
||||
// Replace all methods; return only editable domain objects.
|
||||
Object.keys(contextCapability).forEach(function (k) {
|
||||
capability[k] = function () {
|
||||
var result = contextCapability[k].apply(
|
||||
capability,
|
||||
arguments
|
||||
);
|
||||
|
||||
return result.then ? // promise-like
|
||||
result.then(makeEditable) :
|
||||
makeEditable(result);
|
||||
};
|
||||
});
|
||||
|
||||
return capability;
|
||||
};
|
||||
}
|
||||
);
|
@ -0,0 +1,30 @@
|
||||
/*global define*/
|
||||
|
||||
/**
|
||||
* Editable Persistence Capability. Overrides the persistence capability
|
||||
* normally exhibited by a domain object to ensure that changes made
|
||||
* during edit mode are not immediately stored to the database or other
|
||||
* backing storage.
|
||||
*/
|
||||
define(
|
||||
function () {
|
||||
'use strict';
|
||||
|
||||
return function EditablePersistenceCapability(
|
||||
persistenceCapability,
|
||||
editableObject,
|
||||
domainObject,
|
||||
cache
|
||||
) {
|
||||
var persistence = Object.create(persistenceCapability);
|
||||
|
||||
// Simply trigger refresh of in-view objects; do not
|
||||
// write anything to database.
|
||||
persistence.persist = function () {
|
||||
cache.markDirty(editableObject);
|
||||
};
|
||||
|
||||
return persistence;
|
||||
};
|
||||
}
|
||||
);
|
55
platform/commonUI/edit/src/capabilities/EditorCapability.js
Normal file
55
platform/commonUI/edit/src/capabilities/EditorCapability.js
Normal file
@ -0,0 +1,55 @@
|
||||
/*global define*/
|
||||
|
||||
/**
|
||||
* Implements "save" and "cancel" as capabilities of
|
||||
* the object. In editing mode, user is seeing/using
|
||||
* a copy of the object (an EditableDomainObject)
|
||||
* which is disconnected from persistence; the Save
|
||||
* and Cancel actions can use this capability to
|
||||
* propagate changes from edit mode to the underlying
|
||||
* actual persistable object.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
'use strict';
|
||||
|
||||
return function EditorCapability(
|
||||
persistenceCapability,
|
||||
editableObject,
|
||||
domainObject,
|
||||
cache
|
||||
) {
|
||||
|
||||
function doMutate() {
|
||||
return domainObject.useCapability('mutation', function () {
|
||||
return editableObject.getModel();
|
||||
});
|
||||
}
|
||||
|
||||
function doPersist() {
|
||||
return persistenceCapability.persist();
|
||||
}
|
||||
|
||||
function saveOthers() {
|
||||
return cache.saveAll();
|
||||
}
|
||||
|
||||
function markClean() {
|
||||
return cache.markClean(editableObject);
|
||||
}
|
||||
|
||||
return {
|
||||
save: function () {
|
||||
return Promise.resolve(doMutate())
|
||||
.then(doPersist)
|
||||
.then(markClean)
|
||||
.then(saveOthers);
|
||||
},
|
||||
cancel: function () {
|
||||
return Promise.resolve(undefined);
|
||||
}
|
||||
};
|
||||
};
|
||||
}
|
||||
);
|
84
platform/commonUI/edit/src/objects/EditableDomainObject.js
Normal file
84
platform/commonUI/edit/src/objects/EditableDomainObject.js
Normal file
@ -0,0 +1,84 @@
|
||||
/*global define*/
|
||||
|
||||
/**
|
||||
* Defines EditableDomainObject, which wraps domain objects
|
||||
* such that user code may work with and mutate a copy of the
|
||||
* domain object model; these changes may then be propagated
|
||||
* up to the real domain object (or not) by way of invoking
|
||||
* save or cancel behaviors of the "editor.completion"
|
||||
* capability (a capability intended as internal to edit
|
||||
* mode; invoked by way of the Save and Cancel actions.)
|
||||
*/
|
||||
define(
|
||||
[
|
||||
'../capabilities/EditablePersistenceCapability',
|
||||
'../capabilities/EditableContextCapability',
|
||||
'../capabilities/EditorCapability',
|
||||
'./EditableDomainObjectCache'
|
||||
],
|
||||
function (
|
||||
EditablePersistenceCapability,
|
||||
EditableContextCapability,
|
||||
EditorCapability,
|
||||
EditableDomainObjectCache
|
||||
) {
|
||||
"use strict";
|
||||
|
||||
var capabilityFactories = {
|
||||
persistence: EditablePersistenceCapability,
|
||||
context: EditableContextCapability,
|
||||
composition: EditableContextCapability,
|
||||
editor: EditorCapability
|
||||
};
|
||||
|
||||
// Handle special case where "editor.completion" wraps persistence
|
||||
// (other capability overrides wrap capabilities of the same type.)
|
||||
function getDelegateArguments(name, args) {
|
||||
return name === "editor" ? ['persistence'] : args;
|
||||
}
|
||||
|
||||
/**
|
||||
* An EditableDomainObject overrides capabilities
|
||||
* which need to behave differently in edit mode,
|
||||
* and provides a "working copy" of the object's
|
||||
* model to allow changes to be easily cancelled.
|
||||
*/
|
||||
function EditableDomainObject(domainObject) {
|
||||
// The cache will hold all domain objects reached from
|
||||
// the initial EditableDomainObject; this ensures that
|
||||
// different versions of the same editable domain object
|
||||
// are not shown in different sections of the same Edit
|
||||
// UI, which might thereby fall out of sync.
|
||||
var cache;
|
||||
|
||||
// Constructor for EditableDomainObject, which adheres
|
||||
// to the same shared cache.
|
||||
function EditableDomainObjectImpl(domainObject) {
|
||||
var model = JSON.parse(JSON.stringify(domainObject.getModel())),
|
||||
editableObject = Object.create(domainObject);
|
||||
|
||||
// Only provide the cloned model.
|
||||
editableObject.getModel = function () { return model; };
|
||||
|
||||
// Override certain capabilities
|
||||
editableObject.getCapability = function (name) {
|
||||
var delegateArguments = getDelegateArguments(name, arguments),
|
||||
capability = domainObject.getCapability.apply(this, delegateArguments),
|
||||
factory = capabilityFactories[name];
|
||||
|
||||
return (factory && capability) ?
|
||||
factory(capability, editableObject, domainObject, cache) :
|
||||
capability;
|
||||
};
|
||||
|
||||
return editableObject;
|
||||
}
|
||||
|
||||
cache = new EditableDomainObjectCache(EditableDomainObjectImpl);
|
||||
|
||||
return cache.getEditableObject(domainObject);
|
||||
}
|
||||
|
||||
return EditableDomainObject;
|
||||
}
|
||||
);
|
102
platform/commonUI/edit/src/objects/EditableDomainObjectCache.js
Normal file
102
platform/commonUI/edit/src/objects/EditableDomainObjectCache.js
Normal file
@ -0,0 +1,102 @@
|
||||
/*global define*/
|
||||
|
||||
|
||||
/**
|
||||
* An editable domain object cache stores domain objects that have been
|
||||
* made editable, in a group that can be saved all-at-once. This supports
|
||||
* Edit mode, which is launched for a specific object but may contain
|
||||
* changes across many objects.
|
||||
*
|
||||
* Editable domain objects have certain specific capabilities overridden
|
||||
* to ensure that changes made while in edit mode do not propagate up
|
||||
* to the objects used in browse mode (or to persistence) until the user
|
||||
* initiates a Save.
|
||||
*
|
||||
* @module editor/object/editable-domain-object-cache
|
||||
*/
|
||||
define(
|
||||
function () {
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Construct a new cache for editable domain objects. This can be used
|
||||
* to get-or-create editable objects, particularly to support wrapping
|
||||
* of objects retrieved via composition or context capabilities as
|
||||
* editable domain objects.
|
||||
*
|
||||
* @param {Constructor<EditableDomainObject>} EditableDomainObject a
|
||||
* constructor function which takes a regular domain object as
|
||||
* an argument, and returns an editable domain object as its
|
||||
* result.
|
||||
* @constructor
|
||||
* @memberof module:editor/object/editable-domain-object-cache
|
||||
*/
|
||||
function EditableDomainObjectCache(EditableDomainObject) {
|
||||
var cache = {},
|
||||
dirty = {};
|
||||
|
||||
return {
|
||||
/**
|
||||
* Wrap this domain object in an editable form, or pull such
|
||||
* an object from the cache if one already exists.
|
||||
*
|
||||
* @param {DomainObject} domainObject the regular domain object
|
||||
* @returns {DomainObject} the domain object in an editable form
|
||||
*/
|
||||
getEditableObject: function (domainObject) {
|
||||
var id = domainObject.getId();
|
||||
return (cache[id] =
|
||||
cache[id] || new EditableDomainObject(domainObject));
|
||||
},
|
||||
/**
|
||||
* Mark an editable domain object (presumably already cached)
|
||||
* as having received modifications during editing; it should be
|
||||
* included in the bulk save invoked when editing completes.
|
||||
*
|
||||
* @param {DomainObject} domainObject the domain object
|
||||
*/
|
||||
markDirty: function (domainObject) {
|
||||
dirty[domainObject.getId()] = domainObject;
|
||||
},
|
||||
/**
|
||||
* Mark an object (presumably already cached) as having had its
|
||||
* changes saved (and thus no longer needing to be subject to a
|
||||
* save operation.)
|
||||
*
|
||||
* @param {DomainObject} domainObject the domain object
|
||||
*/
|
||||
markClean: function (domainObject) {
|
||||
delete dirty[domainObject.getId()];
|
||||
},
|
||||
/**
|
||||
* Initiate a save on all objects that have been cached.
|
||||
*/
|
||||
saveAll: function () {
|
||||
var object;
|
||||
|
||||
// Most save logic is handled by the "editor.completion"
|
||||
// capability, but this in turn will typically invoke
|
||||
// Save All. An infinite loop is avoided by marking
|
||||
// objects as clean as we go.
|
||||
|
||||
function doSave(editCapability) {
|
||||
return editCapability.save();
|
||||
}
|
||||
|
||||
while (Object.keys(dirty).length > 0) {
|
||||
// Pick the first dirty object
|
||||
object = dirty[Object.keys(dirty)[0]];
|
||||
|
||||
// Mark non-dirty to avoid successive invocations
|
||||
this.markClean(object);
|
||||
|
||||
// Invoke its save behavior
|
||||
object.getCapability('editor.completion').then(doSave);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return EditableDomainObjectCache;
|
||||
}
|
||||
);
|
94
platform/commonUI/general/bundle.json
Normal file
94
platform/commonUI/general/bundle.json
Normal file
@ -0,0 +1,94 @@
|
||||
{
|
||||
"name": "General UI elements",
|
||||
"description": "General UI elements, meant to be reused across modes.",
|
||||
"resources": "res",
|
||||
"extensions": {
|
||||
"templates": [
|
||||
{
|
||||
"key": "bottombar",
|
||||
"templateUrl": "templates/bottombar.html"
|
||||
},
|
||||
{
|
||||
"key": "switcher",
|
||||
"templateUrl": "templates/controls/switcher.html"
|
||||
},
|
||||
{
|
||||
"key": "action-button",
|
||||
"templateUrl": "templates/controls/action-button.html"
|
||||
}
|
||||
],
|
||||
"controllers": [
|
||||
{
|
||||
"key": "TreeNodeController",
|
||||
"implementation": "TreeNodeController.js",
|
||||
"depends": [ "$scope", "navigationService" ]
|
||||
},
|
||||
{
|
||||
"key": "ActionGroupController",
|
||||
"implementation": "ActionGroupController.js",
|
||||
"depends": [ "$scope" ]
|
||||
},
|
||||
{
|
||||
"key": "AccordionController",
|
||||
"implementation": "AccordionController.js"
|
||||
},
|
||||
{
|
||||
"key": "ContextMenuController",
|
||||
"implementation": "ContextMenuController.js",
|
||||
"depends": [ "$scope" ]
|
||||
}
|
||||
],
|
||||
"directives": [
|
||||
{
|
||||
"key": "mctContainer",
|
||||
"implementation": "MCTContainer.js",
|
||||
"depends": [ "containers[]" ]
|
||||
}
|
||||
],
|
||||
"containers": [
|
||||
{
|
||||
"key": "accordion",
|
||||
"templateUrl": "templates/containers/accordion.html",
|
||||
"attributes": [ "title" ]
|
||||
}
|
||||
],
|
||||
"representations": [
|
||||
{
|
||||
"key": "tree",
|
||||
"templateUrl": "templates/tree.html",
|
||||
"uses": [ "composition" ]
|
||||
},
|
||||
{
|
||||
"key": "test",
|
||||
"templateUrl": "templates/test.html"
|
||||
},
|
||||
{
|
||||
"key": "tree-item",
|
||||
"templateUrl": "templates/tree-item.html",
|
||||
"uses": [ "action" ]
|
||||
},
|
||||
{
|
||||
"key": "label",
|
||||
"templateUrl": "templates/label.html",
|
||||
"uses": [ "type" ],
|
||||
"gestures": [ "drag", "menu" ]
|
||||
},
|
||||
{
|
||||
"key": "node",
|
||||
"templateUrl": "templates/label.html",
|
||||
"uses": [ "type" ],
|
||||
"gestures": [ "drag", "menu" ]
|
||||
},
|
||||
{
|
||||
"key": "action-group",
|
||||
"templateUrl": "templates/controls/action-group.html",
|
||||
"uses": [ "action" ]
|
||||
},
|
||||
{
|
||||
"key": "context-menu",
|
||||
"templateUrl": "templates/menu/context-menu.html",
|
||||
"uses": [ "action" ]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
333
platform/commonUI/general/res/css/forms.css
Normal file
333
platform/commonUI/general/res/css/forms.css
Normal file
@ -0,0 +1,333 @@
|
||||
/* line 2, ../sass/forms/_elems.scss */
|
||||
.form .section-header {
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
background: rgba(255, 255, 255, 0.1);
|
||||
font-size: 0.8em;
|
||||
margin-top: 5px;
|
||||
padding: 5px; }
|
||||
/* line 8, ../sass/forms/_elems.scss */
|
||||
.form .section-header:first-child {
|
||||
margin-top: 0; }
|
||||
/* line 12, ../sass/forms/_elems.scss */
|
||||
.form .form-section {
|
||||
position: relative; }
|
||||
/* line 16, ../sass/forms/_elems.scss */
|
||||
.form .form-row {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
border-top: 1px solid #4d4d4d;
|
||||
margin-top: 5px;
|
||||
padding: 5px;
|
||||
position: relative; }
|
||||
/* line 25, ../sass/forms/_elems.scss */
|
||||
.form .form-row:first-child {
|
||||
border-top: none; }
|
||||
/* line 29, ../sass/forms/_elems.scss */
|
||||
.form .form-row .label,
|
||||
.form .form-row .controls {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
box-sizing: border-box;
|
||||
font-size: 0.75rem;
|
||||
line-height: 22px;
|
||||
min-height: 22px; }
|
||||
/* line 39, ../sass/forms/_elems.scss */
|
||||
.form .form-row > .label {
|
||||
float: left;
|
||||
position: relative;
|
||||
white-space: nowrap;
|
||||
width: 20%; }
|
||||
/* line 47, ../sass/forms/_elems.scss */
|
||||
.form .form-row .value {
|
||||
color: #cccccc; }
|
||||
/* line 51, ../sass/forms/_elems.scss */
|
||||
.form .form-row .controls {
|
||||
float: left;
|
||||
position: relative;
|
||||
width: 79%; }
|
||||
/* line 58, ../sass/forms/_elems.scss */
|
||||
.form .form-row .field-hints {
|
||||
color: #666666; }
|
||||
/* line 62, ../sass/forms/_elems.scss */
|
||||
.form .form-row .selector-list {
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
background: rgba(0, 0, 0, 0.2);
|
||||
position: relative;
|
||||
height: 150px;
|
||||
max-width: 50%; }
|
||||
/* line 70, ../sass/forms/_elems.scss */
|
||||
.form .form-row .selector-list .wrapper {
|
||||
overflow-y: auto;
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 5px;
|
||||
bottom: 5px;
|
||||
left: 5px; }
|
||||
|
||||
/* line 84, ../sass/forms/_elems.scss */
|
||||
label.form-control.checkbox input {
|
||||
margin-right: 5px;
|
||||
vertical-align: top; }
|
||||
|
||||
/* line 90, ../sass/forms/_elems.scss */
|
||||
.hint {
|
||||
font-size: 0.9em; }
|
||||
|
||||
/* line 1, ../sass/forms/_textarea.scss */
|
||||
.edit-main textarea {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
-moz-box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
background: #666666;
|
||||
border: none;
|
||||
border-bottom: 1px solid #999999;
|
||||
color: #cccccc;
|
||||
outline: none;
|
||||
padding: 5px;
|
||||
position: absolute;
|
||||
height: 100%;
|
||||
width: 100%; }
|
||||
/* line 11, ../sass/forms/_mixins.scss */
|
||||
.edit-main textarea.error {
|
||||
background: rgba(255, 0, 0, 0.5); }
|
||||
|
||||
/* line 1, ../sass/forms/_text-input.scss */
|
||||
input[type="text"] {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
-moz-box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
background: #666666;
|
||||
border: none;
|
||||
border-bottom: 1px solid #999999;
|
||||
color: #cccccc;
|
||||
outline: none;
|
||||
padding: 0 3px;
|
||||
height: 22px;
|
||||
line-height: 22px;
|
||||
vertical-align: middle; }
|
||||
/* line 11, ../sass/forms/_mixins.scss */
|
||||
input[type="text"].error {
|
||||
background: rgba(255, 0, 0, 0.5); }
|
||||
/* line 6, ../sass/forms/_text-input.scss */
|
||||
input[type="text"].numeric {
|
||||
text-align: right; }
|
||||
|
||||
/* line 1, ../sass/forms/_selects.scss */
|
||||
.form-control.select {
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #4d4d4d), color-stop(100%, #404040));
|
||||
background-image: -webkit-linear-gradient(#4d4d4d, #404040);
|
||||
background-image: -moz-linear-gradient(#4d4d4d, #404040);
|
||||
background-image: -o-linear-gradient(#4d4d4d, #404040);
|
||||
background-image: linear-gradient(#4d4d4d, #404040);
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-shadow: rgba(0, 0, 0, 0.3) 0 1px 3px;
|
||||
-moz-box-shadow: rgba(0, 0, 0, 0.3) 0 1px 3px;
|
||||
box-shadow: rgba(0, 0, 0, 0.3) 0 1px 3px;
|
||||
border-top: 1px solid #666666;
|
||||
color: #999999;
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
margin-top: 1px;
|
||||
padding: 0 25px 0 0;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
vertical-align: middle; }
|
||||
/* line 82, ../sass/_mixins.scss */
|
||||
.form-control.select:not(.disabled):hover {
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #666666), color-stop(100%, #4d4d4d));
|
||||
background-image: -webkit-linear-gradient(#666666, #4d4d4d);
|
||||
background-image: -moz-linear-gradient(#666666, #4d4d4d);
|
||||
background-image: -o-linear-gradient(#666666, #4d4d4d);
|
||||
background-image: linear-gradient(#666666, #4d4d4d); }
|
||||
/* line 11, ../sass/forms/_selects.scss */
|
||||
.form-control.select span.arw {
|
||||
display: block;
|
||||
pointer-events: none;
|
||||
position: absolute;
|
||||
right: 8%;
|
||||
top: 10%; }
|
||||
/* line 18, ../sass/forms/_selects.scss */
|
||||
.form-control.select select {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
border: none;
|
||||
box-shadow: none;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
cursor: pointer;
|
||||
padding: 3px 5px 4px 5px;
|
||||
width: 150%; }
|
||||
/* line 32, ../sass/forms/_selects.scss */
|
||||
.form-control.select select:focus {
|
||||
outline: none; }
|
||||
|
||||
/* line 2, ../sass/forms/_channel-selector.scss */
|
||||
.channel-selector .line {
|
||||
margin-bottom: 5px;
|
||||
min-height: 22px; }
|
||||
/* line 6, ../sass/forms/_channel-selector.scss */
|
||||
.channel-selector .treeview {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
-moz-box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
background: #666666;
|
||||
border: none;
|
||||
border-bottom: 1px solid #999999;
|
||||
color: #cccccc;
|
||||
outline: none;
|
||||
padding: 0 3px;
|
||||
background: #3b3b3b;
|
||||
border-bottom: 1px solid #4d4d4d;
|
||||
min-height: 300px;
|
||||
max-height: 400px;
|
||||
overflow: auto;
|
||||
padding: 5px; }
|
||||
/* line 11, ../sass/forms/_mixins.scss */
|
||||
.channel-selector .treeview.error {
|
||||
background: rgba(255, 0, 0, 0.5); }
|
||||
/* line 15, ../sass/forms/_channel-selector.scss */
|
||||
.channel-selector .btns-add-remove {
|
||||
margin-top: 150px; }
|
||||
/* line 18, ../sass/forms/_channel-selector.scss */
|
||||
.channel-selector .btns-add-remove .btn {
|
||||
display: block;
|
||||
font-size: 1.5em;
|
||||
margin-bottom: 5px;
|
||||
padding: 10px;
|
||||
text-align: center; }
|
||||
|
||||
/* line 2, ../sass/forms/_datetime.scss */
|
||||
.complex.datetime span {
|
||||
display: inline-block;
|
||||
margin-right: 5px; }
|
||||
/* line 15, ../sass/forms/_datetime.scss */
|
||||
.complex.datetime .fields {
|
||||
margin-top: 3px 0;
|
||||
padding: 3px 0; }
|
||||
/* line 20, ../sass/forms/_datetime.scss */
|
||||
.complex.datetime .date {
|
||||
width: 85px; }
|
||||
/* line 23, ../sass/forms/_datetime.scss */
|
||||
.complex.datetime .date input {
|
||||
width: 80px; }
|
||||
/* line 29, ../sass/forms/_datetime.scss */
|
||||
.complex.datetime .time.sm {
|
||||
width: 45px; }
|
||||
/* line 32, ../sass/forms/_datetime.scss */
|
||||
.complex.datetime .time.sm input {
|
||||
width: 40px; }
|
||||
|
||||
/* line 2, ../sass/forms/_filter.scss */
|
||||
.filter input.filter {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
appearance: none;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
-moz-box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
box-shadow: inset rgba(0, 0, 0, 0.5) 0 1px 5px;
|
||||
background: #666666;
|
||||
border: none;
|
||||
border-bottom: 1px solid #999999;
|
||||
color: #cccccc;
|
||||
outline: none;
|
||||
padding: 0 3px;
|
||||
background: #3b3b3b;
|
||||
border-bottom: 1px solid #4d4d4d; }
|
||||
/* line 11, ../sass/forms/_mixins.scss */
|
||||
.filter input.filter.error {
|
||||
background: rgba(255, 0, 0, 0.5); }
|
||||
/* line 5, ../sass/forms/_filter.scss */
|
||||
.filter .icon.ui-symbol {
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
display: inline-block;
|
||||
font-size: 1.3em;
|
||||
height: 22px;
|
||||
line-height: 22px;
|
||||
padding: 0px 5px;
|
||||
vertical-align: middle; }
|
||||
/* line 13, ../sass/forms/_filter.scss */
|
||||
.filter .icon.ui-symbol:hover {
|
||||
background: rgba(255, 255, 255, 0.1); }
|
||||
|
||||
/* line 20, ../sass/forms/_filter.scss */
|
||||
.top-bar input.filter {
|
||||
font-size: .8em;
|
||||
height: 35px;
|
||||
line-height: 35px;
|
||||
margin-right: 5px;
|
||||
margin-top: -5px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px; }
|
||||
/* line 31, ../sass/forms/_filter.scss */
|
||||
.top-bar .icon-filter {
|
||||
font-size: 1.4em; }
|
136
platform/commonUI/general/res/css/items.css
Normal file
136
platform/commonUI/general/res/css/items.css
Normal file
@ -0,0 +1,136 @@
|
||||
/* line 1, ../sass/items/_item.scss */
|
||||
.items-holder {
|
||||
overflow: hidden;
|
||||
*zoom: 1;
|
||||
overflow-y: auto; }
|
||||
/* line 5, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item {
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #595959), color-stop(100%, #4d4d4d));
|
||||
background-image: -webkit-linear-gradient(#595959, #4d4d4d);
|
||||
background-image: -moz-linear-gradient(#595959, #4d4d4d);
|
||||
background-image: -o-linear-gradient(#595959, #4d4d4d);
|
||||
background-image: linear-gradient(#595959, #4d4d4d);
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-shadow: rgba(0, 0, 0, 0.3) 0 1px 3px;
|
||||
-moz-box-shadow: rgba(0, 0, 0, 0.3) 0 1px 3px;
|
||||
box-shadow: rgba(0, 0, 0, 0.3) 0 1px 3px;
|
||||
border-top: 1px solid #737373;
|
||||
color: #999999;
|
||||
display: inline-block;
|
||||
box-sizing: border-box;
|
||||
cursor: pointer;
|
||||
float: left;
|
||||
height: 200px;
|
||||
width: 200px;
|
||||
margin-bottom: 3px;
|
||||
margin-right: 3px;
|
||||
position: relative; }
|
||||
/* line 82, ../sass/_mixins.scss */
|
||||
.items-holder .item.grid-item:not(.disabled):hover {
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #737373), color-stop(100%, #595959));
|
||||
background-image: -webkit-linear-gradient(#737373, #595959);
|
||||
background-image: -moz-linear-gradient(#737373, #595959);
|
||||
background-image: -o-linear-gradient(#737373, #595959);
|
||||
background-image: linear-gradient(#737373, #595959); }
|
||||
/* line 18, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item:hover .item-main .item-type {
|
||||
color: #0099cc !important; }
|
||||
/* line 21, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item:hover .item-main .item-open {
|
||||
display: block; }
|
||||
/* line 26, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item .bar.top-bar.abs {
|
||||
bottom: auto;
|
||||
height: 20px;
|
||||
line-height: 20px;
|
||||
z-index: 5; }
|
||||
/* line 31, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item .bar.top-bar.abs .left, .items-holder .item.grid-item .bar.top-bar.abs .right {
|
||||
width: auto; }
|
||||
/* line 33, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item .bar.top-bar.abs .left .icon, .items-holder .item.grid-item .bar.top-bar.abs .right .icon {
|
||||
margin-left: 5px; }
|
||||
/* line 38, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item .bar.bottom-bar.abs {
|
||||
top: auto;
|
||||
height: 40px;
|
||||
padding: 5px; }
|
||||
/* line 44, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item .item-main {
|
||||
z-index: 1; }
|
||||
/* line 52, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item .item-main .item-type {
|
||||
color: #737373;
|
||||
text-align: center;
|
||||
font-size: 7em;
|
||||
line-height: 180px; }
|
||||
/* line 58, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item .item-main .item-open {
|
||||
display: none;
|
||||
font-size: 5em;
|
||||
line-height: 180px;
|
||||
left: auto;
|
||||
width: 30px; }
|
||||
/* line 66, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item .title {
|
||||
text-shadow: rgba(0, 0, 0, 0.1) 0 1px 2px;
|
||||
color: #cccccc;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis; }
|
||||
/* line 74, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item .details {
|
||||
font-size: 0.8em; }
|
||||
/* line 77, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item.selected {
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #00bfff), color-stop(100%, #00ace6));
|
||||
background-image: -webkit-linear-gradient(#00bfff, #00ace6);
|
||||
background-image: -moz-linear-gradient(#00bfff, #00ace6);
|
||||
background-image: -o-linear-gradient(#00bfff, #00ace6);
|
||||
background-image: linear-gradient(#00bfff, #00ace6);
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-box-shadow: rgba(0, 0, 0, 0.3) 0 1px 3px;
|
||||
-moz-box-shadow: rgba(0, 0, 0, 0.3) 0 1px 3px;
|
||||
box-shadow: rgba(0, 0, 0, 0.3) 0 1px 3px;
|
||||
border-top: 1px solid #33ccff;
|
||||
color: #999999;
|
||||
display: inline-block;
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #33ccff), color-stop(100%, #0099cc));
|
||||
background-image: -webkit-linear-gradient(#33ccff, #0099cc);
|
||||
background-image: -moz-linear-gradient(#33ccff, #0099cc);
|
||||
background-image: -o-linear-gradient(#33ccff, #0099cc);
|
||||
background-image: linear-gradient(#33ccff, #0099cc);
|
||||
color: #80dfff; }
|
||||
/* line 90, ../sass/_mixins.scss */
|
||||
.items-holder .item.grid-item.selected:not(.disabled):hover {
|
||||
background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #66d9ff), color-stop(100%, #00bfff));
|
||||
background-image: -webkit-linear-gradient(#66d9ff, #00bfff);
|
||||
background-image: -moz-linear-gradient(#66d9ff, #00bfff);
|
||||
background-image: -o-linear-gradient(#66d9ff, #00bfff);
|
||||
background-image: linear-gradient(#66d9ff, #00bfff); }
|
||||
/* line 82, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item.selected .item-type, .items-holder .item.grid-item.selected .top-bar .icon:not(.alert) {
|
||||
color: #80dfff; }
|
||||
/* line 83, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item.selected .item-main .item-open {
|
||||
color: #80dfff; }
|
||||
/* line 84, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item.selected .title {
|
||||
color: white; }
|
||||
/* line 86, ../sass/items/_item.scss */
|
||||
.items-holder .item.grid-item.selected:hover .item-main .item-type {
|
||||
color: white !important; }
|
99
platform/commonUI/general/res/css/main.css
Normal file
99
platform/commonUI/general/res/css/main.css
Normal file
@ -0,0 +1,99 @@
|
||||
/*
|
||||
Syntax error: Undefined variable: "$colorBodyBg".
|
||||
on line 66 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss, in `boxOutline'
|
||||
from line 7 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss
|
||||
from line 10 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/main.scss
|
||||
|
||||
Backtrace:
|
||||
/Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss:66:in `boxOutline'
|
||||
/Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss:7
|
||||
/Users/iMac/dev/nasa/wtd-dev/platform/sass/main.scss:10
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/variable.rb:49:in `_perform'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/node.rb:40:in `perform'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/funcall.rb:93:in `_perform'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/funcall.rb:93:in `map'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/funcall.rb:93:in `_perform'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/node.rb:40:in `perform'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:56:in `perform_arguments'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:50:in `zip'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:50:in `perform_arguments'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:261:in `visit_mixin'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `send'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:98:in `visit'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `visit_children'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `map'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `visit_children'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:107:in `visit_children'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:119:in `with_environment'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:106:in `visit_children'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:318:in `visit_rule'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `send'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:98:in `visit'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:225:in `visit_import'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:225:in `map'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:225:in `visit_import'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `send'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:98:in `visit'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `visit_children'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `map'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `visit_children'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:107:in `visit_children'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:119:in `with_environment'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:106:in `visit_children'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:126:in `visit_root'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `send'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:98:in `visit'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:7:in `send'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:7:in `visit'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/root_node.rb:20:in `render'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/engine.rb:315:in `_render'
|
||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/engine.rb:262:in `render'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:140:in `compile'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:126:in `timed'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:139:in `compile'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/logger.rb:45:in `red'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:138:in `compile'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:118:in `compile_if_required'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:103:in `run'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:101:in `each'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:101:in `run'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:126:in `timed'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:100:in `run'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/commands/watch_project.rb:147:in `recompile'
|
||||
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in `to_proc'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/path.rb:73:in `call'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/path.rb:73:in `run_callback'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/path.rb:55:in `callback_action'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/path.rb:35:in `update'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/state/directory.rb:39:in `modified'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/state/directory.rb:37:in `each'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/state/directory.rb:37:in `modified'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/state/directory.rb:18:in `refresh'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:17:in `run'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:17:in `each'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:17:in `run'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:15:in `loop'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:15:in `run'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/monitor.rb:26:in `run'
|
||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm.rb:70:in `monitor'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/commands/watch_project.rb:87:in `perform'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/commands/base.rb:18:in `execute'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/commands/project_base.rb:19:in `execute'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/exec/sub_command_ui.rb:43:in `perform!'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/exec/sub_command_ui.rb:15:in `run!'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/bin/compass:30
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/bin/compass:44:in `call'
|
||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/bin/compass:44
|
||||
/usr/bin/compass:23:in `load'
|
||||
/usr/bin/compass:23
|
||||
*/
|
||||
body:before {
|
||||
white-space: pre;
|
||||
font-family: monospace;
|
||||
content: "Syntax error: Undefined variable: \"$colorBodyBg\".\A on line 66 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss, in `boxOutline'\A from line 7 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss\A from line 10 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/main.scss"; }
|
1
platform/commonUI/general/res/css/normalize.min.css
vendored
Executable file
1
platform/commonUI/general/res/css/normalize.min.css
vendored
Executable file
@ -0,0 +1 @@
|
||||
/*! normalize.css v1.1.2 | MIT License | git.io/normalize */article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block}audio,canvas,video{display:inline-block;*display:inline;*zoom:1}audio:not([controls]){display:none;height:0}[hidden]{display:none}html{font-size:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}html,button,input,select,textarea{font-family:sans-serif}body{margin:0}a:focus{outline:thin dotted}a:active,a:hover{outline:0}h1{font-size:2em;margin:.67em 0}h2{font-size:1.5em;margin:.83em 0}h3{font-size:1.17em;margin:1em 0}h4{font-size:1em;margin:1.33em 0}h5{font-size:.83em;margin:1.67em 0}h6{font-size:.67em;margin:2.33em 0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}blockquote{margin:1em 40px}dfn{font-style:italic}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}mark{background:#ff0;color:#000}p,pre{margin:1em 0}code,kbd,pre,samp{font-family:monospace,serif;_font-family:'courier new',monospace;font-size:1em}pre{white-space:pre;white-space:pre-wrap;word-wrap:break-word}q{quotes:none}q:before,q:after{content:'';content:none}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}dl,menu,ol,ul{margin:1em 0}dd{margin:0 0 0 40px}menu,ol,ul{padding:0 0 0 40px}nav ul,nav ol{list-style:none;list-style-image:none}img{border:0;-ms-interpolation-mode:bicubic}svg:not(:root){overflow:hidden}figure{margin:0}form{margin:0}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0;white-space:normal;*margin-left:-7px}button,input,select,textarea{font-size:100%;margin:0;vertical-align:baseline;*vertical-align:middle}button,input{line-height:normal}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer;*overflow:visible}button[disabled],html input[disabled]{cursor:default}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0;*height:13px;*width:13px}input[type="search"]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}textarea{overflow:auto;vertical-align:top}table{border-collapse:collapse;border-spacing:0}
|
205
platform/commonUI/general/res/css/plots.css
Normal file
205
platform/commonUI/general/res/css/plots.css
Normal file
@ -0,0 +1,205 @@
|
||||
/* line 10, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot {
|
||||
color: #999999;
|
||||
font-size: 0.7rem;
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 100%; }
|
||||
/* line 17, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-axis-area {
|
||||
position: absolute; }
|
||||
/* line 20, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-axis-area.gl-plot-x {
|
||||
top: auto;
|
||||
right: 0;
|
||||
bottom: 5px;
|
||||
left: 60px;
|
||||
height: 32px;
|
||||
width: auto;
|
||||
overflow: hidden; }
|
||||
/* line 29, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-axis-area.gl-plot-y {
|
||||
top: 29px;
|
||||
right: auto;
|
||||
bottom: 37px;
|
||||
left: 0;
|
||||
width: 60px; }
|
||||
/* line 38, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-coords {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
background: rgba(255, 199, 0, 0.5);
|
||||
color: #e6e6e6;
|
||||
padding: 2px 5px;
|
||||
position: absolute;
|
||||
top: 39px;
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
left: 70px;
|
||||
z-index: 10; }
|
||||
/* line 50, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-coords:empty {
|
||||
display: none; }
|
||||
/* line 55, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-display-area {
|
||||
position: absolute;
|
||||
top: 29px;
|
||||
right: 0;
|
||||
bottom: 37px;
|
||||
left: 60px;
|
||||
cursor: crosshair;
|
||||
border: 1px solid #4d4d4d; }
|
||||
/* line 65, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-label {
|
||||
color: #cccccc;
|
||||
position: absolute;
|
||||
text-align: center; }
|
||||
/* line 72, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-label.gl-plot-x-label {
|
||||
top: auto;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
height: auto; }
|
||||
/* line 80, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-label.gl-plot-y-label {
|
||||
-webkit-transform-origin: 50% 0;
|
||||
-moz-transform-origin: 50% 0;
|
||||
-ms-transform-origin: 50% 0;
|
||||
-o-transform-origin: 50% 0;
|
||||
transform-origin: 50% 0;
|
||||
-webkit-transform: translateX(-50%) rotate(-90deg);
|
||||
-moz-transform: translateX(-50%) rotate(-90deg);
|
||||
-ms-transform: translateX(-50%) rotate(-90deg);
|
||||
-o-transform: translateX(-50%) rotate(-90deg);
|
||||
transform: translateX(-50%) rotate(-90deg);
|
||||
display: inline-block;
|
||||
margin-left: 5px;
|
||||
left: 0;
|
||||
top: 50%;
|
||||
white-space: nowrap; }
|
||||
/* line 93, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-y-options {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
left: auto5px;
|
||||
margin-top: -16px;
|
||||
height: auto;
|
||||
min-height: 32px;
|
||||
width: 32px; }
|
||||
/* line 107, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-hash {
|
||||
position: absolute;
|
||||
border: 0 rgba(255, 255, 255, 0.3) dashed; }
|
||||
/* line 110, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-hash.hash-v {
|
||||
border-right-width: 1px;
|
||||
height: 100%; }
|
||||
/* line 114, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-hash.hash-h {
|
||||
border-bottom-width: 1px;
|
||||
width: 100%; }
|
||||
/* line 120, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot .gl-plot-legend {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
bottom: auto;
|
||||
left: 0;
|
||||
height: 24px;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto; }
|
||||
|
||||
/* line 148, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot-legend .plot-legend-item,
|
||||
.gl-plot-legend .legend-item,
|
||||
.legend .plot-legend-item,
|
||||
.legend .legend-item {
|
||||
display: inline-block;
|
||||
margin-right: 10px; }
|
||||
/* line 151, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot-legend .plot-legend-item span,
|
||||
.gl-plot-legend .legend-item span,
|
||||
.legend .plot-legend-item span,
|
||||
.legend .legend-item span {
|
||||
vertical-align: middle; }
|
||||
/* line 155, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot-legend .plot-legend-item .plot-color-swatch,
|
||||
.gl-plot-legend .plot-legend-item .color-swatch,
|
||||
.gl-plot-legend .legend-item .plot-color-swatch,
|
||||
.gl-plot-legend .legend-item .color-swatch,
|
||||
.legend .plot-legend-item .plot-color-swatch,
|
||||
.legend .plot-legend-item .color-swatch,
|
||||
.legend .legend-item .plot-color-swatch,
|
||||
.legend .legend-item .color-swatch {
|
||||
-webkit-border-radius: 2px;
|
||||
-moz-border-radius: 2px;
|
||||
-ms-border-radius: 2px;
|
||||
-o-border-radius: 2px;
|
||||
border-radius: 2px;
|
||||
display: inline-block;
|
||||
height: 8px;
|
||||
width: 8px;
|
||||
margin-right: 3px; }
|
||||
|
||||
/* line 169, ../sass/plots/_plots-main.scss */
|
||||
.tick {
|
||||
position: absolute;
|
||||
border: 0 rgba(255, 255, 255, 0.3) solid; }
|
||||
/* line 172, ../sass/plots/_plots-main.scss */
|
||||
.tick.tick-x {
|
||||
border-right-width: 1px;
|
||||
height: 100%; }
|
||||
|
||||
/* line 180, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot-tick,
|
||||
.tick-label {
|
||||
font-size: 0.7rem;
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis; }
|
||||
/* line 188, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot-tick.gl-plot-x-tick-label, .gl-plot-tick.tick-label-x,
|
||||
.tick-label.gl-plot-x-tick-label,
|
||||
.tick-label.tick-label-x {
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
left: auto;
|
||||
height: auto;
|
||||
width: 20%;
|
||||
margin-left: -10%;
|
||||
text-align: center; }
|
||||
/* line 198, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot-tick.gl-plot-y-tick-label, .gl-plot-tick.tick-label-y,
|
||||
.tick-label.gl-plot-y-tick-label,
|
||||
.tick-label.tick-label-y {
|
||||
top: auto;
|
||||
height: 1em;
|
||||
width: auto;
|
||||
margin-bottom: -0.5em;
|
||||
text-align: right; }
|
||||
|
||||
/* line 209, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot-tick.gl-plot-x-tick-label {
|
||||
top: 5px; }
|
||||
/* line 212, ../sass/plots/_plots-main.scss */
|
||||
.gl-plot-tick.gl-plot-y-tick-label {
|
||||
right: 5px;
|
||||
left: 5px; }
|
||||
|
||||
/* line 219, ../sass/plots/_plots-main.scss */
|
||||
.tick-label.tick-label-x {
|
||||
top: 0; }
|
||||
/* line 222, ../sass/plots/_plots-main.scss */
|
||||
.tick-label.tick-label-y {
|
||||
right: 0;
|
||||
left: 0; }
|
2475
platform/commonUI/general/res/css/theme-espresso.css
Normal file
2475
platform/commonUI/general/res/css/theme-espresso.css
Normal file
File diff suppressed because it is too large
Load Diff
102
platform/commonUI/general/res/css/tree.css
Normal file
102
platform/commonUI/general/res/css/tree.css
Normal file
@ -0,0 +1,102 @@
|
||||
/* line 1, ../sass/tree/_tree.scss */
|
||||
ul.tree {
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
/* line 131, ../sass/_mixins.scss */
|
||||
ul.tree li {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 0; }
|
||||
/* line 4, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item {
|
||||
-webkit-border-radius: 3px;
|
||||
-moz-border-radius: 3px;
|
||||
-ms-border-radius: 3px;
|
||||
-o-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
-webkit-transition: background-color 0.25s;
|
||||
-moz-transition: background-color 0.25s;
|
||||
-o-transition: background-color 0.25s;
|
||||
transition: background-color 0.25s;
|
||||
display: block;
|
||||
font-size: 0.80rem;
|
||||
height: 1.5rem;
|
||||
line-height: 1.5rem;
|
||||
margin-bottom: 3px;
|
||||
position: relative; }
|
||||
/* line 17, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item.loading {
|
||||
color: #666666;
|
||||
font-style: italic; }
|
||||
/* line 20, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item.loading .wait-spinner {
|
||||
margin-left: 14px; }
|
||||
/* line 24, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item:not(.loading) {
|
||||
cursor: pointer; }
|
||||
/* line 26, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item:not(.loading):hover {
|
||||
background: #404040;
|
||||
color: #cccccc; }
|
||||
/* line 29, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item:not(.loading):hover .context-trigger {
|
||||
display: block; }
|
||||
/* line 32, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item:not(.loading):hover .icon {
|
||||
color: #33ccff; }
|
||||
/* line 37, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item .selected {
|
||||
color: #fff; }
|
||||
/* line 40, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item .view-control {
|
||||
display: inline-block;
|
||||
width: 10px; }
|
||||
/* line 46, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item .view-control:hover {
|
||||
color: #ffc700; }
|
||||
/* line 50, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item .context-trigger {
|
||||
display: none;
|
||||
top: -1px;
|
||||
position: absolute;
|
||||
right: 3px; }
|
||||
/* line 56, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item .context-trigger .btn-invoke-menu {
|
||||
font-size: 0.75em;
|
||||
height: 0.9rem;
|
||||
line-height: 0.9rem; }
|
||||
/* line 62, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item .icon {
|
||||
text-shadow: rgba(0, 0, 0, 0.6) 0 1px 2px;
|
||||
color: #0099cc;
|
||||
left: 15px; }
|
||||
/* line 67, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item .icon .alert {
|
||||
text-shadow: rgba(0, 0, 0, 0.3) 0 1px 2px;
|
||||
background: #333333;
|
||||
color: #ff3c00;
|
||||
font-size: 0.7em;
|
||||
margin-top: -3px;
|
||||
top: 0;
|
||||
right: auto;
|
||||
bottom: auto;
|
||||
left: 9px;
|
||||
height: auto;
|
||||
width: auto;
|
||||
position: absolute;
|
||||
z-index: 2; }
|
||||
/* line 83, ../sass/tree/_tree.scss */
|
||||
ul.tree li .tree-item .title-label {
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 37px;
|
||||
right: 25px;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
height: 1.5rem;
|
||||
bottom: auto;
|
||||
white-space: nowrap; }
|
||||
/* line 98, ../sass/tree/_tree.scss */
|
||||
ul.tree ul.tree {
|
||||
margin-left: 15px; }
|
BIN
platform/commonUI/general/res/fonts/symbols/wtdsymbols.eot
Executable file
BIN
platform/commonUI/general/res/fonts/symbols/wtdsymbols.eot
Executable file
Binary file not shown.
381
platform/commonUI/general/res/fonts/symbols/wtdsymbols.svg
Executable file
381
platform/commonUI/general/res/fonts/symbols/wtdsymbols.svg
Executable file
@ -0,0 +1,381 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata></metadata>
|
||||
<defs>
|
||||
<font id="wtdsymbolsregular" horiz-adv-x="930" >
|
||||
<font-face units-per-em="2048" ascent="1638" descent="-410" />
|
||||
<missing-glyph horiz-adv-x="720" />
|
||||
<glyph horiz-adv-x="2048" />
|
||||
<glyph horiz-adv-x="2048" />
|
||||
<glyph unicode="
" horiz-adv-x="2048" />
|
||||
<glyph unicode=" " horiz-adv-x="720" />
|
||||
<glyph unicode="	" horiz-adv-x="720" />
|
||||
<glyph unicode=" " horiz-adv-x="720" />
|
||||
<glyph unicode="!" horiz-adv-x="1302" d="M0 325v847q0 67 25.5 125.5t70 102.5t103.5 69.5t126 25.5h650q67 0 126.5 -25.5t104 -69.5t70.5 -102.5t26 -125.5v-847q0 -67 -26 -126t-70.5 -103.5t-104 -70t-126.5 -25.5h-650q-67 0 -126 25.5t-103.5 70t-70 103.5t-25.5 126zM439 1294l57 -726q0 -18 14 -28.5 t26 -10.5h222q18 0 28.5 10.5t10.5 28.5l56 726q0 18 -11 28.5t-29 10.5h-333q-20 0 -30.5 -10.5t-10.5 -28.5zM470 222q0 -21 12.5 -33t30.5 -12h276q13 0 26.5 12t13.5 33v129q0 18 -13.5 28.5t-26.5 10.5h-276q-18 0 -30.5 -10.5t-12.5 -28.5v-129z" />
|
||||
<glyph unicode="*" horiz-adv-x="1452" d="M0 499l530 250l-530 252l144 250l485 -340l-47 590h285l-48 -584l486 334l144 -250l-538 -252l538 -250l-144 -249l-486 332l48 -582h-285l47 589l-485 -339z" />
|
||||
<glyph unicode="+" horiz-adv-x="1506" d="M0 611v283q0 35 24 57.5t56 22.5h451v451q0 32 22.5 56t57.5 24h283q35 0 57.5 -24t22.5 -56v-451h451q32 0 56 -22.5t24 -57.5v-283q0 -35 -24 -57.5t-56 -22.5h-451v-451q0 -32 -22.5 -56t-57.5 -24h-283q-35 0 -57.5 24t-22.5 56v451h-451q-32 0 -56 22.5t-24 57.5z " />
|
||||
<glyph unicode="," horiz-adv-x="745" d="M147 -370l174 655h254l-282 -655h-146z" />
|
||||
<glyph unicode="-" d="M153 561v181h624v-181h-624z" />
|
||||
<glyph unicode="." horiz-adv-x="2343" d="M0 670l578 533v-1073zM800 670q0 76 29 143t79 117t116.5 79.5t142.5 29.5q79 0 148 -29.5t120 -79.5t80 -117t29 -143q0 -78 -29 -147t-80 -120t-120 -80.5t-148 -29.5q-76 0 -142.5 29.5t-116.5 80.5t-79 120t-29 147zM1765 130l576 540l-576 533v-1073z" />
|
||||
<glyph unicode="/" d="M-30 -304l714 1860h176l-717 -1860h-173z" />
|
||||
<glyph unicode="0" horiz-adv-x="1096" d="M0 0l544 1277l546 -1277h-1090z" />
|
||||
<glyph unicode="1" horiz-adv-x="1094" d="M0 1276h1090l-544 -1277z" />
|
||||
<glyph unicode="2" horiz-adv-x="1404" d="M0 503v596l503 -497l901 903v-604l-901 -901z" />
|
||||
<glyph unicode="3" horiz-adv-x="1302" d="M167 63v209h15q85 -56 200 -93t222 -37q63 0 134 21t115 62q46 44 68.5 97t22.5 134q0 80 -25.5 132.5t-70.5 82.5q-45 31 -109 42.5t-138 11.5h-90v166h70q152 0 242.5 63.5t90.5 185.5q0 54 -23 94.5t-64 66.5q-43 26 -92 36t-111 10q-95 0 -202 -34t-202 -96h-10v209 q71 35 189.5 64.5t229.5 29.5q109 0 192 -20t150 -64q72 -48 109 -116t37 -159q0 -124 -87.5 -216.5t-206.5 -116.5v-14q48 -8 110 -33.5t105 -63.5q48 -43 79 -108t31 -168q0 -102 -37 -187t-104 -148q-75 -70 -176.5 -103.5t-222.5 -33.5q-124 0 -244 29.5t-197 64.5z" />
|
||||
<glyph unicode="4" horiz-adv-x="1648" d="M0 0v325h699v-325h-699zM0 587v325h699v-325h-699zM0 1174v325h699v-325h-699zM952 0v325h699v-325h-699zM952 587v325h699v-325h-699zM952 1174v325h699v-325h-699z" />
|
||||
<glyph unicode="5" horiz-adv-x="1653" d="M0 636h1653l-825 -636zM0 858l828 636l825 -636h-1653z" />
|
||||
<glyph unicode="6" horiz-adv-x="1651" d="M0 750l9 37l2 2q44 161 88.5 279t91.5 203q55 95 116 150q26 23 51.5 37.5t49 23t44 11.5t36.5 3q34 0 82.5 -14.5t100.5 -60.5q31 -27 59.5 -64.5t56.5 -85.5q47 -85 91.5 -203t88.5 -279q34 -119 64 -202.5t55 -138.5t44 -86t31 -46q11 15 29 43.5t41 79t51 126.5 t60 185h309l-11 -43q-45 -161 -90 -278.5t-92 -202.5q-28 -49 -55.5 -86t-58.5 -65q-27 -23 -52.5 -38t-49 -23t-44 -11t-37.5 -3t-38 3t-44.5 11t-49 23t-51.5 38q-31 28 -59.5 65t-56.5 86q-47 85 -91 202.5t-89 278.5q-34 120 -64 203.5t-54.5 138.5t-43.5 86t-32 45 q-11 -14 -28.5 -42.5t-40.5 -79t-50.5 -126t-58.5 -182.5h-310z" />
|
||||
<glyph unicode="7" horiz-adv-x="1371" d="M0 0v396h396v-396h-396zM0 606v400h396v-400h-396zM0 1217v395h396v-395h-396zM580 114v168h794v-168h-794zM580 725v165h794v-165h-794zM580 1331v168h794v-168h-794z" />
|
||||
<glyph unicode="8" horiz-adv-x="1302" d="M0 0v645h1281v-645h-1281zM0 854v651h1281v-651h-1281z" />
|
||||
<glyph unicode="9" horiz-adv-x="1302" d="M0 0v645h546v-645h-546zM0 851v654h546v-654h-546zM744 0v645h546v-645h-546zM744 851v654h546v-654h-546z" />
|
||||
<glyph unicode=":" horiz-adv-x="1279" d="M0 44v1505h355v-1505h-355zM467 775l812 812v-1625z" />
|
||||
<glyph unicode=";" horiz-adv-x="1278" d="M-1 -39v1625l812 -813zM923 -1v1505h355v-1505h-355z" />
|
||||
<glyph unicode="<" horiz-adv-x="720" d="M0 752l720 753v-1505z" />
|
||||
<glyph unicode="=" horiz-adv-x="1676" d="M245 362v160h1186v-160h-1186zM245 782v160h1186v-160h-1186z" />
|
||||
<glyph unicode=">" horiz-adv-x="723" d="M0 0v1505l720 -755z" />
|
||||
<glyph unicode="?" horiz-adv-x="1117" d="M160 1245v204q70 27 177.5 48.5t203.5 21.5q215 0 339.5 -104.5t124.5 -275.5q0 -98 -35 -174.5t-92 -135.5q-56 -57 -129 -107t-155 -97v-225h-179v305q65 37 140.5 81t123.5 89q58 52 90 107.5t32 141.5q0 113 -76.5 168.5t-197.5 55.5q-108 0 -204.5 -34t-152.5 -69 h-10zM406 0v211h204v-211h-204z" />
|
||||
<glyph unicode="@" horiz-adv-x="2048" d="M176 647q0 185 67 344.5t183 276.5t275 184t340 67q196 0 350 -62t260 -174t162.5 -269.5t56.5 -350.5q0 -139 -40.5 -269t-115.5 -237h-440l-27 116q-74 -60 -142 -92t-156 -32q-168 0 -268.5 127t-100.5 355q0 227 123 362t294 135q73 0 129 -16.5t121 -49.5v48h159 v-842h243q42 75 63.5 187.5t21.5 201.5q0 164 -45.5 298t-133.5 230t-218 147.5t-295 51.5q-160 0 -292.5 -58t-227.5 -156q-96 -98 -150.5 -234.5t-54.5 -290.5q0 -165 52 -301.5t147 -233.5q99 -101 232 -152.5t290 -51.5q86 0 177.5 11t175.5 35v-142q-97 -21 -181 -28.5 t-173 -7.5q-186 0 -345 63.5t-273 177.5q-115 115 -179 276t-64 356zM750 634q0 -163 58 -246.5t181 -83.5q67 0 134 31t122 73v518q-63 29 -113 41.5t-107 12.5q-129 0 -202 -90t-73 -256z" />
|
||||
<glyph unicode="A" horiz-adv-x="1662" d="M0 752q0 70 27 132t73.5 108.5t108.5 73t133 26.5q45 0 87 -11t78.5 -31.5t67 -49t53.5 -63.5h320l-301 301l267 267l748 -753l-748 -752l-267 267l301 301h-320q-23 -35 -53.5 -64t-67 -49.5t-78.5 -32t-87 -11.5q-71 0 -133 26.5t-108.5 73t-73.5 108.5t-27 133z M191 752q0 -30 12.5 -57t33 -47.5t48 -32t57.5 -11.5q31 0 58 11.5t47 32t31.5 47.5t11.5 57q0 31 -11.5 58t-31.5 47t-47 32t-58 12q-30 0 -57.5 -12t-48 -32t-33 -47t-12.5 -58z" />
|
||||
<glyph unicode="B" horiz-adv-x="1404" d="M200 0v1489h441q163 0 244 -12t155 -50q82 -43 119 -110.5t37 -161.5q0 -106 -54 -180.5t-144 -119.5v-8q151 -31 238 -132.5t87 -256.5q0 -111 -42 -196t-113 -140q-84 -66 -184.5 -94t-255.5 -28h-528zM398 169h262q130 0 213 13.5t136 49.5q56 39 82 89t26 129 q0 90 -27 143t-98 90q-48 25 -116.5 32.5t-166.5 7.5h-311v-554zM398 890h256q93 0 148 9.5t102 39.5t66.5 77.5t19.5 112.5q0 54 -18 91t-58 60q-47 27 -114 33.5t-166 6.5h-236v-430z" />
|
||||
<glyph unicode="C" horiz-adv-x="1537" d="M0 766q0 108 27.5 207.5t77.5 185t120 155t155 118.5t182.5 76t203.5 27t204.5 -27t184 -76t155.5 -118.5t120 -155t77.5 -185t27.5 -207.5q0 -105 -27.5 -203t-77.5 -183t-120 -155t-155.5 -120t-184 -77.5t-204.5 -27.5q-105 0 -203 27.5t-183 77.5t-155 120t-120 155 t-77.5 182.5t-27.5 203.5zM692 721l342 -174q14 -7 22.5 -8t19.5 -1q23 0 39.5 10t27.5 27q8 18 8 37q0 11 -3 23q-7 31 -36 48l-268 138v532q0 34 -20.5 54t-57.5 20q-34 0 -54 -20t-20 -54v-632z" />
|
||||
<glyph unicode="D" horiz-adv-x="1660" d="M0 296q0 -57 65.5 -106t178.5 -85t265 -56.5t326 -20.5t325 20.5t262 56.5t174.5 85t63.5 106v642q-28 -26 -76 -43t-111 -39q-126 -42 -291 -65.5t-347 -23.5q-181 0 -345.5 23.5t-290.5 65.5q-51 13 -100 34.5t-99 47.5v-642zM0 1259q0 53 65.5 100.5t178.5 83 t265 56.5t326 21t325 -21t262 -56.5t174.5 -83t63.5 -100.5q0 -56 -63.5 -106t-174.5 -88t-262 -60t-325 -22t-326 22t-265 60t-178.5 88t-65.5 106z" />
|
||||
<glyph unicode="E" horiz-adv-x="1295" d="M200 0v1489h981v-176h-783v-408h783v-176h-783v-553h783v-176h-981z" />
|
||||
<glyph unicode="F" horiz-adv-x="1738" d="M0 404v522v195v336q0 20 8 38t21.5 31.5t31.5 21.5t38 8h478q47 0 77 -29t30 -70v-127h514q59 0 108 -26t72 -73h-913q-43 0 -85 -15t-78 -39.5t-62 -57t-38 -67.5zM88 112q-2 11 -2 23q0 22 8 44l224 718q12 37 39.5 69.5t65 56.5t81 38t88.5 14h987q45 0 79.5 -14 t55.5 -38q21 -25 28 -57q3 -13 3 -25q0 -21 -7 -44l-227 -718q-12 -35 -38.5 -67.5t-62.5 -57.5t-79 -39.5t-86 -14.5h-996q-44 0 -78 14.5t-55.5 40t-27.5 57.5z" />
|
||||
<glyph unicode="G" horiz-adv-x="1482" d="M0 537l140 148q-6 23 -7 47.5t-1 47.5q0 29 1 53t7 49l-140 141l156 279l204 -48q35 29 74.5 52.5t87.5 40.5l54 195h329l54 -195q48 -17 87.5 -40.5t74.5 -52.5l195 48l85 -140l80 -139l-140 -141q5 -25 5.5 -49t0.5 -53q0 -23 -0.5 -47.5t-5.5 -47.5l140 -148l-80 -140 l-85 -140l-195 45q-35 -28 -74.5 -54.5t-87.5 -43.5l-54 -204h-329l-54 204q-48 17 -87.5 48t-74.5 59l-204 -54l-78 140zM413 780q0 -68 26 -126.5t70.5 -102t104 -68.5t125.5 -25q67 0 127 25t105 68.5t71 102t26 126.5q0 67 -26 126.5t-71 104t-105 70.5t-127 26 q-66 0 -125.5 -26t-104 -70.5t-70.5 -104t-26 -126.5z" />
|
||||
<glyph unicode="H" horiz-adv-x="1539" d="M200 0v1489h198v-584h743v584h198v-1489h-198v729h-743v-729h-198z" />
|
||||
<glyph unicode="I" horiz-adv-x="1746" d="M-45 786l391 357v-714zM402 379h899l-449 -408zM402 1192l450 409l449 -409h-899zM1357 429v714l389 -357z" />
|
||||
<glyph unicode="J" horiz-adv-x="931" d="M44 8v185h11q41 -14 101 -29t123 -15q92 0 146.5 21t80.5 60q27 40 34.5 98t7.5 134v869h-315v158h513v-1102q0 -196 -119.5 -302t-320.5 -106q-48 0 -128 8.5t-134 20.5z" />
|
||||
<glyph unicode="K" horiz-adv-x="1419" d="M205 0v1489h198v-777l723 777h240l-665 -700l696 -789h-257l-589 663l-148 -158v-505h-198z" />
|
||||
<glyph unicode="L" horiz-adv-x="1674" d="M0 327v851q0 69 26 128.5t70.5 103.5t104.5 69.5t128 25.5h621v-1505h-621q-68 0 -128 26t-104.5 70.5t-70.5 104t-26 126.5zM1109 0v664h557v-337q0 -67 -26.5 -126.5t-71.5 -104t-105 -70.5t-128 -26h-226zM1109 826v679h226q68 0 128 -25.5t105 -69.5t71.5 -103.5 t26.5 -128.5v-352h-557z" />
|
||||
<glyph unicode="M" horiz-adv-x="1572" d="M30 928.5q0 116.5 44.5 229t133.5 201.5q88 92 198.5 135t225.5 43q116 0 227 -42.5t203 -135.5q75 -75 118.5 -168t54.5 -193q4 -33 4 -65q1 -67 -15 -133q-22 -100 -78 -187l408 -415l-201 -199l-408 415q-67 -46 -146.5 -68.5t-166.5 -22.5q-115 0 -225.5 44.5 t-198.5 131.5q-89 89 -133.5 201t-44.5 228.5zM309 930q0 -64 23 -124.5t68 -108.5q48 -46 108.5 -73t123.5 -27q69 0 127 27t104 73q47 48 73 108.5t26 124.5q0 69 -26 126.5t-73 103.5q-46 47 -104 73.5t-127 26.5q-63 0 -123.5 -26.5t-108.5 -73.5q-91 -93 -91 -230z" />
|
||||
<glyph unicode="N" horiz-adv-x="1593" d="M0 215v989q42 3 83 3q85 1 161 -11q114 -16 207.5 -48t166 -74t119.5 -85v-989q-47 43 -119.5 85t-166.5 73q-93 32 -207 48q-76 11 -161 12q-41 0 -83 -3zM215 1303v202q101 -15 185.5 -53.5t152.5 -93.5t120 -121.5t88 -137.5q-44 34 -100.5 67t-125 60.5t-149 47.5 t-171.5 29zM856 0v989q48 43 121 85t167 74q92 32 206 48q76 11 161 11q41 0 84 -3v-989q-43 3 -84 3q-85 0 -161 -12q-114 -16 -207 -47.5t-166 -73.5t-121 -85z" />
|
||||
<glyph unicode="O" horiz-adv-x="1738" d="M0 0h1005v406q0 105 -39.5 197t-107.5 160.5t-159 108t-194 39.5q-104 0 -196 -39.5t-160.5 -108t-108.5 -160.5t-40 -197v-406zM216 1242q0 59 22.5 111.5t62 91.5t92 61.5t112.5 22.5q57 0 107.5 -22.5t89 -61.5t60.5 -91.5t22 -111.5q0 -58 -22 -109.5t-60.5 -90 t-89 -61t-107.5 -22.5q-60 0 -112.5 22.5t-92 61t-62 90t-22.5 109.5zM937 815q48 -35 87 -79.5t66.5 -96.5t43 -111t15.5 -122v-406h587v406q0 105 -40 197t-108.5 160.5t-160 108t-195.5 39.5q-81 0 -156.5 -25.5t-138.5 -70.5zM946 1242q0 -58 23 -109.5t62.5 -90 t91.5 -61t109 -22.5q58 0 110 22.5t91 61t62 90t23 109.5q0 59 -23 111.5t-62 91.5t-91 61.5t-110 22.5q-57 0 -109 -22.5t-91.5 -61.5t-62.5 -91.5t-23 -111.5z" />
|
||||
<glyph unicode="P" horiz-adv-x="1150" d="M0 0h1150v248q0 120 -45 225t-122.5 183.5t-182.5 123.5t-225 45q-119 0 -223.5 -45t-182.5 -123.5t-123.5 -183.5t-45.5 -225v-248zM248 1208q0 66 25.5 125.5t69.5 104t104 71t128 26.5q65 0 124.5 -26.5t104.5 -71t72 -104t27 -125.5q0 -68 -27 -127t-72 -102.5 t-104.5 -68.5t-124.5 -25q-68 0 -128 25t-104 68.5t-69.5 102.5t-25.5 127z" />
|
||||
<glyph unicode="Q" horiz-adv-x="1655" d="M0 258v989q0 53 20.5 100t55.5 82t82 55.5t100 20.5h688v-458l228 114l230 -114v458h144q22 0 41.5 -8.5t34 -23.5t23 -34.5t8.5 -41.5v-797q-4 -22 -15 -40.5t-27.5 -32t-37 -21t-42.5 -7.5h-1157q-26 0 -48.5 -10t-39.5 -27t-26.5 -39.5t-9.5 -48.5t9.5 -48.5 t26.5 -39.5t39.5 -27t48.5 -10h1157q22 0 42.5 7.5t37 21t27.5 32t15 40.5v-243q0 -23 -8.5 -42.5t-23 -33.5t-34 -22.5t-41.5 -8.5h-710h-580q-53 0 -100 20.5t-82 55.5t-55.5 82t-20.5 100z" />
|
||||
<glyph unicode="R" horiz-adv-x="1424" d="M200 0v1489h417q135 0 225 -17.5t162 -62.5q81 -51 126.5 -128.5t45.5 -196.5q0 -161 -81 -269.5t-223 -163.5l560 -651h-257l-498 592h-279v-592h-198zM398 757h200q94 0 164 16.5t119 61.5q45 42 66.5 96.5t21.5 138.5q0 64 -22.5 113.5t-74.5 83.5q-43 29 -102 40.5 t-139 11.5h-233v-562z" />
|
||||
<glyph unicode="S" horiz-adv-x="1669" d="M-1 132v1239q0 29 10.5 54t29 43.5t44 29t54.5 10.5h316v-232h-209v-1045h209v-232h-316q-29 0 -54.5 10.5t-44 28.5t-29 42.5t-10.5 51.5zM360 756q0 98 37.5 184.5t101.5 151t149.5 102t182.5 37.5q98 0 184.5 -37.5t150.5 -102t101 -151t37 -184.5q0 -97 -37 -182.5 t-101 -149.5t-150.5 -101.5t-184.5 -37.5q-97 0 -182.5 37.5t-149.5 101.5t-101.5 149.5t-37.5 182.5zM784 726l217 -108q6 -3 10.5 -3.5t10.5 -0.5q11 0 24.5 6t18.5 18q10 17 2 36.5t-25 27.5l-164 86v331q0 18 -13 30.5t-34 12.5q-18 0 -32.5 -12.5t-14.5 -30.5v-393z M1216 -1v232h208v1045h-208v232h316q27 0 52 -10.5t44 -29t30.5 -43.5t11.5 -54v-1239q0 -27 -11.5 -51.5t-30.5 -42.5t-44 -28.5t-52 -10.5h-316z" />
|
||||
<glyph unicode="T" horiz-adv-x="1522" d="M0 694h708q2 -102 19 -195.5t48 -165t75.5 -114t103.5 -42.5q57 0 101.5 44t76 116.5t48 165.5t18.5 191h324q-13 -145 -77 -271.5t-165.5 -220.5t-234 -148t-282.5 -54q-151 0 -283.5 54t-234.5 148t-166.5 220.5t-78.5 271.5zM0 845q14 145 78.5 271t166.5 220 t234.5 148t283.5 54q150 0 282.5 -54t234 -148t165.5 -220t77 -271h-698q-6 98 -24 191t-48 166t-73.5 117t-100.5 44q-60 0 -104.5 -44t-75.5 -117t-49.5 -166t-24.5 -191h-324zM453 845q3 95 17 168t33 122.5t39.5 74.5t35.5 25q10 0 28 -25t36.5 -74.5t34 -122.5 t21.5 -168h-245zM831 694h244q-6 -96 -21.5 -169t-33.5 -122.5t-36 -74.5t-30 -25t-31 25t-38.5 74.5t-34.5 122.5t-19 169z" />
|
||||
<glyph unicode="U" horiz-adv-x="1639" d="M-1 142q0 -29 11 -55t30 -45.5t45 -30.5t56 -11h1374q29 0 54.5 11t45 30.5t31 45.5t11.5 55v251q0 29 -11.5 55t-31 45.5t-45 30.5t-54.5 11h-1374q-30 0 -56 -11t-45 -30.5t-30 -45.5t-11 -55v-251zM14 1501h1625l-812 -813z" />
|
||||
<glyph unicode="V" horiz-adv-x="1400" d="M26 1489h212l467 -1310l467 1310h202l-542 -1489h-264z" />
|
||||
<glyph unicode="W" horiz-adv-x="2025" d="M92 1489h203l313 -1238l308 1238h201l311 -1250l311 1250h194l-387 -1489h-223l-313 1236l-306 -1236h-218z" />
|
||||
<glyph unicode="X" horiz-adv-x="1403" d="M68 0l519 744l-507 745h228l401 -605l410 605h217l-514 -736l513 -753h-229l-406 613l-416 -613h-216z" />
|
||||
<glyph unicode="Y" horiz-adv-x="1260" d="M6 1489h219l407 -666l411 666h211l-524 -836v-653h-198v632z" />
|
||||
<glyph unicode="Z" horiz-adv-x="1655" d="M0 909v265q0 31 12 58t32 47.5t47.5 32.5t58.5 12h506v82q0 21 8.5 39.5t23 32t34 21.5t41.5 8h127q22 0 42 -8t34.5 -21.5t23 -32t8.5 -39.5v-82h507q31 0 58 -12t47.5 -32.5t32.5 -47.5t12 -58v-265h-163v-759q0 -30 -12 -57.5t-32.5 -48t-48 -32.5t-57.5 -12h-1028 q-32 0 -59.5 12t-47.5 32.5t-32 48t-12 57.5v759h-163zM353 181h169v728h-169v-728zM742 181h170v728h-170v-728zM1131 181h170v728h-170v-728z" />
|
||||
<glyph unicode="[" horiz-adv-x="1520" d="M12 747.5q0 37.5 14 73.5t42 64l555 554q29 29 65 44t75 15q37 0 72.5 -15t64.5 -44l553 -552q29 -28 43.5 -64t14.5 -73.5t-14.5 -74t-43.5 -65.5l-555 -555q-27 -28 -63.5 -42t-73.5 -14q-38 0 -74.5 14t-63.5 42l-555 555q-28 28 -42 64t-14 73.5zM277 747l484 -484 l485 486l-483 484z" />
|
||||
<glyph unicode="\" horiz-adv-x="1659" d="M0 1499h365l284 -332q21 5 42 8t44 3q67 0 126 -25.5t103.5 -69t70 -102t25.5 -125.5q0 -36 -7.5 -69.5t-20.5 -64.5l619 -722h-365l-467 542q-41 -11 -84 -11q-67 0 -125.5 25.5t-102 70t-69 103.5t-25.5 126q0 34 6 67t20 62zM585 856q0 -32 11.5 -59.5t32 -48.5 t47.5 -33t59 -12q31 0 59 12t49 33t33 48.5t12 59.5q0 31 -12 58.5t-33 48t-49 32t-59 11.5q-32 0 -59 -11.5t-47.5 -32t-32 -48t-11.5 -58.5z" />
|
||||
<glyph unicode="]" horiz-adv-x="1653" d="M-68 1l1496 1497h304l-1497 -1497h-303zM82 747.5q0 37.5 14 73.5t42 64l555 554q29 29 65 44t75 15q37 0 72.5 -15t64.5 -44l125 -122l-174 -174l-88 90l-486 -486l90 -90l-174 -172l-125 125q-28 28 -42 64t-14 73.5zM568 182l172 172l91 -91l486 486l-91 91l172 172 l125 -125q29 -28 43.5 -64t14.5 -73.5t-14.5 -74t-43.5 -65.5l-555 -555q-27 -28 -63.5 -42t-73.5 -14q-38 0 -74 14t-64 42z" />
|
||||
<glyph unicode="^" horiz-adv-x="1676" d="M0 235l806 772l806 -772h-1612z" />
|
||||
<glyph unicode="_" horiz-adv-x="1653" d="M0 264v250h295q48 0 91 -19t75.5 -51t51 -75.5t18.5 -91.5v-277h-249v264h-282zM0 985v249h282v265h249v-278q0 -49 -18.5 -92t-51 -75t-75.5 -50.5t-91 -18.5h-295zM1122 0v277q0 48 19 91.5t51 75.5t75.5 51t91.5 19h294v-250h-281v-264h-250zM1122 1221v278h250v-265 h281v-249h-294q-48 0 -91.5 18.5t-75.5 50.5t-51 75t-19 92z" />
|
||||
<glyph unicode="`" horiz-adv-x="1302" d="M340 1676h243l179 -374h-149z" />
|
||||
<glyph unicode="a" horiz-adv-x="1354" d="M0 479q0 59 29 112.5t81 99.5t125 82t161 59v475q-76 34 -121 85t-45 113h894q0 -62 -44.5 -113t-120.5 -85v-475q87 -23 159.5 -59t125 -82t81.5 -99.5t29 -112.5h-569v-372l-108 -107l-109 107v372h-568z" />
|
||||
<glyph unicode="d" horiz-adv-x="1517" d="M0 250v1034q0 47 60 90.5t163.5 77t242 53.5t295.5 20q156 0 293.5 -20t240 -53.5t162.5 -77t60 -90.5v-1034q0 -23 -6.5 -39.5t-23.5 -29.5l-311 311q42 72 59 152q11 54 11 108q0 28 -2 54q-8 80 -42.5 156t-94.5 138q-72 74 -162 109.5t-184 35.5q-99 0 -188 -35.5 t-162 -109.5q-72 -72 -108 -163t-36 -186t36 -186t108 -162q73 -75 162 -110t188 -35q68 0 130.5 18t125.5 58l258 -265q-104 -29 -235.5 -49t-278.5 -20q-157 0 -295.5 20t-242 54t-163.5 79.5t-60 96.5zM492 752q0 49 21 98t55 91q42 35 91.5 55.5t101.5 20.5 q49 0 98 -20.5t89 -55.5q35 -42 56.5 -91t21.5 -98q0 -52 -21.5 -101.5t-56.5 -89.5q-40 -35 -89 -56t-98 -21q-52 0 -101.5 21t-91.5 56q-34 40 -55 89.5t-21 101.5z" />
|
||||
<glyph unicode="e" horiz-adv-x="1220" d="M106 552q0 274 149.5 435t393.5 161q226 0 348.5 -132t122.5 -375v-102h-823q0 -103 31 -179.5t85 -125.5q52 -48 123.5 -72t157.5 -24q114 0 229.5 45.5t164.5 89.5h10v-205q-95 -40 -194 -67t-208 -27q-278 0 -434 150.5t-156 427.5zM297 683h640q-1 148 -74.5 229 t-223.5 81q-151 0 -240.5 -89t-101.5 -221z" />
|
||||
<glyph unicode="f" horiz-adv-x="1752" d="M0 401v522v196v334q0 22 8 41t22.5 33t33.5 22.5t41 8.5h476q22 0 41 -8.5t33 -22.5t22 -33t8 -41v-124h519q58 0 106 -29t74 -77h-914q-44 0 -86.5 -14t-79 -38t-63 -56.5t-38.5 -69.5zM92 108q-2 11 -2 23q0 22 8 47l227 716q12 37 38.5 69.5t62.5 56.5t78.5 38 t85.5 14h995q43 0 77 -14t54.5 -38t27.5 -56q2 -12 2 -24q0 -22 -8 -46l-225 -716q-12 -37 -38.5 -69.5t-63 -56.5t-79.5 -38t-86 -14h-994q-44 0 -78 14t-55 38t-27 56zM523 456q-2 -7 -2 -13q0 -10 5 -17q8 -12 26 -12h238l-76 -238q-5 -17 2.5 -29.5t26.5 -12.5h151 q17 0 33 12.5t23 29.5l74 238h238q17 0 33.5 12t22.5 30l46 150q4 8 4 15q0 8 -5 15q-9 12 -28 12h-236l74 238q7 18 -1.5 30t-27.5 12h-149q-19 0 -35 -12t-21 -30l-76 -238h-238q-17 0 -33.5 -12.5t-22.5 -29.5z" />
|
||||
<glyph unicode="g" horiz-adv-x="1664" d="M13 750.5q0 34.5 9.5 68.5t29.5 62l384 495q19 27 49.5 51t65 41t71 27t68.5 10h815q33 0 62 -13t50.5 -34.5t34 -51t12.5 -62.5v-1185q0 -33 -12.5 -62t-34 -50.5t-50.5 -34t-62 -12.5h-815q-32 0 -68.5 10t-71 27t-65 40t-49.5 50l-384 496q-20 27 -29.5 60t-9.5 67.5z M312 750q0 -42 15.5 -78.5t42.5 -63.5t63.5 -42.5t78.5 -15.5t78.5 15.5t63.5 42.5t42.5 63.5t15.5 78.5q0 43 -15.5 80t-42.5 64t-63.5 42.5t-78.5 15.5t-78.5 -15.5t-63.5 -42.5t-42.5 -64t-15.5 -80z" />
|
||||
<glyph unicode="h" horiz-adv-x="1296" d="M185 0v1556h188v-563q88 73 182 114t193 41q181 0 276 -109t95 -314v-725h-188v636q0 77 -9 144.5t-33 105.5q-25 42 -72 62.5t-122 20.5q-77 0 -161 -38t-161 -97v-834h-188z" />
|
||||
<glyph unicode="i" horiz-adv-x="1538" d="M0 769q0 106 27.5 204t77.5 183.5t120.5 156t156 120.5t183.5 77.5t204 27.5t204 -27.5t183.5 -77.5t156 -120.5t120.5 -156t77.5 -183.5t27.5 -204t-27.5 -204t-77.5 -183.5t-120.5 -156t-156 -120.5t-183.5 -77.5t-204 -27.5t-204 27.5t-183.5 77.5t-156 120.5 t-120.5 156t-77.5 183.5t-27.5 204zM455 307q0 -19 11.5 -30t30.5 -11h586q17 0 29 11t12 30v142q0 14 -12 27.5t-29 13.5h-183v475q0 18 -11 29.5t-31 11.5h-361q-19 0 -30.5 -11.5t-11.5 -29.5v-139q0 -17 11.5 -29.5t30.5 -12.5h183v-294h-183q-19 0 -30.5 -13.5 t-11.5 -27.5v-142zM680 1148q0 -18 11 -30t30 -12h137q20 0 31 12t11 30v139q0 19 -11 31t-31 12h-137q-19 0 -30 -12t-11 -31v-139z" />
|
||||
<glyph unicode="j" horiz-adv-x="1633" d="M0 252v301l252 -252l451 451v-301l-451 -451zM0 1004v301l252 -252l451 452v-301l-451 -452zM993 346v146h641v-146h-641zM993 1099v146h641v-146h-641z" />
|
||||
<glyph unicode="k" horiz-adv-x="1634" d="M0 442v301l252 -252l451 451v-301l-451 -451zM993 536v146h641v-146h-641z" />
|
||||
<glyph unicode="l" horiz-adv-x="1264" d="M0 0v791h129v217q0 102 39.5 192t108 158t159.5 107.5t194 39.5q102 0 192.5 -39.5t158.5 -107.5t108 -158t40 -192v-217h135v-791h-1264zM355 791h546v217q0 57 -21 106t-57.5 86t-86 58t-106.5 21t-107 -21t-87.5 -58t-59 -86t-21.5 -106v-217z" />
|
||||
<glyph unicode="m" horiz-adv-x="1658" d="M0 0v325h1658v-325h-1658zM0 587v331h1658v-331h-1658zM0 1182v323h1658v-323h-1658z" />
|
||||
<glyph unicode="n" horiz-adv-x="1511" d="M0 275v1148q43 -39 104.5 -77.5t138.5 -71.5t168.5 -58t196.5 -36l-49 -51l-34 -35l-15 -45l-274 -797l622 212v-440q-48 -3 -94 -3q-100 -1 -190 13q-132 20 -241 56.5t-193.5 85.5t-139.5 99zM514 527l157 466l4 9l7 6l496 497q6 6 16 12q9 7 23 9q7 1 15 1q8 1 18 -1 q19 -2 44 -15q29 -13 59.5 -34.5t59.5 -48.5q45 -48 71.5 -96t26.5 -85q0 -21 -6.5 -34t-14.5 -20l-497 -496l-6 -7l-9 -4zM677 759l69 -67l198 67l2 4l-6 103l-69 5h-20v19v58l-103 13l-4 -2z" />
|
||||
<glyph unicode="o" horiz-adv-x="1469" d="M0 393v785l733 393l736 -393v-785l-736 -393zM190 1078l543 -290l546 290l-546 292z" />
|
||||
<glyph unicode="p" horiz-adv-x="1590" d="M0 0l254 727v32l789 789q12 12 29.5 22.5t41.5 13.5q7 1 14 1q19 0 40 -5q30 -8 66 -32q47 -23 94 -50t95 -75q36 -36 65 -76t49.5 -78.5t31.5 -73t11 -58.5q0 -12 -5 -23.5t-11 -23.5t-11 -23.5t-5 -23.5l-789 -789h-32zM254 378l124 -124l286 124h30l-30 159h-96h-31 v31v96l-159 30v-30z" />
|
||||
<glyph unicode="q" horiz-adv-x="1276" />
|
||||
<glyph unicode="r" horiz-adv-x="1885" d="M-45 626l439 324l445 -324h-261q12 -59 42 -109t73.5 -86.5t98.5 -57t115 -20.5q59 0 112.5 18.5t98.5 56.5l32 26l250 -250l-37 -32q-94 -85 -211.5 -128.5t-244.5 -43.5q-132 0 -250.5 48.5t-211 133t-151 198.5t-70.5 246h-269zM495 1299l36 32q96 85 212.5 129.5 t243.5 44.5t245 -47t215 -138q97 -88 155 -201t69 -238h268l-436 -324l-447 324h262q-11 59 -41.5 108.5t-74.5 85.5t-99 56.5t-116 20.5q-58 0 -112 -20t-99 -57l-32 -26z" />
|
||||
<glyph unicode="s" horiz-adv-x="1865" d="M-1 132v1239q0 29 10.5 54t29 43.5t44 29t54.5 10.5h316v-232h-209v-1045h209v-232h-316q-29 0 -54.5 10.5t-44 28.5t-29 42.5t-10.5 51.5zM418 459v395q31 -16 61.5 -29.5t62.5 -21.5q76 -26 177 -40.5t213 -14.5t213.5 14.5t179.5 40.5q38 14 68 24.5t47 26.5v-395 q0 -36 -39 -66t-107.5 -52t-161.5 -34.5t-200 -12.5t-200.5 12.5t-163.5 34.5t-110 52t-40 66zM418 1051q0 33 40 62.5t110 51t163.5 34.5t200.5 13t200 -13t161.5 -34.5t107.5 -51t39 -62.5q0 -34 -39 -65t-107.5 -54t-161.5 -37t-200 -14t-200.5 14t-163.5 37t-110 54 t-40 65zM1406 -1v232h208v1045h-208v232h316q27 0 52 -10.5t44 -29t30.5 -43.5t11.5 -54v-1239q0 -27 -11.5 -51.5t-30.5 -42.5t-44 -28.5t-52 -10.5h-316z" />
|
||||
<glyph unicode="t" horiz-adv-x="1677" d="M0 340v339h776q3 -98 22.5 -189.5t55 -162.5t86 -114t113.5 -43q67 0 117.5 43t85.5 114t55 162.5t26 189.5h340v-339q0 -64 -14.5 -112.5t-37.5 -84.5t-52.5 -60.5t-60.5 -40.5q-72 -38 -164 -42h-1008q-64 0 -112.5 14.5t-84.5 38.5t-60.5 54.5t-40.5 62.5 q-38 75 -42 170zM0 828v348q0 61 14.5 108t38.5 82t54.5 59t62.5 39q75 36 170 41h1008q61 0 108 -14.5t82 -37.5t59 -52.5t39 -60.5q36 -72 41 -164v-348h-768q-4 65 -14.5 129t-27 121.5t-39.5 107t-53 85.5t-67.5 56.5t-81.5 20.5q-45 0 -82.5 -20.5t-68 -56.5t-54 -85.5 t-40 -107t-27 -121.5t-14.5 -129h-340zM484 828q6 94 24 167t39.5 123.5t43 76.5t35.5 26q13 0 34.5 -26t43 -76.5t38.5 -123.5t23 -167h-281zM909 679h284q-6 -94 -24 -166t-39.5 -120.5t-42.5 -73t-34 -24.5q-14 0 -36 24.5t-43.5 73t-39.5 120.5t-25 166z" />
|
||||
<glyph unicode="u" horiz-adv-x="1657" d="M-1 1107v251q0 29 11.5 55t31 45.5t45 30.5t54.5 11h1374q30 0 56 -11t45 -30.5t30 -45.5t11 -55v-251q0 -29 -11 -55t-30 -45.5t-45 -30.5t-56 -11h-1374q-29 0 -54.5 11t-45 30.5t-31 45.5t-11.5 55zM17 -1l812 813l813 -813h-1625z" />
|
||||
<glyph unicode="v" horiz-adv-x="1612" d="M0 1186h1612q-201 -193 -402 -385t-404 -387z" />
|
||||
<glyph unicode="w" horiz-adv-x="1676" d="M86 1117h196l205 -865l279 865h155l286 -865l194 865h189l-291 -1117h-174l-287 861l-285 -861h-173z" />
|
||||
<glyph unicode="x" horiz-adv-x="1486" d="M4 195q0 18 13 31l525 526l-525 527q-13 13 -13 30t13 30l146 149q14 13 32 13t31 -13l526 -527l527 527q11 13 29 13t31 -13l147 -149q13 -13 13 -30t-13 -30l-525 -527l525 -526q13 -13 13 -31t-13 -29l-147 -149q-13 -13 -31 -13t-29 13l-527 527l-526 -527 q-13 -13 -31 -13t-32 13l-146 149q-13 11 -13 29z" />
|
||||
<glyph unicode="y" horiz-adv-x="1651" d="M0 236v654q0 49 18.5 92t50.5 75.5t75 51t92 18.5h618l-250 -250h-355v-628h785v198l250 250v-461q0 -49 -19 -92t-51 -75t-75.5 -50.5t-91.5 -18.5h-811q-49 0 -92 18.5t-75 50.5t-50.5 75t-18.5 92zM714 746l563 563h-563v187h937v-937h-187v563l-561 -563z" />
|
||||
<glyph unicode="z" horiz-adv-x="1651" d="M0 236v278h249v-265h280v-249h-293q-48 0 -91 18.5t-75.5 50.5t-51 75t-18.5 92zM0 985v277q0 49 18.5 92t51 75.5t75.5 51t91 18.5h293v-250h-280v-264h-249zM1122 0v249h280v265h249v-278q0 -49 -18.5 -92t-50.5 -75t-75 -50.5t-92 -18.5h-293zM1122 1249v250h293 q49 0 92 -18.5t75 -51t50.5 -75.5t18.5 -92v-277h-249v264h-280z" />
|
||||
<glyph unicode="{" horiz-adv-x="456" d="M0 537l269 538h187l-269 -538l269 -537h-187z" />
|
||||
<glyph unicode="|" d="M378 -392v1948h174v-1948h-174z" />
|
||||
<glyph unicode="}" horiz-adv-x="456" d="M0 -1l269 538l-269 537h187l269 -537l-269 -538h-187z" />
|
||||
<glyph unicode="~" horiz-adv-x="1636" d="M0 744q29 123 64 244t80 220q51 117 118 181q28 29 57 47.5t56 29t51.5 15.5t44.5 7q58 2 112.5 -19t102.5 -63q69 -66 122 -176q23 -48 43 -102t37.5 -112t33.5 -119t30 -121q13 -51 27.5 -105t30 -105.5t33 -99.5t36.5 -88q15 -30 27.5 -49.5t22 -30.5t15.5 -15t8 -4 q3 0 11 5t19 18.5t25.5 36t30.5 57.5q32 71 59.5 162.5t50.5 185.5h288q-29 -124 -64 -244.5t-80 -220.5q-54 -116 -118 -180q-28 -29 -56.5 -48t-55.5 -30t-52 -15.5t-45 -5.5h-13q-114 0 -202 82q-69 63 -122 176q-48 96 -82.5 214t-63.5 240q-13 51 -27.5 105t-30 105.5 t-32.5 99.5t-35 87q-15 31 -28 50t-22.5 30t-15.5 15t-7 4q-3 0 -11 -5t-19.5 -18t-25.5 -35.5t-30 -57.5q-32 -71 -59.5 -162.5t-50.5 -185.5h-288z" />
|
||||
<glyph unicode="­" d="M153 561v181h624v-181h-624z" />
|
||||
<glyph unicode=" " horiz-adv-x="838" />
|
||||
<glyph unicode=" " horiz-adv-x="1676" />
|
||||
<glyph unicode=" " horiz-adv-x="838" />
|
||||
<glyph unicode=" " horiz-adv-x="1676" />
|
||||
<glyph unicode=" " horiz-adv-x="558" />
|
||||
<glyph unicode=" " horiz-adv-x="419" />
|
||||
<glyph unicode=" " horiz-adv-x="279" />
|
||||
<glyph unicode=" " horiz-adv-x="279" />
|
||||
<glyph unicode=" " horiz-adv-x="209" />
|
||||
<glyph unicode=" " horiz-adv-x="335" />
|
||||
<glyph unicode=" " horiz-adv-x="93" />
|
||||
<glyph unicode="‐" d="M153 561v181h624v-181h-624z" />
|
||||
<glyph unicode="‑" d="M153 561v181h624v-181h-624z" />
|
||||
<glyph unicode="‒" d="M153 561v181h624v-181h-624z" />
|
||||
<glyph unicode="–" horiz-adv-x="1330" d="M153 561v181h1024v-181h-1024z" />
|
||||
<glyph unicode="—" horiz-adv-x="2354" d="M153 561v181h2048v-181h-2048z" />
|
||||
<glyph unicode=" " horiz-adv-x="335" />
|
||||
<glyph unicode=" " horiz-adv-x="419" />
|
||||
<hkern u1="-" u2="z" k="40" />
|
||||
<hkern u1="-" u2="y" k="40" />
|
||||
<hkern u1="-" u2="x" k="50" />
|
||||
<hkern u1="-" u2="w" k="20" />
|
||||
<hkern u1="-" u2="v" k="40" />
|
||||
<hkern u1="-" u2="a" k="20" />
|
||||
<hkern u1="-" u2="Z" k="30" />
|
||||
<hkern u1="-" u2="Y" k="140" />
|
||||
<hkern u1="-" u2="X" k="80" />
|
||||
<hkern u1="-" u2="W" k="50" />
|
||||
<hkern u1="-" u2="V" k="50" />
|
||||
<hkern u1="-" u2="T" k="150" />
|
||||
<hkern u1="-" u2="S" k="20" />
|
||||
<hkern u1="-" u2="J" k="100" />
|
||||
<hkern u1="-" u2="I" k="30" />
|
||||
<hkern u1="-" u2="A" k="50" />
|
||||
<hkern u1="." u2="-" k="160" />
|
||||
<hkern u1="." u2="," k="130" />
|
||||
<hkern u1="A" u2="y" k="50" />
|
||||
<hkern u1="A" u2="w" k="30" />
|
||||
<hkern u1="A" u2="v" k="50" />
|
||||
<hkern u1="A" u2="u" k="10" />
|
||||
<hkern u1="A" u2="t" k="20" />
|
||||
<hkern u1="A" u2="Y" k="80" />
|
||||
<hkern u1="A" u2="W" k="50" />
|
||||
<hkern u1="A" u2="V" k="60" />
|
||||
<hkern u1="A" u2="U" k="10" />
|
||||
<hkern u1="A" u2="T" k="120" />
|
||||
<hkern u1="A" u2="S" k="10" />
|
||||
<hkern u1="A" u2="-" k="50" />
|
||||
<hkern u1="B" u2="T" k="60" />
|
||||
<hkern u1="B" u2="." k="20" />
|
||||
<hkern u1="B" u2="-" k="-10" />
|
||||
<hkern u1="B" u2="," k="20" />
|
||||
<hkern u1="C" u2="-" k="50" />
|
||||
<hkern u1="D" u2="Z" k="20" />
|
||||
<hkern u1="D" u2="Y" k="20" />
|
||||
<hkern u1="D" u2="X" k="10" />
|
||||
<hkern u1="D" u2="W" k="20" />
|
||||
<hkern u1="D" u2="T" k="50" />
|
||||
<hkern u1="D" u2="." k="50" />
|
||||
<hkern u1="D" u2="," k="50" />
|
||||
<hkern u1="F" u2="o" k="50" />
|
||||
<hkern u1="F" u2="e" k="50" />
|
||||
<hkern u1="F" u2="a" k="100" />
|
||||
<hkern u1="F" u2="T" k="-30" />
|
||||
<hkern u1="F" u2="A" k="100" />
|
||||
<hkern u1="F" u2="?" k="-60" />
|
||||
<hkern u1="F" u2=";" k="60" />
|
||||
<hkern u1="F" u2=":" k="60" />
|
||||
<hkern u1="F" u2="." k="300" />
|
||||
<hkern u1="F" u2="," k="300" />
|
||||
<hkern u1="I" u2="-" k="30" />
|
||||
<hkern u1="J" u2="A" k="10" />
|
||||
<hkern u1="J" u2="." k="20" />
|
||||
<hkern u1="J" u2="," k="20" />
|
||||
<hkern u1="K" u2="y" k="80" />
|
||||
<hkern u1="K" u2="w" k="70" />
|
||||
<hkern u1="K" u2="v" k="80" />
|
||||
<hkern u1="K" u2="u" k="50" />
|
||||
<hkern u1="K" u2="o" k="70" />
|
||||
<hkern u1="K" u2="e" k="70" />
|
||||
<hkern u1="K" u2="a" k="60" />
|
||||
<hkern u1="K" u2="O" k="20" />
|
||||
<hkern u1="K" u2="-" k="110" />
|
||||
<hkern u1="L" u2="y" k="110" />
|
||||
<hkern u1="L" u2="v" k="110" />
|
||||
<hkern u1="L" u2="Y" k="160" />
|
||||
<hkern u1="L" u2="W" k="100" />
|
||||
<hkern u1="L" u2="V" k="110" />
|
||||
<hkern u1="L" u2="T" k="170" />
|
||||
<hkern u1="L" u2="O" k="20" />
|
||||
<hkern u1="L" u2="J" k="-100" />
|
||||
<hkern u1="L" u2="G" k="20" />
|
||||
<hkern u1="L" u2="C" k="20" />
|
||||
<hkern u1="L" u2="-" k="160" />
|
||||
<hkern u1="O" u2="Z" k="20" />
|
||||
<hkern u1="O" u2="Y" k="20" />
|
||||
<hkern u1="O" u2="X" k="10" />
|
||||
<hkern u1="O" u2="T" k="50" />
|
||||
<hkern u1="O" u2="." k="30" />
|
||||
<hkern u1="O" u2="," k="30" />
|
||||
<hkern u1="P" u2="o" k="50" />
|
||||
<hkern u1="P" u2="e" k="50" />
|
||||
<hkern u1="P" u2="a" k="50" />
|
||||
<hkern u1="P" u2="Y" k="-20" />
|
||||
<hkern u1="P" u2="A" k="50" />
|
||||
<hkern u1="P" u2="." k="300" />
|
||||
<hkern u1="P" u2="," k="300" />
|
||||
<hkern u1="Q" u2="." k="30" />
|
||||
<hkern u1="Q" u2="," k="30" />
|
||||
<hkern u1="R" u2="y" k="55" />
|
||||
<hkern u1="R" u2="u" k="20" />
|
||||
<hkern u1="R" u2="o" k="50" />
|
||||
<hkern u1="R" u2="e" k="50" />
|
||||
<hkern u1="R" u2="a" k="40" />
|
||||
<hkern u1="R" u2="Y" k="20" />
|
||||
<hkern u1="R" u2="T" k="60" />
|
||||
<hkern u1="R" u2="-" k="100" />
|
||||
<hkern u1="S" u2="y" k="30" />
|
||||
<hkern u1="S" u2="w" k="20" />
|
||||
<hkern u1="S" u2="v" k="30" />
|
||||
<hkern u1="S" u2="S" k="22" />
|
||||
<hkern u1="S" u2="A" k="20" />
|
||||
<hkern u1="S" u2="." k="20" />
|
||||
<hkern u1="S" u2="," k="20" />
|
||||
<hkern u1="T" u2="z" k="170" />
|
||||
<hkern u1="T" u2="y" k="200" />
|
||||
<hkern u1="T" u2="w" k="200" />
|
||||
<hkern u1="T" u2="v" k="200" />
|
||||
<hkern u1="T" u2="u" k="200" />
|
||||
<hkern u1="T" u2="s" k="180" />
|
||||
<hkern u1="T" u2="r" k="200" />
|
||||
<hkern u1="T" u2="o" k="220" />
|
||||
<hkern u1="T" u2="g" k="210" />
|
||||
<hkern u1="T" u2="e" k="220" />
|
||||
<hkern u1="T" u2="a" k="240" />
|
||||
<hkern u1="T" u2="T" k="70" />
|
||||
<hkern u1="T" u2="S" k="12" />
|
||||
<hkern u1="T" u2="O" k="50" />
|
||||
<hkern u1="T" u2="G" k="40" />
|
||||
<hkern u1="T" u2="C" k="40" />
|
||||
<hkern u1="T" u2="A" k="120" />
|
||||
<hkern u1="T" u2="?" k="-60" />
|
||||
<hkern u1="T" u2=";" k="200" />
|
||||
<hkern u1="T" u2=":" k="200" />
|
||||
<hkern u1="T" u2="." k="290" />
|
||||
<hkern u1="T" u2="-" k="150" />
|
||||
<hkern u1="T" u2="," k="290" />
|
||||
<hkern u1="U" u2="A" k="10" />
|
||||
<hkern u1="U" u2="." k="20" />
|
||||
<hkern u1="U" u2="," k="20" />
|
||||
<hkern u1="V" u2="y" k="65" />
|
||||
<hkern u1="V" u2="u" k="60" />
|
||||
<hkern u1="V" u2="o" k="100" />
|
||||
<hkern u1="V" u2="e" k="100" />
|
||||
<hkern u1="V" u2="a" k="100" />
|
||||
<hkern u1="V" u2="A" k="60" />
|
||||
<hkern u1="V" u2=";" k="80" />
|
||||
<hkern u1="V" u2=":" k="80" />
|
||||
<hkern u1="V" u2="." k="290" />
|
||||
<hkern u1="V" u2="-" k="50" />
|
||||
<hkern u1="V" u2="," k="290" />
|
||||
<hkern u1="W" u2="y" k="65" />
|
||||
<hkern u1="W" u2="u" k="60" />
|
||||
<hkern u1="W" u2="r" k="60" />
|
||||
<hkern u1="W" u2="o" k="100" />
|
||||
<hkern u1="W" u2="e" k="100" />
|
||||
<hkern u1="W" u2="a" k="100" />
|
||||
<hkern u1="W" u2="A" k="50" />
|
||||
<hkern u1="W" u2=";" k="80" />
|
||||
<hkern u1="W" u2=":" k="80" />
|
||||
<hkern u1="W" u2="." k="220" />
|
||||
<hkern u1="W" u2="-" k="50" />
|
||||
<hkern u1="W" u2="," k="290" />
|
||||
<hkern u1="X" u2="y" k="80" />
|
||||
<hkern u1="X" u2="u" k="30" />
|
||||
<hkern u1="X" u2="o" k="60" />
|
||||
<hkern u1="X" u2="e" k="60" />
|
||||
<hkern u1="X" u2="a" k="50" />
|
||||
<hkern u1="X" u2="O" k="10" />
|
||||
<hkern u1="X" u2="G" k="10" />
|
||||
<hkern u1="X" u2="C" k="10" />
|
||||
<hkern u1="X" u2="-" k="80" />
|
||||
<hkern u1="Y" u2="v" k="100" />
|
||||
<hkern u1="Y" u2="u" k="110" />
|
||||
<hkern u1="Y" u2="s" k="110" />
|
||||
<hkern u1="Y" u2="r" k="100" />
|
||||
<hkern u1="Y" u2="q" k="130" />
|
||||
<hkern u1="Y" u2="p" k="100" />
|
||||
<hkern u1="Y" u2="o" k="130" />
|
||||
<hkern u1="Y" u2="n" k="100" />
|
||||
<hkern u1="Y" u2="m" k="100" />
|
||||
<hkern u1="Y" u2="g" k="130" />
|
||||
<hkern u1="Y" u2="e" k="130" />
|
||||
<hkern u1="Y" u2="d" k="120" />
|
||||
<hkern u1="Y" u2="a" k="140" />
|
||||
<hkern u1="Y" u2="O" k="20" />
|
||||
<hkern u1="Y" u2="A" k="80" />
|
||||
<hkern u1="Y" u2=";" k="200" />
|
||||
<hkern u1="Y" u2=":" k="200" />
|
||||
<hkern u1="Y" u2="." k="290" />
|
||||
<hkern u1="Y" u2="-" k="140" />
|
||||
<hkern u1="Y" u2="," k="290" />
|
||||
<hkern u1="Z" u2="y" k="65" />
|
||||
<hkern u1="Z" u2="w" k="40" />
|
||||
<hkern u1="Z" u2="o" k="60" />
|
||||
<hkern u1="Z" u2="e" k="60" />
|
||||
<hkern u1="Z" u2="a" k="50" />
|
||||
<hkern u1="Z" u2="Z" k="10" />
|
||||
<hkern u1="Z" u2="O" k="20" />
|
||||
<hkern u1="Z" u2="G" k="20" />
|
||||
<hkern u1="Z" u2="C" k="20" />
|
||||
<hkern u1="Z" u2="-" k="60" />
|
||||
<hkern u1="a" u2="y" k="16" />
|
||||
<hkern u1="a" u2="w" k="10" />
|
||||
<hkern u1="a" u2="v" k="16" />
|
||||
<hkern u1="e" u2="T" k="140" />
|
||||
<hkern u1="f" u2="y" k="10" />
|
||||
<hkern u1="f" u2="]" k="-100" />
|
||||
<hkern u1="f" u2="\" k="-100" />
|
||||
<hkern u1="f" u2="?" k="-110" />
|
||||
<hkern u1="f" u2="." k="120" />
|
||||
<hkern u1="f" u2="-" k="50" />
|
||||
<hkern u1="f" u2="," k="130" />
|
||||
<hkern u1="f" u2="*" k="-50" />
|
||||
<hkern u1="h" u2="y" k="20" />
|
||||
<hkern u1="h" u2="w" k="10" />
|
||||
<hkern u1="h" u2="v" k="20" />
|
||||
<hkern u1="k" u2="o" k="20" />
|
||||
<hkern u1="k" u2="e" k="20" />
|
||||
<hkern u1="k" u2="-" k="100" />
|
||||
<hkern u1="m" u2="y" k="20" />
|
||||
<hkern u1="m" u2="w" k="10" />
|
||||
<hkern u1="m" u2="v" k="20" />
|
||||
<hkern u1="n" u2="y" k="20" />
|
||||
<hkern u1="n" u2="w" k="10" />
|
||||
<hkern u1="n" u2="v" k="20" />
|
||||
<hkern u1="o" u2="y" k="15" />
|
||||
<hkern u1="o" u2="x" k="20" />
|
||||
<hkern u1="o" u2="v" k="15" />
|
||||
<hkern u1="o" u2="." k="20" />
|
||||
<hkern u1="o" u2="," k="30" />
|
||||
<hkern u1="p" u2="y" k="5" />
|
||||
<hkern u1="p" u2="." k="20" />
|
||||
<hkern u1="p" u2="," k="30" />
|
||||
<hkern u1="r" u2="a" k="36" />
|
||||
<hkern u1="r" u2="." k="290" />
|
||||
<hkern u1="r" u2="-" k="20" />
|
||||
<hkern u1="r" u2="," k="290" />
|
||||
<hkern u1="t" u2="y" k="10" />
|
||||
<hkern u1="t" u2="-" k="40" />
|
||||
<hkern u1="v" u2="o" k="18" />
|
||||
<hkern u1="v" u2="e" k="18" />
|
||||
<hkern u1="v" u2="a" k="40" />
|
||||
<hkern u1="v" u2="." k="180" />
|
||||
<hkern u1="v" u2="-" k="40" />
|
||||
<hkern u1="v" u2="," k="180" />
|
||||
<hkern u1="w" u2="a" k="20" />
|
||||
<hkern u1="w" u2="." k="70" />
|
||||
<hkern u1="w" u2="-" k="20" />
|
||||
<hkern u1="w" u2="," k="70" />
|
||||
<hkern u1="x" u2="o" k="24" />
|
||||
<hkern u1="x" u2="g" k="10" />
|
||||
<hkern u1="x" u2="e" k="24" />
|
||||
<hkern u1="x" u2="d" k="10" />
|
||||
<hkern u1="x" u2="-" k="50" />
|
||||
<hkern u1="y" u2="q" k="10" />
|
||||
<hkern u1="y" u2="o" k="18" />
|
||||
<hkern u1="y" u2="g" k="10" />
|
||||
<hkern u1="y" u2="e" k="18" />
|
||||
<hkern u1="y" u2="d" k="10" />
|
||||
<hkern u1="y" u2="a" k="40" />
|
||||
<hkern u1="y" u2="." k="190" />
|
||||
<hkern u1="y" u2="-" k="40" />
|
||||
<hkern u1="y" u2="," k="190" />
|
||||
<hkern u1="z" u2="q" k="10" />
|
||||
<hkern u1="z" u2="o" k="12" />
|
||||
<hkern u1="z" u2="g" k="10" />
|
||||
<hkern u1="z" u2="e" k="12" />
|
||||
<hkern u1="z" u2="d" k="10" />
|
||||
<hkern u1="z" u2="-" k="20" />
|
||||
</font>
|
||||
</defs></svg>
|
After Width: | Height: | Size: 35 KiB |
BIN
platform/commonUI/general/res/fonts/symbols/wtdsymbols.ttf
Executable file
BIN
platform/commonUI/general/res/fonts/symbols/wtdsymbols.ttf
Executable file
Binary file not shown.
BIN
platform/commonUI/general/res/fonts/symbols/wtdsymbols.woff
Executable file
BIN
platform/commonUI/general/res/fonts/symbols/wtdsymbols.woff
Executable file
Binary file not shown.
BIN
platform/commonUI/general/res/fonts/symbols/wtdsymbols.woff2
Executable file
BIN
platform/commonUI/general/res/fonts/symbols/wtdsymbols.woff2
Executable file
Binary file not shown.
13
platform/commonUI/general/res/templates/bottombar.html
Normal file
13
platform/commonUI/general/res/templates/bottombar.html
Normal file
@ -0,0 +1,13 @@
|
||||
<div class='abs bottom-bar ue-bottom-bar'>
|
||||
<div id='status' class='status-holder abs'>
|
||||
<div id='status_data_flow' class='status block data-flow'>
|
||||
<span class='ui-symbol status-indicator ok'>.</span>
|
||||
<span class='label'>Connected</span>
|
||||
</div>
|
||||
<!--div id='status_data_connection' class='status block data-connection'>
|
||||
<span class='ui-symbol status-indicator caution'>D</span>
|
||||
<span class='label'>Connected CPU 0.1% / Mem 1.9%</span>
|
||||
</div-->
|
||||
</div>
|
||||
<!--mct-include key="'app-logo'"></mct-include-->
|
||||
</div>
|
@ -0,0 +1,10 @@
|
||||
<div class="accordion" ng-controller="AccordionController as accordion">
|
||||
<div class="accordion-head" ng-click="accordion.toggle()">
|
||||
{{container.title}}
|
||||
</div>
|
||||
<div class="accordion-contents"
|
||||
ng-show="accordion.expanded()"
|
||||
style="height: 180px;"
|
||||
ng-transclude>
|
||||
</div>
|
||||
</div>
|
@ -0,0 +1,12 @@
|
||||
<a href=""
|
||||
class="t-btn l-btn s-btn s-icon-btn s-very-subtle"
|
||||
ng-class="{ labeled: parameters.labeled }"
|
||||
title="{{parameters.action.getMetadata().description}}"
|
||||
ng-click="parameters.action.perform()">
|
||||
<span class="ui-symbol icon">
|
||||
{{parameters.action.getMetadata().glyph}}
|
||||
</span>
|
||||
<span class="title-label" ng-if="parameters.labeled">
|
||||
{{parameters.action.getMetadata().name}}
|
||||
</span>
|
||||
</a>
|
@ -0,0 +1,15 @@
|
||||
<span ng-controller="ActionGroupController">
|
||||
|
||||
<span ng-repeat="action in ungrouped">
|
||||
<mct-include key="'action-button'" parameters="{ action: action }">
|
||||
</mct-include>
|
||||
</span>
|
||||
|
||||
<span class="btn-set" ng-repeat="group in groups">
|
||||
<span ng-repeat="action in group">
|
||||
<mct-include key="'action-button'" parameters="{ action: action }">
|
||||
</mct-include>
|
||||
</span>
|
||||
</span>
|
||||
|
||||
</span>
|
@ -0,0 +1,28 @@
|
||||
<div class="menu-element btn icon-btn very-subtle btn-menu dropdown click-invoke"
|
||||
ng-if="ngModel.options.length > 1">
|
||||
|
||||
<span ng-click="ngModel.expanded = !ngModel.expanded">
|
||||
<span class="ui-symbol icon type-icon">{{ngModel.selected.glyph}}</span>
|
||||
<span>{{ngModel.selected.name}}</span>
|
||||
<span class='ui-symbol icon invoke-menu'>v</span>
|
||||
</span>
|
||||
|
||||
<div class="menu dropdown" ng-show="ngModel.expanded">
|
||||
<ul>
|
||||
<li ng-repeat="option in ngModel.options">
|
||||
<a href="" ng-click="ngModel.selected = option; ngModel.expanded = false;">
|
||||
<span class="ui-symbol type-icon icon">
|
||||
{{option.glyph}}
|
||||
</span>
|
||||
{{option.name}}
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<span class="btn"
|
||||
ng-if="ngModel.options.length === 1">
|
||||
<span class="ui-symbol icon type-icon">{{ngModel.selected.glyph}}</span>
|
||||
<span>{{ngModel.selected.name}}</span>
|
||||
</span>
|
7
platform/commonUI/general/res/templates/label.html
Normal file
7
platform/commonUI/general/res/templates/label.html
Normal file
@ -0,0 +1,7 @@
|
||||
<span class="label">
|
||||
<span class='ui-symbol icon type-icon'>
|
||||
{{type.getGlyph()}}
|
||||
<span class='ui-symbol icon alert hidden'>!</span>
|
||||
</span>
|
||||
<span class='title-label'>{{model.name}}</span>
|
||||
</span>
|
@ -0,0 +1,18 @@
|
||||
<div class="menu-element context-menu-wrapper" ng-controller="ContextMenuController">
|
||||
<div class="menu context-menu dropdown">
|
||||
<ul>
|
||||
|
||||
<li ng-repeat="menuAction in menuActions">
|
||||
<a href=""
|
||||
ng-click="menuAction.perform()"
|
||||
title="{{menuAction.getMetadata().description}}">
|
||||
<span class="ui-symbol icon type-icon">
|
||||
{{menuAction.getMetadata().glyph}}
|
||||
</span>
|
||||
{{menuAction.getMetadata().name}}
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
3
platform/commonUI/general/res/templates/test.html
Normal file
3
platform/commonUI/general/res/templates/test.html
Normal file
@ -0,0 +1,3 @@
|
||||
<b>
|
||||
<div style="width: 400px; border: 4px green solid; text-align:right;">{{model.name}}</div>
|
||||
</b>
|
19
platform/commonUI/general/res/templates/tree-item.html
Normal file
19
platform/commonUI/general/res/templates/tree-item.html
Normal file
@ -0,0 +1,19 @@
|
||||
<span ng-controller="TreeNodeController">
|
||||
<span class="tree-item menus-to-left">
|
||||
<span class='ui-symbol view-control' ng-click="toggle()" ng-if="model.composition !== undefined">
|
||||
{{node.expanded ? "v" : ">"}}
|
||||
</span>
|
||||
<mct-representation key="'label'"
|
||||
mct-object="domainObject"
|
||||
parameters="parameters"
|
||||
ng-click="parameters.callback(domainObject)"
|
||||
ng-class="{selected: node.isSelected}">
|
||||
</mct-representation>
|
||||
</span>
|
||||
<span class="tree-item-subtree" ng-show="node.expanded" ng-if="model.composition !== undefined">
|
||||
<mct-representation key="'tree'"
|
||||
parameters="parameters"
|
||||
mct-object="node.domainObject">
|
||||
</mct-representation>
|
||||
</span>
|
||||
</span>
|
6
platform/commonUI/general/res/templates/tree.html
Normal file
6
platform/commonUI/general/res/templates/tree.html
Normal file
@ -0,0 +1,6 @@
|
||||
<ul class="tree">
|
||||
<li ng-repeat="child in composition">
|
||||
<mct-representation key="'tree-item'" mct-object="child" parameters="parameters">
|
||||
</mct-representation>
|
||||
</li>
|
||||
</ul>
|
29
platform/commonUI/general/src/AccordionController.js
Normal file
29
platform/commonUI/general/src/AccordionController.js
Normal file
@ -0,0 +1,29 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining AccordionController. Created by vwoeltje on 11/14/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function AccordionController() {
|
||||
var isExpanded = true;
|
||||
return {
|
||||
toggle: function () {
|
||||
isExpanded = !isExpanded;
|
||||
},
|
||||
expanded: function () {
|
||||
return isExpanded;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return AccordionController;
|
||||
}
|
||||
);
|
59
platform/commonUI/general/src/ActionGroupController.js
Normal file
59
platform/commonUI/general/src/ActionGroupController.js
Normal file
@ -0,0 +1,59 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining ActionGroupController. Created by vwoeltje on 11/14/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function ActionGroupController($scope) {
|
||||
function groupActions(actions) {
|
||||
var groups = {},
|
||||
ungrouped = [];
|
||||
|
||||
function assignToGroup(action) {
|
||||
var metadata = action.getMetadata(),
|
||||
group = metadata.group;
|
||||
if (group) {
|
||||
groups[group] = groups[group] || [];
|
||||
groups[group].push(action);
|
||||
} else {
|
||||
ungrouped.push(action);
|
||||
}
|
||||
}
|
||||
|
||||
actions.forEach(assignToGroup);
|
||||
|
||||
$scope.ungrouped = ungrouped;
|
||||
$scope.groups = Object.keys(groups).map(function (k) {
|
||||
return groups[k];
|
||||
});
|
||||
}
|
||||
|
||||
function updateGroups() {
|
||||
var actionCapability = $scope.action,
|
||||
params = $scope.parameters ? $scope.parameters : {},
|
||||
category = params.category;
|
||||
|
||||
if (actionCapability && category) {
|
||||
groupActions(actionCapability.getActions({ category: category }));
|
||||
}
|
||||
}
|
||||
|
||||
$scope.$watch("domainObject", updateGroups);
|
||||
$scope.$watch("action", updateGroups);
|
||||
$scope.$watch("parameters.category", updateGroups);
|
||||
|
||||
$scope.ungrouped = [];
|
||||
$scope.groups = [];
|
||||
}
|
||||
|
||||
return ActionGroupController;
|
||||
}
|
||||
);
|
27
platform/commonUI/general/src/ContextMenuController.js
Normal file
27
platform/commonUI/general/src/ContextMenuController.js
Normal file
@ -0,0 +1,27 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining ContextMenuController. Created by vwoeltje on 11/17/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function ContextMenuController($scope) {
|
||||
function updateActions() {
|
||||
$scope.menuActions = $scope.action ?
|
||||
$scope.action.getActions({ category: 'contextual' }) :
|
||||
[];
|
||||
}
|
||||
|
||||
$scope.$watch("action", updateActions);
|
||||
}
|
||||
|
||||
return ContextMenuController;
|
||||
}
|
||||
);
|
57
platform/commonUI/general/src/MCTContainer.js
Normal file
57
platform/commonUI/general/src/MCTContainer.js
Normal file
@ -0,0 +1,57 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining MCTContainer. Created by vwoeltje on 11/17/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function MCTContainer(containers) {
|
||||
var containerMap = {};
|
||||
|
||||
// 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("/");
|
||||
});
|
||||
|
||||
return {
|
||||
restrict: 'E',
|
||||
transclude: true,
|
||||
scope: true,
|
||||
link: function (scope, element, attrs) {
|
||||
var key = attrs.key,
|
||||
container = containerMap[key],
|
||||
alias = "container",
|
||||
copiedAttributes = {};
|
||||
|
||||
if (container) {
|
||||
alias = container.alias || alias;
|
||||
(container.attributes || []).forEach(function (attr) {
|
||||
copiedAttributes[attr] = attrs[attr];
|
||||
});
|
||||
}
|
||||
|
||||
scope[alias] = copiedAttributes;
|
||||
},
|
||||
templateUrl: function (element, attrs) {
|
||||
var key = attrs.key;
|
||||
return containerMap[key].templateUrl;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
return MCTContainer;
|
||||
}
|
||||
);
|
90
platform/commonUI/general/src/TreeNodeController.js
Normal file
90
platform/commonUI/general/src/TreeNodeController.js
Normal file
@ -0,0 +1,90 @@
|
||||
/*global define,Promise*/
|
||||
|
||||
/**
|
||||
* Module defining TreeNodeController. Created by vwoeltje on 11/10/14.
|
||||
*/
|
||||
define(
|
||||
[],
|
||||
function () {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
*
|
||||
* @constructor
|
||||
*/
|
||||
function TreeNodeController($scope, navigationService) {
|
||||
var navigatedObject = navigationService.getNavigation();
|
||||
|
||||
function idsEqual(objA, objB) {
|
||||
return objA && objB && (objA.getId() === objB.getId());
|
||||
}
|
||||
|
||||
function parentOf(domainObject) {
|
||||
var context = domainObject &&
|
||||
domainObject.getCapability("context");
|
||||
return context && context.getParent();
|
||||
}
|
||||
|
||||
function getId(obj) {
|
||||
return obj.getId();
|
||||
}
|
||||
|
||||
function isOnNavigationPath(nodeObject, navObject) {
|
||||
var nodeContext = nodeObject &&
|
||||
nodeObject.getCapability('context'),
|
||||
navContext = navObject &&
|
||||
navObject.getCapability('context'),
|
||||
nodePath,
|
||||
navPath;
|
||||
|
||||
if (nodeContext && navContext) {
|
||||
nodePath = nodeContext.getPath().map(getId);
|
||||
navPath = navContext.getPath().map(getId);
|
||||
return (navPath.length > nodePath.length) &&
|
||||
nodePath.map(function (id, i) {
|
||||
return id === navPath[i];
|
||||
}).reduce(function (a, b) {
|
||||
return a && b;
|
||||
}, true);
|
||||
|
||||
}
|
||||
return false; // No context to judge by
|
||||
}
|
||||
|
||||
function checkNavigation() {
|
||||
var nodeObject = $scope.domainObject;
|
||||
|
||||
$scope.node.isSelected =
|
||||
idsEqual(nodeObject, navigatedObject) &&
|
||||
idsEqual(parentOf(nodeObject), parentOf(navigatedObject));
|
||||
// Expand if necessary
|
||||
if (!$scope.node.expanded && isOnNavigationPath(nodeObject, navigatedObject)) {
|
||||
$scope.toggle();
|
||||
}
|
||||
}
|
||||
|
||||
function setNavigation(object) {
|
||||
navigatedObject = object;
|
||||
checkNavigation();
|
||||
}
|
||||
|
||||
$scope.node = { expanded: false };
|
||||
|
||||
$scope.toggle = function () {
|
||||
var expanded = !$scope.node.expanded;
|
||||
$scope.node.expanded = expanded;
|
||||
|
||||
// Trigger load of composition, if needed
|
||||
$scope.node.domainObject = $scope.domainObject;
|
||||
};
|
||||
|
||||
navigationService.addListener(setNavigation);
|
||||
$scope.$on("$destroy", function () {
|
||||
navigationService.removeListener(setNavigation);
|
||||
});
|
||||
$scope.$watch("domainObject", checkNavigation);
|
||||
}
|
||||
|
||||
return TreeNodeController;
|
||||
}
|
||||
);
|
Loading…
x
Reference in New Issue
Block a user