[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 YUI.add('yui2-charts', function(Y) { 2 var YAHOO = Y.YUI2; 3 /* 4 Copyright (c) 2011, Yahoo! Inc. All rights reserved. 5 Code licensed under the BSD License: 6 http://developer.yahoo.com/yui/license.html 7 version: 2.9.0 8 */ 9 /** 10 * The Charts widget provides a Flash control for displaying data 11 * graphically by series across A-grade browsers with Flash Player installed. 12 * 13 * @module charts 14 * @requires yahoo, dom, event, datasource 15 * @title Charts Widget 16 */ 17 18 /****************************************************************************/ 19 /****************************************************************************/ 20 /****************************************************************************/ 21 22 /** 23 * Chart class for the YUI Charts widget. 24 * 25 * @namespace YAHOO.widget 26 * @class Chart 27 * @uses YAHOO.util.AttributeProvider 28 * @constructor 29 * @param type {String} The char type. May be "line", "column", "bar", or "pie" 30 * @param containerId {HTMLElement} Container element for the Flash Player instance. 31 * @param dataSource {YAHOO.util.DataSource} DataSource instance. 32 * @param attributes {object} (optional) Object literal of configuration values. 33 */ 34 YAHOO.widget.Chart = function(type, containerId, dataSource, configurationAttributes) 35 { 36 this._type = type; 37 this._dataSource = dataSource; 38 39 var possibleParams = {align:"", allowNetworking:"", allowScriptAccess:"", base:"", bgcolor:"", menu:"", name:"", quality:"", salign:"", scale:"", tabindex:"", wmode:""}; 40 var attributes = {fixedAttributes:{allowScriptAccess:"always"}, flashVars:{allowedDomain : document.location.hostname}, backgroundColor:"#ffffff", host:this, version:9.045}; 41 42 for(var i in configurationAttributes) 43 { 44 if(possibleParams.hasOwnProperty(i)) 45 { 46 attributes.fixedAttributes[i] = configurationAttributes[i]; 47 } 48 else 49 { 50 attributes[i] = configurationAttributes[i]; 51 } 52 } 53 54 this._id = attributes.id = attributes.id || YAHOO.util.Dom.generateId(null, "yuigen"); 55 56 this._swfURL = YAHOO.widget.Chart.SWFURL; 57 this._containerID = containerId; 58 59 this._attributes = attributes; 60 this._swfEmbed = new YAHOO.widget.SWF(containerId, YAHOO.widget.Chart.SWFURL, attributes); 61 62 this._swf = this._swfEmbed.swf; 63 this._swfEmbed.subscribe("swfReady", this._eventHandler, this, true); 64 65 /** 66 * Fires when the SWF is initialized and communication is possible. 67 * @event contentReady 68 */ 69 //Fix for iframe cross-domain issue with FF2x 70 try 71 { 72 this.createEvent("contentReady"); 73 } 74 catch(e){} 75 76 /** 77 * Fires when the user moves the mouse over the bounds of an item renderer in the chart. 78 * 79 * @event itemMouseOverEvent 80 * @param event.type {String} The event type 81 * @param event.item {Object} The data displayed by the renderer 82 * @param event.index {Number} The position within the series that the item appears. 83 * @param event.seriesIndex {Number} The position within the series definition that the series appears. 84 * @param event.x {Number} The horizontal position of the mouse, relative to the SWF. 85 * @param event.y {Number} The vertical position of the mouse, relative to the SWF. 86 */ 87 this.createEvent("itemMouseOverEvent"); 88 89 /** 90 * Fires when the user moves the mouse out of the bounds of an item renderer in the chart. 91 * 92 * @event itemMouseOutEvent 93 * @param event.type {String} The event type 94 * @param event.item {Object} The data displayed by the renderer 95 * @param event.index {Number} The position within the series that the item appears. 96 * @param event.seriesIndex {Number} The position within the series definition that the series appears. 97 * @param event.x {Number} The horizontal position of the mouse, relative to the SWF. 98 * @param event.y {Number} The vertical position of the mouse, relative to the SWF. 99 */ 100 this.createEvent("itemMouseOutEvent"); 101 102 /** 103 * Fires when the user clicks an item renderer in the chart with the mouse. 104 * 105 * @event itemClickEvent 106 * @param event.type {String} The event type 107 * @param event.item {Object} The data displayed by the renderer 108 * @param event.index {Number} The position within the series that the item appears. 109 * @param event.seriesIndex {Number} The position within the series definition that the series appears. 110 * @param event.x {Number} The horizontal position of the mouse, relative to the SWF. 111 * @param event.y {Number} The vertical position of the mouse, relative to the SWF. 112 */ 113 this.createEvent("itemClickEvent"); 114 115 /** 116 * Fires when the user double-clicks an item renderer in the chart with the mouse. 117 * 118 * @event itemDoubleClickEvent 119 * @param event.type {String} The event type 120 * @param event.item {Object} The data displayed by the renderer 121 * @param event.index {Number} The position within the series that the item appears. 122 * @param event.seriesIndex {Number} The position within the series definition that the series appears. 123 * @param event.x {Number} The horizontal position of the mouse, relative to the SWF. 124 * @param event.y {Number} The vertical position of the mouse, relative to the SWF. 125 */ 126 this.createEvent("itemDoubleClickEvent"); 127 128 /** 129 * Fires when the user presses the mouse down on an item to initiate a drag action. 130 * 131 * @event itemDragStartEvent 132 * @param event.type {String} The event type 133 * @param event.item {Object} The data displayed by the renderer 134 * @param event.index {Number} The position within the series that the item appears. 135 * @param event.seriesIndex {Number} The position within the series definition that the series appears. 136 * @param event.x {Number} The horizontal position of the mouse, relative to the SWF. 137 * @param event.y {Number} The vertical position of the mouse, relative to the SWF. 138 */ 139 this.createEvent("itemDragStartEvent"); 140 141 /** 142 * Fires when the user moves the mouse during a drag action. 143 * 144 * @event itemDragEvent 145 * @param event.type {String} The event type 146 * @param event.item {Object} The data displayed by the renderer 147 * @param event.index {Number} The position within the series that the item appears. 148 * @param event.seriesIndex {Number} The position within the series definition that the series appears. 149 * @param event.x {Number} The horizontal position of the mouse, relative to the SWF. 150 * @param event.y {Number} The vertical position of the mouse, relative to the SWF. 151 */ 152 this.createEvent("itemDragEvent"); 153 154 /** 155 * Fires when the user releases the mouse during a drag action. 156 * 157 * @event itemDragEndEvent 158 * @param event.type {String} The event type 159 * @param event.item {Object} The data displayed by the renderer 160 * @param event.index {Number} The position within the series that the item appears. 161 * @param event.seriesIndex {Number} The position within the series definition that the series appears. 162 * @param event.x {Number} The horizontal position of the mouse, relative to the SWF. 163 * @param event.y {Number} The vertical position of the mouse, relative to the SWF. 164 */ 165 this.createEvent("itemDragEndEvent"); 166 }; 167 168 YAHOO.extend(YAHOO.widget.Chart, YAHOO.util.AttributeProvider, 169 { 170 /** 171 * The type of this chart instance. 172 * @property _type 173 * @type String 174 * @private 175 */ 176 _type: null, 177 178 /** 179 * The id returned from the DataSource's setInterval function. 180 * @property _pollingID 181 * @type Number 182 * @private 183 */ 184 _pollingID: null, 185 186 /** 187 * The time, in ms, between requests for data. 188 * @property _pollingInterval 189 * @type Number 190 * @private 191 */ 192 _pollingInterval: null, 193 194 /** 195 * Stores a reference to the dataTipFunction created by 196 * YAHOO.widget.Chart.createProxyFunction() 197 * @property _dataTipFunction 198 * @type String 199 * @private 200 */ 201 _dataTipFunction: null, 202 203 /** 204 * Stores a reference to the legendLabelFunction created by 205 * YAHOO.widget.Chart.createProxyFunction() 206 * @property _legendLabelFunction 207 * @type String 208 * @private 209 */ 210 _legendLabelFunction: null, 211 212 /** 213 * Stores references to series function values created by 214 * YAHOO.widget.Chart.createProxyFunction() 215 * @property _seriesFunctions 216 * @type Array 217 * @private 218 */ 219 _seriesFunctions: null, 220 221 /** 222 * Public accessor to the unique name of the Chart instance. 223 * 224 * @method toString 225 * @return {String} Unique name of the Chart instance. 226 */ 227 toString: function() 228 { 229 return "Chart " + this._id; 230 }, 231 232 /** 233 * Sets a single style value on the Chart instance. 234 * 235 * @method setStyle 236 * @param name {String} Name of the Chart style value to change. 237 * @param value {Object} New value to pass to the Chart style. 238 */ 239 setStyle: function(name, value) 240 { 241 //we must jsonify this because Flash Player versions below 9.0.60 don't handle 242 //complex ExternalInterface parsing correctly 243 value = YAHOO.lang.JSON.stringify(value); 244 this._swf.setStyle(name, value); 245 }, 246 247 /** 248 * Resets all styles on the Chart instance. 249 * 250 * @method setStyles 251 * @param styles {Object} Initializer for all Chart styles. 252 */ 253 setStyles: function(styles) 254 { 255 //we must jsonify this because Flash Player versions below 9.0.60 don't handle 256 //complex ExternalInterface parsing correctly 257 styles = YAHOO.lang.JSON.stringify(styles); 258 this._swf.setStyles(styles); 259 }, 260 261 /** 262 * Sets the styles on all series in the Chart. 263 * 264 * @method setSeriesStyles 265 * @param styles {Array} Initializer for all Chart series styles. 266 */ 267 setSeriesStyles: function(styles) 268 { 269 //we must jsonify this because Flash Player versions below 9.0.60 don't handle 270 //complex ExternalInterface parsing correctly 271 for(var i = 0; i < styles.length; i++) 272 { 273 styles[i] = YAHOO.lang.JSON.stringify(styles[i]); 274 } 275 this._swf.setSeriesStyles(styles); 276 }, 277 278 destroy: function() 279 { 280 //stop polling if needed 281 if(this._dataSource !== null) 282 { 283 if(this._pollingID !== null) 284 { 285 this._dataSource.clearInterval(this._pollingID); 286 this._pollingID = null; 287 } 288 } 289 290 //remove proxy functions 291 if(this._dataTipFunction) 292 { 293 YAHOO.widget.Chart.removeProxyFunction(this._dataTipFunction); 294 } 295 296 if(this._legendLabelFunction) 297 { 298 YAHOO.widget.Chart.removeProxyFunction(this._legendLabelFunction); 299 } 300 301 //kill the Flash Player instance 302 if(this._swf) 303 { 304 var container = YAHOO.util.Dom.get(this._containerID); 305 container.removeChild(this._swf); 306 } 307 308 var instanceName = this._id; 309 310 //null out properties 311 for(var prop in this) 312 { 313 if(YAHOO.lang.hasOwnProperty(this, prop)) 314 { 315 this[prop] = null; 316 } 317 } 318 }, 319 320 /** 321 * Initializes the attributes. 322 * 323 * @method _initAttributes 324 * @private 325 */ 326 _initAttributes: function(attributes) 327 { 328 //YAHOO.widget.Chart.superclass._initAttributes.call(this, attributes); 329 /** 330 * @attribute wmode 331 * @description Sets the window mode of the Flash Player control. May be 332 * "window", "opaque", or "transparent". Only available in the constructor 333 * because it may not be set after Flash Player has been embedded in the page. 334 * @type String 335 */ 336 337 /** 338 * @attribute expressInstall 339 * @description URL pointing to a SWF file that handles Flash Player's express 340 * install feature. Only available in the constructor because it may not be 341 * set after Flash Player has been embedded in the page. 342 * @type String 343 */ 344 345 /** 346 * @attribute version 347 * @description Minimum required version for the SWF file. Only available in the constructor because it may not be 348 * set after Flash Player has been embedded in the page. 349 * @type String 350 */ 351 352 /** 353 * @attribute backgroundColor 354 * @description The background color of the SWF. Only available in the constructor because it may not be 355 * set after Flash Player has been embedded in the page. 356 * @type String 357 */ 358 359 /** 360 * @attribute altText 361 * @description The alternative text to provide for screen readers and other assistive technology. 362 * @type String 363 */ 364 this.setAttributeConfig("altText", 365 { 366 method: this._setAltText, 367 getter: this._getAltText 368 369 }); 370 371 /** 372 * @attribute swfURL 373 * @description Absolute or relative URL to the SWF displayed by the Chart. Only available in the constructor because it may not be 374 * set after Flash Player has been embedded in the page. 375 * @type String 376 */ 377 this.setAttributeConfig("swfURL", 378 { 379 getter: this._getSWFURL 380 }); 381 382 /** 383 * @attribute request 384 * @description Request to be sent to the Chart's DataSource. 385 * @type String 386 */ 387 this.setAttributeConfig("request", 388 { 389 method: this._setRequest, 390 getter: this._getRequest 391 }); 392 393 /** 394 * @attribute dataSource 395 * @description The DataSource instance to display in the Chart. 396 * @type DataSource 397 */ 398 this.setAttributeConfig("dataSource", 399 { 400 method: this._setDataSource, 401 getter: this._getDataSource 402 }); 403 404 /** 405 * @attribute series 406 * @description Defines the series to be displayed by the Chart. 407 * @type Array 408 */ 409 this.setAttributeConfig("series", 410 { 411 method: this._setSeriesDefs, 412 getter: this._getSeriesDefs 413 }); 414 415 /** 416 * @attribute categoryNames 417 * @description Defines the names of the categories to be displayed in the Chart.. 418 * @type Array 419 */ 420 this.setAttributeConfig("categoryNames", 421 { 422 validator: YAHOO.lang.isArray, 423 method: this._setCategoryNames, 424 getter: this._getCategoryNames 425 }); 426 427 /** 428 * @attribute dataTipFunction 429 * @description The string representation of a globally-accessible function 430 * that may be called by the SWF to generate the datatip text for a Chart's item. 431 * @type String 432 */ 433 this.setAttributeConfig("dataTipFunction", 434 { 435 method: this._setDataTipFunction, 436 getter: this._getDataTipFunction 437 }); 438 439 /** 440 * @attribute legendLabelFunction 441 * @description The string representation of a globally-accessible function 442 * that may be called by the SWF to format the labels of a Chart's legend. 443 * @type String 444 */ 445 this.setAttributeConfig("legendLabelFunction", 446 { 447 method: this._setLegendLabelFunction, 448 getter: this._getLegendLabelFunction 449 }); 450 451 /** 452 * @attribute polling 453 * @description A numeric value indicating the number of milliseconds between 454 * polling requests to the DataSource. 455 * @type Number 456 */ 457 this.setAttributeConfig("polling", 458 { 459 method: this._setPolling, 460 getter: this._getPolling 461 }); 462 }, 463 464 /** 465 * Handles swfReady event from SWF. 466 * 467 * @method _eventHandler 468 * @private 469 */ 470 _eventHandler: function(event) 471 { 472 if(event.type == "swfReady") 473 { 474 this._swf = this._swfEmbed._swf; 475 this._loadHandler(); 476 this.fireEvent("contentReady"); 477 } 478 }, 479 480 /** 481 * Called when the SWF is ready for communication. Sets the type, initializes 482 * the styles, and sets the DataSource. 483 * 484 * @method _loadHandler 485 * @private 486 */ 487 _loadHandler: function() 488 { 489 //the type is set separately because it must be first! 490 if(!this._swf || !this._swf.setType) return; 491 this._swf.setType(this._type); 492 493 494 //set initial styles 495 if(this._attributes.style) 496 { 497 var style = this._attributes.style; 498 this.setStyles(style); 499 } 500 501 this._initialized = false; 502 503 this._initAttributes(this._attributes); 504 this.setAttributes(this._attributes, true); 505 506 this._initialized = true; 507 if(this._dataSource) 508 { 509 this.set("dataSource", this._dataSource); 510 } 511 }, 512 513 /** 514 * Sends (or resends) the request to the DataSource. 515 * 516 * @method refreshData 517 */ 518 refreshData: function() 519 { 520 if(!this._initialized) 521 { 522 return; 523 } 524 525 if(this._dataSource !== null) 526 { 527 if(this._pollingID !== null) 528 { 529 this._dataSource.clearInterval(this._pollingID); 530 this._pollingID = null; 531 } 532 533 if(this._pollingInterval > 0) 534 { 535 this._pollingID = this._dataSource.setInterval(this._pollingInterval, this._request, this._loadDataHandler, this); 536 } 537 this._dataSource.sendRequest(this._request, this._loadDataHandler, this); 538 } 539 }, 540 541 /** 542 * Called when the DataSource receives new data. The series definitions are used 543 * to build a data provider for the SWF chart. 544 * 545 * @method _loadDataHandler 546 * @private 547 */ 548 _loadDataHandler: function(request, response, error) 549 { 550 if(this._swf) 551 { 552 if(error) 553 { 554 } 555 else 556 { 557 var i; 558 if(this._seriesFunctions) 559 { 560 var count = this._seriesFunctions.length; 561 for(i = 0; i < count; i++) 562 { 563 YAHOO.widget.Chart.removeProxyFunction(this._seriesFunctions[i]); 564 } 565 this._seriesFunctions = null; 566 } 567 this._seriesFunctions = []; 568 569 //make a copy of the series definitions so that we aren't 570 //editing them directly. 571 var dataProvider = []; 572 var seriesCount = 0; 573 var currentSeries = null; 574 if(this._seriesDefs !== null) 575 { 576 seriesCount = this._seriesDefs.length; 577 for(i = 0; i < seriesCount; i++) 578 { 579 currentSeries = this._seriesDefs[i]; 580 var clonedSeries = {}; 581 for(var prop in currentSeries) 582 { 583 if(YAHOO.lang.hasOwnProperty(currentSeries, prop)) 584 { 585 if(prop == "style") 586 { 587 if(currentSeries.style !== null) 588 { 589 clonedSeries.style = YAHOO.lang.JSON.stringify(currentSeries.style); 590 } 591 } 592 593 else if(prop == "labelFunction") 594 { 595 if(currentSeries.labelFunction !== null) 596 { 597 clonedSeries.labelFunction = YAHOO.widget.Chart.getFunctionReference(currentSeries.labelFunction); 598 this._seriesFunctions.push(clonedSeries.labelFunction); 599 } 600 } 601 602 else if(prop == "dataTipFunction") 603 { 604 if(currentSeries.dataTipFunction !== null) 605 { 606 clonedSeries.dataTipFunction = YAHOO.widget.Chart.getFunctionReference(currentSeries.dataTipFunction); 607 this._seriesFunctions.push(clonedSeries.dataTipFunction); 608 } 609 } 610 611 else if(prop == "legendLabelFunction") 612 { 613 if(currentSeries.legendLabelFunction !== null) 614 { 615 clonedSeries.legendLabelFunction = YAHOO.widget.Chart.getFunctionReference(currentSeries.legendLabelFunction); 616 this._seriesFunctions.push(clonedSeries.legendLabelFunction); 617 } 618 } 619 620 else 621 { 622 clonedSeries[prop] = currentSeries[prop]; 623 } 624 } 625 } 626 dataProvider.push(clonedSeries); 627 } 628 } 629 630 if(seriesCount > 0) 631 { 632 for(i = 0; i < seriesCount; i++) 633 { 634 currentSeries = dataProvider[i]; 635 if(!currentSeries.type) 636 { 637 currentSeries.type = this._type; 638 } 639 currentSeries.dataProvider = response.results; 640 } 641 } 642 else 643 { 644 var series = {type: this._type, dataProvider: response.results}; 645 dataProvider.push(series); 646 } 647 try 648 { 649 if(this._swf.setDataProvider) this._swf.setDataProvider(dataProvider); 650 } 651 catch(e) 652 { 653 this._swf.setDataProvider(dataProvider); 654 } 655 } 656 } 657 }, 658 659 /** 660 * Storage for the request attribute. 661 * 662 * @property _request 663 * @private 664 */ 665 _request: "", 666 667 /** 668 * Getter for the request attribute. 669 * 670 * @method _getRequest 671 * @private 672 */ 673 _getRequest: function() 674 { 675 return this._request; 676 }, 677 678 /** 679 * Setter for the request attribute. 680 * 681 * @method _setRequest 682 * @private 683 */ 684 _setRequest: function(value) 685 { 686 this._request = value; 687 this.refreshData(); 688 }, 689 690 /** 691 * Storage for the dataSource attribute. 692 * 693 * @property _dataSource 694 * @private 695 */ 696 _dataSource: null, 697 698 /** 699 * Getter for the dataSource attribute. 700 * 701 * @method _getDataSource 702 * @private 703 */ 704 _getDataSource: function() 705 { 706 return this._dataSource; 707 }, 708 709 /** 710 * Setter for the dataSource attribute. 711 * 712 * @method _setDataSource 713 * @private 714 */ 715 _setDataSource: function(value) 716 { 717 this._dataSource = value; 718 this.refreshData(); 719 }, 720 721 /** 722 * Storage for the series attribute. 723 * 724 * @property _seriesDefs 725 * @private 726 */ 727 _seriesDefs: null, 728 729 /** 730 * Getter for the series attribute. 731 * 732 * @method _getSeriesDefs 733 * @private 734 */ 735 _getSeriesDefs: function() 736 { 737 return this._seriesDefs; 738 }, 739 740 /** 741 * Setter for the series attribute. 742 * 743 * @method _setSeriesDefs 744 * @private 745 */ 746 _setSeriesDefs: function(value) 747 { 748 this._seriesDefs = value; 749 this.refreshData(); 750 }, 751 752 /** 753 * Getter for the categoryNames attribute. 754 * 755 * @method _getCategoryNames 756 * @private 757 */ 758 _getCategoryNames: function() 759 { 760 return this._swf.getCategoryNames(); 761 }, 762 763 /** 764 * Setter for the categoryNames attribute. 765 * 766 * @method _setCategoryNames 767 * @private 768 */ 769 _setCategoryNames: function(value) 770 { 771 this._swf.setCategoryNames(value); 772 }, 773 774 /** 775 * Setter for the dataTipFunction attribute. 776 * 777 * @method _setDataTipFunction 778 * @private 779 */ 780 _setDataTipFunction: function(value) 781 { 782 if(this._dataTipFunction) 783 { 784 YAHOO.widget.Chart.removeProxyFunction(this._dataTipFunction); 785 } 786 787 if(value) 788 { 789 this._dataTipFunction = value = YAHOO.widget.Chart.getFunctionReference(value); 790 } 791 this._swf.setDataTipFunction(value); 792 }, 793 794 /** 795 * Setter for the legendLabelFunction attribute. 796 * 797 * @method _setLegendLabelFunction 798 * @private 799 */ 800 _setLegendLabelFunction: function(value) 801 { 802 if(this._legendLabelFunction) 803 { 804 YAHOO.widget.Chart.removeProxyFunction(this._legendLabelFunction); 805 } 806 807 if(value) 808 { 809 this._legendLabelFunction = value = YAHOO.widget.Chart.getFunctionReference(value); 810 } 811 this._swf.setLegendLabelFunction(value); 812 }, 813 814 /** 815 * Getter for the legendLabelFunction attribute. 816 * 817 * @method _getLegendLabelFunction 818 * @private 819 */ 820 _getLegendLabelFunction: function() 821 { 822 return this._legendLabelFunction; 823 }, 824 825 /** 826 * Getter for the polling attribute. 827 * 828 * @method _getPolling 829 * @private 830 */ 831 _getPolling: function() 832 { 833 return this._pollingInterval; 834 }, 835 836 /** 837 * Setter for the polling attribute. 838 * 839 * @method _setPolling 840 * @private 841 */ 842 _setPolling: function(value) 843 { 844 this._pollingInterval = value; 845 this.refreshData(); 846 }, 847 848 /** 849 * The javascript wrapper for the swf object 850 * 851 * @property _swfEmbed 852 * @type swf 853 * @private 854 */ 855 _swfEmbed: null, 856 857 /** 858 * The URL of the SWF file. 859 * @property _swfURL 860 * @type String 861 * @private 862 */ 863 _swfURL: null, 864 865 /** 866 * The ID of the containing DIV. 867 * @property _containerID 868 * @type String 869 * @private 870 */ 871 _containerID: null, 872 873 /** 874 * A reference to the embedded SWF file. 875 * @property _swf 876 * @private 877 */ 878 _swf: null, 879 880 /** 881 * The id of this instance. 882 * @property _id 883 * @type String 884 * @private 885 */ 886 _id: null, 887 888 /** 889 * Indicates whether the SWF has been initialized and is ready 890 * to communicate with JavaScript 891 * @property _initialized 892 * @type Boolean 893 * @private 894 */ 895 _initialized: false, 896 897 /** 898 * The initializing attributes are stored here until the SWF is ready. 899 * @property _attributes 900 * @type Object 901 * @private 902 */ 903 _attributes: null, //the intializing attributes 904 905 set: function(name, value) 906 { 907 //save all the attributes in case the swf reloads 908 //so that we can pass them in again 909 this._attributes[name] = value; 910 YAHOO.widget.Chart.superclass.set.call(this, name, value); 911 }, 912 913 /** 914 * Getter for swfURL attribute. 915 * 916 * @method _getSWFURL 917 * @private 918 */ 919 _getSWFURL: function() 920 { 921 return this._swfURL; 922 }, 923 924 /** 925 * Getter for altText attribute. 926 * 927 * @method _getAltText 928 * @private 929 */ 930 _getAltText: function() 931 { 932 return this._swf.getAltText(); 933 }, 934 935 /** 936 * Setter for altText attribute. 937 * 938 * @method _setAltText 939 * @private 940 */ 941 _setAltText: function(value) 942 { 943 this._swf.setAltText(value); 944 } 945 }); 946 947 /** 948 * The number of proxy functions that have been created. 949 * @static 950 * @private 951 */ 952 YAHOO.widget.Chart.proxyFunctionCount = 0; 953 954 /** 955 * Creates a globally accessible function that wraps a function reference. 956 * Returns the proxy function's name as a string for use by the SWF through 957 * ExternalInterface. 958 * 959 * @method YAHOO.widget.Chart.createProxyFunction 960 * @static 961 * @private 962 */ 963 YAHOO.widget.Chart.createProxyFunction = function(func, scope) 964 { 965 var scope = scope || null; 966 var index = YAHOO.widget.Chart.proxyFunctionCount; 967 YAHOO.widget.Chart["proxyFunction" + index] = function() 968 { 969 return func.apply(scope, arguments); 970 }; 971 YAHOO.widget.Chart.proxyFunctionCount++; 972 return "YAHOO.widget.Chart.proxyFunction" + index.toString(); 973 }; 974 975 /** 976 * Uses YAHOO.widget.Chart.createProxyFunction to return string 977 * reference to a function. 978 * 979 * @method YAHOO.widget.Chart.getFunctionReference 980 * @static 981 * @private 982 */ 983 YAHOO.widget.Chart.getFunctionReference = function(value) 984 { 985 if(typeof value == "function") 986 { 987 value = YAHOO.widget.Chart.createProxyFunction(value); 988 } 989 else if(value.func && typeof value.func == "function") 990 { 991 var args = [value.func]; 992 if(value.scope && typeof value.scope == "object") 993 { 994 args.push(value.scope); 995 } 996 value = YAHOO.widget.Chart.createProxyFunction.apply(this, args); 997 } 998 return value; 999 } 1000 1001 /** 1002 * Removes a function created with createProxyFunction() 1003 * 1004 * @method YAHOO.widget.Chart.removeProxyFunction 1005 * @static 1006 * @private 1007 */ 1008 YAHOO.widget.Chart.removeProxyFunction = function(funcName) 1009 { 1010 //quick error check 1011 if(!funcName || funcName.indexOf("YAHOO.widget.Chart.proxyFunction") < 0) 1012 { 1013 return; 1014 } 1015 1016 funcName = funcName.substr(26); 1017 YAHOO.widget.Chart[funcName] = null; 1018 }; 1019 1020 /** 1021 * Storage for the dataTipFunction attribute. 1022 * 1023 * @property Chart.SWFURL 1024 * @private 1025 * @static 1026 * @final 1027 * @default "assets/charts.swf" 1028 */ 1029 YAHOO.widget.Chart.SWFURL = "assets/charts.swf"; 1030 /** 1031 * PieChart class for the YUI Charts widget. 1032 * 1033 * @namespace YAHOO.widget 1034 * @class PieChart 1035 * @uses YAHOO.widget.Chart 1036 * @constructor 1037 * @param containerId {HTMLElement} Container element for the Flash Player instance. 1038 * @param dataSource {YAHOO.util.DataSource} DataSource instance. 1039 * @param attributes {object} (optional) Object literal of configuration values. 1040 */ 1041 YAHOO.widget.PieChart = function(containerId, dataSource, attributes) 1042 { 1043 YAHOO.widget.PieChart.superclass.constructor.call(this, "pie", containerId, dataSource, attributes); 1044 }; 1045 1046 YAHOO.lang.extend(YAHOO.widget.PieChart, YAHOO.widget.Chart, 1047 { 1048 /** 1049 * Initializes the attributes. 1050 * 1051 * @method _initAttributes 1052 * @private 1053 */ 1054 _initAttributes: function(attributes) 1055 { 1056 YAHOO.widget.PieChart.superclass._initAttributes.call(this, attributes); 1057 1058 /** 1059 * @attribute dataField 1060 * @description The field in each item that corresponds to the data value. 1061 * @type String 1062 */ 1063 this.setAttributeConfig("dataField", 1064 { 1065 validator: YAHOO.lang.isString, 1066 method: this._setDataField, 1067 getter: this._getDataField 1068 }); 1069 1070 /** 1071 * @attribute categoryField 1072 * @description The field in each item that corresponds to the category value. 1073 * @type String 1074 */ 1075 this.setAttributeConfig("categoryField", 1076 { 1077 validator: YAHOO.lang.isString, 1078 method: this._setCategoryField, 1079 getter: this._getCategoryField 1080 }); 1081 }, 1082 1083 /** 1084 * Getter for the dataField attribute. 1085 * 1086 * @method _getDataField 1087 * @private 1088 */ 1089 _getDataField: function() 1090 { 1091 return this._swf.getDataField(); 1092 }, 1093 1094 /** 1095 * Setter for the dataField attribute. 1096 * 1097 * @method _setDataField 1098 * @private 1099 */ 1100 _setDataField: function(value) 1101 { 1102 this._swf.setDataField(value); 1103 }, 1104 1105 /** 1106 * Getter for the categoryField attribute. 1107 * 1108 * @method _getCategoryField 1109 * @private 1110 */ 1111 _getCategoryField: function() 1112 { 1113 return this._swf.getCategoryField(); 1114 }, 1115 1116 /** 1117 * Setter for the categoryField attribute. 1118 * 1119 * @method _setCategoryField 1120 * @private 1121 */ 1122 _setCategoryField: function(value) 1123 { 1124 this._swf.setCategoryField(value); 1125 } 1126 }); 1127 /** 1128 * CartesianChart class for the YUI Charts widget. 1129 * 1130 * @namespace YAHOO.widget 1131 * @class CartesianChart 1132 * @uses YAHOO.widget.Chart 1133 * @constructor 1134 * @param type {String} The char type. May be "line", "column", or "bar" 1135 * @param containerId {HTMLElement} Container element for the Flash Player instance. 1136 * @param dataSource {YAHOO.util.DataSource} DataSource instance. 1137 * @param attributes {object} (optional) Object literal of configuration values. 1138 */ 1139 YAHOO.widget.CartesianChart = function(type, containerId, dataSource, attributes) 1140 { 1141 YAHOO.widget.CartesianChart.superclass.constructor.call(this, type, containerId, dataSource, attributes); 1142 }; 1143 1144 YAHOO.lang.extend(YAHOO.widget.CartesianChart, YAHOO.widget.Chart, 1145 { 1146 /** 1147 * Stores a reference to the xAxis labelFunction created by 1148 * YAHOO.widget.Chart.createProxyFunction() 1149 * @property _xAxisLabelFunctions 1150 * @type String 1151 * @private 1152 */ 1153 _xAxisLabelFunctions: [], 1154 1155 /** 1156 * Stores a reference to the yAxis labelFunctions created by 1157 * YAHOO.widget.Chart.createProxyFunction() 1158 * @property _yAxisLabelFunctions 1159 * @type Array 1160 * @private 1161 */ 1162 _yAxisLabelFunctions: [], 1163 1164 destroy: function() 1165 { 1166 //remove proxy functions 1167 this._removeAxisFunctions(this._xAxisLabelFunctions); 1168 this._removeAxisFunctions(this._yAxisLabelFunctions); 1169 1170 //call last 1171 YAHOO.widget.CartesianChart.superclass.destroy.call(this); 1172 }, 1173 1174 /** 1175 * Initializes the attributes. 1176 * 1177 * @method _initAttributes 1178 * @private 1179 */ 1180 _initAttributes: function(attributes) 1181 { 1182 YAHOO.widget.CartesianChart.superclass._initAttributes.call(this, attributes); 1183 1184 /** 1185 * @attribute xField 1186 * @description The field in each item that corresponds to a value on the x axis. 1187 * @type String 1188 */ 1189 this.setAttributeConfig("xField", 1190 { 1191 validator: YAHOO.lang.isString, 1192 method: this._setXField, 1193 getter: this._getXField 1194 }); 1195 1196 /** 1197 * @attribute yField 1198 * @description The field in each item that corresponds to a value on the x axis. 1199 * @type String 1200 */ 1201 this.setAttributeConfig("yField", 1202 { 1203 validator: YAHOO.lang.isString, 1204 method: this._setYField, 1205 getter: this._getYField 1206 }); 1207 1208 /** 1209 * @attribute xAxis 1210 * @description A custom configuration for the horizontal x axis. 1211 * @type Axis 1212 */ 1213 this.setAttributeConfig("xAxis", 1214 { 1215 method: this._setXAxis 1216 }); 1217 1218 /** 1219 * @attribute xAxes 1220 * @description Custom configurations for the horizontal x axes. 1221 * @type Array 1222 */ 1223 this.setAttributeConfig("xAxes", 1224 { 1225 method: this._setXAxes 1226 }); 1227 1228 /** 1229 * @attribute yAxis 1230 * @description A custom configuration for the vertical y axis. 1231 * @type Axis 1232 */ 1233 this.setAttributeConfig("yAxis", 1234 { 1235 method: this._setYAxis 1236 }); 1237 1238 /** 1239 * @attribute yAxes 1240 * @description Custom configurations for the vertical y axes. 1241 * @type Array 1242 */ 1243 this.setAttributeConfig("yAxes", 1244 { 1245 method: this._setYAxes 1246 }); 1247 1248 /** 1249 * @attribute constrainViewport 1250 * @description Determines whether the viewport is constrained to prevent series data from overflow. 1251 * @type Boolean 1252 */ 1253 this.setAttributeConfig("constrainViewport", 1254 { 1255 method: this._setConstrainViewport 1256 }); 1257 }, 1258 1259 /** 1260 * Getter for the xField attribute. 1261 * 1262 * @method _getXField 1263 * @private 1264 */ 1265 _getXField: function() 1266 { 1267 return this._swf.getHorizontalField(); 1268 }, 1269 1270 /** 1271 * Setter for the xField attribute. 1272 * 1273 * @method _setXField 1274 * @private 1275 */ 1276 _setXField: function(value) 1277 { 1278 this._swf.setHorizontalField(value); 1279 }, 1280 1281 /** 1282 * Getter for the yField attribute. 1283 * 1284 * @method _getYField 1285 * @private 1286 */ 1287 _getYField: function() 1288 { 1289 return this._swf.getVerticalField(); 1290 }, 1291 1292 /** 1293 * Setter for the yField attribute. 1294 * 1295 * @method _setYField 1296 * @private 1297 */ 1298 _setYField: function(value) 1299 { 1300 this._swf.setVerticalField(value); 1301 }, 1302 1303 /** 1304 * Receives an axis object, creates a proxy function for 1305 * the labelFunction and returns the updated object. 1306 * 1307 * @method _getClonedAxis 1308 * @private 1309 */ 1310 _getClonedAxis: function(value) 1311 { 1312 var clonedAxis = {}; 1313 for(var prop in value) 1314 { 1315 if(prop == "labelFunction") 1316 { 1317 if(value.labelFunction && value.labelFunction !== null) 1318 { 1319 clonedAxis.labelFunction = YAHOO.widget.Chart.getFunctionReference(value.labelFunction); 1320 } 1321 } 1322 else 1323 { 1324 clonedAxis[prop] = value[prop]; 1325 } 1326 } 1327 return clonedAxis; 1328 }, 1329 1330 /** 1331 * Removes axis functions contained in an array 1332 * 1333 * @method _removeAxisFunctions 1334 * @private 1335 */ 1336 _removeAxisFunctions: function(axisFunctions) 1337 { 1338 if(axisFunctions && axisFunctions.length > 0) 1339 { 1340 var len = axisFunctions.length; 1341 for(var i = 0; i < len; i++) 1342 { 1343 if(axisFunctions[i] !== null) 1344 { 1345 YAHOO.widget.Chart.removeProxyFunction(axisFunctions[i]); 1346 } 1347 } 1348 axisFunctions = []; 1349 } 1350 }, 1351 1352 /** 1353 * Setter for the xAxis attribute. 1354 * 1355 * @method _setXAxis 1356 * @private 1357 */ 1358 _setXAxis: function(value) 1359 { 1360 if(value.position != "bottom" && value.position != "top") value.position = "bottom"; 1361 this._removeAxisFunctions(this._xAxisLabelFunctions); 1362 value = this._getClonedAxis(value); 1363 this._xAxisLabelFunctions.push(value.labelFunction); 1364 this._swf.setHorizontalAxis(value); 1365 }, 1366 1367 /** 1368 * Setter for the xAxes attribute 1369 * 1370 * @method _setXAxes 1371 * @private 1372 */ 1373 _setXAxes: function(value) 1374 { 1375 this._removeAxisFunctions(this._xAxisLabelFunctions); 1376 var len = value.length; 1377 for(var i = 0; i < len; i++) 1378 { 1379 if(value[i].position == "left") value[i].position = "bottom"; 1380 value[i] = this._getClonedAxis(value[i]); 1381 if(value[i].labelFunction) this._xAxisLabelFunctions.push(value[i].labelFunction); 1382 this._swf.setHorizontalAxis(value[i]); 1383 } 1384 }, 1385 1386 /** 1387 * Setter for the yAxis attribute. 1388 * 1389 * @method _setYAxis 1390 * @private 1391 */ 1392 _setYAxis: function(value) 1393 { 1394 this._removeAxisFunctions(this._yAxisLabelFunctions); 1395 value = this._getClonedAxis(value); 1396 this._yAxisLabelFunctions.push(value.labelFunction); 1397 this._swf.setVerticalAxis(value); 1398 }, 1399 1400 /** 1401 * Setter for the yAxes attribute. 1402 * 1403 * @method _setYAxes 1404 * @private 1405 */ 1406 _setYAxes: function(value) 1407 { 1408 this._removeAxisFunctions(this._yAxisLabelFunctions); 1409 var len = value.length; 1410 for(var i = 0; i < len; i++) 1411 { 1412 value[i] = this._getClonedAxis(value[i]); 1413 if(value[i].labelFunction) this._yAxisLabelFunctions.push(value[i].labelFunction); 1414 this._swf.setVerticalAxis(value[i]); 1415 } 1416 }, 1417 1418 /** 1419 * Setter for the constrainViewport attribute 1420 * 1421 * @method _setConstrainViewport 1422 * @private 1423 */ 1424 _setConstrainViewport: function(value) 1425 { 1426 this._swf.setConstrainViewport(value); 1427 }, 1428 1429 /** 1430 * Sets the style object for a single series based on its index 1431 * 1432 * @method setSeriesStylesByIndex 1433 * @param index {Number} The position within the series definition to apply the style 1434 * @param style {object} Style object to be applied to the selected series 1435 */ 1436 setSeriesStylesByIndex:function(index, style) 1437 { 1438 style = YAHOO.lang.JSON.stringify(style); 1439 if(this._swf && this._swf.setSeriesStylesByIndex) this._swf.setSeriesStylesByIndex(index, style); 1440 } 1441 }); 1442 /** 1443 * LineChart class for the YUI Charts widget. 1444 * 1445 * @namespace YAHOO.widget 1446 * @class LineChart 1447 * @uses YAHOO.widget.CartesianChart 1448 * @constructor 1449 * @param containerId {HTMLElement} Container element for the Flash Player instance. 1450 * @param dataSource {YAHOO.util.DataSource} DataSource instance. 1451 * @param attributes {object} (optional) Object literal of configuration values. 1452 */ 1453 YAHOO.widget.LineChart = function(containerId, dataSource, attributes) 1454 { 1455 YAHOO.widget.LineChart.superclass.constructor.call(this, "line", containerId, dataSource, attributes); 1456 }; 1457 1458 YAHOO.lang.extend(YAHOO.widget.LineChart, YAHOO.widget.CartesianChart); 1459 1460 /** 1461 * ColumnChart class for the YUI Charts widget. 1462 * 1463 * @namespace YAHOO.widget 1464 * @class ColumnChart 1465 * @uses YAHOO.widget.CartesianChart 1466 * @constructor 1467 * @param containerId {HTMLElement} Container element for the Flash Player instance. 1468 * @param dataSource {YAHOO.util.DataSource} DataSource instance. 1469 * @param attributes {object} (optional) Object literal of configuration values. 1470 */ 1471 YAHOO.widget.ColumnChart = function(containerId, dataSource, attributes) 1472 { 1473 YAHOO.widget.ColumnChart.superclass.constructor.call(this, "column", containerId, dataSource, attributes); 1474 }; 1475 1476 YAHOO.lang.extend(YAHOO.widget.ColumnChart, YAHOO.widget.CartesianChart); 1477 1478 /** 1479 * BarChart class for the YUI Charts widget. 1480 * 1481 * @namespace YAHOO.widget 1482 * @class BarChart 1483 * @uses YAHOO.widget.CartesianChart 1484 * @constructor 1485 * @param containerId {HTMLElement} Container element for the Flash Player instance. 1486 * @param dataSource {YAHOO.util.DataSource} DataSource instance. 1487 * @param attributes {object} (optional) Object literal of configuration values. 1488 */ 1489 YAHOO.widget.BarChart = function(containerId, dataSource, attributes) 1490 { 1491 YAHOO.widget.BarChart.superclass.constructor.call(this, "bar", containerId, dataSource, attributes); 1492 }; 1493 1494 YAHOO.lang.extend(YAHOO.widget.BarChart, YAHOO.widget.CartesianChart); 1495 1496 /** 1497 * StackedColumnChart class for the YUI Charts widget. 1498 * 1499 * @namespace YAHOO.widget 1500 * @class StackedColumnChart 1501 * @uses YAHOO.widget.CartesianChart 1502 * @constructor 1503 * @param containerId {HTMLElement} Container element for the Flash Player instance. 1504 * @param dataSource {YAHOO.util.DataSource} DataSource instance. 1505 * @param attributes {object} (optional) Object literal of configuration values. 1506 */ 1507 YAHOO.widget.StackedColumnChart = function(containerId, dataSource, attributes) 1508 { 1509 YAHOO.widget.StackedColumnChart.superclass.constructor.call(this, "stackcolumn", containerId, dataSource, attributes); 1510 }; 1511 1512 YAHOO.lang.extend(YAHOO.widget.StackedColumnChart, YAHOO.widget.CartesianChart); 1513 1514 /** 1515 * StackedBarChart class for the YUI Charts widget. 1516 * 1517 * @namespace YAHOO.widget 1518 * @class StackedBarChart 1519 * @uses YAHOO.widget.CartesianChart 1520 * @constructor 1521 * @param containerId {HTMLElement} Container element for the Flash Player instance. 1522 * @param dataSource {YAHOO.util.DataSource} DataSource instance. 1523 * @param attributes {object} (optional) Object literal of configuration values. 1524 */ 1525 YAHOO.widget.StackedBarChart = function(containerId, dataSource, attributes) 1526 { 1527 YAHOO.widget.StackedBarChart.superclass.constructor.call(this, "stackbar", containerId, dataSource, attributes); 1528 }; 1529 1530 YAHOO.lang.extend(YAHOO.widget.StackedBarChart, YAHOO.widget.CartesianChart); 1531 /** 1532 * Defines a CartesianChart's vertical or horizontal axis. 1533 * 1534 * @namespace YAHOO.widget 1535 * @class Axis 1536 * @constructor 1537 */ 1538 YAHOO.widget.Axis = function() 1539 { 1540 }; 1541 1542 YAHOO.widget.Axis.prototype = 1543 { 1544 /** 1545 * The type of axis. 1546 * 1547 * @property type 1548 * @type String 1549 */ 1550 type: null, 1551 1552 /** 1553 * If true, the items on the axis will be drawn in opposite direction. 1554 * 1555 * @property reverse 1556 * @type Boolean 1557 */ 1558 reverse: false, 1559 1560 /** 1561 * A string reference to the globally-accessible function that may be called to 1562 * determine each of the label values for this axis. Also accepts function references. 1563 * 1564 * @property labelFunction 1565 * @type String 1566 */ 1567 labelFunction: null, 1568 1569 /** 1570 * The space, in pixels, between labels on an axis. 1571 * 1572 * @property labelSpacing 1573 * @type Number 1574 */ 1575 labelSpacing: 2, 1576 1577 /** 1578 * The text that will appear next to the axis to indicate information about the data that it displays. 1579 * 1580 * @property title 1581 * @type String 1582 */ 1583 title: null 1584 }; 1585 /** 1586 * A type of axis whose units are measured in numeric values. 1587 * 1588 * @namespace YAHOO.widget 1589 * @class NumericAxis 1590 * @extends YAHOO.widget.Axis 1591 * @constructor 1592 */ 1593 YAHOO.widget.NumericAxis = function() 1594 { 1595 YAHOO.widget.NumericAxis.superclass.constructor.call(this); 1596 }; 1597 1598 YAHOO.lang.extend(YAHOO.widget.NumericAxis, YAHOO.widget.Axis, 1599 { 1600 type: "numeric", 1601 1602 /** 1603 * The minimum value drawn by the axis. If not set explicitly, the axis minimum 1604 * will be calculated automatically. 1605 * 1606 * @property minimum 1607 * @type Number 1608 */ 1609 minimum: NaN, 1610 1611 /** 1612 * The maximum value drawn by the axis. If not set explicitly, the axis maximum 1613 * will be calculated automatically. 1614 * 1615 * @property maximum 1616 * @type Number 1617 */ 1618 maximum: NaN, 1619 1620 /** 1621 * The spacing between major intervals on this axis. 1622 * 1623 * @property majorUnit 1624 * @type Number 1625 */ 1626 majorUnit: NaN, 1627 1628 /** 1629 * The spacing between minor intervals on this axis. 1630 * 1631 * @property minorUnit 1632 * @type Number 1633 */ 1634 minorUnit: NaN, 1635 1636 /** 1637 * If true, the labels, ticks, gridlines, and other objects will snap to 1638 * the nearest major or minor unit. If false, their position will be based 1639 * on the minimum value. 1640 * 1641 * @property snapToUnits 1642 * @type Boolean 1643 */ 1644 snapToUnits: true, 1645 1646 /** 1647 * Series that are stackable will only stack when this value is set to true. 1648 * 1649 * @property stackingEnabled 1650 * @type Boolean 1651 */ 1652 stackingEnabled: false, 1653 1654 /** 1655 * If true, and the bounds are calculated automatically, either the minimum or 1656 * maximum will be set to zero. 1657 * 1658 * @property alwaysShowZero 1659 * @type Boolean 1660 */ 1661 alwaysShowZero: true, 1662 1663 /** 1664 * The scaling algorithm to use on this axis. May be "linear" or "logarithmic". 1665 * 1666 * @property scale 1667 * @type String 1668 */ 1669 scale: "linear", 1670 1671 /** 1672 * Indicates whether to round the major unit. 1673 * 1674 * @property roundMajorUnit 1675 * @type Boolean 1676 */ 1677 roundMajorUnit: true, 1678 1679 /** 1680 * Indicates whether to factor in the size of the labels when calculating a major unit. 1681 * 1682 * @property calculateByLabelSize 1683 * @type Boolean 1684 */ 1685 calculateByLabelSize: true, 1686 1687 /** 1688 * Indicates the position of the axis relative to the chart 1689 * 1690 * @property position 1691 * @type String 1692 */ 1693 position:"left", 1694 1695 /** 1696 * Indicates whether to extend maximum beyond data's maximum to the nearest 1697 * majorUnit. 1698 * 1699 * @property adjustMaximumByMajorUnit 1700 * @type Boolean 1701 */ 1702 adjustMaximumByMajorUnit:true, 1703 1704 /** 1705 * Indicates whether to extend the minimum beyond data's minimum to the nearest 1706 * majorUnit. 1707 * 1708 * @property adjustMinimumByMajorUnit 1709 * @type Boolean 1710 */ 1711 adjustMinimumByMajorUnit:true 1712 }); 1713 /** 1714 * A type of axis whose units are measured in time-based values. 1715 * 1716 * @namespace YAHOO.widget 1717 * @class TimeAxis 1718 * @constructor 1719 */ 1720 YAHOO.widget.TimeAxis = function() 1721 { 1722 YAHOO.widget.TimeAxis.superclass.constructor.call(this); 1723 }; 1724 1725 YAHOO.lang.extend(YAHOO.widget.TimeAxis, YAHOO.widget.Axis, 1726 { 1727 type: "time", 1728 1729 /** 1730 * The minimum value drawn by the axis. If not set explicitly, the axis minimum 1731 * will be calculated automatically. 1732 * 1733 * @property minimum 1734 * @type Date 1735 */ 1736 minimum: null, 1737 1738 /** 1739 * The maximum value drawn by the axis. If not set explicitly, the axis maximum 1740 * will be calculated automatically. 1741 * 1742 * @property maximum 1743 * @type Number 1744 */ 1745 maximum: null, 1746 1747 /** 1748 * The spacing between major intervals on this axis. 1749 * 1750 * @property majorUnit 1751 * @type Number 1752 */ 1753 majorUnit: NaN, 1754 1755 /** 1756 * The time unit used by the majorUnit. 1757 * 1758 * @property majorTimeUnit 1759 * @type String 1760 */ 1761 majorTimeUnit: null, 1762 1763 /** 1764 * The spacing between minor intervals on this axis. 1765 * 1766 * @property majorUnit 1767 * @type Number 1768 */ 1769 minorUnit: NaN, 1770 1771 /** 1772 * The time unit used by the minorUnit. 1773 * 1774 * @property majorTimeUnit 1775 * @type String 1776 */ 1777 minorTimeUnit: null, 1778 1779 /** 1780 * If true, the labels, ticks, gridlines, and other objects will snap to 1781 * the nearest major or minor unit. If false, their position will be based 1782 * on the minimum value. 1783 * 1784 * @property snapToUnits 1785 * @type Boolean 1786 */ 1787 snapToUnits: true, 1788 1789 /** 1790 * Series that are stackable will only stack when this value is set to true. 1791 * 1792 * @property stackingEnabled 1793 * @type Boolean 1794 */ 1795 stackingEnabled: false, 1796 1797 /** 1798 * Indicates whether to factor in the size of the labels when calculating a major unit. 1799 * 1800 * @property calculateByLabelSize 1801 * @type Boolean 1802 */ 1803 calculateByLabelSize: true 1804 }); 1805 /** 1806 * A type of axis that displays items in categories. 1807 * 1808 * @namespace YAHOO.widget 1809 * @class CategoryAxis 1810 * @constructor 1811 */ 1812 YAHOO.widget.CategoryAxis = function() 1813 { 1814 YAHOO.widget.CategoryAxis.superclass.constructor.call(this); 1815 }; 1816 1817 YAHOO.lang.extend(YAHOO.widget.CategoryAxis, YAHOO.widget.Axis, 1818 { 1819 type: "category", 1820 1821 /** 1822 * A list of category names to display along this axis. 1823 * 1824 * @property categoryNames 1825 * @type Array 1826 */ 1827 categoryNames: null, 1828 1829 /** 1830 * Indicates whether or not to calculate the number of categories (ticks and labels) 1831 * when there is not enough room to display all labels on the axis. If set to true, the axis 1832 * will determine the number of categories to plot. If not, all categories will be plotted. 1833 * 1834 * @property calculateCategoryCount 1835 * @type Boolean 1836 */ 1837 calculateCategoryCount: false 1838 }); 1839 /** 1840 * Functionality common to most series. Generally, a <code>Series</code> 1841 * object shouldn't be instantiated directly. Instead, a subclass with a 1842 * concrete implementation should be used. 1843 * 1844 * @namespace YAHOO.widget 1845 * @class Series 1846 * @constructor 1847 */ 1848 YAHOO.widget.Series = function() {}; 1849 1850 YAHOO.widget.Series.prototype = 1851 { 1852 /** 1853 * The type of series. 1854 * 1855 * @property type 1856 * @type String 1857 */ 1858 type: null, 1859 1860 /** 1861 * The human-readable name of the series. 1862 * 1863 * @property displayName 1864 * @type String 1865 */ 1866 displayName: null 1867 }; 1868 1869 /** 1870 * Functionality common to most series appearing in cartesian charts. 1871 * Generally, a <code>CartesianSeries</code> object shouldn't be 1872 * instantiated directly. Instead, a subclass with a concrete implementation 1873 * should be used. 1874 * 1875 * @namespace YAHOO.widget 1876 * @class CartesianSeries 1877 * @uses YAHOO.widget.Series 1878 * @constructor 1879 */ 1880 YAHOO.widget.CartesianSeries = function() 1881 { 1882 YAHOO.widget.CartesianSeries.superclass.constructor.call(this); 1883 }; 1884 1885 YAHOO.lang.extend(YAHOO.widget.CartesianSeries, YAHOO.widget.Series, 1886 { 1887 /** 1888 * The field used to access the x-axis value from the items from the data source. 1889 * 1890 * @property xField 1891 * @type String 1892 */ 1893 xField: null, 1894 1895 /** 1896 * The field used to access the y-axis value from the items from the data source. 1897 * 1898 * @property yField 1899 * @type String 1900 */ 1901 yField: null, 1902 1903 /** 1904 * Indicates which axis the series will bind to 1905 * 1906 * @property axis 1907 * @type String 1908 */ 1909 axis: "primary", 1910 1911 /** 1912 * When a Legend is present, indicates whether the series will show in the legend. 1913 * 1914 * @property showInLegend 1915 * @type Boolean 1916 */ 1917 showInLegend: true 1918 }); 1919 1920 /** 1921 * ColumnSeries class for the YUI Charts widget. 1922 * 1923 * @namespace YAHOO.widget 1924 * @class ColumnSeries 1925 * @uses YAHOO.widget.CartesianSeries 1926 * @constructor 1927 */ 1928 YAHOO.widget.ColumnSeries = function() 1929 { 1930 YAHOO.widget.ColumnSeries.superclass.constructor.call(this); 1931 }; 1932 1933 YAHOO.lang.extend(YAHOO.widget.ColumnSeries, YAHOO.widget.CartesianSeries, 1934 { 1935 type: "column" 1936 }); 1937 1938 /** 1939 * LineSeries class for the YUI Charts widget. 1940 * 1941 * @namespace YAHOO.widget 1942 * @class LineSeries 1943 * @uses YAHOO.widget.CartesianSeries 1944 * @constructor 1945 */ 1946 YAHOO.widget.LineSeries = function() 1947 { 1948 YAHOO.widget.LineSeries.superclass.constructor.call(this); 1949 }; 1950 1951 YAHOO.lang.extend(YAHOO.widget.LineSeries, YAHOO.widget.CartesianSeries, 1952 { 1953 type: "line" 1954 }); 1955 1956 1957 /** 1958 * BarSeries class for the YUI Charts widget. 1959 * 1960 * @namespace YAHOO.widget 1961 * @class BarSeries 1962 * @uses YAHOO.widget.CartesianSeries 1963 * @constructor 1964 */ 1965 YAHOO.widget.BarSeries = function() 1966 { 1967 YAHOO.widget.BarSeries.superclass.constructor.call(this); 1968 }; 1969 1970 YAHOO.lang.extend(YAHOO.widget.BarSeries, YAHOO.widget.CartesianSeries, 1971 { 1972 type: "bar" 1973 }); 1974 1975 1976 /** 1977 * PieSeries class for the YUI Charts widget. 1978 * 1979 * @namespace YAHOO.widget 1980 * @class PieSeries 1981 * @uses YAHOO.widget.Series 1982 * @constructor 1983 */ 1984 YAHOO.widget.PieSeries = function() 1985 { 1986 YAHOO.widget.PieSeries.superclass.constructor.call(this); 1987 }; 1988 1989 YAHOO.lang.extend(YAHOO.widget.PieSeries, YAHOO.widget.Series, 1990 { 1991 type: "pie", 1992 1993 /** 1994 * The field used to access the data value from the items from the data source. 1995 * 1996 * @property dataField 1997 * @type String 1998 */ 1999 dataField: null, 2000 2001 /** 2002 * The field used to access the category value from the items from the data source. 2003 * 2004 * @property categoryField 2005 * @type String 2006 */ 2007 categoryField: null, 2008 2009 /** 2010 * A string reference to the globally-accessible function that may be called to 2011 * determine each of the label values for this series. Also accepts function references. 2012 * 2013 * @property labelFunction 2014 * @type String 2015 */ 2016 labelFunction: null 2017 }); 2018 2019 /** 2020 * StackedBarSeries class for the YUI Charts widget. 2021 * 2022 * @namespace YAHOO.widget 2023 * @class StackedBarSeries 2024 * @uses YAHOO.widget.CartesianSeries 2025 * @constructor 2026 */ 2027 YAHOO.widget.StackedBarSeries = function() 2028 { 2029 YAHOO.widget.StackedBarSeries.superclass.constructor.call(this); 2030 }; 2031 2032 YAHOO.lang.extend(YAHOO.widget.StackedBarSeries, YAHOO.widget.CartesianSeries, 2033 { 2034 type: "stackbar" 2035 }); 2036 2037 /** 2038 * StackedColumnSeries class for the YUI Charts widget. 2039 * 2040 * @namespace YAHOO.widget 2041 * @class StackedColumnSeries 2042 * @uses YAHOO.widget.CartesianSeries 2043 * @constructor 2044 */ 2045 YAHOO.widget.StackedColumnSeries = function() 2046 { 2047 YAHOO.widget.StackedColumnSeries.superclass.constructor.call(this); 2048 }; 2049 2050 YAHOO.lang.extend(YAHOO.widget.StackedColumnSeries, YAHOO.widget.CartesianSeries, 2051 { 2052 type: "stackcolumn" 2053 }); 2054 YAHOO.register("charts", YAHOO.widget.Chart, {version: "2.9.0", build: "2800"}); 2055 2056 }, '2.9.0' ,{"requires": ["yui2-yahoo", "yui2-dom", "yui2-event", "yui2-element", "yui2-swf", "yui2-json", "yui2-datasource"]});
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Thu Aug 11 10:00:09 2016 | Cross-referenced by PHPXref 0.7.1 |