chukwa-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ey...@apache.org
Subject svn commit: r770000 [8/11] - in /hadoop/chukwa: branches/chukwa-0.1/ branches/chukwa-0.1/src/web/hicc/jsp/ branches/chukwa-0.1/src/web/hicc/lib/ branches/chukwa-0.1/src/web/hicc/lib/timeline/ branches/chukwa-0.1/src/web/hicc/lib/timeline/ext/ branches/...
Date Wed, 29 Apr 2009 23:33:56 GMT
Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/geochrono-api.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/geochrono-api.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/geochrono-api.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/geochrono-api.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,92 @@
+/*==================================================
+ *  Geochrono Extension
+ *
+ *  This file will load all the Javascript files
+ *  necessary to make the extension work.
+ *
+ *==================================================
+ */
+ 
+(function() {
+    var javascriptFiles = [
+        "geochrono.js",
+        "units.js",
+        "ether-painters.js",
+        "labellers.js"
+    ];
+    var cssFiles = [
+    ];
+    
+    var localizedJavascriptFiles = [
+        "labellers.js"
+    ];
+    var localizedCssFiles = [
+    ];
+    
+    // ISO-639 language codes, ISO-3166 country codes (2 characters)
+    var supportedLocales = [
+        "en"        // English
+    ];
+    
+    try {
+        var includeJavascriptFile = function(filename) {
+            document.write("<script src='" + Timeline.urlPrefix + "ext/geochrono/scripts/" + filename + "' type='text/javascript'></script>");
+        };
+        var includeCssFile = function(filename) {
+            document.write("<link rel='stylesheet' href='" + Timeline.urlPrefix + "ext/geochrono/styles/" + filename + "' type='text/css'/>");
+        }
+        
+        /*
+         *  Include non-localized files
+         */
+        for (var i = 0; i < javascriptFiles.length; i++) {
+            includeJavascriptFile(javascriptFiles[i]);
+        }
+        for (var i = 0; i < cssFiles.length; i++) {
+            includeCssFile(cssFiles[i]);
+        }
+        
+        /*
+         *  Include localized files
+         */
+        var loadLocale = [];
+        var tryExactLocale = function(locale) {
+            for (var l = 0; l < supportedLocales.length; l++) {
+                if (locale == supportedLocales[l]) {
+                    loadLocale[locale] = true;
+                    return true;
+                }
+            }
+            return false;
+        }
+        var tryLocale = function(locale) {
+            if (tryExactLocale(locale)) {
+                return locale;
+            }
+            
+            var dash = locale.indexOf("-");
+            if (dash > 0 && tryExactLocale(locale.substr(0, dash))) {
+                return locale.substr(0, dash);
+            }
+            
+            return null;
+        }
+        
+        tryLocale(Timeline.Platform.serverLocale);
+        tryLocale(Timeline.Platform.clientLocale);
+        
+        for (var l = 0; l < supportedLocales.length; l++) {
+            var locale = supportedLocales[l];
+            if (loadLocale[locale]) {
+                for (var i = 0; i < localizedJavascriptFiles.length; i++) {
+                    includeJavascriptFile("l10n/" + locale + "/" + localizedJavascriptFiles[i]);
+                }
+                for (var i = 0; i < localizedCssFiles.length; i++) {
+                    includeCssFile("l10n/" + locale + "/" + localizedCssFiles[i]);
+                }
+            }
+        }
+    } catch (e) {
+        alert(e);
+    }
+})();
\ No newline at end of file

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/ether-painters.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/ether-painters.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/ether-painters.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/ether-painters.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,204 @@
+/*==================================================
+ *  Geochrono Ether Painter
+ *==================================================
+ */
+ 
+Timeline.GeochronoEtherPainter = function(params, band, timeline) {
+    this._params = params;
+    this._intervalUnit = params.intervalUnit;
+    this._multiple = ("multiple" in params) ? params.multiple : 1;
+    this._theme = params.theme;
+};
+
+Timeline.GeochronoEtherPainter.prototype.initialize = function(band, timeline) {
+    this._band = band;
+    this._timeline = timeline;
+    
+    this._backgroundLayer = band.createLayerDiv(0);
+    this._backgroundLayer.setAttribute("name", "ether-background"); // for debugging
+    this._backgroundLayer.style.background = this._theme.ether.backgroundColors[band.getIndex()];
+    
+    this._markerLayer = null;
+    this._lineLayer = null;
+    
+    var align = ("align" in this._params && typeof this._params.align == "string") ? this._params.align : 
+        this._theme.ether.interval.marker[timeline.isHorizontal() ? "hAlign" : "vAlign"];
+    var showLine = ("showLine" in this._params) ? this._params.showLine : 
+        this._theme.ether.interval.line.show;
+        
+    this._intervalMarkerLayout = new Timeline.GeochronoEtherMarkerLayout(
+        this._timeline, this._band, this._theme, align, showLine);
+        
+    this._highlight = new Timeline.EtherHighlight(
+        this._timeline, this._band, this._theme, this._backgroundLayer);
+}
+
+Timeline.GeochronoEtherPainter.prototype.setHighlight = function(startDate, endDate) {
+    this._highlight.position(startDate, endDate);
+}
+
+Timeline.GeochronoEtherPainter.prototype.paint = function() {
+    if (this._markerLayer) {
+        this._band.removeLayerDiv(this._markerLayer);
+    }
+    this._markerLayer = this._band.createLayerDiv(100);
+    this._markerLayer.setAttribute("name", "ether-markers"); // for debugging
+    this._markerLayer.style.display = "none";
+    
+    if (this._lineLayer) {
+        this._band.removeLayerDiv(this._lineLayer);
+    }
+    this._lineLayer = this._band.createLayerDiv(1);
+    this._lineLayer.setAttribute("name", "ether-lines"); // for debugging
+    this._lineLayer.style.display = "none";
+    
+    var minDate = Math.ceil(Timeline.GeochronoUnit.toNumber(this._band.getMinDate()));
+    var maxDate = Math.floor(Timeline.GeochronoUnit.toNumber(this._band.getMaxDate()));
+    
+    var increment;
+    var hasMore;
+    (function(intervalUnit, multiple) {
+        var dates;
+        
+        switch (intervalUnit) {
+        case Timeline.GeochronoUnit.AGE:
+            dates = Timeline.Geochrono.ages; break;
+        case Timeline.GeochronoUnit.EPOCH:
+            dates = Timeline.Geochrono.epoches; break;
+        case Timeline.GeochronoUnit.PERIOD:
+            dates = Timeline.Geochrono.periods; break;
+        case Timeline.GeochronoUnit.ERA:
+            dates = Timeline.Geochrono.eras; break;
+        case Timeline.GeochronoUnit.EON:
+            dates = Timeline.Geochrono.eons; break;
+        default:
+            hasMore = function() {
+                return minDate > 0 && minDate > maxDate;
+            }
+            increment = function() {
+                minDate -= multiple;
+            };
+            return;
+        }
+        
+        var startIndex = dates.length - 1;
+        while (startIndex > 0) {
+            if (minDate <= dates[startIndex].start) {
+                break;
+            }
+            startIndex--;
+        }
+        
+        minDate = dates[startIndex].start;
+        hasMore = function() {
+            return startIndex < (dates.length - 1) && minDate > maxDate;
+        };
+        increment = function() {
+            startIndex++;
+            minDate = dates[startIndex].start;
+        };
+    })(this._intervalUnit, this._multiple);
+    
+    var labeller = this._band.getLabeller();
+    while (true) {
+        this._intervalMarkerLayout.createIntervalMarker(
+            Timeline.GeochronoUnit.fromNumber(minDate), 
+            labeller, 
+            this._intervalUnit, 
+            this._markerLayer, 
+            this._lineLayer
+        );
+        if (hasMore()) {
+            increment();
+        } else {
+            break;
+        }
+    }
+    this._markerLayer.style.display = "block";
+    this._lineLayer.style.display = "block";
+};
+
+Timeline.GeochronoEtherPainter.prototype.softPaint = function() {
+};
+
+
+/*==================================================
+ *  Geochrono Ether Marker Layout
+ *==================================================
+ */
+ 
+Timeline.GeochronoEtherMarkerLayout = function(timeline, band, theme, align, showLine) {
+    var horizontal = timeline.isHorizontal();
+    if (horizontal) {
+        if (align == "Top") {
+            this.positionDiv = function(div, offset) {
+                div.style.left = offset + "px";
+                div.style.top = "0px";
+            };
+        } else {
+            this.positionDiv = function(div, offset) {
+                div.style.left = offset + "px";
+                div.style.bottom = "0px";
+            };
+        }
+    } else {
+        if (align == "Left") {
+            this.positionDiv = function(div, offset) {
+                div.style.top = offset + "px";
+                div.style.left = "0px";
+            };
+        } else {
+            this.positionDiv = function(div, offset) {
+                div.style.top = offset + "px";
+                div.style.right = "0px";
+            };
+        }
+    }
+    
+    var markerTheme = theme.ether.interval.marker;
+    var lineTheme = theme.ether.interval.line;
+    
+    var stylePrefix = (horizontal ? "h" : "v") + align;
+    var labelStyler = markerTheme[stylePrefix + "Styler"];
+    var emphasizedLabelStyler = markerTheme[stylePrefix + "EmphasizedStyler"];
+    
+    this.createIntervalMarker = function(date, labeller, unit, markerDiv, lineDiv) {
+        var offset = Math.round(band.dateToPixelOffset(date));
+
+        if (showLine) {
+            var divLine = timeline.getDocument().createElement("div");
+            divLine.style.position = "absolute";
+            
+            if (lineTheme.opacity < 100) {
+                Timeline.Graphics.setOpacity(divLine, lineTheme.opacity);
+            }
+            
+            if (horizontal) {
+                divLine.style.borderLeft = "1px solid " + lineTheme.color;
+                divLine.style.left = offset + "px";
+                divLine.style.width = "1px";
+                divLine.style.top = "0px";
+                divLine.style.height = "100%";
+            } else {
+                divLine.style.borderTop = "1px solid " + lineTheme.color;
+                divLine.style.top = offset + "px";
+                divLine.style.height = "1px";
+                divLine.style.left = "0px";
+                divLine.style.width = "100%";
+            }
+            lineDiv.appendChild(divLine);
+        }
+        
+        var label = labeller.labelInterval(date, unit);
+        
+        var div = timeline.getDocument().createElement("div");
+        div.innerHTML = label.text;
+        div.style.position = "absolute";
+        (label.emphasized ? emphasizedLabelStyler : labelStyler)(div);
+        
+        this.positionDiv(div, offset);
+        markerDiv.appendChild(div);
+        
+        return div;
+    };
+};
\ No newline at end of file

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/geochrono.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/geochrono.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/geochrono.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/geochrono.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,532 @@
+/*==================================================
+ *  Geochrono
+ *==================================================
+ */
+
+Timeline.Geochrono = new Object();
+
+Timeline.Geochrono.eons = [
+    {   name: "Proterozoic",
+        start: 2500.000
+    },
+    {   name: "Phanerozoic",
+        start: 542.000
+    }
+];
+
+Timeline.Geochrono.eras = [
+    {   name: "Paleoarchean",
+        start: 3600.000
+    },
+    {   name: "Mesoarchean",
+        start: 3200.000
+    },
+    {   name: "Neoarchean",
+        start: 2800.000
+    },
+    {   name: "Paleoproterozoic",
+        start: 2500.000
+    },
+    {   name: "Mesoproterozoic",
+        start: 1600.000
+    },
+    {   name: "Neoproterozoic",
+        start: 1000.000
+    },
+    {   name: "Paleozoic",
+        start: 542.000
+    },
+    {   name: "Mesozoic",
+        start: 251.000
+    },
+    {   name: "Cenozoic",
+        start: 65.500
+    }
+];
+
+Timeline.Geochrono.periods = [
+    {   name: "Siderian",
+        start: 2500.000
+    },
+    {   name: "Rhyacian",
+        start: 2300.000
+    },
+    {   name: "Orosirian",
+        start: 2050.000
+    },
+    {   name: "Statherian",
+        start: 1800.000
+    },
+    {   name: "Calymmian",
+        start: 1600.000
+    },
+    {   name: "Ectasian",
+        start: 1400.000
+    },
+    {   name: "Stenian",
+        start: 1200.000
+    },
+    {   name: "Tonian",
+        start: 1000.000
+    },
+    {   name: "Cryogenian",
+        start: 850.000
+    },
+    {   name: "Ediacaran",
+        start: 600.000
+    },
+    {   name: "Cambrian",
+        start: 542.000
+    },
+    {   name: "Ordovician",
+        start: 488.300
+    },
+    {   name: "Silurian",
+        start: 443.700
+    },
+    {   name: "Devonian",
+        start: 416.000
+    },
+    {   name: "Carboniferous",
+        start: 359.200
+    },
+    {   name: "Permian",
+        start: 299.000
+    },
+    {   name: "Triassic",
+        start: 251.000
+    },
+    {   name: "Jurassic",
+        start: 199.600
+    },
+    {   name: "Cretaceous",
+        start: 145.500
+    },
+    {   name: "Paleogene",
+        start: 65.500
+    },
+    {   name: "Neogene",
+        start: 23.030
+    }
+];
+
+Timeline.Geochrono.epoches = [
+    {   name: "Lower Cambrian",
+        start: 542.000
+    },
+    {   name: "Middle Cambrian",
+        start: 513.000
+    },
+    {   name: "Furongian",
+        start: 501.000
+    },
+    {   name: "Lower Ordovician",
+        start: 488.300
+    },
+    {   name: "Middle Ordovician",
+        start: 471.800
+    },
+    {   name: "Upper Ordovician",
+        start: 460.900
+    },
+    {   name: "Llandovery",
+        start: 443.700
+    },
+    {   name: "Wenlock",
+        start: 428.200
+    },
+    {   name: "Ludlow",
+        start: 422.900
+    },
+    {   name: "Pridoli",
+        start: 418.700
+    },
+    {   name: "Lower Devonian",
+        start: 416.000
+    },
+    {   name: "Middle Devonian",
+        start: 397.500
+    },
+    {   name: "Upper Devonian",
+        start: 385.300
+    },
+    {   name: "Mississippian",
+        start: 359.200
+    },
+    {   name: "Pennsylvanian",
+        start: 318.100
+    },
+    {   name: "Cisuralian",
+        start: 299.000
+    },
+    {   name: "Guadalupian",
+        start: 270.600
+    },
+    {   name: "Lopingian",
+        start: 260.400
+    },
+    {   name: "Lower Triassic",
+        start: 251.000
+    },
+    {   name: "Middle Triassic",
+        start: 245.000
+    },
+    {   name: "Upper Triassic",
+        start: 228.000
+    },
+    {   name: "Lower Jurassic",
+        start: 199.600
+    },
+    {   name: "Middle Jurassic",
+        start: 175.600
+    },
+    {   name: "Upper Jurassic",
+        start: 161.200
+    },
+    {   name: "Lower Cretaceous",
+        start: 145.500
+    },
+    {   name: "Upper Cretaceous",
+        start: 99.600
+    },
+    {   name: "Paleocene",
+        start: 65.500
+    },
+    {   name: "Eocene",
+        start: 55.800
+    },
+    {   name: "Oligocene",
+        start: 33.900
+    },
+    {   name: "Miocene",
+        start: 23.030
+    },
+    {   name: "Pliocene",
+        start: 5.332
+    },
+    {   name: "Pleistocene",
+        start: 1.806
+    },
+    {   name: "Holocene",
+        start: 0.012
+    }
+];
+
+Timeline.Geochrono.ages = [
+    {   name: "-",
+        start: 542.000
+    },
+    {   name: "-",
+        start: 513.000
+    },
+    {   name: "Paibian",
+        start: 501.000
+    },
+    {   name: "Tremadocian",
+        start: 488.300
+    },
+    {   name: "-",
+        start: 478.600
+    },
+    {   name: "-",
+        start: 471.800
+    },
+    {   name: "Darriwilian",
+        start: 468.100
+    },
+    {   name: "-",
+        start: 460.900
+    },
+    {   name: "-",
+        start: 455.800
+    },
+    {   name: "Hirnantian",
+        start: 445.600
+    },
+    {   name: "Rhuddanian",
+        start: 443.700
+    },
+    {   name: "Aeronian",
+        start: 439.000
+    },
+    {   name: "Telychian",
+        start: 436.100
+    },
+    {   name: "Sheinwoodian",
+        start: 428.200
+    },
+    {   name: "Homerian",
+        start: 426.200
+    },
+    {   name: "Gorstian",
+        start: 422.900
+    },
+    {   name: "Ludfordian",
+        start: 421.300
+    },
+    {   name: "-",
+        start: 418.700
+    },
+    {   name: "Lochkovian",
+        start: 416.000
+    },
+    {   name: "Pragian",
+        start: 411.200
+    },
+    {   name: "Emsian",
+        start: 407.000
+    },
+    {   name: "Eifelian",
+        start: 397.500
+    },
+    {   name: "Givetian",
+        start: 391.800
+    },
+    {   name: "Frasnian",
+        start: 385.300
+    },
+    {   name: "Famennian",
+        start: 374.500
+    },
+    {   name: "Tournaisian",
+        start: 359.200
+    },
+    {   name: "Visean",
+        start: 345.300
+    },
+    {   name: "Serpukhovian",
+        start: 326.400
+    },
+    {   name: "Bashkirian",
+        start: 318.100
+    },
+    {   name: "Moscovian",
+        start: 311.700
+    },
+    {   name: "Kazimovian",
+        start: 306.500
+    },
+    {   name: "Gzhelian",
+        start: 303.900
+    },
+    {   name: "Asselian",
+        start: 299.000
+    },
+    {   name: "Sakmarian",
+        start: 294.600
+    },
+    {   name: "Artinskian",
+        start: 284.400
+    },
+    {   name: "Kungurian",
+        start: 275.600
+    },
+    {   name: "Roadian",
+        start: 270.600
+    },
+    {   name: "Wordian",
+        start: 268.000
+    },
+    {   name: "Capitanian",
+        start: 265.800
+    },
+    {   name: "Wuchiapingian",
+        start: 260.400
+    },
+    {   name: "Changhsingian",
+        start: 253.800
+    },
+    {   name: "Induan",
+        start: 251.000
+    },
+    {   name: "Olenekian",
+        start: 249.700
+    },
+    {   name: "Anisian",
+        start: 245.000
+    },
+    {   name: "Ladinian",
+        start: 237.000
+    },
+    {   name: "Carnian",
+        start: 228.000
+    },
+    {   name: "Norian",
+        start: 216.500
+    },
+    {   name: "Rhaetian",
+        start: 203.600
+    },
+    {   name: "Hettangian",
+        start: 199.600
+    },
+    {   name: "Sinemurian",
+        start: 196.500
+    },
+    {   name: "Pliensbachian",
+        start: 189.600
+    },
+    {   name: "Toarcian",
+        start: 183.000
+    },
+    {   name: "Aalenian",
+        start: 175.600
+    },
+    {   name: "Bajocian",
+        start: 171.600
+    },
+    {   name: "Bathonian",
+        start: 167.700
+    },
+    {   name: "Callovian",
+        start: 164.700
+    },
+    {   name: "Oxfordian",
+        start: 161.200
+    },
+    {   name: "Kimmeridgian",
+        start: 155.000
+    },
+    {   name: "Tithonian",
+        start: 150.800
+    },
+    {   name: "Berriasian",
+        start: 145.500
+    },
+    {   name: "Valanginian",
+        start: 140.200
+    },
+    {   name: "Hauterivian",
+        start: 136.400
+    },
+    {   name: "Barremian",
+        start: 130.000
+    },
+    {   name: "Aptian",
+        start: 125.000
+    },
+    {   name: "Albian",
+        start: 112.000
+    },
+    {   name: "Cenomanian",
+        start: 99.600
+    },
+    {   name: "Turonian",
+        start: 93.500
+    },
+    {   name: "Coniacian",
+        start: 89.300
+    },
+    {   name: "Santonian",
+        start: 85.800
+    },
+    {   name: "Campanian",
+        start: 83.500
+    },
+    {   name: "Maastrichtian",
+        start: 70.600
+    },
+    {   name: "Danian",
+        start: 65.500
+    },
+    {   name: "Selandian",
+        start: 61.700
+    },
+    {   name: "Thanetian",
+        start: 58.700
+    },
+    {   name: "Ypresian",
+        start: 55.800
+    },
+    {   name: "Lutetian",
+        start: 48.600
+    },
+    {   name: "Bartonian",
+        start: 40.400
+    },
+    {   name: "Priabonian",
+        start: 37.200
+    },
+    {   name: "Rupelian",
+        start: 33.900
+    },
+    {   name: "Chattian",
+        start: 28.400
+    },
+    {   name: "Aquitanian",
+        start: 23.030
+    },
+    {   name: "Burdigalian",
+        start: 20.430
+    },
+    {   name: "Langhian",
+        start: 15.970
+    },
+    {   name: "Serravallian",
+        start: 13.650
+    },
+    {   name: "Tortonian",
+        start: 11.608
+    },
+    {   name: "Messinian",
+        start: 7.246
+    },
+    {   name: "Zanclean",
+        start: 5.332
+    },
+    {   name: "Piacenzian",
+        start: 3.600
+    },
+    {   name: "Gelasian",
+        start: 2.588
+    }
+];
+
+
+Timeline.Geochrono.createBandInfo = function(params) {
+    var theme = ("theme" in params) ? params.theme : Timeline.getDefaultTheme();
+    
+    var eventSource = ("eventSource" in params) ? params.eventSource : null;
+    
+    var ether = new Timeline.LinearEther({ 
+        centersOn:          ("date" in params) ? params.date : Timeline.GeochronoUnit.makeDefaultValue(),
+        interval:           1,
+        pixelsPerInterval:  params.intervalPixels
+    });
+    
+    var etherPainter = new Timeline.GeochronoEtherPainter({
+        intervalUnit:       params.intervalUnit, 
+        multiple:           ("multiple" in params) ? params.multiple : 1,
+        align:              params.align,
+        theme:              theme 
+    });
+    
+    var layout = new Timeline.StaticTrackBasedLayout({
+        eventSource:    eventSource,
+        ether:          ether,
+        showText:       ("showEventText" in params) ? params.showEventText : true,
+        theme:          theme
+    });
+    
+    var eventPainterParams = {
+        showText:   ("showEventText" in params) ? params.showEventText : true,
+        layout:     layout,
+        theme:      theme
+    };
+    if ("trackHeight" in params) {
+        eventPainterParams.trackHeight = params.trackHeight;
+    }
+    if ("trackGap" in params) {
+        eventPainterParams.trackGap = params.trackGap;
+    }
+    var eventPainter = new Timeline.DurationEventPainter(eventPainterParams);
+    
+    return {   
+        width:          params.width,
+        eventSource:    eventSource,
+        timeZone:       ("timeZone" in params) ? params.timeZone : 0,
+        ether:          ether,
+        etherPainter:   etherPainter,
+        eventPainter:   eventPainter
+    };
+};
\ No newline at end of file

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/l10n/en/labellers.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/l10n/en/labellers.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/l10n/en/labellers.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/l10n/en/labellers.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,10 @@
+/*==================================================
+ *  Localization of Geochrono Labeller
+ *==================================================
+ */
+
+Timeline.GeochronoLabeller.eonNames["en"]       = Timeline.Geochrono.eons;
+Timeline.GeochronoLabeller.eraNames["en"]       = Timeline.Geochrono.eras;
+Timeline.GeochronoLabeller.periodNames["en"]    = Timeline.Geochrono.periods;
+Timeline.GeochronoLabeller.epochNames["en"]     = Timeline.Geochrono.epoches;
+Timeline.GeochronoLabeller.ageNames["en"]       = Timeline.Geochrono.ages;

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/labellers.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/labellers.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/labellers.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/labellers.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,52 @@
+/*==================================================
+ *  Geochrono Labeller
+ *==================================================
+ */
+
+Timeline.GeochronoLabeller = function(locale) {
+    this._locale = locale;
+};
+
+Timeline.GeochronoLabeller.eonNames = [];
+Timeline.GeochronoLabeller.eraNames = [];
+Timeline.GeochronoLabeller.periodNames = [];
+Timeline.GeochronoLabeller.epochNames = [];
+Timeline.GeochronoLabeller.ageNames = [];
+
+Timeline.GeochronoLabeller.prototype.labelInterval = function(date, intervalUnit) {
+    var n = Timeline.GeochronoUnit.toNumber(date);
+    var dates, names;
+    switch (intervalUnit) {
+    case Timeline.GeochronoUnit.AGE:
+        dates = Timeline.Geochrono.ages;
+        names = Timeline.GeochronoLabeller.ageNames; break;
+    case Timeline.GeochronoUnit.EPOCH:
+        dates = Timeline.Geochrono.epoches;
+        names = Timeline.GeochronoLabeller.epochNames; break;
+    case Timeline.GeochronoUnit.PERIOD:
+        dates = Timeline.Geochrono.periods;
+        names = Timeline.GeochronoLabeller.periodNames; break;
+    case Timeline.GeochronoUnit.ERA:
+        dates = Timeline.Geochrono.eras;
+        names = Timeline.GeochronoLabeller.eraNames; break;
+    case Timeline.GeochronoUnit.EON:
+        dates = Timeline.Geochrono.eons;
+        names = Timeline.GeochronoLabeller.eonNames; break;
+    default:
+        return { text: n, emphasized: false };
+    }
+    
+    for (var i = dates.length - 1; i >= 0; i--) {
+        if (n <= dates[i].start) {
+            return { 
+                text: names[this._locale][i].name, 
+                emphasized: n == dates[i].start 
+            }
+        }
+    }
+    return { text: n, emphasized: false };
+};
+
+Timeline.GeochronoLabeller.prototype.labelPrecise = function(date) {
+    return Timeline.GeochronoUnit.toNumber(date) + "ma";
+};

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/units.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/units.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/units.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/geochrono/scripts/units.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,86 @@
+/*==================================================
+ *  Geochrono Unit
+ *==================================================
+ */
+
+Timeline.GeochronoUnit = new Object();
+
+Timeline.GeochronoUnit.MA     = 0;
+Timeline.GeochronoUnit.AGE    = 1;
+Timeline.GeochronoUnit.EPOCH  = 2;
+Timeline.GeochronoUnit.PERIOD = 3;
+Timeline.GeochronoUnit.ERA    = 4;
+Timeline.GeochronoUnit.EON    = 5;
+
+Timeline.GeochronoUnit.getParser = function(format) {
+    return Timeline.GeochronoUnit.parseFromObject;
+};
+
+Timeline.GeochronoUnit.createLabeller = function(locale, timeZone) {
+    return new Timeline.GeochronoLabeller(locale);
+};
+
+Timeline.GeochronoUnit.wrapMA = function (n) {
+    return new Timeline.GeochronoUnit._MA(n);
+};
+
+Timeline.GeochronoUnit.makeDefaultValue = function () {
+    return Timeline.GeochronoUnit.wrapMA(0);
+};
+
+Timeline.GeochronoUnit.cloneValue = function (v) {
+    return new Timeline.GeochronoUnit._MA(v._n);
+};
+
+Timeline.GeochronoUnit.parseFromObject = function(o) {
+    if (o instanceof Timeline.GeochronoUnit._MA) {
+        return o;
+    } else if (typeof o == "number") {
+        return Timeline.GeochronoUnit.wrapMA(o);
+    } else if (typeof o == "string" && o.length > 0) {
+        return Timeline.GeochronoUnit.wrapMA(Number(o));
+    } else {
+        return null;
+    }
+};
+
+Timeline.GeochronoUnit.toNumber = function(v) {
+    return v._n;
+};
+
+Timeline.GeochronoUnit.fromNumber = function(n) {
+    return new Timeline.GeochronoUnit._MA(n);
+};
+
+Timeline.GeochronoUnit.compare = function(v1, v2) {
+    var n1, n2;
+    if (typeof v1 == "object") {
+        n1 = v1._n;
+    } else {
+        n1 = Number(v1);
+    }
+    if (typeof v2 == "object") {
+        n2 = v2._n;
+    } else {
+        n2 = Number(v2);
+    }
+    
+    return n2 - n1;
+};
+
+Timeline.GeochronoUnit.earlier = function(v1, v2) {
+    return Timeline.GeochronoUnit.compare(v1, v2) < 0 ? v1 : v2;
+};
+
+Timeline.GeochronoUnit.later = function(v1, v2) {
+    return Timeline.GeochronoUnit.compare(v1, v2) > 0 ? v1 : v2;
+};
+
+Timeline.GeochronoUnit.change = function(v, n) {
+    return new Timeline.GeochronoUnit._MA(v._n - n);
+};
+
+Timeline.GeochronoUnit._MA = function(n) {
+    this._n = n;
+};
+

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/planning-api.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/planning-api.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/planning-api.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/planning-api.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,92 @@
+/*==================================================
+ *  Planning Extension
+ *
+ *  This file will load all the Javascript files
+ *  necessary to make the extension work.
+ *
+ *==================================================
+ */
+ 
+(function() {
+    var javascriptFiles = [
+        "planning.js",
+        "units.js",
+        "ether-painters.js",
+        "labellers.js"
+    ];
+    var cssFiles = [
+    ];
+    
+    var localizedJavascriptFiles = [
+        "labellers.js"
+    ];
+    var localizedCssFiles = [
+    ];
+    
+    // ISO-639 language codes, ISO-3166 country codes (2 characters)
+    var supportedLocales = [
+        "en"        // English
+    ];
+    
+    try {
+        var includeJavascriptFile = function(filename) {
+            document.write("<script src='" + Timeline.urlPrefix + "ext/planning/scripts/" + filename + "' type='text/javascript'></script>");
+        };
+        var includeCssFile = function(filename) {
+            document.write("<link rel='stylesheet' href='" + Timeline.urlPrefix + "ext/planning/styles/" + filename + "' type='text/css'/>");
+        }
+        
+        /*
+         *  Include non-localized files
+         */
+        for (var i = 0; i < javascriptFiles.length; i++) {
+            includeJavascriptFile(javascriptFiles[i]);
+        }
+        for (var i = 0; i < cssFiles.length; i++) {
+            includeCssFile(cssFiles[i]);
+        }
+        
+        /*
+         *  Include localized files
+         */
+        var loadLocale = [];
+        var tryExactLocale = function(locale) {
+            for (var l = 0; l < supportedLocales.length; l++) {
+                if (locale == supportedLocales[l]) {
+                    loadLocale[locale] = true;
+                    return true;
+                }
+            }
+            return false;
+        }
+        var tryLocale = function(locale) {
+            if (tryExactLocale(locale)) {
+                return locale;
+            }
+            
+            var dash = locale.indexOf("-");
+            if (dash > 0 && tryExactLocale(locale.substr(0, dash))) {
+                return locale.substr(0, dash);
+            }
+            
+            return null;
+        }
+        
+        tryLocale(Timeline.Platform.serverLocale);
+        tryLocale(Timeline.Platform.clientLocale);
+        
+        for (var l = 0; l < supportedLocales.length; l++) {
+            var locale = supportedLocales[l];
+            if (loadLocale[locale]) {
+                for (var i = 0; i < localizedJavascriptFiles.length; i++) {
+                    includeJavascriptFile("l10n/" + locale + "/" + localizedJavascriptFiles[i]);
+                }
+                for (var i = 0; i < localizedCssFiles.length; i++) {
+                    includeCssFile("l10n/" + locale + "/" + localizedCssFiles[i]);
+                }
+            }
+        }
+    } catch (e) {
+        alert(e);
+    }
+})();
\ No newline at end of file

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/ether-painters.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/ether-painters.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/ether-painters.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/ether-painters.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,176 @@
+/*==================================================
+ *  Planning Ether Painter
+ *==================================================
+ */
+ 
+Timeline.PlanningEtherPainter = function(params, band, timeline) {
+    this._params = params;
+    this._intervalUnit = params.intervalUnit;
+    this._multiple = ("multiple" in params) ? params.multiple : 1;
+    this._theme = params.theme;
+};
+
+Timeline.PlanningEtherPainter.prototype.initialize = function(band, timeline) {
+    this._band = band;
+    this._timeline = timeline;
+    
+    this._backgroundLayer = band.createLayerDiv(0);
+    this._backgroundLayer.setAttribute("name", "ether-background"); // for debugging
+    this._backgroundLayer.style.background = this._theme.ether.backgroundColors[band.getIndex()];
+    
+    this._markerLayer = null;
+    this._lineLayer = null;
+    
+    var align = ("align" in this._params && typeof this._params.align == "string") ? this._params.align : 
+        this._theme.ether.interval.marker[timeline.isHorizontal() ? "hAlign" : "vAlign"];
+    var showLine = ("showLine" in this._params) ? this._params.showLine : 
+        this._theme.ether.interval.line.show;
+        
+    this._intervalMarkerLayout = new Timeline.PlanningEtherMarkerLayout(
+        this._timeline, this._band, this._theme, align, showLine);
+        
+    this._highlight = new Timeline.EtherHighlight(
+        this._timeline, this._band, this._theme, this._backgroundLayer);
+}
+
+Timeline.PlanningEtherPainter.prototype.setHighlight = function(startDate, endDate) {
+    this._highlight.position(startDate, endDate);
+}
+
+Timeline.PlanningEtherPainter.prototype.paint = function() {
+    if (this._markerLayer) {
+        this._band.removeLayerDiv(this._markerLayer);
+    }
+    this._markerLayer = this._band.createLayerDiv(100);
+    this._markerLayer.setAttribute("name", "ether-markers"); // for debugging
+    this._markerLayer.style.display = "none";
+    
+    if (this._lineLayer) {
+        this._band.removeLayerDiv(this._lineLayer);
+    }
+    this._lineLayer = this._band.createLayerDiv(1);
+    this._lineLayer.setAttribute("name", "ether-lines"); // for debugging
+    this._lineLayer.style.display = "none";
+    
+    var minDate = Math.max(0, Math.ceil(Timeline.PlanningUnit.toNumber(this._band.getMinDate())));
+    var maxDate = Math.floor(Timeline.PlanningUnit.toNumber(this._band.getMaxDate()));
+    
+    var hasMore = function() {
+        return minDate < maxDate;
+    };
+    var change = 1;
+    var multiple = this._multiple;
+    switch (this._intervalUnit) {
+        case Timeline.PlanningUnit.DAY:     change = 1; break;
+        case Timeline.PlanningUnit.WEEK:    change = 7; break;
+        case Timeline.PlanningUnit.MONTH:   change = 28; break;
+        case Timeline.PlanningUnit.QUARTER: change = 28 * 3; break;
+        case Timeline.PlanningUnit.YEAR:    change = 28 * 12; break;
+    }
+    var increment = function() {
+        minDate += change * multiple;
+    };
+    
+    var labeller = this._band.getLabeller();
+    while (true) {
+        this._intervalMarkerLayout.createIntervalMarker(
+            Timeline.PlanningUnit.fromNumber(minDate), 
+            labeller, 
+            this._intervalUnit, 
+            this._markerLayer, 
+            this._lineLayer
+        );
+        if (hasMore()) {
+            increment();
+        } else {
+            break;
+        }
+    }
+    this._markerLayer.style.display = "block";
+    this._lineLayer.style.display = "block";
+};
+
+Timeline.PlanningEtherPainter.prototype.softPaint = function() {
+};
+
+
+/*==================================================
+ *  Planning Ether Marker Layout
+ *==================================================
+ */
+ 
+Timeline.PlanningEtherMarkerLayout = function(timeline, band, theme, align, showLine) {
+    var horizontal = timeline.isHorizontal();
+    if (horizontal) {
+        if (align == "Top") {
+            this.positionDiv = function(div, offset) {
+                div.style.left = offset + "px";
+                div.style.top = "0px";
+            };
+        } else {
+            this.positionDiv = function(div, offset) {
+                div.style.left = offset + "px";
+                div.style.bottom = "0px";
+            };
+        }
+    } else {
+        if (align == "Left") {
+            this.positionDiv = function(div, offset) {
+                div.style.top = offset + "px";
+                div.style.left = "0px";
+            };
+        } else {
+            this.positionDiv = function(div, offset) {
+                div.style.top = offset + "px";
+                div.style.right = "0px";
+            };
+        }
+    }
+    
+    var markerTheme = theme.ether.interval.marker;
+    var lineTheme = theme.ether.interval.line;
+    
+    var stylePrefix = (horizontal ? "h" : "v") + align;
+    var labelStyler = markerTheme[stylePrefix + "Styler"];
+    var emphasizedLabelStyler = markerTheme[stylePrefix + "EmphasizedStyler"];
+    
+    this.createIntervalMarker = function(date, labeller, unit, markerDiv, lineDiv) {
+        var offset = Math.round(band.dateToPixelOffset(date));
+
+        if (showLine) {
+            var divLine = timeline.getDocument().createElement("div");
+            divLine.style.position = "absolute";
+            
+            if (lineTheme.opacity < 100) {
+                Timeline.Graphics.setOpacity(divLine, lineTheme.opacity);
+            }
+            
+            if (horizontal) {
+                divLine.style.borderLeft = "1px solid " + lineTheme.color;
+                divLine.style.left = offset + "px";
+                divLine.style.width = "1px";
+                divLine.style.top = "0px";
+                divLine.style.height = "100%";
+            } else {
+                divLine.style.borderTop = "1px solid " + lineTheme.color;
+                divLine.style.top = offset + "px";
+                divLine.style.height = "1px";
+                divLine.style.left = "0px";
+                divLine.style.width = "100%";
+            }
+            lineDiv.appendChild(divLine);
+        }
+        
+        var label = labeller.labelInterval(date, unit);
+        
+        var div = timeline.getDocument().createElement("div");
+        div.innerHTML = label.text;
+        div.style.position = "absolute";
+        (label.emphasized ? emphasizedLabelStyler : labelStyler)(div);
+        
+        this.positionDiv(div, offset);
+        markerDiv.appendChild(div);
+        
+        return div;
+    };
+};
\ No newline at end of file

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/l10n/en/labellers.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/l10n/en/labellers.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/l10n/en/labellers.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/l10n/en/labellers.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,12 @@
+/*==================================================
+ *  Localization of Planning Labeller
+ *==================================================
+ */
+
+Timeline.PlanningLabeller.labels["en"] = {
+    dayPrefix:      "d",
+    weekPrefix:     "w",
+    monthPrefix:    "m",
+    quarterPrefix:  "q",
+    yearPrefix:     "y"
+};
\ No newline at end of file

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/labellers.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/labellers.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/labellers.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/labellers.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,33 @@
+/*==================================================
+ *  Planning Labeller
+ *==================================================
+ */
+
+Timeline.PlanningLabeller = function(locale) {
+    this._locale = locale;
+};
+
+Timeline.PlanningLabeller.labels = [];
+
+Timeline.PlanningLabeller.prototype.labelInterval = function(date, intervalUnit) {
+    var n = Timeline.PlanningUnit.toNumber(date);
+    
+    var prefix = "";
+    var divider = 1;
+    var divider2 = 7;
+    var labels = Timeline.PlanningLabeller.labels[this._locale];
+    
+    switch (intervalUnit) {
+    case Timeline.PlanningUnit.DAY:     prefix = labels.dayPrefix;      break;
+    case Timeline.PlanningUnit.WEEK:    prefix = labels.weekPrefix;     divider = 7;        divider2 = divider * 4; break;
+    case Timeline.PlanningUnit.MONTH:   prefix = labels.monthPrefix;    divider = 28;       divider2 = divider * 3; break;
+    case Timeline.PlanningUnit.QUARTER: prefix = labels.quarterPrefix;  divider = 28 * 3;   divider2 = divider * 4; break;
+    case Timeline.PlanningUnit.YEAR:    prefix = labels.yearPrefix;     divider = 28 * 12;  divider2 = divider * 5; break;
+    }
+    return { text: prefix + Math.floor(n / divider), emphasized: (n % divider2) == 0 };
+};
+
+Timeline.PlanningLabeller.prototype.labelPrecise = function(date) {
+    return Timeline.PlanningLabeller.labels[this._locale].dayPrefix + 
+        Timeline.PlanningUnit.toNumber(date);
+};

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/planning.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/planning.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/planning.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/planning.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,54 @@
+/*==================================================
+ *  Planning
+ *==================================================
+ */
+
+Timeline.Planning = new Object();
+
+Timeline.Planning.createBandInfo = function(params) {
+    var theme = ("theme" in params) ? params.theme : Timeline.getDefaultTheme();
+    
+    var eventSource = ("eventSource" in params) ? params.eventSource : null;
+    
+    var ether = new Timeline.LinearEther({ 
+        centersOn:          ("date" in params) ? params.date : Timeline.PlanningUnit.makeDefaultValue(),
+        interval:           1,
+        pixelsPerInterval:  params.intervalPixels
+    });
+    
+    var etherPainter = new Timeline.PlanningEtherPainter({
+        intervalUnit:       params.intervalUnit, 
+        multiple:           ("multiple" in params) ? params.multiple : 1,
+        align:              params.align,
+        theme:              theme 
+    });
+    
+    var layout = new Timeline.StaticTrackBasedLayout({
+        eventSource:    eventSource,
+        ether:          ether,
+        showText:       ("showEventText" in params) ? params.showEventText : true,
+        theme:          theme
+    });
+    
+    var eventPainterParams = {
+        showText:   ("showEventText" in params) ? params.showEventText : true,
+        layout:     layout,
+        theme:      theme
+    };
+    if ("trackHeight" in params) {
+        eventPainterParams.trackHeight = params.trackHeight;
+    }
+    if ("trackGap" in params) {
+        eventPainterParams.trackGap = params.trackGap;
+    }
+    var eventPainter = new Timeline.DurationEventPainter(eventPainterParams);
+    
+    return {   
+        width:          params.width,
+        eventSource:    eventSource,
+        timeZone:       ("timeZone" in params) ? params.timeZone : 0,
+        ether:          ether,
+        etherPainter:   etherPainter,
+        eventPainter:   eventPainter
+    };
+};
\ No newline at end of file

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/units.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/units.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/units.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/ext/planning/scripts/units.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,66 @@
+/*==================================================
+ *  Planning Unit
+ *==================================================
+ */
+
+Timeline.PlanningUnit = new Object();
+
+Timeline.PlanningUnit.DAY     = 0;
+Timeline.PlanningUnit.WEEK    = 1;
+Timeline.PlanningUnit.MONTH   = 2;
+Timeline.PlanningUnit.QUARTER = 3;
+Timeline.PlanningUnit.YEAR    = 4;
+
+Timeline.PlanningUnit.getParser = function(format) {
+    return Timeline.PlanningUnit.parseFromObject;
+};
+
+Timeline.PlanningUnit.createLabeller = function(locale, timeZone) {
+    return new Timeline.PlanningLabeller(locale);
+};
+
+Timeline.PlanningUnit.makeDefaultValue = function () {
+    return 0;
+};
+
+Timeline.PlanningUnit.cloneValue = function (v) {
+    return v;
+};
+
+Timeline.PlanningUnit.parseFromObject = function(o) {
+    if (o == null) {
+        return null;
+    } else if (typeof o == "number") {
+        return o;
+    } else {
+        try {
+            return parseInt(o);
+        } catch (e) {
+            return null;
+        }
+    }
+};
+
+Timeline.PlanningUnit.toNumber = function(v) {
+    return v
+};
+
+Timeline.PlanningUnit.fromNumber = function(n) {
+    return n;
+};
+
+Timeline.PlanningUnit.compare = function(v1, v2) {
+    return v1 - v2;
+};
+
+Timeline.PlanningUnit.earlier = function(v1, v2) {
+    return Timeline.PlanningUnit.compare(v1, v2) < 0 ? v1 : v2;
+};
+
+Timeline.PlanningUnit.later = function(v1, v2) {
+    return Timeline.PlanningUnit.compare(v1, v2) > 0 ? v1 : v2;
+};
+
+Timeline.PlanningUnit.change = function(v, n) {
+    return v + n;
+};

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/blue-circle.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/blue-circle.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/blue-circle.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom-arrow.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom-arrow.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom-arrow.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom-left.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom-left.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom-left.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom-right.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom-right.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom-right.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-bottom.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-left-arrow.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-left-arrow.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-left-arrow.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-left.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-left.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-left.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-right-arrow.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-right-arrow.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-right-arrow.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-right.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-right.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-right.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top-arrow.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top-arrow.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top-arrow.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top-left.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top-left.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top-left.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top-right.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top-right.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top-right.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/bubble-top.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/close-button.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/close-button.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/close-button.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/copyright-vertical.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/copyright-vertical.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/copyright-vertical.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/copyright.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/copyright.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/copyright.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dark-blue-circle.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dark-blue-circle.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dark-blue-circle.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dark-green-circle.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dark-green-circle.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dark-green-circle.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dark-red-circle.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dark-red-circle.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dark-red-circle.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dull-blue-circle.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dull-blue-circle.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dull-blue-circle.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dull-green-circle.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dull-green-circle.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dull-green-circle.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dull-red-circle.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dull-red-circle.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/dull-red-circle.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/gray-circle.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/gray-circle.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/gray-circle.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/green-circle.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/green-circle.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/green-circle.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-bottom-left.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-bottom-left.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-bottom-left.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-bottom-right.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-bottom-right.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-bottom-right.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-left.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-left.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-left.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-right.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-right.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-right.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-top-left.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-top-left.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-top-left.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-top-right.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-top-right.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/message-top-right.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/progress-running.gif
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/progress-running.gif?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/progress-running.gif
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/red-circle.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/red-circle.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/red-circle.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/top-bubble.png
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/top-bubble.png?rev=770000&view=auto
==============================================================================
Binary file - no diff available.

