openmct/src/plugins/plugins.js

180 lines
5.7 KiB
JavaScript
Raw Normal View History

/*****************************************************************************
* Open MCT, Copyright (c) 2014-2018, United States Government
* as represented by the Administrator of the National Aeronautics and Space
* Administration. All rights reserved.
*
* Open MCT 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 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.
*****************************************************************************/
define([
'lodash',
'./utcTimeSystem/plugin',
'../../example/generator/plugin',
[Autoflow] Rewrite Autoflow Tabular using new APIs (#1816) Rewrite Autoflow tabular using Vue and all new telemetry APIs. Also adds LAD support to autoflow tabular. * [Autoflow] Add Vue dependency ...to begin refactor away from Angular, #1810 * [Autoflow] Add Vue to require config ...to support usage in refactoring Autoflow Tabular view. * [Autoflow] Sketch in new plugin registration * [Autoflow] Bring over template, without Angular * [Autoflow] Add license headers * [Autoflow] Add VueView ...to simplify addition of Vue-based views. * [Autoflow] Add Vue bindings to template * [Autoflow] Sketch in AutoflowTabularView * [Autoflow] Include title for row names * [Autoflow] Begin adding controller * [Autoflow] Sketch in controller functionality * [Autoflow] Support object filtering * [Autoflow] Unlisten from controller on destroy * [Autoflow] Track rows on an interval * [Autoflow] Support column width changes * [Autoflow] Expose new plugin through openmct.plugins * [Autoflow] Fix run-time errors instantiating view * [Autoflow] Fix row generation error * [Autoflow] Fix row formatting * [Autoflow] Utilize width * [Autoflow] Update autoflow view when filter changes * [Autoflow] Enable autoflow for telemetry panels ...in developer environment. * [Autoflow] Bind data-value for rows * [Autoflow] Include limit evaluations * [Autoflow] Rename property rows to rowCount * [Autoflow] Retain rows during update * [Autoflow] Add bindings to clear autoflow filter * [Autoflow] Show updated timestamp * [Autoflow] Remove obsolete plugin * [Autoflow] Load vue for tests * [Autoflow] Begin adding spec for autoflow tabular plugin * [Autoflow] Test plugin registration * [Autoflow] Begin spec for AutoflowTabularView * [Autoflow] Obey contract from VueView.show ...by populating a container, instead of replacing it. * [Autoflow] Begin testing behavior * [Autoflow] Get initial row heights * [Autoflow] Verify unsubscription on destroy * [Autoflow] Test column width button * [Autoflow] Simplify controller activation/destruction * [Autoflow] Verify data display * [Autoflow] Test limit display * [Autoflow] Fully initialize controller * [Autoflow] Add missing semicolon * [Autoflow] Separate out constants ...to access them from tests * [Autoflow] Use constants from spec * [Autoflow] Test autoflow behavior * [Autoflow] Refactor test case ...to support tests for composition changes * [Autoflow] Add test cases for composition change * [Autoflow] Handle composition changes * [Autoflow] Sketch in row controller https://github.com/nasa/openmct/pull/1816/files#r153015544 * [Autoflow] Integrate row controller https://github.com/nasa/openmct/pull/1816#pullrequestreview-79305103 * [Autoflow] Add tests for historical request * [Autoflow] Request historical telemetry * [Autoflow] Remove unused active flag * [Autoflow] Clarify row destruction ...to avoid problems with binding destroy * [Autoflow] Fix mistake in test * [Autoflow] Simplify waiting for view updates in test * [Autoflow] Move filtering, autoflow to view * [Autoflow] Remove unused caching * [Autoflow] Remove obsolete method reference * [Autoflow] Fix lint errors Add missing semicolon, remove unused vars * [Autoflow] Refactor test to simplify emitting events * [Autoflow] Emit add events during load for testing ...to simulate the actual behavior of this method. * [Autoflow] Provide composition in mock ...to allow constructor-time usage of dependency from controller * [Autoflow] Avoid intermittent errors ...by checking to see if tabularArea is available before accessing its clientHeight; depending on the timing of setInterval versus Vue's mount event, it may not be! * [Autoflow] Use add/remove composition events from controller ...exclusively, instead of attempting to load again and triggering an infiniute loop each time. * [Autoflow] Test that composition does not reload * [Autoflow] Expect identifiers for remove events * [Autoflow] Simplify row-matching test * [Autoflow] Combine down to a single integration test * [Autoflow] Remove possible test race condition * [Autoflow] Add JSDoc * [Autoflow] Remove excess test case ...which is no longer needed after combining behavioral tests for view into a single spec. * [Autoflow] Remove unused destroy call https://github.com/nasa/openmct/pull/1816/files#r154787335 * [Autoflow] Use requestAnimationFrame in tests ...to avoid brittle change detection. https://github.com/nasa/openmct/pull/1816/files#r154785549 * [Autoflow] Use MCT instance for spies ...such that test case becomes sensitive to API changes in MCT.
2017-12-07 21:01:10 +00:00
'./autoflow/AutoflowTabularPlugin',
2017-05-22 21:40:35 +00:00
'./timeConductor/plugin',
'../../example/imagery/plugin',
'../../platform/import-export/bundle',
Summary Widgets (#1668) * [ViewAPI] Update view API with more support Update view provider to allow metadata definitions and to play nicely with old style views. Spec out some updates to ViewProviders and ViewRegistry to support further use of views. * [Summary Widgets] Add summary widgets Add a summary widget domain object type Implement basic interface and style configuration for rules * [Summary Widgets] Implementation for Rules Add rule configuration inputs, populated with domain objects, metadata, and appropriate operations for a given type * [Inputs] Add implementation for icon palette Issue #1644 Wire up icon palette inputs to widget, and make icon class a persistable property of a rule * [Summary Widgets] Implementation for conditions Support configuring and persisting multiple conditions per rule Issue #1644 * [Summary Widgets] Generate Rule Descriptions Dynamically update the rule description based on the current state of the rules' conditions * [Summary Widgets] 'Any/All Telemetry' in conditions Add UI and implemenetion for evaluating any telemetry or all telemetry in an individual condition. Add related unit tests. * [Summary Widgets] Rule Reorders Implement drag and drop rule reorders using the native HTML5 API * [Summary Widget] Test Data Issue #1644 Add user-configurable mock data to test rules. Modify evaluator to gracefully handle uninitialzed test data points. * [Summary Widgets] Edit Mode Enable edit mode for summary widgets, and make configuration interface visible only when the user has entered edit mode Fix collision between widget palettes and other interfaces where palettes would permanently hide other menus * [Summary Widgets] UI for scripted conditions * [Sumamry Widgets] Destroy Implement destroy * [Summary Widgets] Cleanup Remove unnecessary persist calls in Rule.js. Remove generateDescription from refreshConditions and add it after refreshConditions to initCondition and deleteCondition Throw error when unsupported callback is passed in condition.js, return summary widget instance in plugin.js instead of wrapping in new object for view Add request properties to telemetry request for providers that support it Remove check for editing when persisting, in SummaryWidget.js
2017-11-28 21:23:15 +00:00
'./summaryWidget/plugin',
'./URLIndicatorPlugin/URLIndicatorPlugin',
'./telemetryMean/plugin',
'./plot/plugin',
'./telemetryTable/plugin',
'./staticRootPlugin/plugin',
'./notebook/plugin',
Reimplementation of Display Layout in Vue (#2185) * Saving work * Fix conflict * Position the panels by setting the style * Put the div back with height set to 100% in ObjectView. Add markup for drag handles. * Use default position and dimensions if the layout panel is missing those values. Set s-status-editing on the main div to get the drag handles appear for now. * Display Layout and frames major improvements - Moved Toolbar out of Layout.vue and into DisplayLayout.vue; - Styles for object view, Layout, Frame, etc. - Major refactor of markup for frame; - Added abs() mixin; - Styles for is-editing done; - Styles for - TODO: styles for selectable, moveable, etc. * Implement drill in gesture. * Hide the background grid when a frame is drilled in * Edit styling and toolbar WIP - c-search styles moved mostly into mixin; - New .c-labeled-input class; - Browser overrides for number-type input spinners in webkit; * Toolbar WIP - Custom wrapped number input added; - Toolbar buttons WIP; * New toolbar buttons WIP * Define a computed property for the css class object. * Frame edit handles markup and styling * Toolbar, editing and selection style refinements - Moved toolbar back into Layout.vue; - Hard-coded 'is-editing' onto __pane-main for now, removed from DisplayLayout.vue; - Styles for frame in LayoutFrame.vue: -- editing default (dotted border) -- editing .s-selected -- .s-drilled-in (renamed .is-drilled-in) * Refactoring button classes - Lots of stuff broken right now; - TODO: lots of renaming (c-menu-button, c-icon-button, etc.); - Removed import of _controls in search.vue; * Fixes for selection on nested selected elements * Fix conflict * Significant refactoring of button and click-icon classes - Markup and CSS updated; - Toolbar in good shape, prior to merge of vue-layout; * Fix issues with relative font-sizing * Add color palette markup and CSS - Also added Layers menu example; * Font, font-size glyphs and size menu, and more - Added art for font glyph and renamed from .icon-T; - Added new glyph for font-size; - Fixed font-sizing in controls; - Added font-size menu; - Re-org'd toolbar items; * Styling tweak for c-labeled-input - Code cleanup as well; * Fixes for toolbar toggleMenus and labeledNumberInput * Implement resize and move for frames. Added stub for drag 'n drop. * Add custom checkbox control. - Also, code cleanup. * Add toggleButton component - Code and examples * Custom checkbox code cleanups, sanding * - Persist new position/dimensions on the domain object when frames are moved/resized. - Bypass the selection of the layout when dragging a frame is finished to keep the frame selected. - Set the grid size to layoutGrid from domain object or use default if it's not specified. * Fix conflict * Implement resize and move for frames. Added stub for drag 'n drop. * Remove old layout view, was triggering View Switcher and massive confusion when viewing Layouts - TODO: add view provider for new Layout * Enable drag and drop * Changed example toggle-button - Now uses show/hide frame as toggle-button example; * Added pseudocode for handling drag/drop composition change * Add copyright notice * Layout frame and contained components styling - Hyperlinks, Hyperlink buttons, Summary Widgets now use `.u-links` which disables their pointer-events when editing; - Hyperlink buttons, Summary Widgets now expand to fill their containers in a Layout; - Markup and JS for Hyperlinks, Hyperlink buttons, Summary Widgets somewhat modded to use new classing, applied in legacy scss files; * Fix icon sizing error in BrowseBar * Edit and selecting styling for Layouts - WIP! * Edit and selecting styling for Layout frames - Color vars more standardized; - Hover and *-selected styles; * Getting vue-toolbar reverted back to latest - Merging this branch with vue-layout may cause conflicts; * - Implement drag ’n drop. - Set hasFrame to a default value if it’s not set on the configuration. - Emit an event to the parent wrapper component to update the ‘newDomainObject’ prop whenever the domain object is mutated in the display layout child component. * Revert emitting 'update:object' event to the parent. * New branch from topic-core-refactor to use as central point for common CSS work - Manually migrated changes from vue-toolbar, expect conflicts there and in vue-layout; * Manually update constants-snow from vue-toolbar branch * Update markup to use latest button classnames - c-menu-button > c-button--menu; - c-icon-button > c-click-icon; * Various from vue-conductor-style - Mods to input styling; - Input[] styles moved to _controls; - New/revised constants vals; * Resolve bizarre merge conflict when applying stash * Code cleanup * Alias and type-icon fixes - More robust approach to alias indicators; - Added alias indication to tree-item.vue; - TODO: wire up alias indication tree-item.vue; * Accessibility mods, convert elements to <button> - Better reset styles for htmlInputReset mixin to allow use of <button> without browser default styling; - Create button; - BrowseBar action buttons; - c-click-icons; - Removed Preview button from BrowseBar.vue; * Fix styles that were affected during resolving conflicts * Moved draggable into __label element rather than whole <li> * Change the priority to 100 to get the view working properly * Code cleanup * Remove angular layout * Display the object name in the frame header * Tweaks to __header in LayoutFrame - Name now does not overflow frame edge; - Layout strategy now in parity with similar elements in main view; * Remove test() * Add a type for display layout to make it appear in the Create menu. * Change the key type to 'layout' * Clean up code and hide toolbar * Enable toolbar, and revert changes in webpack config * Remove commented code * revert to the original code
2018-10-04 22:59:23 +00:00
'./displayLayout/plugin',
'./folderView/plugin',
Flexible Layout (#2201) * first cut of flexible layout * better drag handling * add drop targets to every row * enable drag and drop between columns and rows * enable persistance * add editing capability * chage rows to frames and columns to containers, switch draggable to whole frame object * Merge latest, resolve conflicts. Need to just apply these changes to Deep's branch and push * enhancements to drag targets * WIP in flexibleLayout, container.vue files - Refined classes and markup; - min-width changed to flex-basis; - Added toggle direction button; * Significant progress but still WIP - Refined classes and markup; - Layout toggling working; - Add Container working properly; - TODOs: fix sizing in empty container, fix bordering, more refinements; * add resizing of frames - still wip * Significant enhancements - Moved all CSS into flexibleLayout.vue; - Layout now improved for empty container and drop hints; - Proportional sizing now better for frames and containers; * Resize handle WIP * abstract splitter and logic into self contained component that will emit an event when mouse is moving * Resize handle WIP - Minor tweak to handle padding and hover; * add container resize todo persist * persist container resize * add frame header, fix column resize on last column * Refinements to resize-handle - Fixed sizing; - Transition on hover; - TODOs: needs is-dragging to maintain hover style while dragging; * fix drop hints showing after drop * move header * improve mouse move gesture * Added frame size indicator * add snapto functionality * Refined container and frame size indicators - Also added overflow handling to l-grid-view * improve resizing logic * add selection on frames * Various resizing-frames related - Fixed overflow - now frame widths can be collapsed to 5% minimum; - Sizing indicators refined, better positioning and layout; - Added grippy drag indicators to column heads; - TODOs: add column head cursors and hover effects, hide indicators when not in edit mode, handle nested layout and flex layouts while editing * Selecting and emtpy layout messaging - Better empty layout message; - Moved s-selected to proper element in c-fl-frame; * Drop-hint and sizing related various - Drop-hints for first placeholder container now display; - Drop-hints moved into drag-wrapper; * add delete frame * Editing various - Adjust Snow theme constants related to editing; - Changed delete message wording; * Updated icon and added description * add toggle and remove container to toolbar * miscellaneous cleanup * add container button to toolbar * improve toolbar * code cleanup in plugin.js * Various icons, toolbar separator - Copied in c-toolbar__separator and associated changes in _controls from Pegah's layout_alpha branch - may have conflicts later. - Added separator to FL toolbar; - Updated icons for grippy-ew, toolbar icons; * add check for empty containers" * logic to resize frames on drop * fix delete frame and persisting toolbar * Significant changes to edit / selection styling - Both Flexible and fixed Display Layouts addressed; - Both themes addressed; - Changed drop-hint icon to icon-plus; * add correct icons to frame header and fix toolbars showing up in wrong views * Moving and resizing various - Cursors; - Grippy added to frame resize-handle, WIP!; * add container reordering * add frame/no frame support to toolbar' * fix regression of resize handles showing after last frame in container * force selection of flexible-layout when editing is first clicked, to apply correct toolbar * make changes to simplify toolbar * Modified sizing algorithm slightly * make changes reviewer requested * fix regression that causes top drop hint to not show * remove unused variables and bind events to vue * unsub selection before destroy
2018-11-09 01:17:14 +00:00
'./flexibleLayout/plugin',
'./tabs/plugin',
'./LADTable/plugin'
], function (
_,
UTCTimeSystem,
GeneratorPlugin,
AutoflowPlugin,
2017-05-22 21:40:35 +00:00
TimeConductorPlugin,
ExampleImagery,
ImportExport,
Summary Widgets (#1668) * [ViewAPI] Update view API with more support Update view provider to allow metadata definitions and to play nicely with old style views. Spec out some updates to ViewProviders and ViewRegistry to support further use of views. * [Summary Widgets] Add summary widgets Add a summary widget domain object type Implement basic interface and style configuration for rules * [Summary Widgets] Implementation for Rules Add rule configuration inputs, populated with domain objects, metadata, and appropriate operations for a given type * [Inputs] Add implementation for icon palette Issue #1644 Wire up icon palette inputs to widget, and make icon class a persistable property of a rule * [Summary Widgets] Implementation for conditions Support configuring and persisting multiple conditions per rule Issue #1644 * [Summary Widgets] Generate Rule Descriptions Dynamically update the rule description based on the current state of the rules' conditions * [Summary Widgets] 'Any/All Telemetry' in conditions Add UI and implemenetion for evaluating any telemetry or all telemetry in an individual condition. Add related unit tests. * [Summary Widgets] Rule Reorders Implement drag and drop rule reorders using the native HTML5 API * [Summary Widget] Test Data Issue #1644 Add user-configurable mock data to test rules. Modify evaluator to gracefully handle uninitialzed test data points. * [Summary Widgets] Edit Mode Enable edit mode for summary widgets, and make configuration interface visible only when the user has entered edit mode Fix collision between widget palettes and other interfaces where palettes would permanently hide other menus * [Summary Widgets] UI for scripted conditions * [Sumamry Widgets] Destroy Implement destroy * [Summary Widgets] Cleanup Remove unnecessary persist calls in Rule.js. Remove generateDescription from refreshConditions and add it after refreshConditions to initCondition and deleteCondition Throw error when unsupported callback is passed in condition.js, return summary widget instance in plugin.js instead of wrapping in new object for view Add request properties to telemetry request for providers that support it Remove check for editing when persisting, in SummaryWidget.js
2017-11-28 21:23:15 +00:00
SummaryWidget,
URLIndicatorPlugin,
TelemetryMean,
PlotPlugin,
TelemetryTablePlugin,
StaticRootPlugin,
Notebook,
Reimplementation of Display Layout in Vue (#2185) * Saving work * Fix conflict * Position the panels by setting the style * Put the div back with height set to 100% in ObjectView. Add markup for drag handles. * Use default position and dimensions if the layout panel is missing those values. Set s-status-editing on the main div to get the drag handles appear for now. * Display Layout and frames major improvements - Moved Toolbar out of Layout.vue and into DisplayLayout.vue; - Styles for object view, Layout, Frame, etc. - Major refactor of markup for frame; - Added abs() mixin; - Styles for is-editing done; - Styles for - TODO: styles for selectable, moveable, etc. * Implement drill in gesture. * Hide the background grid when a frame is drilled in * Edit styling and toolbar WIP - c-search styles moved mostly into mixin; - New .c-labeled-input class; - Browser overrides for number-type input spinners in webkit; * Toolbar WIP - Custom wrapped number input added; - Toolbar buttons WIP; * New toolbar buttons WIP * Define a computed property for the css class object. * Frame edit handles markup and styling * Toolbar, editing and selection style refinements - Moved toolbar back into Layout.vue; - Hard-coded 'is-editing' onto __pane-main for now, removed from DisplayLayout.vue; - Styles for frame in LayoutFrame.vue: -- editing default (dotted border) -- editing .s-selected -- .s-drilled-in (renamed .is-drilled-in) * Refactoring button classes - Lots of stuff broken right now; - TODO: lots of renaming (c-menu-button, c-icon-button, etc.); - Removed import of _controls in search.vue; * Fixes for selection on nested selected elements * Fix conflict * Significant refactoring of button and click-icon classes - Markup and CSS updated; - Toolbar in good shape, prior to merge of vue-layout; * Fix issues with relative font-sizing * Add color palette markup and CSS - Also added Layers menu example; * Font, font-size glyphs and size menu, and more - Added art for font glyph and renamed from .icon-T; - Added new glyph for font-size; - Fixed font-sizing in controls; - Added font-size menu; - Re-org'd toolbar items; * Styling tweak for c-labeled-input - Code cleanup as well; * Fixes for toolbar toggleMenus and labeledNumberInput * Implement resize and move for frames. Added stub for drag 'n drop. * Add custom checkbox control. - Also, code cleanup. * Add toggleButton component - Code and examples * Custom checkbox code cleanups, sanding * - Persist new position/dimensions on the domain object when frames are moved/resized. - Bypass the selection of the layout when dragging a frame is finished to keep the frame selected. - Set the grid size to layoutGrid from domain object or use default if it's not specified. * Fix conflict * Implement resize and move for frames. Added stub for drag 'n drop. * Remove old layout view, was triggering View Switcher and massive confusion when viewing Layouts - TODO: add view provider for new Layout * Enable drag and drop * Changed example toggle-button - Now uses show/hide frame as toggle-button example; * Added pseudocode for handling drag/drop composition change * Add copyright notice * Layout frame and contained components styling - Hyperlinks, Hyperlink buttons, Summary Widgets now use `.u-links` which disables their pointer-events when editing; - Hyperlink buttons, Summary Widgets now expand to fill their containers in a Layout; - Markup and JS for Hyperlinks, Hyperlink buttons, Summary Widgets somewhat modded to use new classing, applied in legacy scss files; * Fix icon sizing error in BrowseBar * Edit and selecting styling for Layouts - WIP! * Edit and selecting styling for Layout frames - Color vars more standardized; - Hover and *-selected styles; * Getting vue-toolbar reverted back to latest - Merging this branch with vue-layout may cause conflicts; * - Implement drag ’n drop. - Set hasFrame to a default value if it’s not set on the configuration. - Emit an event to the parent wrapper component to update the ‘newDomainObject’ prop whenever the domain object is mutated in the display layout child component. * Revert emitting 'update:object' event to the parent. * New branch from topic-core-refactor to use as central point for common CSS work - Manually migrated changes from vue-toolbar, expect conflicts there and in vue-layout; * Manually update constants-snow from vue-toolbar branch * Update markup to use latest button classnames - c-menu-button > c-button--menu; - c-icon-button > c-click-icon; * Various from vue-conductor-style - Mods to input styling; - Input[] styles moved to _controls; - New/revised constants vals; * Resolve bizarre merge conflict when applying stash * Code cleanup * Alias and type-icon fixes - More robust approach to alias indicators; - Added alias indication to tree-item.vue; - TODO: wire up alias indication tree-item.vue; * Accessibility mods, convert elements to <button> - Better reset styles for htmlInputReset mixin to allow use of <button> without browser default styling; - Create button; - BrowseBar action buttons; - c-click-icons; - Removed Preview button from BrowseBar.vue; * Fix styles that were affected during resolving conflicts * Moved draggable into __label element rather than whole <li> * Change the priority to 100 to get the view working properly * Code cleanup * Remove angular layout * Display the object name in the frame header * Tweaks to __header in LayoutFrame - Name now does not overflow frame edge; - Layout strategy now in parity with similar elements in main view; * Remove test() * Add a type for display layout to make it appear in the Create menu. * Change the key type to 'layout' * Clean up code and hide toolbar * Enable toolbar, and revert changes in webpack config * Remove commented code * revert to the original code
2018-10-04 22:59:23 +00:00
DisplayLayoutPlugin,
FolderView,
Flexible Layout (#2201) * first cut of flexible layout * better drag handling * add drop targets to every row * enable drag and drop between columns and rows * enable persistance * add editing capability * chage rows to frames and columns to containers, switch draggable to whole frame object * Merge latest, resolve conflicts. Need to just apply these changes to Deep's branch and push * enhancements to drag targets * WIP in flexibleLayout, container.vue files - Refined classes and markup; - min-width changed to flex-basis; - Added toggle direction button; * Significant progress but still WIP - Refined classes and markup; - Layout toggling working; - Add Container working properly; - TODOs: fix sizing in empty container, fix bordering, more refinements; * add resizing of frames - still wip * Significant enhancements - Moved all CSS into flexibleLayout.vue; - Layout now improved for empty container and drop hints; - Proportional sizing now better for frames and containers; * Resize handle WIP * abstract splitter and logic into self contained component that will emit an event when mouse is moving * Resize handle WIP - Minor tweak to handle padding and hover; * add container resize todo persist * persist container resize * add frame header, fix column resize on last column * Refinements to resize-handle - Fixed sizing; - Transition on hover; - TODOs: needs is-dragging to maintain hover style while dragging; * fix drop hints showing after drop * move header * improve mouse move gesture * Added frame size indicator * add snapto functionality * Refined container and frame size indicators - Also added overflow handling to l-grid-view * improve resizing logic * add selection on frames * Various resizing-frames related - Fixed overflow - now frame widths can be collapsed to 5% minimum; - Sizing indicators refined, better positioning and layout; - Added grippy drag indicators to column heads; - TODOs: add column head cursors and hover effects, hide indicators when not in edit mode, handle nested layout and flex layouts while editing * Selecting and emtpy layout messaging - Better empty layout message; - Moved s-selected to proper element in c-fl-frame; * Drop-hint and sizing related various - Drop-hints for first placeholder container now display; - Drop-hints moved into drag-wrapper; * add delete frame * Editing various - Adjust Snow theme constants related to editing; - Changed delete message wording; * Updated icon and added description * add toggle and remove container to toolbar * miscellaneous cleanup * add container button to toolbar * improve toolbar * code cleanup in plugin.js * Various icons, toolbar separator - Copied in c-toolbar__separator and associated changes in _controls from Pegah's layout_alpha branch - may have conflicts later. - Added separator to FL toolbar; - Updated icons for grippy-ew, toolbar icons; * add check for empty containers" * logic to resize frames on drop * fix delete frame and persisting toolbar * Significant changes to edit / selection styling - Both Flexible and fixed Display Layouts addressed; - Both themes addressed; - Changed drop-hint icon to icon-plus; * add correct icons to frame header and fix toolbars showing up in wrong views * Moving and resizing various - Cursors; - Grippy added to frame resize-handle, WIP!; * add container reordering * add frame/no frame support to toolbar' * fix regression of resize handles showing after last frame in container * force selection of flexible-layout when editing is first clicked, to apply correct toolbar * make changes to simplify toolbar * Modified sizing algorithm slightly * make changes reviewer requested * fix regression that causes top drop hint to not show * remove unused variables and bind events to vue * unsub selection before destroy
2018-11-09 01:17:14 +00:00
FlexibleLayout,
Tabs,
LADTable
) {
var bundleMap = {
LocalStorage: 'platform/persistence/local',
MyItems: 'platform/features/my-items'
};
2017-01-13 19:34:05 +00:00
var plugins = _.mapValues(bundleMap, function (bundleName, pluginName) {
return function pluginConstructor() {
return function (openmct) {
openmct.legacyRegistry.enable(bundleName);
};
};
2017-01-12 23:17:48 +00:00
});
plugins.Snow = function () {
return function install(openmct) {
openmct.legacyExtension('constants', {
key: "THEME",
value: "snow"
});
import('snow' /* webpackChunkName: "theme-snow" */);
};
};
plugins.Espresso = function () {
return function install(openmct) {
openmct.legacyExtension('constants', {
key: "THEME",
value: "espresso"
});
import('espresso' /* webpackChunkName: "theme-espresso" */);
};
};
plugins.UTCTimeSystem = UTCTimeSystem;
plugins.ImportExport = ImportExport;
plugins.StaticRootPlugin = StaticRootPlugin;
/**
* A tabular view showing the latest values of multiple telemetry points at
* once. Formatted so that labels and values are aligned.
*
* @param {Object} [options] Optional settings to apply to the autoflow
* tabular view. Currently supports one option, 'type'.
* @param {string} [options.type] The key of an object type to apply this view
* to exclusively.
*/
plugins.AutoflowView = AutoflowPlugin;
plugins.Conductor = TimeConductorPlugin.default;
plugins.CouchDB = function (url) {
return function (openmct) {
if (url) {
var bundleName = "config/couch";
openmct.legacyRegistry.register(bundleName, {
"extensions": {
"constants": [
{
"key": "COUCHDB_PATH",
"value": url,
"priority": "mandatory"
}
]
}
});
openmct.legacyRegistry.enable(bundleName);
}
2017-01-12 23:07:07 +00:00
openmct.legacyRegistry.enable(bundleMap.CouchDB);
};
};
plugins.Elasticsearch = function (url) {
return function (openmct) {
if (url) {
var bundleName = "config/elastic";
openmct.legacyRegistry.register(bundleName, {
"extensions": {
"constants": [
{
"key": "ELASTIC_ROOT",
"value": url,
"priority": "mandatory"
}
]
}
});
openmct.legacyRegistry.enable(bundleName);
}
2017-01-12 23:07:07 +00:00
openmct.legacyRegistry.enable(bundleMap.Elasticsearch);
};
};
2017-02-22 02:33:51 +00:00
plugins.Generator = function () {
return GeneratorPlugin;
};
2017-05-22 21:40:35 +00:00
plugins.ExampleImagery = ExampleImagery;
plugins.Plot = PlotPlugin;
plugins.TelemetryTable = TelemetryTablePlugin;
Summary Widgets (#1668) * [ViewAPI] Update view API with more support Update view provider to allow metadata definitions and to play nicely with old style views. Spec out some updates to ViewProviders and ViewRegistry to support further use of views. * [Summary Widgets] Add summary widgets Add a summary widget domain object type Implement basic interface and style configuration for rules * [Summary Widgets] Implementation for Rules Add rule configuration inputs, populated with domain objects, metadata, and appropriate operations for a given type * [Inputs] Add implementation for icon palette Issue #1644 Wire up icon palette inputs to widget, and make icon class a persistable property of a rule * [Summary Widgets] Implementation for conditions Support configuring and persisting multiple conditions per rule Issue #1644 * [Summary Widgets] Generate Rule Descriptions Dynamically update the rule description based on the current state of the rules' conditions * [Summary Widgets] 'Any/All Telemetry' in conditions Add UI and implemenetion for evaluating any telemetry or all telemetry in an individual condition. Add related unit tests. * [Summary Widgets] Rule Reorders Implement drag and drop rule reorders using the native HTML5 API * [Summary Widget] Test Data Issue #1644 Add user-configurable mock data to test rules. Modify evaluator to gracefully handle uninitialzed test data points. * [Summary Widgets] Edit Mode Enable edit mode for summary widgets, and make configuration interface visible only when the user has entered edit mode Fix collision between widget palettes and other interfaces where palettes would permanently hide other menus * [Summary Widgets] UI for scripted conditions * [Sumamry Widgets] Destroy Implement destroy * [Summary Widgets] Cleanup Remove unnecessary persist calls in Rule.js. Remove generateDescription from refreshConditions and add it after refreshConditions to initCondition and deleteCondition Throw error when unsupported callback is passed in condition.js, return summary widget instance in plugin.js instead of wrapping in new object for view Add request properties to telemetry request for providers that support it Remove check for editing when persisting, in SummaryWidget.js
2017-11-28 21:23:15 +00:00
plugins.SummaryWidget = SummaryWidget;
plugins.TelemetryMean = TelemetryMean;
Indicators api (#1837) * [API] Added Indicators API * [Indicators] Converted Follow Indicator to new Indicators API * [Indicators] Converted URL Indicator to new Indicators API * [Indicators] Changes to some legacy indicators for compatibility with new Indicators API * [Indicators] Addressed code review items from https://github.com/nasa/openmct/pull/1837 * Updated tests for URL Indicator * Adding Indicator API spec * Address linting issues * Switched to direct DOM manipulation rather than template compilation to avoid an unnecessary extra holder element * Updated documentation to reflect changes to API * Indicators api styling (#2076) Updated styling for Indicators * Update API TOC * Fix color of items w-mct-example areas of Style Guide Fixes #1837 * Status class refactoring and cleanups Fixes #1837 - Significant cleanups and name refactoring to allow more concise selector definitions, with changes in js, html and scss files; - Updates in Style Guide > Status page, with some content reorganization and clarification; * Corrected out of date API * de-zeptoed Indicator API test spec * Remove promise from URLIndicator * Separated legacy indicators support * Updated Indicator specs to Jasmine 3 * Fixed checkstyle and lint issues * Moved legacy indicators support to adapter folder * Various fixes for Indicators Fixes #1837 - Added SASS constants for Indicator colors; - Removed commented code; - Removed unused indicator classes from _messages.scss - Fixed missing s-status-on class; * Significant revisions to Style Guide Indicators content Fixes #1837 - Better documentation including recommendations; - Better and more concrete examples; * Style Guide example tweaks Fixes #1837 * Refinement to Style Guide Status and Limits content Fixes #1837 - More detail and clarification on Status and Limits; * Cleanup code Fixes #1837 - Remove commented styles; - Line return refinements;
2018-07-16 22:21:38 +00:00
plugins.URLIndicator = URLIndicatorPlugin;
plugins.Notebook = Notebook;
Reimplementation of Display Layout in Vue (#2185) * Saving work * Fix conflict * Position the panels by setting the style * Put the div back with height set to 100% in ObjectView. Add markup for drag handles. * Use default position and dimensions if the layout panel is missing those values. Set s-status-editing on the main div to get the drag handles appear for now. * Display Layout and frames major improvements - Moved Toolbar out of Layout.vue and into DisplayLayout.vue; - Styles for object view, Layout, Frame, etc. - Major refactor of markup for frame; - Added abs() mixin; - Styles for is-editing done; - Styles for - TODO: styles for selectable, moveable, etc. * Implement drill in gesture. * Hide the background grid when a frame is drilled in * Edit styling and toolbar WIP - c-search styles moved mostly into mixin; - New .c-labeled-input class; - Browser overrides for number-type input spinners in webkit; * Toolbar WIP - Custom wrapped number input added; - Toolbar buttons WIP; * New toolbar buttons WIP * Define a computed property for the css class object. * Frame edit handles markup and styling * Toolbar, editing and selection style refinements - Moved toolbar back into Layout.vue; - Hard-coded 'is-editing' onto __pane-main for now, removed from DisplayLayout.vue; - Styles for frame in LayoutFrame.vue: -- editing default (dotted border) -- editing .s-selected -- .s-drilled-in (renamed .is-drilled-in) * Refactoring button classes - Lots of stuff broken right now; - TODO: lots of renaming (c-menu-button, c-icon-button, etc.); - Removed import of _controls in search.vue; * Fixes for selection on nested selected elements * Fix conflict * Significant refactoring of button and click-icon classes - Markup and CSS updated; - Toolbar in good shape, prior to merge of vue-layout; * Fix issues with relative font-sizing * Add color palette markup and CSS - Also added Layers menu example; * Font, font-size glyphs and size menu, and more - Added art for font glyph and renamed from .icon-T; - Added new glyph for font-size; - Fixed font-sizing in controls; - Added font-size menu; - Re-org'd toolbar items; * Styling tweak for c-labeled-input - Code cleanup as well; * Fixes for toolbar toggleMenus and labeledNumberInput * Implement resize and move for frames. Added stub for drag 'n drop. * Add custom checkbox control. - Also, code cleanup. * Add toggleButton component - Code and examples * Custom checkbox code cleanups, sanding * - Persist new position/dimensions on the domain object when frames are moved/resized. - Bypass the selection of the layout when dragging a frame is finished to keep the frame selected. - Set the grid size to layoutGrid from domain object or use default if it's not specified. * Fix conflict * Implement resize and move for frames. Added stub for drag 'n drop. * Remove old layout view, was triggering View Switcher and massive confusion when viewing Layouts - TODO: add view provider for new Layout * Enable drag and drop * Changed example toggle-button - Now uses show/hide frame as toggle-button example; * Added pseudocode for handling drag/drop composition change * Add copyright notice * Layout frame and contained components styling - Hyperlinks, Hyperlink buttons, Summary Widgets now use `.u-links` which disables their pointer-events when editing; - Hyperlink buttons, Summary Widgets now expand to fill their containers in a Layout; - Markup and JS for Hyperlinks, Hyperlink buttons, Summary Widgets somewhat modded to use new classing, applied in legacy scss files; * Fix icon sizing error in BrowseBar * Edit and selecting styling for Layouts - WIP! * Edit and selecting styling for Layout frames - Color vars more standardized; - Hover and *-selected styles; * Getting vue-toolbar reverted back to latest - Merging this branch with vue-layout may cause conflicts; * - Implement drag ’n drop. - Set hasFrame to a default value if it’s not set on the configuration. - Emit an event to the parent wrapper component to update the ‘newDomainObject’ prop whenever the domain object is mutated in the display layout child component. * Revert emitting 'update:object' event to the parent. * New branch from topic-core-refactor to use as central point for common CSS work - Manually migrated changes from vue-toolbar, expect conflicts there and in vue-layout; * Manually update constants-snow from vue-toolbar branch * Update markup to use latest button classnames - c-menu-button > c-button--menu; - c-icon-button > c-click-icon; * Various from vue-conductor-style - Mods to input styling; - Input[] styles moved to _controls; - New/revised constants vals; * Resolve bizarre merge conflict when applying stash * Code cleanup * Alias and type-icon fixes - More robust approach to alias indicators; - Added alias indication to tree-item.vue; - TODO: wire up alias indication tree-item.vue; * Accessibility mods, convert elements to <button> - Better reset styles for htmlInputReset mixin to allow use of <button> without browser default styling; - Create button; - BrowseBar action buttons; - c-click-icons; - Removed Preview button from BrowseBar.vue; * Fix styles that were affected during resolving conflicts * Moved draggable into __label element rather than whole <li> * Change the priority to 100 to get the view working properly * Code cleanup * Remove angular layout * Display the object name in the frame header * Tweaks to __header in LayoutFrame - Name now does not overflow frame edge; - Layout strategy now in parity with similar elements in main view; * Remove test() * Add a type for display layout to make it appear in the Create menu. * Change the key type to 'layout' * Clean up code and hide toolbar * Enable toolbar, and revert changes in webpack config * Remove commented code * revert to the original code
2018-10-04 22:59:23 +00:00
plugins.DisplayLayout = DisplayLayoutPlugin.default;
plugins.FolderView = FolderView;
plugins.Tabs = Tabs;
Flexible Layout (#2201) * first cut of flexible layout * better drag handling * add drop targets to every row * enable drag and drop between columns and rows * enable persistance * add editing capability * chage rows to frames and columns to containers, switch draggable to whole frame object * Merge latest, resolve conflicts. Need to just apply these changes to Deep's branch and push * enhancements to drag targets * WIP in flexibleLayout, container.vue files - Refined classes and markup; - min-width changed to flex-basis; - Added toggle direction button; * Significant progress but still WIP - Refined classes and markup; - Layout toggling working; - Add Container working properly; - TODOs: fix sizing in empty container, fix bordering, more refinements; * add resizing of frames - still wip * Significant enhancements - Moved all CSS into flexibleLayout.vue; - Layout now improved for empty container and drop hints; - Proportional sizing now better for frames and containers; * Resize handle WIP * abstract splitter and logic into self contained component that will emit an event when mouse is moving * Resize handle WIP - Minor tweak to handle padding and hover; * add container resize todo persist * persist container resize * add frame header, fix column resize on last column * Refinements to resize-handle - Fixed sizing; - Transition on hover; - TODOs: needs is-dragging to maintain hover style while dragging; * fix drop hints showing after drop * move header * improve mouse move gesture * Added frame size indicator * add snapto functionality * Refined container and frame size indicators - Also added overflow handling to l-grid-view * improve resizing logic * add selection on frames * Various resizing-frames related - Fixed overflow - now frame widths can be collapsed to 5% minimum; - Sizing indicators refined, better positioning and layout; - Added grippy drag indicators to column heads; - TODOs: add column head cursors and hover effects, hide indicators when not in edit mode, handle nested layout and flex layouts while editing * Selecting and emtpy layout messaging - Better empty layout message; - Moved s-selected to proper element in c-fl-frame; * Drop-hint and sizing related various - Drop-hints for first placeholder container now display; - Drop-hints moved into drag-wrapper; * add delete frame * Editing various - Adjust Snow theme constants related to editing; - Changed delete message wording; * Updated icon and added description * add toggle and remove container to toolbar * miscellaneous cleanup * add container button to toolbar * improve toolbar * code cleanup in plugin.js * Various icons, toolbar separator - Copied in c-toolbar__separator and associated changes in _controls from Pegah's layout_alpha branch - may have conflicts later. - Added separator to FL toolbar; - Updated icons for grippy-ew, toolbar icons; * add check for empty containers" * logic to resize frames on drop * fix delete frame and persisting toolbar * Significant changes to edit / selection styling - Both Flexible and fixed Display Layouts addressed; - Both themes addressed; - Changed drop-hint icon to icon-plus; * add correct icons to frame header and fix toolbars showing up in wrong views * Moving and resizing various - Cursors; - Grippy added to frame resize-handle, WIP!; * add container reordering * add frame/no frame support to toolbar' * fix regression of resize handles showing after last frame in container * force selection of flexible-layout when editing is first clicked, to apply correct toolbar * make changes to simplify toolbar * Modified sizing algorithm slightly * make changes reviewer requested * fix regression that causes top drop hint to not show * remove unused variables and bind events to vue * unsub selection before destroy
2018-11-09 01:17:14 +00:00
plugins.FlexibleLayout = FlexibleLayout;
plugins.LADTable = LADTable;
return plugins;
});