File Coverage

blib/lib/Chart/Plotly/Trace/Funnel/Connector.pm
Criterion Covered Total %
statement 12 28 42.8
branch 0 8 0.0
condition 0 8 0.0
subroutine 4 5 80.0
pod 1 1 100.0
total 17 50 34.0


line stmt bran cond sub pod time code
1             package Chart::Plotly::Trace::Funnel::Connector;
2 1     1   9 use Moose;
  1         4  
  1         8  
3 1     1   7358 use MooseX::ExtraArgs;
  1         3  
  1         10  
4 1     1   2285 use Moose::Util::TypeConstraints qw(enum union);
  1         3  
  1         10  
5             if ( !defined Moose::Util::TypeConstraints::find_type_constraint('PDL') ) {
6             Moose::Util::TypeConstraints::type('PDL');
7             }
8              
9 1     1   1405 use Chart::Plotly::Trace::Funnel::Connector::Line;
  1         4  
  1         312  
10              
11             our $VERSION = '0.041'; # VERSION
12              
13             # ABSTRACT: This attribute is one of the possible options for the trace funnel.
14              
15             sub TO_JSON {
16 0     0 1   my $self = shift;
17 0   0       my $extra_args = $self->extra_args // {};
18 0           my $meta = $self->meta;
19 0           my %hash = %$self;
20 0           for my $name ( sort keys %hash ) {
21 0           my $attr = $meta->get_attribute($name);
22 0 0         if ( defined $attr ) {
23 0           my $value = $hash{$name};
24 0           my $type = $attr->type_constraint;
25 0 0 0       if ( $type && $type->equals('Bool') ) {
26 0 0         $hash{$name} = $value ? \1 : \0;
27             }
28             }
29             }
30 0           %hash = ( %hash, %$extra_args );
31 0           delete $hash{'extra_args'};
32 0 0 0       if ( $self->can('type') && ( !defined $hash{'type'} ) ) {
33 0           $hash{type} = $self->type();
34             }
35 0           return \%hash;
36             }
37              
38             has fillcolor => ( is => "rw",
39             isa => "Str",
40             documentation => "Sets the fill color.",
41             );
42              
43             has line => ( is => "rw",
44             isa => "Maybe[HashRef]|Chart::Plotly::Trace::Funnel::Connector::Line", );
45              
46             has visible => ( is => "rw",
47             isa => "Bool",
48             documentation => "Determines if connector regions and lines are drawn.",
49             );
50              
51             __PACKAGE__->meta->make_immutable();
52             1;
53              
54             __END__
55              
56             =pod
57              
58             =encoding utf-8
59              
60             =head1 NAME
61              
62             Chart::Plotly::Trace::Funnel::Connector - This attribute is one of the possible options for the trace funnel.
63              
64             =head1 VERSION
65              
66             version 0.041
67              
68             =head1 SYNOPSIS
69              
70             use Chart::Plotly;
71             use Chart::Plotly::Plot;
72             use JSON;
73             use Chart::Plotly::Trace::Funnel;
74            
75             # Example from https://github.com/plotly/plotly.js/blob/b93e3a5a83b6561ac6258a59f274b5fc87630c3e/test/image/mocks/funnel_11.json
76             my $trace1 = Chart::Plotly::Trace::Funnel->new({'orientation' => 'v', 'marker' => {'color' => 'rgb(255, 102, 97)', }, 'y' => [13.23, 22.7, 26.06, ], 'x' => ['Half Dose', 'Full Dose', 'Double Dose', ], 'name' => 'Orange Juice', });
77            
78             my $trace2 = Chart::Plotly::Trace::Funnel->new({'name' => 'Vitamin C', 'marker' => {'color' => 'rgb(0, 196, 200)', }, 'y' => [7.98, 16.77, 26.14, ], 'x' => ['Half Dose', 'Full Dose', 'Double Dose', ], 'orientation' => 'v', });
79            
80             my $trace3 = Chart::Plotly::Trace::Funnel->new({'name' => 'Std Dev - OJ', 'x' => ['Half Dose', 'Full Dose', 'Double Dose', ], 'y' => [1.4102837, 1.236752, 0.8396031, ], 'visible' => JSON::false, 'orientation' => 'v', });
81            
82             my $trace4 = Chart::Plotly::Trace::Funnel->new({'y' => [0.868562, 0.7954104, 1.5171757, ], 'x' => ['Half Dose', 'Full Dose', 'Double Dose', ], 'name' => 'Std Dev - VC', 'orientation' => 'v', 'visible' => JSON::false, });
83            
84            
85             my $plot = Chart::Plotly::Plot->new(
86             traces => [$trace1, $trace2, $trace3, $trace4, ],
87             layout =>
88             {'autosize' => JSON::false, 'hidesources' => JSON::false, 'plot_bgcolor' => 'rgb(217, 217, 217)', 'font' => {'color' => '#000', 'size' => 12, 'family' => 'Arial, sans-serif', }, 'width' => 600, 'separators' => '.,', 'legend' => {'xanchor' => 'left', 'font' => {'size' => 16, 'family' => '', 'color' => 'rgb(0, 0, 0)', }, 'bgcolor' => 'rgba(255, 255, 255, 0)', 'bordercolor' => 'rgba(0, 0, 0, 0)', 'yanchor' => 'auto', 'x' => 1.02, 'y' => 0.931907250442406, 'borderwidth' => 1, 'traceorder' => 'normal', }, 'funnelgroupgap' => 0, 'funnelgap' => 0.2, 'annotations' => [{'tag' => '', 'yatype' => 'linear', 'showarrow' => JSON::false, 'xanchor' => 'auto', 'bgcolor' => 'rgba(0,0,0,0)', 'arrowhead' => 1, 'yref' => 'paper', 'ax' => -10, 'align' => 'center', 'yanchor' => 'auto', 'xatype' => 'category', 'bordercolor' => '', 'ref' => 'paper', 'text' => '<b>Supplement</b>', 'x' => 1.3479735318445, 'y' => 0.998214285714286, 'opacity' => 1, 'arrowwidth' => 0, 'font' => {'size' => 18, 'family' => '', 'color' => '', }, 'ay' => -26.7109375, 'arrowcolor' => '', 'borderpad' => 1, 'borderwidth' => 1, 'xref' => 'paper', 'arrowsize' => 1, }, ], 'height' => 440, 'dragmode' => 'zoom', 'hovermode' => 'x', 'paper_bgcolor' => '#fff', 'boxmode' => 'overlay', 'showlegend' => JSON::true, 'titlefont' => {'family' => '', 'size' => 16, 'color' => '', }, 'title' => 'Grouped Funnel Chart', 'margin' => {'r' => 0, 't' => 80, 'b' => 80, 'l' => 80, 'autoexpand' => JSON::true, 'pad' => 2, }, 'yaxis' => {'gridcolor' => 'rgb(255, 255, 255)', 'autotick' => JSON::true, 'ticks' => '', 'tickfont' => {'color' => '', 'size' => 16, 'family' => '', }, 'mirror' => JSON::true, 'tickangle' => 0, 'domain' => [0, 1, ], 'anchor' => 'x', 'showgrid' => JSON::true, 'exponentformat' => 'e', 'tick0' => 0, 'showticklabels' => JSON::true, 'nticks' => 0, 'zerolinewidth' => 1, 'zeroline' => JSON::false, 'position' => 0, 'range' => [0, 29.1128165263158, ], 'dtick' => 5, 'showexponent' => 'all', 'showline' => JSON::false, 'linecolor' => '#000', 'type' => 'linear', 'linewidth' => 0.1, 'overlaying' => JSON::false, 'ticklen' => 5, 'rangemode' => 'normal', 'tickwidth' => 1, 'tickcolor' => '#000', 'title' => 'Length', 'autorange' => JSON::true, 'titlefont' => {'size' => 16, 'family' => '', 'color' => '', }, 'zerolinecolor' => '#000', 'gridwidth' => 1.9, }, 'funnelmode' => 'group', 'xaxis' => {'ticks' => '', 'autotick' => JSON::true, 'gridcolor' => 'rgb(255, 255, 255)', 'tickfont' => {'color' => '', 'family' => '', 'size' => 16, }, 'mirror' => JSON::true, 'anchor' => 'y', 'tickangle' => 0, 'domain' => [0, 1, ], 'showgrid' => JSON::true, 'exponentformat' => 'e', 'tick0' => 0, 'showticklabels' => JSON::true, 'range' => [-0.5, 2.5, ], 'nticks' => 0, 'zerolinewidth' => 1, 'zeroline' => JSON::false, 'position' => 0, 'showexponent' => 'all', 'dtick' => 1, 'showline' => JSON::false, 'type' => 'category', 'linecolor' => '#000', 'overlaying' => JSON::false, 'linewidth' => 0.1, 'ticklen' => 5, 'rangemode' => 'normal', 'titlefont' => {'size' => 16, 'family' => '', 'color' => '', }, 'autorange' => JSON::true, 'title' => 'Dose (mg)', 'tickwidth' => 1, 'tickcolor' => '#000', 'gridwidth' => 1.9, 'zerolinecolor' => '#000', }, }
89             );
90            
91             Chart::Plotly::show_plot($plot);
92              
93             =head1 DESCRIPTION
94              
95             This attribute is part of the possible options for the trace funnel.
96              
97             This file has been autogenerated from the official plotly.js source.
98              
99             If you like Plotly, please support them: L<https://plot.ly/>
100             Open source announcement: L<https://plot.ly/javascript/open-source-announcement/>
101              
102             Full reference: L<https://plot.ly/javascript/reference/#funnel>
103              
104             =head1 DISCLAIMER
105              
106             This is an unofficial Plotly Perl module. Currently I'm not affiliated in any way with Plotly.
107             But I think plotly.js is a great library and I want to use it with perl.
108              
109             =head1 METHODS
110              
111             =head2 TO_JSON
112              
113             Serialize the trace to JSON. This method should be called only by L<JSON> serializer.
114              
115             =head1 ATTRIBUTES
116              
117             =over
118              
119             =item * fillcolor
120              
121             Sets the fill color.
122              
123             =item * line
124              
125             =item * visible
126              
127             Determines if connector regions and lines are drawn.
128              
129             =back
130              
131             =head1 AUTHOR
132              
133             Pablo Rodríguez González <pablo.rodriguez.gonzalez@gmail.com>
134              
135             =head1 COPYRIGHT AND LICENSE
136              
137             This software is Copyright (c) 2020 by Pablo Rodríguez González.
138              
139             This is free software, licensed under:
140              
141             The MIT (X11) License
142              
143             =cut