Compare commits

...

337 Commits
cli ... open90a

Author SHA1 Message Date
Charles Hacskaylo
63798ff756 [Merge] Merge master-m-open90 back into open90
open #90
open #233

Conflicts:
	example/generator/src/SinewaveConstants.js
	platform/commonUI/general/bundle.json
	platform/commonUI/general/res/sass/_main.scss
	platform/commonUI/general/res/sass/user-environ/_layout.scss
	platform/commonUI/notification/src/NotificationIndicator.js
	platform/commonUI/themes/espresso/res/css/theme-espresso.css
	platform/commonUI/themes/espresso/res/sass/_constants.scss
	platform/commonUI/themes/snow/res/css/theme-snow.css
2015-11-03 17:38:17 -08:00
Charles Hacskaylo
2c7c7b90e6 Fixed JS var placement causing mvn to fail
open #90
open #233
2015-11-03 16:51:15 -08:00
Charles Hacskaylo
903778799f Fixed missing window reference causing test to fail
open #90
open #233
2015-11-03 16:45:11 -08:00
Charles Hacskaylo
09be19310b Resolved CSS conflicts
open #90
2015-11-03 15:44:10 -08:00
Charles Hacskaylo
c8848b5788 [Frontend] Tweaked spacing in Inspector header
open #90
2015-11-02 13:39:15 -08:00
Charles Hacskaylo
fe12cdefc5 [Frontend] Added icon to Inspector header
open #90
and updated icon;
2015-11-02 11:27:56 -08:00
Charles Hacskaylo
648cdcc86e Updated crosshair symbol for inspect
open #90
(cherry picked from commit 946a6d4)
2015-11-02 11:08:00 -08:00
Charles Hacskaylo
f7588d57c2 [Frontend] Added crosshair symbol for inspect
prod-uisymbols
open #90
(cherry picked from commit 91a4138)
2015-11-02 10:31:44 -08:00
Charles Hacskaylo
141a54cbd6 [Frontend] Tweaks in Inspector
open #90
Colors, spacing, properties layout mods;
2015-10-30 23:44:15 -07:00
Charles Hacskaylo
64c6ef6cfd [Frontend] Tweaks in Inspector
open #90
Colors, spacing, properties layout mods;
Checked in mobile and snow theme;
2015-10-30 18:31:02 -07:00
Charles Hacskaylo
fe8d9f6717 [Frontend] Mobile and margin tweaks
open #90
Margin off of right scrollbar added for treeview
in desktop only;
Repositioned nav to parent arrow button in
object-browse-bar;
2015-10-30 17:22:41 -07:00
Charles Hacskaylo
c913f173e3 [Frontend] Safety merge of master; minor fixes
open #90
IN-PROGRESS
Merged in latest from github/master;
Fixed margins when in edit mode;
Fixed edit area not utilizing overflow: auto properly;
TO-DO: verify mobile is Ok;
2015-10-30 17:09:04 -07:00
Charles Hacskaylo
b5b6546710 [Frontend] Significant change to look and behavior of mini-tabs
open #90
IN-PROGRESS
mini-tab location in markup in browse.html changed;
Single menu icon for collapsed treeview;
Close 'x' boxes instead of arrow icons;
TO-DO: verify mobile is Ok;
2015-10-30 15:25:12 -07:00
Victor Woeltjen
ec56fe7bfd Merge pull request #222 from nasa/open195
[Representation] Remove unknown templates from DOM
2015-10-30 13:39:14 -07:00
Victor Woeltjen
4abb48abd8 [Representation] Update parameters in JSDoc 2015-10-30 13:34:13 -07:00
Victor Woeltjen
a38d4829eb [Representation] Add JSDoc 2015-10-30 12:38:32 -07:00
Victor Woeltjen
d5f1d45759 [Representation] Use $templateRequest
...from templateLinker, to remove the need to use $http and
to explicitly cache templates.
2015-10-30 12:35:36 -07:00
Victor Woeltjen
5ed34c1c30 [Representation] Build URLs from templateLinker 2015-10-30 11:02:13 -07:00
Victor Woeltjen
5af3d575a2 [Representation] Remove redundant listener
The  event is already listened-for at the representation
level to trigger cleanup, including gestures, so the info gesture
does not need to listen for it as well.

Per code review feedback, nasa/openmctweb#222
2015-10-30 10:45:44 -07:00
Charles Hacskaylo
675c5be3da [Frontend] Tweaks to splitter edge shdw
open #90
IN-PROGRESS
2015-10-30 09:22:46 -07:00
Charles Hacskaylo
1dbd721b14 [Frontend] Significant mods to main layout strategy
open #90
IN-PROGRESS
To support desired edge-to-edge styling of Inspector pane;
Removed superflous .scss file;
Enhancements to splitter .scss to allow flush edging and
edge shadows;
2015-10-29 17:31:35 -07:00
Charles Hacskaylo
ddebbf119f [Frontend] Expand/collapse finessing
open #90
2015-10-29 12:58:34 -07:00
Charles Hacskaylo
8c4fdf5c1c [Frontend] Expand/collapse finessing
open #90
Icon positioning; top of treeview splitter moved
back down below to previous position;
2015-10-29 12:55:20 -07:00
Charles Hacskaylo
1b0ce7166d [Frontend] Bring in new collapse left and right pane symbols
open #90
open #188
(cherry picked from commit 9c90eb5)
2015-10-29 11:31:57 -07:00
Charles Hacskaylo
a0c6ddff5a [Frontend] Removed unused mini-tab-icon class
open #90
2015-10-29 11:22:18 -07:00
Charles Hacskaylo
f51230b3f7 [Frontend] Fixed erroneous classes wrapping Create button;
open #90
2015-10-29 11:21:22 -07:00
Charles Hacskaylo
660e9f0d4f [Frontend] Fixed color of menu-item divider items;
open #90
2015-10-29 10:10:06 -07:00
Charles Hacskaylo
59b24d91bb [Frontend] Tweaks to splitter-related SASS
open #90
New splitterHandleInset function;
Removed padding from Inspector pane;
2015-10-29 10:09:47 -07:00
Victor Woeltjen
df3b0bd6fb Merge pull request #221 from nasa/open203
[Documentation] Images missing from tutorials
2015-10-29 08:50:03 -07:00
Victor Woeltjen
5b475c9f64 [Representation] Add more test cases
...for TemplateLinker.
2015-10-29 08:27:20 -07:00
Victor Woeltjen
a48370abd3 [Representation] Update spec 2015-10-29 08:18:13 -07:00
Victor Woeltjen
54d608adb2 [Representation] Provide initial templates
...to avoid temporarily replacing with a comment when this
is not needed.
2015-10-29 08:17:25 -07:00
Victor Woeltjen
5fba6f5ead [Representation] Add more test cases
...for TemplateLinker, to achieve full code coverage.
2015-10-29 08:08:01 -07:00
Victor Woeltjen
b177c38656 [Representation] Add JSDoc
...to TelemetryLinker.
2015-10-29 07:58:32 -07:00
Charles Hacskaylo
11ca39b94c [Frontend] t-item-icon
open #90
Tweaked bottom position of link indicator;
2015-10-28 21:44:56 -07:00
Charles Hacskaylo
bb0e27ce1f [Frontend] Restored erroneously checked in bundles.json;
open #90
2015-10-28 21:35:43 -07:00
Charles Hacskaylo
56e8cd81e6 [Frontend] Refinements to t-item-icon
open #90
Scale approach to link indicator changed from
font-size to transform: scale;
Now works in tree, item grid and Inspector;
2015-10-28 21:34:01 -07:00
Victor Woeltjen
59cd346911 [Representation] Add test cases
...for TemplateLinker
2015-10-28 17:01:13 -07:00
Victor Woeltjen
e7e66bff4b [Representation] Begin adding TemplateLinker spec 2015-10-28 16:49:19 -07:00
Victor Woeltjen
ca62cc9066 [Representation] Update spec for mct-representation
...to account for usage of templateLinker to add or remove the
whole element from the DOM when there is or is not a template
to show.
2015-10-28 16:35:11 -07:00
Victor Woeltjen
01b6fda1f2 [Representation] Update spec for mct-include
...to account for usage of templateLinker to add or remove the
whole element from the DOM when there is or is not a template
to show.
2015-10-28 16:11:00 -07:00
Victor Woeltjen
ae0cb63a92 [Representation] Remove template tester
Remove template tester after verifying that mct-include/mct-representation
elements are added/removed to/from the DOM as appropriate.
2015-10-28 16:02:52 -07:00
Victor Woeltjen
5604bf6d69 [Representation] Add template tester
...to simply verification of mct-include/mct-representation
behavior.
2015-10-28 16:01:55 -07:00
Victor Woeltjen
c5fcc5a558 [Representation] Handle edge cases
Handle edge cases (e.g. directive priorities, race conditions)
to ensure that mct-representation and mct-include display correctly
when added to or removed from the DOM.
2015-10-28 15:57:47 -07:00
Victor Woeltjen
ea9f607bba [Representation] Handle undefined scope
element.scope() may be undefined when wiring in the info
gesture, so check for that.

That this is sometimes undefined appears to be a consequence
of changes to mct-representation, but which changes influence
this are unclear. In any event, it appears that this cannot
be relied-upon per https://github.com/angular/angular.js/issues/9515
2015-10-28 15:49:18 -07:00
Victor Woeltjen
0404303042 [Representation] Move changes back
Move changed lines back to their original location to simplify
diff.
2015-10-28 15:38:11 -07:00
Victor Woeltjen
5677548298 [Representation] Show element synchronously
...to avoid exceptions when trying to invoke representers
before an mct-representation has been added back into the
DOM.
2015-10-28 15:32:50 -07:00
Victor Woeltjen
bcc42d705e [Representation] Hide elements without transclusion 2015-10-28 15:30:27 -07:00
Victor Woeltjen
ab008ae497 [Representation] Begin integration
...of templateLinker into mct-representation. Not working currently
due to prevalence of mct-representation instances with transcluding
directives (hitting a multiple transclusion error.)
2015-10-28 15:17:36 -07:00
Victor Woeltjen
3d59f6df0b [Representation] Separate out template loading/linking
...from mct-include, to facilitate reuse for MCTRepresentation.
2015-10-28 14:51:30 -07:00
Andrew Henry
4708ac0ec1 Removed console.log 2015-10-28 11:26:20 -07:00
Andrew Henry
bd984abc0f Changed encoding of images to address https://github.com/nasa/openmctweb/issues/203 2015-10-28 11:14:07 -07:00
Victor Woeltjen
b4a44dee8f [Representation] Populate mct-include contents
Remove usage of ng-include and template from mct-include for
compatibility with element-level transclusion. Has useful
side effect of pre-fetching templates and reducing watch
count.
2015-10-28 11:13:53 -07:00
Victor Woeltjen
942f617bd8 [Representation] Use transclusion for mct-include
...to add/remove conditionally depending on the existence of
certain templates.

Note that this currently breaks mct-include due to an incompatibility
between element transclusion and directive templates; see
https://github.com/angular/angular.js/issues/3368.
2015-10-28 10:29:46 -07:00
Victor Woeltjen
757cb0f015 [Representation] Watch for key changes
...from mct-include. Improves behavior of that directive and supports
testing of changes to remove whole elements when inapplicable,
nasa/openmctweb#195.
2015-10-28 10:18:59 -07:00
Charles Hacskaylo
134d853f19 [Frontend] type-icon evolving to universal t-item-icon
open #90
Major work in-progress on switching to .t-item-icon from
.type-icon to get item icons working better, especially
in .inspector-location in Inspector;
Significant mods to label.html;
2015-10-28 00:24:57 -07:00
Charles Hacskaylo
fc704b8056 [Frontend] Fixed and finessed mobile expand collapse
open #90
Fixed problem of right pane primary not going all the way left;
Finessed timing of tree pane fade in / fade out;
2015-10-27 17:18:40 -07:00
Charles Hacskaylo
0a19ab4389 Merging in latest github/master
open #90
Squashed commit of the following:

commit a2d06583ca
Merge: 74f289c 5d5425d
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Tue Oct 27 14:04:49 2015 -0700

    Merge pull request #216 from nasa/open-vista54a

    Review and integrate open-vista54a into master

commit 5d5425db04
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date:   Tue Oct 27 11:50:16 2015 -0700

    [Frontend] Finessing and verifying CSS

    vista#54
    Verified against fixed position and scrolling views
    using SineWave generator;
    font-size of glyph tweaked;

commit a8856c0612
Author: Charles Hacskaylo <charlesh88@gmail.com>
Date:   Tue Oct 27 11:40:35 2015 -0700

    [Frontend] Platform-specific mods to limits

    vista#54
    Refactor limits into multiple classes, separating
    upr/lwr from red/yellow;
    Modded SineWaveLimitCapability accordingly;
    Normalized upr/lwr glyphs;
    (cherry picked from commit a26d71b)

commit 74f289cb34
Merge: 4ec243c 29bdc9d
Author: akhenry <akhenry@gmail.com>
Date:   Tue Oct 27 10:48:33 2015 -0700

    Merge pull request #206 from nasa/open150b

    [Plot] Ignore empty lines

commit 4ec243c6fb
Merge: 407d988 3d996ac
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Sat Oct 24 07:48:45 2015 -0700

    Merge pull request #212 from nasa/open211

    [RequireJS] Specify path for uuid

commit 407d9881ff
Merge: 6ee622b 21739ff
Author: akhenry <akhenry@gmail.com>
Date:   Fri Oct 23 19:16:51 2015 -0700

    Merge pull request #200 from nasa/open-toc

    [Documentation] Add table of contents

commit 6ee622b3f5
Merge: 099d70b 87e317a
Author: akhenry <akhenry@gmail.com>
Date:   Fri Oct 23 17:04:04 2015 -0700

    Merge pull request #192 from nasa/open153

    [CI] Remove non-existent bundle from procfile

commit 099d70b8d9
Merge: 90828ef 8e2a2ee
Author: akhenry <akhenry@gmail.com>
Date:   Fri Oct 23 17:00:46 2015 -0700

    Merge pull request #175 from nasa/open147

    [Entanglement] Add "Go To Original" action

commit 3d996ac466
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 23 16:32:05 2015 -0700

    [RequireJS] Specify path for uuid

    Specify path for uuid, making it available for any code that would require it,
    without that code needing to know the path to it.

    Fixes https://github.com/nasa/openmctweb/issues/211.

commit 90828ef63d
Merge: bf24ac7 dbebf08
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 23 16:23:29 2015 -0700

    Merge remote-tracking branch 'github-open/open181' into open-master

commit 29bdc9d574
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Fri Oct 23 13:04:06 2015 -0700

    [Plot] Ignore empty lines

    Ignore empty lines (plot lines with no data) when determining
    domain extrema; avoids failure to draw multiple plot lines in
    a telemetry panel, nasa/openmctweb#150.

commit bf24ac7c93
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Fri Oct 23 12:14:46 2015 -0700

    [Search] Update field name

    Update field name in GenericSearchProvider to reflect changes
    from nasa/openmctweb#193. Avoids exceptions on mutation.

    Additionally, add test case exercising relevant code and verifying
    that reindexing is scheduled upon mutation as expected.

commit 59f094763b
Merge: 3080861 496cf85
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Thu Oct 22 16:58:02 2015 -0700

    Merge pull request #193 from nasa/search-performance

    Search performance

commit dbebf08500
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Wed Oct 21 15:38:58 2015 -0700

    [Time Controller] Add test cases

    ...to verify behavior on text entry of dates.

commit 847c356063
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Wed Oct 21 15:26:42 2015 -0700

    [Time Controller] Change color when input is invalid

    nasa/openmctweb#181

commit 06bcd28558
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Wed Oct 21 15:22:00 2015 -0700

    [Time Controller] Keep inputs in sync

    Keep inputs in sync with displayed data in time controller,
    without overwriting user-entered text. nasa/openmctweb#181

commit f88e8ebb51
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Wed Oct 21 15:08:44 2015 -0700

    [Time Controller] Update model state for text entry

commit 6d2b2fd81e
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Wed Oct 21 14:46:12 2015 -0700

    [Time Controller] Parse user-entered timestamps

    nasa/openmctweb#181.

commit 608800ae63
Merge: 07818b0 fb0ce1e
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Wed Oct 21 14:40:42 2015 -0700

    Merge remote-tracking branch 'github/master' into open181

    Conflicts:
    	platform/commonUI/general/res/templates/controls/time-controller.html

commit 07818b0a6d
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Wed Oct 21 14:35:18 2015 -0700

    [Time Controller] Show bounds in a text field

    Show bounds in a text field to allow user editing; supports manual
    editing of time controller bounds, nasa/openmctweb#181.

commit 496cf85b7e
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Wed Oct 21 09:46:32 2015 -0700

    [JSDoc] Correct mistake

commit 833f57e284
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Wed Oct 21 07:39:59 2015 -0700

    [Search] Don't block UI between requests

    Timeout subsequent calls to keepIndexing at the end of a
    indexRequest, so that UI operations are not blocked.

commit 9a63e99710
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Tue Oct 20 16:01:42 2015 -0700

    [Search] Add spec for ElasticSearchProvider

    Add spec coverage for ElasticSearchProvider.  Also remove
    unneeded guards for max number of results, as the aggregator
    will always provide a max number of results.

commit 21739fffd9
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Tue Oct 20 15:52:49 2015 -0700

    [Documentation] Add table of contents

    Add table of contents to generated documents, without
    modifying document sources; nasa/openmctweb#189.

commit 77d81f899b
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Tue Oct 20 15:31:33 2015 -0700

    [Style] JSLint compliance

commit fe3263fdfe
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Tue Oct 20 15:27:46 2015 -0700

    [Search] Remove invalid specs

commit ce42429fbd
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Tue Oct 20 15:14:43 2015 -0700

    [Search] expose constants, add fudge factor

    The SearchAggregator exposes it's constants to add stability to
    tests.

    It also has a fudge factor which increaases the number of results
    it requests from providers to better support pagination when using
    client side filtering.

commit 76151d09a0
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Tue Oct 20 15:13:37 2015 -0700

    [Search] use service for filters, add spec

    Add a spec for the SearchController, and use the SearchService to
    execute filters by supplying a filterPredicate.

commit ec7e6cc5b4
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Tue Oct 20 13:55:46 2015 -0700

    [Search] Update spec for Generic Search Worker

commit 1ddce48f7e
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Tue Oct 20 13:12:04 2015 -0700

    [Search] Specs for GenericSearchProvider

    Write specs for GenericSearchProvider and resolve some implementation
    bugs they uncovered.

commit 98b5ff3c77
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 16 18:14:33 2015 -0700

    [Search] Decrement number of pending requests

commit 14094a48fc
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 16 17:33:23 2015 -0700

    [Search] Remove old specs in prep for rewrite

    Remove old specs in prep for rewrite.

commit 8e2a2eeba5
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Mon Oct 19 12:08:49 2015 -0700

    [Entanglement] Add license headers

    ...per code review feedback from nasa/openmctweb#175

commit 0f63e4dde9
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 16 17:06:23 2015 -0700

    [Tests] Rewrite search aggregator specs

commit 12efb47be7
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 16 16:09:51 2015 -0700

    [Search] Remove timeouts and timestamps

    Remove timeouts and timestamps which were not effectively doing anything.

commit a2fce8e56c
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 16 16:05:31 2015 -0700

    [Search] Rewrite elasticsearch provider with prototype

    Rewrite the elasticsearch provider to use prototypes and clean up the implementation.

    Now returns a modelResults object to keep it in line with the general search
    provider.

commit 78e5c0143b
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 16 15:26:46 2015 -0700

    [Search] Overhaul generic search provider

    Rewrite the generic search provider to use prototypes.  Increase performance
    by utilizing the model service instead of the object service, and use a
    simplified method of request queueing.

commit 099591ad2e
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 16 15:26:04 2015 -0700

    [Search] Aggregator returns objects, providers return models

    Search providers return search results as models for domain objects, as the
    actual number of max results is enforced by the aggregator, and because the
    individual providers store and return the models for their objects already.

    This lowers the amount of resources consumed instantiating domain objects, and
    also allows the individual search providers to implement function-based
    filtering on domain object models, which is beneficial as it allows the search
    filtering in the search controller to be done before paginating of results.

commit b5505f372f
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 16 12:39:41 2015 -0700

    [Search] Generic Worker Performance Tweaks

    The generic search worker now does indexing work during the index operation,
    ensuring that queries do not have to do extraneous or repeat calculations.

    Change the return format slightly and fixed a bug in the GenericSearchProvider
    which caused more objects than intended to be returned from the provider.

commit 9ad860babd
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 16 12:34:47 2015 -0700

    [Search] Rewrite search controller, tidy

    Rewrite the search controller, making numerous changes and using prototypical
    style.

    First, the search controller immediately hides previous results when a new
    search is started.  Secondly, the search controller ensures that search results
    displayed match the currently entered query, preventing race conditions.  Finally,
    the search controller uses a poor filtering option that means it may not display
    all results.

commit 87e317a6f5
Author: Pete Richards <peter.l.richards@nasa.gov>
Date:   Fri Oct 16 11:33:42 2015 -0700

    [CI] Remove non-existent bundle from procfile

    Remove the example/localstorage bundle from the procfile.

    Fixes #153.

commit bf41d82a78
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Tue Oct 6 16:50:35 2015 -0700

    [Entanglement] Restore missing specs

    Restore specs which had been omitted from suite.json (but currently
    succeed for the relevant scripts); done in the context of
    nasa/openmctweb#147

commit a4944717a1
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Tue Oct 6 16:47:37 2015 -0700

    [Location] Test getOriginal method

commit 70bbd3cf97
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Tue Oct 6 16:37:37 2015 -0700

    [Entanglement] Add test cases for Go To Original

commit e3afaf0842
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Tue Oct 6 16:22:16 2015 -0700

    [Entanglement] Add Go To Original

    nasa/openmctweb#147

commit 60f2f9fb6c
Author: Victor Woeltjen <victor.woeltjen@nasa.gov>
Date:   Tue Oct 6 16:08:48 2015 -0700

    [Location] Add getOriginal method

    Add a getOriginal method to the location capability, to simplify
    loading of original versions of objects. nasa/openmctweb#147
2015-10-27 17:17:10 -07:00
Victor Woeltjen
a2d06583ca Merge pull request #216 from nasa/open-vista54a
Review and integrate open-vista54a into master
2015-10-27 14:04:49 -07:00
Charles Hacskaylo
5d5425db04 [Frontend] Finessing and verifying CSS
vista#54
Verified against fixed position and scrolling views
using SineWave generator;
font-size of glyph tweaked;
2015-10-27 11:50:16 -07:00
Charles Hacskaylo
a8856c0612 [Frontend] Platform-specific mods to limits
vista#54
Refactor limits into multiple classes, separating
upr/lwr from red/yellow;
Modded SineWaveLimitCapability accordingly;
Normalized upr/lwr glyphs;
(cherry picked from commit a26d71b)
2015-10-27 11:43:28 -07:00
akhenry
74f289cb34 Merge pull request #206 from nasa/open150b
[Plot] Ignore empty lines
2015-10-27 10:48:33 -07:00
Charles Hacskaylo
daed6a5b06 Frontend] Tweaked sizes of mini-tabs and pane collapsed edge margin
open #90
2015-10-26 15:01:32 -07:00
Charles Hacskaylo
498f854bef Frontend] Treeview expand/collapse anim timing tweaks
open #90
2015-10-26 14:54:09 -07:00
Charles Hacskaylo
77a1a90905 Frontend] Normalizing styles for items and l-icon-link
open #90
2015-10-26 14:48:50 -07:00
Charles Hacskaylo
f655346f46 Frontend] More refining of collapsing treeview
open #90
Treeview and Inspector should be hidden by default
when opening in a new tab;
2015-10-26 12:19:37 -07:00
Charles Hacskaylo
7d42292184 Frontend] More refining of collapsing treeview
open #90
Treeview and search now transition properly when user collapses
left pane while searching;
2015-10-26 10:35:41 -07:00
Charles Hacskaylo
fd582d45d2 Frontend] More refining of collapsing treeview
open #90
Create and Search controls now properly change
to mini-tabs when treeview is collapsed;
Mods to .create-btn to use :before for symbol instead of span;
 TO-DO: why does mct-device alter the order of items in the rendered
 markup?
2015-10-26 10:01:52 -07:00
Charles Hacskaylo
8ee4fc9b71 [Frontend] Fixed spacing of panes and mini-tabs
open #90
Splitter spacing now being handled in CSS, so
modded calcs in MCTSplitPane to not add space;
CSS calcs adjusted; comments removed;
2015-10-24 18:43:13 -07:00
Charles Hacskaylo
99c977ce9d [Frontend] Fixed mini-tab positioning algorithm
open #90
2015-10-24 17:48:59 -07:00
Charles Hacskaylo
85809ae1e1 [Frontend] Fixed mini-tab positioning algorithm
open #90
2015-10-24 17:01:52 -07:00
Victor Woeltjen
4ec243c6fb Merge pull request #212 from nasa/open211
[RequireJS] Specify path for uuid
2015-10-24 07:48:45 -07:00
Charles Hacskaylo
94649b12fd [Frontend] Splitter re-styling
open #90
Significant redo of splitter styling;
2015-10-23 20:06:38 -07:00
akhenry
407d9881ff Merge pull request #200 from nasa/open-toc
[Documentation] Add table of contents
2015-10-23 19:16:51 -07:00
Charles Hacskaylo
aa3cf70b22 [Frontend] Expand/collapse styling
open #90
Significant styling on new mini-tabs;
Main layout margins adjusted;
2015-10-23 18:24:55 -07:00
akhenry
6ee622b3f5 Merge pull request #192 from nasa/open153
[CI] Remove non-existent bundle from procfile
2015-10-23 17:04:04 -07:00
akhenry
099d70b8d9 Merge pull request #175 from nasa/open147
[Entanglement] Add "Go To Original" action
2015-10-23 17:00:46 -07:00
Pete Richards
3d996ac466 [RequireJS] Specify path for uuid
Specify path for uuid, making it available for any code that would require it,
without that code needing to know the path to it.

Fixes https://github.com/nasa/openmctweb/issues/211.
2015-10-23 16:32:05 -07:00
Pete Richards
90828ef63d Merge remote-tracking branch 'github-open/open181' into open-master 2015-10-23 16:23:29 -07:00
Charles Hacskaylo
17b3378655 [Frontend] Expand/collapse styling
open #90
Modding mini-tab look, just started;
2015-10-23 15:36:52 -07:00
Charles Hacskaylo
efd209826d [Frontend] Inspector styling, in progress
open #90
Significant styling in object-inspector.html;
2015-10-23 15:14:07 -07:00
Victor Woeltjen
29bdc9d574 [Plot] Ignore empty lines
Ignore empty lines (plot lines with no data) when determining
domain extrema; avoids failure to draw multiple plot lines in
a telemetry panel, nasa/openmctweb#150.
2015-10-23 13:22:19 -07:00
Charles Hacskaylo
a7ea4c3c6e [Frontend] Inspector styling, in progress
open #90
2015-10-23 12:35:55 -07:00
Victor Woeltjen
bf24ac7c93 [Search] Update field name
Update field name in GenericSearchProvider to reflect changes
from nasa/openmctweb#193. Avoids exceptions on mutation.

