123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- /*
- Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.charting.action2d.Highlight"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
- dojo._hasResource["dojox.charting.action2d.Highlight"] = true;
- dojo.provide("dojox.charting.action2d.Highlight");
- dojo.require("dojox.charting.action2d.Base");
- dojo.require("dojox.color");
- /*=====
- dojo.declare("dojox.charting.action2d.__HighlightCtorArgs", dojox.charting.action2d.__BaseCtorArgs, {
- // summary:
- // Additional arguments for highlighting actions.
- // highlight: String|dojo.Color|Function?
- // Either a color or a function that creates a color when highlighting happens.
- highlight: null
- });
- =====*/
- (function(){
- var DEFAULT_SATURATION = 100, // %
- DEFAULT_LUMINOSITY1 = 75, // %
- DEFAULT_LUMINOSITY2 = 50, // %
- c = dojox.color,
- cc = function(color){
- return function(){ return color; };
- },
- hl = function(color){
- var a = new c.Color(color),
- x = a.toHsl();
- if(x.s == 0){
- x.l = x.l < 50 ? 100 : 0;
- }else{
- x.s = DEFAULT_SATURATION;
- if(x.l < DEFAULT_LUMINOSITY2){
- x.l = DEFAULT_LUMINOSITY1;
- }else if(x.l > DEFAULT_LUMINOSITY1){
- x.l = DEFAULT_LUMINOSITY2;
- }else{
- x.l = x.l - DEFAULT_LUMINOSITY2 > DEFAULT_LUMINOSITY1 - x.l ?
- DEFAULT_LUMINOSITY2 : DEFAULT_LUMINOSITY1;
- }
- }
- return c.fromHsl(x);
- };
- dojo.declare("dojox.charting.action2d.Highlight", dojox.charting.action2d.Base, {
- // summary:
- // Creates a highlighting action on a plot, where an element on that plot
- // has a highlight on it.
- // the data description block for the widget parser
- defaultParams: {
- duration: 400, // duration of the action in ms
- easing: dojo.fx.easing.backOut // easing for the action
- },
- optionalParams: {
- highlight: "red" // name for the highlight color
- // programmatic instantiation can use functions and color objects
- },
- constructor: function(chart, plot, kwArgs){
- // summary:
- // Create the highlighting action and connect it to the plot.
- // chart: dojox.charting.Chart2D
- // The chart this action belongs to.
- // plot: String?
- // The plot this action is attached to. If not passed, "default" is assumed.
- // kwArgs: dojox.charting.action2d.__HighlightCtorArgs?
- // Optional keyword arguments object for setting parameters.
- var a = kwArgs && kwArgs.highlight;
- this.colorFun = a ? (dojo.isFunction(a) ? a : cc(a)) : hl;
- this.connect();
- },
- process: function(o){
- // summary:
- // Process the action on the given object.
- // o: dojox.gfx.Shape
- // The object on which to process the highlighting action.
- if(!o.shape || !(o.type in this.overOutEvents)){ return; }
- var runName = o.run.name, index = o.index, anim, startFill, endFill;
- if(runName in this.anim){
- anim = this.anim[runName][index];
- }else{
- this.anim[runName] = {};
- }
- if(anim){
- anim.action.stop(true);
- }else{
- var color = o.shape.getFill();
- if(!color || !(color instanceof dojo.Color)){
- return;
- }
- this.anim[runName][index] = anim = {
- start: color,
- end: this.colorFun(color)
- };
- }
- var start = anim.start, end = anim.end;
- if(o.type == "onmouseout"){
- // swap colors
- var t = start;
- start = end;
- end = t;
- }
- anim.action = dojox.gfx.fx.animateFill({
- shape: o.shape,
- duration: this.duration,
- easing: this.easing,
- color: {start: start, end: end}
- });
- if(o.type == "onmouseout"){
- dojo.connect(anim.action, "onEnd", this, function(){
- if(this.anim[runName]){
- delete this.anim[runName][index];
- }
- });
- }
- anim.action.play();
- }
- });
- })();
- }
|