Code Monkey home page Code Monkey logo

openmct's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openmct's Issues

[Fixed Position] Provide default position for telemetry points

If a fixed position view contains a telemetry element in its composition but does not have at least one position/size for that telemetry element defined in the view's configuration, a default one should be chosen and displayed. If the user Edits and saves this, it should be stored to the view's configuration.

To see similar behavior, edit a Display Layout and drag objects from the Library to the Elements pane (or, from Browse mode, create new objects in the Layout directly.) Observe that these are assigned positions in the Layout view automatically. A similar positioning approach (starting from top-left, cascading down) should make sense for Fixed Position view as well.

[Edit] Remove is available for invalid objects

When in Edit mode, the Remove action is available for the object being edited, as well as other objects in the domain object hierarchy above it (in the Library)

Desired behavior is that Remove should be unavailable here (and, more generally, that modification should only be permitted for the domain object being edited and its direct descendants)

Proposed solution:

  • Add a mutation policy category to determine which objects are mutable
    • Currently, this is handled as a hasFeature('creation') check; this check should instead be moved into an instance of the mutation policy
  • Add a policy disallowing mutation in Edit mode for objects which are not the object being edited or one of its direct descendants
  • Add an action policy restricting the remove action to objects whose contextual parent allows mutation

[Platform] Bump Angular Version to Latest (1.4.3)

We're currently using a legacy version of angular which is preventing us from using some very useful features (such as one-time bindings, which are useful for reducing watch counts).

I dropped in 1.4.3 and did not encounter any bugs with the application but I did not do a comprehensive check.

@VWoeltjen any thoughts about when we should schedule this and how much testing we should perform afterwards?

[Mobile] Context Menu

Context menu is not able to be reached. A touch and hold option
to allow this on tree list items would be a solution

Typing in search bar can be unresponsive

For a reasonably large set of objects, typing in search bar can be unresponsive after the first one or two characters, particularly if there are a lot of hits for those characters. Unresponsiveness lasts for roughly 1-2s. Subsequent typing gives results more quickly.

Could try throttling the search function using the throttle service.

May also want to do something to wait until previous search results have been returned before initiating a new search.

This was observed using a non-ES data store (so issue may also be specific to GenericSearch)

mct-resize triggers excessive digest cycles

The mct-resize directive (defined in platform/commonUI/general) monitors the size of an element by polling on a $timeout, which in turn will trigger a new digest cycle as it is called currently (an extra parameter can be provided to suppress this)

Instead, it would be preferable to fire a digest cycle only when an element's size actually changes; there is already a check for this change, so adding the extra argument to $timeout and invoking scope.$apply should achieve the desired result (the existing scope.$eval may be enough that the $apply call is not needed at all, if $eval triggers a digest - not sure on this)

Allow treeview to be collapsed

Allow the user to collapse and hide the treeview in 'browse' mode. See pgs. 19 - 21 in UI sketches v2.1, https://drive.google.com/a/nasa.gov/file/d/0B0v27OM1JkSeR001RFJZMk43QVk/view?usp=sharing.

  • A button will need to be added to the splitter bar (when visible) to effect the collapse.
  • Buttons available when the treeview is hidden will allow expansion of the treeview, and access to the Create menu.
  • The treeview should be hidden by default when opening an object in a new browser tab. This means that we may want to allow a querystring param in the URL to control the visible state of the treeview as well as an ng-click when navigating within a single window.

[Mobile] Full Screen mode

Full screen button is unresponsive, should allow a full screen mode.
A full screen mode could be one that hides the url bar at the top.

Implement a service for WebWorkers

Implement a service which allows web workers to be registered under symbolic names, and run using those symbolic names. (This will mainly help with resolving bundle paths to WebWorker scripts.)

Supports WTD-1218.

[Capabilities] Incorrect warning logged

Observing No key defined for capability; skipping. frequently on console. This appears to occur when a capability has been overridden, due to a logic error in the way this condition is checked for before it is logged. (Error introduced at 71ca980)

Can't enter Edit mode twice

Navigate to a domain object, click Edit to enter Edit mode, then click Cancel to leave Edit mode.
Click Edit again and observe that the URL changes, but the client remains in Browse mode.
Desired behavior is that the subsequent click goes into Edit mode.

This appears to be fixed if one checks the new path before cancelling the route change, e.g.

                    if ($location.path().indexOf("/browse/") === 0) {
                        $route.current = priorRoute;
                    }

... in the $locationChangeSuccess listeners in BrowseController and BrowseObjectController

[Identity] Add user identification support

Add support for user identification to platform. This should include:

  • An interface that applications can use to expose the user's identity.
  • An indicator for who the current logged in user is if there is such a user
    • (note that this will probably be relocated elsewhere in the UI later, but indicators are cheap to implement so this works well short-term)
  • Inclusion of a "creator" field in newly-created domain object models.