Additionally, add test case exercising relevant code and verifying
that reindexing is scheduled upon mutation as expected.
2015-10-23 12:23:01 -07:00
Charles Hacskaylo
1d3870d07f [Frontend] Manual integration of Inspector
open #90
open #73
Adding missed new files;
2015-10-23 11:42:06 -07:00
Charles Hacskaylo
2452b25fd4 [Frontend] Manual integration of Inspector
open #90
open #73
In-progress manual integrated Sarah Hale's work on ObjectInspector;
2015-10-23 11:37:02 -07:00
Charles Hacskaylo
0c4d422e2d [Frontend] Manual re-do of collapse/expand panes
open #90
Refactored templates to move all split-pane elements into browse.html;
2015-10-23 11:13:51 -07:00
Charles Hacskaylo
a283a2a0d3 [Frontend] Manual re-do of collapse/expand panes
open #90
Animation, styles, hide-show added panes and splitters;
Finessed spacing;
trans-prop* mixins normalized and added delay arg;
2015-10-23 10:52:28 -07:00
Charles Hacskaylo
827e1af581 [Frontend] Manual re-do of collapse/expand panes
open #90
Added code to MCTSplitter and MCTSplitPane to allow
toggling of CSS class 'resizing' on pane elements when
the user is actively using the splitter;
Added resize transition animation to split pane elements
when user not actively resizing;
2015-10-23 09:18:59 -07:00
Charles Hacskaylo
57f11a9767 [Frontend] Manual re-do of collapse/expand panes
open #90
Refined positioning of .mini-tab elements when
panes are collapsed;
2015-10-22 19:26:59 -07:00
Charles Hacskaylo
3687cc5edd [Frontend] Manual re-do of collapse/expand panes
open #90
Fixed broken mobile styles;
Removed commented out scss;
2015-10-22 18:45:47 -07:00
Charles Hacskaylo
bf17b77e82 Merge remote-tracking branch 'github/prod-uisymbols' into open90 2015-10-22 18:28:55 -07:00
Charles Hacskaylo
536d5616d4 [Frontend] Manual re-do of collapse/expand panes
open #90
Major work on new .mini-tab elements, used
as controls to expand/collapse panes;
Cleaned up splitter hover behavior;
Changed mixin controlGrippy to not be tied
to :before;
2015-10-22 18:28:25 -07:00
Victor Woeltjen
59f094763b Merge pull request #193 from nasa/search-performance
Search performance
2015-10-22 16:58:02 -07:00
Charles Hacskaylo
4f27104663 [Frontend] Manual re-do of collapse/expand panes
open #90
Implementing PaneController;
Added inspection pane and toggle button in
browse-object.html;
2015-10-22 14:26:22 -07:00
Charles Hacskaylo
b98c1cdfe8 [Frontend] Manual re-do of collapse/expand panes
open #90
Renamed BrowseTreeController to PaneController;
Ensuring mobile functionality parity;
2015-10-22 13:34:16 -07:00
Victor Woeltjen
3080861764 Merge pull request #189 from nasa/open111
Developer Guide, Tutorials
2015-10-21 15:42:11 -07:00
Victor Woeltjen
dbebf08500 [Time Controller] Add test cases
...to verify behavior on text entry of dates.
2015-10-21 15:38:58 -07:00
Victor Woeltjen
847c356063 [Time Controller] Change color when input is invalid
nasa/openmctweb#181
2015-10-21 15:26:42 -07:00
Victor Woeltjen
06bcd28558 [Time Controller] Keep inputs in sync
Keep inputs in sync with displayed data in time controller,
without overwriting user-entered text. nasa/openmctweb#181
2015-10-21 15:22:00 -07:00
Victor Woeltjen
f88e8ebb51 [Time Controller] Update model state for text entry 2015-10-21 15:08:44 -07:00
Victor Woeltjen
6d2b2fd81e [Time Controller] Parse user-entered timestamps
nasa/openmctweb#181.
2015-10-21 14:46:12 -07:00
Victor Woeltjen
608800ae63 Merge remote-tracking branch 'github/master' into open181
Conflicts:
	platform/commonUI/general/res/templates/controls/time-controller.html
2015-10-21 14:40:42 -07:00
Victor Woeltjen
07818b0a6d [Time Controller] Show bounds in a text field
Show bounds in a text field to allow user editing; supports manual
editing of time controller bounds, nasa/openmctweb#181.
2015-10-21 14:35:18 -07:00
Pete Richards
496cf85b7e [JSDoc] Correct mistake 2015-10-21 09:46:32 -07:00
Pete Richards
833f57e284 [Search] Don't block UI between requests
Timeout subsequent calls to keepIndexing at the end of a
indexRequest, so that UI operations are not blocked.
2015-10-21 07:51:53 -07:00
Andrew Henry
cc97408433 Removed inserted TOC 2015-10-20 21:16:54 -07:00
Andrew Henry
93f8e61c40 roll back TOC generation 2015-10-20 21:12:14 -07:00
Pete Richards
9a63e99710 [Search] Add spec for ElasticSearchProvider
Add spec coverage for ElasticSearchProvider.  Also remove
unneeded guards for max number of results, as the aggregator
will always provide a max number of results.
2015-10-20 16:01:42 -07:00
Victor Woeltjen
21739fffd9 [Documentation] Add table of contents
Add table of contents to generated documents, without
modifying document sources; nasa/openmctweb#189.
2015-10-20 15:58:57 -07:00
Pete Richards
77d81f899b [Style] JSLint compliance 2015-10-20 15:33:56 -07:00
Pete Richards
fe3263fdfe [Search] Remove invalid specs 2015-10-20 15:27:46 -07:00
Pete Richards
ce42429fbd [Search] expose constants, add fudge factor
The SearchAggregator exposes it's constants to add stability to
tests.

It also has a fudge factor which increaases the number of results
it requests from providers to better support pagination when using
client side filtering.
2015-10-20 15:17:15 -07:00
Pete Richards
76151d09a0 [Search] use service for filters, add spec
Add a spec for the SearchController, and use the SearchService to
execute filters by supplying a filterPredicate.
2015-10-20 15:17:15 -07:00
Pete Richards
ec7e6cc5b4 [Search] Update spec for Generic Search Worker 2015-10-20 15:17:14 -07:00
Pete Richards
1ddce48f7e [Search] Specs for GenericSearchProvider
Write specs for GenericSearchProvider and resolve some implementation
bugs they uncovered.
2015-10-20 15:17:14 -07:00
Pete Richards
98b5ff3c77 [Search] Decrement number of pending requests 2015-10-20 15:17:14 -07:00
Pete Richards
14094a48fc [Search] Remove old specs in prep for rewrite
Remove old specs in prep for rewrite.
2015-10-20 15:16:54 -07:00
Charles Hacskaylo
be79c104fb [Frontend] Added new glyph
prod-uisymbols
Added e612 Save icon;
2015-10-20 12:36:11 -07:00
Victor Woeltjen
8e2a2eeba5 [Entanglement] Add license headers
...per code review feedback from nasa/openmctweb#175
2015-10-19 12:08:49 -07:00
Charles Hacskaylo
fb0ce1eca8 [Frontend] New .loading class
open #190
Removed old .loading styles previously
commented out;
2015-10-19 11:13:50 -07:00
Pete Richards
0f63e4dde9 [Tests] Rewrite search aggregator specs 2015-10-16 17:06:23 -07:00
Pete Richards
12efb47be7 [Search] Remove timeouts and timestamps
Remove timeouts and timestamps which were not effectively doing anything.
2015-10-16 16:09:51 -07:00
Pete Richards
a2fce8e56c [Search] Rewrite elasticsearch provider with prototype
Rewrite the elasticsearch provider to use prototypes and clean up the implementation.

Now returns a modelResults object to keep it in line with the general search
provider.
2015-10-16 16:05:31 -07:00
Pete Richards
78e5c0143b [Search] Overhaul generic search provider
Rewrite the generic search provider to use prototypes.  Increase performance
by utilizing the model service instead of the object service, and use a
simplified method of request queueing.
2015-10-16 15:30:14 -07:00
Pete Richards
099591ad2e [Search] Aggregator returns objects, providers return models
Search providers return search results as models for domain objects, as the
actual number of max results is enforced by the aggregator, and because the
individual providers store and return the models for their objects already.

This lowers the amount of resources consumed instantiating domain objects, and
also allows the individual search providers to implement function-based
filtering on domain object models, which is beneficial as it allows the search
filtering in the search controller to be done before paginating of results.
2015-10-16 15:26:04 -07:00
Pete Richards
b5505f372f [Search] Generic Worker Performance Tweaks
The generic search worker now does indexing work during the index operation,
ensuring that queries do not have to do extraneous or repeat calculations.

Change the return format slightly and fixed a bug in the GenericSearchProvider
which caused more objects than intended to be returned from the provider.
2015-10-16 12:39:41 -07:00
Pete Richards
9ad860babd [Search] Rewrite search controller, tidy
Rewrite the search controller, making numerous changes and using prototypical
style.

First, the search controller immediately hides previous results when a new
search is started.  Secondly, the search controller ensures that search results
displayed match the currently entered query, preventing race conditions.  Finally,
the search controller uses a poor filtering option that means it may not display
all results.
2015-10-16 12:34:47 -07:00
Pete Richards
87e317a6f5 [CI] Remove non-existent bundle from procfile
Remove the example/localstorage bundle from the procfile.

Fixes #153.
2015-10-16 11:33:42 -07:00
Charles Hacskaylo
d7bd793bf3 [Frontend] New .loading class
open #190
CSS for revised .loading class;
Commented out/removed old .loading styles;
Theme constants for loading colors added
to theme files;
2015-10-15 16:23:42 -07:00
Henry
9d17768327 Updated tutorial to reference app.js built in web server instead of http-server 2015-10-15 15:51:54 -07:00
Henry
688718cad0 Fixed jslint errors 2015-10-15 13:10:03 -07:00
Andrew Henry
efb7611f6e Added Table of Contents generation 2015-10-15 12:35:38 -07:00
Andrew Henry
d3ff0a258e Added links to architecture document from services 2015-10-14 19:18:27 -07:00
Andrew Henry
4f18663c71 Fixed title in tutorials 2015-10-14 17:14:00 -07:00
Andrew Henry
8c2a29e895 Modified file copy prcess to prevent encoding of png's as utf8 2015-10-14 17:11:08 -07:00
Charles Hacskaylo
821a1a485c [Production] Updated symbols font to v25
open #188
Added icon-dataset e611;
2015-10-14 16:45:55 -07:00
Charles Hacskaylo
9cc0c0b06f [Frontend] Polishing of styles for time-controller
open #179
open #180
Font-size normalized for time-controller and domain selector;
Layout of object-holder and time-controller fixed;
2015-10-14 10:25:05 -07:00
Henry
5b617295e9 Did review of tutorials 2015-10-13 13:54:24 -07:00
Andrew Henry
53a3a2f459 Additional editing 2015-10-13 13:54:24 -07:00
Andrew Henry
64fae21d16 Fixed code formatting error 2015-10-13 13:54:24 -07:00
Andrew Henry
87f48aac35 Fixed code formatting error 2015-10-13 13:54:24 -07:00
Andrew Henry
e43a788a6d Fixed code formatting error 2015-10-13 13:54:24 -07:00
Andrew Henry
fa487e026e Fixed code formatting error 2015-10-13 13:54:24 -07:00
Andrew Henry
3701fd75dd Finished first pass of tutorials 2015-10-13 13:54:24 -07:00
Andrew Henry
d787e84fd4 Updated tutorials 2015-10-13 13:54:24 -07:00
Andrew Henry
1922e1e241 Finished developer guide
Fixed date of modification
2015-10-13 13:54:24 -07:00
Andrew Henry
e52f53b7ff Fixed markdown 2015-10-13 13:54:24 -07:00
Andrew Henry
d1be256691 Reverted gendocs changes 2015-10-13 13:54:12 -07:00
Pete Richards
c703714cb3 Merge remote-tracking branch 'github-open/open115b' into open-master 2015-10-09 13:50:27 -07:00
Victor Woeltjen
b48a07cd3e Merge pull request #168 from nasa/mct80
[Plot] Dates show 1970 when there is no data
2015-10-09 13:40:04 -07:00
Pete Richards
8c29c8ed0e Merge remote-tracking branch 'github-open/open151' into open-master 2015-10-09 13:38:20 -07:00
Victor Woeltjen
5763511ec8 [Time Conductor] Update specs
Update specs to reflect merge of latest from master into
topic branch for nasa/openmctweb#115, domain selector.
2015-10-09 11:17:57 -07:00
Victor Woeltjen
2accf21518 [Time Conductor] Add missing semicolon
...to pass code style checks.
2015-10-09 11:08:02 -07:00
Victor Woeltjen
28c42fcd4c [Time Conductor] Fix merge issues
Fix merge issues not addressed during conflict resolution.
2015-10-09 11:06:41 -07:00
Victor Woeltjen
1efa97e6f5 Merge remote-tracking branch 'github/master' into open115b
Conflicts:
	platform/features/conductor/src/ConductorRepresenter.js
2015-10-09 10:32:43 -07:00
Victor Woeltjen
756f728865 Merge remote-tracking branch 'github/open1515' into open-master 2015-10-09 10:11:11 -07:00
Victor Woeltjen
d8276c532b Merge remote-tracking branch 'github/master' into open115b
Merge in latest from master into topic branch for
nasa/openmctweb#115

Conflicts:
	platform/features/conductor/src/ConductorRepresenter.js
	platform/features/conductor/src/ConductorTelemetrySeries.js
	platform/features/conductor/src/TimeConductor.js
	platform/features/conductor/test/ConductorRepresenterSpec.js
	platform/features/conductor/test/ConductorTelemetrySeriesSpec.js
2015-10-09 10:04:15 -07:00
Pete Richards
fc0bfa77db Merge remote-tracking branch 'github-open/open141' into open141-integration 2015-10-09 09:52:35 -07:00
Pete Richards
12c6e53939 Merge remote-tracking branch 'github-open/open157' into open-master 2015-10-09 09:47:23 -07:00
Victor Woeltjen
4f716ad5c5 Merge pull request #162 from nasa/open117
Review and integrate open117
2015-10-09 09:44:48 -07:00
Pete Richards
8093fcbda1 Merge remote-tracking branch 'github-open/open139c' into open-master 2015-10-09 09:42:22 -07:00
Pete Richards
0ea5721f76 Merge remote-tracking branch 'github-open/open-readme-cairo' into open-master 2015-10-09 09:38:32 -07:00
Victor Woeltjen
d902943552 [Time Conductor] Satisfy JSLint
...in preparation to merge pull request nasa/openmctweb#162
2015-10-09 09:36:57 -07:00
Victor Woeltjen
5f7c8ccadb Merge remote-tracking branch 'github/master' into open117b 2015-10-09 09:35:07 -07:00
Victor Woeltjen
520d17f9db [Time Conductor] Test span constraints
Verify that inner and outer spans do not become zero when
user input might otherwise cause this.
2015-10-09 09:29:01 -07:00
Victor Woeltjen
7532db5f49 [Time Conductor] Add test cases
Add test cases to TimeRangeController; testing existing functionality
in the context of nasa/openmctweb#151
2015-10-09 07:58:10 -07:00
Victor Woeltjen
ebd8fdeee3 [Time Conductor] Enforce inner minimums on outer changes 2015-10-09 07:32:46 -07:00
Victor Woeltjen
f738f84075 [Time Conductor] Enforce minimum outer span 2015-10-08 16:02:47 -07:00
Victor Woeltjen
cc19a0acba [Time Conductor] Enforce minimum inner span
nasa/openmctweb#151.
2015-10-08 15:51:23 -07:00
Victor Woeltjen
134b749bbf [Generic Search] Track pending indexes
Track domain objects which have indexing operations pending,
to avoid redundantly indexing in cases where a broader
indexed check is insufficient.
2015-10-05 10:11:38 -07:00
Victor Woeltjen
36d06e8b54 [Generic Search] Reduce flush interval
Per discussion from nasa/openmctweb#141, minimize the
interval at which new objects get indexed, instead of
presuming requirements for CPU utilization.
2015-10-05 10:06:55 -07:00
Victor Woeltjen
5520d90984 [Generic Search] Remove comments
Per code review, nasa/openmctweb#165
2015-10-05 09:57:46 -07:00
Victor Woeltjen
77b0086d18 [Generic Search] Use appropriate data structure
Per code review, nasa/openmctweb#165
2015-10-05 09:54:57 -07:00
Victor Woeltjen
146e948097 [Time Conductor] Remove telemetry series wrapper
WTD-1515
2015-10-02 16:47:13 -07:00
Victor Woeltjen
669b434c36 [Time Conductor] Test broadcast throttling 2015-10-02 16:38:32 -07:00
Victor Woeltjen
431c74ca49 [Time Conductor] Only update bounds when stable 2015-10-02 16:28:58 -07:00
Victor Woeltjen
cd0c0f77cc [Time Conductor] Throttle display bounds broadcasting 2015-10-02 16:20:31 -07:00
Victor Woeltjen
8cba321886 [Plot] Move throttling out of plot
Move throttling associated with display bounds changes out
of Plot.
2015-10-02 16:11:12 -07:00
Victor Woeltjen
dd83816035 [Time Conductor] Remove queryStart, queryEnd
...per feedback from code review, nasa/openmctweb#104
2015-10-02 16:08:44 -07:00
Victor Woeltjen
1ca2b769d9 [Common UI] Test popupService 2015-10-02 15:44:36 -07:00
Victor Woeltjen
a1d1261179 [Common UI] Test Popup 2015-10-02 14:58:20 -07:00
Victor Woeltjen
99048a4ee3 [Info Service] Update spec
...to reflect usage of popupService.
2015-10-02 14:49:27 -07:00
Victor Woeltjen
553b17fafe [Common UI] Update mct-popup spec
...to reflect usage of popupService.
2015-10-02 14:36:04 -07:00
Victor Woeltjen
c4aff95341 [Common UI] Add empty specs for popupService 2015-10-02 14:15:31 -07:00
Victor Woeltjen
13095b4135 [Context Menu] Update specs
Update specs to reflect refactoring-out of popup elements
performed in the context of adding time conductor, WTD-1515.
2015-10-02 14:14:34 -07:00
Victor Woeltjen
fd927d4c03 Merge remote-tracking branch 'github/master' into open1515 2015-10-02 12:31:00 -07:00
Victor Woeltjen
445f22ccb0 [Context Menu] Use popupService to display menus 2015-10-02 11:01:49 -07:00
Victor Woeltjen
1ad0bf337c [Common UI] Use popupService from mct-popup 2015-10-02 10:48:45 -07:00
Victor Woeltjen
73dc16d398 [Info Service] Render info bubble after positioning
Render info bubble after positioning with the popupService,
to apply arrow classes appropriately.
2015-10-02 10:21:42 -07:00
Victor Woeltjen
bebe53820f [Info Service] Choose arrow direction 2015-10-02 09:36:27 -07:00
Victor Woeltjen
dfe909d6b5 [Time Conductor] Show appropriate arrow
...on info bubbles, when using bubbles shown via the
popupService.
2015-10-01 16:59:12 -07:00
Henry
3cf62ded08 Plot axes do not show labels when no data
Added semicolon

Added test for hasDomainData()

Added test for negative case on domain data check

Removed label test due to mocked telemetry formatter

Uncommented test commented by accident

Removed extra space
2015-10-01 16:35:14 -07:00
Victor Woeltjen
6cbd3e5fae [Time Conductor] Use popupService from infoService 2015-10-01 16:25:33 -07:00
Victor Woeltjen
3050b265fb [Time Conductor] Expose popupService 2015-10-01 15:27:36 -07:00
Victor Woeltjen
5104a7990a [Time Conductor] Add popupService
...to consolidate positioning of popups, based on
commonality between InfoService and MCTPopup.
nasa/openmctweb#104.
2015-10-01 15:26:00 -07:00
Victor Woeltjen
571beb8df2 [Time Conductor] Add JSDoc to mct-popup
Based on feedback from code review; WTD-1515
2015-10-01 14:34:52 -07:00
Victor Woeltjen
bea5002752 [Search] Add test cases
Add test cases related to throttled loading of domain
objects to index, nasa/openmctweb#141.
2015-09-30 17:23:52 -07:00
Victor Woeltjen
d04c5e6858 [Search] Update GenericSearch spec
nasa/openmctweb#141.
2015-09-30 17:08:47 -07:00
Victor Woeltjen
0d1f3bf87a [Throttle] Update spec
Conflicts:
	platform/features/layout/test/FixedControllerSpec.js
2015-09-30 15:48:17 -07:00
Victor Woeltjen
b632926d8e [Search] Fix mutation.listen
Update mutation.listen to match previous variable
names changes related to nasa/openmctweb#141.
2015-09-30 13:09:55 -07:00
Victor Woeltjen
78f3f8367e [Search] Vary batch size
When indexing for generic search, issue new batches of
requests as individual requests finish (instead of waiting
for whole batches to finish) varying size to keep the
number of outstanding requests below some maximum.

nasa/openmctweb#141
2015-09-29 18:37:44 -07:00
Victor Woeltjen
85ac4a9a32 [Search] Log indexing time
...to aid in tuning of generic search parameters.
2015-09-29 18:37:44 -07:00
Victor Woeltjen
ef527df381 [Time Conductor] Fix throttle bug
Fix a timing/ordering issue in throttle which
allowed some throttled invocations to be ignored.
WTD-1515
2015-09-29 18:37:44 -07:00
Victor Woeltjen
c2868a4573 [Time Conductor] Allow arguments for throttled functions
WTD-1515. Ensures that bounds passed in from
the time controller get appropriately captured.
2015-09-29 18:37:44 -07:00
Victor Woeltjen
77c66053f3 [Search] Change indexing approach
Change indexing approach to more carefully control the
rate at which objects are loaded to be indexed, to improve
performance. nasa/openmctweb#141.
2015-09-29 18:37:44 -07:00
Victor Woeltjen
0891e15936 [Search] Add digest indicator
Add digest indicator to example/profiling to aid in diagnosing
digest-related performance issues (or ruling out excessive digest
cycles as a cause of performance issues.)
2015-09-29 18:37:44 -07:00
Victor Woeltjen
2979ee90a3 Revert "[Search] Don't trigger digest cycles while indexing"
This reverts commit 4b8a5ac0b257737ee33effc966816afca6c11b94.
Performance measurements indicates this is harmful for performance,
although this is not well-explained.
2015-09-29 18:37:44 -07:00
Victor Woeltjen
77c399f2a2 [Search] Don't trigger digest cycles while indexing
Avoid triggering digest cycles while indexing;
remove extra call to $timeout
2015-09-29 18:37:44 -07:00
Victor Woeltjen
fe8543158e [Search] Fix reindexing
Flag domain objects as non-indexed on mutation to ensure
reindexing. Done in the context of nasa/openmctweb#141.
2015-09-29 18:37:44 -07:00
Andrew Henry
37dede568c Added Capabilities 2015-09-29 15:30:12 -07:00
Henry
a4f3e0d776 Plot domain labels showing 1970 if no data 2015-09-29 15:28:55 -07:00
Victor Woeltjen
866c8882ca [Search] Listen on a global mutation topic
Listen on a global mutation topic to remove the need to retain
listeners per domain object.
2015-09-29 11:50:30 -07:00
Victor Woeltjen
ad7d3d642e [Search] Move reindex function
Move function used to listen for mutation changes (to trigger
reindexing) up in scope, to avoid retaining references to
domain objects via closure. nasa/openmctweb#141

