mirror of
https://github.com/nasa/openmct.git
synced 2025-02-21 09:52:04 +00:00
[Search] Remove search UI files
Leaving only search service related files.
This commit is contained in:
parent
45bedb20c1
commit
b6bb689ccc
@ -28,12 +28,6 @@
|
|||||||
>
|
>
|
||||||
<mct-representation key="'create-button'" mct-object="navigatedObject">
|
<mct-representation key="'create-button'" mct-object="navigatedObject">
|
||||||
</mct-representation>
|
</mct-representation>
|
||||||
<div class='holder search-holder abs'>
|
|
||||||
<mct-include key="'search'"
|
|
||||||
mct-object="domainObject"
|
|
||||||
ng-model="treeModel">
|
|
||||||
</mct-include>
|
|
||||||
</div>
|
|
||||||
<div class='holder tree-holder abs'
|
<div class='holder tree-holder abs'
|
||||||
ng-hide="treeModel.search">
|
ng-hide="treeModel.search">
|
||||||
<mct-representation key="'tree'"
|
<mct-representation key="'tree'"
|
||||||
|
@ -31,7 +31,6 @@
|
|||||||
@import "global";
|
@import "global";
|
||||||
@import "fonts";
|
@import "fonts";
|
||||||
@import "user-environ/layout";
|
@import "user-environ/layout";
|
||||||
@import "search/layout";
|
|
||||||
@import "fixed-position";
|
@import "fixed-position";
|
||||||
@import "about";
|
@import "about";
|
||||||
@import "text";
|
@import "text";
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
* Administration. All rights reserved.
|
|
||||||
*
|
|
||||||
* Open MCT Web 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 Web 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
// Overrides some styling in user-environ/_layout.scss
|
|
||||||
.pane {
|
|
||||||
&.treeview.left {
|
|
||||||
.tree-holder {
|
|
||||||
// Want tree holder to start right below the search bar.
|
|
||||||
top: 60px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,159 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
* Administration. All rights reserved.
|
|
||||||
*
|
|
||||||
* Open MCT Web 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 Web 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
.search-holder {
|
|
||||||
$iconWidth: 20px;
|
|
||||||
$leftMargin: 6px;
|
|
||||||
$rightPadding: 5px;
|
|
||||||
|
|
||||||
padding-right: $rightPadding;
|
|
||||||
top: 23px;
|
|
||||||
|
|
||||||
// Align with the top of the divider bar, below create button
|
|
||||||
margin-top: 10px;
|
|
||||||
|
|
||||||
.search {
|
|
||||||
|
|
||||||
.search-input {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.search-scroll {
|
|
||||||
// Spacing away from the search input
|
|
||||||
top: 25px;
|
|
||||||
overflow-y: auto;
|
|
||||||
|
|
||||||
.results {
|
|
||||||
|
|
||||||
.search-result-item {
|
|
||||||
// Include transitions (for the highlights)
|
|
||||||
@include single-transition(background-color, 0.25s);
|
|
||||||
|
|
||||||
// Space the results from each other
|
|
||||||
margin-bottom: 2px;
|
|
||||||
|
|
||||||
// Make the highlights the right color and shape.
|
|
||||||
// Attempting to match the style in the tree, but
|
|
||||||
// while having these be compact.
|
|
||||||
border-radius: 2px;
|
|
||||||
padding-top: 4px;
|
|
||||||
padding-bottom: 2px;
|
|
||||||
|
|
||||||
.label {
|
|
||||||
// Give some padding away from the left side
|
|
||||||
margin-left: $leftMargin;
|
|
||||||
|
|
||||||
.title-label {
|
|
||||||
display: inline-block;
|
|
||||||
position: absolute;
|
|
||||||
|
|
||||||
// Give some padding away from the left side
|
|
||||||
left: $leftMargin + 3px + $iconWidth;
|
|
||||||
// and the right side
|
|
||||||
right: $rightPadding;
|
|
||||||
|
|
||||||
// Size and position the text
|
|
||||||
font-size: .8em;
|
|
||||||
line-height: 17px;
|
|
||||||
|
|
||||||
// Hide overflow text
|
|
||||||
width: auto;
|
|
||||||
overflow: hidden;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change styling when it's selected
|
|
||||||
&.selected {
|
|
||||||
$c: #fff;
|
|
||||||
background: $colorKeySelectedBg;
|
|
||||||
color: $c;
|
|
||||||
.view-control {
|
|
||||||
color: $colorItemTreeIcon;
|
|
||||||
}
|
|
||||||
.label .type-icon {
|
|
||||||
color: #fff;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Change styling when it's being hovered over
|
|
||||||
&:not(.selected) {
|
|
||||||
&:hover {
|
|
||||||
background: lighten($colorBodyBg, 5%);
|
|
||||||
color: lighten($colorBodyFg, 20%);
|
|
||||||
.context-trigger {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.icon {
|
|
||||||
color: $colorItemTreeIconHover;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.load-icon {
|
|
||||||
position: relative;
|
|
||||||
&.loading {
|
|
||||||
pointer-events: none;
|
|
||||||
margin-left: $leftMargin;
|
|
||||||
|
|
||||||
.title-label {
|
|
||||||
// Text styling
|
|
||||||
font-style: italic;
|
|
||||||
font-size: .9em;
|
|
||||||
opacity: 0.5;
|
|
||||||
|
|
||||||
// Text positioning
|
|
||||||
margin-left: $iconWidth + $leftMargin;
|
|
||||||
line-height: 24px;
|
|
||||||
}
|
|
||||||
.wait-spinner {
|
|
||||||
margin-left: $leftMargin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&:not(.loading) {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.load-more-button {
|
|
||||||
// Space away form the results list
|
|
||||||
margin-top: 5px;
|
|
||||||
margin-bottom: 5px;
|
|
||||||
|
|
||||||
// Center it
|
|
||||||
position: relative;
|
|
||||||
left: 25%;
|
|
||||||
width: 50%;
|
|
||||||
white-space: nowrap;
|
|
||||||
|
|
||||||
// Make smallish button
|
|
||||||
height: 20px;
|
|
||||||
line-height: 11px;
|
|
||||||
font-size: 0.7em;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -27,5 +27,4 @@
|
|||||||
|
|
||||||
@import "constants";
|
@import "constants";
|
||||||
@import "mixins";
|
@import "mixins";
|
||||||
@import "tree/tree";
|
@import "tree/tree";
|
||||||
@import "search/search";
|
|
@ -2,31 +2,6 @@
|
|||||||
"name": "Search",
|
"name": "Search",
|
||||||
"description": "Allows the user to search through the file tree.",
|
"description": "Allows the user to search through the file tree.",
|
||||||
"extensions": {
|
"extensions": {
|
||||||
"controllers": [
|
|
||||||
{
|
|
||||||
"key": "SearchController",
|
|
||||||
"implementation": "controllers/SearchController.js",
|
|
||||||
"depends": [ "$scope", "searchService" ]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"key": "SearchItemController",
|
|
||||||
"implementation": "controllers/SearchItemController.js",
|
|
||||||
"depends": [ "$scope" ]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"templates": [
|
|
||||||
{
|
|
||||||
"key": "search",
|
|
||||||
"templateUrl": "templates/search.html",
|
|
||||||
"uses": [ "controls", "forms" ]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"representations": [
|
|
||||||
{
|
|
||||||
"key": "search-item",
|
|
||||||
"templateUrl": "templates/search-item.html"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"components": [
|
"components": [
|
||||||
{
|
{
|
||||||
"provides": "searchService",
|
"provides": "searchService",
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
<!--
|
|
||||||
Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
||||||
as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
Administration. All rights reserved.
|
|
||||||
|
|
||||||
Open MCT Web 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 Web 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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<span ng-controller="SearchItemController as controller">
|
|
||||||
<div class="search-result-item"
|
|
||||||
ng-class="{selected: controller.isSelected()}">
|
|
||||||
<mct-representation key="'label'"
|
|
||||||
mct-object="domainObject"
|
|
||||||
ng-model="ngModel"
|
|
||||||
ng-click="ngModel.selectedObject = domainObject">
|
|
||||||
</mct-representation>
|
|
||||||
|
|
||||||
<!--span
|
|
||||||
class="search-result-item menus-to-left"
|
|
||||||
ng-class="{selected: controller.isSelected()}"
|
|
||||||
>
|
|
||||||
asdf
|
|
||||||
<!--span
|
|
||||||
class='ui-symbol view-control'
|
|
||||||
ng-click="toggle.toggle(); controller.trackExpansion()"
|
|
||||||
ng-if="model.composition !== undefined"
|
|
||||||
>
|
|
||||||
{{toggle.isActive() ? "v" : ">"}}
|
|
||||||
</span->
|
|
||||||
</span-->
|
|
||||||
</div>
|
|
||||||
</span>
|
|
@ -1,57 +0,0 @@
|
|||||||
<!--
|
|
||||||
Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
||||||
as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
Administration. All rights reserved.
|
|
||||||
|
|
||||||
Open MCT Web 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 Web 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.
|
|
||||||
-->
|
|
||||||
|
|
||||||
<div class="items-holder grid abs"
|
|
||||||
ng-controller="SearchViewController as controller">
|
|
||||||
|
|
||||||
<!-- Search bar -->
|
|
||||||
<div>
|
|
||||||
<div style="height: 30px">Search:</div>
|
|
||||||
<input type="text"
|
|
||||||
id="searchinput"
|
|
||||||
value=""
|
|
||||||
ng-keyup="controller.search('searchinput')"
|
|
||||||
style="width: 66%"/>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- some spacing -->
|
|
||||||
<div style="height: 30px"></div>
|
|
||||||
|
|
||||||
<!-- Results list -->
|
|
||||||
<div ng-if="controller.areResults()"
|
|
||||||
style="height: 60px">
|
|
||||||
<p>
|
|
||||||
Results:
|
|
||||||
</p>
|
|
||||||
<div ng-if="controller.areMore()">
|
|
||||||
<button ng-click="controller.loadMore()">
|
|
||||||
Load more
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div>
|
|
||||||
<mct-representation key="'grid-item'"
|
|
||||||
ng-repeat="result in results"
|
|
||||||
mct-object="result.object">
|
|
||||||
</mct-representation>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,67 +0,0 @@
|
|||||||
<!--
|
|
||||||
Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
||||||
as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
Administration. All rights reserved.
|
|
||||||
|
|
||||||
Open MCT Web 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 Web 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.
|
|
||||||
-->
|
|
||||||
<div class="search"
|
|
||||||
ng-controller="SearchController as controller">
|
|
||||||
|
|
||||||
<!-- Search bar input -->
|
|
||||||
<div>
|
|
||||||
<input class="search-input"
|
|
||||||
type="text"
|
|
||||||
value=""
|
|
||||||
ng-model="ngModel.input"
|
|
||||||
ng-keyup="controller.search()" />
|
|
||||||
<!--mct-control key="textfield"
|
|
||||||
ng-model="ngModel"
|
|
||||||
structure="{cssclass: 'search-input', size: '50px'}">
|
|
||||||
</mct-control-->
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- This div exists to determine scroll bar location -->
|
|
||||||
<div class="search-scroll abs">
|
|
||||||
|
|
||||||
<!-- Results list -->
|
|
||||||
<div class="results">
|
|
||||||
<mct-representation key="'search-item'"
|
|
||||||
ng-repeat="result in results"
|
|
||||||
mct-object="result.object"
|
|
||||||
ng-model="ngModel">
|
|
||||||
</mct-representation>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Loading icon -->
|
|
||||||
<div class="load-icon"
|
|
||||||
ng-class="{loading: controller.isLoading()}"
|
|
||||||
ng-if="controller.isLoading()">
|
|
||||||
<span class="icon wait-spinner"></span>
|
|
||||||
<span class="title-label">Loading...</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<!-- Load more button -->
|
|
||||||
<div ng-if="controller.areMore()">
|
|
||||||
<button class="load-more-button btn very-subtle"
|
|
||||||
ng-click="controller.loadMore()">
|
|
||||||
Load more
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
@ -1,110 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
* Administration. All rights reserved.
|
|
||||||
*
|
|
||||||
* Open MCT Web 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 Web 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
/*global define*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Module defining SearchController. Created by shale on 07/15/2015.
|
|
||||||
*/
|
|
||||||
define(function () {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var INITIAL_LOAD_NUMBER = 20,
|
|
||||||
LOAD_INCREMENT = 5;
|
|
||||||
|
|
||||||
function SearchController($scope, searchService) {
|
|
||||||
// Starting amount of results to load. Will get increased.
|
|
||||||
var numResults = INITIAL_LOAD_NUMBER,
|
|
||||||
loading = false,
|
|
||||||
fullResults = {hits: []};
|
|
||||||
|
|
||||||
function search(maxResults) {
|
|
||||||
var inputText = $scope.ngModel.input;
|
|
||||||
|
|
||||||
// We are starting to load.
|
|
||||||
loading = true;
|
|
||||||
|
|
||||||
// Update whether the file tree should be displayed
|
|
||||||
if (inputText === '' || inputText === undefined) {
|
|
||||||
$scope.ngModel.search = false;
|
|
||||||
} else {
|
|
||||||
$scope.ngModel.search = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!maxResults) {
|
|
||||||
// Reset 'load more'
|
|
||||||
numResults = INITIAL_LOAD_NUMBER;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Send the query
|
|
||||||
searchService.query(inputText, maxResults).then(function (result) {
|
|
||||||
fullResults = result;
|
|
||||||
$scope.results = result.hits.slice(0, numResults);
|
|
||||||
|
|
||||||
// Now we are done loading.
|
|
||||||
loading = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
/**
|
|
||||||
* Search the filetree.
|
|
||||||
* Assumes that any search text will be in ngModel.input
|
|
||||||
*
|
|
||||||
* @param maxResults (optional) The maximum number of results
|
|
||||||
* that this function should return. If not provided, search
|
|
||||||
* service default will be used.
|
|
||||||
*/
|
|
||||||
search: search,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks to see if we are still waiting for the results to be
|
|
||||||
* fully updated.
|
|
||||||
*/
|
|
||||||
isLoading: function () {
|
|
||||||
return loading;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks to see if there are more search results to display.
|
|
||||||
*/
|
|
||||||
areMore: function () {
|
|
||||||
return numResults < fullResults.total;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Increases the number of search results to display, and then
|
|
||||||
* load them.
|
|
||||||
*/
|
|
||||||
loadMore: function () {
|
|
||||||
numResults += LOAD_INCREMENT;
|
|
||||||
|
|
||||||
if (numResults > fullResults.hits.length && fullResults.hits.length < fullResults.total) {
|
|
||||||
// Resend the query if we are out of items to display, but there are more to get
|
|
||||||
search(numResults);
|
|
||||||
} else {
|
|
||||||
$scope.results = fullResults.hits.slice(0, numResults);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return SearchController;
|
|
||||||
});
|
|
@ -1,60 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
* Administration. All rights reserved.
|
|
||||||
*
|
|
||||||
* Open MCT Web 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 Web 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
/*global define*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Module defining SearchItemController. Created by shale on 07/22/2015.
|
|
||||||
*/
|
|
||||||
define(function () {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
function SearchItemController($scope) {
|
|
||||||
var selectedObject = ($scope.ngModel || {}).selectedObject;
|
|
||||||
|
|
||||||
// Callback for the selection updates; track the currently
|
|
||||||
// navigated object and update display parameters as needed.
|
|
||||||
function setSelection(object) {
|
|
||||||
selectedObject = object;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Listen for changes which will effect display parameters
|
|
||||||
$scope.$watch("ngModel.selectedObject", setSelection);
|
|
||||||
|
|
||||||
return {
|
|
||||||
/**
|
|
||||||
* Check whether or not the domain object represented by
|
|
||||||
* this search item should be highlighted.
|
|
||||||
* An object will be highlighted if its ID matches
|
|
||||||
* ngModel.selectedObject
|
|
||||||
*
|
|
||||||
* @returns true if this should be highlighted
|
|
||||||
*/
|
|
||||||
isSelected: function () {
|
|
||||||
// If this object is the same as the model's selected object
|
|
||||||
// Same being them having the same ID (this allows different
|
|
||||||
// instances of the same thing to be recognized as the same)
|
|
||||||
return $scope.ngModel.selectedObject.getId() === $scope.domainObject.getId();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return SearchItemController;
|
|
||||||
});
|
|
@ -1,109 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
* Administration. All rights reserved.
|
|
||||||
*
|
|
||||||
* Open MCT Web 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 Web 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
/*global define*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Module defining SearchViewController. Created by shale on 07/08/2015.
|
|
||||||
*/
|
|
||||||
define(function () {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
var INITIAL_LOAD_NUMBER = 20,
|
|
||||||
LOAD_INCREMENT = 5;
|
|
||||||
|
|
||||||
function SearchViewController($scope, $timeout, searchService) {
|
|
||||||
// Starting amount of results to load. Will get increased.
|
|
||||||
var numResults = INITIAL_LOAD_NUMBER;
|
|
||||||
|
|
||||||
function update(timestamp) {
|
|
||||||
// Get the results
|
|
||||||
$scope.results = searchService.getLatestResults(0, numResults);
|
|
||||||
|
|
||||||
// Check to make sure that these results are the latest ones
|
|
||||||
function waitForLatest() {
|
|
||||||
var timestamps = searchService.getLatestTimestamps(),
|
|
||||||
areOld = timestamps.some(function (c) {return c < timestamp; });
|
|
||||||
// If any of the timestamps are older than the one we made the query with
|
|
||||||
if (areOld) {
|
|
||||||
// Then wait and try to update again
|
|
||||||
searchService.updateResults();
|
|
||||||
$timeout(waitForLatest, 100);
|
|
||||||
} else {
|
|
||||||
// We got the latest results now
|
|
||||||
$scope.results = searchService.getLatestResults(0, numResults);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
waitForLatest();
|
|
||||||
}
|
|
||||||
|
|
||||||
function search(inputID) {
|
|
||||||
var date = new Date(),
|
|
||||||
timestamp = date.getTime();
|
|
||||||
|
|
||||||
// Reset 'load more'
|
|
||||||
numResults = INITIAL_LOAD_NUMBER;
|
|
||||||
|
|
||||||
// Send the query
|
|
||||||
searchService.sendQuery(inputID, timestamp);
|
|
||||||
|
|
||||||
update(timestamp);
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
/**
|
|
||||||
* Search the filetree.
|
|
||||||
*
|
|
||||||
* @param inputID The name of the ID property of the html text
|
|
||||||
* input where this funcion should find the search term.
|
|
||||||
*/
|
|
||||||
search: search,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks to see if there are any search results to display.
|
|
||||||
*/
|
|
||||||
areResults: function () {
|
|
||||||
if ($scope.results) {
|
|
||||||
return $scope.results.length > 0;
|
|
||||||
} else {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Checks to see if there are more search results to display.
|
|
||||||
*/
|
|
||||||
areMore: function () {
|
|
||||||
return numResults < searchService.getNumResults();
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Increases the number of search results to display, and then
|
|
||||||
* load them.
|
|
||||||
*/
|
|
||||||
loadMore: function () {
|
|
||||||
numResults += LOAD_INCREMENT;
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return SearchViewController;
|
|
||||||
});
|
|
@ -1,124 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
* Administration. All rights reserved.
|
|
||||||
*
|
|
||||||
* Open MCT Web 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 Web 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
/*global define,describe,it,expect,beforeEach,jasmine*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SearchSpec. Created by shale on 07/31/2015.
|
|
||||||
*/
|
|
||||||
define(
|
|
||||||
["../../src/controllers/SearchController"],
|
|
||||||
function (SearchController) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
describe("The search controller", function () {
|
|
||||||
var mockScope,
|
|
||||||
mockSearchService,
|
|
||||||
mockPromise,
|
|
||||||
controller;
|
|
||||||
|
|
||||||
function bigArray(size) {
|
|
||||||
var array = [],
|
|
||||||
i;
|
|
||||||
for (i = 0; i < size; i += 1) {
|
|
||||||
array.push(i);
|
|
||||||
}
|
|
||||||
return array;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
mockScope = jasmine.createSpyObj(
|
|
||||||
"$scope",
|
|
||||||
[ "" ]
|
|
||||||
);
|
|
||||||
mockScope.ngModel = {};
|
|
||||||
mockScope.ngModel.input = "test input";
|
|
||||||
|
|
||||||
mockSearchService = jasmine.createSpyObj(
|
|
||||||
"searchService",
|
|
||||||
[ "query" ]
|
|
||||||
);
|
|
||||||
mockPromise = jasmine.createSpyObj(
|
|
||||||
"promise",
|
|
||||||
[ "then" ]
|
|
||||||
);
|
|
||||||
mockSearchService.query.andReturn(mockPromise);
|
|
||||||
|
|
||||||
controller = new SearchController(mockScope, mockSearchService);
|
|
||||||
controller.search();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("sends queries to the search service", function () {
|
|
||||||
expect(mockSearchService.query).toHaveBeenCalled();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("populates the results with results from the search service", function () {
|
|
||||||
expect(mockPromise.then).toHaveBeenCalledWith(jasmine.any(Function));
|
|
||||||
mockPromise.then.mostRecentCall.args[0]({hits: []});
|
|
||||||
|
|
||||||
expect(mockScope.results).toBeDefined();
|
|
||||||
});
|
|
||||||
|
|
||||||
it("is loading until the service's promise fufills", function () {
|
|
||||||
// Send query
|
|
||||||
controller.search();
|
|
||||||
expect(controller.isLoading()).toBeTruthy();
|
|
||||||
|
|
||||||
// Then resolve the promises
|
|
||||||
mockPromise.then.mostRecentCall.args[0]({hits: []});
|
|
||||||
expect(controller.isLoading()).toBeFalsy();
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
it("displays only some results when there are many", function () {
|
|
||||||
expect(mockPromise.then).toHaveBeenCalledWith(jasmine.any(Function));
|
|
||||||
mockPromise.then.mostRecentCall.args[0]({hits: bigArray(100)});
|
|
||||||
|
|
||||||
expect(mockScope.results).toBeDefined();
|
|
||||||
expect(mockScope.results.length).toBeLessThan(100);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("can load more results", function () {
|
|
||||||
var oldSize;
|
|
||||||
|
|
||||||
expect(mockPromise.then).toHaveBeenCalledWith(jasmine.any(Function));
|
|
||||||
mockPromise.then.mostRecentCall.args[0]({hits: bigArray(100), total: 1000});
|
|
||||||
oldSize = mockScope.results.length;
|
|
||||||
|
|
||||||
expect(controller.areMore()).toBeTruthy();
|
|
||||||
|
|
||||||
controller.loadMore();
|
|
||||||
expect(mockScope.results.length).toBeGreaterThan(oldSize);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("sets the ngModel.search flag", function () {
|
|
||||||
// Flag should be true with nonempty input
|
|
||||||
expect(mockScope.ngModel.search).toEqual(true);
|
|
||||||
|
|
||||||
// Flag should be flase with empty input
|
|
||||||
mockScope.ngModel.input = "";
|
|
||||||
controller.search();
|
|
||||||
expect(mockScope.ngModel.search).toEqual(false);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
@ -1,72 +0,0 @@
|
|||||||
/*****************************************************************************
|
|
||||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
|
||||||
* Administration. All rights reserved.
|
|
||||||
*
|
|
||||||
* Open MCT Web 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 Web 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.
|
|
||||||
*****************************************************************************/
|
|
||||||
/*global define,describe,it,expect,beforeEach,jasmine*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* SearchSpec. Created by shale on 07/31/2015.
|
|
||||||
*/
|
|
||||||
define(
|
|
||||||
["../../src/controllers/SearchItemController"],
|
|
||||||
function (SearchItemController) {
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
describe("The search item controller", function () {
|
|
||||||
var mockScope,
|
|
||||||
mockDomainObject1,
|
|
||||||
mockDomainObject2,
|
|
||||||
controller;
|
|
||||||
|
|
||||||
beforeEach(function () {
|
|
||||||
mockScope = jasmine.createSpyObj(
|
|
||||||
"$scope",
|
|
||||||
[ "$watch" ]
|
|
||||||
);
|
|
||||||
mockDomainObject1 = jasmine.createSpyObj(
|
|
||||||
"domainObject",
|
|
||||||
[ "getId" ]
|
|
||||||
);
|
|
||||||
mockDomainObject1.getId.andReturn("1");
|
|
||||||
mockDomainObject2 = jasmine.createSpyObj(
|
|
||||||
"domainObject",
|
|
||||||
[ "getId" ]
|
|
||||||
);
|
|
||||||
mockDomainObject2.getId.andReturn("2");
|
|
||||||
|
|
||||||
mockScope.ngModel = {};
|
|
||||||
mockScope.ngModel.selectedObject = mockDomainObject1;
|
|
||||||
mockScope.domainObject = mockDomainObject1;
|
|
||||||
|
|
||||||
controller = new SearchItemController(mockScope);
|
|
||||||
});
|
|
||||||
|
|
||||||
it("keeps track of object selection", function () {
|
|
||||||
expect(controller.isSelected()).toBeTruthy();
|
|
||||||
|
|
||||||
mockScope.ngModel.selectedObject = mockDomainObject2;
|
|
||||||
expect(mockScope.$watch).toHaveBeenCalled();
|
|
||||||
mockScope.$watch.mostRecentCall.args[1](mockDomainObject2);
|
|
||||||
expect(controller.isSelected()).toBeFalsy();
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
}
|
|
||||||
);
|
|
@ -1,6 +1,4 @@
|
|||||||
[
|
[
|
||||||
"controllers/SearchController",
|
|
||||||
"controllers/SearchItemController",
|
|
||||||
"SearchAggregator",
|
"SearchAggregator",
|
||||||
"providers/ElasticsearchSearchProvider",
|
"providers/ElasticsearchSearchProvider",
|
||||||
"providers/GenericSearchProvider",
|
"providers/GenericSearchProvider",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user