closure 1.1.692
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +6 -0
- data/.yardopts +3 -0
- data/LICENSE +202 -0
- data/README.md +26 -0
- data/beanshell/LICENSE +12 -0
- data/beanshell/bsh-core-2.0b4.jar +0 -0
- data/closure-compiler/COPYING +202 -0
- data/closure-compiler/README +278 -0
- data/closure-compiler/compiler.jar +0 -0
- data/closure-library/AUTHORS +12 -0
- data/closure-library/LICENSE +176 -0
- data/closure-library/README +6 -0
- data/closure-library/all_tests.html +113 -0
- data/closure-library/alltests.js +16 -0
- data/closure-library/closure/bin/build/closurebuilder.py +257 -0
- data/closure-library/closure/bin/build/depstree.py +186 -0
- data/closure-library/closure/bin/build/depstree_test.py +127 -0
- data/closure-library/closure/bin/build/depswriter.py +197 -0
- data/closure-library/closure/bin/build/jscompiler.py +69 -0
- data/closure-library/closure/bin/build/source.py +86 -0
- data/closure-library/closure/bin/build/source_test.py +57 -0
- data/closure-library/closure/bin/build/treescan.py +78 -0
- data/closure-library/closure/bin/calcdeps.py +570 -0
- data/closure-library/closure/bin/scopify.py +211 -0
- data/closure-library/closure/css/inlay/g-base.css +82 -0
- data/closure-library/closure/css/inlay/g-fixed.css +158 -0
- data/closure-library/closure/css/inlay/g-ratio.css +253 -0
- data/closure-library/closure/goog/array/array.js +1300 -0
- data/closure-library/closure/goog/array/array_test.html +1524 -0
- data/closure-library/closure/goog/asserts/asserts.js +277 -0
- data/closure-library/closure/goog/asserts/asserts_test.html +163 -0
- data/closure-library/closure/goog/async/conditionaldelay.js +238 -0
- data/closure-library/closure/goog/async/conditionaldelay_test.html +227 -0
- data/closure-library/closure/goog/async/delay.js +174 -0
- data/closure-library/closure/goog/async/delay_test.html +148 -0
- data/closure-library/closure/goog/async/throttle.js +189 -0
- data/closure-library/closure/goog/async/throttle_test.html +102 -0
- data/closure-library/closure/goog/base.js +1471 -0
- data/closure-library/closure/goog/base_test.html +1166 -0
- data/closure-library/closure/goog/bootstrap/webworkers.js +37 -0
- data/closure-library/closure/goog/color/alpha.js +436 -0
- data/closure-library/closure/goog/color/alpha_test.html +234 -0
- data/closure-library/closure/goog/color/color.js +757 -0
- data/closure-library/closure/goog/color/color_test.html +645 -0
- data/closure-library/closure/goog/color/names.js +176 -0
- data/closure-library/closure/goog/crypt/arc4.js +141 -0
- data/closure-library/closure/goog/crypt/arc4_test.html +42 -0
- data/closure-library/closure/goog/crypt/base64.js +267 -0
- data/closure-library/closure/goog/crypt/base64_test.html +106 -0
- data/closure-library/closure/goog/crypt/basen.js +242 -0
- data/closure-library/closure/goog/crypt/basen_test.html +167 -0
- data/closure-library/closure/goog/crypt/crypt.js +103 -0
- data/closure-library/closure/goog/crypt/crypt_test.html +68 -0
- data/closure-library/closure/goog/crypt/hash32.js +184 -0
- data/closure-library/closure/goog/crypt/hash32_test.html +287 -0
- data/closure-library/closure/goog/crypt/sha1.js +238 -0
- data/closure-library/closure/goog/crypt/sha1_test.html +47 -0
- data/closure-library/closure/goog/css/autocomplete.css +43 -0
- data/closure-library/closure/goog/css/bubble.css +84 -0
- data/closure-library/closure/goog/css/button.css +38 -0
- data/closure-library/closure/goog/css/charpicker.css +201 -0
- data/closure-library/closure/goog/css/checkbox.css +38 -0
- data/closure-library/closure/goog/css/colormenubutton.css +25 -0
- data/closure-library/closure/goog/css/colorpalette.css +54 -0
- data/closure-library/closure/goog/css/colorpicker-simplegrid.css +50 -0
- data/closure-library/closure/goog/css/combobox.css +57 -0
- data/closure-library/closure/goog/css/common.css +41 -0
- data/closure-library/closure/goog/css/css3button.css +77 -0
- data/closure-library/closure/goog/css/css3menubutton.css +23 -0
- data/closure-library/closure/goog/css/custombutton.css +164 -0
- data/closure-library/closure/goog/css/datepicker.css +148 -0
- data/closure-library/closure/goog/css/dialog.css +72 -0
- data/closure-library/closure/goog/css/dimensionpicker.css +47 -0
- data/closure-library/closure/goog/css/dragdropdetector.css +48 -0
- data/closure-library/closure/goog/css/editor/bubble.css +73 -0
- data/closure-library/closure/goog/css/editor/dialog.css +66 -0
- data/closure-library/closure/goog/css/editor/linkdialog.css +36 -0
- data/closure-library/closure/goog/css/editortoolbar.css +225 -0
- data/closure-library/closure/goog/css/filteredmenu.css +30 -0
- data/closure-library/closure/goog/css/filterobservingmenuitem.css +25 -0
- data/closure-library/closure/goog/css/flatbutton.css +65 -0
- data/closure-library/closure/goog/css/flatmenubutton.css +63 -0
- data/closure-library/closure/goog/css/hovercard.css +51 -0
- data/closure-library/closure/goog/css/hsvapalette.css +231 -0
- data/closure-library/closure/goog/css/hsvpalette.css +179 -0
- data/closure-library/closure/goog/css/imagelessbutton.css +160 -0
- data/closure-library/closure/goog/css/imagelessmenubutton.css +23 -0
- data/closure-library/closure/goog/css/inputdatepicker.css +12 -0
- data/closure-library/closure/goog/css/linkbutton.css +26 -0
- data/closure-library/closure/goog/css/menu.css +27 -0
- data/closure-library/closure/goog/css/menubutton.css +169 -0
- data/closure-library/closure/goog/css/menuitem.css +96 -0
- data/closure-library/closure/goog/css/menuseparator.css +19 -0
- data/closure-library/closure/goog/css/multitestrunner.css +121 -0
- data/closure-library/closure/goog/css/offline.css +147 -0
- data/closure-library/closure/goog/css/palette.css +36 -0
- data/closure-library/closure/goog/css/popupdatepicker.css +17 -0
- data/closure-library/closure/goog/css/roundedpanel.css +29 -0
- data/closure-library/closure/goog/css/roundedtab.css +158 -0
- data/closure-library/closure/goog/css/submenu.css +28 -0
- data/closure-library/closure/goog/css/tab.css +91 -0
- data/closure-library/closure/goog/css/tabbar.css +52 -0
- data/closure-library/closure/goog/css/tablesorter.css +14 -0
- data/closure-library/closure/goog/css/toolbar.css +400 -0
- data/closure-library/closure/goog/css/tooltip.css +14 -0
- data/closure-library/closure/goog/css/tree.css +147 -0
- data/closure-library/closure/goog/css/tristatemenuitem.css +43 -0
- data/closure-library/closure/goog/cssom/cssom.js +447 -0
- data/closure-library/closure/goog/cssom/cssom_test.html +343 -0
- data/closure-library/closure/goog/cssom/cssom_test_import_1.css +11 -0
- data/closure-library/closure/goog/cssom/cssom_test_import_2.css +10 -0
- data/closure-library/closure/goog/cssom/cssom_test_link_1.css +10 -0
- data/closure-library/closure/goog/cssom/iframe/style.js +1020 -0
- data/closure-library/closure/goog/cssom/iframe/style_test.html +391 -0
- data/closure-library/closure/goog/cssom/iframe/style_test_import.css +10 -0
- data/closure-library/closure/goog/datasource/datamanager.js +566 -0
- data/closure-library/closure/goog/datasource/datasource.js +646 -0
- data/closure-library/closure/goog/datasource/datasource_test.html +265 -0
- data/closure-library/closure/goog/datasource/expr.js +544 -0
- data/closure-library/closure/goog/datasource/expr_test.html +97 -0
- data/closure-library/closure/goog/datasource/fastdatanode.js +792 -0
- data/closure-library/closure/goog/datasource/fastdatanode_test.html +254 -0
- data/closure-library/closure/goog/datasource/jsdatasource.js +460 -0
- data/closure-library/closure/goog/datasource/jsondatasource.js +146 -0
- data/closure-library/closure/goog/datasource/jsxmlhttpdatasource.js +191 -0
- data/closure-library/closure/goog/datasource/jsxmlhttpdatasource_test.html +94 -0
- data/closure-library/closure/goog/datasource/xmldatasource.js +407 -0
- data/closure-library/closure/goog/date/date.js +1642 -0
- data/closure-library/closure/goog/date/date_test.html +1293 -0
- data/closure-library/closure/goog/date/datelike.js +27 -0
- data/closure-library/closure/goog/date/daterange.js +398 -0
- data/closure-library/closure/goog/date/daterange_test.html +213 -0
- data/closure-library/closure/goog/date/relative.js +425 -0
- data/closure-library/closure/goog/date/relative_test.html +124 -0
- data/closure-library/closure/goog/date/utcdatetime.js +178 -0
- data/closure-library/closure/goog/date/utcdatetime_test.html +119 -0
- data/closure-library/closure/goog/debug/console.js +138 -0
- data/closure-library/closure/goog/debug/debug.js +452 -0
- data/closure-library/closure/goog/debug/debug_test.html +32 -0
- data/closure-library/closure/goog/debug/debugwindow.js +582 -0
- data/closure-library/closure/goog/debug/devcss/devcss.js +435 -0
- data/closure-library/closure/goog/debug/devcss/devcss_test.html +365 -0
- data/closure-library/closure/goog/debug/devcss/devcssrunner.js +26 -0
- data/closure-library/closure/goog/debug/divconsole.js +141 -0
- data/closure-library/closure/goog/debug/enhanceerror_test.html +138 -0
- data/closure-library/closure/goog/debug/entrypointregistry.js +111 -0
- data/closure-library/closure/goog/debug/entrypointregistry_test.html +63 -0
- data/closure-library/closure/goog/debug/error.js +47 -0
- data/closure-library/closure/goog/debug/error_test.html +85 -0
- data/closure-library/closure/goog/debug/errorhandler.js +234 -0
- data/closure-library/closure/goog/debug/errorhandler_async_test.html +112 -0
- data/closure-library/closure/goog/debug/errorhandler_test.html +186 -0
- data/closure-library/closure/goog/debug/errorhandlerweakdep.js +38 -0
- data/closure-library/closure/goog/debug/errorreporter.js +324 -0
- data/closure-library/closure/goog/debug/errorreporter_test.html +289 -0
- data/closure-library/closure/goog/debug/fancywindow.js +265 -0
- data/closure-library/closure/goog/debug/formatter.js +314 -0
- data/closure-library/closure/goog/debug/gcdiagnostics.js +143 -0
- data/closure-library/closure/goog/debug/logbuffer.js +147 -0
- data/closure-library/closure/goog/debug/logbuffer_test.html +105 -0
- data/closure-library/closure/goog/debug/logger.js +809 -0
- data/closure-library/closure/goog/debug/logger_test.html +208 -0
- data/closure-library/closure/goog/debug/logrecord.js +271 -0
- data/closure-library/closure/goog/debug/reflect.js +159 -0
- data/closure-library/closure/goog/debug/reflect_test.html +81 -0
- data/closure-library/closure/goog/debug/relativetimeprovider.js +83 -0
- data/closure-library/closure/goog/debug/tracer.js +750 -0
- data/closure-library/closure/goog/debug/tracer_test.html +57 -0
- data/closure-library/closure/goog/demos/advancedtooltip.html +78 -0
- data/closure-library/closure/goog/demos/animationqueue.html +149 -0
- data/closure-library/closure/goog/demos/autocomplete-basic.html +56 -0
- data/closure-library/closure/goog/demos/autocompleteremote.html +40 -0
- data/closure-library/closure/goog/demos/autocompleteremotedata.js +18 -0
- data/closure-library/closure/goog/demos/autocompleterichremote.html +137 -0
- data/closure-library/closure/goog/demos/autocompleterichremotedata.js +33 -0
- data/closure-library/closure/goog/demos/bidiinput.html +72 -0
- data/closure-library/closure/goog/demos/bubble.html +250 -0
- data/closure-library/closure/goog/demos/button.html +395 -0
- data/closure-library/closure/goog/demos/charcounter.html +57 -0
- data/closure-library/closure/goog/demos/charpicker.html +64 -0
- data/closure-library/closure/goog/demos/checkbox.html +122 -0
- data/closure-library/closure/goog/demos/color-contrast.html +60 -0
- data/closure-library/closure/goog/demos/colormenubutton.html +213 -0
- data/closure-library/closure/goog/demos/colorpicker.html +43 -0
- data/closure-library/closure/goog/demos/combobox.html +125 -0
- data/closure-library/closure/goog/demos/container.html +670 -0
- data/closure-library/closure/goog/demos/control.html +477 -0
- data/closure-library/closure/goog/demos/css/demo.css +75 -0
- data/closure-library/closure/goog/demos/css/emojipicker.css +36 -0
- data/closure-library/closure/goog/demos/css/emojisprite.css +92 -0
- data/closure-library/closure/goog/demos/css3button.html +166 -0
- data/closure-library/closure/goog/demos/css3menubutton.html +285 -0
- data/closure-library/closure/goog/demos/cssspriteanimation.html +80 -0
- data/closure-library/closure/goog/demos/datepicker.html +183 -0
- data/closure-library/closure/goog/demos/debug.html +119 -0
- data/closure-library/closure/goog/demos/depsgraph.html +221 -0
- data/closure-library/closure/goog/demos/dialog.html +156 -0
- data/closure-library/closure/goog/demos/dimensionpicker.html +108 -0
- data/closure-library/closure/goog/demos/dimensionpicker_rtl.html +123 -0
- data/closure-library/closure/goog/demos/dom_selection.html +88 -0
- data/closure-library/closure/goog/demos/drag.html +191 -0
- data/closure-library/closure/goog/demos/dragdrop.html +263 -0
- data/closure-library/closure/goog/demos/dragdropdetector.html +46 -0
- data/closure-library/closure/goog/demos/dragdropdetector_target.html +17 -0
- data/closure-library/closure/goog/demos/dragger.html +83 -0
- data/closure-library/closure/goog/demos/draglistgroup.html +261 -0
- data/closure-library/closure/goog/demos/drilldownrow.html +78 -0
- data/closure-library/closure/goog/demos/editor/deps.js +20 -0
- data/closure-library/closure/goog/demos/editor/editor.html +139 -0
- data/closure-library/closure/goog/demos/editor/field_basic.html +74 -0
- data/closure-library/closure/goog/demos/editor/helloworld.html +91 -0
- data/closure-library/closure/goog/demos/editor/helloworld.js +81 -0
- data/closure-library/closure/goog/demos/editor/helloworld_test.html +75 -0
- data/closure-library/closure/goog/demos/editor/helloworlddialog.js +163 -0
- data/closure-library/closure/goog/demos/editor/helloworlddialog_test.html +100 -0
- data/closure-library/closure/goog/demos/editor/helloworlddialogplugin.js +110 -0
- data/closure-library/closure/goog/demos/editor/helloworlddialogplugin_test.html +198 -0
- data/closure-library/closure/goog/demos/editor/seamlessfield.html +106 -0
- data/closure-library/closure/goog/demos/effects.html +142 -0
- data/closure-library/closure/goog/demos/emoji/200.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/201.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/202.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/203.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/204.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/205.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/206.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2BC.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2BD.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2BE.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2BF.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2C0.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2C1.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2C2.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2C3.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2C4.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2C5.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2C6.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2C7.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2C8.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2C9.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2CA.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2CB.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2CC.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2CD.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2CE.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2CF.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2D0.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2D1.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2D2.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2D3.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2D4.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2D5.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2D6.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2D7.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2D8.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2D9.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2DA.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2DB.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2DC.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2DD.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2DE.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2DF.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2E0.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2E1.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2E2.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2E3.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2E4.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2E5.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2E6.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2E7.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2E8.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2E9.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2EA.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2EB.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2EC.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2ED.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2EE.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2EF.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2F0.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2F1.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2F2.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2F3.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2F4.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2F5.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2F6.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2F7.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2F8.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2F9.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2FA.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2FB.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2FC.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2FD.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2FE.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/2FF.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/none.gif +0 -0
- data/closure-library/closure/goog/demos/emoji/sprite.png +0 -0
- data/closure-library/closure/goog/demos/emoji/sprite2.png +0 -0
- data/closure-library/closure/goog/demos/emoji/unknown.gif +0 -0
- data/closure-library/closure/goog/demos/event-propagation.html +192 -0
- data/closure-library/closure/goog/demos/events.html +99 -0
- data/closure-library/closure/goog/demos/eventtarget.html +70 -0
- data/closure-library/closure/goog/demos/filedrophandler.html +63 -0
- data/closure-library/closure/goog/demos/filteredmenu.html +118 -0
- data/closure-library/closure/goog/demos/focushandler.html +58 -0
- data/closure-library/closure/goog/demos/gauge.html +158 -0
- data/closure-library/closure/goog/demos/graphics/advancedcoordinates.html +141 -0
- data/closure-library/closure/goog/demos/graphics/advancedcoordinates2.html +130 -0
- data/closure-library/closure/goog/demos/graphics/basicelements.html +264 -0
- data/closure-library/closure/goog/demos/graphics/events.html +113 -0
- data/closure-library/closure/goog/demos/graphics/modifyelements.html +195 -0
- data/closure-library/closure/goog/demos/graphics/subpixel.html +80 -0
- data/closure-library/closure/goog/demos/graphics/tiger.html +105 -0
- data/closure-library/closure/goog/demos/graphics/tigerdata.js +2840 -0
- data/closure-library/closure/goog/demos/history1.html +132 -0
- data/closure-library/closure/goog/demos/history2.html +100 -0
- data/closure-library/closure/goog/demos/history3.html +106 -0
- data/closure-library/closure/goog/demos/history3js.html +36 -0
- data/closure-library/closure/goog/demos/history_blank.html +25 -0
- data/closure-library/closure/goog/demos/hovercard.html +177 -0
- data/closure-library/closure/goog/demos/hsvapalette.html +55 -0
- data/closure-library/closure/goog/demos/hsvpalette.html +56 -0
- data/closure-library/closure/goog/demos/html5history.html +87 -0
- data/closure-library/closure/goog/demos/imagelessbutton.html +221 -0
- data/closure-library/closure/goog/demos/imagelessmenubutton.html +285 -0
- data/closure-library/closure/goog/demos/imagelessroundedcorner.html +231 -0
- data/closure-library/closure/goog/demos/index.html +19 -0
- data/closure-library/closure/goog/demos/index_nav.html +253 -0
- data/closure-library/closure/goog/demos/index_splash.html +22 -0
- data/closure-library/closure/goog/demos/inline_block_quirks.html +125 -0
- data/closure-library/closure/goog/demos/inline_block_standards.html +126 -0
- data/closure-library/closure/goog/demos/inputdatepicker.html +60 -0
- data/closure-library/closure/goog/demos/inputhandler.html +72 -0
- data/closure-library/closure/goog/demos/jsonprettyprinter.html +80 -0
- data/closure-library/closure/goog/demos/keyboardshortcuts.html +112 -0
- data/closure-library/closure/goog/demos/keyhandler.html +127 -0
- data/closure-library/closure/goog/demos/labelinput.html +42 -0
- data/closure-library/closure/goog/demos/menu.html +220 -0
- data/closure-library/closure/goog/demos/menubutton.html +318 -0
- data/closure-library/closure/goog/demos/mousewheelhandler.html +109 -0
- data/closure-library/closure/goog/demos/offline.html +268 -0
- data/closure-library/closure/goog/demos/onlinehandler.html +77 -0
- data/closure-library/closure/goog/demos/palette.html +302 -0
- data/closure-library/closure/goog/demos/pastehandler.html +54 -0
- data/closure-library/closure/goog/demos/plaintextspellchecker.html +106 -0
- data/closure-library/closure/goog/demos/popup.html +200 -0
- data/closure-library/closure/goog/demos/popupcolorpicker.html +49 -0
- data/closure-library/closure/goog/demos/popupdatepicker.html +53 -0
- data/closure-library/closure/goog/demos/popupemojipicker.html +407 -0
- data/closure-library/closure/goog/demos/popupmenu.html +89 -0
- data/closure-library/closure/goog/demos/progressbar.html +97 -0
- data/closure-library/closure/goog/demos/prompt.html +92 -0
- data/closure-library/closure/goog/demos/quadtree.html +107 -0
- data/closure-library/closure/goog/demos/ratings.html +120 -0
- data/closure-library/closure/goog/demos/richtextspellchecker.html +92 -0
- data/closure-library/closure/goog/demos/roundedpanel.html +139 -0
- data/closure-library/closure/goog/demos/samplecomponent.html +75 -0
- data/closure-library/closure/goog/demos/samplecomponent.js +206 -0
- data/closure-library/closure/goog/demos/scrollfloater.html +117 -0
- data/closure-library/closure/goog/demos/select.html +324 -0
- data/closure-library/closure/goog/demos/selectionmenubutton.html +186 -0
- data/closure-library/closure/goog/demos/serverchart.html +122 -0
- data/closure-library/closure/goog/demos/silverlightclipboardbutton.html +71 -0
- data/closure-library/closure/goog/demos/slider.html +110 -0
- data/closure-library/closure/goog/demos/splitbehavior.html +164 -0
- data/closure-library/closure/goog/demos/splitpane.html +243 -0
- data/closure-library/closure/goog/demos/stopevent.html +171 -0
- data/closure-library/closure/goog/demos/submenus.html +130 -0
- data/closure-library/closure/goog/demos/submenus2.html +150 -0
- data/closure-library/closure/goog/demos/tabbar.html +289 -0
- data/closure-library/closure/goog/demos/tablesorter.html +116 -0
- data/closure-library/closure/goog/demos/tabpane.html +302 -0
- data/closure-library/closure/goog/demos/textarea.html +128 -0
- data/closure-library/closure/goog/demos/timers.html +291 -0
- data/closure-library/closure/goog/demos/toolbar.html +703 -0
- data/closure-library/closure/goog/demos/tooltip.html +91 -0
- data/closure-library/closure/goog/demos/tracer.html +92 -0
- data/closure-library/closure/goog/demos/tree/demo.html +126 -0
- data/closure-library/closure/goog/demos/tree/testdata.js +260 -0
- data/closure-library/closure/goog/demos/tweakui.html +121 -0
- data/closure-library/closure/goog/demos/twothumbslider.html +121 -0
- data/closure-library/closure/goog/demos/useragent.html +173 -0
- data/closure-library/closure/goog/demos/viewportsizemonitor.html +71 -0
- data/closure-library/closure/goog/demos/xpc/blank.html +7 -0
- data/closure-library/closure/goog/demos/xpc/index.html +89 -0
- data/closure-library/closure/goog/demos/xpc/inner.html +58 -0
- data/closure-library/closure/goog/demos/xpc/minimal/blank.html +7 -0
- data/closure-library/closure/goog/demos/xpc/minimal/index.html +105 -0
- data/closure-library/closure/goog/demos/xpc/minimal/inner.html +75 -0
- data/closure-library/closure/goog/demos/xpc/minimal/relay.html +7 -0
- data/closure-library/closure/goog/demos/xpc/relay.html +7 -0
- data/closure-library/closure/goog/demos/xpc/xpcdemo.js +304 -0
- data/closure-library/closure/goog/demos/zippy.html +127 -0
- data/closure-library/closure/goog/deps.js +672 -0
- data/closure-library/closure/goog/disposable/disposable.js +167 -0
- data/closure-library/closure/goog/disposable/disposable_test.html +202 -0
- data/closure-library/closure/goog/dom/a11y.js +438 -0
- data/closure-library/closure/goog/dom/a11y_test.html +86 -0
- data/closure-library/closure/goog/dom/abstractmultirange.js +77 -0
- data/closure-library/closure/goog/dom/abstractrange.js +514 -0
- data/closure-library/closure/goog/dom/abstractrange_test.html +73 -0
- data/closure-library/closure/goog/dom/annotate.js +352 -0
- data/closure-library/closure/goog/dom/annotate_test.html +187 -0
- data/closure-library/closure/goog/dom/browserfeature.js +50 -0
- data/closure-library/closure/goog/dom/browserrange/abstractrange.js +316 -0
- data/closure-library/closure/goog/dom/browserrange/browserrange.js +149 -0
- data/closure-library/closure/goog/dom/browserrange/browserrange_test.html +562 -0
- data/closure-library/closure/goog/dom/browserrange/geckorange.js +82 -0
- data/closure-library/closure/goog/dom/browserrange/ierange.js +970 -0
- data/closure-library/closure/goog/dom/browserrange/operarange.js +83 -0
- data/closure-library/closure/goog/dom/browserrange/w3crange.js +364 -0
- data/closure-library/closure/goog/dom/browserrange/webkitrange.js +112 -0
- data/closure-library/closure/goog/dom/classes.js +233 -0
- data/closure-library/closure/goog/dom/classes_test.html +228 -0
- data/closure-library/closure/goog/dom/controlrange.js +511 -0
- data/closure-library/closure/goog/dom/controlrange_test.html +246 -0
- data/closure-library/closure/goog/dom/dataset.js +90 -0
- data/closure-library/closure/goog/dom/dataset_test.html +104 -0
- data/closure-library/closure/goog/dom/dom.js +2424 -0
- data/closure-library/closure/goog/dom/dom_quirks_test.html +104 -0
- data/closure-library/closure/goog/dom/dom_test.html +103 -0
- data/closure-library/closure/goog/dom/dom_test.js +1129 -0
- data/closure-library/closure/goog/dom/fontsizemonitor.js +159 -0
- data/closure-library/closure/goog/dom/fontsizemonitor_test.html +283 -0
- data/closure-library/closure/goog/dom/forms.js +403 -0
- data/closure-library/closure/goog/dom/forms_test.html +483 -0
- data/closure-library/closure/goog/dom/iframe.js +128 -0
- data/closure-library/closure/goog/dom/iframe_test.html +87 -0
- data/closure-library/closure/goog/dom/iter.js +127 -0
- data/closure-library/closure/goog/dom/iter_test.html +97 -0
- data/closure-library/closure/goog/dom/multirange.js +519 -0
- data/closure-library/closure/goog/dom/multirange_test.html +67 -0
- data/closure-library/closure/goog/dom/nodeiterator.js +85 -0
- data/closure-library/closure/goog/dom/nodeiterator_test.html +49 -0
- data/closure-library/closure/goog/dom/nodeoffset.js +111 -0
- data/closure-library/closure/goog/dom/nodeoffset_test.html +88 -0
- data/closure-library/closure/goog/dom/pattern/abstractpattern.js +60 -0
- data/closure-library/closure/goog/dom/pattern/allchildren.js +73 -0
- data/closure-library/closure/goog/dom/pattern/callback/callback.js +82 -0
- data/closure-library/closure/goog/dom/pattern/callback/counter.js +72 -0
- data/closure-library/closure/goog/dom/pattern/callback/test.js +77 -0
- data/closure-library/closure/goog/dom/pattern/childmatches.js +152 -0
- data/closure-library/closure/goog/dom/pattern/endtag.js +53 -0
- data/closure-library/closure/goog/dom/pattern/fulltag.js +92 -0
- data/closure-library/closure/goog/dom/pattern/matcher.js +150 -0
- data/closure-library/closure/goog/dom/pattern/matcher_test.html +204 -0
- data/closure-library/closure/goog/dom/pattern/nodetype.js +57 -0
- data/closure-library/closure/goog/dom/pattern/pattern.js +93 -0
- data/closure-library/closure/goog/dom/pattern/pattern_test.html +614 -0
- data/closure-library/closure/goog/dom/pattern/repeat.js +188 -0
- data/closure-library/closure/goog/dom/pattern/sequence.js +139 -0
- data/closure-library/closure/goog/dom/pattern/starttag.js +53 -0
- data/closure-library/closure/goog/dom/pattern/tag.js +149 -0
- data/closure-library/closure/goog/dom/pattern/text.js +69 -0
- data/closure-library/closure/goog/dom/range.js +220 -0
- data/closure-library/closure/goog/dom/range_test.html +702 -0
- data/closure-library/closure/goog/dom/rangeendpoint.js +32 -0
- data/closure-library/closure/goog/dom/savedcaretrange.js +203 -0
- data/closure-library/closure/goog/dom/savedcaretrange_test.html +235 -0
- data/closure-library/closure/goog/dom/savedrange.js +74 -0
- data/closure-library/closure/goog/dom/savedrange_test.html +61 -0
- data/closure-library/closure/goog/dom/selection.js +470 -0
- data/closure-library/closure/goog/dom/selection_test.html +329 -0
- data/closure-library/closure/goog/dom/tagiterator.js +365 -0
- data/closure-library/closure/goog/dom/tagiterator_test.html +589 -0
- data/closure-library/closure/goog/dom/tagname.js +121 -0
- data/closure-library/closure/goog/dom/tagname_test.html +37 -0
- data/closure-library/closure/goog/dom/textrange.js +611 -0
- data/closure-library/closure/goog/dom/textrange_test.html +127 -0
- data/closure-library/closure/goog/dom/textrangeiterator.js +246 -0
- data/closure-library/closure/goog/dom/textrangeiterator_test.html +142 -0
- data/closure-library/closure/goog/dom/viewportsizemonitor.js +220 -0
- data/closure-library/closure/goog/dom/viewportsizemonitor_test.html +166 -0
- data/closure-library/closure/goog/dom/xml.js +187 -0
- data/closure-library/closure/goog/dom/xml_test.html +77 -0
- data/closure-library/closure/goog/editor/browserfeature.js +251 -0
- data/closure-library/closure/goog/editor/browserfeature_test.html +124 -0
- data/closure-library/closure/goog/editor/clicktoeditwrapper.js +438 -0
- data/closure-library/closure/goog/editor/clicktoeditwrapper_test.html +137 -0
- data/closure-library/closure/goog/editor/command.js +74 -0
- data/closure-library/closure/goog/editor/defines.js +34 -0
- data/closure-library/closure/goog/editor/field.js +2594 -0
- data/closure-library/closure/goog/editor/field_test.html +1000 -0
- data/closure-library/closure/goog/editor/focus.js +32 -0
- data/closure-library/closure/goog/editor/focus_test.html +66 -0
- data/closure-library/closure/goog/editor/icontent.js +296 -0
- data/closure-library/closure/goog/editor/icontent_test.html +209 -0
- data/closure-library/closure/goog/editor/link.js +279 -0
- data/closure-library/closure/goog/editor/link_test.html +234 -0
- data/closure-library/closure/goog/editor/node.js +435 -0
- data/closure-library/closure/goog/editor/node_test.html +590 -0
- data/closure-library/closure/goog/editor/plugin.js +444 -0
- data/closure-library/closure/goog/editor/plugin_test.html +187 -0
- data/closure-library/closure/goog/editor/plugins/abstractbubbleplugin.js +535 -0
- data/closure-library/closure/goog/editor/plugins/abstractbubbleplugin_test.html +227 -0
- data/closure-library/closure/goog/editor/plugins/abstractdialogplugin.js +336 -0
- data/closure-library/closure/goog/editor/plugins/abstractdialogplugin_test.html +399 -0
- data/closure-library/closure/goog/editor/plugins/abstracttabhandler.js +78 -0
- data/closure-library/closure/goog/editor/plugins/abstracttabhandler_test.html +91 -0
- data/closure-library/closure/goog/editor/plugins/basictextformatter.js +1740 -0
- data/closure-library/closure/goog/editor/plugins/basictextformatter_test.html +1171 -0
- data/closure-library/closure/goog/editor/plugins/blockquote.js +422 -0
- data/closure-library/closure/goog/editor/plugins/blockquote_test.html +149 -0
- data/closure-library/closure/goog/editor/plugins/emoticons.js +83 -0
- data/closure-library/closure/goog/editor/plugins/emoticons_test.html +67 -0
- data/closure-library/closure/goog/editor/plugins/enterhandler.js +730 -0
- data/closure-library/closure/goog/editor/plugins/enterhandler_test.html +739 -0
- data/closure-library/closure/goog/editor/plugins/headerformatter.js +95 -0
- data/closure-library/closure/goog/editor/plugins/headerformatter_test.html +100 -0
- data/closure-library/closure/goog/editor/plugins/linkbubble.js +458 -0
- data/closure-library/closure/goog/editor/plugins/linkbubble_test.html +309 -0
- data/closure-library/closure/goog/editor/plugins/linkdialogplugin.js +222 -0
- data/closure-library/closure/goog/editor/plugins/linkdialogplugin_test.html +370 -0
- data/closure-library/closure/goog/editor/plugins/listtabhandler.js +66 -0
- data/closure-library/closure/goog/editor/plugins/listtabhandler_test.html +177 -0
- data/closure-library/closure/goog/editor/plugins/loremipsum.js +186 -0
- data/closure-library/closure/goog/editor/plugins/loremipsum_test.html +169 -0
- data/closure-library/closure/goog/editor/plugins/removeformatting.js +772 -0
- data/closure-library/closure/goog/editor/plugins/removeformatting_test.html +920 -0
- data/closure-library/closure/goog/editor/plugins/spacestabhandler.js +93 -0
- data/closure-library/closure/goog/editor/plugins/spacestabhandler_test.html +186 -0
- data/closure-library/closure/goog/editor/plugins/tableeditor.js +496 -0
- data/closure-library/closure/goog/editor/plugins/tableeditor_test.html +299 -0
- data/closure-library/closure/goog/editor/plugins/tagonenterhandler.js +741 -0
- data/closure-library/closure/goog/editor/plugins/tagonenterhandler_test.html +481 -0
- data/closure-library/closure/goog/editor/plugins/undoredo.js +1014 -0
- data/closure-library/closure/goog/editor/plugins/undoredo_test.html +525 -0
- data/closure-library/closure/goog/editor/plugins/undoredomanager.js +337 -0
- data/closure-library/closure/goog/editor/plugins/undoredomanager_test.html +394 -0
- data/closure-library/closure/goog/editor/plugins/undoredostate.js +84 -0
- data/closure-library/closure/goog/editor/plugins/undoredostate_test.html +44 -0
- data/closure-library/closure/goog/editor/range.js +602 -0
- data/closure-library/closure/goog/editor/range_test.html +880 -0
- data/closure-library/closure/goog/editor/seamlessfield.js +720 -0
- data/closure-library/closure/goog/editor/seamlessfield_quirks_test.html +30 -0
- data/closure-library/closure/goog/editor/seamlessfield_test.html +33 -0
- data/closure-library/closure/goog/editor/seamlessfield_test.js +392 -0
- data/closure-library/closure/goog/editor/style.js +222 -0
- data/closure-library/closure/goog/editor/style_test.html +177 -0
- data/closure-library/closure/goog/editor/table.js +566 -0
- data/closure-library/closure/goog/editor/table_test.html +522 -0
- data/closure-library/closure/goog/events/actioneventwrapper.js +131 -0
- data/closure-library/closure/goog/events/actioneventwrapper_test.html +176 -0
- data/closure-library/closure/goog/events/actionhandler.js +189 -0
- data/closure-library/closure/goog/events/actionhandler_test.html +82 -0
- data/closure-library/closure/goog/events/browserevent.js +412 -0
- data/closure-library/closure/goog/events/browserevent_test.html +145 -0
- data/closure-library/closure/goog/events/browserfeature.js +43 -0
- data/closure-library/closure/goog/events/event.js +123 -0
- data/closure-library/closure/goog/events/event_test.html +70 -0
- data/closure-library/closure/goog/events/eventhandler.js +348 -0
- data/closure-library/closure/goog/events/eventhandler_test.html +230 -0
- data/closure-library/closure/goog/events/events.js +1101 -0
- data/closure-library/closure/goog/events/events_test.html +362 -0
- data/closure-library/closure/goog/events/eventtarget.js +197 -0
- data/closure-library/closure/goog/events/eventtarget_test.html +423 -0
- data/closure-library/closure/goog/events/eventtype.js +107 -0
- data/closure-library/closure/goog/events/eventwrapper.js +67 -0
- data/closure-library/closure/goog/events/filedrophandler.js +224 -0
- data/closure-library/closure/goog/events/filedrophandler_test.html +258 -0
- data/closure-library/closure/goog/events/focushandler.js +111 -0
- data/closure-library/closure/goog/events/imehandler.js +365 -0
- data/closure-library/closure/goog/events/imehandler_test.html +271 -0
- data/closure-library/closure/goog/events/inputhandler.js +218 -0
- data/closure-library/closure/goog/events/keycodes.js +314 -0
- data/closure-library/closure/goog/events/keycodes_test.html +72 -0
- data/closure-library/closure/goog/events/keyhandler.js +522 -0
- data/closure-library/closure/goog/events/keyhandler_test.html +621 -0
- data/closure-library/closure/goog/events/keynames.js +124 -0
- data/closure-library/closure/goog/events/listener.js +160 -0
- data/closure-library/closure/goog/events/mousewheelhandler.js +280 -0
- data/closure-library/closure/goog/events/mousewheelhandler_test.html +331 -0
- data/closure-library/closure/goog/events/onlinehandler.js +176 -0
- data/closure-library/closure/goog/events/onlinelistener_test.html +214 -0
- data/closure-library/closure/goog/events/pastehandler.js +444 -0
- data/closure-library/closure/goog/events/pastehandler_test.html +354 -0
- data/closure-library/closure/goog/events/pools.js +342 -0
- data/closure-library/closure/goog/format/emailaddress.js +329 -0
- data/closure-library/closure/goog/format/emailaddress_test.html +179 -0
- data/closure-library/closure/goog/format/format.js +451 -0
- data/closure-library/closure/goog/format/format_test.html +257 -0
- data/closure-library/closure/goog/format/htmlprettyprinter.js +406 -0
- data/closure-library/closure/goog/format/htmlprettyprinter_test.html +205 -0
- data/closure-library/closure/goog/format/jsonprettyprinter.js +405 -0
- data/closure-library/closure/goog/format/jsonprettyprinter_test.html +111 -0
- data/closure-library/closure/goog/fs/entry.js +406 -0
- data/closure-library/closure/goog/fs/error.js +103 -0
- data/closure-library/closure/goog/fs/filesaver.js +214 -0
- data/closure-library/closure/goog/fs/filesystem.js +59 -0
- data/closure-library/closure/goog/fs/filewriter.js +106 -0
- data/closure-library/closure/goog/fs/fs.js +183 -0
- data/closure-library/closure/goog/fs/fs_test.html +270 -0
- data/closure-library/closure/goog/functions/functions.js +219 -0
- data/closure-library/closure/goog/functions/functions_test.html +198 -0
- data/closure-library/closure/goog/fx/abstractdragdrop.js +1451 -0
- data/closure-library/closure/goog/fx/abstractdragdrop_test.html +430 -0
- data/closure-library/closure/goog/fx/animation.js +621 -0
- data/closure-library/closure/goog/fx/animationqueue.js +348 -0
- data/closure-library/closure/goog/fx/cssspriteanimation.js +112 -0
- data/closure-library/closure/goog/fx/cssspriteanimation_test.html +125 -0
- data/closure-library/closure/goog/fx/dom.js +610 -0
- data/closure-library/closure/goog/fx/dragdrop.js +49 -0
- data/closure-library/closure/goog/fx/dragdropgroup.js +107 -0
- data/closure-library/closure/goog/fx/dragdropgroup_test.html +234 -0
- data/closure-library/closure/goog/fx/dragger.js +731 -0
- data/closure-library/closure/goog/fx/dragger_test.html +415 -0
- data/closure-library/closure/goog/fx/draglistgroup.js +1159 -0
- data/closure-library/closure/goog/fx/draglistgroup_test.html +231 -0
- data/closure-library/closure/goog/fx/dragscrollsupport.js +274 -0
- data/closure-library/closure/goog/fx/dragscrollsupport_test.html +253 -0
- data/closure-library/closure/goog/fx/easing.js +50 -0
- data/closure-library/closure/goog/fx/fx.js +30 -0
- data/closure-library/closure/goog/fx/fx_test.html +157 -0
- data/closure-library/closure/goog/gears/basestore.js +523 -0
- data/closure-library/closure/goog/gears/basestore_test.html +247 -0
- data/closure-library/closure/goog/gears/database.js +935 -0
- data/closure-library/closure/goog/gears/database_test.html +699 -0
- data/closure-library/closure/goog/gears/fakeworkerpool.js +252 -0
- data/closure-library/closure/goog/gears/fakeworkerpool_test.html +188 -0
- data/closure-library/closure/goog/gears/gears.js +228 -0
- data/closure-library/closure/goog/gears/gears_test.html +78 -0
- data/closure-library/closure/goog/gears/httprequest.js +77 -0
- data/closure-library/closure/goog/gears/loggerclient.js +131 -0
- data/closure-library/closure/goog/gears/loggerclient_test.html +171 -0
- data/closure-library/closure/goog/gears/loggerserver.js +158 -0
- data/closure-library/closure/goog/gears/loggerserver_test.html +118 -0
- data/closure-library/closure/goog/gears/logstore.js +479 -0
- data/closure-library/closure/goog/gears/logstore_test.html +600 -0
- data/closure-library/closure/goog/gears/managedresourcestore.js +553 -0
- data/closure-library/closure/goog/gears/managedresourcestore_test.html +453 -0
- data/closure-library/closure/goog/gears/multipartformdata.js +203 -0
- data/closure-library/closure/goog/gears/multipartformdata_test.html +220 -0
- data/closure-library/closure/goog/gears/statustype.js +37 -0
- data/closure-library/closure/goog/gears/urlcapture.js +370 -0
- data/closure-library/closure/goog/gears/urlcapture_test.html +392 -0
- data/closure-library/closure/goog/gears/worker.js +201 -0
- data/closure-library/closure/goog/gears/workerchannel.js +205 -0
- data/closure-library/closure/goog/gears/workerchannel_test.html +207 -0
- data/closure-library/closure/goog/gears/workerpool.js +241 -0
- data/closure-library/closure/goog/gears/workerpool_test.html +203 -0
- data/closure-library/closure/goog/graphics/abstractgraphics.js +439 -0
- data/closure-library/closure/goog/graphics/affinetransform.js +497 -0
- data/closure-library/closure/goog/graphics/affinetransform_test.html +316 -0
- data/closure-library/closure/goog/graphics/canvaselement.js +776 -0
- data/closure-library/closure/goog/graphics/canvasgraphics.js +632 -0
- data/closure-library/closure/goog/graphics/element.js +145 -0
- data/closure-library/closure/goog/graphics/ellipseelement.js +59 -0
- data/closure-library/closure/goog/graphics/ext/coordinates.js +158 -0
- data/closure-library/closure/goog/graphics/ext/coordinates_test.html +74 -0
- data/closure-library/closure/goog/graphics/ext/element.js +970 -0
- data/closure-library/closure/goog/graphics/ext/element_test.html +144 -0
- data/closure-library/closure/goog/graphics/ext/ellipse.js +58 -0
- data/closure-library/closure/goog/graphics/ext/ext.js +29 -0
- data/closure-library/closure/goog/graphics/ext/graphics.js +209 -0
- data/closure-library/closure/goog/graphics/ext/group.js +213 -0
- data/closure-library/closure/goog/graphics/ext/image.js +62 -0
- data/closure-library/closure/goog/graphics/ext/path.js +140 -0
- data/closure-library/closure/goog/graphics/ext/path_test.html +46 -0
- data/closure-library/closure/goog/graphics/ext/rectangle.js +53 -0
- data/closure-library/closure/goog/graphics/ext/shape.js +144 -0
- data/closure-library/closure/goog/graphics/ext/strokeandfillelement.js +69 -0
- data/closure-library/closure/goog/graphics/fill.js +29 -0
- data/closure-library/closure/goog/graphics/font.js +59 -0
- data/closure-library/closure/goog/graphics/graphics.js +124 -0
- data/closure-library/closure/goog/graphics/groupelement.js +54 -0
- data/closure-library/closure/goog/graphics/imageelement.js +67 -0
- data/closure-library/closure/goog/graphics/lineargradient.js +131 -0
- data/closure-library/closure/goog/graphics/path.js +508 -0
- data/closure-library/closure/goog/graphics/path_test.html +359 -0
- data/closure-library/closure/goog/graphics/pathelement.js +50 -0
- data/closure-library/closure/goog/graphics/paths.js +86 -0
- data/closure-library/closure/goog/graphics/paths_test.html +97 -0
- data/closure-library/closure/goog/graphics/rectelement.js +59 -0
- data/closure-library/closure/goog/graphics/solidfill.js +70 -0
- data/closure-library/closure/goog/graphics/stroke.js +63 -0
- data/closure-library/closure/goog/graphics/strokeandfillelement.js +110 -0
- data/closure-library/closure/goog/graphics/svgelement.js +262 -0
- data/closure-library/closure/goog/graphics/svggraphics.js +813 -0
- data/closure-library/closure/goog/graphics/textelement.js +51 -0
- data/closure-library/closure/goog/graphics/vmlelement.js +380 -0
- data/closure-library/closure/goog/graphics/vmlgraphics.js +863 -0
- data/closure-library/closure/goog/history/event.js +54 -0
- data/closure-library/closure/goog/history/eventtype.js +30 -0
- data/closure-library/closure/goog/history/history.js +979 -0
- data/closure-library/closure/goog/history/html5history.js +303 -0
- data/closure-library/closure/goog/history/html5history_test.html +163 -0
- data/closure-library/closure/goog/i18n/bidi.js +772 -0
- data/closure-library/closure/goog/i18n/bidi_test.html +414 -0
- data/closure-library/closure/goog/i18n/bidiformatter.js +488 -0
- data/closure-library/closure/goog/i18n/bidiformatter_test.html +343 -0
- data/closure-library/closure/goog/i18n/charlistdecompressor.js +157 -0
- data/closure-library/closure/goog/i18n/charlistdecompressor_test.html +65 -0
- data/closure-library/closure/goog/i18n/charpickerdata.js +3185 -0
- data/closure-library/closure/goog/i18n/currency.js +385 -0
- data/closure-library/closure/goog/i18n/currency_test.html +202 -0
- data/closure-library/closure/goog/i18n/currencycodemap.js +210 -0
- data/closure-library/closure/goog/i18n/datetimeformat.js +636 -0
- data/closure-library/closure/goog/i18n/datetimeformat_test.html +436 -0
- data/closure-library/closure/goog/i18n/datetimeparse.js +1111 -0
- data/closure-library/closure/goog/i18n/datetimeparse_test.html +796 -0
- data/closure-library/closure/goog/i18n/datetimepatterns.js +1586 -0
- data/closure-library/closure/goog/i18n/datetimepatternsext.js +7386 -0
- data/closure-library/closure/goog/i18n/datetimesymbols.js +3350 -0
- data/closure-library/closure/goog/i18n/datetimesymbolsext.js +12938 -0
- data/closure-library/closure/goog/i18n/graphemebreak.js +181 -0
- data/closure-library/closure/goog/i18n/graphemebreak_test.html +72 -0
- data/closure-library/closure/goog/i18n/messageformat.js +553 -0
- data/closure-library/closure/goog/i18n/messageformat_test.html +323 -0
- data/closure-library/closure/goog/i18n/mime.js +100 -0
- data/closure-library/closure/goog/i18n/mime_test.html +51 -0
- data/closure-library/closure/goog/i18n/numberformat.js +763 -0
- data/closure-library/closure/goog/i18n/numberformat_test.html +605 -0
- data/closure-library/closure/goog/i18n/numberformatsymbols.js +10358 -0
- data/closure-library/closure/goog/i18n/pluralrules.js +695 -0
- data/closure-library/closure/goog/i18n/timezone.js +341 -0
- data/closure-library/closure/goog/i18n/timezone_test.html +163 -0
- data/closure-library/closure/goog/i18n/uchar.js +1160 -0
- data/closure-library/closure/goog/i18n/uchar_test.html +72 -0
- data/closure-library/closure/goog/images/blank.gif +0 -0
- data/closure-library/closure/goog/images/bubble_close.jpg +0 -0
- data/closure-library/closure/goog/images/bubble_left.gif +0 -0
- data/closure-library/closure/goog/images/bubble_right.gif +0 -0
- data/closure-library/closure/goog/images/button-bg.gif +0 -0
- data/closure-library/closure/goog/images/check-outline.gif +0 -0
- data/closure-library/closure/goog/images/check-sprite.gif +0 -0
- data/closure-library/closure/goog/images/check.gif +0 -0
- data/closure-library/closure/goog/images/close_box.gif +0 -0
- data/closure-library/closure/goog/images/color-swatch-tick.gif +0 -0
- data/closure-library/closure/goog/images/dialog_close_box.gif +0 -0
- data/closure-library/closure/goog/images/dimension-highlighted.png +0 -0
- data/closure-library/closure/goog/images/dimension-unhighlighted.png +0 -0
- data/closure-library/closure/goog/images/dropdn.gif +0 -0
- data/closure-library/closure/goog/images/dropdn_disabled.gif +0 -0
- data/closure-library/closure/goog/images/dropdown.gif +0 -0
- data/closure-library/closure/goog/images/gears_bluedot.gif +0 -0
- data/closure-library/closure/goog/images/gears_offline.gif +0 -0
- data/closure-library/closure/goog/images/gears_online.gif +0 -0
- data/closure-library/closure/goog/images/gears_paused.gif +0 -0
- data/closure-library/closure/goog/images/gears_syncing.gif +0 -0
- data/closure-library/closure/goog/images/hsv-sprite-sm.gif +0 -0
- data/closure-library/closure/goog/images/hsv-sprite-sm.png +0 -0
- data/closure-library/closure/goog/images/hsv-sprite.gif +0 -0
- data/closure-library/closure/goog/images/hsv-sprite.png +0 -0
- data/closure-library/closure/goog/images/hsva-sprite-sm.gif +0 -0
- data/closure-library/closure/goog/images/hsva-sprite-sm.png +0 -0
- data/closure-library/closure/goog/images/hsva-sprite.gif +0 -0
- data/closure-library/closure/goog/images/hsva-sprite.png +0 -0
- data/closure-library/closure/goog/images/left_anchor_bubble_bot.gif +0 -0
- data/closure-library/closure/goog/images/left_anchor_bubble_top.gif +0 -0
- data/closure-library/closure/goog/images/menu-arrows.gif +0 -0
- data/closure-library/closure/goog/images/minus.png +0 -0
- data/closure-library/closure/goog/images/no_anchor_bubble_bot.gif +0 -0
- data/closure-library/closure/goog/images/no_anchor_bubble_top.gif +0 -0
- data/closure-library/closure/goog/images/offlineicons.png +0 -0
- data/closure-library/closure/goog/images/plus.png +0 -0
- data/closure-library/closure/goog/images/ratingstars.gif +0 -0
- data/closure-library/closure/goog/images/right_anchor_bubble_bot.gif +0 -0
- data/closure-library/closure/goog/images/right_anchor_bubble_top.gif +0 -0
- data/closure-library/closure/goog/images/toolbar-bg.png +0 -0
- data/closure-library/closure/goog/images/toolbar-separator.gif +0 -0
- data/closure-library/closure/goog/images/toolbar_icons.gif +0 -0
- data/closure-library/closure/goog/images/tree/I.png +0 -0
- data/closure-library/closure/goog/images/tree/cleardot.gif +0 -0
- data/closure-library/closure/goog/images/tree/tree.gif +0 -0
- data/closure-library/closure/goog/images/tree/tree.png +0 -0
- data/closure-library/closure/goog/images/ui_controls.jpg +0 -0
- data/closure-library/closure/goog/iter/iter.js +627 -0
- data/closure-library/closure/goog/iter/iter_test.html +443 -0
- data/closure-library/closure/goog/json/json.js +302 -0
- data/closure-library/closure/goog/json/json_test.html +501 -0
- data/closure-library/closure/goog/locale/countries.js +288 -0
- data/closure-library/closure/goog/locale/countrylanguagenames_test.html +233 -0
- data/closure-library/closure/goog/locale/defaultlocalenameconstants.js +847 -0
- data/closure-library/closure/goog/locale/genericfontnames.js +73 -0
- data/closure-library/closure/goog/locale/genericfontnames_test.html +97 -0
- data/closure-library/closure/goog/locale/genericfontnamesdata.js +328 -0
- data/closure-library/closure/goog/locale/locale.js +397 -0
- data/closure-library/closure/goog/locale/nativenameconstants.js +1354 -0
- data/closure-library/closure/goog/locale/scriptToLanguages.js +482 -0
- data/closure-library/closure/goog/locale/timezonedetection.js +117 -0
- data/closure-library/closure/goog/locale/timezonedetection_test.html +130 -0
- data/closure-library/closure/goog/locale/timezonefingerprint.js +250 -0
- data/closure-library/closure/goog/locale/timezonelist.js +129 -0
- data/closure-library/closure/goog/locale/timezonelist_test.html +165 -0
- data/closure-library/closure/goog/math/bezier.js +244 -0
- data/closure-library/closure/goog/math/bezier_test.html +70 -0
- data/closure-library/closure/goog/math/box.js +236 -0
- data/closure-library/closure/goog/math/box_test.html +139 -0
- data/closure-library/closure/goog/math/coordinate.js +136 -0
- data/closure-library/closure/goog/math/coordinate3.js +168 -0
- data/closure-library/closure/goog/math/coordinate3_test.html +208 -0
- data/closure-library/closure/goog/math/coordinate_test.html +92 -0
- data/closure-library/closure/goog/math/integer.js +736 -0
- data/closure-library/closure/goog/math/integer_test.html +1653 -0
- data/closure-library/closure/goog/math/line.js +177 -0
- data/closure-library/closure/goog/math/line_test.html +62 -0
- data/closure-library/closure/goog/math/long.js +801 -0
- data/closure-library/closure/goog/math/long_test.html +1571 -0
- data/closure-library/closure/goog/math/math.js +355 -0
- data/closure-library/closure/goog/math/math_test.html +254 -0
- data/closure-library/closure/goog/math/matrix.js +669 -0
- data/closure-library/closure/goog/math/matrix_test.html +427 -0
- data/closure-library/closure/goog/math/range.js +146 -0
- data/closure-library/closure/goog/math/range_test.html +103 -0
- data/closure-library/closure/goog/math/rangeset.js +368 -0
- data/closure-library/closure/goog/math/rangeset_test.html +619 -0
- data/closure-library/closure/goog/math/rect.js +340 -0
- data/closure-library/closure/goog/math/rect_test.html +315 -0
- data/closure-library/closure/goog/math/size.js +201 -0
- data/closure-library/closure/goog/math/size_test.html +174 -0
- data/closure-library/closure/goog/math/vec2.js +255 -0
- data/closure-library/closure/goog/math/vec2_test.html +203 -0
- data/closure-library/closure/goog/math/vec3.js +327 -0
- data/closure-library/closure/goog/math/vec3_test.html +231 -0
- data/closure-library/closure/goog/memoize/memoize.js +98 -0
- data/closure-library/closure/goog/memoize/memoize_test.html +157 -0
- data/closure-library/closure/goog/messaging/abstractchannel.js +209 -0
- data/closure-library/closure/goog/messaging/abstractchannel_test.html +90 -0
- data/closure-library/closure/goog/messaging/bufferedchannel.js +277 -0
- data/closure-library/closure/goog/messaging/bufferedchannel_test.html +205 -0
- data/closure-library/closure/goog/messaging/deferredchannel.js +79 -0
- data/closure-library/closure/goog/messaging/deferredchannel_test.html +107 -0
- data/closure-library/closure/goog/messaging/loggerclient.js +131 -0
- data/closure-library/closure/goog/messaging/loggerclient_test.html +102 -0
- data/closure-library/closure/goog/messaging/loggerserver.js +94 -0
- data/closure-library/closure/goog/messaging/loggerserver_test.html +101 -0
- data/closure-library/closure/goog/messaging/messagechannel.js +115 -0
- data/closure-library/closure/goog/messaging/messaging.js +34 -0
- data/closure-library/closure/goog/messaging/messaging_test.html +42 -0
- data/closure-library/closure/goog/messaging/multichannel.js +303 -0
- data/closure-library/closure/goog/messaging/multichannel_test.html +122 -0
- data/closure-library/closure/goog/messaging/portchannel.js +341 -0
- data/closure-library/closure/goog/messaging/portchannel_test.html +359 -0
- data/closure-library/closure/goog/messaging/testdata/portchannel_worker.js +37 -0
- data/closure-library/closure/goog/module/abstractmoduleloader.js +46 -0
- data/closure-library/closure/goog/module/basemodule.js +45 -0
- data/closure-library/closure/goog/module/basemoduleloader.js +210 -0
- data/closure-library/closure/goog/module/loader.js +269 -0
- data/closure-library/closure/goog/module/module.js +166 -0
- data/closure-library/closure/goog/module/moduleinfo.js +336 -0
- data/closure-library/closure/goog/module/moduleinfo_test.html +109 -0
- data/closure-library/closure/goog/module/moduleloadcallback.js +84 -0
- data/closure-library/closure/goog/module/moduleloadcallback_test.html +57 -0
- data/closure-library/closure/goog/module/moduleloader.js +250 -0
- data/closure-library/closure/goog/module/moduleloader_test.html +244 -0
- data/closure-library/closure/goog/module/modulemanager.js +1008 -0
- data/closure-library/closure/goog/module/modulemanager_test.html +1240 -0
- data/closure-library/closure/goog/module/testdata/modA_1.js +22 -0
- data/closure-library/closure/goog/module/testdata/modA_2.js +24 -0
- data/closure-library/closure/goog/module/testdata/modB_1.js +24 -0
- data/closure-library/closure/goog/net/browserchannel.js +2441 -0
- data/closure-library/closure/goog/net/browserchannel_test.html +1176 -0
- data/closure-library/closure/goog/net/browsertestchannel.js +552 -0
- data/closure-library/closure/goog/net/bulkloader.js +174 -0
- data/closure-library/closure/goog/net/bulkloader_test.html +232 -0
- data/closure-library/closure/goog/net/bulkloaderhelper.js +129 -0
- data/closure-library/closure/goog/net/channeldebug.js +288 -0
- data/closure-library/closure/goog/net/channelrequest.js +1125 -0
- data/closure-library/closure/goog/net/channelrequest_test.html +158 -0
- data/closure-library/closure/goog/net/cookies.js +401 -0
- data/closure-library/closure/goog/net/cookies_test.html +255 -0
- data/closure-library/closure/goog/net/crossdomainrpc.js +848 -0
- data/closure-library/closure/goog/net/crossdomainrpc_test.gif +0 -0
- data/closure-library/closure/goog/net/crossdomainrpc_test.html +120 -0
- data/closure-library/closure/goog/net/crossdomainrpc_test_response.html +59 -0
- data/closure-library/closure/goog/net/errorcode.js +130 -0
- data/closure-library/closure/goog/net/eventtype.js +37 -0
- data/closure-library/closure/goog/net/iframe_xhr_test.html +142 -0
- data/closure-library/closure/goog/net/iframe_xhr_test_response.html +17 -0
- data/closure-library/closure/goog/net/iframeio.js +1342 -0
- data/closure-library/closure/goog/net/iframeio_different_base_test.data +2 -0
- data/closure-library/closure/goog/net/iframeio_different_base_test.html +42 -0
- data/closure-library/closure/goog/net/iframeio_test.html +368 -0
- data/closure-library/closure/goog/net/iframeloadmonitor.js +199 -0
- data/closure-library/closure/goog/net/iframeloadmonitor_test.html +113 -0
- data/closure-library/closure/goog/net/iframeloadmonitor_test_frame.html +12 -0
- data/closure-library/closure/goog/net/iframeloadmonitor_test_frame2.html +12 -0
- data/closure-library/closure/goog/net/iframeloadmonitor_test_frame3.html +12 -0
- data/closure-library/closure/goog/net/imageloader.js +237 -0
- data/closure-library/closure/goog/net/imageloader_test.html +200 -0
- data/closure-library/closure/goog/net/imageloader_testimg1.gif +0 -0
- data/closure-library/closure/goog/net/imageloader_testimg2.gif +0 -0
- data/closure-library/closure/goog/net/imageloader_testimg3.gif +0 -0
- data/closure-library/closure/goog/net/jsonp.js +379 -0
- data/closure-library/closure/goog/net/jsonp_test.html +328 -0
- data/closure-library/closure/goog/net/mockiframeio.js +318 -0
- data/closure-library/closure/goog/net/mockxhrlite.js +34 -0
- data/closure-library/closure/goog/net/mockxhrlite_test.html +109 -0
- data/closure-library/closure/goog/net/multiiframeloadmonitor.js +116 -0
- data/closure-library/closure/goog/net/multiiframeloadmonitor_test.html +172 -0
- data/closure-library/closure/goog/net/networktester.js +383 -0
- data/closure-library/closure/goog/net/networktester_test.html +227 -0
- data/closure-library/closure/goog/net/tmpnetwork.js +168 -0
- data/closure-library/closure/goog/net/wrapperxmlhttpfactory.js +68 -0
- data/closure-library/closure/goog/net/xhrio.js +1093 -0
- data/closure-library/closure/goog/net/xhrio_test.html +603 -0
- data/closure-library/closure/goog/net/xhriopool.js +87 -0
- data/closure-library/closure/goog/net/xhrlite.js +119 -0
- data/closure-library/closure/goog/net/xhrlite_test.html +156 -0
- data/closure-library/closure/goog/net/xhrlitepool.js +37 -0
- data/closure-library/closure/goog/net/xhrmanager.js +763 -0
- data/closure-library/closure/goog/net/xhrmonitor.js +254 -0
- data/closure-library/closure/goog/net/xhrmonitor_test.html +199 -0
- data/closure-library/closure/goog/net/xmlhttp.js +215 -0
- data/closure-library/closure/goog/net/xmlhttpfactory.js +64 -0
- data/closure-library/closure/goog/net/xpc/crosspagechannel.js +624 -0
- data/closure-library/closure/goog/net/xpc/crosspagechannel_test.html +422 -0
- data/closure-library/closure/goog/net/xpc/frameelementmethodtransport.js +251 -0
- data/closure-library/closure/goog/net/xpc/iframepollingtransport.js +822 -0
- data/closure-library/closure/goog/net/xpc/iframerelaytransport.js +288 -0
- data/closure-library/closure/goog/net/xpc/nativemessagingtransport.js +280 -0
- data/closure-library/closure/goog/net/xpc/nativemessagingtransport_test.html +164 -0
- data/closure-library/closure/goog/net/xpc/nixtransport.js +454 -0
- data/closure-library/closure/goog/net/xpc/relay.js +72 -0
- data/closure-library/closure/goog/net/xpc/testdata/inner_peer.html +106 -0
- data/closure-library/closure/goog/net/xpc/transport.js +104 -0
- data/closure-library/closure/goog/net/xpc/xpc.js +238 -0
- data/closure-library/closure/goog/object/object.js +553 -0
- data/closure-library/closure/goog/object/object_test.html +376 -0
- data/closure-library/closure/goog/positioning/absoluteposition.js +73 -0
- data/closure-library/closure/goog/positioning/abstractposition.js +47 -0
- data/closure-library/closure/goog/positioning/anchoredposition.js +78 -0
- data/closure-library/closure/goog/positioning/anchoredviewportposition.js +126 -0
- data/closure-library/closure/goog/positioning/anchoredviewportposition_test.html +117 -0
- data/closure-library/closure/goog/positioning/anchoredviewportposition_test_iframe.html +35 -0
- data/closure-library/closure/goog/positioning/clientposition.js +75 -0
- data/closure-library/closure/goog/positioning/menuanchoredposition.js +97 -0
- data/closure-library/closure/goog/positioning/positioning.js +476 -0
- data/closure-library/closure/goog/positioning/positioning_test.html +877 -0
- data/closure-library/closure/goog/positioning/positioning_test_iframe1.html +16 -0
- data/closure-library/closure/goog/positioning/positioning_test_iframe2.html +13 -0
- data/closure-library/closure/goog/positioning/positioning_test_quirk.html +9 -0
- data/closure-library/closure/goog/positioning/positioning_test_standard.html +13 -0
- data/closure-library/closure/goog/positioning/viewportclientposition.js +102 -0
- data/closure-library/closure/goog/positioning/viewportclientposition_test.html +172 -0
- data/closure-library/closure/goog/positioning/viewportposition.js +63 -0
- data/closure-library/closure/goog/proto/proto.js +43 -0
- data/closure-library/closure/goog/proto/serializer.js +68 -0
- data/closure-library/closure/goog/proto/serializer_test.html +43 -0
- data/closure-library/closure/goog/proto2/descriptor.js +198 -0
- data/closure-library/closure/goog/proto2/descriptor_test.html +60 -0
- data/closure-library/closure/goog/proto2/fielddescriptor.js +288 -0
- data/closure-library/closure/goog/proto2/fielddescriptor_test.html +124 -0
- data/closure-library/closure/goog/proto2/lazydeserializer.js +69 -0
- data/closure-library/closure/goog/proto2/message.js +726 -0
- data/closure-library/closure/goog/proto2/message_test.html +356 -0
- data/closure-library/closure/goog/proto2/objectserializer.js +159 -0
- data/closure-library/closure/goog/proto2/objectserializer_test.html +423 -0
- data/closure-library/closure/goog/proto2/package_test.pb.js +164 -0
- data/closure-library/closure/goog/proto2/pbliteserializer.js +150 -0
- data/closure-library/closure/goog/proto2/pbliteserializer_test.html +267 -0
- data/closure-library/closure/goog/proto2/proto_test.html +693 -0
- data/closure-library/closure/goog/proto2/serializer.js +148 -0
- data/closure-library/closure/goog/proto2/test.pb.js +2820 -0
- data/closure-library/closure/goog/proto2/util.js +54 -0
- data/closure-library/closure/goog/pubsub/pubsub.js +326 -0
- data/closure-library/closure/goog/pubsub/pubsub_test.html +635 -0
- data/closure-library/closure/goog/reflect/reflect.js +50 -0
- data/closure-library/closure/goog/spell/spellcheck.js +474 -0
- data/closure-library/closure/goog/spell/spellcheck_test.html +112 -0
- data/closure-library/closure/goog/string/path.js +100 -0
- data/closure-library/closure/goog/string/path_test.html +59 -0
- data/closure-library/closure/goog/string/string.js +1207 -0
- data/closure-library/closure/goog/string/string_test.html +877 -0
- data/closure-library/closure/goog/string/stringbuffer.js +167 -0
- data/closure-library/closure/goog/string/stringbuffer_test.html +101 -0
- data/closure-library/closure/goog/string/stringformat.js +247 -0
- data/closure-library/closure/goog/string/stringformat_test.html +211 -0
- data/closure-library/closure/goog/structs/avltree.js +769 -0
- data/closure-library/closure/goog/structs/avltree_test.html +241 -0
- data/closure-library/closure/goog/structs/circularbuffer.js +219 -0
- data/closure-library/closure/goog/structs/circularbuffer_test.html +105 -0
- data/closure-library/closure/goog/structs/heap.js +332 -0
- data/closure-library/closure/goog/structs/heap_test.html +220 -0
- data/closure-library/closure/goog/structs/inversionmap.js +159 -0
- data/closure-library/closure/goog/structs/inversionmap_test.html +157 -0
- data/closure-library/closure/goog/structs/linkedmap.js +472 -0
- data/closure-library/closure/goog/structs/linkedmap_test.html +300 -0
- data/closure-library/closure/goog/structs/map.js +446 -0
- data/closure-library/closure/goog/structs/map_test.html +430 -0
- data/closure-library/closure/goog/structs/node.js +74 -0
- data/closure-library/closure/goog/structs/pool.js +344 -0
- data/closure-library/closure/goog/structs/pool_test.html +265 -0
- data/closure-library/closure/goog/structs/prioritypool.js +147 -0
- data/closure-library/closure/goog/structs/prioritypool_test.html +478 -0
- data/closure-library/closure/goog/structs/priorityqueue.js +64 -0
- data/closure-library/closure/goog/structs/priorityqueue_test.html +179 -0
- data/closure-library/closure/goog/structs/quadtree.js +571 -0
- data/closure-library/closure/goog/structs/quadtree_test.html +179 -0
- data/closure-library/closure/goog/structs/queue.js +157 -0
- data/closure-library/closure/goog/structs/queue_test.html +140 -0
- data/closure-library/closure/goog/structs/set.js +251 -0
- data/closure-library/closure/goog/structs/set_test.html +551 -0
- data/closure-library/closure/goog/structs/simplepool.js +203 -0
- data/closure-library/closure/goog/structs/stringset.js +404 -0
- data/closure-library/closure/goog/structs/stringset_test.html +251 -0
- data/closure-library/closure/goog/structs/structs.js +341 -0
- data/closure-library/closure/goog/structs/structs_test.html +1050 -0
- data/closure-library/closure/goog/structs/treenode.js +312 -0
- data/closure-library/closure/goog/structs/treenode_test.html +285 -0
- data/closure-library/closure/goog/structs/trie.js +368 -0
- data/closure-library/closure/goog/structs/trie_test.html +378 -0
- data/closure-library/closure/goog/style/cursor.js +125 -0
- data/closure-library/closure/goog/style/cursor_test.html +131 -0
- data/closure-library/closure/goog/style/style.js +1804 -0
- data/closure-library/closure/goog/style/style_quirks_test.html +1928 -0
- data/closure-library/closure/goog/style/style_test.html +2073 -0
- data/closure-library/closure/goog/style/style_test_iframe_quirk.html +29 -0
- data/closure-library/closure/goog/style/style_test_iframe_standard.html +30 -0
- data/closure-library/closure/goog/style/style_test_quirk.html +9 -0
- data/closure-library/closure/goog/style/style_test_standard.html +11 -0
- data/closure-library/closure/goog/testing/asserts.js +970 -0
- data/closure-library/closure/goog/testing/asserts_test.html +966 -0
- data/closure-library/closure/goog/testing/async/mockcontrol.js +174 -0
- data/closure-library/closure/goog/testing/async/mockcontrol_test.html +224 -0
- data/closure-library/closure/goog/testing/asynctestcase.js +812 -0
- data/closure-library/closure/goog/testing/asynctestcase_async_test.html +102 -0
- data/closure-library/closure/goog/testing/asynctestcase_noasync_test.html +98 -0
- data/closure-library/closure/goog/testing/benchmark.js +87 -0
- data/closure-library/closure/goog/testing/benchmarks/jsbinarysizebutton.js +64 -0
- data/closure-library/closure/goog/testing/benchmarks/jsbinarysizebutton_test.html +58 -0
- data/closure-library/closure/goog/testing/benchmarks/jsbinarysizetoolbar.js +66 -0
- data/closure-library/closure/goog/testing/benchmarks/jsbinarysizetoolbar_test.html +49 -0
- data/closure-library/closure/goog/testing/continuationtestcase.js +682 -0
- data/closure-library/closure/goog/testing/continuationtestcase_test.html +349 -0
- data/closure-library/closure/goog/testing/deferredtestcase.js +157 -0
- data/closure-library/closure/goog/testing/deferredtestcase_test.html +152 -0
- data/closure-library/closure/goog/testing/dom.js +596 -0
- data/closure-library/closure/goog/testing/dom_test.html +438 -0
- data/closure-library/closure/goog/testing/editor/dom.js +293 -0
- data/closure-library/closure/goog/testing/editor/dom_test.html +295 -0
- data/closure-library/closure/goog/testing/editor/fieldmock.js +90 -0
- data/closure-library/closure/goog/testing/editor/testhelper.js +168 -0
- data/closure-library/closure/goog/testing/editor/testhelper_test.html +176 -0
- data/closure-library/closure/goog/testing/events/eventobserver.js +85 -0
- data/closure-library/closure/goog/testing/events/eventobserver_test.html +70 -0
- data/closure-library/closure/goog/testing/events/events.js +540 -0
- data/closure-library/closure/goog/testing/events/events_test.html +434 -0
- data/closure-library/closure/goog/testing/events/matchers.js +41 -0
- data/closure-library/closure/goog/testing/events/matchers_test.html +40 -0
- data/closure-library/closure/goog/testing/expectedfailures.js +236 -0
- data/closure-library/closure/goog/testing/expectedfailures_test.html +122 -0
- data/closure-library/closure/goog/testing/fs/blob.js +74 -0
- data/closure-library/closure/goog/testing/fs/blob_test.html +53 -0
- data/closure-library/closure/goog/testing/fs/directoryentry_test.html +185 -0
- data/closure-library/closure/goog/testing/fs/entry.js +511 -0
- data/closure-library/closure/goog/testing/fs/entry_test.html +153 -0
- data/closure-library/closure/goog/testing/fs/file.js +51 -0
- data/closure-library/closure/goog/testing/fs/fileentry_test.html +54 -0
- data/closure-library/closure/goog/testing/fs/filesystem.js +64 -0
- data/closure-library/closure/goog/testing/fs/filewriter.js +314 -0
- data/closure-library/closure/goog/testing/fs/filewriter_test.html +248 -0
- data/closure-library/closure/goog/testing/fs/fs.js +146 -0
- data/closure-library/closure/goog/testing/fs/fs_test.html +54 -0
- data/closure-library/closure/goog/testing/fs/integration_test.html +219 -0
- data/closure-library/closure/goog/testing/functionmock.js +157 -0
- data/closure-library/closure/goog/testing/functionmock_test.html +357 -0
- data/closure-library/closure/goog/testing/graphics.js +64 -0
- data/closure-library/closure/goog/testing/jsunit.js +144 -0
- data/closure-library/closure/goog/testing/loosemock.js +240 -0
- data/closure-library/closure/goog/testing/loosemock_test.html +343 -0
- data/closure-library/closure/goog/testing/messaging/mockmessagechannel.js +77 -0
- data/closure-library/closure/goog/testing/messaging/mockmessageevent.js +100 -0
- data/closure-library/closure/goog/testing/mock.js +556 -0
- data/closure-library/closure/goog/testing/mock_test.html +208 -0
- data/closure-library/closure/goog/testing/mockclassfactory.js +580 -0
- data/closure-library/closure/goog/testing/mockclassfactory_test.html +241 -0
- data/closure-library/closure/goog/testing/mockclock.js +395 -0
- data/closure-library/closure/goog/testing/mockclock_test.html +413 -0
- data/closure-library/closure/goog/testing/mockcontrol.js +210 -0
- data/closure-library/closure/goog/testing/mockcontrol_test.html +127 -0
- data/closure-library/closure/goog/testing/mockinterface.js +45 -0
- data/closure-library/closure/goog/testing/mockmatchers.js +395 -0
- data/closure-library/closure/goog/testing/mockmatchers_test.html +388 -0
- data/closure-library/closure/goog/testing/mockrandom.js +128 -0
- data/closure-library/closure/goog/testing/mockrandom_test.html +56 -0
- data/closure-library/closure/goog/testing/mockrange.js +65 -0
- data/closure-library/closure/goog/testing/mockrange_test.html +41 -0
- data/closure-library/closure/goog/testing/mockuseragent.js +143 -0
- data/closure-library/closure/goog/testing/mockuseragent_test.html +59 -0
- data/closure-library/closure/goog/testing/multitestrunner.js +1442 -0
- data/closure-library/closure/goog/testing/net/xhrio.js +595 -0
- data/closure-library/closure/goog/testing/net/xhrio_test.html +321 -0
- data/closure-library/closure/goog/testing/objectpropertystring.js +67 -0
- data/closure-library/closure/goog/testing/performancetable.css +46 -0
- data/closure-library/closure/goog/testing/performancetable.js +162 -0
- data/closure-library/closure/goog/testing/performancetimer.js +166 -0
- data/closure-library/closure/goog/testing/performancetimer_test.html +107 -0
- data/closure-library/closure/goog/testing/propertyreplacer.js +243 -0
- data/closure-library/closure/goog/testing/propertyreplacer_test.html +368 -0
- data/closure-library/closure/goog/testing/pseudorandom.js +162 -0
- data/closure-library/closure/goog/testing/pseudorandom_test.html +98 -0
- data/closure-library/closure/goog/testing/recordfunction.js +194 -0
- data/closure-library/closure/goog/testing/recordfunction_test.html +147 -0
- data/closure-library/closure/goog/testing/singleton.js +82 -0
- data/closure-library/closure/goog/testing/singleton_test.html +39 -0
- data/closure-library/closure/goog/testing/stacktrace.js +470 -0
- data/closure-library/closure/goog/testing/stacktrace_test.html +229 -0
- data/closure-library/closure/goog/testing/strictmock.js +124 -0
- data/closure-library/closure/goog/testing/strictmock_test.html +368 -0
- data/closure-library/closure/goog/testing/style/layoutasserts.js +368 -0
- data/closure-library/closure/goog/testing/style/layoutasserts_test.html +269 -0
- data/closure-library/closure/goog/testing/testcase.js +1053 -0
- data/closure-library/closure/goog/testing/testqueue.js +66 -0
- data/closure-library/closure/goog/testing/testrunner.js +391 -0
- data/closure-library/closure/goog/testing/ui/rendererasserts.js +50 -0
- data/closure-library/closure/goog/testing/ui/rendererasserts_test.html +51 -0
- data/closure-library/closure/goog/testing/ui/rendererharness.js +175 -0
- data/closure-library/closure/goog/testing/ui/style.js +137 -0
- data/closure-library/closure/goog/testing/ui/style_reference.html +27 -0
- data/closure-library/closure/goog/testing/ui/style_test.html +130 -0
- data/closure-library/closure/goog/timer/timer.js +285 -0
- data/closure-library/closure/goog/timer/timer_test.html +118 -0
- data/closure-library/closure/goog/tweak/entries.js +990 -0
- data/closure-library/closure/goog/tweak/entries_test.html +94 -0
- data/closure-library/closure/goog/tweak/registry.js +310 -0
- data/closure-library/closure/goog/tweak/registry_test.html +144 -0
- data/closure-library/closure/goog/tweak/testhelpers.js +111 -0
- data/closure-library/closure/goog/tweak/tweak.js +318 -0
- data/closure-library/closure/goog/tweak/tweakui.js +817 -0
- data/closure-library/closure/goog/tweak/tweakui_test.html +280 -0
- data/closure-library/closure/goog/ui/abstractspellchecker.js +1069 -0
- data/closure-library/closure/goog/ui/activitymonitor.js +286 -0
- data/closure-library/closure/goog/ui/activitymonitor_test.html +44 -0
- data/closure-library/closure/goog/ui/advancedtooltip.js +369 -0
- data/closure-library/closure/goog/ui/advancedtooltip_test.html +274 -0
- data/closure-library/closure/goog/ui/animatedzippy.js +190 -0
- data/closure-library/closure/goog/ui/attachablemenu.js +464 -0
- data/closure-library/closure/goog/ui/autocomplete/arraymatcher.js +156 -0
- data/closure-library/closure/goog/ui/autocomplete/arraymatcher_test.html +130 -0
- data/closure-library/closure/goog/ui/autocomplete/autocomplete.js +627 -0
- data/closure-library/closure/goog/ui/autocomplete/autocomplete_test.html +537 -0
- data/closure-library/closure/goog/ui/autocomplete/basic.js +53 -0
- data/closure-library/closure/goog/ui/autocomplete/basic_test.html +204 -0
- data/closure-library/closure/goog/ui/autocomplete/inputhandler.js +1209 -0
- data/closure-library/closure/goog/ui/autocomplete/inputhandler_test.html +555 -0
- data/closure-library/closure/goog/ui/autocomplete/remote.js +117 -0
- data/closure-library/closure/goog/ui/autocomplete/remotearraymatcher.js +273 -0
- data/closure-library/closure/goog/ui/autocomplete/remotearraymatcher_test.html +73 -0
- data/closure-library/closure/goog/ui/autocomplete/renderer.js +852 -0
- data/closure-library/closure/goog/ui/autocomplete/renderer_test.html +386 -0
- data/closure-library/closure/goog/ui/autocomplete/richinputhandler.js +59 -0
- data/closure-library/closure/goog/ui/autocomplete/richremote.js +108 -0
- data/closure-library/closure/goog/ui/autocomplete/richremotearraymatcher.js +126 -0
- data/closure-library/closure/goog/ui/basicmenu.js +930 -0
- data/closure-library/closure/goog/ui/bidiinput.js +164 -0
- data/closure-library/closure/goog/ui/bubble.js +475 -0
- data/closure-library/closure/goog/ui/button.js +208 -0
- data/closure-library/closure/goog/ui/button_test.html +257 -0
- data/closure-library/closure/goog/ui/buttonrenderer.js +205 -0
- data/closure-library/closure/goog/ui/buttonrenderer_test.html +190 -0
- data/closure-library/closure/goog/ui/buttonside.js +40 -0
- data/closure-library/closure/goog/ui/cccbutton.js +281 -0
- data/closure-library/closure/goog/ui/charcounter.js +200 -0
- data/closure-library/closure/goog/ui/charpicker.js +807 -0
- data/closure-library/closure/goog/ui/checkbox.js +303 -0
- data/closure-library/closure/goog/ui/checkbox_test.html +224 -0
- data/closure-library/closure/goog/ui/checkboxmenuitem.js +53 -0
- data/closure-library/closure/goog/ui/colorbutton.js +58 -0
- data/closure-library/closure/goog/ui/colorbutton_test.html +70 -0
- data/closure-library/closure/goog/ui/colorbuttonrenderer.js +72 -0
- data/closure-library/closure/goog/ui/colormenubutton.js +213 -0
- data/closure-library/closure/goog/ui/colormenubuttonrenderer.js +144 -0
- data/closure-library/closure/goog/ui/colormenubuttonrenderer_test.html +88 -0
- data/closure-library/closure/goog/ui/colorpalette.js +162 -0
- data/closure-library/closure/goog/ui/colorpalette_test.html +169 -0
- data/closure-library/closure/goog/ui/colorpicker.js +344 -0
- data/closure-library/closure/goog/ui/colorsplitbehavior.js +61 -0
- data/closure-library/closure/goog/ui/combobox.js +894 -0
- data/closure-library/closure/goog/ui/combobox_test.html +208 -0
- data/closure-library/closure/goog/ui/component.js +1187 -0
- data/closure-library/closure/goog/ui/component_test.html +723 -0
- data/closure-library/closure/goog/ui/container.js +1296 -0
- data/closure-library/closure/goog/ui/container_test.html +450 -0
- data/closure-library/closure/goog/ui/containerrenderer.js +370 -0
- data/closure-library/closure/goog/ui/containerrenderer_test.html +227 -0
- data/closure-library/closure/goog/ui/containerscroller.js +221 -0
- data/closure-library/closure/goog/ui/containerscroller_test.html +213 -0
- data/closure-library/closure/goog/ui/control.js +1348 -0
- data/closure-library/closure/goog/ui/control_test.html +2128 -0
- data/closure-library/closure/goog/ui/controlcontent.js +28 -0
- data/closure-library/closure/goog/ui/controlrenderer.js +808 -0
- data/closure-library/closure/goog/ui/controlrenderer_test.html +840 -0
- data/closure-library/closure/goog/ui/cookieeditor.js +182 -0
- data/closure-library/closure/goog/ui/cookieeditor_test.html +102 -0
- data/closure-library/closure/goog/ui/css3buttonrenderer.js +147 -0
- data/closure-library/closure/goog/ui/css3menubuttonrenderer.js +144 -0
- data/closure-library/closure/goog/ui/cssnames.js +28 -0
- data/closure-library/closure/goog/ui/custombutton.js +58 -0
- data/closure-library/closure/goog/ui/custombuttonrenderer.js +254 -0
- data/closure-library/closure/goog/ui/customcolorpalette.js +137 -0
- data/closure-library/closure/goog/ui/customcolorpalette_test.html +60 -0
- data/closure-library/closure/goog/ui/datepicker.js +1339 -0
- data/closure-library/closure/goog/ui/datepicker_test.html +190 -0
- data/closure-library/closure/goog/ui/decorate.js +37 -0
- data/closure-library/closure/goog/ui/decorate_test.html +113 -0
- data/closure-library/closure/goog/ui/deprecatedbutton.js +381 -0
- data/closure-library/closure/goog/ui/dialog.js +1776 -0
- data/closure-library/closure/goog/ui/dialog_test.html +493 -0
- data/closure-library/closure/goog/ui/dimensionpicker.js +289 -0
- data/closure-library/closure/goog/ui/dimensionpicker_test.html +128 -0
- data/closure-library/closure/goog/ui/dimensionpickerrenderer.js +387 -0
- data/closure-library/closure/goog/ui/dragdropdetector.js +642 -0
- data/closure-library/closure/goog/ui/drilldownrow.js +494 -0
- data/closure-library/closure/goog/ui/editor/abstractdialog.js +443 -0
- data/closure-library/closure/goog/ui/editor/abstractdialog_test.html +467 -0
- data/closure-library/closure/goog/ui/editor/bubble.js +520 -0
- data/closure-library/closure/goog/ui/editor/bubble_test.html +264 -0
- data/closure-library/closure/goog/ui/editor/defaulttoolbar.js +1062 -0
- data/closure-library/closure/goog/ui/editor/linkdialog.js +833 -0
- data/closure-library/closure/goog/ui/editor/linkdialog_test.html +449 -0
- data/closure-library/closure/goog/ui/editor/messages.js +115 -0
- data/closure-library/closure/goog/ui/editor/tabpane.js +183 -0
- data/closure-library/closure/goog/ui/editor/toolbarcontroller.js +293 -0
- data/closure-library/closure/goog/ui/editor/toolbarfactory.js +437 -0
- data/closure-library/closure/goog/ui/editor/toolbarfactory_test.html +73 -0
- data/closure-library/closure/goog/ui/emoji/emoji.js +72 -0
- data/closure-library/closure/goog/ui/emoji/emojipalette.js +298 -0
- data/closure-library/closure/goog/ui/emoji/emojipaletterenderer.js +206 -0
- data/closure-library/closure/goog/ui/emoji/emojipicker.js +797 -0
- data/closure-library/closure/goog/ui/emoji/emojipicker_test.html +840 -0
- data/closure-library/closure/goog/ui/emoji/fast_nonprogressive_emojipicker_test.html +256 -0
- data/closure-library/closure/goog/ui/emoji/fast_progressive_emojipicker_test.html +256 -0
- data/closure-library/closure/goog/ui/emoji/popupemojipicker.js +410 -0
- data/closure-library/closure/goog/ui/emoji/popupemojipicker_test.html +80 -0
- data/closure-library/closure/goog/ui/emoji/progressiveemojipaletterenderer.js +97 -0
- data/closure-library/closure/goog/ui/emoji/spriteinfo.js +212 -0
- data/closure-library/closure/goog/ui/emoji/spriteinfo_test.html +51 -0
- data/closure-library/closure/goog/ui/filteredmenu.js +562 -0
- data/closure-library/closure/goog/ui/filteredmenu_test.html +299 -0
- data/closure-library/closure/goog/ui/filterobservingmenuitem.js +97 -0
- data/closure-library/closure/goog/ui/filterobservingmenuitemrenderer.js +60 -0
- data/closure-library/closure/goog/ui/flatbuttonrenderer.js +138 -0
- data/closure-library/closure/goog/ui/flatmenubuttonrenderer.js +199 -0
- data/closure-library/closure/goog/ui/formpost.js +109 -0
- data/closure-library/closure/goog/ui/formpost_test.html +109 -0
- data/closure-library/closure/goog/ui/gauge.js +999 -0
- data/closure-library/closure/goog/ui/gaugetheme.js +169 -0
- data/closure-library/closure/goog/ui/hovercard.js +447 -0
- data/closure-library/closure/goog/ui/hovercard_test.html +343 -0
- data/closure-library/closure/goog/ui/hsvapalette.js +311 -0
- data/closure-library/closure/goog/ui/hsvapalette_test.html +152 -0
- data/closure-library/closure/goog/ui/hsvpalette.js +470 -0
- data/closure-library/closure/goog/ui/hsvpalette_test.html +202 -0
- data/closure-library/closure/goog/ui/idgenerator.js +57 -0
- data/closure-library/closure/goog/ui/idletimer.js +299 -0
- data/closure-library/closure/goog/ui/idletimer_test.html +100 -0
- data/closure-library/closure/goog/ui/iframemask.js +256 -0
- data/closure-library/closure/goog/ui/iframemask_test.html +230 -0
- data/closure-library/closure/goog/ui/imagelessbuttonrenderer.js +204 -0
- data/closure-library/closure/goog/ui/imagelessmenubuttonrenderer.js +202 -0
- data/closure-library/closure/goog/ui/imagelessroundedcorner.js +971 -0
- data/closure-library/closure/goog/ui/inputdatepicker.js +306 -0
- data/closure-library/closure/goog/ui/inputdatepicker_test.html +109 -0
- data/closure-library/closure/goog/ui/itemevent.js +50 -0
- data/closure-library/closure/goog/ui/keyboardshortcuthandler.js +981 -0
- data/closure-library/closure/goog/ui/keyboardshortcuthandler_test.html +671 -0
- data/closure-library/closure/goog/ui/labelinput.js +439 -0
- data/closure-library/closure/goog/ui/linkbuttonrenderer.js +67 -0
- data/closure-library/closure/goog/ui/media/flashobject.js +629 -0
- data/closure-library/closure/goog/ui/media/flashobject_test.html +236 -0
- data/closure-library/closure/goog/ui/media/flickr.js +309 -0
- data/closure-library/closure/goog/ui/media/flickr_test.html +90 -0
- data/closure-library/closure/goog/ui/media/media.js +284 -0
- data/closure-library/closure/goog/ui/media/media_test.html +161 -0
- data/closure-library/closure/goog/ui/media/mediamodel.js +840 -0
- data/closure-library/closure/goog/ui/media/mp3.js +225 -0
- data/closure-library/closure/goog/ui/media/mp3_test.html +78 -0
- data/closure-library/closure/goog/ui/media/photo.js +139 -0
- data/closure-library/closure/goog/ui/media/photo_test.html +62 -0
- data/closure-library/closure/goog/ui/media/picasa.js +317 -0
- data/closure-library/closure/goog/ui/media/picasa_test.html +131 -0
- data/closure-library/closure/goog/ui/media/vimeo.js +264 -0
- data/closure-library/closure/goog/ui/media/vimeo_test.html +79 -0
- data/closure-library/closure/goog/ui/media/youtube.js +328 -0
- data/closure-library/closure/goog/ui/media/youtube_test.html +185 -0
- data/closure-library/closure/goog/ui/menu.js +435 -0
- data/closure-library/closure/goog/ui/menu_test.html +129 -0
- data/closure-library/closure/goog/ui/menubase.js +191 -0
- data/closure-library/closure/goog/ui/menubutton.js +809 -0
- data/closure-library/closure/goog/ui/menubutton_test.html +440 -0
- data/closure-library/closure/goog/ui/menubutton_test_frame.html +41 -0
- data/closure-library/closure/goog/ui/menubuttonrenderer.js +226 -0
- data/closure-library/closure/goog/ui/menubuttonrenderer_test.html +161 -0
- data/closure-library/closure/goog/ui/menuheader.js +62 -0
- data/closure-library/closure/goog/ui/menuheaderrenderer.js +55 -0
- data/closure-library/closure/goog/ui/menuitem.js +154 -0
- data/closure-library/closure/goog/ui/menuitem_test.html +506 -0
- data/closure-library/closure/goog/ui/menuitemrenderer.js +353 -0
- data/closure-library/closure/goog/ui/menuitemrenderer_test.html +190 -0
- data/closure-library/closure/goog/ui/menurenderer.js +118 -0
- data/closure-library/closure/goog/ui/menuseparator.js +51 -0
- data/closure-library/closure/goog/ui/menuseparatorrenderer.js +102 -0
- data/closure-library/closure/goog/ui/mockactivitymonitor.js +54 -0
- data/closure-library/closure/goog/ui/nativebuttonrenderer.js +205 -0
- data/closure-library/closure/goog/ui/nativebuttonrenderer_test.html +213 -0
- data/closure-library/closure/goog/ui/offlineinstalldialog.js +1086 -0
- data/closure-library/closure/goog/ui/offlinestatuscard.js +580 -0
- data/closure-library/closure/goog/ui/offlinestatuscomponent.js +545 -0
- data/closure-library/closure/goog/ui/option.js +67 -0
- data/closure-library/closure/goog/ui/palette.js +528 -0
- data/closure-library/closure/goog/ui/paletterenderer.js +318 -0
- data/closure-library/closure/goog/ui/plaintextspellchecker.js +668 -0
- data/closure-library/closure/goog/ui/plaintextspellchecker_test.html +240 -0
- data/closure-library/closure/goog/ui/popup.js +410 -0
- data/closure-library/closure/goog/ui/popup_test.html +137 -0
- data/closure-library/closure/goog/ui/popupbase.js +721 -0
- data/closure-library/closure/goog/ui/popupbase_test.html +186 -0
- data/closure-library/closure/goog/ui/popupcolorpicker.js +441 -0
- data/closure-library/closure/goog/ui/popupcolorpicker_test.html +71 -0
- data/closure-library/closure/goog/ui/popupdatepicker.js +273 -0
- data/closure-library/closure/goog/ui/popupmenu.js +539 -0
- data/closure-library/closure/goog/ui/popupmenu_test.html +197 -0
- data/closure-library/closure/goog/ui/progressbar.js +390 -0
- data/closure-library/closure/goog/ui/prompt.js +307 -0
- data/closure-library/closure/goog/ui/prompt_test.html +65 -0
- data/closure-library/closure/goog/ui/rangemodel.js +301 -0
- data/closure-library/closure/goog/ui/rangemodel_test.html +270 -0
- data/closure-library/closure/goog/ui/ratings.js +441 -0
- data/closure-library/closure/goog/ui/registry.js +166 -0
- data/closure-library/closure/goog/ui/registry_test.html +236 -0
- data/closure-library/closure/goog/ui/richtextspellchecker.js +600 -0
- data/closure-library/closure/goog/ui/richtextspellchecker_test.html +224 -0
- data/closure-library/closure/goog/ui/roundedcorners.js +694 -0
- data/closure-library/closure/goog/ui/roundedpanel.js +609 -0
- data/closure-library/closure/goog/ui/roundedpanel_test.html +57 -0
- data/closure-library/closure/goog/ui/roundedtabrenderer.js +196 -0
- data/closure-library/closure/goog/ui/scrollfloater.js +394 -0
- data/closure-library/closure/goog/ui/scrollfloater_test.html +46 -0
- data/closure-library/closure/goog/ui/select.js +397 -0
- data/closure-library/closure/goog/ui/select_test.html +152 -0
- data/closure-library/closure/goog/ui/selectionmenubutton.js +277 -0
- data/closure-library/closure/goog/ui/selectionmenubutton_test.html +237 -0
- data/closure-library/closure/goog/ui/selectionmodel.js +291 -0
- data/closure-library/closure/goog/ui/separator.js +74 -0
- data/closure-library/closure/goog/ui/serverchart.js +1791 -0
- data/closure-library/closure/goog/ui/serverchart_test.html +598 -0
- data/closure-library/closure/goog/ui/slider.js +125 -0
- data/closure-library/closure/goog/ui/sliderbase.js +1087 -0
- data/closure-library/closure/goog/ui/sliderbase_test.html +198 -0
- data/closure-library/closure/goog/ui/splitbehavior.js +348 -0
- data/closure-library/closure/goog/ui/splitbehavior_test.html +161 -0
- data/closure-library/closure/goog/ui/splitpane.js +844 -0
- data/closure-library/closure/goog/ui/splitpane_test.html +143 -0
- data/closure-library/closure/goog/ui/style/app/buttonrenderer.js +204 -0
- data/closure-library/closure/goog/ui/style/app/buttonrenderer_test.html +155 -0
- data/closure-library/closure/goog/ui/style/app/menubuttonrenderer.js +227 -0
- data/closure-library/closure/goog/ui/style/app/menubuttonrenderer_test.html +167 -0
- data/closure-library/closure/goog/ui/style/app/primaryactionbuttonrenderer.js +88 -0
- data/closure-library/closure/goog/ui/style/app/primaryactionbuttonrenderer_test.html +76 -0
- data/closure-library/closure/goog/ui/submenu.js +660 -0
- data/closure-library/closure/goog/ui/submenu_test.html +446 -0
- data/closure-library/closure/goog/ui/submenurenderer.js +188 -0
- data/closure-library/closure/goog/ui/tab.js +102 -0
- data/closure-library/closure/goog/ui/tab_test.html +61 -0
- data/closure-library/closure/goog/ui/tabbar.js +393 -0
- data/closure-library/closure/goog/ui/tabbar_test.html +611 -0
- data/closure-library/closure/goog/ui/tabbarrenderer.js +173 -0
- data/closure-library/closure/goog/ui/tabbarrenderer_test.html +137 -0
- data/closure-library/closure/goog/ui/tablesorter.js +304 -0
- data/closure-library/closure/goog/ui/tablesorter_test.html +127 -0
- data/closure-library/closure/goog/ui/tabpane.js +674 -0
- data/closure-library/closure/goog/ui/tabpane_test.html +107 -0
- data/closure-library/closure/goog/ui/tabrenderer.js +152 -0
- data/closure-library/closure/goog/ui/tabrenderer_test.html +132 -0
- data/closure-library/closure/goog/ui/textarea.js +573 -0
- data/closure-library/closure/goog/ui/textarea_test.html +305 -0
- data/closure-library/closure/goog/ui/textarearenderer.js +167 -0
- data/closure-library/closure/goog/ui/togglebutton.js +58 -0
- data/closure-library/closure/goog/ui/toolbar.js +45 -0
- data/closure-library/closure/goog/ui/toolbarbutton.js +54 -0
- data/closure-library/closure/goog/ui/toolbarbuttonrenderer.js +55 -0
- data/closure-library/closure/goog/ui/toolbarcolormenubutton.js +57 -0
- data/closure-library/closure/goog/ui/toolbarcolormenubuttonrenderer.js +95 -0
- data/closure-library/closure/goog/ui/toolbarcolormenubuttonrenderer_test.html +66 -0
- data/closure-library/closure/goog/ui/toolbarmenubutton.js +56 -0
- data/closure-library/closure/goog/ui/toolbarmenubuttonrenderer.js +55 -0
- data/closure-library/closure/goog/ui/toolbarrenderer.js +95 -0
- data/closure-library/closure/goog/ui/toolbarselect.js +55 -0
- data/closure-library/closure/goog/ui/toolbarseparator.js +51 -0
- data/closure-library/closure/goog/ui/toolbarseparatorrenderer.js +87 -0
- data/closure-library/closure/goog/ui/toolbartogglebutton.js +53 -0
- data/closure-library/closure/goog/ui/tooltip.js +975 -0
- data/closure-library/closure/goog/ui/tooltip_test.html +351 -0
- data/closure-library/closure/goog/ui/tree/basenode.js +1457 -0
- data/closure-library/closure/goog/ui/tree/basenode_test.html +218 -0
- data/closure-library/closure/goog/ui/tree/treecontrol.js +656 -0
- data/closure-library/closure/goog/ui/tree/treecontrol_test.html +113 -0
- data/closure-library/closure/goog/ui/tree/treenode.js +102 -0
- data/closure-library/closure/goog/ui/tree/typeahead.js +332 -0
- data/closure-library/closure/goog/ui/tree/typeahead_test.html +133 -0
- data/closure-library/closure/goog/ui/tristatemenuitem.js +185 -0
- data/closure-library/closure/goog/ui/tristatemenuitemrenderer.js +86 -0
- data/closure-library/closure/goog/ui/twothumbslider.js +134 -0
- data/closure-library/closure/goog/ui/zippy.js +277 -0
- data/closure-library/closure/goog/ui/zippy_test.html +223 -0
- data/closure-library/closure/goog/uri/uri.js +1595 -0
- data/closure-library/closure/goog/uri/uri_test.html +837 -0
- data/closure-library/closure/goog/uri/utils.js +972 -0
- data/closure-library/closure/goog/uri/utils_test.html +521 -0
- data/closure-library/closure/goog/useragent/adobereader.js +90 -0
- data/closure-library/closure/goog/useragent/adobereader_test.html +34 -0
- data/closure-library/closure/goog/useragent/flash.js +113 -0
- data/closure-library/closure/goog/useragent/flash_test.html +34 -0
- data/closure-library/closure/goog/useragent/iphoto.js +86 -0
- data/closure-library/closure/goog/useragent/jscript.js +94 -0
- data/closure-library/closure/goog/useragent/jscript_test.html +65 -0
- data/closure-library/closure/goog/useragent/picasa.js +111 -0
- data/closure-library/closure/goog/useragent/platform.js +70 -0
- data/closure-library/closure/goog/useragent/platform_test.html +108 -0
- data/closure-library/closure/goog/useragent/product.js +253 -0
- data/closure-library/closure/goog/useragent/product_isversion.js +99 -0
- data/closure-library/closure/goog/useragent/product_test.html +322 -0
- data/closure-library/closure/goog/useragent/useragent.js +464 -0
- data/closure-library/closure/goog/useragent/useragent_test.html +290 -0
- data/closure-library/closure/goog/window/window.js +206 -0
- data/closure-library/closure/goog/window/window_test.html +185 -0
- data/closure-library/third_party/closure/goog/base.js +2 -0
- data/closure-library/third_party/closure/goog/caja/string/html/htmlparser.js +611 -0
- data/closure-library/third_party/closure/goog/caja/string/html/htmlsanitizer.js +605 -0
- data/closure-library/third_party/closure/goog/deps.js +26 -0
- data/closure-library/third_party/closure/goog/dojo/dom/query.js +1532 -0
- data/closure-library/third_party/closure/goog/dojo/dom/query_test.html +63 -0
- data/closure-library/third_party/closure/goog/dojo/dom/query_test.js +160 -0
- data/closure-library/third_party/closure/goog/jpeg_encoder/jpeg_encoder_basic.js +751 -0
- data/closure-library/third_party/closure/goog/loremipsum/text/loremipsum.js +712 -0
- data/closure-library/third_party/closure/goog/loremipsum/text/loremipsum_test.html +61 -0
- data/closure-library/third_party/closure/goog/mochikit/async/deferred.js +530 -0
- data/closure-library/third_party/closure/goog/mochikit/async/deferred_test.html +627 -0
- data/closure-library/third_party/closure/goog/mochikit/async/deferredlist.js +199 -0
- data/closure-library/third_party/closure/goog/mochikit/async/deferredlist_test.html +426 -0
- data/closure-library/third_party/closure/goog/osapi/osapi.js +91 -0
- data/closure-library/third_party/closure/goog/silverlight/AppManifest.xml +6 -0
- data/closure-library/third_party/closure/goog/silverlight/AssemblyInfo.cs +35 -0
- data/closure-library/third_party/closure/goog/silverlight/ClipboardButton.xaml +9 -0
- data/closure-library/third_party/closure/goog/silverlight/ClipboardButton.xaml.cs +74 -0
- data/closure-library/third_party/closure/goog/silverlight/ClipboardButtonApp.xaml +8 -0
- data/closure-library/third_party/closure/goog/silverlight/ClipboardButtonApp.xaml.cs +75 -0
- data/closure-library/third_party/closure/goog/silverlight/ClosureClipboardButton.csproj +108 -0
- data/closure-library/third_party/closure/goog/silverlight/ClosureClipboardButton.csproj.user +29 -0
- data/closure-library/third_party/closure/goog/silverlight/clipboardbutton.js +279 -0
- data/closure-library/third_party/closure/goog/silverlight/silverlight.js +758 -0
- data/closure-library/third_party/closure/goog/silverlight/supporteduseragent.js +138 -0
- data/closure-library/third_party/closure/goog/silverlight/xap_files +0 -0
- data/closure-templates/COPYING +202 -0
- data/closure-templates/README +47 -0
- data/closure-templates/SoyToJsSrcCompiler.jar +0 -0
- data/closure-templates/soyutils.js +880 -0
- data/closure-templates/soyutils_usegoog.js +308 -0
- data/closure.gemspec +20 -0
- data/config.ru +40 -0
- data/java_src/ClosureScript.java +89 -0
- data/java_src/make.rb +19 -0
- data/lib/closure/beanshell.rb +80 -0
- data/lib/closure/compiler.rb +184 -0
- data/lib/closure/file_response.rb +90 -0
- data/lib/closure/goog.rb +143 -0
- data/lib/closure/middleware.rb +43 -0
- data/lib/closure/sass.rb +56 -0
- data/lib/closure/script.rb +139 -0
- data/lib/closure/server.rb +83 -0
- data/lib/closure/sources.rb +310 -0
- data/lib/closure/templates.rb +156 -0
- data/lib/closure/version.rb +20 -0
- data/lib/closure.jar +0 -0
- data/lib/closure.rb +134 -0
- data/scripts/demos/compile.js.erb +8 -0
- data/scripts/demos/compile.out +1 -0
- data/scripts/demos/compiler.haml +17 -0
- data/scripts/demos/compiler.js +12 -0
- data/scripts/demos/deps.js.erb +1 -0
- data/scripts/demos/externs.haml +16 -0
- data/scripts/demos/externs.js.erb +8 -0
- data/scripts/demos/externs.out +1 -0
- data/scripts/demos/externs_jquery.externs +849 -0
- data/scripts/demos/externs_jquery.js +167 -0
- data/scripts/demos/externs_jquerytest.js +11 -0
- data/scripts/demos/helloworld.haml +15 -0
- data/scripts/demos/helloworld.js +58 -0
- data/scripts/demos/helloworld.soy +45 -0
- data/scripts/demos/index.haml +21 -0
- data/scripts/demos/rails_ujs.haml +24 -0
- data/scripts/examples/rails/ujs.js +136 -0
- data/scripts/favicon.ico +0 -0
- data/scripts/fixtures/_partial.haml +2 -0
- data/scripts/fixtures/erb.html.erb +8 -0
- data/scripts/fixtures/haml.haml +6 -0
- data/scripts/fixtures/html.html +9 -0
- data/scripts/fixtures/route_js.js.erb +1 -0
- data/scripts/index.haml +14 -0
- data/test/beanshell_test.rb +22 -0
- data/test/server_test.rb +67 -0
- data/test/sources_test.rb +41 -0
- data/test/test_helper.rb +12 -0
- metadata +1577 -0
|
@@ -0,0 +1,1791 @@
|
|
|
1
|
+
// Copyright 2007 The Closure Library Authors. All Rights Reserved.
|
|
2
|
+
//
|
|
3
|
+
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
4
|
+
// you may not use this file except in compliance with the License.
|
|
5
|
+
// You may obtain a copy of the License at
|
|
6
|
+
//
|
|
7
|
+
// http://www.apache.org/licenses/LICENSE-2.0
|
|
8
|
+
//
|
|
9
|
+
// Unless required by applicable law or agreed to in writing, software
|
|
10
|
+
// distributed under the License is distributed on an "AS-IS" BASIS,
|
|
11
|
+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
12
|
+
// See the License for the specific language governing permissions and
|
|
13
|
+
// limitations under the License.
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* @fileoverview Component for generating chart PNGs using Google Chart Server.
|
|
18
|
+
*
|
|
19
|
+
* @see ../demos/serverchart.html
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Namespace for chart functions
|
|
25
|
+
*/
|
|
26
|
+
goog.provide('goog.ui.ServerChart');
|
|
27
|
+
goog.provide('goog.ui.ServerChart.AxisDisplayType');
|
|
28
|
+
goog.provide('goog.ui.ServerChart.ChartType');
|
|
29
|
+
goog.provide('goog.ui.ServerChart.EncodingType');
|
|
30
|
+
goog.provide('goog.ui.ServerChart.Event');
|
|
31
|
+
goog.provide('goog.ui.ServerChart.LegendPosition');
|
|
32
|
+
goog.provide('goog.ui.ServerChart.MaximumValue');
|
|
33
|
+
goog.provide('goog.ui.ServerChart.MultiAxisAlignment');
|
|
34
|
+
goog.provide('goog.ui.ServerChart.MultiAxisType');
|
|
35
|
+
goog.provide('goog.ui.ServerChart.UriParam');
|
|
36
|
+
goog.provide('goog.ui.ServerChart.UriTooLongEvent');
|
|
37
|
+
|
|
38
|
+
goog.require('goog.Uri');
|
|
39
|
+
goog.require('goog.array');
|
|
40
|
+
goog.require('goog.asserts');
|
|
41
|
+
goog.require('goog.events.Event');
|
|
42
|
+
goog.require('goog.string');
|
|
43
|
+
goog.require('goog.ui.Component');
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* Will construct a chart using Google's chartserver.
|
|
49
|
+
*
|
|
50
|
+
* @param {goog.ui.ServerChart.ChartType} type The chart type.
|
|
51
|
+
* @param {number=} opt_width The width of the chart.
|
|
52
|
+
* @param {number=} opt_height The height of the chart.
|
|
53
|
+
* @param {goog.dom.DomHelper=} opt_domHelper Optional DOM Helper.
|
|
54
|
+
* @param {string=} opt_uri Optional uri used to connect to the chart server, if
|
|
55
|
+
* different than goog.ui.ServerChart.CHART_SERVER_URI.
|
|
56
|
+
* @constructor
|
|
57
|
+
* @extends {goog.ui.Component}
|
|
58
|
+
*/
|
|
59
|
+
goog.ui.ServerChart = function(type, opt_width, opt_height, opt_domHelper,
|
|
60
|
+
opt_uri) {
|
|
61
|
+
goog.ui.Component.call(this, opt_domHelper);
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* Image URI.
|
|
65
|
+
* @type {goog.Uri}
|
|
66
|
+
* @private
|
|
67
|
+
*/
|
|
68
|
+
this.uri_ = new goog.Uri(opt_uri || goog.ui.ServerChart.CHART_SERVER_URI);
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Encoding method for the URI data format.
|
|
72
|
+
* @type {goog.ui.ServerChart.EncodingType}
|
|
73
|
+
* @private
|
|
74
|
+
*/
|
|
75
|
+
this.encodingType_ = goog.ui.ServerChart.EncodingType.AUTOMATIC;
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Two-dimensional array of the data sets on the chart.
|
|
79
|
+
* @type {Array.<Array.<number>>}
|
|
80
|
+
* @private
|
|
81
|
+
*/
|
|
82
|
+
this.dataSets_ = [];
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Colors for each data set.
|
|
86
|
+
* @type {Array.<string>}
|
|
87
|
+
* @private
|
|
88
|
+
*/
|
|
89
|
+
this.setColors_ = [];
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Legend texts for each data set.
|
|
93
|
+
* @type {Array.<string>}
|
|
94
|
+
* @private
|
|
95
|
+
*/
|
|
96
|
+
this.setLegendTexts_ = [];
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Labels on the X-axis.
|
|
100
|
+
* @type {Array.<string>}
|
|
101
|
+
* @private
|
|
102
|
+
*/
|
|
103
|
+
this.xLabels_ = [];
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Labels on the left along the Y-axis.
|
|
107
|
+
* @type {Array.<string>}
|
|
108
|
+
* @private
|
|
109
|
+
*/
|
|
110
|
+
this.leftLabels_ = [];
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Labels on the right along the Y-axis.
|
|
114
|
+
* @type {Array.<string>}
|
|
115
|
+
* @private
|
|
116
|
+
*/
|
|
117
|
+
this.rightLabels_ = [];
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Axis type for each multi-axis in the chart. The indices into this array
|
|
121
|
+
* also work as the reference index for all other multi-axis properties.
|
|
122
|
+
* @type {Array.<goog.ui.ServerChart.MultiAxisType>}
|
|
123
|
+
* @private
|
|
124
|
+
*/
|
|
125
|
+
this.multiAxisType_ = [];
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Axis text for each multi-axis in the chart, indexed by the indices from
|
|
129
|
+
* multiAxisType_ in a sparse array.
|
|
130
|
+
* @type {Object}
|
|
131
|
+
* @private
|
|
132
|
+
*/
|
|
133
|
+
this.multiAxisLabelText_ = {};
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Axis position for each multi-axis in the chart, indexed by the indices
|
|
138
|
+
* from multiAxisType_ in a sparse array.
|
|
139
|
+
* @type {Object}
|
|
140
|
+
* @private
|
|
141
|
+
*/
|
|
142
|
+
this.multiAxisLabelPosition_ = {};
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Axis range for each multi-axis in the chart, indexed by the indices from
|
|
146
|
+
* multiAxisType_ in a sparse array.
|
|
147
|
+
* @type {Object}
|
|
148
|
+
* @private
|
|
149
|
+
*/
|
|
150
|
+
this.multiAxisRange_ = {};
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* Axis style for each multi-axis in the chart, indexed by the indices from
|
|
154
|
+
* multiAxisType_ in a sparse array.
|
|
155
|
+
* @type {Object}
|
|
156
|
+
* @private
|
|
157
|
+
*/
|
|
158
|
+
this.multiAxisLabelStyle_ = {};
|
|
159
|
+
|
|
160
|
+
this.setType(type);
|
|
161
|
+
this.setSize(opt_width, opt_height);
|
|
162
|
+
|
|
163
|
+
/**
|
|
164
|
+
* Minimum value for the chart (used for normalization). By default,
|
|
165
|
+
* this is set to infinity, and is eventually updated to the lowest given
|
|
166
|
+
* value in the data. The minimum value is then subtracted from all other
|
|
167
|
+
* values. For a pie chart, subtracting the minimum value does not make
|
|
168
|
+
* sense, so minValue_ is set to zero because 0 is the additive identity.
|
|
169
|
+
* @type {number}
|
|
170
|
+
* @private
|
|
171
|
+
*/
|
|
172
|
+
this.minValue_ = this.isPieChart() ? 0 : Infinity;
|
|
173
|
+
};
|
|
174
|
+
goog.inherits(goog.ui.ServerChart, goog.ui.Component);
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Base URI for the chart renderer.
|
|
179
|
+
* @type {string}
|
|
180
|
+
*/
|
|
181
|
+
goog.ui.ServerChart.CHART_SERVER_URI = 'http://chart.apis.google.com/chart';
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Base HTTPS URI for the chart renderer.
|
|
186
|
+
* @type {string}
|
|
187
|
+
*/
|
|
188
|
+
goog.ui.ServerChart.CHART_SERVER_HTTPS_URI = 'https://www.google.com/chart';
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* The 0 - 1.0 ("fraction of the range") value to use when getMinValue() ==
|
|
193
|
+
* getMaxValue(). This determines, for example, the vertical position
|
|
194
|
+
* of the line in a flat line-chart.
|
|
195
|
+
* @type {number}
|
|
196
|
+
*/
|
|
197
|
+
goog.ui.ServerChart.DEFAULT_NORMALIZATION = 0.5;
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
/**
|
|
201
|
+
* The upper limit on the length of the chart image URI, after encoding.
|
|
202
|
+
* If the URI's length equals or exceeds it, goog.ui.ServerChart.UriTooLongEvent
|
|
203
|
+
* is dispatched on the goog.ui.ServerChart object.
|
|
204
|
+
* @type {number}
|
|
205
|
+
* @private
|
|
206
|
+
*/
|
|
207
|
+
goog.ui.ServerChart.prototype.uriLengthLimit_ = 2048;
|
|
208
|
+
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* Number of gridlines along the X-axis.
|
|
212
|
+
* @type {number}
|
|
213
|
+
* @private
|
|
214
|
+
*/
|
|
215
|
+
goog.ui.ServerChart.prototype.gridX_ = 0;
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
/**
|
|
219
|
+
* Number of gridlines along the Y-axis.
|
|
220
|
+
* @type {number}
|
|
221
|
+
* @private
|
|
222
|
+
*/
|
|
223
|
+
goog.ui.ServerChart.prototype.gridY_ = 0;
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
/**
|
|
227
|
+
* Maximum value for the chart (used for normalization). The minimum is
|
|
228
|
+
* declared in the constructor.
|
|
229
|
+
* @type {number}
|
|
230
|
+
* @private
|
|
231
|
+
*/
|
|
232
|
+
goog.ui.ServerChart.prototype.maxValue_ = -Infinity;
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Chart title.
|
|
237
|
+
* @type {?string}
|
|
238
|
+
* @private
|
|
239
|
+
*/
|
|
240
|
+
goog.ui.ServerChart.prototype.title_ = null;
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
/**
|
|
244
|
+
* Chart title size.
|
|
245
|
+
* @type {number}
|
|
246
|
+
* @private
|
|
247
|
+
*/
|
|
248
|
+
goog.ui.ServerChart.prototype.titleSize_ = 13.5;
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
/**
|
|
252
|
+
* Chart title color.
|
|
253
|
+
* @type {string}
|
|
254
|
+
* @private
|
|
255
|
+
*/
|
|
256
|
+
goog.ui.ServerChart.prototype.titleColor_ = '333333';
|
|
257
|
+
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Chart legend.
|
|
261
|
+
* @type {Array.<string>?}
|
|
262
|
+
* @private
|
|
263
|
+
*/
|
|
264
|
+
goog.ui.ServerChart.prototype.legend_ = null;
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* ChartServer supports using data sets to position markers. A data set
|
|
269
|
+
* that is being used for positioning only can be made "invisible", in other
|
|
270
|
+
* words, the caller can indicate to ChartServer that ordinary chart elements
|
|
271
|
+
* (e.g. bars in a bar chart) should not be drawn on the data points of the
|
|
272
|
+
* invisible data set. Such data sets must be provided at the end of the
|
|
273
|
+
* chd parameter, and if invisible data sets are being used, the chd
|
|
274
|
+
* parameter must indicate the number of visible data sets.
|
|
275
|
+
* @type {?number}
|
|
276
|
+
* @private
|
|
277
|
+
*/
|
|
278
|
+
goog.ui.ServerChart.prototype.numVisibleDataSets_ = null;
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Creates the DOM node (image) needed for the Chart
|
|
283
|
+
*/
|
|
284
|
+
goog.ui.ServerChart.prototype.createDom = function() {
|
|
285
|
+
var size = this.getSize();
|
|
286
|
+
this.setElementInternal(this.getDomHelper().createDom(
|
|
287
|
+
'img', {'src': this.getUri(),
|
|
288
|
+
'class': goog.getCssName('goog-serverchart-image'),
|
|
289
|
+
'width': size[0], 'height': size[1]}));
|
|
290
|
+
};
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
/**
|
|
294
|
+
* Decorate an image already in the DOM.
|
|
295
|
+
* Expects the following structure:
|
|
296
|
+
* <pre>
|
|
297
|
+
* - img
|
|
298
|
+
* </pre>
|
|
299
|
+
*
|
|
300
|
+
* @param {Element} img Image to decorate.
|
|
301
|
+
*/
|
|
302
|
+
goog.ui.ServerChart.prototype.decorateInternal = function(img) {
|
|
303
|
+
img.src = this.getUri();
|
|
304
|
+
this.setElementInternal(img);
|
|
305
|
+
};
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* Updates the image if any of the data or settings have changed.
|
|
310
|
+
*/
|
|
311
|
+
goog.ui.ServerChart.prototype.updateChart = function() {
|
|
312
|
+
if (this.getElement()) {
|
|
313
|
+
this.getElement().src = this.getUri();
|
|
314
|
+
}
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
/**
|
|
319
|
+
* Sets the URI of the chart.
|
|
320
|
+
*
|
|
321
|
+
* @param {goog.Uri} uri The chart URI.
|
|
322
|
+
*/
|
|
323
|
+
goog.ui.ServerChart.prototype.setUri = function(uri) {
|
|
324
|
+
this.uri_ = uri;
|
|
325
|
+
};
|
|
326
|
+
|
|
327
|
+
|
|
328
|
+
/**
|
|
329
|
+
* Returns the URI of the chart.
|
|
330
|
+
*
|
|
331
|
+
* @return {goog.Uri} The chart URI.
|
|
332
|
+
*/
|
|
333
|
+
goog.ui.ServerChart.prototype.getUri = function() {
|
|
334
|
+
this.computeDataString_();
|
|
335
|
+
return this.uri_;
|
|
336
|
+
};
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Returns the upper limit on the length of the chart image URI, after encoding.
|
|
341
|
+
* If the URI's length equals or exceeds it, goog.ui.ServerChart.UriTooLongEvent
|
|
342
|
+
* is dispatched on the goog.ui.ServerChart object.
|
|
343
|
+
*
|
|
344
|
+
* @return {number} The chart URI length limit.
|
|
345
|
+
*/
|
|
346
|
+
goog.ui.ServerChart.prototype.getUriLengthLimit = function() {
|
|
347
|
+
return this.uriLengthLimit_;
|
|
348
|
+
};
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Sets the upper limit on the length of the chart image URI, after encoding.
|
|
353
|
+
* If the URI's length equals or exceeds it, goog.ui.ServerChart.UriTooLongEvent
|
|
354
|
+
* is dispatched on the goog.ui.ServerChart object.
|
|
355
|
+
*
|
|
356
|
+
* @param {number} uriLengthLimit The chart URI length limit.
|
|
357
|
+
*/
|
|
358
|
+
goog.ui.ServerChart.prototype.setUriLengthLimit = function(uriLengthLimit) {
|
|
359
|
+
this.uriLengthLimit_ = uriLengthLimit;
|
|
360
|
+
};
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* Sets the 'chg' parameter of the chart Uri.
|
|
365
|
+
* This is used by various types of charts to specify Grids.
|
|
366
|
+
*
|
|
367
|
+
* @param {string} value Value for the 'chg' parameter in the chart Uri.
|
|
368
|
+
*/
|
|
369
|
+
goog.ui.ServerChart.prototype.setGridParameter = function(value) {
|
|
370
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.GRID, value);
|
|
371
|
+
};
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Returns the 'chg' parameter of the chart Uri.
|
|
376
|
+
* This is used by various types of charts to specify Grids.
|
|
377
|
+
*
|
|
378
|
+
* @return {string|undefined} The 'chg' parameter of the chart Uri.
|
|
379
|
+
*/
|
|
380
|
+
goog.ui.ServerChart.prototype.getGridParameter = function() {
|
|
381
|
+
return /** @type {string} */ (
|
|
382
|
+
this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.GRID));
|
|
383
|
+
};
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
/**
|
|
387
|
+
* Sets the 'chm' parameter of the chart Uri.
|
|
388
|
+
* This is used by various types of charts to specify Markers.
|
|
389
|
+
*
|
|
390
|
+
* @param {string} value Value for the 'chm' parameter in the chart Uri.
|
|
391
|
+
*/
|
|
392
|
+
goog.ui.ServerChart.prototype.setMarkerParameter = function(value) {
|
|
393
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.MARKERS, value);
|
|
394
|
+
};
|
|
395
|
+
|
|
396
|
+
|
|
397
|
+
/**
|
|
398
|
+
* Returns the 'chm' parameter of the chart Uri.
|
|
399
|
+
* This is used by various types of charts to specify Markers.
|
|
400
|
+
*
|
|
401
|
+
* @return {string|undefined} The 'chm' parameter of the chart Uri.
|
|
402
|
+
*/
|
|
403
|
+
goog.ui.ServerChart.prototype.getMarkerParameter = function() {
|
|
404
|
+
return /** @type {string} */ (
|
|
405
|
+
this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.MARKERS));
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
|
|
409
|
+
/**
|
|
410
|
+
* Sets the 'chp' parameter of the chart Uri.
|
|
411
|
+
* This is used by various types of charts to specify certain options.
|
|
412
|
+
* e.g., finance charts use this to designate which line is the 0 axis.
|
|
413
|
+
*
|
|
414
|
+
* @param {string|number} value Value for the 'chp' parameter in the chart Uri.
|
|
415
|
+
*/
|
|
416
|
+
goog.ui.ServerChart.prototype.setMiscParameter = function(value) {
|
|
417
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.MISC_PARAMS,
|
|
418
|
+
String(value));
|
|
419
|
+
};
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
/**
|
|
423
|
+
* Returns the 'chp' parameter of the chart Uri.
|
|
424
|
+
* This is used by various types of charts to specify certain options.
|
|
425
|
+
* e.g., finance charts use this to designate which line is the 0 axis.
|
|
426
|
+
*
|
|
427
|
+
* @return {string|undefined} The 'chp' parameter of the chart Uri.
|
|
428
|
+
*/
|
|
429
|
+
goog.ui.ServerChart.prototype.getMiscParameter = function() {
|
|
430
|
+
return /** @type {string} */ (
|
|
431
|
+
this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.MISC_PARAMS));
|
|
432
|
+
};
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
/**
|
|
436
|
+
* Enum of chart data encoding types
|
|
437
|
+
*
|
|
438
|
+
* @enum {string}
|
|
439
|
+
*/
|
|
440
|
+
goog.ui.ServerChart.EncodingType = {
|
|
441
|
+
AUTOMATIC: '',
|
|
442
|
+
EXTENDED: 'e',
|
|
443
|
+
SIMPLE: 's',
|
|
444
|
+
TEXT: 't'
|
|
445
|
+
};
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
/**
|
|
449
|
+
* Enum of chart types with their short names used by the chartserver.
|
|
450
|
+
*
|
|
451
|
+
* @enum {string}
|
|
452
|
+
*/
|
|
453
|
+
goog.ui.ServerChart.ChartType = {
|
|
454
|
+
BAR: 'br',
|
|
455
|
+
CLOCK: 'cf',
|
|
456
|
+
CONCENTRIC_PIE: 'pc',
|
|
457
|
+
FILLEDLINE: 'lr',
|
|
458
|
+
FINANCE: 'lfi',
|
|
459
|
+
GOOGLEOMETER: 'gom',
|
|
460
|
+
HORIZONTAL_GROUPED_BAR: 'bhg',
|
|
461
|
+
HORIZONTAL_STACKED_BAR: 'bhs',
|
|
462
|
+
LINE: 'lc',
|
|
463
|
+
MAP: 't',
|
|
464
|
+
MAPUSA: 'tuss',
|
|
465
|
+
MAPWORLD: 'twoc',
|
|
466
|
+
PIE: 'p',
|
|
467
|
+
PIE3D: 'p3',
|
|
468
|
+
RADAR: 'rs',
|
|
469
|
+
SCATTER: 's',
|
|
470
|
+
SPARKLINE: 'ls',
|
|
471
|
+
VENN: 'v',
|
|
472
|
+
VERTICAL_GROUPED_BAR: 'bvg',
|
|
473
|
+
VERTICAL_STACKED_BAR: 'bvs',
|
|
474
|
+
XYLINE: 'lxy'
|
|
475
|
+
};
|
|
476
|
+
|
|
477
|
+
|
|
478
|
+
/**
|
|
479
|
+
* Enum of multi-axis types.
|
|
480
|
+
*
|
|
481
|
+
* @enum {string}
|
|
482
|
+
*/
|
|
483
|
+
goog.ui.ServerChart.MultiAxisType = {
|
|
484
|
+
X_AXIS: 'x',
|
|
485
|
+
LEFT_Y_AXIS: 'y',
|
|
486
|
+
RIGHT_Y_AXIS: 'r',
|
|
487
|
+
TOP_AXIS: 't'
|
|
488
|
+
};
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
/**
|
|
492
|
+
* Enum of multi-axis alignments.
|
|
493
|
+
*
|
|
494
|
+
* @enum {number}
|
|
495
|
+
*/
|
|
496
|
+
goog.ui.ServerChart.MultiAxisAlignment = {
|
|
497
|
+
ALIGN_LEFT: -1,
|
|
498
|
+
ALIGN_CENTER: 0,
|
|
499
|
+
ALIGN_RIGHT: 1
|
|
500
|
+
};
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Enum of legend positions.
|
|
505
|
+
*
|
|
506
|
+
* @enum {string}
|
|
507
|
+
*/
|
|
508
|
+
goog.ui.ServerChart.LegendPosition = {
|
|
509
|
+
TOP: 't',
|
|
510
|
+
BOTTOM: 'b',
|
|
511
|
+
LEFT: 'l',
|
|
512
|
+
RIGHT: 'r'
|
|
513
|
+
};
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
/**
|
|
517
|
+
* Enum of line and tick options for an axis.
|
|
518
|
+
*
|
|
519
|
+
* @enum {string}
|
|
520
|
+
*/
|
|
521
|
+
goog.ui.ServerChart.AxisDisplayType = {
|
|
522
|
+
LINE_AND_TICKS: 'lt',
|
|
523
|
+
LINE: 'l',
|
|
524
|
+
TICKS: 't'
|
|
525
|
+
};
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
/**
|
|
529
|
+
* Enum of chart maximum values in pixels, as listed at:
|
|
530
|
+
* http://code.google.com/apis/chart/basics.html
|
|
531
|
+
*
|
|
532
|
+
* @enum {number}
|
|
533
|
+
*/
|
|
534
|
+
goog.ui.ServerChart.MaximumValue = {
|
|
535
|
+
WIDTH: 1000,
|
|
536
|
+
HEIGHT: 1000,
|
|
537
|
+
MAP_WIDTH: 440,
|
|
538
|
+
MAP_HEIGHT: 220,
|
|
539
|
+
TOTAL_AREA: 300000
|
|
540
|
+
};
|
|
541
|
+
|
|
542
|
+
|
|
543
|
+
/**
|
|
544
|
+
* Enum of ChartServer URI parameters.
|
|
545
|
+
*
|
|
546
|
+
* @enum {string}
|
|
547
|
+
*/
|
|
548
|
+
goog.ui.ServerChart.UriParam = {
|
|
549
|
+
TYPE: 'cht',
|
|
550
|
+
SIZE: 'chs',
|
|
551
|
+
DATA: 'chd',
|
|
552
|
+
X_LABELS: 'chl',
|
|
553
|
+
LEFT_Y_LABELS: 'chly',
|
|
554
|
+
DATA_LABELS: 'chld',
|
|
555
|
+
RIGHT_LABELS: 'chlr',
|
|
556
|
+
RIGHT_LABEL_POSITIONS: 'chlrp',
|
|
557
|
+
MISC_PARAMS: 'chp',
|
|
558
|
+
DATA_COLORS: 'chco',
|
|
559
|
+
DATA_SCALING: 'chds',
|
|
560
|
+
LEGEND_TEXTS: 'chdl',
|
|
561
|
+
LEGEND_POSITION: 'chdlp',
|
|
562
|
+
LABEL_COLORS: 'chlc',
|
|
563
|
+
BAR_HEIGHT: 'chbh',
|
|
564
|
+
LINE_STYLES: 'chls',
|
|
565
|
+
GRID: 'chg',
|
|
566
|
+
X_AXIS_STYLE: 'chx',
|
|
567
|
+
MARKERS: 'chm',
|
|
568
|
+
BACKGROUND_FILL: 'chf',
|
|
569
|
+
DIGITAL_SIGNATURE: 'sig',
|
|
570
|
+
TITLE: 'chtt',
|
|
571
|
+
TITLE_FORMAT: 'chts',
|
|
572
|
+
LEGEND: 'chdl',
|
|
573
|
+
MULTI_AXIS_TYPES: 'chxt',
|
|
574
|
+
MULTI_AXIS_LABEL_TEXT: 'chxl',
|
|
575
|
+
MULTI_AXIS_LABEL_POSITION: 'chxp',
|
|
576
|
+
MULTI_AXIS_RANGE: 'chxr',
|
|
577
|
+
MULTI_AXIS_STYLE: 'chxs',
|
|
578
|
+
GEOGRAPHICAL_REGION: 'chtm'
|
|
579
|
+
};
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
/**
|
|
583
|
+
* Sets the background fill.
|
|
584
|
+
*
|
|
585
|
+
* @param {Array.<Object>} fill An array of background fill specification
|
|
586
|
+
* objects. Each object may have the following properties:
|
|
587
|
+
* {string} area The area to fill, either 'bg' for background or 'c' for
|
|
588
|
+
* chart area. The default is 'bg'.
|
|
589
|
+
* {string} color (required) The color of the background fill.
|
|
590
|
+
* // TODO(user): Add support for gradient/stripes, which requires
|
|
591
|
+
* // a different object structure.
|
|
592
|
+
*/
|
|
593
|
+
goog.ui.ServerChart.prototype.setBackgroundFill = function(fill) {
|
|
594
|
+
var value = [];
|
|
595
|
+
goog.array.forEach(fill, function(spec) {
|
|
596
|
+
spec.area = spec.area || 'bg';
|
|
597
|
+
spec.effect = spec.effect || 's';
|
|
598
|
+
value.push([spec.area, spec.effect, spec.color].join(','));
|
|
599
|
+
});
|
|
600
|
+
value = value.join('|');
|
|
601
|
+
this.setParameterValue(goog.ui.ServerChart.UriParam.BACKGROUND_FILL, value);
|
|
602
|
+
};
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
/**
|
|
606
|
+
* Returns the background fill.
|
|
607
|
+
*
|
|
608
|
+
* @return {Array.<Object>} An array of background fill specifications.
|
|
609
|
+
* If the fill specification string is in an unsupported format, the method
|
|
610
|
+
* returns an empty array.
|
|
611
|
+
*/
|
|
612
|
+
goog.ui.ServerChart.prototype.getBackgroundFill = function() {
|
|
613
|
+
var value =
|
|
614
|
+
this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.BACKGROUND_FILL);
|
|
615
|
+
var result = [];
|
|
616
|
+
if (goog.isDefAndNotNull(value)) {
|
|
617
|
+
var fillSpecifications = value.split('|');
|
|
618
|
+
var valid = true;
|
|
619
|
+
goog.array.forEach(fillSpecifications, function(spec) {
|
|
620
|
+
spec = spec.split(',');
|
|
621
|
+
if (valid && spec[1] == 's') {
|
|
622
|
+
result.push({area: spec[0], effect: spec[1], color: spec[2]});
|
|
623
|
+
} else {
|
|
624
|
+
// If the format is unsupported, return an empty array.
|
|
625
|
+
result = [];
|
|
626
|
+
valid = false;
|
|
627
|
+
}
|
|
628
|
+
});
|
|
629
|
+
}
|
|
630
|
+
return result;
|
|
631
|
+
};
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
/**
|
|
635
|
+
* Sets the encoding type.
|
|
636
|
+
*
|
|
637
|
+
* @param {goog.ui.ServerChart.EncodingType} type Desired data encoding type.
|
|
638
|
+
*/
|
|
639
|
+
goog.ui.ServerChart.prototype.setEncodingType = function(type) {
|
|
640
|
+
this.encodingType_ = type;
|
|
641
|
+
};
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
/**
|
|
645
|
+
* Gets the encoding type.
|
|
646
|
+
*
|
|
647
|
+
* @return {goog.ui.ServerChart.EncodingType} The encoding type.
|
|
648
|
+
*/
|
|
649
|
+
goog.ui.ServerChart.prototype.getEncodingType = function() {
|
|
650
|
+
return this.encodingType_;
|
|
651
|
+
};
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
/**
|
|
655
|
+
* Sets the chart type.
|
|
656
|
+
*
|
|
657
|
+
* @param {goog.ui.ServerChart.ChartType} type The desired chart type.
|
|
658
|
+
*/
|
|
659
|
+
goog.ui.ServerChart.prototype.setType = function(type) {
|
|
660
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.TYPE, type);
|
|
661
|
+
};
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
/**
|
|
665
|
+
* Returns the chart type.
|
|
666
|
+
*
|
|
667
|
+
* @return {goog.ui.ServerChart.ChartType} The chart type.
|
|
668
|
+
*/
|
|
669
|
+
goog.ui.ServerChart.prototype.getType = function() {
|
|
670
|
+
return /** @type {goog.ui.ServerChart.ChartType} */ (
|
|
671
|
+
this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.TYPE));
|
|
672
|
+
};
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
/**
|
|
676
|
+
* Sets the chart size.
|
|
677
|
+
*
|
|
678
|
+
* @param {number=} opt_width Optional chart width, defaults to 300.
|
|
679
|
+
* @param {number=} opt_height Optional chart height, defaults to 150.
|
|
680
|
+
*/
|
|
681
|
+
goog.ui.ServerChart.prototype.setSize = function(opt_width, opt_height) {
|
|
682
|
+
var sizeString = [opt_width || 300, opt_height || 150].join('x');
|
|
683
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.SIZE, sizeString);
|
|
684
|
+
};
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
/**
|
|
688
|
+
* Returns the chart size.
|
|
689
|
+
*
|
|
690
|
+
* @return {Array.<string>} [Width, Height].
|
|
691
|
+
*/
|
|
692
|
+
goog.ui.ServerChart.prototype.getSize = function() {
|
|
693
|
+
var sizeStr = this.uri_.getParameterValue(goog.ui.ServerChart.UriParam.SIZE);
|
|
694
|
+
return sizeStr.split('x');
|
|
695
|
+
};
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
/**
|
|
699
|
+
* Sets the minimum value of the chart.
|
|
700
|
+
*
|
|
701
|
+
* @param {number} minValue The minimum value of the chart.
|
|
702
|
+
*/
|
|
703
|
+
goog.ui.ServerChart.prototype.setMinValue = function(minValue) {
|
|
704
|
+
this.minValue_ = minValue;
|
|
705
|
+
};
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
/**
|
|
709
|
+
* @return {number} The minimum value of the chart.
|
|
710
|
+
*/
|
|
711
|
+
goog.ui.ServerChart.prototype.getMinValue = function() {
|
|
712
|
+
return this.minValue_;
|
|
713
|
+
};
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
/**
|
|
717
|
+
* Sets the maximum value of the chart.
|
|
718
|
+
*
|
|
719
|
+
* @param {number} maxValue The maximum value of the chart.
|
|
720
|
+
*/
|
|
721
|
+
goog.ui.ServerChart.prototype.setMaxValue = function(maxValue) {
|
|
722
|
+
this.maxValue_ = maxValue;
|
|
723
|
+
};
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
/**
|
|
727
|
+
* @return {number} The maximum value of the chart.
|
|
728
|
+
*/
|
|
729
|
+
goog.ui.ServerChart.prototype.getMaxValue = function() {
|
|
730
|
+
return this.maxValue_;
|
|
731
|
+
};
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
/**
|
|
735
|
+
* Sets the number of grid lines along the X-axis.
|
|
736
|
+
*
|
|
737
|
+
* @param {number} gridlines The number of X-axis grid lines.
|
|
738
|
+
*/
|
|
739
|
+
goog.ui.ServerChart.prototype.setGridX = function(gridlines) {
|
|
740
|
+
// Need data for this to work.
|
|
741
|
+
this.gridX_ = gridlines;
|
|
742
|
+
this.setGrids_(this.gridX_, this.gridY_);
|
|
743
|
+
};
|
|
744
|
+
|
|
745
|
+
|
|
746
|
+
/**
|
|
747
|
+
* @return {number} The number of gridlines along the X-axis.
|
|
748
|
+
*/
|
|
749
|
+
goog.ui.ServerChart.prototype.getGridX = function() {
|
|
750
|
+
return this.gridX_;
|
|
751
|
+
};
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
/**
|
|
755
|
+
* Sets the number of grid lines along the Y-axis.
|
|
756
|
+
*
|
|
757
|
+
* @param {number} gridlines The number of Y-axis grid lines.
|
|
758
|
+
*/
|
|
759
|
+
goog.ui.ServerChart.prototype.setGridY = function(gridlines) {
|
|
760
|
+
// Need data for this to work.
|
|
761
|
+
this.gridY_ = gridlines;
|
|
762
|
+
this.setGrids_(this.gridX_, this.gridY_);
|
|
763
|
+
};
|
|
764
|
+
|
|
765
|
+
|
|
766
|
+
/**
|
|
767
|
+
* @return {number} The number of gridlines along the Y-axis.
|
|
768
|
+
*/
|
|
769
|
+
goog.ui.ServerChart.prototype.getGridY = function() {
|
|
770
|
+
return this.gridY_;
|
|
771
|
+
};
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
/**
|
|
775
|
+
* Sets the grids for the chart
|
|
776
|
+
*
|
|
777
|
+
* @private
|
|
778
|
+
* @param {number} x The number of grid lines along the x-axis.
|
|
779
|
+
* @param {number} y The number of grid lines along the y-axis.
|
|
780
|
+
*/
|
|
781
|
+
goog.ui.ServerChart.prototype.setGrids_ = function(x, y) {
|
|
782
|
+
var gridArray = [x == 0 ? 0 : 100 / x,
|
|
783
|
+
y == 0 ? 0 : 100 / y];
|
|
784
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.GRID,
|
|
785
|
+
gridArray.join(','));
|
|
786
|
+
};
|
|
787
|
+
|
|
788
|
+
|
|
789
|
+
/**
|
|
790
|
+
* Sets the X Labels for the chart.
|
|
791
|
+
*
|
|
792
|
+
* @param {Array.<string>} labels The X Labels for the chart.
|
|
793
|
+
*/
|
|
794
|
+
goog.ui.ServerChart.prototype.setXLabels = function(labels) {
|
|
795
|
+
this.xLabels_ = labels;
|
|
796
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.X_LABELS,
|
|
797
|
+
this.xLabels_.join('|'));
|
|
798
|
+
};
|
|
799
|
+
|
|
800
|
+
|
|
801
|
+
/**
|
|
802
|
+
* @return {Array.<string>} The X Labels for the chart.
|
|
803
|
+
*/
|
|
804
|
+
goog.ui.ServerChart.prototype.getXLabels = function() {
|
|
805
|
+
return this.xLabels_;
|
|
806
|
+
};
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
/**
|
|
810
|
+
* @return {boolean} Whether the chart is a bar chart.
|
|
811
|
+
*/
|
|
812
|
+
goog.ui.ServerChart.prototype.isBarChart = function() {
|
|
813
|
+
var type = this.getType();
|
|
814
|
+
return type == goog.ui.ServerChart.ChartType.BAR ||
|
|
815
|
+
type == goog.ui.ServerChart.ChartType.HORIZONTAL_GROUPED_BAR ||
|
|
816
|
+
type == goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR ||
|
|
817
|
+
type == goog.ui.ServerChart.ChartType.VERTICAL_GROUPED_BAR ||
|
|
818
|
+
type == goog.ui.ServerChart.ChartType.VERTICAL_STACKED_BAR;
|
|
819
|
+
};
|
|
820
|
+
|
|
821
|
+
|
|
822
|
+
/**
|
|
823
|
+
* @return {boolean} Whether the chart is a pie chart.
|
|
824
|
+
*/
|
|
825
|
+
goog.ui.ServerChart.prototype.isPieChart = function() {
|
|
826
|
+
var type = this.getType();
|
|
827
|
+
return type == goog.ui.ServerChart.ChartType.PIE ||
|
|
828
|
+
type == goog.ui.ServerChart.ChartType.PIE3D ||
|
|
829
|
+
type == goog.ui.ServerChart.ChartType.CONCENTRIC_PIE;
|
|
830
|
+
};
|
|
831
|
+
|
|
832
|
+
|
|
833
|
+
/**
|
|
834
|
+
* @return {boolean} Whether the chart is a grouped bar chart.
|
|
835
|
+
*/
|
|
836
|
+
goog.ui.ServerChart.prototype.isGroupedBarChart = function() {
|
|
837
|
+
var type = this.getType();
|
|
838
|
+
return type == goog.ui.ServerChart.ChartType.HORIZONTAL_GROUPED_BAR ||
|
|
839
|
+
type == goog.ui.ServerChart.ChartType.VERTICAL_GROUPED_BAR;
|
|
840
|
+
};
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
/**
|
|
844
|
+
* @return {boolean} Whether the chart is a horizontal bar chart.
|
|
845
|
+
*/
|
|
846
|
+
goog.ui.ServerChart.prototype.isHorizontalBarChart = function() {
|
|
847
|
+
var type = this.getType();
|
|
848
|
+
return type == goog.ui.ServerChart.ChartType.BAR ||
|
|
849
|
+
type == goog.ui.ServerChart.ChartType.HORIZONTAL_GROUPED_BAR ||
|
|
850
|
+
type == goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR;
|
|
851
|
+
};
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
/**
|
|
855
|
+
* @return {boolean} Whether the chart is a line chart.
|
|
856
|
+
*/
|
|
857
|
+
goog.ui.ServerChart.prototype.isLineChart = function() {
|
|
858
|
+
var type = this.getType();
|
|
859
|
+
return type == goog.ui.ServerChart.ChartType.FILLEDLINE ||
|
|
860
|
+
type == goog.ui.ServerChart.ChartType.LINE ||
|
|
861
|
+
type == goog.ui.ServerChart.ChartType.SPARKLINE ||
|
|
862
|
+
type == goog.ui.ServerChart.ChartType.XYLINE;
|
|
863
|
+
};
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
/**
|
|
867
|
+
* @return {boolean} Whether the chart is a map.
|
|
868
|
+
*/
|
|
869
|
+
goog.ui.ServerChart.prototype.isMap = function() {
|
|
870
|
+
var type = this.getType();
|
|
871
|
+
return type == goog.ui.ServerChart.ChartType.MAP ||
|
|
872
|
+
type == goog.ui.ServerChart.ChartType.MAPUSA ||
|
|
873
|
+
type == goog.ui.ServerChart.ChartType.MAPWORLD;
|
|
874
|
+
};
|
|
875
|
+
|
|
876
|
+
|
|
877
|
+
/**
|
|
878
|
+
* @return {boolean} Whether the chart is a stacked bar chart.
|
|
879
|
+
*/
|
|
880
|
+
goog.ui.ServerChart.prototype.isStackedBarChart = function() {
|
|
881
|
+
var type = this.getType();
|
|
882
|
+
return type == goog.ui.ServerChart.ChartType.BAR ||
|
|
883
|
+
type == goog.ui.ServerChart.ChartType.HORIZONTAL_STACKED_BAR ||
|
|
884
|
+
type == goog.ui.ServerChart.ChartType.VERTICAL_STACKED_BAR;
|
|
885
|
+
};
|
|
886
|
+
|
|
887
|
+
|
|
888
|
+
/**
|
|
889
|
+
* @return {boolean} Whether the chart is a vertical bar chart.
|
|
890
|
+
*/
|
|
891
|
+
goog.ui.ServerChart.prototype.isVerticalBarChart = function() {
|
|
892
|
+
var type = this.getType();
|
|
893
|
+
return type == goog.ui.ServerChart.ChartType.VERTICAL_GROUPED_BAR ||
|
|
894
|
+
type == goog.ui.ServerChart.ChartType.VERTICAL_STACKED_BAR;
|
|
895
|
+
};
|
|
896
|
+
|
|
897
|
+
|
|
898
|
+
/**
|
|
899
|
+
* Sets the Left Labels for the chart.
|
|
900
|
+
* NOTE: The array should start with the lowest value, and then
|
|
901
|
+
* move progessively up the axis. So if you want labels
|
|
902
|
+
* from 0 to 100 with 0 at bottom of the graph, then you would
|
|
903
|
+
* want to pass something like [0,25,50,75,100].
|
|
904
|
+
*
|
|
905
|
+
* @param {Array.<string>} labels The Left Labels for the chart.
|
|
906
|
+
*/
|
|
907
|
+
goog.ui.ServerChart.prototype.setLeftLabels = function(labels) {
|
|
908
|
+
this.leftLabels_ = labels;
|
|
909
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.LEFT_Y_LABELS,
|
|
910
|
+
this.leftLabels_.reverse().join('|'));
|
|
911
|
+
};
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
/**
|
|
915
|
+
* @return {Array.<string>} The Left Labels for the chart.
|
|
916
|
+
*/
|
|
917
|
+
goog.ui.ServerChart.prototype.getLeftLabels = function() {
|
|
918
|
+
return this.leftLabels_;
|
|
919
|
+
};
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
/**
|
|
923
|
+
* Sets the given ChartServer parameter.
|
|
924
|
+
*
|
|
925
|
+
* @param {goog.ui.ServerChart.UriParam} key The ChartServer parameter to set.
|
|
926
|
+
* @param {string} value The value to set for the ChartServer parameter.
|
|
927
|
+
*/
|
|
928
|
+
goog.ui.ServerChart.prototype.setParameterValue = function(key, value) {
|
|
929
|
+
this.uri_.setParameterValue(key, value);
|
|
930
|
+
};
|
|
931
|
+
|
|
932
|
+
|
|
933
|
+
/**
|
|
934
|
+
* Removes the given ChartServer parameter.
|
|
935
|
+
*
|
|
936
|
+
* @param {goog.ui.ServerChart.UriParam} key The ChartServer parameter to
|
|
937
|
+
* remove.
|
|
938
|
+
*/
|
|
939
|
+
goog.ui.ServerChart.prototype.removeParameter = function(key) {
|
|
940
|
+
this.uri_.removeParameter(key);
|
|
941
|
+
};
|
|
942
|
+
|
|
943
|
+
|
|
944
|
+
/**
|
|
945
|
+
* Sets the Right Labels for the chart.
|
|
946
|
+
* NOTE: The array should start with the lowest value, and then
|
|
947
|
+
* move progessively up the axis. So if you want labels
|
|
948
|
+
* from 0 to 100 with 0 at bottom of the graph, then you would
|
|
949
|
+
* want to pass something like [0,25,50,75,100].
|
|
950
|
+
*
|
|
951
|
+
* @param {Array.<string>} labels The Right Labels for the chart.
|
|
952
|
+
*/
|
|
953
|
+
goog.ui.ServerChart.prototype.setRightLabels = function(labels) {
|
|
954
|
+
this.rightLabels_ = labels;
|
|
955
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.RIGHT_LABELS,
|
|
956
|
+
this.rightLabels_.reverse().join('|'));
|
|
957
|
+
};
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
/**
|
|
961
|
+
* @return {Array.<string>} The Right Labels for the chart.
|
|
962
|
+
*/
|
|
963
|
+
goog.ui.ServerChart.prototype.getRightLabels = function() {
|
|
964
|
+
return this.rightLabels_;
|
|
965
|
+
};
|
|
966
|
+
|
|
967
|
+
|
|
968
|
+
/**
|
|
969
|
+
* Sets the position relative to the chart where the legend is to be displayed.
|
|
970
|
+
*
|
|
971
|
+
* @param {goog.ui.ServerChart.LegendPosition} value Legend position.
|
|
972
|
+
*/
|
|
973
|
+
goog.ui.ServerChart.prototype.setLegendPosition = function(value) {
|
|
974
|
+
this.uri_.setParameterValue(
|
|
975
|
+
goog.ui.ServerChart.UriParam.LEGEND_POSITION, value);
|
|
976
|
+
};
|
|
977
|
+
|
|
978
|
+
|
|
979
|
+
/**
|
|
980
|
+
* Returns the position relative to the chart where the legend is to be
|
|
981
|
+
* displayed.
|
|
982
|
+
*
|
|
983
|
+
* @return {goog.ui.ServerChart.LegendPosition} Legend position.
|
|
984
|
+
*/
|
|
985
|
+
goog.ui.ServerChart.prototype.getLegendPosition = function() {
|
|
986
|
+
return /** @type {goog.ui.ServerChart.LegendPosition} */ (
|
|
987
|
+
this.uri_.getParameterValue(
|
|
988
|
+
goog.ui.ServerChart.UriParam.LEGEND_POSITION));
|
|
989
|
+
};
|
|
990
|
+
|
|
991
|
+
|
|
992
|
+
/**
|
|
993
|
+
* Sets the number of "visible" data sets. All data sets that come after
|
|
994
|
+
* the visible data set are not drawn as part of the chart. Instead, they
|
|
995
|
+
* are available for positioning markers.
|
|
996
|
+
|
|
997
|
+
* @param {?number} n The number of visible data sets, or null if all data
|
|
998
|
+
* sets are to be visible.
|
|
999
|
+
*/
|
|
1000
|
+
goog.ui.ServerChart.prototype.setNumVisibleDataSets = function(n) {
|
|
1001
|
+
this.numVisibleDataSets_ = n;
|
|
1002
|
+
};
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
/**
|
|
1006
|
+
* Returns the number of "visible" data sets. All data sets that come after
|
|
1007
|
+
* the visible data set are not drawn as part of the chart. Instead, they
|
|
1008
|
+
* are available for positioning markers.
|
|
1009
|
+
*
|
|
1010
|
+
* @return {?number} The number of visible data sets, or null if all data
|
|
1011
|
+
* sets are visible.
|
|
1012
|
+
*/
|
|
1013
|
+
goog.ui.ServerChart.prototype.getNumVisibleDataSets = function() {
|
|
1014
|
+
return this.numVisibleDataSets_;
|
|
1015
|
+
};
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
/**
|
|
1019
|
+
* Sets the weight function for a Venn Diagram along with the associated
|
|
1020
|
+
* colors and legend text. Weights are assigned as follows:
|
|
1021
|
+
* weights[0] is relative area of circle A.
|
|
1022
|
+
* weights[1] is relative area of circle B.
|
|
1023
|
+
* weights[2] is relative area of circle C.
|
|
1024
|
+
* weights[3] is relative area of overlap of circles A and B.
|
|
1025
|
+
* weights[4] is relative area of overlap of circles A and C.
|
|
1026
|
+
* weights[5] is relative area of overlap of circles B and C.
|
|
1027
|
+
* weights[6] is relative area of overlap of circles A, B and C.
|
|
1028
|
+
* For a two circle Venn Diagram the weights are assigned as follows:
|
|
1029
|
+
* weights[0] is relative area of circle A.
|
|
1030
|
+
* weights[1] is relative area of circle B.
|
|
1031
|
+
* weights[2] is relative area of overlap of circles A and B.
|
|
1032
|
+
*
|
|
1033
|
+
* @param {Array.<number>} weights The relative weights of the circles.
|
|
1034
|
+
* @param {Array.<string>=} opt_legendText The legend labels for the circles.
|
|
1035
|
+
* @param {Array.<string>=} opt_colors The colors for the circles.
|
|
1036
|
+
*/
|
|
1037
|
+
goog.ui.ServerChart.prototype.setVennSeries = function(
|
|
1038
|
+
weights, opt_legendText, opt_colors) {
|
|
1039
|
+
if (this.getType() != goog.ui.ServerChart.ChartType.VENN) {
|
|
1040
|
+
throw Error('Can only set a weight function for a Venn diagram.');
|
|
1041
|
+
}
|
|
1042
|
+
var dataMin = this.arrayMin_(weights);
|
|
1043
|
+
if (dataMin < this.minValue_) {
|
|
1044
|
+
this.minValue_ = dataMin;
|
|
1045
|
+
}
|
|
1046
|
+
var dataMax = this.arrayMax_(weights);
|
|
1047
|
+
if (dataMax > this.maxValue_) {
|
|
1048
|
+
this.maxValue_ = dataMax;
|
|
1049
|
+
}
|
|
1050
|
+
if (goog.isDef(opt_legendText)) {
|
|
1051
|
+
goog.array.forEach(
|
|
1052
|
+
opt_legendText,
|
|
1053
|
+
goog.bind(function(legend) {
|
|
1054
|
+
this.setLegendTexts_.push(legend);
|
|
1055
|
+
}, this));
|
|
1056
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.LEGEND_TEXTS,
|
|
1057
|
+
this.setLegendTexts_.join('|'));
|
|
1058
|
+
}
|
|
1059
|
+
// If the caller only gave three weights, then they wanted a two circle
|
|
1060
|
+
// Venn Diagram. Create a 3 circle weight function where circle C has
|
|
1061
|
+
// area zero.
|
|
1062
|
+
if (weights.length == 3) {
|
|
1063
|
+
weights[3] = weights[2];
|
|
1064
|
+
weights[2] = 0.0;
|
|
1065
|
+
}
|
|
1066
|
+
this.dataSets_.push(weights);
|
|
1067
|
+
if (goog.isDef(opt_colors)) {
|
|
1068
|
+
goog.array.forEach(opt_colors, goog.bind(function(color) {
|
|
1069
|
+
this.setColors_.push(color);
|
|
1070
|
+
}, this));
|
|
1071
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.DATA_COLORS,
|
|
1072
|
+
this.setColors_.join(','));
|
|
1073
|
+
}
|
|
1074
|
+
};
|
|
1075
|
+
|
|
1076
|
+
|
|
1077
|
+
/**
|
|
1078
|
+
* Sets the title of the chart.
|
|
1079
|
+
*
|
|
1080
|
+
* @param {string} title The chart title.
|
|
1081
|
+
*/
|
|
1082
|
+
goog.ui.ServerChart.prototype.setTitle = function(title) {
|
|
1083
|
+
this.title_ = title;
|
|
1084
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.TITLE,
|
|
1085
|
+
this.title_.replace(/\n/g, '|'));
|
|
1086
|
+
};
|
|
1087
|
+
|
|
1088
|
+
|
|
1089
|
+
/**
|
|
1090
|
+
* Sets the size of the chart title.
|
|
1091
|
+
*
|
|
1092
|
+
* @param {number} size The title size, in points.
|
|
1093
|
+
*/
|
|
1094
|
+
goog.ui.ServerChart.prototype.setTitleSize = function(size) {
|
|
1095
|
+
this.titleSize_ = size;
|
|
1096
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.TITLE_FORMAT,
|
|
1097
|
+
this.titleColor_ + ',' + this.titleSize_);
|
|
1098
|
+
};
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
/**
|
|
1102
|
+
* @return {number} size The title size, in points.
|
|
1103
|
+
*/
|
|
1104
|
+
goog.ui.ServerChart.prototype.getTitleSize = function() {
|
|
1105
|
+
return this.titleSize_;
|
|
1106
|
+
};
|
|
1107
|
+
|
|
1108
|
+
|
|
1109
|
+
/**
|
|
1110
|
+
* Sets the color of the chart title.
|
|
1111
|
+
*
|
|
1112
|
+
* NOTE: The color string should NOT have a '#' at the beginning of it.
|
|
1113
|
+
*
|
|
1114
|
+
* @param {string} color The hex value for the title color.
|
|
1115
|
+
*/
|
|
1116
|
+
goog.ui.ServerChart.prototype.setTitleColor = function(color) {
|
|
1117
|
+
this.titleColor_ = color;
|
|
1118
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.TITLE_FORMAT,
|
|
1119
|
+
this.titleColor_ + ',' + this.titleSize_);
|
|
1120
|
+
};
|
|
1121
|
+
|
|
1122
|
+
|
|
1123
|
+
/**
|
|
1124
|
+
* @return {string} color The hex value for the title color.
|
|
1125
|
+
*/
|
|
1126
|
+
goog.ui.ServerChart.prototype.getTitleColor = function() {
|
|
1127
|
+
return this.titleColor_;
|
|
1128
|
+
};
|
|
1129
|
+
|
|
1130
|
+
|
|
1131
|
+
/**
|
|
1132
|
+
* Adds a legend to the chart.
|
|
1133
|
+
*
|
|
1134
|
+
* @param {Array.<string>} legend The legend to add.
|
|
1135
|
+
*/
|
|
1136
|
+
goog.ui.ServerChart.prototype.setLegend = function(legend) {
|
|
1137
|
+
this.legend_ = legend;
|
|
1138
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.LEGEND,
|
|
1139
|
+
this.legend_.join('|'));
|
|
1140
|
+
};
|
|
1141
|
+
|
|
1142
|
+
|
|
1143
|
+
/**
|
|
1144
|
+
* Sets the data scaling.
|
|
1145
|
+
* NOTE: This also changes the encoding type because data scaling will
|
|
1146
|
+
* only work with {@code goog.ui.ServerChart.EncodingType.TEXT}
|
|
1147
|
+
* encoding.
|
|
1148
|
+
* @param {number} minimum The lowest number to apply to the data.
|
|
1149
|
+
* @param {number} maximum The highest number to apply to the data.
|
|
1150
|
+
*/
|
|
1151
|
+
goog.ui.ServerChart.prototype.setDataScaling = function(minimum, maximum) {
|
|
1152
|
+
this.encodingType_ = goog.ui.ServerChart.EncodingType.TEXT;
|
|
1153
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.DATA_SCALING,
|
|
1154
|
+
minimum + ',' + maximum);
|
|
1155
|
+
};
|
|
1156
|
+
|
|
1157
|
+
|
|
1158
|
+
/**
|
|
1159
|
+
* Sets the widths of the bars and the spaces between the bars in a bar
|
|
1160
|
+
* chart.
|
|
1161
|
+
* NOTE: If the space between groups is specified but the space between
|
|
1162
|
+
* bars is left undefined, the space between groups will be interpreted
|
|
1163
|
+
* as the space between bars because this is the behavior exposed
|
|
1164
|
+
* in the external developers guide.
|
|
1165
|
+
* @param {number} barWidth The width of a bar in pixels.
|
|
1166
|
+
* @param {number=} opt_spaceBars The width of the space between
|
|
1167
|
+
* bars in a group in pixels.
|
|
1168
|
+
* @param {number=} opt_spaceGroups The width of the space between
|
|
1169
|
+
* groups.
|
|
1170
|
+
*/
|
|
1171
|
+
goog.ui.ServerChart.prototype.setBarSpaceWidths = function(barWidth,
|
|
1172
|
+
opt_spaceBars,
|
|
1173
|
+
opt_spaceGroups) {
|
|
1174
|
+
var widths = [barWidth];
|
|
1175
|
+
if (goog.isDef(opt_spaceBars)) {
|
|
1176
|
+
widths.push(opt_spaceBars);
|
|
1177
|
+
}
|
|
1178
|
+
if (goog.isDef(opt_spaceGroups)) {
|
|
1179
|
+
widths.push(opt_spaceGroups);
|
|
1180
|
+
}
|
|
1181
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT,
|
|
1182
|
+
widths.join(','));
|
|
1183
|
+
};
|
|
1184
|
+
|
|
1185
|
+
|
|
1186
|
+
/**
|
|
1187
|
+
* Specifies that the bar width in a bar chart should be calculated
|
|
1188
|
+
* automatically given the space available in the chart, while optionally
|
|
1189
|
+
* setting the spaces between the bars.
|
|
1190
|
+
* NOTE: If the space between groups is specified but the space between
|
|
1191
|
+
* bars is left undefined, the space between groups will be interpreted
|
|
1192
|
+
* as the space between bars because this is the behavior exposed
|
|
1193
|
+
* in the external developers guide.
|
|
1194
|
+
* @param {number=} opt_spaceBars The width of the space between
|
|
1195
|
+
* bars in a group in pixels.
|
|
1196
|
+
* @param {number=} opt_spaceGroups The width of the space between
|
|
1197
|
+
* groups.
|
|
1198
|
+
*/
|
|
1199
|
+
goog.ui.ServerChart.prototype.setAutomaticBarWidth = function(opt_spaceBars,
|
|
1200
|
+
opt_spaceGroups) {
|
|
1201
|
+
var widths = ['a'];
|
|
1202
|
+
if (goog.isDef(opt_spaceBars)) {
|
|
1203
|
+
widths.push(opt_spaceBars);
|
|
1204
|
+
}
|
|
1205
|
+
if (goog.isDef(opt_spaceGroups)) {
|
|
1206
|
+
widths.push(opt_spaceGroups);
|
|
1207
|
+
}
|
|
1208
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.BAR_HEIGHT,
|
|
1209
|
+
widths.join(','));
|
|
1210
|
+
};
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
/**
|
|
1214
|
+
* Adds a multi-axis to the chart, and sets its type. Multiple axes of the same
|
|
1215
|
+
* type can be added.
|
|
1216
|
+
*
|
|
1217
|
+
* @param {goog.ui.ServerChart.MultiAxisType} axisType The desired axis type.
|
|
1218
|
+
* @return {number} The index of the newly inserted axis, suitable for feeding
|
|
1219
|
+
* to the setMultiAxis*() functions.
|
|
1220
|
+
*/
|
|
1221
|
+
goog.ui.ServerChart.prototype.addMultiAxis = function(axisType) {
|
|
1222
|
+
this.multiAxisType_.push(axisType);
|
|
1223
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.MULTI_AXIS_TYPES,
|
|
1224
|
+
this.multiAxisType_.join(','));
|
|
1225
|
+
return this.multiAxisType_.length - 1;
|
|
1226
|
+
};
|
|
1227
|
+
|
|
1228
|
+
|
|
1229
|
+
/**
|
|
1230
|
+
* Returns the axis type for the given axis, or all of them in an array if the
|
|
1231
|
+
* axis number is not given.
|
|
1232
|
+
*
|
|
1233
|
+
* @param {number=} opt_axisNumber The axis index, as returned by addMultiAxis.
|
|
1234
|
+
* @return {goog.ui.ServerChart.MultiAxisType|
|
|
1235
|
+
* Array.<goog.ui.ServerChart.MultiAxisType>}
|
|
1236
|
+
* The axis type for the given axis, or all of them in an array if the
|
|
1237
|
+
* axis number is not given.
|
|
1238
|
+
*/
|
|
1239
|
+
goog.ui.ServerChart.prototype.getMultiAxisType = function(opt_axisNumber) {
|
|
1240
|
+
if (goog.isDef(opt_axisNumber)) {
|
|
1241
|
+
return this.multiAxisType_[opt_axisNumber];
|
|
1242
|
+
}
|
|
1243
|
+
return this.multiAxisType_;
|
|
1244
|
+
};
|
|
1245
|
+
|
|
1246
|
+
|
|
1247
|
+
/**
|
|
1248
|
+
* Sets the label text (usually multiple values) for a given axis, overwriting
|
|
1249
|
+
* any existing values.
|
|
1250
|
+
*
|
|
1251
|
+
* @param {number} axisNumber The axis index, as returned by addMultiAxis.
|
|
1252
|
+
* @param {Array.<string>} labelText The actual label text to be added.
|
|
1253
|
+
*/
|
|
1254
|
+
goog.ui.ServerChart.prototype.setMultiAxisLabelText = function(axisNumber,
|
|
1255
|
+
labelText) {
|
|
1256
|
+
this.multiAxisLabelText_[axisNumber] = labelText;
|
|
1257
|
+
|
|
1258
|
+
var axisString = this.computeMultiAxisDataString_(this.multiAxisLabelText_,
|
|
1259
|
+
':|',
|
|
1260
|
+
'|',
|
|
1261
|
+
'|');
|
|
1262
|
+
this.uri_.setParameterValue(
|
|
1263
|
+
goog.ui.ServerChart.UriParam.MULTI_AXIS_LABEL_TEXT,
|
|
1264
|
+
axisString);
|
|
1265
|
+
};
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
/**
|
|
1269
|
+
* Returns the label text, or all of them in a two-dimensional array if the
|
|
1270
|
+
* axis number is not given.
|
|
1271
|
+
*
|
|
1272
|
+
* @param {number=} opt_axisNumber The axis index, as returned by addMultiAxis.
|
|
1273
|
+
* @return {Object|Array.<string>} The label text, or all of them in a
|
|
1274
|
+
* two-dimensional array if the axis number is not given.
|
|
1275
|
+
*/
|
|
1276
|
+
goog.ui.ServerChart.prototype.getMultiAxisLabelText = function(opt_axisNumber) {
|
|
1277
|
+
if (goog.isDef(opt_axisNumber)) {
|
|
1278
|
+
return this.multiAxisLabelText_[opt_axisNumber];
|
|
1279
|
+
}
|
|
1280
|
+
return this.multiAxisLabelText_;
|
|
1281
|
+
};
|
|
1282
|
+
|
|
1283
|
+
|
|
1284
|
+
/**
|
|
1285
|
+
* Sets the label positions for a given axis, overwriting any existing values.
|
|
1286
|
+
* The label positions are assumed to be floating-point numbers within the
|
|
1287
|
+
* range of the axis.
|
|
1288
|
+
*
|
|
1289
|
+
* @param {number} axisNumber The axis index, as returned by addMultiAxis.
|
|
1290
|
+
* @param {Array.<number>} labelPosition The actual label positions to be added.
|
|
1291
|
+
*/
|
|
1292
|
+
goog.ui.ServerChart.prototype.setMultiAxisLabelPosition = function(
|
|
1293
|
+
axisNumber, labelPosition) {
|
|
1294
|
+
this.multiAxisLabelPosition_[axisNumber] = labelPosition;
|
|
1295
|
+
|
|
1296
|
+
var positionString = this.computeMultiAxisDataString_(
|
|
1297
|
+
this.multiAxisLabelPosition_,
|
|
1298
|
+
',',
|
|
1299
|
+
',',
|
|
1300
|
+
'|');
|
|
1301
|
+
this.uri_.setParameterValue(
|
|
1302
|
+
goog.ui.ServerChart.UriParam.MULTI_AXIS_LABEL_POSITION,
|
|
1303
|
+
positionString);
|
|
1304
|
+
};
|
|
1305
|
+
|
|
1306
|
+
|
|
1307
|
+
/**
|
|
1308
|
+
* Returns the label positions for a given axis number, or all of them in a
|
|
1309
|
+
* two-dimensional array if the axis number is not given.
|
|
1310
|
+
*
|
|
1311
|
+
* @param {number=} opt_axisNumber The axis index, as returned by addMultiAxis.
|
|
1312
|
+
* @return {Object|Array.<number>} The label positions for a given axis number,
|
|
1313
|
+
* or all of them in a two-dimensional array if the axis number is not
|
|
1314
|
+
* given.
|
|
1315
|
+
*/
|
|
1316
|
+
goog.ui.ServerChart.prototype.getMultiAxisLabelPosition =
|
|
1317
|
+
function(opt_axisNumber) {
|
|
1318
|
+
if (goog.isDef(opt_axisNumber)) {
|
|
1319
|
+
return this.multiAxisLabelPosition_[opt_axisNumber];
|
|
1320
|
+
}
|
|
1321
|
+
return this.multiAxisLabelPosition_;
|
|
1322
|
+
};
|
|
1323
|
+
|
|
1324
|
+
|
|
1325
|
+
/**
|
|
1326
|
+
* Sets the label range for a given axis, overwriting any existing range.
|
|
1327
|
+
* The default range is from 0 to 100. If the start value is larger than the
|
|
1328
|
+
* end value, the axis direction is reversed. rangeStart and rangeEnd must
|
|
1329
|
+
* be two different finite numbers.
|
|
1330
|
+
*
|
|
1331
|
+
* @param {number} axisNumber The axis index, as returned by addMultiAxis.
|
|
1332
|
+
* @param {number} rangeStart The new start of the range.
|
|
1333
|
+
* @param {number} rangeEnd The new end of the range.
|
|
1334
|
+
* @param {number=} opt_interval The interval between axis labels.
|
|
1335
|
+
*/
|
|
1336
|
+
goog.ui.ServerChart.prototype.setMultiAxisRange = function(axisNumber,
|
|
1337
|
+
rangeStart,
|
|
1338
|
+
rangeEnd,
|
|
1339
|
+
opt_interval) {
|
|
1340
|
+
goog.asserts.assert(rangeStart != rangeEnd,
|
|
1341
|
+
'Range start and end cannot be the same value.');
|
|
1342
|
+
goog.asserts.assert(isFinite(rangeStart) && isFinite(rangeEnd),
|
|
1343
|
+
'Range start and end must be finite numbers.');
|
|
1344
|
+
this.multiAxisRange_[axisNumber] = [rangeStart, rangeEnd];
|
|
1345
|
+
if (goog.isDef(opt_interval)) {
|
|
1346
|
+
this.multiAxisRange_[axisNumber].push(opt_interval);
|
|
1347
|
+
}
|
|
1348
|
+
var rangeString = this.computeMultiAxisDataString_(this.multiAxisRange_,
|
|
1349
|
+
',', ',', '|');
|
|
1350
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.MULTI_AXIS_RANGE,
|
|
1351
|
+
rangeString);
|
|
1352
|
+
};
|
|
1353
|
+
|
|
1354
|
+
|
|
1355
|
+
/**
|
|
1356
|
+
* Returns the label range for a given axis number as a two-element array of
|
|
1357
|
+
* (range start, range end), or all of them in a two-dimensional array if the
|
|
1358
|
+
* axis number is not given.
|
|
1359
|
+
*
|
|
1360
|
+
* @param {number=} opt_axisNumber The axis index, as returned by addMultiAxis.
|
|
1361
|
+
* @return {Object|Array.<number>} The label range for a given axis number as a
|
|
1362
|
+
* two-element array of (range start, range end), or all of them in a
|
|
1363
|
+
* two-dimensional array if the axis number is not given.
|
|
1364
|
+
*/
|
|
1365
|
+
goog.ui.ServerChart.prototype.getMultiAxisRange = function(opt_axisNumber) {
|
|
1366
|
+
if (goog.isDef(opt_axisNumber)) {
|
|
1367
|
+
return this.multiAxisRange_[opt_axisNumber];
|
|
1368
|
+
}
|
|
1369
|
+
return this.multiAxisRange_;
|
|
1370
|
+
};
|
|
1371
|
+
|
|
1372
|
+
|
|
1373
|
+
/**
|
|
1374
|
+
* Sets the label style for a given axis, overwriting any existing style.
|
|
1375
|
+
* The default style is as follows: Default is x-axis labels are centered, left
|
|
1376
|
+
* hand y-axis labels are right aligned, right hand y-axis labels are left
|
|
1377
|
+
* aligned. The font size and alignment are optional parameters.
|
|
1378
|
+
*
|
|
1379
|
+
* NOTE: The color string should NOT have a '#' at the beginning of it.
|
|
1380
|
+
*
|
|
1381
|
+
* @param {number} axisNumber The axis index, as returned by addMultiAxis.
|
|
1382
|
+
* @param {string} color The hex value for this label's color.
|
|
1383
|
+
* @param {number=} opt_fontSize The label font size, in pixels.
|
|
1384
|
+
* @param {goog.ui.ServerChart.MultiAxisAlignment=} opt_alignment The label
|
|
1385
|
+
* alignment.
|
|
1386
|
+
* @param {goog.ui.ServerChart.AxisDisplayType=} opt_axisDisplay The axis
|
|
1387
|
+
* line and ticks.
|
|
1388
|
+
*/
|
|
1389
|
+
goog.ui.ServerChart.prototype.setMultiAxisLabelStyle = function(axisNumber,
|
|
1390
|
+
color,
|
|
1391
|
+
opt_fontSize,
|
|
1392
|
+
opt_alignment,
|
|
1393
|
+
opt_axisDisplay) {
|
|
1394
|
+
var style = [color];
|
|
1395
|
+
if (goog.isDef(opt_fontSize) || goog.isDef(opt_alignment)) {
|
|
1396
|
+
style.push(opt_fontSize || '');
|
|
1397
|
+
}
|
|
1398
|
+
if (goog.isDef(opt_alignment)) {
|
|
1399
|
+
style.push(opt_alignment);
|
|
1400
|
+
}
|
|
1401
|
+
if (opt_axisDisplay) {
|
|
1402
|
+
style.push(opt_axisDisplay);
|
|
1403
|
+
}
|
|
1404
|
+
this.multiAxisLabelStyle_[axisNumber] = style;
|
|
1405
|
+
var styleString = this.computeMultiAxisDataString_(this.multiAxisLabelStyle_,
|
|
1406
|
+
',',
|
|
1407
|
+
',',
|
|
1408
|
+
'|');
|
|
1409
|
+
this.uri_.setParameterValue(
|
|
1410
|
+
goog.ui.ServerChart.UriParam.MULTI_AXIS_STYLE,
|
|
1411
|
+
styleString);
|
|
1412
|
+
};
|
|
1413
|
+
|
|
1414
|
+
|
|
1415
|
+
/**
|
|
1416
|
+
* Returns the label style for a given axis number as a one- to three-element
|
|
1417
|
+
* array, or all of them in a two-dimensional array if the axis number is not
|
|
1418
|
+
* given.
|
|
1419
|
+
*
|
|
1420
|
+
* @param {number=} opt_axisNumber The axis index, as returned by addMultiAxis.
|
|
1421
|
+
* @return {Object|Array.<number>} The label style for a given axis number as a
|
|
1422
|
+
* one- to three-element array, or all of them in a two-dimensional array if
|
|
1423
|
+
* the axis number is not given.
|
|
1424
|
+
*/
|
|
1425
|
+
goog.ui.ServerChart.prototype.getMultiAxisLabelStyle =
|
|
1426
|
+
function(opt_axisNumber) {
|
|
1427
|
+
if (goog.isDef(opt_axisNumber)) {
|
|
1428
|
+
return this.multiAxisLabelStyle_[opt_axisNumber];
|
|
1429
|
+
}
|
|
1430
|
+
return this.multiAxisLabelStyle_;
|
|
1431
|
+
};
|
|
1432
|
+
|
|
1433
|
+
|
|
1434
|
+
/**
|
|
1435
|
+
* Adds a data set.
|
|
1436
|
+
* NOTE: The color string should NOT have a '#' at the beginning of it.
|
|
1437
|
+
*
|
|
1438
|
+
* @param {Array.<number|null>} data An array of numbers (values can be
|
|
1439
|
+
* NaN or null).
|
|
1440
|
+
* @param {string} color The hex value for this data set's color.
|
|
1441
|
+
* @param {string=} opt_legendText The legend text, if any, for this data
|
|
1442
|
+
* series. NOTE: If specified, all previously added data sets must also
|
|
1443
|
+
* have a legend text.
|
|
1444
|
+
*/
|
|
1445
|
+
goog.ui.ServerChart.prototype.addDataSet = function(data,
|
|
1446
|
+
color,
|
|
1447
|
+
opt_legendText) {
|
|
1448
|
+
var dataMin = this.arrayMin_(data);
|
|
1449
|
+
if (dataMin < this.minValue_) {
|
|
1450
|
+
this.minValue_ = dataMin;
|
|
1451
|
+
}
|
|
1452
|
+
|
|
1453
|
+
var dataMax = this.arrayMax_(data);
|
|
1454
|
+
if (dataMax > this.maxValue_) {
|
|
1455
|
+
this.maxValue_ = dataMax;
|
|
1456
|
+
}
|
|
1457
|
+
|
|
1458
|
+
if (goog.isDef(opt_legendText)) {
|
|
1459
|
+
if (this.setLegendTexts_.length < this.dataSets_.length) {
|
|
1460
|
+
throw Error('Cannot start adding legends text after first element.');
|
|
1461
|
+
}
|
|
1462
|
+
this.setLegendTexts_.push(opt_legendText);
|
|
1463
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.LEGEND_TEXTS,
|
|
1464
|
+
this.setLegendTexts_.join('|'));
|
|
1465
|
+
}
|
|
1466
|
+
|
|
1467
|
+
this.dataSets_.push(data);
|
|
1468
|
+
this.setColors_.push(color);
|
|
1469
|
+
|
|
1470
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.DATA_COLORS,
|
|
1471
|
+
this.setColors_.join(','));
|
|
1472
|
+
};
|
|
1473
|
+
|
|
1474
|
+
|
|
1475
|
+
/**
|
|
1476
|
+
* Clears the data sets from the graph. All data, including the colors and
|
|
1477
|
+
* legend text, is cleared.
|
|
1478
|
+
*/
|
|
1479
|
+
goog.ui.ServerChart.prototype.clearDataSets = function() {
|
|
1480
|
+
var queryData = this.uri_.getQueryData();
|
|
1481
|
+
queryData.remove(goog.ui.ServerChart.UriParam.LEGEND_TEXTS);
|
|
1482
|
+
queryData.remove(goog.ui.ServerChart.UriParam.DATA_COLORS);
|
|
1483
|
+
queryData.remove(goog.ui.ServerChart.UriParam.DATA);
|
|
1484
|
+
this.setLegendTexts_.length = 0;
|
|
1485
|
+
this.setColors_.length = 0;
|
|
1486
|
+
this.dataSets_.length = 0;
|
|
1487
|
+
};
|
|
1488
|
+
|
|
1489
|
+
|
|
1490
|
+
/**
|
|
1491
|
+
* Returns the given data set or all of them in a two-dimensional array if
|
|
1492
|
+
* the set number is not given.
|
|
1493
|
+
*
|
|
1494
|
+
* @param {number=} opt_setNumber Optional data set number to get.
|
|
1495
|
+
* @return {Array} The given data set or all of them in a two-dimensional array
|
|
1496
|
+
* if the set number is not given.
|
|
1497
|
+
*/
|
|
1498
|
+
goog.ui.ServerChart.prototype.getData = function(opt_setNumber) {
|
|
1499
|
+
if (goog.isDef(opt_setNumber)) {
|
|
1500
|
+
return this.dataSets_[opt_setNumber];
|
|
1501
|
+
}
|
|
1502
|
+
return this.dataSets_;
|
|
1503
|
+
};
|
|
1504
|
+
|
|
1505
|
+
|
|
1506
|
+
/**
|
|
1507
|
+
* Computes the data string using the data in this.dataSets_ and sets
|
|
1508
|
+
* the object's URI accordingly. If the URI's length equals or exceeds the
|
|
1509
|
+
* limit, goog.ui.ServerChart.UriTooLongEvent is dispatched on the
|
|
1510
|
+
* goog.ui.ServerChart object.
|
|
1511
|
+
* @private
|
|
1512
|
+
*/
|
|
1513
|
+
goog.ui.ServerChart.prototype.computeDataString_ = function() {
|
|
1514
|
+
var ok;
|
|
1515
|
+
if (this.encodingType_ != goog.ui.ServerChart.EncodingType.AUTOMATIC) {
|
|
1516
|
+
ok = this.computeDataStringForEncoding_(this.encodingType_);
|
|
1517
|
+
} else {
|
|
1518
|
+
ok = this.computeDataStringForEncoding_(
|
|
1519
|
+
goog.ui.ServerChart.EncodingType.EXTENDED);
|
|
1520
|
+
if (!ok) {
|
|
1521
|
+
ok = this.computeDataStringForEncoding_(
|
|
1522
|
+
goog.ui.ServerChart.EncodingType.SIMPLE);
|
|
1523
|
+
}
|
|
1524
|
+
}
|
|
1525
|
+
if (!ok) {
|
|
1526
|
+
this.dispatchEvent(
|
|
1527
|
+
new goog.ui.ServerChart.UriTooLongEvent(this.uri_.toString()));
|
|
1528
|
+
}
|
|
1529
|
+
};
|
|
1530
|
+
|
|
1531
|
+
|
|
1532
|
+
/**
|
|
1533
|
+
* Computes the data string using the data in this.dataSets_ and the encoding
|
|
1534
|
+
* specified by the encoding parameter, which must not be AUTOMATIC, and sets
|
|
1535
|
+
* the object's URI accordingly.
|
|
1536
|
+
* @param {goog.ui.ServerChart.EncodingType} encoding The data encoding to use;
|
|
1537
|
+
* must not be AUTOMATIC.
|
|
1538
|
+
* @return {boolean} False if the resulting URI is too long.
|
|
1539
|
+
* @private
|
|
1540
|
+
*/
|
|
1541
|
+
goog.ui.ServerChart.prototype.computeDataStringForEncoding_ = function(
|
|
1542
|
+
encoding) {
|
|
1543
|
+
var dataStrings = [];
|
|
1544
|
+
for (var i = 0, setLen = this.dataSets_.length; i < setLen; ++i) {
|
|
1545
|
+
dataStrings[i] = this.getChartServerValues_(this.dataSets_[i],
|
|
1546
|
+
this.minValue_,
|
|
1547
|
+
this.maxValue_,
|
|
1548
|
+
encoding);
|
|
1549
|
+
}
|
|
1550
|
+
var delimiter = encoding == goog.ui.ServerChart.EncodingType.TEXT ? '|' : ',';
|
|
1551
|
+
dataStrings = dataStrings.join(delimiter);
|
|
1552
|
+
var data;
|
|
1553
|
+
if (this.numVisibleDataSets_ == null) {
|
|
1554
|
+
data = goog.string.buildString(encoding, ':', dataStrings);
|
|
1555
|
+
} else {
|
|
1556
|
+
data = goog.string.buildString(encoding, this.numVisibleDataSets_, ':',
|
|
1557
|
+
dataStrings);
|
|
1558
|
+
}
|
|
1559
|
+
this.uri_.setParameterValue(goog.ui.ServerChart.UriParam.DATA, data);
|
|
1560
|
+
return this.uri_.toString().length < this.uriLengthLimit_;
|
|
1561
|
+
};
|
|
1562
|
+
|
|
1563
|
+
|
|
1564
|
+
/**
|
|
1565
|
+
* Computes a multi-axis data string from the given data and separators. The
|
|
1566
|
+
* general data format for each index/element in the array will be
|
|
1567
|
+
* "<arrayIndex><indexSeparator><arrayElement.join(elementSeparator)>", with
|
|
1568
|
+
* axisSeparator used between multiple elements.
|
|
1569
|
+
* @param {Object} data The data to compute the data string for, as a
|
|
1570
|
+
* sparse array of arrays. NOTE: The function uses the length of
|
|
1571
|
+
* multiAxisType_ to determine the upper bound for the outer array.
|
|
1572
|
+
* @param {string} indexSeparator The separator string inserted between each
|
|
1573
|
+
* index and the data itself, commonly a comma (,).
|
|
1574
|
+
* @param {string} elementSeparator The separator string inserted between each
|
|
1575
|
+
* element inside each sub-array in the data, if there are more than one;
|
|
1576
|
+
* commonly a comma (,).
|
|
1577
|
+
* @param {string} axisSeparator The separator string inserted between each
|
|
1578
|
+
* axis specification, if there are more than one; usually a pipe sign (|).
|
|
1579
|
+
* @return {string} The multi-axis data string.
|
|
1580
|
+
* @private
|
|
1581
|
+
*/
|
|
1582
|
+
goog.ui.ServerChart.prototype.computeMultiAxisDataString_ = function(
|
|
1583
|
+
data,
|
|
1584
|
+
indexSeparator,
|
|
1585
|
+
elementSeparator,
|
|
1586
|
+
axisSeparator) {
|
|
1587
|
+
var elementStrings = [];
|
|
1588
|
+
for (var i = 0, setLen = this.multiAxisType_.length; i < setLen; ++i) {
|
|
1589
|
+
if (data[i]) {
|
|
1590
|
+
elementStrings.push(i + indexSeparator + data[i].join(elementSeparator));
|
|
1591
|
+
}
|
|
1592
|
+
}
|
|
1593
|
+
return elementStrings.join(axisSeparator);
|
|
1594
|
+
};
|
|
1595
|
+
|
|
1596
|
+
|
|
1597
|
+
/**
|
|
1598
|
+
* Array of possible ChartServer data values
|
|
1599
|
+
* @type {string}
|
|
1600
|
+
*/
|
|
1601
|
+
goog.ui.ServerChart.CHART_VALUES = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
|
|
1602
|
+
'abcdefghijklmnopqrstuvwxyz' +
|
|
1603
|
+
'0123456789';
|
|
1604
|
+
|
|
1605
|
+
|
|
1606
|
+
/**
|
|
1607
|
+
* Array of extended ChartServer data values
|
|
1608
|
+
* @type {string}
|
|
1609
|
+
*/
|
|
1610
|
+
goog.ui.ServerChart.CHART_VALUES_EXTENDED = goog.ui.ServerChart.CHART_VALUES +
|
|
1611
|
+
'-.';
|
|
1612
|
+
|
|
1613
|
+
|
|
1614
|
+
/**
|
|
1615
|
+
* Upper bound for extended values
|
|
1616
|
+
*/
|
|
1617
|
+
goog.ui.ServerChart.EXTENDED_UPPER_BOUND =
|
|
1618
|
+
Math.pow(goog.ui.ServerChart.CHART_VALUES_EXTENDED.length, 2) - 1;
|
|
1619
|
+
|
|
1620
|
+
|
|
1621
|
+
/**
|
|
1622
|
+
* Converts a single number to an encoded data value suitable for ChartServer.
|
|
1623
|
+
* The TEXT encoding is the number in decimal; the SIMPLE encoding is a single
|
|
1624
|
+
* character, and the EXTENDED encoding is two characters. See
|
|
1625
|
+
* http://code.google.com/apis/chart/docs/data_formats.html for the detailed
|
|
1626
|
+
* specification of these encoding formats.
|
|
1627
|
+
*
|
|
1628
|
+
* @private
|
|
1629
|
+
* @param {?number} value The value to convert (null for a missing data point).
|
|
1630
|
+
* @param {number} minValue The minimum value (used for normalization).
|
|
1631
|
+
* @param {number} maxValue The maximum value (used for normalization).
|
|
1632
|
+
* @param {goog.ui.ServerChart.EncodingType} encoding The data encoding to use;
|
|
1633
|
+
* must not be AUTOMATIC.
|
|
1634
|
+
* @return {string} The encoded data value.
|
|
1635
|
+
*/
|
|
1636
|
+
goog.ui.ServerChart.prototype.getConvertedValue_ = function(value,
|
|
1637
|
+
minValue,
|
|
1638
|
+
maxValue,
|
|
1639
|
+
encoding) {
|
|
1640
|
+
goog.asserts.assert(minValue <= maxValue,
|
|
1641
|
+
'minValue should be less than or equal to maxValue');
|
|
1642
|
+
var isExtended = (encoding == goog.ui.ServerChart.EncodingType.EXTENDED);
|
|
1643
|
+
|
|
1644
|
+
if (goog.isNull(value) || !goog.isDef(value) || isNaN(value) ||
|
|
1645
|
+
value < minValue || value > maxValue) {
|
|
1646
|
+
return isExtended ? '__' : '_';
|
|
1647
|
+
}
|
|
1648
|
+
|
|
1649
|
+
if (encoding == goog.ui.ServerChart.EncodingType.TEXT) {
|
|
1650
|
+
return String(value);
|
|
1651
|
+
}
|
|
1652
|
+
|
|
1653
|
+
var frac = goog.ui.ServerChart.DEFAULT_NORMALIZATION;
|
|
1654
|
+
if (maxValue > minValue) {
|
|
1655
|
+
frac = (value - minValue) / (maxValue - minValue);
|
|
1656
|
+
// Previous checks of value ensure that 0 <= frac <= 1 at this point.
|
|
1657
|
+
}
|
|
1658
|
+
|
|
1659
|
+
if (isExtended) {
|
|
1660
|
+
var maxIndex = goog.ui.ServerChart.CHART_VALUES_EXTENDED.length;
|
|
1661
|
+
var upperBound = goog.ui.ServerChart.EXTENDED_UPPER_BOUND;
|
|
1662
|
+
var index1 = Math.floor(frac * upperBound / maxIndex);
|
|
1663
|
+
var index2 = Math.floor((frac * upperBound) % maxIndex);
|
|
1664
|
+
var extendedVals = goog.ui.ServerChart.CHART_VALUES_EXTENDED;
|
|
1665
|
+
return extendedVals.charAt(index1) + extendedVals.charAt(index2);
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1668
|
+
var index = Math.round(frac * (goog.ui.ServerChart.CHART_VALUES.length - 1));
|
|
1669
|
+
return goog.ui.ServerChart.CHART_VALUES.charAt(index);
|
|
1670
|
+
};
|
|
1671
|
+
|
|
1672
|
+
|
|
1673
|
+
/**
|
|
1674
|
+
* Creates the chd string for chartserver.
|
|
1675
|
+
*
|
|
1676
|
+
* @private
|
|
1677
|
+
* @param {Array.<number>} values An array of numbers to graph.
|
|
1678
|
+
* @param {number} minValue The minimum value (used for normalization).
|
|
1679
|
+
* @param {number} maxValue The maximum value (used for normalization).
|
|
1680
|
+
* @param {goog.ui.ServerChart.EncodingType} encoding The data encoding to use;
|
|
1681
|
+
* must not be AUTOMATIC.
|
|
1682
|
+
* @return {string} The chd string for chartserver.
|
|
1683
|
+
*/
|
|
1684
|
+
goog.ui.ServerChart.prototype.getChartServerValues_ = function(values,
|
|
1685
|
+
minValue,
|
|
1686
|
+
maxValue,
|
|
1687
|
+
encoding) {
|
|
1688
|
+
var s = [];
|
|
1689
|
+
for (var i = 0, valuesLen = values.length; i < valuesLen; ++i) {
|
|
1690
|
+
s.push(this.getConvertedValue_(values[i], minValue,
|
|
1691
|
+
maxValue, encoding));
|
|
1692
|
+
}
|
|
1693
|
+
return s.join(
|
|
1694
|
+
this.encodingType_ == goog.ui.ServerChart.EncodingType.TEXT ? ',' : '');
|
|
1695
|
+
};
|
|
1696
|
+
|
|
1697
|
+
|
|
1698
|
+
/**
|
|
1699
|
+
* Finds the minimum value in an array and returns it.
|
|
1700
|
+
* Needed because Math.min does not handle sparse arrays the way we want.
|
|
1701
|
+
*
|
|
1702
|
+
* @param {Array.<number?>} ary An array of values.
|
|
1703
|
+
* @return {number} The minimum value.
|
|
1704
|
+
* @private
|
|
1705
|
+
*/
|
|
1706
|
+
goog.ui.ServerChart.prototype.arrayMin_ = function(ary) {
|
|
1707
|
+
var min = Infinity;
|
|
1708
|
+
for (var i = 0, aryLen = ary.length; i < aryLen; ++i) {
|
|
1709
|
+
var value = ary[i];
|
|
1710
|
+
if (value != null && value < min) {
|
|
1711
|
+
min = value;
|
|
1712
|
+
}
|
|
1713
|
+
}
|
|
1714
|
+
return min;
|
|
1715
|
+
};
|
|
1716
|
+
|
|
1717
|
+
|
|
1718
|
+
/**
|
|
1719
|
+
* Finds the maximum value in an array and returns it.
|
|
1720
|
+
* Needed because Math.max does not handle sparse arrays the way we want.
|
|
1721
|
+
*
|
|
1722
|
+
* @param {Array.<number?>} ary An array of values.
|
|
1723
|
+
* @return {number} The maximum value.
|
|
1724
|
+
* @private
|
|
1725
|
+
*/
|
|
1726
|
+
goog.ui.ServerChart.prototype.arrayMax_ = function(ary) {
|
|
1727
|
+
var max = -Infinity;
|
|
1728
|
+
for (var i = 0, aryLen = ary.length; i < aryLen; ++i) {
|
|
1729
|
+
var value = ary[i];
|
|
1730
|
+
if (value != null && value > max) {
|
|
1731
|
+
max = value;
|
|
1732
|
+
}
|
|
1733
|
+
}
|
|
1734
|
+
return max;
|
|
1735
|
+
};
|
|
1736
|
+
|
|
1737
|
+
|
|
1738
|
+
/** @inheritDoc */
|
|
1739
|
+
goog.ui.ServerChart.prototype.disposeInternal = function() {
|
|
1740
|
+
goog.ui.ServerChart.superClass_.disposeInternal.call(this);
|
|
1741
|
+
delete this.xLabels_;
|
|
1742
|
+
delete this.leftLabels_;
|
|
1743
|
+
delete this.rightLabels_;
|
|
1744
|
+
delete this.gridX_;
|
|
1745
|
+
delete this.gridY_;
|
|
1746
|
+
delete this.setColors_;
|
|
1747
|
+
delete this.setLegendTexts_;
|
|
1748
|
+
delete this.dataSets_;
|
|
1749
|
+
this.uri_ = null;
|
|
1750
|
+
delete this.minValue_;
|
|
1751
|
+
delete this.maxValue_;
|
|
1752
|
+
this.title_ = null;
|
|
1753
|
+
delete this.multiAxisType_;
|
|
1754
|
+
delete this.multiAxisLabelText_;
|
|
1755
|
+
delete this.multiAxisLabelPosition_;
|
|
1756
|
+
delete this.multiAxisRange_;
|
|
1757
|
+
delete this.multiAxisLabelStyle_;
|
|
1758
|
+
this.legend_ = null;
|
|
1759
|
+
};
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
/**
|
|
1763
|
+
* Event types dispatched by the ServerChart object
|
|
1764
|
+
* @enum {string}
|
|
1765
|
+
*/
|
|
1766
|
+
goog.ui.ServerChart.Event = {
|
|
1767
|
+
/**
|
|
1768
|
+
* Dispatched when the resulting URI reaches or exceeds the URI length limit.
|
|
1769
|
+
*/
|
|
1770
|
+
URI_TOO_LONG: 'uritoolong'
|
|
1771
|
+
};
|
|
1772
|
+
|
|
1773
|
+
|
|
1774
|
+
|
|
1775
|
+
/**
|
|
1776
|
+
* Class for the event dispatched on the ServerChart when the resulting URI
|
|
1777
|
+
* exceeds the URI length limit.
|
|
1778
|
+
* @constructor
|
|
1779
|
+
* @param {string} uri The overly-long URI string.
|
|
1780
|
+
* @extends {goog.events.Event}
|
|
1781
|
+
*/
|
|
1782
|
+
goog.ui.ServerChart.UriTooLongEvent = function(uri) {
|
|
1783
|
+
goog.events.Event.call(this, goog.ui.ServerChart.Event.URI_TOO_LONG);
|
|
1784
|
+
|
|
1785
|
+
/**
|
|
1786
|
+
* The overly-long URI string.
|
|
1787
|
+
* @type {string}
|
|
1788
|
+
*/
|
|
1789
|
+
this.uri = uri;
|
|
1790
|
+
};
|
|
1791
|
+
goog.inherits(goog.ui.ServerChart.UriTooLongEvent, goog.events.Event);
|