Also, includes misc. whitespace normalization (provided by
code editor.)
2015-09-29 10:54:20 -07:00
Charles Hacskaylo
333f7cb848 [Frontend] Time controller-related styling
open #1515
open #117
Markup changed to utilize mct-representation via CSS;
time-controller now uses list-based _constants values;
ConductorRepresenter.js modded to remove inline styling
and to add CSS classes to enclosing mct-representation;
2015-09-29 08:43:34 -07:00
Victor Woeltjen
f198c281bc [Mobile] Suppress Create button on mobile
nasa/openmctweb#157
2015-09-28 15:57:55 -07:00
Charles Hacskaylo
23de3917bb [Frontend] Time Controller Markup and Styling
open #1515
open #117
Animation added to .knob and .range;
2015-09-27 16:24:43 -07:00
Charles Hacskaylo
badaca53d3 [Frontend] Time Controller Markup and Styling
open #1515
open #117
Significant mods to slider scss;
Added toi-line element and hover styles;
2015-09-25 18:12:36 -07:00
Victor Woeltjen
00ac249ee2 [Time Conductor] Position domain selector
nasa/openmtweb#115
2015-09-25 16:06:11 -07:00
Victor Woeltjen
00aa6821d1 Merge remote-tracking branch 'github/open117' into open115b 2015-09-25 15:31:27 -07:00
Andrew Henry
b3fb06ba3f Up to page 52 2015-09-25 14:28:52 -07:00
Charles Hacskaylo
e33485ec59 [Frontend] Time controller-related styling (CP > open117)
open #1515
open #117
Further refinements to slider knob and range look;
(cherry picked from commit 63a1239)
2015-09-25 13:57:57 -07:00
Charles Hacskaylo
afb1202865 [Frontend] Time controller-related styling (CP > open117)
open #1515
open #117
Layout styling in datetime picker;
Modded picker to hide time selects area
when time options are null;
(cherry picked from commit 6721093)
2015-09-25 13:57:43 -07:00
Victor Woeltjen
f5a4a370f9 [Persistence] Add persisted timestamp
...to any domain object models loaded from persistence
which do not have one. The presence of this timestamp
is necessary for the persistence capability to determine
whether an object should be created or updated when a
request to persist is made. nasa/openmctweb#139.
2015-09-25 11:47:59 -07:00
Victor Woeltjen
2848a8458b [Time Conductor] Avoid exception
Avoid exception when trying to generate a single datum in
cases where there is no data yet available.
2015-09-25 11:05:18 -07:00
Victor Woeltjen
cbaf45afe9 [Time Conductor] Update specs
nasa/openmctweb#115
2015-09-25 10:40:19 -07:00
Charles Hacskaylo
7a677062e4 [Frontend] Time controller-related styling (CP > open117)
open #1515
open #117
Fixing selects;
Tweaks to constants and mixins to better
handle button dropshadowing across
themes;
(cherry picked from commit 3e34d06)
2015-09-25 09:50:36 -07:00
Charles Hacskaylo
a7153f320f [Frontend] Time controller-related styling (CP > open117)
open #1515
open #117
Fixing selects;
Minor tweak to normalize espresso/.../mixins.scss;
(cherry picked from commit 2866d56)
2015-09-25 09:50:02 -07:00
Andrew Henry
b7a612127d Added additional sections, up to Templates 2015-09-25 09:09:34 -07:00
Charles Hacskaylo
b3da6edd0c [Frontend] Time Controller Markup and Styling
open #1515
open #117
Significant new vals added to constants files
for datetime picker/calendar;
Styling for calendar, hover and selected states;
Modded DateTimePickerController.js and markup
to allow selection of out-of-month cells;
2015-09-24 18:36:56 -07:00
Victor Woeltjen
ff1fd26efc [Time Conductor] Change method name
Prefer simpler method names for public API.
2015-09-24 17:09:06 -07:00
Victor Woeltjen
4ced6c44a6 [Time Conductor] Ignore empty series
...when updating Fixed Position view.
2015-09-24 17:01:50 -07:00
Charles Hacskaylo
67f627b51f [Frontend] Time Controller Markup and Styling
open #1515
open #117
Commit prior to redoing markup of picker to use flex instead of table;
Styling in picker; tabular styles fixed somewhat;
2015-09-24 16:42:45 -07:00
Charles Hacskaylo
1d83516982 [Frontend] Time Controller Markup and Styling
open #1515
open #117
Significant re-org in menus.scss continued:
Refactored s-menu to s-menu-btn;
moved look-related style def's into .s-menu;
.menu now extends .s-menu;
2015-09-24 15:38:52 -07:00
Charles Hacskaylo
9e64dfe3b9 [Frontend] Time Controller Markup and Styling
open #1515
open #117
Tweaks to tick spacing;
2015-09-24 14:31:26 -07:00
Charles Hacskaylo
09f5fa42ab Merge branch 'open1515' of https://github.com/nasa/openmctweb into open117 2015-09-24 14:21:38 -07:00
Charles Hacskaylo
54a077a4e2 [Frontend] Time Controller Markup and Styling
open #1515
open #117
Tweak to mixin "test";
2015-09-24 14:20:25 -07:00
Victor Woeltjen
13525a67c2 [Time Conductor] Fix domain-based calculations
...in example telemetry, to support development work
on time conductor.
2015-09-24 13:21:51 -07:00
Andrew Henry
2f4cf44229 Added additional pages to developer's guide MD version 2015-09-24 13:17:46 -07:00
Victor Woeltjen
cc6b6538d5 Merge branch 'open1515' into open115 2015-09-24 12:19:08 -07:00
Victor Woeltjen
0c7de98195 [Time Conductor] Use active domain in binary search 2015-09-24 12:18:47 -07:00
Charles Hacskaylo
404d1e7801 [Frontend] Time Controller Markup and Styling
open #1515
open #117
Begin work on styling the datetime picker;
2015-09-24 11:29:28 -07:00
Victor Woeltjen
1214a32c26 [Common UI] Avoid apply-in-a-digest
Don't invoke  from mct-resize when first observing
an element's size during linking; observed issue in the
context of adding domain selector to time conductor.
2015-09-24 11:20:07 -07:00
Victor Woeltjen
6bd8e7a47c Merge remote-tracking branch 'github/master' into open1515 2015-09-24 11:17:13 -07:00
Charles Hacskaylo
825d93cee3 [Frontend] Time Controller Markup and Styling
open #1515
open #117
Changed slider elements layout from relative to
absolute positioning;
Refined layout in input-holder;
Tweaks to hover classes;
2015-09-24 10:34:32 -07:00
Andrew Henry
73e959f95a Incremental commit of developer's guide 2015-09-24 09:44:24 -07:00
Charles Hacskaylo
9f7dc1da9b [Frontend] Time Controller Markup and Styling
open #1515
open #117
Styling for boundary inputs and
slider;
2015-09-23 18:59:36 -07:00
Victor Woeltjen
3d8aec2d01 [Time Conductor] Pass domain with events 2015-09-23 17:26:56 -07:00
Victor Woeltjen
928e31b548 [Common UI] Avoid apply-in-a-digest
Don't invoke  from mct-resize when first observing
an element's size during linking; observed issue in the
context of adding domain selector to time conductor.
2015-09-23 17:22:32 -07:00
Victor Woeltjen
f182d1f2c4 [Time Conductor] Include domain selection in requests
...as well as use as default in a telemetry series.
2015-09-23 17:14:40 -07:00
Victor Woeltjen
d238b669a5 [Time Conductor] Show domain options 2015-09-23 17:09:38 -07:00
Victor Woeltjen
5d5a7c26c5 [Time Conductor] Maintain domain state
Maintain domain state in the time conductor; add a default list of
domains to choose from.
2015-09-23 16:53:12 -07:00
Victor Woeltjen
0b0cee3afb [Example] Add domain
Add a second domain to example telemetry, to support
addition of a domain selector to the time conductor;
nasa/openmctweb#115
2015-09-23 16:43:58 -07:00
Victor Woeltjen
0260e6fff4 Merge branch 'open1515' into open115 2015-09-23 16:05:09 -07:00
Charles Hacskaylo
9811443c71 Merge branch 'master' into open117 2015-09-23 15:54:48 -07:00
Victor Woeltjen
7dc13dab66 [Readme] Add link to node-canvas 2015-09-23 14:37:49 -07:00
Victor Woeltjen
e67a2e63cf [Readme] Add notes on building documentation
Add notes to README about building documentation; in
particular, document the need to install libcairo.
2015-09-23 13:59:05 -07:00
Victor Woeltjen
f4e53a946d [Time Conductor] Remove from active bundles
Remove time conductor from set of active bundles pending
clean up of markup/CSS.
2015-09-16 18:14:30 -07:00
Victor Woeltjen
de71bde62f [Test Conductor] Add test case for requery
WTD-1515
2015-09-16 17:00:56 -07:00
Victor Woeltjen
8f24e014e0 [Time Conductor] Add skeleton specs
Add skeleton specs to new classes added for date-time
picker in time conductor. WTD-1515
2015-09-16 16:51:28 -07:00
Victor Woeltjen
190f5fd0ea [Time Conductor] Update failing specs
WTD-1515
2015-09-16 15:23:08 -07:00
Victor Woeltjen
ad29fb0f92 [Time Conductor] Populate FP from historical
Populate fixed position view from historical
telemetry when first loaded. WTD-1515
2015-09-16 13:38:47 -07:00
Victor Woeltjen
fcd073c010 [Time Conductor] Tweak plot requery
Tweak approach to requerying in plot, and track
pending state so there is a visual indication
that plotted data may be incomplete during
panning with time conductor. WTD-1515
2015-09-16 11:05:41 -07:00
Victor Woeltjen
071368c3b9 [Time Conductor] Fix throttle bug
Fix a timing/ordering issue in throttle which
allowed some throttled invocations to be ignored.
WTD-1515
2015-09-16 11:04:07 -07:00
Victor Woeltjen
7a97588aa5 [Time Conductor] Remove debugging statement
WTD-1515
2015-09-16 10:30:45 -07:00
Victor Woeltjen
f776561303 [Time Conductor] Allow arguments for throttled functions
WTD-1515. Ensures that bounds passed in from
the time controller get appropriately captured.
2015-09-16 10:18:57 -07:00
Victor Woeltjen
e34fe1a289 [Time Conductor] Tweak position, appearance
...of datetime picker popups. WTD-1515
2015-09-15 18:51:44 -07:00
Victor Woeltjen
70d9587c9b [Time Conductor] Wire in datetime pickers
WTD-1515
2015-09-15 18:48:00 -07:00
Victor Woeltjen
9a78b63065 [Time Conductor] Try to rewrite datetime picker as control 2015-09-15 18:37:36 -07:00
Victor Woeltjen
6c497f3c36 [Time Conductor] Start adding datetime picker
WTD-1515
2015-09-15 18:09:46 -07:00
Victor Woeltjen
d951b794e3 [Time Conductor] Support date choice
...from date-time picker. WTD-1515
2015-09-15 15:55:13 -07:00
Victor Woeltjen
797046aca4 [Time Conductor] Populate datetime picker
WTD-1515
2015-09-15 15:24:54 -07:00
Victor Woeltjen
cf76583ed7 [Time Conductor] Add inline styles to datetime-picker 2015-09-15 14:50:05 -07:00
Victor Woeltjen
6f28ab0145 [Time Conductor] Begin adding custom date picker
WTD-1515
2015-09-15 13:08:05 -07:00
Victor Woeltjen
9ebf157ec0 [Time Conductor] Test telemetry service decorator
WTD-1515
2015-09-15 11:18:28 -07:00
Victor Woeltjen
493c63be44 [Time Conductor] Test series wrapping
WTD-1515
2015-09-15 10:58:10 -07:00
Victor Woeltjen
f29951140f [Time Conductor] Add license header, JSDoc
WTD-1515
2015-09-15 10:22:43 -07:00
Victor Woeltjen
d0b5bb2d21 [Time Conductor] Begin using date-time controls
WTD-1515
2015-09-15 10:00:41 -07:00
Victor Woeltjen
cd98886a43 [Time Conductor] Add license header
WTD-1515
2015-09-15 08:59:57 -07:00
Victor Woeltjen
4549828cae Merge remote-tracking branch 'github/master' into open1515 2015-09-15 08:57:49 -07:00
Victor Woeltjen
d0478c3433 [Scrolling List] Check for existence of limit
Check for existence of limit capability while evaluating
limits in a scrolling list view. WTD-1515
2015-09-14 16:37:29 -07:00
Victor Woeltjen
53369ec0dc [Time Conductor] Avoid searching outside of series
Don't look up domain values while subsetting a
telemetry series until after checking to ensure
that there is some segment of the series left
to search. WTD-1515
2015-09-14 16:36:41 -07:00
Victor Woeltjen
de99969f0a [Time Controller] Return range values
Delegate retrieval of range values appropriately in
conductor-driven telemetry series subset. WTD-1515
2015-09-14 14:39:19 -07:00
Victor Woeltjen
24449d2dcc [Time Controller] Fix series subsetting
Fix binary search implementation used to subset
telemetry series for time conductor. WTD-1515
2015-09-14 11:44:50 -07:00
Victor Woeltjen
f42c5ca1e5 [Time Conductor] Subset to display bounds
WTD-1515
2015-09-14 11:25:42 -07:00
Victor Woeltjen
890aafc203 [Time Controller] Filter out realtime updates
Filter out realtime updates that are outside of the time
controller's range. WTD-1515
2015-09-14 10:02:59 -07:00
Victor Woeltjen
2a14cf2dfc [Time Controller] Only listen for display-bounds changes
...from plot. WTD-1515
2015-09-11 11:31:12 -07:00
Victor Woeltjen
62962e119e [Time Controller] Decorate telemetry service
Decorate telemetry service instead of capability service
to enforce time conductor bounds. WTD-1515.
2015-09-10 16:17:48 -07:00
Victor Woeltjen
2229e868ce [Time Conductor] Fix logic around end times
Fix logic for updating end times after refactoring
to clarify variable/property naming, WTD-1515
2015-09-10 13:24:50 -07:00
Victor Woeltjen
8d209f4d19 [Time Controller] Fix middle-drag bug
Fix bug in middle-drag introduced by refactoring,
WTD-1515.
2015-09-10 11:34:31 -07:00
Victor Woeltjen
86bb89a162 [Time Controller] Update spec
Update spec for ConductorRepresenter to reflect changes
to model properties expected by TimeRangeController.
WTD-1515
2015-09-10 11:31:40 -07:00
Victor Woeltjen
2758250833 [Time Conductor] Fix JSDoc
Fix copy-paste error. WTD-1515
2015-09-10 11:27:50 -07:00
Victor Woeltjen
7d20351a6a [Time Conductor] Clean up code style
Clean up code style in TelemetrySubscription, for
changes associated with WTD-1515.
2015-09-10 11:20:09 -07:00
Victor Woeltjen
78fae345da [Time Conductor] Rename TimeConductorController
Rename TimeConductorController to TimeRangeController, to
reflect that this is intended to serve as a more general
control. Additionally, stop using arrays for inner and
outer bounds and instead use explicit start/end properties,
for clarity. WTD-1515
2015-09-10 10:58:47 -07:00
Victor Woeltjen
4c79c9a1b1 [Time Conductor] Clarify start/end naming
WTD-1515
2015-09-10 10:21:21 -07:00
Victor Woeltjen
2ec9956d44 [Time Conductor] Incorporate feedback from code review
Retain reference to scope in ConductorRepresenter
directly via this, instead of revealing via
a closure-bound function. This approach is not necessary
to avoid https://docs.angularjs.org/error/ng/cpws in
this circumstance.  WTD-1515
2015-09-10 10:16:28 -07:00
Victor Woeltjen
e3b191b5dc [Time Controller] Update failing specs
Update failing specs to reflect support for time conductor,
WTD-1515
2015-09-09 16:52:46 -07:00
Victor Woeltjen
a4dda695dd [Time Controller] Get conductor working with fixed pos.
WTD-1515
2015-09-09 16:46:00 -07:00
Victor Woeltjen
0d710209b1 Merge remote-tracking branch 'github/master' into open1515 2015-09-09 10:05:21 -07:00
Victor Woeltjen
fdbc91131b [Time Controller] Update bundle definition
...for Fixed Position view to reflect changes to dependencies,
WTD-1515.
2015-09-08 17:18:39 -07:00
Victor Woeltjen
d2dfec3ce7 [Time Controller] Simplify retrieval of datum objects
...for historical data. Supports WTD-1515
2015-09-08 17:03:58 -07:00
Victor Woeltjen
351181d38e [Time Controller] Allow datum retrieval from histories
WTD-1515
2015-09-08 16:58:15 -07:00
Victor Woeltjen
760f4b818f [Time Conductor] Update fixed position from history
WTD-1515
2015-09-08 16:53:06 -07:00
Victor Woeltjen
c026bfa17d [Time Conductor] Begin adding support to fixed position
Begin adding support for universal time controller to
fixed position view, WTD-1515.
2015-09-08 16:37:10 -07:00
Victor Woeltjen
47b97a504e [Telemetry] Document TelemetryRequest
Document TelemetryRequest to record new parameters in
support of the time conductor, WTD-1515
2015-09-08 16:28:01 -07:00
Victor Woeltjen
29c460556a [Representers] Destroy representers
Invoke the destroy methods of any active representers when
a scope is destroyed; supports time controller, which needs
to accurately track when it has or hasn't been attached to
a view. WTD-1515
2015-09-04 16:00:43 -07:00
Victor Woeltjen
4d276888e1 [Plot] Update failining spec
WTD-1515
2015-09-04 15:53:55 -07:00
Victor Woeltjen
142af3db77 [Time Controller] Add JSDoc
WTD-1515
2015-09-04 15:51:46 -07:00
Victor Woeltjen
b66759e519 [Plot] Initially establish bounds
Initially establish domain bounds with time controller,
WTD-1515
2015-09-04 15:31:47 -07:00
Victor Woeltjen
c58ffb4a52 [Time Controller] Update inner span
Update inner span when outer dates change (if needed),
WTD-1515
2015-09-04 15:15:09 -07:00
Victor Woeltjen
600ff1a3ee [Plot] Requery on event
Requery on a query change event from a time conductor,
WTD-1515
2015-09-04 15:07:46 -07:00
Victor Woeltjen
77d11e1bcf [Time Controller] Fix sine wave generation
Generate sine wave correctly when start time has been specified,
WTD-1515
2015-09-04 14:24:45 -07:00
Victor Woeltjen
d158aa6028 [Plot] Follow time conductor more smoothly
WTD-1515
2015-09-04 14:04:09 -07:00
Victor Woeltjen
c2985d61b7 [Plot] Follow universal time controller
Follow displayable area of universal time controller,
WTD-1515
2015-09-04 13:57:26 -07:00
Victor Woeltjen
3ce40ab870 [Time Controller] Fix capability decoration
WTD-1515
2015-09-04 13:02:36 -07:00
Victor Woeltjen
bfb19dea74 [Time Controller] Use start time in example
WTD-1515
2015-09-04 12:52:02 -07:00
Victor Woeltjen
01a6d2e6a7 [Time Controller] Test ConductorRepresenter
WTD-1515
2015-09-04 12:44:49 -07:00
Victor Woeltjen
af462ff3ee [Time Controller] Begin adding mocks
Begin adding/configuring mocks to support testing
ConductorRepresenter, WTD-1515
2015-09-04 12:12:21 -07:00
Victor Woeltjen
5c1d209eff [Time Controller] Simplify ConductorRepresenter
WTD-1515
2015-09-04 11:53:51 -07:00
Victor Woeltjen
8a76c3a425 [Time Controller] Test conductor's telemetry capability
WTD-1515
2015-09-04 10:57:50 -07:00
Victor Woeltjen
9ccd0b9188 [Time Conductor] Test capability decorator
WTD-1515
2015-09-04 10:47:38 -07:00
Victor Woeltjen
f83588d980 [Time Controller] Begin adding test cases
WTD-1515
2015-09-04 10:32:01 -07:00
Victor Woeltjen
a481b377cb [Time Conductor] Add terminology note to readme
WTD-1515
2015-09-04 10:24:18 -07:00
Victor Woeltjen
35ff4efbca [Time Conductor] Add placeholder specs
Add empty specs for classes related to time conductor, WTD-1515
2015-09-04 09:44:08 -07:00
Victor Woeltjen
436e010738 [Time Conductor] Broadcast changes
WTD-1515
2015-09-03 15:59:46 -07:00
Victor Woeltjen
bf4765fcb6 [Time Controller] Bind displayed control to state
Bind changes to the displayed time controller to
changes to the underlying state of the time conductor,
WTD-1515.
2015-09-03 15:13:03 -07:00
Victor Woeltjen
dbfb8b9861 [Time Controller] Add capability decorator
WTD-1515
2015-09-03 14:58:49 -07:00
Victor Woeltjen
681cd0bb9c [Time Controller] Add conductor service
WTD-1515.
2015-09-03 14:53:23 -07:00
Victor Woeltjen
b668fb58fb [Time Controller] Show only outermost controller
WTD-1515
2015-09-03 11:44:11 -07:00
Victor Woeltjen
f74da6b935 [Time Controller] Add overflow hidden
Add overflow: hidden so that time controller does not exceed
edges of the screen. WTD-1515
2015-09-03 11:40:40 -07:00
Victor Woeltjen
e4dec21ceb [Time Controller] Add telemetry capability wrapper
WTD-1515
2015-09-03 11:38:06 -07:00
Victor Woeltjen
fc2860810b [Time Controller] Allow manual date entry
WTD-1515
2015-09-03 11:03:17 -07:00
Victor Woeltjen
9d6b70f433 [Time Conductor] Handle middle drag
WTD-1515
2015-09-02 17:25:41 -07:00
Victor Woeltjen
57a947eaef [Time Conductor] Accept drag gestures
WTD-1515
2015-09-02 17:19:20 -07:00
Victor Woeltjen
a18cc50a43 [Time Conductor] Begin binding control to data 2015-09-02 16:53:10 -07:00
Victor Woeltjen
91fe3d798f [Time Conductor] Begin adding controller
WTD-1515
2015-09-02 16:31:58 -07:00
Victor Woeltjen
e873389655 [Conductor] Add time conductor widget
Add widget for the time conductor using a representer,
WTD-1515.
2015-09-02 15:57:52 -07:00
231 changed files with 23025 additions and 6133 deletions

View File

@@ -1 +1 @@
web: node app.js --port $PORT --include example/localstorage
web: node app.js --port $PORT

View File