Propchange: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/images/top-bubble.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: hadoop/chukwa/trunk/src/web/hicc/lib/timeline/scripts/decorators.js
URL: http://svn.apache.org/viewvc/hadoop/chukwa/trunk/src/web/hicc/lib/timeline/scripts/decorators.js?rev=770000&view=auto
==============================================================================
--- hadoop/chukwa/trunk/src/web/hicc/lib/timeline/scripts/decorators.js (added)
+++ hadoop/chukwa/trunk/src/web/hicc/lib/timeline/scripts/decorators.js Wed Apr 29 23:33:50 2009
@@ -0,0 +1,184 @@
+/*==================================================
+ *  Span Highlight Decorator
+ *==================================================
+ */
+
+Timeline.SpanHighlightDecorator = function(params) {
+    this._unit = ("unit" in params) ? params.unit : Timeline.NativeDateUnit;
+    this._startDate = (typeof params.startDate == "string") ? 
+        this._unit.parseFromObject(params.startDate) : params.startDate;
+    this._endDate = (typeof params.endDate == "string") ?
+        this._unit.parseFromObject(params.endDate) : params.endDate;
+    this._startLabel = params.startLabel;
+    this._endLabel = params.endLabel;
+    this._color = params.color;
+    this._opacity = ("opacity" in params) ? params.opacity : 100;
+};
+
+Timeline.SpanHighlightDecorator.prototype.initialize = function(band, timeline) {
+    this._band = band;
+    this._timeline = timeline;
+    
+    this._layerDiv = null;
+};
+
+Timeline.SpanHighlightDecorator.prototype.paint = function() {
+    if (this._layerDiv != null) {
+        this._band.removeLayerDiv(this._layerDiv);
+    }
+    this._layerDiv = this._band.createLayerDiv(10);
+    this._layerDiv.setAttribute("name", "span-highlight-decorator"); // for debugging
+    this._layerDiv.style.display = "none";
+    
+    var minDate = this._band.getMinDate();
+    var maxDate = this._band.getMaxDate();
+    
+    if (this._unit.compare(this._startDate, maxDate) < 0 &&
+        this._unit.compare(this._endDate, minDate) > 0) {
+        
+        minDate = this._unit.later(minDate, this._startDate);
+        maxDate = this._unit.earlier(maxDate, this._endDate);
+        
+        var minPixel = this._band.dateToPixelOffset(minDate);
+        var maxPixel = this._band.dateToPixelOffset(maxDate);
+        
+        var doc = this._timeline.getDocument();
+        
+        var createTable = function() {
+            var table = doc.createElement("table");
+            table.insertRow(0).insertCell(0);
+            return table;
+        };
+    
+        var div = doc.createElement("div");
+        div.style.position = "absolute";
+        div.style.overflow = "hidden";
+        div.style.background = this._color;
+        if (this._opacity < 100) {
+            Timeline.Graphics.setOpacity(div, this._opacity);
+        }
+        this._layerDiv.appendChild(div);
+            
+        var tableStartLabel = createTable();
+        tableStartLabel.style.position = "absolute";
+        tableStartLabel.style.overflow = "hidden";
+        tableStartLabel.style.fontSize = "300%";
+        tableStartLabel.style.fontWeight = "bold";
+        tableStartLabel.style.color = this._color;
+        tableStartLabel.rows[0].cells[0].innerHTML = this._startLabel;
+        this._layerDiv.appendChild(tableStartLabel);
+        
+        var tableEndLabel = createTable();
+        tableEndLabel.style.position = "absolute";
+        tableEndLabel.style.overflow = "hidden";
+        tableEndLabel.style.fontSize = "300%";
+        tableEndLabel.style.fontWeight = "bold";
+        tableEndLabel.style.color = this._color;
+        tableEndLabel.rows[0].cells[0].innerHTML = this._endLabel;
+        this._layerDiv.appendChild(tableEndLabel);
+        
+        if (this._timeline.isHorizontal()) {
+            div.style.left = minPixel + "px";
+            div.style.width = (maxPixel - minPixel) + "px";
+            div.style.top = "0px";
+            div.style.height = "100%";
+            
+            tableStartLabel.style.right = (this._band.getTotalViewLength() - minPixel) + "px";
+            tableStartLabel.style.width = (this._startLabel.length) + "em";
+            tableStartLabel.style.top = "0px";
+            tableStartLabel.style.height = "100%";
+            tableStartLabel.style.textAlign = "right";
+            
+            tableEndLabel.style.left = maxPixel + "px";
+            tableEndLabel.style.width = (this._endLabel.length) + "em";
+            tableEndLabel.style.top = "0px";
+            tableEndLabel.style.height = "100%";
+        } else {
+            div.style.top = minPixel + "px";
+            div.style.height = (maxPixel - minPixel) + "px";
+            div.style.left = "0px";
+            div.style.width = "100%";
+            
+            tableStartLabel.style.bottom = minPixel + "px";
+            tableStartLabel.style.height = "1.5px";
+            tableStartLabel.style.left = "0px";
+            tableStartLabel.style.width = "100%";
+            
+            tableEndLabel.style.top = maxPixel + "px";
+            tableEndLabel.style.height = "1.5px";
+            tableEndLabel.style.left = "0px";
+            tableEndLabel.style.width = "100%";
+        }
+    }
+    this._layerDiv.style.display = "block";
+};
+
+Timeline.SpanHighlightDecorator.prototype.softPaint = function() {
+};
+
+/*==================================================
+ *  Point Highlight Decorator
+ *==================================================
+ */
+
+Timeline.PointHighlightDecorator = function(params) {
+    this._unit = ("unit" in params) ? params.unit : Timeline.NativeDateUnit;
+    this._date = (typeof params.date == "string") ? 
+        this._unit.parseFromObject(params.date) : params.date;
+    this._width = ("width" in params) ? params.width : 10;
+    this._color = params.color;
+    this._opacity = ("opacity" in params) ? params.opacity : 100;
+};
+
+Timeline.PointHighlightDecorator.prototype.initialize = function(band, timeline) {
+    this._band = band;
+    this._timeline = timeline;
+    
+    this._layerDiv = null;
+};
+
+Timeline.PointHighlightDecorator.prototype.paint = function() {
+    if (this._layerDiv != null) {
+        this._band.removeLayerDiv(this._layerDiv);
+    }
+    this._layerDiv = this._band.createLayerDiv(10);
+    this._layerDiv.setAttribute("name", "span-highlight-decorator"); // for debugging
+    this._layerDiv.style.display = "none";
+    
+    var minDate = this._band.getMinDate();
+    var maxDate = this._band.getMaxDate();
+    
+    if (this._unit.compare(this._date, maxDate) < 0 &&
+        this._unit.compare(this._date, minDate) > 0) {
+        
+        var pixel = this._band.dateToPixelOffset(this._date);
+        var minPixel = pixel - Math.round(this._width / 2);
+        
+        var doc = this._timeline.getDocument();
+    
+        var div = doc.createElement("div");
+        div.style.position = "absolute";
+        div.style.overflow = "hidden";
+        div.style.background = this._color;
+        if (this._opacity < 100) {
+            Timeline.Graphics.setOpacity(div, this._opacity);
+        }
+        this._layerDiv.appendChild(div);
+            
+        if (this._timeline.isHorizontal()) {
+            div.style.left = minPixel + "px";
+            div.style.width = this._width + "px";
+            div.style.top = "0px";
+            div.style.height = "100%";
+        } else {
+            div.style.top = minPixel + "px";
+            div.style.height = this._width + "px";
+            div.style.left = "0px";
+            div.style.width = "100%";
+        }
+    }
+    this._layerDiv.style.display = "block";
+};
+
+Timeline.PointHighlightDecorator.prototype.softPaint = function() {
+};



Mime
View raw message