Re-arranged code and updated the README to include the licensing issue.
Remembered the arbitrary container TO-DO.
This commit is contained in:
		
							parent
							
								
									197800c32c
								
							
						
					
					
						commit
						9ceabc0a75
					
				|  | @ -3,5 +3,3 @@ | ||||||
| *# | *# | ||||||
| .#* | .#* | ||||||
| *~ | *~ | ||||||
| frontend/logs/ |  | ||||||
| spiral.db |  | ||||||
|  |  | ||||||
|  | @ -0,0 +1,20 @@ | ||||||
|  | Copyright (c) 2011 Elf M. Sternberg | ||||||
|  | 
 | ||||||
|  | Permission is hereby granted, free of charge, to any person obtaining | ||||||
|  | a copy of this software and associated documentation files (the | ||||||
|  | "Software"), to deal in the Software without restriction, including | ||||||
|  | without limitation the rights to use, copy, modify, merge, publish, | ||||||
|  | distribute, sublicense, and/or sell copies of the Software, and to | ||||||
|  | permit persons to whom the Software is furnished to do so, subject to | ||||||
|  | the following conditions: | ||||||
|  | 
 | ||||||
|  | The above copyright notice and this permission notice shall be | ||||||
|  | included in all copies or substantial portions of the Software. | ||||||
|  | 
 | ||||||
|  | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||||
|  | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||||||
|  | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | ||||||
|  | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE | ||||||
|  | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION | ||||||
|  | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION | ||||||
|  | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||||||
|  | @ -0,0 +1,58 @@ | ||||||
|  | Sitedarts are content-within-a-page links laid out along the right | ||||||
|  | side of the viewport, spaced proportionately to their target anchor | ||||||
|  | positions within the document.  They are meant to give users a visual | ||||||
|  | indicator of where they are within long, scrolling documents, and to | ||||||
|  | encourage exploration below the fold.  The content of a dart is | ||||||
|  | informed by <a name=""> ... </a> entries. | ||||||
|  | 
 | ||||||
|  | Sitedarts was inspired by book darts (www.bookdarts.com), hammered | ||||||
|  | copper pointers that I regularly use in my notebooks to keep track of | ||||||
|  | stuff.  I wanted a page-side view of my anchors and headers since I | ||||||
|  | develop code for e-book readers. | ||||||
|  | 
 | ||||||
|  | ## Installation | ||||||
|  | 
 | ||||||
|  | Sitedarts uses jquery (1.3.2 or better required) and jquery.easing. | ||||||
|  | Both are provided in this download.  It's just Javascript, otherwise. | ||||||
|  | Use as directed. | ||||||
|  | 
 | ||||||
|  | ## Copyright  | ||||||
|  | 
 | ||||||
|  | Sitedarts is copyright (c) 2011 Elf M. Sternberg.  Included libraries | ||||||
|  | are covered by their respective copyright holders, and are used with | ||||||
|  | permission of the licenses included.  See the MIT-LICENSE file for | ||||||
|  | the license on sitedarts.js itself. | ||||||
|  | 
 | ||||||
|  | ## To Do | ||||||
|  | 
 | ||||||
|  | Provide an alternative text on hover.  Provide a mechanism for | ||||||
|  | describing the alternative text.  Provide a way that the <a name=""> | ||||||
|  | anchor can inform the visual content of the dart. | ||||||
|  | 
 | ||||||
|  | Provide themes for dart types (metal, glass, plain, colorful, drab). | ||||||
|  | 
 | ||||||
|  | Fix the arbitrariness of the layout: ensure that the bottom of the | ||||||
|  | bottom dart, and the top of the top dart, are within the viewport. | ||||||
|  | 
 | ||||||
|  | Allow the darts to be on the left, or even across the top and bottom | ||||||
|  | of the viewport. | ||||||
|  | 
 | ||||||
|  | Guarantee easing to the target even when the target mark is well | ||||||
|  | within the viewport at the bottom of the document.   | ||||||
|  | 
 | ||||||