Supports public/private permissions.

[Layout] Layout rebuilds after resize/reposition

In Edit mode of a Display Layout containing multiple panel, drag one panel. Observe: Contents of other panels are reloaded (can be seen to repopulate)

Desired behavior is that the position of the dragged panel updates, but that it contents remain as they were.

[Layout] Persist changes to view selection

Persist choices made for view selection in frames within a layout, when those changes have been made in Edit mode. Do not persist choices when the view is in Browse mode.

Summary of desired behavior:

  • User creates a Layout
  • User Edits a Layout
  • User drags some objects (e.g. a Telemetry Panel) into the Layout
  • User uses view switcher in frame in a Layout to change the views in these frames (e.g. switching to Scrolling view of a Telemetry Panel)
  • User hits Save and returns to Browse mode
  • User views the created Layout in Browse mode and sees the view choices from above (e.g. that telemetry panel still shows Scrolling view)
  • User can still change these view choices, but if they navigate away from the Layout and come back, the view choice that they Saved from Edit mode should be in effect again.

Use anchor tags with `href` for navigation

We should use standard browser navigation via anchor tags with href attributes instead of ng-click directives that tie directly into the navigation service.

This allows us to reuse standard anchor styles (cursor changes, etc), and is more in line with how browser navigation works on the open internet.

[Mobile] Sine wave plot view curve expansion

Sine wave plot view updates slowly relative to the
screen/plot shown, therefore it looks like it is frozen
or broken, because it may seem like it has stopped updating.
Upon switching to the scrolling view the values/time updates
every second as intended.

[Edit] Useless tooltips show over Library and Elements panes

Go to edit mode; hover over the Library pane. A tooltip appears saying "Library"

This is probably due to the use of "title" as an attribute on mct-container without consideration of its normal HTML interpretation. Solution should be to change parameter name for the accordion container (in platform/commonUI/general) to something other than "title", and update usage in Edit mode templates accordingly.

Object Inspector

Allow information to be displayed about objects via an Inspection panel. See pgs. 23 - 26 in UI sketches v2.1, https://drive.google.com/a/nasa.gov/file/d/0B0v27OM1JkSeR001RFJZMk43QVk/view?usp=sharing.

  • This pane will need to operate in the same was as the treeview, allowing the user to resize and collapse it. See #72.
  • Selectable objects should include tree items, and sub-element items during editing such as the legend of a Telemetry Point in a Panel's plot view, clicking a Telemetry Point in a Panel's Fixed Position view, or clicking a frame while editing a Display Layout.
  • This element should be architected as much as possible to support multiple item selection, particularly in Timelines.

[Browse] Removing a navigated-to object does not navigate away

Navigate to a domain object in Browse mode.
In the tree, find the same object, right-click, and choose "Remove"
Observe: Object is removed from the tree but remains in view.
Expected behavior: Object should no longer be in view. Navigation should switch over to its parent, or to a default object (e.g. My Items)

Locator does not work when there is no context

When a search result is selected, the LocatorController cannot find context. This means that when the create dialog is open, the tree to select the location to create that object is not loaded. Also, when attempting to edit a search result, the Library is not loaded.

screen shot 2015-08-27 at 10 21 04 am
When this issue occurs, the tree appears to load infinitely, as above.

[Mobile] Drag and drop

Drag and drop is not a feature. This does not allow dnd
during browse mode into a folder. Also, this does not allow dnd
during edit mode, from the tree to the elements list nor the
view. Also in edit mode for a layout or fixed position view,
objects cannot be moved or resized.

selecting an option in create menu sometimes results in no object being created

When using the create menu, I am surprised to find that clicking to create an object sometimes dismisses the menu instead of opening the new object dialog box. The actual ng-click is attached to the text, but the hover effect and cursor shows a much larger click target.

This screenshot explains the current functionality:
create menu sensitivity

This screenshot shows the expected functionality:
expected

this bug is a demokiller.

[Location] Objects loaded directly from ObjectService appear as links

When an object is loaded any other way except for via a "composition" capability, it appears as a link.

Instead, it would be preferable to treat these as belonging in their original context in this situation, and only override with alternate context when they are loaded in alternate way.

Could probably handle this without touching core by adding an objectService decorator which does this (from the location plugin)

[Mobile] Hover menu

Hover info menu is only reached after an item is pressed on,
then after a delay the menu pops up. And it is only closed if
another tree menu is pressed.

[Persistence] Errors in persistence (after creating/modifying objects) should be visible to user

When there are errors that prevent an object from being persisted-- whether persisting a change to an object or persisting a new object-- the system should notify the user of the issue.

Currently, if a persistence operation fails, the interface acts like the persistence operation succeeded, and it's only when you refresh do you notice that changes have not been persisted.

We should not update the UI to show a persistence operation as completed until it has actually completed successfully, as subsequent actions performed while the UI is out of sync can cause significant negative effects.

