Иван Бессарабов

NAME

StatusBoard::Graph - create JSON with graph data for Status Board iPad App

VERSION

version 1.0.1

SYNOPSIS

    use StatusBoard::Graph;
    use StatusBoard::Graph::DataSeq;

    my $sg = StatusBoard::Graph->new();
    $sg->set_title("Soft Drink Sales");

    my $ds1 = StatusBoard::Graph::DataSeq->new();
    $ds1->set_title("X-Cola");
    $ds1->set_values(
        [
            2008 => 22,
            2009 => 24,
            2010 => 25.5,
            2011 => 27.9,
            2012 => 31,
        ]
    );
    $sg->add_data_seq($ds1);

    my $ds2 = StatusBoard::Graph::DataSeq->new();
    $ds2->set_title("Y-Cola");
    $ds2->set_values(
        [
            2008 => 18.4,
            2009 => 20.1,
            2010 => 24.8,
            2011 => 26.1,
            2012 => 29,
        ]
    );
    $sg->add_data_seq($ds2);

    $sg->write_json("cola.json");

Here is the screenshot of how this JSON file looks in the Status Board App.

DESCRIPTION

There is a great iPad App called Status Board http://www.panic.com/statusboard/. It can show differect types of information. One type is a Graph. To create that Graph one can use CSV format, or use more powerfull JSON format.

This module simplifies the process of creation JSONs for Status Board App. Here is the specification of JSON format: http://www.panic.com/statusboard/docs/graph_tutorial.pdf

StatusBoard::Graph version numbers uses Semantic Versioning standart. Please visit http://semver.org/ to find out all about this great thing.

METHODS

new

This a constuctor. It creates StatusBoard::Graph object. It don't need any parameters.

    my $sg = StatusBoard::Graph->new();

get_json

Method generate and return JSON with Graph data that Status Board App can use.

    my $json = $sg->get_json();

get_pretty_json

The same as get_json(), but it returs JSON with identation. This method is not recommened to use in production code, because JSON file with pretty JSON weights more thatn JSON written in one line.

    my $json = $sg->get_pretty_json();

write_json

Writes JSON with Graph data to file. It writes JSON data that is generated with get_json() method. There is no write_pretty_json() method.

    my $file_name = 'population.json';
    $sg->write_json($file_name);

set_title

Sets title for the Graph. On the same Graph there can be several datasequences. To set the title for for special datasequences use method set_title() in StatusBoard::Graph::DataSeq object.

    $sg->set_title("Soft Drink Sales");

has_title

Methods checks if the StatusBoard::Graph object has title (It has if the method set_title has been executed).

get_title

Returns the title of StatusBoard::Graph object or dies if there is no title.

set_type

Sets the type of Graph. In can be "bar" or "line". Setting the type is optional. If the type is not set then the Status Board will choose the type automaticly (depending on the graph size).

    $sg->set_type("bar");

has_type

Returns bool value if the type is set.

get_type

Returns the Graph type or dies if the type is not set.

add_data_seq

StatusBoard App can show several different datasequences on the same Graph. To show all that data you need to create StatusBoard::Graph::DataSeq object and to attach it to StatusBoard::Graph object.

    my $ds1 = StatusBoard::Graph::DataSeq->new();
    $ds1->set_title("X-Cola");
    $ds1->set_values(
        [
            2008 => 22,
            2009 => 24,
        ]
    );

    $sg->add_data_seq($ds1);

set_min_y_value

StatusBoard gives the ability to scale the Graph. You can specify the Y-axis to start at a particular value.

    $sg->set_min_y_value('78');

has_min_y_value

Returns bool value if the minimum Y-axis value is set.

get_min_y_value

Returns the mimimum Y-axis value or dies if it is not set.

set_max_y_value

You can specify the Y-axis to end at a particular value.

    $sg->set_max_y_value('84');

has_max_y_value

Returns bool value if the maximum Y-axis value is set.

get_max_y_value

Returns the maximum Y-axis value or dies if it is not set.

TODO

Several move things should be implemented.

  • refreshEveryNSeconds

  • total

  • units

  • Hiding Axis Labels

  • showEveryLabel

  • Error Reporting

  • set_type() should recieve only "bar" or "line"

AUTHOR

Ivan Bessarabov <ivan@bessarabov.ru>

COPYRIGHT AND LICENSE

This software is copyright (c) 2013 by Ivan Bessarabov.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.