All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.googlecode.gflot.client.options.TimeSeriesAxisOptions Maven / Gradle / Ivy

Go to download

A GWT module that provides widgets for creation and manipulation of charts based on the Flot JavaScript library.

The newest version!
/*
 * Copyright (c) 2012 Nicolas Morel
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use,
 * copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the
 * Software is furnished to do so, subject to the following
 * conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 * OTHER DEALINGS IN THE SOFTWARE.
 */
package com.googlecode.gflot.client.options;

import java.util.Collection;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayMixed;
import com.google.gwt.core.client.JsArrayString;

/**
 * 

* Flot always displays timestamps according to UTC. To get UTC time, you can use in GWT the function * java.util.Date.UTC(). Look at Flot API for more info about Time series. *

* * @author AlexanderDeleon */ public class TimeSeriesAxisOptions extends AbstractAxisOptions { public enum TickTimeUnit { SECOND( "second" ), MINUTE( "minute" ), HOUR( "hour" ), DAY( "day" ), MONTH( "month" ), YEAR( "year" ); static TickTimeUnit findByFlotValue( String flotValue ) { if ( null != flotValue && !"".equals( flotValue ) ) { for ( TickTimeUnit mode : values() ) { if ( mode.getFlotValue().equals( flotValue ) ) { return mode; } } } return null; } private String flotValue; TickTimeUnit( String flotValue ) { this.flotValue = flotValue; } String getFlotValue() { return flotValue; } } public static class TickSize extends JsArrayMixed { /** * Creates a {@link TickSize} */ public static final TickSize of( double size, TickTimeUnit unit ) { TickSize tickSize = JavaScriptObject.createObject().cast(); tickSize.set( 0, size ); tickSize.set( 1, unit.getFlotValue() ); return tickSize; } protected TickSize() { } public final double getSize() { return getNumber( 0 ); } public final TickTimeUnit getUnit() { return TickTimeUnit.findByFlotValue( getString( 1 ) ); } } public static final String TIME_ZONE_BROWSER_KEY = "browser"; private static final String TIME_ZONE_KEY = "timezone"; private static final String TIME_FORMAT_KEY = "timeformat"; private static final String DAY_NAMES_KEY = "dayNames"; private static final String MONTH_NAMES_KEY = "monthNames"; private static final String TWELVE_HOUR_CLOCK_KEY = "twelveHourClock"; /** * Creates a {@link TimeSeriesAxisOptions} */ public static final TimeSeriesAxisOptions create() { TimeSeriesAxisOptions axis = JavaScriptObject.createObject().cast(); axis.put( MODE_KEY, TIME_MODE_KEY ); return axis; } protected TimeSeriesAxisOptions() { } /** * @return the time zone */ public final String getTimeZone() { return getString( TIME_ZONE_KEY ); } /** * Set how the dates are displayed. If null, the dates are displayed as UTC. If * "browser", the dates are displayed in the time zone of the user's browser. You can also give a time zone (e.g. "America/New_York") if you include the script timezone-js */ public final TimeSeriesAxisOptions setTimeZone( String timeZone ) { put( TIME_ZONE_KEY, timeZone ); return this; } /** * Clear the time zone */ public final TimeSeriesAxisOptions clearTimeZone() { clear( TIME_ZONE_KEY ); return this; } /** * @return the format of the tick label */ public final String getTimeFormat() { return getString( TIME_FORMAT_KEY ); } /** * Set the format of the tick label. *

* The following specifiers are supported : *
    *
  • %a: weekday name (customizable)
  • *
  • %b: month name (customizable)
  • *
  • %d: day of month, zero-padded (01-31)
  • *
  • %e: day of month, space-padded ( 1-31)
  • *
  • %H: hours, 24-hour time, zero-padded (00-23)
  • *
  • %I: hours, 12-hour time, zero-padded (01-12)
  • *
  • %m: month, zero-padded (01-12)
  • *
  • %M: minutes, zero-padded (00-59)
  • *
  • %q: quarter (1-4)
  • *
  • %S: seconds, zero-padded (00-59)
  • *
  • %y: year (two digits)
  • *
  • %Y: year (four digits)
  • *
  • %p: am/pm
  • *
  • %P: AM/PM (uppercase version of %p)
  • *
  • %w: weekday as number (0-6, 0 being Sunday)
  • *
*

* The timeformat "%y/%m/%d" will results in tick labels like "2000/12/24". *

*/ public final TimeSeriesAxisOptions setTimeFormat( String timeFormat ) { put( TIME_FORMAT_KEY, timeFormat ); return this; } /** * Clear the format of the tick label */ public final TimeSeriesAxisOptions clearTimeFormat() { clear( TIME_FORMAT_KEY ); return this; } /** * @return the label used for month */ public final JsArrayString getMonthNames() { return getStringArray( MONTH_NAMES_KEY ); } /** * Set the label used for month. */ public final TimeSeriesAxisOptions setMonthNames( String... monthNames ) { assert null != monthNames : "monthNames can't be null"; assert monthNames.length == 12 : "monthNames must have all 12 month names"; JsArrayString array = JavaScriptObject.createArray().cast(); for ( String monthName : monthNames ) { array.push( monthName ); } return setMonthNames( array ); } /** * Set the label used for month. */ public final TimeSeriesAxisOptions setMonthNames( Collection monthNames ) { assert null != monthNames : "monthNames can't be null"; assert monthNames.size() == 12 : "monthNames must have all 12 month names"; JsArrayString array = JavaScriptObject.createArray().cast(); for ( String monthName : monthNames ) { array.push( monthName ); } return setMonthNames( array ); } /** * Set the label used for month. */ public final TimeSeriesAxisOptions setMonthNames( JsArrayString monthNames ) { assert null != monthNames : "monthNames can't be null"; assert monthNames.length() == 12 : "monthNames must have all 12 month names"; put( MONTH_NAMES_KEY, monthNames ); return this; } /** * Clear the labels used for month */ public final TimeSeriesAxisOptions clearMonthNames() { clear( MONTH_NAMES_KEY ); return this; } /** * @return the label used for days */ public final JsArrayString getDayNames() { return getStringArray( DAY_NAMES_KEY ); } /** * Set the label used for days. */ public final TimeSeriesAxisOptions setDayNames( String... dayNames ) { assert null != dayNames : "dayNames can't be null"; assert dayNames.length == 7 : "dayNames must have all 7 days names"; JsArrayString array = JavaScriptObject.createArray().cast(); for ( String dayName : dayNames ) { array.push( dayName ); } return setDayNames( array ); } /** * Set the label used for days. */ public final TimeSeriesAxisOptions setDayNames( Collection dayNames ) { assert null != dayNames : "dayNames can't be null"; assert dayNames.size() == 7 : "dayNames must have all 7 days names"; JsArrayString array = JavaScriptObject.createArray().cast(); for ( String dayName : dayNames ) { array.push( dayName ); } return setDayNames( array ); } /** * Set the label used for days. */ public final TimeSeriesAxisOptions setDayNames( JsArrayString dayNames ) { assert null != dayNames : "dayNames can't be null"; assert dayNames.length() == 7 : "dayNames must have all 7 days names"; put( DAY_NAMES_KEY, dayNames ); return this; } /** * Clear the labels used for days */ public final TimeSeriesAxisOptions clearDayNames() { clear( DAY_NAMES_KEY ); return this; } /** * @return true if the autogenerated timestamps use 12 hour AM/PM timestamps instead of 24 hour */ public final Boolean getTwelveHourClock() { return getBoolean( TWELVE_HOUR_CLOCK_KEY ); } /** * Set if the autogenerated timestamps will use 12 hour AM/PM timestamps instead of 24 hour. */ public final TimeSeriesAxisOptions setTwelveHourClock( boolean twelveHourClock ) { put( TWELVE_HOUR_CLOCK_KEY, twelveHourClock ); return this; } /** * Clear the twelve hour clock option */ public final TimeSeriesAxisOptions clearTwelveHourClock() { clear( TWELVE_HOUR_CLOCK_KEY ); return this; } /** * @return the tick interval size */ public final TickSize getTickSize() { return getJsObject( TICK_SIZE_KEY ); } /** * Set the tick interval size. If you set it to 2, you'll get ticks at 2, 4, 6, etc. */ public final TimeSeriesAxisOptions setTickSize( double tickSize, TickTimeUnit unit ) { assert null != unit : "unit can't be null"; put( TICK_SIZE_KEY, TickSize.of( tickSize, unit ) ); return this; } /** * @return the minimum tick size */ public final TickSize getMinTickSize() { return getJsObject( MIN_TICK_SIZE_KEY ); } /** * Set that you don't want ticks at a size less than the specified one */ public final TimeSeriesAxisOptions setMinTickSize( double minTickSize, TickTimeUnit unit ) { assert null != unit : "unit can't be null"; put( MIN_TICK_SIZE_KEY, TickSize.of( minTickSize, unit ) ); return this; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy