Compare commits
	
		
			6 Commits
		
	
	
		
			log-plots-
			...
			remove-man
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 0b93d5b286 | ||
|   | f0884bbce0 | ||
|   | 22e7d9c9d6 | ||
|   | fba36ac762 | ||
|   | 43a6786b72 | ||
|   | bcb500394b | 
| @@ -40,6 +40,12 @@ export default { | ||||
|             default() { | ||||
|                 return {}; | ||||
|             } | ||||
|         }, | ||||
|         objectPath: { | ||||
|             type: Array, | ||||
|             default() { | ||||
|                 return null; | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|     data() { | ||||
| @@ -97,17 +103,23 @@ export default { | ||||
|             this.showMenu = false; | ||||
|         }, | ||||
|         snapshot(notebook) { | ||||
|             let element = document.getElementsByClassName("l-shell__main-container")[0]; | ||||
|             const bounds = this.openmct.time.bounds(); | ||||
|             const objectPath = this.openmct.router.path; | ||||
|             const snapshotMeta = { | ||||
|                 bounds, | ||||
|                 link: window.location.href, | ||||
|                 objectPath, | ||||
|                 openmct: this.openmct | ||||
|             }; | ||||
|             this.hideMenu(); | ||||
|  | ||||
|             this.notebookSnapshot.capture(snapshotMeta, notebook.type, element); | ||||
|             this.$nextTick(() => { | ||||
|                 const element = document.querySelector('.c-overlay__contents') | ||||
|                     || document.getElementsByClassName('l-shell__main-container')[0]; | ||||
|  | ||||
|                 const bounds = this.openmct.time.bounds(); | ||||
|                 const objectPath = this.objectPath || this.openmct.router.path; | ||||
|                 const snapshotMeta = { | ||||
|                     bounds, | ||||
|                     link: window.location.href, | ||||
|                     objectPath, | ||||
|                     openmct: this.openmct | ||||
|                 }; | ||||
|  | ||||
|                 this.notebookSnapshot.capture(snapshotMeta, notebook.type, element); | ||||
|             }); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -21,7 +21,7 @@ | ||||
| --> | ||||
| <div ng-controller="StackedPlotController as stackedPlot" | ||||
|       class="c-plot c-plot--stacked holder holder-plot has-control-bar"> | ||||
|     <div class="l-control-bar" ng-show="!stackedPlot.hideExportButtons"> | ||||
|     <div class="c-control-bar" ng-show="!stackedPlot.hideExportButtons"> | ||||
|        <span class="c-button-set c-button-set--strip-h"> | ||||
|           <button class="c-button icon-download" | ||||
|              ng-click="stackedPlot.exportPNG()" | ||||
|   | ||||
| @@ -81,7 +81,8 @@ define( | ||||
|                         clonedElement.classList.add(className); | ||||
|                     } | ||||
|                     element.id = oldId; | ||||
|                 } | ||||
|                 }, | ||||
|                 removeContainer: true // Set to false to debug what html2canvas renders | ||||
|             }).then(function (canvas) { | ||||
|                 dialog.dismiss(); | ||||
|                 return new Promise(function (resolve, reject) { | ||||
|   | ||||
| @@ -228,7 +228,6 @@ define([ | ||||
|  | ||||
|     PlotController.prototype.stopLoading = function () { | ||||
|         this.$scope.pending -= 1; | ||||
|         this.$scope.$digest(); | ||||
|     }; | ||||
|  | ||||
|     /** | ||||
|   | ||||
| @@ -165,7 +165,16 @@ | ||||
| /******************************* LEGACY */ | ||||
| .s-status-taking-snapshot, | ||||
| .overlay.snapshot { | ||||
|     // Handle overflow-y issues with tables and html2canvas | ||||
|     // Replaces .l-sticky-headers .l-tabular-body { overflow: auto; } | ||||
|     .c-table__body-w { overflow: auto; } | ||||
|     .c-table { | ||||
|         &__body-w { | ||||
|             overflow: auto; // Handle overflow-y issues with tables and html2canvas | ||||
|         } | ||||
|  | ||||
|         &-control-bar { | ||||
|             display: none; | ||||
|             + * { | ||||
|                 margin-top: 0 !important; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -565,6 +565,20 @@ select { | ||||
|         } | ||||
|     } | ||||
| } | ||||
| /******************************************************** CONTROL BARS */ | ||||
| .c-control-bar { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|  | ||||
|     > * + * { | ||||
|         margin-left: $interiorMarginSm; | ||||
|     } | ||||
|  | ||||
|     &__label { | ||||
|         display: inline-block; | ||||
|         white-space: nowrap; | ||||
|     } | ||||
| } | ||||
|  | ||||
| /******************************************************** PALETTES */ | ||||
| .c-palette { | ||||
|   | ||||
| @@ -40,28 +40,58 @@ mct-plot { | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| .c-plot, | ||||
| .gl-plot { | ||||
|     .s-status-taking-snapshot & { | ||||
|         .c-control-bar { | ||||
|             display: none; | ||||
|         } | ||||
|         .gl-plot-y-label__select { | ||||
|             display: none; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| .c-plot { | ||||
|     $p: $mainViewPad; | ||||
|     position: absolute; | ||||
|     top: $p; right: $p; bottom: $p; left: $p; | ||||
|     //$p: $mainViewPad; | ||||
|     @include abs($mainViewPad); | ||||
|     //position: absolute; | ||||
|     //top: $p; right: $p; bottom: $p; left: $p; | ||||
|  | ||||
|     display: flex; | ||||
|     flex-direction: column; | ||||
|  | ||||
|     > * + * { | ||||
|         margin-top: $interiorMargin; | ||||
|     } | ||||
|  | ||||
|     .l-control-bar { | ||||
|         flex: 0 0 auto; | ||||
|     } | ||||
|  | ||||
|     .l-view-section { | ||||
|         display: flex; | ||||
|         flex: 1 1 auto; | ||||
|         flex-direction: column; | ||||
|     } | ||||
|  | ||||
|     &--stacked { | ||||
|         .l-view-section { | ||||
|             //  Make this a flex container | ||||
|             display: flex; | ||||
|             flex-flow: column nowrap; | ||||
|             .gl-plot.child-frame { | ||||
|                 mct-plot { | ||||
|                     display: flex; | ||||
|                     flex: 1 1 auto; | ||||
|                     height: 100%; | ||||
|                     position: relative; | ||||
|                 } | ||||
|                 flex: 1 1 auto; | ||||
|                 &:not(:first-child) { | ||||
|                     margin-top: $interiorMargin; | ||||
|         .child-frame { | ||||
|             .has-control-bar { | ||||
|                 .c-control-bar { | ||||
|                     // Hides buttons per plot element in a stacked plot | ||||
|                     display: none; | ||||
|                 } | ||||
|             } | ||||
|  | ||||
|             mct-plot { | ||||
|                 display: flex; | ||||
|                 flex: 1 1 auto; | ||||
|                 height: 100%; | ||||
|                 position: relative; | ||||
|             } | ||||
|             flex: 1 1 auto; | ||||
|         } | ||||
|  | ||||
|         .s-status-timeconductor-unsynced .holder-plot { | ||||
| @@ -70,7 +100,6 @@ mct-plot { | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
| } | ||||
|  | ||||
|  | ||||
| @@ -186,7 +215,7 @@ mct-plot { | ||||
|             left: 0; top: 0; right: auto; bottom: 0; | ||||
|             padding-left: 5px; | ||||
|             text-orientation: mixed; | ||||
|             overflow: hidden; | ||||
|             //overflow: hidden; | ||||
|             writing-mode: vertical-lr; | ||||
|             &:before { | ||||
|                 // Icon denoting configurability | ||||
| @@ -339,11 +368,11 @@ mct-plot { | ||||
|     z-index: -10; | ||||
|  | ||||
|     .l-view-section { | ||||
|         $m: $interiorMargin; | ||||
|         top: $m !important; | ||||
|         right: $m; | ||||
|         bottom: $m; | ||||
|         left: $m; | ||||
|         //$m: $interiorMargin; | ||||
|         //top: $m !important; | ||||
|         //right: $m; | ||||
|         //bottom: $m; | ||||
|         //left: $m; | ||||
|  | ||||
|         .s-status-timeconductor-unsynced .holder-plot { | ||||
|             .t-object-alert.t-alert-unsynced { | ||||
|   | ||||
| @@ -19,53 +19,6 @@ | ||||
|  * this source code distribution or the Licensing information page available | ||||
|  * at runtime from the About dialog for additional information. | ||||
|  *****************************************************************************/ | ||||
| /******************************************************************* VIEWS */ | ||||
| // From _views.scss | ||||
| // Legacy overlay and stacked plots depend on this for now | ||||
| // Styles for sub-dividing views generically | ||||
| .l-control-bar { | ||||
|     // Element that can be placed above l-view-section, holds controls, buttons, etc. | ||||
|     height: $controlBarH; | ||||
| } | ||||
|  | ||||
| .c-control-bar { | ||||
|     display: flex; | ||||
|     align-items: center; | ||||
|  | ||||
|     > * + * { | ||||
|         margin-left: $interiorMarginSm; | ||||
|     } | ||||
|  | ||||
|     &__label { | ||||
|         display: inline-block; | ||||
|         white-space: nowrap; | ||||
|     } | ||||
| } | ||||
|  | ||||
| .l-view-section { | ||||
|     @include abs(); | ||||
|     overflow: auto; | ||||
| } | ||||
|  | ||||
| .has-control-bar { | ||||
|     .l-view-section { | ||||
|         top: $controlBarH + $interiorMargin; | ||||
|     } | ||||
| } | ||||
|  | ||||
| .child-frame { | ||||
|     .has-control-bar { | ||||
|         .l-control-bar, | ||||
|         .c-control-bar { | ||||
|             // Hides buttons per plot element in a stacked plot | ||||
|             display: none; | ||||
|         } | ||||
|         .l-view-section { | ||||
|             top: 0; | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| /*********************************************************************** CLOCKS AND TIMERS */ | ||||
| .c-clock, | ||||
| .c-timer { | ||||
|   | ||||
| @@ -388,7 +388,21 @@ | ||||
| .s-status-taking-snapshot, | ||||
| .overlay.snapshot { | ||||
|     // Handle overflow-y issues with tables and html2canvas | ||||
|     background: $colorBodyBg; // Prevent html2canvas from using white background | ||||
|     color: $colorBodyFg; | ||||
|     padding: $interiorMarginSm !important; // Prevents items from going right to the edge of the image | ||||
|  | ||||
|     .l-sticky-headers .l-tabular-body { overflow: auto; } | ||||
|     .l-browse-bar { | ||||
|         display: none; // Suppress browse-bar when snapshotting from view-large overlay | ||||
|         + * { | ||||
|             margin-top: 0 !important; // Remove margin from any following elements | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     * { | ||||
|         box-shadow: none !important; // Prevent html2canvas problems with box-shadow | ||||
|     } | ||||
| } | ||||
|  | ||||
| .c-notebook-snapshot { | ||||
|   | ||||
| @@ -59,6 +59,8 @@ | ||||
| <script> | ||||
| import ObjectView from './ObjectView.vue' | ||||
| import ContextMenuDropDown from './contextMenuDropDown.vue'; | ||||
| import PreviewHeader from '@/ui/preview/preview-header.vue'; | ||||
| import Vue from 'vue'; | ||||
|  | ||||
| const SIMPLE_CONTENT_TYPES = [ | ||||
|     'clock', | ||||
| @@ -116,13 +118,41 @@ export default { | ||||
|                 childElement = parentElement.children[0]; | ||||
|  | ||||
|             this.openmct.overlays.overlay({ | ||||
|                 element: childElement, | ||||
|                 element: this.getOverlayElement(childElement), | ||||
|                 size: 'large', | ||||
|                 onDestroy() { | ||||
|                     parentElement.append(childElement); | ||||
|                 } | ||||
|             }); | ||||
|         }, | ||||
|         getOverlayElement(childElement) { | ||||
|             const fragment = new DocumentFragment(); | ||||
|             const header = this.getPreviewHeader(); | ||||
|             fragment.append(header); | ||||
|             fragment.append(childElement); | ||||
|  | ||||
|             return fragment; | ||||
|         }, | ||||
|         getPreviewHeader() { | ||||
|             const domainObject = this.objectPath[0]; | ||||
|             const preview = new Vue({ | ||||
|                 components: { | ||||
|                     PreviewHeader | ||||
|                 }, | ||||
|                 provide: { | ||||
|                     openmct: this.openmct, | ||||
|                     objectPath: this.objectPath | ||||
|                 }, | ||||
|                 data() { | ||||
|                     return { | ||||
|                         domainObject | ||||
|                     } | ||||
|                 }, | ||||
|                 template: '<PreviewHeader :domainObject="domainObject" :hideViewSwitcher="true" :showNotebookMenuSwitcher="true"></PreviewHeader>' | ||||
|             }); | ||||
|  | ||||
|             return preview.$mount().$el; | ||||
|         }, | ||||
|         getSelectionContext() { | ||||
|             return this.$refs.objectView.getSelectionContext(); | ||||
|         } | ||||
|   | ||||
| @@ -23,9 +23,12 @@ | ||||
|     } | ||||
|  | ||||
|     &:not(.c-so-view--no-frame) { | ||||
|         background: $colorBodyBg; | ||||
|         border: $browseFrameBorder; | ||||
|         padding: $interiorMargin; | ||||
|  | ||||
|         .is-editing & { | ||||
|             background: rgba($colorBodyBg, 0.8); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     &--no-frame { | ||||
|   | ||||
| @@ -36,6 +36,7 @@ | ||||
|         <!-- Action buttons --> | ||||
|         <NotebookMenuSwitcher v-if="notebookEnabled" | ||||
|                               :domain-object="domainObject" | ||||
|                               :object-path="openmct.router.path" | ||||
|                               class="c-notebook-snapshot-menubutton" | ||||
|         /> | ||||
|         <div class="l-browse-bar__actions"> | ||||
|   | ||||
| @@ -21,28 +21,12 @@ | ||||
|  *****************************************************************************/ | ||||
| <template> | ||||
| <div class="l-preview-window"> | ||||
|     <div class="l-browse-bar"> | ||||
|         <div class="l-browse-bar__start"> | ||||
|             <div | ||||
|                 class="l-browse-bar__object-name--w" | ||||
|                 :class="type.cssClass" | ||||
|             > | ||||
|                 <span class="l-browse-bar__object-name"> | ||||
|                     {{ domainObject.name }} | ||||
|                 </span> | ||||
|                 <context-menu-drop-down :object-path="objectPath" /> | ||||
|             </div> | ||||
|         </div> | ||||
|         <div class="l-browse-bar__end"> | ||||
|             <div class="l-browse-bar__actions"> | ||||
|                 <view-switcher | ||||
|                     :views="views" | ||||
|                     :current-view="currentView" | ||||
|                     @setView="setView" | ||||
|                 /> | ||||
|             </div> | ||||
|         </div> | ||||
|     </div> | ||||
|     <PreviewHeader | ||||
|         :current-view="currentView" | ||||
|         :domain-object="domainObject" | ||||
|         :views="views" | ||||
|         @setView="setView" | ||||
|     /> | ||||
|     <div class="l-preview-window__object-view"> | ||||
|         <div ref="objectView"></div> | ||||
|     </div> | ||||
| @@ -50,26 +34,29 @@ | ||||
| </template> | ||||
|  | ||||
| <script> | ||||
| import ContextMenuDropDown from '../../ui/components/contextMenuDropDown.vue'; | ||||
| import ViewSwitcher from '../../ui/layout/ViewSwitcher.vue'; | ||||
| import PreviewHeader from './preview-header.vue'; | ||||
|  | ||||
| export default { | ||||
|     components: { | ||||
|         ContextMenuDropDown, | ||||
|         ViewSwitcher | ||||
|         PreviewHeader | ||||
|     }, | ||||
|     inject: [ | ||||
|         'openmct', | ||||
|         'objectPath' | ||||
|     ], | ||||
|     props: { | ||||
|         notebookEnabled: { | ||||
|             type: Boolean, | ||||
|             default: () => { | ||||
|                 return false; | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|     data() { | ||||
|         let domainObject = this.objectPath[0]; | ||||
|         let type = this.openmct.types.get(domainObject.type); | ||||
|  | ||||
|         return { | ||||
|             domainObject: domainObject, | ||||
|             type: type, | ||||
|             notebookEnabled: false, | ||||
|             viewKey: undefined | ||||
|         }; | ||||
|     }, | ||||
| @@ -97,6 +84,7 @@ export default { | ||||
|                 this.view.destroy(); | ||||
|                 this.$refs.objectView.innerHTML = ''; | ||||
|             } | ||||
|  | ||||
|             delete this.view; | ||||
|             delete this.viewContainer; | ||||
|         }, | ||||
|   | ||||
							
								
								
									
										91
									
								
								src/ui/preview/preview-header.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								src/ui/preview/preview-header.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,91 @@ | ||||
| <template> | ||||
| <div class="l-browse-bar"> | ||||
|     <div class="l-browse-bar__start"> | ||||
|         <div | ||||
|             class="l-browse-bar__object-name--w" | ||||
|             :class="type.cssClass" | ||||
|         > | ||||
|             <span class="l-browse-bar__object-name"> | ||||
|                 {{ domainObject.name }} | ||||
|             </span> | ||||
|             <context-menu-drop-down :object-path="objectPath" /> | ||||
|         </div> | ||||
|     </div> | ||||
|     <div class="l-browse-bar__end"> | ||||
|         <div class="l-browse-bar__actions"> | ||||
|             <view-switcher | ||||
|                 :v-if="!hideViewSwitcher" | ||||
|                 :views="views" | ||||
|                 :current-view="currentView" | ||||
|                 @setView="setView" | ||||
|             /> | ||||
|             <NotebookMenuSwitcher v-if="showNotebookMenuSwitcher" | ||||
|                                   :domain-object="domainObject" | ||||
|                                   :object-path="objectPath" | ||||
|                                   class="c-notebook-snapshot-menubutton" | ||||
|             /> | ||||
|         </div> | ||||
|     </div> | ||||
| </div> | ||||
| </template> | ||||
|  | ||||
|  | ||||
| <script> | ||||
| import ContextMenuDropDown from '../../ui/components/contextMenuDropDown.vue'; | ||||
| import NotebookMenuSwitcher from '@/plugins/notebook/components/notebook-menu-switcher.vue'; | ||||
| import ViewSwitcher from '../../ui/layout/ViewSwitcher.vue'; | ||||
|  | ||||
| export default { | ||||
|     inject: [ | ||||
|         'openmct', | ||||
|         'objectPath' | ||||
|     ], | ||||
|     components: { | ||||
|         ContextMenuDropDown, | ||||
|         NotebookMenuSwitcher, | ||||
|         ViewSwitcher | ||||
|     }, | ||||
|     props: { | ||||
|         currentView: { | ||||
|             type: Object, | ||||
|             default: () => { | ||||
|                 return {}; | ||||
|             } | ||||
|         }, | ||||
|         domainObject: { | ||||
|             type: Object, | ||||
|             default: () => { | ||||
|                 return {}; | ||||
|             } | ||||
|         }, | ||||
|         hideViewSwitcher: { | ||||
|             type: Boolean, | ||||
|             default: () => { | ||||
|                 return false; | ||||
|             } | ||||
|         }, | ||||
|         showNotebookMenuSwitcher: { | ||||
|             type: Boolean, | ||||
|             default: () => { | ||||
|                 return false; | ||||
|             } | ||||
|         }, | ||||
|         views: { | ||||
|             type: Array, | ||||
|             default: () => { | ||||
|                 return []; | ||||
|             } | ||||
|         } | ||||
|     }, | ||||
|     data() { | ||||
|         return { | ||||
|             type: this.openmct.types.get(this.domainObject.type) | ||||
|         }; | ||||
|     }, | ||||
|     methods: { | ||||
|         setView(view) { | ||||
|             this.$emit('setView', view); | ||||
|         } | ||||
|     } | ||||
| } | ||||
| </script> | ||||
		Reference in New Issue
	
	Block a user