From baa5d100097831b0640b50742bcef935e349fc9d Mon Sep 17 00:00:00 2001 From: Pegah Sarram Date: Mon, 28 Jan 2019 12:50:17 -0800 Subject: [PATCH] [Fixed Position] cleanup (#2275) * Delete unused files * Remove fixed view plugin and style imports. --- index.html | 1 - platform/features/fixed/plugin.js | 475 ------------ .../features/fixed/src/FixedController.js | 720 ------------------ .../features/fixed/src/FixedDragHandle.js | 110 --- platform/features/fixed/src/FixedProxy.js | 76 -- platform/features/fixed/src/LayoutDrag.js | 115 --- .../features/fixed/src/MCTTriggerModal.js | 105 --- .../fixed/src/elements/AccessorMutator.js | 58 -- .../features/fixed/src/elements/BoxProxy.js | 61 -- .../fixed/src/elements/ElementFactory.js | 115 --- .../fixed/src/elements/ElementProxies.js | 35 - .../fixed/src/elements/ElementProxy.js | 209 ----- .../features/fixed/src/elements/ImageProxy.js | 58 -- .../features/fixed/src/elements/LineHandle.js | 94 --- .../features/fixed/src/elements/LineProxy.js | 171 ----- .../fixed/src/elements/ResizeHandle.js | 72 -- .../fixed/src/elements/TelemetryProxy.js | 56 -- .../features/fixed/src/elements/TextProxy.js | 75 -- .../fixed/src/elements/UnitAccessorMutator.js | 92 --- .../fixed/templates/elements/box.html | 26 - .../fixed/templates/elements/image.html | 26 - .../fixed/templates/elements/line.html | 31 - .../fixed/templates/elements/telemetry.html | 39 - .../fixed/templates/elements/text.html | 27 - platform/features/fixed/templates/fixed.html | 62 -- platform/features/fixed/templates/frame.html | 49 -- .../fixed/test/FixedControllerSpec.js | 641 ---------------- .../fixed/test/FixedDragHandleSpec.js | 92 --- .../features/fixed/test/FixedProxySpec.js | 71 -- .../features/fixed/test/LayoutDragSpec.js | 81 -- .../fixed/test/MCTTriggerModalSpec.js | 128 ---- .../test/elements/AccessorMutatorSpec.js | 50 -- .../fixed/test/elements/BoxProxySpec.js | 55 -- .../fixed/test/elements/ElementFactorySpec.js | 69 -- .../fixed/test/elements/ElementProxiesSpec.js | 51 -- .../fixed/test/elements/ElementProxySpec.js | 98 --- .../fixed/test/elements/ImageProxySpec.js | 56 -- .../fixed/test/elements/LineHandleSpec.js | 81 -- .../fixed/test/elements/LineProxySpec.js | 95 --- .../fixed/test/elements/ResizeHandleSpec.js | 93 --- .../fixed/test/elements/TelemetryProxySpec.js | 54 -- .../fixed/test/elements/TextProxySpec.js | 70 -- .../test/elements/UnitAccessorMutatorSpec.js | 157 ---- src/plugins/plugins.js | 3 - src/styles-new/legacy-styles.scss | 1 - src/styles/_fixed-position.scss | 93 --- src/styles/_main.scss | 1 - 47 files changed, 4998 deletions(-) delete mode 100644 platform/features/fixed/plugin.js delete mode 100644 platform/features/fixed/src/FixedController.js delete mode 100644 platform/features/fixed/src/FixedDragHandle.js delete mode 100644 platform/features/fixed/src/FixedProxy.js delete mode 100644 platform/features/fixed/src/LayoutDrag.js delete mode 100644 platform/features/fixed/src/MCTTriggerModal.js delete mode 100644 platform/features/fixed/src/elements/AccessorMutator.js delete mode 100644 platform/features/fixed/src/elements/BoxProxy.js delete mode 100644 platform/features/fixed/src/elements/ElementFactory.js delete mode 100644 platform/features/fixed/src/elements/ElementProxies.js delete mode 100644 platform/features/fixed/src/elements/ElementProxy.js delete mode 100644 platform/features/fixed/src/elements/ImageProxy.js delete mode 100644 platform/features/fixed/src/elements/LineHandle.js delete mode 100644 platform/features/fixed/src/elements/LineProxy.js delete mode 100644 platform/features/fixed/src/elements/ResizeHandle.js delete mode 100644 platform/features/fixed/src/elements/TelemetryProxy.js delete mode 100644 platform/features/fixed/src/elements/TextProxy.js delete mode 100644 platform/features/fixed/src/elements/UnitAccessorMutator.js delete mode 100644 platform/features/fixed/templates/elements/box.html delete mode 100644 platform/features/fixed/templates/elements/image.html delete mode 100644 platform/features/fixed/templates/elements/line.html delete mode 100644 platform/features/fixed/templates/elements/telemetry.html delete mode 100644 platform/features/fixed/templates/elements/text.html delete mode 100644 platform/features/fixed/templates/fixed.html delete mode 100644 platform/features/fixed/templates/frame.html delete mode 100644 platform/features/fixed/test/FixedControllerSpec.js delete mode 100644 platform/features/fixed/test/FixedDragHandleSpec.js delete mode 100644 platform/features/fixed/test/FixedProxySpec.js delete mode 100644 platform/features/fixed/test/LayoutDragSpec.js delete mode 100644 platform/features/fixed/test/MCTTriggerModalSpec.js delete mode 100644 platform/features/fixed/test/elements/AccessorMutatorSpec.js delete mode 100644 platform/features/fixed/test/elements/BoxProxySpec.js delete mode 100644 platform/features/fixed/test/elements/ElementFactorySpec.js delete mode 100644 platform/features/fixed/test/elements/ElementProxiesSpec.js delete mode 100644 platform/features/fixed/test/elements/ElementProxySpec.js delete mode 100644 platform/features/fixed/test/elements/ImageProxySpec.js delete mode 100644 platform/features/fixed/test/elements/LineHandleSpec.js delete mode 100644 platform/features/fixed/test/elements/LineProxySpec.js delete mode 100644 platform/features/fixed/test/elements/ResizeHandleSpec.js delete mode 100644 platform/features/fixed/test/elements/TelemetryProxySpec.js delete mode 100644 platform/features/fixed/test/elements/TextProxySpec.js delete mode 100644 platform/features/fixed/test/elements/UnitAccessorMutatorSpec.js delete mode 100644 src/styles/_fixed-position.scss diff --git a/index.html b/index.html index 4651960096..7ec6a77eb0 100644 --- a/index.html +++ b/index.html @@ -49,7 +49,6 @@ openmct.install(openmct.plugins.ExampleImagery()); openmct.install(openmct.plugins.UTCTimeSystem()); openmct.install(openmct.plugins.ImportExport()); - openmct.install(openmct.plugins.FixedView()); openmct.install(openmct.plugins.AutoflowView({ type: "telemetry.panel" })); diff --git a/platform/features/fixed/plugin.js b/platform/features/fixed/plugin.js deleted file mode 100644 index c2601283ba..0000000000 --- a/platform/features/fixed/plugin.js +++ /dev/null @@ -1,475 +0,0 @@ -/***************************************************************************** - * 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([ - "./src/FixedController", - "./templates/fixed.html", - "./templates/frame.html", - "./templates/elements/telemetry.html", - "./templates/elements/box.html", - "./templates/elements/line.html", - "./templates/elements/text.html", - "./templates/elements/image.html", - "legacyRegistry" -], function ( - FixedController, - fixedTemplate, - frameTemplate, - telemetryTemplate, - boxTemplate, - lineTemplate, - textTemplate, - imageTemplate, - legacyRegistry -) { - return function() { - return function (openmct) { - openmct.legacyRegistry.register("platform/features/fixed", { - "name": "Fixed position components.", - "description": "Plug in adding Fixed Position object type.", - "extensions": { - "views": [ - { - "key": "fixed-display", - "name": "Fixed Position Display", - "cssClass": "icon-box-with-dashed-lines", - "type": "telemetry.fixed", - "template": fixedTemplate, - "uses": ["composition"], - "editable": true - } - ], - "templates": [ - { - "key": "fixed.telemetry", - "template": telemetryTemplate - }, - { - "key": "fixed.box", - "template": boxTemplate - }, - { - "key": "fixed.line", - "template": lineTemplate - }, - { - "key": "fixed.text", - "template": textTemplate - }, - { - "key": "fixed.image", - "template": imageTemplate - } - ], - "controllers": [ - { - "key": "FixedController", - "implementation": FixedController, - "depends": [ - "$scope", - "$q", - "dialogService", - "openmct", - "$element" - ] - } - ], - "toolbars": [ - { - name: "Fixed Position Toolbar", - key: "fixed.position", - description: "Toolbar for the selected element inside a fixed position display.", - forSelection: function (selection) { - if (!selection) { - return; - } - - return (openmct.editor.isEditing() && - selection[0] && selection[0].context.elementProxy && - ((selection[1] && selection[1].context.item.type === 'telemetry.fixed') || - (selection[0] && selection[0].context.item && selection[0].context.item.type === 'telemetry.fixed'))); - }, - toolbar: function (selection) { - var imageProperties = ["add", "remove", "order", "stroke", "useGrid", "x", "y", "height", "width", "url"]; - var boxProperties = ["add", "remove", "order", "stroke", "useGrid", "x", "y", "height", "width", "fill"]; - var textProperties = ["add", "remove", "order", "stroke", "useGrid", "x", "y", "height", "width", "fill", "color", "size", "text"]; - var lineProperties = ["add", "remove", "order", "stroke", "useGrid", "x", "y", "x2", "y2"]; - var telemetryProperties = ["add", "remove", "order", "stroke", "useGrid", "x", "y", "height", "width", "fill", "color", "size", "titled"]; - var fixedPageProperties = ["add"]; - - var properties = [], - fixedItem = selection[0] && selection[0].context.item, - elementProxy = selection[0] && selection[0].context.elementProxy, - domainObject = selection[1] && selection[1].context.item, - path; - - if (elementProxy) { - var type = elementProxy.element.type; - path = "configuration['fixed-display'].elements[" + elementProxy.index + "]"; - properties = - type === 'fixed.image' ? imageProperties : - type === 'fixed.text' ? textProperties : - type === 'fixed.box' ? boxProperties : - type === 'fixed.line' ? lineProperties : - type === 'fixed.telemetry' ? telemetryProperties : []; - } else if (fixedItem) { - properties = domainObject && domainObject.type === 'layout' ? [] : fixedPageProperties; - } - - return [ - { - control: "menu", - domainObject: domainObject || selection[0].context.item, - method: function (option) { - selection[0].context.fixedController.add(option.key); - }, - key: "add", - icon: "icon-plus", - label: "Add", - options: [ - { - "name": "Box", - "class": "icon-box", - "key": "fixed.box" - }, - { - "name": "Line", - "class": "icon-line-horz", - "key": "fixed.line" - }, - { - "name": "Text", - "class": "icon-T", - "key": "fixed.text" - }, - { - "name": "Image", - "class": "icon-image", - "key": "fixed.image" - } - ] - }, - { - control: "menu", - domainObject: domainObject, - method: function (option) { - console.log('option', option) - selection[0].context.fixedController.order( - selection[0].context.elementProxy, - option.key - ); - }, - key: "order", - icon: "icon-layers", - title: "Move the selected object above or below other objects", - options: [ - { - "name": "Move to Top", - "class": "icon-arrow-double-up", - "key": "top" - }, - { - "name": "Move Up", - "class": "icon-arrow-up", - "key": "up" - }, - { - "name": "Move Down", - "class": "icon-arrow-down", - "key": "down" - }, - { - "name": "Move to Bottom", - "class": "icon-arrow-double-down", - "key": "bottom" - } - ] - }, - { - control: "color-picker", - domainObject: domainObject, - property: path + ".fill", - icon: "icon-paint-bucket", - title: "Set fill color", - key: 'fill' - }, - { - control: "color-picker", - domainObject: domainObject, - property: path + ".stroke", - icon: "icon-line-horz", - title: "Set border color", - key: 'stroke' - }, - { - control: "button", - domainObject: domainObject, - property: path + ".url", - icon: "icon-image", - title: "Edit image properties", - key: 'url', - dialog: { - control: "input", - type: "text", - name: "Image URL", - class: "l-input-lg", - required: true - } - }, - { - control: "color-picker", - domainObject: domainObject, - property: path + ".color", - icon: "icon-T", - mandatory: true, - title: "Set text color", - key: 'color' - }, - { - control: "select-menu", - domainObject: domainObject, - property: path + ".size", - title: "Set text size", - key: 'size', - options: [9, 10, 11, 12, 13, 14, 15, 16, 20, 24, 30, 36, 48, 72, 96].map(function (size) { - return { "value": size + "px"}; - }) - }, - { - control: "input", - type: "number", - domainObject: domainObject, - property: path + ".x", - label: "X", - title: "X position", - key: "x", - class: "l-input-sm", - min: "0" - }, - { - control: "input", - type: "number", - domainObject: domainObject, - property: path + ".y", - label: "Y", - title: "Y position", - key: "y", - class: "l-input-sm", - min: "0" - }, - { - control: "input", - type: "number", - domainObject: domainObject, - property: path + ".x", - label: "X1", - title: "X1 position", - key: "x1", - class: "l-input-sm", - min: "0" - }, - { - control: "input", - type: "number", - domainObject: domainObject, - property: path + ".y", - label: "Y1", - title: "Y1 position", - key: "y1", - class: "l-input-sm", - min: "0" - }, - { - control: "input", - type: "number", - domainObject: domainObject, - property: path + ".x2", - label: "X2", - title: "X2 position", - key: "x2", - class: "l-input-sm", - min: "0" - }, - { - control: "input", - type: "number", - domainObject: domainObject, - property: path + ".y2", - label: "Y2", - title: "Y2 position", - key: "y2", - class: "l-input-sm", - min: "0" - }, - { - control: "input", - type: "number", - domainObject: domainObject, - property: path + ".height", - label: "H", - title: "Resize object height", - key: "height", - class: "l-input-sm", - min: "1" - }, - { - control: "input", - type: "number", - domainObject: domainObject, - property: path + ".width", - label: "W", - title: "Resize object width", - key: "width", - class: "l-input-sm", - min: "1" - }, - { - control: "toggle-button", - domainObject: domainObject, - property: path + ".useGrid", - key: "useGrid", - options: [ - { - value: true, - icon: 'icon-grid-snap-to', - title: 'Snap to grid' - }, - { - value: false, - icon: 'icon-grid-snap-no', - title: "Do not snap to grid" - } - ] - }, - { - control: "button", - domainObject: domainObject, - property: path + ".text", - icon: "icon-gear", - title: "Edit text properties", - key: "text", - dialog: { - control: "input", - type: "text", - name: "Text", - required: true - } - }, - { - control: "toggle-button", - domainObject: domainObject, - property: path + ".titled", - key: "titled", - options: [ - { - value: true, - icon: 'icon-two-parts-both', - title: 'Show label' - }, - { - value: false, - icon: 'icon-two-parts-one-only', - title: "Hide label" - } - ] - }, - { - control: "button", - domainObject: domainObject, - method: function () { - selection[0].context.fixedController.remove( - selection[0].context.elementProxy - ); - }, - key: "remove", - icon: "icon-trash" - } - ].filter(function (item) { - var filtered; - - properties.forEach(function (property) { - if (item.property && item.key === property || - item.method && item.key === property) { - filtered = item; - } - }); - - return filtered; - }); - } - } - ], - "types": [ - { - "key": "telemetry.fixed", - "name": "Fixed Position Display", - "cssClass": "icon-box-with-dashed-lines", - "description": "Collect and display telemetry elements in " + - "alphanumeric format in a simple canvas workspace. " + - "Elements can be positioned and sized. " + - "Lines, boxes and images can be added as well.", - "priority": 899, - "delegates": [ - "telemetry" - ], - "features": "creation", - "contains": [ - { - "has": "telemetry" - } - ], - "model": { - "layoutGrid": [64, 16], - "composition": [] - }, - "properties": [ - { - "name": "Layout Grid", - "control": "composite", - "items": [ - { - "name": "Horizontal grid (px)", - "control": "textfield", - "cssClass": "l-input-sm l-numeric" - }, - { - "name": "Vertical grid (px)", - "control": "textfield", - "cssClass": "l-input-sm l-numeric" - } - ], - "pattern": "^(\\d*[1-9]\\d*)?$", - "property": "layoutGrid", - "conversion": "number[]" - } - ], - "views": [ - "fixed-display" - ] - } - ] - } - }); - openmct.legacyRegistry.enable("platform/features/fixed"); - } - } -}); \ No newline at end of file diff --git a/platform/features/fixed/src/FixedController.js b/platform/features/fixed/src/FixedController.js deleted file mode 100644 index f18b7ef96e..0000000000 --- a/platform/features/fixed/src/FixedController.js +++ /dev/null @@ -1,720 +0,0 @@ -/***************************************************************************** - * 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', - './FixedProxy', - './elements/ElementProxies', - './FixedDragHandle', - '../../../../src/api/objects/object-utils' - ], - function ( - _, - FixedProxy, - ElementProxies, - FixedDragHandle, - objectUtils - ) { - - var DEFAULT_DIMENSIONS = [2, 1]; - - // Convert from element x/y/width/height to an - // appropriate ng-style argument, to position elements. - function convertPosition(elementProxy) { - if (elementProxy.getStyle) { - return elementProxy.getStyle(); - } - - var gridSize = elementProxy.getGridSize(); - - // Multiply position/dimensions by grid size - return { - left: (gridSize[0] * elementProxy.element.x) + 'px', - top: (gridSize[1] * elementProxy.element.y) + 'px', - width: (gridSize[0] * elementProxy.element.width) + 'px', - height: (gridSize[1] * elementProxy.element.height) + 'px' - }; - } - - /** - * The FixedController is responsible for supporting the - * Fixed Position view. It arranges frames according to saved - * configuration and provides methods for updating these based on - * mouse movement. - * @memberof platform/features/layout - * @constructor - * @param {Scope} $scope the controller's Angular scope - */ - function FixedController($scope, $q, dialogService, openmct, $element) { - this.names = {}; // Cache names by ID - this.values = {}; // Cache values by ID - this.elementProxiesById = {}; - this.telemetryObjects = {}; - this.subscriptions = {}; - this.openmct = openmct; - this.$element = $element; - this.$scope = $scope; - this.dialogService = dialogService; - this.$q = $q; - this.newDomainObject = $scope.domainObject.useCapability('adapter'); - this.fixedViewSelectable = false; - - var self = this; - [ - 'digest', - 'fetchHistoricalData', - 'getTelemetry', - 'setDisplayedValue', - 'subscribeToObject', - 'unsubscribe', - 'updateView' - ].forEach(function (name) { - self[name] = self[name].bind(self); - }); - - // Decorate an element for display - function makeProxyElement(element, index, elements) { - var ElementProxy = ElementProxies[element.type], - e = ElementProxy && new ElementProxy(element, index, elements, self.gridSize); - - if (e) { - // Provide a displayable position (convert from grid to px) - e.style = convertPosition(e); - // Template names are same as type names, presently - e.template = element.type; - } - - return e; - } - - // Decorate elements in the current configuration - function refreshElements() { - var elements = (((self.newDomainObject.configuration || {})['fixed-display'] || {}).elements || []); - - // Create the new proxies... - self.elementProxies = elements.map(makeProxyElement); - - if (self.selectedElementProxy) { - // If selection is not in array, select parent. - // Otherwise, set the element to select after refresh. - var index = elements.indexOf(self.selectedElementProxy.element); - if (index === -1) { - self.$element[0].click(); - } else if (!self.elementToSelectAfterRefresh) { - self.elementToSelectAfterRefresh = self.elementProxies[index].element; - } - } - - // Finally, rebuild lists of elements by id to - // facilitate faster update when new telemetry comes in. - self.elementProxiesById = {}; - self.elementProxies.forEach(function (elementProxy) { - var id = elementProxy.id; - if (elementProxy.element.type === 'fixed.telemetry') { - // Provide it a cached name/value to avoid flashing - elementProxy.name = self.names[id]; - elementProxy.value = self.values[id]; - self.elementProxiesById[id] = self.elementProxiesById[id] || []; - self.elementProxiesById[id].push(elementProxy); - } - }); - } - - // Trigger a new query for telemetry data - function updateDisplayBounds(bounds, isTick) { - if (!isTick) { - //Reset values - self.values = {}; - refreshElements(); - - //Fetch new data - Object.values(self.telemetryObjects).forEach(function (object) { - self.fetchHistoricalData(object); - }); - } - } - - // Add an element to this view - function addElement(element) { - var index; - var elements = (((self.newDomainObject.configuration || {})['fixed-display'] || {}).elements || []); - elements.push(element); - - if (self.selectedElementProxy) { - index = elements.indexOf(self.selectedElementProxy.element); - } - - self.mutate("configuration['fixed-display'].elements", elements); - elements = (self.newDomainObject.configuration)['fixed-display'].elements || []; - self.elementToSelectAfterRefresh = elements[elements.length - 1]; - - if (self.selectedElementProxy) { - // Update the selected element with the new - // value since newDomainOject is mutated. - self.selectedElementProxy.element = elements[index]; - } - refreshElements(); - } - - // Position a panel after a drop event - function handleDrop(e, id, position) { - // Don't handle this event if it has already been handled - if (e.defaultPrevented) { - return; - } - - e.preventDefault(); - - // Store the position of this element. - // color is set to "" to let the CSS theme determine the default color - addElement({ - type: "fixed.telemetry", - x: Math.floor(position.x / self.gridSize[0]), - y: Math.floor(position.y / self.gridSize[1]), - id: id, - stroke: "transparent", - color: "", - titled: true, - width: DEFAULT_DIMENSIONS[0], - height: DEFAULT_DIMENSIONS[1], - useGrid: true - }); - - // Subscribe to the new object to get telemetry - self.openmct.objects.get(id).then(function (object) { - self.getTelemetry(object); - }); - } - - this.elementProxies = []; - this.addElement = addElement; - this.refreshElements = refreshElements; - this.fixedProxy = new FixedProxy(this.addElement, this.$q, this.dialogService); - - this.composition = this.openmct.composition.get(this.newDomainObject); - this.composition.on('add', this.onCompositionAdd, this); - this.composition.on('remove', this.onCompositionRemove, this); - this.composition.load(); - - // Position panes where they are dropped - $scope.$on("mctDrop", handleDrop); - - $scope.$on("$destroy", this.destroy.bind(this)); - - // Respond to external bounds changes - this.openmct.time.on("bounds", updateDisplayBounds); - - this.openmct.selection.on('change', this.setSelection.bind(this)); - this.openmct.editor.on('isEditing', this.handleEditing.bind(this)); - - this.$element.on('click', this.bypassSelection.bind(this)); - this.unlisten = this.openmct.objects.observe(this.newDomainObject, '*', function (obj) { - this.newDomainObject = JSON.parse(JSON.stringify(obj)); - this.updateElementPositions(this.newDomainObject.layoutGrid); - }.bind(this)); - - this.updateElementPositions(this.newDomainObject.layoutGrid); - refreshElements(); - } - - FixedController.prototype.updateElementPositions = function (layoutGrid) { - this.gridSize = layoutGrid; - - this.elementProxies.forEach(function (elementProxy) { - elementProxy.setGridSize(this.gridSize); - elementProxy.style = convertPosition(elementProxy); - }.bind(this)); - }; - - FixedController.prototype.onCompositionAdd = function (object) { - this.getTelemetry(object); - }; - - FixedController.prototype.onCompositionRemove = function (identifier) { - // Defer mutation of newDomainObject to prevent mutating an - // outdated version since this is triggered by a composition change. - setTimeout(function () { - var id = objectUtils.makeKeyString(identifier); - var elements = this.newDomainObject.configuration['fixed-display'].elements || []; - var newElements = elements.filter(function (proxy) { - return proxy.id !== id; - }); - this.mutate("configuration['fixed-display'].elements", newElements); - - if (this.subscriptions[id]) { - this.subscriptions[id](); - delete this.subscriptions[id]; - } - - delete this.telemetryObjects[id]; - this.refreshElements(); - }.bind(this)); - }; - - /** - * Removes an element from the view. - * - * @param {Object} elementProxy the element proxy to remove. - */ - FixedController.prototype.remove = function (elementProxy) { - var element = elementProxy.element; - var elements = this.newDomainObject.configuration['fixed-display'].elements || []; - elements.splice(elements.indexOf(element), 1); - - if (element.type === 'fixed.telemetry') { - this.newDomainObject.composition = this.newDomainObject.composition.filter(function (identifier) { - return objectUtils.makeKeyString(identifier) !== element.id; - }); - } - - this.mutate("configuration['fixed-display'].elements", elements); - this.refreshElements(); - - }; - - /** - * Adds a new element to the view. - * - * @param {string} type the type of element to add. Supported types are: - * `fixed.image` - * `fixed.box` - * `fixed.text` - * `fixed.line` - */ - FixedController.prototype.add = function (type) { - this.fixedProxy.add(type); - }; - - /** - * Change the display order of the element proxy. - */ - FixedController.prototype.order = function (elementProxy, position) { - var elements = elementProxy.order(position); - - // Find the selected element index in the updated array. - var selectedElemenetIndex = elements.indexOf(this.selectedElementProxy.element); - - this.mutate("configuration['fixed-display'].elements", elements); - elements = (this.newDomainObject.configuration)['fixed-display'].elements || []; - - // Update the selected element with the new - // value since newDomainOject is mutated. - this.selectedElementProxy.element = elements[selectedElemenetIndex]; - this.refreshElements(); - }; - - FixedController.prototype.generateDragHandle = function (elementProxy, elementHandle) { - var index = this.elementProxies.indexOf(elementProxy); - - if (elementHandle) { - elementHandle.element = elementProxy.element; - elementProxy = elementHandle; - } - - return new FixedDragHandle( - elementProxy, - "configuration['fixed-display'].elements[" + index + "]", - this - ); - }; - - FixedController.prototype.generateDragHandles = function (elementProxy) { - return elementProxy.handles().map(function (handle) { - return this.generateDragHandle(elementProxy, handle); - }, this); - }; - - FixedController.prototype.updateSelectionStyle = function () { - this.selectedElementProxy.style = convertPosition(this.selectedElementProxy); - }; - - FixedController.prototype.setSelection = function (selectable) { - var selection = selectable[0]; - - if (this.selectionListeners) { - this.selectionListeners.forEach(function (l) { - l(); - }); - } - - this.selectionListeners = []; - - if (!selection) { - return; - } - - if (selection.context.elementProxy) { - this.selectedElementProxy = selection.context.elementProxy; - this.attachSelectionListeners(); - this.mvHandle = this.generateDragHandle(this.selectedElementProxy); - this.resizeHandles = this.generateDragHandles(this.selectedElementProxy); - } else { - // Make fixed view selectable if it's not already. - if (!this.fixedViewSelectable && selectable.length === 1) { - this.fixedViewSelectable = true; - selection.context.fixedController = this; - this.openmct.selection.select(selection); - } - - this.resizeHandles = []; - this.mvHandle = undefined; - this.selectedElementProxy = undefined; - } - }; - - FixedController.prototype.attachSelectionListeners = function () { - var index = this.elementProxies.indexOf(this.selectedElementProxy); - var path = "configuration['fixed-display'].elements[" + index + "]"; - - this.selectionListeners.push(this.openmct.objects.observe(this.newDomainObject, path + ".useGrid", function (newValue) { - if (this.selectedElementProxy.useGrid() !== newValue) { - this.selectedElementProxy.useGrid(newValue); - this.updateSelectionStyle(); - this.openmct.objects.mutate(this.newDomainObject, path, this.selectedElementProxy.element); - } - }.bind(this))); - [ - "width", - "height", - "stroke", - "fill", - "x", - "y", - "x1", - "y1", - "x2", - "y2", - "color", - "size", - "text", - "titled" - ].forEach(function (property) { - this.selectionListeners.push(this.openmct.objects.observe(this.newDomainObject, path + "." + property, function (newValue) { - this.selectedElementProxy.element[property] = newValue; - this.updateSelectionStyle(); - }.bind(this))); - }.bind(this)); - }; - - FixedController.prototype.destroy = function () { - this.unsubscribe(); - this.unlisten(); - this.openmct.time.off("bounds", this.updateDisplayBounds); - this.openmct.selection.off("change", this.setSelection); - this.composition.off('add', this.onCompositionAdd, this); - this.composition.off('remove', this.onCompositionRemove, this); - this.openmct.editor.off('isEditing', this.handleEditing, this); - }; - - /** - * A rate-limited digest function. Caps digests at 60Hz - * @private - */ - FixedController.prototype.digest = function () { - var self = this; - - if (!this.digesting) { - this.digesting = true; - requestAnimationFrame(function () { - self.$scope.$digest(); - self.digesting = false; - }); - } - }; - - /** - * Unsubscribe all listeners - * @private - */ - FixedController.prototype.unsubscribe = function () { - Object.values(this.subscriptions).forEach(function (unsubscribeFunc) { - unsubscribeFunc(); - }); - this.subscriptions = {}; - this.telemetryObjects = {}; - }; - - /** - * Subscribe to the given domain object - * @private - * @param {object} object Domain object to subscribe to - * @returns {object} The provided object, for chaining. - */ - FixedController.prototype.subscribeToObject = function (object) { - var self = this; - var timeAPI = this.openmct.time; - var id = objectUtils.makeKeyString(object.identifier); - this.subscriptions[id] = self.openmct.telemetry.subscribe(object, function (datum) { - if (timeAPI.clock() !== undefined) { - self.updateView(object, datum); - } - }, {}); - - return object; - }; - - /** - * Print the values from the given datum against the provided object in the view. - * @private - * @param {object} telemetryObject The domain object associated with the given telemetry data - * @param {object} datum The telemetry datum containing the values to print - */ - FixedController.prototype.updateView = function (telemetryObject, datum) { - var metadata = this.openmct.telemetry.getMetadata(telemetryObject); - var valueMetadata = this.chooseValueMetadataToDisplay(metadata); - var formattedTelemetryValue = this.getFormattedTelemetryValueForKey(valueMetadata, datum); - var limitEvaluator = this.openmct.telemetry.limitEvaluator(telemetryObject); - var alarm = limitEvaluator && limitEvaluator.evaluate(datum, valueMetadata); - - this.setDisplayedValue( - telemetryObject, - formattedTelemetryValue, - alarm && alarm.cssClass - ); - this.digest(); - }; - - /** - * @private - */ - FixedController.prototype.getFormattedTelemetryValueForKey = function (valueMetadata, datum) { - var formatter = this.openmct.telemetry.getValueFormatter(valueMetadata); - - return formatter.format(datum); - }; - - /** - * @private - */ - FixedController.prototype.chooseValueMetadataToDisplay = function (metadata) { - // If there is a range value, show that preferentially - var valueMetadata = metadata.valuesForHints(['range'])[0]; - - // If no range is defined, default to the highest priority non time-domain data. - if (valueMetadata === undefined) { - var valuesOrderedByPriority = metadata.values(); - valueMetadata = valuesOrderedByPriority.filter(function (values) { - return !(values.hints.domain); - })[0]; - } - - return valueMetadata; - }; - - /** - * Request the last historical data point for the given domain object - * @param {object} object - * @returns {object} the provided object for chaining. - */ - FixedController.prototype.fetchHistoricalData = function (object) { - var bounds = this.openmct.time.bounds(); - var self = this; - - self.openmct.telemetry.request(object, {start: bounds.start, end: bounds.end, size: 1}) - .then(function (data) { - if (data.length > 0) { - self.updateView(object, data[data.length - 1]); - } - }); - - return object; - }; - - - /** - * Print a value to the onscreen element associated with a given telemetry object. - * @private - * @param {object} telemetryObject The telemetry object associated with the value - * @param {string | number} value The value to print to screen - * @param {string} [cssClass] an optional CSS class to apply to the onscreen element. - */ - FixedController.prototype.setDisplayedValue = function (telemetryObject, value, cssClass) { - var id = objectUtils.makeKeyString(telemetryObject.identifier); - var self = this; - - (self.elementProxiesById[id] || []).forEach(function (element) { - self.names[id] = telemetryObject.name; - self.values[id] = value; - element.name = self.names[id]; - element.value = self.values[id]; - element.cssClass = cssClass; - }); - }; - - FixedController.prototype.getTelemetry = function (domainObject) { - var id = objectUtils.makeKeyString(domainObject.identifier); - - if (this.subscriptions[id]) { - this.subscriptions[id](); - delete this.subscriptions[id]; - } - delete this.telemetryObjects[id]; - - if (!this.openmct.telemetry.isTelemetryObject(domainObject)) { - return; - } - - // Initialize display - this.telemetryObjects[id] = domainObject; - this.setDisplayedValue(domainObject, ""); - - return Promise.resolve(domainObject) - .then(this.fetchHistoricalData) - .then(this.subscribeToObject); - }; - - /** - * Get the size of the grid, in pixels. The returned array - * is in the form `[x, y]`. - * @returns {number[]} the grid size - * @memberof platform/features/layout.FixedController# - */ - FixedController.prototype.getGridSize = function () { - return this.gridSize; - }; - - /** - * Get an array of elements in this panel; these are - * decorated proxies for both selection and display. - * @returns {Array} elements in this panel - */ - FixedController.prototype.getElements = function () { - return this.elementProxies; - }; - - /** - * Checks if the element should be selected or not. - * - * @param elementProxy the element to check - * @returns {boolean} true if the element should be selected. - */ - FixedController.prototype.shouldSelect = function (elementProxy) { - if (elementProxy.element === this.elementToSelectAfterRefresh) { - delete this.elementToSelectAfterRefresh; - return true; - } else { - return false; - } - }; - - /** - * Checks if an element is currently selected. - * - * @returns {boolean} true if an element is selected. - */ - FixedController.prototype.isElementSelected = function () { - return (this.selectedElementProxy) ? true : false; - }; - - /** - * Gets the style for the selected element. - * - * @returns {string} element style - */ - FixedController.prototype.getSelectedElementStyle = function () { - return (this.selectedElementProxy) ? this.selectedElementProxy.style : undefined; - }; - - /** - * Gets the selected element. - * - * @returns the selected element - */ - FixedController.prototype.getSelectedElement = function () { - return this.selectedElementProxy; - }; - - /** - * Prevents the event from bubbling up if drag is in progress. - */ - FixedController.prototype.bypassSelection = function ($event) { - if (this.dragInProgress) { - if ($event) { - $event.stopPropagation(); - } - return; - } - }; - - /** - * Get drag handles. - * @returns {platform/features/layout.FixedDragHandle[]} - * drag handles for the current selection - */ - FixedController.prototype.handles = function () { - return this.resizeHandles; - }; - - /** - * Get the handle to handle dragging to reposition an element. - * @returns {platform/features/layout.FixedDragHandle} the drag handle - */ - FixedController.prototype.moveHandle = function () { - return this.mvHandle; - }; - - /** - * Gets the selection context. - * - * @param elementProxy the element proxy - * @returns {object} the context object which includes elementProxy - */ - FixedController.prototype.getContext = function (elementProxy) { - return { - elementProxy: elementProxy, - fixedController: this - }; - }; - - /** - * End drag. - * - * @param handle the resize handle - */ - FixedController.prototype.endDrag = function (handle) { - this.dragInProgress = true; - - setTimeout(function () { - this.dragInProgress = false; - }.bind(this), 0); - - if (handle) { - handle.endDrag(); - } else { - this.moveHandle().endDrag(); - } - }; - - FixedController.prototype.mutate = function (path, value) { - this.openmct.objects.mutate(this.newDomainObject, path, value); - }; - - FixedController.prototype.handleEditing = function (isEditing) { - // Listen for edit mode changes and update selection if necessary. - // Mainly to ensure fixedController is on the selection context when editing. - this.setSelection(this.openmct.selection.get()); - } - - return FixedController; - } -); diff --git a/platform/features/fixed/src/FixedDragHandle.js b/platform/features/fixed/src/FixedDragHandle.js deleted file mode 100644 index d371efcf20..0000000000 --- a/platform/features/fixed/src/FixedDragHandle.js +++ /dev/null @@ -1,110 +0,0 @@ -/***************************************************************************** - * 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( - [], - function () { - - // Drag handle dimensions - var DRAG_HANDLE_SIZE = [6, 6]; - - /** - * Template-displayable drag handle for an element in fixed - * position mode. - * - * @param elementHandle the element handle - * @param configPath the configuration path of an element - * @param {Object} fixedControl the fixed controller - * @memberof platform/features/layout - * @constructor - */ - function FixedDragHandle(elementHandle, configPath, fixedControl) { - this.elementHandle = elementHandle; - this.configPath = configPath; - this.fixedControl = fixedControl; - } - - /** - * Get a CSS style to position this drag handle. - * - * @returns CSS style object (for `ng-style`) - * @memberof platform/features/layout.FixedDragHandle# - */ - FixedDragHandle.prototype.style = function () { - var gridSize = this.elementHandle.getGridSize(); - - // Adjust from grid to pixel coordinates - var x = this.elementHandle.x() * gridSize[0], - y = this.elementHandle.y() * gridSize[1]; - - // Convert to a CSS style centered on that point - return { - left: (x - DRAG_HANDLE_SIZE[0] / 2) + 'px', - top: (y - DRAG_HANDLE_SIZE[1] / 2) + 'px', - width: DRAG_HANDLE_SIZE[0] + 'px', - height: DRAG_HANDLE_SIZE[1] + 'px' - }; - }; - - /** - * Start a drag gesture. This should be called when a drag - * begins to track initial state. - */ - FixedDragHandle.prototype.startDrag = function () { - // Cache initial x/y positions - this.dragging = { - x: this.elementHandle.x(), - y: this.elementHandle.y() - }; - }; - - /** - * Continue a drag gesture; update x/y positions. - * - * @param {number[]} delta x/y pixel difference since drag started - */ - FixedDragHandle.prototype.continueDrag = function (delta) { - var gridSize = this.elementHandle.getGridSize(); - - if (this.dragging) { - // Update x/y positions (snapping to grid) - var newX = this.dragging.x + Math.round(delta[0] / gridSize[0]); - var newY = this.dragging.y + Math.round(delta[1] / gridSize[1]); - - this.elementHandle.x(Math.max(0, newX)); - this.elementHandle.y(Math.max(0, newY)); - this.fixedControl.updateSelectionStyle(); - } - }; - - /** - * End a drag gesture. This should be called when a drag - * concludes to trigger commit of changes. - */ - FixedDragHandle.prototype.endDrag = function () { - this.dragging = undefined; - this.fixedControl.mutate(this.configPath, this.elementHandle.element); - }; - - return FixedDragHandle; - } -); diff --git a/platform/features/fixed/src/FixedProxy.js b/platform/features/fixed/src/FixedProxy.js deleted file mode 100644 index f9641d79e6..0000000000 --- a/platform/features/fixed/src/FixedProxy.js +++ /dev/null @@ -1,76 +0,0 @@ -/***************************************************************************** - * 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( - ['./elements/ElementFactory'], - function (ElementFactory) { - - /** - * Proxy for configuring a fixed position view via the toolbar. - * @memberof platform/features/layout - * @constructor - * @param {Function} addElementCallback callback to invoke when - * elements are created - * @param $q Angular's $q, for promise-handling - * @param {DialogService} dialogService dialog service to use - * when adding a new element will require user input - */ - function FixedProxy(addElementCallback, $q, dialogService) { - this.factory = new ElementFactory(dialogService); - this.$q = $q; - this.addElementCallback = addElementCallback; - } - - /** - * Add a new visual element to this view. Supported types are: - * - * * `fixed.image` - * * `fixed.box` - * * `fixed.text` - * * `fixed.line` - * - * @param {string} type the type of element to add - */ - FixedProxy.prototype.add = function (type) { - var addElementCallback = this.addElementCallback; - - // Place a configured element into the view configuration - function addElement(element) { - // Configure common properties of the element - element.x = element.x || 0; - element.y = element.y || 0; - element.width = element.width || 1; - element.height = element.height || 1; - element.type = type; - element.useGrid = true; - - // Finally, add it to the view's configuration - addElementCallback(element); - } - - // Defer creation to the factory - this.$q.when(this.factory.createElement(type)).then(addElement); - }; - - return FixedProxy; - } -); diff --git a/platform/features/fixed/src/LayoutDrag.js b/platform/features/fixed/src/LayoutDrag.js deleted file mode 100644 index a950cbdb3a..0000000000 --- a/platform/features/fixed/src/LayoutDrag.js +++ /dev/null @@ -1,115 +0,0 @@ -/***************************************************************************** - * 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( - [], - function () { - - /** - * Handles drag interactions on frames in layouts. This will - * provides new positions/dimensions for frames based on - * relative pixel positions provided; these will take into account - * the grid size (in a snap-to sense) and will enforce some minimums - * on both position and dimensions. - * - * The provided position and dimensions factors will determine - * whether this is a move or a resize, and what type of resize it - * will be. For instance, a position factor of [1, 1] - * will move a frame along with the mouse as the drag - * proceeds, while a dimension factor of [0, 0] will leave - * dimensions unchanged. Combining these in different - * ways results in different handles; a position factor of - * [1, 0] and a dimensions factor of [-1, 0] will implement - * a left-edge resize, as the horizontal position will move - * with the mouse while the horizontal dimensions shrink in - * kind (and vertical properties remain unmodified.) - * - * @param {object} rawPosition the initial position/dimensions - * of the frame being interacted with - * @param {number[]} posFactor the position factor - * @param {number[]} dimFactor the dimensions factor - * @param {number[]} the size of each grid element, in pixels - * @constructor - * @memberof platform/features/layout - */ - function LayoutDrag(rawPosition, posFactor, dimFactor, gridSize) { - this.rawPosition = rawPosition; - this.posFactor = posFactor; - this.dimFactor = dimFactor; - this.gridSize = gridSize; - } - - // Convert a delta from pixel coordinates to grid coordinates, - // rounding to whole-number grid coordinates. - function toGridDelta(gridSize, pixelDelta) { - return pixelDelta.map(function (v, i) { - return Math.round(v / gridSize[i]); - }); - } - - // Utility function to perform element-by-element multiplication - function multiply(array, factors) { - return array.map(function (v, i) { - return v * factors[i]; - }); - } - - // Utility function to perform element-by-element addition - function add(array, other) { - return array.map(function (v, i) { - return v + other[i]; - }); - } - - // Utility function to perform element-by-element max-choosing - function max(array, other) { - return array.map(function (v, i) { - return Math.max(v, other[i]); - }); - } - - - /** - * Get a new position object in grid coordinates, with - * position and dimensions both offset appropriately - * according to the factors supplied in the constructor. - * @param {number[]} pixelDelta the offset from the - * original position, in pixels - */ - LayoutDrag.prototype.getAdjustedPosition = function (pixelDelta) { - var gridDelta = toGridDelta(this.gridSize, pixelDelta); - return { - position: max(add( - this.rawPosition.position, - multiply(gridDelta, this.posFactor) - ), [0, 0]), - dimensions: max(add( - this.rawPosition.dimensions, - multiply(gridDelta, this.dimFactor) - ), [1, 1]) - }; - }; - - return LayoutDrag; - - } -); diff --git a/platform/features/fixed/src/MCTTriggerModal.js b/platform/features/fixed/src/MCTTriggerModal.js deleted file mode 100644 index 8fbe5b537c..0000000000 --- a/platform/features/fixed/src/MCTTriggerModal.js +++ /dev/null @@ -1,105 +0,0 @@ -/***************************************************************************** - * Open MCT, Copyright (c) 2014-2016, 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([ - 'zepto', - '../../../commonUI/general/src/services/Overlay' -], function ( - $, - Overlay -) { - /** - * MCT Trigger Modal is intended for use in only one location: inside the - * object-header to allow views in a layout to be popped out in a modal. - * Users can close the modal and go back to normal, and everything generally - * just works fine. - * - * This code is sensitive to how our html is constructed-- particularly with - * how it locates the the container of an element in a layout. However, it - * should be able to handle slight relocations so long as it is always a - * descendent of a `.frame` element. - */ - function MCTTriggerModal($document) { - - function link($scope, $element) { - var actions = $scope.domainObject.getCapability('action'), - notebookAction = actions.getActions({key: 'notebook-new-entry'})[0]; - - var frame = $element.parent(); - - for (var i = 0; i < 10; i++) { - if (frame.hasClass('frame')) { - break; - } - frame = frame.parent(); - } - if (!frame.hasClass('frame')) { - $element.remove(); - return; - } - - frame = frame[0]; - - var layoutContainer = frame.parentElement; - - var notebookButton = notebookAction ? - [ - { - class: 'icon-notebook new-notebook-entry', - title: 'New Notebook Entry', - clickHandler: function (event) { - event.stopPropagation(); - notebookAction.perform(); - } - } - ] : []; - - var overlayService = new Overlay ({ - $document: $document, - $scope: $scope, - $element: frame, - overlayWillMount: function () { - $(frame).removeClass('frame frame-template'); - layoutContainer.removeChild(frame); - }, - overlayDidUnmount: function () { - $(frame).addClass('frame frame-template'); - layoutContainer.appendChild(frame); - }, - browseBarButtons: notebookButton - }); - - $element.on('click', overlayService.toggleOverlay); - $scope.$on('$destroy', function () { - $element.off('click', overlayService.toggleOverlay); - }); - } - - return { - restrict: 'A', - link: link - }; - } - - return MCTTriggerModal; - -}); diff --git a/platform/features/fixed/src/elements/AccessorMutator.js b/platform/features/fixed/src/elements/AccessorMutator.js deleted file mode 100644 index bc16b812fa..0000000000 --- a/platform/features/fixed/src/elements/AccessorMutator.js +++ /dev/null @@ -1,58 +0,0 @@ -/***************************************************************************** - * 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( - [], - function () { - - /** - * Utility function for creating getter-setter functions, - * since these are frequently useful for element proxies. - * - * An optional third argument may be supplied in order to - * constrain or modify arguments when using as a setter; - * this argument is a function which takes two arguments - * (the current value for the property, and the requested - * new value.) This is useful when values need to be kept - * in certain ranges; specifically, to keep x/y positions - * non-negative in a fixed position view. - * - * @memberof platform/features/layout - * @constructor - * @param {Object} object the object to get/set values upon - * @param {string} key the property to get/set - * @param {function} [updater] function used to process updates - */ - function AccessorMutator(object, key, updater) { - return function (value) { - if (arguments.length > 0) { - object[key] = updater ? - updater(value, object[key]) : - value; - } - return object[key]; - }; - } - - return AccessorMutator; - } -); diff --git a/platform/features/fixed/src/elements/BoxProxy.js b/platform/features/fixed/src/elements/BoxProxy.js deleted file mode 100644 index 26e394090a..0000000000 --- a/platform/features/fixed/src/elements/BoxProxy.js +++ /dev/null @@ -1,61 +0,0 @@ -/***************************************************************************** - * 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( - ['./ElementProxy', './AccessorMutator'], - function (ElementProxy, AccessorMutator) { - - /** - * Selection proxy for Box elements in a fixed position view. - * Also serves as a superclass for Text elements, since those - * elements have a superset of Box properties. - * - * Note that arguments here are meant to match those expected - * by `Array.prototype.map` - * - * @memberof platform/features/layout - * @constructor - * @param element the fixed position element, as stored in its - * configuration - * @param index the element's index within its array - * @param {number[]} gridSize the current layout grid size in [x,y] from - * @param {Array} elements the full array of elements - */ - function BoxProxy(element, index, elements, gridSize) { - var proxy = new ElementProxy(element, index, elements, gridSize); - - /** - * Get/set this element's fill color. (Omitting the - * argument makes this act as a getter.) - * @method - * @param {string} fill the new fill color - * @returns {string} the fill color - * @memberof platform/features/layout.BoxProxy# - */ - proxy.fill = new AccessorMutator(element, 'fill'); - - return proxy; - } - - return BoxProxy; - } -); diff --git a/platform/features/fixed/src/elements/ElementFactory.js b/platform/features/fixed/src/elements/ElementFactory.js deleted file mode 100644 index d9c6475e3b..0000000000 --- a/platform/features/fixed/src/elements/ElementFactory.js +++ /dev/null @@ -1,115 +0,0 @@ -/***************************************************************************** - * 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( - [], - function () { - - var INITIAL_STATES = { - "fixed.image": { - stroke: "transparent" - }, - "fixed.box": { - fill: "#717171", - border: "transparent", - stroke: "transparent" - }, - "fixed.line": { - x: 5, - y: 9, - x2: 6, - y2: 6, - stroke: "#717171" - }, - "fixed.text": { - fill: "transparent", - stroke: "transparent", - size: "13px" - } - }, - DIALOGS = { - "fixed.image": { - name: "Image Properties", - sections: [ - { - rows: [ - { - key: "url", - control: "textfield", - name: "Image URL", - "cssClass": "l-input-lg", - required: true - } - ] - } - ] - }, - "fixed.text": { - name: "Text Element Properties", - sections: [ - { - rows: [ - { - key: "text", - control: "textfield", - name: "Text", - required: true - } - ] - } - ] - } - }; - - /** - * The ElementFactory creates new instances of elements for the - * fixed position view, prompting for user input where necessary. - * @param {DialogService} dialogService service to request user input - * @memberof platform/features/layout - * @constructor - */ - function ElementFactory(dialogService) { - this.dialogService = dialogService; - } - - /** - * Create a new element for the fixed position view. - * @param {string} type the type of element to create - * @returns {Promise|object} the created element, or a promise - * for that element - */ - ElementFactory.prototype.createElement = function (type) { - var initialState = INITIAL_STATES[type] || {}; - - // Clone that state - initialState = JSON.parse(JSON.stringify(initialState)); - - // Show a dialog to configure initial state, if appropriate - return DIALOGS[type] ? this.dialogService.getUserInput( - DIALOGS[type], - initialState - ) : initialState; - }; - - return ElementFactory; - } -); diff --git a/platform/features/fixed/src/elements/ElementProxies.js b/platform/features/fixed/src/elements/ElementProxies.js deleted file mode 100644 index 73c1c6519c..0000000000 --- a/platform/features/fixed/src/elements/ElementProxies.js +++ /dev/null @@ -1,35 +0,0 @@ -/***************************************************************************** - * 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( - ['./TelemetryProxy', './ImageProxy', './LineProxy', './BoxProxy', './TextProxy'], - function (TelemetryProxy, ImageProxy, LineProxy, BoxProxy, TextProxy) { - - return { - "fixed.telemetry": TelemetryProxy, - "fixed.line": LineProxy, - "fixed.box": BoxProxy, - "fixed.image": ImageProxy, - "fixed.text": TextProxy - }; - } -); diff --git a/platform/features/fixed/src/elements/ElementProxy.js b/platform/features/fixed/src/elements/ElementProxy.js deleted file mode 100644 index 84114a1ae7..0000000000 --- a/platform/features/fixed/src/elements/ElementProxy.js +++ /dev/null @@ -1,209 +0,0 @@ -/***************************************************************************** - * 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( - ['./AccessorMutator', './ResizeHandle', './UnitAccessorMutator'], - function (AccessorMutator, ResizeHandle, UnitAccessorMutator) { - - // Index deltas for changes in order - var ORDERS = { - top: Number.POSITIVE_INFINITY, - up: 1, - down: -1, - bottom: Number.NEGATIVE_INFINITY - }; - - // Mininmum pixel height and width for objects - var MIN_WIDTH = 10; - var MIN_HEIGHT = 10; - - // Ensure a value is non-negative (for x/y setters) - function clamp(value) { - return Math.max(value, 0); - } - - /** - * Abstract superclass for other classes which provide useful - * interfaces upon an elements in a fixed position view. - * This handles the generic operations (e.g. remove) so that - * subclasses only need to implement element-specific behaviors. - * - * Note that arguments here are meant to match those expected - * by `Array.prototype.map` - * - * @memberof platform/features/layout - * @constructor - * @param element the fixed position element, as stored in its - * configuration - * @param index the element's index within its array - * @param {Array} elements the full array of elements - * @param {number[]} gridSize the current layout grid size in [x,y] from - */ - function ElementProxy(element, index, elements, gridSize) { - /** - * The element as stored in the view configuration. - * @memberof platform/features/layout.ElementProxy# - */ - this.element = element; - - /** - * The current grid size of the layout. - * @memberof platform/features/layout.ElementProxy# - */ - this.gridSize = gridSize || [1,1]; //Ensure a reasonable default - - /** - * Get and/or set the x position of this element. - * Units are in fixed position grid space. - * @param {number} [x] the new x position (if setting) - * @returns {number} the x position - * @memberof platform/features/layout.ElementProxy# - */ - this.x = new AccessorMutator(element, 'x', clamp); - - /** - * Get and/or set the y position of this element. - * Units are in fixed position grid space. - * @param {number} [y] the new y position (if setting) - * @returns {number} the y position - * @memberof platform/features/layout.ElementProxy# - */ - this.y = new AccessorMutator(element, 'y', clamp); - - /** - * Get and/or set the stroke color of this element. - * @param {string} [stroke] the new stroke color (if setting) - * @returns {string} the stroke color - * @memberof platform/features/layout.ElementProxy# - */ - this.stroke = new AccessorMutator(element, 'stroke'); - - /** - * Get and/or set the width of this element. - * Units are in fixed position grid space. - * @param {number} [w] the new width (if setting) - * @returns {number} the width - * @memberof platform/features/layout.ElementProxy# - */ - this.width = new AccessorMutator(element, 'width'); - - /** - * Get and/or set the height of this element. - * Units are in fixed position grid space. - * @param {number} [h] the new height (if setting) - * @returns {number} the height - * @memberof platform/features/layout.ElementProxy# - */ - this.height = new AccessorMutator(element, 'height'); - - this.useGrid = new UnitAccessorMutator(this); - this.index = index; - this.elements = elements; - this.resizeHandles = [new ResizeHandle(this, this.element)]; - } - - /** - * Change the display order of this element. - * @param {string} o where to move this element; - * one of "top", "up", "down", or "bottom" - * @return {Array} the full array of elements - */ - ElementProxy.prototype.order = function (o) { - var index = this.index, - elements = this.elements, - element = this.element, - delta = ORDERS[o] || 0, - desired = Math.max( - Math.min(index + delta, elements.length - 1), - 0 - ); - // Move to the desired index, if this is a change - if ((desired !== index) && (elements[index] === element)) { - // Splice out the current element - elements.splice(index, 1); - // Splice it back in at the correct index - elements.splice(desired, 0, element); - // Track change in index (proxy should be recreated - // anyway, but be consistent) - this.index = desired; - } - - return elements; - }; - - /** - * Get handles to control specific features of this element, - * e.g. corner size. - * @return {platform/features/layout.ElementHandle[]} handles - * for moving/resizing this element - */ - ElementProxy.prototype.handles = function () { - return this.resizeHandles; - }; - - /** - * Returns which grid size the element is currently using. - * @return {number[]} The current grid size in [x,y] form if the element - * is currently using the grid, [1,1] if it is using - * pixels. - */ - ElementProxy.prototype.getGridSize = function () { - var gridSize; - // Default to using the grid if useGrid was not defined - if (typeof this.element.useGrid === 'undefined') { - this.element.useGrid = true; - } - if (this.element.useGrid) { - gridSize = this.gridSize; - } else { - gridSize = [1,1]; - } - return gridSize; - }; - - /** - * Set the current grid size stored by this element proxy - * @param {number[]} gridSize The current layout grid size in [x,y] form - */ - ElementProxy.prototype.setGridSize = function (gridSize) { - this.gridSize = gridSize; - }; - - /** - * Get the current minimum element width in grid units - * @return {number} The current minimum element width - */ - ElementProxy.prototype.getMinWidth = function () { - return Math.ceil(MIN_WIDTH / this.getGridSize()[0]); - }; - - /** - * Get the current minimum element height in grid units - * @return {number} The current minimum element height - */ - ElementProxy.prototype.getMinHeight = function () { - return Math.ceil(MIN_HEIGHT / this.getGridSize()[1]); - }; - - return ElementProxy; - } -); diff --git a/platform/features/fixed/src/elements/ImageProxy.js b/platform/features/fixed/src/elements/ImageProxy.js deleted file mode 100644 index e3a2c42db0..0000000000 --- a/platform/features/fixed/src/elements/ImageProxy.js +++ /dev/null @@ -1,58 +0,0 @@ -/***************************************************************************** - * 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( - ['./ElementProxy', './AccessorMutator'], - function (ElementProxy, AccessorMutator) { - - /** - * Selection proxy for Image elements in a fixed position view. - * - * Note that arguments here are meant to match those expected - * by `Array.prototype.map` - * - * @memberof platform/features/layout - * @constructor - * @param element the fixed position element, as stored in its - * configuration - * @param index the element's index within its array - * @param {Array} elements the full array of elements - * @param {number[]} gridSize the current layout grid size in [x,y] from - * @augments {platform/features/layout.ElementProxy} - */ - function ImageProxy(element, index, elements, gridSize) { - var proxy = new ElementProxy(element, index, elements, gridSize); - - /** - * Get and/or set the displayed text of this element. - * @param {string} [text] the new text (if setting) - * @returns {string} the text - * @memberof platform/features/layout.ImageProxy# - */ - proxy.url = new AccessorMutator(element, 'url'); - - return proxy; - } - - return ImageProxy; - } -); diff --git a/platform/features/fixed/src/elements/LineHandle.js b/platform/features/fixed/src/elements/LineHandle.js deleted file mode 100644 index eff2933b5a..0000000000 --- a/platform/features/fixed/src/elements/LineHandle.js +++ /dev/null @@ -1,94 +0,0 @@ -/***************************************************************************** - * 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( - [], - function () { - - /** - * Handle for changing x/y position of a line's end point. - * This is used to support drag handles for line elements - * in a fixed position view. Field names for opposite ends - * are provided to avoid zero-length lines. - * @memberof platform/features/layout - * @constructor - * @param element the line element - * @param {string} xProperty field which stores x position - * @param {string} yProperty field which stores y position - * @param {string} xOther field which stores x of other end - * @param {string} yOther field which stores y of other end - * @implements {platform/features/layout.ElementHandle} - */ - function LineHandle(element, elementProxy, xProperty, yProperty, xOther, yOther) { - this.elementProxy = elementProxy; - this.element = element; - this.xProperty = xProperty; - this.yProperty = yProperty; - this.xOther = xOther; - this.yOther = yOther; - } - - LineHandle.prototype.x = function (value) { - var element = this.element, - xProperty = this.xProperty, - yProperty = this.yProperty, - xOther = this.xOther, - yOther = this.yOther; - - if (arguments.length > 0) { - // Ensure we stay in view - value = Math.max(value, 0); - // Make sure end points will still be different - if (element[yOther] !== element[yProperty] || - element[xOther] !== value) { - element[xProperty] = value; - } - } - return element[xProperty]; - }; - - LineHandle.prototype.y = function (value) { - var element = this.element, - xProperty = this.xProperty, - yProperty = this.yProperty, - xOther = this.xOther, - yOther = this.yOther; - - if (arguments.length > 0) { - // Ensure we stay in view - value = Math.max(value, 0); - // Make sure end points will still be different - if (element[xOther] !== element[xProperty] || - element[yOther] !== value) { - element[yProperty] = value; - } - } - return element[yProperty]; - }; - - LineHandle.prototype.getGridSize = function () { - return this.elementProxy.getGridSize(); - }; - - return LineHandle; - - } -); diff --git a/platform/features/fixed/src/elements/LineProxy.js b/platform/features/fixed/src/elements/LineProxy.js deleted file mode 100644 index ea042c35a1..0000000000 --- a/platform/features/fixed/src/elements/LineProxy.js +++ /dev/null @@ -1,171 +0,0 @@ -/***************************************************************************** - * 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( - ['./ElementProxy', './LineHandle', './AccessorMutator'], - function (ElementProxy, LineHandle, AccessorMutator) { - - /** - * Selection/diplay proxy for line elements of a fixed position - * view. - * @memberof platform/features/layout - * @constructor - * @param element the fixed position element, as stored in its - * configuration - * @param index the element's index within its array - * @param {Array} elements the full array of elements - * @param {number[]} gridSize the current layout grid size in [x,y] from - * @augments {platform/features/layout.ElementProxy} - */ - function LineProxy(element, index, elements, gridSize) { - var proxy = new ElementProxy(element, index, elements, gridSize), - handles = [ - new LineHandle(element, proxy, 'x', 'y', 'x2', 'y2'), - new LineHandle(element, proxy, 'x2', 'y2', 'x', 'y') - ]; - - /** - * Gets style specific to line proxy. - */ - proxy.getStyle = function () { - var layoutGridSize = proxy.getGridSize(); - - return { - left: (layoutGridSize[0] * proxy.x()) + 'px', - top: (layoutGridSize[1] * proxy.y()) + 'px', - width: (layoutGridSize[0] * proxy.width()) + 'px', - height: (layoutGridSize[1] * proxy.height()) + 'px' - }; - }; - - /** - * Get the top-left x coordinate, in grid space, of - * this line's bounding box. - * @returns {number} the x coordinate - * @memberof platform/features/layout.LineProxy# - */ - proxy.x = function (v) { - var x = Math.min(element.x, element.x2), - delta = Math.max(v, 0) - x; - if (arguments.length > 0 && delta) { - element.x += delta; - element.x2 += delta; - } - return x; - }; - - /** - * Get the top-left y coordinate, in grid space, of - * this line's bounding box. - * @returns {number} the y coordinate - * @memberof platform/features/layout.LineProxy# - */ - proxy.y = function (v) { - var y = Math.min(element.y, element.y2), - delta = Math.max(v, 0) - y; - if (arguments.length > 0 && delta) { - element.y += delta; - element.y2 += delta; - } - return y; - }; - - /** - * Get the width, in grid space, of - * this line's bounding box. - * @returns {number} the width - * @memberof platform/features/layout.LineProxy# - */ - proxy.width = function () { - return Math.max(Math.abs(element.x - element.x2), 1); - }; - - /** - * Get the height, in grid space, of - * this line's bounding box. - * @returns {number} the height - * @memberof platform/features/layout.LineProxy# - */ - proxy.height = function () { - return Math.max(Math.abs(element.y - element.y2), 1); - }; - - /** - * Get the x position, in grid units relative to - * the top-left corner, of the first point in this line - * segment. - * @returns {number} the x position of the first point - * @memberof platform/features/layout.LineProxy# - */ - proxy.x1 = function () { - return element.x - proxy.x(); - }; - - /** - * Get the y position, in grid units relative to - * the top-left corner, of the first point in this line - * segment. - * @returns {number} the y position of the first point - * @memberof platform/features/layout.LineProxy# - */ - proxy.y1 = function () { - return element.y - proxy.y(); - }; - - /** - * Get the x position, in grid units relative to - * the top-left corner, of the second point in this line - * segment. - * @returns {number} the x position of the second point - * @memberof platform/features/layout.LineProxy# - */ - proxy.x2 = function () { - return element.x2 - proxy.x(); - }; - - /** - * Get the y position, in grid units relative to - * the top-left corner, of the second point in this line - * segment. - * @returns {number} the y position of the second point - * @memberof platform/features/layout.LineProxy# - */ - proxy.y2 = function () { - return element.y2 - proxy.y(); - }; - - /** - * Get element handles for changing the position of end - * points of this line. - * @returns {LineHandle[]} line handles for both end points - * @memberof platform/features/layout.LineProxy# - */ - proxy.handles = function () { - return handles; - }; - - return proxy; - } - - return LineProxy; - } -); diff --git a/platform/features/fixed/src/elements/ResizeHandle.js b/platform/features/fixed/src/elements/ResizeHandle.js deleted file mode 100644 index 14ee70d165..0000000000 --- a/platform/features/fixed/src/elements/ResizeHandle.js +++ /dev/null @@ -1,72 +0,0 @@ -/***************************************************************************** - * 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( - [], - function () { - - /** - * @interface platform/features/layout.ElementHandle - * @private - */ - - /** - * Handle for changing width/height properties of an element. - * This is used to support drag handles for different - * element types in a fixed position view. - * @memberof platform/features/layout - * @constructor - */ - function ResizeHandle(elementProxy, element) { - this.elementProxy = elementProxy; - this.element = element; - } - - ResizeHandle.prototype.x = function (value) { - var element = this.element; - if (arguments.length > 0) { - element.width = Math.max( - this.elementProxy.getMinWidth(), - value - element.x - ); - } - return element.x + element.width; - }; - - ResizeHandle.prototype.y = function (value) { - var element = this.element; - if (arguments.length > 0) { - element.height = Math.max( - this.elementProxy.getMinHeight(), - value - element.y - ); - } - return element.y + element.height; - }; - - ResizeHandle.prototype.getGridSize = function () { - return this.elementProxy.getGridSize(); - }; - - return ResizeHandle; - - } -); diff --git a/platform/features/fixed/src/elements/TelemetryProxy.js b/platform/features/fixed/src/elements/TelemetryProxy.js deleted file mode 100644 index 574e2b1b8a..0000000000 --- a/platform/features/fixed/src/elements/TelemetryProxy.js +++ /dev/null @@ -1,56 +0,0 @@ -/***************************************************************************** - * 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( - ['./TextProxy'], - function (TextProxy) { - - /** - * Selection proxy for telemetry elements in a fixed position view. - * - * Note that arguments here are meant to match those expected - * by `Array.prototype.map` - * - * @memberof platform/features/layout - * @constructor - * @param element the fixed position element, as stored in its - * configuration - * @param index the element's index within its array - * @param {Array} elements the full array of elements - * @param {number[]} gridSize the current layout grid size in [x,y] form - * @augments {platform/features/layout.ElementProxy} - */ - function TelemetryProxy(element, index, elements, gridSize) { - var proxy = new TextProxy(element, index, elements, gridSize); - - // Expose the domain object identifier - proxy.id = element.id; - - // Don't expose text configuration - delete proxy.text; - - return proxy; - } - - return TelemetryProxy; - } -); diff --git a/platform/features/fixed/src/elements/TextProxy.js b/platform/features/fixed/src/elements/TextProxy.js deleted file mode 100644 index 1aac034cee..0000000000 --- a/platform/features/fixed/src/elements/TextProxy.js +++ /dev/null @@ -1,75 +0,0 @@ -/***************************************************************************** - * 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( - ['./BoxProxy', './AccessorMutator'], - function (BoxProxy, AccessorMutator) { - - /** - * Selection proxy for Text elements in a fixed position view. - * - * Note that arguments here are meant to match those expected - * by `Array.prototype.map` - * - * @memberof platform/features/layout - * @constructor - * @param element the fixed position element, as stored in its - * configuration - * @param index the element's index within its array - * @param {Array} elements the full array of elements - * @param {number[]} gridSize the current layout grid size in [x,y] from - * @augments {platform/features/layout.ElementProxy} - */ - function TextProxy(element, index, elements, gridSize) { - var proxy = new BoxProxy(element, index, elements, gridSize); - - /** - * Get and/or set the text color of this element. - * @param {string} [color] the new text color (if setting) - * @returns {string} the text color - * @memberof platform/features/layout.TextProxy# - */ - proxy.color = new AccessorMutator(element, 'color'); - - /** - * Get and/or set the displayed text of this element. - * @param {string} [text] the new text (if setting) - * @returns {string} the text - * @memberof platform/features/layout.TextProxy# - */ - proxy.text = new AccessorMutator(element, 'text'); - - /** - * Get and/or set the text size of this element. - * - * @param {string} [size] the new text size (if setting) - * @returns {string} the text size - * @memberof platform/features/layout.TextProxy# - */ - proxy.size = new AccessorMutator(element, 'size'); - - return proxy; - } - - return TextProxy; - } -); diff --git a/platform/features/fixed/src/elements/UnitAccessorMutator.js b/platform/features/fixed/src/elements/UnitAccessorMutator.js deleted file mode 100644 index b8a77f3965..0000000000 --- a/platform/features/fixed/src/elements/UnitAccessorMutator.js +++ /dev/null @@ -1,92 +0,0 @@ -/***************************************************************************** - * 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( - [], - function () { - - /** - * Variant of AccessorMutator to handle the specific case of updating - * useGrid, in order update the positions appropriately from within - * the scope of UnitAccessorMutator - * - * @memberof platform/features/layout - * @constructor - * @param {ElementProxy} proxy ElementProxy object to perform the update - * upon - */ - function UnitAccessorMutator(elementProxy) { - var self = this; - - this.elementProxy = elementProxy; - return function (useGrid) { - var current = elementProxy.element.useGrid; - if (arguments.length > 0) { - elementProxy.element.useGrid = useGrid; - if (useGrid && !current) { - self.convertCoordsTo('grid'); - } else if (!useGrid && current) { - self.convertCoordsTo('px'); - } - } - - return elementProxy.element.useGrid; - }; - } - - /** - * For the elementProxy object called upon, convert its element's - * coordinates and size from pixels to grid units, or vice-versa. - * @param {string} unit When called with 'px', converts grid units to - * pixels; when called with 'grid', snaps element - * to grid units - */ - UnitAccessorMutator.prototype.convertCoordsTo = function (unit) { - var proxy = this.elementProxy, - gridSize = proxy.gridSize, - element = proxy.element, - minWidth = proxy.getMinWidth(), - minHeight = proxy.getMinHeight(); - if (unit === 'px') { - element.x = element.x * gridSize[0]; - element.y = element.y * gridSize[1]; - element.width = element.width * gridSize[0]; - element.height = element.height * gridSize[1]; - if (element.x2 && element.y2) { - element.x2 = element.x2 * gridSize[0]; - element.y2 = element.y2 * gridSize[1]; - } - } else if (unit === 'grid') { - element.x = Math.round(element.x / gridSize[0]); - element.y = Math.round(element.y / gridSize[1]); - element.width = Math.max(Math.round(element.width / gridSize[0]), minWidth); - element.height = Math.max(Math.round(element.height / gridSize[1]), minHeight); - if (element.x2 && element.y2) { - element.x2 = Math.round(element.x2 / gridSize[0]); - element.y2 = Math.round(element.y2 / gridSize[1]); - } - } - }; - - return UnitAccessorMutator; - } -); diff --git a/platform/features/fixed/templates/elements/box.html b/platform/features/fixed/templates/elements/box.html deleted file mode 100644 index 4bb59032f7..0000000000 --- a/platform/features/fixed/templates/elements/box.html +++ /dev/null @@ -1,26 +0,0 @@ - -
-
diff --git a/platform/features/fixed/templates/elements/image.html b/platform/features/fixed/templates/elements/image.html deleted file mode 100644 index 5070a2cc1b..0000000000 --- a/platform/features/fixed/templates/elements/image.html +++ /dev/null @@ -1,26 +0,0 @@ - -
-
diff --git a/platform/features/fixed/templates/elements/line.html b/platform/features/fixed/templates/elements/line.html deleted file mode 100644 index 723b255456..0000000000 --- a/platform/features/fixed/templates/elements/line.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - diff --git a/platform/features/fixed/templates/elements/telemetry.html b/platform/features/fixed/templates/elements/telemetry.html deleted file mode 100644 index 3d81b712b3..0000000000 --- a/platform/features/fixed/templates/elements/telemetry.html +++ /dev/null @@ -1,39 +0,0 @@ - -
- - {{ngModel.value}} - - - {{ngModel.name}} - -
diff --git a/platform/features/fixed/templates/elements/text.html b/platform/features/fixed/templates/elements/text.html deleted file mode 100644 index 38999f20fb..0000000000 --- a/platform/features/fixed/templates/elements/text.html +++ /dev/null @@ -1,27 +0,0 @@ - -
- {{ngModel.element.text}} -
diff --git a/platform/features/fixed/templates/fixed.html b/platform/features/fixed/templates/fixed.html deleted file mode 100644 index bdeca501d4..0000000000 --- a/platform/features/fixed/templates/fixed.html +++ /dev/null @@ -1,62 +0,0 @@ - -
- - -
-
-
-
- - -
- - -
- - -
-
-
-
-
-
diff --git a/platform/features/fixed/templates/frame.html b/platform/features/fixed/templates/frame.html deleted file mode 100644 index 96d24d4ab0..0000000000 --- a/platform/features/fixed/templates/frame.html +++ /dev/null @@ -1,49 +0,0 @@ - -
-
-
- - -
-
- - - - -
-
-
- - -
-
diff --git a/platform/features/fixed/test/FixedControllerSpec.js b/platform/features/fixed/test/FixedControllerSpec.js deleted file mode 100644 index 9506dd9d78..0000000000 --- a/platform/features/fixed/test/FixedControllerSpec.js +++ /dev/null @@ -1,641 +0,0 @@ -/***************************************************************************** - * 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( - [ - "../src/FixedController", - "zepto" - ], - function ( - FixedController, - $ - ) { - - describe("The Fixed Position controller", function () { - var mockScope, - mockQ, - mockDialogService, - mockFormatter, - mockDomainObject, - mockEvent, - testGrid, - testModel, - testConfiguration, - mockOpenMCT, - mockTelemetryAPI, - mockCompositionAPI, - mockCompositionCollection, - mockChildren, - mockConductor, - mockMetadata, - mockTimeSystem, - mockLimitEvaluator, - mockSelection, - mockObjects, - mockNewDomainObject, - unlistenFunc, - $element = [], - selectable = [], - controller; - - // Utility function; find a $on calls for a given expression. - function findOn(expr) { - var on; - mockScope.$on.calls.all().forEach(function (call) { - if (call.args[0] === expr) { - on = call.args[1]; - } - }); - return on; - } - - function makeMockDomainObject(id) { - return { - identifier: { - key: "domainObject-" + id, - namespace: "" - }, - name: "Point " + id - }; - } - - beforeEach(function () { - mockScope = jasmine.createSpyObj( - '$scope', - ["$on", "$watch", "$digest", "commit"] - ); - mockQ = jasmine.createSpyObj('$q', ['when']); - mockDialogService = jasmine.createSpyObj( - 'dialogService', - ['getUserInput'] - ); - mockFormatter = jasmine.createSpyObj( - 'telemetryFormatter', - ['format'] - ); - mockFormatter.format.and.callFake(function (valueMetadata) { - return "Formatted " + valueMetadata.value; - }); - - mockConductor = jasmine.createSpyObj('conductor', [ - 'on', - 'off', - 'bounds', - 'timeSystem', - 'clock' - ]); - mockConductor.bounds.and.returnValue({}); - mockTimeSystem = { - metadata: { - key: 'key' - } - }; - mockConductor.timeSystem.and.returnValue(mockTimeSystem); - - mockEvent = jasmine.createSpyObj( - 'event', - ['preventDefault'] - ); - - mockTelemetryAPI = jasmine.createSpyObj('telemetry', - [ - 'subscribe', - 'request', - 'isTelemetryObject', - 'getMetadata', - 'limitEvaluator', - 'getValueFormatter' - ] - ); - mockTelemetryAPI.isTelemetryObject.and.returnValue(true); - mockTelemetryAPI.request.and.returnValue(Promise.resolve([])); - - testGrid = [123, 456]; - testModel = { - composition: ['a', 'b', 'c'], - layoutGrid: testGrid - }; - testConfiguration = { elements: [ - { type: "fixed.telemetry", id: 'a', x: 1, y: 1, useGrid: true}, - { type: "fixed.telemetry", id: 'b', x: 1, y: 1, useGrid: true}, - { type: "fixed.telemetry", id: 'c', x: 1, y: 1, useGrid: true} - ]}; - - mockChildren = testModel.composition.map(makeMockDomainObject); - mockCompositionCollection = jasmine.createSpyObj('compositionCollection', [ - 'load', - 'on', - 'off' - ]); - mockCompositionAPI = jasmine.createSpyObj('composition', [ - 'get' - ]); - mockCompositionAPI.get.and.returnValue(mockCompositionCollection); - mockCompositionCollection.load.and.returnValue( - Promise.resolve(mockChildren) - ); - - mockScope.model = testModel; - mockScope.configuration = testConfiguration; - - mockNewDomainObject = jasmine.createSpyObj("newDomainObject", [ - 'layoutGrid', - 'configuration', - 'composition' - ]); - mockNewDomainObject.layoutGrid = testGrid; - mockNewDomainObject.configuration = { - 'fixed-display': testConfiguration - }; - mockNewDomainObject.composition = ['a', 'b', 'c']; - - mockDomainObject = jasmine.createSpyObj( - 'domainObject', - ['getId', 'getModel', 'getCapability', 'useCapability'] - ); - mockDomainObject.useCapability.and.returnValue(mockNewDomainObject); - mockScope.domainObject = mockDomainObject; - - selectable[0] = { - context: { - oldItem: mockDomainObject - } - }; - mockSelection = jasmine.createSpyObj("selection", [ - 'select', - 'on', - 'off', - 'get' - ]); - mockSelection.get.and.returnValue([]); - - unlistenFunc = jasmine.createSpy("unlisten"); - mockObjects = jasmine.createSpyObj('objects', [ - 'observe', - 'get' - ]); - mockObjects.observe.and.returnValue(unlistenFunc); - - mockOpenMCT = { - time: mockConductor, - telemetry: mockTelemetryAPI, - composition: mockCompositionAPI, - selection: mockSelection, - objects: mockObjects - }; - - $element = $('
'); - spyOn($element[0], 'click'); - - mockMetadata = jasmine.createSpyObj('mockMetadata', [ - 'valuesForHints', - 'value', - 'values' - ]); - mockMetadata.value.and.returnValue({ - key: 'value' - }); - - mockMetadata.valuesForHints.and.callFake(function (hints) { - if (hints === ['domain']) { - return [{ - key: 'time' - }]; - } else { - return [{ - key: 'value' - }]; - } - }); - - mockLimitEvaluator = jasmine.createSpyObj('limitEvaluator', [ - 'evaluate' - ]); - - mockLimitEvaluator.evaluate.and.returnValue({}); - - mockTelemetryAPI.getMetadata.and.returnValue(mockMetadata); - mockTelemetryAPI.limitEvaluator.and.returnValue(mockLimitEvaluator); - mockTelemetryAPI.getValueFormatter.and.returnValue(mockFormatter); - - controller = new FixedController( - mockScope, - mockQ, - mockDialogService, - mockOpenMCT, - $element - ); - spyOn(controller, "mutate"); - }); - - it("subscribes a domain object", function () { - var object = makeMockDomainObject("mock"); - - return controller.getTelemetry(object).then(function () { - expect(mockTelemetryAPI.subscribe).toHaveBeenCalledWith( - object, - jasmine.any(Function), - jasmine.any(Object) - ); - }); - }); - - it("releases subscription when a domain objects is removed", function () { - var unsubscribe = jasmine.createSpy('unsubscribe'); - var unsubscribePromise = new Promise(function (resolve) { - unsubscribe.and.callFake(resolve); - }); - var object = makeMockDomainObject("mock"); - - mockTelemetryAPI.subscribe.and.returnValue(unsubscribe); - return controller.getTelemetry(object).then(function () { - controller.onCompositionRemove(object.identifier); - return unsubscribePromise; - }).then(function () { - expect(unsubscribe).toHaveBeenCalled(); - }); - }); - - it("exposes visible elements based on configuration", function () { - var elements = controller.getElements(); - - expect(elements.length).toEqual(3); - expect(elements[0].id).toEqual('a'); - expect(elements[1].id).toEqual('b'); - expect(elements[2].id).toEqual('c'); - }); - - it("allows elements to be selected", function () { - selectable[0].context.elementProxy = controller.getElements()[1]; - mockOpenMCT.selection.on.calls.mostRecent().args[1](selectable); - - expect(controller.isElementSelected()).toBe(true); - }); - - it("allows selection retrieval", function () { - var elements = controller.getElements(); - selectable[0].context.elementProxy = elements[1]; - mockOpenMCT.selection.on.calls.mostRecent().args[1](selectable); - - expect(controller.getSelectedElement()).toEqual(elements[1]); - }); - - it("selects the parent view when selected element is removed", function () { - var elements = controller.getElements(); - selectable[0].context.elementProxy = elements[1]; - mockOpenMCT.selection.on.calls.mostRecent().args[1](selectable); - controller.remove(elements[1]); - - expect($element[0].click).toHaveBeenCalled(); - }); - - it("retains selections during refresh", function () { - // Get elements; remove one of them; trigger refresh. - // Same element (at least by index) should still be selected. - var elements = controller.getElements(); - selectable[0].context.elementProxy = elements[1]; - mockOpenMCT.selection.on.calls.mostRecent().args[1](selectable); - - expect(controller.getSelectedElement()).toEqual(elements[1]); - - controller.remove(elements[2]); - elements = controller.getElements(); - - // Verify removal, as test assumes this - expect(elements.length).toEqual(2); - - expect(controller.shouldSelect(elements[1])).toBe(true); - }); - - it("Displays received values for telemetry elements", function () { - var elements; - var mockTelemetry = { - time: 100, - value: 200 - }; - var testElement = {}; - var telemetryObject = { - identifier: { - key: '12345' - } - }; - mockConductor.clock.and.returnValue({}); - controller.elementProxiesById = {}; - controller.elementProxiesById['12345'] = [testElement]; - controller.elementProxies = [testElement]; - - controller.subscribeToObject(telemetryObject); - mockTelemetryAPI.subscribe.calls.mostRecent().args[1](mockTelemetry); - - return new Promise(function (resolve) { - mockScope.$digest.and.callFake(resolve); - }).then(function () { - // Get elements that controller is now exposing - elements = controller.getElements(); - - // Formatted values should be available - expect(elements[0].value).toEqual("Formatted 200"); - }); - }); - - it("updates elements styles when grid size changes", function () { - // Grid size is initially set to testGrid which is [123, 456] - var originalLeft = controller.getElements()[0].style.left; - - // Change the grid size - controller.updateElementPositions([20, 20]); - - expect(controller.getElements()[0].style.left).not.toEqual(originalLeft); - }); - - it("listens for drop events", function () { - mockScope.domainObject = mockDomainObject; - mockScope.model = testModel; - - // Layout should position panels according to - // where the user dropped them, so it needs to - // listen for drop events. - expect(mockScope.$on).toHaveBeenCalledWith( - 'mctDrop', - jasmine.any(Function) - ); - - // Verify precondition - expect(testConfiguration.elements.length).toEqual(3); - - // Notify that a drop occurred - testModel.composition.push('d'); - - mockObjects.get.and.returnValue(Promise.resolve([])); - - findOn('mctDrop')( - mockEvent, - 'd', - { x: 300, y: 100 } - ); - - // Should have added an element - expect(testConfiguration.elements.length).toEqual(4); - - // ...and prevented default... - expect(mockEvent.preventDefault).toHaveBeenCalled(); - }); - - it("ignores drops when default has been prevented", function () { - // Avoids redundant drop-handling, WTD-1233 - mockEvent.defaultPrevented = true; - - // Notify that a drop occurred - testModel.composition.push('d'); - findOn('mctDrop')( - mockEvent, - 'd', - { x: 300, y: 100 } - ); - - // Should NOT have added an element - expect(testConfiguration.elements.length).toEqual(3); - }); - - it("unsubscribes when destroyed", function () { - var unsubscribe = jasmine.createSpy('unsubscribe'); - var object = makeMockDomainObject("mock"); - - mockTelemetryAPI.subscribe.and.returnValue(unsubscribe); - - return controller.getTelemetry(object).then(function () { - expect(unsubscribe).not.toHaveBeenCalled(); - // Destroy the scope - findOn('$destroy')(); - - expect(unsubscribe).toHaveBeenCalled(); - }); - }); - - it("exposes its grid size", function () { - expect(controller.getGridSize()).toEqual(testGrid); - }); - - it("exposes drag handles", function () { - var handles; - selectable[0].context.elementProxy = controller.getElements()[1]; - mockOpenMCT.selection.on.calls.mostRecent().args[1](selectable); - - // Should have a non-empty array of handles - handles = controller.handles(); - - expect(handles).toEqual(jasmine.any(Array)); - expect(handles.length).not.toEqual(0); - - // And they should have start/continue/end drag methods - handles.forEach(function (handle) { - expect(handle.startDrag).toEqual(jasmine.any(Function)); - expect(handle.continueDrag).toEqual(jasmine.any(Function)); - expect(handle.endDrag).toEqual(jasmine.any(Function)); - }); - }); - - it("exposes a move handle", function () { - selectable[0].context.elementProxy = controller.getElements()[1]; - mockOpenMCT.selection.on.calls.mostRecent().args[1](selectable); - - // Should have a move handle - var handle = controller.moveHandle(); - - // And it should have start/continue/end drag methods - expect(handle.startDrag).toEqual(jasmine.any(Function)); - expect(handle.continueDrag).toEqual(jasmine.any(Function)); - expect(handle.endDrag).toEqual(jasmine.any(Function)); - }); - - it("updates selection style during drag", function () { - var oldStyle; - selectable[0].context.elementProxy = controller.getElements()[1]; - mockOpenMCT.selection.on.calls.mostRecent().args[1](selectable); - - // Get style - oldStyle = controller.getSelectedElementStyle(); - - // Start a drag gesture - controller.moveHandle().startDrag(); - - // Haven't moved yet; style shouldn't have updated yet - expect(controller.getSelectedElementStyle()).toEqual(oldStyle); - - // Drag a little - controller.moveHandle().continueDrag([1000, 100]); - - // Style should have been updated - expect(controller.getSelectedElementStyle()).not.toEqual(oldStyle); - }); - - it("cleans up selection on scope destroy", function () { - expect(mockScope.$on).toHaveBeenCalledWith( - '$destroy', - jasmine.any(Function) - ); - - mockScope.$on.calls.mostRecent().args[1](); - - expect(mockOpenMCT.selection.off).toHaveBeenCalledWith( - 'change', - jasmine.any(Function) - ); - }); - - describe("on display bounds changes", function () { - var testBounds; - var boundsChangeCallback; - var objectOne; - var objectTwo; - - beforeEach(function () { - testBounds = { start: 123, end: 321 }; - boundsChangeCallback = mockConductor.on.calls.mostRecent().args[1]; - objectOne = {}; - objectTwo = {}; - controller.telemetryObjects = [ - objectOne, - objectTwo - ]; - spyOn(controller, "fetchHistoricalData"); - controller.fetchHistoricalData.and.callThrough(); - }); - - it("registers a bounds change listener", function () { - expect(mockConductor.on).toHaveBeenCalledWith("bounds", jasmine.any(Function)); - }); - - it("requests only a single point", function () { - mockConductor.clock.and.returnValue(undefined); - boundsChangeCallback(testBounds); - expect(mockTelemetryAPI.request.calls.count()).toBe(2); - - mockTelemetryAPI.request.calls.all().forEach(function (call) { - expect(call.args[1].size).toBe(1); - }); - }); - - it("Does not fetch historical data on tick", function () { - boundsChangeCallback(testBounds, true); - expect(mockTelemetryAPI.request.calls.count()).toBe(0); - }); - }); - - describe("on receipt of telemetry", function () { - var mockTelemetryObject; - var testValue; - var testElement; - - beforeEach(function () { - mockTelemetryObject = { - identifier: { - key: '12345' - } - }; - testValue = 30; - testElement = {}; - - controller.elementProxiesById = {}; - controller.elementProxiesById['12345'] = [testElement]; - controller.elementProxies = [testElement]; - }); - - it("updates displayed values from historical telemetry", function () { - spyOn(controller, "updateView"); - controller.updateView.and.callThrough(); - - mockTelemetryAPI.request.and.returnValue(Promise.resolve([{ - time: 100, - value: testValue - }])); - - controller.fetchHistoricalData(mockTelemetryObject); - - return new Promise(function (resolve) { - mockScope.$digest.and.callFake(resolve); - }).then(function () { - expect(controller.updateView).toHaveBeenCalled(); - expect(controller.getElements()[0].value) - .toEqual("Formatted " + testValue); - }); - }); - - it("selects an range value to display, if available", function () { - mockMetadata.valuesForHints.and.returnValue([ - { - key: 'range', - source: 'range' - } - ]); - var key = controller.chooseValueMetadataToDisplay(mockMetadata).source; - expect(key).toEqual('range'); - }); - - it("selects the first non-domain value to display, if no range available", function () { - mockMetadata.valuesForHints.and.returnValue([]); - mockMetadata.values.and.returnValue([ - { - key: 'domain', - source: 'domain', - hints: { - domain: 1 - } - }, - { - key: 'image', - source: 'image', - hints: { - image: 1 - } - } - ]); - var key = controller.chooseValueMetadataToDisplay(mockMetadata).source; - expect(key).toEqual('image'); - }); - - it("reflects limit status", function () { - mockLimitEvaluator.evaluate.and.returnValue({cssClass: "alarm-a"}); - controller.updateView(mockTelemetryObject, [{ - time: 100, - value: testValue - }]); - - return new Promise(function (resolve) { - mockScope.$digest.and.callFake(resolve); - }).then(function () { - // Limit-based CSS classes should be available - expect(controller.getElements()[0].cssClass).toEqual("alarm-a"); - }); - }); - - it("listens for selection change events", function () { - expect(mockOpenMCT.selection.on).toHaveBeenCalledWith( - 'change', - jasmine.any(Function) - ); - }); - - }); - }); - } -); diff --git a/platform/features/fixed/test/FixedDragHandleSpec.js b/platform/features/fixed/test/FixedDragHandleSpec.js deleted file mode 100644 index 9e8daa2ac1..0000000000 --- a/platform/features/fixed/test/FixedDragHandleSpec.js +++ /dev/null @@ -1,92 +0,0 @@ -/***************************************************************************** - * 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( - ['../src/FixedDragHandle'], - function (FixedDragHandle) { - - var TEST_GRID_SIZE = [13, 33]; - - describe("A fixed position drag handle", function () { - var mockElementHandle, - mockConfigPath, - mockFixedControl, - handle; - - beforeEach(function () { - mockElementHandle = jasmine.createSpyObj( - 'elementHandle', - ['x', 'y','getGridSize'] - ); - mockElementHandle.x.and.returnValue(6); - mockElementHandle.y.and.returnValue(8); - mockElementHandle.getGridSize.and.returnValue(TEST_GRID_SIZE); - - mockFixedControl = jasmine.createSpyObj( - 'fixedControl', - ['updateSelectionStyle', 'mutate'] - ); - mockFixedControl.updateSelectionStyle.and.returnValue(); - mockFixedControl.mutate.and.returnValue(); - - mockConfigPath = jasmine.createSpy('configPath'); - - handle = new FixedDragHandle( - mockElementHandle, - mockConfigPath, - mockFixedControl - ); - }); - - it("provides a style for positioning", function () { - var style = handle.style(); - // 6 grid coords * 13 pixels - 3 pixels for centering - expect(style.left).toEqual('75px'); - // 8 grid coords * 33 pixels - 3 pixels for centering - expect(style.top).toEqual('261px'); - }); - - it("allows handles to be dragged", function () { - handle.startDrag(); - handle.continueDrag([16, 8]); - - // Should update x/y, snapped to grid - expect(mockElementHandle.x).toHaveBeenCalledWith(7); - expect(mockElementHandle.y).toHaveBeenCalledWith(8); - - handle.continueDrag([-16, -35]); - - // Should have interpreted relative to initial state - expect(mockElementHandle.x).toHaveBeenCalledWith(5); - expect(mockElementHandle.y).toHaveBeenCalledWith(7); - - // Should have called updateSelectionStyle once per continueDrag - expect(mockFixedControl.updateSelectionStyle.calls.count()).toEqual(2); - - // Finally, ending drag should mutate - handle.endDrag(); - expect(mockFixedControl.mutate).toHaveBeenCalled(); - }); - - }); - } -); diff --git a/platform/features/fixed/test/FixedProxySpec.js b/platform/features/fixed/test/FixedProxySpec.js deleted file mode 100644 index 370a35e02e..0000000000 --- a/platform/features/fixed/test/FixedProxySpec.js +++ /dev/null @@ -1,71 +0,0 @@ -/***************************************************************************** - * 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( - ['../src/FixedProxy'], - function (FixedProxy) { - - describe("Fixed Position view's selection proxy", function () { - var mockCallback, - mockQ, - mockDialogService, - mockPromise, - proxy; - - beforeEach(function () { - mockCallback = jasmine.createSpy('callback'); - mockQ = jasmine.createSpyObj('$q', ['when']); - mockDialogService = jasmine.createSpyObj('dialogService', ['getUserInput']); - mockPromise = jasmine.createSpyObj('promise', ['then']); - - mockQ.when.and.returnValue(mockPromise); - - proxy = new FixedProxy(mockCallback, mockQ, mockDialogService); - }); - - it("handles promised element creation", function () { - // The element factory may return promises (e.g. if - // user input is required) so make sure proxy is wrapping these - proxy.add("fixed.box"); - expect(mockQ.when).toHaveBeenCalled(); - }); - - it("notifies its callback when an element is created", function () { - proxy.add("fixed.box"); - // Callback should not have been invoked yet - expect(mockCallback).not.toHaveBeenCalled(); - // Resolve the promise - mockPromise.then.calls.mostRecent().args[0]({}); - // Should have fired the callback - expect(mockCallback).toHaveBeenCalledWith({ - type: "fixed.box", - x: 0, - y: 0, - width: 1, - height: 1, - useGrid: true - }); - }); - - }); - } -); diff --git a/platform/features/fixed/test/LayoutDragSpec.js b/platform/features/fixed/test/LayoutDragSpec.js deleted file mode 100644 index 95b3cadf6a..0000000000 --- a/platform/features/fixed/test/LayoutDragSpec.js +++ /dev/null @@ -1,81 +0,0 @@ -/***************************************************************************** - * 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( - ["../src/LayoutDrag"], - function (LayoutDrag) { - - describe("A Layout drag handler", function () { - var testPosition = { - position: [8, 11], - dimensions: [3, 2] - }; - - it("changes position by a supplied factor, rounding by grid size", function () { - var handler = new LayoutDrag( - testPosition, - [1, 1], - [0, 0], - [10, 20] - ); - - expect(handler.getAdjustedPosition([37, 84])).toEqual({ - position: [12, 15], - dimensions: [3, 2] - }); - expect(handler.getAdjustedPosition([-37, 84])).toEqual({ - position: [4, 15], - dimensions: [3, 2] - }); - }); - - it("changes dimensions by a supplied factor, rounding by grid size", function () { - var handler = new LayoutDrag( - testPosition, - [0, 0], - [1, 1], - [10, 20] - ); - - expect(handler.getAdjustedPosition([37, 84])).toEqual({ - position: [8, 11], - dimensions: [7, 6] - }); - }); - - it("allows mixing dimension and position factors", function () { - var handler = new LayoutDrag( - testPosition, - [0, 1], - [-1, 0], - [10, 20] - ); - - expect(handler.getAdjustedPosition([11, 84])).toEqual({ - position: [8, 15], - dimensions: [2, 2] - }); - }); - - }); - } -); diff --git a/platform/features/fixed/test/MCTTriggerModalSpec.js b/platform/features/fixed/test/MCTTriggerModalSpec.js deleted file mode 100644 index 3bf4088821..0000000000 --- a/platform/features/fixed/test/MCTTriggerModalSpec.js +++ /dev/null @@ -1,128 +0,0 @@ -/***************************************************************************** - * Open MCT, Copyright (c) 2014-2016, 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([ - '../src/MCTTriggerModal' -], function ( - MCTTriggerModal -) { - describe('MCTTriggerModal', function () { - var $scope, - $element, - frame, - layoutContainer, - $document, - mctTriggerModal; - - function makeElement(classes, parentEl) { - var elem = jasmine.createSpyObj('element.' + classes.join('.'), [ - 'hasClass', - 'parent' - ]); - elem.hasClass.and.callFake(function (className) { - return classes.indexOf(className) !== -1; - }); - elem.parent.and.returnValue(parentEl); - var div = document.createElement('div'); - div.className = classes.join(' '); - parentEl[0].appendChild(div); - elem[0] = div; - return elem; - } - - - beforeEach(function () { - $scope = jasmine.createSpyObj('$scope', ['$on']); - $scope.domainObject = { getCapability: function () { - return { getActions: function () { - return []; - }}; - }}; - - $element = jasmine.createSpyObj('$element', [ - 'parent', - 'remove', - 'on', - 'off' - ]); - layoutContainer = document.createElement('div'); - frame = makeElement(['frame'], [layoutContainer]); - var child = makeElement([], frame); - for (var i = 0; i < 5; i++) { - child = makeElement([], child); - } - $element.parent.and.returnValue(child); - $document = [jasmine.createSpyObj('document', ['createElement'])]; - $document[0].body = document.createElement('div'); - $document[0].createElement.and.callFake(function (tag) { - return document.createElement(tag); - }); - - mctTriggerModal = new MCTTriggerModal($document); - }); - - it('is a directive definition', function () { - expect(mctTriggerModal.restrict).toBe('A'); - expect(mctTriggerModal.link).toEqual(jasmine.any(Function)); - }); - - describe('link', function () { - beforeEach(function () { - mctTriggerModal.link($scope, $element); - }); - - it('attaches handlers to $element', function () { - expect($element.on).toHaveBeenCalledWith( - 'click', - jasmine.any(Function) - ); - }); - - it('cleans up on $scope $destroy', function () { - expect($scope.$on).toHaveBeenCalledWith( - '$destroy', - jasmine.any(Function) - ); - $scope.$on.calls.mostRecent().args[1](); - expect($element.off).toHaveBeenCalledWith( - 'click', - jasmine.any(Function) - ); - }); - - it('opens and closes overlays', function () { - [ - 'a.close', 'a.t-done', '.abs.blocker' - ].forEach(function (selector) { - $element.on.calls.mostRecent().args[1](); - var container = $document[0].body.querySelector('.t-contents'); - expect(container.children[0]).toBe(frame[0]); - expect(layoutContainer.children[0]).not.toBe(frame[0]); - $document[0].body.querySelector(selector) - .dispatchEvent(new Event('click')); - expect(container.children[0]).not.toBe(frame[0]); - expect(layoutContainer.children[0]).toBe(frame[0]); - }); - }); - }); - }); -}); diff --git a/platform/features/fixed/test/elements/AccessorMutatorSpec.js b/platform/features/fixed/test/elements/AccessorMutatorSpec.js deleted file mode 100644 index 7f18b42a51..0000000000 --- a/platform/features/fixed/test/elements/AccessorMutatorSpec.js +++ /dev/null @@ -1,50 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/AccessorMutator'], - function (AccessorMutator) { - - describe("An accessor-mutator", function () { - var testObject, - am; - - beforeEach(function () { - testObject = { t: 42, other: 100 }; - am = new AccessorMutator(testObject, 't'); - }); - - it("allows access to a property", function () { - expect(am()).toEqual(42); - }); - - it("allows mutation of a property", function () { - expect(am("some other value")).toEqual("some other value"); - expect(testObject).toEqual({ - t: "some other value", - other: 100 - }); - }); - - }); - } -); diff --git a/platform/features/fixed/test/elements/BoxProxySpec.js b/platform/features/fixed/test/elements/BoxProxySpec.js deleted file mode 100644 index 9ba404fde5..0000000000 --- a/platform/features/fixed/test/elements/BoxProxySpec.js +++ /dev/null @@ -1,55 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/BoxProxy'], - function (BoxProxy) { - - describe("A fixed position box proxy", function () { - var testElement, - testElements, - proxy; - - beforeEach(function () { - testElement = { - x: 1, - y: 2, - width: 42, - height: 24, - fill: "transparent" - }; - testElements = [{}, {}, testElement, {}]; - proxy = new BoxProxy( - testElement, - testElements.indexOf(testElement), - testElements - ); - }); - - it("provides getter/setter for fill color", function () { - expect(proxy.fill()).toEqual('transparent'); - expect(proxy.fill('#FFF')).toEqual('#FFF'); - expect(proxy.fill()).toEqual('#FFF'); - }); - }); - } -); diff --git a/platform/features/fixed/test/elements/ElementFactorySpec.js b/platform/features/fixed/test/elements/ElementFactorySpec.js deleted file mode 100644 index e879d1e8a7..0000000000 --- a/platform/features/fixed/test/elements/ElementFactorySpec.js +++ /dev/null @@ -1,69 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/ElementFactory'], - function (ElementFactory) { - - var DIALOG_ELEMENTS = ['image', 'text'], - NON_DIALOG_ELEMENTS = ['box', 'line']; - - describe("The fixed position element factory", function () { - var mockDialogService, - mockPromise, - factory; - - beforeEach(function () { - mockDialogService = jasmine.createSpyObj( - 'dialogService', - ['getUserInput'] - ); - mockPromise = jasmine.createSpyObj( - 'promise', - ['then'] - ); - - mockDialogService.getUserInput.and.returnValue(mockPromise); - mockPromise.then.and.returnValue(mockPromise); - - factory = new ElementFactory(mockDialogService); - }); - - DIALOG_ELEMENTS.forEach(function (type) { - it("shows a dialog for " + type + " elements", function () { - expect(factory.createElement('fixed.' + type)) - .toEqual(mockPromise); - expect(mockDialogService.getUserInput).toHaveBeenCalled(); - }); - }); - - NON_DIALOG_ELEMENTS.forEach(function (type) { - it("immediately provides " + type + " elements", function () { - var result = factory.createElement('fixed.' + type); - expect(result).toBeDefined(); - expect(result).not.toEqual(mockPromise); - expect(mockDialogService.getUserInput).not.toHaveBeenCalled(); - }); - }); - }); - } -); diff --git a/platform/features/fixed/test/elements/ElementProxiesSpec.js b/platform/features/fixed/test/elements/ElementProxiesSpec.js deleted file mode 100644 index 5b35eaa2f9..0000000000 --- a/platform/features/fixed/test/elements/ElementProxiesSpec.js +++ /dev/null @@ -1,51 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/ElementProxies'], - function (ElementProxies) { - - // Expect these element types to have proxies - var ELEMENT_TYPES = [ - "fixed.telemetry", - "fixed.line", - "fixed.box", - "fixed.text", - "fixed.image" - ]; - - // Verify that the set of proxies exposed matches the specific - // list above. - describe("The set of element proxies", function () { - ELEMENT_TYPES.forEach(function (t) { - it("exposes a proxy wrapper for " + t + " elements", function () { - expect(typeof ElementProxies[t]).toEqual('function'); - }); - }); - - it("exposes no additional wrappers", function () { - expect(Object.keys(ElementProxies).length) - .toEqual(ELEMENT_TYPES.length); - }); - }); - } -); diff --git a/platform/features/fixed/test/elements/ElementProxySpec.js b/platform/features/fixed/test/elements/ElementProxySpec.js deleted file mode 100644 index dcb6786c72..0000000000 --- a/platform/features/fixed/test/elements/ElementProxySpec.js +++ /dev/null @@ -1,98 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/ElementProxy'], - function (ElementProxy) { - - describe("A fixed position element proxy", function () { - var testElement, - testElements, - proxy; - - beforeEach(function () { - testElement = { - x: 1, - y: 2, - stroke: '#717171', - width: 42, - height: 24, - useGrid: true - }; - testElements = [{}, {}, testElement, {}]; - proxy = new ElementProxy( - testElement, - testElements.indexOf(testElement), - testElements, - [13,21] - ); - }); - - it("exposes element properties", function () { - Object.keys(testElement).forEach(function (k) { - expect(proxy[k]()).toEqual(testElement[k]); - }); - }); - - it("allows order to be changed", function () { - proxy.order("down"); - expect(testElements).toEqual([{}, testElement, {}, {}]); - proxy.order("up"); - expect(testElements).toEqual([{}, {}, testElement, {}]); - proxy.order("bottom"); - expect(testElements).toEqual([testElement, {}, {}, {}]); - proxy.order("top"); - expect(testElements).toEqual([{}, {}, {}, testElement]); - }); - - it("ensures x/y values are non-negative", function () { - proxy.x(-1); - proxy.y(-400); - expect(proxy.x()).toEqual(0); - expect(proxy.y()).toEqual(0); - }); - - it("allows modifying the current grid size", function () { - proxy.setGridSize([112,420]); - expect(proxy.gridSize).toEqual([112,420]); - }); - - it("returns the current grid size only if the element snaps to grid", function () { - expect(proxy.getGridSize()).toEqual([13,21]); - proxy.useGrid(false); - expect(proxy.getGridSize()).toEqual([1,1]); - }); - - it("returns the mininum height and width of an element currently used units", function () { - // Assumes mininum height and width are 10, in pixels - expect(proxy.getMinWidth()).toEqual(1); - expect(proxy.getMinHeight()).toEqual(1); - proxy.setGridSize([7,4]); - expect(proxy.getMinWidth()).toEqual(2); - expect(proxy.getMinHeight()).toEqual(3); - proxy.useGrid(false); - expect(proxy.getMinWidth()).toEqual(10); - expect(proxy.getMinHeight()).toEqual(10); - }); - }); - } -); diff --git a/platform/features/fixed/test/elements/ImageProxySpec.js b/platform/features/fixed/test/elements/ImageProxySpec.js deleted file mode 100644 index 1dc3bd086c..0000000000 --- a/platform/features/fixed/test/elements/ImageProxySpec.js +++ /dev/null @@ -1,56 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/ImageProxy'], - function (ImageProxy) { - - describe("A fixed position image proxy", function () { - var testElement, - testElements, - proxy; - - beforeEach(function () { - testElement = { - x: 1, - y: 2, - width: 42, - height: 24, - url: "http://www.nasa.gov" - }; - testElements = [{}, {}, testElement, {}]; - proxy = new ImageProxy( - testElement, - testElements.indexOf(testElement), - testElements - ); - }); - - it("provides getter/setter for image URL", function () { - expect(proxy.url()).toEqual("http://www.nasa.gov"); - expect(proxy.url("http://www.nasa.gov/some.jpg")) - .toEqual("http://www.nasa.gov/some.jpg"); - expect(proxy.url()).toEqual("http://www.nasa.gov/some.jpg"); - }); - }); - } -); diff --git a/platform/features/fixed/test/elements/LineHandleSpec.js b/platform/features/fixed/test/elements/LineHandleSpec.js deleted file mode 100644 index dae09a10ac..0000000000 --- a/platform/features/fixed/test/elements/LineHandleSpec.js +++ /dev/null @@ -1,81 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/LineHandle'], - function (LineHandle) { - - describe("A fixed position drag handle", function () { - var testElement, - mockElementProxy, - handle, - TEST_GRID_SIZE = [45, 21]; - - beforeEach(function () { - testElement = { - x: 3, - y: 42, - x2: 8, - y2: 11, - useGrid: true - }; - mockElementProxy = jasmine.createSpyObj('elementProxy', ['getGridSize']); - mockElementProxy.getGridSize.and.returnValue(TEST_GRID_SIZE); - - handle = new LineHandle(testElement, mockElementProxy, 'x', 'y', 'x2', 'y2'); - }); - - it("provides x/y grid coordinates for its corner", function () { - expect(handle.x()).toEqual(3); - expect(handle.y()).toEqual(42); - }); - - it("changes x and y positions", function () { - handle.x(30); - expect(testElement.x).toEqual(30); - handle.y(40); - expect(testElement.y).toEqual(40); - }); - - it("disallows values less than zero", function () { - handle.x(-1); - handle.y(-400); - expect(testElement.x).toEqual(0); - expect(testElement.y).toEqual(0); - }); - - it("ensures that end points remain different", function () { - handle.x(testElement.x2); - handle.y(testElement.y2); - // First change should have been fine, because y was different - expect(testElement.x).toEqual(testElement.x2); - // Second change should have been rejected - expect(testElement.y).not.toEqual(testElement.y2); - }); - - it("returns the correct grid size", function () { - expect(handle.getGridSize()).toEqual(TEST_GRID_SIZE); - }); - - }); - } -); diff --git a/platform/features/fixed/test/elements/LineProxySpec.js b/platform/features/fixed/test/elements/LineProxySpec.js deleted file mode 100644 index 9b45396ee3..0000000000 --- a/platform/features/fixed/test/elements/LineProxySpec.js +++ /dev/null @@ -1,95 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/LineProxy'], - function (LineProxy) { - - describe("A fixed position line proxy", function () { - var vertical, horizontal, diagonal, reversed; - - beforeEach(function () { - vertical = { x: 1, y: 4, x2: 1, y2: 8}; - horizontal = { x: 3, y: 3, x2: 12, y2: 3}; - diagonal = { x: 3, y: 8, x2: 5, y2: 11}; - reversed = { x2: 3, y2: 8, x: 5, y: 11}; - }); - - it("ensures visible width for vertical lines", function () { - expect(new LineProxy(vertical).width()).toEqual(1); - }); - - it("ensures visible height for horizontal lines", function () { - expect(new LineProxy(horizontal).height()).toEqual(1); - }); - - it("provides a bounding box for lines", function () { - var proxy = new LineProxy(diagonal); - expect(proxy.x()).toEqual(3); - expect(proxy.y()).toEqual(8); - expect(proxy.width()).toEqual(2); - expect(proxy.height()).toEqual(3); - }); - - it("bounds lines identically regardless of point order", function () { - // That is, x(), width(), y(), and height() should always give - // the same results for the same line segments, regardless of - // which point is x,y and which is x2,y2 - ['x', 'y', 'width', 'height'].forEach(function (method) { - expect(new LineProxy(diagonal)[method]()) - .toEqual(new LineProxy(reversed)[method]()); - }); - }); - - it("adjusts both ends when mutating x", function () { - var proxy = new LineProxy(diagonal); - proxy.x(6); - expect(diagonal).toEqual({ x: 6, y: 8, x2: 8, y2: 11}); - }); - - it("adjusts both ends when mutating y", function () { - var proxy = new LineProxy(diagonal); - proxy.y(6); - expect(diagonal).toEqual({ x: 3, y: 6, x2: 5, y2: 9}); - }); - - it("provides internal positions for SVG lines", function () { - var proxy; - proxy = new LineProxy(diagonal); - expect(proxy.x1()).toEqual(0); - expect(proxy.y1()).toEqual(0); - expect(proxy.x2()).toEqual(2); - expect(proxy.y2()).toEqual(3); - proxy = new LineProxy(reversed); - expect(proxy.x1()).toEqual(2); - expect(proxy.y1()).toEqual(3); - expect(proxy.x2()).toEqual(0); - expect(proxy.y2()).toEqual(0); - }); - - it("provides handles for both ends", function () { - expect(new LineProxy(diagonal).handles().length).toEqual(2); - }); - - }); - } -); diff --git a/platform/features/fixed/test/elements/ResizeHandleSpec.js b/platform/features/fixed/test/elements/ResizeHandleSpec.js deleted file mode 100644 index f7fda158a1..0000000000 --- a/platform/features/fixed/test/elements/ResizeHandleSpec.js +++ /dev/null @@ -1,93 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/ResizeHandle'], - function (ResizeHandle) { - - var TEST_MIN_WIDTH = 4, - TEST_MIN_HEIGHT = 2, - TEST_GRID_SIZE = [34, 81]; - - describe("A fixed position drag handle", function () { - var testElement, - mockElementProxy, - handle; - - beforeEach(function () { - testElement = { - x: 3, - y: 42, - width: 30, - height: 36, - useGrid: true - }; - mockElementProxy = jasmine.createSpyObj('elementProxy', [ - 'getGridSize', - 'getMinWidth', - 'getMinHeight' - ]); - mockElementProxy.getGridSize.and.returnValue(TEST_GRID_SIZE); - mockElementProxy.getMinWidth.and.returnValue(TEST_MIN_WIDTH); - mockElementProxy.getMinHeight.and.returnValue(TEST_MIN_HEIGHT); - - handle = new ResizeHandle( - mockElementProxy, - testElement - ); - }); - - it("provides x/y grid coordinates for lower-right corner", function () { - expect(handle.x()).toEqual(33); - expect(handle.y()).toEqual(78); - }); - - it("changes width of an element", function () { - handle.x(30); - // Should change width, not x - expect(testElement.x).toEqual(3); - expect(testElement.width).toEqual(27); - }); - - it("changes height of an element", function () { - handle.y(60); - // Should change height, not y - expect(testElement.y).toEqual(42); - expect(testElement.height).toEqual(18); - }); - - it("enforces minimum width/height", function () { - handle.x(testElement.x); - handle.y(testElement.y); - expect(testElement.x).toEqual(3); - expect(testElement.y).toEqual(42); - expect(testElement.width).toEqual(TEST_MIN_WIDTH); - expect(testElement.height).toEqual(TEST_MIN_HEIGHT); - }); - - it("returns the correct grid size", function () { - expect(handle.getGridSize()).toEqual(TEST_GRID_SIZE); - }); - - }); - } -); diff --git a/platform/features/fixed/test/elements/TelemetryProxySpec.js b/platform/features/fixed/test/elements/TelemetryProxySpec.js deleted file mode 100644 index 22bcfbf69b..0000000000 --- a/platform/features/fixed/test/elements/TelemetryProxySpec.js +++ /dev/null @@ -1,54 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/TelemetryProxy'], - function (TelemetryProxy) { - - describe("A fixed position telemetry proxy", function () { - var testElement, - testElements, - proxy; - - beforeEach(function () { - testElement = { - x: 1, - y: 2, - z: 3, - width: 42, - height: 24, - id: "test-id" - }; - testElements = [{}, {}, testElement, {}]; - proxy = new TelemetryProxy( - testElement, - testElements.indexOf(testElement), - testElements - ); - }); - - it("exposes the element's id", function () { - expect(proxy.id).toEqual('test-id'); - }); - }); - } -); diff --git a/platform/features/fixed/test/elements/TextProxySpec.js b/platform/features/fixed/test/elements/TextProxySpec.js deleted file mode 100644 index feb3f9abfd..0000000000 --- a/platform/features/fixed/test/elements/TextProxySpec.js +++ /dev/null @@ -1,70 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/TextProxy'], - function (TextProxy) { - - describe("A fixed position text proxy", function () { - var testElement, - testElements, - proxy; - - beforeEach(function () { - testElement = { - x: 1, - y: 2, - width: 42, - height: 24, - fill: "transparent", - size: "20px" - }; - testElements = [{}, {}, testElement, {}]; - proxy = new TextProxy( - testElement, - testElements.indexOf(testElement), - testElements - ); - }); - - it("provides getter/setter for fill color", function () { - expect(proxy.fill()).toEqual('transparent'); - expect(proxy.fill('#FFF')).toEqual('#FFF'); - expect(proxy.fill()).toEqual('#FFF'); - }); - - it("provides getter/setter for text size", function () { - expect(proxy.size()).toEqual('20px'); - expect(proxy.size('12px')).toEqual('12px'); - expect(proxy.size()).toEqual('12px'); - }); - - it("defaults to 13px for unspecified text size", function () { - testElement = {x: 1, y: 2}; - proxy = new TextProxy(testElement, 0, [testElement]); - - expect(proxy.size()).toEqual('13px'); - }); - - }); - } -); diff --git a/platform/features/fixed/test/elements/UnitAccessorMutatorSpec.js b/platform/features/fixed/test/elements/UnitAccessorMutatorSpec.js deleted file mode 100644 index a5378d9d81..0000000000 --- a/platform/features/fixed/test/elements/UnitAccessorMutatorSpec.js +++ /dev/null @@ -1,157 +0,0 @@ -/***************************************************************************** - * 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( - ['../../src/elements/UnitAccessorMutator'], - function (UnitAccessorMutator) { - - var GRID_SIZE = [13,17]; - - describe("An elementProxy.gridSize accessor-mutator", function () { - var mockElementProxy, - testElement, - mockLineProxy, - testLine, - uAM, - uAMLine; - - beforeEach(function () { - testElement = { - x: 2, - y: 3, - width: 4, - height: 5, - useGrid: true - }; - - mockElementProxy = { - element: testElement, - gridSize: GRID_SIZE, - getMinHeight: jasmine.createSpy('minHeight'), - getMinWidth: jasmine.createSpy('minWidth') - }; - - testLine = { - x: 7, - y: 8, - x2: 9, - y2: 10, - width: 11, - height: 12, - useGrid: true - }; - - mockLineProxy = { - element: testLine, - gridSize: GRID_SIZE, - getMinHeight: jasmine.createSpy('minHeight'), - getMinWidth: jasmine.createSpy('minWidth') - }; - - - - uAM = new UnitAccessorMutator(mockElementProxy); - uAMLine = new UnitAccessorMutator(mockLineProxy); - - mockElementProxy.getMinWidth.and.returnValue(1); - mockElementProxy.getMinHeight.and.returnValue(1); - - mockLineProxy.getMinWidth.and.returnValue(1); - mockLineProxy.getMinHeight.and.returnValue(1); - }); - - it("allows access to useGrid", function () { - expect(uAM()).toEqual(mockElementProxy.element.useGrid); - }); - - it("allows mutation of useGrid", function () { - uAM(false); - expect(mockElementProxy.element.useGrid).toEqual(false); - }); - - it("converts coordinates appropriately for a box", function () { - uAM(false); - expect(mockElementProxy.element.x).toEqual(26); - expect(mockElementProxy.element.y).toEqual(51); - expect(mockElementProxy.element.width).toEqual(52); - expect(mockElementProxy.element.height).toEqual(85); - uAM(true); - expect(mockElementProxy.element.x).toEqual(2); - expect(mockElementProxy.element.y).toEqual(3); - expect(mockElementProxy.element.width).toEqual(4); - expect(mockElementProxy.element.height).toEqual(5); - }); - - it("converts coordinates appropriately for a line", function () { - uAMLine(false); - expect(mockLineProxy.element.x).toEqual(91); - expect(mockLineProxy.element.y).toEqual(136); - expect(mockLineProxy.element.x2).toEqual(117); - expect(mockLineProxy.element.y2).toEqual(170); - expect(mockLineProxy.element.width).toEqual(143); - expect(mockLineProxy.element.height).toEqual(204); - uAMLine(true); - expect(mockLineProxy.element.x).toEqual(7); - expect(mockLineProxy.element.y).toEqual(8); - expect(mockLineProxy.element.x2).toEqual(9); - expect(mockLineProxy.element.y2).toEqual(10); - expect(mockLineProxy.element.width).toEqual(11); - expect(mockLineProxy.element.height).toEqual(12); - }); - - it("doesn't covert coordinates unecessarily", function () { - uAM(false); - expect(mockElementProxy.element.x).toEqual(26); - expect(mockElementProxy.element.y).toEqual(51); - expect(mockElementProxy.element.width).toEqual(52); - expect(mockElementProxy.element.height).toEqual(85); - uAM(false); - expect(mockElementProxy.element.x).toEqual(26); - expect(mockElementProxy.element.y).toEqual(51); - expect(mockElementProxy.element.width).toEqual(52); - expect(mockElementProxy.element.height).toEqual(85); - }); - - it("snaps coordinates onto the grid", function () { - uAM(false); - mockElementProxy.element.x += 11; - mockElementProxy.element.y -= 27; - mockElementProxy.element.width -= 14; - mockElementProxy.element.height += 4; - uAM(true); - expect(mockElementProxy.element.x).toEqual(3); - expect(mockElementProxy.element.y).toEqual(1); - expect(mockElementProxy.element.width).toEqual(3); - expect(mockElementProxy.element.height).toEqual(5); - }); - - it("enforces a minimum height and width", function () { - uAM(false); - mockElementProxy.element.width = 4; - mockElementProxy.element.height = 4; - uAM(true); - expect(mockElementProxy.element.width).toEqual(1); - expect(mockElementProxy.element.height).toEqual(1); - }); - }); - } -); diff --git a/src/plugins/plugins.js b/src/plugins/plugins.js index 93d1a03f22..573ad36ebc 100644 --- a/src/plugins/plugins.js +++ b/src/plugins/plugins.js @@ -39,7 +39,6 @@ define([ './folderView/plugin', './flexibleLayout/plugin', './tabs/plugin', - '../../platform/features/fixed/plugin', './LADTable/plugin' ], function ( _, @@ -60,7 +59,6 @@ define([ FolderView, FlexibleLayout, Tabs, - FixedView, LADTable ) { var bundleMap = { @@ -174,7 +172,6 @@ define([ plugins.DisplayLayout = DisplayLayoutPlugin.default; plugins.FolderView = FolderView; plugins.Tabs = Tabs; - plugins.FixedView = FixedView; plugins.FlexibleLayout = FlexibleLayout; plugins.LADTable = LADTable; diff --git a/src/styles-new/legacy-styles.scss b/src/styles-new/legacy-styles.scss index f59bb1e598..7acf392a51 100644 --- a/src/styles-new/legacy-styles.scss +++ b/src/styles-new/legacy-styles.scss @@ -55,7 +55,6 @@ @import "../styles/user-environ/selecting"; // //!********************************* VIEWS *! -@import "../styles/fixed-position"; //@import "../styles/lists/tabular"; //@import "../styles/plots/plots-main"; //@import "../styles/plots/legend"; diff --git a/src/styles/_fixed-position.scss b/src/styles/_fixed-position.scss deleted file mode 100644 index 81dcac7f72..0000000000 --- a/src/styles/_fixed-position.scss +++ /dev/null @@ -1,93 +0,0 @@ -/***************************************************************************** -* 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. -*****************************************************************************/ -.t-fixed-position { - &.l-fixed-position { - @extend .abs; - } - - .l-fixed-position-item { - border-width: 1px; - position: absolute; - &.s-not-selected { - opacity: 0.8; - } - - .l-fixed-position-box, - .l-fixed-position-image, - .l-fixed-position-text { - box-sizing: border-box; - height: 100%; - width: 100%; - } - - .l-fixed-position-box { - } - - .l-fixed-position-image { - background-size: cover; - background-repeat: no-repeat; - background-position: center; - } - - .l-fixed-position-text { - border: 1px solid transparent; - font-size: 0.8rem; - $p: 1px; - line-height: 100%; - overflow: hidden; - &.l-static-text { - padding: $p; - } - &.l-telemetry { - .l-elem { - box-sizing: border-box; - display: block; - padding: 2px; - &.l-title { - float: none; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - width: auto; - } - &.l-value { - border-radius: $smallCr; - $valPad: 5px; - float: right; - margin-left: $interiorMargin; - padding-left: $valPad; - padding-right: $valPad; - text-align: right; - &.telem-only { - margin-left: 0; - width: 100%; - } - } - } - } - } - } -} - -.s-status-editing { - .l-fixed-position-item-handle.edit-corner { display: block; } -} diff --git a/src/styles/_main.scss b/src/styles/_main.scss index e8f96de9fd..7c6d6b94b0 100644 --- a/src/styles/_main.scss +++ b/src/styles/_main.scss @@ -68,7 +68,6 @@ @import "user-environ/selecting"; /********************************* VIEWS */ -@import "fixed-position"; @import "lists/tabular"; @import "plots/plots-main"; @import "plots/legend";