Chart-Plotly

 view release on metacpan or  search on metacpan

Build.PL  view on Meta::CPAN

    "JSON" => 0,
    "LWP::UserAgent" => 0,
    "Module::Find" => 0,
    "Module::Load" => 0,
    "Moo::Role" => 0,
    "Moose" => 0,
    "Moose::Util::TypeConstraints" => 0,
    "MooseX::ExtraArgs" => 0,
    "Params::Validate" => 0,
    "Path::Tiny" => 0,
    "Ref::Util" => 0,
    "Role::Tiny" => 0,
    "Text::Template" => 0,
    "UUID::Tiny" => 0,
    "namespace::autoclean" => 0,
    "overload" => 0,
    "perl" => "5.010",
    "strict" => 0,
    "utf8" => 0,
    "vars" => 0,
    "warnings" => 0

META.json  view on Meta::CPAN

            "JSON" : "0",
            "LWP::UserAgent" : "0",
            "Module::Find" : "0",
            "Module::Load" : "0",
            "Moo::Role" : "0",
            "Moose" : "0",
            "Moose::Util::TypeConstraints" : "0",
            "MooseX::ExtraArgs" : "0",
            "Params::Validate" : "0",
            "Path::Tiny" : "0",
            "Ref::Util" : "0",
            "Role::Tiny" : "0",
            "Text::Template" : "0",
            "UUID::Tiny" : "0",
            "namespace::autoclean" : "0",
            "overload" : "0",
            "perl" : "5.010",
            "strict" : "0",
            "utf8" : "0",
            "vars" : "0",
            "warnings" : "0"

META.yml  view on Meta::CPAN

  JSON: '0'
  LWP::UserAgent: '0'
  Module::Find: '0'
  Module::Load: '0'
  Moo::Role: '0'
  Moose: '0'
  Moose::Util::TypeConstraints: '0'
  MooseX::ExtraArgs: '0'
  Params::Validate: '0'
  Path::Tiny: '0'
  Ref::Util: '0'
  Role::Tiny: '0'
  Text::Template: '0'
  UUID::Tiny: '0'
  namespace::autoclean: '0'
  overload: '0'
  perl: '5.010'
  strict: '0'
  utf8: '0'
  vars: '0'
  warnings: '0'

lib/Chart/Plotly.pm  view on Meta::CPAN

use utf8;

use Exporter 'import';
use vars qw(@EXPORT_OK);
@EXPORT_OK = qw(show_plot);

use JSON;
use Params::Validate qw(:all);
use Text::Template;
use Module::Load;
use Ref::Util;
use HTML::Show;
use UUID::Tiny ':std';
use File::ShareDir;
use Path::Tiny;

our $VERSION = '0.042';    # VERSION

# ABSTRACT: Generate html/javascript charts from perl data using javascript library plotly.js

sub render_full_html {
## no critic
    my %params = validate( @_, { data => { type => ARRAYREF | OBJECT }, } );
## use critic

    my $data     = $params{'data'};
    my $chart_id = create_uuid_as_string(UUID_TIME);
    my $html;
    if ( Ref::Util::is_blessed_ref($data) && $data->isa('Chart::Plotly::Plot') ) {
        $html = _render_html_wrap( $data->html( div_id => $chart_id ) );
    } else {
        $html = _render_html_wrap( _render_cell( _process_data($data), $chart_id ) );
    }
    return $html;
}

sub _render_html_wrap {
    my $body       = shift;
    my $html_begin = <<'HTML_BEGIN';

lib/Chart/Plotly.pm  view on Meta::CPAN

                               defined $layout ? ( layout => $layout ) : (),
                               defined $config ? ( config => $config ) : (),
    };
    return Text::Template::fill_in_string( $template, HASH => $template_variables );
}

sub _process_data {
    my $data           = shift;
    my $json_formatter = JSON->new->allow_blessed(1)->convert_blessed(1);
    local *PDL::TO_JSON = sub { $_[0]->unpdl };
    if ( Ref::Util::is_blessed_ref($data) ) {
        my $adapter_name = 'Chart::Plotly::Adapter::' . ref $data;
        eval {
            load $adapter_name;
            my $adapter = $adapter_name->new( data => $data );
            $data = $adapter->traces();
        };
        if ($@) {
            warn 'Cannot load adapter: ' . $adapter_name . '. ' . $@;
        }
    }

lib/Chart/Plotly.pm  view on Meta::CPAN

        return '';
    }
}

sub html_plot {
    my @data_to_plot = @_;

    my $rendered_cells = "";
    for my $data (@data_to_plot) {
        my $id = create_uuid_as_string(UUID_TIME);
        if ( Ref::Util::is_blessed_ref($data) && $data->isa('Chart::Plotly::Plot') ) {
            $rendered_cells .= $data->html( div_id => $id );
        } else {
            $rendered_cells .= _render_cell( _process_data($data), $id );
        }
    }
    return _render_html_wrap($rendered_cells);
}

sub show_plot {
    HTML::Show::show( html_plot(@_) );



( run in 0.702 second using v1.01-cache-2.11-cpan-a5abf4f5562 )