Compare commits
	
		
			412 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					6868bfd4e1 | ||
| 
						 | 
					95ea33b441 | ||
| 
						 | 
					896dd8d2c7 | ||
| 
						 | 
					789b640b9b | ||
| 
						 | 
					e05858e26b | ||
| 
						 | 
					89046ecad5 | ||
| 
						 | 
					fa7431d68b | ||
| 
						 | 
					78b528b4a5 | ||
| 
						 | 
					e3ef68bc6f | ||
| 
						 | 
					83276d70d3 | ||
| 
						 | 
					109ae3323d | ||
| 
						 | 
					0053989de8 | ||
| 
						 | 
					0628398b01 | ||
| 
						 | 
					dc5feb8b1a | ||
| 
						 | 
					f08725b6a2 | ||
| 
						 | 
					301b73c6c6 | ||
| 
						 | 
					912e70d219 | ||
| 
						 | 
					1d41939418 | ||
| 
						 | 
					ee382be38d | ||
| 
						 | 
					34ea3ad9bb | ||
| 
						 | 
					2ba6f18c59 | ||
| 
						 | 
					b2a09599a0 | ||
| 
						 | 
					11264759ec | ||
| 
						 | 
					c0ff6de27b | ||
| 
						 | 
					60dda8a7a4 | ||
| 
						 | 
					82ae9e72c1 | ||
| 
						 | 
					85300d3743 | ||
| 
						 | 
					fe3e3325e1 | ||
| 
						 | 
					2b97d61d6c | ||
| 
						 | 
					954fdd5906 | ||
| 
						 | 
					8267058487 | ||
| 
						 | 
					4a913376ac | ||
| 
						 | 
					5ff3c71523 | ||
| 
						 | 
					ba614fe2d6 | ||
| 
						 | 
					5e713f279b | ||
| 
						 | 
					df590107cb | ||
| 
						 | 
					fc8630dbc6 | ||
| 
						 | 
					12a94f828a | ||
| 
						 | 
					0e840ae003 | ||
| 
						 | 
					e1e5919f68 | ||
| 
						 | 
					b2cd66bd5d | ||
| 
						 | 
					af1fa6e77a | ||
| 
						 | 
					5ff90f7254 | ||
| 
						 | 
					0ca9e5c952 | ||
| 
						 | 
					dbcad51325 | ||
| 
						 | 
					8ee93d9603 | ||
| 
						 | 
					ac59df9595 | ||
| 
						 | 
					182eff977c | ||
| 
						 | 
					3af23b7bc5 | ||
| 
						 | 
					7f529eec68 | ||
| 
						 | 
					ad4292f1e9 | ||
| 
						 | 
					6840e596a5 | ||
| 
						 | 
					30fd8c451e | ||
| 
						 | 
					bf0014f1b9 | ||
| 
						 | 
					2aeebff652 | ||
| 
						 | 
					471a25a625 | ||
| 
						 | 
					d606ee421f | ||
| 
						 | 
					926aed72c3 | ||
| 
						 | 
					7014808c13 | ||
| 
						 | 
					d6fe543c16 | ||
| 
						 | 
					581dbacc9f | ||
| 
						 | 
					5b02bc8104 | ||
| 
						 | 
					4f0e8ada2f | ||
| 
						 | 
					6ce4ce6ada | ||
| 
						 | 
					70bc17c79f | ||
| 
						 | 
					f3aceb1644 | ||
| 
						 | 
					056b0c8c5b | ||
| 
						 | 
					fa60d62039 | ||
| 
						 | 
					082122ddec | ||
| 
						 | 
					6dbccd5000 | ||
| 
						 | 
					fb0861f256 | ||
| 
						 | 
					dbe1875e70 | ||
| 
						 | 
					97892869ae | ||
| 
						 | 
					8db334e45b | ||
| 
						 | 
					4743833f7c | ||
| 
						 | 
					6996883b85 | ||
| 
						 | 
					119403e71c | ||
| 
						 | 
					ff24f06475 | ||
| 
						 | 
					597b18af1c | ||
| 
						 | 
					aba0969312 | ||
| 
						 | 
					b4a2bfd727 | ||
| 
						 | 
					2040304980 | ||
| 
						 | 
					55362f6b26 | ||
| 
						 | 
					8611926533 | ||
| 
						 | 
					c17269ba8b | ||
| 
						 | 
					56ccf29cfe | ||
| 
						 | 
					8b7a94dcf8 | ||
| 
						 | 
					3e5d294a28 | ||
| 
						 | 
					480da3476e | ||
| 
						 | 
					54334a8906 | ||
| 
						 | 
					c9b2f5804d | ||
| 
						 | 
					0c1f77cfab | ||
| 
						 | 
					ae4313253c | ||
| 
						 | 
					1e6c4732f1 | ||
| 
						 | 
					884d36ad6d | ||
| 
						 | 
					24586ae378 | ||
| 
						 | 
					cf97b30084 | ||
| 
						 | 
					e86e61c2ac | ||
| 
						 | 
					b163b45a5e | ||
| 
						 | 
					d236fd10c3 | ||
| 
						 | 
					befa66a9e2 | ||
| 
						 | 
					5a1c83fca8 | ||
| 
						 | 
					88bb213162 | ||
| 
						 | 
					ad552511c1 | ||
| 
						 | 
					65368ed0c3 | ||
| 
						 | 
					bf05e55d02 | ||
| 
						 | 
					c057ba38a5 | ||
| 
						 | 
					70bcb723ef | ||
| 
						 | 
					4c5808c8c9 | ||
| 
						 | 
					fa186a1556 | ||
| 
						 | 
					0b4f44f00d | ||
| 
						 | 
					dce7253b27 | ||
| 
						 | 
					158fbf5365 | ||
| 
						 | 
					1d1589da68 | ||
| 
						 | 
					6aba34dd5a | ||
| 
						 | 
					733a282f3f | ||
| 
						 | 
					19500c2704 | ||
| 
						 | 
					2090b1a958 | ||
| 
						 | 
					411a4ebfbf | ||
| 
						 | 
					cc3b0ecfca | ||
| 
						 | 
					ac48039b90 | ||
| 
						 | 
					411f0d904d | ||
| 
						 | 
					d92ae4d508 | ||
| 
						 | 
					bc4c7feb6c | ||
| 
						 | 
					c4aed57165 | ||
| 
						 | 
					88b8528aaf | ||
| 
						 | 
					d1c0d81120 | ||
| 
						 | 
					a233856bac | ||
| 
						 | 
					9a7f435b61 | ||
| 
						 | 
					9fdb9f0170 | ||
| 
						 | 
					f28d2f19d0 | ||
| 
						 | 
					acdd35cf65 | ||
| 
						 | 
					4f5a1115d2 | ||
| 
						 | 
					d981e7bb1d | ||
| 
						 | 
					a3a6706869 | ||
| 
						 | 
					72c122e0ee | ||
| 
						 | 
					8c1b70f085 | ||
| 
						 | 
					c010011798 | ||
| 
						 | 
					ecf7f4b235 | ||
| 
						 | 
					3e5d46a62b | ||
| 
						 | 
					01045e6ee1 | ||
| 
						 | 
					febb0edede | ||
| 
						 | 
					048eb20450 | ||
| 
						 | 
					36e38b9454 | ||
| 
						 | 
					215b4a154b | ||
| 
						 | 
					47bfe40294 | ||
| 
						 | 
					3a3829682c | ||
| 
						 | 
					861ea8bab7 | ||
| 
						 | 
					f17410a85b | ||
| 
						 | 
					a840b59044 | ||
| 
						 | 
					d14c4e08b8 | ||
| 
						 | 
					de6dfe1fdc | ||
| 
						 | 
					3b2454c6a9 | ||
| 
						 | 
					426ab44d93 | ||
| 
						 | 
					3792dab0f9 | ||
| 
						 | 
					c6df7cebe5 | ||
| 
						 | 
					52df7fe1e2 | ||
| 
						 | 
					32b895ba62 | ||
| 
						 | 
					4db48afab0 | ||
| 
						 | 
					52c471bd3a | ||
| 
						 | 
					560c8612bd | ||
| 
						 | 
					6a917f5393 | ||
| 
						 | 
					86deec6364 | ||
| 
						 | 
					ac41ed7d64 | ||
| 
						 | 
					dafcda281a | ||
| 
						 | 
					cc5908d26f | ||
| 
						 | 
					37c34c668c | ||
| 
						 | 
					62898c921f | ||
| 
						 | 
					4997fc1417 | ||
| 
						 | 
					bb1a02c8bd | ||
| 
						 | 
					678d11832c | ||
| 
						 | 
					3310016264 | ||
| 
						 | 
					17e9e87a2b | ||
| 
						 | 
					b2649de649 | ||
| 
						 | 
					b1238b0c96 | ||
| 
						 | 
					ba6e542d08 | ||
| 
						 | 
					8759fdbd95 | ||
| 
						 | 
					d3d94d67ea | ||
| 
						 | 
					b9d8b124ff | ||
| 
						 | 
					8e995eba8f | ||
| 
						 | 
					194bc41322 | ||
| 
						 | 
					2f57f47234 | ||
| 
						 | 
					59e181c0e5 | ||
| 
						 | 
					8a5c61e2e6 | ||
| 
						 | 
					199be71f8f | ||
| 
						 | 
					ac2144d5c5 | ||
| 
						 | 
					01f2fab70f | ||
| 
						 | 
					7562c82369 | ||
| 
						 | 
					c3efb29dfc | ||
| 
						 | 
					bb738f9a93 | ||
| 
						 | 
					97071fc72c | ||
| 
						 | 
					b39753d0a6 | ||
| 
						 | 
					e3eda5112c | ||
| 
						 | 
					2cbe686732 | ||
| 
						 | 
					021d105fd0 | ||
| 
						 | 
					7ffbc9ad2f | ||
| 
						 | 
					90f62b92a5 | ||
| 
						 | 
					5a991076ea | ||
| 
						 | 
					eb4ea8f2d4 | ||
| 
						 | 
					9692596859 | ||
| 
						 | 
					ce152881cc | ||
| 
						 | 
					f40e7d7105 | ||
| 
						 | 
					a8fc5ee8ed | ||
| 
						 | 
					5400f51204 | ||
| 
						 | 
					29c9b2a08f | ||
| 
						 | 
					e4d136d345 | ||
| 
						 | 
					620c0415cf | ||
| 
						 | 
					54bf39344a | ||
| 
						 | 
					683b3f7511 | ||
| 
						 | 
					510e7d1261 | ||
| 
						 | 
					63b41d796a | ||
| 
						 | 
					80a91970f6 | ||
| 
						 | 
					f0c64b6b92 | ||
| 
						 | 
					48136c2265 | ||
| 
						 | 
					1961adf8d6 | ||
| 
						 | 
					8c4c65241a | ||
| 
						 | 
					67cb5f8077 | ||
| 
						 | 
					bb2f086623 | ||
| 
						 | 
					a0169ad158 | ||
| 
						 | 
					6e172359b4 | ||
| 
						 | 
					d33678276c | ||
| 
						 | 
					1cbca41c53 | ||
| 
						 | 
					a27083c28c | ||
| 
						 | 
					def5e17bb8 | ||
| 
						 | 
					b8b9721ddc | ||
| 
						 | 
					f80266b23f | ||
| 
						 | 
					9a3009f327 | ||
| 
						 | 
					2542255342 | ||
| 
						 | 
					89bfa54563 | ||
| 
						 | 
					793c99ac2f | ||
| 
						 | 
					39bd292886 | ||
| 
						 | 
					e8bc9ecc1a | ||
| 
						 | 
					0fa330adff | ||
| 
						 | 
					9cd57614e4 | ||
| 
						 | 
					d80c359a86 | ||
| 
						 | 
					07d0706cd1 | ||
| 
						 | 
					fd5a911d50 | ||
| 
						 | 
					c71f1fe447 | ||
| 
						 | 
					cd46dab5c1 | ||
| 
						 | 
					e1858bf0ae | ||
| 
						 | 
					7542c6d49a | ||
| 
						 | 
					13b66cd215 | ||
| 
						 | 
					aca06c6007 | ||
| 
						 | 
					5184e08a5b | ||
| 
						 | 
					69c6d4bd26 | ||
| 
						 | 
					6a2bdd103b | ||
| 
						 | 
					76c4b96683 | ||
| 
						 | 
					44ed4e0e0d | ||
| 
						 | 
					b860db302c | ||
| 
						 | 
					e96d3e3738 | ||
| 
						 | 
					039d692e4c | ||
| 
						 | 
					ee608cc4a4 | ||
| 
						 | 
					da8eb334e3 | ||
| 
						 | 
					67592def90 | ||
| 
						 | 
					3484b315cf | ||
| 
						 | 
					b1e1e85bbd | ||
| 
						 | 
					1e79c507c8 | ||
| 
						 | 
					c4dd4f5c45 | ||
| 
						 | 
					03aba8bbf7 | ||
| 
						 | 
					63a99f26f6 | ||
| 
						 | 
					7ca15a9de2 | ||
| 
						 | 
					7ac1d2458a | ||
| 
						 | 
					0bc4f2dc6e | ||
| 
						 | 
					dcd7d61c9a | ||
| 
						 | 
					7c17581659 | ||
| 
						 | 
					0a39984c4f | ||
| 
						 | 
					a146185bd2 | ||
| 
						 | 
					0b635afcf7 | ||
| 
						 | 
					f46a0853b9 | ||
| 
						 | 
					66c81ce3d6 | ||
| 
						 | 
					6b65ae77e7 | ||
| 
						 | 
					66408eeec8 | ||
| 
						 | 
					3d524d7572 | ||
| 
						 | 
					9b922913a0 | ||
| 
						 | 
					560a2e035e | ||
| 
						 | 
					eca52a8ca6 | ||
| 
						 | 
					2983ebb2c6 | ||
| 
						 | 
					25e8bb44d2 | ||
| 
						 | 
					1a8eece90f | ||
| 
						 | 
					85658d3d1f | ||
| 
						 | 
					ddce0f371d | ||
| 
						 | 
					495cd06ed5 | ||
| 
						 | 
					1624866656 | ||
| 
						 | 
					2d1aa65d63 | ||
| 
						 | 
					c333a2e70a | ||
| 
						 | 
					906354764b | ||
| 
						 | 
					12ec293f3d | ||
| 
						 | 
					bdf8b4d3f1 | ||
| 
						 | 
					6e60088b11 | ||
| 
						 | 
					97bf530b1d | ||
| 
						 | 
					18348476c6 | ||
| 
						 | 
					7e35e55f0b | ||
| 
						 | 
					28a2a5b92a | ||
| 
						 | 
					d262520594 | ||
| 
						 | 
					7cc14a195b | ||
| 
						 | 
					84b9e4d781 | ||
| 
						 | 
					52e0476d24 | ||
| 
						 | 
					86340623f7 | ||
| 
						 | 
					356fa73c91 | ||
| 
						 | 
					a073ef69ac | ||
| 
						 | 
					3c6c420023 | ||
| 
						 | 
					21964fe68e | ||
| 
						 | 
					62714bb97c | ||
| 
						 | 
					2a4943f584 | ||
| 
						 | 
					e32403a75f | ||
| 
						 | 
					b0c42c12b7 | ||
| 
						 | 
					621ccc25ec | ||
| 
						 | 
					617df739ee | ||
| 
						 | 
					6e43a92191 | ||
| 
						 | 
					1d7a0fa48d | ||
| 
						 | 
					30c530178a | ||
| 
						 | 
					3d0795cde3 | ||
| 
						 | 
					c85a3787c0 | ||
| 
						 | 
					066258ab83 | ||
| 
						 | 
					ddc2295ec3 | ||
| 
						 | 
					011e6fc512 | ||
| 
						 | 
					91bd58215a | ||
| 
						 | 
					b37ee19fbc | ||
| 
						 | 
					2355d354b3 | ||
| 
						 | 
					200c6e49fc | ||
| 
						 | 
					a89f9eed42 | ||
| 
						 | 
					7993e4c03f | ||
| 
						 | 
					b592b89dc8 | ||
| 
						 | 
					d115166dde | ||
| 
						 | 
					d176f9f811 | ||
| 
						 | 
					143e3eeb6c | ||
| 
						 | 
					b3bc8b6876 | ||
| 
						 | 
					1f7ba70ad7 | ||
| 
						 | 
					7aba3b6672 | ||
| 
						 | 
					926b3d075c | ||
| 
						 | 
					827cb27f28 | ||
| 
						 | 
					0842f464db | ||
| 
						 | 
					56e51ea32a | ||
| 
						 | 
					dcdafbaebf | ||
| 
						 | 
					f98915cddd | ||
| 
						 | 
					4e6c307684 | ||
| 
						 | 
					ce6d74390e | ||
| 
						 | 
					6e406fd060 | ||
| 
						 | 
					2614427e0e | ||
| 
						 | 
					272c6bca97 | ||
| 
						 | 
					0d7387080d | ||
| 
						 | 
					1e2e20b145 | ||
| 
						 | 
					488829a20c | ||
| 
						 | 
					85c7a36e25 | ||
| 
						 | 
					d99b4d75d8 | ||
| 
						 | 
					15a88967d0 | ||
| 
						 | 
					6e6fbe0d65 | ||
| 
						 | 
					180e5f14ae | ||
| 
						 | 
					e9314898d2 | ||
| 
						 | 
					ce75d19480 | ||
| 
						 | 
					a9dd1f9828 | ||
| 
						 | 
					4b5540830b | ||
| 
						 | 
					ee35976c92 | ||
| 
						 | 
					54b6cd1100 | ||
| 
						 | 
					0f89e98a71 | ||
| 
						 | 
					6f07a21bb8 | ||
| 
						 | 
					f3678d9d52 | ||
| 
						 | 
					9a7bbd92bd | ||
| 
						 | 
					edcafc5835 | ||
| 
						 | 
					7d09df9a85 | ||
| 
						 | 
					b00eee00fc | ||
| 
						 | 
					c0d83f9395 | ||
| 
						 | 
					be757066f5 | ||
| 
						 | 
					885433390e | ||
| 
						 | 
					687f810475 | ||
| 
						 | 
					137a60f510 | ||
| 
						 | 
					46d5a1431f | ||
| 
						 | 
					404d02ec23 | ||
| 
						 | 
					eec955317a | ||
| 
						 | 
					67890a7298 | ||
| 
						 | 
					dd457f26c6 | ||
| 
						 | 
					85c6bda5c9 | ||
| 
						 | 
					b7b5f87002 | ||
| 
						 | 
					b0c5d807e7 | ||
| 
						 | 
					4d4776e0ef | ||
| 
						 | 
					61e1aeb1d8 | ||
| 
						 | 
					9caa603a65 | ||
| 
						 | 
					5c99e469d5 | ||
| 
						 | 
					4d9dc3624b | ||
| 
						 | 
					d3ae4b729f | ||
| 
						 | 
					30bed434fe | ||
| 
						 | 
					3e4ae4d38d | ||
| 
						 | 
					7414275a85 | ||
| 
						 | 
					fcb0033864 | ||
| 
						 | 
					f079471a18 | ||
| 
						 | 
					1fb1174c0a | ||
| 
						 | 
					635e1eda69 | ||
| 
						 | 
					40d53f941f | ||
| 
						 | 
					684a0e88a2 | ||
| 
						 | 
					30a4f15330 | ||
| 
						 | 
					dfd08000f1 | ||
| 
						 | 
					82c8d26264 | ||
| 
						 | 
					bd236e1cb1 | ||
| 
						 | 
					e47a36e799 | ||
| 
						 | 
					30efec0090 | ||
| 
						 | 
					b9371ea03d | ||
| 
						 | 
					7974f33781 | ||
| 
						 | 
					cdcaedc8dd | ||
| 
						 | 
					07ef4dfe8a | ||
| 
						 | 
					342be0822f | ||
| 
						 | 
					5c56484889 | ||
| 
						 | 
					2b4162c0be | ||
| 
						 | 
					3704d64560 | ||
| 
						 | 
					24fae72492 | ||
| 
						 | 
					79fb6eabd9 | ||
| 
						 | 
					1ddb00c8d6 | ||
| 
						 | 
					8a0b77ec5c | ||
| 
						 | 
					2fc447e16f | ||
| 
						 | 
					d828bf59f9 | ||
| 
						 | 
					d8806f14aa | ||
| 
						 | 
					0c6a9ca857 | ||
| 
						 | 
					933927cda1 | 
							
								
								
									
										7
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -3,8 +3,13 @@
 | 
			
		||||
*.gzip
 | 
			
		||||
*.tgz
 | 
			
		||||
*.DS_Store
 | 
			
		||||
*.idea
 | 
			
		||||
 | 
			
		||||
*.sass-cache
 | 
			
		||||
*COMPILE.css
 | 
			
		||||
 | 
			
		||||
# Intellij project configuration files
 | 
			
		||||
*.idea
 | 
			
		||||
*.iml
 | 
			
		||||
 | 
			
		||||
# External dependencies
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -238,6 +238,9 @@ Commit messages should:
 | 
			
		||||
* Contain a reference to a relevant issue number in the body of the commit.
 | 
			
		||||
  * This is important for traceability; while branch names also provide this,
 | 
			
		||||
    you cannot tell from looking at a commit what branch it was authored on.
 | 
			
		||||
  * This may be omitted if the relevant issue is otherwise obvious from the
 | 
			
		||||
    commit history (that is, if using `git log` from the relevant commit
 | 
			
		||||
    directly leads to a similar issue reference) to minimize clutter.
 | 
			
		||||
* Describe the change that was made, and any useful rationale therefore.
 | 
			
		||||
  * Comments in code should explain what things do, commit messages describe
 | 
			
		||||
    how they came to be done that way.
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								Procfile
									
									
									
									
									
								
							
							
						
						@@ -1 +1 @@
 | 
			
		||||
web: node app.js --port $PORT --include example/localstorage
 | 
			
		||||
web: node app.js --port $PORT
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						@@ -103,6 +103,21 @@ This build will:
 | 
			
		||||
 | 
			
		||||
Run as `mvn clean install`.
 | 
			
		||||
 | 
			
		||||
### Building Documentation
 | 
			
		||||
 | 
			
		||||
Open MCT Web's documentation is generated by an
 | 
			
		||||
