diff --git a/README.md b/README.md index e2d3a979d9..cce52a9921 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,11 @@ Please visit our [Official Site](https://nasa.github.io/openmct/) and [Getting S Try Open MCT now with our [live demo](https://openmct-demo.herokuapp.com/). ![Demo](https://nasa.github.io/openmct/static/res/images/Open-MCT.Browse.Layout.Mars-Weather-1.jpg) +## New API +A new API is currently under development that will deprecate a lot of the documentation currently in the docs directory, however Open MCT will remain compatible with the currently documented API. An updated set of tutorials is being developed with the new API, and progress on this task can be followed in the [associated pull request](https://github.com/nasa/openmct/pull/999). Any code in this branch should be considered experimental, and we welcome any feedback. + +Differences between the two APIs include a move away from a declarative system of JSON configuration files towards an imperative system based on function calls. Developers will be able to extend and build on Open MCT by making direct function calls to a public API. Open MCT is also being refactored to minimize the dependencies that using Open MCT imposes on developers, such as the current requirement to use Angular JS. + ## Building and Running Open MCT Locally Building and running Open MCT in your local dev environment is very easy. Be sure you have [Git](https://git-scm.com/downloads) and [Node.js](https://nodejs.org/) installed, then follow the directions below. Need additional information? Check out the [Getting Started](https://nasa.github.io/openmct/getting-started/) page on our website. diff --git a/platform/commonUI/general/bundle.js b/platform/commonUI/general/bundle.js index b2eccc1732..15ea3076a6 100644 --- a/platform/commonUI/general/bundle.js +++ b/platform/commonUI/general/bundle.js @@ -259,7 +259,7 @@ define([ "implementation": ClickAwayController, "depends": [ "$document", - "$scope" + "$timeout" ] }, { @@ -381,7 +381,7 @@ define([ { "key": "mctTree", "implementation": MCTTree, - "depends": ['$parse', 'gestureService'] + "depends": ['gestureService'] } ], "constants": [ diff --git a/platform/commonUI/general/src/controllers/ClickAwayController.js b/platform/commonUI/general/src/controllers/ClickAwayController.js index 94ae71c2ea..6a01c528e9 100644 --- a/platform/commonUI/general/src/controllers/ClickAwayController.js +++ b/platform/commonUI/general/src/controllers/ClickAwayController.js @@ -34,7 +34,7 @@ define( * @param $scope the scope in which this controller is active * @param $document the document element, injected by Angular */ - function ClickAwayController($document, $scope) { + function ClickAwayController($document, $timeout) { var self = this; this.state = false; @@ -44,7 +44,7 @@ define( // `clickaway` action occurs after `toggle` if `toggle` is // triggered by a click/mouseup. this.clickaway = function () { - $scope.$apply(function () { + $timeout(function () { self.deactivate(); }); }; diff --git a/platform/commonUI/general/src/controllers/ToggleController.js b/platform/commonUI/general/src/controllers/ToggleController.js index 728d912c9a..8930c7fef2 100644 --- a/platform/commonUI/general/src/controllers/ToggleController.js +++ b/platform/commonUI/general/src/controllers/ToggleController.js @@ -33,6 +33,8 @@ define( */ function ToggleController() { this.state = false; + + this.setState = this.setState.bind(this); } /** diff --git a/platform/commonUI/general/src/directives/MCTTree.js b/platform/commonUI/general/src/directives/MCTTree.js index bb3bb3439e..987b733ba6 100644 --- a/platform/commonUI/general/src/directives/MCTTree.js +++ b/platform/commonUI/general/src/directives/MCTTree.js @@ -24,20 +24,17 @@ define([ 'angular', '../ui/TreeView' ], function (angular, TreeView) { - function MCTTree($parse, gestureService) { - function link(scope, element, attrs) { + function MCTTree(gestureService) { + function link(scope, element) { var treeView = new TreeView(gestureService), - expr = $parse(attrs.mctModel), unobserve = treeView.observe(function (domainObject) { - if (domainObject !== expr(scope.$parent)) { - expr.assign(scope.$parent, domainObject); - scope.$apply(); - } + scope.mctModel = domainObject; + scope.$apply(); }); element.append(angular.element(treeView.elements())); - scope.$parent.$watch(attrs.mctModel, treeView.value.bind(treeView)); + scope.$watch('mctModel', treeView.value.bind(treeView)); scope.$watch('mctObject', treeView.model.bind(treeView)); scope.$on('$destroy', unobserve); } @@ -45,7 +42,7 @@ define([ return { restrict: "E", link: link, - scope: { mctObject: "=" } + scope: { mctObject: "=", mctModel: "=" } }; } diff --git a/platform/commonUI/general/test/controllers/ClickAwayControllerSpec.js b/platform/commonUI/general/test/controllers/ClickAwayControllerSpec.js index 8edf90e2c6..22b4035919 100644 --- a/platform/commonUI/general/test/controllers/ClickAwayControllerSpec.js +++ b/platform/commonUI/general/test/controllers/ClickAwayControllerSpec.js @@ -26,7 +26,7 @@ define( describe("The click-away controller", function () { var mockDocument, - mockScope, + mockTimeout, controller; beforeEach(function () { @@ -34,11 +34,10 @@ define( "$document", ["on", "off"] ); - mockScope = jasmine.createSpyObj('$scope', ['$apply']); - + mockTimeout = jasmine.createSpy('timeout'); controller = new ClickAwayController( mockDocument, - mockScope + mockTimeout ); }); @@ -78,15 +77,18 @@ define( }); it("deactivates and detaches listener on document click", function () { - var callback, apply; + var callback, timeout; controller.setState(true); callback = mockDocument.on.mostRecentCall.args[1]; callback(); - apply = mockScope.$apply.mostRecentCall.args[0]; - apply(); + timeout = mockTimeout.mostRecentCall.args[0]; + timeout(); expect(controller.isActive()).toEqual(false); expect(mockDocument.off).toHaveBeenCalledWith("mouseup", callback); }); + + + }); } ); diff --git a/platform/commonUI/general/test/directives/MCTTreeSpec.js b/platform/commonUI/general/test/directives/MCTTreeSpec.js index 11921c2625..0cc64949c2 100644 --- a/platform/commonUI/general/test/directives/MCTTreeSpec.js +++ b/platform/commonUI/general/test/directives/MCTTreeSpec.js @@ -46,8 +46,8 @@ define([ expect(mctTree.restrict).toEqual("E"); }); - it("two-way binds to mctObject", function () { - expect(mctTree.scope).toEqual({ mctObject: "=" }); + it("two-way binds to mctObject and mctModel", function () { + expect(mctTree.scope).toEqual({ mctObject: "=", mctModel: "=" }); }); describe("link", function () { @@ -69,8 +69,8 @@ define([ }); it("watches for mct-model's expression in the parent", function () { - expect(mockScope.$parent.$watch).toHaveBeenCalledWith( - testAttrs.mctModel, + expect(mockScope.$watch).toHaveBeenCalledWith( + "mctModel", jasmine.any(Function) ); }); diff --git a/platform/search/res/templates/search-menu.html b/platform/search/res/templates/search-menu.html index e051071f0d..daa350a77b 100644 --- a/platform/search/res/templates/search-menu.html +++ b/platform/search/res/templates/search-menu.html @@ -22,13 +22,13 @@
-