Skip to content

Commit

Permalink
Merge branch 'master' into open933
Browse files Browse the repository at this point in the history
  • Loading branch information
akhenry committed Aug 5, 2016
2 parents 46e644e + c8931f8 commit 7557a86
Show file tree
Hide file tree
Showing 9 changed files with 39 additions and 29 deletions.
5 changes: 5 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions platform/commonUI/general/bundle.js
Original file line number Diff line number Diff line change
Expand Up @@ -259,7 +259,7 @@ define([
"implementation": ClickAwayController,
"depends": [
"$document",
"$scope"
"$timeout"
]
},
{
Expand Down Expand Up @@ -381,7 +381,7 @@ define([
{
"key": "mctTree",
"implementation": MCTTree,
"depends": ['$parse', 'gestureService']
"depends": ['gestureService']
}
],
"constants": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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();
});
};
Expand Down
2 changes: 2 additions & 0 deletions platform/commonUI/general/src/controllers/ToggleController.js
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ define(
*/
function ToggleController() {
this.state = false;

this.setState = this.setState.bind(this);
}

/**
Expand Down
15 changes: 6 additions & 9 deletions platform/commonUI/general/src/directives/MCTTree.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,28 +24,25 @@ 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);
}

return {
restrict: "E",
link: link,
scope: { mctObject: "=" }
scope: { mctObject: "=", mctModel: "=" }
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,19 +26,18 @@ define(

describe("The click-away controller", function () {
var mockDocument,
mockScope,
mockTimeout,
controller;

beforeEach(function () {
mockDocument = jasmine.createSpyObj(
"$document",
["on", "off"]
);
mockScope = jasmine.createSpyObj('$scope', ['$apply']);

mockTimeout = jasmine.createSpy('timeout');
controller = new ClickAwayController(
mockDocument,
mockScope
mockTimeout
);
});

Expand Down Expand Up @@ -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);
});



});
}
);
8 changes: 4 additions & 4 deletions platform/commonUI/general/test/directives/MCTTreeSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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 () {
Expand All @@ -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)
);
});
Expand Down
4 changes: 2 additions & 2 deletions platform/search/res/templates/search-menu.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,13 +22,13 @@

<div ng-controller="SearchMenuController as controller">

<div class="menu checkbox-menu">
<div class="menu checkbox-menu"
mct-click-elsewhere="parameters.menuVisible(false)">
<ul>
<!-- First element is special - it's a reset option -->
<li class="search-menu-item special icon-asterisk"
title="Select all filters"
ng-click="ngModel.checkAll = !ngModel.checkAll; controller.checkAll()">

<label class="checkbox custom no-text">
<input type="checkbox"
class="checkbox"
Expand Down
10 changes: 7 additions & 3 deletions platform/search/res/templates/search.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
-->
<div class="l-flex-col flex-elem grows holder holder-search" ng-controller="SearchController as controller">
<div class="search-bar flex-elem"
ng-controller="ClickAwayController as toggle"
ng-controller="ToggleController as toggle"
ng-class="{ holder: !(ngModel.input === '' || ngModel.input === undefined) }">
<input class="search-input"
type="text"
Expand All @@ -30,13 +30,17 @@
<a class="clear-icon clear-input icon-x-in-circle"
ng-class="{show: !(ngModel.input === '' || ngModel.input === undefined)}"
ng-click="ngModel.input = ''; controller.search()"></a>
<a class="menu-icon context-available"
<!-- To prevent double triggering of clicks on click away, render
non-clickable version of the button when menu active-->
<a ng-if="!toggle.isActive()" class="menu-icon context-available"
ng-click="toggle.toggle()"></a>
<a ng-if="toggle.isActive()" class="menu-icon context-available"></a>

<mct-include key="'search-menu'"
class="menu-element search-menu-holder"
ng-class="{off: !toggle.isActive()}"
ng-model="ngModel"
ng-click="toggle.setState(true)">
parameters="{menuVisible: toggle.setState}">
</mct-include>
</div>
<div class="active-filter-display flex-elem holder"
Expand Down

0 comments on commit 7557a86

Please sign in to comment.