[npm](https://www.npmjs.com/)-based build:
 | 
			
		||||
 | 
			
		||||
* `npm install` _(only needs to run once)_
 | 
			
		||||
* `npm run docs`
 | 
			
		||||
 | 
			
		||||
Documentation will be generated in `target/docs`. Note that diagram
 | 
			
		||||
generation is dependent on having [Cairo](http://cairographics.org/download/)
 | 
			
		||||
installed; see
 | 
			
		||||
[node-canvas](https://github.com/Automattic/node-canvas#installation)'s
 | 
			
		||||
documentation for help with installation.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
# Glossary
 | 
			
		||||
 | 
			
		||||
Certain terms are used throughout Open MCT Web with consistent meanings
 | 
			
		||||
 
 | 
			
		||||
@@ -8,6 +8,9 @@
 | 
			
		||||
    "platform/commonUI/dialog",
 | 
			
		||||
    "platform/commonUI/general",
 | 
			
		||||
    "platform/commonUI/inspect",
 | 
			
		||||
    "platform/commonUI/mobile",
 | 
			
		||||
    "platform/commonUI/themes/espresso",
 | 
			
		||||
    "platform/commonUI/notification",
 | 
			
		||||
    "platform/containment",
 | 
			
		||||
    "platform/execution",
 | 
			
		||||
    "platform/telemetry",
 | 
			
		||||
@@ -18,13 +21,14 @@
 | 
			
		||||
    "platform/features/scrolling",
 | 
			
		||||
    "platform/features/events",
 | 
			
		||||
    "platform/forms",
 | 
			
		||||
    "platform/identity",
 | 
			
		||||
    "platform/persistence/local",
 | 
			
		||||
    "platform/persistence/queue",
 | 
			
		||||
    "platform/policy",
 | 
			
		||||
    "platform/entanglement",
 | 
			
		||||
    "platform/search",
 | 
			
		||||
 | 
			
		||||
    "example/imagery",
 | 
			
		||||
    "example/persistence",
 | 
			
		||||
    "example/eventGenerator",
 | 
			
		||||
    "example/generator"
 | 
			
		||||
]
 | 
			
		||||
 
 | 
			
		||||
@@ -8,3 +8,7 @@ deployment:
 | 
			
		||||
    branch: search
 | 
			
		||||
    heroku:
 | 
			
		||||
      appname: openmctweb-staging-un
 | 
			
		||||
  openmctweb-staging-deux:
 | 
			
		||||
    branch: mobile
 | 
			
		||||
    heroku:
 | 
			
		||||
      appname: openmctweb-staging-deux
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,8 @@
 | 
			
		||||
var CONSTANTS = {
 | 
			
		||||
        DIAGRAM_WIDTH: 800,
 | 
			
		||||
        DIAGRAM_HEIGHT: 500
 | 
			
		||||
    };
 | 
			
		||||
    },
 | 
			
		||||
    TOC_HEAD = "# Table of Contents";
 | 
			
		||||
 | 
			
		||||
GLOBAL.window = GLOBAL.window ||  GLOBAL; // nomnoml expects window to be defined
 | 
			
		||||
(function () {
 | 
			
		||||
@@ -44,6 +45,7 @@ GLOBAL.window = GLOBAL.window ||  GLOBAL; // nomnoml expects window to be define
 | 
			
		||||
        split = require("split"),
 | 
			
		||||
        stream = require("stream"),
 | 
			
		||||
        nomnoml = require('nomnoml'),
 | 
			
		||||
        toc = require("markdown-toc"),
 | 
			
		||||
        Canvas = require('canvas'),
 | 
			
		||||
        options = require("minimist")(process.argv.slice(2));
 | 
			
		||||
 | 
			
		||||
@@ -110,6 +112,9 @@ GLOBAL.window = GLOBAL.window ||  GLOBAL; // nomnoml expects window to be define
 | 
			
		||||
            done();
 | 
			
		||||
        };
 | 
			
		||||
        transform._flush = function (done) {
 | 
			
		||||
            // Prepend table of contents
 | 
			
		||||
            markdown =
 | 
			
		||||
                [ TOC_HEAD, toc(markdown).content, "", markdown ].join("\n");
 | 
			
		||||
            this.push("<html><body>\n");
 | 
			
		||||
            this.push(marked(markdown));
 | 
			
		||||
            this.push("\n</body></html>\n");
 | 
			
		||||
@@ -133,8 +138,8 @@ GLOBAL.window = GLOBAL.window ||  GLOBAL; // nomnoml expects window to be define
 | 
			
		||||
        customRenderer.link = function (href, title, text) {
 | 
			
		||||
            // ...but only if they look like relative paths
 | 
			
		||||
            return (href || "").indexOf(":") === -1 && href[0] !== "/" ?
 | 
			
		||||
                renderer.link(href.replace(/\.md/, ".html"), title, text) :
 | 
			
		||||
                renderer.link.apply(renderer, arguments);
 | 
			
		||||
                    renderer.link(href.replace(/\.md/, ".html"), title, text) :
 | 
			
		||||
                    renderer.link.apply(renderer, arguments);
 | 
			
		||||
        };
 | 
			
		||||
        return customRenderer;
 | 
			
		||||
    }
 | 
			
		||||
@@ -179,13 +184,17 @@ GLOBAL.window = GLOBAL.window ||  GLOBAL; // nomnoml expects window to be define
 | 
			
		||||
    glob(options['in'] + "/**/*.@(html|css|png)", {}, function (err, files) {
 | 
			
		||||
        files.forEach(function (file) {
 | 
			
		||||
            var destination = file.replace(options['in'], options.out),
 | 
			
		||||
                destPath = path.dirname(destination);
 | 
			
		||||
 | 
			
		||||
                destPath = path.dirname(destination),
 | 
			
		||||
                streamOptions = {};
 | 
			
		||||
            if (file.match(/png$/)){
 | 
			
		||||
                streamOptions.encoding = 'binary';
 | 
			
		||||
            } else {
 | 
			
		||||
                streamOptions.encoding = 'utf8';
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            mkdirp(destPath, function (err) {
 | 
			
		||||
                fs.createReadStream(file, { encoding: 'utf8' })
 | 
			
		||||
                    .pipe(fs.createWriteStream(destination, {
 | 
			
		||||
                        encoding: 'utf8'
 | 
			
		||||
                    }));
 | 
			
		||||
                fs.createReadStream(file, streamOptions)
 | 
			
		||||
                    .pipe(fs.createWriteStream(destination, streamOptions));
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    });
 | 
			
		||||
 
 | 
			
		||||
@@ -35,16 +35,26 @@ in __any of these tiers__.
 | 
			
		||||
* _DOM_: The rendered HTML document, composed from HTML templates which
 | 
			
		||||
  have been processed by AngularJS and will be updated by AngularJS
 | 
			
		||||
  to reflect changes from the presentation layer. User interactions
 | 
			
		||||
  are initiated from here and invoke behavior in the presentation layer.
 | 
			
		||||
  are initiated from here and invoke behavior in the presentation layer. HTML 
 | 
			
		||||
  templates are written in Angular’s template syntax; see the [Angular documentation on templates](https://docs.angularjs.org/guide/templates). 
 | 
			
		||||
  These describe the page as actually seen by the user. Conceptually, 
 | 
			
		||||
  stylesheets (controlling the lookandfeel of the rendered templates) belong 
 | 
			
		||||
  in this grouping as well. 
 | 
			
		||||
* [_Presentation layer_](#presentation-layer): The presentation layer
 | 
			
		||||
  is responsible for updating (and providing information to update)
 | 
			
		||||
  the displayed state of the application. The presentation layer consists
 | 
			
		||||
  primarily of _controllers_ and _directives_. The presentation layer is
 | 
			
		||||
  concerned with inspecting the information model and preparing it for
 | 
			
		||||
  display.
 | 
			
		||||
* [_Information model_](#information-model): The information model
 | 
			
		||||
  describes the state and behavior of the objects with which the user
 | 
			
		||||
  interacts.
 | 
			
		||||
* [_Information model_](#information-model): Provides a common (within Open MCT 
 | 
			
		||||
  Web) set of interfaces for dealing with “things”  domain objects  within the 
 | 
			
		||||
  system. Userfacing concerns in a Open MCT Web application are expressed as 
 | 
			
		||||
  domain objects; examples include folders (used to organize other domain 
 | 
			
		||||
  objects), layouts (used to build displays), or telemetry points (used as 
 | 
			
		||||
  handles for streams of remote measurements.) These domain objects expose a 
 | 
			
		||||
  common set of interfaces to allow reusable user interfaces to be built in the 
 | 
			
		||||
  presentation and template tiers; the specifics of these behaviors are then 
 | 
			
		||||
  mapped to interactions with underlying services. 
 | 
			
		||||
* [_Service infrastructure_](#service-infrastructure): The service
 | 
			
		||||
  infrastructure is responsible for providing the underlying general
 | 
			
		||||
  functionality needed to support the information model. This includes
 | 
			
		||||
@@ -52,7 +62,9 @@ in __any of these tiers__.
 | 
			
		||||
  back-end.
 | 
			
		||||
* _Back-end_: The back-end is out of the scope of Open MCT Web, except
 | 
			
		||||
  for the interfaces which are utilized by adapters participating in the
 | 
			
		||||
  service infrastructure.
 | 
			
		||||
  service infrastructure. Includes the underlying persistence stores, telemetry 
 | 
			
		||||
  streams, and so forth which the Open MCT Web client is being used to interact 
 | 
			
		||||
  with.
 | 
			
		||||
 | 
			
		||||
## Application Start-up
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -29,8 +29,9 @@
 | 
			
		||||
    Sections:
 | 
			
		||||
    <ul>
 | 
			
		||||
        <li><a href="api/">API</a></li>
 | 
			
		||||
        <li><a href="guide/">Developer Guide</a></li>
 | 
			
		||||
        <li><a href="architecture/">Architecture Overview</a></li>
 | 
			
		||||
        <li><a href="guide/">Developer Guide</a></li>
 | 
			
		||||
        <li><a href="tutorials/">Tutorials</a></li>
 | 
			
		||||
    </ul>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/add-task.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 23 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/bar-plot-2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 39 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/bar-plot-3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 42 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/bar-plot-4.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 30 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/bar-plot.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 34 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/chrome.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 140 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/remove-task.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 11 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/telemetry-1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 16 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/telemetry-2.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 39 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/telemetry-3.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 51 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/todo-edit.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 25 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/todo-list.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 25 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/todo-restyled.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 25 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/todo-selection.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 31 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								docs/src/tutorials/images/todo.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| 
		 After Width: | Height: | Size: 43 KiB  | 
							
								
								
									
										3055
									
								
								docs/src/tutorials/index.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -34,6 +34,10 @@
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "time",
 | 
			
		||||
                            "name": "Time"
 | 
			
		||||
                        },
 | 
			
		||||
                        {
 | 
			
		||||
                            "key": "yesterday",
 | 
			
		||||
                            "name": "Yesterday"
 | 
			
		||||
                        }
 | 
			
		||||
                    ],
 | 
			
		||||
                    "ranges": [
 | 
			
		||||
@@ -61,4 +65,4 @@
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -25,8 +25,8 @@
 | 
			
		||||
 * Module defining SinewaveTelemetryProvider. Created by vwoeltje on 11/12/14.
 | 
			
		||||
 */
 | 
			
		||||
define(
 | 
			
		||||
    ["./SinewaveTelemetry"],
 | 
			
		||||
    function (SinewaveTelemetry) {
 | 
			
		||||
    ["./SinewaveTelemetrySeries"],
 | 
			
		||||
    function (SinewaveTelemetrySeries) {
 | 
			
		||||
        "use strict";
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
@@ -45,7 +45,7 @@ define(
 | 
			
		||||
            function generateData(request) {
 | 
			
		||||
                return {
 | 
			
		||||
                    key: request.key,
 | 
			
		||||
                    telemetry: new SinewaveTelemetry(request)
 | 
			
		||||
                    telemetry: new SinewaveTelemetrySeries(request)
 | 
			
		||||
                };
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -112,4 +112,4 @@ define(
 | 
			
		||||
 | 
			
		||||
        return SinewaveTelemetryProvider;
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
);
 | 
			
		||||
 
 | 
			
		||||
@@ -29,35 +29,47 @@ define(
 | 
			
		||||
    function () {
 | 
			
		||||
        "use strict";
 | 
			
		||||
 | 
			
		||||
        var firstObservedTime = Date.now();
 | 
			
		||||
        var ONE_DAY = 60 * 60 * 24,
 | 
			
		||||
            firstObservedTime = Math.floor(Date.now() / 1000) - ONE_DAY;
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         *
 | 
			
		||||
         * @constructor
 | 
			
		||||
         */
 | 
			
		||||
        function SinewaveTelemetry(request) {
 | 
			
		||||
            var latestObservedTime = Date.now(),
 | 
			
		||||
                count = Math.floor((latestObservedTime - firstObservedTime) / 1000),
 | 
			
		||||
                period = request.period || 30,
 | 
			
		||||
                generatorData = {};
 | 
			
		||||
        function SinewaveTelemetrySeries(request) {
 | 
			
		||||
            var timeOffset = (request.domain === 'yesterday') ? ONE_DAY : 0,
 | 
			
		||||
                latestTime = Math.floor(Date.now() / 1000) - timeOffset,
 | 
			
		||||
                firstTime = firstObservedTime - timeOffset,
 | 
			
		||||
                endTime = (request.end !== undefined) ?
 | 
			
		||||
                        Math.floor(request.end / 1000) : latestTime,
 | 
			
		||||
                count = Math.min(endTime, latestTime) - firstTime,
 | 
			
		||||
                period = +request.period || 30,
 | 
			
		||||
                generatorData = {},
 | 
			
		||||
                requestStart = (request.start === undefined) ? firstTime :
 | 
			
		||||
                        Math.max(Math.floor(request.start / 1000), firstTime),
 | 
			
		||||
                offset = requestStart - firstTime;
 | 
			
		||||
 | 
			
		||||
            if (request.size !== undefined) {
 | 
			
		||||
                offset = Math.max(offset, count - request.size);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            generatorData.getPointCount = function () {
 | 
			
		||||
                return count;
 | 
			
		||||
                return count - offset;
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            generatorData.getDomainValue = function (i, domain) {
 | 
			
		||||
                return i * 1000 +
 | 
			
		||||
                        (domain !== 'delta' ? firstObservedTime : 0);
 | 
			
		||||
                return (i + offset) * 1000 + firstTime * 1000 -
 | 
			
		||||
                    (domain === 'yesterday' ? ONE_DAY : 0);
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            generatorData.getRangeValue = function (i, range) {
 | 
			
		||||
                range = range || "sin";
 | 
			
		||||
                return Math[range](i * Math.PI * 2 / period);
 | 
			
		||||
                return Math[range]((i + offset) * Math.PI * 2 / period);
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            return generatorData;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return SinewaveTelemetry;
 | 
			
		||||
        return SinewaveTelemetrySeries;
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										12
									
								
								example/identity/bundle.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,12 @@
 | 
			
		||||
{
 | 
			
		||||
    "extensions": {
 | 
			
		||||
        "components": [
 | 
			
		||||
            {
 | 
			
		||||
                "implementation": "ExampleIdentityService.js",
 | 
			
		||||
                "provides": "identityService",
 | 
			
		||||
                "type": "provider",
 | 
			
		||||
                "depends": [ "dialogService" ]
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										75
									
								
								example/identity/src/ExampleIdentityService.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,75 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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*/
 | 
			
		||||
 | 
			
		||||
define(
 | 
			
		||||
    function () {
 | 
			
		||||
        "use strict";
 | 
			
		||||
 | 
			
		||||
        var DEFAULT_IDENTITY = { key: "user", name: "Example User" },
 | 
			
		||||
            DIALOG_STRUCTURE = {
 | 
			
		||||
                name: "Identify Yourself",
 | 
			
		||||
                sections: [{ rows: [
 | 
			
		||||
                    {
 | 
			
		||||
                        name: "User ID",
 | 
			
		||||
                        control: "textfield",
 | 
			
		||||
                        key: "key",
 | 
			
		||||
                        required: true
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        name: "Human name",
 | 
			
		||||
                        control: "textfield",
 | 
			
		||||
                        key: "name",
 | 
			
		||||
                        required: true
 | 
			
		||||
                    }
 | 
			
		||||
                ]}]
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Example implementation of an identity service. This prompts the
 | 
			
		||||
         * user to enter a name and user ID; in a more realistic
 | 
			
		||||
         * implementation, this would be read from a server, possibly
 | 
			
		||||
         * prompting for a user name and password (or similar) as
 | 
			
		||||
         * appropriate.
 | 
			
		||||
         *
 | 
			
		||||
         * @implements {IdentityService}
 | 
			
		||||
         * @memberof platform/identity
 | 
			
		||||
         */
 | 
			
		||||
        function ExampleIdentityProvider(dialogService) {
 | 
			
		||||
            // Handle rejected dialog messages by treating the
 | 
			
		||||
            // current user as undefined.
 | 
			
		||||
            function echo(v) { return v; }
 | 
			
		||||
            function giveUndefined() { return undefined; }
 | 
			
		||||
 | 
			
		||||
            this.userPromise =
 | 
			
		||||
                dialogService.getUserInput(DIALOG_STRUCTURE, DEFAULT_IDENTITY)
 | 
			
		||||
                    .then(echo, giveUndefined);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ExampleIdentityProvider.prototype.getUser = function () {
 | 
			
		||||
            return this.userPromise;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return ExampleIdentityProvider;
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
@@ -1,86 +0,0 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT Web, Copyright (c) 2014-2015, United States Government
 | 
			
		||||
 * as represented by the Administrator of the National Aeronautics and Space
 | 
			
		||||
 * Administration. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web is licensed under the Apache License, Version 2.0 (the
 | 
			
		||||
 * "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0.
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
			
		||||
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
			
		||||
 * License for the specific language governing permissions and limitations
 | 
			
		||||
 * under the License.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web includes source code licensed under additional open source
 | 
			
		||||
 * licenses. See the Open Source Licenses file (LICENSES.md) included with
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
 | 
			
		||||
/*global define,localStorage*/
 | 
			
		||||
/**
 | 
			
		||||
 * Stubbed implementation of a persistence provider,
 | 
			
		||||
 * to permit objects to be created, saved, etc.
 | 
			
		||||
 */
 | 
			
		||||
define(
 | 
			
		||||
    [],
 | 
			
		||||
    function () {
 | 
			
		||||
        'use strict';
 | 
			
		||||
 | 
			
		||||
        function BrowserPersistenceProvider($q, SPACE) {
 | 
			
		||||
            var spaces = SPACE ? [SPACE] : [],
 | 
			
		||||
                promises = {
 | 
			
		||||
                    as: function (value) {
 | 
			
		||||
                        return $q.when(value);
 | 
			
		||||
                    }
 | 
			
		||||
                },
 | 
			
		||||
                provider;
 | 
			
		||||
 | 
			
		||||
            function setValue(key, value) {
 | 
			
		||||
                localStorage[key] = JSON.stringify(value);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            function getValue(key) {
 | 
			
		||||
                if (localStorage[key]) {
 | 
			
		||||
                    return JSON.parse(localStorage[key]);
 | 
			
		||||
                }
 | 
			
		||||
                return {};
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            provider = {
 | 
			
		||||
                listSpaces: function () {
 | 
			
		||||
                    return promises.as(spaces);
 | 
			
		||||
                },
 | 
			
		||||
                listObjects: function (space) {
 | 
			
		||||
                    var space_obj = getValue(space);
 | 
			
		||||
                    return promises.as(Object.keys(space_obj));
 | 
			
		||||
                },
 | 
			
		||||
                createObject: function (space, key, value) {
 | 
			
		||||
                    var space_obj = getValue(space);
 | 
			
		||||
                    space_obj[key] = value;
 | 
			
		||||
                    setValue(space, space_obj);
 | 
			
		||||
                    return promises.as(true);
 | 
			
		||||
                },
 | 
			
		||||
                readObject: function (space, key) {
 | 
			
		||||
                    var space_obj = getValue(space);
 | 
			
		||||
                    return promises.as(space_obj[key]);
 | 
			
		||||
                },
 | 
			
		||||
                deleteObject: function (space, key, value) {
 | 
			
		||||
                    var space_obj = getValue(space);
 | 
			
		||||
                    delete space_obj[key];
 | 
			
		||||
                    return promises.as(true);
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            provider.updateObject = provider.createObject;
 | 
			
		||||
 | 
			
		||||
            return provider;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return BrowserPersistenceProvider;
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										47
									
								
								example/notifications/bundle.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,47 @@
 | 
			
		||||
{
 | 
			
		||||
    "extensions": {
 | 
			
		||||
        "templates": [
 | 
			
		||||
            {
 | 
			
		||||
                "key": "dialogLaunchTemplate",
 | 
			
		||||
                "templateUrl": "dialog-launch.html"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "notificationLaunchTemplate",
 | 
			
		||||
                "templateUrl": "notification-launch.html"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "controllers": [
 | 
			
		||||
            {
 | 
			
		||||
                "key": "DialogLaunchController",
 | 
			
		||||
                "implementation": "DialogLaunchController.js",
 | 
			
		||||
                "depends": [
 | 
			
		||||
                    "$scope",
 | 
			
		||||
                    "$timeout",
 | 
			
		||||
                    "$log",
 | 
			
		||||
                    "dialogService",
 | 
			
		||||
                    "notificationService"
 | 
			
		||||
                ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "NotificationLaunchController",
 | 
			
		||||
                "implementation": "NotificationLaunchController.js",
 | 
			
		||||
                "depends": [
 | 
			
		||||
                    "$scope",
 | 
			
		||||
                    "$timeout",
 | 
			
		||||
                    "$log",
 | 
			
		||||
                    "notificationService"
 | 
			
		||||
                ]
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "indicators": [
 | 
			
		||||
            {
 | 
			
		||||
                "implementation": "DialogLaunchIndicator.js",
 | 
			
		||||
                "priority": "fallback"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "implementation": "NotificationLaunchIndicator.js",
 | 
			
		||||
                "priority": "fallback"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								example/notifications/res/dialog-launch.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,10 @@
 | 
			
		||||
<span class="status block ok" ng-controller="DialogLaunchController">
 | 
			
		||||
    <span class="ui-symbol status-indicator"></span>
 | 
			
		||||
    <span class="label">
 | 
			
		||||
        <a ng-click="launchProgress(true)">Known</a> |
 | 
			
		||||
        <a ng-click="launchProgress(false)">Unknown</a> |
 | 
			
		||||
        <a ng-click="launchError()">Error</a> |
 | 
			
		||||
        <a ng-click="launchInfo()">Info</a>
 | 
			
		||||
    </span>
 | 
			
		||||
    <span class="count">Dialogs</span>
 | 
			
		||||
</span>
 | 
			
		||||
							
								
								
									
										10
									
								
								example/notifications/res/notification-launch.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,10 @@
 | 
			
		||||
<span class="status block ok" ng-controller="NotificationLaunchController">
 | 
			
		||||
    <span class="ui-symbol status-indicator"></span>
 | 
			
		||||
    <span class="label">
 | 
			
		||||
        <a ng-click="newInfo()">Success</a> |
 | 
			
		||||
        <a ng-click="newError()">Error</a> |
 | 
			
		||||
        <a ng-click="newAlert()">Alert</a> |
 | 
			
		||||
        <a ng-click="newProgress()">Progress</a>
 | 
			
		||||
    </span>
 | 
			
		||||
    <span class="count">Notifications</span>
 | 
			
		||||
</span>
 | 
			
		||||
							
								
								
									
										150
									
								
								example/notifications/src/DialogLaunchController.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,150 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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*/
 | 
			
		||||
 | 
			
		||||
define(
 | 
			
		||||
    [],
 | 
			
		||||
    function () {
 | 
			
		||||
        "use strict";
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * A controller for the dialog launch view. This view allows manual
 | 
			
		||||
         * launching of dialogs for demonstration and testing purposes. It
 | 
			
		||||
         * also demonstrates the use of the DialogService.
 | 
			
		||||
         * @param $scope
 | 
			
		||||
         * @param $timeout
 | 
			
		||||
         * @param $log
 | 
			
		||||
         * @param dialogService
 | 
			
		||||
         * @param notificationService
 | 
			
		||||
         * @constructor
 | 
			
		||||
         */
 | 
			
		||||
        function DialogLaunchController($scope, $timeout, $log, dialogService, notificationService) {
 | 
			
		||||
 | 
			
		||||
            /*
 | 
			
		||||
            Demonstrates launching a progress dialog and updating it
 | 
			
		||||
             periodically with the progress of an ongoing process.
 | 
			
		||||
             */
 | 
			
		||||
            $scope.launchProgress = function (knownProgress) {
 | 
			
		||||
                var model = {
 | 
			
		||||
                    title: "Progress Dialog Example",
 | 
			
		||||
                    progress: 0,
 | 
			
		||||
                    hint: "Do not navigate away from this page or close this browser tab while this operation is in progress.",
 | 
			
		||||
                    actionText: "Calculating...",
 | 
			
		||||
                    unknownProgress: !knownProgress,
 | 
			
		||||
                    unknownDuration: false,
 | 
			
		||||
                    severity: "info",
 | 
			
		||||
                    options: [
 | 
			
		||||
                        {
 | 
			
		||||
                            label: "Cancel Operation",
 | 
			
		||||
                            callback: function () {
 | 
			
		||||
                                $log.debug("Operation cancelled");
 | 
			
		||||
                                dialogService.dismiss();
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        {
 | 
			
		||||
                            label: "Do something else...",
 | 
			
		||||
                            callback: function () {
 | 
			
		||||
                                $log.debug("Something else pressed");
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    ]
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                function incrementProgress() {
 | 
			
		||||
                    model.progress = Math.min(100, Math.floor(model.progress + Math.random() * 30));
 | 
			
		||||
                    model.progressText = ["Estimated time remaining: about ", 60 - Math.floor((model.progress / 100) * 60), " seconds"].join(" ");
 | 
			
		||||
                    if (model.progress < 100) {
 | 
			
		||||
                        $timeout(incrementProgress, 1000);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if (dialogService.showBlockingMessage(model)) {
 | 
			
		||||
                    //Do processing here
 | 
			
		||||
                    model.actionText = "Processing 100 objects...";
 | 
			
		||||
                    if (knownProgress) {
 | 
			
		||||
                        $timeout(incrementProgress, 1000);
 | 
			
		||||
                    }
 | 
			
		||||
                } else {
 | 
			
		||||
                    $log.error("Could not display modal dialog");
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            /*
 | 
			
		||||
             Demonstrates launching an error dialog
 | 
			
		||||
             */
 | 
			
		||||
            $scope.launchError = function () {
 | 
			
		||||
                var model = {
 | 
			
		||||
                    title: "Error Dialog Example",
 | 
			
		||||
                    actionText: "Something happened, and it was not good.",
 | 
			
		||||
                    severity: "error",
 | 
			
		||||
                    options: [
 | 
			
		||||
                        {
 | 
			
		||||
                            label: "Try Again",
 | 
			
		||||
                            callback: function () {
 | 
			
		||||
                                $log.debug("Try Again Pressed");
 | 
			
		||||
                                dialogService.dismiss();
 | 
			
		||||
                            }
 | 
			
		||||
                        },
 | 
			
		||||
                        {
 | 
			
		||||
                            label: "Cancel",
 | 
			
		||||
                            callback: function () {
 | 
			
		||||
                                $log.debug("Cancel Pressed");
 | 
			
		||||
                                dialogService.dismiss();
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    ]
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                if (!dialogService.showBlockingMessage(model)) {
 | 
			
		||||
                    $log.error("Could not display modal dialog");
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            /*
 | 
			
		||||
             Demonstrates launching an error dialog
 | 
			
		||||
             */
 | 
			
		||||
            $scope.launchInfo = function () {
 | 
			
		||||
                var model = {
 | 
			
		||||
                    title: "Info Dialog Example",
 | 
			
		||||
                    actionText: "This is an example of a blocking info" +
 | 
			
		||||
                    " dialog. This dialog can be used to draw the user's" +
 | 
			
		||||
                    " attention to an event.",
 | 
			
		||||
                    severity: "info",
 | 
			
		||||
                    primaryOption: {
 | 
			
		||||
                            label: "OK",
 | 
			
		||||
                            callback: function () {
 | 
			
		||||
                                $log.debug("OK Pressed");
 | 
			
		||||
                                dialogService.dismiss();
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                if (!dialogService.showBlockingMessage(model)) {
 | 
			
		||||
                    $log.error("Could not display modal dialog");
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        return DialogLaunchController;
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										56
									
								
								example/notifications/src/DialogLaunchIndicator.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,56 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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,window*/
 | 
			
		||||
 | 
			
		||||
define(
 | 
			
		||||
    [],
 | 
			
		||||
    function () {
 | 
			
		||||
        "use strict";
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * A tool for manually invoking dialogs. When included this
 | 
			
		||||
         * indicator will allow for dialogs of different types to be
 | 
			
		||||
         * launched for demonstration and testing purposes.
 | 
			
		||||
         * @constructor
 | 
			
		||||
         */
 | 
			
		||||
        function DialogLaunchIndicator() {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        DialogLaunchIndicator.template = 'dialogLaunchTemplate';
 | 
			
		||||
 | 
			
		||||
        DialogLaunchIndicator.prototype.getGlyph = function () {
 | 
			
		||||
            return "i";
 | 
			
		||||
        };
 | 
			
		||||
        DialogLaunchIndicator.prototype.getGlyphClass = function () {
 | 
			
		||||
            return 'caution';
 | 
			
		||||
        };
 | 
			
		||||
        DialogLaunchIndicator.prototype.getText = function () {
 | 
			
		||||
            return "Launch test dialog";
 | 
			
		||||
        };
 | 
			
		||||
        DialogLaunchIndicator.prototype.getDescription = function () {
 | 
			
		||||
            return "Launch test dialog";
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return DialogLaunchIndicator;
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										172
									
								
								example/notifications/src/NotificationLaunchController.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,172 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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*/
 | 
			
		||||
 | 
			
		||||
define(
 | 
			
		||||
    [],
 | 
			
		||||
    function () {
 | 
			
		||||
        "use strict";
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Allows launching of notification messages for the purposes of
 | 
			
		||||
         * demonstration and testing. Also demonstrates use of
 | 
			
		||||
         * the NotificationService. Notifications are non-blocking messages that
 | 
			
		||||
         * appear at the bottom of the screen to inform the user of events
 | 
			
		||||
         * in a non-intrusive way. For more information see the
 | 
			
		||||
         * {@link NotificationService}
 | 
			
		||||
         * @param $scope
 | 
			
		||||
         * @param $timeout
 | 
			
		||||
         * @param $log
 | 
			
		||||
         * @param notificationService
 | 
			
		||||
         * @constructor
 | 
			
		||||
         */
 | 
			
		||||
        function NotificationLaunchController($scope, $timeout, $log, notificationService) {
 | 
			
		||||
            var messageCounter = 1;
 | 
			
		||||
 | 
			
		||||
            function getExampleActionText() {
 | 
			
		||||
                var actionTexts = [
 | 
			
		||||
                    "Adipiscing turpis mauris in enim elementu hac, enim aliquam etiam.",
 | 
			
		||||
                    "Eros turpis, pulvinar turpis eros eu",
 | 
			
		||||
                    "Lundium nascetur a, lectus montes ac, parturient in natoque, duis risus risus pulvinar pid rhoncus, habitasse auctor natoque!"
 | 
			
		||||
                ];
 | 
			
		||||
                return actionTexts[Math.floor(Math.random()*3)];
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            function getExampleActions() {
 | 
			
		||||
                var actions = [
 | 
			
		||||
                    {
 | 
			
		||||
                        label: "Try Again",
 | 
			
		||||
                        callback: function () {
 | 
			
		||||
                            $log.debug("Try Again pressed");
 | 
			
		||||
                        }
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        label: "Remove",
 | 
			
		||||
                        callback: function () {
 | 
			
		||||
                            $log.debug("Remove pressed");
 | 
			
		||||
                        }
 | 
			
		||||
                    },
 | 
			
		||||
                    {
 | 
			
		||||
                        label: "Cancel",
 | 
			
		||||
                        callback: function () {
 | 
			
		||||
                            $log.debug("Cancel pressed");
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                ];
 | 
			
		||||
 | 
			
		||||
                // Randomly remove some actions off the top; leave at least one
 | 
			
		||||
                actions.splice(0,Math.floor(Math.random() * actions.length));
 | 
			
		||||
 | 
			
		||||
                return actions;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            function getExampleSeverity() {
 | 
			
		||||
                var severities = [
 | 
			
		||||
                    "info",
 | 
			
		||||
                    "alert",
 | 
			
		||||
                    "error"
 | 
			
		||||
                ];
 | 
			
		||||
                return severities[Math.floor(Math.random() * severities.length)];
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
             * Launch a new notification with a severity level of 'Error'.
 | 
			
		||||
             */
 | 
			
		||||
            $scope.newError = function(){
 | 
			
		||||
 | 
			
		||||
                notificationService.notify({
 | 
			
		||||
                    title: "Example error notification " + messageCounter++,
 | 
			
		||||
                    hint: "An error has occurred",
 | 
			
		||||
                    severity: "error",
 | 
			
		||||
                    primaryOption: {
 | 
			
		||||
                        label: 'Retry',
 | 
			
		||||
                        callback: function() {
 | 
			
		||||
                            $log.info('Retry clicked');
 | 
			
		||||
                        }
 | 
			
		||||
                    },
 | 
			
		||||
                    options: getExampleActions()});
 | 
			
		||||
            };
 | 
			
		||||
            /**
 | 
			
		||||
             * Launch a new notification with a severity of 'Alert'.
 | 
			
		||||
             */
 | 
			
		||||
            $scope.newAlert = function(){
 | 
			
		||||
 | 
			
		||||
                notificationService.notify({
 | 
			
		||||
                    title: "Alert notification " + (messageCounter++),
 | 
			
		||||
                    hint: "This is an alert message",
 | 
			
		||||
                    severity: "alert",
 | 
			
		||||
                    primaryOption: {
 | 
			
		||||
                        label: 'Retry',
 | 
			
		||||
                        callback: function() {
 | 
			
		||||
                            $log.info('Retry clicked');
 | 
			
		||||
                        }
 | 
			
		||||
                    },
 | 
			
		||||
                    options: getExampleActions()});
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
             * Launch a new notification with a progress bar that is updated
 | 
			
		||||
             * periodically, tracking an ongoing process.
 | 
			
		||||
             */
 | 
			
		||||
            $scope.newProgress = function(){
 | 
			
		||||
 | 
			
		||||
                var notificationModel = {
 | 
			
		||||
                    title: "Progress notification example",
 | 
			
		||||
                    severity: "info",
 | 
			
		||||
                    progress: 0,
 | 
			
		||||
                    actionText: getExampleActionText(),
 | 
			
		||||
                    unknownProgress: false
 | 
			
		||||
                };
 | 
			
		||||
 | 
			
		||||
                /**
 | 
			
		||||
                 * Simulate an ongoing process and update the progress bar.
 | 
			
		||||
                 * @param notification
 | 
			
		||||
                 */
 | 
			
		||||
                function incrementProgress(notificationModel) {
 | 
			
		||||
                    notificationModel.progress = Math.min(100, Math.floor(notificationModel.progress + Math.random() * 30));
 | 
			
		||||
                    notificationModel.progressText = ["Estimated time" +
 | 
			
		||||
                    " remaining:" +
 | 
			
		||||
                    " about ", 60 - Math.floor((notificationModel.progress / 100) * 60), " seconds"].join(" ");
 | 
			
		||||
                    if (notificationModel.progress < 100) {
 | 
			
		||||
                        $timeout(function(){incrementProgress(notificationModel);}, 1000);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                notificationService.notify(notificationModel);
 | 
			
		||||
                incrementProgress(notificationModel);
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
             * Launch a new notification with severity level of INFO.
 | 
			
		||||
             */
 | 
			
		||||
            $scope.newInfo = function(){
 | 
			
		||||
 | 
			
		||||
                notificationService.info({
 | 
			
		||||
                    title: "Example Info notification " + messageCounter++
 | 
			
		||||
                });
 | 
			
		||||
            };
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        return NotificationLaunchController;
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
@@ -19,19 +19,32 @@
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
@import "compass";
 | 
			
		||||
@import "compass/css3";
 | 
			
		||||
@import "compass/css3/border-radius";
 | 
			
		||||
@import "compass/css3/opacity";
 | 
			
		||||
@import "compass/utilities";
 | 
			
		||||
/*global define,window*/
 | 
			
		||||
 | 
			
		||||
@import "constants";
 | 
			
		||||
@import "mixins";
 | 
			
		||||
@import "forms/mixins";
 | 
			
		||||
@import "forms/elems";
 | 
			
		||||
@import "forms/textarea";
 | 
			
		||||
@import "forms/text-input";
 | 
			
		||||
@import "forms/selects";
 | 
			
		||||
@import "forms/channel-selector";
 | 
			
		||||
@import "forms/datetime";
 | 
			
		||||
//@import "forms/filter";
 | 
			
		||||
define(
 | 
			
		||||
    [],
 | 
			
		||||
    function () {
 | 
			
		||||
        "use strict";
 | 
			
		||||
 | 
			
		||||
        function NotificationLaunchIndicator() {
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        NotificationLaunchIndicator.template = 'notificationLaunchTemplate';
 | 
			
		||||
 | 
			
		||||
        NotificationLaunchIndicator.prototype.getGlyph = function () {
 | 
			
		||||
            return "i";
 | 
			
		||||
        };
 | 
			
		||||
        NotificationLaunchIndicator.prototype.getGlyphClass = function () {
 | 
			
		||||
            return 'caution';
 | 
			
		||||
        };
 | 
			
		||||
        NotificationLaunchIndicator.prototype.getText = function () {
 | 
			
		||||
            return "Launch notification";
 | 
			
		||||
        };
 | 
			
		||||
        NotificationLaunchIndicator.prototype.getDescription = function () {
 | 
			
		||||
            return "Launch notification";
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return NotificationLaunchIndicator;
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
@@ -4,7 +4,11 @@
 | 
			
		||||
            {
 | 
			
		||||
                "implementation": "WatchIndicator.js",
 | 
			
		||||
                "depends": ["$interval", "$rootScope"]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "implementation": "DigestIndicator.js",
 | 
			
		||||
                "depends": ["$interval", "$rootScope"]
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										77
									
								
								example/profiling/src/DigestIndicator.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,77 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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*/
 | 
			
		||||
 | 
			
		||||
define(
 | 
			
		||||
    [],
 | 
			
		||||
    function () {
 | 
			
		||||
        "use strict";
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Displays the number of digests that have occurred since the
 | 
			
		||||
         * indicator was first instantiated.
 | 
			
		||||
         * @constructor
 | 
			
		||||
         * @param $interval Angular's $interval
 | 
			
		||||
         * @implements {Indicator}
 | 
			
		||||
         */
 | 
			
		||||
        function DigestIndicator($interval, $rootScope) {
 | 
			
		||||
            var digests = 0,
 | 
			
		||||
                displayed = 0,
 | 
			
		||||
                start = Date.now();
 | 
			
		||||
 | 
			
		||||
            function update() {
 | 
			
		||||
                var secs = (Date.now() - start) / 1000;
 | 
			
		||||
                displayed = Math.round(digests / secs);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            function increment() {
 | 
			
		||||
                digests += 1;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            $rootScope.$watch(increment);
 | 
			
		||||
 | 
			
		||||
            // Update state every second
 | 
			
		||||
            $interval(update, 1000);
 | 
			
		||||
 | 
			
		||||
            // Provide initial state, too
 | 
			
		||||
            update();
 | 
			
		||||
 | 
			
		||||
            return {
 | 
			
		||||
                getGlyph: function () {
 | 
			
		||||
                    return ".";
 | 
			
		||||
                },
 | 
			
		||||
                getGlyphClass: function () {
 | 
			
		||||
                    return undefined;
 | 
			
		||||
                },
 | 
			
		||||
                getText: function () {
 | 
			
		||||
                    return displayed + " digests/sec";
 | 
			
		||||
                },
 | 
			
		||||
                getDescription: function () {
 | 
			
		||||
                    return "";
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return DigestIndicator;
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
@@ -23,6 +23,7 @@
 | 
			
		||||
<html>
 | 
			
		||||
<head lang="en">
 | 
			
		||||
    <meta charset="UTF-8">
 | 
			
		||||
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
 | 
			
		||||
    <title></title>
 | 
			
		||||
    <script type="text/javascript"
 | 
			
		||||
            src="platform/framework/lib/require.js"
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,8 @@
 | 
			
		||||
    "split": "^1.0.0",
 | 
			
		||||
    "mkdirp": "^0.5.1",
 | 
			
		||||
    "nomnoml": "^0.0.3",
 | 
			
		||||
    "canvas": "^1.2.7"
 | 
			
		||||
    "canvas": "^1.2.7",
 | 
			
		||||
    "markdown-toc": "^0.11.7"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "start": "node app.js",
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,9 @@
 | 
			
		||||
{
 | 
			
		||||
    "configuration": {
 | 
			
		||||
        "paths": {
 | 
			
		||||
            "uuid": "uuid"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "extensions": {
 | 
			
		||||
        "routes": [
 | 
			
		||||
            {
 | 
			
		||||
@@ -16,7 +21,20 @@
 | 
			
		||||
            {
 | 
			
		||||
                "key": "BrowseController",
 | 
			
		||||
                "implementation": "BrowseController.js",
 | 
			
		||||
                "depends": [ "$scope", "$route", "$location", "objectService", "navigationService", "urlService" ]
 | 
			
		||||
                "depends": [
 | 
			
		||||
                    "$scope",
 | 
			
		||||
                    "$route",
 | 
			
		||||
                    "$location",
 | 
			
		||||
                    "objectService",
 | 
			
		||||
                    "navigationService",
 | 
			
		||||
                    "urlService"
 | 
			
		||||
                ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "BrowseTreeController",
 | 
			
		||||
                "implementation": "BrowseTreeController.js",
 | 
			
		||||
                "priority": "preferred",
 | 
			
		||||
                "depends": [ "$scope", "agentService" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "BrowseObjectController",
 | 
			
		||||
@@ -25,17 +43,17 @@
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "CreateMenuController",
 | 
			
		||||
                "implementation": "creation/CreateMenuController",
 | 
			
		||||
                "implementation": "creation/CreateMenuController.js",
 | 
			
		||||
                "depends": [ "$scope" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "LocatorController",
 | 
			
		||||
                "implementation": "creation/LocatorController",
 | 
			
		||||
                "depends": [ "$scope" ]
 | 
			
		||||
                "implementation": "creation/LocatorController.js",
 | 
			
		||||
                "depends": [ "$scope", "$timeout" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "MenuArrowController",
 | 
			
		||||
                "implementation": "MenuArrowController",
 | 
			
		||||
                "implementation": "MenuArrowController.js",
 | 
			
		||||
                "depends": [ "$scope" ]
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
@@ -45,12 +63,6 @@
 | 
			
		||||
                "templateUrl": "templates/create/locator.html"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "templates": [
 | 
			
		||||
            {
 | 
			
		||||
                "key": "topbar-browse",
 | 
			
		||||
                "templateUrl": "templates/topbar-browse.html"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "representations": [
 | 
			
		||||
            {
 | 
			
		||||
                "key": "browse-object",
 | 
			
		||||
@@ -82,17 +94,17 @@
 | 
			
		||||
                "templateUrl": "templates/menu-arrow.html",
 | 
			
		||||
                "uses": [ "action" ],
 | 
			
		||||
                "gestures": [ "menu" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "back-arrow",
 | 
			
		||||
                "uses": [ "context" ],
 | 
			
		||||
                "templateUrl": "templates/back-arrow.html"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "services": [
 | 
			
		||||
            {
 | 
			
		||||
                "key": "navigationService",
 | 
			
		||||
                "implementation": "navigation/NavigationService.js"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "creationService",
 | 
			
		||||
                "implementation": "creation/CreationService.js",
 | 
			
		||||
                "depends": [ "persistenceService", "$q", "$log" ]
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "actions": [
 | 
			
		||||
@@ -110,7 +122,7 @@
 | 
			
		||||
                "depends": [ "urlService", "$window" ],
 | 
			
		||||
                "group": "windowing",
 | 
			
		||||
                "glyph": "y",
 | 
			
		||||
			  	"priority": "preferred"
 | 
			
		||||
                "priority": "preferred"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "fullscreen",
 | 
			
		||||
@@ -118,7 +130,7 @@
 | 
			
		||||
                "category": "view-control",
 | 
			
		||||
                "group": "windowing",
 | 
			
		||||
                "glyph": "z",
 | 
			
		||||
			  	"priority": "default"
 | 
			
		||||
                "priority": "default"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "views": [
 | 
			
		||||
@@ -141,6 +153,13 @@
 | 
			
		||||
                "type": "provider",
 | 
			
		||||
                "implementation": "creation/CreateActionProvider.js",
 | 
			
		||||
                "depends": [ "typeService", "dialogService", "creationService", "policyService" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "CreationService",
 | 
			
		||||
                "provides": "creationService",
 | 
			
		||||
                "type": "provider",
 | 
			
		||||
                "implementation": "creation/CreationService.js",
 | 
			
		||||
                "depends": [ "persistenceService", "now", "$q", "$log" ]
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "runs": [
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										30
									
								
								platform/commonUI/browse/res/templates/back-arrow.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.
 | 
			
		||||
-->
 | 
			
		||||
 | 
			
		||||
<!-- Back Arrow Icon used on mobile-->
 | 
			
		||||
<a
 | 
			
		||||
   class='type-icon icon ui-symbol s-back'
 | 
			
		||||
   ng-show="context.getPath().length > 2"
 | 
			
		||||
   ng-click="context.getParent().getCapability('action').perform('navigate')">
 | 
			
		||||
    {
 | 
			
		||||
</a>
 | 
			
		||||
 | 
			
		||||
@@ -20,28 +20,30 @@
 | 
			
		||||
 at runtime from the About dialog for additional information.
 | 
			
		||||
-->
 | 
			
		||||
<span ng-controller="BrowseObjectController">
 | 
			
		||||
    <div class="object-browse-bar bar abs">
 | 
			
		||||
        <div class="items-select left abs">
 | 
			
		||||
    <div class="object-browse-bar bar l-flex">
 | 
			
		||||
        <div class="items-select left">
 | 
			
		||||
            <mct-representation key="'back-arrow'"
 | 
			
		||||
                                mct-object="domainObject"
 | 
			
		||||
                                class="l-back"></mct-representation>
 | 
			
		||||
            <mct-representation key="'object-header'" mct-object="domainObject">
 | 
			
		||||
            </mct-representation>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="btn-bar right abs">
 | 
			
		||||
            <mct-representation key="'action-group'"
 | 
			
		||||
                                mct-object="domainObject"
 | 
			
		||||
                                parameters="{ category: 'view-control' }">
 | 
			
		||||
            </mct-representation>
 | 
			
		||||
 | 
			
		||||
        <div class="btn-bar right">
 | 
			
		||||
            <mct-representation key="'switcher'"
 | 
			
		||||
                                mct-object="domainObject"
 | 
			
		||||
                                ng-model="representation">
 | 
			
		||||
            </mct-representation>
 | 
			
		||||
            <!-- Temporarily, on mobile, the action buttons are hidden-->
 | 
			
		||||
            <mct-representation key="'action-group'"
 | 
			
		||||
                                mct-object="domainObject"
 | 
			
		||||
                                parameters="{ category: 'view-control' }"
 | 
			
		||||
                                class="mobile-hide">
 | 
			
		||||
            </mct-representation>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class='object-holder abs vscroll'>
 | 
			
		||||
        <mct-representation key="representation.selected.key"
 | 
			
		||||
                            mct-object="representation.selected.key && domainObject">
 | 
			
		||||
        </mct-representation>
 | 
			
		||||
    </div>
 | 
			
		||||
    <mct-representation key="representation.selected.key"
 | 
			
		||||
                        mct-object="representation.selected.key && domainObject"
 | 
			
		||||
                        class="abs object-holder">
 | 
			
		||||
    </mct-representation>
 | 
			
		||||
</span>
 | 
			
		||||
 
 | 
			
		||||
@@ -19,38 +19,51 @@
 | 
			
		||||
 this source code distribution or the Licensing information page available
 | 
			
		||||
 at runtime from the About dialog for additional information.
 | 
			
		||||
-->
 | 
			
		||||
<div content="jquery-wrapper" class="abs holder-all browse-mode">
 | 
			
		||||
 | 
			
		||||
<div class="abs holder-all browse-mode" ng-controller="BrowseController">
 | 
			
		||||
    <mct-include key="'topbar-browse'"></mct-include>
 | 
			
		||||
    <div class="holder browse-area s-browse-area abs" ng-controller="BrowseController">
 | 
			
		||||
    <div class="holder browse-area s-browse-area abs browse-wrapper"
 | 
			
		||||
         ng-controller="BrowseTreeController as tree"
 | 
			
		||||
         ng-class="tree.visible() ? 'browse-showtree' : 'browse-hidetree'">
 | 
			
		||||
        <mct-split-pane class='contents abs' anchor='left'>
 | 
			
		||||
            <div
 | 
			
		||||
                class='split-pane-component treeview pane left'
 | 
			
		||||
                >
 | 
			
		||||
                <mct-representation key="'create-button'" mct-object="navigatedObject">
 | 
			
		||||
                </mct-representation>
 | 
			
		||||
                <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-object="domainObject"
 | 
			
		||||
                                        ng-model="treeModel">
 | 
			
		||||
            <div class='split-pane-component treeview pane left'>
 | 
			
		||||
                <div class="holder abs l-mobile">
 | 
			
		||||
                    <mct-representation key="'create-button'"
 | 
			
		||||
                                        mct-object="navigatedObject"
 | 
			
		||||
                                        mct-device="desktop">
 | 
			
		||||
                    </mct-representation>
 | 
			
		||||
                    <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='tree-holder abs mobile-tree-holder'
 | 
			
		||||
                         ng-hide="treeModel.search">
 | 
			
		||||
                        <mct-representation key="'tree'"
 | 
			
		||||
                                            mct-object="domainObject"
 | 
			
		||||
                                            parameters="tree"
 | 
			
		||||
                                            ng-model="treeModel">
 | 
			
		||||
                        </mct-representation>
 | 
			
		||||
                    </div>
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <mct-splitter></mct-splitter>
 | 
			
		||||
            <div class='split-pane-component items pane'>
 | 
			
		||||
                <div class='holder abs' id='content-area'>
 | 
			
		||||
                    <mct-representation mct-object="navigatedObject" key="'browse-object'">
 | 
			
		||||
 | 
			
		||||
            <mct-splitter class="mobile-hide"></mct-splitter>
 | 
			
		||||
 | 
			
		||||
            <div class='split-pane-component items pane right-repr'>
 | 
			
		||||
                <div class='holder abs l-mobile' id='content-area'>
 | 
			
		||||
                    <mct-representation mct-object="navigatedObject"
 | 
			
		||||
                                        key="'browse-object'">
 | 
			
		||||
                    </mct-representation>
 | 
			
		||||
                </div>
 | 
			
		||||
                <div class="key-properties ui-symbol icon mobile-menu-icon desktop-hide"
 | 
			
		||||
                     mct-device="mobile"
 | 
			
		||||
                     ng-click="tree.toggle()">m</div>
 | 
			
		||||
            </div>
 | 
			
		||||
        </mct-split-pane>
 | 
			
		||||
    </div>
 | 
			
		||||
    <mct-include key="'bottombar'"></mct-include>
 | 
			
		||||
</div>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -19,11 +19,11 @@
 | 
			
		||||
 this source code distribution or the Licensing information page available
 | 
			
		||||
 at runtime from the About dialog for additional information.
 | 
			
		||||
-->
 | 
			
		||||
<div class='object-header'>
 | 
			
		||||
    <span class="label s-label">
 | 
			
		||||
        <span class='type-icon icon ui-symbol'>{{type.getGlyph()}}</span>
 | 
			
		||||
<div class='object-header object-header-mobile'>
 | 
			
		||||
    <span class='type-icon ui-symbol'>{{type.getGlyph()}}</span>
 | 
			
		||||
    <!--span class='type-name mobile-important-hide'>{{type.getName()}}</span-->
 | 
			
		||||
    <span class="l-elem-wrapper l-flex">
 | 
			
		||||
        <span ng-if="parameters.mode" class='action'>{{parameters.mode}}</span>
 | 
			
		||||
        <span class='type-name'>{{type.getName()}}</span>
 | 
			
		||||
        <span class='title-label'>{{model.name}}</span>
 | 
			
		||||
        <mct-representation key="'menu-arrow'" mct-object='domainObject'></mct-representation>
 | 
			
		||||
    </span>
 | 
			
		||||
 
 | 
			
		||||
@@ -20,10 +20,11 @@
 | 
			
		||||
 at runtime from the About dialog for additional information.
 | 
			
		||||
-->
 | 
			
		||||
<div class="menu-element wrapper" ng-controller="ClickAwayController as createController">
 | 
			
		||||
    <div class="btn btn-menu create-btn major" ng-click="createController.toggle()">
 | 
			
		||||
	    Create
 | 
			
		||||
    <div class="s-menu-btn major create-btn" ng-click="createController.toggle()">
 | 
			
		||||
		<span class="ui-symbol icon type-icon">+</span>
 | 
			
		||||
		<span class="title-label">Create</span>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="menu dropdown super-menu" ng-show="createController.isActive()">
 | 
			
		||||
    <div class="menu super-menu" ng-show="createController.isActive()">
 | 
			
		||||
        <mct-representation mct-object="domainObject" key="'create-menu'">
 | 
			
		||||
        </mct-representation>
 | 
			
		||||
    </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,7 @@
 | 
			
		||||
 at runtime from the About dialog for additional information.
 | 
			
		||||
-->
 | 
			
		||||
<div ng-controller="LocatorController" class="selector-list">
 | 
			
		||||
    <div>
 | 
			
		||||
    <div class="wrapper">
 | 
			
		||||
        <mct-representation key="'tree'"
 | 
			
		||||
                            mct-object="rootObject"
 | 
			
		||||
                            ng-model="treeModel">
 | 
			
		||||
 
 | 
			
		||||
@@ -21,31 +21,27 @@
 | 
			
		||||
-->
 | 
			
		||||
<!-- For selected, add class 'selected' to outer div -->
 | 
			
		||||
<div class='item grid-item' ng-click='action.perform("navigate")'>
 | 
			
		||||
    <div class="contents abs">
 | 
			
		||||
    <div class='contents abs'>
 | 
			
		||||
        <div class='top-bar bar abs'>
 | 
			
		||||
            <div class='left abs'>
 | 
			
		||||
                <mct-include key="_checkbox"></mct-include>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class='right abs'>
 | 
			
		||||
                <div class='ui-symbol icon l-icon-alert'></div>
 | 
			
		||||
                <div class='ui-symbol icon profile' title="Shared">P</div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class='ui-symbol profile' title='Shared'>O</div>
 | 
			
		||||
            <mct-representation class="desktop-hide" key="'info-button'" mct-object="domainObject"></mct-representation>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class='item-main abs'>
 | 
			
		||||
            <div class='ui-symbol icon lg item-type'>
 | 
			
		||||
                {{type.getGlyph()}}
 | 
			
		||||
                <span
 | 
			
		||||
                    class="ui-symbol icon l-icon-link" title="This object is a link"
 | 
			
		||||
                    class="ui-symbol l-icon-link" title="This object is a link"
 | 
			
		||||
                    ng-show="location.isLink()"
 | 
			
		||||
                    ></span>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div class='ui-symbol icon abs item-open'>}</div>
 | 
			
		||||
            <div class='ui-symbol abs item-open'>}</div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class='bottom-bar bar abs'>
 | 
			
		||||
            <div class='title'>{{model.name}}</div>
 | 
			
		||||
            <div class='details'>
 | 
			
		||||
                <span>{{type.getName()}}</span>
 | 
			
		||||
                <span ng-show="model.composition !== undefined">
 | 
			
		||||
                    {{model.composition.length}} Items
 | 
			
		||||
                    - {{model.composition.length}} Item<span ng-show="model.composition.length > 1">s</span>
 | 
			
		||||
                </span>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,36 +0,0 @@
 | 
			
		||||
<!--
 | 
			
		||||
 Open MCT Web, Copyright (c) 2014-2015, United States Government
 | 
			
		||||
 as represented by the Administrator of the National Aeronautics and Space
 | 
			
		||||
 Administration. All rights reserved.
 | 
			
		||||
 | 
			
		||||
 Open MCT Web is licensed under the Apache License, Version 2.0 (the
 | 
			
		||||
 "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 You may obtain a copy of the License at
 | 
			
		||||
 http://www.apache.org/licenses/LICENSE-2.0.
 | 
			
		||||
 | 
			
		||||
 Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
			
		||||
 WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
			
		||||
 License for the specific language governing permissions and limitations
 | 
			
		||||
 under the License.
 | 
			
		||||
 | 
			
		||||
 Open MCT Web includes source code licensed under additional open source
 | 
			
		||||
 licenses. See the Open Source Licenses file (LICENSES.md) included with
 | 
			
		||||
 this source code distribution or the Licensing information page available
 | 
			
		||||
 at runtime from the About dialog for additional information.
 | 
			
		||||
-->
 | 
			
		||||
<div class='top-bar browse abs'>
 | 
			
		||||
    <!-- TO-DO: replace JS placeholders for click actions -->
 | 
			
		||||
    <div class='browse-main bar abs left'>
 | 
			
		||||
        <a class="menu-element btn btn-menu browse-btn" onclick="alert('Not yet functional. This will allow filtering of browsed objects and search context.');">
 | 
			
		||||
            <span class='ui-symbol badge major' href=''>*</span>Browse All<span class='ui-symbol invoke-menu'>v</span>
 | 
			
		||||
        </a>
 | 
			
		||||
        <input type='text' class='control filter' name='filter-available'/>
 | 
			
		||||
        <a class='icon icon-filter ui-symbol' onclick="alert('Not yet functional. This will initiate a search.');">M</a>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class='icon-buttons-main bar abs right'>
 | 
			
		||||
        <a class='ui-symbol icon major alert' onclick="alert('Not yet functional. This will allow updating of domain objects that need to be refreshed.');">!<span id='alert-actions-menu' class='ui-symbol invoke-menu'>v</span></a>
 | 
			
		||||
        <!--a class='ui-symbol icon major profile' href=''>P<span id='profile-actions-menu' class='ui-symbol invoke-menu'>v</span></a-->
 | 
			
		||||
        <a class='ui-symbol icon major settings' onclick="alert('Not yet functional. This will allow access to application configuration settings.');">G<span id='settings-actions-menu' class='ui-symbol invoke-menu'>v</span></a>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
@@ -55,7 +55,7 @@ define(
 | 
			
		||||
 | 
			
		||||
                unlisten = $scope.$on('$locationChangeSuccess', function () {
 | 
			
		||||
                    // Checks path to make sure /browse/ is at front
 | 
			
		||||
                    // if so, change $route.current                    
 | 
			
		||||
                    // if so, change $route.current
 | 
			
		||||
                    if ($location.path().indexOf("/browse/") === 0) {
 | 
			
		||||
                        $route.current = priorRoute;
 | 
			
		||||
                    }
 | 
			
		||||
@@ -65,7 +65,7 @@ define(
 | 
			
		||||
                // path to new, addressed, path based on
 | 
			
		||||
                // domainObject
 | 
			
		||||
                $location.path(urlService.urlForLocation("browse", domainObject));
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Callback for updating the in-scope reference to the object
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										78
									
								
								platform/commonUI/browse/src/BrowseTreeController.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,78 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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*/
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
define(
 | 
			
		||||
    [],
 | 
			
		||||
    function () {
 | 
			
		||||
        "use strict";
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Controller to provide the ability to show/hide the tree in
 | 
			
		||||
         * Browse mode.
 | 
			
		||||
         * @constructor
 | 
			
		||||
         * @memberof platform/commonUI/browse
 | 
			
		||||
         */
 | 
			
		||||
        function BrowseTreeController($scope, agentService) {
 | 
			
		||||
            var self = this;
 | 
			
		||||
            this.agentService = agentService;
 | 
			
		||||
            this.state = true;
 | 
			
		||||
 | 
			
		||||
            /**
 | 
			
		||||
             * Callback to invoke when any selection occurs in the tree.
 | 
			
		||||
             * This controller can be passed in as the `parameters` object
 | 
			
		||||
             * to the tree representation.
 | 
			
		||||
             *
 | 
			
		||||
             * @property {Function} callback
 | 
			
		||||
             * @memberof platform/commonUI/browse.BrowseTreeController#
 | 
			
		||||
             */
 | 
			
		||||
            this.callback = function () {
 | 
			
		||||
                // Note that, since this is a callback to pass, this is not
 | 
			
		||||
                // declared as a method but as a property which happens to
 | 
			
		||||
                // be a function.
 | 
			
		||||
                if (agentService.isPhone() && agentService.isPortrait()) {
 | 
			
		||||
                    // On phones, trees should collapse in portrait mode
 | 
			
		||||
                    // when something is navigated-to.
 | 
			
		||||
                    self.state = false;
 | 
			
		||||
                }
 | 
			
		||||
            };
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Toggle the visibility of the tree.
 | 
			
		||||
         */
 | 
			
		||||
        BrowseTreeController.prototype.toggle = function () {
 | 
			
		||||
            this.state = !this.state;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Get the desired visibility state of the tree.
 | 
			
		||||
         * @returns {boolean} true when visible
 | 
			
		||||
         */
 | 
			
		||||
        BrowseTreeController.prototype.visible = function () {
 | 
			
		||||
            return this.state;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return BrowseTreeController;
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
@@ -59,10 +59,10 @@ define(
 | 
			
		||||
                var locatingType = locatingObject &&
 | 
			
		||||
                    locatingObject.getCapability('type');
 | 
			
		||||
                return locatingType && policyService.allow(
 | 
			
		||||
                        "composition",
 | 
			
		||||
                        locatingType,
 | 
			
		||||
                        type
 | 
			
		||||
                    );
 | 
			
		||||
                    "composition",
 | 
			
		||||
                    locatingType,
 | 
			
		||||
                    type
 | 
			
		||||
                );
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            sections.push({
 | 
			
		||||
@@ -77,6 +77,9 @@ define(
 | 
			
		||||
                    row.key = index;
 | 
			
		||||
 | 
			
		||||
                    return row;
 | 
			
		||||
                }).filter(function (row) {
 | 
			
		||||
                    // Only show rows which have defined controls
 | 
			
		||||
                    return row && row.control;
 | 
			
		||||
                })
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -25,7 +25,7 @@
 | 
			
		||||
 * Module defining CreateService. Created by vwoeltje on 11/10/14.
 | 
			
		||||
 */
 | 
			
		||||
define(
 | 
			
		||||
    ["../../lib/uuid"],
 | 
			
		||||
    ["uuid"],
 | 
			
		||||
    function (uuid) {
 | 
			
		||||
        "use strict";
 | 
			
		||||
 | 
			
		||||
@@ -42,10 +42,11 @@ define(
 | 
			
		||||
         * @memberof platform/commonUI/browse
 | 
			
		||||
         * @constructor
 | 
			
		||||
         */
 | 
			
		||||
        function CreationService(persistenceService, $q, $log) {
 | 
			
		||||
        function CreationService(persistenceService, now, $q, $log) {
 | 
			
		||||
            this.persistenceService = persistenceService;
 | 
			
		||||
            this.$q = $q;
 | 
			
		||||
            this.$log = $log;
 | 
			
		||||
            this.now = now;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
@@ -55,6 +56,10 @@ define(
 | 
			
		||||
         * space an object is created within (as it is possible to
 | 
			
		||||
         * have multiple persistence spaces attached.)
 | 
			
		||||
         *
 | 
			
		||||
         * Note that the model passed in for object creation may be
 | 
			
		||||
         * modified to attach additional initial properties associated
 | 
			
		||||
         * with domain object creation.
 | 
			
		||||
         *
 | 
			
		||||
         * @param {object} model the model for the newly-created
 | 
			
		||||
         *        domain object
 | 
			
		||||
         * @param {DomainObject} parent the domain object which
 | 
			
		||||
@@ -67,12 +72,6 @@ define(
 | 
			
		||||
            var persistence = parent.getCapability("persistence"),
 | 
			
		||||
                self = this;
 | 
			
		||||
 | 
			
		||||
            // Store the location of an object relative to it's parent.
 | 
			
		||||
            function addLocationToModel(modelId, model, parent) {
 | 
			
		||||
                model.location = parent.getId();
 | 
			
		||||
                return model;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Persist the new domain object's model; it will be fully
 | 
			
		||||
            // constituted as a domain object when loaded back, as all
 | 
			
		||||
            // domain object models are.
 | 
			
		||||
@@ -88,37 +87,18 @@ define(
 | 
			
		||||
            // composition, so that it will subsequently appear
 | 
			
		||||
            // as a child contained by that parent.
 | 
			
		||||
            function addToComposition(id, parent, parentPersistence) {
 | 
			
		||||
                var mutatationResult = parent.useCapability("mutation", function (model) {
 | 
			
		||||
                    if (Array.isArray(model.composition)) {
 | 
			
		||||
                        // Don't add if the id is already there
 | 
			
		||||
                        if (model.composition.indexOf(id) === -1) {
 | 
			
		||||
                            model.composition.push(id);
 | 
			
		||||
                        }
 | 
			
		||||
                    } else {
 | 
			
		||||
                        // This is abnormal; composition should be an array
 | 
			
		||||
                        self.$log.warn(NO_COMPOSITION_WARNING + parent.getId());
 | 
			
		||||
                        return false; // Cancel mutation
 | 
			
		||||
                    }
 | 
			
		||||
                });
 | 
			
		||||
                var compositionCapability = parent.getCapability('composition'),
 | 
			
		||||
                    addResult = compositionCapability &&
 | 
			
		||||
                        compositionCapability.add(id);
 | 
			
		||||
 | 
			
		||||
                return self.$q.when(mutatationResult).then(function (result) {
 | 
			
		||||
                return self.$q.when(addResult).then(function (result) {
 | 
			
		||||
                    if (!result) {
 | 
			
		||||
                        self.$log.error("Could not mutate " + parent.getId());
 | 
			
		||||
                        self.$log.error("Could not modify " + parent.getId());
 | 
			
		||||
                        return undefined;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    return parentPersistence.persist().then(function () {
 | 
			
		||||
                        // Locate and return new Object in context of parent.
 | 
			
		||||
                        return parent
 | 
			
		||||
                            .useCapability('composition')
 | 
			
		||||
                            .then(function (children) {
 | 
			
		||||
                                var i;
 | 
			
		||||
                                for (i = 0; i < children.length; i += 1) {
 | 
			
		||||
                                    if (children[i].getId() === id) {
 | 
			
		||||
                                        return children[i];
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            });
 | 
			
		||||
                        return result;
 | 
			
		||||
                    });
 | 
			
		||||
                });
 | 
			
		||||
            }
 | 
			
		||||
@@ -135,7 +115,7 @@ define(
 | 
			
		||||
            // 2. Create a model with that ID in the persistence space
 | 
			
		||||
            // 3. Add that ID to
 | 
			
		||||
            return self.$q.when(uuid()).then(function (id) {
 | 
			
		||||
                model = addLocationToModel(id, model, parent);
 | 
			
		||||
                model.persisted = self.now();
 | 
			
		||||
                return doPersist(persistence.getSpace(), id, model);
 | 
			
		||||
            }).then(function (id) {
 | 
			
		||||
                return addToComposition(id, parent, persistence);
 | 
			
		||||
 
 | 
			
		||||
@@ -33,7 +33,7 @@ define(
 | 
			
		||||
         * @memberof platform/commonUI/browse
 | 
			
		||||
         * @constructor
 | 
			
		||||
         */
 | 
			
		||||
        function LocatorController($scope) {
 | 
			
		||||
        function LocatorController($scope, $timeout) {
 | 
			
		||||
            // Populate values needed by the locator control. These are:
 | 
			
		||||
            // * rootObject: The top-level object, since we want to show
 | 
			
		||||
            //               the full tree
 | 
			
		||||
@@ -41,9 +41,19 @@ define(
 | 
			
		||||
            //              used for bi-directional object selection.
 | 
			
		||||
            function setLocatingObject(domainObject, priorObject) {
 | 
			
		||||
                var context = domainObject &&
 | 
			
		||||
                    domainObject.getCapability("context");
 | 
			
		||||
                    domainObject.getCapability("context"),
 | 
			
		||||
                    contextRoot = context && context.getRoot();
 | 
			
		||||
 | 
			
		||||
                if (contextRoot && contextRoot !== $scope.rootObject) {
 | 
			
		||||
                    $scope.rootObject = undefined;
 | 
			
		||||
                    // Update the displayed tree on a timeout to avoid
 | 
			
		||||
                    // an infinite digest exception.
 | 
			
		||||
                    $timeout(function () {
 | 
			
		||||
                        $scope.rootObject =
 | 
			
		||||
                            (context && context.getRoot()) || $scope.rootObject;
 | 
			
		||||
                    }, 0);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                $scope.rootObject = (context && context.getRoot()) || $scope.rootObject;
 | 
			
		||||
                $scope.treeModel.selectedObject = domainObject;
 | 
			
		||||
                $scope.ngModel[$scope.field] = domainObject;
 | 
			
		||||
 | 
			
		||||
@@ -52,10 +62,7 @@ define(
 | 
			
		||||
                        $scope.structure &&
 | 
			
		||||
                            $scope.structure.validate) {
 | 
			
		||||
                    if (!$scope.structure.validate(domainObject)) {
 | 
			
		||||
                        setLocatingObject(
 | 
			
		||||
                            $scope.structure.validate(priorObject) ?
 | 
			
		||||
                                    priorObject : undefined
 | 
			
		||||
                        );
 | 
			
		||||
                        setLocatingObject(priorObject, undefined);
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 
 | 
			
		||||
@@ -146,12 +146,14 @@ define(
 | 
			
		||||
                expect(mockScope.navigatedObject).toEqual(mockDomainObject);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            it("releases its navigation listener when its scope is destroyed", function () {
 | 
			
		||||
                expect(mockScope.$on).toHaveBeenCalledWith(
 | 
			
		||||
                    "$destroy",
 | 
			
		||||
                    jasmine.any(Function)
 | 
			
		||||
                );
 | 
			
		||||
                mockScope.$on.mostRecentCall.args[1]();
 | 
			
		||||
 | 
			
		||||
                // Should remove the listener it added earlier
 | 
			
		||||
                expect(mockNavigationService.removeListener).toHaveBeenCalledWith(
 | 
			
		||||
                    mockNavigationService.addListener.mostRecentCall.args[0]
 | 
			
		||||
@@ -222,16 +224,16 @@ define(
 | 
			
		||||
                mockNavigationService.addListener.mostRecentCall.args[0](
 | 
			
		||||
                    mockNextObject
 | 
			
		||||
                );
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                // Allows the path index to be checked
 | 
			
		||||
                // prior to setting $route.current                
 | 
			
		||||
                // prior to setting $route.current
 | 
			
		||||
                mockLocation.path.andReturn("/browse/");
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                // Exercise the Angular workaround
 | 
			
		||||
                mockScope.$on.mostRecentCall.args[1]();
 | 
			
		||||
                expect(mockUnlisten).toHaveBeenCalled();
 | 
			
		||||
                
 | 
			
		||||
                // location.path to be called with the urlService's 
 | 
			
		||||
 | 
			
		||||
                // location.path to be called with the urlService's
 | 
			
		||||
                // urlFor function with the next domainObject and mode
 | 
			
		||||
                expect(mockLocation.path).toHaveBeenCalledWith(
 | 
			
		||||
                    mockUrlService.urlForLocation(mockMode, mockNextObject)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										90
									
								
								platform/commonUI/browse/test/BrowseTreeControllerSpec.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,90 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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/BrowseTreeController"],
 | 
			
		||||
    function (BrowseTreeController) {
 | 
			
		||||
        'use strict';
 | 
			
		||||
 | 
			
		||||
        describe("The BrowseTreeController", function () {
 | 
			
		||||
            var mockScope,
 | 
			
		||||
                mockAgentService,
 | 
			
		||||
                mockDomainObjects,
 | 
			
		||||
                controller;
 | 
			
		||||
 | 
			
		||||
            // We want to reinstantiate for each test case
 | 
			
		||||
            // because device state can influence constructor-time behavior
 | 
			
		||||
            function instantiateController() {
 | 
			
		||||
                return new BrowseTreeController(
 | 
			
		||||
                    mockScope,
 | 
			
		||||
                    mockAgentService
 | 
			
		||||
                );
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            beforeEach(function () {
 | 
			
		||||
                mockScope = jasmine.createSpyObj("$scope", [ "$on" ]);
 | 
			
		||||
                mockDomainObjects = ['a', 'b'].map(function (id) {
 | 
			
		||||
                    var mockDomainObject = jasmine.createSpyObj(
 | 
			
		||||
                        'domainObject-' + id,
 | 
			
		||||
                        [ 'getId', 'getModel', 'getCapability' ]
 | 
			
		||||
                    );
 | 
			
		||||
 | 
			
		||||
                    mockDomainObject.getId.andReturn(id);
 | 
			
		||||
                    mockDomainObject.getModel.andReturn({});
 | 
			
		||||
 | 
			
		||||
                    return mockDomainObject;
 | 
			
		||||
                });
 | 
			
		||||
                mockAgentService = jasmine.createSpyObj(
 | 
			
		||||
                    "agentService",
 | 
			
		||||
                    [ "isMobile", "isPhone", "isTablet", "isPortrait", "isLandscape" ]
 | 
			
		||||
                );
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it("is initially visible", function () {
 | 
			
		||||
                expect(instantiateController().visible()).toBeTruthy();
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it("allows visibility to be toggled", function () {
 | 
			
		||||
                controller = instantiateController();
 | 
			
		||||
                controller.toggle();
 | 
			
		||||
                expect(controller.visible()).toBeFalsy();
 | 
			
		||||
                controller.toggle();
 | 
			
		||||
                expect(controller.visible()).toBeTruthy();
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it("collapses on navigation changes on portrait-oriented phones", function () {
 | 
			
		||||
                mockAgentService.isMobile.andReturn(true);
 | 
			
		||||
                mockAgentService.isPhone.andReturn(true);
 | 
			
		||||
                mockAgentService.isPortrait.andReturn(true);
 | 
			
		||||
                controller = instantiateController();
 | 
			
		||||
                expect(controller.visible()).toBeTruthy();
 | 
			
		||||
 | 
			
		||||
                // Simulate a change from the tree by invoking controller's
 | 
			
		||||
                controller.callback();
 | 
			
		||||
 | 
			
		||||
                // Tree should have collapsed
 | 
			
		||||
                expect(controller.visible()).toBeFalsy();
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
@@ -42,7 +42,9 @@ define(
 | 
			
		||||
                    "property" + name,
 | 
			
		||||
                    [ "getDefinition", "getValue", "setValue" ]
 | 
			
		||||
                );
 | 
			
		||||
                mockProperty.getDefinition.andReturn({});
 | 
			
		||||
                mockProperty.getDefinition.andReturn({
 | 
			
		||||
                    control: "textfield"
 | 
			
		||||
                });
 | 
			
		||||
                mockProperty.getValue.andReturn(name);
 | 
			
		||||
                return mockProperty;
 | 
			
		||||
            }
 | 
			
		||||
@@ -157,4 +159,4 @@ define(
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
);
 | 
			
		||||
 
 | 
			
		||||
@@ -31,6 +31,7 @@ define(
 | 
			
		||||
 | 
			
		||||
        describe("The creation service", function () {
 | 
			
		||||
            var mockPersistenceService,
 | 
			
		||||
                mockNow,
 | 
			
		||||
                mockQ,
 | 
			
		||||
                mockLog,
 | 
			
		||||
                mockParentObject,
 | 
			
		||||
@@ -63,6 +64,7 @@ define(
 | 
			
		||||
                    "persistenceService",
 | 
			
		||||
                    [ "createObject" ]
 | 
			
		||||
                );
 | 
			
		||||
                mockNow = jasmine.createSpy('now');
 | 
			
		||||
                mockQ = { when: mockPromise, reject: mockReject };
 | 
			
		||||
                mockLog = jasmine.createSpyObj(
 | 
			
		||||
                    "$log",
 | 
			
		||||
@@ -86,7 +88,7 @@ define(
 | 
			
		||||
                );
 | 
			
		||||
                mockCompositionCapability = jasmine.createSpyObj(
 | 
			
		||||
                    "composition",
 | 
			
		||||
                    ["invoke"]
 | 
			
		||||
                    ["invoke", "add"]
 | 
			
		||||
                );
 | 
			
		||||
                mockContextCapability = jasmine.createSpyObj(
 | 
			
		||||
                    "context",
 | 
			
		||||
@@ -103,6 +105,8 @@ define(
 | 
			
		||||
                    mockPromise(true)
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
                mockNow.andReturn(12321);
 | 
			
		||||
 | 
			
		||||
                mockParentObject.getCapability.andCallFake(function (key) {
 | 
			
		||||
                    return mockCapabilities[key];
 | 
			
		||||
                });
 | 
			
		||||
@@ -120,9 +124,11 @@ define(
 | 
			
		||||
                mockCompositionCapability.invoke.andReturn(
 | 
			
		||||
                    mockPromise([mockNewObject])
 | 
			
		||||
                );
 | 
			
		||||
                mockCompositionCapability.add.andReturn(mockPromise(true));
 | 
			
		||||
 | 
			
		||||
                creationService = new CreationService(
 | 
			
		||||
                    mockPersistenceService,
 | 
			
		||||
                    mockNow,
 | 
			
		||||
                    mockQ,
 | 
			
		||||
                    mockLog
 | 
			
		||||
                );
 | 
			
		||||
@@ -143,33 +149,34 @@ define(
 | 
			
		||||
                    parentModel = { composition: ["notAnyUUID"] };
 | 
			
		||||
                creationService.createObject(model, mockParentObject);
 | 
			
		||||
 | 
			
		||||
                // Invoke the mutation callback
 | 
			
		||||
                expect(mockMutationCapability.invoke).toHaveBeenCalled();
 | 
			
		||||
                mockMutationCapability.invoke.mostRecentCall.args[0](parentModel);
 | 
			
		||||
 | 
			
		||||
                // Should have a longer composition now, with the new UUID
 | 
			
		||||
                expect(parentModel.composition.length).toEqual(2);
 | 
			
		||||
                // Verify that a new ID was added
 | 
			
		||||
                expect(mockCompositionCapability.add)
 | 
			
		||||
                    .toHaveBeenCalledWith(jasmine.any(String));
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it("warns if parent has no composition", function () {
 | 
			
		||||
                var model = { someKey: "some value" },
 | 
			
		||||
                    parentModel = { };
 | 
			
		||||
                creationService.createObject(model, mockParentObject);
 | 
			
		||||
            it("provides the newly-created object", function () {
 | 
			
		||||
                var mockDomainObject = jasmine.createSpyObj(
 | 
			
		||||
                        'newDomainObject',
 | 
			
		||||
                        ['getId', 'getModel', 'getCapability']
 | 
			
		||||
                    ),
 | 
			
		||||
                    mockCallback = jasmine.createSpy('callback');
 | 
			
		||||
 | 
			
		||||
                // Verify precondition; no prior warnings
 | 
			
		||||
                expect(mockLog.warn).not.toHaveBeenCalled();
 | 
			
		||||
                // Act as if the object had been created
 | 
			
		||||
                mockCompositionCapability.add.andCallFake(function (id) {
 | 
			
		||||
                    mockDomainObject.getId.andReturn(id);
 | 
			
		||||
                    mockCompositionCapability.invoke
 | 
			
		||||
                        .andReturn(mockPromise([mockDomainObject]));
 | 
			
		||||
                    return mockPromise(mockDomainObject);
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
                // Invoke the mutation callback
 | 
			
		||||
                expect(mockMutationCapability.invoke).toHaveBeenCalled();
 | 
			
		||||
                mockMutationCapability.invoke.mostRecentCall.args[0](parentModel);
 | 
			
		||||
                // Should find it in the composition
 | 
			
		||||
                creationService.createObject({}, mockParentObject)
 | 
			
		||||
                    .then(mockCallback);
 | 
			
		||||
 | 
			
		||||
                expect(mockCallback).toHaveBeenCalledWith(mockDomainObject);
 | 
			
		||||
 | 
			
		||||
                // Should have a longer composition now, with the new UUID
 | 
			
		||||
                expect(mockLog.warn).toHaveBeenCalled();
 | 
			
		||||
                // Composition should still be undefined
 | 
			
		||||
                expect(parentModel.composition).toBeUndefined();
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            it("warns if parent has no persistence capability", function () {
 | 
			
		||||
                // Callbacks
 | 
			
		||||
                var success = jasmine.createSpy("success"),
 | 
			
		||||
@@ -185,7 +192,6 @@ define(
 | 
			
		||||
                expect(mockLog.warn).toHaveBeenCalled();
 | 
			
		||||
                expect(success).not.toHaveBeenCalled();
 | 
			
		||||
                expect(failure).toHaveBeenCalled();
 | 
			
		||||
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it("logs an error when mutaton fails", function () {
 | 
			
		||||
@@ -194,21 +200,17 @@ define(
 | 
			
		||||
                var model = { someKey: "some value" },
 | 
			
		||||
                    parentModel = { composition: ["notAnyUUID"] };
 | 
			
		||||
 | 
			
		||||
                mockMutationCapability.invoke.andReturn(mockPromise(false));
 | 
			
		||||
                mockCompositionCapability.add.andReturn(mockPromise(false));
 | 
			
		||||
 | 
			
		||||
                creationService.createObject(model, mockParentObject);
 | 
			
		||||
 | 
			
		||||
                expect(mockLog.error).toHaveBeenCalled();
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it("stores location on new domainObjects", function () {
 | 
			
		||||
                var model = { name: "my model" },
 | 
			
		||||
                    objectPromise = creationService.createObject(
 | 
			
		||||
                        model,
 | 
			
		||||
                        mockParentObject
 | 
			
		||||
                    );
 | 
			
		||||
 | 
			
		||||
                expect(model.location).toBe('parentId');
 | 
			
		||||
            it("attaches a 'persisted' timestamp", function () {
 | 
			
		||||
                var model = { someKey: "some value" };
 | 
			
		||||
                creationService.createObject(model, mockParentObject);
 | 
			
		||||
                expect(model.persisted).toEqual(mockNow());
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
 
 | 
			
		||||
@@ -31,6 +31,7 @@ define(
 | 
			
		||||
 | 
			
		||||
        describe("The locator controller", function () {
 | 
			
		||||
            var mockScope,
 | 
			
		||||
                mockTimeout,
 | 
			
		||||
                mockDomainObject,
 | 
			
		||||
                mockRootObject,
 | 
			
		||||
                mockContext,
 | 
			
		||||
@@ -41,6 +42,7 @@ define(
 | 
			
		||||
                    "$scope",
 | 
			
		||||
                    [ "$watch" ]
 | 
			
		||||
                );
 | 
			
		||||
                mockTimeout = jasmine.createSpy("$timeout");
 | 
			
		||||
                mockDomainObject = jasmine.createSpyObj(
 | 
			
		||||
                    "domainObject",
 | 
			
		||||
                    [ "getCapability" ]
 | 
			
		||||
@@ -60,7 +62,7 @@ define(
 | 
			
		||||
                mockScope.ngModel = {};
 | 
			
		||||
                mockScope.field = "someField";
 | 
			
		||||
 | 
			
		||||
                controller = new LocatorController(mockScope);
 | 
			
		||||
                controller = new LocatorController(mockScope, mockTimeout);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it("adds a treeModel to scope", function () {
 | 
			
		||||
@@ -80,6 +82,7 @@ define(
 | 
			
		||||
                // Need to pass on selection changes as updates to
 | 
			
		||||
                // the control's value
 | 
			
		||||
                mockScope.$watch.mostRecentCall.args[1](mockDomainObject);
 | 
			
		||||
                mockTimeout.mostRecentCall.args[0]();
 | 
			
		||||
                expect(mockScope.ngModel.someField).toEqual(mockDomainObject);
 | 
			
		||||
                expect(mockScope.rootObject).toEqual(mockRootObject);
 | 
			
		||||
 | 
			
		||||
@@ -95,6 +98,7 @@ define(
 | 
			
		||||
 | 
			
		||||
                // Pass selection change
 | 
			
		||||
                mockScope.$watch.mostRecentCall.args[1](mockDomainObject);
 | 
			
		||||
                mockTimeout.mostRecentCall.args[0]();
 | 
			
		||||
 | 
			
		||||
                expect(mockScope.structure.validate).toHaveBeenCalled();
 | 
			
		||||
                // Change should have been rejected
 | 
			
		||||
@@ -108,14 +112,16 @@ define(
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
                mockScope.$watch.mostRecentCall.args[1](mockDomainObject);
 | 
			
		||||
                mockTimeout.mostRecentCall.args[0]();
 | 
			
		||||
                expect(mockScope.ngModelController.$setValidity)
 | 
			
		||||
                    .toHaveBeenCalledWith(jasmine.any(String), true);
 | 
			
		||||
 | 
			
		||||
                mockScope.$watch.mostRecentCall.args[1](undefined);
 | 
			
		||||
                mockTimeout.mostRecentCall.args[0]();
 | 
			
		||||
                expect(mockScope.ngModelController.$setValidity)
 | 
			
		||||
                    .toHaveBeenCalledWith(jasmine.any(String), false);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
);
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
[
 | 
			
		||||
    "BrowseController",
 | 
			
		||||
    "BrowseObjectController",
 | 
			
		||||
    "BrowseTreeController",
 | 
			
		||||
    "MenuArrowController",
 | 
			
		||||
    "creation/CreateAction",
 | 
			
		||||
    "creation/CreateActionProvider",
 | 
			
		||||
 
 | 
			
		||||
@@ -24,6 +24,18 @@
 | 
			
		||||
            {
 | 
			
		||||
                "key": "form-dialog",
 | 
			
		||||
                "templateUrl": "templates/dialog.html"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "overlay-blocking-message",
 | 
			
		||||
                "templateUrl": "templates/overlay-blocking-message.html"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "message",
 | 
			
		||||
                "templateUrl": "templates/message.html"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "overlay-message-list",
 | 
			
		||||
                "templateUrl": "templates/overlay-message-list.html"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "containers": [
 | 
			
		||||
 
 | 
			
		||||
@@ -21,26 +21,22 @@
 | 
			
		||||
-->
 | 
			
		||||
<div class="abs top-bar">
 | 
			
		||||
    <div class="title">{{ngModel.title}}</div>
 | 
			
		||||
    <div class="hint">
 | 
			
		||||
        All fields marked <span class="ui-symbol req">*</span> are required.
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="hint">All fields marked <span class="ui-symbol req">*</span> are required.</div>
 | 
			
		||||
</div>
 | 
			
		||||
<div class="abs form outline editor">
 | 
			
		||||
    <div class='abs contents l-dialog'>
 | 
			
		||||
        <mct-form ng-model="ngModel.value"
 | 
			
		||||
                  structure="ngModel.structure"
 | 
			
		||||
                  name="createForm">
 | 
			
		||||
        </mct-form>
 | 
			
		||||
    </div>
 | 
			
		||||
<div class='abs editor'>
 | 
			
		||||
    <mct-form ng-model="ngModel.value"
 | 
			
		||||
              structure="ngModel.structure"
 | 
			
		||||
              name="createForm">
 | 
			
		||||
    </mct-form>
 | 
			
		||||
</div>
 | 
			
		||||
<div class="abs bottom-bar">
 | 
			
		||||
    <a class='btn lg major'
 | 
			
		||||
       href=''
 | 
			
		||||
    <a class='s-btn major'
 | 
			
		||||
       ng-class="{ disabled: !createForm.$valid }"
 | 
			
		||||
       ng-click="ngModel.confirm()">
 | 
			
		||||
        OK
 | 
			
		||||
    </a>
 | 
			
		||||
    <a class='btn lg subtle' href='' ng-click="ngModel.cancel()">
 | 
			
		||||
    <a class='s-btn'
 | 
			
		||||
       ng-click="ngModel.cancel()">
 | 
			
		||||
        Cancel
 | 
			
		||||
    </a>
 | 
			
		||||
</div>
 | 
			
		||||
							
								
								
									
										32
									
								
								platform/commonUI/dialog/res/templates/message.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						@@ -0,0 +1,32 @@
 | 
			
		||||
<div class="l-message"
 | 
			
		||||
     ng-class="'message-severity-' + ngModel.severity">
 | 
			
		||||
    <div class="ui-symbol type-icon message-type"></div>
 | 
			
		||||
    <div class="message-contents">
 | 
			
		||||
        <div class="top-bar">
 | 
			
		||||
            <div class="title">{{ngModel.title}}</div>
 | 
			
		||||
            <div class="hint" ng-hide="ngModel.hint === undefined">{{ngModel.hint}}</div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="message-body">
 | 
			
		||||
            <div class="message-action">
 | 
			
		||||
                {{ngModel.actionText}}
 | 
			
		||||
            </div>
 | 
			
		||||
            <mct-include key="'progress-bar'"
 | 
			
		||||
                         ng-model="ngModel"
 | 
			
		||||
                         ng-show="ngModel.progress !== undefined || ngModel.unknownProgress"></mct-include>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="bottom-bar">
 | 
			
		||||
            <a ng-repeat="dialogOption in ngModel.options"
 | 
			
		||||
               class="s-btn major"
 | 
			
		||||
               ng-click="dialogOption.callback()">
 | 
			
		||||
                {{dialogOption.label}}
 | 
			
		||||
            </a>
 | 
			
		||||
            <a class="s-btn major"
 | 
			
		||||
               ng-if="ngModel.primaryOption"
 | 
			
		||||
               ng-click="ngModel.primaryOption.callback()">
 | 
			
		||||
                {{ngModel.primaryOption.label}}
 | 
			
		||||
            </a>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
@@ -0,0 +1,25 @@
 | 
			
		||||
<!--
 | 
			
		||||
 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.
 | 
			
		||||
-->
 | 
			
		||||
<mct-container key="overlay" class="t-message-single">
 | 
			
		||||
    <mct-include key="'message'" ng-model="ngModel">
 | 
			
		||||
    </mct-include>
 | 
			
		||||
</mct-container>
 | 
			
		||||
@@ -0,0 +1,19 @@
 | 
			
		||||
<mct-container key="overlay" class="t-message-list">
 | 
			
		||||
    <div class="message-contents">
 | 
			
		||||
        <div class="abs top-bar">
 | 
			
		||||
            <div class="title">{{ngModel.dialog.title}}</div>
 | 
			
		||||
            <div class="hint">Displaying {{ngModel.dialog.messages.length}} message<span ng-show="ngModel.dialog.messages.length > 1">s</span>
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="abs message-body">
 | 
			
		||||
            <mct-include ng-repeat="msg in ngModel.dialog.messages | orderBy: '-'" key="'message'" ng-model="msg"></mct-include>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="abs bottom-bar">
 | 
			
		||||
            <a ng-repeat="dialogAction in ngModel.dialog.actions"
 | 
			
		||||
               class="s-btn major"
 | 
			
		||||
               ng-click="dialogAction.action()">
 | 
			
		||||
                {{dialogAction.label}}
 | 
			
		||||
            </a>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</mct-container>
 | 
			
		||||
@@ -24,18 +24,16 @@
 | 
			
		||||
        <div class="title">{{ngModel.dialog.title}}</div>
 | 
			
		||||
        <div class="hint">{{ngModel.dialog.hint}}</div>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="abs form outline editor">
 | 
			
		||||
        <div class='abs contents l-dialog'>
 | 
			
		||||
            <mct-include key="ngModel.dialog.template"
 | 
			
		||||
                         parameters="ngModel.dialog.parameters"
 | 
			
		||||
                         ng-model="ngModel.dialog.model">
 | 
			
		||||
            </mct-include>
 | 
			
		||||
        </div>
 | 
			
		||||
    <div class='abs editor'>
 | 
			
		||||
        <mct-include key="ngModel.dialog.template"
 | 
			
		||||
                     parameters="ngModel.dialog.parameters"
 | 
			
		||||
                     ng-model="ngModel.dialog.model">
 | 
			
		||||
        </mct-include>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="abs bottom-bar">
 | 
			
		||||
        <a ng-repeat="option in ngModel.dialog.options"
 | 
			
		||||
           href=''
 | 
			
		||||
           class="btn lg"
 | 
			
		||||
           class="s-btn lg"
 | 
			
		||||
           title="{{option.description}}"
 | 
			
		||||
           ng-click="ngModel.confirm(option.key)"
 | 
			
		||||
           ng-class="{ major: $first, subtle: !$first }">
 | 
			
		||||
 
 | 
			
		||||
@@ -22,14 +22,9 @@
 | 
			
		||||
<div class="abs overlay">
 | 
			
		||||
    <div class="abs blocker"></div>
 | 
			
		||||
    <div class="abs holder">
 | 
			
		||||
        <a href=""
 | 
			
		||||
           ng-click="ngModel.cancel()"
 | 
			
		||||
        <a ng-click="ngModel.cancel()"
 | 
			
		||||
           ng-if="ngModel.cancel"
 | 
			
		||||
           class="btn normal ui-symbol close">
 | 
			
		||||
            x
 | 
			
		||||
        </a>
 | 
			
		||||
        <div class="abs contents" ng-transclude>
 | 
			
		||||
 | 
			
		||||
        </div>
 | 
			
		||||
           class="clk-icon icon ui-symbol close">x</a>
 | 
			
		||||
        <div class="abs contents" ng-transclude></div>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
@@ -55,7 +55,7 @@ define(
 | 
			
		||||
            this.dialogVisible = false;
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        DialogService.prototype.getDialogResponse = function (key, model, resultGetter) {
 | 
			
		||||
        DialogService.prototype.getDialogResponse = function (key, model, resultGetter, typeClass) {
 | 
			
		||||
            // We will return this result as a promise, because user
 | 
			
		||||
            // input is asynchronous.
 | 
			
		||||
            var deferred = this.$q.defer(),
 | 
			
		||||
@@ -84,27 +84,20 @@ define(
 | 
			
		||||
            model.confirm = confirm;
 | 
			
		||||
            model.cancel = cancel;
 | 
			
		||||
 | 
			
		||||
            if (this.dialogVisible) {
 | 
			
		||||
                // Only one dialog should be shown at a time.
 | 
			
		||||
                // The application design should be such that
 | 
			
		||||
                // we never even try to do this.
 | 
			
		||||
                this.$log.warn([
 | 
			
		||||
                    "Dialog already showing; ",
 | 
			
		||||
                    "unable to show ",
 | 
			
		||||
                    model.name
 | 
			
		||||
                ].join(""));
 | 
			
		||||
                deferred.reject();
 | 
			
		||||
            } else {
 | 
			
		||||
            if (this.canShowDialog(model)) {
 | 
			
		||||
                // Add the overlay using the OverlayService, which
 | 
			
		||||
                // will handle actual insertion into the DOM
 | 
			
		||||
                this.overlay = this.overlayService.createOverlay(
 | 
			
		||||
                    key,
 | 
			
		||||
                    model
 | 
			
		||||
                    model,
 | 
			
		||||
                    typeClass || "t-dialog"
 | 
			
		||||
                );
 | 
			
		||||
 | 
			
		||||
                // Track that a dialog is already visible, to
 | 
			
		||||
                // avoid spawning multiple dialogs at once.
 | 
			
		||||
                this.dialogVisible = true;
 | 
			
		||||
            } else {
 | 
			
		||||
                deferred.reject();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return deferred.promise;
 | 
			
		||||
@@ -157,6 +150,99 @@ define(
 | 
			
		||||
            );
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Tests if a dialog can be displayed. A modal dialog may only be
 | 
			
		||||
         * displayed if one is not already visible.
 | 
			
		||||
         * Will log a warning message if it can't display a dialog.
 | 
			
		||||
         * @returns {boolean} true if dialog is currently visible, false
 | 
			
		||||
         * otherwise
 | 
			
		||||
         */
 | 
			
		||||
        DialogService.prototype.canShowDialog = function(dialogModel){
 | 
			
		||||
            if (this.dialogVisible){
 | 
			
		||||
                // Only one dialog should be shown at a time.
 | 
			
		||||
                // The application design should be such that
 | 
			
		||||
                // we never even try to do this.
 | 
			
		||||
                this.$log.warn([
 | 
			
		||||
                    "Dialog already showing; ",
 | 
			
		||||
                    "unable to show ",
 | 
			
		||||
                    dialogModel.title
 | 
			
		||||
                ].join(""));
 | 
			
		||||
 | 
			
		||||
                return false;
 | 
			
		||||
            } else {
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * A user action that can be performed from a blocking dialog. These
 | 
			
		||||
         * actions will be rendered as buttons within a blocking dialog.
 | 
			
		||||
         *
 | 
			
		||||
         * @typedef DialogOption
 | 
			
		||||
         * @property {string} label a label to be displayed as the button
 | 
			
		||||
         * text for this action
 | 
			
		||||
         * @property {function} action a function to be called when the
 | 
			
		||||
         * button is clicked
 | 
			
		||||
         */
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * A description of the model options that may be passed to the
 | 
			
		||||
         * showBlockingMessage method. Note that the DialogModel desribed
 | 
			
		||||
         * here is shared with the Notifications framework.
 | 
			
		||||
         * @see NotificationService
 | 
			
		||||
         *
 | 
			
		||||
         * @typedef DialogModel
 | 
			
		||||
         * @property {string} title the title to use for the dialog
 | 
			
		||||
         * @property {string} severity the severity level of this message.
 | 
			
		||||
         * These are defined in a bundle constant with key 'dialogSeverity'
 | 
			
		||||
         * @property {string} hint the 'hint' message to show below the title
 | 
			
		||||
         * @property {string} actionText text that indicates a current action,
 | 
			
		||||
         * shown above a progress bar to indicate what's happening.
 | 
			
		||||
         * @property {number} progress a percentage value (1-100)
 | 
			
		||||
         * indicating the completion of the blocking task
 | 
			
		||||
         * @property {string} progressText the message to show below a
 | 
			
		||||
         * progress bar to indicate progress. For example, this might be
 | 
			
		||||
         * used to indicate time remaining, or items still to process.
 | 
			
		||||
         * @property {boolean} unknownProgress some tasks may be
 | 
			
		||||
         * impossible to provide an estimate for. Providing a true value for
 | 
			
		||||
         * this attribute will indicate to the user that the progress and
 | 
			
		||||
         * duration cannot be estimated.
 | 
			
		||||
         * @property {DialogOption} primaryOption an action that will
 | 
			
		||||
         * be added to the dialog as a button. The primary action can be
 | 
			
		||||
         * used as the suggested course of action for the user. Making it
 | 
			
		||||
         * distinct from other actions allows it to be styled differently,
 | 
			
		||||
         * and treated preferentially in banner mode.
 | 
			
		||||
         * @property {DialogOption[]} options a list of actions that will
 | 
			
		||||
         * be added to the dialog as buttons.
 | 
			
		||||
         */
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Displays a blocking (modal) dialog. This dialog can be used for
 | 
			
		||||
         * displaying messages that require the user's
 | 
			
		||||
         * immediate attention. The message may include an indication of
 | 
			
		||||
         * progress, as well as a series of actions that
 | 
			
		||||
         * the user can take if necessary
 | 
			
		||||
         * @param {DialogModel} dialogModel defines options for the dialog
 | 
			
		||||
         * @param {typeClass} string tells overlayService that this overlay should use appropriate CSS class
 | 
			
		||||
         * @returns {boolean}
 | 
			
		||||
         */
 | 
			
		||||
        DialogService.prototype.showBlockingMessage = function(dialogModel) {
 | 
			
		||||
            if (this.canShowDialog(dialogModel)) {
 | 
			
		||||
                // Add the overlay using the OverlayService, which
 | 
			
		||||
                // will handle actual insertion into the DOM
 | 
			
		||||
                this.overlay = this.overlayService.createOverlay(
 | 
			
		||||
                    "overlay-blocking-message",
 | 
			
		||||
                    dialogModel,
 | 
			
		||||
                    "t-dialog-sm"
 | 
			
		||||
                );
 | 
			
		||||
                // Track that a dialog is already visible, to
 | 
			
		||||
                // avoid spawning multiple dialogs at once.
 | 
			
		||||
                this.dialogVisible = true;
 | 
			
		||||
                return true;
 | 
			
		||||
            } else {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return DialogService;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -28,7 +28,7 @@ define(
 | 
			
		||||
 | 
			
		||||
        // Template to inject into the DOM to show the dialog; really just points to
 | 
			
		||||
        // the a specific template that can be included via mct-include
 | 
			
		||||
        var TEMPLATE = '<mct-include ng-model="overlay" key="key"></mct-include>';
 | 
			
		||||
        var TEMPLATE = '<mct-include ng-model="overlay" key="key" ng-class="typeClass"></mct-include>';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
@@ -71,8 +71,11 @@ define(
 | 
			
		||||
         * @param {object} overlayModel the model to pass to the
 | 
			
		||||
         *        included overlay template (this will be passed
 | 
			
		||||
         *        in via ng-model)
 | 
			
		||||
         * @param {string} typeClass the element class to use in rendering
 | 
			
		||||
         *        the overlay. Can be specified to provide custom styling of
 | 
			
		||||
         *        overlays
 | 
			
		||||
         */
 | 
			
		||||
        OverlayService.prototype.createOverlay = function (key, overlayModel) {
 | 
			
		||||
        OverlayService.prototype.createOverlay = function (key, overlayModel, typeClass) {
 | 
			
		||||
            // Create a new scope for this overlay
 | 
			
		||||
            var scope = this.newScope(),
 | 
			
		||||
                element;
 | 
			
		||||
@@ -90,6 +93,7 @@ define(
 | 
			
		||||
            // Populate the scope; will be passed directly to the template
 | 
			
		||||
            scope.overlay = overlayModel;
 | 
			
		||||
            scope.key = key;
 | 
			
		||||
            scope.typeClass = typeClass || 't-dialog';
 | 
			
		||||
 | 
			
		||||
            // Create the overlay element and add it to the document's body
 | 
			
		||||
            element = this.$compile(TEMPLATE)(scope);
 | 
			
		||||
 
 | 
			
		||||
@@ -116,10 +116,22 @@ define(
 | 
			
		||||
                        dialog: dialogModel,
 | 
			
		||||
                        confirm: jasmine.any(Function),
 | 
			
		||||
                        cancel: jasmine.any(Function)
 | 
			
		||||
                    }
 | 
			
		||||
                    },
 | 
			
		||||
                    't-dialog'
 | 
			
		||||
                );
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it("invokes the overlay service with the correct parameters when" +
 | 
			
		||||
                " a blocking dialog is requested", function() {
 | 
			
		||||
                var dialogModel = {};
 | 
			
		||||
                expect(dialogService.showBlockingMessage(dialogModel)).toBe(true);
 | 
			
		||||
                expect(mockOverlayService.createOverlay).toHaveBeenCalledWith(
 | 
			
		||||
                    "overlay-blocking-message",
 | 
			
		||||
                    dialogModel,
 | 
			
		||||
                    "t-dialog-sm"
 | 
			
		||||
                );
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
);
 | 
			
		||||
 
 | 
			
		||||
@@ -21,7 +21,7 @@
 | 
			
		||||
-->
 | 
			
		||||
<span ng-controller="EditActionController">
 | 
			
		||||
    <span ng-repeat="currentAction in editActions">
 | 
			
		||||
        <a class='btn'
 | 
			
		||||
        <a class='s-btn'
 | 
			
		||||
           ng-click="currentAction.perform()"
 | 
			
		||||
           ng-class="{ major: $index === 0, subtle: $index !== 0 }">
 | 
			
		||||
            {{currentAction.getMetadata().name}}
 | 
			
		||||
 
 | 
			
		||||
@@ -30,12 +30,11 @@
 | 
			
		||||
                         structure="toolbar.structure"
 | 
			
		||||
                         ng-model="toolbar.state">
 | 
			
		||||
            </mct-toolbar>
 | 
			
		||||
            <div class='holder abs object-holder work-area'>
 | 
			
		||||
                <mct-representation key="representation.selected.key"
 | 
			
		||||
                                    toolbar="toolbar"
 | 
			
		||||
                                    mct-object="representation.selected.key && domainObject">
 | 
			
		||||
                </mct-representation>
 | 
			
		||||
            </div>
 | 
			
		||||
            <mct-representation key="representation.selected.key"
 | 
			
		||||
                                toolbar="toolbar"
 | 
			
		||||
                                mct-object="representation.selected.key && domainObject"
 | 
			
		||||
                                class="holder abs object-holder work-area">
 | 
			
		||||
            </mct-representation>
 | 
			
		||||
        </div>
 | 
			
		||||
        <mct-splitter></mct-splitter>
 | 
			
		||||
        <div
 | 
			
		||||
 
 | 
			
		||||
@@ -36,20 +36,11 @@ define(
 | 
			
		||||
        function LinkAction(context) {
 | 
			
		||||
            this.domainObject = (context || {}).domainObject;
 | 
			
		||||
            this.selectedObject = (context || {}).selectedObject;
 | 
			
		||||
            this.selectedId = this.selectedObject && this.selectedObject.getId();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        LinkAction.prototype.perform = function () {
 | 
			
		||||
            var self = this;
 | 
			
		||||
 | 
			
		||||
            // Add this domain object's identifier
 | 
			
		||||
            function addId(model) {
 | 
			
		||||
                if (Array.isArray(model.composition) &&
 | 
			
		||||
                    model.composition.indexOf(self.selectedId) < 0) {
 | 
			
		||||
                    model.composition.push(self.selectedId);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            // Persist changes to the domain object
 | 
			
		||||
            function doPersist() {
 | 
			
		||||
                var persistence =
 | 
			
		||||
@@ -59,11 +50,13 @@ define(
 | 
			
		||||
 | 
			
		||||
            // Link these objects
 | 
			
		||||
            function doLink() {
 | 
			
		||||
                return self.domainObject.useCapability("mutation", addId)
 | 
			
		||||
                    .then(doPersist);
 | 
			
		||||
                var composition = self.domainObject &&
 | 
			
		||||
                        self.domainObject.getCapability('composition');
 | 
			
		||||
                return composition && composition.add(self.selectedObject)
 | 
			
		||||
                        .then(doPersist);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return this.selectedId && doLink();
 | 
			
		||||
            return this.selectedObject && doLink();
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        return LinkAction;
 | 
			
		||||
 
 | 
			
		||||
@@ -54,6 +54,9 @@ define(
 | 
			
		||||
                        var row = Object.create(property.getDefinition());
 | 
			
		||||
                        row.key = index;
 | 
			
		||||
                        return row;
 | 
			
		||||
                    }).filter(function (row) {
 | 
			
		||||
                        // Only show properties which are editable
 | 
			
		||||
                        return row.control;
 | 
			
		||||
                    })
 | 
			
		||||
                }]
 | 
			
		||||
            };
 | 
			
		||||
 
 | 
			
		||||
@@ -81,7 +81,7 @@ define(
 | 
			
		||||
                var persistence = domainObject.getCapability('persistence');
 | 
			
		||||
                return persistence && persistence.persist();
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
            /*
 | 
			
		||||
             * Checks current object and ascendants of current
 | 
			
		||||
             * object with object being removed, if the current
 | 
			
		||||
@@ -90,11 +90,11 @@ define(
 | 
			
		||||
             */
 | 
			
		||||
            function checkObjectNavigation(object, parentObject) {
 | 
			
		||||
                // Traverse object starts at current location
 | 
			
		||||
                var traverseObject = (navigationService).getNavigation();
 | 
			
		||||
                
 | 
			
		||||
                var traverseObject = (navigationService).getNavigation(),
 | 
			
		||||
                    context;
 | 
			
		||||
 | 
			
		||||
                // Stop when object is not defined (above ROOT)
 | 
			
		||||
                while (traverseObject) {
 | 
			
		||||
                    
 | 
			
		||||
                    // If object currently traversed to is object being removed
 | 
			
		||||
                    // navigate to parent of current object and then exit loop
 | 
			
		||||
                    if (traverseObject.getId() === object.getId()) {
 | 
			
		||||
@@ -103,7 +103,8 @@ define(
 | 
			
		||||
                    }
 | 
			
		||||
                    // Traverses to parent of current object, moving
 | 
			
		||||
                    // up the ascendant path
 | 
			
		||||
                    traverseObject = traverseObject.getCapability('context').getParent();
 | 
			
		||||
                    context = traverseObject.getCapability('context');
 | 
			
		||||
                    traverseObject = context && context.getParent();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
@@ -115,11 +116,11 @@ define(
 | 
			
		||||
            function removeFromContext(object) {
 | 
			
		||||
                var contextCapability = object.getCapability('context'),
 | 
			
		||||
                    parent = contextCapability.getParent();
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                // If currently within path of removed object(s),
 | 
			
		||||
                // navigates to existing object up tree
 | 
			
		||||
                checkObjectNavigation(object, parent);
 | 
			
		||||
                
 | 
			
		||||
 | 
			
		||||
                return $q.when(
 | 
			
		||||
                    parent.useCapability('mutation', doMutate)
 | 
			
		||||
                ).then(function () {
 | 
			
		||||
 
 | 
			
		||||
@@ -31,7 +31,7 @@ define(
 | 
			
		||||
                mockDomainObject,
 | 
			
		||||
                mockParent,
 | 
			
		||||
                mockContext,
 | 
			
		||||
                mockMutation,
 | 
			
		||||
                mockComposition,
 | 
			
		||||
                mockPersistence,
 | 
			
		||||
                mockType,
 | 
			
		||||
                actionContext,
 | 
			
		||||
@@ -67,7 +67,7 @@ define(
 | 
			
		||||
                    }
 | 
			
		||||
                };
 | 
			
		||||
                mockContext = jasmine.createSpyObj("context", [ "getParent" ]);
 | 
			
		||||
                mockMutation = jasmine.createSpyObj("mutation", [ "invoke" ]);
 | 
			
		||||
                mockComposition = jasmine.createSpyObj("composition", [ "invoke", "add" ]);
 | 
			
		||||
                mockPersistence = jasmine.createSpyObj("persistence", [ "persist" ]);
 | 
			
		||||
                mockType = jasmine.createSpyObj("type", [ "hasFeature" ]);
 | 
			
		||||
 | 
			
		||||
@@ -75,11 +75,11 @@ define(
 | 
			
		||||
                mockDomainObject.getCapability.andReturn(mockContext);
 | 
			
		||||
                mockContext.getParent.andReturn(mockParent);
 | 
			
		||||
                mockType.hasFeature.andReturn(true);
 | 
			
		||||
                mockMutation.invoke.andReturn(mockPromise(true));
 | 
			
		||||
 | 
			
		||||
                mockComposition.invoke.andReturn(mockPromise(true));
 | 
			
		||||
                mockComposition.add.andReturn(mockPromise(true));
 | 
			
		||||
 | 
			
		||||
                capabilities = {
 | 
			
		||||
                    mutation: mockMutation,
 | 
			
		||||
                    composition: mockComposition,
 | 
			
		||||
                    persistence: mockPersistence,
 | 
			
		||||
                    type: mockType
 | 
			
		||||
                };
 | 
			
		||||
@@ -96,33 +96,17 @@ define(
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            it("mutates the parent when performed", function () {
 | 
			
		||||
            it("adds to the parent's composition when performed", function () {
 | 
			
		||||
                action.perform();
 | 
			
		||||
                expect(mockMutation.invoke)
 | 
			
		||||
                    .toHaveBeenCalledWith(jasmine.any(Function));
 | 
			
		||||
                expect(mockComposition.add)
 | 
			
		||||
                    .toHaveBeenCalledWith(mockDomainObject);
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            it("changes composition from its mutation function", function () {
 | 
			
		||||
                var mutator, result;
 | 
			
		||||
            it("persists changes afterward", function () {
 | 
			
		||||
                action.perform();
 | 
			
		||||
                mutator = mockMutation.invoke.mostRecentCall.args[0];
 | 
			
		||||
                result = mutator(model);
 | 
			
		||||
 | 
			
		||||
                // Should not have cancelled the mutation
 | 
			
		||||
                expect(result).not.toBe(false);
 | 
			
		||||
 | 
			
		||||
                // Simulate mutate's behavior (remove can either return a
 | 
			
		||||
                // new model or modify this one in-place)
 | 
			
		||||
                result = result || model;
 | 
			
		||||
 | 
			
		||||
                // Should have removed "test" - that was our
 | 
			
		||||
                // mock domain object's id.
 | 
			
		||||
                expect(result.composition).toEqual(["a", "b", "c", "test"]);
 | 
			
		||||
 | 
			
		||||
                // Finally, should have persisted
 | 
			
		||||
                expect(mockPersistence.persist).toHaveBeenCalled();
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
);
 | 
			
		||||
);
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,7 @@ define(
 | 
			
		||||
                    return {
 | 
			
		||||
                        getValue: function (model) { return model[k]; },
 | 
			
		||||
                        setValue: function (model, v) { model[k] = v; },
 | 
			
		||||
                        getDefinition: function () { return {}; }
 | 
			
		||||
                        getDefinition: function () { return { control: 'textfield '}; }
 | 
			
		||||
                    };
 | 
			
		||||
                });
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -6,8 +6,13 @@
 | 
			
		||||
        "services": [
 | 
			
		||||
            {
 | 
			
		||||
                "key": "urlService",
 | 
			
		||||
                "implementation": "/services/UrlService.js",
 | 
			
		||||
                "implementation": "services/UrlService.js",
 | 
			
		||||
                "depends": [ "$location" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "popupService",
 | 
			
		||||
                "implementation": "services/PopupService.js",
 | 
			
		||||
                "depends": [ "$document", "$window" ]
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "runs": [
 | 
			
		||||
@@ -20,18 +25,6 @@
 | 
			
		||||
            {
 | 
			
		||||
                "stylesheetUrl": "css/normalize.min.css",
 | 
			
		||||
                "priority": "mandatory"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "stylesheetUrl": "css/theme-espresso.css",
 | 
			
		||||
                "priority": 1000
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "stylesheetUrl": "css/items.css",
 | 
			
		||||
                "priority": 901
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "stylesheetUrl": "css/tree.css",
 | 
			
		||||
                "priority": 900
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "templates": [
 | 
			
		||||
@@ -51,12 +44,30 @@
 | 
			
		||||
                "key": "indicator",
 | 
			
		||||
                "templateUrl": "templates/indicator.html"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "message-banner",
 | 
			
		||||
                "templateUrl": "templates/message-banner.html"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "progress-bar",
 | 
			
		||||
                "templateUrl": "templates/progress-bar.html"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
              "key": "time-controller",
 | 
			
		||||
              "templateUrl": "templates/controls/time-controller.html"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "controllers": [
 | 
			
		||||
            {
 | 
			
		||||
                "key": "TimeRangeController",
 | 
			
		||||
                "implementation": "controllers/TimeRangeController.js",
 | 
			
		||||
                "depends": [ "$scope", "now" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "DateTimePickerController",
 | 
			
		||||
                "implementation": "controllers/DateTimePickerController.js",
 | 
			
		||||
                "depends": [ "$scope", "now" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "TreeNodeController",
 | 
			
		||||
                "implementation": "controllers/TreeNodeController.js",
 | 
			
		||||
@@ -104,6 +115,11 @@
 | 
			
		||||
                "key": "SelectorController",
 | 
			
		||||
                "implementation": "controllers/SelectorController.js",
 | 
			
		||||
                "depends": [ "objectService", "$scope" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "BannerController",
 | 
			
		||||
                "implementation": "controllers/BannerController.js",
 | 
			
		||||
                "depends": ["$scope", "notificationService", "dialogService"]
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "directives": [
 | 
			
		||||
@@ -117,11 +133,21 @@
 | 
			
		||||
                "implementation": "directives/MCTDrag.js",
 | 
			
		||||
                "depends": [ "$document" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "mctClickElsewhere",
 | 
			
		||||
                "implementation": "directives/MCTClickElsewhere.js",
 | 
			
		||||
                "depends": [ "$document" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "mctResize",
 | 
			
		||||
                "implementation": "directives/MCTResize.js",
 | 
			
		||||
                "depends": [ "$timeout" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "mctPopup",
 | 
			
		||||
                "implementation": "directives/MCTPopup.js",
 | 
			
		||||
                "depends": [ "$compile", "popupService" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "mctScrollX",
 | 
			
		||||
                "implementation": "directives/MCTScroll.js",
 | 
			
		||||
@@ -135,7 +161,7 @@
 | 
			
		||||
            {
 | 
			
		||||
                "key": "mctSplitPane",
 | 
			
		||||
                "implementation": "directives/MCTSplitPane.js",
 | 
			
		||||
                "depends": [ "$parse", "$log" ]
 | 
			
		||||
                "depends": [ "$parse", "$log", "$interval" ]
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "mctSplitter",
 | 
			
		||||
@@ -225,6 +251,10 @@
 | 
			
		||||
            {
 | 
			
		||||
                "key": "selector",
 | 
			
		||||
                "templateUrl": "templates/controls/selector.html"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "key": "datetime-picker",
 | 
			
		||||
                "templateUrl": "templates/controls/datetime-picker.html"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "licenses": [
 | 
			
		||||
 
 | 
			
		||||
@@ -13,7 +13,7 @@ javascripts_dir = "js"
 | 
			
		||||
output_style = :nested
 | 
			
		||||
 | 
			
		||||
# To enable relative paths to assets via compass helper functions. Uncomment:
 | 
			
		||||
# relative_assets = true
 | 
			
		||||
relative_assets = true
 | 
			
		||||
 | 
			
		||||
# To disable debugging comments that display the original location of your selectors. Uncomment:
 | 
			
		||||
# line_comments = false
 | 
			
		||||
 
 | 
			
		||||
@@ -1,533 +0,0 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT Web, Copyright (c) 2014-2015, United States Government
 | 
			
		||||
 * as represented by the Administrator of the National Aeronautics and Space
 | 
			
		||||
 * Administration. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web is licensed under the Apache License, Version 2.0 (the
 | 
			
		||||
 * "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0.
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
			
		||||
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
			
		||||
 * License for the specific language governing permissions and limitations
 | 
			
		||||
 * under the License.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web includes source code licensed under additional open source
 | 
			
		||||
 * licenses. See the Open Source Licenses file (LICENSES.md) included with
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/************************** FEATURES */
 | 
			
		||||
/************************** VERY INFLUENTIAL GLOBAL DIMENSIONS */
 | 
			
		||||
/************************** COLORS AND SHADING */
 | 
			
		||||
/************************** RATIOS */
 | 
			
		||||
/************************** LAYOUT */
 | 
			
		||||
/************************** CONTROLS */
 | 
			
		||||
/************************** PATHS */
 | 
			
		||||
/************************** TIMINGS */
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/*********************************************** FORM ELEMENTS */
 | 
			
		||||
/*
 | 
			
		||||
@mixin invokeMenu($baseColor: $colorBodyFg) {
 | 
			
		||||
	$c: $baseColor;
 | 
			
		||||
	color: $c;
 | 
			
		||||
	&:hover {
 | 
			
		||||
		color: lighten($c, $ltGamma);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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 22, ../sass/forms/_elems.scss */
 | 
			
		||||
.section-header {
 | 
			
		||||
  -moz-border-radius: 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
  border-radius: 3px;
 | 
			
		||||
  background: rgba(255, 255, 255, 0.1);
 | 
			
		||||
  font-size: 0.8em;
 | 
			
		||||
  margin-top: 5px;
 | 
			
		||||
  padding: 5px; }
 | 
			
		||||
  /* line 28, ../sass/forms/_elems.scss */
 | 
			
		||||
  .section-header:first-child {
 | 
			
		||||
    margin-top: 0; }
 | 
			
		||||
 | 
			
		||||
/* line 35, ../sass/forms/_elems.scss */
 | 
			
		||||
.form .form-section {
 | 
			
		||||
  position: relative; }
 | 
			
		||||
/* line 39, ../sass/forms/_elems.scss */
 | 
			
		||||
.form .form-row {
 | 
			
		||||
  -moz-box-sizing: border-box;
 | 
			
		||||
  -webkit-box-sizing: border-box;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  *zoom: 1;
 | 
			
		||||
  border-top: 1px solid #4d4d4d;
 | 
			
		||||
  margin-top: 5px;
 | 
			
		||||
  padding: 5px;
 | 
			
		||||
  position: relative; }
 | 
			
		||||
  /* line 46, ../sass/forms/_elems.scss */
 | 
			
		||||
  .form .form-row.first {
 | 
			
		||||
    border-top: none; }
 | 
			
		||||
  /* line 50, ../sass/forms/_elems.scss */
 | 
			
		||||
  .form .form-row .label,
 | 
			
		||||
  .form .form-row .controls {
 | 
			
		||||
    -moz-box-sizing: border-box;
 | 
			
		||||
    -webkit-box-sizing: border-box;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    overflow: hidden;
 | 
			
		||||
    *zoom: 1;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    font-size: 0.75rem;
 | 
			
		||||
    line-height: 22px;
 | 
			
		||||
    min-height: 22px; }
 | 
			
		||||
  /* line 61, ../sass/forms/_elems.scss */
 | 
			
		||||
  .form .form-row > .label {
 | 
			
		||||
    float: left;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    white-space: nowrap;
 | 
			
		||||
    width: 20%; }
 | 
			
		||||
  /* line 69, ../sass/forms/_elems.scss */
 | 
			
		||||
  .form .form-row .value {
 | 
			
		||||
    color: #cccccc; }
 | 
			
		||||
  /* line 73, ../sass/forms/_elems.scss */
 | 
			
		||||
  .form .form-row .controls {
 | 
			
		||||
    float: left;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    width: 79.9%; }
 | 
			
		||||
    /* line 80, ../sass/forms/_elems.scss */
 | 
			
		||||
    .form .form-row .controls .l-composite-control.l-checkbox {
 | 
			
		||||
      display: inline-block;
 | 
			
		||||
      line-height: 14px;
 | 
			
		||||
      margin-right: 5px; }
 | 
			
		||||
    /* line 89, ../sass/forms/_elems.scss */
 | 
			
		||||
    .form .form-row .controls .l-med input[type="text"] {
 | 
			
		||||
      width: 200px; }
 | 
			
		||||
    /* line 93, ../sass/forms/_elems.scss */
 | 
			
		||||
    .form .form-row .controls .l-small input[type="text"] {
 | 
			
		||||
      width: 50px; }
 | 
			
		||||
    /* line 97, ../sass/forms/_elems.scss */
 | 
			
		||||
    .form .form-row .controls .l-numeric input[type="text"] {
 | 
			
		||||
      text-align: right; }
 | 
			
		||||
    /* line 101, ../sass/forms/_elems.scss */
 | 
			
		||||
    .form .form-row .controls .select {
 | 
			
		||||
      margin-right: 5px; }
 | 
			
		||||
  /* line 106, ../sass/forms/_elems.scss */
 | 
			
		||||
  .form .form-row .field-hints {
 | 
			
		||||
    color: #666666; }
 | 
			
		||||
  /* line 110, ../sass/forms/_elems.scss */
 | 
			
		||||
  .form .form-row .selector-list {
 | 
			
		||||
    -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;
 | 
			
		||||
    background: rgba(0, 0, 0, 0.2);
 | 
			
		||||
    padding: 5px;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    height: 150px;
 | 
			
		||||
    overflow: auto; }
 | 
			
		||||
    /* line 121, ../sass/forms/_elems.scss */
 | 
			
		||||
    .form .form-row .selector-list .wrapper {
 | 
			
		||||
      overflow-y: auto;
 | 
			
		||||
      position: absolute;
 | 
			
		||||
      top: 5px;
 | 
			
		||||
      right: 5px;
 | 
			
		||||
      bottom: 5px;
 | 
			
		||||
      left: 5px; }
 | 
			
		||||
 | 
			
		||||
/* line 135, ../sass/forms/_elems.scss */
 | 
			
		||||
label.form-control.checkbox input {
 | 
			
		||||
  margin-right: 5px;
 | 
			
		||||
  vertical-align: top; }
 | 
			
		||||
 | 
			
		||||
/* line 141, ../sass/forms/_elems.scss */
 | 
			
		||||
.hint,
 | 
			
		||||
.s-hint {
 | 
			
		||||
  font-size: 0.9em; }
 | 
			
		||||
 | 
			
		||||
/* line 146, ../sass/forms/_elems.scss */
 | 
			
		||||
.l-result {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  min-width: 32px;
 | 
			
		||||
  min-height: 32px;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  vertical-align: top; }
 | 
			
		||||
  /* line 153, ../sass/forms/_elems.scss */
 | 
			
		||||
  .l-result div.s-hint {
 | 
			
		||||
    -moz-border-radius: 2px;
 | 
			
		||||
    -webkit-border-radius: 2px;
 | 
			
		||||
    border-radius: 2px;
 | 
			
		||||
    background: rgba(255, 153, 0, 0.8);
 | 
			
		||||
    display: block;
 | 
			
		||||
    color: #ffd699;
 | 
			
		||||
    padding: 5px; }
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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 22, ../sass/forms/_textarea.scss */
 | 
			
		||||
.edit-main textarea {
 | 
			
		||||
  -moz-appearance: none;
 | 
			
		||||
  -webkit-appearance: none;
 | 
			
		||||
  -moz-border-radius: 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
  border-radius: 3px;
 | 
			
		||||
  -moz-box-sizing: border-box;
 | 
			
		||||
  -webkit-box-sizing: border-box;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  -moz-box-shadow: inset rgba(0, 0, 0, 0.65) 0 1px 4px;
 | 
			
		||||
  -webkit-box-shadow: inset rgba(0, 0, 0, 0.65) 0 1px 4px;
 | 
			
		||||
  box-shadow: inset rgba(0, 0, 0, 0.65) 0 1px 4px;
 | 
			
		||||
  background: rgba(255, 255, 255, 0.1);
 | 
			
		||||
  border: none;
 | 
			
		||||
  color: #cccccc;
 | 
			
		||||
  outline: none;
 | 
			
		||||
  padding: 5px;
 | 
			
		||||
  position: absolute;
 | 
			
		||||
  height: 100%;
 | 
			
		||||
  width: 100%; }
 | 
			
		||||
  /* line 33, ../sass/forms/_mixins.scss */
 | 
			
		||||
  .edit-main textarea.error {
 | 
			
		||||
    background: rgba(255, 0, 0, 0.5); }
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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 22, ../sass/forms/_text-input.scss */
 | 
			
		||||
input[type="text"] {
 | 
			
		||||
  -moz-appearance: none;
 | 
			
		||||
  -webkit-appearance: none;
 | 
			
		||||
  -moz-border-radius: 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
  border-radius: 3px;
 | 
			
		||||
  -moz-box-sizing: border-box;
 | 
			
		||||
  -webkit-box-sizing: border-box;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  -moz-box-shadow: inset rgba(0, 0, 0, 0.65) 0 1px 4px;
 | 
			
		||||
  -webkit-box-shadow: inset rgba(0, 0, 0, 0.65) 0 1px 4px;
 | 
			
		||||
  box-shadow: inset rgba(0, 0, 0, 0.65) 0 1px 4px;
 | 
			
		||||
  background: rgba(255, 255, 255, 0.1);
 | 
			
		||||
  border: none;
 | 
			
		||||
  color: #cccccc;
 | 
			
		||||
  outline: none;
 | 
			
		||||
  padding: 0 3px; }
 | 
			
		||||
  /* line 33, ../sass/forms/_mixins.scss */
 | 
			
		||||
  input[type="text"].error {
 | 
			
		||||
    background: rgba(255, 0, 0, 0.5); }
 | 
			
		||||
  /* line 29, ../sass/forms/_text-input.scss */
 | 
			
		||||
  input[type="text"].numeric {
 | 
			
		||||
    text-align: right; }
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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 22, ../sass/forms/_selects.scss */
 | 
			
		||||
.form-control.select {
 | 
			
		||||
  background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzUyNTI1MiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzQ1NDU0NSIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
 | 
			
		||||
  background-size: 100%;
 | 
			
		||||
  background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #525252), color-stop(100%, #454545));
 | 
			
		||||
  background-image: -moz-linear-gradient(#525252, #454545);
 | 
			
		||||
  background-image: -webkit-linear-gradient(#525252, #454545);
 | 
			
		||||
  background-image: linear-gradient(#525252, #454545);
 | 
			
		||||
  -moz-border-radius: 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
  border-radius: 3px;
 | 
			
		||||
  -moz-box-sizing: border-box;
 | 
			
		||||
  -webkit-box-sizing: border-box;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
 | 
			
		||||
  -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
 | 
			
		||||
  box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
 | 
			
		||||
  border: none;
 | 
			
		||||
  border-top: 1px solid #575757;
 | 
			
		||||
  color: #999;
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  cursor: pointer;
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  margin: 0 0 2px 2px;
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  position: relative; }
 | 
			
		||||
  /* line 162, ../sass/_mixins.scss */
 | 
			
		||||
  .form-control.select:not(.disabled):hover {
 | 
			
		||||
    background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzYzNjM2MyIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzU3NTc1NyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
 | 
			
		||||
    background-size: 100%;
 | 
			
		||||
    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #636363), color-stop(100%, #575757));
 | 
			
		||||
    background-image: -moz-linear-gradient(#636363, #575757);
 | 
			
		||||
    background-image: -webkit-linear-gradient(#636363, #575757);
 | 
			
		||||
    background-image: linear-gradient(#636363, #575757);
 | 
			
		||||
    color: #bdbdbd; }
 | 
			
		||||
    /* line 165, ../sass/_mixins.scss */
 | 
			
		||||
    .form-control.select:not(.disabled):hover.btn-menu .invoke-menu {
 | 
			
		||||
      color: #878787; }
 | 
			
		||||
  /* line 170, ../sass/_mixins.scss */
 | 
			
		||||
  .form-control.select.btn-menu .invoke-menu {
 | 
			
		||||
    color: #757575; }
 | 
			
		||||
  /* line 29, ../sass/forms/_selects.scss */
 | 
			
		||||
  .form-control.select select {
 | 
			
		||||
    -moz-appearance: none;
 | 
			
		||||
    -webkit-appearance: none;
 | 
			
		||||
    -moz-box-sizing: border-box;
 | 
			
		||||
    -webkit-box-sizing: border-box;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    background: none;
 | 
			
		||||
    color: #999;
 | 
			
		||||
    border: none !important;
 | 
			
		||||
    cursor: pointer;
 | 
			
		||||
    padding: 4px 25px 2px 5px;
 | 
			
		||||
    width: 120%; }
 | 
			
		||||
    /* line 38, ../sass/forms/_selects.scss */
 | 
			
		||||
    .form-control.select select option {
 | 
			
		||||
      margin: 5px 0; }
 | 
			
		||||
  /* line 42, ../sass/forms/_selects.scss */
 | 
			
		||||
  .form-control.select:after {
 | 
			
		||||
    color: #0099cc;
 | 
			
		||||
    content: "v";
 | 
			
		||||
    display: block;
 | 
			
		||||
    font-family: 'symbolsfont';
 | 
			
		||||
    pointer-events: none;
 | 
			
		||||
    position: absolute;
 | 
			
		||||
    right: 5px;
 | 
			
		||||
    top: 0; }
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT Web, Copyright (c) 2014-2015, United States Government
 | 
			
		||||
 * as represented by the Administrator of the National Aeronautics and Space
 | 
			
		||||
 * Administration. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web is licensed under the Apache License, Version 2.0 (the
 | 
			
		||||
 * "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0.
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
			
		||||
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
			
		||||
 * License for the specific language governing permissions and limitations
 | 
			
		||||
 * under the License.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web includes source code licensed under additional open source
 | 
			
		||||
 * licenses. See the Open Source Licenses file (LICENSES.md) included with
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/* line 23, ../sass/forms/_channel-selector.scss */
 | 
			
		||||
.channel-selector .line {
 | 
			
		||||
  margin-bottom: 5px;
 | 
			
		||||
  min-height: 22px; }
 | 
			
		||||
/* line 27, ../sass/forms/_channel-selector.scss */
 | 
			
		||||
.channel-selector .treeview {
 | 
			
		||||
  -moz-appearance: none;
 | 
			
		||||
  -webkit-appearance: none;
 | 
			
		||||
  -moz-border-radius: 3px;
 | 
			
		||||
  -webkit-border-radius: 3px;
 | 
			
		||||
  border-radius: 3px;
 | 
			
		||||
  -moz-box-sizing: border-box;
 | 
			
		||||
  -webkit-box-sizing: border-box;
 | 
			
		||||
  box-sizing: border-box;
 | 
			
		||||
  -moz-box-shadow: inset rgba(0, 0, 0, 0.65) 0 1px 4px;
 | 
			
		||||
  -webkit-box-shadow: inset rgba(0, 0, 0, 0.65) 0 1px 4px;
 | 
			
		||||
  box-shadow: inset rgba(0, 0, 0, 0.65) 0 1px 4px;
 | 
			
		||||
  background: rgba(255, 255, 255, 0.1);
 | 
			
		||||
  border: none;
 | 
			
		||||
  color: #cccccc;
 | 
			
		||||
  outline: none;
 | 
			
		||||
  padding: 0 3px;
 | 
			
		||||
  background: #3b3b3b;
 | 
			
		||||
  border-bottom: 1px solid #4d4d4d;
 | 
			
		||||
  min-height: 300px;
 | 
			
		||||
  max-height: 400px;
 | 
			
		||||
  overflow: auto;
 | 
			
		||||
  padding: 5px; }
 | 
			
		||||
  /* line 33, ../sass/forms/_mixins.scss */
 | 
			
		||||
  .channel-selector .treeview.error {
 | 
			
		||||
    background: rgba(255, 0, 0, 0.5); }
 | 
			
		||||
/* line 36, ../sass/forms/_channel-selector.scss */
 | 
			
		||||
.channel-selector .btns-add-remove {
 | 
			
		||||
  margin-top: 150px; }
 | 
			
		||||
  /* line 39, ../sass/forms/_channel-selector.scss */
 | 
			
		||||
  .channel-selector .btns-add-remove .btn {
 | 
			
		||||
    display: block;
 | 
			
		||||
    font-size: 1.5em;
 | 
			
		||||
    margin-bottom: 5px;
 | 
			
		||||
    padding: 10px;
 | 
			
		||||
    text-align: center; }
 | 
			
		||||
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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/forms/_datetime.scss */
 | 
			
		||||
.complex.datetime span {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  margin-right: 5px; }
 | 
			
		||||
/* line 36, ../sass/forms/_datetime.scss */
 | 
			
		||||
.complex.datetime .fields {
 | 
			
		||||
  margin-top: 3px 0;
 | 
			
		||||
  padding: 3px 0; }
 | 
			
		||||
/* line 41, ../sass/forms/_datetime.scss */
 | 
			
		||||
.complex.datetime .date {
 | 
			
		||||
  width: 85px; }
 | 
			
		||||
  /* line 44, ../sass/forms/_datetime.scss */
 | 
			
		||||
  .complex.datetime .date input {
 | 
			
		||||
    width: 80px; }
 | 
			
		||||
/* line 50, ../sass/forms/_datetime.scss */
 | 
			
		||||
.complex.datetime .time.sm {
 | 
			
		||||
  width: 45px; }
 | 
			
		||||
  /* line 53, ../sass/forms/_datetime.scss */
 | 
			
		||||
  .complex.datetime .time.sm input {
 | 
			
		||||
    width: 40px; }
 | 
			
		||||
@@ -1,299 +0,0 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT Web, Copyright (c) 2014-2015, United States Government
 | 
			
		||||
 * as represented by the Administrator of the National Aeronautics and Space
 | 
			
		||||
 * Administration. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web is licensed under the Apache License, Version 2.0 (the
 | 
			
		||||
 * "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0.
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
			
		||||
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
			
		||||
 * License for the specific language governing permissions and limitations
 | 
			
		||||
 * under the License.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web includes source code licensed under additional open source
 | 
			
		||||
 * licenses. See the Open Source Licenses file (LICENSES.md) included with
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/************************** FEATURES */
 | 
			
		||||
/************************** VERY INFLUENTIAL GLOBAL DIMENSIONS */
 | 
			
		||||
/************************** COLORS AND SHADING */
 | 
			
		||||
/************************** RATIOS */
 | 
			
		||||
/************************** LAYOUT */
 | 
			
		||||
/************************** CONTROLS */
 | 
			
		||||
/************************** PATHS */
 | 
			
		||||
/************************** TIMINGS */
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/*********************************************** FORM ELEMENTS */
 | 
			
		||||
/*
 | 
			
		||||
@mixin invokeMenu($baseColor: $colorBodyFg) {
 | 
			
		||||
	$c: $baseColor;
 | 
			
		||||
	color: $c;
 | 
			
		||||
	&:hover {
 | 
			
		||||
		color: lighten($c, $ltGamma);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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 22, ../sass/items/_item.scss */
 | 
			
		||||
.items-holder {
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  *zoom: 1;
 | 
			
		||||
  overflow-y: auto; }
 | 
			
		||||
  /* line 25, ../sass/items/_item.scss */
 | 
			
		||||
  .items-holder .contents {
 | 
			
		||||
    top: 0; }
 | 
			
		||||
  /* line 29, ../sass/items/_item.scss */
 | 
			
		||||
  .items-holder .item.grid-item {
 | 
			
		||||
    background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzVlNWU1ZSIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzUyNTI1MiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
 | 
			
		||||
    background-size: 100%;
 | 
			
		||||
    background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5e5e5e), color-stop(100%, #525252));
 | 
			
		||||
    background-image: -moz-linear-gradient(#5e5e5e, #525252);
 | 
			
		||||
    background-image: -webkit-linear-gradient(#5e5e5e, #525252);
 | 
			
		||||
    background-image: linear-gradient(#5e5e5e, #525252);
 | 
			
		||||
    -moz-border-radius: 3px;
 | 
			
		||||
    -webkit-border-radius: 3px;
 | 
			
		||||
    border-radius: 3px;
 | 
			
		||||
    -moz-box-sizing: border-box;
 | 
			
		||||
    -webkit-box-sizing: border-box;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
 | 
			
		||||
    -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
 | 
			
		||||
    box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
 | 
			
		||||
    border: none;
 | 
			
		||||
    border-top: 1px solid #636363;
 | 
			
		||||
    color: #999;
 | 
			
		||||
    display: inline-block;
 | 
			
		||||
    box-sizing: border-box;
 | 
			
		||||
    cursor: pointer;
 | 
			
		||||
    float: left;
 | 
			
		||||
    height: 200px;
 | 
			
		||||
    width: 200px;
 | 
			
		||||
    margin-bottom: 3px;
 | 
			
		||||
    margin-right: 3px;
 | 
			
		||||
    position: relative; }
 | 
			
		||||
    /* line 162, ../sass/_mixins.scss */
 | 
			
		||||
    .items-holder .item.grid-item:not(.disabled):hover {
 | 
			
		||||
      background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzcwNzA3MCIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzYzNjM2MyIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
 | 
			
		||||
      background-size: 100%;
 | 
			
		||||
      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #707070), color-stop(100%, #636363));
 | 
			
		||||
      background-image: -moz-linear-gradient(#707070, #636363);
 | 
			
		||||
      background-image: -webkit-linear-gradient(#707070, #636363);
 | 
			
		||||
      background-image: linear-gradient(#707070, #636363);
 | 
			
		||||
      color: #bdbdbd; }
 | 
			
		||||
      /* line 165, ../sass/_mixins.scss */
 | 
			
		||||
      .items-holder .item.grid-item:not(.disabled):hover.btn-menu .invoke-menu {
 | 
			
		||||
        color: #949494; }
 | 
			
		||||
    /* line 170, ../sass/_mixins.scss */
 | 
			
		||||
    .items-holder .item.grid-item.btn-menu .invoke-menu {
 | 
			
		||||
      color: #828282; }
 | 
			
		||||
    /* line 46, ../sass/items/_item.scss */
 | 
			
		||||
    .items-holder .item.grid-item:hover .item-main .item-type {
 | 
			
		||||
      color: #0099cc !important; }
 | 
			
		||||
      /* line 48, ../sass/items/_item.scss */
 | 
			
		||||
      .items-holder .item.grid-item:hover .item-main .item-type .l-icon-link {
 | 
			
		||||
        color: #49dedb; }
 | 
			
		||||
    /* line 52, ../sass/items/_item.scss */
 | 
			
		||||
    .items-holder .item.grid-item:hover .item-main .item-open {
 | 
			
		||||
      opacity: 1; }
 | 
			
		||||
    /* line 57, ../sass/items/_item.scss */
 | 
			
		||||
    .items-holder .item.grid-item .contents {
 | 
			
		||||
      top: 5px;
 | 
			
		||||
      right: 5px;
 | 
			
		||||
      bottom: 5px;
 | 
			
		||||
      left: 5px; }
 | 
			
		||||
    /* line 61, ../sass/items/_item.scss */
 | 
			
		||||
    .items-holder .item.grid-item .bar.top-bar.abs {
 | 
			
		||||
      bottom: auto;
 | 
			
		||||
      height: 20px;
 | 
			
		||||
      line-height: 20px;
 | 
			
		||||
      z-index: 5; }
 | 
			
		||||
      /* line 66, ../sass/items/_item.scss */
 | 
			
		||||
      .items-holder .item.grid-item .bar.top-bar.abs .left, .items-holder .item.grid-item .bar.top-bar.abs .right {
 | 
			
		||||
        width: auto; }
 | 
			
		||||
        /* line 68, ../sass/items/_item.scss */
 | 
			
		||||
        .items-holder .item.grid-item .bar.top-bar.abs .left .icon, .items-holder .item.grid-item .bar.top-bar.abs .right .icon {
 | 
			
		||||
          margin-left: 3px; }
 | 
			
		||||
          /* line 70, ../sass/items/_item.scss */
 | 
			
		||||
          .items-holder .item.grid-item .bar.top-bar.abs .left .icon.l-icon-link, .items-holder .item.grid-item .bar.top-bar.abs .right .icon.l-icon-link {
 | 
			
		||||
            color: #49dedb; }
 | 
			
		||||
    /* line 76, ../sass/items/_item.scss */
 | 
			
		||||
    .items-holder .item.grid-item .bar.bottom-bar.abs {
 | 
			
		||||
      top: auto;
 | 
			
		||||
      height: 30px;
 | 
			
		||||
      padding: 5px; }
 | 
			
		||||
    /* line 82, ../sass/items/_item.scss */
 | 
			
		||||
    .items-holder .item.grid-item .item-main {
 | 
			
		||||
      line-height: 160px;
 | 
			
		||||
      z-index: 1; }
 | 
			
		||||
      /* line 88, ../sass/items/_item.scss */
 | 
			
		||||
      .items-holder .item.grid-item .item-main .item-type {
 | 
			
		||||
        overflow: false;
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        top: 40px;
 | 
			
		||||
        right: 40px;
 | 
			
		||||
        bottom: 40px;
 | 
			
		||||
        left: 40px;
 | 
			
		||||
        width: auto;
 | 
			
		||||
        height: auto;
 | 
			
		||||
        color: #737373;
 | 
			
		||||
        text-align: center;
 | 
			
		||||
        font-size: 96.9px;
 | 
			
		||||
        line-height: 102px;
 | 
			
		||||
        bottom: auto;
 | 
			
		||||
        height: 102px;
 | 
			
		||||
        top: 30px; }
 | 
			
		||||
        /* line 100, ../sass/items/_item.scss */
 | 
			
		||||
        .items-holder .item.grid-item .item-main .item-type .l-icon-link {
 | 
			
		||||
          color: #1a8e8b;
 | 
			
		||||
          height: 36px;
 | 
			
		||||
          line-height: 36px;
 | 
			
		||||
          position: absolute;
 | 
			
		||||
          font-size: 32px;
 | 
			
		||||
          left: 0px;
 | 
			
		||||
          bottom: 10px;
 | 
			
		||||
          z-index: 2; }
 | 
			
		||||
      /* line 112, ../sass/items/_item.scss */
 | 
			
		||||
      .items-holder .item.grid-item .item-main .item-open {
 | 
			
		||||
        -moz-transition-property: "opacity";
 | 
			
		||||
        -o-transition-property: "opacity";
 | 
			
		||||
        -webkit-transition-property: "opacity";
 | 
			
		||||
        transition-property: "opacity";
 | 
			
		||||
        -moz-transition-duration: 200ms;
 | 
			
		||||
        -o-transition-duration: 200ms;
 | 
			
		||||
        -webkit-transition-duration: 200ms;
 | 
			
		||||
        transition-duration: 200ms;
 | 
			
		||||
        -moz-transition-timing-function: ease-in-out;
 | 
			
		||||
        -o-transition-timing-function: ease-in-out;
 | 
			
		||||
        -webkit-transition-timing-function: ease-in-out;
 | 
			
		||||
        transition-timing-function: ease-in-out;
 | 
			
		||||
        opacity: 0;
 | 
			
		||||
        font-size: 3em;
 | 
			
		||||
        left: auto;
 | 
			
		||||
        width: 50px;
 | 
			
		||||
        pointer-events: none;
 | 
			
		||||
        text-align: right; }
 | 
			
		||||
    /* line 124, ../sass/items/_item.scss */
 | 
			
		||||
    .items-holder .item.grid-item .title {
 | 
			
		||||
      text-shadow: rgba(0, 0, 0, 0.1) 0 1px 2px;
 | 
			
		||||
      color: #cccccc;
 | 
			
		||||
      overflow: hidden;
 | 
			
		||||
      white-space: nowrap;
 | 
			
		||||
      text-overflow: ellipsis; }
 | 
			
		||||
    /* line 132, ../sass/items/_item.scss */
 | 
			
		||||
    .items-holder .item.grid-item .details {
 | 
			
		||||
      font-size: 0.8em; }
 | 
			
		||||
    /* line 135, ../sass/items/_item.scss */
 | 
			
		||||
    .items-holder .item.grid-item.selected {
 | 
			
		||||
      background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzBhYzJmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzAwYjRmMCIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
 | 
			
		||||
      background-size: 100%;
 | 
			
		||||
      background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #0ac2ff), color-stop(100%, #00b4f0));
 | 
			
		||||
      background-image: -moz-linear-gradient(#0ac2ff, #00b4f0);
 | 
			
		||||
      background-image: -webkit-linear-gradient(#0ac2ff, #00b4f0);
 | 
			
		||||
      background-image: linear-gradient(#0ac2ff, #00b4f0);
 | 
			
		||||
      -moz-border-radius: 3px;
 | 
			
		||||
      -webkit-border-radius: 3px;
 | 
			
		||||
      border-radius: 3px;
 | 
			
		||||
      -moz-box-sizing: border-box;
 | 
			
		||||
      -webkit-box-sizing: border-box;
 | 
			
		||||
      box-sizing: border-box;
 | 
			
		||||
      -moz-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
 | 
			
		||||
      -webkit-box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
 | 
			
		||||
      box-shadow: rgba(0, 0, 0, 0.2) 0 1px 2px;
 | 
			
		||||
      border: none;
 | 
			
		||||
      border-top: 1px solid #14c4ff;
 | 
			
		||||
      color: #999;
 | 
			
		||||
      display: inline-block;
 | 
			
		||||
      color: #80dfff; }
 | 
			
		||||
      /* line 162, ../sass/_mixins.scss */
 | 
			
		||||
      .items-holder .item.grid-item.selected:not(.disabled):hover {
 | 
			
		||||
        background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPHN2ZyB2ZXJzaW9uPSIxLjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PGxpbmVhckdyYWRpZW50IGlkPSJncmFkIiBncmFkaWVudFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCIgeDE9IjAuNSIgeTE9IjAuMCIgeDI9IjAuNSIgeTI9IjEuMCI+PHN0b3Agb2Zmc2V0PSIwJSIgc3RvcC1jb2xvcj0iIzJlY2JmZiIvPjxzdG9wIG9mZnNldD0iMTAwJSIgc3RvcC1jb2xvcj0iIzE0YzRmZiIvPjwvbGluZWFyR3JhZGllbnQ+PC9kZWZzPjxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==');
 | 
			
		||||
        background-size: 100%;
 | 
			
		||||
        background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #2ecbff), color-stop(100%, #14c4ff));
 | 
			
		||||
        background-image: -moz-linear-gradient(#2ecbff, #14c4ff);
 | 
			
		||||
        background-image: -webkit-linear-gradient(#2ecbff, #14c4ff);
 | 
			
		||||
        background-image: linear-gradient(#2ecbff, #14c4ff);
 | 
			
		||||
        color: #bdbdbd; }
 | 
			
		||||
        /* line 165, ../sass/_mixins.scss */
 | 
			
		||||
        .items-holder .item.grid-item.selected:not(.disabled):hover.btn-menu .invoke-menu {
 | 
			
		||||
          color: #75ddff; }
 | 
			
		||||
      /* line 170, ../sass/_mixins.scss */
 | 
			
		||||
      .items-holder .item.grid-item.selected.btn-menu .invoke-menu {
 | 
			
		||||
        color: #52d4ff; }
 | 
			
		||||
      /* line 140, ../sass/items/_item.scss */
 | 
			
		||||
      .items-holder .item.grid-item.selected .item-type, .items-holder .item.grid-item.selected .top-bar .icon:not(.alert) {
 | 
			
		||||
        color: #80dfff; }
 | 
			
		||||
      /* line 141, ../sass/items/_item.scss */
 | 
			
		||||
      .items-holder .item.grid-item.selected .item-main .item-open {
 | 
			
		||||
        color: #80dfff; }
 | 
			
		||||
      /* line 142, ../sass/items/_item.scss */
 | 
			
		||||
      .items-holder .item.grid-item.selected .title {
 | 
			
		||||
        color: white; }
 | 
			
		||||
      /* line 144, ../sass/items/_item.scss */
 | 
			
		||||
      .items-holder .item.grid-item.selected:hover .item-main .item-type {
 | 
			
		||||
        color: white !important; }
 | 
			
		||||
@@ -1,120 +0,0 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT Web, Copyright (c) 2014-2015, United States Government
 | 
			
		||||
 * as represented by the Administrator of the National Aeronautics and Space
 | 
			
		||||
 * Administration. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web is licensed under the Apache License, Version 2.0 (the
 | 
			
		||||
 * "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0.
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
			
		||||
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
			
		||||
 * License for the specific language governing permissions and limitations
 | 
			
		||||
 * under the License.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web includes source code licensed under additional open source
 | 
			
		||||
 * licenses. See the Open Source Licenses file (LICENSES.md) included with
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/*
 | 
			
		||||
Syntax error: Undefined variable: "$colorBodyBg".
 | 
			
		||||
        on line 66 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss, in `boxOutline'
 | 
			
		||||
        from line 7 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss
 | 
			
		||||
        from line 10 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/main.scss
 | 
			
		||||
 | 
			
		||||
Backtrace:
 | 
			
		||||
/Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss:66:in `boxOutline'
 | 
			
		||||
/Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss:7
 | 
			
		||||
/Users/iMac/dev/nasa/wtd-dev/platform/sass/main.scss:10
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/variable.rb:49:in `_perform'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/node.rb:40:in `perform'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/funcall.rb:93:in `_perform'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/funcall.rb:93:in `map'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/funcall.rb:93:in `_perform'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/script/node.rb:40:in `perform'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:56:in `perform_arguments'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:50:in `zip'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:50:in `perform_arguments'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:261:in `visit_mixin'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `send'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:98:in `visit'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `visit_children'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `map'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `visit_children'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:107:in `visit_children'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:119:in `with_environment'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:106:in `visit_children'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:318:in `visit_rule'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `send'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:98:in `visit'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:225:in `visit_import'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:225:in `map'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:225:in `visit_import'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `send'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:98:in `visit'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `visit_children'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `map'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:53:in `visit_children'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:107:in `visit_children'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:119:in `with_environment'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:106:in `visit_children'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:126:in `visit_root'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `send'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/base.rb:37:in `visit'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:98:in `visit'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:7:in `send'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/visitors/perform.rb:7:in `visit'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/tree/root_node.rb:20:in `render'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/engine.rb:315:in `_render'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/sass-3.2.5/lib/sass/../sass/engine.rb:262:in `render'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:140:in `compile'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:126:in `timed'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:139:in `compile'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/logger.rb:45:in `red'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:138:in `compile'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:118:in `compile_if_required'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:103:in `run'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:101:in `each'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:101:in `run'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:126:in `timed'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/compiler.rb:100:in `run'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/commands/watch_project.rb:147:in `recompile'
 | 
			
		||||
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in `to_proc'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/path.rb:73:in `call'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/path.rb:73:in `run_callback'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/path.rb:55:in `callback_action'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/path.rb:35:in `update'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/state/directory.rb:39:in `modified'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/state/directory.rb:37:in `each'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/state/directory.rb:37:in `modified'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/state/directory.rb:18:in `refresh'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:17:in `run'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:17:in `each'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:17:in `run'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:15:in `loop'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/backends/polling.rb:15:in `run'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm/monitor.rb:26:in `run'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/fssm-0.2.9/lib/fssm.rb:70:in `monitor'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/commands/watch_project.rb:87:in `perform'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/commands/base.rb:18:in `execute'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/commands/project_base.rb:19:in `execute'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/exec/sub_command_ui.rb:43:in `perform!'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/lib/compass/exec/sub_command_ui.rb:15:in `run!'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/bin/compass:30
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/bin/compass:44:in `call'
 | 
			
		||||
/Library/Ruby/Gems/1.8/gems/compass-0.12.2/bin/compass:44
 | 
			
		||||
/usr/bin/compass:23:in `load'
 | 
			
		||||
/usr/bin/compass:23
 | 
			
		||||
*/
 | 
			
		||||
body:before {
 | 
			
		||||
  white-space: pre;
 | 
			
		||||
  font-family: monospace;
 | 
			
		||||
  content: "Syntax error: Undefined variable: \"$colorBodyBg\".\A         on line 66 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss, in `boxOutline'\A         from line 7 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/_effects.scss\A         from line 10 of /Users/iMac/dev/nasa/wtd-dev/platform/sass/main.scss"; }
 | 
			
		||||
@@ -1,498 +0,0 @@
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * Open MCT Web, Copyright (c) 2014-2015, United States Government
 | 
			
		||||
 * as represented by the Administrator of the National Aeronautics and Space
 | 
			
		||||
 * Administration. All rights reserved.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web is licensed under the Apache License, Version 2.0 (the
 | 
			
		||||
 * "License"); you may not use this file except in compliance with the License.
 | 
			
		||||
 * You may obtain a copy of the License at
 | 
			
		||||
 * http://www.apache.org/licenses/LICENSE-2.0.
 | 
			
		||||
 *
 | 
			
		||||
 * Unless required by applicable law or agreed to in writing, software
 | 
			
		||||
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 | 
			
		||||
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 | 
			
		||||
 * License for the specific language governing permissions and limitations
 | 
			
		||||
 * under the License.
 | 
			
		||||
 *
 | 
			
		||||
 * Open MCT Web includes source code licensed under additional open source
 | 
			
		||||
 * licenses. See the Open Source Licenses file (LICENSES.md) included with
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/************************** FEATURES */
 | 
			
		||||
/************************** VERY INFLUENTIAL GLOBAL DIMENSIONS */
 | 
			
		||||
/************************** COLORS AND SHADING */
 | 
			
		||||
/************************** RATIOS */
 | 
			
		||||
/************************** LAYOUT */
 | 
			
		||||
/************************** CONTROLS */
 | 
			
		||||
/************************** PATHS */
 | 
			
		||||
/************************** TIMINGS */
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/*********************************************** FORM ELEMENTS */
 | 
			
		||||
/*
 | 
			
		||||
@mixin invokeMenu($baseColor: $colorBodyFg) {
 | 
			
		||||
	$c: $baseColor;
 | 
			
		||||
	color: $c;
 | 
			
		||||
	&:hover {
 | 
			
		||||
		color: lighten($c, $ltGamma);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
*/
 | 
			
		||||
/*****************************************************************************
 | 
			
		||||
 * 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/tree/_tree.scss */
 | 
			
		||||
ul.tree {
 | 
			
		||||
  margin: 0;
 | 
			
		||||
  padding: 0; }
 | 
			
		||||
  /* line 308, ../sass/_mixins.scss */
 | 
			
		||||
  ul.tree li {
 | 
			
		||||
    list-style-type: none;
 | 
			
		||||
    margin: 0;
 | 
			
		||||
    padding: 0; }
 | 
			
		||||
  /* line 25, ../sass/tree/_tree.scss */
 | 
			
		||||
  ul.tree li {
 | 
			
		||||
    display: block;
 | 
			
		||||
    position: relative; }
 | 
			
		||||
    /* line 28, ../sass/tree/_tree.scss */
 | 
			
		||||
    ul.tree li span.tree-item {
 | 
			
		||||
      -moz-border-radius: 2px;
 | 
			
		||||
      -webkit-border-radius: 2px;
 | 
			
		||||
      border-radius: 2px;
 | 
			
		||||
      -moz-transition: background-color 0.25s;
 | 
			
		||||
      -o-transition: background-color 0.25s;
 | 
			
		||||
      -webkit-transition: background-color 0.25s;
 | 
			
		||||
      transition: background-color 0.25s;
 | 
			
		||||
      display: block;
 | 
			
		||||
      font-size: 0.8em;
 | 
			
		||||
      height: 1.5rem;
 | 
			
		||||
      line-height: 1.5rem;
 | 
			
		||||
      margin-bottom: 3px;
 | 
			
		||||
      position: relative; }
 | 
			
		||||
      /* line 39, ../sass/tree/_tree.scss */
 | 
			
		||||
      ul.tree li span.tree-item .view-control {
 | 
			
		||||
        display: inline-block;
 | 
			
		||||
        margin-left: 5px;
 | 
			
		||||
        font-size: 0.75em;
 | 
			
		||||
        width: 10px; }
 | 
			
		||||
        /* line 45, ../sass/tree/_tree.scss */
 | 
			
		||||
        ul.tree li span.tree-item .view-control:hover {
 | 
			
		||||
          color: #ffc700; }
 | 
			
		||||
      /* line 50, ../sass/tree/_tree.scss */
 | 
			
		||||
      ul.tree li span.tree-item .label {
 | 
			
		||||
        display: block;
 | 
			
		||||
        overflow: hidden;
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        top: 0px;
 | 
			
		||||
        right: 0px;
 | 
			
		||||
        bottom: 0px;
 | 
			
		||||
        left: 0px;
 | 
			
		||||
        width: auto;
 | 
			
		||||
        height: auto;
 | 
			
		||||
        left: 15px; }
 | 
			
		||||
        /* line 57, ../sass/tree/_tree.scss */
 | 
			
		||||
        ul.tree li span.tree-item .label .type-icon {
 | 
			
		||||
          overflow: false;
 | 
			
		||||
          position: absolute;
 | 
			
		||||
          top: 0;
 | 
			
		||||
          right: 0;
 | 
			
		||||
          bottom: 0;
 | 
			
		||||
          left: 0;
 | 
			
		||||
          width: auto;
 | 
			
		||||
          height: auto;
 | 
			
		||||
          text-shadow: rgba(0, 0, 0, 0.6) 0 1px 2px;
 | 
			
		||||
          color: #0099cc;
 | 
			
		||||
          left: 5px;
 | 
			
		||||
          right: auto;
 | 
			
		||||
          width: 1em; }
 | 
			
		||||
          /* line 65, ../sass/tree/_tree.scss */
 | 
			
		||||
          ul.tree li span.tree-item .label .type-icon .icon.l-icon-link, ul.tree li span.tree-item .label .type-icon .icon.l-icon-alert {
 | 
			
		||||
            text-shadow: black 0 1px 2px;
 | 
			
		||||
            position: absolute;
 | 
			
		||||
            z-index: 2; }
 | 
			
		||||
          /* line 71, ../sass/tree/_tree.scss */
 | 
			
		||||
          ul.tree li span.tree-item .label .type-icon .icon.l-icon-alert {
 | 
			
		||||
            color: #ff3c00;
 | 
			
		||||
            font-size: 8px;
 | 
			
		||||
            line-height: 8px;
 | 
			
		||||
            height: 8px;
 | 
			
		||||
            width: 8px;
 | 
			
		||||
            top: 1px;
 | 
			
		||||
            right: -2px; }
 | 
			
		||||
          /* line 77, ../sass/tree/_tree.scss */
 | 
			
		||||
          ul.tree li span.tree-item .label .type-icon .icon.l-icon-link {
 | 
			
		||||
            color: #49dedb;
 | 
			
		||||
            font-size: 8px;
 | 
			
		||||
            line-height: 8px;
 | 
			
		||||
            height: 8px;
 | 
			
		||||
            width: 8px;
 | 
			
		||||
            left: -3px;
 | 
			
		||||
            bottom: 5px; }
 | 
			
		||||
        /* line 86, ../sass/tree/_tree.scss */
 | 
			
		||||
        ul.tree li span.tree-item .label .title-label {
 | 
			
		||||
          overflow: hidden;
 | 
			
		||||
          position: absolute;
 | 
			
		||||
          top: 0px;
 | 
			
		||||
          right: 0px;
 | 
			
		||||
          bottom: 0px;
 | 
			
		||||
          left: 0px;
 | 
			
		||||
          width: auto;
 | 
			
		||||
          height: auto;
 | 
			
		||||
          display: block;
 | 
			
		||||
          left: 30px;
 | 
			
		||||
          overflow: hidden;
 | 
			
		||||
          text-overflow: ellipsis;
 | 
			
		||||
          white-space: nowrap; }
 | 
			
		||||
      /* line 97, ../sass/tree/_tree.scss */
 | 
			
		||||
      ul.tree li span.tree-item.loading {
 | 
			
		||||
        pointer-events: none; }
 | 
			
		||||
        /* line 99, ../sass/tree/_tree.scss */
 | 
			
		||||
        ul.tree li span.tree-item.loading .label {
 | 
			
		||||
          opacity: 0.5; }
 | 
			
		||||
          /* line 101, ../sass/tree/_tree.scss */
 | 
			
		||||
          ul.tree li span.tree-item.loading .label .title-label {
 | 
			
		||||
            font-style: italic; }
 | 
			
		||||
        /* line 105, ../sass/tree/_tree.scss */
 | 
			
		||||
        ul.tree li span.tree-item.loading .wait-spinner {
 | 
			
		||||
          margin-left: 14px; }
 | 
			
		||||
      /* line 110, ../sass/tree/_tree.scss */
 | 
			
		||||
      ul.tree li span.tree-item.selected {
 | 
			
		||||
        background: #005177;
 | 
			
		||||
        color: #fff; }
 | 
			
		||||
        /* line 114, ../sass/tree/_tree.scss */
 | 
			
		||||
        ul.tree li span.tree-item.selected .view-control {
 | 
			
		||||
          color: #0099cc; }
 | 
			
		||||
        /* line 117, ../sass/tree/_tree.scss */
 | 
			
		||||
        ul.tree li span.tree-item.selected .label .type-icon {
 | 
			
		||||
          color: #fff; }
 | 
			
		||||
      /* line 123, ../sass/tree/_tree.scss */
 | 
			
		||||
      ul.tree li span.tree-item:not(.selected):hover {
 | 
			
		||||
        background: #404040;
 | 
			
		||||
        color: #cccccc; }
 | 
			
		||||
        /* line 126, ../sass/tree/_tree.scss */
 | 
			
		||||
        ul.tree li span.tree-item:not(.selected):hover .context-trigger {
 | 
			
		||||
          display: block; }
 | 
			
		||||
        /* line 129, ../sass/tree/_tree.scss */
 | 
			
		||||
        ul.tree li span.tree-item:not(.selected):hover .icon {
 | 
			
		||||
          color: #33ccff; }
 | 
			
		||||
      /* line 135, ../sass/tree/_tree.scss */
 | 
			
		||||
      ul.tree li span.tree-item:not(.loading) {
 | 
			
		||||
        cursor: pointer; }
 | 
			
		||||
      /* line 139, ../sass/tree/_tree.scss */
 | 
			
		||||
      ul.tree li span.tree-item .context-trigger {
 | 
			
		||||
        top: -1px;
 | 
			
		||||
        position: absolute;
 | 
			
		||||
        right: 3px; }
 | 
			
		||||
        /* line 145, ../sass/tree/_tree.scss */
 | 
			
		||||
        ul.tree li span.tree-item .context-trigger .invoke-menu {
 | 
			
		||||
          font-size: 0.75em;
 | 
			
		||||
          height: 0.9rem;
 | 
			
		||||
          line-height: 0.9rem; }
 | 
			
		||||
  /* line 154, ../sass/tree/_tree.scss */
 | 
			
		||||
  ul.tree ul.tree {
 | 
			
		||||
    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 {
 | 
			
		||||
        display: none;
 | 
			
		||||
        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 299, ../sass/search/_search.scss */
 | 
			
		||||
      .search .search-scroll .results .search-result-item:not(.selected):hover {
 | 
			
		||||
        background: #404040;
 | 
			
		||||
        color: #cccccc; }
 | 
			
		||||
        /* line 302, ../sass/search/_search.scss */
 | 
			
		||||
        .search .search-scroll .results .search-result-item:not(.selected):hover .context-trigger {
 | 
			
		||||
          display: block; }
 | 
			
		||||
        /* line 305, ../sass/search/_search.scss */
 | 
			
		||||
        .search .search-scroll .results .search-result-item:not(.selected):hover .icon {
 | 
			
		||||
          color: #33ccff; }
 | 
			
		||||
    /* line 313, ../sass/search/_search.scss */
 | 
			
		||||
    .search .search-scroll .load-icon {
 | 
			
		||||
      position: relative; }
 | 
			
		||||
      /* line 315, ../sass/search/_search.scss */
 | 
			
		||||
      .search .search-scroll .load-icon.loading {
 | 
			
		||||
        pointer-events: none;
 | 
			
		||||
        margin-left: 6px; }
 | 
			
		||||
        /* line 319, ../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 329, ../sass/search/_search.scss */
 | 
			
		||||
        .search .search-scroll .load-icon.loading .wait-spinner {
 | 
			
		||||
          margin-left: 6px; }
 | 
			
		||||
      /* line 334, ../sass/search/_search.scss */
 | 
			
		||||
      .search .search-scroll .load-icon:not(.loading) {
 | 
			
		||||
        cursor: pointer; }
 | 
			
		||||
    /* line 339, ../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,123 +1,152 @@
 | 
			
		||||
{
 | 
			
		||||
	"metadata": {
 | 
			
		||||
		"name": "WTD Symbols v2.2",
 | 
			
		||||
		"lastOpened": 1439948744240,
 | 
			
		||||
		"created": 1439948734037
 | 
			
		||||
		"name": "WTD Symbols v2.3",
 | 
			
		||||
		"lastOpened": 1444267493342,
 | 
			
		||||
		"created": 1444266013303
 | 
			
		||||
	},
 | 
			
		||||
	"iconSets": [
 | 
			
		||||
		{
 | 
			
		||||
			"selection": [
 | 
			
		||||
				{
 | 
			
		||||
					"order": 82,
 | 
			
		||||
					"order": 90,
 | 
			
		||||
					"id": 87,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58896,
 | 
			
		||||
					"name": "icon-bell",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 91,
 | 
			
		||||
					"id": 86,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58889,
 | 
			
		||||
					"name": "icon-hourglass",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 92,
 | 
			
		||||
					"id": 85,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58888,
 | 
			
		||||
					"codes": [
 | 
			
		||||
						58888,
 | 
			
		||||
						58889,
 | 
			
		||||
						58890
 | 
			
		||||
					],
 | 
			
		||||
					"name": "icon-info-v15",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 93,
 | 
			
		||||
					"id": 84,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58887,
 | 
			
		||||
					"name": "icon-x-in-circle",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 77,
 | 
			
		||||
					"order": 94,
 | 
			
		||||
					"id": 83,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58881,
 | 
			
		||||
					"name": "icon-datatable",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 78,
 | 
			
		||||
					"order": 95,
 | 
			
		||||
					"id": 82,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58882,
 | 
			
		||||
					"name": "icon-tabular-scrolling",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 79,
 | 
			
		||||
					"order": 96,
 | 
			
		||||
					"id": 81,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58884,
 | 
			
		||||
					"name": "icon-tabular",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 80,
 | 
			
		||||
					"order": 97,
 | 
			
		||||
					"id": 80,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58885,
 | 
			
		||||
					"name": "icon-calendar",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 81,
 | 
			
		||||
					"order": 98,
 | 
			
		||||
					"id": 78,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58886,
 | 
			
		||||
					"name": "icon-paint-bucket",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 1,
 | 
			
		||||
					"order": 99,
 | 
			
		||||
					"id": 75,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 123,
 | 
			
		||||
					"name": "icon-pointer-left",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 3,
 | 
			
		||||
					"order": 100,
 | 
			
		||||
					"id": 74,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 125,
 | 
			
		||||
					"name": "icon-pointer-right",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 4,
 | 
			
		||||
					"order": 101,
 | 
			
		||||
					"id": 73,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 80,
 | 
			
		||||
					"name": "icon-person",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 5,
 | 
			
		||||
					"order": 102,
 | 
			
		||||
					"id": 72,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 232,
 | 
			
		||||
					"name": "icon-chain-links",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 6,
 | 
			
		||||
					"order": 103,
 | 
			
		||||
					"id": 71,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 115,
 | 
			
		||||
					"name": "icon-database-in-brackets",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 7,
 | 
			
		||||
					"order": 104,
 | 
			
		||||
					"id": 70,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 114,
 | 
			
		||||
					"name": "icon-refresh",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 8,
 | 
			
		||||
					"order": 105,
 | 
			
		||||
					"id": 69,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 108,
 | 
			
		||||
					"name": "icon-lock",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 9,
 | 
			
		||||
					"order": 106,
 | 
			
		||||
					"id": 68,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 51,
 | 
			
		||||
					"name": "icon-box-with-dashed-lines",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 10,
 | 
			
		||||
@@ -125,7 +154,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58880,
 | 
			
		||||
					"name": "icon-box-with-arrow-cursor",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 11,
 | 
			
		||||
@@ -133,7 +162,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 65,
 | 
			
		||||
					"name": "icon-activity-mode",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 12,
 | 
			
		||||
@@ -141,15 +170,15 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 97,
 | 
			
		||||
					"name": "icon-activity",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 13,
 | 
			
		||||
					"order": 87,
 | 
			
		||||
					"id": 64,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 33,
 | 
			
		||||
					"name": "icon-alert-rect",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 14,
 | 
			
		||||
@@ -157,7 +186,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58883,
 | 
			
		||||
					"name": "icon-alert-triangle",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 15,
 | 
			
		||||
@@ -165,7 +194,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 238,
 | 
			
		||||
					"name": "icon-arrow-double-down",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 16,
 | 
			
		||||
@@ -173,7 +202,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 235,
 | 
			
		||||
					"name": "icon-arrow-double-up",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 2,
 | 
			
		||||
@@ -181,7 +210,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 118,
 | 
			
		||||
					"name": "icon-arrow-down",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 19,
 | 
			
		||||
@@ -189,7 +218,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 60,
 | 
			
		||||
					"name": "icon-arrow-left",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 20,
 | 
			
		||||
@@ -197,7 +226,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 62,
 | 
			
		||||
					"name": "icon-arrow-right",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 21,
 | 
			
		||||
@@ -205,7 +234,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 236,
 | 
			
		||||
					"name": "icon-arrow-tall-down",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 22,
 | 
			
		||||
@@ -213,7 +242,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 237,
 | 
			
		||||
					"name": "icon-arrow-tall-up",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 23,
 | 
			
		||||
@@ -221,7 +250,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 94,
 | 
			
		||||
					"name": "icon-arrow-up",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 24,
 | 
			
		||||
@@ -229,7 +258,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 73,
 | 
			
		||||
					"name": "icon-arrows-out",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 25,
 | 
			
		||||
@@ -237,7 +266,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58893,
 | 
			
		||||
					"name": "icon-arrows-right-left",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 33,
 | 
			
		||||
@@ -245,7 +274,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 53,
 | 
			
		||||
					"name": "icon-arrows-up-down",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 26,
 | 
			
		||||
@@ -253,7 +282,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 42,
 | 
			
		||||
					"name": "icon-asterisk",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 27,
 | 
			
		||||
@@ -261,15 +290,15 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 72,
 | 
			
		||||
					"name": "icon-autoflow-tabular",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 28,
 | 
			
		||||
					"id": 49,
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 224,
 | 
			
		||||
					"name": "icon-box-round-corners",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"name": "icon-box",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 29,
 | 
			
		||||
@@ -277,7 +306,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 50,
 | 
			
		||||
					"name": "icon-check",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 30,
 | 
			
		||||
@@ -285,7 +314,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 67,
 | 
			
		||||
					"name": "icon-clock",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 31,
 | 
			
		||||
@@ -293,7 +322,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 46,
 | 
			
		||||
					"name": "icon-connectivity",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 32,
 | 
			
		||||
@@ -301,7 +330,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 100,
 | 
			
		||||
					"name": "icon-database-query",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 17,
 | 
			
		||||
@@ -309,7 +338,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 68,
 | 
			
		||||
					"name": "icon-database",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 35,
 | 
			
		||||
@@ -317,7 +346,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 81,
 | 
			
		||||
					"name": "icon-dictionary",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 36,
 | 
			
		||||
@@ -325,7 +354,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 242,
 | 
			
		||||
					"name": "icon-duplicate",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 37,
 | 
			
		||||
@@ -333,7 +362,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 102,
 | 
			
		||||
					"name": "icon-folder-new",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 38,
 | 
			
		||||
@@ -341,7 +370,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 70,
 | 
			
		||||
					"name": "icon-folder",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 39,
 | 
			
		||||
@@ -349,7 +378,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 95,
 | 
			
		||||
					"name": "icon-fullscreen-collapse",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 40,
 | 
			
		||||
@@ -357,7 +386,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 122,
 | 
			
		||||
					"name": "icon-fullscreen-expand",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 41,
 | 
			
		||||
@@ -365,7 +394,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 71,
 | 
			
		||||
					"name": "icon-gear",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 49,
 | 
			
		||||
@@ -373,7 +402,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 227,
 | 
			
		||||
					"name": "icon-image",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 42,
 | 
			
		||||
@@ -381,7 +410,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 225,
 | 
			
		||||
					"name": "icon-layers",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 43,
 | 
			
		||||
@@ -389,7 +418,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 76,
 | 
			
		||||
					"name": "icon-layout",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 44,
 | 
			
		||||
@@ -397,7 +426,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 226,
 | 
			
		||||
					"name": "icon-line-horz",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 75,
 | 
			
		||||
@@ -405,7 +434,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 244,
 | 
			
		||||
					"name": "icon-link",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 46,
 | 
			
		||||
@@ -413,7 +442,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 88,
 | 
			
		||||
					"name": "icon-magnify-in",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 47,
 | 
			
		||||
@@ -421,7 +450,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 89,
 | 
			
		||||
					"name": "icon-magnify-out",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 48,
 | 
			
		||||
@@ -429,7 +458,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 77,
 | 
			
		||||
					"name": "icon-magnify",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 34,
 | 
			
		||||
@@ -437,7 +466,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 109,
 | 
			
		||||
					"name": "icon-menu",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 50,
 | 
			
		||||
@@ -445,7 +474,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 243,
 | 
			
		||||
					"name": "icon-move",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 51,
 | 
			
		||||
@@ -453,7 +482,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 121,
 | 
			
		||||
					"name": "icon-new-window",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 52,
 | 
			
		||||
@@ -461,7 +490,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 111,
 | 
			
		||||
					"name": "icon-object",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 73,
 | 
			
		||||
@@ -469,7 +498,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 63,
 | 
			
		||||
					"name": "icon-object-unknown",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 53,
 | 
			
		||||
@@ -477,7 +506,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 86,
 | 
			
		||||
					"name": "icon-packet",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 54,
 | 
			
		||||
@@ -485,7 +514,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 234,
 | 
			
		||||
					"name": "icon-page",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 55,
 | 
			
		||||
@@ -493,7 +522,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 241,
 | 
			
		||||
					"name": "icon-pause",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 56,
 | 
			
		||||
@@ -501,7 +530,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 112,
 | 
			
		||||
					"name": "icon-pencil",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 65,
 | 
			
		||||
@@ -509,7 +538,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 79,
 | 
			
		||||
					"name": "icon-people",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 57,
 | 
			
		||||
@@ -517,7 +546,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 239,
 | 
			
		||||
					"name": "icon-play",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 58,
 | 
			
		||||
@@ -525,7 +554,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 233,
 | 
			
		||||
					"name": "icon-plot-resource",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 59,
 | 
			
		||||
@@ -533,7 +562,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 43,
 | 
			
		||||
					"name": "icon-plus",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 60,
 | 
			
		||||
@@ -541,7 +570,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 45,
 | 
			
		||||
					"name": "icon-minus",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 61,
 | 
			
		||||
@@ -549,7 +578,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 54,
 | 
			
		||||
					"name": "icon-sine",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 62,
 | 
			
		||||
@@ -557,7 +586,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 228,
 | 
			
		||||
					"name": "icon-T",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 63,
 | 
			
		||||
@@ -565,7 +594,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 116,
 | 
			
		||||
					"name": "icon-telemetry-panel",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 64,
 | 
			
		||||
@@ -573,7 +602,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 84,
 | 
			
		||||
					"name": "icon-telemetry",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 18,
 | 
			
		||||
@@ -581,7 +610,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 246,
 | 
			
		||||
					"name": "icon-thumbs-strip",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 67,
 | 
			
		||||
@@ -589,7 +618,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 83,
 | 
			
		||||
					"name": "icon-timeline",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 68,
 | 
			
		||||
@@ -597,7 +626,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 245,
 | 
			
		||||
					"name": "icon-timer",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 69,
 | 
			
		||||
@@ -605,7 +634,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 90,
 | 
			
		||||
					"name": "icon-trash",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 70,
 | 
			
		||||
@@ -613,7 +642,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 229,
 | 
			
		||||
					"name": "icon-two-parts-both",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 71,
 | 
			
		||||
@@ -621,7 +650,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 231,
 | 
			
		||||
					"name": "icon-two-parts-one-only",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 72,
 | 
			
		||||
@@ -629,7 +658,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 120,
 | 
			
		||||
					"name": "icon-x-heavy",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"order": 66,
 | 
			
		||||
@@ -637,7 +666,7 @@
 | 
			
		||||
					"prevSize": 32,
 | 
			
		||||
					"code": 58946,
 | 
			
		||||
					"name": "icon-x",
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
					"tempChar": ""
 | 
			
		||||
				}
 | 
			
		||||
			],
 | 
			
		||||
			"id": 2,
 | 
			
		||||
@@ -652,6 +681,79 @@
 | 
			
		||||
			"height": 1024,
 | 
			
		||||
			"prevSize": 32,
 | 
			
		||||
			"icons": [
 | 
			
		||||
				{
 | 
			
		||||
					"id": 87,
 | 
			
		||||
					"paths": [
 | 
			
		||||
						"M512 1024c106 0 192-86 192-192h-384c0 106 86 192 192 192z",
 | 
			
		||||
						"M896 448v-64c0-212-172-384-384-384s-384 172-384 384v64c0 70.6-57.4 128-128 128v128h1024v-128c-70.6 0-128-57.4-128-128z"
 | 
			
		||||
					],
 | 
			
		||||
					"attrs": [
 | 
			
		||||
						{
 | 
			
		||||
							"fill": "rgb(6, 161, 75)"
 | 
			
		||||
						},
 | 
			
		||||
						{
 | 
			
		||||
							"fill": "rgb(6, 161, 75)"
 | 
			
		||||
						}
 | 
			
		||||
					],
 | 
			
		||||
					"isMulticolor": false,
 | 
			
		||||
					"grid": 0,
 | 
			
		||||
					"tags": [
 | 
			
		||||
						"icon-bell"
 | 
			
		||||
					],
 | 
			
		||||
					"colorPermutations": {
 | 
			
		||||
						"125525525516161751": [
 | 
			
		||||
							1,
 | 
			
		||||
							1
 | 
			
		||||
						]
 | 
			
		||||
					}
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"id": 86,
 | 
			
		||||
					"paths": [
 | 
			
		||||
						"M1024 0h-1024c0 282.8 229.2 512 512 512s512-229.2 512-512zM512 384c-102.6 0-199-40-271.6-112.4-41.2-41.2-72-90.2-90.8-143.6h724.6c-18.8 53.4-49.6 102.4-90.8 143.6-72.4 72.4-168.8 112.4-271.4 112.4z",
 | 
			
		||||
						"M512 512c-282.8 0-512 229.2-512 512h1024c0-282.8-229.2-512-512-512z"
 | 
			
		||||
					],
 | 
			
		||||
					"attrs": [
 | 
			
		||||
						{
 | 
			
		||||
							"fill": "rgb(6, 161, 75)"
 | 
			
		||||
						},
 | 
			
		||||
						{
 | 
			
		||||
							"fill": "rgb(6, 161, 75)"
 | 
			
		||||
						}
 | 
			
		||||
					],
 | 
			
		||||
					"isMulticolor": false,
 | 
			
		||||
					"grid": 0,
 | 
			
		||||
					"tags": [
 | 
			
		||||
						"icon-hourglass"
 | 
			
		||||
					],
 | 
			
		||||
					"colorPermutations": {
 | 
			
		||||
						"125525525516161751": [
 | 
			
		||||
							1,
 | 
			
		||||
							1
 | 
			
		||||
						]
 | 
			
		||||
					}
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"id": 85,
 | 
			
		||||
					"paths": [
 | 
			
		||||
						"M512 0c-282.8 0-512 229.2-512 512s229.2 512 512 512 512-229.2 512-512-229.2-512-512-512zM512 128c70.6 0 128 57.4 128 128s-57.4 128-128 128c-70.6 0-128-57.4-128-128s57.4-128 128-128zM704 832h-384v-128h64v-256h256v256h64v128z"
 | 
			
		||||
					],
 | 
			
		||||
					"attrs": [
 | 
			
		||||
						{
 | 
			
		||||
							"fill": "rgb(0, 0, 0)"
 | 
			
		||||
						}
 | 
			
		||||
					],
 | 
			
		||||
					"isMulticolor": false,
 | 
			
		||||
					"grid": 0,
 | 
			
		||||
					"tags": [
 | 
			
		||||
						"icon-info-v1.5"
 | 
			
		||||
					],
 | 
			
		||||
					"colorPermutations": {
 | 
			
		||||
						"125525525516161751": [
 | 
			
		||||
							0
 | 
			
		||||
						]
 | 
			
		||||
					}
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"id": 84,
 | 
			
		||||
					"paths": [
 | 
			
		||||
@@ -664,7 +766,8 @@
 | 
			
		||||
						"icon-x-in-circle"
 | 
			
		||||
					],
 | 
			
		||||
					"colorPermutations": {
 | 
			
		||||
						"16161751": []
 | 
			
		||||
						"16161751": [],
 | 
			
		||||
						"125525525516161751": []
 | 
			
		||||
					}
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
@@ -840,17 +943,19 @@
 | 
			
		||||
				{
 | 
			
		||||
					"id": 78,
 | 
			
		||||
					"paths": [
 | 
			
		||||
						"M896 640c0 0-130 188-128 256 2 70.6 57.4 128 128 128s126-57.4 128-128c2-68-128-256-128-256z",
 | 
			
		||||
						"M449 129l0.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 640c-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"
 | 
			
		||||
						"M544 224v224c0 88.4-71.6 160-160 160s-160-71.6-160-160v-97.2l-197.4 196.4c-50 50-12.4 215.2 112.4 340s290 162.4 340 112.4l417-423.6-352-352z",
 | 
			
		||||
						"M896 1024c70.6 0 128-57.4 128-128 0-108.6-128-192-128-192s-128 83.4-128 192c0 70.6 57.4 128 128 128z",
 | 
			
		||||
						"M384 512c-35.4 0-64-28.6-64-64v-384c0-35.4 28.6-64 64-64s64 28.6 64 64v384c0 35.4-28.6 64-64 64z"
 | 
			
		||||
					],
 | 
			
		||||
					"attrs": [
 | 
			
		||||
						{
 | 
			
		||||
							"fill": "rgb(6,161,75)",
 | 
			
		||||
							"opacity": 1
 | 
			
		||||
							"fill": "rgb(6, 161, 75)"
 | 
			
		||||
						},
 | 
			
		||||
						{
 | 
			
		||||
							"fill": "rgb(6,161,75)",
 | 
			
		||||
							"opacity": 1
 | 
			
		||||
							"fill": "rgb(6, 161, 75)"
 | 
			
		||||
						},
 | 
			
		||||
						{
 | 
			
		||||
							"fill": "rgb(6, 161, 75)"
 | 
			
		||||
						}
 | 
			
		||||
					],
 | 
			
		||||
					"isMulticolor": false,
 | 
			
		||||
@@ -860,10 +965,12 @@
 | 
			
		||||
					],
 | 
			
		||||
					"colorPermutations": {
 | 
			
		||||
						"16161751": [
 | 
			
		||||
							1,
 | 
			
		||||
							1,
 | 
			
		||||
							1
 | 
			
		||||
						],
 | 
			
		||||
						"125525525516161751": [
 | 
			
		||||
							1,
 | 
			
		||||
							1,
 | 
			
		||||
							1
 | 
			
		||||
						]
 | 
			
		||||
@@ -1018,18 +1125,28 @@
 | 
			
		||||
				{
 | 
			
		||||
					"id": 67,
 | 
			
		||||
					"paths": [
 | 
			
		||||
						"M832 512.4c0-0.2 0-0.2 0-0.4v-320c0-105.6-86.4-192-192-192h-448c-105.6 0-192 86.4-192 192v320c0 105.6 86.4 192 192 192h263.6l-197.2-445.6 573.6 254z",
 | 
			
		||||
						"M766.8 659.8l193.8-20.4-576.6-255.4 255.4 576.6 20.4-193.8 257 257.2 107.2-107.2z"
 | 
			
		||||
						"M894-2h-768c-70.4 0-128 57.6-128 128v768c0 70.4 57.6 128 128 128h400c-2.2-3.8-4-7.6-5.8-11.4l-255.2-576.8c-21.4-48.4-10.8-105 26.6-142.4 24.4-24.4 57.2-37.4 90.4-37.4 17.4 0 35.2 3.6 51.8 11l576.6 255.4c4 1.8 7.8 3.8 11.4 5.8v-400.2c0.2-70.4-57.4-128-127.8-128z",
 | 
			
		||||
						"M958.6 637.4l-576.6-255.4 255.4 576.6 64.6-128.6 192 192 128-128-192-192z"
 | 
			
		||||
					],
 | 
			
		||||
					"attrs": [
 | 
			
		||||
						{},
 | 
			
		||||
						{}
 | 
			
		||||
						{
 | 
			
		||||
							"fill": "rgb(0, 0, 0)"
 | 
			
		||||
						},
 | 
			
		||||
						{
 | 
			
		||||
							"fill": "rgb(0, 0, 0)"
 | 
			
		||||
						}
 | 
			
		||||
					],
 | 
			
		||||
					"isMulticolor": false,
 | 
			
		||||
					"grid": 0,
 | 
			
		||||
					"tags": [
 | 
			
		||||
						"icon-box-with-arrow-cursor"
 | 
			
		||||
					]
 | 
			
		||||
					],
 | 
			
		||||
					"colorPermutations": {
 | 
			
		||||
						"125525525516161751": [
 | 
			
		||||
							0,
 | 
			
		||||
							0
 | 
			
		||||
						]
 | 
			
		||||
					}
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"id": 66,
 | 
			
		||||
@@ -1290,16 +1407,26 @@
 | 
			
		||||
				{
 | 
			
		||||
					"id": 49,
 | 
			
		||||
					"paths": [
 | 
			
		||||
						"M1024 832c0 105.6-86.4 192-192 192h-640c-105.6 0-192-86.4-192-192v-640c0-105.6 86.4-192 192-192h640c105.6 0 192 86.4 192 192v640z"
 | 
			
		||||
						"M0 0h1024v1024h-1024v-1024z"
 | 
			
		||||
					],
 | 
			
		||||
					"attrs": [
 | 
			
		||||
						{}
 | 
			
		||||
						{
 | 
			
		||||
							"fill": "rgb(0, 0, 0)"
 | 
			
		||||
						}
 | 
			
		||||
					],
 | 
			
		||||
					"isMulticolor": false,
 | 
			
		||||
					"grid": 0,
 | 
			
		||||
					"tags": [
 | 
			
		||||
						"icon-box-round-corners"
 | 
			
		||||
					]
 | 
			
		||||
					],
 | 
			
		||||
					"colorPermutations": {
 | 
			
		||||
						"16161751": [
 | 
			
		||||
							0
 | 
			
		||||
						],
 | 
			
		||||
						"125525525516161751": [
 | 
			
		||||
							0
 | 
			
		||||
						]
 | 
			
		||||
					}
 | 
			
		||||
				},
 | 
			
		||||
				{
 | 
			
		||||
					"id": 48,
 | 
			
		||||
@@ -2046,6 +2173,12 @@
 | 
			
		||||
						161,
 | 
			
		||||
						75,
 | 
			
		||||
						1
 | 
			
		||||
					],
 | 
			
		||||
					[
 | 
			
		||||
						255,
 | 
			
		||||
						255,
 | 
			
		||||
						255,
 | 
			
		||||
						1
 | 
			
		||||
					]
 | 
			
		||||
				]
 | 
			
		||||
			],
 | 
			
		||||
 
 | 
			
		||||
@@ -55,7 +55,7 @@
 | 
			
		||||
<glyph unicode="z" glyph-name="icon-fullscreen-expand" d="M192.344 128c-0.118 0.1-0.244 0.224-0.344 0.344v191.656h-192v-192c0-105.6 86.4-192 192-192h192v192h-191.656zM192 767.656c0.1 0.118 0.224 0.244 0.344 0.344h191.656v192h-192c-105.6 0-192-86.4-192-192v-192h192v191.656zM832 960h-192v-192h191.656c0.118-0.1 0.244-0.226 0.344-0.344v-191.656h192v192c0 105.6-86.4 192-192 192zM832 128.344c-0.1-0.118-0.224-0.244-0.344-0.344h-191.656v-192h192c105.6 0 192 86.4 192 192v192h-192v-191.656z" />
 | 
			
		||||
<glyph unicode="{" glyph-name="icon-pointer-left" horiz-adv-x="512" d="M510-64l-256 512 256 512h-256l-256-512 256-512z" />
 | 
			
		||||
<glyph unicode="}" glyph-name="icon-pointer-right" horiz-adv-x="512" d="M-2 960l256-512-256-512h256l256 512-256 512z" />
 | 
			
		||||
<glyph unicode="à" glyph-name="icon-box-round-corners" d="M1024 128c0-105.6-86.4-192-192-192h-640c-105.6 0-192 86.4-192 192v640c0 105.6 86.4 192 192 192h640c105.6 0 192-86.4 192-192v-640z" />
 | 
			
		||||
<glyph unicode="à" glyph-name="icon-box" d="M0 960h1024v-1024h-1024v1024z" />
 | 
			
		||||
<glyph unicode="á" glyph-name="icon-layers" d="M1024 576l-512 384-512-384 512-384zM512 64l-426.666 320-85.334-64 512-384 512 384-85.334 64z" />
 | 
			
		||||
<glyph unicode="â" glyph-name="icon-line-horz" d="M64 384c-35.346 0-64 28.654-64 64s28.654 64 64 64h896c35.346 0 64-28.654 64-64s-28.654-64-64-64h-896z" />
 | 
			
		||||
<glyph unicode="ã" glyph-name="icon-image" 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 128zM896 64h-768v768h768v-768zM320 704l-128-128v-448h640v320l-128 128-128-128z" />
 | 
			
		||||
@@ -76,14 +76,17 @@
 | 
			
		||||
<glyph unicode="ô" glyph-name="icon-link" d="M1024 448l-512 512v-307.2l-512-204.8v-256h512v-256z" />
 | 
			
		||||
<glyph unicode="õ" glyph-name="icon-timer" d="M638 898c0 35.4-28.6 64-64 64h-128c-35.4 0-64-28.6-64-64s28.6-64 64-64h128c35.4 0 64 28.6 64 64zM510 834c-247.4 0-448-200.6-448-448s200.6-448 448-448 448 200.6 448 448-200.6 448-448 448zM510 386h-336c0 185.2 150.8 336 336 336v-336z" />
 | 
			
		||||
<glyph unicode="ö" glyph-name="icon-thumbs-strip" d="M448 578c0-35.2-28.8-64-64-64h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-320zM1024 578c0-35.2-28.8-64-64-64h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-320zM448 2c0-35.2-28.8-64-64-64h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-320zM1024 2c0-35.2-28.8-64-64-64h-320c-35.2 0-64 28.8-64 64v320c0 35.2 28.8 64 64 64h320c35.2 0 64-28.8 64-64v-320z" />
 | 
			
		||||
<glyph unicode="" glyph-name="icon-box-with-arrow-cursor" d="M832 447.6c0 0.2 0 0.2 0 0.4v320c0 105.6-86.4 192-192 192h-448c-105.6 0-192-86.4-192-192v-320c0-105.6 86.4-192 192-192h263.6l-197.2 445.6 573.6-254zM766.8 300.2l193.8 20.4-576.6 255.4 255.4-576.6 20.4 193.8 257-257.2 107.2 107.2z" />
 | 
			
		||||
<glyph unicode="" glyph-name="icon-box-with-arrow-cursor" d="M894 962h-768c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128h400c-2.2 3.8-4 7.6-5.8 11.4l-255.2 576.8c-21.4 48.4-10.8 105 26.6 142.4 24.4 24.4 57.2 37.4 90.4 37.4 17.4 0 35.2-3.6 51.8-11l576.6-255.4c4-1.8 7.8-3.8 11.4-5.8v400.2c0.2 70.4-57.4 128-127.8 128zM958.6 322.6l-576.6 255.4 255.4-576.6 64.6 128.6 192-192 128 128-192 192z" />
 | 
			
		||||
<glyph unicode="" glyph-name="icon-datatable" d="M1024 768c0-106.039-229.23-192-512-192s-512 85.961-512 192c0 106.039 229.23 192 512 192s512-85.961 512-192zM512 448c-282.8 0-512 86-512 192v-512c0-106 229.2-192 512-192s512 86 512 192v512c0-106-229.2-192-512-192zM896 385v-256c-36.6-15.6-79.8-28.8-128-39.4v256c48.2 10.6 91.4 23.8 128 39.4zM256 345.6v-256c-48.2 10.4-91.4 23.8-128 39.4v256c36.6-15.6 79.8-28.8 128-39.4zM384 70v256c41-4 83.8-6 128-6s87 2.2 128 6v-256c-41-4-83.8-6-128-6s-87 2.2-128 6z" />
 | 
			
		||||
<glyph unicode="" glyph-name="icon-tabular-scrolling" d="M64 960c-35.2 0-64-28.8-64-64v-192h448v256h-384zM1024 704v192c0 35.2-28.8 64-64 64h-384v-256h448zM0 576v-192c0-35.2 28.8-64 64-64h384v256h-448zM960 320c35.2 0 64 28.8 64 64v192h-448v-256h384zM512-64l-256 256h512z" />
 | 
			
		||||
<glyph unicode="" glyph-name="icon-alert-triangle" d="M998.208 111.136l-422.702 739.728c-34.928 61.124-92.084 61.124-127.012 0l-422.702-739.728c-34.928-61.126-5.906-111.136 64.494-111.136h843.428c70.4 0 99.422 50.010 64.494 111.136zM512 128c-35.2 0-64 28.8-64 64s28.8 64 64 64 64-28.8 64-64c0-35.2-28.8-64-64-64zM627.448 577.242l-38.898-194.486c-6.902-34.516-41.35-62.756-76.55-62.756s-69.648 28.24-76.552 62.758l-38.898 194.486c-6.902 34.516 16.25 62.756 51.45 62.756h128c35.2 0 58.352-28.24 51.448-62.758z" />
 | 
			
		||||
<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-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="M544 736v-224c0-88.4-71.6-160-160-160s-160 71.6-160 160v97.2l-197.4-196.4c-50-50-12.4-215.2 112.4-340s290-162.4 340-112.4l417 423.6-352 352zM896-64c70.6 0 128 57.4 128 128 0 108.6-128 192-128 192s-128-83.4-128-192c0-70.6 57.4-128 128-128zM384 448c-35.4 0-64 28.6-64 64v384c0 35.4 28.6 64 64 64s64-28.6 64-64v-384c0-35.4-28.6-64-64-64z" />
 | 
			
		||||
<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-info-v15" d="M512 960c-282.8 0-512-229.2-512-512s229.2-512 512-512 512 229.2 512 512-229.2 512-512 512zM512 832c70.6 0 128-57.4 128-128s-57.4-128-128-128c-70.6 0-128 57.4-128 128s57.4 128 128 128zM704 128h-384v128h64v256h256v-256h64v-128z" />
 | 
			
		||||
<glyph unicode="" glyph-name="icon-hourglass" d="M1024 960h-1024c0-282.8 229.2-512 512-512s512 229.2 512 512zM512 576c-102.6 0-199 40-271.6 112.4-41.2 41.2-72 90.2-90.8 143.6h724.6c-18.8-53.4-49.6-102.4-90.8-143.6-72.4-72.4-168.8-112.4-271.4-112.4zM512 448c-282.8 0-512-229.2-512-512h1024c0 282.8-229.2 512-512 512z" />
 | 
			
		||||
<glyph unicode="" glyph-name="icon-arrows-right-left" d="M1024 448l-448-512v1024zM448 960l-448-512 448-512z" />
 | 
			
		||||
<glyph unicode="" glyph-name="icon-bell" d="M512-64c106 0 192 86 192 192h-384c0-106 86-192 192-192zM896 512v64c0 212-172 384-384 384s-384-172-384-384v-64c0-70.6-57.4-128-128-128v-128h1024v128c-70.6 0-128 57.4-128 128z" />
 | 
			
		||||
<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>
 | 
			
		||||
| 
		 Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 27 KiB  | 
@@ -59,7 +59,7 @@
 | 
			
		||||
	line-height: 120%;
 | 
			
		||||
 | 
			
		||||
	a {
 | 
			
		||||
		color: #84b3ff;
 | 
			
		||||
		color: $colorAboutLink;
 | 
			
		||||
	}
 | 
			
		||||
	.s-description,
 | 
			
		||||
	.s-info {
 | 
			
		||||
@@ -89,7 +89,7 @@
 | 
			
		||||
				border-top: none;
 | 
			
		||||
			}
 | 
			
		||||
			em {
 | 
			
		||||
				color: darken($colorBodyFg, 20%);
 | 
			
		||||
				color: pushBack($colorBodyFg, 20%);
 | 
			
		||||
//				margin-left: 2em;
 | 
			
		||||
				&:first-child {
 | 
			
		||||
//					margin-left: 0;
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@
 | 
			
		||||
	font-size: 0.75rem;
 | 
			
		||||
 | 
			
		||||
	&:hover {
 | 
			
		||||
		.l-autoflow-header .l-btn.change-column-width {
 | 
			
		||||
		.l-autoflow-header .s-btn.change-column-width {
 | 
			
		||||
			@include trans-prop-nice-fade(50ms);
 | 
			
		||||
			opacity: 1;
 | 
			
		||||
		}
 | 
			
		||||
@@ -45,7 +45,7 @@
 | 
			
		||||
		span {
 | 
			
		||||
			vertical-align: middle;
 | 
			
		||||
		}
 | 
			
		||||
		.l-btn.change-column-width {
 | 
			
		||||
		.s-btn.change-column-width {
 | 
			
		||||
			@include trans-prop-nice-fade(500ms);
 | 
			
		||||
			opacity: 0;
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -28,64 +28,8 @@ $bodyMargin: 10px;
 | 
			
		||||
$interiorMargin: 5px;
 | 
			
		||||
$interiorMarginLg: $interiorMargin * 2;
 | 
			
		||||
$interiorMarginSm: 3px;
 | 
			
		||||
$basicCr: 2px;
 | 
			
		||||
$controlCr: 3px;
 | 
			
		||||
$smallCr: 2px;
 | 
			
		||||
$badgeW: 35px;
 | 
			
		||||
 | 
			
		||||
/************************** COLORS AND SHADING */
 | 
			
		||||
$colorBodyBg: #333;
 | 
			
		||||
$colorBodyFg: #999;
 | 
			
		||||
$colorFooterBg: #000;
 | 
			
		||||
$colorKey: #0099cc;
 | 
			
		||||
$colorKeySelectedBg: #005177;
 | 
			
		||||
$colorKeyFg: #fff;
 | 
			
		||||
$colorAlt1: #ffc700;
 | 
			
		||||
$colorAlert: #ff3c00;
 | 
			
		||||
$colorIconLink: #49dedb;
 | 
			
		||||
$colorPausedBg: #c56f01;
 | 
			
		||||
$colorPausedFg: #fff;
 | 
			
		||||
$colorCreateBtn: $colorKey;
 | 
			
		||||
$colorGridLines: rgba(#fff, 0.05);
 | 
			
		||||
// Menu colors
 | 
			
		||||
$colorMenuBg: lighten($colorBodyBg, 23%);
 | 
			
		||||
$colorMenuFg: lighten($colorMenuBg, 70%);
 | 
			
		||||
$colorMenuIc: lighten($colorKey, 17%);
 | 
			
		||||
$colorInteriorBorder: lighten($colorBodyBg, 10%);
 | 
			
		||||
$colorObjFrameBg: darken($colorBodyBg, 5%);
 | 
			
		||||
// Form colors
 | 
			
		||||
$colorCheck: $colorKey;
 | 
			
		||||
$colorFormRequired: #ffc700;
 | 
			
		||||
$colorFormValid: #33cc33;
 | 
			
		||||
$colorFormError: #cc0000;
 | 
			
		||||
$colorFormInvalid: #ff9900;
 | 
			
		||||
// Limits and staleness colors
 | 
			
		||||
$colorLimitYellow: #9d7500;
 | 
			
		||||
$colorLimitRed: #aa0000;
 | 
			
		||||
$colorTelemFresh: #fff;
 | 
			
		||||
$colorTelemStale: #888;
 | 
			
		||||
$styleTelemStale: italic;
 | 
			
		||||
// Bubble colors
 | 
			
		||||
$colorInfoBubbleFg: #666;
 | 
			
		||||
$colorInfoBubbleBg: #ddd;
 | 
			
		||||
$colorThumbsBubbleFg: lighten($colorBodyFg, 10%);
 | 
			
		||||
$colorThumbsBubbleBg: lighten($colorBodyBg, 10%);
 | 
			
		||||
// Overlay
 | 
			
		||||
$colorOvrBlocker: rgba(black, 0.7);
 | 
			
		||||
$colorOvrBg: $colorBodyBg;
 | 
			
		||||
$colorOvrFg: $colorBodyFg;
 | 
			
		||||
// Items
 | 
			
		||||
$colorItemBase: lighten($colorBodyBg, 5%);
 | 
			
		||||
$colorItemFg: lighten($colorItemBase, 20%);
 | 
			
		||||
$colorItemSelected: $colorKey;
 | 
			
		||||
// Tabular
 | 
			
		||||
$tabularColorBorder: rgba(white, 0.1);
 | 
			
		||||
$tabularColorBodyBg: darken($colorBodyBg, 10%);
 | 
			
		||||
$tabularColorBodyFg: lighten($tabularColorBodyBg, 40%);
 | 
			
		||||
$tabularColorHeaderBg: lighten($colorBodyBg, 10%);
 | 
			
		||||
$tabularColorHeaderFg: lighten($tabularColorHeaderBg, 40%);
 | 
			
		||||
$tabularColorHeaderBorder: $colorBodyBg;
 | 
			
		||||
 | 
			
		||||
/************************** RATIOS */
 | 
			
		||||
$ltGamma: 20%;
 | 
			
		||||
$btnFontSizeToH: 0.45;
 | 
			
		||||
@@ -101,9 +45,11 @@ $ueEditToolBarH: 25px;
 | 
			
		||||
$ueBrowseLeftPaneW: 25%;
 | 
			
		||||
$ueEditLeftPaneW: 75%;
 | 
			
		||||
$treeSearchInputBarH: 25px;
 | 
			
		||||
$ueTimeControlH: (33px, 20px, 20px);
 | 
			
		||||
// Overlay
 | 
			
		||||
$ovrTopBarH: 60px;
 | 
			
		||||
$ovrFooterH: 40px;
 | 
			
		||||
$ovrTopBarH: 45px;
 | 
			
		||||
$ovrFooterH: 24px;
 | 
			
		||||
$overlayMargin: 25px;
 | 
			
		||||
// Items
 | 
			
		||||
$ueBrowseGridItemLg: 200px;
 | 
			
		||||
$ueBrowseGridItemTopBarH: 20px;
 | 
			
		||||
@@ -111,17 +57,15 @@ $ueBrowseGridItemBottomBarH: 30px;
 | 
			
		||||
$itemPadLR: 5px;
 | 
			
		||||
// Tree
 | 
			
		||||
$treeVCW: 10px;
 | 
			
		||||
$treeTypeIconH: 16px;
 | 
			
		||||
$treeTypeIconW: 20px;
 | 
			
		||||
$treeContextTriggerW: 20px;
 | 
			
		||||
$colorItemTreeIcon: $colorKey;
 | 
			
		||||
$colorItemTreeIconHover: lighten($colorItemTreeIcon, 20%);
 | 
			
		||||
$colorItemTreeVCHover: $colorAlt1;
 | 
			
		||||
// Tabular
 | 
			
		||||
$tabularHeaderH: 22px; //18px
 | 
			
		||||
$tabularTdPadLR: $itemPadLR;
 | 
			
		||||
$tabularTdPadTB: 3px;
 | 
			
		||||
// Imagery
 | 
			
		||||
$imageMainControlBarH: 22px;
 | 
			
		||||
$imageMainControlBarH: 25px;
 | 
			
		||||
$imageThumbsD: 120px;
 | 
			
		||||
$imageThumbsWrapperH: $imageThumbsD * 1.4;
 | 
			
		||||
$imageThumbPad: 1px;
 | 
			
		||||
@@ -144,18 +88,21 @@ $reqSymbolFontSize: 0.7em;
 | 
			
		||||
 | 
			
		||||
/************************** CONTROLS */
 | 
			
		||||
$controlDisabledOpacity: 0.3;
 | 
			
		||||
$formLabelW: 20%;
 | 
			
		||||
$formLabelW: 30%;
 | 
			
		||||
$formInputH: 22px;
 | 
			
		||||
$formRowCtrlsH: 14px;
 | 
			
		||||
$formTBPad: $interiorMargin;
 | 
			
		||||
$formLRPad: $interiorMargin;
 | 
			
		||||
$menuLineH: 1.5rem;
 | 
			
		||||
$scrollbarTrackSize: 10px;
 | 
			
		||||
$scrollbarTrackColorBg: rgba(#000, 0.4);
 | 
			
		||||
$menuLineHPx: 24px;
 | 
			
		||||
$btnStdH: 25px;
 | 
			
		||||
$btnToolbarH: $btnStdH;
 | 
			
		||||
$btnFrameH: 16px;
 | 
			
		||||
 | 
			
		||||
/************************** PATHS */
 | 
			
		||||
$dirImgs: '../images/'; // Relative to platform/css/ directory
 | 
			
		||||
// Paths need to be relative to /platform/commonUI/theme/<theme-name>/css/ directory
 | 
			
		||||
$dirCommonRes: '../../../../general/res/';
 | 
			
		||||
$dirImgs: $dirCommonRes + 'images/';
 | 
			
		||||
 | 
			
		||||
/************************** TIMINGS */
 | 
			
		||||
$controlFadeMs: 100ms;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -52,7 +52,7 @@ a.disabled {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@include keyframes(pulse) {
 | 
			
		||||
	0%   { opacity: 0.2; }
 | 
			
		||||
	0%   { opacity: 0.5; }
 | 
			
		||||
	100% { opacity: 1; }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -76,7 +76,7 @@
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		.l-fixed-position-text {
 | 
			
		||||
			@include txtShdwSubtle();
 | 
			
		||||
			//@include txtShdwSubtle();
 | 
			
		||||
			border: 1px solid transparent;
 | 
			
		||||
			font-size: 0.8rem;
 | 
			
		||||
			$p: 1px; //$interiorMarginSm;
 | 
			
		||||
 
 | 
			
		||||
@@ -19,12 +19,32 @@
 | 
			
		||||
 * this source code distribution or the Licensing information page available
 | 
			
		||||
 * at runtime from the About dialog for additional information.
 | 
			
		||||
 *****************************************************************************/
 | 
			
		||||
/************************** FONTS */
 | 
			
		||||
@font-face {
 | 
			
		||||
	/*
 | 
			
		||||
    * Use https://icomoon.io/app with /platform/commonUI/general/res/fonts/symbols/icomoon.io-WTD-symbols-project.json
 | 
			
		||||
    */
 | 
			
		||||
	font-family: 'symbolsfont';
 | 
			
		||||
	src: url($dirCommonRes + 'fonts/symbols/wtdsymbols.eot');
 | 
			
		||||
	src: url($dirCommonRes + 'fonts/symbols/wtdsymbols.eot?#iefix') format('embedded-opentype'),
 | 
			
		||||
	url($dirCommonRes + 'fonts/symbols/wtdsymbols.woff') format('woff'),
 | 
			
		||||
	url($dirCommonRes + 'fonts/symbols/wtdsymbols.ttf') format('truetype'),
 | 
			
		||||
	url($dirCommonRes + 'fonts/symbols/wtdsymbols.svg#armataregular') format('svg');
 | 
			
		||||
	font-weight: normal;
 | 
			
		||||
	font-style: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui-symbol {
 | 
			
		||||
	font-family: 'symbolsfont';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/************************** HTML ENTITIES */
 | 
			
		||||
a {
 | 
			
		||||
	color: #ccc;
 | 
			
		||||
	color: $colorA;
 | 
			
		||||
	cursor: pointer;
 | 
			
		||||
	text-decoration: none;
 | 
			
		||||
	&:hover {
 | 
			
		||||
		color: #fff;
 | 
			
		||||
		color: $colorAHov;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -42,7 +62,6 @@ body, html {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
em {
 | 
			
		||||
//	color: rgba(white, 0.2); Removed this as a global setting
 | 
			
		||||
	font-style: normal;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -71,12 +90,6 @@ p {
 | 
			
		||||
	margin-bottom: $interiorMarginLg;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
span {
 | 
			
		||||
	/* 618 DEBUG
 | 
			
		||||
	box-sizing: border-box;
 | 
			
		||||
	*/
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
mct-container {
 | 
			
		||||
	display: block;
 | 
			
		||||
}
 | 
			
		||||
@@ -100,7 +113,7 @@ mct-container {
 | 
			
		||||
 | 
			
		||||
.codehilite {
 | 
			
		||||
	@extend .code;
 | 
			
		||||
	background-color: rgba(#fff, 0.1);
 | 
			
		||||
	background-color: rgba($colorBodyFg, 0.1);
 | 
			
		||||
	padding: 1em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -112,12 +125,16 @@ mct-container {
 | 
			
		||||
	text-align: center;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.no-margin {
 | 
			
		||||
	margin: 0;
 | 
			
		||||
.scrolling {
 | 
			
		||||
	overflow: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.colorKey {
 | 
			
		||||
	color: $colorKey;
 | 
			
		||||
.vscroll {
 | 
			
		||||
	overflow-y: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.no-margin {
 | 
			
		||||
	margin: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ds {
 | 
			
		||||
@@ -129,13 +146,6 @@ mct-container {
 | 
			
		||||
	display: none !important;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.paused {
 | 
			
		||||
	&:not(.s-btn) {
 | 
			
		||||
		border-color: $colorPausedBg !important;
 | 
			
		||||
		color: $colorPausedBg !important;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.sep {
 | 
			
		||||
	color: rgba(#fff, 0.2);
 | 
			
		||||
}
 | 
			
		||||
@@ -29,10 +29,11 @@
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.ui-symbol {
 | 
			
		||||
	$c: $colorKey;
 | 
			
		||||
	&.type-icon {
 | 
			
		||||
		color: $colorObjHdrIc;
 | 
			
		||||
	}
 | 
			
		||||
	&.icon {
 | 
			
		||||
		color: $c;
 | 
			
		||||
		@include txtShdwSubtle();
 | 
			
		||||
		color: $colorKey;
 | 
			
		||||
		&.alert {
 | 
			
		||||
			color: $colorAlert;
 | 
			
		||||
			&:hover {
 | 
			
		||||
@@ -43,9 +44,12 @@
 | 
			
		||||
			font-size: 1.65em;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	&.icon-calendar:after {
 | 
			
		||||
		content: "\e605";
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.bar .icon {
 | 
			
		||||
.bar .ui-symbol {
 | 
			
		||||
	display: inline-block;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -54,7 +58,7 @@
 | 
			
		||||
	display: inline-block;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.btn-menu .invoke-menu,
 | 
			
		||||
.s-menu-btn .invoke-menu,
 | 
			
		||||
.icon.major .invoke-menu {
 | 
			
		||||
	margin-left: $interiorMarginSm;
 | 
			
		||||
}
 | 
			
		||||
@@ -65,9 +69,9 @@
 | 
			
		||||
	position: absolute;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.tree-item .type-icon {
 | 
			
		||||
	font-size: 16px; // 16px is crisp size
 | 
			
		||||
}
 | 
			
		||||
//.tree-item .type-icon {
 | 
			
		||||
//	font-size: 16px; // 16px is crisp size
 | 
			
		||||
//}
 | 
			
		||||
 | 
			
		||||
.l-icon-link:before {
 | 
			
		||||
	content: "\f4";
 | 
			
		||||
 
 | 
			
		||||
@@ -1,20 +0,0 @@
 | 
			
		||||
// Classes for initializing states of objects
 | 
			
		||||
 | 
			
		||||
.browse-mode {
 | 
			
		||||
    .split-layout {
 | 
			
		||||
        .split-pane-component.pane.left {
 | 
			
		||||
            width: 15%;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.edit-mode {
 | 
			
		||||
    .split-layout {
 | 
			
		||||
        .split-pane-component.pane.right {
 | 
			
		||||
            width: 15%;
 | 
			
		||||
            .pane.bottom {
 | 
			
		||||
                height: 30%;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||