2017-02-14 23:23:17 +00:00
|
|
|
/*****************************************************************************
|
|
|
|
* Open MCT, Copyright (c) 2014-2016, United States Government
|
|
|
|
* as represented by the Administrator of the National Aeronautics and Space
|
|
|
|
* Administration. All rights reserved.
|
|
|
|
*
|
|
|
|
* Open MCT 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 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.
|
|
|
|
*****************************************************************************/
|
|
|
|
|
|
|
|
define([
|
|
|
|
'../src/MCTTriggerModal'
|
|
|
|
], function (
|
|
|
|
MCTTriggerModal
|
|
|
|
) {
|
|
|
|
describe('MCTTriggerModal', function () {
|
|
|
|
var $scope,
|
|
|
|
$element,
|
|
|
|
frame,
|
|
|
|
layoutContainer,
|
|
|
|
$document,
|
|
|
|
mctTriggerModal;
|
|
|
|
|
|
|
|
function makeElement(classes, parentEl) {
|
|
|
|
var elem = jasmine.createSpyObj('element.' + classes.join('.'), [
|
|
|
|
'hasClass',
|
|
|
|
'parent'
|
|
|
|
]);
|
2018-06-30 00:32:59 +00:00
|
|
|
elem.hasClass.and.callFake(function (className) {
|
2017-02-14 23:23:17 +00:00
|
|
|
return classes.indexOf(className) !== -1;
|
|
|
|
});
|
2018-06-30 00:32:59 +00:00
|
|
|
elem.parent.and.returnValue(parentEl);
|
2017-02-14 23:23:17 +00:00
|
|
|
var div = document.createElement('div');
|
|
|
|
div.className = classes.join(' ');
|
|
|
|
parentEl[0].appendChild(div);
|
|
|
|
elem[0] = div;
|
|
|
|
return elem;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
beforeEach(function () {
|
|
|
|
$scope = jasmine.createSpyObj('$scope', ['$on']);
|
Notebook integration deep (#1947)
* NASA - OPEN MCT NOTEBOOK UI PROTOTYPE CHALLENGE
https://www.topcoder.com/challenge-details/30059614/
Initial submission
* Code updates:
-Topcoder final fixes
-NASA review fixes
* drag and drop style fix, new entry focus, delete display fix
* NASA reported issues fixed:
objects saved in notebook, delete entry dialog, style files, and new entry from drag objects fixed.
* Annotation toolbar UI style fixes, added annotation functionality on new entry dialog
* painterro .map file issue fixed.
* NASA review fixes:
css files adjusted
notebook children tree removed
embed's title links to live object
* CouchDB documentation added
* CouchDB documentation added
Screenshots added.
* CouchDB setup documentation added
* Test case functional and cosmetic issues fixed.
* Test cases functional and cosmetic issues fixed.
* updated file saver library
* Code issues fixes:
NotificationLaunchIndicator deleted.
Inappropriate modifications to domain object models fixed.
Implemented $destroy listener on entryDnd directive.
Naming conventions fixed.
Unnecessary changes made to platform handled.
Painterro dependency handled
gulp verify fix.
* names and package fixes
* filenames fix
* [Notebook] Relocate to platform/features/notebook
* [Notebook] Remove obsolete README
* [Notebook] Restore original index.html
* [Notebook] Expose via openmct.plugins
* [Notebook] Remove demo entries
* [Notebook] Run gulp fixstyle
* [Notebook] Use dot notation instead of brackets
...for checkstyle
* [Notebook] Remove extra comma
* [Notebook] Run gulp fixstyle
* [Notebook] Use dot notation instead of brackets
...for checkstyle
* [Notebook] Fix lint issues
* [Notebook] Fix lint issues
* [Notebook] Fix lint issues
* [Notebook] Fix lint issues
* [Notebook] Fix lint issues
* [Notebook] Fix lint issues
* [Notebook] Fix lint issues
* [Notebook] Fix lint issues
* [Notebook] Fix lint issues
* [Notebook] Run gulp fixstyle
* [Notebook] Include painterro for tests
* [Notebook] Fix require config for painterro
* [Merge] WIP markup and styling
Fixes #1896
- Very much WIP, currently having issues with
hovering and jiggling
* [Merge] WIP markup and styling
Fixes #1896
- Very much WIP, attempting to convert
textarea to contenteditable;
* [Merge] JS debugging
Fixes #1896
- Very much WIP!
* [Merge] JS debugging
Fixes #1896
- Really, really WIP
- DnD doesn't work properly, and drag to
existing entry no longer works.
* [Front-end] Notebook thematic styling; test console
Fixes #1896
- Added thematic styles and config;
- Really, really, really WIP!!
- DnD doesn't work properly, and drag to
existing entry no longer works.
* [Merge] Cleanups in JS
Fixes #1896
- Removed and commented out logging statements
* [Merge] WIP SCSS and markup polishing
Fixes #1896
- Significant style and markup changes;
- Styles, layout, etc. relating to embed elements;
- Fixes in both notebook.html and embedControl.html;
- Class name normalization;
* [Merge] WIP Mods related to MCTModalNotebook.js
Fixes #1896
Fixes #1906
* fix drag and drop, delete entries
* [Front-end] Refined styling of entry embeds
Fixes #1896
* [Merge] Generalized hover hide/show of local controls
Fixes #1896
* [Merge] Generalized labeled icon-* elements
Fixes #1896
* [Frontend] CSS normalizing, apply general styles in markup
Fixes #1896
- Notebook class names more individualized;
- Apply .labeled and .has-local-controls general classes;
- Apply .s-input-inline to contenteditable div;
- Look and feel cleanups for drag area and entry elements;
* added modifiedOn time for entries that are changed, and fixed issue regarding inner text being filled when new entry button clicked
* [Frontend] CSS sanding and cleanups
Fixes #1896
- Removing unused classes;
- Finessed margin and padding;
* [Frontend] Mobile styling
Fixes #1896
- Mod .has-local-controls to not apply when in touch context
* [Frontend] WIP Mobile styling
Fixes #1896
- phone portrait entry layout optimization
* fix expand in layout, which was causing snapshot at expand
* [Frontend] Fixes to search control
Fixes #1896
- Search control now more robust, added
.search-filter-by-type class selector;
* [Frontend] Fix custom Selects
Fixes #1896
- Custom Selects now much more
solid, handle width compression better;
* remove duplicate code from MCTModalNotebook and roll changes into MCTTriggerModal
* [Frontend] WIP Mobile styling
Fixes #1896
- Fixed general approach to portrait orientation in
mobile/_layout.scss to use media query;
- Fixed portrait layout in _notebook_base.scss
to use media query;
* prevent multiple new notebook entry divs from being created on open overlay, instead create on initialization
* [Frontend] WIP Snapshot styling
Fixes #1896
- Better class names;
- Moved buttons in frame layout;
* remove frame layout duplicate and use frame.html
* fix issue of preserving line breaks when text is received from a persisted source
* add comments, clean out some code, and fix broken tests
* fix export image after merging with master
* include painterro in karma config
* Inlined templates for notebook
* disable view policy - to allow layouts to function - needs more investigation
* fix layout display overload, remove viewpolicy and notebookLayout.html. Fix delete error - issues found when deploying for testathon
* fix (not being able to focus on content editable div to add text, while in layout)
- when in layout, the first child of the outermost div is the only one that registers a click, this was causing an issue of not being able to edit notebook entries. My fix includes finding the first child of the div that registers the click and forcing a focus event.
* fix focus one new entry issue, cleanup of code related to finding elements, and write more reusable code
* abstract findElementById for reusability and improve performance from O^2 to O
* user findElementById in entrydnd
* change snapshot library to dom-to-image
* [Frontend] WIP Snapshot styling
Fixes #1896
Fixes #1947
- Significant markup changes to template in ViewSnaphot.js
- WIP!!! Keeping own topic branch for now
* [Frontend] WIP Snapshot styling
Fixes #1896
Fixes #1947
- Significant markup changes to ViewSnaphot.js;
- Change in imagery.scss to move non-layout styling
to appropriate class;
* Removed snapshot from version number to close sprint eagle
* Updated version number for Enterprise release
* Lock filesaver version (#1956)
Lock filesaver version as there have been a large number of broken
builds from what should be non-breaking version increases.
Fixes currently broken build.
* [Frontend] Snapshot styling
Fixes #1896
Fixes #1947
- Final tweaks after rebase from
notebook-integration-deep-styling
* fixes issue of overlay not closing when context menu item in clicked when viewing snapshot
* [Frontend] Painterro styling
Fixes #1896
Fixes #1947
- WIP
- Painterro styling overrides and config
- Removed commented code
* [Frontend] Painterro styling
Fixes #1896
Fixes #1947
- WIP
- Painterro styling overrides and config
* fixes issue of overlay not closing when context menu item in clicked when viewing snapshot
* specify require paths for new library
* [Frontend] Local controls CSS added for hide/show of trash can icons
Fixes #1896
Fixes #1947
- Also updated frame.scss to use same transition timing
* proper shimming
* dragging objects to notebook now only creates a link, clicking on snapshot from object view takes a snapshot of the current view, without re-rendering
* [Frontend] Local controls CSS added for hide/show of trash can icons
Fixes #1896
Fixes #1947
- Also updated frame.scss to use same transition timing
* select correct div for snapshot
* [Frontend] Adding background color to snapshot
Fixes #1896
Fixes #1947
* remove snapshot class after async image render
* [Frontend] Adding background color to snapshot
Fixes #1896
Fixes #1947
* remove snapshot button from frames in layout
* remove snapshot from frame view, add it only to overlay, change mctSnapShot to accomodate taking snaps of overlay/object view
* add preview action, working, need styling for notebook action on preview
* fix checkstyle
* change glyph for preview, use similar tempalte to frame.html
* dont allow preview action on objects getting edited currently
* changes to browseController and NavigationService to block navigation and show preview of object when trying to navigate to object in tree in edit mode
* [Frontend] Painterro styling and config
Fixes #1896
Fixes #1947
- Changes mainly related to toolbar styling and labels
* [Frontend] Notebook/Preview related sanding and polishing
Fixes #1947
- Changed description for notebook-new-entry
* [Frontend] Notebook/Preview related sanding and polishing
Fixes #1947
- Added new global "hide-in-t-main-view" class;
- Apply new class to Preview action to suppress
display of that button in main view of navigated object;
* code cleanup
* [Frontend] Notebook/Preview related sanding and polishing
Fixes #1947
- Classes for Notebook Entry button spacing;
* abstract overlay into a service/api - to reduce code duplication
catch error produced by painterro because of async div creation by dialog service
* fix broken mcttriggermodal tests
* fix checkstyle and lint
* add functionality of being able to add buttons to the browse bar element of overlay when instantiating the overlay service
* Reduce frequency of template recompilation in mct-include
* Use updated painterro library. Fixes #1981
* add save flag and call done in both cases (clicking on cancel or ok)
* fixes #1951
persist modified empty entry on blur
* Bump Node Version
* fix checkstyle
* fixes issue where annotating snapshot that is already saved in notebook does not work
* fix painterro button styling issue
move jquery logic inside timeout block, because buttons are asynchronously created
* remove description required when saving snapshot to notebook
* remove create snapshot action from embeds, and add preview action to embeds
* fixes edge case for issue #1981
Add a reject callback in the edgecase that user presses the x icon or esc key to cancel annotation, which was leading to the drag drop issue
* Add default sort options on creation menu of Notebook
* fix auto focus on new entry when in oldest first order, both in layout and regular view
* [Frontend] Notebook mobile mods
- Hide entry area when mobile;
- Disallow entry edit or delete in mobile;
* fixes issue 2041 (#2049)
* fixes issue 2041
allows user to select caret position in notebook entries while in layout
* [Frontend] Restore class, refine selector
Fixes #2041
Fixes #2049
- Restored .s-input-inline to editable field;
- Refined pointer-events: none to properly target .title-label only;
* remove unused files/code and smoke test
* remove , add pre-wrap to css and use inner text
* make reviewer requested changes 'in progress still'
* make reviewer requested changes 'continued'
* replace html2canvas with dom-to-image
- add in progress dialog to export image service
- add error dialog to export image service
* Search UI refactored to use flex
Fixes #1947
- Fixes broken search inputs in main search and Notebook;
- Significant rewrite to search SCSS and markup;
* Fixes for Notebook custom selects; polishes to search
Fixes #1947
- Better flex styles for custom selects;
- Refinements to search styling;
- Much better mobile responsive layout for search and controls
in portrait layout;
* fix preview action for embeds, which was showing current domain object vs selected domain object
* Fixed hidden search dropdown menu
Fixes #1947
* Revert whitespace change
Revert change to whitespace in index.html. #1947.
* [Export] Use html2canvas
Use html2canvas instead of dom-to-image. Fixes issues with text
exports. html2canvas is better supported and under active
development and is a better choice for this library. Cleaned up
export code, ensure that images are properly saved as the correct
types.
related to feedback on #1947
* Don't show brackets when timestamp is not specified (#331)
2018-06-29 00:13:34 +00:00
|
|
|
$scope.domainObject = { getCapability: function () {
|
|
|
|
return { getActions: function () {
|
|
|
|
return [];
|
|
|
|
}};
|
|
|
|
}};
|
|
|
|
|
2017-02-14 23:23:17 +00:00
|
|
|
$element = jasmine.createSpyObj('$element', [
|
|
|
|
'parent',
|
|
|
|
'remove',
|
|
|
|
'on',
|
|
|
|
'off'
|
|
|
|
]);
|
|
|
|
layoutContainer = document.createElement('div');
|
|
|
|
frame = makeElement(['frame'], [layoutContainer]);
|
|
|
|
var child = makeElement([], frame);
|
|
|
|
for (var i = 0; i < 5; i++) {
|
|
|
|
child = makeElement([], child);
|
|
|
|
}
|
2018-06-30 00:32:59 +00:00
|
|
|
$element.parent.and.returnValue(child);
|
2017-02-14 23:23:17 +00:00
|
|
|
$document = [jasmine.createSpyObj('document', ['createElement'])];
|
|
|
|
$document[0].body = document.createElement('div');
|
2018-06-30 00:32:59 +00:00
|
|
|
$document[0].createElement.and.callFake(function (tag) {
|
2017-02-14 23:23:17 +00:00
|
|
|
return document.createElement(tag);
|
|
|
|
});
|
|
|
|
|
|
|
|
mctTriggerModal = new MCTTriggerModal($document);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('is a directive definition', function () {
|
|
|
|
expect(mctTriggerModal.restrict).toBe('A');
|
|
|
|
expect(mctTriggerModal.link).toEqual(jasmine.any(Function));
|
|
|
|
});
|
|
|
|
|
|
|
|
describe('link', function () {
|
|
|
|
beforeEach(function () {
|
|
|
|
mctTriggerModal.link($scope, $element);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('attaches handlers to $element', function () {
|
|
|
|
expect($element.on).toHaveBeenCalledWith(
|
|
|
|
'click',
|
|
|
|
jasmine.any(Function)
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('cleans up on $scope $destroy', function () {
|
|
|
|
expect($scope.$on).toHaveBeenCalledWith(
|
|
|
|
'$destroy',
|
|
|
|
jasmine.any(Function)
|
|
|
|
);
|
2018-06-30 00:32:59 +00:00
|
|
|
$scope.$on.calls.mostRecent().args[1]();
|
2017-02-14 23:23:17 +00:00
|
|
|
expect($element.off).toHaveBeenCalledWith(
|
|
|
|
'click',
|
|
|
|
jasmine.any(Function)
|
|
|
|
);
|
|
|
|
});
|
|
|
|
|
|
|
|
it('opens and closes overlays', function () {
|
|
|
|
[
|
|
|
|
'a.close', 'a.t-done', '.abs.blocker'
|
|
|
|
].forEach(function (selector) {
|
2018-06-30 00:32:59 +00:00
|
|
|
$element.on.calls.mostRecent().args[1]();
|
2017-02-14 23:23:17 +00:00
|
|
|
var container = $document[0].body.querySelector('.t-contents');
|
|
|
|
expect(container.children[0]).toBe(frame[0]);
|
|
|
|
expect(layoutContainer.children[0]).not.toBe(frame[0]);
|
|
|
|
$document[0].body.querySelector(selector)
|
|
|
|
.dispatchEvent(new Event('click'));
|
|
|
|
expect(container.children[0]).not.toBe(frame[0]);
|
|
|
|
expect(layoutContainer.children[0]).toBe(frame[0]);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|
|
});
|