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             use Moose;
2 1     1   6 use MooseX::ExtraArgs;
  1         3  
  1         9  
3 1     1   6042 use Moose::Util::TypeConstraints qw(enum union);
  1         2  
  1         8  
4 1     1   2061 if ( !defined Moose::Util::TypeConstraints::find_type_constraint('PDL') ) {
  1         3  
  1         9  
5             Moose::Util::TypeConstraints::type('PDL');
6             }
7              
8             use Chart::Plotly::Trace::Funnel::Connector::Line;
9 1     1   1124  
  1         4  
  1         280  
10             our $VERSION = '0.042'; # VERSION
11              
12             # ABSTRACT: This attribute is one of the possible options for the trace funnel.
13              
14             my $self = shift;
15             my $extra_args = $self->extra_args // {};
16 0     0 1   my $meta = $self->meta;
17 0   0       my %hash = %$self;
18 0           for my $name ( sort keys %hash ) {
19 0           my $attr = $meta->get_attribute($name);
20 0           if ( defined $attr ) {
21 0           my $value = $hash{$name};
22 0 0         my $type = $attr->type_constraint;
23 0           if ( $type && $type->equals('Bool') ) {
24 0           $hash{$name} = $value ? \1 : \0;
25 0 0 0       }
26 0 0         }
27             }
28             %hash = ( %hash, %$extra_args );
29             delete $hash{'extra_args'};
30 0           if ( $self->can('type') && ( !defined $hash{'type'} ) ) {
31 0           $hash{type} = $self->type();
32 0 0 0       }
33 0           return \%hash;
34             }
35 0            
36             has fillcolor => ( is => "rw",
37             isa => "Str",
38             documentation => "Sets the fill color.",
39             );
40              
41             has line => ( is => "rw",
42             isa => "Maybe[HashRef]|Chart::Plotly::Trace::Funnel::Connector::Line", );
43              
44             has visible => ( is => "rw",
45             isa => "Bool",
46             documentation => "Determines if connector regions and lines are drawn.",
47             );
48              
49             __PACKAGE__->meta->make_immutable();
50             1;
51              
52              
53             =pod
54              
55             =encoding utf-8
56              
57             =head1 NAME
58              
59             Chart::Plotly::Trace::Funnel::Connector - This attribute is one of the possible options for the trace funnel.
60              
61             =head1 VERSION
62              
63             version 0.042
64              
65             =head1 SYNOPSIS
66              
67             use Chart::Plotly;
68             use Chart::Plotly::Plot;
69             use JSON;
70             use Chart::Plotly::Trace::Funnel;
71            
72             # Example from https://github.com/plotly/plotly.js/blob/b93e3a5a83b6561ac6258a59f274b5fc87630c3e/test/image/mocks/funnel_11.json
73             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', });
74            
75             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', });
76            
77             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', });
78            
79             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, });
80            
81            
82             my $plot = Chart::Plotly::Plot->new(
83             traces => [$trace1, $trace2, $trace3, $trace4, ],
84             layout =>
85             {'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', }, }
86             );
87            
88             Chart::Plotly::show_plot($plot);
89              
90             =head1 DESCRIPTION
91              
92             This attribute is part of the possible options for the trace funnel.
93              
94             This file has been autogenerated from the official plotly.js source.
95              
96             If you like Plotly, please support them: L<https://plot.ly/>
97             Open source announcement: L<https://plot.ly/javascript/open-source-announcement/>
98              
99             Full reference: L<https://plot.ly/javascript/reference/#funnel>
100              
101             =head1 DISCLAIMER
102              
103             This is an unofficial Plotly Perl module. Currently I'm not affiliated in any way with Plotly.
104             But I think plotly.js is a great library and I want to use it with perl.
105              
106             =head1 METHODS
107              
108             =head2 TO_JSON
109              
110             Serialize the trace to JSON. This method should be called only by L<JSON> serializer.
111              
112             =head1 ATTRIBUTES
113              
114             =over
115              
116             =item * fillcolor
117              
118             Sets the fill color.
119              
120             =item * line
121              
122             =item * visible
123              
124             Determines if connector regions and lines are drawn.
125              
126             =back
127              
128             =head1 AUTHOR
129              
130             Pablo Rodríguez González <pablo.rodriguez.gonzalez@gmail.com>
131              
132             =head1 COPYRIGHT AND LICENSE
133              
134             This software is Copyright (c) 2022 by Pablo Rodríguez González.
135              
136             This is free software, licensed under:
137              
138             The MIT (X11) License
139              
140             =cut