|  | Set a highlight class on the dart corresponding to the anchor the user | ||||||
|  | is "within."  This is a nebulous concept.  If two or more anchors are | ||||||
|  | visible on the screen, keep the lower one highlighted if it was the | ||||||
|  | last one chosen.  (cf. Eugene Jarvis' "The way a program looks smart | ||||||
|  | is it doesn't do anything stupid.") | ||||||
|  | 
 | ||||||
|  | Allow sitedarts to work within an arbitrary container pair, rather | ||||||
|  | than $(window) and $(document).   | ||||||
|  | 
 | ||||||
|  | Allow configuration to narrow the viewport. | ||||||
|  | 
 | ||||||
|  | ## Stretch goal | ||||||
|  | 
 | ||||||
|  | Provide an alternative text search input box and decorate the sitedart | ||||||
|  | layout with links to searched-for terms.  On hover, provide some | ||||||
|  | context.   | ||||||
|  | @ -2,8 +2,9 @@ | ||||||
| <html> | <html> | ||||||
|     <head> |     <head> | ||||||
|         <title>Sample</title> |         <title>Sample</title> | ||||||
|         <script type="text/javascript" src="./jquery-1.3.2.js"></script> |         <script type="text/javascript" src="js/jquery-1.3.2.js"></script> | ||||||
|         <script type="text/javascript" src="./sitemarks.js"></script> |         <script type="text/javascript" src="js/jquery.easing.1.2.js"></script> | ||||||
|  |         <script type="text/javascript" src="js/sitedarts.js"></script> | ||||||
|         <script type="text/javascript"> |         <script type="text/javascript"> | ||||||
|             $(function() { |             $(function() { | ||||||
|                 $('body').siteDarts(); |                 $('body').siteDarts(); | ||||||
|  |  | ||||||
|  | @ -0,0 +1,140 @@ | ||||||
|  | /* | ||||||
|  |  * jQuery EasIng v1.1.2 - http://gsgd.co.uk/sandbox/jquery.easIng.php
 | ||||||
|  |  * | ||||||
|  |  * Uses the built In easIng capabilities added In jQuery 1.1 | ||||||
|  |  * to offer multiple easIng options | ||||||
|  |  * | ||||||
|  |  * Copyright (c) 2007 George Smith | ||||||
|  |  * Licensed under the MIT License: | ||||||
|  |  *   http://www.opensource.org/licenses/mit-license.php
 | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | // t: current time, b: begInnIng value, c: change In value, d: duration
 | ||||||
|  | 
 | ||||||
|  | jQuery.extend( jQuery.easing, | ||||||
|  | { | ||||||
|  | 	easeInQuad: function (x, t, b, c, d) { | ||||||
|  | 		return c*(t/=d)*t + b; | ||||||
|  | 	}, | ||||||
|  | 	easeOutQuad: function (x, t, b, c, d) { | ||||||
|  | 		return -c *(t/=d)*(t-2) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInOutQuad: function (x, t, b, c, d) { | ||||||
|  | 		if ((t/=d/2) < 1) return c/2*t*t + b; | ||||||
|  | 		return -c/2 * ((--t)*(t-2) - 1) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInCubic: function (x, t, b, c, d) { | ||||||
|  | 		return c*(t/=d)*t*t + b; | ||||||
|  | 	}, | ||||||
|  | 	easeOutCubic: function (x, t, b, c, d) { | ||||||
|  | 		return c*((t=t/d-1)*t*t + 1) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInOutCubic: function (x, t, b, c, d) { | ||||||
|  | 		if ((t/=d/2) < 1) return c/2*t*t*t + b; | ||||||
|  | 		return c/2*((t-=2)*t*t + 2) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInQuart: function (x, t, b, c, d) { | ||||||
|  | 		return c*(t/=d)*t*t*t + b; | ||||||
|  | 	}, | ||||||
|  | 	easeOutQuart: function (x, t, b, c, d) { | ||||||
|  | 		return -c * ((t=t/d-1)*t*t*t - 1) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInOutQuart: function (x, t, b, c, d) { | ||||||
|  | 		if ((t/=d/2) < 1) return c/2*t*t*t*t + b; | ||||||
|  | 		return -c/2 * ((t-=2)*t*t*t - 2) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInQuint: function (x, t, b, c, d) { | ||||||
|  | 		return c*(t/=d)*t*t*t*t + b; | ||||||
|  | 	}, | ||||||
|  | 	easeOutQuint: function (x, t, b, c, d) { | ||||||
|  | 		return c*((t=t/d-1)*t*t*t*t + 1) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInOutQuint: function (x, t, b, c, d) { | ||||||
|  | 		if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; | ||||||
|  | 		return c/2*((t-=2)*t*t*t*t + 2) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInSine: function (x, t, b, c, d) { | ||||||
|  | 		return -c * Math.cos(t/d * (Math.PI/2)) + c + b; | ||||||
|  | 	}, | ||||||
|  | 	easeOutSine: function (x, t, b, c, d) { | ||||||
|  | 		return c * Math.sin(t/d * (Math.PI/2)) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInOutSine: function (x, t, b, c, d) { | ||||||
|  | 		return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInExpo: function (x, t, b, c, d) { | ||||||
|  | 		return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeOutExpo: function (x, t, b, c, d) { | ||||||
|  | 		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInOutExpo: function (x, t, b, c, d) { | ||||||
|  | 		if (t==0) return b; | ||||||
|  | 		if (t==d) return b+c; | ||||||
|  | 		if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; | ||||||
|  | 		return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInCirc: function (x, t, b, c, d) { | ||||||
|  | 		return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeOutCirc: function (x, t, b, c, d) { | ||||||
|  | 		return c * Math.sqrt(1 - (t=t/d-1)*t) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInOutCirc: function (x, t, b, c, d) { | ||||||
|  | 		if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; | ||||||
|  | 		return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInElastic: function (x, t, b, c, d) { | ||||||
|  | 		var s=1.70158;var p=0;var a=c; | ||||||
|  | 		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3; | ||||||
|  | 		if (a < Math.abs(c)) { a=c; var s=p/4; } | ||||||
|  | 		else var s = p/(2*Math.PI) * Math.asin (c/a); | ||||||
|  | 		return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeOutElastic: function (x, t, b, c, d) { | ||||||
|  | 		var s=1.70158;var p=0;var a=c; | ||||||
|  | 		if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3; | ||||||
|  | 		if (a < Math.abs(c)) { a=c; var s=p/4; } | ||||||
|  | 		else var s = p/(2*Math.PI) * Math.asin (c/a); | ||||||
|  | 		return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInOutElastic: function (x, t, b, c, d) { | ||||||
|  | 		var s=1.70158;var p=0;var a=c; | ||||||
|  | 		if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5); | ||||||
|  | 		if (a < Math.abs(c)) { a=c; var s=p/4; } | ||||||
|  | 		else var s = p/(2*Math.PI) * Math.asin (c/a); | ||||||
|  | 		if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; | ||||||
|  | 		return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInBack: function (x, t, b, c, d, s) { | ||||||
|  | 		if (s == undefined) s = 1.70158; | ||||||
|  | 		return c*(t/=d)*t*((s+1)*t - s) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeOutBack: function (x, t, b, c, d, s) { | ||||||
|  | 		if (s == undefined) s = 1.70158; | ||||||
|  | 		return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInOutBack: function (x, t, b, c, d, s) { | ||||||
|  | 		if (s == undefined) s = 1.70158;  | ||||||
|  | 		if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; | ||||||
|  | 		return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeInBounce: function (x, t, b, c, d) { | ||||||
|  | 		return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; | ||||||
|  | 	}, | ||||||
|  | 	easeOutBounce: function (x, t, b, c, d) { | ||||||
|  | 		if ((t/=d) < (1/2.75)) { | ||||||
|  | 			return c*(7.5625*t*t) + b; | ||||||
|  | 		} else if (t < (2/2.75)) { | ||||||
|  | 			return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; | ||||||
|  | 		} else if (t < (2.5/2.75)) { | ||||||
|  | 			return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; | ||||||
|  | 		} else { | ||||||
|  | 			return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; | ||||||
|  | 		} | ||||||
|  | 	}, | ||||||
|  | 	easeInOutBounce: function (x, t, b, c, d) { | ||||||
|  | 		if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; | ||||||
|  | 		return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; | ||||||
|  | 	} | ||||||
|  | }); | ||||||
|  | @ -22,12 +22,12 @@ | ||||||
|                 var prop = $(window).height(); |                 var prop = $(window).height(); | ||||||
|                 var doch = $(document).height(); |                 var doch = $(document).height(); | ||||||
|                  |                  | ||||||
|                 names.each(function() { |                 names.each(function(dex) { | ||||||
|                     var n = $(this).attr('name') |                     var n = $(this).attr('name') | ||||||
|                     var d = $(this).offset().top; |                     var d = $(this).offset().top; | ||||||
|                     var a = $("li." + options.markitem + ' a[href="#' + n + '"]'); |                     var a = $("li." + options.markitem + ' a[href="#' + n + '"]'); | ||||||
|                     var p = a.parent(); |                     var p = a.parent(); | ||||||
|                     p.animate({top: prop * (d / doch)}); |                     p.animate({top: prop * (d / doch) - dex * 7}); | ||||||
|                 }); |                 }); | ||||||
|             } |             } | ||||||
|              |              | ||||||
|  | @ -45,9 +45,13 @@ | ||||||
|                         event.preventDefault(); |                         event.preventDefault(); | ||||||
|                         var target = $(event.target).attr('href').replace('#', '') |                         var target = $(event.target).attr('href').replace('#', '') | ||||||
|                         var targetOffset = $('a[name="' + target  + '"]').offset().top; |                         var targetOffset = $('a[name="' + target  + '"]').offset().top; | ||||||
|                         $(document).animate({scrollTop: targetOffset}, 400, function() { |                         $('html body').animate({scrollTop: targetOffset},  | ||||||
|                             location.hash = target; |                                                {duration: 800,  | ||||||
|                         });                    |                                                 easing: options.easing, | ||||||
|  |                                                 complete: function() { | ||||||
|  |                                                     location.hash = target; | ||||||
|  |                                                 } | ||||||
|  |                                                }); | ||||||
|                     }); |                     }); | ||||||
|                 }); |                 }); | ||||||
|             } |             } | ||||||
|  | @ -59,12 +63,7 @@ | ||||||
| 	$.fn.siteDarts.defaults = { | 	$.fn.siteDarts.defaults = { | ||||||
|         marklist: 'marklist', |         marklist: 'marklist', | ||||||
|         markitem: 'marklistitem', |         markitem: 'marklistitem', | ||||||
| 		css: { |         easing: 'easeOutQuint' | ||||||
| 			// default styling
 |  | ||||||
| 			ul:     { position: "fixed", top: 0, right: "-30px", height: "100%", "zindex": 99}, |  | ||||||
|             li:     { position: "absolute", top: 0, right: 0, overflow: "hidden", color: "white", cursor: "pointer"}, |  | ||||||
|             a:      { width: "29px", height: "24px", background: "transparent no-repeat" }, |  | ||||||
|         } |  | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
| })(jQuery); | })(jQuery); | ||||||
		Loading…
	
		Reference in New Issue