Respond to route changes via mct-before-unload, in order to
show a prompt to allow the user to confirm navigation changes
which do not trigger onbeforeunload (such as using back to
change the hash route). WTD-1035.
In model cache, update cached model instances instead of
replacing them; this avoids situations where two different
model instances escape the model service because the second
request was made before the results from the first had been
cached. WTD-1033.
Make sure that the correct promise is resolved when a persistence
queue flush completes; some operations, like Save in Edit mode, wait
on this promise, so it needs to resolve when persistence of that
group is completed. WTD-1033.
Invoke persist calls when leaving Edit mode in a group, instead of
in-order, to allow these revision-checking to be handling for the
group as a whole. WTD-1033.
WTD-1048
Originally did a lot of this work in warp1048 by mistake
This commit pulls in all /platform-only changes from that branch
Mods are mostly related to WTD-1046 specifically, but also touch toolbar and buttons
Update capability interfaces for persistence and mutation to
track timestamps of both changes and persistence calls.
Helps distinguish when refreshes should be allowed, which in
turn will be used to support Overwrite behavior when
Save conflicts are detected. WTD-1033.
Add capability decorator such that persistence queuing functionality
can be added on to the regular persistence capability of a domain
object. WTD-1033.
Begin adding persistence queue, which will consolidate persistence
calls in order to allow a single Overwrite/Cancel dialog to be
shown in the event that persist attempts are rejected. WTD-1033.
Add service to communicate data after/during a drag-and-drop, to allow
drag contents to be checked during dragover, and to allow full JavaScript
objects to be passed during drags (within the same window.) WTD-988.
Act as if the object being edited is the root object when
in Edit mode, except in the Library pane (which has its own
means of getting the real root object.) WTD-922.
Add directive for exposing expressions which should be
evaluated for the browser's onbeforeunload event, to
prevent user-initiated navigation from causing a loss
of unsaved changes. WTD-1035.
Use a fast-promise approach (instead of ) when handling
mutation of domain objects, to ensure that mutation resolves
during the current tick. Needed for drag interactions of
WTD-931.
Add a general-purpose capability for typed relationships.
Unlike composition, these do not appear in the tree, but
instead appear only in user interfaces which specifically
look for these typed relationships. WTD-1007.
Merge in Fixed Position updates to reconcile conflicts
related to generalization of selection mechanism, WTD-929.
Conflicts:
platform/features/layout/src/FixedController.js
platform/features/layout/test/FixedControllerSpec.js
Merge in latest from open-master into topic branch for
WTD-940, merge of fixed position look-and-feel updates.
Conflicts:
platform/features/layout/src/FixedController.js
platform/features/layout/src/elements/ElementFactory.js
Rewrote some history as part of merge for WTD-940 to
remove non-open-source history; compiled CSS files did
not merge correctly in this process, so bringing over
compiled files from the original branch to replace these.
Wrap mct-include in a div which gets position/style information
to position elements in a fixed position view; part of
recommended updates for WTD-894.
WTD-894
Changed image CSS from contain to cover
Modded default colors for text and telemetry elements to visibility;
Moved click handler position in menu-button.html for better clickability;
Conflicts:
platform/commonUI/general/res/css/theme-espresso.css
WTD-610
CSS and markup mods principally focused on selects, checkboxes and composite controls;
Cleaned up positioning and formatting in .l-result area of query form bottom;
Removed display of view type when only a single view available for an object in switcher.html
Conflicts:
platform/commonUI/general/res/css/theme-espresso.css
vista/query/res/templates/channel-query.html
vista/query/res/templates/channel-selector.html
vista/query/res/templates/evr-query.html
Update the root object (used to populate the Library pane)
less often, to avoid recreating the whole tree and thereby
causing the tree to collapse. WTD-788.
WTD-894
Significant migration of inline styles to CSS classes;
Changed telemetry component so that when title is hidden, telem element can take up 100% of the element width;
Static text elements now show scrollbars on overflow;
Added padding and box-sizing to text elements - this is throwing off the selected control because of the offset and should be fixed;
WTD-894
Added scss file for fixed position styles;
Mods in progress to fixed.html to remove inline styling and change grid method to background gradient approach;
Implement controller for dialog buttons sufficient to satisfy
spec; these will be used to launch dialogs to collect user input
for Image Properties et al to complete toolbar for Fixed Position
view, WTD-881.
Avoid rebuilding the toolbar in Edit mode whenever
any change occurs to avoid losing the binding to the
current selection state; needed for color picker to
work properly for WTD-881.
Repair/simplify state-watching in representer for toolbar
in edit mode; avoids issue where destroy calls detach
watches for state change in toolbar prematurely. WTD-881.
Update spec for TelemetrySubscription to account for the fact
that it initially calls back when the set of telemetry objects
is available (which supports views such as Fixed Position
which want to defer all telemetry-handling responsibility to
the subscription.) WTD-879.
Fire callback from telemetry subscriber when the set of
object references changes. This allows views which use
the subscriber to register one callback, while still
ensuring that they are notified when there is new
information to show. Supports fixed position view, WTD-879.
Merge fixed position view work and general toolbar
work to begin adding toolbars for fixed position view,
WTD-879."
Conflicts:
platform/commonUI/edit/res/templates/edit-object.html
Implement EditToolbar (sufficient to satisfy spec) which will
construct an mct-toolbar-friendly form structure based on both
the current selection and the view's defined toolbar structure.
WTD-878.
Broadcast an event when drag-drop domain object composition
occurs, such that the view in question may utilize the drop
coordinates (e.g. to position elements in a layout or fixed
position view.) WTD-877.
Merge in work-in-progress for WTD-615 (Fixed Position View)
into topic branch for WTD-889 (a sub-issue of WTD-615, which
has been broken down into discrete chunks to support
development.
Conflicts:
platform/telemetry/src/TelemetrySubscription.js
Don't clone objects in the persistence cache; instead,
ensure that one instance per object is used/given
wherever possible. Goal is to keep object state in
sync between visible instances for WTD-791 et al.
Implement data structures which support lossless/lossy
behaviors for telemetry subscriptions (that is, allow
users of the telemetrySubscriber to decide whether or not
they are willing to drop updates in favor of only being
notified with the latest available values.) WTD-784.
Add specs for data structures which will support resolution
of WTD-784 by retaining all data not yet received by callbacks
(instead of just the very latest) such that plots can ensure
they do not miss streaming data.
Add a test case for subscriptions which should be handled
losslessly (that is, which should notify subscribers once
per data event, not once per execution cycle.) This
test case reflects the underlying cause for WTD-784.
Fix bug wherein number of points-to-plot is misreported
with multiple traces in a plot; clean up on modifications
to plot to self-cache streaming telemetry, to remove
other cache, WTD-751.
Fix usages of the plot updater, introduced to track real-time
telemetry to remove the need to cache values elsewhere. This
allows memory usage to be decreased for WTD-751.
Remove unused container definition for split pane; this
turned out not to be a suitable quick-fix approach to
WTD-747 (implementation of this behavior directly from
the browse template turned out to be more convenient.)
Fix styles used to reposition context menus when they are
near the edge of the screen, so that these menus remain
both on-screen and near the user's mouse. WTD-719.
Restrict actions which cause mutation of domain objects to
types of domain objects which can be created. (This does not
include Packet or Telemetry Point, WTD-723.)
Add tests for capabilities which have been updated to work
when only a model (and not whole objects) are cached; that
change was introduced to prevent misbehavior of the Remove
action in Edit mode, WTD-473.
Utilize model cache, permitting object models in edit mode to
be reused across multiple distinct instances with unique
contexts (unique contexts are necessary to avoid ambiguity in
the Remove action, WTD-473).
To avoid infinite digest cycles as a consequence of this,
refactor context/composition capability wrappers such that the
former is idempotent (since idempotence is no longer ensured
by the EditableDomainObjectCache) to avoid infinite digest
errors in Edit mode.
Implement a cache to store domain object models,
to allow the cache for individual objects to distinguish
objects based on their parentage and avoid ambiguous
Remove actions (WTD-473.)
Add a spec for an editable model cache; this will behave
similarly to the existing domain object cache, except
that it will cache only models. Use of this will permit
multiple instances of editable objects to be created with
unique contexts (that is, distinct parent objects accessible
via the context capability) which in turn will avoid the
ambiguous parentage which results in unexpected behavior of
the Remove action in Edit mode, WTD-473.
Update frame positions when model.composition changes,
instead of when model changes. Ensures correct display
after changes to avoid redrawing on every update,
WTD-716.
When changes to a domain object's modification timestamp are
detected, refresh only the capabilities associated with that
domain object (instead of rebuilding the whole view.)
Specifically avoids latency when layout views are rebuilt,
WTD-716.
Add tests to verify that directives stop polling after their
scope is destroyed (to prevent resource leaks); those changes
address resource leaks identified in the context of WTD-717.
Deactive mct-resize when its containing scope is destroyed;
that is, don't go on polling for size changes indefinitely.
Issue discovered/addressed in the context of investigating
sluggishness of plotting in WTD-717.
Add a service to wrap Date.now(), such that this can be injected
(simplifying testing of scripts which need to respond to system
time.) Specifically supports staleness indication, WTD-660.
Merge latest from master branch into topic branch for separating
out Couch adapter from persistence cache, in support of reusing
the latter for the WARP persistence adapter, WTD-702.
Remove reference to persistence cache from the Couch adapter's
bundle definition; this has been moved into a separate bundle
to support reuse with the WARP Server persistence adapter,
WTD-702.
Move cache sources into their own bundle, for reuse with other
persistence adapters; specifically supports the persistence
adapter to the WARP Server, which is non-Couch but which will
want to use this cache. WTD-702.
Update README files to document the reorganization of persistence
sources into separate bundles for the Couch adapter and for the
persistence cache, in support of reusing the latter with a
different persistence adapter, WTD-702.
Move persistence sources into a deeper bundle in preparation for
splitting of persistence into two bundles - one specific to the
Couch adapter, and one for persistence caching generally. This
supports WTD-702, the WARP persistence adapter, which will not
use Couch for persistence but which will want to use the platform-
provided persistence cache.
Allow callback provided when subscribing to telemetry using
telemetrySubscriber to be omitted; this permits usage of
the resulting subscription more directly from controllers,
such as for fixed position view, WTD-615.
Add tests and JSDoc to the style sheet loader introduced to
allow bundles to introduce their own CSS files through the
platform's regular extension mechanism; WTD-591.
Implement 'runs' as a built-in category of extension, to support
bundle addition of functions to run when the application first
starts. Specifically supports loading of stylesheets, WTD-591.
Add tests for a built-in extension type to framework to allow app.run
to be invoked via bundle extensions. This supports stylesheet
injection, which should happen on load but isn't triggered
from any particular part of the page. WTD-591.
Update tests for dialog/overlay services to match
changes introduced to simplify implementation of
information overlays, such as the About dialog, WTD-667.
For overlays that do not need to do special things when a
window is dismissed, provide a default cancel function.
This simplifies implementation of the information-only
dialogs, such as the About dialog, WTD-667.
Refactor overlay templates to separate out the overlay
container from the inner dialog containing the form;
this permits the easy reuse of that overlay container
to supply a non-form-like About dialog, WTD-667.
Support priority ordering from the mct-include directive
(such that the highest-priority template for a given key
is what gets included.) Needed to support variations among
application logos in the bottom right (depending on deployment.)
WTD-667.
Fix bug when filtering out namespaced identifiers when reading
domain object models from persistence; filter operation was
breaking the logic of pairing ids back to loaded models by
index. Corrects behavior introduced to reduce latency when
loading the telemetry hierarchy, part of WARP Server
integration, WTD-644.
Add clarifying comments to reflect changes to
procedure used for loading models from persistence
introduced in support of reducing latency in loading
domain objects introduced by the WARP Server adapter,
WTD-644.
Don't pass a domainObject instance into mct-representation
until a view for that specific domainObject is available;
this avoids ordering issues where a new domainObject is
passed briefly to controllers in represented views before
a event is issued, which can result in undesired
behavior for views that need to manage resources (such as
the subscriptions used to support telemetry retrieved
from the WARP Server, WTD-644.
Restore wait spinner in tree (missed during Angular transition);
this feedback is important when waiting for the contents of
the Packets node (WTD-644) to load.
Work around issues in platform which manifest as bugs or
latency issues when attempting to visualize telemetry
from the WARP Server. Specifically:
* Handle the possibility that there is no matching
representation for an object from EditRepresenter.
* Don't attempt to look up colon-separated domain object
identifiers from persistence. This is a workaround to
avoid latency issues from excessive persistence calls;
filed WTD-659 to improve this solution.
Changes made to support resolution of WTD-644.
Add tests and in-line documentation for the caching persistence
decorator, transitioned to support performance of taxonomy provided
by the WARP Server Adapter, WTD-644.
Add a decorator to handle the caching of objects stored to
and/or read from persistence (bring over from pre-Angular
branch.) Supports the WARP Telemetry Adapter; the absence
of such a cache has been observed to result in significant
latency in instantiating autoflow tabular views for packets.
WTD-644.
Also, include an empty test file to ensure that the added
decorator is included in code coverage estimation (and to
provide a location for tests to be written later.)
Allow type definitions to restrict views; this specifically
supports the restriction of autoflow tabular views to packets,
and the omission of scrolling/plot views as applicable to
packets. WTD-644.
Don't try to format non-numeric values; rather, just echo them back
directly. This is to allow simple printing of strings when received
on a telemetry subscription. Performed in the context of WTD-644
(since the WARP Server returns many such strings.)
Add priority ordering to loaded extensions in each category;
this allows control over the resulting order of extensions
acquired and used within the application. WTD-590
Warn if a view definition does not include a key,
and prune it from the list of views. This avoids
an underlying cause of WTD-628, which is fixed for
plots specifically in the previous commit but could
recur if other views were to omit keys.
Expose angular as a dependency which can be included
from AMD-style modules, utilizing the extensions to
the framework layer added to support exposing libraries
from bundles. WTD-568.
Complete tests for the RequireJS configurator, used to
expose libraries beyond bundle boundaries (and, related,
to provide shims for non-AMD libraries.) WTD-568.
Add a configuration step (as part of the resolve phase)
to the framework layer, where bundle-defined paths and shims
are passed to RequireJS configuration. This permits both
the use of non-AMD modules and the exposure of libraries
across bundles. WTD-568.
Add in-line documentation to scripts and methods that
were changed/introduced to support telemetry subscriptions,
which in turn were introduced to support autoflow
tabular views, WTD-614.
Complete test coverage for new scripts added to bundle
platform/commonUI/general in suport of autoflow
tabular views, WTD-614. Specifically, these provide a
directive to watch element sizes, and a controller to
help as an intermediary between getter-setter style
ngModels, and plain assignable ones.
Complete test coverage for new scripts added to bundle
platform/telemetry in support of autoflow tabular views,
WTD-614. Specifically, these implement a telemetrySubscriber
service which can be used to watch for updates to telemetry
values associated with a specific domain object.
Reorganize folder strucutre for tests in bundle
platform/commonUI/general; source folder structure
has been modified to accommodate additional classes
added to support autoflow tabular views, WTD-614,
so test folder needs to be reorganized accordingly
Reorganize sources for bundle platform/commonUI/general;
number of classes here has grown as a consequence of
additions for WTD-614 and so an additional layer of
organization is helpful.
Conflicts:
platform/commonUI/general/bundle.json
platform/commonUI/general/src/directives/MCTResize.js
Add a subscriber service to handle subscribing to
whole sets of telemetry elements via delegation;
this exposes TelemetrySubscription via a service
which can be retrieved via dependency injection.
Supports the use of this variety of subscription
for autoflow tabular views, WTD-614.
Add a utility controller for interacting with
getter-setter style ngModels (similar to ng-model-options
with getterSetter: true, but support for that is not
present in the current version of Angular.) Specifically,
this is used to support the input filter control, which
in turn is used within the autoflow tabular view. WTD-614.
Stop polling for updates to telemetry data from
TelemetryController when scope is destroyed.
Addresses some performance issues observed in
WTD-614, autoflow tabular views (although this
view doesn't use TelemetryController directly,
the continuing of this polling in the background
can slow down updates when it is showing.)
Add ability to subscribe/unsubscribe to streaming
telemetry updates. This may be more performant than
polling in some circumstances, and appears necessary
for good performance of autoflow tabular views,
WTD-614.
Update specs for columns in scrolling list view to reflect
that the formatting of domain/range values for display
has now been moved into a reusable injectable service for
WTD-599.
Move spec for formatting of telemetry values from the
plot bundle to the telemetry bundle, to reflect its
exposure as a reusable service exposed by that bundle.
WTD-599.
Add missing in-line documentation to ScrollingListPopulator;
noticed in the context of work done for WTD-599,
refactoring of time- and value-formatting for telemetry
into a reusable, injectable service.
Expose telemetryFormatter as a service; additionally, fix
some structural issues to make sure this is passed around
as needed among plot components. WTD-599.
Move implementation of formatter used for display
of domain values out of plot, and into the telemetry
bundle, from which it can be exposed as a general-use
service. WTD-599.
Repair tree node auto-expand/highlight behavior, to
address WTD-627. Specifically:
* Check the full path when deciding to highlight,
instead of just the parent. This avoids duplicate highlighting
in cases where the same parent is visible in two subtrees.
* Don't make a redundant getId call in path-checking;
domain object paths have already been mapped to identifier
paths at this point. This avoids erroneous auto-expansion of
the whole tree.
Add skeleton specs for the bottom bar controller (introduced
to handle display of indicators introduced as extensions)
and the Couch indicator (introduced to exercise the above,
and to report connection status relative to the Couch
database.) WTD-608.
Add specs to verify the behavior of PlotPanZoomStackGroup,
which is responsible for synchronizing the domain axis
between multiple sub-plots in a stacked plot view.
WTD-625.
Restore range tick marks; these were lost in refactoring
to support multiple subplots-per-view due to a missed
occurrence of an out-of-date interface usage. WTD-625.
When changes to pan-zoom bounds are made in one
subplot, this will effect the pan-zoom bounds of
other subplots. Ensure this occurs immediately.
WTD-625.
Utilize PlotPanZoomStackGroup; that is, utilize changes
such that a set of pan-zoom stacks can be treated as one,
while their domain axis synchronizes, and their range
axis does not. WTD-625.
Initially implement a synchronized pan/zoom stack,
which maintains the same domain axis bounds for all
subplots in a stacked plot view, but allows each to
have independent range axes. WTD-625.
Change plot style when in stacked plot mode, such that
plots stack as expected. (Without this change, the
gl-plot class's height of 100% will cause all plots to
fill the full vertical space, effectively acting
overlaid.) WTD-625.
Fix issues related to refactoring of view-level
to subplot-level behavior, such that previous
functionality is restored. This refactoring
supports introduction of a stacked-plot mode,
for WTD-625.
Begin refactoring Plot view to support stacked plots;
separate out behavior which needs to occur per-plot
from area which should occur per-view, and add a
handler for the Overlay mode. WTD-625.
Get/set mode from the plot mode switcher; only show
the switcher if there is more than one mode available
(which should only occur when there is more than one
telemetry object in the plot.) WTD-625.
Return the same value from getTelemetryObjects if thes e
haven't changed, to permit this return value to be
watched directly without appearing unstable. Supports
the addition of stacked plot controls, which need
to be conditioned on the number of telemetry objects
present. WTD-625.
Add a commit function to scope from the edit representer;
this avoids issues trying to transparently detect and
persist changes made during edit mode, while still requiring
only minimal action from individual views. WTD-535.
Fix an edge case in the mutation capability where model
data could be lost during a mutation; this supports
auto-mutate/persist functionality for representations,
which allows Layout editing (transitioned for WTD-535)
to be persisted thereby.
Add entries for new scripts to test suites, to ensure
tests fail until scripts added to support transition
of Layout object/view (WTD-535) have been completed.
WTD-535.
Repair the arguments given to the bottom resize
handle for frames in a layout; previously this had
been parameterized erroneously to function as a
right-hand resize handle. Part of transition of
layout elements, WTD-535.
Perform initial population of scope in mct-representation
at link time, instead of waiting for watches to be fired;
this avoids the need for extra digest iterations, which
Angular detects as indicators of infinite loops (throwing
exceptions accordingly.) Fixed in the context of supporting
transition of editable Layouts, because these errors were
being thrown upon exiting Edit mode. WTD-535.
Add un-minified Angular and source mappings to aid
in debugging infinite digests. These are occurring
when leaving Edit mode, e.g. after editing a Layout,
so this is needed to complete transition of the
Layout object type. WTD-535.
Get a reference to the body element at link-time,
instead of instantiation time, from the mct-drag
directive. Failure to do so causes the reference
to fall out of date when switching between Browse
and Edit mode.
Supports position/sizing interactions for Layout
view, WTD-535.
Auto-expand tree nodes on a timeout, instead of immediately.
This is necessary in cases where auto-expansion several
layers deep occurs; if done immediately, each expansion
will trigger a new digest cycle, which at a certain depth
will appear to Angular as unstable.
Done in the context of WTD-535.
Store changes to the size and position of panels in a
layout to its configuration. The mct-representation
directive (and its constituent parts) is responsible
for detecting and persisting these changes as
appropriate. WTD-535.
Add an EditRepresenter which detects changes to domain
object model or view configuration and, when these
occur, triggers mutation and persistence of the domain
object. (Note that in Edit mode, 'persistence' only
flags an object as dirty; actual persistence does not
occur until the user chooses Save.)
This supports editing of position/size in Layout mode,
and the persistence of those changes. WTD-535
Add representers as a category of extension; these are extra
steps to perform when representing a domain object. This
will be used to support automatic mutation/persistence of
domain objects from a watch, while avoiding bloat within
the mct-representation directive itself. This, in turn,
simplifies the persistence strategy to be employed by
Layout views when editing concludes. WTD-535.
Properly reset the initial drag position tracked by the
mct-drag position so that multiple drags upon the same
element are correctly offset from an initial position.
Also, preventDefault from events to avoid selection
highlights during drag.
Supports editing Layout objects, for WTD-535.
Move spec for view switcher from bundle
platform/commonUI/browse to bundle
platform/commonUI/general to reflect refactoring
to simplify usage in other places (including in
Layouts, which are being transitioned for
WTD-535.)
Refactor view switcher to simplify it; treat it
as a representation of a domain object that modifies
an ng-model. This simplifies reuse, e.g. in frames
within a layout. WTD-535.
Add a controller for composite controls; this is used
to flag contained controls as required when they have
been partially filled in (to treat entering one of two
such fields as invalid.) WTD-593.
Provide initial empty arrays for type properties that
are array-like; this is needed to support two-way data
binding for composite controls. Part of ongoing integration
of forms component, WTD-593.
Add placeholder spec for the LocatorController, introduced
to support forms used from the Create menu. Part of ongoing
integration of forms bundle, WTD-593.
Use ng-model when communicating state to/from the
tree in browse mode. This will simplify implementation
of the Locator control, which also uses a tree, but
which should not set navigation state. WTD-593.
Reorganize templates associated with the Create menu in
preparation for adding the Locator control, used to
specify the destination folder for object creation.
WTD-593.
Hide dangling underscores; JSLint considers these a problem
and the command line build fails as a consequence when they
are present directly in the code, but CouchDB provides these
so we cannot avoid them entirely. So, hide them behind
variables and use []-style lookup.
Concludes transition work for the CouchDB persistence adapter,
WTD-537.
Fill in JSDoc for the CouchDB adapter which provides
the ability to persist domain object models. Part of
ongoing transition of the platform/persistence bundle,
WTD-537.
Separate CouchDocument (used to wrap a domain object model
with metadata suitable for persistence to CouchDB) into
its own script, to simplify testing and maintenance.
Ongoing transition of Couch persistence, WTD-537.
Fill in specs for ScrollingListController, and for
the specific Column types that support it. Separate
out the code that produces actual rows in order to
improve testability and maintainability. WTD-534.
Bring in scrolling list view from the sandbox branch
in preparation for clean up, testing, and integration
to complete transition of scrolling list views,
WTD-534.