diff --git a/README.md b/README.md index e2d3a979d9e..cce52a99218 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/).  +## 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 b2eccc17327..15ea3076a62 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 94ae71c2eac..6a01c528e93 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 728d912c9af..8930c7fef21 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 bb3bb3439e5..987b733ba6b 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 8edf90e2c67..22b4035919c 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 11921c26251..0cc64949c2d 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 e051071f0dd..daa350a77be 100644 --- a/platform/search/res/templates/search-menu.html +++ b/platform/search/res/templates/search-menu.html @@ -22,13 +22,13 @@