package NGCP::Panel::Render::RepeatableJs; # ABSTRACT: role providing method to construct repeatable javascript use Moose::Role; use JSON ('encode_json'); sub render_repeatable_js { my $self = shift; return '' unless $self->has_for_js; my $for_js = $self->for_js; my %index; my %html; my %level; foreach my $key ( keys %$for_js ) { $index{$key} = $for_js->{$key}->{index}; $html{$key} = $for_js->{$key}->{html}; $level{$key} = $for_js->{$key}->{level}; } my $index_str = encode_json( \%index ); my %encoded_html; use HTML::Entities; while (my ($k,$v) = each %html ) { $encoded_html{$k} = encode_entities($v); } my $html_str = encode_json( \%encoded_html ); my $level_str = encode_json( \%level ); my $js = < \$(document).ready(function() { var rep_index = $index_str; var rep_html_enc = $html_str; var rep_html = {}; for(var k in rep_html_enc) { rep_html[k] = \$('