File Coverage

blib/lib/Chart/Plotly/Trace/Funnel/Hoverlabel.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         2  
  1         7  
3 1     1   6102 use Moose::Util::TypeConstraints qw(enum union);
  1         3  
  1         7  
4 1     1   2022 if ( !defined Moose::Util::TypeConstraints::find_type_constraint('PDL') ) {
  1         3  
  1         10  
5             Moose::Util::TypeConstraints::type('PDL');
6             }
7              
8             use Chart::Plotly::Trace::Funnel::Hoverlabel::Font;
9 1     1   1178  
  1         3  
  1         403  
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 align => (
37             is => "rw",
38             isa => union( [ enum( [ "left", "right", "auto" ] ), "ArrayRef" ] ),
39             documentation =>
40             "Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines",
41             );
42              
43             has alignsrc => ( is => "rw",
44             isa => "Str",
45             documentation => "Sets the source reference on Chart Studio Cloud for `align`.",
46             );
47              
48             has bgcolor => ( is => "rw",
49             isa => "Str|ArrayRef[Str]",
50             documentation => "Sets the background color of the hover labels for this trace",
51             );
52              
53             has bgcolorsrc => ( is => "rw",
54             isa => "Str",
55             documentation => "Sets the source reference on Chart Studio Cloud for `bgcolor`.",
56             );
57              
58             has bordercolor => ( is => "rw",
59             isa => "Str|ArrayRef[Str]",
60             documentation => "Sets the border color of the hover labels for this trace.",
61             );
62              
63             has bordercolorsrc => ( is => "rw",
64             isa => "Str",
65             documentation => "Sets the source reference on Chart Studio Cloud for `bordercolor`.",
66             );
67              
68             has font => ( is => "rw",
69             isa => "Maybe[HashRef]|Chart::Plotly::Trace::Funnel::Hoverlabel::Font", );
70              
71             has namelength => (
72             is => "rw",
73             isa => "Int|ArrayRef[Int]",
74             documentation =>
75             "Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.",
76             );
77              
78             has namelengthsrc => ( is => "rw",
79             isa => "Str",
80             documentation => "Sets the source reference on Chart Studio Cloud for `namelength`.",
81             );
82              
83             __PACKAGE__->meta->make_immutable();
84             1;
85              
86              
87             =pod
88              
89             =encoding utf-8
90              
91             =head1 NAME
92              
93             Chart::Plotly::Trace::Funnel::Hoverlabel - This attribute is one of the possible options for the trace funnel.
94              
95             =head1 VERSION
96              
97             version 0.042
98              
99             =head1 SYNOPSIS
100              
101             use Chart::Plotly;
102             use Chart::Plotly::Plot;
103             use JSON;
104             use Chart::Plotly::Trace::Funnel;
105            
106             # Example from https://github.com/plotly/plotly.js/blob/b93e3a5a83b6561ac6258a59f274b5fc87630c3e/test/image/mocks/funnel_11.json
107             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', });
108            
109             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', });
110            
111             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', });
112            
113             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, });
114            
115            
116             my $plot = Chart::Plotly::Plot->new(
117             traces => [$trace1, $trace2, $trace3, $trace4, ],
118             layout =>
119             {'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', }, }
120             );
121            
122             Chart::Plotly::show_plot($plot);
123              
124             =head1 DESCRIPTION
125              
126             This attribute is part of the possible options for the trace funnel.
127              
128             This file has been autogenerated from the official plotly.js source.
129              
130             If you like Plotly, please support them: L<https://plot.ly/>
131             Open source announcement: L<https://plot.ly/javascript/open-source-announcement/>
132              
133             Full reference: L<https://plot.ly/javascript/reference/#funnel>
134              
135             =head1 DISCLAIMER
136              
137             This is an unofficial Plotly Perl module. Currently I'm not affiliated in any way with Plotly.
138             But I think plotly.js is a great library and I want to use it with perl.
139              
140             =head1 METHODS
141              
142             =head2 TO_JSON
143              
144             Serialize the trace to JSON. This method should be called only by L<JSON> serializer.
145              
146             =head1 ATTRIBUTES
147              
148             =over
149              
150             =item * align
151              
152             Sets the horizontal alignment of the text content within hover label box. Has an effect only if the hover label text spans more two or more lines
153              
154             =item * alignsrc
155              
156             Sets the source reference on Chart Studio Cloud for `align`.
157              
158             =item * bgcolor
159              
160             Sets the background color of the hover labels for this trace
161              
162             =item * bgcolorsrc
163              
164             Sets the source reference on Chart Studio Cloud for `bgcolor`.
165              
166             =item * bordercolor
167              
168             Sets the border color of the hover labels for this trace.
169              
170             =item * bordercolorsrc
171              
172             Sets the source reference on Chart Studio Cloud for `bordercolor`.
173              
174             =item * font
175              
176             =item * namelength
177              
178             Sets the default length (in number of characters) of the trace name in the hover labels for all traces. -1 shows the whole name regardless of length. 0-3 shows the first 0-3 characters, and an integer >3 will show the whole name if it is less than that many characters, but if it is longer, will truncate to `namelength - 3` characters and add an ellipsis.
179              
180             =item * namelengthsrc
181              
182             Sets the source reference on Chart Studio Cloud for `namelength`.
183              
184             =back
185              
186             =head1 AUTHOR
187              
188             Pablo Rodríguez González <pablo.rodriguez.gonzalez@gmail.com>
189              
190             =head1 COPYRIGHT AND LICENSE
191              
192             This software is Copyright (c) 2022 by Pablo Rodríguez González.
193              
194             This is free software, licensed under:
195              
196             The MIT (X11) License
197              
198             =cut