@@ -103,6 +103,21 @@ This build will:
Run as `mvn clean install`.
### Building Documentation
Open MCT Web's documentation is generated by an
[npm](https://www.npmjs.com/)-based build:
* `npm install` _(only needs to run once)_
* `npm run docs`
Documentation will be generated in `target/docs`. Note that diagram
generation is dependent on having [Cairo](http://cairographics.org/download/)
installed; see
[node-canvas](https://github.com/Automattic/node-canvas#installation)'s
documentation for help with installation.
# Glossary
Certain terms are used throughout Open MCT Web with consistent meanings

View File

@@ -6,10 +6,12 @@
"platform/commonUI/browse",
"platform/commonUI/edit",
"platform/commonUI/dialog",
"platform/commonUI/formats",
"platform/commonUI/general",
"platform/commonUI/inspect",
"platform/commonUI/mobile",
"platform/commonUI/themes/espresso",
"platform/commonUI/notification",
"platform/containment",
"platform/execution",
"platform/telemetry",

View File

@@ -30,7 +30,8 @@
var CONSTANTS = {
DIAGRAM_WIDTH: 800,
DIAGRAM_HEIGHT: 500
};
},
TOC_HEAD = "# Table of Contents";
GLOBAL.window = GLOBAL.window || GLOBAL; // nomnoml expects window to be defined
(function () {
@@ -44,6 +45,7 @@ GLOBAL.window = GLOBAL.window || GLOBAL; // nomnoml expects window to be define
split = require("split"),
stream = require("stream"),
nomnoml = require('nomnoml'),
toc = require("markdown-toc"),
Canvas = require('canvas'),
options = require("minimist")(process.argv.slice(2));
@@ -110,6 +112,9 @@ GLOBAL.window = GLOBAL.window || GLOBAL; // nomnoml expects window to be define
done();
};
transform._flush = function (done) {
// Prepend table of contents
markdown =
[ TOC_HEAD, toc(markdown).content, "", markdown ].join("\n");
this.push("<html><body>\n");
this.push(marked(markdown));
this.push("\n</body></html>\n");
@@ -133,8 +138,8 @@ GLOBAL.window = GLOBAL.window || GLOBAL; // nomnoml expects window to be define
customRenderer.link = function (href, title, text) {
// ...but only if they look like relative paths
return (href || "").indexOf(":") === -1 && href[0] !== "/" ?
renderer.link(href.replace(/\.md/, ".html"), title, text) :
renderer.link.apply(renderer, arguments);
renderer.link(href.replace(/\.md/, ".html"), title, text) :
renderer.link.apply(renderer, arguments);
};
return customRenderer;
}
@@ -179,13 +184,17 @@ GLOBAL.window = GLOBAL.window || GLOBAL; // nomnoml expects window to be define
glob(options['in'] + "/**/*.@(html|css|png)", {}, function (err, files) {
files.forEach(function (file) {
var destination = file.replace(options['in'], options.out),
destPath = path.dirname(destination);
destPath = path.dirname(destination),
streamOptions = {};
if (file.match(/png$/)){
streamOptions.encoding = null;
} else {
streamOptions.encoding = 'utf8';
}
mkdirp(destPath, function (err) {
fs.createReadStream(file, { encoding: 'utf8' })
.pipe(fs.createWriteStream(destination, {
encoding: 'utf8'
}));
fs.createReadStream(file, streamOptions)
.pipe(fs.createWriteStream(destination, streamOptions));
});
});
});

View File

@@ -35,16 +35,26 @@ in __any of these tiers__.
* _DOM_: The rendered HTML document, composed from HTML templates which
have been processed by AngularJS and will be updated by AngularJS
to reflect changes from the presentation layer. User interactions
are initiated from here and invoke behavior in the presentation layer.
are initiated from here and invoke behavior in the presentation layer. HTML 
templates are written in Angulars template syntax; see the [Angular documentation on templates](https://docs.angularjs.org/guide/templates). 
These describe the page as actually seen by the user. Conceptually, 
stylesheets (controlling the look­and­feel of the rendered templates) belong 
in this grouping as well. 
* [_Presentation layer_](#presentation-layer): The presentation layer
is responsible for updating (and providing information to update)
the displayed state of the application. The presentation layer consists
primarily of _controllers_ and _directives_. The presentation layer is
concerned with inspecting the information model and preparing it for
display.
* [_Information model_](#information-model): The information model
describes the state and behavior of the objects with which the user
interacts.
* [_Information model_](#information-model): Provides a common (within Open MCT 
Web) set of interfaces for dealing with “things” ­ domain objects ­ within the 
system. User­facing concerns in a Open MCT Web application are expressed as 
domain objects; examples include folders (used to organize other domain 
objects), layouts (used to build displays), or telemetry points (used as 
handles for streams of remote measurements.) These domain objects expose a 
common set of interfaces to allow reusable user interfaces to be built in the 
presentation and template tiers; the specifics of these behaviors are then 
mapped to interactions with underlying services. 
* [_Service infrastructure_](#service-infrastructure): The service
infrastructure is responsible for providing the underlying general
functionality needed to support the information model. This includes
@@ -52,7 +62,9 @@ in __any of these tiers__.
back-end.
* _Back-end_: The back-end is out of the scope of Open MCT Web, except
for the interfaces which are utilized by adapters participating in the
service infrastructure.
service infrastructure. Includes the underlying persistence stores, telemetry 
streams, and so forth which the Open MCT Web client is being used to interact 
with.
## Application Start-up

File diff suppressed because it is too large Load Diff

View File

@@ -29,8 +29,9 @@
Sections:
<ul>
<li><a href="api/">API</a></li>
<li><a href="guide/">Developer Guide</a></li>
<li><a href="architecture/">Architecture Overview</a></li>
<li><a href="guide/">Developer Guide</a></li>
<li><a href="tutorials/">Tutorials</a></li>
</ul>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

3055
docs/src/tutorials/index.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -16,6 +16,23 @@
"implementation": "SinewaveLimitCapability.js"
}
],
"formats": [
{
"key": "example.delta",
"implementation": "SinewaveDeltaFormat.js"
}
],
"constants": [
{
"key": "TIME_CONDUCTOR_DOMAINS",
"value": [
{ "key": "time", "name": "Time" },
{ "key": "yesterday", "name": "Yesterday" },
{ "key": "delta", "name": "Delta", "format": "example.delta" }
],
"priority": -1
}
],
"types": [
{
"key": "generator",
@@ -34,6 +51,15 @@
{
"key": "time",
"name": "Time"
},
{
"key": "yesterday",
"name": "Yesterday"
},
{
"key": "delta",
"name": "Delta",
"format": "example.delta"
}
],
"ranges": [
@@ -61,4 +87,4 @@
}
]
}
}
}

View File

@@ -19,18 +19,8 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
// Styles to temporarily hide non-functional elements
/*global define,Promise*/
/******************************** BROWSE */
.browse-mode {
.browse {
&.top-bar {
display: none;
}
}
.browse-area.holder {
// When .browse.top-bar is hidden, set the top of the browse-area holder
top: $bodyMargin;
}
}
define({
START_TIME: Date.now() - 24 * 60 * 60 * 1000 // Now minus a day.
});

View File

@@ -0,0 +1,68 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
define(
['./SinewaveConstants', 'moment'],
function (SinewaveConstants, moment) {
"use strict";
var START_TIME = SinewaveConstants.START_TIME,
FORMAT_REGEX = /^-?\d+:\d+:\d+$/,
SECOND = 1000,
MINUTE = SECOND * 60,
HOUR = MINUTE * 60;
function SinewaveDeltaFormat() {
}
function twoDigit(v) {
return v >= 10 ? String(v) : ('0' + v);
}
SinewaveDeltaFormat.prototype.format = function (value) {
var delta = Math.abs(value - START_TIME),
negative = value < START_TIME,
seconds = Math.floor(delta / SECOND) % 60,
minutes = Math.floor(delta / MINUTE) % 60,
hours = Math.floor(delta / HOUR);
return (negative ? "-" : "") +
[ hours, minutes, seconds ].map(twoDigit).join(":");
};
SinewaveDeltaFormat.prototype.validate = function (text) {
return FORMAT_REGEX.test(text);
};
SinewaveDeltaFormat.prototype.parse = function (text) {
var negative = text[0] === "-",
parts = text.replace("-", "").split(":");
return [ HOUR, MINUTE, SECOND ].map(function (sz, i) {
return parseInt(parts[i], 10) * sz;
}).reduce(function (a, b) {
return a + b;
}, 0) * (negative ? -1 : 1) + START_TIME;
};
return SinewaveDeltaFormat;
}
);

View File

@@ -30,25 +30,25 @@ define(
YELLOW = 0.5,
LIMITS = {
rh: {
cssClass: "s-limit-upr-red",
cssClass: "s-limit-upr s-limit-red",
low: RED,
high: Number.POSITIVE_INFINITY,
name: "Red High"
},
rl: {
cssClass: "s-limit-lwr-red",
cssClass: "s-limit-lwr s-limit-red",
high: -RED,
low: Number.NEGATIVE_INFINITY,
name: "Red Low"
},
yh: {
cssClass: "s-limit-upr-yellow",
cssClass: "s-limit-upr s-limit-yellow",
low: YELLOW,
high: RED,
name: "Yellow High"
},
yl: {
cssClass: "s-limit-lwr-yellow",
cssClass: "s-limit-lwr s-limit-yellow",
low: -RED,
high: -YELLOW,
name: "Yellow Low"

View File

@@ -25,8 +25,8 @@
* Module defining SinewaveTelemetryProvider. Created by vwoeltje on 11/12/14.
*/
define(
["./SinewaveTelemetry"],
function (SinewaveTelemetry) {
["./SinewaveTelemetrySeries"],
function (SinewaveTelemetrySeries) {
"use strict";
/**
@@ -45,7 +45,7 @@ define(
function generateData(request) {
return {
key: request.key,
telemetry: new SinewaveTelemetry(request)
telemetry: new SinewaveTelemetrySeries(request)
};
}
@@ -112,4 +112,4 @@ define(
return SinewaveTelemetryProvider;
}
);
);

View File

@@ -0,0 +1,78 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/**
* Module defining SinewaveTelemetry. Created by vwoeltje on 11/12/14.
*/
define(
['./SinewaveConstants'],
function (SinewaveConstants) {
"use strict";
var ONE_DAY = 60 * 60 * 24,
firstObservedTime = Math.floor(SinewaveConstants.START_TIME / 1000);
/**
*
* @constructor
*/
function SinewaveTelemetrySeries(request) {
var timeOffset = (request.domain === 'yesterday') ? ONE_DAY : 0,
latestTime = Math.floor(Date.now() / 1000) - timeOffset,
firstTime = firstObservedTime - timeOffset,
endTime = (request.end !== undefined) ?
Math.floor(request.end / 1000) : latestTime,
count = Math.min(endTime, latestTime) - firstTime,
period = +request.period || 30,
generatorData = {},
requestStart = (request.start === undefined) ? firstTime :
Math.max(Math.floor(request.start / 1000), firstTime),
offset = requestStart - firstTime;
if (request.size !== undefined) {
offset = Math.max(offset, count - request.size);
}
generatorData.getPointCount = function () {
return count - offset;
};
generatorData.getDomainValue = function (i, domain) {
// delta uses the same numeric values as the default domain,
// so it's not checked for here, just formatted for display
// differently.
return (i + offset) * 1000 + firstTime * 1000 -
(domain === 'yesterday' ? ONE_DAY : 0);
};
generatorData.getRangeValue = function (i, range) {
range = range || "sin";
return Math[range]((i + offset) * Math.PI * 2 / period);
};
return generatorData;
}
return SinewaveTelemetrySeries;
}
);

View File

@@ -0,0 +1,47 @@
{
"extensions": {
"templates": [
{
"key": "dialogLaunchTemplate",
"templateUrl": "dialog-launch.html"
},
{
"key": "notificationLaunchTemplate",
"templateUrl": "notification-launch.html"
}
],
"controllers": [
{
"key": "DialogLaunchController",
"implementation": "DialogLaunchController.js",
"depends": [
"$scope",
"$timeout",
"$log",
"dialogService",
"notificationService"
]
},
{
"key": "NotificationLaunchController",
"implementation": "NotificationLaunchController.js",
"depends": [
"$scope",
"$timeout",
"$log",
"notificationService"
]
}
],
"indicators": [
{
"implementation": "DialogLaunchIndicator.js",
"priority": "fallback"
},
{
"implementation": "NotificationLaunchIndicator.js",
"priority": "fallback"
}
]
}
}

View File

@@ -0,0 +1,10 @@
<span class="status block ok" ng-controller="DialogLaunchController">
<span class="ui-symbol status-indicator">&#xe600;</span>
<span class="label">
<a ng-click="launchProgress(true)">Known</a> |
<a ng-click="launchProgress(false)">Unknown</a> |
<a ng-click="launchError()">Error</a> |
<a ng-click="launchInfo()">Info</a>
</span>
<span class="count">Dialogs</span>
</span>

View File

@@ -0,0 +1,10 @@
<span class="status block ok" ng-controller="NotificationLaunchController">
<span class="ui-symbol status-indicator">&#xe600;</span>
<span class="label">
<a ng-click="newInfo()">Success</a> |
<a ng-click="newError()">Error</a> |
<a ng-click="newAlert()">Alert</a> |
<a ng-click="newProgress()">Progress</a>
</span>
<span class="count">Notifications</span>
</span>

View File

@@ -0,0 +1,150 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define(
[],
function () {
"use strict";
/**
* A controller for the dialog launch view. This view allows manual
* launching of dialogs for demonstration and testing purposes. It
* also demonstrates the use of the DialogService.
* @param $scope
* @param $timeout
* @param $log
* @param dialogService
* @param notificationService
* @constructor
*/
function DialogLaunchController($scope, $timeout, $log, dialogService, notificationService) {
/*
Demonstrates launching a progress dialog and updating it
periodically with the progress of an ongoing process.
*/
$scope.launchProgress = function (knownProgress) {
var model = {
title: "Progress Dialog Example",
progress: 0,
hint: "Do not navigate away from this page or close this browser tab while this operation is in progress.",
actionText: "Calculating...",
unknownProgress: !knownProgress,
unknownDuration: false,
severity: "info",
options: [
{
label: "Cancel Operation",
callback: function () {
$log.debug("Operation cancelled");
dialogService.dismiss();
}
},
{
label: "Do something else...",
callback: function () {
$log.debug("Something else pressed");
}
}
]
};
function incrementProgress() {
model.progress = Math.min(100, Math.floor(model.progress + Math.random() * 30));
model.progressText = ["Estimated time remaining: about ", 60 - Math.floor((model.progress / 100) * 60), " seconds"].join(" ");
if (model.progress < 100) {
$timeout(incrementProgress, 1000);
}
}
if (dialogService.showBlockingMessage(model)) {
//Do processing here
model.actionText = "Processing 100 objects...";
if (knownProgress) {
$timeout(incrementProgress, 1000);
}
} else {
$log.error("Could not display modal dialog");
}
};
/*
Demonstrates launching an error dialog
*/
$scope.launchError = function () {
var model = {
title: "Error Dialog Example",
actionText: "Something happened, and it was not good.",
severity: "error",
options: [
{
label: "Try Again",
callback: function () {
$log.debug("Try Again Pressed");
dialogService.dismiss();
}
},
{
label: "Cancel",
callback: function () {
$log.debug("Cancel Pressed");
dialogService.dismiss();
}
}
]
};
if (!dialogService.showBlockingMessage(model)) {
$log.error("Could not display modal dialog");
}
};
/*
Demonstrates launching an error dialog
*/
$scope.launchInfo = function () {
var model = {
title: "Info Dialog Example",
actionText: "This is an example of a blocking info" +
" dialog. This dialog can be used to draw the user's" +
" attention to an event.",
severity: "info",
primaryOption: {
label: "OK",
callback: function () {
$log.debug("OK Pressed");
dialogService.dismiss();
}
}
};
if (!dialogService.showBlockingMessage(model)) {
$log.error("Could not display modal dialog");
}
};
}
return DialogLaunchController;
}
);

View File

@@ -19,45 +19,38 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise*/
/*global define,window*/
/**
* Module defining SinewaveTelemetry. Created by vwoeltje on 11/12/14.
*/
define(
[],
function () {
"use strict";
var firstObservedTime = Date.now();
/**
*
* A tool for manually invoking dialogs. When included this
* indicator will allow for dialogs of different types to be
* launched for demonstration and testing purposes.
* @constructor
*/
function SinewaveTelemetry(request) {
var latestObservedTime = Date.now(),
count = Math.floor((latestObservedTime - firstObservedTime) / 1000),
period = request.period || 30,
generatorData = {};
function DialogLaunchIndicator() {
generatorData.getPointCount = function () {
return count;
};
generatorData.getDomainValue = function (i, domain) {
return i * 1000 +
(domain !== 'delta' ? firstObservedTime : 0);
};
generatorData.getRangeValue = function (i, range) {
range = range || "sin";
return Math[range](i * Math.PI * 2 / period);
};
return generatorData;
}
return SinewaveTelemetry;
DialogLaunchIndicator.template = 'dialogLaunchTemplate';
DialogLaunchIndicator.prototype.getGlyph = function () {
return "i";
};
DialogLaunchIndicator.prototype.getGlyphClass = function () {
return 'caution';
};
DialogLaunchIndicator.prototype.getText = function () {
return "Launch test dialog";
};
DialogLaunchIndicator.prototype.getDescription = function () {
return "Launch test dialog";
};
return DialogLaunchIndicator;
}
);
);

View File

@@ -0,0 +1,172 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define(
[],
function () {
"use strict";
/**
* Allows launching of notification messages for the purposes of
* demonstration and testing. Also demonstrates use of
* the NotificationService. Notifications are non-blocking messages that
* appear at the bottom of the screen to inform the user of events
* in a non-intrusive way. For more information see the
* {@link NotificationService}
* @param $scope
* @param $timeout
* @param $log
* @param notificationService
* @constructor
*/
function NotificationLaunchController($scope, $timeout, $log, notificationService) {
var messageCounter = 1;
function getExampleActionText() {
var actionTexts = [
"Adipiscing turpis mauris in enim elementu hac, enim aliquam etiam.",
"Eros turpis, pulvinar turpis eros eu",
"Lundium nascetur a, lectus montes ac, parturient in natoque, duis risus risus pulvinar pid rhoncus, habitasse auctor natoque!"
];
return actionTexts[Math.floor(Math.random()*3)];
}
function getExampleActions() {
var actions = [
{
label: "Try Again",
callback: function () {
$log.debug("Try Again pressed");
}
},
{
label: "Remove",
callback: function () {
$log.debug("Remove pressed");
}
},
{
label: "Cancel",
callback: function () {
$log.debug("Cancel pressed");
}
}
];
// Randomly remove some actions off the top; leave at least one
actions.splice(0,Math.floor(Math.random() * actions.length));
return actions;
}
function getExampleSeverity() {
var severities = [
"info",
"alert",
"error"
];
return severities[Math.floor(Math.random() * severities.length)];
}
/**
* Launch a new notification with a severity level of 'Error'.
*/
$scope.newError = function(){
notificationService.notify({
title: "Example error notification " + messageCounter++,
hint: "An error has occurred",
severity: "error",
primaryOption: {
label: 'Retry',
callback: function() {
$log.info('Retry clicked');
}
},
options: getExampleActions()});
};
/**
* Launch a new notification with a severity of 'Alert'.
*/
$scope.newAlert = function(){
notificationService.notify({
title: "Alert notification " + (messageCounter++),
hint: "This is an alert message",
severity: "alert",
primaryOption: {
label: 'Retry',
callback: function() {
$log.info('Retry clicked');
}
},
options: getExampleActions()});
};
/**
* Launch a new notification with a progress bar that is updated
* periodically, tracking an ongoing process.
*/
$scope.newProgress = function(){
var notificationModel = {
title: "Progress notification example",
severity: "info",
progress: 0,
actionText: getExampleActionText(),
unknownProgress: false
};
/**
* Simulate an ongoing process and update the progress bar.
* @param notification
*/
function incrementProgress(notificationModel) {
notificationModel.progress = Math.min(100, Math.floor(notificationModel.progress + Math.random() * 30));
notificationModel.progressText = ["Estimated time" +
" remaining:" +
" about ", 60 - Math.floor((notificationModel.progress / 100) * 60), " seconds"].join(" ");
if (notificationModel.progress < 100) {
$timeout(function(){incrementProgress(notificationModel);}, 1000);
}
}
notificationService.notify(notificationModel);
incrementProgress(notificationModel);
};
/**
* Launch a new notification with severity level of INFO.
*/
$scope.newInfo = function(){
notificationService.info({
title: "Example Info notification " + messageCounter++
});
};
}
return NotificationLaunchController;
}
);

View File

@@ -0,0 +1,50 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,window*/
define(
[],
function () {
"use strict";
function NotificationLaunchIndicator() {
}
NotificationLaunchIndicator.template = 'notificationLaunchTemplate';
NotificationLaunchIndicator.prototype.getGlyph = function () {
return "i";
};
NotificationLaunchIndicator.prototype.getGlyphClass = function () {
return 'caution';
};
NotificationLaunchIndicator.prototype.getText = function () {
return "Launch notification";
};
NotificationLaunchIndicator.prototype.getDescription = function () {
return "Launch notification";
};
return NotificationLaunchIndicator;
}
);

View File

@@ -4,7 +4,11 @@
{
"implementation": "WatchIndicator.js",
"depends": ["$interval", "$rootScope"]
},
{
"implementation": "DigestIndicator.js",
"depends": ["$interval", "$rootScope"]
}
]
}
}
}

View File

@@ -0,0 +1,77 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define(
[],
function () {
"use strict";
/**
* Displays the number of digests that have occurred since the
* indicator was first instantiated.
* @constructor
* @param $interval Angular's $interval
* @implements {Indicator}
*/
function DigestIndicator($interval, $rootScope) {
var digests = 0,
displayed = 0,
start = Date.now();
function update() {
var secs = (Date.now() - start) / 1000;
displayed = Math.round(digests / secs);
}
function increment() {
digests += 1;
}
$rootScope.$watch(increment);
// Update state every second
$interval(update, 1000);
// Provide initial state, too
update();
return {
getGlyph: function () {
return ".";
},
getGlyphClass: function () {
return undefined;
},
getText: function () {
return displayed + " digests/sec";
},
getDescription: function () {
return "";
}
};
}
return DigestIndicator;
}
);

View File

@@ -22,7 +22,8 @@
"split": "^1.0.0",
"mkdirp": "^0.5.1",
"nomnoml": "^0.0.3",
"canvas": "^1.2.7"
"canvas": "^1.2.7",
"markdown-toc": "^0.11.7"
},
"scripts": {
"start": "node app.js",

View File

@@ -1,4 +1,9 @@
{
"configuration": {
"paths": {
"uuid": "uuid"
}
},
"extensions": {
"routes": [
{
@@ -26,10 +31,10 @@
]
},
{
"key": "BrowseTreeController",
"implementation": "BrowseTreeController.js",
"key": "PaneController",
"implementation": "PaneController.js",
"priority": "preferred",
"depends": [ "$scope", "agentService" ]
"depends": [ "$scope", "agentService","$window" ]
},
{
"key": "BrowseObjectController",

View File

@@ -41,10 +41,8 @@
</mct-representation>
</div>
</div>
<div class='object-holder abs vscroll'>
<mct-representation key="representation.selected.key"
mct-object="representation.selected.key && domainObject">
</mct-representation>
</div>
<mct-representation key="representation.selected.key"
mct-object="representation.selected.key && domainObject"
class="abs object-holder">
</mct-representation>
</span>

View File

@@ -22,20 +22,27 @@
<div class="abs holder-all browse-mode" ng-controller="BrowseController">
<mct-include key="'topbar-browse'"></mct-include>
<div class="holder browse-area s-browse-area abs browse-wrapper"
ng-controller="BrowseTreeController as tree"
ng-class="tree.visible() ? 'browse-showtree' : 'browse-hidetree'">
<mct-split-pane class='contents abs' anchor='left'>
<div class="abs holder holder-main browse-area s-browse-area browse-wrapper"
ng-controller="PaneController as modelPaneTree"
ng-class="modelPaneTree.visible() ? 'pane-tree-showing' : 'pane-tree-hidden'">
<mct-split-pane class='abs contents'
anchor='left'>
<div class='split-pane-component treeview pane left'>
<div class="holder abs l-mobile">
<mct-representation key="'create-button'" mct-object="navigatedObject">
<!--<a class="mini-tab-icon anchor-left toggle-pane toggle-search mobile-hide"
title="Enable search"
ng-click="modelPaneTree.toggle()"
ng-class="{ collapsed : !modelPaneTree.visible() }"
ng-style="{ opacity: modelPaneTree.visible()? 0:1 }"></a>-->
<div class="holder holder-create-and-search abs l-mobile">
<mct-representation key="'create-button'"
mct-object="navigatedObject"
mct-device="desktop">
</mct-representation>
<div class='holder search-holder abs'
ng-class="{active: treeModel.search}">
<mct-representation key="'search'"
mct-object="domainObject"
<mct-include key="'search'"
ng-model="treeModel">
</mct-representation>
</mct-include>
</div>
<div class='tree-holder abs mobile-tree-holder'
ng-hide="treeModel.search">
@@ -48,17 +55,40 @@
</div>
</div>
<mct-splitter class="mobile-hide"></mct-splitter>
<mct-splitter class="splitter-treeview mobile-hide"></mct-splitter>
<div class='split-pane-component items pane right-repr'>
<div class='holder abs l-mobile' id='content-area'>
<mct-representation mct-object="navigatedObject"
key="'browse-object'">
</mct-representation>
<div class='split-pane-component items pane primary-pane right'>
<a class="mini-tab-icon anchor-left toggle-pane toggle-tree"
title="{{ modelPaneTree.visible()? 'Hide' : 'Show' }} this pane"
ng-click="modelPaneTree.toggle()"
ng-class="{ collapsed : !modelPaneTree.visible() }"></a>
<div class='holder holder-object-and-inspector abs l-mobile' id='content-area'
ng-controller="PaneController as modelPaneInspect"
ng-class="modelPaneInspect.visible() ? 'pane-inspect-showing' : 'pane-inspect-hidden'">
<mct-split-pane class='l-object-and-inspector contents abs' anchor='right'>
<div class='split-pane-component t-object pane primary-pane left'>
<mct-representation mct-object="navigatedObject"
key="'browse-object'"
class="abs holder holder-object">
</mct-representation>
</div>
<mct-splitter class="splitter-inspect mobile-hide flush-right edge-shdw"></mct-splitter>
<div class="split-pane-component t-inspect pane right mobile-hide">
<mct-representation key="'object-inspector'"
mct-object="domainObject"
ng-model="treeModel">
</mct-representation>
<a class="mini-tab-icon anchor-right mobile-hide toggle-pane toggle-inspect"
title="{{ modelPaneInspect.visible()? 'Hide' : 'Show' }} the Inspection pane"
ng-click="modelPaneInspect.toggle()"
ng-class="{ collapsed : !modelPaneInspect.visible() }"></a>
</div>
</mct-split-pane>
</div>
<div class="key-properties ui-symbol icon mobile-menu-icon desktop-hide"
mct-device="mobile"
ng-click="tree.toggle()">m</div>
</div>
</mct-split-pane>
</div>

View File

@@ -19,7 +19,7 @@
this source code distribution or the Licensing information page available
at runtime from the About dialog for additional information.
-->
<div class='object-header object-header-mobile'>
<div class='object-header'>
<span class='type-icon ui-symbol'>{{type.getGlyph()}}</span>
<!--span class='type-name mobile-important-hide'>{{type.getName()}}</span-->
<span class="l-elem-wrapper l-flex">

View File

@@ -19,13 +19,12 @@
this source code distribution or the Licensing information page available
at runtime from the About dialog for additional information.
-->
<div class="menu-element wrapper" ng-controller="ClickAwayController as createController">
<div class="s-menu major create-btn" ng-click="createController.toggle()">
<span class="ui-symbol icon type-icon">&#x2b;</span>
<span ng-controller="ClickAwayController as createController">
<div class="s-menu-btn major create-btn" ng-click="createController.toggle()">
<span class="title-label">Create</span>
</div>
<div class="menu super-menu" ng-show="createController.isActive()">
<mct-representation mct-object="domainObject" key="'create-menu'">
</mct-representation>
</div>
</div>
</span>

View File

@@ -26,14 +26,8 @@
<div class='ui-symbol profile' title='Shared'>&#x4f;</div>
<mct-representation class="desktop-hide" key="'info-button'" mct-object="domainObject"></mct-representation>
</div>
<div class='item-main abs'>
<div class='ui-symbol icon lg item-type'>
{{type.getGlyph()}}
<span
class="ui-symbol l-icon-link" title="This object is a link"
ng-show="location.isLink()"
></span>
</div>
<div class='item-main abs lg'>
<span class="t-item-icon" ng-class="{ 'l-icon-link':location.isLink() }">{{type.getGlyph()}}</span>
<div class='ui-symbol abs item-open'>}</div>
</div>
<div class='bottom-bar bar abs'>

View File

@@ -153,7 +153,6 @@ define(
$scope.$on("$destroy", function () {
navigationService.removeListener(setNavigation);
});
}
return BrowseController;

View File

@@ -33,10 +33,12 @@ define(
* @constructor
* @memberof platform/commonUI/browse
*/
function BrowseTreeController($scope, agentService) {
function PaneController($scope, agentService, $window) {
var self = this;
this.agentService = agentService;
this.state = true;
// Fast and cheap: if this has been opened in a new window, hide panes by default
this.state = !$window.opener;
/**
* Callback to invoke when any selection occurs in the tree.
@@ -44,7 +46,7 @@ define(
* to the tree representation.
*
* @property {Function} callback
* @memberof platform/commonUI/browse.BrowseTreeController#
* @memberof platform/commonUI/browse.PaneController#
*/
this.callback = function () {
// Note that, since this is a callback to pass, this is not
@@ -59,20 +61,20 @@ define(
}
/**
* Toggle the visibility of the tree.
* Toggle the visibility of the pane.
*/
BrowseTreeController.prototype.toggle = function () {
PaneController.prototype.toggle = function () {
this.state = !this.state;
};
/**
* Get the desired visibility state of the tree.
* Get the desired visibility state of the pane.
* @returns {boolean} true when visible
*/
BrowseTreeController.prototype.visible = function () {
PaneController.prototype.visible = function () {
return this.state;
};
return BrowseTreeController;
return PaneController;
}
);

View File

@@ -25,7 +25,7 @@
* Module defining CreateService. Created by vwoeltje on 11/10/14.
*/
define(
["../../lib/uuid"],
["uuid"],
function (uuid) {
"use strict";

View File

@@ -22,22 +22,24 @@
/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/
define(
["../src/BrowseTreeController"],
function (BrowseTreeController) {
["../src/PaneController"],
function (PaneController) {
'use strict';
describe("The BrowseTreeController", function () {
describe("The PaneController", function () {
var mockScope,
mockAgentService,
mockDomainObjects,
mockWindow,
controller;
// We want to reinstantiate for each test case
// because device state can influence constructor-time behavior
function instantiateController() {
return new BrowseTreeController(
return new PaneController(
mockScope,
mockAgentService
mockAgentService,
mockWindow
);
}
@@ -58,6 +60,7 @@ define(
"agentService",
[ "isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape" ]
);
mockWindow = jasmine.createSpyObj("$window", ["open"]);
});
it("is initially visible", function () {

View File

@@ -1,7 +1,7 @@
[
"BrowseController",
"BrowseObjectController",
"BrowseTreeController",
"PaneController",
"MenuArrowController",
"creation/CreateAction",
"creation/CreateActionProvider",

View File

@@ -24,6 +24,18 @@
{
"key": "form-dialog",
"templateUrl": "templates/dialog.html"
},
{
"key": "overlay-blocking-message",
"templateUrl": "templates/overlay-blocking-message.html"
},
{
"key": "message",
"templateUrl": "templates/message.html"
},
{
"key": "overlay-message-list",
"templateUrl": "templates/overlay-message-list.html"
}
],
"containers": [

View File

@@ -21,17 +21,13 @@
-->
<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 class="hint">All fields marked <span class="ui-symbol req">*</span> are required.</div>
</div>
<div class="abs form editor">
<div class='abs contents l-dialog'>
<mct-form ng-model="ngModel.value"
structure="ngModel.structure"
name="createForm">
</mct-form>
</div>
<div class='abs editor'>
<mct-form ng-model="ngModel.value"
structure="ngModel.structure"
name="createForm">
</mct-form>
</div>
<div class="abs bottom-bar">
<a class='s-btn major'

View File

@@ -0,0 +1,32 @@
<div class="l-message"
ng-class="'message-severity-' + ngModel.severity">
<div class="ui-symbol type-icon message-type"></div>
<div class="message-contents">
<div class="top-bar">
<div class="title">{{ngModel.title}}</div>
<div class="hint" ng-hide="ngModel.hint === undefined">{{ngModel.hint}}</div>
</div>
<div class="message-body">
<div class="message-action">
{{ngModel.actionText}}
</div>
<mct-include key="'progress-bar'"
ng-model="ngModel"
ng-show="ngModel.progress !== undefined || ngModel.unknownProgress"></mct-include>
</div>
<div class="bottom-bar">
<a ng-repeat="dialogOption in ngModel.options"
class="s-btn major"
ng-click="dialogOption.callback()">
{{dialogOption.label}}
</a>
<a class="s-btn major"
ng-if="ngModel.primaryOption"
ng-click="ngModel.primaryOption.callback()">
{{ngModel.primaryOption.label}}
</a>
</div>
</div>
</div>

View File

@@ -0,0 +1,25 @@
<!--
Open MCT Web, Copyright (c) 2014-2015, United States Government
as represented by the Administrator of the National Aeronautics and Space
Administration. All rights reserved.
Open MCT Web is licensed under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0.
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations
under the License.
Open MCT Web includes source code licensed under additional open source
licenses. See the Open Source Licenses file (LICENSES.md) included with
this source code distribution or the Licensing information page available
at runtime from the About dialog for additional information.
-->
<mct-container key="overlay" class="t-message-single">
<mct-include key="'message'" ng-model="ngModel">
</mct-include>
</mct-container>

View File

@@ -0,0 +1,19 @@
<mct-container key="overlay" class="t-message-list">
<div class="message-contents">
<div class="abs top-bar">
<div class="title">{{ngModel.dialog.title}}</div>
<div class="hint">Displaying {{ngModel.dialog.messages.length}} message<span ng-show="ngModel.dialog.messages.length > 1">s</span>
</div>
</div>
<div class="abs message-body">
<mct-include ng-repeat="msg in ngModel.dialog.messages | orderBy: '-'" key="'message'" ng-model="msg"></mct-include>
</div>
<div class="abs bottom-bar">
<a ng-repeat="dialogAction in ngModel.dialog.actions"
class="s-btn major"
ng-click="dialogAction.action()">
{{dialogAction.label}}
</a>
</div>
</div>
</mct-container>

View File

@@ -24,13 +24,11 @@
<div class="title">{{ngModel.dialog.title}}</div>
<div class="hint">{{ngModel.dialog.hint}}</div>
</div>
<div class="abs form outline editor">
<div class='abs contents l-dialog'>
<mct-include key="ngModel.dialog.template"
parameters="ngModel.dialog.parameters"
ng-model="ngModel.dialog.model">
</mct-include>
</div>
<div class='abs editor'>
<mct-include key="ngModel.dialog.template"
parameters="ngModel.dialog.parameters"
ng-model="ngModel.dialog.model">
</mct-include>
</div>
<div class="abs bottom-bar">
<a ng-repeat="option in ngModel.dialog.options"

View File

@@ -22,14 +22,9 @@
<div class="abs overlay">
<div class="abs blocker"></div>
<div class="abs holder">
<a href=""
ng-click="ngModel.cancel()"
<a ng-click="ngModel.cancel()"
ng-if="ngModel.cancel"
class="clk-icon icon ui-symbol close">
x
</a>
<div class="abs contents" ng-transclude>
</div>
class="clk-icon icon ui-symbol close">x</a>
<div class="abs contents" ng-transclude></div>
</div>
</div>

View File

@@ -55,7 +55,7 @@ define(
this.dialogVisible = false;
};
DialogService.prototype.getDialogResponse = function (key, model, resultGetter) {
DialogService.prototype.getDialogResponse = function (key, model, resultGetter, typeClass) {
// We will return this result as a promise, because user
// input is asynchronous.
var deferred = this.$q.defer(),
@@ -84,27 +84,20 @@ define(
model.confirm = confirm;
model.cancel = cancel;
if (this.dialogVisible) {
// Only one dialog should be shown at a time.
// The application design should be such that
// we never even try to do this.
this.$log.warn([
"Dialog already showing; ",
"unable to show ",
model.name
].join(""));
deferred.reject();
} else {
if (this.canShowDialog(model)) {
// Add the overlay using the OverlayService, which
// will handle actual insertion into the DOM
this.overlay = this.overlayService.createOverlay(
key,
model
model,
typeClass || "t-dialog"
);
// Track that a dialog is already visible, to
// avoid spawning multiple dialogs at once.
this.dialogVisible = true;
} else {
deferred.reject();
}
return deferred.promise;
@@ -157,6 +150,99 @@ define(
);
};
/**
* Tests if a dialog can be displayed. A modal dialog may only be
* displayed if one is not already visible.
* Will log a warning message if it can't display a dialog.
* @returns {boolean} true if dialog is currently visible, false
* otherwise
*/
DialogService.prototype.canShowDialog = function(dialogModel){
if (this.dialogVisible){
// Only one dialog should be shown at a time.
// The application design should be such that
// we never even try to do this.
this.$log.warn([
"Dialog already showing; ",
"unable to show ",
dialogModel.title
].join(""));
return false;
} else {
return true;
}
};
/**
* A user action that can be performed from a blocking dialog. These
* actions will be rendered as buttons within a blocking dialog.
*
* @typedef DialogOption
* @property {string} label a label to be displayed as the button
* text for this action
* @property {function} action a function to be called when the
* button is clicked
*/
/**
* A description of the model options that may be passed to the
* showBlockingMessage method. Note that the DialogModel desribed
* here is shared with the Notifications framework.
* @see NotificationService
*
* @typedef DialogModel
* @property {string} title the title to use for the dialog
* @property {string} severity the severity level of this message.
* These are defined in a bundle constant with key 'dialogSeverity'
* @property {string} hint the 'hint' message to show below the title
* @property {string} actionText text that indicates a current action,
* shown above a progress bar to indicate what's happening.
* @property {number} progress a percentage value (1-100)
* indicating the completion of the blocking task
* @property {string} progressText the message to show below a
* progress bar to indicate progress. For example, this might be
* used to indicate time remaining, or items still to process.
* @property {boolean} unknownProgress some tasks may be
* impossible to provide an estimate for. Providing a true value for
* this attribute will indicate to the user that the progress and
* duration cannot be estimated.
* @property {DialogOption} primaryOption an action that will
* be added to the dialog as a button. The primary action can be
* used as the suggested course of action for the user. Making it
* distinct from other actions allows it to be styled differently,
* and treated preferentially in banner mode.
* @property {DialogOption[]} options a list of actions that will
* be added to the dialog as buttons.
*/
/**
* Displays a blocking (modal) dialog. This dialog can be used for
* displaying messages that require the user's
* immediate attention. The message may include an indication of
* progress, as well as a series of actions that
* the user can take if necessary
* @param {DialogModel} dialogModel defines options for the dialog
* @param {typeClass} string tells overlayService that this overlay should use appropriate CSS class
* @returns {boolean}
*/
DialogService.prototype.showBlockingMessage = function(dialogModel) {
if (this.canShowDialog(dialogModel)) {
// Add the overlay using the OverlayService, which
// will handle actual insertion into the DOM
this.overlay = this.overlayService.createOverlay(
"overlay-blocking-message",
dialogModel,
"t-dialog-sm"
);
// Track that a dialog is already visible, to
// avoid spawning multiple dialogs at once.
this.dialogVisible = true;
return true;
} else {
return false;
}
};
return DialogService;
}

View File

@@ -28,7 +28,7 @@ define(
// Template to inject into the DOM to show the dialog; really just points to
// the a specific template that can be included via mct-include
var TEMPLATE = '<mct-include ng-model="overlay" key="key"></mct-include>';
var TEMPLATE = '<mct-include ng-model="overlay" key="key" ng-class="typeClass"></mct-include>';
/**
@@ -71,8 +71,11 @@ define(
* @param {object} overlayModel the model to pass to the
* included overlay template (this will be passed
* in via ng-model)
* @param {string} typeClass the element class to use in rendering
* the overlay. Can be specified to provide custom styling of
* overlays
*/
OverlayService.prototype.createOverlay = function (key, overlayModel) {
OverlayService.prototype.createOverlay = function (key, overlayModel, typeClass) {
// Create a new scope for this overlay
var scope = this.newScope(),
element;
@@ -90,6 +93,7 @@ define(
// Populate the scope; will be passed directly to the template
scope.overlay = overlayModel;
scope.key = key;
scope.typeClass = typeClass || 't-dialog';
// Create the overlay element and add it to the document's body
element = this.$compile(TEMPLATE)(scope);

View File

@@ -116,10 +116,22 @@ define(
dialog: dialogModel,
confirm: jasmine.any(Function),
cancel: jasmine.any(Function)
}
},
't-dialog'
);
});
it("invokes the overlay service with the correct parameters when" +
" a blocking dialog is requested", function() {
var dialogModel = {};
expect(dialogService.showBlockingMessage(dialogModel)).toBe(true);
expect(mockOverlayService.createOverlay).toHaveBeenCalledWith(
"overlay-blocking-message",
dialogModel,
"t-dialog-sm"
);
});
});
}
);
);

View File

@@ -30,12 +30,11 @@
structure="toolbar.structure"
ng-model="toolbar.state">
</mct-toolbar>
<div class='holder abs object-holder work-area'>
<mct-representation key="representation.selected.key"
toolbar="toolbar"
mct-object="representation.selected.key && domainObject">
</mct-representation>
</div>
<mct-representation key="representation.selected.key"
toolbar="toolbar"
mct-object="representation.selected.key && domainObject"
class="holder abs object-holder work-area">
</mct-representation>
</div>
<mct-splitter></mct-splitter>
<div

View File

@@ -0,0 +1,26 @@
{
"name": "Time services bundle",
"description": "Defines interfaces and provides default implementations for handling different time systems.",
"extensions": {
"components": [
{
"provides": "formatService",
"type": "provider",
"implementation": "FormatProvider.js",
"depends": [ "formats[]" ]
}
],
"formats": [
{
"key": "utc",
"implementation": "UTCTimeFormat.js"
}
],
"constants": [
{
"key": "DEFAULT_TIME_FORMAT",
"value": "utc"
}
]
}
}

View File

@@ -0,0 +1,114 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define([
], function (
) {
"use strict";
/**
* An object used to convert between numeric values and text values,
* typically used to display these values to the user and to convert
* user input to a numeric format, particularly for time formats.
* @interface {Format}
*/
/**
* Parse text (typically user input) to a numeric value.
* Behavior is undefined when the text cannot be parsed;
* `validate` should be called first if the text may be invalid.
* @method parse
* @memberof Format#
* @param {string} text the text to parse
* @returns {number} the parsed numeric value
*/
/**
* Determine whether or not some text (typically user input) can
* be parsed to a numeric value by this format.
* @method validate
* @memberof Format#
* @param {string} text the text to parse
* @returns {boolean} true if the text can be parsed
*/
/**
* Convert a numeric value to a text value for display using
* this format.
* @method format
* @memberof Format#
* @param {number} value the numeric value to format
* @returns {string} the text representation of the value
*/
/**
* Provides access to `Format` objects which can be used to
* convert values between human-readable text and numeric
* representations.
* @interface FormatService
*/
/**
* Look up a format by its symbolic identifier.
* @method getFormat
* @memberof FormatService#
* @param {string} key the identifier for this format
* @returns {Format} the format
* @throws {Error} errors when the requested format is unrecognized
*/
/**
* Provides formats from the `formats` extension category.
* @constructor
* @implements {FormatService}
* @memberof platform/commonUI/formats
* @param {Array.<function(new : Format)>} format constructors,
* from the `formats` extension category.
*/
function FormatProvider(formats) {
var formatMap = {};
function addToMap(Format) {
var key = Format.key;
if (key && !formatMap[key]) {
formatMap[key] = new Format();
}
}
formats.forEach(addToMap);
this.formatMap = formatMap;
}
FormatProvider.prototype.getFormat = function (key) {
var format = this.formatMap[key];
if (!format) {
throw new Error("FormatProvider: No format found for " + key);
}
return format;
};
return FormatProvider;
});

View File

@@ -0,0 +1,63 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define*/
define([
'moment'
], function (
moment
) {
"use strict";
var DATE_FORMAT = "YYYY-MM-DD HH:mm:ss",
DATE_FORMATS = [
DATE_FORMAT,
"YYYY-MM-DD HH:mm",
"YYYY-MM-DD"
];
/**
* Formatter for UTC timestamps. Interprets numeric values as
* milliseconds since the start of 1970.
*
* @implements {Format}
* @constructor
* @memberof platform/commonUI/formats
*/
function UTCTimeFormat() {
}
UTCTimeFormat.prototype.format = function (value) {
return moment.utc(value).format(DATE_FORMAT);
};
UTCTimeFormat.prototype.parse = function (text) {
return moment.utc(text, DATE_FORMATS).valueOf();
};
UTCTimeFormat.prototype.validate = function (text) {
return moment.utc(text, DATE_FORMATS).isValid();
};
return UTCTimeFormat;
});

View File

@@ -0,0 +1,68 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/
define(
['../src/FormatProvider'],
function (FormatProvider) {
'use strict';
var KEYS = [ 'a', 'b', 'c' ];
describe("The FormatProvider", function () {
var mockFormats,
mockLog,
mockFormatInstances,
provider;
beforeEach(function () {
mockFormatInstances = KEYS.map(function (k) {
return jasmine.createSpyObj(
'format-' + k,
[ 'parse', 'validate', 'format' ]
);
});
// Return constructors
mockFormats = KEYS.map(function (k, i) {
function MockFormat() { return mockFormatInstances[i]; }
MockFormat.key = k;
return MockFormat;
});
provider = new FormatProvider(mockFormats);
});
it("looks up formats by key", function () {
KEYS.forEach(function (k, i) {
expect(provider.getFormat(k))
.toEqual(mockFormatInstances[i]);
});
});
it("throws an error about unknown formats", function () {
expect(function () {
provider.getFormat('some-unknown-format');
}).toThrow();
});
});
}
);

View File

@@ -0,0 +1,56 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*global define,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/
define(
['../src/UTCTimeFormat', 'moment'],
function (UTCTimeFormat, moment) {
'use strict';
describe("The UTCTimeFormat", function () {
var format;
beforeEach(function () {
format = new UTCTimeFormat();
});
it("formats UTC timestamps", function () {
var timestamp = 12345670000,
formatted = format.format(timestamp);
expect(formatted).toEqual(jasmine.any(String));
expect(moment.utc(formatted).valueOf()).toEqual(timestamp);
});
it("validates time inputs", function () {
expect(format.validate("1977-05-25 11:21:22")).toBe(true);
expect(format.validate("garbage text")).toBe(false);
});
it("parses valid input", function () {
var text = "1977-05-25 11:21:22",
parsed = format.parse(text);
expect(parsed).toEqual(jasmine.any(Number));
expect(parsed).toEqual(moment.utc(text).valueOf());
});
});
}
);

View File

@@ -0,0 +1,4 @@
[
"FormatProvider",
"UTCTimeFormat"
]

View File

@@ -8,6 +8,11 @@
"key": "urlService",
"implementation": "services/UrlService.js",
"depends": [ "$location" ]
},
{
"key": "popupService",
"implementation": "services/PopupService.js",
"depends": [ "$document", "$window" ]
}
],
"runs": [
@@ -39,12 +44,35 @@
"key": "indicator",
"templateUrl": "templates/indicator.html"
},
{
"key": "message-banner",
"templateUrl": "templates/message-banner.html"
},
{
"key": "progress-bar",
"templateUrl": "templates/progress-bar.html"
},
{
"key": "time-controller",
"templateUrl": "templates/controls/time-controller.html"
}
],
"controllers": [
{
"key": "TimeRangeController",
"implementation": "controllers/TimeRangeController.js",
"depends": [ "$scope", "formatService", "DEFAULT_TIME_FORMAT", "now" ]
},
{
"key": "DateTimePickerController",
"implementation": "controllers/DateTimePickerController.js",
"depends": [ "$scope", "now" ]
},
{
"key": "DateTimeFieldController",
"implementation": "controllers/DateTimeFieldController.js",
"depends": [ "$scope", "formatService", "DEFAULT_TIME_FORMAT" ]
},
{
"key": "TreeNodeController",
"implementation": "controllers/TreeNodeController.js",
@@ -92,6 +120,16 @@
"key": "SelectorController",
"implementation": "controllers/SelectorController.js",
"depends": [ "objectService", "$scope" ]
},
{
"key": "ObjectInspectorController",
"implementation": "controllers/ObjectInspectorController.js",
"depends": [ "$scope", "objectService" ]
},
{
"key": "BannerController",
"implementation": "controllers/BannerController.js",
"depends": ["$scope", "notificationService", "dialogService"]
}
],
"directives": [
@@ -105,11 +143,21 @@
"implementation": "directives/MCTDrag.js",
"depends": [ "$document" ]
},
{
"key": "mctClickElsewhere",
"implementation": "directives/MCTClickElsewhere.js",
"depends": [ "$document" ]
},
{
"key": "mctResize",
"implementation": "directives/MCTResize.js",
"depends": [ "$timeout" ]
},
{
"key": "mctPopup",
"implementation": "directives/MCTPopup.js",
"depends": [ "$compile", "popupService" ]
},
{
"key": "mctScrollX",
"implementation": "directives/MCTScroll.js",
@@ -207,12 +255,24 @@
"key": "switcher",
"templateUrl": "templates/controls/switcher.html",
"uses": [ "view" ]
},
{
"key": "object-inspector",
"templateUrl": "templates/object-inspector.html"
}
],
"controls": [
{
"key": "selector",
"templateUrl": "templates/controls/selector.html"
},
{
"key": "datetime-picker",
"templateUrl": "templates/controls/datetime-picker.html"
},
{
"key": "datetime-field",
"templateUrl": "templates/controls/datetime-field.html"
}
],
"licenses": [

View File

@@ -1,14 +1,70 @@
{
"metadata": {
"name": "WTD Symbols v24",
"lastOpened": 1441992412958,
"created": 1441992410384
"name": "WTD Symbols",
"lastOpened": 1446490786311,
"created": 1446489891263
},
"iconSets": [
{
"selection": [
{
"order": 86,
"order": 113,
"id": 92,
"prevSize": 32,
"code": 58901,
"name": "icon-crosshair",
"tempChar": ""
},
{
"order": 110,
"id": 91,
"prevSize": 32,
"code": 58899,
"name": "icon-collapse-pane-left",
"tempChar": ""
},
{
"order": 111,
"id": 90,
"prevSize": 32,
"code": 58900,
"name": "icon-collapse-pane-right",
"tempChar": ""
},
{
"order": 109,
"id": 89,
"prevSize": 32,
"code": 58898,
"name": "icon-save",
"tempChar": ""
},
{
"order": 108,
"id": 88,
"prevSize": 32,
"code": 58897,
"name": "icon-dataset",
"tempChar": ""
},
{
"order": 90,
"id": 87,
"prevSize": 32,
"code": 58896,
"name": "icon-bell",
"tempChar": ""
},
{
"order": 91,
"id": 86,
"prevSize": 32,
"code": 58889,
"name": "icon-hourglass",
"tempChar": ""
},
{
"order": 92,
"id": 85,
"prevSize": 32,
"code": 58888,
@@ -18,119 +74,119 @@
58890
],
"name": "icon-info-v15",
"tempChar": ""
"tempChar": ""
},
{
"order": 82,
"order": 93,
"id": 84,
"prevSize": 32,
"code": 58887,
"name": "icon-x-in-circle",
"tempChar": ""
"tempChar": ""
},
{
"order": 77,
"order": 94,
"id": 83,
"prevSize": 32,
"code": 58881,
"name": "icon-datatable",
"tempChar": ""
"tempChar": ""
},
{
"order": 78,
"order": 95,
"id": 82,
"prevSize": 32,
"code": 58882,
"name": "icon-tabular-scrolling",
"tempChar": ""
"tempChar": ""
},
{
"order": 79,
"order": 96,
"id": 81,
"prevSize": 32,
"code": 58884,
"name": "icon-tabular",
"tempChar": ""
"tempChar": ""
},
{
"order": 80,
"order": 97,
"id": 80,
"prevSize": 32,
"code": 58885,
"name": "icon-calendar",
"tempChar": ""
"tempChar": ""
},
{
"order": 83,
"order": 98,
"id": 78,
"prevSize": 32,
"code": 58886,
"name": "icon-paint-bucket",
"tempChar": ""
"tempChar": ""
},
{
"order": 1,
"order": 99,
"id": 75,
"prevSize": 32,
"code": 123,
"name": "icon-pointer-left",
"tempChar": ""
"tempChar": ""
},
{
"order": 3,
"order": 100,
"id": 74,
"prevSize": 32,
"code": 125,
"name": "icon-pointer-right",
"tempChar": ""
"tempChar": ""
},
{
"order": 4,
"order": 101,
"id": 73,
"prevSize": 32,
"code": 80,
"name": "icon-person",
"tempChar": ""
"tempChar": ""
},
{
"order": 5,
"order": 102,
"id": 72,
"prevSize": 32,
"code": 232,
"name": "icon-chain-links",
"tempChar": ""
"tempChar": ""
},
{
"order": 6,
"order": 103,
"id": 71,
"prevSize": 32,
"code": 115,
"name": "icon-database-in-brackets",
"tempChar": ""
"tempChar": ""
},
{
"order": 7,
"order": 104,
"id": 70,
"prevSize": 32,
"code": 114,
"name": "icon-refresh",
"tempChar": ""
"tempChar": ""
},
{
"order": 8,
"order": 105,
"id": 69,
"prevSize": 32,
"code": 108,
"name": "icon-lock",
"tempChar": ""
"tempChar": ""
},
{
"order": 9,
"order": 106,
"id": 68,
"prevSize": 32,
"code": 51,
"name": "icon-box-with-dashed-lines",
"tempChar": ""
"tempChar": ""
},
{
"order": 10,
@@ -138,7 +194,7 @@
"prevSize": 32,
"code": 58880,
"name": "icon-box-with-arrow-cursor",
"tempChar": ""
"tempChar": ""
},
{
"order": 11,
@@ -146,7 +202,7 @@
"prevSize": 32,
"code": 65,
"name": "icon-activity-mode",
"tempChar": ""
"tempChar": ""
},
{
"order": 12,
@@ -154,15 +210,15 @@
"prevSize": 32,
"code": 97,
"name": "icon-activity",
"tempChar": ""
"tempChar": ""
},
{
"order": 13,
"order": 87,
"id": 64,
"prevSize": 32,
"code": 33,
"name": "icon-alert-rect",
"tempChar": ""
"tempChar": ""
},
{
"order": 14,
@@ -170,7 +226,7 @@
"prevSize": 32,
"code": 58883,
"name": "icon-alert-triangle",
"tempChar": ""
"tempChar": ""
},
{
"order": 15,
@@ -178,7 +234,7 @@
"prevSize": 32,
"code": 238,
"name": "icon-arrow-double-down",
"tempChar": ""
"tempChar": ""
},
{
"order": 16,
@@ -186,7 +242,7 @@
"prevSize": 32,
"code": 235,
"name": "icon-arrow-double-up",
"tempChar": ""
"tempChar": ""
},
{
"order": 2,
@@ -194,7 +250,7 @@
"prevSize": 32,
"code": 118,
"name": "icon-arrow-down",
"tempChar": ""
"tempChar": ""
},
{
"order": 19,
@@ -202,7 +258,7 @@
"prevSize": 32,
"code": 60,
"name": "icon-arrow-left",
"tempChar": ""
"tempChar": ""
},
{
"order": 20,
@@ -210,7 +266,7 @@
"prevSize": 32,
"code": 62,
"name": "icon-arrow-right",
"tempChar": ""
"tempChar": ""
},
{
"order": 21,
@@ -218,7 +274,7 @@
"prevSize": 32,
"code": 236,
"name": "icon-arrow-tall-down",
"tempChar": ""
"tempChar": ""
},
{
"order": 22,
@@ -226,7 +282,7 @@
"prevSize": 32,
"code": 237,
"name": "icon-arrow-tall-up",
"tempChar": ""
"tempChar": ""
},
{
"order": 23,
@@ -234,7 +290,7 @@
"prevSize": 32,
"code": 94,
"name": "icon-arrow-up",
"tempChar": ""
"tempChar": ""
},
{
"order": 24,
@@ -242,7 +298,7 @@
"prevSize": 32,
"code": 73,
"name": "icon-arrows-out",
"tempChar": ""
"tempChar": ""
},
{
"order": 25,
@@ -250,7 +306,7 @@
"prevSize": 32,
"code": 58893,
"name": "icon-arrows-right-left",
"tempChar": ""
"tempChar": ""
},
{
"order": 33,
@@ -258,7 +314,7 @@
"prevSize": 32,
"code": 53,
"name": "icon-arrows-up-down",
"tempChar": ""
"tempChar": ""
},
{
"order": 26,
@@ -266,7 +322,7 @@
"prevSize": 32,
"code": 42,
"name": "icon-asterisk",
"tempChar": ""
"tempChar": ""
},
{
"order": 27,
@@ -274,7 +330,7 @@
"prevSize": 32,
"code": 72,
"name": "icon-autoflow-tabular",
"tempChar": ""
"tempChar": ""
},
{
"order": 28,
@@ -282,7 +338,7 @@
"prevSize": 32,
"code": 224,
"name": "icon-box",
"tempChar": ""
"tempChar": ""
},
{
"order": 29,
@@ -290,7 +346,7 @@
"prevSize": 32,
"code": 50,
"name": "icon-check",
"tempChar": ""
"tempChar": ""
},
{
"order": 30,
@@ -298,7 +354,7 @@
"prevSize": 32,
"code": 67,
"name": "icon-clock",
"tempChar": ""
"tempChar": ""
},
{
"order": 31,
@@ -306,7 +362,7 @@
"prevSize": 32,
"code": 46,
"name": "icon-connectivity",
"tempChar": ""
"tempChar": ""
},
{
"order": 32,
@@ -314,7 +370,7 @@
"prevSize": 32,
"code": 100,
"name": "icon-database-query",
"tempChar": ""
"tempChar": ""
},
{
"order": 17,
@@ -322,7 +378,7 @@
"prevSize": 32,
"code": 68,
"name": "icon-database",
"tempChar": ""
"tempChar": ""
},
{
"order": 35,
@@ -330,7 +386,7 @@
"prevSize": 32,
"code": 81,
"name": "icon-dictionary",
"tempChar": ""
"tempChar": ""
},
{
"order": 36,
@@ -338,7 +394,7 @@
"prevSize": 32,
"code": 242,
"name": "icon-duplicate",
"tempChar": ""
"tempChar": ""
},
{
"order": 37,
@@ -346,7 +402,7 @@
"prevSize": 32,
"code": 102,
"name": "icon-folder-new",
"tempChar": ""
"tempChar": ""
},
{
"order": 38,
@@ -354,7 +410,7 @@
"prevSize": 32,
"code": 70,
"name": "icon-folder",
"tempChar": ""
"tempChar": ""
},
{
"order": 39,
@@ -362,7 +418,7 @@
"prevSize": 32,
"code": 95,
"name": "icon-fullscreen-collapse",
"tempChar": ""
"tempChar": ""
},
{
"order": 40,
@@ -370,7 +426,7 @@
"prevSize": 32,
"code": 122,
"name": "icon-fullscreen-expand",
"tempChar": ""
"tempChar": ""
},
{
"order": 41,
@@ -378,7 +434,7 @@
"prevSize": 32,
"code": 71,
"name": "icon-gear",
"tempChar": ""
"tempChar": ""
},
{
"order": 49,
@@ -386,7 +442,7 @@
"prevSize": 32,
"code": 227,
"name": "icon-image",
"tempChar": ""
"tempChar": ""
},
{
"order": 42,
@@ -394,7 +450,7 @@
"prevSize": 32,
"code": 225,
"name": "icon-layers",
"tempChar": ""
"tempChar": ""
},
{
"order": 43,
@@ -402,7 +458,7 @@
"prevSize": 32,
"code": 76,
"name": "icon-layout",
"tempChar": ""
"tempChar": ""
},
{
"order": 44,
@@ -410,7 +466,7 @@
"prevSize": 32,
"code": 226,
"name": "icon-line-horz",
"tempChar": ""
"tempChar": ""
},
{
"order": 75,
@@ -418,7 +474,7 @@
"prevSize": 32,
"code": 244,
"name": "icon-link",
"tempChar": ""
"tempChar": ""
},
{
"order": 46,
@@ -426,7 +482,7 @@
"prevSize": 32,
"code": 88,
"name": "icon-magnify-in",
"tempChar": ""
"tempChar": ""
},
{
"order": 47,
@@ -434,7 +490,7 @@
"prevSize": 32,
"code": 89,
"name": "icon-magnify-out",
"tempChar": ""
"tempChar": ""
},
{
"order": 48,
@@ -442,7 +498,7 @@
"prevSize": 32,
"code": 77,
"name": "icon-magnify",
"tempChar": ""
"tempChar": ""
},
{
"order": 34,
@@ -450,7 +506,7 @@
"prevSize": 32,
"code": 109,
"name": "icon-menu",
"tempChar": ""
"tempChar": ""
},
{
"order": 50,
@@ -458,7 +514,7 @@
"prevSize": 32,
"code": 243,
"name": "icon-move",
"tempChar": ""
"tempChar": ""
},
{
"order": 51,
@@ -466,7 +522,7 @@
"prevSize": 32,
"code": 121,
"name": "icon-new-window",
"tempChar": ""
"tempChar": ""
},
{
"order": 52,
@@ -474,7 +530,7 @@
"prevSize": 32,
"code": 111,
"name": "icon-object",
"tempChar": ""
"tempChar": ""
},
{
"order": 73,
@@ -482,7 +538,7 @@
"prevSize": 32,
"code": 63,
"name": "icon-object-unknown",
"tempChar": ""
"tempChar": ""
},
{
"order": 53,
@@ -490,7 +546,7 @@
"prevSize": 32,
"code": 86,
"name": "icon-packet",
"tempChar": ""
"tempChar": ""
},
{
"order": 54,
@@ -498,7 +554,7 @@
"prevSize": 32,
"code": 234,
"name": "icon-page",
"tempChar": ""
"tempChar": ""
},
{
"order": 55,
@@ -506,7 +562,7 @@
"prevSize": 32,
"code": 241,
"name": "icon-pause",
"tempChar": ""
"tempChar": ""
},
{
"order": 56,
@@ -514,7 +570,7 @@
"prevSize": 32,
"code": 112,
"name": "icon-pencil",
"tempChar": ""
"tempChar": ""
},
{
"order": 65,
@@ -522,7 +578,7 @@
"prevSize": 32,
"code": 79,
"name": "icon-people",
"tempChar": ""
"tempChar": ""
},
{
"order": 57,
@@ -530,7 +586,7 @@
"prevSize": 32,
"code": 239,
"name": "icon-play",
"tempChar": ""
"tempChar": ""
},
{
"order": 58,
@@ -538,7 +594,7 @@
"prevSize": 32,
"code": 233,
"name": "icon-plot-resource",
"tempChar": ""
"tempChar": ""
},
{
"order": 59,
@@ -546,7 +602,7 @@
"prevSize": 32,
"code": 43,
"name": "icon-plus",
"tempChar": ""
"tempChar": ""
},
{
"order": 60,
@@ -554,7 +610,7 @@
"prevSize": 32,
"code": 45,
"name": "icon-minus",
"tempChar": ""
"tempChar": ""
},
{
"order": 61,
@@ -562,7 +618,7 @@
"prevSize": 32,
"code": 54,
"name": "icon-sine",
"tempChar": ""
"tempChar": ""
},
{
"order": 62,
@@ -570,7 +626,7 @@
"prevSize": 32,
"code": 228,
"name": "icon-T",
"tempChar": ""
"tempChar": ""
},
{
"order": 63,
@@ -578,7 +634,7 @@
"prevSize": 32,
"code": 116,
"name": "icon-telemetry-panel",
"tempChar": ""
"tempChar": ""
},
{
"order": 64,
@@ -586,7 +642,7 @@
"prevSize": 32,
"code": 84,
"name": "icon-telemetry",
"tempChar": ""
"tempChar": ""
},
{
"order": 18,
@@ -594,7 +650,7 @@
"prevSize": 32,
"code": 246,
"name": "icon-thumbs-strip",
"tempChar": ""
"tempChar": ""
},
{
"order": 67,
@@ -602,7 +658,7 @@
"prevSize": 32,
"code": 83,
"name": "icon-timeline",
"tempChar": ""
"tempChar": ""
},
{
"order": 68,
@@ -610,7 +666,7 @@
"prevSize": 32,
"code": 245,
"name": "icon-timer",
"tempChar": ""
"tempChar": ""
},
{
"order": 69,
@@ -618,7 +674,7 @@
"prevSize": 32,
"code": 90,
"name": "icon-trash",
"tempChar": ""
"tempChar": ""
},
{
"order": 70,
@@ -626,7 +682,7 @@
"prevSize": 32,
"code": 229,
"name": "icon-two-parts-both",
"tempChar": ""
"tempChar": ""
},
{
"order": 71,
@@ -634,7 +690,7 @@
"prevSize": 32,
"code": 231,
"name": "icon-two-parts-one-only",
"tempChar": ""
"tempChar": ""
},
{
"order": 72,
@@ -642,7 +698,7 @@
"prevSize": 32,
"code": 120,
"name": "icon-x-heavy",
"tempChar": ""
"tempChar": ""
},
{
"order": 66,
@@ -650,7 +706,7 @@
"prevSize": 32,
"code": 58946,
"name": "icon-x",
"tempChar": ""
"tempChar": ""
}
],
"id": 2,
@@ -665,6 +721,173 @@
"height": 1024,
"prevSize": 32,
"icons": [
{
"id": 92,
"paths": [
"M514 2c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM860.2 450h-282.2v-282.2c69.6 12.8 133.8 46.2 185 97.4 51 51 84.4 115.2 97.2 184.8zM450 167.8v282.2h-282.2c12.8-69.6 46.2-133.8 97.4-185 51-51 115.2-84.4 184.8-97.2zM167.8 578h282.2v282.2c-69.6-12.8-133.8-46.2-185-97.4-51-51-84.4-115.2-97.2-184.8zM578 860.2v-282.2h282.2c-12.8 69.6-46.2 133.8-97.4 185-51 51-115.2 84.4-184.8 97.2z"
],
"attrs": [
{
"fill": "rgb(0, 0, 0)"
}
],
"isMulticolor": false,
"grid": 0,
"tags": [
"icon-crosshair"
],
"colorPermutations": {
"125525525516161751": [
0
]
}
},
{
"id": 91,
"paths": [
"M256 0h-256v1024h256c105.6 0 192-86.4 192-192v-640c0-105.6-86.4-192-192-192z",
"M512 320l512 320v-640z"
],
"attrs": [
{
"fill": "rgb(0, 0, 0)"
},
{
"fill": "rgb(0, 0, 0)"
}
],
"isMulticolor": false,
"grid": 0,
"tags": [
"icon-collapse-pane-left"
],
"colorPermutations": {
"125525525516161751": [
0,
0
]
}
},
{
"id": 90,
"paths": [
"M768 0h256v1024h-256c-105.6 0-192-86.4-192-192v-640c0-105.6 86.4-192 192-192z",
"M512 320l-512 320v-640z"
],
"attrs": [
{
"fill": "rgb(0, 0, 0)"
},
{
"fill": "rgb(0, 0, 0)"
}
],
"isMulticolor": false,
"grid": 0,
"tags": [
"icon-collapse-pane-right"
],
"colorPermutations": {
"125525525516161751": [
0,
0
]
}
},
{
"id": 89,
"paths": [
"M192.2 576c-0.2 0-0.2 0 0 0l-0.2 448h640v-447.8c0 0 0 0-0.2-0.2h-639.6z",
"M978.8 210.8l-165.4-165.4c-25-25-74.2-45.4-109.4-45.4h-576c-70.4 0-128 57.6-128 128v768c0 70.4 57.6 128 128 128v-448c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v448c70.4 0 128-57.6 128-128v-576c0-35.2-20.4-84.4-45.2-109.2zM704 256c0 35.2-28.8 64-64 64h-448c-35.2 0-64-28.8-64-64v-192h320v192h128v-192h128v192z"
],
"attrs": [
{
"fill": "rgb(0, 0, 0)"
},
{
"fill": "rgb(0, 0, 0)"
}
],
"isMulticolor": false,
"grid": 0,
"tags": [
"icon-save-v2"
],
"colorPermutations": {
"125525525516161751": [
0,
0
]
}
},
{
"id": 88,
"paths": [
"M896 192h-320c-16.4-16.4-96.8-96.8-109.2-109.2l-37.4-37.4c-25-25-74.2-45.4-109.4-45.4h-256c-35.2 0-64 28.8-64 64v384c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v-128c0-70.4-57.6-128-128-128z",
"M896 448h-768c-70.4 0-128 57.6-128 128v320c0 70.4 57.6 128 128 128h768c70.4 0 128-57.6 128-128v-320c0-70.4-57.6-128-128-128zM320 896h-128v-320h128v320zM576 896h-128v-320h128v320zM832 896h-128v-320h128v320z"
],
"attrs": [],
"isMulticolor": false,
"grid": 0,
"tags": [
"icon-dataset"
],
"colorPermutations": {
"125525525516161751": []
}
},
{
"id": 87,
"paths": [
"M512 1024c106 0 192-86 192-192h-384c0 106 86 192 192 192z",
"M896 448v-64c0-212-172-384-384-384s-384 172-384 384v64c0 70.6-57.4 128-128 128v128h1024v-128c-70.6 0-128-57.4-128-128z"
],
"attrs": [
{
"fill": "rgb(6, 161, 75)"
},
{
"fill": "rgb(6, 161, 75)"
}
],
"isMulticolor": false,
"grid": 0,
"tags": [
"icon-bell"
],
"colorPermutations": {
"125525525516161751": [
1,
1
]
}
},
{
"id": 86,
"paths": [
"M1024 0h-1024c0 282.8 229.2 512 512 512s512-229.2 512-512zM512 384c-102.6 0-199-40-271.6-112.4-41.2-41.2-72-90.2-90.8-143.6h724.6c-18.8 53.4-49.6 102.4-90.8 143.6-72.4 72.4-168.8 112.4-271.4 112.4z",
"M512 512c-282.8 0-512 229.2-512 512h1024c0-282.8-229.2-512-512-512z"
],
"attrs": [
{
"fill": "rgb(6, 161, 75)"
},
{
"fill": "rgb(6, 161, 75)"
}
],
"isMulticolor": false,
"grid": 0,
"tags": [
"icon-hourglass"
],
"colorPermutations": {
"125525525516161751": [
1,
1
]
}
},
{
"id": 85,
"paths": [
@@ -698,7 +921,8 @@
"icon-x-in-circle"
],
"colorPermutations": {
"16161751": []
"16161751": [],
"125525525516161751": []
}
},
{
@@ -899,6 +1123,11 @@
1,
1,
1
],
"125525525516161751": [
1,
1,
1
]
}
},
@@ -1051,18 +1280,28 @@
{
"id": 67,
"paths": [
"M832 512.4c0-0.2 0-0.2 0-0.4v-320c0-105.6-86.4-192-192-192h-448c-105.6 0-192 86.4-192 192v320c0 105.6 86.4 192 192 192h263.6l-197.2-445.6 573.6 254z",
"M766.8 659.8l193.8-20.4-576.6-255.4 255.4 576.6 20.4-193.8 257 257.2 107.2-107.2z"
"M894-2h-768c-70.4 0-128 57.6-128 128v768c0 70.4 57.6 128 128 128h400c-2.2-3.8-4-7.6-5.8-11.4l-255.2-576.8c-21.4-48.4-10.8-105 26.6-142.4 24.4-24.4 57.2-37.4 90.4-37.4 17.4 0 35.2 3.6 51.8 11l576.6 255.4c4 1.8 7.8 3.8 11.4 5.8v-400.2c0.2-70.4-57.4-128-127.8-128z",
"M958.6 637.4l-576.6-255.4 255.4 576.6 64.6-128.6 192 192 128-128-192-192z"
],
"attrs": [
{},
{}
{
"fill": "rgb(0, 0, 0)"
},
{
"fill": "rgb(0, 0, 0)"
}
],
"isMulticolor": false,
"grid": 0,
"tags": [
"icon-box-with-arrow-cursor"
]
],
"colorPermutations": {
"125525525516161751": [
0,
0
]
}
},
{
"id": 66,
@@ -1338,6 +1577,9 @@
"colorPermutations": {
"16161751": [
0
],
"125525525516161751": [
0
]
}
},
@@ -14853,6 +15095,5 @@
"gridSize": 16,
"showLiga": false
},
"uid": -1,
"time": 1441993324496
"uid": -1
}

View File

@@ -76,7 +76,7 @@
<glyph unicode="&#xf4;" glyph-name="icon-link" d="M1024 448l-512 512v-307.2l-512-204.8v-256h512v-256z" />
<glyph unicode="&#xf5;" glyph-name="icon-timer" d="M638 898c0 35.4-28.6 64-64 64h-128c-35.4 0-64-28.6-64-64s28.6-64 64-64h128c35.4 0 64 28.6 64 64zM510 834c-247.4 0-448-200.6-448-448s200.6-448 448-448 448 200.6 448 448-200.6 448-448 448zM510 386h-336c0 185.2 150.8 336 336 336v-336z" />
<glyph unicode="&#xf6;" glyph-name="icon-thumbs-strip" d="M448 578c0-35.2-28.8-64-64-64h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-320zM1024 578c0-35.2-28.8-64-64-64h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-320zM448 2c0-35.2-28.8-64-64-64h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-320zM1024 2c0-35.2-28.8-64-64-64h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-320z" />
<glyph unicode="&#xe600;" glyph-name="icon-box-with-arrow-cursor" d="M832 447.6c0 0.2 0 0.2 0 0.4v320c0 105.6-86.4 192-192 192h-448c-105.6 0-192-86.4-192-192v-320c0-105.6 86.4-192 192-192h263.6l-197.2 445.6 573.6-254zM766.8 300.2l193.8 20.4-576.6 255.4 255.4-576.6 20.4 193.8 257-257.2 107.2 107.2z" />
<glyph unicode="&#xe600;" glyph-name="icon-box-with-arrow-cursor" d="M894 962h-768c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128h400c-2.2 3.8-4 7.6-5.8 11.4l-255.2 576.8c-21.4 48.4-10.8 105 26.6 142.4 24.4 24.4 57.2 37.4 90.4 37.4 17.4 0 35.2-3.6 51.8-11l576.6-255.4c4-1.8 7.8-3.8 11.4-5.8v400.2c0.2 70.4-57.4 128-127.8 128zM958.6 322.6l-576.6 255.4 255.4-576.6 64.6 128.6 192-192 128 128-192 192z" />
<glyph unicode="&#xe601;" glyph-name="icon-datatable" d="M1024 768c0-106.039-229.23-192-512-192s-512 85.961-512 192c0 106.039 229.23 192 512 192s512-85.961 512-192zM512 448c-282.8 0-512 86-512 192v-512c0-106 229.2-192 512-192s512 86 512 192v512c0-106-229.2-192-512-192zM896 385v-256c-36.6-15.6-79.8-28.8-128-39.4v256c48.2 10.6 91.4 23.8 128 39.4zM256 345.6v-256c-48.2 10.4-91.4 23.8-128 39.4v256c36.6-15.6 79.8-28.8 128-39.4zM384 70v256c41-4 83.8-6 128-6s87 2.2 128 6v-256c-41-4-83.8-6-128-6s-87 2.2-128 6z" />
<glyph unicode="&#xe602;" glyph-name="icon-tabular-scrolling" d="M64 960c-35.2 0-64-28.8-64-64v-192h448v256h-384zM1024 704v192c0 35.2-28.8 64-64 64h-384v-256h448zM0 576v-192c0-35.2 28.8-64 64-64h384v256h-448zM960 320c35.2 0 64 28.8 64 64v192h-448v-256h384zM512-64l-256 256h512z" />
<glyph unicode="&#xe603;" glyph-name="icon-alert-triangle" d="M998.208 111.136l-422.702 739.728c-34.928 61.124-92.084 61.124-127.012 0l-422.702-739.728c-34.928-61.126-5.906-111.136 64.494-111.136h843.428c70.4 0 99.422 50.010 64.494 111.136zM512 128c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64c0-35.2-28.8-64-64-64zM627.448 577.242l-38.898-194.486c-6.902-34.516-41.35-62.756-76.55-62.756s-69.648 28.24-76.552 62.758l-38.898 194.486c-6.902 34.516 16.25 62.756 51.45 62.756h128c35.2 0 58.352-28.24 51.448-62.758z" />
@@ -85,6 +85,13 @@
<glyph unicode="&#xe606;" glyph-name="icon-paint-bucket" d="M544 736v-224c0-88.4-71.6-160-160-160s-160 71.6-160 160v97.2l-197.4-196.4c-50-50-12.4-215.2 112.4-340s290-162.4 340-112.4l417 423.6-352 352zM896-64c70.6 0 128 57.4 128 128 0 108.6-128 192-128 192s-128-83.4-128-192c0-70.6 57.4-128 128-128zM384 448c-35.4 0-64 28.6-64 64v384c0 35.4 28.6 64 64 64s64-28.6 64-64v-384c0-35.4-28.6-64-64-64z" />
<glyph unicode="&#xe607;" glyph-name="icon-x-in-circle" d="M512 960c-282.8 0-512-229.2-512-512s229.2-512 512-512 512 229.2 512 512-229.2 512-512 512zM832 256l-128-128-192 192-192-192-128 128 192 192-192 192 128 128 192-192 192 192 128-128-192-192 192-192z" />
<glyph unicode="&#xe608;" glyph-name="icon-info-v15" d="M512 960c-282.8 0-512-229.2-512-512s229.2-512 512-512 512 229.2 512 512-229.2 512-512 512zM512 832c70.6 0 128-57.4 128-128s-57.4-128-128-128c-70.6 0-128 57.4-128 128s57.4 128 128 128zM704 128h-384v128h64v256h256v-256h64v-128z" />
<glyph unicode="&#xe609;" glyph-name="icon-hourglass" d="M1024 960h-1024c0-282.8 229.2-512 512-512s512 229.2 512 512zM512 576c-102.6 0-199 40-271.6 112.4-41.2 41.2-72 90.2-90.8 143.6h724.6c-18.8-53.4-49.6-102.4-90.8-143.6-72.4-72.4-168.8-112.4-271.4-112.4zM512 448c-282.8 0-512-229.2-512-512h1024c0 282.8-229.2 512-512 512z" />
<glyph unicode="&#xe60d;" glyph-name="icon-arrows-right-left" d="M1024 448l-448-512v1024zM448 960l-448-512 448-512z" />
<glyph unicode="&#xe610;" glyph-name="icon-bell" d="M512-64c106 0 192 86 192 192h-384c0-106 86-192 192-192zM896 512v64c0 212-172 384-384 384s-384-172-384-384v-64c0-70.6-57.4-128-128-128v-128h1024v128c-70.6 0-128 57.4-128 128z" />
<glyph unicode="&#xe611;" glyph-name="icon-dataset" d="M896 768h-320c-16.4 16.4-96.8 96.8-109.2 109.2l-37.4 37.4c-25 25-74.2 45.4-109.4 45.4h-256c-35.2 0-64-28.8-64-64v-384c0 70.4 57.6 128 128 128h768c70.4 0 128-57.6 128-128v128c0 70.4-57.6 128-128 128zM896 512h-768c-70.4 0-128-57.6-128-128v-320c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v320c0 70.4-57.6 128-128 128zM320 64h-128v320h128v-320zM576 64h-128v320h128v-320zM832 64h-128v320h128v-320z" />
<glyph unicode="&#xe612;" glyph-name="icon-save" d="M192.2 384c-0.2 0-0.2 0 0 0l-0.2-448h640v447.8c0 0 0 0-0.2 0.2h-639.6zM978.8 749.2l-165.4 165.4c-25 25-74.2 45.4-109.4 45.4h-576c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128v448c0 35.2 28.8 64 64 64h640c35.2 0 64-28.8 64-64v-448c70.4 0 128 57.6 128 128v576c0 35.2-20.4 84.4-45.2 109.2zM704 704c0-35.2-28.8-64-64-64h-448c-35.2 0-64 28.8-64 64v192h320v-192h128v192h128v-192z" />
<glyph unicode="&#xe613;" glyph-name="icon-collapse-pane-left" d="M256 960h-256v-1024h256c105.6 0 192 86.4 192 192v640c0 105.6-86.4 192-192 192zM512 640l512-320v640z" />
<glyph unicode="&#xe614;" glyph-name="icon-collapse-pane-right" d="M768 960h256v-1024h-256c-105.6 0-192 86.4-192 192v640c0 105.6 86.4 192 192 192zM512 640l-512-320v640z" />
<glyph unicode="&#xe615;" glyph-name="icon-crosshair" d="M514 958c-282.8 0-512-229.2-512-512s229.2-512 512-512 512 229.2 512 512-229.2 512-512 512zM860.2 510h-282.2v282.2c69.6-12.8 133.8-46.2 185-97.4 51-51 84.4-115.2 97.2-184.8zM450 792.2v-282.2h-282.2c12.8 69.6 46.2 133.8 97.4 185 51 51 115.2 84.4 184.8 97.2zM167.8 382h282.2v-282.2c-69.6 12.8-133.8 46.2-185 97.4-51 51-84.4 115.2-97.2 184.8zM578 99.8v282.2h282.2c-12.8-69.6-46.2-133.8-97.4-185-51-51-115.2-84.4-184.8-97.2z" />
<glyph unicode="&#xe642;" glyph-name="icon-x" d="M384 448l-365.332-365.332c-24.89-24.89-24.89-65.62 0-90.51l37.49-37.49c24.89-24.89 65.62-24.89 90.51 0 0 0 365.332 365.332 365.332 365.332l365.332-365.332c24.89-24.89 65.62-24.89 90.51 0l37.49 37.49c24.89 24.89 24.89 65.62 0 90.51l-365.332 365.332c0 0 365.332 365.332 365.332 365.332 24.89 24.89 24.89 65.62 0 90.51l-37.49 37.49c-24.89 24.89-65.62 24.89-90.51 0 0 0-365.332-365.332-365.332-365.332l-365.332 365.332c-24.89 24.89-65.62 24.89-90.51 0l-37.49-37.49c-24.89-24.89-24.89-65.62 0-90.51 0 0 365.332-365.332 365.332-365.332z" />
</font></defs></svg>

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

@@ -42,12 +42,17 @@ $ueFooterH: 25px;
$ueColMargin: 1.5%;
$ueAppLogoW: 105px;
$ueEditToolBarH: 25px;
$ueBrowseLeftPaneW: 25%;
$ueBrowseLeftPaneTreeW: 25%;
$ueBrowseRightPaneInspectW: 20%;
$ueCollapsedPaneEdgeM: 20px;
$uePaneMiniTabH: $ueTopBarH;
$uePaneMiniTabW: 9px;
$ueEditLeftPaneW: 75%;
$treeSearchInputBarH: 25px;
$ueTimeControlH: (33px, 20px, 20px);
// Overlay
$ovrTopBarH: 60px;
$ovrFooterH: 30px;
$ovrTopBarH: 45px;
$ovrFooterH: 24px;
$overlayMargin: 25px;
// Items
$ueBrowseGridItemLg: 200px;
@@ -56,7 +61,8 @@ $ueBrowseGridItemBottomBarH: 30px;
$itemPadLR: 5px;
// Tree
$treeVCW: 10px;
$treeTypeIconH: 16px;
$treeTypeIconH: 1.4em; // was 16px
$treeTypeIconHPx: 16px;
$treeTypeIconW: 20px;
$treeContextTriggerW: 20px;
// Tabular
@@ -105,3 +111,8 @@ $dirImgs: $dirCommonRes + 'images/';
/************************** TIMINGS */
$controlFadeMs: 100ms;
/************************** LIMITS */
$glyphLimit: '\e603';
$glyphLimitUpr: '\0000eb';
$glyphLimitLwr: '\0000ee';

View File

@@ -34,17 +34,13 @@
font-style: normal;
}
.ui-symbol {
font-family: 'symbolsfont';
}
/************************** HTML ENTITIES */
a {
color: #ccc;
color: $colorA;
cursor: pointer;
text-decoration: none;
&:hover {
color: #fff;
color: $colorAHov;
}
}
@@ -55,7 +51,7 @@ body, html {
color: $colorBodyFg;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-size: 100%;
//font-weight: 500;
font-weight: 200;
height: 100%;
width: 100%;
overflow: hidden;
@@ -125,6 +121,14 @@ mct-container {
text-align: center;
}
.scrolling {
overflow: auto;
}
.vscroll {
overflow-y: auto;
}
.no-margin {
margin: 0;
}

View File

@@ -29,8 +29,14 @@
}
.ui-symbol {
font-family: 'symbolsfont';
&.type-icon {
color: $colorObjHdrIc;
}
&.icon {
color: $colorKey;
//position: relative;
font-size: inherit;
&.alert {
color: $colorAlert;
&:hover {
@@ -41,6 +47,9 @@
font-size: 1.65em;
}
}
&.icon-calendar:after {
content: "\e605";
}
}
.bar .ui-symbol {
@@ -52,7 +61,7 @@
display: inline-block;
}
.s-menu .invoke-menu,
.s-menu-btn .invoke-menu,
.icon.major .invoke-menu {
margin-left: $interiorMarginSm;
}
@@ -63,18 +72,32 @@
position: absolute;
}
//.tree-item .type-icon {
// font-size: 16px; // 16px is crisp size
//}
.l-icon-link:before {
content: "\f4";
}
.l-icon-alert {
display: none !important; // Remove this when alerts are enabled
&:before {
color: $colorAlert;
content: "!";
}
}
// NEW!!
.t-item-icon {
// Used in grid-item.html, tree-item, inspector location, more?
@extend .ui-symbol;
@extend .icon;
display: inline-block;
line-height: normal; // This is Ok for the symbolsfont
position: relative;
&.l-icon-link {
&:before {
color: $colorIconLink;
content: "\f4";
height: auto; width: auto;
position: absolute;
left: 0; top: 0; right: 0; bottom: 10%;
@include transform-origin(bottom, left);
@include transform(scale(0.3));
z-index: 2;
}
}
}

View File

@@ -0,0 +1,107 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/* Styles for the Inspector pane */
.l-inspect,
.l-inspect table tr td {
font-size: 0.7rem;
}
.l-inspect {
@extend .abs;
background: $colorInspectorBg;
color: $colorInspectorFg;
line-height: 140%;
.pane-header {
color: pushBack($colorInspectorFg, 20%);
font-size: 0.8rem;
&:before {
color: pushBack($colorInspectorFg, 10%);
content:'\e615'; // e615 Crosshair symbol
display: inline;
font-family: symbolsfont;
margin-right: $interiorMargin;
vertical-align: bottom;
}
}
ul li,
em {
display: block;
position: relative;
}
ul li {
margin-bottom: $interiorMarginLg;
}
em {
@include border-radius($basicCr);
background-color: $colorInspectorSectionHeaderBg;
color: $colorInspectorSectionHeaderFg;
margin-bottom: $interiorMargin;
padding: $formTBPad $formLRPad;
text-transform: uppercase;
}
.inspector-properties {
&:not(.first) {
border-top: 1px solid $colorInspectorSectionHeaderBg;
}
padding: $interiorMarginSm 0;
.label {
color: $colorInspectorPropName;
text-transform: uppercase;
}
.value {
color: $colorInspectorPropVal;
word-break: break-all;
}
}
.inspector-location {
//line-height: 180%;
.location-item {
cursor: pointer;
display: inline-block;
position: relative;
padding: 2px 4px;
&:hover {
background: $colorItemTreeHoverBg;
color: $colorItemTreeHoverFg;
.icon {
color: $colorItemTreeIconHover;
}
}
}
&:not(.last) .t-object-label .t-title-label:after {
color: pushBack($colorInspectorFg, 15%);
content: '\3e';
display: inline-block;
font-family: symbolsfont;
font-size: 8px;
line-height: inherit;
margin-left: $interiorMarginSm;
width: 4px;
}
}
}

View File

@@ -1,26 +1,39 @@
@mixin limit($bg, $ic, $glyph) {
background: $bg !important;
//color: $fg !important;
&:before {
//@include pulse(1000ms);
color: $ic;
content: $glyph;
}
@mixin limitGlyph($iconColor, $glyph: $glyphLimit) {
&:before {
color: $iconColor;
content: $glyph;
font-family: symbolsfont;
font-size: 0.8em;
display: inline;
margin-right: $interiorMarginSm;
}
}
[class*="s-limit"] {
//white-space: nowrap;
&:before {
display: inline-block;
font-family: symbolsfont;
font-size: 0.75em;
font-style: normal !important;
margin-right: $interiorMarginSm;
vertical-align: middle;
}
.s-limit-red { background: $colorLimitRedBg !important; }
.s-limit-yellow { background: $colorLimitYellowBg !important; }
// Handle limit when applied to a tr
tr[class*="s-limit"] {
&.s-limit-red td:first-child {
@include limitGlyph($colorLimitRedIc);
}
&.s-limit-yellow td:first-child {
@include limitGlyph($colorLimitYellowIc);
}
&.s-limit-upr td:first-child:before { content:$glyphLimitUpr; }
&.s-limit-lwr td:first-child:before { content:$glyphLimitLwr; }
}
.s-limit-upr-red { @include limit($colorLimitRedBg, $colorLimitRedIc, "\0000eb"); };
.s-limit-upr-yellow { @include limit($colorLimitYellowBg, $colorLimitYellowIc, "\0000ed"); };
.s-limit-lwr-yellow { @include limit($colorLimitYellowBg, $colorLimitYellowIc, "\0000ec"); };
.s-limit-lwr-red { @include limit($colorLimitRedBg, $colorLimitRedIc, "\0000ee"); };
// Handle limit when applied directly to a non-tr element
// Assume this is applied to the element that displays the limit value
:not(tr)[class*="s-limit"] {
&.s-limit-red {
@include limitGlyph($colorLimitRedIc);
}
&.s-limit-yellow {
@include limitGlyph($colorLimitYellowIc);
}
&.s-limit-upr:before { content:$glyphLimitUpr; }
&.s-limit-lwr:before { content:$glyphLimitLwr; }
}

View File

@@ -29,8 +29,7 @@
@import "helpers/bubbles";
@import "helpers/splitter";
@import "helpers/wait-spinner";
@import "messages";
@import "properties";
@import "inspector";
/********************************* CONTROLS */
@import "controls/breadcrumb";
@@ -39,6 +38,7 @@
@import "controls/controls";
@import "controls/lists";
@import "controls/menus";
@import "controls/messages";
@import "controls/time-controller";
@import "mobile/controls/menus";
@@ -62,7 +62,6 @@
@import "mobile/tree";
@import "user-environ/frame";
@import "user-environ/top-bar";
@import "user-environ/bottom-bar";
@import "user-environ/tool-bar";
/********************************* VIEWS */
@@ -70,7 +69,6 @@
@import "lists/tabular";
@import "plots/plots-main";
@import "iframe";
@import "hide-non-functional";
@import "views";
@import "items/item";
@import "mobile/item";

View File

@@ -1,12 +0,0 @@
/* Styles for messages */
.message {
&.block {
@include border-radius($basicCr);
padding: $interiorMarginLg;
}
&.error {
background-color: rgba($colorAlert,0.3);
color: lighten($colorAlert, 20%);
}
}

View File

@@ -41,36 +41,41 @@
width: $d;
}
@mixin trans-prop-nice($props, $t: 500ms) {
@if $t == 0 {
@mixin trans-prop-nice($props, $dur: 500ms, $delay: 0) {
// Multiple $props must be in parans like this: (left, right)
@if $dur == 0 {
@include transition-property(none);
} @else {
@include transition-property($props);
@include transition-duration($t);
@include transition-duration($dur);
@include transition-timing-function(ease-in-out);
@include transition-delay($delay);
}
}
@mixin trans-prop-nice-fade($t: 0.5s) {
@if $t == 0 {
@mixin trans-prop-nice-fade($dur: 500ms, $delay: 0) {
@if $dur == 0 {
@include transition-property(none);
} @else {
@include transition-property(visibility, opacity, background-color, border-color);
@include transition-duration($t);
@include transition-property(opacity, background-color, border-color, color);
@include transition-duration($dur);
@include transition-timing-function(ease-in-out);
@include transition-delay($delay);
}
}
@mixin trans-prop-nice-resize-h($t: 0.5s) {
@mixin trans-prop-nice-resize-h($dur: 500ms, $delay: 0) {
@include transition-property(height, bottom, top);
@include transition-duration($t);
@include transition-duration($dur);
@include transition-timing-function(ease-in-out);
@include transition-delay($delay);
}
@mixin trans-prop-nice-resize-w($t: 0.5s) {
@mixin trans-prop-nice-resize-w($dur: 500ms, $delay: 0) {
@include transition-property(width, left, right);
@include transition-duration($t);
@include transition-duration($dur);
@include transition-timing-function(ease-in-out);
@include transition-delay($delay);
}
@mixin triangle-right($size, $color) {
@@ -94,7 +99,6 @@
}
@mixin triangle($dir: "left", $size: 5px, $ratio: 1, $color: red) {
//$size: $size*2;
width: 0;
height: 0;
$slopedB: $size/$ratio solid transparent;
@@ -129,6 +133,24 @@
background-size: $d $d;
}
@mixin bgVertStripes($c: yellow, $a: 0.1, $d: 40px) {
@include background-image(linear-gradient(-90deg,
rgba($c, $a) 0%, rgba($c, $a) 50%,
transparent 50%, transparent 100%
));
background-repeat: repeat;
background-size: $d $d;
}
@mixin bgVertFuzzyStripes($c: yellow, $a: 0.1, $d: 40px) {
@include background-image(linear-gradient(-90deg,
rgba($c, $a) 0%, transparent 50%,
transparent 50%, rgba($c, $a) 100%
));
background-repeat: repeat;
background-size: $d $d;
}
@mixin bgTicks($c: $colorBodyFg, $repeatDir: 'x') {
$deg: 90deg;
@if ($repeatDir != 'x') {
@@ -156,31 +178,28 @@
}
@mixin controlGrippy($b, $direction: horizontal, $w: 1px, $style: dotted) {
&:before {
@include trans-prop-nice("border-color", 0.75s);
content: '';
display: block;
height: auto;
pointer-events: none;
position: absolute;
z-index: 2;
//&:before {
//@include trans-prop-nice("border-color", 25ms);
content: '';
display: block;
//height: auto;
pointer-events: none;
position: absolute;
z-index: 2;
@if $direction == "horizontal" {
border-top: $w $style darken($b, 15%);
top: 2px;
left: 5px;
right: 5px;
@if $direction == "horizontal" {
border-top: $w $style darken($b, 15%);
top: 2px;
left: 5px;
right: 5px;
height: 1px;
} @else if $direction == "vertical" {
border-left: $w $style darken($b, 15%);
left: 2px;
bottom: 5px;
top: 5px;
}
}
&:not(.disabled):hover:before {
@include trans-prop-nice("border-color", 25ms);
border-color: $colorGrippyInteriorHover;
} @else if $direction == "vertical" {
border-left: $w $style darken($b, 15%);
left: 2px;
bottom: 5px;
top: 5px;
width: 1px;
}
}
@@ -256,6 +275,12 @@
@return percentage($d);
}
@function splitterHandleInset($splitterD: 21px, $splitterHandleD: 1px) {
// Space to either side of the handle
@return ($splitterD - $splitterHandleD) * 0.5;
}
/*********************************************** CONTROLS, FORM ELEMENTS */
@mixin containerBase($bg: $colorBodyBg, $fg: $colorBodyFg) {
@@ -347,9 +372,7 @@
/* This doesn't work on an element inside an element with absolute positioning that has height: auto */
//position: relative;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
@include transform(translateY(-50%));
}
@mixin verticalCenterBlock($holderH, $itemH) {
@@ -374,22 +397,8 @@
overflow-y: $showBar;
}
@mixin wait-spinner($b: 5px, $c: $colorAlt1) {
display: block;
position: absolute;
-webkit-animation: rotation .6s infinite linear;
-moz-animation: rotation .6s infinite linear;
-o-animation: rotation .6s infinite linear;
animation: rotation .6s infinite linear;
border-color: rgba($c, 0.25);
border-top-color: rgba($c, 1.0);
border-style: solid;
border-width: $b;
border-radius: 100%;
}
@mixin test($c: #ffcc00, $a: 0.2) {
background-color: rgba($c, $a);
background-color: rgba($c, $a) !important;
}
@mixin tmpBorder($c: #ffcc00, $a: 0.75) {

View File

@@ -10,9 +10,6 @@
&.fixed {
font-size: 0.8em;
}
&.scrolling {
overflow: auto;
}
.controls,
label,
.inline-block {

View File

@@ -22,13 +22,17 @@
$baseRatio: 1.5;
$pad: $interiorMargin * $baseRatio;
.s-btn {
@include box-sizing(border-box);
.s-btn,
.s-icon-btn {
@include user-select(none);
cursor: pointer;
text-decoration: none;
height: $btnStdH;
line-height: $btnStdH;
}
.s-btn {
@include box-sizing(border-box);
padding: 0 $pad;
font-size: 0.7rem;
@@ -89,6 +93,155 @@ $pad: $interiorMargin * $baseRatio;
}
}
.s-icon-btn {
@extend .ui-symbol;
color: $colorBtnIcon;
&:hover {
color: lighten($colorBtnIcon, $ltGamma);
}
}
.mini-tab {
// Meant to be used as pane hide/show control elements in concert with mct-splitter
//@extend .ui-symbol;
@include desktop {
//@include test(green);
$iconH: $uePaneMiniTabH;
$iconW: $uePaneMiniTabW;
$iconInnerLR: 0;
$arwD: 9px;
$arwOffsetX: 0px;
$arwAnimOffsetX: 2px + $iconInnerLR;
$cBg: pullForward($colorBodyBg, 15%);
$cFg: $cBg;
@include border-radius($basicCr);
//@include boxShdw($shdwBtns);
@include box-sizing(border-box);
@include trans-prop-nice((color, background-color), 100ms);
color: $cFg;
cursor: pointer;
font-family: symbolsfont;
font-size: $arwD;
display: block;
position: absolute;
line-height: $iconH;
height: $iconH; width: $iconW;
text-align: center;
&:hover {
//background-color: $cBg;
color: $colorKey; //pullForward($cFg, $ltGamma);
}
&.collapsed {
// State when the pane this element controls has been collapsed
@include btnSubtle($colorBtnBg, $colorKey, $colorBtnFg, $colorBtnIcon);
&:before { opacity: 0; }
&:after { opacity: 1; }
&:hover {
&:before { opacity: 1; }
&:after { opacity: 0; }
}
}
&:before,
&:after {
//@include test();
@include trans-prop-nice((left, right, opacity), 250ms);
display: block;
height: 100%;
position: absolute;
}
&:before {
// Always the arrow icon
//@include test(green);
//font-size: $arwD;
width: $arwD;
}
&:after {
// Always icon; content is set in _layout.scss
width: 100%;
text-align: center;
opacity: 0;
}
&.anchor-left {
// |<
text-align: right;
&:before {
content:'\3c'; // Collapse left icon e613
right: $iconInnerLR;
}
//&:hover:before { right: $arwAnimOffsetX; }
&.collapsed {
@include border-left-radius(0);
text-align: left;
&:before {
content:'\3e';
left: $iconInnerLR;
}
&:hover:before { left: $arwAnimOffsetX; }
}
}
&.anchor-right {
// >|
text-align: left;
&:before {
content:'\3e'; // Collapse right icon e614
left: $iconInnerLR;
}
//&:hover:before { left: $arwAnimOffsetX; }
&.collapsed {
@include border-right-radius(0);
&:before {
text-align: right;
content:'\3c';
right: $iconInnerLR;
}
&:hover:before { right: $arwAnimOffsetX; }
}
}
}
}
.mini-tab-icon {
// Meant to be used as pane hide/show control elements in concert with mct-splitter
//@extend .ui-symbol;
@include desktop {
$d: $uePaneMiniTabW;
//@include trans-prop-nice(transform, 150ms);
color: pullForward($colorBodyBg, 15%);
cursor: pointer;
display: block;
font-family: symbolsfont;
font-size: $d;
position: absolute;
height: $d; width: $d;
line-height: $d;
overflow: hidden;
word-break: break-all;
&:before,
&:after {
position: absolute;
display: inherit;
}
&:before {
content: '\78'; // X icon
}
&:hover {
color: $colorKey;
//@include transform(scale(1.2));
}
}
}
.l-btn-set {
// Buttons that have a very tight conceptual grouping - no internal space between them.
// Structure: .btn-set > mct-representation class=first|last > .s-btn

View File

@@ -19,34 +19,6 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
/*.control {
// UNUSED?
&.view-control {
.icon {
display: inline-block;
margin: -1px 5px 1px 2px;
vertical-align: middle;
&.triangle-down {
margin: 2px 2px -2px 0px;
}
}
.label {
display: inline-block;
font-size: 11px;
vertical-align: middle;
}
.toggle {
@include border-radius(3px);
display: inline-block;
padding: 1px 6px 4px 4px;
&:hover {
background: rgba(white, 0.1);
}
}
}
}*/
.accordion {
$accordionHeadH: 18px;
@@ -205,7 +177,7 @@ label.checkbox.custom {
}
}
.s-menu label.checkbox.custom {
.s-menu-btn label.checkbox.custom {
margin-left: 5px;
}
@@ -249,7 +221,7 @@ label.checkbox.custom {
.l-elem-wrapper {
//@include test(#66f, 0.2);
@include webkitProp(justify-content, flex-start);
@include justify-content(flex-start);
mct-representation {
// Holds the context-available item
// Must have min-width to make flex work properly
@@ -291,53 +263,239 @@ label.checkbox.custom {
}
}
/******************************************************** PROGRESS BAR */
@include keyframes(progress) {
100% { background-position: $progressBarStripeW center; }
}
@mixin bgProgressAnim($c: yellow, $a: 0.1, $d: 20px) {
@include background-image(linear-gradient(-90deg,
rgba($c, $a) 0%, transparent 50%,
transparent 50%, rgba($c, $a) 100%
));
background-position: 0 center;
background-repeat: repeat-x;
background-size: $d 40%;
}
.l-progress-bar {
// Assume will be determinate by default
display: inline-block;
overflow: hidden;
position: relative;
.progress-amt-holder {
@include absPosDefault(1px);
}
.progress-amt,
.progress-amt:before,
.progress-amt:after {
@include absPosDefault();
display: block;
content: '';
}
.progress-amt {
right: auto; // Allow inline width to control }
}
&.indeterminate {
.progress-amt {
width: 100% !important;
}
}
}
.s-progress-bar {
@include border-radius($basicCr);
@include boxIncised(0.3, 4px);
background: $colorProgressBarOuter;
//border:1px solid $colorProgressBarOuter;
.progress-amt {
@include border-radius($basicCr);
@include boxShdw();
@include border-radius($basicCr - 1);
@include trans-prop-nice(width);
&:before {
background-color: $colorProgressBarAmt;
}
&:after {
// Sheen
@include background-image(linear-gradient(
transparent 5%, rgba(#fff,0.25) 30%, transparent 100%
));
}
}
&:not(.indeterminate) {
.progress-amt:before {
// More subtle anim for determinate progress
@include animation(progress .4s linear infinite);
@include bgProgressAnim(#fff, 0.1, $progressBarStripeW);
}
}
&.indeterminate .progress-amt {
&:before {
// More visible std diag stripe anim for indeterminate progress
@include animation(progress .6s linear infinite);
@include bgDiagonalStripes(#fff, 0.2, $progressBarStripeW);
}
&:after { display: none; }
}
}
/******************************************************** SLIDERS */
.slider {
$knobH: 100%; //14px;
$knobW: 12px;
$slotH: 50%;
.slot {
// @include border-radius($basicCr * .75);
@include sliderTrack();
height: $slotH;
//@include sliderTrack();
width: auto;
position: absolute;
top: ($knobH - $slotH) / 2;
top: 0;
right: 0;
bottom: auto;
bottom: 0;
left: 0;
}
.knob {
@include btnSubtle();
@include controlGrippy(rgba(black, 0.3), vertical, 1px, solid);
cursor: ew-resize;
@include trans-prop-nice-fade(.25s);
background-color: $sliderColorKnob;
&:hover {
background-color: $sliderColorKnobHov;
}
position: absolute;
height: $knobH;
width: $knobW;
width: $sliderKnobW;
top: 0;
auto: 0;
bottom: auto;
left: auto;
&:before {
top: 1px;
bottom: 3px;
left: ($knobW / 2) - 1;
}
}
.knob-l {
@include border-left-radius($sliderKnobW);
cursor: w-resize;
}
.knob-r {
@include border-right-radius($sliderKnobW);
cursor: e-resize;
}
.range {
background: rgba($colorKey, 0.6);
@include trans-prop-nice-fade(.25s);
background-color: $sliderColorRange;
cursor: ew-resize;
position: absolute;
top: 0;
top: 0; //$tbOffset;
right: auto;
bottom: 0;
left: auto;
height: auto;
width: auto;
&:hover {
background: rgba($colorKey, 0.7);
background-color: $sliderColorRangeHov;
}
}
}
/******************************************************** DATETIME PICKER */
.l-datetime-picker {
$r1H: 15px;
@include user-select(none);
font-size: 0.8rem;
padding: $interiorMarginLg !important;
width: 230px;
.l-month-year-pager {
$pagerW: 20px;
//@include test();
//font-size: 0.8rem;
height: $r1H;
margin-bottom: $interiorMargin;
position: relative;
.pager,
.val {
//@include test(red);
@extend .abs;
}
.pager {
width: $pagerW;
@extend .ui-symbol;
&.prev {
right: auto;
&:before {
content: "\3c";
}
}
&.next {
left: auto;
text-align: right;
&:before {
content: "\3e";
}
}
}
.val {
text-align: center;
left: $pagerW + $interiorMargin;
right: $pagerW + $interiorMargin;
}
}
.l-calendar,
.l-time-selects {
border-top: 1px solid $colorInteriorBorder
}
.l-time-selects {
line-height: $formInputH;
}
}
/******************************************************** CALENDAR */
.l-calendar {
$colorMuted: pushBack($colorMenuFg, 30%);
ul.l-cal-row {
@include display-flex;
@include flex-flow(row nowrap);
margin-top: 1px;
&:first-child {
margin-top: 0;
}
li {
@include flex(1 0);
//@include test();
margin-left: 1px;
padding: $interiorMargin;
text-align: center;
&:first-child {
margin-left: 0;
}
}
&.l-header li {
color: $colorMuted;
}
&.l-body li {
@include trans-prop-nice(background-color, .25s);
cursor: pointer;
&.in-month {
background-color: $colorCalCellInMonthBg;
}
.sub {
color: $colorMuted;
font-size: 0.8em;
}
&.selected {
background: $colorCalCellSelectedBg;
color: $colorCalCellSelectedFg;
.sub {
color: inherit;
}
}
&:hover {
background-color: $colorCalCellHovBg;
color: $colorCalCellHovFg;
.sub {
color: inherit;
}
}
}
}
}

View File

@@ -32,7 +32,7 @@
.l-tree-item-flat-list {
// For lists of tree-items that are flat. Remove margin, etc. normally needed for the expansion arrow.
.tree-item {
.label {
.t-object-label {
left: $interiorMargin !important;
}
}

View File

@@ -20,7 +20,7 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
/******************************************************** MENU BUTTONS */
.s-menu {
.s-menu-btn {
// Formerly .btn-menu
@extend .s-btn;
span.l-click-area {
@@ -43,6 +43,11 @@
}
&.create-btn {
&:before {
content:'\2b';
display: inline;
font-family: symbolsfont;
}
.title-label {
font-size: 1rem;
}
@@ -62,186 +67,192 @@
/******************************************************** MENUS THEMSELVES */
.menu-element {
$bg: $colorMenuBg;
$fg: $colorMenuFg;
$ic: $colorMenuIc;
cursor: pointer;
position: relative;
.menu {
@include border-radius($basicCr);
@include containerSubtle($bg, $fg);
@include boxShdw($shdwMenu);
@include txtShdw($shdwMenuText);
display: block; // set to block via jQuery
padding: $interiorMarginSm 0;
position: absolute;
z-index: 10;
ul {
@include menuUlReset();
li {
@include box-sizing(border-box);
border-top: 1px solid lighten($bg, 20%);
color: pullForward($bg, 60%);
line-height: $menuLineH;
padding: $interiorMarginSm $interiorMargin * 2 $interiorMarginSm ($interiorMargin * 2) + $treeTypeIconW;
position: relative;
white-space: nowrap;
&:first-child {
border: none;
}
&:hover {
background: $colorMenuHovBg;
color: $colorMenuHovFg;
.icon {
color: $colorMenuHovIc;
}
}
.type-icon {
left: $interiorMargin * 2;
}
}
}
}
}
.menu,
.context-menu,
.super-menu {
pointer-events: auto;
ul li {
//padding-left: 25px;
a {
color: $fg;
}
.icon {
color: $ic;
}
.type-icon {
left: $interiorMargin;
}
&:hover .icon {
//color: lighten($ic, 5%);
}
}
}
.s-menu {
@include border-radius($basicCr);
@include containerSubtle($colorMenuBg, $colorMenuFg);
@include boxShdw($shdwMenu);
@include txtShdw($shdwMenuText);
padding: $interiorMarginSm 0;
}
.checkbox-menu {
// Used in search dropdown in tree
@extend .context-menu;
ul li {
padding-left: 50px;
.checkbox {
$d: 0.7rem;
position: absolute;
left: $interiorMargin;
top: ($menuLineH - $d) / 1.5;
em {
height: $d;
width: $d;
&:before {
font-size: 7px !important;// $d/2;
height: $d;
width: $d;
line-height: $d;
}
}
}
.type-icon {
left: 25px;
}
}
}
.super-menu {
$w: 500px;
$h: $w - 20;
$plw: 50%;
$prw: 50%;
display: block;
width: $w;
height: $h;
.contents {
@include absPosDefault($interiorMargin);
}
.pane {
.menu {
@extend .s-menu;
display: block;
position: absolute;
z-index: 10;
ul {
@include menuUlReset();
li {
@include box-sizing(border-box);
&.left {
//@include test();
border-right: 1px solid pullForward($colorMenuBg, 10%);
left: 0;
padding-right: $interiorMargin;
right: auto;
width: $plw;
overflow-x: hidden;
overflow-y: auto;
ul {
li {
@include border-radius($controlCr);
padding-left: 30px;
border-top: none;
}
border-top: 1px solid pullForward($colorMenuBg, 10%);
color: pullForward($colorMenuBg, 60%);
line-height: $menuLineH;
padding: $interiorMarginSm $interiorMargin * 2 $interiorMarginSm ($interiorMargin * 2) + $treeTypeIconW;
position: relative;
white-space: nowrap;
&:first-child {
border: none;
}
&:hover {
background: $colorMenuHovBg;
color: $colorMenuHovFg;
.icon {
color: $colorMenuHovIc;
}
}
&.right {
//@include test(red);
left: auto;
right: 0;
padding: $interiorMargin * 5;
width: $prw;
.type-icon {
left: $interiorMargin * 2;
}
}
.menu-item-description {
.desc-area {
&.icon {
$h: 150px;
color: $colorCreateMenuLgIcon;
position: relative;
font-size: 8em;
left: 0;
height: $h;
line-height: $h;
margin-bottom: $interiorMargin * 5;
text-align: center;
}
&.title {
color: $colorCreateMenuText;
font-size: 1.2em;
margin-bottom: 0.5em;
}
&.description {
//color: lighten($bg, 30%);
color: $colorCreateMenuText;
font-size: 0.8em;
line-height: 1.5em;
}
}
}
}
.context-menu {
font-size: 0.80rem;
}
}
.context-menu-holder {
pointer-events: none;
.menu,
.context-menu,
.super-menu {
pointer-events: auto;
ul li {
//padding-left: 25px;
a {
color: $colorMenuFg;
}
.icon {
color: $colorMenuIc;
}
.type-icon {
left: $interiorMargin;
}
&:hover .icon {
//color: lighten($colorMenuIc, 5%);
}
}
}
.checkbox-menu {
// Used in search dropdown in tree
@extend .context-menu;
ul li {
padding-left: 50px;
.checkbox {
$d: 0.7rem;
position: absolute;
left: $interiorMargin;
top: ($menuLineH - $d) / 1.5;
em {
height: $d;
width: $d;
&:before {
font-size: 7px !important;// $d/2;
height: $d;
width: $d;
line-height: $d;
}
}
}
.type-icon {
left: 25px;
}
}
}
.super-menu {
$w: 500px;
$h: $w - 20;
$plw: 50%;
$prw: 50%;
display: block;
width: $w;
height: $h;
.contents {
@include absPosDefault($interiorMargin);
}
.pane {
@include box-sizing(border-box);
&.left {
//@include test();
border-right: 1px solid pullForward($colorMenuBg, 10%);
left: 0;
padding-right: $interiorMargin;
right: auto;
width: $plw;
overflow-x: hidden;
overflow-y: auto;
ul {
li {
@include border-radius($controlCr);
padding-left: 30px;
border-top: none;
}
}
}
&.right {
//@include test(red);
left: auto;
right: 0;
padding: $interiorMargin * 5;
width: $prw;
}
}
.menu-item-description {
.desc-area {
&.icon {
$h: 150px;
color: $colorCreateMenuLgIcon;
position: relative;
font-size: 8em;
left: 0;
height: $h;
line-height: $h;
margin-bottom: $interiorMargin * 5;
text-align: center;
}
&.title {
color: $colorCreateMenuText;
font-size: 1.2em;
margin-bottom: 0.5em;
}
&.description {
//color: lighten($colorMenuBg, 30%);
color: $colorCreateMenuText;
font-size: 0.8em;
line-height: 1.5em;
}
}
}
}
.context-menu {
font-size: 0.80rem;
}
.context-menu-holder,
.menu-holder {
position: absolute;
height: 200px;
width: 170px;
z-index: 70;
.context-menu-wrapper {
position: absolute;
height: 100%;
width: 100%;
.context-menu {
}
}
&.go-left .context-menu {
&.go-left .context-menu,
&.go-left .menu {
right: 0;
}
&.go-up .context-menu {
&.go-up .context-menu,
&.go-up .menu {
bottom: 0;
}
}
.context-menu-holder {
pointer-events: none;
height: 200px;
width: 170px;
}
.btn-bar.right .menu,
.menus-to-left .menu {
left: auto;

View File

@@ -0,0 +1,306 @@
/*****************************************************************************
* Open MCT Web, Copyright (c) 2014-2015, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT Web is licensed under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0.
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
*
* Open MCT Web includes source code licensed under additional open source
* licenses. See the Open Source Licenses file (LICENSES.md) included with
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
@mixin statusBannerColors($bg, $fg: $colorStatusFg) {
$bgPb: 30%;
$bgPbD: 10%;
background-color: darken($bg, $bgPb);
color: $fg;
&:hover {
background-color: darken($bg, $bgPb - $bgPbD);
}
.s-action {
background-color: darken($bg, $bgPb + $bgPbD);
&:hover {
background-color: darken($bg, $bgPb);
}
}
}
.status.block {
color: $colorStatusDefault;
cursor: default;
display: inline-block;
margin-right: $interiorMargin;
.status-indicator,
.label,
.count {
//@include test(#00ff00);
display: inline-block;
vertical-align: top;
}
.status-indicator {
margin-right: $interiorMarginSm;
}
&.ok .status-indicator,
&.info .status-indicator {
color: $colorStatusInfo;
}
&.alert .status-indicator,
&.warning .status-indicator,
&.caution .status-indicator {
color: $colorStatusAlert;
}
&.error .status-indicator {
color: $colorStatusError;
}
.label {
// Max-width silliness is necessary for width transition
@include trans-prop-nice(max-width, .25s);
overflow: hidden;
max-width: 0px;
}
.count {
@include trans-prop-nice(opacity, .25s);
font-weight: bold;
opacity: 1;
}
&:hover {
.label {
max-width: 450px;
width: auto;
}
.count {
opacity: 0;
}
}
}
/* Styles for messages and message banners */
.message {
&.block {
@include border-radius($basicCr);
padding: $interiorMarginLg;
}
&.error {
background-color: rgba($colorAlert,0.3);
color: lighten($colorAlert, 20%);
}
}
.l-message-banner {
$m: $interiorMarginSm;
$lh: $ueFooterH - ($m*2) - 1;
@include box-sizing(border-box);
@include ellipsize();
@include display-flex;
@include flex-direction(row);
@include align-items(center);
position: absolute;
top: $m; right: auto; bottom: $m; left: 50%;
height: auto; width: auto;
line-height: $lh;
max-width: 300px;
padding: 0 $interiorMargin 0 $interiorMargin;
@include transform(translateX(-50%));
&.minimized {
@include transition-property(left, opacity);
@include transition-duration(0.3s);
@include transition-timing-function(ease-in-out);
left: 0;
opacity: 0;
}
&.new {
left: 50%;
opacity: 1;
&:not(.info) {
@include pulse(100ms, 10);
}
}
.banner-elem {
@include flex(0 1 auto);
margin-left: $interiorMargin;
}
a {
display: inline-block;
}
.l-action {
line-height: $lh - 3;
padding: 0 $interiorMargin;
}
.close {
//@include test(red, 0.7);
cursor: pointer;
font-size: 7px;
width: 8px;
}
.l-progress-bar {
$h: $lh - 10;
height: $h;
line-height: $h;
width: 100px;
}
.progress-info { display: none; }
z-index: 10;
}
.s-message-banner {
//@include transition-property(left, opacity);
//@include transition-duration(0.35s);
//@include transition-timing-function(ease-in-out);
}
.s-message-banner {
@include border-radius($controlCr);
@include statusBannerColors($colorStatusDefault, $colorStatusFg);
cursor: pointer;
a { color: inherit; }
.s-action {
@include border-radius($basicCr);
@include trans-prop-nice(background-color);
}
.close {
opacity: 0.5;
&:hover {
opacity: 1;
}
}
&.ok,
&.info {
@include statusBannerColors($colorStatusInfo);
}
&.caution,
&.warning,
&.alert {
@include statusBannerColors($colorStatusAlert);
}
&.error {
@include statusBannerColors($colorStatusError);
}
}
@mixin messageBlock($iconW: 32px) {
.type-icon.message-type {
@include txtShdw($shdwStatusIc);
&:before { content:"\e608"; }
color: $colorStatusDefault;
font-size: $iconW;
padding: 1px;
width: $iconW + 2;
}
.message-severity-info .type-icon.message-type {
&:before { content:"\e608"; }
color: $colorStatusInfo;
}
.message-severity-alert .type-icon.message-type {
&:before { content:"\e610"; }
color: $colorStatusAlert;
}
.message-severity-error .type-icon.message-type {
&:before { content:"\21"; }
color: $colorStatusError;
}
}
/* Paths:
t-dialog | t-dialog-sm > t-message-single | t-message-list > overlay > holder > contents > l-message >
message-type > (icon)
message-contents >
top-bar >
title
hint
editor >
(if displaying list of messages)
ul > li > l-message >
... same as above
bottom-bar
*/
.l-message {
@include display-flex;
@include flex-direction(row);
@include align-items(stretch);
.type-icon.message-type {
//@include test(red);
@include flex(0 1 auto);
position: relative;
}
.message-contents {
//@include test(blue);
@include flex(1 1 auto);
margin-left: $overlayMargin;
position: relative;
.top-bar,
.message-body {
margin-bottom: $interiorMarginLg * 2;
}
}
}
// Message as singleton
.t-message-single {
@include messageBlock(80px);
@include desktop {
.l-message,
.bottom-bar {
@include absPosDefault();
}
.bottom-bar {
top: auto;
height: $ovrFooterH;
}
}
}
// Messages in list
.t-message-list {
@include messageBlock(32px);
.message-contents {
.l-message {
//border-bottom: 1px solid pullForward($colorOvrBg, 20%);
@include border-radius($controlCr);
background: rgba($colorOvrFg, 0.1);
margin-bottom: $interiorMargin;
padding: $interiorMarginLg;
.message-contents,
.bottom-bar {
//@include test(green);
position: relative;
}
.message-contents {
font-size: 0.9em;
margin-left: $interiorMarginLg;
.message-action { color: pushBack($colorOvrFg, 20%); }
.bottom-bar { text-align: left; }
}
.top-bar,
.message-body {
margin-bottom: $interiorMarginLg;
}
}
}
@include desktop {
.message-contents .l-message { margin-right: $interiorMarginLg; }
}
}

View File

@@ -1,72 +1,155 @@
.l-time-controller {
$inputTxtW: 90px;
$knobW: 9px;
$r1H: 20px;
$r2H: 30px;
$r3H: 10px;
@mixin toiLineHovEffects() {
//@include pulse(.25s);
&:before,
&:after {
background-color: $timeControllerToiLineColorHov;
}
}
position: relative;
margin: $interiorMarginLg 0;
min-width: 400px;
.l-time-controller-visible {
}
mct-include.l-time-controller {
$minW: 500px;
$knobHOffset: 0px;
$knobM: ($sliderKnobW + $knobHOffset) * -1;
$rangeValPad: $interiorMargin;
$rangeValOffset: $sliderKnobW;
//$knobCr: $sliderKnobW;
$timeRangeSliderLROffset: 130px + $sliderKnobW + $rangeValOffset;
$r1H: nth($ueTimeControlH,1);
$r2H: nth($ueTimeControlH,2);
$r3H: nth($ueTimeControlH,3);
@include absPosDefault();
//@include test();
display: block;
top: auto;
height: $r1H + $r2H + $r3H + ($interiorMargin * 2);
min-width: $minW;
font-size: 0.8rem;
.l-time-range-inputs-holder,
.l-time-range-slider {
font-size: 0.8em;
//font-size: 0.8em;
}
.l-time-range-inputs-holder,
.l-time-range-slider-holder,
.l-time-range-ticks-holder
{
margin-bottom: $interiorMargin;
position: relative;
//@include test();
@include absPosDefault(0, visible);
@include box-sizing(border-box);
top: auto;
}
.l-time-range-slider,
.l-time-range-ticks {
//@include test(red, 0.1);
@include absPosDefault(0, visible);
left: $timeRangeSliderLROffset; right: $timeRangeSliderLROffset;
}
.l-time-range-inputs-holder {
height: $r1H;
}
.l-time-range-slider,
.l-time-range-ticks {
left: $inputTxtW; right: $inputTxtW;
//@include test(red);
height: $r1H; bottom: $r2H + $r3H + ($interiorMarginSm * 2);
padding-top: $interiorMargin;
border-top: 1px solid $colorInteriorBorder;
.type-icon {
font-size: 120%;
vertical-align: middle;
}
.l-time-range-input,
.l-time-range-inputs-elem {
margin-right: $interiorMargin;
.lbl {
color: $colorPlotLabelFg;
}
.ui-symbol.icon {
font-size: 11px;
width: 11px;
}
}
}
.l-time-range-slider-holder {
height: $r2H;
//@include test(green);
height: $r2H; bottom: $r3H + ($interiorMarginSm * 1);
.range-holder {
@include box-shadow(none);
background: none;
border: none;
height: 75%;
.range {
.toi-line {
$myC: $timeControllerToiLineColor;
$myW: 8px;
@include transform(translateX(50%));
position: absolute;
//@include test();
top: 0; right: 0; bottom: 0px; left: auto;
width: $myW;
height: auto;
z-index: 2;
&:before,
&:after {
background-color: $myC;
content: "";
position: absolute;
}
&:before {
// Vert line
top: 0; right: auto; bottom: -10px; left: floor($myW/2) - 1;
width: 2px;
//top: 0; right: 3px; bottom: 0; left: 3px;
}
&:after {
// Circle element
@include border-radius($myW);
@include transform(translateY(-50%));
top: 50%; right: 0; bottom: auto; left: 0;
width: auto;
height: $myW;
}
}
&:hover .toi-line {
@include toiLineHovEffects;
}
}
}
&:not(:active) {
//@include test(#ff00cc);
.knob,
.range {
@include transition-property(left, right);
@include transition-duration(500ms);
@include transition-timing-function(ease-in-out);
}
}
}
.l-time-range-ticks-holder {
height: $r3H;
.l-time-range-ticks {
border-top: 1px solid $colorInteriorBorder;
border-top: 1px solid $colorTick;
.tick {
background-color: $colorInteriorBorder;
background-color: $colorTick;
border:none;
height: 5px;
width: 1px;
margin-left: -1px;
position: absolute;
&:first-child {
margin-left: 0;
}
.l-time-range-tick-label {
color: lighten($colorInteriorBorder, 20%);
font-size: 0.7em;
@include webkitProp(transform, translateX(-50%));
color: $colorPlotLabelFg;
display: inline-block;
font-size: 0.9em;
position: absolute;
margin-left: -0.5 * $tickLblW;
text-align: center;
top: $r3H;
width: $tickLblW;
top: 8px;
white-space: nowrap;
z-index: 2;
}
}
@@ -74,31 +157,47 @@
}
.knob {
width: $knobW;
z-index: 2;
.range-value {
$w: 75px;
//@include test();
//@include test($sliderColorRange);
@include trans-prop-nice-fade(.25s);
padding: 0 $rangeValOffset;
position: absolute;
top: 50%;
margin-top: -7px; // Label is 13px high
height: $r2H;
line-height: $r2H;
white-space: nowrap;
width: $w;
}
&:hover .range-value {
color: $colorKey;
color: $sliderColorKnobHov;
}
&.knob-l {
margin-left: $knobW / -2;
//@include border-bottom-left-radius($knobCr); // MOVED TO _CONTROLS.SCSS
margin-left: $knobM;
.range-value {
text-align: right;
right: $knobW + $interiorMargin;
right: $rangeValOffset;
}
}
&.knob-r {
margin-right: $knobW / -2;
//@include border-bottom-right-radius($knobCr);
margin-right: $knobM;
.range-value {
left: $knobW + $interiorMargin;
left: $rangeValOffset;
}
&:hover + .range-holder .range .toi-line {
@include toiLineHovEffects;
}
}
}
}
//.slot.range-holder {
// background-color: $sliderColorRangeHolder;
//}
.s-time-range-val {
//@include test();
@include border-radius($controlCr);
background-color: $colorInputBg;
padding: 1px 1px 0 $interiorMargin;
}

View File

@@ -19,39 +19,44 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
@mixin complexFieldHolder($myW) {
width: $myW + $interiorMargin;
input[type="text"] {
width: $myW;
}
}
.complex.datetime {
span {
display: inline-block;
margin-right: $interiorMargin;
}
/*
.field-hints,
.fields {
}
.field-hints {
}
*/
.fields {
margin-top: $interiorMarginSm 0;
padding: $interiorMarginSm 0;
}
.date {
$myW: 80px;
width: $myW + $interiorMargin;
input {
width: $myW;
}
@include complexFieldHolder(80px);
}
.time.md {
@include complexFieldHolder(60px);
}
.time.sm {
$myW: 40px;
width: $myW + $interiorMargin;
input {
width: $myW;
}
@include complexFieldHolder(40px);
}
}

View File

@@ -21,10 +21,13 @@
*****************************************************************************/
.select {
@include btnSubtle($colorSelectBg);
margin: 0 0 2px 2px; // Needed to avoid dropshadow from being clipped by parent containers
@if $shdwBtns != none {
margin: 0 0 2px 0; // Needed to avoid dropshadow from being clipped by parent containers
}
padding: 0 $interiorMargin;
overflow: hidden;
position: relative;
line-height: $formInputH;
select {
@include appearance(none);
@include box-sizing(border-box);
@@ -40,11 +43,8 @@
}
&:after {
@include contextArrow();
pointer-events: none;
color: rgba($colorSelectFg, percentToDecimal($contrastInvokeMenuPercent));
//content:"v";
//display: block;
//font-family: 'symbolsfont';
//pointer-events: none;
position: absolute;
right: $interiorMargin; top: 0;
}

View File

@@ -19,68 +19,114 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
.split-layout {
$b: pullForward($colorBodyBg, $contrastRatioPercent);
.splitter {
background-color: $b;
@include border-radius($splitterEndCr);
@include boxShdw($splitterShdw);
overflow: hidden;
position: absolute;
z-index: 1;
//@if $colorSplitterHover != 'none' {
&:hover {
background-color: $colorSplitterHover;
}
//}
}
&.horizontal {
// Slides vertically up and down, splitting the element horizontally
overflow: hidden; // Suppress overall scroll; each internal pane handles its own overflow
.pane {
left: 0;
right: 0;
&.top {
bottom: auto;
}
&.bottom {
top: auto;
}
}
>.splitter {
@include controlGrippy($colorSplitterInterior, horizontal);
cursor: row-resize;
left: 0; right: 0;
width: auto;
height: $splitterW;
}
}
&.vertical {
// Slides horizontally left to right, splitting the element vertically
.pane {
top: 0;
bottom: 0;
&.left {
right: auto;
}
&.right {
left: auto;
}
}
>.splitter {
@include controlGrippy($colorBodyBg, vertical);
bottom: 0;
cursor: col-resize;
width: $splitterW;
}
}
.splitter {
// Redo the splitter.
// New look is a simple line.
// Main width is used to provide a good click area, and is always transparent
// :after will be a positioned and colored element that is the handle
//@include test(red);
display: block;
position: absolute;
z-index: 1;
&:after {
// The handle
content:"";
pointer-events: none;
@include absPosDefault(0);
background: $colorSplitterBg;
display: block;
@if $splitterEndCr != 'none' {
@include border-radius($splitterEndCr);
}
}
&:active {
//@include test();
&:after {
background-color: $colorSplitterActive !important;
}
}
@if $colorSplitterHover != 'none' {
&:not(:active) {
&:hover {
&:after {
background-color: $colorSplitterHover !important;
@include trans-prop-nice(background-color, 150ms);
}
}
}
}
}
.browse-area .splitter {
top: $ueTopBarH + $interiorMarginLg;
.split-layout {
$inset: splitterHandleInset($splitterD,$splitterHandleD);
&.horizontal {
// Slides vertically up and down, splitting the element horizontally
overflow: hidden; // Suppress overall scroll; each internal pane handles its own overflow
.pane {
left: 0;
right: 0;
&.top {
bottom: auto;
}
&.bottom {
top: auto;
}
}
>.splitter {
cursor: row-resize;
left: 0;
right: 0;
height: $splitterD;
&:after {
top: $inset; bottom: $inset;
}
}
}
&.vertical {
// Slides horizontally left to right, splitting the element vertically
.pane {
top: 0;
bottom: 0;
&.left {
right: auto;
}
&.right {
left: auto;
}
}
>.splitter {
cursor: col-resize;
top: 0;
bottom: 0;
&:not(.flush-right) {
width: $splitterD;
&:after {
left: $inset; right: $inset;
}
}
&.flush-right {
width: ceil($splitterD / 2);
&:after {
background-color: transparent;
left: auto; right: 0; width: $splitterHandleD;
}
&.edge-shdw {
@include background-image(linear-gradient(90deg, rgba(black, 0) 40%, rgba(black, 0.05) 70%, rgba(black, 0.2) 100%));
}
}
}
}
}
/*.browse-area .splitter {
top: 0; //$ueTopBarH + $interiorMarginLg;
}
.edit-area .splitter {
top: 0;
}
}*/

View File

@@ -19,24 +19,45 @@
* this source code distribution or the Licensing information page available
* at runtime from the About dialog for additional information.
*****************************************************************************/
@-webkit-keyframes rotation {
from {-webkit-transform: rotate(0deg);}
to {-webkit-transform: rotate(359deg);}
@include keyframes(rotation) {
0% { transform: rotate(0deg); }
100% { transform: rotate(359deg); }
}
@-moz-keyframes rotation {
from {-moz-transform: rotate(0deg);}
to {-moz-transform: rotate(359deg);}
@mixin wait-spinner2($b: 5px, $c: $colorAlt1) {
@include keyframes(rotateCentered) {
0% { transform: translateX(-50%) translateY(-50%) rotate(0deg); }
100% { transform: translateX(-50%) translateY(-50%) rotate(359deg); }
}
@include animation-name(rotateCentered);
@include animation-duration(0.5s);
@include animation-iteration-count(infinite);
@include animation-timing-function(linear);
border-color: rgba($c, 0.25);
border-top-color: rgba($c, 1.0);
border-style: solid;
border-width: 5px;
@include border-radius(100%);
@include box-sizing(border-box);
display: block;
position: absolute;
height: 0; width: 0;
padding: 7%;
left: 50%; top: 50%;
}
@-o-keyframes rotation {
from {-o-transform: rotate(0deg);}
to {-o-transform: rotate(359deg);}
}
@keyframes rotation {
from {transform: rotate(0deg);}
to {transform: rotate(359deg);}
@mixin wait-spinner($b: 5px, $c: $colorAlt1) {
display: block;
position: absolute;
-webkit-animation: rotation .6s infinite linear;
-moz-animation: rotation .6s infinite linear;
-o-animation: rotation .6s infinite linear;
animation: rotation .6s infinite linear;
border-color: rgba($c, 0.25);
border-top-color: rgba($c, 1.0);
border-style: solid;
border-width: $b;
@include border-radius(100%);
}
.t-wait-spinner,
@@ -96,4 +117,28 @@
margin-top: 0 !important;
padding: 0 !important;
top: 0; left: 0;
}
.loading {
// Can be applied to any block element with height and width
pointer-events: none;
&:before,
&:after {
content: '';
}
&:before {
@include wait-spinner2(5px, $colorLoadingFg);
z-index: 10;
}
&:after {
@include absPosDefault();
background: $colorLoadingBg;
display: block;
z-index: 9;
}
&.tree-item:before {
padding: $menuLineH / 4;
border-width: 2px;
}
}

View File

@@ -86,27 +86,16 @@
//top: $ueBrowseGridItemTopBarH; bottom: $ueBrowseGridItemBottomBarH; //
line-height: $lh;
z-index: 1;
.item-type {
//@include trans-prop-nice("color", $transTime);
@include absPosDefault($iconMargin, false);
//@include test(red);
//color: $colorItemIc;
text-align: center;
.item-type,
.t-item-icon {
//@include test();
@include transform(translateX(-50%) translateY(-55%));
position: absolute;
top: 50%; left: 50%;
//height: $iconD; width: $iconD;
font-size: $iconD * 0.95; //6em;
line-height: $iconD;
bottom: auto;
height: $iconD;
top: $iconMargin - 10;
.l-icon-link {
color: $colorIconLink;
height: auto;
line-height: 100%;
position: absolute;
font-size: 0.3em;
left: 0px;
bottom: 10px;
z-index: 2;
}
//line-height: normal;
//text-align: center;
}
.item-open {
@include trans-prop-nice("opacity", $transTime);

View File

@@ -40,6 +40,11 @@ table {
thead, .thead {
border-bottom: 1px solid $colorTabHeaderBorder;
}
&:not(.fixed-header) tr th {
background-color: $colorTabHeaderBg;
}
tbody, .tbody {
display: table-row-group;
tr, .tr {
@@ -64,7 +69,6 @@ table {
display: table-cell;
}
th, .th {
background-color: $colorTabHeaderBg;
border-left: 1px solid $colorTabHeaderBorder;
color: $colorTabHeaderFg;
padding: $tabularTdPadLR $tabularTdPadLR;
@@ -143,7 +147,7 @@ table {
position: absolute;
width: 100%;
height: $tabularHeaderH;
background: rgba(#fff, 0.15);
background-color: $colorTabHeaderBg;
}
}
tbody, .tbody {

View File

@@ -23,7 +23,7 @@
/************************** MOBILE REPRESENTATION ITEMS DIMENSIONS */
$mobileListIconSize: 30px;
$mobileTitleDescH: 35px;
$mobileOverlayMargin: 10px;
$mobileOverlayMargin: 20px;
$phoneItemH: floor($ueBrowseGridItemLg/4);
$tabletItemH: floor($ueBrowseGridItemLg/3);

View File

@@ -49,18 +49,11 @@
}
.item-main {
.item-type {
//@include test(blue);
.item-type,
.t-item-icon {
font-size: $mobileListIconSize;
right: auto;
bottom: auto;
left: 0;
line-height: 100%;
text-align: left;
width: $mobileListIconSize;
.l-icon-link {
bottom: 0;
}
left: $interiorMarginLg + $interiorMargin;
line-height: normal;
}
.item-open {
display: block;

View File

@@ -32,7 +32,7 @@
background-color: $colorMobilePaneLeft;
}
.pane.right-repr {
.pane.right.items {
//@include test();
@include slMenuTransitions;
margin-left: 0 !important;
@@ -42,78 +42,66 @@
}
}
.user-environ .browse-area,
.user-environ .edit-area,
.user-environ .editor {
top: 0; left: 0; right: 0; bottom: $ueFooterH;
}
.holder.l-mobile {
top: $bodyMargin !important;
.holder.holder-create-and-search {
right: $bodyMargin !important;
bottom: $bodyMargin !important;
left: $bodyMargin !important;
}
// When the tree is hidden, these are the
// When the tree is hidden, these are the
// classes used for the left menu and the
// right representation.
.browse-hidetree {
@include user-select(none);
.pane-tree-hidden {
// Sets the left tree menu when the tree
// is hidden.
.pane.left.treeview {
opacity: 0;
right: 100% !important;
width: auto !important;
overflow-y: hidden;
overflow-x: hidden;
@include trans-prop-nice(opacity, 150ms);
//right: 100% !important;
//width: auto !important;
//overflow-y: hidden;
//overflow-x: hidden;
opacity: 0 !important;
}
// Sets the right represenation when
// the tree is hidden.
.pane.right-repr {
.pane.right.items {
left: 0 !important;
}
}
.browse-showtree {
.pane-tree-showing {
// NOTE: DISABLED SELECTION
// Selection disabled in both panes
// causing cut/copy/paste menu to
// not appear. Should me moved in
// future to properly work
@include user-select(none);
//@include user-select(none);
// Sets the left tree menu when the tree is shown.
.pane.left.treeview {
@include trans-prop-nice(opacity, .4s);
@include trans-prop-nice(opacity, 250ms, $delay: 250ms);
@include background-image(linear-gradient(90deg, rgba(black, 0) 98%, rgba(black, 0.3) 100%));
opacity: 1;
display: block !important;
//width: auto !important; // CH CO
right: auto !important;
width: $proporMenuWithView !important;
}
// Sets the right representation when the tree is shown.
.pane.right-repr {
.pane.right.items {
left: $proporMenuWithView !important;
//width: auto !important;
//left: 0 !important;
//transform: translateX($proporMenuWithView);
}
}
.mobile-menu-icon {
.toggle-tree {
color: $colorKey !important;
font-size: 110%;
position: absolute;
top: $bodyMargin + 2;
left: $bodyMargin;
&:after {
content:'m' !important;
font-family: symbolsfont;
}
}
.object-browse-bar {
//@include test();
left: 30px !important;
left: 45px !important;
.context-available {
opacity: 1 !important;
}
@@ -153,13 +141,13 @@
}
@include phonePortrait {
.browse-showtree {
.pane-tree-showing {
.pane.left.treeview {
width: $proporMenuOnly !important;
}
.pane.right-repr {
.pane.right.items {
left: 0 !important;
@include webkitProp(transform, translateX($proporMenuOnly));
@include transform(translateX($proporMenuOnly));
#content-area {
opacity: 0;
}

View File

@@ -37,21 +37,18 @@
//@include test(red);
position: absolute;
font-size: 1.1em;
height: $mobileTreeItemH;
line-height: inherit;
right: 0px;
width: $mobileTreeRightArrowW;
text-align: center;
}
.label {
.label,
.t-object-label {
left: 0;
right: $mobileTreeRightArrowW + $interiorMargin; // Allows tree item name to stop prior to the arrow
line-height: $mobileTreeItemH;
//font-size: 1.1em; // CH CO
.type-icon {
@include verticalCenterBlock($mobileTreeItemH, $treeTypeIconH);
}
.title-label {
}
line-height: inherit;
}
}
}

View File

@@ -1,16 +1,12 @@
@include phoneandtablet {
.overlay {
$m: 0;
.clk-icon.close {
top: $mobileOverlayMargin; right: $mobileOverlayMargin;
}
> .holder {
@include border-radius($m);
top: $m;
right: $m;
bottom: $m;
left: $m;
height: 90%; width: 90%;
> .contents {
top: $mobileOverlayMargin;
right: $mobileOverlayMargin;
@@ -22,35 +18,64 @@
margin-right: 1.2em;
}
}
.form.editor {
border: none;
.contents {
top: 0;
right: 0;
bottom: 0;
left: 0;
}
}
}
}
}
}
@include phone {
.overlay > .holder > .contents .form.editor .contents .form-row {
> .label,
> .controls {
//@include test(blue);
display: block;
float: none;
width: 100%;
.overlay > .holder {
//@include test(orange); // This works!
$m: 0;
@include border-radius($m);
top: $m;
right: $m;
bottom: $m;
left: $m;
height: auto; width: auto;
min-width: 200px; min-height: 200px;
max-height: 100%; max-width: 100%;
overflow: auto;
@include transform(none);
.editor .form .form-row {
> .label,
> .controls {
//@include test(blue);
display: block;
float: none;
width: 100%;
}
> .label {
&:after {
float: none;
}
}
}
.contents {
.abs.top-bar,
.abs.editor,
.abs.message-body,
.abs.bottom-bar {
//@include test(orange);
top: auto; right: auto; bottom: auto; left: auto;
height: auto; width: auto;
margin-bottom: $interiorMarginLg * 2;
position: relative;
}
}
}
.t-dialog-sm .overlay > .holder {
//@include test(blue);
height: auto; max-height: 100%;
}
}
@include phonePortrait {
.overlay > .holder {
.contents .bottom-bar {
text-align: center;
}
> .label {
&:after {
float: none;
}
}
}
}

View File

@@ -20,79 +20,124 @@
* at runtime from the About dialog for additional information.
*****************************************************************************/
.overlay {
.blocker {
background: $colorOvrBlocker;
z-index: 100;
}
font-size: 90%;
.blocker {
background: $colorOvrBlocker;
z-index: 100;
}
.clk-icon.close {
font-size: 0.8rem;
position: absolute;
top: $interiorMarginLg; right: $interiorMarginLg; bottom: auto; left: auto;
z-index: 100;
top: $interiorMarginLg;
right: $interiorMarginLg;
bottom: auto;
left: auto;
z-index: 100;
}
>.holder {
$i: 15%;
@include containerSubtle($colorOvrBg, $colorOvrFg);
@include border-radius($basicCr * 3);
color: $colorOvrFg;
top: $i; right: $i; bottom: $i; left: $i;
z-index: 101;
>.contents {
> .holder {
//$i: 15%;
@include containerSubtle($colorOvrBg, $colorOvrFg);
@include border-radius($basicCr * 3);
color: $colorOvrFg;
top: 50%;
right: auto;
bottom: auto;
left: 50%;
@include transform(translateX(-50%) translateY(-50%));
height: 70%;
width: 50%;
min-height: 300px;
max-height: 800px;
min-width: 600px;
max-width: 1000px;
z-index: 101;
> .contents {
$m: $overlayMargin;
top: $m; right: $m; bottom: $m; left: $m;
top: $m;
right: $m;
bottom: $m;
left: $m;
//.top-bar,
//.editor,
//.bottom-bar {
// @include absPosDefault();
//}
}
}
.title {
@include ellipsize();
font-size: 1.2em;
margin-bottom: $interiorMargin;
}
.top-bar {
.title {
@include ellipsize();
font-size: 1.2em;
line-height: 120%;
margin-bottom: $interiorMargin;
}
.hint {
color: pushBack($colorOvrFg, 20%);
}
.abs.top-bar {
height: $ovrTopBarH;
}
.editor {
top: $ovrTopBarH + ($interiorMargin * 2);
bottom: $ovrFooterH + $interiorMargin * 2;
left: 0; right: 0;
}
.bottom-bar {
top: auto; right: 0; bottom: 0; left: 0;
overflow: visible;
//font-size: 1em;
height: $ovrFooterH;
text-align: right;
.s-btn {
$bg: $colorOvrBtnBg;
&:not(.major) {
@include btnSubtle($bg, pullForward($bg, 10%), $colorOvrBtnFg, $colorOvrBtnFg);
}
font-size: 95%;
height: $ovrFooterH;
line-height: $ovrFooterH;
margin-left: $interiorMargin;
padding: 0 $interiorMargin * 3;
//&.major {
// @extend .s-btn.major;
// &:hover {
// @extend .s-btn.major:hover;
// }
//}
.abs.editor,
.abs.message-body {
top: $ovrTopBarH + $interiorMarginLg;
bottom: $ovrFooterH + $interiorMarginLg;
left: 0;
right: 0;
overflow: auto;
.field.l-med {
input[type='text'] {
width: 100%;
}
}
}
.contents.l-dialog {
$myM: $interiorMargin;
top: $myM;
right: $myM;
bottom: $myM;
left: $myM;
overflow: auto;
.field.l-med {
input[type='text'] {
width: 100%;
}
}
.bottom-bar {
text-align: right;
.s-btn {
$bg: $colorOvrBtnBg;
&:not(.major) {
@include btnSubtle($bg, pullForward($bg, 10%), $colorOvrBtnFg, $colorOvrBtnFg);
}
font-size: 95%;
height: $ovrFooterH;
line-height: $ovrFooterH;
margin-left: $interiorMargin;
padding: 0 $interiorMargin * 3;
&:first-child {
margin-left: 0;
}
}
}
.abs.bottom-bar {
top: auto;
right: 0;
bottom: 0;
left: 0;
overflow: visible;
//font-size: 1em;
height: $ovrFooterH;
}
.l-progress-bar {
$h: $progressBarHOverlay;
display: block;
height: $h;
line-height: $h;
margin: .5em 0;
width: 100%;
}
}
.t-dialog-sm .overlay > .holder {
// Used for blocker and in-progress dialogs, modal alerts, etc.
//@include test(red);
$h: 225px;
min-height: $h;
height: $h;
}

Some files were not shown because too many files have changed in this diff Show More