mirror of
https://github.com/nasa/openmct.git
synced 2024-12-29 09:28:52 +00:00
Merge branch 'master' of https://github.com/nasa/openmctweb into open73
Conflicts: platform/commonUI/browse/res/templates/browse.html
This commit is contained in:
commit
7e837c266d
@ -39,7 +39,16 @@
|
|||||||
ng-model="paneModel">
|
ng-model="paneModel">
|
||||||
</mct-representation>
|
</mct-representation>
|
||||||
|
|
||||||
<div class='holder tree-holder abs'>
|
<div class='holder search-holder abs'
|
||||||
|
ng-class="{active: treeModel.search}">
|
||||||
|
<mct-representation key="'search'"
|
||||||
|
mct-object="domainObject"
|
||||||
|
ng-model="treeModel">
|
||||||
|
</mct-representation>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class='holder tree-holder abs'
|
||||||
|
ng-hide="treeModel.search">
|
||||||
<mct-representation key="'tree'"
|
<mct-representation key="'tree'"
|
||||||
mct-object="domainObject"
|
mct-object="domainObject"
|
||||||
ng-model="treeModel">
|
ng-model="treeModel">
|
||||||
|
@ -71,6 +71,7 @@
|
|||||||
* at runtime from the About dialog for additional information.
|
* at runtime from the About dialog for additional information.
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
/* CONSTANTS */
|
/* CONSTANTS */
|
||||||
|
/*****************************************************************************
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
@ -644,44 +645,46 @@ mct-container {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 5px; }
|
bottom: 5px; }
|
||||||
/* line 232, ../sass/user-environ/_layout.scss */
|
/* line 232, ../sass/user-environ/_layout.scss */
|
||||||
|
.pane.treeview.left .search-holder {
|
||||||
|
top: 34px; }
|
||||||
|
/* line 235, ../sass/user-environ/_layout.scss */
|
||||||
.pane.treeview.left .tree-holder {
|
.pane.treeview.left .tree-holder {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
top: 34px;
|
top: 64px; }
|
||||||
padding-right: 5px; }
|
/* line 242, ../sass/user-environ/_layout.scss */
|
||||||
/* line 240, ../sass/user-environ/_layout.scss */
|
|
||||||
.pane.items .object-browse-bar .left.abs, .pane.items .object-browse-bar .btn-menu span.left.l-click-area, .btn-menu .pane.items .object-browse-bar span.left.l-click-area,
|
.pane.items .object-browse-bar .left.abs, .pane.items .object-browse-bar .btn-menu span.left.l-click-area, .btn-menu .pane.items .object-browse-bar span.left.l-click-area,
|
||||||
.pane.items .object-browse-bar .right.abs,
|
.pane.items .object-browse-bar .right.abs,
|
||||||
.pane.items .object-browse-bar .btn-menu span.right.l-click-area,
|
.pane.items .object-browse-bar .btn-menu span.right.l-click-area,
|
||||||
.btn-menu .pane.items .object-browse-bar span.right.l-click-area {
|
.btn-menu .pane.items .object-browse-bar span.right.l-click-area {
|
||||||
top: auto; }
|
top: auto; }
|
||||||
/* line 245, ../sass/user-environ/_layout.scss */
|
/* line 247, ../sass/user-environ/_layout.scss */
|
||||||
.pane.items .object-holder {
|
.pane.items .object-holder {
|
||||||
top: 34px; }
|
top: 34px; }
|
||||||
/* line 249, ../sass/user-environ/_layout.scss */
|
/* line 251, ../sass/user-environ/_layout.scss */
|
||||||
.pane .object-holder {
|
.pane .object-holder {
|
||||||
overflow: auto; }
|
overflow: auto; }
|
||||||
|
|
||||||
/* line 257, ../sass/user-environ/_layout.scss */
|
/* line 259, ../sass/user-environ/_layout.scss */
|
||||||
.split-layout.horizontal > .pane {
|
.split-layout.horizontal > .pane {
|
||||||
margin-top: 5px; }
|
margin-top: 5px; }
|
||||||
/* line 260, ../sass/user-environ/_layout.scss */
|
/* line 262, ../sass/user-environ/_layout.scss */
|
||||||
.split-layout.horizontal > .pane:first-child {
|
.split-layout.horizontal > .pane:first-child {
|
||||||
margin-top: 0; }
|
margin-top: 0; }
|
||||||
/* line 267, ../sass/user-environ/_layout.scss */
|
/* line 269, ../sass/user-environ/_layout.scss */
|
||||||
.split-layout.vertical > .pane {
|
.split-layout.vertical > .pane {
|
||||||
margin-left: 5px; }
|
margin-left: 5px; }
|
||||||
/* line 269, ../sass/user-environ/_layout.scss */
|
/* line 271, ../sass/user-environ/_layout.scss */
|
||||||
.split-layout.vertical > .pane > .holder {
|
.split-layout.vertical > .pane > .holder {
|
||||||
left: 0;
|
left: 0;
|
||||||
right: 0; }
|
right: 0; }
|
||||||
/* line 273, ../sass/user-environ/_layout.scss */
|
/* line 275, ../sass/user-environ/_layout.scss */
|
||||||
.split-layout.vertical > .pane:first-child {
|
.split-layout.vertical > .pane:first-child {
|
||||||
margin-left: 0; }
|
margin-left: 0; }
|
||||||
/* line 275, ../sass/user-environ/_layout.scss */
|
/* line 277, ../sass/user-environ/_layout.scss */
|
||||||
.split-layout.vertical > .pane:first-child .holder {
|
.split-layout.vertical > .pane:first-child .holder {
|
||||||
right: 3px; }
|
right: 3px; }
|
||||||
|
|
||||||
/* line 284, ../sass/user-environ/_layout.scss */
|
/* line 286, ../sass/user-environ/_layout.scss */
|
||||||
.vscroll {
|
.vscroll {
|
||||||
overflow-y: auto; }
|
overflow-y: auto; }
|
||||||
|
|
||||||
@ -2571,22 +2574,23 @@ label.checkbox.custom {
|
|||||||
color: #d9d9d9;
|
color: #d9d9d9;
|
||||||
line-height: 1.5rem;
|
line-height: 1.5rem;
|
||||||
padding: 3px 10px 3px 30px;
|
padding: 3px 10px 3px 30px;
|
||||||
|
position: relative;
|
||||||
white-space: nowrap; }
|
white-space: nowrap; }
|
||||||
/* line 46, ../sass/controls/_menus.scss */
|
/* line 47, ../sass/controls/_menus.scss */
|
||||||
.menu-element .menu ul li:first-child {
|
.menu-element .menu ul li:first-child {
|
||||||
border: none; }
|
border: none; }
|
||||||
/* line 49, ../sass/controls/_menus.scss */
|
/* line 50, ../sass/controls/_menus.scss */
|
||||||
.menu-element .menu ul li:hover {
|
.menu-element .menu ul li:hover {
|
||||||
background: #737373;
|
background: #737373;
|
||||||
color: #fff; }
|
color: #fff; }
|
||||||
/* line 55, ../sass/controls/_menus.scss */
|
/* line 56, ../sass/controls/_menus.scss */
|
||||||
.menu-element .menu ul li:hover .icon {
|
.menu-element .menu ul li:hover .icon {
|
||||||
color: #33ccff; }
|
color: #33ccff; }
|
||||||
/* line 63, ../sass/controls/_menus.scss */
|
/* line 64, ../sass/controls/_menus.scss */
|
||||||
.menu-element .menu ul li .type-icon {
|
.menu-element .menu ul li .type-icon {
|
||||||
left: 10px; }
|
left: 10px; }
|
||||||
/* line 70, ../sass/controls/_menus.scss */
|
/* line 71, ../sass/controls/_menus.scss */
|
||||||
.menu-element .context-menu,
|
.menu-element .context-menu, .menu-element .checkbox-menu,
|
||||||
.menu-element .super-menu {
|
.menu-element .super-menu {
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzhjOGM4YyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzgwODA4MCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
|
background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzhjOGM4YyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzgwODA4MCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
|
||||||
@ -2609,35 +2613,56 @@ label.checkbox.custom {
|
|||||||
color: #999;
|
color: #999;
|
||||||
display: inline-block; }
|
display: inline-block; }
|
||||||
/* line 170, ../sass/_mixins.scss */
|
/* line 170, ../sass/_mixins.scss */
|
||||||
.menu-element .context-menu.btn-menu .invoke-menu,
|
.menu-element .context-menu.btn-menu .invoke-menu, .menu-element .btn-menu.checkbox-menu .invoke-menu,
|
||||||
.menu-element .super-menu.btn-menu .invoke-menu {
|
.menu-element .super-menu.btn-menu .invoke-menu {
|
||||||
color: #b0b0b0; }
|
color: #b0b0b0; }
|
||||||
/* line 78, ../sass/controls/_menus.scss */
|
/* line 79, ../sass/controls/_menus.scss */
|
||||||
.menu-element .context-menu ul li,
|
.menu-element .context-menu ul li, .menu-element .checkbox-menu ul li,
|
||||||
.menu-element .super-menu ul li {
|
.menu-element .super-menu ul li {
|
||||||
padding-left: 25px; }
|
padding-left: 25px; }
|
||||||
/* line 80, ../sass/controls/_menus.scss */
|
/* line 81, ../sass/controls/_menus.scss */
|
||||||
.menu-element .context-menu ul li a,
|
.menu-element .context-menu ul li a, .menu-element .checkbox-menu ul li a,
|
||||||
.menu-element .super-menu ul li a {
|
.menu-element .super-menu ul li a {
|
||||||
color: white; }
|
color: white; }
|
||||||
/* line 81, ../sass/controls/_menus.scss */
|
/* line 84, ../sass/controls/_menus.scss */
|
||||||
.menu-element .context-menu ul li .icon,
|
.menu-element .context-menu ul li .icon, .menu-element .checkbox-menu ul li .icon,
|
||||||
.menu-element .super-menu ul li .icon {
|
.menu-element .super-menu ul li .icon {
|
||||||
color: #24c8ff; }
|
color: #24c8ff; }
|
||||||
/* line 84, ../sass/controls/_menus.scss */
|
/* line 87, ../sass/controls/_menus.scss */
|
||||||
.menu-element .context-menu ul li .type-icon,
|
.menu-element .context-menu ul li .type-icon, .menu-element .checkbox-menu ul li .type-icon,
|
||||||
.menu-element .super-menu ul li .type-icon {
|
.menu-element .super-menu ul li .type-icon {
|
||||||
left: 5px; }
|
left: 5px; }
|
||||||
/* line 87, ../sass/controls/_menus.scss */
|
/* line 90, ../sass/controls/_menus.scss */
|
||||||
.menu-element .context-menu ul li:hover .icon,
|
.menu-element .context-menu ul li:hover .icon, .menu-element .checkbox-menu ul li:hover .icon,
|
||||||
.menu-element .super-menu ul li:hover .icon {
|
.menu-element .super-menu ul li:hover .icon {
|
||||||
color: #3dcfff; }
|
color: #3dcfff; }
|
||||||
/* line 94, ../sass/controls/_menus.scss */
|
/* line 99, ../sass/controls/_menus.scss */
|
||||||
|
.menu-element .checkbox-menu ul li {
|
||||||
|
padding-left: 50px; }
|
||||||
|
/* line 101, ../sass/controls/_menus.scss */
|
||||||
|
.menu-element .checkbox-menu ul li .checkbox {
|
||||||
|
position: absolute;
|
||||||
|
left: 5px;
|
||||||
|
top: 0.53333rem; }
|
||||||
|
/* line 106, ../sass/controls/_menus.scss */
|
||||||
|
.menu-element .checkbox-menu ul li .checkbox em {
|
||||||
|
height: 0.7rem;
|
||||||
|
width: 0.7rem; }
|
||||||
|
/* line 109, ../sass/controls/_menus.scss */
|
||||||
|
.menu-element .checkbox-menu ul li .checkbox em:before {
|
||||||
|
font-size: 7px !important;
|
||||||
|
height: 0.7rem;
|
||||||
|
width: 0.7rem;
|
||||||
|
line-height: 0.7rem; }
|
||||||
|
/* line 117, ../sass/controls/_menus.scss */
|
||||||
|
.menu-element .checkbox-menu ul li .type-icon {
|
||||||
|
left: 25px; }
|
||||||
|
/* line 123, ../sass/controls/_menus.scss */
|
||||||
.menu-element .super-menu {
|
.menu-element .super-menu {
|
||||||
display: block;
|
display: block;
|
||||||
width: 500px;
|
width: 500px;
|
||||||
height: 480px; }
|
height: 480px; }
|
||||||
/* line 104, ../sass/controls/_menus.scss */
|
/* line 133, ../sass/controls/_menus.scss */
|
||||||
.menu-element .super-menu .contents {
|
.menu-element .super-menu .contents {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -2647,12 +2672,12 @@ label.checkbox.custom {
|
|||||||
left: 5px;
|
left: 5px;
|
||||||
width: auto;
|
width: auto;
|
||||||
height: auto; }
|
height: auto; }
|
||||||
/* line 107, ../sass/controls/_menus.scss */
|
/* line 136, ../sass/controls/_menus.scss */
|
||||||
.menu-element .super-menu .pane {
|
.menu-element .super-menu .pane {
|
||||||
-moz-box-sizing: border-box;
|
-moz-box-sizing: border-box;
|
||||||
-webkit-box-sizing: border-box;
|
-webkit-box-sizing: border-box;
|
||||||
box-sizing: border-box; }
|
box-sizing: border-box; }
|
||||||
/* line 109, ../sass/controls/_menus.scss */
|
/* line 138, ../sass/controls/_menus.scss */
|
||||||
.menu-element .super-menu .pane.left {
|
.menu-element .super-menu .pane.left {
|
||||||
border-right: 1px solid rgba(255, 255, 255, 0.2);
|
border-right: 1px solid rgba(255, 255, 255, 0.2);
|
||||||
left: 0;
|
left: 0;
|
||||||
@ -2661,23 +2686,23 @@ label.checkbox.custom {
|
|||||||
width: 50%;
|
width: 50%;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
overflow-y: auto; }
|
overflow-y: auto; }
|
||||||
/* line 119, ../sass/controls/_menus.scss */
|
/* line 148, ../sass/controls/_menus.scss */
|
||||||
.menu-element .super-menu .pane.left ul li {
|
.menu-element .super-menu .pane.left ul li {
|
||||||
-moz-border-radius: 3px;
|
-moz-border-radius: 3px;
|
||||||
-webkit-border-radius: 3px;
|
-webkit-border-radius: 3px;
|
||||||
border-radius: 3px;
|
border-radius: 3px;
|
||||||
padding-left: 30px;
|
padding-left: 30px;
|
||||||
border-top: none; }
|
border-top: none; }
|
||||||
/* line 126, ../sass/controls/_menus.scss */
|
/* line 155, ../sass/controls/_menus.scss */
|
||||||
.menu-element .super-menu .pane.right {
|
.menu-element .super-menu .pane.right {
|
||||||
left: auto;
|
left: auto;
|
||||||
right: 0;
|
right: 0;
|
||||||
padding: 25px;
|
padding: 25px;
|
||||||
width: 50%; }
|
width: 50%; }
|
||||||
/* line 132, ../sass/controls/_menus.scss */
|
/* line 161, ../sass/controls/_menus.scss */
|
||||||
.menu-element .super-menu .pane.right .icon {
|
.menu-element .super-menu .pane.right .icon {
|
||||||
color: #fff; }
|
color: #fff; }
|
||||||
/* line 139, ../sass/controls/_menus.scss */
|
/* line 168, ../sass/controls/_menus.scss */
|
||||||
.menu-element .super-menu .menu-item-description .desc-area.icon {
|
.menu-element .super-menu .menu-item-description .desc-area.icon {
|
||||||
position: relative;
|
position: relative;
|
||||||
font-size: 8em;
|
font-size: 8em;
|
||||||
@ -2686,40 +2711,40 @@ label.checkbox.custom {
|
|||||||
line-height: 150px;
|
line-height: 150px;
|
||||||
margin-bottom: 25px;
|
margin-bottom: 25px;
|
||||||
text-align: center; }
|
text-align: center; }
|
||||||
/* line 149, ../sass/controls/_menus.scss */
|
/* line 178, ../sass/controls/_menus.scss */
|
||||||
.menu-element .super-menu .menu-item-description .desc-area.title {
|
.menu-element .super-menu .menu-item-description .desc-area.title {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 1.2em;
|
font-size: 1.2em;
|
||||||
margin-bottom: 0.5em; }
|
margin-bottom: 0.5em; }
|
||||||
/* line 154, ../sass/controls/_menus.scss */
|
/* line 183, ../sass/controls/_menus.scss */
|
||||||
.menu-element .super-menu .menu-item-description .desc-area.description {
|
.menu-element .super-menu .menu-item-description .desc-area.description {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
font-size: 0.8em;
|
font-size: 0.8em;
|
||||||
line-height: 1.5em; }
|
line-height: 1.5em; }
|
||||||
/* line 163, ../sass/controls/_menus.scss */
|
/* line 192, ../sass/controls/_menus.scss */
|
||||||
.menu-element .context-menu {
|
.menu-element .context-menu, .menu-element .checkbox-menu {
|
||||||
font-size: 0.80rem; }
|
font-size: 0.80rem; }
|
||||||
|
|
||||||
/* line 168, ../sass/controls/_menus.scss */
|
/* line 197, ../sass/controls/_menus.scss */
|
||||||
.context-menu-holder {
|
.context-menu-holder {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 200px;
|
height: 200px;
|
||||||
width: 170px;
|
width: 170px;
|
||||||
z-index: 70; }
|
z-index: 70; }
|
||||||
/* line 174, ../sass/controls/_menus.scss */
|
/* line 203, ../sass/controls/_menus.scss */
|
||||||
.context-menu-holder .context-menu-wrapper {
|
.context-menu-holder .context-menu-wrapper {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%; }
|
width: 100%; }
|
||||||
/* line 181, ../sass/controls/_menus.scss */
|
/* line 210, ../sass/controls/_menus.scss */
|
||||||
.context-menu-holder.go-left .context-menu {
|
.context-menu-holder.go-left .context-menu, .context-menu-holder.go-left .menu-element .checkbox-menu, .menu-element .context-menu-holder.go-left .checkbox-menu {
|
||||||
right: 0; }
|
right: 0; }
|
||||||
/* line 182, ../sass/controls/_menus.scss */
|
/* line 213, ../sass/controls/_menus.scss */
|
||||||
.context-menu-holder.go-up .context-menu {
|
.context-menu-holder.go-up .context-menu, .context-menu-holder.go-up .menu-element .checkbox-menu, .menu-element .context-menu-holder.go-up .checkbox-menu {
|
||||||
bottom: 0; }
|
bottom: 0; }
|
||||||
|
|
||||||
/* line 185, ../sass/controls/_menus.scss */
|
/* line 218, ../sass/controls/_menus.scss */
|
||||||
.btn-bar.right .menu,
|
.btn-bar.right .menu,
|
||||||
.menus-to-left .menu {
|
.menus-to-left .menu {
|
||||||
left: auto;
|
left: auto;
|
||||||
|
@ -250,3 +250,248 @@ ul.tree {
|
|||||||
/* line 154, ../sass/tree/_tree.scss */
|
/* line 154, ../sass/tree/_tree.scss */
|
||||||
ul.tree ul.tree {
|
ul.tree ul.tree {
|
||||||
margin-left: 15px; }
|
margin-left: 15px; }
|
||||||
|
|
||||||
|
/*****************************************************************************
|
||||||
|
* 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
/* line 23, ../sass/search/_search.scss */
|
||||||
|
.abs.search-holder {
|
||||||
|
height: 25px;
|
||||||
|
bottom: 0;
|
||||||
|
z-index: 5; }
|
||||||
|
/* line 27, ../sass/search/_search.scss */
|
||||||
|
.abs.search-holder.active {
|
||||||
|
height: auto;
|
||||||
|
bottom: 0; }
|
||||||
|
|
||||||
|
/* line 38, ../sass/search/_search.scss */
|
||||||
|
.search {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%; }
|
||||||
|
/* line 49, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar {
|
||||||
|
font-size: 0.8em;
|
||||||
|
position: relative;
|
||||||
|
width: 100%; }
|
||||||
|
/* line 66, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .search-input {
|
||||||
|
height: 25px;
|
||||||
|
line-height: 25px;
|
||||||
|
padding-top: 0;
|
||||||
|
padding-bottom: 0; }
|
||||||
|
/* line 73, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .search-icon,
|
||||||
|
.search .search-bar .clear-icon,
|
||||||
|
.search .search-bar .menu-icon {
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
color: #737373;
|
||||||
|
height: 17px;
|
||||||
|
width: 17px;
|
||||||
|
line-height: 17px;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
top: 4px; }
|
||||||
|
/* line 86, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .clear-icon,
|
||||||
|
.search .search-bar .menu-icon {
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color .25s; }
|
||||||
|
/* line 93, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .search-input {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
padding-left: 22px !important;
|
||||||
|
padding-right: 44px !important; }
|
||||||
|
/* line 100, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .search-input input {
|
||||||
|
width: 100%; }
|
||||||
|
/* line 105, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .search-icon {
|
||||||
|
color: #737373;
|
||||||
|
left: 3px;
|
||||||
|
transition: visibility .15s, opacity .15s, color .2s;
|
||||||
|
pointer-events: none; }
|
||||||
|
/* line 125, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .search-input:hover + div.search-icon {
|
||||||
|
color: #a6a6a6; }
|
||||||
|
/* line 129, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .clear-icon {
|
||||||
|
right: 22px;
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
transition: visibility .15s, opacity .15s, color .2s; }
|
||||||
|
/* line 138, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .clear-icon.content {
|
||||||
|
visibility: visible;
|
||||||
|
opacity: 1; }
|
||||||
|
/* line 143, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .clear-icon:hover {
|
||||||
|
color: #a6a6a6; }
|
||||||
|
/* line 148, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .menu-icon {
|
||||||
|
font-size: 0.8em;
|
||||||
|
padding-right: 4px;
|
||||||
|
right: 4px;
|
||||||
|
text-align: right; }
|
||||||
|
/* line 154, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .menu-icon:hover {
|
||||||
|
color: #a6a6a6; }
|
||||||
|
/* line 159, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .search-menu-holder {
|
||||||
|
float: right;
|
||||||
|
left: -20px;
|
||||||
|
z-index: 1;
|
||||||
|
transition: visibility .05s, opacity .05s; }
|
||||||
|
/* line 169, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .search-menu-holder.off {
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0; }
|
||||||
|
/* line 176, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar .menu-icon:hover + div.search-menu-holder {
|
||||||
|
visibility: visible; }
|
||||||
|
/* line 179, ../sass/search/_search.scss */
|
||||||
|
.search .search-bar div.search-menu-holder:hover {
|
||||||
|
visibility: visible; }
|
||||||
|
/* line 184, ../sass/search/_search.scss */
|
||||||
|
.search .active-filter-display {
|
||||||
|
-moz-border-radius: 2px;
|
||||||
|
-webkit-border-radius: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
-webkit-box-sizing: border-box;
|
||||||
|
box-sizing: border-box;
|
||||||
|
line-height: 130%;
|
||||||
|
padding: 5px 0;
|
||||||
|
padding-left: 1.4625em;
|
||||||
|
font-size: 0.65em;
|
||||||
|
margin-top: 3px; }
|
||||||
|
/* line 199, ../sass/search/_search.scss */
|
||||||
|
.search .active-filter-display .clear-filters-icon {
|
||||||
|
opacity: 0.4;
|
||||||
|
font-size: 0.8em;
|
||||||
|
position: absolute;
|
||||||
|
left: 1px;
|
||||||
|
cursor: pointer; }
|
||||||
|
/* line 210, ../sass/search/_search.scss */
|
||||||
|
.search .active-filter-display.off {
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
height: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0; }
|
||||||
|
/* line 220, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll {
|
||||||
|
order: 3;
|
||||||
|
margin-top: 4px;
|
||||||
|
overflow-y: auto;
|
||||||
|
top: auto;
|
||||||
|
height: auto;
|
||||||
|
max-height: 100%;
|
||||||
|
position: relative; }
|
||||||
|
/* line 235, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .results .search-result-item {
|
||||||
|
-moz-transition: background-color 0.25s;
|
||||||
|
-o-transition: background-color 0.25s;
|
||||||
|
-webkit-transition: background-color 0.25s;
|
||||||
|
transition: background-color 0.25s;
|
||||||
|
margin-bottom: 2px;
|
||||||
|
border-radius: 2px;
|
||||||
|
padding-top: 4px;
|
||||||
|
padding-bottom: 2px; }
|
||||||
|
/* line 249, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .results .search-result-item .label {
|
||||||
|
margin-left: 6px; }
|
||||||
|
/* line 253, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .results .search-result-item .label .title-label {
|
||||||
|
display: inline-block;
|
||||||
|
position: absolute;
|
||||||
|
left: 29px;
|
||||||
|
right: 5px;
|
||||||
|
font-size: .8em;
|
||||||
|
line-height: 17px;
|
||||||
|
width: auto;
|
||||||
|
overflow: hidden;
|
||||||
|
text-overflow: ellipsis;
|
||||||
|
white-space: nowrap; }
|
||||||
|
/* line 275, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .results .search-result-item.selected {
|
||||||
|
background: #005177;
|
||||||
|
color: #fff; }
|
||||||
|
/* line 279, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .results .search-result-item.selected .view-control {
|
||||||
|
color: #0099cc; }
|
||||||
|
/* line 282, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .results .search-result-item.selected .label .type-icon {
|
||||||
|
color: #fff; }
|
||||||
|
/* line 287, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .results .search-result-item .label .type-icon .l-icon-link {
|
||||||
|
text-shadow: black 0 1px 2px;
|
||||||
|
z-index: 2;
|
||||||
|
color: #49dedb;
|
||||||
|
font-size: 8px;
|
||||||
|
line-height: 8px;
|
||||||
|
height: 8px;
|
||||||
|
width: 8px;
|
||||||
|
margin-left: -25px; }
|
||||||
|
/* line 296, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .results .search-result-item:not(.selected):hover {
|
||||||
|
background: #404040;
|
||||||
|
color: #cccccc; }
|
||||||
|
/* line 299, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .results .search-result-item:not(.selected):hover .context-trigger {
|
||||||
|
display: block; }
|
||||||
|
/* line 302, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .results .search-result-item:not(.selected):hover .icon {
|
||||||
|
color: #33ccff; }
|
||||||
|
/* line 310, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .load-icon {
|
||||||
|
position: relative; }
|
||||||
|
/* line 312, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .load-icon.loading {
|
||||||
|
pointer-events: none;
|
||||||
|
margin-left: 6px; }
|
||||||
|
/* line 316, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .load-icon.loading .title-label {
|
||||||
|
font-style: italic;
|
||||||
|
font-size: .9em;
|
||||||
|
opacity: 0.5;
|
||||||
|
margin-left: 26px;
|
||||||
|
line-height: 24px; }
|
||||||
|
/* line 326, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .load-icon.loading .wait-spinner {
|
||||||
|
margin-left: 6px; }
|
||||||
|
/* line 331, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .load-icon:not(.loading) {
|
||||||
|
cursor: pointer; }
|
||||||
|
/* line 336, ../sass/search/_search.scss */
|
||||||
|
.search .search-scroll .load-more-button {
|
||||||
|
margin-top: 5px 0;
|
||||||
|
font-size: 0.8em;
|
||||||
|
position: relative;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -45px;
|
||||||
|
text-align: center;
|
||||||
|
width: 90px;
|
||||||
|
white-space: nowrap; }
|
||||||
|
@ -1,19 +1,27 @@
|
|||||||
{
|
{
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"name": "WTD Symbols v2.1",
|
"name": "WTD Symbols v2.2",
|
||||||
"lastOpened": 1439844340068,
|
"lastOpened": 1439948744240,
|
||||||
"created": 1439844318831
|
"created": 1439948734037
|
||||||
},
|
},
|
||||||
"iconSets": [
|
"iconSets": [
|
||||||
{
|
{
|
||||||
"selection": [
|
"selection": [
|
||||||
|
{
|
||||||
|
"order": 82,
|
||||||
|
"id": 84,
|
||||||
|
"prevSize": 32,
|
||||||
|
"code": 58887,
|
||||||
|
"name": "icon-x-in-circle",
|
||||||
|
"tempChar": ""
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"order": 77,
|
"order": 77,
|
||||||
"id": 83,
|
"id": 83,
|
||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 58881,
|
"code": 58881,
|
||||||
"name": "icon-datatable",
|
"name": "icon-datatable",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 78,
|
"order": 78,
|
||||||
@ -21,7 +29,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 58882,
|
"code": 58882,
|
||||||
"name": "icon-tabular-scrolling",
|
"name": "icon-tabular-scrolling",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 79,
|
"order": 79,
|
||||||
@ -29,7 +37,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 58884,
|
"code": 58884,
|
||||||
"name": "icon-tabular",
|
"name": "icon-tabular",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 80,
|
"order": 80,
|
||||||
@ -37,7 +45,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 58885,
|
"code": 58885,
|
||||||
"name": "icon-calendar",
|
"name": "icon-calendar",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 81,
|
"order": 81,
|
||||||
@ -45,7 +53,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 58886,
|
"code": 58886,
|
||||||
"name": "icon-paint-bucket",
|
"name": "icon-paint-bucket",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 1,
|
"order": 1,
|
||||||
@ -53,7 +61,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 123,
|
"code": 123,
|
||||||
"name": "icon-pointer-left",
|
"name": "icon-pointer-left",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 3,
|
"order": 3,
|
||||||
@ -61,7 +69,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 125,
|
"code": 125,
|
||||||
"name": "icon-pointer-right",
|
"name": "icon-pointer-right",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 4,
|
"order": 4,
|
||||||
@ -69,7 +77,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 80,
|
"code": 80,
|
||||||
"name": "icon-person",
|
"name": "icon-person",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 5,
|
"order": 5,
|
||||||
@ -77,7 +85,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 232,
|
"code": 232,
|
||||||
"name": "icon-chain-links",
|
"name": "icon-chain-links",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 6,
|
"order": 6,
|
||||||
@ -85,7 +93,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 115,
|
"code": 115,
|
||||||
"name": "icon-database-in-brackets",
|
"name": "icon-database-in-brackets",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 7,
|
"order": 7,
|
||||||
@ -93,7 +101,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 114,
|
"code": 114,
|
||||||
"name": "icon-refresh",
|
"name": "icon-refresh",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 8,
|
"order": 8,
|
||||||
@ -101,7 +109,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 108,
|
"code": 108,
|
||||||
"name": "icon-lock",
|
"name": "icon-lock",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 9,
|
"order": 9,
|
||||||
@ -109,7 +117,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 51,
|
"code": 51,
|
||||||
"name": "icon-box-with-dashed-lines",
|
"name": "icon-box-with-dashed-lines",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 10,
|
"order": 10,
|
||||||
@ -117,7 +125,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 58880,
|
"code": 58880,
|
||||||
"name": "icon-box-with-arrow-cursor",
|
"name": "icon-box-with-arrow-cursor",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 11,
|
"order": 11,
|
||||||
@ -125,7 +133,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 65,
|
"code": 65,
|
||||||
"name": "icon-activity-mode",
|
"name": "icon-activity-mode",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 12,
|
"order": 12,
|
||||||
@ -133,7 +141,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 97,
|
"code": 97,
|
||||||
"name": "icon-activity",
|
"name": "icon-activity",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 13,
|
"order": 13,
|
||||||
@ -141,7 +149,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 33,
|
"code": 33,
|
||||||
"name": "icon-alert-rect",
|
"name": "icon-alert-rect",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 14,
|
"order": 14,
|
||||||
@ -149,7 +157,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 58883,
|
"code": 58883,
|
||||||
"name": "icon-alert-triangle",
|
"name": "icon-alert-triangle",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 15,
|
"order": 15,
|
||||||
@ -157,7 +165,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 238,
|
"code": 238,
|
||||||
"name": "icon-arrow-double-down",
|
"name": "icon-arrow-double-down",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 16,
|
"order": 16,
|
||||||
@ -165,7 +173,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 235,
|
"code": 235,
|
||||||
"name": "icon-arrow-double-up",
|
"name": "icon-arrow-double-up",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 2,
|
"order": 2,
|
||||||
@ -173,7 +181,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 118,
|
"code": 118,
|
||||||
"name": "icon-arrow-down",
|
"name": "icon-arrow-down",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 19,
|
"order": 19,
|
||||||
@ -181,7 +189,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 60,
|
"code": 60,
|
||||||
"name": "icon-arrow-left",
|
"name": "icon-arrow-left",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 20,
|
"order": 20,
|
||||||
@ -189,7 +197,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 62,
|
"code": 62,
|
||||||
"name": "icon-arrow-right",
|
"name": "icon-arrow-right",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 21,
|
"order": 21,
|
||||||
@ -197,7 +205,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 236,
|
"code": 236,
|
||||||
"name": "icon-arrow-tall-down",
|
"name": "icon-arrow-tall-down",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 22,
|
"order": 22,
|
||||||
@ -205,7 +213,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 237,
|
"code": 237,
|
||||||
"name": "icon-arrow-tall-up",
|
"name": "icon-arrow-tall-up",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 23,
|
"order": 23,
|
||||||
@ -213,7 +221,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 94,
|
"code": 94,
|
||||||
"name": "icon-arrow-up",
|
"name": "icon-arrow-up",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 24,
|
"order": 24,
|
||||||
@ -221,7 +229,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 73,
|
"code": 73,
|
||||||
"name": "icon-arrows-out",
|
"name": "icon-arrows-out",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 25,
|
"order": 25,
|
||||||
@ -229,7 +237,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 58893,
|
"code": 58893,
|
||||||
"name": "icon-arrows-right-left",
|
"name": "icon-arrows-right-left",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 33,
|
"order": 33,
|
||||||
@ -237,7 +245,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 53,
|
"code": 53,
|
||||||
"name": "icon-arrows-up-down",
|
"name": "icon-arrows-up-down",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 26,
|
"order": 26,
|
||||||
@ -245,7 +253,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 42,
|
"code": 42,
|
||||||
"name": "icon-asterisk",
|
"name": "icon-asterisk",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 27,
|
"order": 27,
|
||||||
@ -253,7 +261,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 72,
|
"code": 72,
|
||||||
"name": "icon-autoflow-tabular",
|
"name": "icon-autoflow-tabular",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 28,
|
"order": 28,
|
||||||
@ -261,7 +269,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 224,
|
"code": 224,
|
||||||
"name": "icon-box-round-corners",
|
"name": "icon-box-round-corners",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 29,
|
"order": 29,
|
||||||
@ -269,7 +277,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 50,
|
"code": 50,
|
||||||
"name": "icon-check",
|
"name": "icon-check",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 30,
|
"order": 30,
|
||||||
@ -277,7 +285,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 67,
|
"code": 67,
|
||||||
"name": "icon-clock",
|
"name": "icon-clock",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 31,
|
"order": 31,
|
||||||
@ -285,7 +293,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 46,
|
"code": 46,
|
||||||
"name": "icon-connectivity",
|
"name": "icon-connectivity",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 32,
|
"order": 32,
|
||||||
@ -293,7 +301,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 100,
|
"code": 100,
|
||||||
"name": "icon-database-query",
|
"name": "icon-database-query",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 17,
|
"order": 17,
|
||||||
@ -301,7 +309,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 68,
|
"code": 68,
|
||||||
"name": "icon-database",
|
"name": "icon-database",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 35,
|
"order": 35,
|
||||||
@ -309,7 +317,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 81,
|
"code": 81,
|
||||||
"name": "icon-dictionary",
|
"name": "icon-dictionary",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 36,
|
"order": 36,
|
||||||
@ -317,7 +325,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 242,
|
"code": 242,
|
||||||
"name": "icon-duplicate",
|
"name": "icon-duplicate",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 37,
|
"order": 37,
|
||||||
@ -325,7 +333,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 102,
|
"code": 102,
|
||||||
"name": "icon-folder-new",
|
"name": "icon-folder-new",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 38,
|
"order": 38,
|
||||||
@ -333,7 +341,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 70,
|
"code": 70,
|
||||||
"name": "icon-folder",
|
"name": "icon-folder",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 39,
|
"order": 39,
|
||||||
@ -341,7 +349,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 95,
|
"code": 95,
|
||||||
"name": "icon-fullscreen-collapse",
|
"name": "icon-fullscreen-collapse",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 40,
|
"order": 40,
|
||||||
@ -349,7 +357,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 122,
|
"code": 122,
|
||||||
"name": "icon-fullscreen-expand",
|
"name": "icon-fullscreen-expand",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 41,
|
"order": 41,
|
||||||
@ -357,7 +365,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 71,
|
"code": 71,
|
||||||
"name": "icon-gear",
|
"name": "icon-gear",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 49,
|
"order": 49,
|
||||||
@ -365,7 +373,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 227,
|
"code": 227,
|
||||||
"name": "icon-image",
|
"name": "icon-image",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 42,
|
"order": 42,
|
||||||
@ -373,7 +381,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 225,
|
"code": 225,
|
||||||
"name": "icon-layers",
|
"name": "icon-layers",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 43,
|
"order": 43,
|
||||||
@ -381,7 +389,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 76,
|
"code": 76,
|
||||||
"name": "icon-layout",
|
"name": "icon-layout",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 44,
|
"order": 44,
|
||||||
@ -389,7 +397,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 226,
|
"code": 226,
|
||||||
"name": "icon-line-horz",
|
"name": "icon-line-horz",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 75,
|
"order": 75,
|
||||||
@ -397,7 +405,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 244,
|
"code": 244,
|
||||||
"name": "icon-link",
|
"name": "icon-link",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 46,
|
"order": 46,
|
||||||
@ -405,7 +413,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 88,
|
"code": 88,
|
||||||
"name": "icon-magnify-in",
|
"name": "icon-magnify-in",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 47,
|
"order": 47,
|
||||||
@ -413,7 +421,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 89,
|
"code": 89,
|
||||||
"name": "icon-magnify-out",
|
"name": "icon-magnify-out",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 48,
|
"order": 48,
|
||||||
@ -421,7 +429,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 77,
|
"code": 77,
|
||||||
"name": "icon-magnify",
|
"name": "icon-magnify",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 34,
|
"order": 34,
|
||||||
@ -429,7 +437,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 109,
|
"code": 109,
|
||||||
"name": "icon-menu",
|
"name": "icon-menu",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 50,
|
"order": 50,
|
||||||
@ -437,7 +445,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 243,
|
"code": 243,
|
||||||
"name": "icon-move",
|
"name": "icon-move",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 51,
|
"order": 51,
|
||||||
@ -445,7 +453,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 121,
|
"code": 121,
|
||||||
"name": "icon-new-window",
|
"name": "icon-new-window",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 52,
|
"order": 52,
|
||||||
@ -453,7 +461,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 111,
|
"code": 111,
|
||||||
"name": "icon-object",
|
"name": "icon-object",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 73,
|
"order": 73,
|
||||||
@ -461,7 +469,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 63,
|
"code": 63,
|
||||||
"name": "icon-object-unknown",
|
"name": "icon-object-unknown",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 53,
|
"order": 53,
|
||||||
@ -469,7 +477,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 86,
|
"code": 86,
|
||||||
"name": "icon-packet",
|
"name": "icon-packet",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 54,
|
"order": 54,
|
||||||
@ -477,7 +485,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 234,
|
"code": 234,
|
||||||
"name": "icon-page",
|
"name": "icon-page",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 55,
|
"order": 55,
|
||||||
@ -485,7 +493,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 241,
|
"code": 241,
|
||||||
"name": "icon-pause",
|
"name": "icon-pause",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 56,
|
"order": 56,
|
||||||
@ -493,7 +501,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 112,
|
"code": 112,
|
||||||
"name": "icon-pencil",
|
"name": "icon-pencil",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 65,
|
"order": 65,
|
||||||
@ -501,7 +509,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 79,
|
"code": 79,
|
||||||
"name": "icon-people",
|
"name": "icon-people",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 57,
|
"order": 57,
|
||||||
@ -509,7 +517,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 239,
|
"code": 239,
|
||||||
"name": "icon-play",
|
"name": "icon-play",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 58,
|
"order": 58,
|
||||||
@ -517,7 +525,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 233,
|
"code": 233,
|
||||||
"name": "icon-plot-resource",
|
"name": "icon-plot-resource",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 59,
|
"order": 59,
|
||||||
@ -525,7 +533,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 43,
|
"code": 43,
|
||||||
"name": "icon-plus",
|
"name": "icon-plus",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 60,
|
"order": 60,
|
||||||
@ -533,7 +541,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 45,
|
"code": 45,
|
||||||
"name": "icon-minus",
|
"name": "icon-minus",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 61,
|
"order": 61,
|
||||||
@ -541,7 +549,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 54,
|
"code": 54,
|
||||||
"name": "icon-sine",
|
"name": "icon-sine",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 62,
|
"order": 62,
|
||||||
@ -549,7 +557,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 228,
|
"code": 228,
|
||||||
"name": "icon-T",
|
"name": "icon-T",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 63,
|
"order": 63,
|
||||||
@ -557,7 +565,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 116,
|
"code": 116,
|
||||||
"name": "icon-telemetry-panel",
|
"name": "icon-telemetry-panel",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 64,
|
"order": 64,
|
||||||
@ -565,7 +573,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 84,
|
"code": 84,
|
||||||
"name": "icon-telemetry",
|
"name": "icon-telemetry",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 18,
|
"order": 18,
|
||||||
@ -573,7 +581,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 246,
|
"code": 246,
|
||||||
"name": "icon-thumbs-strip",
|
"name": "icon-thumbs-strip",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 67,
|
"order": 67,
|
||||||
@ -581,7 +589,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 83,
|
"code": 83,
|
||||||
"name": "icon-timeline",
|
"name": "icon-timeline",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 68,
|
"order": 68,
|
||||||
@ -589,7 +597,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 245,
|
"code": 245,
|
||||||
"name": "icon-timer",
|
"name": "icon-timer",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 69,
|
"order": 69,
|
||||||
@ -597,7 +605,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 90,
|
"code": 90,
|
||||||
"name": "icon-trash",
|
"name": "icon-trash",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 70,
|
"order": 70,
|
||||||
@ -605,7 +613,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 229,
|
"code": 229,
|
||||||
"name": "icon-two-parts-both",
|
"name": "icon-two-parts-both",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 71,
|
"order": 71,
|
||||||
@ -613,7 +621,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 231,
|
"code": 231,
|
||||||
"name": "icon-two-parts-one-only",
|
"name": "icon-two-parts-one-only",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 72,
|
"order": 72,
|
||||||
@ -621,7 +629,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 120,
|
"code": 120,
|
||||||
"name": "icon-x-heavy",
|
"name": "icon-x-heavy",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"order": 66,
|
"order": 66,
|
||||||
@ -629,7 +637,7 @@
|
|||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"code": 58946,
|
"code": 58946,
|
||||||
"name": "icon-x",
|
"name": "icon-x",
|
||||||
"tempChar": ""
|
"tempChar": ""
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"id": 2,
|
"id": 2,
|
||||||
@ -644,6 +652,21 @@
|
|||||||
"height": 1024,
|
"height": 1024,
|
||||||
"prevSize": 32,
|
"prevSize": 32,
|
||||||
"icons": [
|
"icons": [
|
||||||
|
{
|
||||||
|
"id": 84,
|
||||||
|
"paths": [
|
||||||
|
"M512 0c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM832 704l-128 128-192-192-192 192-128-128 192-192-192-192 128-128 192 192 192-192 128 128-192 192 192 192z"
|
||||||
|
],
|
||||||
|
"attrs": [],
|
||||||
|
"isMulticolor": false,
|
||||||
|
"grid": 0,
|
||||||
|
"tags": [
|
||||||
|
"icon-x-in-circle"
|
||||||
|
],
|
||||||
|
"colorPermutations": {
|
||||||
|
"16161751": []
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": 83,
|
"id": 83,
|
||||||
"paths": [
|
"paths": [
|
||||||
@ -666,6 +689,10 @@
|
|||||||
"icon-datatable"
|
"icon-datatable"
|
||||||
],
|
],
|
||||||
"colorPermutations": {
|
"colorPermutations": {
|
||||||
|
"16161751": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
"125525525516161751": [
|
"125525525516161751": [
|
||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
@ -709,6 +736,13 @@
|
|||||||
"icon-tabular-scrolling"
|
"icon-tabular-scrolling"
|
||||||
],
|
],
|
||||||
"colorPermutations": {
|
"colorPermutations": {
|
||||||
|
"16161751": [
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
"125525525516161751": [
|
"125525525516161751": [
|
||||||
1,
|
1,
|
||||||
1,
|
1,
|
||||||
@ -760,6 +794,14 @@
|
|||||||
"icon-tabular"
|
"icon-tabular"
|
||||||
],
|
],
|
||||||
"colorPermutations": {
|
"colorPermutations": {
|
||||||
|
"16161751": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
"125525525516161751": [
|
"125525525516161751": [
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
@ -787,6 +829,9 @@
|
|||||||
"icon-calendar"
|
"icon-calendar"
|
||||||
],
|
],
|
||||||
"colorPermutations": {
|
"colorPermutations": {
|
||||||
|
"16161751": [
|
||||||
|
1
|
||||||
|
],
|
||||||
"125525525516161751": [
|
"125525525516161751": [
|
||||||
1
|
1
|
||||||
]
|
]
|
||||||
@ -814,6 +859,10 @@
|
|||||||
"icon-paint-bucket"
|
"icon-paint-bucket"
|
||||||
],
|
],
|
||||||
"colorPermutations": {
|
"colorPermutations": {
|
||||||
|
"16161751": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
"125525525516161751": [
|
"125525525516161751": [
|
||||||
1,
|
1,
|
||||||
1
|
1
|
||||||
|
Binary file not shown.
@ -83,6 +83,7 @@
|
|||||||
<glyph unicode="" glyph-name="icon-tabular" d="M0 896v-192h448v256h-384c-35.2 0-64-28.8-64-64zM960 960h-384v-256h448v192c0 35.2-28.8 64-64 64zM576 576h448v-256h-448v256zM0 576h448v-256h-448v256zM0 0c0-35.2 28.8-64 64-64h384v256h-448v-192zM576-64h384c35.2 0 64 28.8 64 64v192h-448v-256z" />
|
<glyph unicode="" glyph-name="icon-tabular" d="M0 896v-192h448v256h-384c-35.2 0-64-28.8-64-64zM960 960h-384v-256h448v192c0 35.2-28.8 64-64 64zM576 576h448v-256h-448v256zM0 576h448v-256h-448v256zM0 0c0-35.2 28.8-64 64-64h384v256h-448v-192zM576-64h384c35.2 0 64 28.8 64 64v192h-448v-256z" />
|
||||||
<glyph unicode="" glyph-name="icon-calendar" d="M896 960h-768c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128zM640 512h-256v192h256v-192zM384 448h256v-192h-256v192zM320 256h-256v192h256v-192zM320 704v-192h-256v192h256zM128 0c-17 0-33 6.6-45.2 18.8s-18.8 28.2-18.8 45.2v128h256v-192h-192zM384 0v192h256v-192h-256zM960 64c0-17-6.6-33-18.8-45.2s-28.2-18.8-45.2-18.8h-192v192h256v-128zM960 256h-256v192h256v-192zM960 512h-256v192h256v-192z" />
|
<glyph unicode="" glyph-name="icon-calendar" d="M896 960h-768c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128zM640 512h-256v192h256v-192zM384 448h256v-192h-256v192zM320 256h-256v192h256v-192zM320 704v-192h-256v192h256zM128 0c-17 0-33 6.6-45.2 18.8s-18.8 28.2-18.8 45.2v128h256v-192h-192zM384 0v192h256v-192h-256zM960 64c0-17-6.6-33-18.8-45.2s-28.2-18.8-45.2-18.8h-192v192h256v-128zM960 256h-256v192h256v-192zM960 512h-256v192h256v-192z" />
|
||||||
<glyph unicode="" glyph-name="icon-paint-bucket" d="M896 320c0 0-130-188-128-256 2-70.6 57.4-128 128-128s126 57.4 128 128c2 68-128 256-128 256zM449 831l0.2 64.8c0 35.4-28.4 64-63.8 64.2 0 0-0.2 0-0.2 0-35.2 0-63.8-28.6-64-63.8l-0.6-190.8-294-292.6c-50-50-12.4-215.2 112.4-340s290-162.4 340-112.4l417 423.6-447 447zM384 320c-70.6 0-128 57.4-128 128 0 47.4 25.8 89 64.4 111l-0.4-110.8c0-35.4 28.4-64 63.8-64.2 0 0 0.2 0 0.2 0 35.2 0 63.8 28.6 64 63.8l0.4 110.8c38-22.2 63.6-63.4 63.6-110.6 0-70.6-57.4-128-128-128z" />
|
<glyph unicode="" glyph-name="icon-paint-bucket" d="M896 320c0 0-130-188-128-256 2-70.6 57.4-128 128-128s126 57.4 128 128c2 68-128 256-128 256zM449 831l0.2 64.8c0 35.4-28.4 64-63.8 64.2 0 0-0.2 0-0.2 0-35.2 0-63.8-28.6-64-63.8l-0.6-190.8-294-292.6c-50-50-12.4-215.2 112.4-340s290-162.4 340-112.4l417 423.6-447 447zM384 320c-70.6 0-128 57.4-128 128 0 47.4 25.8 89 64.4 111l-0.4-110.8c0-35.4 28.4-64 63.8-64.2 0 0 0.2 0 0.2 0 35.2 0 63.8 28.6 64 63.8l0.4 110.8c38-22.2 63.6-63.4 63.6-110.6 0-70.6-57.4-128-128-128z" />
|
||||||
|
<glyph unicode="" glyph-name="icon-x-in-circle" d="M512 960c-282.8 0-512-229.2-512-512s229.2-512 512-512 512 229.2 512 512-229.2 512-512 512zM832 256l-128-128-192 192-192-192-128 128 192 192-192 192 128 128 192-192 192 192 128-128-192-192 192-192z" />
|
||||||
<glyph unicode="" glyph-name="icon-arrows-right-left" d="M1024 448l-448-512v1024zM448 960l-448-512 448-512z" />
|
<glyph unicode="" glyph-name="icon-arrows-right-left" d="M1024 448l-448-512v1024zM448 960l-448-512 448-512z" />
|
||||||
<glyph unicode="" glyph-name="icon-x" d="M384 448l-365.332-365.332c-24.89-24.89-24.89-65.62 0-90.51l37.49-37.49c24.89-24.89 65.62-24.89 90.51 0 0 0 365.332 365.332 365.332 365.332l365.332-365.332c24.89-24.89 65.62-24.89 90.51 0l37.49 37.49c24.89 24.89 24.89 65.62 0 90.51l-365.332 365.332c0 0 365.332 365.332 365.332 365.332 24.89 24.89 24.89 65.62 0 90.51l-37.49 37.49c-24.89 24.89-65.62 24.89-90.51 0 0 0-365.332-365.332-365.332-365.332l-365.332 365.332c-24.89 24.89-65.62 24.89-90.51 0l-37.49-37.49c-24.89-24.89-24.89-65.62 0-90.51 0 0 365.332-365.332 365.332-365.332z" />
|
<glyph unicode="" glyph-name="icon-x" d="M384 448l-365.332-365.332c-24.89-24.89-24.89-65.62 0-90.51l37.49-37.49c24.89-24.89 65.62-24.89 90.51 0 0 0 365.332 365.332 365.332 365.332l365.332-365.332c24.89-24.89 65.62-24.89 90.51 0l37.49 37.49c24.89 24.89 24.89 65.62 0 90.51l-365.332 365.332c0 0 365.332 365.332 365.332 365.332 24.89 24.89 24.89 65.62 0 90.51l-37.49 37.49c-24.89 24.89-65.62 24.89-90.51 0 0 0-365.332-365.332-365.332-365.332l-365.332 365.332c-24.89 24.89-65.62 24.89-90.51 0l-37.49-37.49c-24.89-24.89-24.89-65.62 0-90.51 0 0 365.332-365.332 365.332-365.332z" />
|
||||||
</font></defs></svg>
|
</font></defs></svg>
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Binary file not shown.
Binary file not shown.
@ -100,6 +100,7 @@ $ueAppLogoW: 105px;
|
|||||||
$ueEditToolBarH: 25px;
|
$ueEditToolBarH: 25px;
|
||||||
$ueBrowseLeftPaneW: 25%;
|
$ueBrowseLeftPaneW: 25%;
|
||||||
$ueEditLeftPaneW: 75%;
|
$ueEditLeftPaneW: 75%;
|
||||||
|
$treeSearchInputBarH: 25px;
|
||||||
// Overlay
|
// Overlay
|
||||||
$ovrTopBarH: 60px;
|
$ovrTopBarH: 60px;
|
||||||
$ovrFooterH: 40px;
|
$ovrFooterH: 40px;
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
/*****************************************************************************
|
||||||
/*****************************************************************************
|
/*****************************************************************************
|
||||||
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
* Open MCT Web, Copyright (c) 2014-2015, United States Government
|
||||||
* as represented by the Administrator of the National Aeronautics and Space
|
* as represented by the Administrator of the National Aeronautics and Space
|
||||||
@ -31,6 +32,7 @@
|
|||||||
@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";
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
color: lighten($bg, 60%);
|
color: lighten($bg, 60%);
|
||||||
line-height: $menuLineH;
|
line-height: $menuLineH;
|
||||||
padding: $interiorMarginSm $interiorMargin * 2 $interiorMarginSm ($interiorMargin * 2) + $treeTypeIconW;
|
padding: $interiorMarginSm $interiorMargin * 2 $interiorMarginSm ($interiorMargin * 2) + $treeTypeIconW;
|
||||||
|
position: relative;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
&:first-child {
|
&:first-child {
|
||||||
border: none;
|
border: none;
|
||||||
@ -77,7 +78,9 @@
|
|||||||
@include containerSubtle($bg);
|
@include containerSubtle($bg);
|
||||||
ul li {
|
ul li {
|
||||||
padding-left: 25px;
|
padding-left: 25px;
|
||||||
a { color: $fg; }
|
a {
|
||||||
|
color: $fg;
|
||||||
|
}
|
||||||
.icon {
|
.icon {
|
||||||
color: $ic;
|
color: $ic;
|
||||||
}
|
}
|
||||||
@ -90,6 +93,32 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.checkbox-menu {
|
||||||
|
// Used in search dropdown in tree
|
||||||
|
@extend .context-menu;
|
||||||
|
ul li {
|
||||||
|
padding-left: 50px;
|
||||||
|
.checkbox {
|
||||||
|
$d: 0.7rem;
|
||||||
|
position: absolute;
|
||||||
|
left: $interiorMargin;
|
||||||
|
top: ($menuLineH - $d) / 1.5;
|
||||||
|
em {
|
||||||
|
height: $d;
|
||||||
|
width: $d;
|
||||||
|
&:before {
|
||||||
|
font-size: 7px !important;// $d/2;
|
||||||
|
height: $d;
|
||||||
|
width: $d;
|
||||||
|
line-height: $d;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.type-icon {
|
||||||
|
left: 25px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.super-menu {
|
.super-menu {
|
||||||
$w: 500px;
|
$w: 500px;
|
||||||
@ -178,11 +207,17 @@
|
|||||||
.context-menu {
|
.context-menu {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.go-left .context-menu { right: 0; }
|
&.go-left .context-menu {
|
||||||
&.go-up .context-menu { bottom: 0; }
|
right: 0;
|
||||||
|
}
|
||||||
|
&.go-up .context-menu {
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-bar.right .menu,
|
.btn-bar.right .menu,
|
||||||
.menus-to-left .menu {
|
.menus-to-left .menu {
|
||||||
left: auto; right: 0; width: auto;
|
left: auto;
|
||||||
|
right: 0;
|
||||||
|
width: auto;
|
||||||
}
|
}
|
31
platform/commonUI/general/res/sass/search/_layout.scss
Normal file
31
platform/commonUI/general/res/sass/search/_layout.scss
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
347
platform/commonUI/general/res/sass/search/_search.scss
Normal file
347
platform/commonUI/general/res/sass/search/_search.scss
Normal file
@ -0,0 +1,347 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* 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.
|
||||||
|
*****************************************************************************/
|
||||||
|
|
||||||
|
.abs.search-holder {
|
||||||
|
//@include test(#990000);
|
||||||
|
height: $treeSearchInputBarH;
|
||||||
|
bottom: 0;
|
||||||
|
&.active {
|
||||||
|
height: auto;
|
||||||
|
bottom: 0;
|
||||||
|
}
|
||||||
|
//top: 23px;
|
||||||
|
|
||||||
|
// Align with the top of the divider bar, below create button
|
||||||
|
//margin-top: 10px; // CH comment out
|
||||||
|
z-index:5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search {
|
||||||
|
$iconWidth: 20px;
|
||||||
|
$leftMargin: 6px;
|
||||||
|
$rightPadding: 5px;
|
||||||
|
|
||||||
|
//padding-right: $rightPadding;
|
||||||
|
//@include test();
|
||||||
|
display: flex; //block;
|
||||||
|
flex-direction: column;
|
||||||
|
height: 100%;
|
||||||
|
|
||||||
|
.search-bar {
|
||||||
|
//$heightAdjust: 4px;
|
||||||
|
$textInputHeight: 19px; // This is equal to the default value, 19px
|
||||||
|
$iconEdgeM: 4px;
|
||||||
|
$iconD: $treeSearchInputBarH - ($iconEdgeM*2);
|
||||||
|
font-size: 0.8em;
|
||||||
|
|
||||||
|
//order: 1;
|
||||||
|
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
//height: $textInputHeight;
|
||||||
|
//margin-top: $heightAdjust;
|
||||||
|
.search-input,
|
||||||
|
.search-icon {
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-input {
|
||||||
|
height: $treeSearchInputBarH;
|
||||||
|
line-height: $treeSearchInputBarH;
|
||||||
|
padding-top: 0;
|
||||||
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-icon,
|
||||||
|
.clear-icon,
|
||||||
|
.menu-icon {
|
||||||
|
//@include test(#008800);
|
||||||
|
@include box-sizing(border-box);
|
||||||
|
color: $colorItemFg;
|
||||||
|
height: $iconD; width: $iconD;
|
||||||
|
line-height: $iconD;
|
||||||
|
position: absolute;
|
||||||
|
text-align: center;
|
||||||
|
top: $iconEdgeM;
|
||||||
|
}
|
||||||
|
|
||||||
|
.clear-icon,
|
||||||
|
.menu-icon {
|
||||||
|
cursor: pointer;
|
||||||
|
transition: color .25s;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.search-input {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
padding-left: $iconD + $interiorMargin !important;
|
||||||
|
padding-right: ($iconD * 2) + ($interiorMargin * 2) !important;
|
||||||
|
|
||||||
|
// Make work for mct-control textfield
|
||||||
|
input {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-icon {
|
||||||
|
color: $colorItemFg;
|
||||||
|
left: $interiorMarginSm;
|
||||||
|
transition: visibility .15s, opacity .15s, color .2s;
|
||||||
|
pointer-events: none;
|
||||||
|
|
||||||
|
&.content {
|
||||||
|
// Make icon invisible whenever there is text input
|
||||||
|
//visibility: hidden;
|
||||||
|
//opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make icon invisible when the text input is focused
|
||||||
|
.search-input:focus + div.search-icon {
|
||||||
|
//visibility: hidden;
|
||||||
|
//opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make icon lighten when hovering over search bar
|
||||||
|
.search-input:hover + div.search-icon {
|
||||||
|
color: lighten($colorItemFg, 20%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.clear-icon {
|
||||||
|
right: $iconD + $interiorMargin;
|
||||||
|
|
||||||
|
// Icon is visible only when there is text input
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
|
||||||
|
transition: visibility .15s, opacity .15s, color .2s;
|
||||||
|
|
||||||
|
&.content {
|
||||||
|
visibility: visible;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: lighten($colorItemFg, 20%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.menu-icon {
|
||||||
|
font-size: 0.8em;
|
||||||
|
padding-right: $iconEdgeM;
|
||||||
|
right: $iconEdgeM;
|
||||||
|
text-align: right;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
color: lighten($colorItemFg, 20%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-menu-holder {
|
||||||
|
float: right;
|
||||||
|
//margin-top: $textInputHeight - 2px;
|
||||||
|
//left: -50px;
|
||||||
|
left: -20px;
|
||||||
|
|
||||||
|
z-index: 1;
|
||||||
|
|
||||||
|
transition: visibility .05s, opacity .05s;
|
||||||
|
|
||||||
|
&.off {
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hovering reveals menu
|
||||||
|
.menu-icon:hover + div.search-menu-holder {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
div.search-menu-holder:hover {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.active-filter-display {
|
||||||
|
//order: 2;
|
||||||
|
$s: 0.65em;
|
||||||
|
$p: $interiorMargin;
|
||||||
|
@include border-radius($basicCr);
|
||||||
|
@include box-sizing(border-box);
|
||||||
|
line-height: 130%;
|
||||||
|
padding: $p 0;
|
||||||
|
padding-left: $s * 2.25;
|
||||||
|
font-size: $s;
|
||||||
|
//background-color: rgba(#000, 0.3);
|
||||||
|
//border-radius: $basicCr;
|
||||||
|
margin-top: $interiorMarginSm;
|
||||||
|
|
||||||
|
|
||||||
|
.clear-filters-icon {
|
||||||
|
opacity: 0.4;
|
||||||
|
font-size: 0.8em;
|
||||||
|
position: absolute;
|
||||||
|
left: 1px;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Transition looks weird when the results list has none
|
||||||
|
//transition: visibility .2s, opacity .2s;
|
||||||
|
|
||||||
|
&.off {
|
||||||
|
visibility: hidden;
|
||||||
|
opacity: 0;
|
||||||
|
height: 0;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-scroll {
|
||||||
|
order: 3;
|
||||||
|
|
||||||
|
//padding-right: $rightPadding;
|
||||||
|
margin-top: 4px;
|
||||||
|
|
||||||
|
// Adjustable scrolling size
|
||||||
|
overflow-y: auto;
|
||||||
|
top: auto;
|
||||||
|
height: auto;
|
||||||
|
max-height: 100%;
|
||||||
|
position: relative;
|
||||||
|
|
||||||
|
.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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.label .type-icon .l-icon-link {
|
||||||
|
@include txtShdwSubtle(1);
|
||||||
|
z-index: 2;
|
||||||
|
@include ancillaryIcon(8px, $colorIconLink);
|
||||||
|
margin-left: -25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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 {
|
||||||
|
margin-top: $interiorMargin 0;
|
||||||
|
font-size: 0.8em;
|
||||||
|
position: relative;
|
||||||
|
left: 50%;
|
||||||
|
margin-left: -45px;
|
||||||
|
text-align: center;
|
||||||
|
width: 90px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -28,3 +28,4 @@
|
|||||||
@import "constants";
|
@import "constants";
|
||||||
@import "mixins";
|
@import "mixins";
|
||||||
@import "tree/tree";
|
@import "tree/tree";
|
||||||
|
@import "search/search";
|
@ -229,10 +229,12 @@
|
|||||||
bottom: $interiorMargin;
|
bottom: $interiorMargin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.search-holder {
|
||||||
|
top: $ueTopBarH + $interiorMarginLg;
|
||||||
|
}
|
||||||
.tree-holder {
|
.tree-holder {
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
top: $ueTopBarH + $interiorMarginLg;
|
top: $ueTopBarH + $interiorMarginLg + $treeSearchInputBarH + $interiorMargin;
|
||||||
padding-right: $interiorMargin;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.items {
|
&.items {
|
||||||
|
@ -135,9 +135,6 @@ define(
|
|||||||
// Listen for changes which will effect display parameters
|
// Listen for changes which will effect display parameters
|
||||||
$scope.$watch("ngModel.selectedObject", setSelection);
|
$scope.$watch("ngModel.selectedObject", setSelection);
|
||||||
$scope.$watch("domainObject", checkSelection);
|
$scope.$watch("domainObject", checkSelection);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -8,6 +8,12 @@
|
|||||||
"type": "provider",
|
"type": "provider",
|
||||||
"implementation": "ElasticPersistenceProvider.js",
|
"implementation": "ElasticPersistenceProvider.js",
|
||||||
"depends": [ "$http", "$q", "PERSISTENCE_SPACE", "ELASTIC_ROOT", "ELASTIC_PATH" ]
|
"depends": [ "$http", "$q", "PERSISTENCE_SPACE", "ELASTIC_ROOT", "ELASTIC_PATH" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"provides": "searchService",
|
||||||
|
"type": "provider",
|
||||||
|
"implementation": "ElasticSearchProvider.js",
|
||||||
|
"depends": [ "$http", "objectService", "ELASTIC_ROOT" ]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"constants": [
|
"constants": [
|
||||||
|
@ -22,8 +22,7 @@
|
|||||||
/*global define*/
|
/*global define*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Module defining ElasticsearchSearchProvider. Created by shale on 07/16/2015.
|
* Module defining ElasticSearchProvider. Created by shale on 07/16/2015.
|
||||||
* This is not currently included in the bundle definition.
|
|
||||||
*/
|
*/
|
||||||
define(
|
define(
|
||||||
[],
|
[],
|
||||||
@ -44,13 +43,13 @@ define(
|
|||||||
* @param $http Angular's $http service, for working with urls.
|
* @param $http Angular's $http service, for working with urls.
|
||||||
* @param {ObjectService} objectService the service from which
|
* @param {ObjectService} objectService the service from which
|
||||||
* domain objects can be gotten.
|
* domain objects can be gotten.
|
||||||
* @param root the constant `ELASTIC_ROOT` which allows us to
|
* @param ROOT the constant `ELASTIC_ROOT` which allows us to
|
||||||
* interact with ElasticSearch.
|
* interact with ElasticSearch.
|
||||||
*/
|
*/
|
||||||
function ElasticsearchSearchProvider($http, objectService, root) {
|
function ElasticSearchProvider($http, objectService, ROOT) {
|
||||||
this.$http = $http;
|
this.$http = $http;
|
||||||
this.objectService = objectService;
|
this.objectService = objectService;
|
||||||
this.root = root;
|
this.root = ROOT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -78,13 +77,12 @@ define(
|
|||||||
* stop calculations and return partial results. Elasticsearch
|
* stop calculations and return partial results. Elasticsearch
|
||||||
* does not guarentee that this timeout will be strictly followed.
|
* does not guarentee that this timeout will be strictly followed.
|
||||||
*/
|
*/
|
||||||
ElasticsearchSearchProvider.prototype.query = function query(searchTerm, timestamp, maxResults, timeout) {
|
ElasticSearchProvider.prototype.query = function query(searchTerm, timestamp, maxResults, timeout) {
|
||||||
var $http = this.$http,
|
var $http = this.$http,
|
||||||
objectService = this.objectService,
|
objectService = this.objectService,
|
||||||
root = this.root,
|
root = this.root,
|
||||||
esQuery;
|
esQuery;
|
||||||
|
|
||||||
// Add the fuzziness operator to the search term
|
|
||||||
function addFuzziness(searchTerm, editDistance) {
|
function addFuzziness(searchTerm, editDistance) {
|
||||||
if (!editDistance) {
|
if (!editDistance) {
|
||||||
editDistance = '';
|
editDistance = '';
|
||||||
@ -210,6 +208,6 @@ define(
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
return ElasticsearchSearchProvider;
|
return ElasticSearchProvider;
|
||||||
}
|
}
|
||||||
);
|
);
|
@ -25,8 +25,8 @@
|
|||||||
* SearchSpec. Created by shale on 07/31/2015.
|
* SearchSpec. Created by shale on 07/31/2015.
|
||||||
*/
|
*/
|
||||||
define(
|
define(
|
||||||
["../src/ElasticsearchSearchProvider"],
|
["../src/ElasticSearchProvider"],
|
||||||
function (ElasticsearchSearchProvider) {
|
function (ElasticSearchProvider) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
// JSLint doesn't like underscore-prefixed properties,
|
// JSLint doesn't like underscore-prefixed properties,
|
||||||
@ -68,7 +68,7 @@ define(
|
|||||||
[ "getId", "getModel" ]
|
[ "getId", "getModel" ]
|
||||||
);
|
);
|
||||||
|
|
||||||
provider = new ElasticsearchSearchProvider(mockHttp, mockObjectService, "");
|
provider = new ElasticSearchProvider(mockHttp, mockObjectService, "");
|
||||||
provider.query(' test "query" ', 0, undefined, 1000);
|
provider.query(' test "query" ', 0, undefined, 1000);
|
||||||
});
|
});
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
[
|
[
|
||||||
"ElasticIndicator",
|
"ElasticIndicator",
|
||||||
"ElasticPersistenceProvider",
|
"ElasticPersistenceProvider",
|
||||||
"ElasticsearchSearchProvider"
|
"ElasticSearchProvider"
|
||||||
]
|
]
|
||||||
|
@ -9,24 +9,55 @@
|
|||||||
"priority": "fallback"
|
"priority": "fallback"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"controllers": [
|
||||||
|
{
|
||||||
|
"key": "SearchController",
|
||||||
|
"implementation": "controllers/SearchController.js",
|
||||||
|
"depends": [ "$scope", "searchService" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "SearchMenuController",
|
||||||
|
"implementation": "controllers/SearchMenuController.js",
|
||||||
|
"depends": [ "$scope", "types[]" ]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "ClickAwayController",
|
||||||
|
"implementation": "controllers/ClickAwayController.js",
|
||||||
|
"depends": [ "$scope", "$document" ]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"representations": [
|
||||||
|
{
|
||||||
|
"key": "search",
|
||||||
|
"templateUrl": "templates/search.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "search-menu",
|
||||||
|
"templateUrl": "templates/search-menu.html"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "search-item",
|
||||||
|
"templateUrl": "templates/search-item.html"
|
||||||
|
}
|
||||||
|
],
|
||||||
"components": [
|
"components": [
|
||||||
{
|
{
|
||||||
"provides": "searchService",
|
"provides": "searchService",
|
||||||
"type": "provider",
|
"type": "provider",
|
||||||
"implementation": "GenericSearchProvider.js",
|
"implementation": "services/GenericSearchProvider.js",
|
||||||
"depends": [ "$q", "$timeout", "objectService", "workerService", "GENERIC_SEARCH_ROOTS" ]
|
"depends": [ "$q", "$timeout", "objectService", "workerService", "GENERIC_SEARCH_ROOTS" ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"provides": "searchService",
|
"provides": "searchService",
|
||||||
"type": "aggregator",
|
"type": "aggregator",
|
||||||
"implementation": "SearchAggregator.js",
|
"implementation": "services/SearchAggregator.js",
|
||||||
"depends": [ "$q" ]
|
"depends": [ "$q" ]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"workers": [
|
"workers": [
|
||||||
{
|
{
|
||||||
"key": "genericSearchWorker",
|
"key": "genericSearchWorker",
|
||||||
"scriptUrl": "GenericSearchWorker.js"
|
"scriptUrl": "services/GenericSearchWorker.js"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
30
platform/search/res/templates/search-item.html
Normal file
30
platform/search/res/templates/search-item.html
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
<!--
|
||||||
|
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-result-item"
|
||||||
|
ng-class="{selected: ngModel.selectedObject.getId() === domainObject.getId()}">
|
||||||
|
<mct-representation key="'label'"
|
||||||
|
mct-object="domainObject"
|
||||||
|
ng-model="ngModel"
|
||||||
|
ng-click="ngModel.selectedObject = domainObject">
|
||||||
|
</mct-representation>
|
||||||
|
</div>
|
67
platform/search/res/templates/search-menu.html
Normal file
67
platform/search/res/templates/search-menu.html
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
<!--
|
||||||
|
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 ng-controller="SearchMenuController as controller">
|
||||||
|
|
||||||
|
<div class="menu checkbox-menu">
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<!-- First element is special - it's a reset option -->
|
||||||
|
<li class="search-menu-item special"
|
||||||
|
title="Select all filters"
|
||||||
|
ng-click="ngModel.checkAll = !ngModel.checkAll; controller.checkAll()">
|
||||||
|
|
||||||
|
<label class="checkbox custom no-text">
|
||||||
|
<input type="checkbox"
|
||||||
|
class="checkbox"
|
||||||
|
ng-model="ngModel.checkAll"
|
||||||
|
ng-change="controller.checkAll()" />
|
||||||
|
<em></em>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<span class="ui-symbol icon type-icon">
|
||||||
|
*
|
||||||
|
</span>
|
||||||
|
All
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<!-- The filter options, by type -->
|
||||||
|
<li class="search-menu-item"
|
||||||
|
ng-repeat="type in ngModel.types"
|
||||||
|
ng-click="ngModel.checked[type.key] = !ngModel.checked[type.key]; controller.updateOptions()">
|
||||||
|
|
||||||
|
<label class="checkbox custom no-text">
|
||||||
|
<input type="checkbox"
|
||||||
|
class="checkbox"
|
||||||
|
ng-model="ngModel.checked[type.key]"
|
||||||
|
ng-change="controller.updateOptions()" />
|
||||||
|
<em></em>
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<span class="ui-symbol icon type-icon">
|
||||||
|
{{ type.glyph }}
|
||||||
|
</span>
|
||||||
|
{{ type.name }}
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
116
platform/search/res/templates/search.html
Normal file
116
platform/search/res/templates/search.html
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
<!--
|
||||||
|
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 -->
|
||||||
|
<div class="search-bar"
|
||||||
|
ng-controller="ClickAwayController as toggle">
|
||||||
|
|
||||||
|
<!-- Input field -->
|
||||||
|
<input class="search-input"
|
||||||
|
type="text"
|
||||||
|
ng-model="ngModel.input"
|
||||||
|
ng-keyup="controller.search()" />
|
||||||
|
<!--mct-control key="'textfield'"
|
||||||
|
class="search-input"
|
||||||
|
ng-model="ngModel.input"
|
||||||
|
ng-keyup="controller.search()">
|
||||||
|
</mct-control-->
|
||||||
|
|
||||||
|
<!-- Search icon -->
|
||||||
|
<!-- ui symbols for search are 'd' and 'M' -->
|
||||||
|
<div class="ui-symbol search-icon"
|
||||||
|
ng-class="{content: !(ngModel.input === '' || ngModel.input === undefined)}">
|
||||||
|
M
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Clear icon/button 'x' -->
|
||||||
|
<a class="ui-symbol clear-icon"
|
||||||
|
ng-class="{content: !(ngModel.input === '' || ngModel.input === undefined)}"
|
||||||
|
ng-click="ngModel.input = ''; controller.search()">
|
||||||
|

|
||||||
|
</a>
|
||||||
|
|
||||||
|
<!-- Menu icon/button 'v' -->
|
||||||
|
<a class="ui-symbol menu-icon"
|
||||||
|
ng-click="toggle.toggle()">
|
||||||
|
v
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<!-- Menu -->
|
||||||
|
<mct-representation key="'search-menu'"
|
||||||
|
class="menu-element search-menu-holder"
|
||||||
|
ng-class="{off: !toggle.isActive()}"
|
||||||
|
ng-model="ngModel"
|
||||||
|
ng-click="toggle.setState(true)">
|
||||||
|
</mct-representation>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Active filter display -->
|
||||||
|
<div class="active-filter-display"
|
||||||
|
ng-class="{off: ngModel.filtersString === '' || ngModel.filtersString === undefined || !ngModel.search}"
|
||||||
|
ng-controller="SearchMenuController as menuController">
|
||||||
|
|
||||||
|
<a class="ui-symbol clear-filters-icon"
|
||||||
|
ng-click="ngModel.checkAll = true; menuController.checkAll()">
|
||||||
|

|
||||||
|
</a>
|
||||||
|
|
||||||
|
Filtered by: {{ ngModel.filtersString }}
|
||||||
|
|
||||||
|
<!--div class="filter-options">
|
||||||
|
Filtered by: {{ ngModel.filtersString }}
|
||||||
|
</div-->
|
||||||
|
</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: loading}"
|
||||||
|
ng-if="loading">
|
||||||
|
<span class="icon wait-spinner"></span>
|
||||||
|
<span class="title-label">Loading...</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Load more button -->
|
||||||
|
<div ng-if="controller.areMore()">
|
||||||
|
<a class="load-more-button btn very-subtle vsm"
|
||||||
|
ng-click="controller.loadMore()">
|
||||||
|
More Results
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
105
platform/search/src/controllers/ClickAwayController.js
Normal file
105
platform/search/src/controllers/ClickAwayController.js
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* 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,Promise*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copied from the ClickAwayController in platform/commonUI/general
|
||||||
|
*/
|
||||||
|
|
||||||
|
define(
|
||||||
|
[],
|
||||||
|
function () {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A ClickAwayController is used to toggle things (such as context
|
||||||
|
* menus) where clicking elsewhere in the document while the toggle
|
||||||
|
* is in an active state is intended to dismiss the toggle.
|
||||||
|
*
|
||||||
|
* @constructor
|
||||||
|
* @param $scope the scope in which this controller is active
|
||||||
|
* @param $document the document element, injected by Angular
|
||||||
|
*/
|
||||||
|
function ClickAwayController($scope, $document) {
|
||||||
|
var state = false,
|
||||||
|
clickaway;
|
||||||
|
|
||||||
|
// Track state, but also attach and detach a listener for
|
||||||
|
// mouseup events on the document.
|
||||||
|
function deactivate() {
|
||||||
|
state = false;
|
||||||
|
$document.off("mouseup", clickaway);
|
||||||
|
}
|
||||||
|
|
||||||
|
function activate() {
|
||||||
|
state = true;
|
||||||
|
$document.on("mouseup", clickaway);
|
||||||
|
}
|
||||||
|
|
||||||
|
function changeState() {
|
||||||
|
if (state) {
|
||||||
|
deactivate();
|
||||||
|
} else {
|
||||||
|
activate();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Callback used by the document listener. Deactivates;
|
||||||
|
// note also $scope.$apply is invoked to indicate that
|
||||||
|
// the state of this controller has changed.
|
||||||
|
clickaway = function () {
|
||||||
|
deactivate();
|
||||||
|
$scope.$apply();
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
/**
|
||||||
|
* Get the current state of the toggle.
|
||||||
|
* @return {boolean} true if active
|
||||||
|
*/
|
||||||
|
isActive: function () {
|
||||||
|
return state;
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Set a new state for the toggle.
|
||||||
|
* @return {boolean} true to activate
|
||||||
|
*/
|
||||||
|
setState: function (newState) {
|
||||||
|
if (state !== newState) {
|
||||||
|
changeState();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
/**
|
||||||
|
* Toggle the current state; activate if it is inactive,
|
||||||
|
* deactivate if it is active.
|
||||||
|
*/
|
||||||
|
toggle: function () {
|
||||||
|
changeState();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return ClickAwayController;
|
||||||
|
}
|
||||||
|
);
|
171
platform/search/src/controllers/SearchController.js
Normal file
171
platform/search/src/controllers/SearchController.js
Normal file
@ -0,0 +1,171 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* 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 = 20;
|
||||||
|
|
||||||
|
function SearchController($scope, searchService) {
|
||||||
|
// numResults is the amount of results to display. Will get increased.
|
||||||
|
// fullResults holds the most recent complete searchService response object
|
||||||
|
var numResults = INITIAL_LOAD_NUMBER,
|
||||||
|
fullResults = {hits: []};
|
||||||
|
|
||||||
|
// Scope variables are:
|
||||||
|
// Variables used only in SearchController:
|
||||||
|
// results, an array of searchResult objects
|
||||||
|
// loading, whether search() is loading
|
||||||
|
// ngModel.input, the text of the search query
|
||||||
|
// ngModel.search, a boolean of whether to display search or the tree
|
||||||
|
// Variables used also in SearchMenuController:
|
||||||
|
// ngModel.filter, the function filter defined below
|
||||||
|
// ngModel.types, an array of type objects
|
||||||
|
// ngModel.checked, a dictionary of which type filter options are checked
|
||||||
|
// ngModel.checkAll, a boolean of whether to search all types
|
||||||
|
// ngModel.filtersString, a string list of what filters on the results are active
|
||||||
|
$scope.results = [];
|
||||||
|
$scope.loading = false;
|
||||||
|
|
||||||
|
|
||||||
|
// Filters searchResult objects by type. Allows types that are
|
||||||
|
// checked. (ngModel.checked['typekey'] === true)
|
||||||
|
// If hits is not provided, will use fullResults.hits
|
||||||
|
function filter(hits) {
|
||||||
|
var newResults = [],
|
||||||
|
i = 0;
|
||||||
|
|
||||||
|
if (!hits) {
|
||||||
|
hits = fullResults.hits;
|
||||||
|
}
|
||||||
|
|
||||||
|
// If checkAll is checked, search everything no matter what the other
|
||||||
|
// checkboxes' statuses are. Otherwise filter the search by types.
|
||||||
|
if ($scope.ngModel.checkAll) {
|
||||||
|
newResults = fullResults.hits.slice(0, numResults);
|
||||||
|
} else {
|
||||||
|
while (newResults.length < numResults && i < hits.length) {
|
||||||
|
// If this is of an acceptable type, add it to the list
|
||||||
|
if ($scope.ngModel.checked[hits[i].object.getModel().type]) {
|
||||||
|
newResults.push(fullResults.hits[i]);
|
||||||
|
}
|
||||||
|
i += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$scope.results = newResults;
|
||||||
|
return newResults;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Make function accessible from SearchMenuController
|
||||||
|
$scope.ngModel.filter = filter;
|
||||||
|
|
||||||
|
// For documentation, see search below
|
||||||
|
function search(maxResults) {
|
||||||
|
var inputText = $scope.ngModel.input;
|
||||||
|
|
||||||
|
if (inputText !== '' && inputText !== undefined) {
|
||||||
|
// We are starting to load.
|
||||||
|
$scope.loading = true;
|
||||||
|
|
||||||
|
// Update whether the file tree should be displayed
|
||||||
|
// Hide tree only when starting search
|
||||||
|
$scope.ngModel.search = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!maxResults) {
|
||||||
|
// Reset 'load more'
|
||||||
|
numResults = INITIAL_LOAD_NUMBER;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Send the query
|
||||||
|
searchService.query(inputText, maxResults).then(function (result) {
|
||||||
|
// Store all the results before splicing off the front, so that
|
||||||
|
// we can load more to display later.
|
||||||
|
fullResults = result;
|
||||||
|
$scope.results = filter(result.hits);
|
||||||
|
|
||||||
|
// Update whether the file tree should be displayed
|
||||||
|
// Reveal tree only when finishing search
|
||||||
|
if (inputText === '' || inputText === undefined) {
|
||||||
|
$scope.ngModel.search = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now we are done loading.
|
||||||
|
$scope.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 there are more search results to display. If the answer is
|
||||||
|
* unclear, this function will err toward saying that there are more results.
|
||||||
|
*/
|
||||||
|
areMore: function () {
|
||||||
|
var i;
|
||||||
|
|
||||||
|
// Check to see if any of the not displayed results are of an allowed type
|
||||||
|
for (i = numResults; i < fullResults.hits.length; i += 1) {
|
||||||
|
if ($scope.ngModel.checkAll || $scope.ngModel.checked[fullResults.hits[i].object.getModel().type]) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If none of the ones at hand are correct, there still may be more if we
|
||||||
|
// re-search with a larger maxResults
|
||||||
|
return fullResults.hits.length < fullResults.total;
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Increases the number of search results to display, and then
|
||||||
|
* loads them, adding to the displayed results.
|
||||||
|
*/
|
||||||
|
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 {
|
||||||
|
// Otherwise just take from what we already have
|
||||||
|
$scope.results = filter(fullResults.hits);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return SearchController;
|
||||||
|
});
|
131
platform/search/src/controllers/SearchMenuController.js
Normal file
131
platform/search/src/controllers/SearchMenuController.js
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* 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 SearchMenuController. Created by shale on 08/17/2015.
|
||||||
|
*/
|
||||||
|
define(function () {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
function SearchMenuController($scope, types) {
|
||||||
|
|
||||||
|
// Model variables are:
|
||||||
|
// ngModel.filter, the function filter defined in SearchController
|
||||||
|
// ngModel.types, an array of type objects
|
||||||
|
// ngModel.checked, a dictionary of which type filter options are checked
|
||||||
|
// ngModel.checkAll, a boolean of whether all of the types in ngModel.checked are checked
|
||||||
|
// ngModel.filtersString, a string list of what filters on the results are active
|
||||||
|
$scope.ngModel.types = [];
|
||||||
|
$scope.ngModel.checked = {};
|
||||||
|
$scope.ngModel.checkAll = true;
|
||||||
|
$scope.ngModel.filtersString = '';
|
||||||
|
|
||||||
|
// On initialization, fill the model's types with type keys
|
||||||
|
types.forEach(function (type) {
|
||||||
|
// We only want some types, the ones that are probably human readable
|
||||||
|
// Manually remove 'root', but not 'unknown'
|
||||||
|
if (type.key && type.name && type.key !== 'root') {
|
||||||
|
$scope.ngModel.types.push(type);
|
||||||
|
$scope.ngModel.checked[type.key] = false;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// For documentation, see updateOptions below
|
||||||
|
function updateOptions() {
|
||||||
|
var type,
|
||||||
|
i;
|
||||||
|
|
||||||
|
// Update all-checked status
|
||||||
|
if ($scope.ngModel.checkAll) {
|
||||||
|
for (type in $scope.ngModel.checked) {
|
||||||
|
if ($scope.ngModel.checked[type]) {
|
||||||
|
$scope.ngModel.checkAll = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the current filters string
|
||||||
|
$scope.ngModel.filtersString = '';
|
||||||
|
if (!$scope.ngModel.checkAll) {
|
||||||
|
for (i = 0; i < $scope.ngModel.types.length; i += 1) {
|
||||||
|
// If the type key corresponds to a checked option...
|
||||||
|
if ($scope.ngModel.checked[$scope.ngModel.types[i].key]) {
|
||||||
|
// ... add it to the string list of current filter options
|
||||||
|
if ($scope.ngModel.filtersString === '') {
|
||||||
|
$scope.ngModel.filtersString += $scope.ngModel.types[i].name;
|
||||||
|
} else {
|
||||||
|
$scope.ngModel.filtersString += ', ' + $scope.ngModel.types[i].name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// If there's still nothing in the filters string, there are no
|
||||||
|
// filters selected
|
||||||
|
if ($scope.ngModel.filtersString === '') {
|
||||||
|
$scope.ngModel.filtersString = 'NONE';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Re-filter results
|
||||||
|
$scope.ngModel.filter();
|
||||||
|
}
|
||||||
|
|
||||||
|
// For documentation, see checkAll below
|
||||||
|
function checkAll() {
|
||||||
|
var type;
|
||||||
|
|
||||||
|
// Reset all the other options to original/default position
|
||||||
|
for (type in $scope.ngModel.checked) {
|
||||||
|
$scope.ngModel.checked[type] = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Change the filters string depending on checkAll status
|
||||||
|
if ($scope.ngModel.checkAll) {
|
||||||
|
// This setting will make the filters display hidden
|
||||||
|
$scope.ngModel.filtersString = '';
|
||||||
|
} else {
|
||||||
|
$scope.ngModel.filtersString = 'NONE';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Re-filter results
|
||||||
|
$scope.ngModel.filter();
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
/**
|
||||||
|
* Updates the status of the checked options. Updates the filtersString
|
||||||
|
* with which options are checked. Re-filters the search results after.
|
||||||
|
* Not intended to be called by checkAll when it is toggled.
|
||||||
|
*/
|
||||||
|
updateOptions: updateOptions,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles the search and filter options for when checkAll has been
|
||||||
|
* toggled. This is a special case, compared to the other search
|
||||||
|
* menu options, so is intended to be called instead of updateOptions.
|
||||||
|
*/
|
||||||
|
checkAll: checkAll
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return SearchMenuController;
|
||||||
|
});
|
@ -31,36 +31,6 @@
|
|||||||
// {id: domainObject's ID, model: domainObject's model}
|
// {id: domainObject's ID, model: domainObject's model}
|
||||||
var indexedItems = [];
|
var indexedItems = [];
|
||||||
|
|
||||||
// Helper function for index()
|
|
||||||
// Checks whether an item with this ID is already indexed
|
|
||||||
function conainsItem(id) {
|
|
||||||
var i;
|
|
||||||
for (i = 0; i < indexedItems.length; i += 1) {
|
|
||||||
if (indexedItems[i].id === id) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Indexes an item to indexedItems.
|
|
||||||
*
|
|
||||||
* @param data An object which contains:
|
|
||||||
* * model: The model of the domain object
|
|
||||||
* * id: The ID of the domain object
|
|
||||||
*/
|
|
||||||
function index(data) {
|
|
||||||
var message;
|
|
||||||
|
|
||||||
if (!conainsItem(data.id)) {
|
|
||||||
indexedItems.push({
|
|
||||||
id: data.id,
|
|
||||||
model: data.model
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Helper function for serach()
|
// Helper function for serach()
|
||||||
function convertToTerms(input) {
|
function convertToTerms(input) {
|
||||||
var terms = input;
|
var terms = input;
|
||||||
@ -177,7 +147,10 @@
|
|||||||
|
|
||||||
self.onmessage = function (event) {
|
self.onmessage = function (event) {
|
||||||
if (event.data.request === 'index') {
|
if (event.data.request === 'index') {
|
||||||
index(event.data);
|
indexedItems.push({
|
||||||
|
id: event.data.id,
|
||||||
|
model: event.data.model
|
||||||
|
});
|
||||||
} else if (event.data.request === 'search') {
|
} else if (event.data.request === 'search') {
|
||||||
self.postMessage(search(event.data));
|
self.postMessage(search(event.data));
|
||||||
}
|
}
|
94
platform/search/test/controllers/ClickAwayControllerSpec.js
Normal file
94
platform/search/test/controllers/ClickAwayControllerSpec.js
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* 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,Promise,describe,it,expect,beforeEach,waitsFor,jasmine*/
|
||||||
|
|
||||||
|
define(
|
||||||
|
["../../src/controllers/ClickAwayController"],
|
||||||
|
function (ClickAwayController) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
describe("The click-away controller", function () {
|
||||||
|
var mockScope,
|
||||||
|
mockDocument,
|
||||||
|
controller;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
mockScope = jasmine.createSpyObj(
|
||||||
|
"$scope",
|
||||||
|
[ "$apply" ]
|
||||||
|
);
|
||||||
|
mockDocument = jasmine.createSpyObj(
|
||||||
|
"$document",
|
||||||
|
[ "on", "off" ]
|
||||||
|
);
|
||||||
|
controller = new ClickAwayController(mockScope, mockDocument);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("is initially inactive", function () {
|
||||||
|
expect(controller.isActive()).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("does not listen to the document before being toggled", function () {
|
||||||
|
expect(mockDocument.on).not.toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("tracks enabled/disabled state when toggled", function () {
|
||||||
|
controller.toggle();
|
||||||
|
expect(controller.isActive()).toBe(true);
|
||||||
|
controller.toggle();
|
||||||
|
expect(controller.isActive()).toBe(false);
|
||||||
|
controller.toggle();
|
||||||
|
expect(controller.isActive()).toBe(true);
|
||||||
|
controller.toggle();
|
||||||
|
expect(controller.isActive()).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("allows active state to be explictly specified", function () {
|
||||||
|
controller.setState(true);
|
||||||
|
expect(controller.isActive()).toBe(true);
|
||||||
|
controller.setState(true);
|
||||||
|
expect(controller.isActive()).toBe(true);
|
||||||
|
controller.setState(false);
|
||||||
|
expect(controller.isActive()).toBe(false);
|
||||||
|
controller.setState(false);
|
||||||
|
expect(controller.isActive()).toBe(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("registers a mouse listener when activated", function () {
|
||||||
|
controller.setState(true);
|
||||||
|
expect(mockDocument.on).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("deactivates and detaches listener on document click", function () {
|
||||||
|
var callback;
|
||||||
|
controller.setState(true);
|
||||||
|
callback = mockDocument.on.mostRecentCall.args[1];
|
||||||
|
callback();
|
||||||
|
expect(controller.isActive()).toEqual(false);
|
||||||
|
expect(mockDocument.off).toHaveBeenCalledWith("mouseup", callback);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
208
platform/search/test/controllers/SearchControllerSpec.js
Normal file
208
platform/search/test/controllers/SearchControllerSpec.js
Normal file
@ -0,0 +1,208 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* 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";
|
||||||
|
|
||||||
|
// These should be the same as the ones on the top of the search controller
|
||||||
|
var INITIAL_LOAD_NUMBER = 20,
|
||||||
|
LOAD_INCREMENT = 20;
|
||||||
|
|
||||||
|
describe("The search controller", function () {
|
||||||
|
var mockScope,
|
||||||
|
mockSearchService,
|
||||||
|
mockPromise,
|
||||||
|
mockSearchResult,
|
||||||
|
mockDomainObject,
|
||||||
|
mockTypes,
|
||||||
|
controller;
|
||||||
|
|
||||||
|
function bigArray(size) {
|
||||||
|
var array = [],
|
||||||
|
i;
|
||||||
|
for (i = 0; i < size; i += 1) {
|
||||||
|
array.push(mockSearchResult);
|
||||||
|
}
|
||||||
|
return array;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
mockScope = jasmine.createSpyObj(
|
||||||
|
"$scope",
|
||||||
|
[ "$watch" ]
|
||||||
|
);
|
||||||
|
mockScope.ngModel = {};
|
||||||
|
mockScope.ngModel.input = "test input";
|
||||||
|
mockScope.ngModel.checked = {};
|
||||||
|
mockScope.ngModel.checked['mock.type'] = true;
|
||||||
|
mockScope.ngModel.checkAll = true;
|
||||||
|
|
||||||
|
mockSearchService = jasmine.createSpyObj(
|
||||||
|
"searchService",
|
||||||
|
[ "query" ]
|
||||||
|
);
|
||||||
|
mockPromise = jasmine.createSpyObj(
|
||||||
|
"promise",
|
||||||
|
[ "then" ]
|
||||||
|
);
|
||||||
|
mockSearchService.query.andReturn(mockPromise);
|
||||||
|
|
||||||
|
mockTypes = [{key: 'mock.type', name: 'Mock Type', glyph: '?'}];
|
||||||
|
|
||||||
|
mockSearchResult = jasmine.createSpyObj(
|
||||||
|
"searchResult",
|
||||||
|
[ "" ]
|
||||||
|
);
|
||||||
|
mockDomainObject = jasmine.createSpyObj(
|
||||||
|
"domainObject",
|
||||||
|
[ "getModel" ]
|
||||||
|
);
|
||||||
|
mockSearchResult.object = mockDomainObject;
|
||||||
|
mockDomainObject.getModel.andReturn({name: 'Mock Object', type: 'mock.type'});
|
||||||
|
|
||||||
|
controller = new SearchController(mockScope, mockSearchService, mockTypes);
|
||||||
|
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(mockScope.loading).toBeTruthy();
|
||||||
|
|
||||||
|
// Then resolve the promises
|
||||||
|
mockPromise.then.mostRecentCall.args[0]({hits: []});
|
||||||
|
expect(mockScope.loading).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("detects when there are more results", function () {
|
||||||
|
mockScope.ngModel.checkAll = false;
|
||||||
|
|
||||||
|
expect(mockPromise.then).toHaveBeenCalledWith(jasmine.any(Function));
|
||||||
|
mockPromise.then.mostRecentCall.args[0]({
|
||||||
|
hits: bigArray(INITIAL_LOAD_NUMBER + 5),
|
||||||
|
total: INITIAL_LOAD_NUMBER + 5
|
||||||
|
});
|
||||||
|
// bigArray gives searchResults of type 'mock.type'
|
||||||
|
mockScope.ngModel.checked['mock.type'] = false;
|
||||||
|
mockScope.ngModel.checked['mock.type.2'] = true;
|
||||||
|
|
||||||
|
expect(controller.areMore()).toBeFalsy();
|
||||||
|
|
||||||
|
mockScope.ngModel.checked['mock.type'] = true;
|
||||||
|
|
||||||
|
expect(controller.areMore()).toBeTruthy();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("can load more results", function () {
|
||||||
|
var oldSize;
|
||||||
|
|
||||||
|
expect(mockPromise.then).toHaveBeenCalled();
|
||||||
|
mockPromise.then.mostRecentCall.args[0]({
|
||||||
|
hits: bigArray(INITIAL_LOAD_NUMBER + LOAD_INCREMENT + 1),
|
||||||
|
total: INITIAL_LOAD_NUMBER + LOAD_INCREMENT + 1
|
||||||
|
});
|
||||||
|
// These hits and total lengths are the case where the controller
|
||||||
|
// DOES NOT have to re-search to load more results
|
||||||
|
oldSize = mockScope.results.length;
|
||||||
|
|
||||||
|
expect(controller.areMore()).toBeTruthy();
|
||||||
|
|
||||||
|
controller.loadMore();
|
||||||
|
expect(mockScope.results.length).toBeGreaterThan(oldSize);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("can re-search to load more results", function () {
|
||||||
|
var oldSize,
|
||||||
|
oldCallCount;
|
||||||
|
|
||||||
|
expect(mockPromise.then).toHaveBeenCalled();
|
||||||
|
mockPromise.then.mostRecentCall.args[0]({
|
||||||
|
hits: bigArray(INITIAL_LOAD_NUMBER + LOAD_INCREMENT - 1),
|
||||||
|
total: INITIAL_LOAD_NUMBER + LOAD_INCREMENT + 1
|
||||||
|
});
|
||||||
|
// These hits and total lengths are the case where the controller
|
||||||
|
// DOES have to re-search to load more results
|
||||||
|
oldSize = mockScope.results.length;
|
||||||
|
oldCallCount = mockPromise.then.callCount;
|
||||||
|
expect(controller.areMore()).toBeTruthy();
|
||||||
|
|
||||||
|
controller.loadMore();
|
||||||
|
expect(mockPromise.then).toHaveBeenCalled();
|
||||||
|
// Make sure that a NEW call to search has been made
|
||||||
|
expect(oldCallCount).toBeLessThan(mockPromise.then.callCount);
|
||||||
|
mockPromise.then.mostRecentCall.args[0]({
|
||||||
|
hits: bigArray(INITIAL_LOAD_NUMBER + LOAD_INCREMENT + 1),
|
||||||
|
total: INITIAL_LOAD_NUMBER + LOAD_INCREMENT + 1
|
||||||
|
});
|
||||||
|
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();
|
||||||
|
mockPromise.then.mostRecentCall.args[0]({hits: [], total: 0});
|
||||||
|
expect(mockScope.ngModel.search).toEqual(false);
|
||||||
|
|
||||||
|
// Both the empty string and undefined should be 'empty input'
|
||||||
|
mockScope.ngModel.input = undefined;
|
||||||
|
controller.search();
|
||||||
|
mockPromise.then.mostRecentCall.args[0]({hits: [], total: 0});
|
||||||
|
expect(mockScope.ngModel.search).toEqual(false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("has a default results list to filter from", function () {
|
||||||
|
expect(mockScope.ngModel.filter()).toBeDefined();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
133
platform/search/test/controllers/SearchMenuControllerSpec.js
Normal file
133
platform/search/test/controllers/SearchMenuControllerSpec.js
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
/*****************************************************************************
|
||||||
|
* 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 08/17/2015.
|
||||||
|
*/
|
||||||
|
define(
|
||||||
|
["../../src/controllers/SearchMenuController"],
|
||||||
|
function (SearchMenuController) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
describe("The search menu controller", function () {
|
||||||
|
var mockScope,
|
||||||
|
mockPromise,
|
||||||
|
mockTypes,
|
||||||
|
controller;
|
||||||
|
|
||||||
|
beforeEach(function () {
|
||||||
|
mockScope = jasmine.createSpyObj(
|
||||||
|
"$scope",
|
||||||
|
[ "" ]
|
||||||
|
);
|
||||||
|
|
||||||
|
mockTypes = [
|
||||||
|
{key: 'mock.type.1', name: 'Mock Type 1', glyph: 'a'},
|
||||||
|
{key: 'mock.type.2', name: 'Mock Type 2', glyph: 'b'}
|
||||||
|
];
|
||||||
|
|
||||||
|
mockScope.ngModel = {};
|
||||||
|
mockScope.ngModel.checked = {};
|
||||||
|
mockScope.ngModel.checked['mock.type.1'] = false;
|
||||||
|
mockScope.ngModel.checked['mock.type.2'] = false;
|
||||||
|
mockScope.ngModel.checkAll = true;
|
||||||
|
mockScope.ngModel.filter = jasmine.createSpy('$scope.ngModel.filter');
|
||||||
|
mockScope.ngModel.filtersString = '';
|
||||||
|
|
||||||
|
controller = new SearchMenuController(mockScope, mockTypes);
|
||||||
|
});
|
||||||
|
|
||||||
|
it("gets types on initiliztion", function () {
|
||||||
|
expect(mockScope.ngModel.types).toBeDefined();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("refilters results when options are updated", function () {
|
||||||
|
controller.updateOptions();
|
||||||
|
expect(mockScope.ngModel.filter).toHaveBeenCalled();
|
||||||
|
|
||||||
|
controller.checkAll();
|
||||||
|
expect(mockScope.ngModel.filter).toHaveBeenCalled();
|
||||||
|
});
|
||||||
|
|
||||||
|
it("updates the filters string when options are updated", function () {
|
||||||
|
controller.updateOptions();
|
||||||
|
expect(mockScope.ngModel.filtersString).toEqual('');
|
||||||
|
|
||||||
|
mockScope.ngModel.checked['mock.type.1'] = true;
|
||||||
|
|
||||||
|
controller.updateOptions();
|
||||||
|
expect(mockScope.ngModel.filtersString).not.toEqual('');
|
||||||
|
});
|
||||||
|
|
||||||
|
it("changing checkAll status updates the filter string", function () {
|
||||||
|
controller.checkAll();
|
||||||
|
expect(mockScope.ngModel.filtersString).toEqual('');
|
||||||
|
|
||||||
|
mockScope.ngModel.checkAll = false;
|
||||||
|
|
||||||
|
controller.checkAll();
|
||||||
|
expect(mockScope.ngModel.filtersString).toEqual('NONE');
|
||||||
|
});
|
||||||
|
|
||||||
|
it("checking checkAll option resets other options", function () {
|
||||||
|
var type;
|
||||||
|
|
||||||
|
mockScope.ngModel.checked['mock.type.1'] = true;
|
||||||
|
mockScope.ngModel.checked['mock.type.2'] = true;
|
||||||
|
|
||||||
|
controller.checkAll();
|
||||||
|
|
||||||
|
for (type in mockScope.ngModel.checked) {
|
||||||
|
expect(mockScope.ngModel.checked[type]).toBeFalsy();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
it("tells the user when no options are checked", function () {
|
||||||
|
var type;
|
||||||
|
|
||||||
|
for (type in mockScope.ngModel.checked) {
|
||||||
|
mockScope.ngModel.checked[type] = false;
|
||||||
|
}
|
||||||
|
mockScope.ngModel.checkAll = false;
|
||||||
|
|
||||||
|
controller.updateOptions();
|
||||||
|
|
||||||
|
expect(mockScope.ngModel.filtersString).toEqual('NONE');
|
||||||
|
});
|
||||||
|
|
||||||
|
it("tells the user when options are checked", function () {
|
||||||
|
var type;
|
||||||
|
|
||||||
|
mockScope.ngModel.checkAll = false;
|
||||||
|
for (type in mockScope.ngModel.checked) {
|
||||||
|
mockScope.ngModel.checked[type] = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
controller.updateOptions();
|
||||||
|
|
||||||
|
expect(mockScope.ngModel.filtersString).not.toEqual('NONE');
|
||||||
|
expect(mockScope.ngModel.filtersString).not.toEqual('');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
);
|
@ -25,7 +25,7 @@
|
|||||||
* SearchSpec. Created by shale on 07/31/2015.
|
* SearchSpec. Created by shale on 07/31/2015.
|
||||||
*/
|
*/
|
||||||
define(
|
define(
|
||||||
["../src/GenericSearchProvider"],
|
["../../src/services/GenericSearchProvider"],
|
||||||
function (GenericSearchProvider) {
|
function (GenericSearchProvider) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
@ -81,6 +81,11 @@ define(
|
|||||||
);
|
);
|
||||||
mockWorkerService.run.andReturn(mockWorker);
|
mockWorkerService.run.andReturn(mockWorker);
|
||||||
|
|
||||||
|
mockCapabilityPromise = jasmine.createSpyObj(
|
||||||
|
"promise",
|
||||||
|
[ "then", "catch" ]
|
||||||
|
);
|
||||||
|
|
||||||
mockDomainObjects = {};
|
mockDomainObjects = {};
|
||||||
for (i = 0; i < 4; i += 1) {
|
for (i = 0; i < 4; i += 1) {
|
||||||
mockDomainObjects[i] = (
|
mockDomainObjects[i] = (
|
||||||
@ -91,6 +96,7 @@ define(
|
|||||||
);
|
);
|
||||||
mockDomainObjects[i].getId.andReturn(i);
|
mockDomainObjects[i].getId.andReturn(i);
|
||||||
mockDomainObjects[i].getCapability.andReturn(mockCapability);
|
mockDomainObjects[i].getCapability.andReturn(mockCapability);
|
||||||
|
mockDomainObjects[i].useCapability.andReturn(mockCapabilityPromise);
|
||||||
}
|
}
|
||||||
// Give the first object children
|
// Give the first object children
|
||||||
mockDomainObjects[0].hasCapability.andReturn(true);
|
mockDomainObjects[0].hasCapability.andReturn(true);
|
||||||
@ -98,10 +104,6 @@ define(
|
|||||||
"capability",
|
"capability",
|
||||||
[ "invoke", "listen" ]
|
[ "invoke", "listen" ]
|
||||||
);
|
);
|
||||||
mockCapabilityPromise = jasmine.createSpyObj(
|
|
||||||
"promise",
|
|
||||||
[ "then", "catch" ]
|
|
||||||
);
|
|
||||||
mockCapability.invoke.andReturn(mockCapabilityPromise);
|
mockCapability.invoke.andReturn(mockCapabilityPromise);
|
||||||
mockDomainObjects[0].getCapability.andReturn(mockCapability);
|
mockDomainObjects[0].getCapability.andReturn(mockCapability);
|
||||||
|
|
||||||
@ -112,13 +114,34 @@ define(
|
|||||||
expect(mockObjectService.getObjects).toHaveBeenCalled();
|
expect(mockObjectService.getObjects).toHaveBeenCalled();
|
||||||
expect(mockObjectPromise.then).toHaveBeenCalled();
|
expect(mockObjectPromise.then).toHaveBeenCalled();
|
||||||
|
|
||||||
|
// Call through the root-getting part
|
||||||
mockObjectPromise.then.mostRecentCall.args[0](mockDomainObjects);
|
mockObjectPromise.then.mostRecentCall.args[0](mockDomainObjects);
|
||||||
|
|
||||||
//mockCapabilityPromise.then.mostRecentCall.args[0](mockDomainObjects[1]);
|
// Call through the children-getting part
|
||||||
|
mockTimeout.mostRecentCall.args[0]();
|
||||||
|
// Array argument indicates multiple children
|
||||||
|
mockCapabilityPromise.then.mostRecentCall.args[0]([]);
|
||||||
|
mockTimeout.mostRecentCall.args[0]();
|
||||||
|
// Call again, but for single child
|
||||||
|
mockCapabilityPromise.then.mostRecentCall.args[0]({});
|
||||||
|
mockTimeout.mostRecentCall.args[0]();
|
||||||
|
|
||||||
expect(mockWorker.postMessage).toHaveBeenCalled();
|
expect(mockWorker.postMessage).toHaveBeenCalled();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("when indexing, listens for composition changes", function () {
|
||||||
|
var mockListener = {composition: {}};
|
||||||
|
|
||||||
|
// Call indexItems
|
||||||
|
mockObjectPromise.then.mostRecentCall.args[0](mockDomainObjects);
|
||||||
|
|
||||||
|
// Call through listening for changes
|
||||||
|
expect(mockCapability.listen).toHaveBeenCalled();
|
||||||
|
mockCapability.listen.mostRecentCall.args[0](mockListener);
|
||||||
|
expect(mockObjectService.getObjects).toHaveBeenCalled();
|
||||||
|
mockObjectPromise.then.mostRecentCall.args[0](mockDomainObjects);
|
||||||
|
});
|
||||||
|
|
||||||
it("sends search queries to the worker", function () {
|
it("sends search queries to the worker", function () {
|
||||||
var timestamp = Date.now();
|
var timestamp = Date.now();
|
||||||
provider.query(' test "query" ', timestamp, 1, 2);
|
provider.query(' test "query" ', timestamp, 1, 2);
|
||||||
@ -131,6 +154,19 @@ define(
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("gives an empty result for an empty query", function () {
|
||||||
|
var timestamp = Date.now(),
|
||||||
|
queryOutput;
|
||||||
|
|
||||||
|
queryOutput = provider.query('', timestamp, 1, 2);
|
||||||
|
expect(queryOutput.hits).toEqual([]);
|
||||||
|
expect(queryOutput.total).toEqual(0);
|
||||||
|
|
||||||
|
queryOutput = provider.query();
|
||||||
|
expect(queryOutput.hits).toEqual([]);
|
||||||
|
expect(queryOutput.total).toEqual(0);
|
||||||
|
});
|
||||||
|
|
||||||
it("handles responses from the worker", function () {
|
it("handles responses from the worker", function () {
|
||||||
var timestamp = Date.now(),
|
var timestamp = Date.now(),
|
||||||
event = {
|
event = {
|
@ -31,7 +31,7 @@ define(
|
|||||||
|
|
||||||
describe("The generic search worker ", function () {
|
describe("The generic search worker ", function () {
|
||||||
// If this test fails, make sure this path is correct
|
// If this test fails, make sure this path is correct
|
||||||
var worker = new Worker(require.toUrl('platform/search/src/GenericSearchWorker.js')),
|
var worker = new Worker(require.toUrl('platform/search/src/services/GenericSearchWorker.js')),
|
||||||
numObjects = 5;
|
numObjects = 5;
|
||||||
|
|
||||||
beforeEach(function () {
|
beforeEach(function () {
|
@ -25,7 +25,7 @@
|
|||||||
* SearchSpec. Created by shale on 07/31/2015.
|
* SearchSpec. Created by shale on 07/31/2015.
|
||||||
*/
|
*/
|
||||||
define(
|
define(
|
||||||
["../src/SearchAggregator"],
|
["../../src/services/SearchAggregator"],
|
||||||
function (SearchAggregator) {
|
function (SearchAggregator) {
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
@ -1,5 +1,8 @@
|
|||||||
[
|
[
|
||||||
"SearchAggregator",
|
"controllers/SearchController",
|
||||||
"GenericSearchProvider",
|
"controllers/SearchMenuController",
|
||||||
"GenericSearchWorker"
|
"controllers/ClickAwayController",
|
||||||
|
"services/SearchAggregator",
|
||||||
|
"services/GenericSearchProvider",
|
||||||
|
"services/GenericSearchWorker"
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user