Bivio::UI::XHTML::Widget::JSONValueLabelPairList
# Copyright (c) 2014 Bivio Software, Inc. All Rights Reserved.
# $Id$
package Bivio::UI::XHTML::Widget::JSONValueLabelPairList;
use strict;
use Bivio::Base 'Widget.ControlBase';
b_use('UI.ViewLanguageAUTOLOAD');
my($_M) = b_use('Biz.Model');
my($_JSON) = b_use('MIME.JSON');
sub control_on_render {
my($self, $source, $buffer) = @_;
my($list) = $source->req($self->get('source_name'));
my($data) = [];
$list->reset_cursor;
while($list->next_row) {
my($v) = '';
$self->get('value_widget')->render($list, \$v);
my($l) = '';
$self->get('label_widget')->render($list, \$l);
push(
@$data,
{
value => $v,
label => $l,
},
);
}
$$buffer = ${$_JSON->to_text($data)};
return;
}
sub initialize {
my($self, $source) = @_;
$self->put(
source_name => $_M->get_instance($self->get('list_class'))->package_name);
foreach my $w (qw(value_widget label_widget)) {
$self->get($w)->initialize_with_parent($self, $source);
}
return shift->SUPER::initialize(@_);
}
1;