Style mobile

Sand, polish and stylize the current mobile display work. Should be done in a new branch based on 'mobile'.

Info bubbles can block mouse clicks

Info bubble (which shows on hover over objects in a tree) appears to block mouse clicks when attempting to navigate to these objects.

To reproduce:

  • Hover over a domain object's label in the tree on the left hand side
  • Left click
  • Observe: Domain object does not get navigated-to
  • Expected behavior: Domain object gets highlighted, view appears to the right hand side

[Search] Compatibility with links and context

Search results currently have no context, so results almost* always appear as links.

This is because the generic search provider uses the object service to get all of the objects, and the object service currently returns objects with no context. So, when the object service has been changed to incorporate context, then this issue should be resolved. (I believe @larkin is working on this.)

For search providers other than the generic search provider, this may still be an issue even after the object service change.

* Objects from before move-copy-link was implemented don't look like links, because their models don't have locations.

Drag-drop into Layout also acts as drop into Fixed Position view

When dragging-dropping into a layout that contains a fixed position view, the dropped object also appears in the fixed position where it is dropped. This, obviously, is undesired; desired behavior is that the drop is recognized/handled only by the layout.

[Mobile] Text in buttons/tree items

Text in buttons and tree items can be highlighted by iPad highlight options to
"copy", "select all", and "define." This should not be allowed, as buttons and
tree list items should be treated as whole, button-like items.

Use Requirejs optimizer for production builds

Currently the application uses requirejs to load modules without using the optimizer. This results in a large number of requests made to load the app and slows down application load significantly. Additionally, it causes us to use caching settings that are not ideal for production environments.

Using the requirejs optimizier to generate a single javascript file which can be fingerprinted and cached as a whole would decrease load times substantially.

[API] Review API

Review current Open MCT Web API and identify "pain points" for developers. In particular, want to identify areas where we can save future development effort by either shortening learning curve or reducing effort to implement features.

Open in New Tab

Add an Open in New Tab action; this should be available in two places:

  • From the context menu for a domain object
  • From the top-right set of buttons in Browse mode

There's a placeholder for this action in platform/commonUI/browse/src/windowing/NewWindowAction.js with some metadata in platform/commonUI/browse/bundle.json (note that the name will need to change from Open in New Window to Open in New Tab)

There are also some CSS changes which are suppressing the presence of this button currently; check with Charles about undoing these changes.

This will depend on addressability (see #8) on branch open1149, so should start from that branch if it hasn't been merged to master yet

Page splitter doesn't set default size properly with high latency and clean cache.

I can reproduce this almost 90% of the time with the following settings:

When done properly, the page looks like so:

screen shot 2015-07-27 at 9 23 57 am

I can sometimes reproduce this issue without the cache disabled, I believe it's a condition where the split view is using something (likely css) to set the default size of the tree view, and the css hasn't full applied yet, so the initial tree size is 0px, and the splitter sizes accordingly.

Dragging the splitter returns warp to normal functionality.

If this is a race with CSS loading, we may need to wait for css loading before initializing the application.

URL is malformed while browsing

After changes from #21, URL shown while navigating (e.g. clicking around the tree) becomes malformed, including an extra "index.html" and an extra "view=..." (see screenshot)

The URL shown by "Open in new tab" appears to be correct and first, and then becomes malformed (presumably when updated by BrowseController)

bug21

[Image Telemetry] Support pan-zoom

Support pan-zoom of image telemetry. This should function similarly to pan/zoom in plots. Specifically:

  • Click-drag should marquee zoom into an area of an image
  • Shift-click-drag should pan around the image
  • Once panned or zoomed, buttons should become available in the top right:
    • Step back pan-zoom
    • Reset pan-zoom

Example image telemetry is available with bundle example/imagery (add "example/imagery" to bundles.json)

Note that, once panned or zoomed, the image should pause an stop updating with the latest image telemetry (I believe; double check with @charlesh88 on this point)

[Mobile] Add touch support to mct-drag

Add touch support to the mct-drag directive in platform/commonUI/general.

This will enable various user actions in mobile which are currently not present (e.g. repositioning splitters) since mct-drag is used somewhat frequently.

Disable drag-drop in Browse mode

Drag-and-drop composition (e.g. from the tree to a Layout) should not be active in Browse mode; this is considered an "editing" activity and should only work from Edit mode.

The exception to this is folders; dragging-and-dropping into the items view of a Folder SHOULD result in adding an object to that folder's composition, even in Edit mode.

Currently, however, drag-and-drop functions for any view that support drag-drop composition, regardless of current mode (Browse or Edit.)

Show Context Menu from "items" view

Show context menu from individual "grid items" in a view of a folder (the only view of a folder, currently.) User should be able to right-click on a domain object within a folder and see a context menu of available actions appear, as they do in the tree.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.