Mojolicious-Plugin-Tables

 view release on metacpan or  search on metacpan

lib/Mojolicious/Plugin/Tables/resources/public/js/tables.js  view on Meta::CPAN

function dtTableEvents() {
    $('tbody tr', $dtTable).hover(
        function(){$(this).css({cursor:'pointer','font-weight':'normal'}).addClass('ui-state-active')},
        function(){$(this).css({cursor:''}).removeClass('ui-state-active')}
    ).on('click',
        function(){document.location = shipped.urlbase + '/tables/' + dtTableTabName + '/' + $(this).attr('id') + '/view'}
    );
}

function enable_buts($fldset) {
    var cdata = $fldset.data();
    var $buts = $fldset.find('div.stats button');
    if (cdata.total <= 10) $buts.button('disable');
    else {
        // strange or'd conditions here can only apply when full(>10) list showing; effect is revert to paged.
        $buts.filter('.start').button(cdata.offset>0 || cdata.to==cdata.total  ? 'enable': 'disable');
        $buts.filter('.prev' ).button(cdata.offset>0                           ? 'enable': 'disable');
        $buts.filter('.next' ).button(cdata.to<cdata.total                     ? 'enable': 'disable');
        $buts.filter('.end'  ).button(cdata.offset==0 || cdata.to<cdata.total  ? 'enable': 'disable');
    }
    // re-enable add-butt unless on delete-verify page
    if ($('div#tablesbody.del').length==0) $buts.filter('.add').button('enable');
}

var session = {}, shipped = {};

function init() {

    session = JSON.parse($('#session').html());

lib/Mojolicious/Plugin/Tables/resources/public/js/tables.js  view on Meta::CPAN


        $.each(['prev','start','next','end'], function(i,nav) {
            if ($this.hasClass(nav)) more = nav
        });
        if (more) document.location = newloc + '/navigate?to=' + more;
        return false;
    });

    $('fieldset.group').each(function(){
        var $fldset    = $(this);
        var cdata      = $fldset.data();
        cdata.offset   = 0;
        cdata.from     = 1;
        $fldset.find('div.stats button').click(function() {
            var $this = $(this);
            if ($this.hasClass('add'  )) {
                var href = '/tables/' + shipped.table + '/' + shipped.id + '/add_child/' + cdata.collection;
                document.location = shipped.urlbase + href;
                return false;
            }
            if ($this.hasClass('prev' )) cdata.offset = cdata.offset<10? 0: cdata.offset-10;
            if ($this.hasClass('start')) cdata.offset = 0;
            if ($this.hasClass('next' )) cdata.offset += 10;
            if ($this.hasClass('end'  )) cdata.offset = -1;
            if ($this.hasClass('list' )) cdata.offset = -2;
            var url = shipped.urlbase + '/tables/' + shipped.table + '/' + shipped.id + '/' + cdata.collection + '.json';
            $.post(url, {offset:cdata.offset})
             .done(function(rows){
                $('table.rows', $fldset).empty().append(
                    $.map(rows, function(d,i){
                        var href = shipped.urlbase + '/tables/' + cdata.ctable + '/' + d.id + '/view';
                        return '<tr><td><a href="' + href + '">'+d.label+'</a></td></tr>'
                    })
                );
                if (cdata.offset == -1) { // final page was requested and returned
                    cdata.to     = cdata.total;
                    cdata.offset = cdata.total - rows.length;
                } else if (cdata.offset == -2) { // all rows were returned
                    cdata.to     = cdata.total;
                    cdata.offset = 0;
                } else {
                    cdata.to = cdata.offset + rows.length;
                }
                cdata.from = cdata.offset + 1;
                var newNumbers = cdata.from + ' to ' + cdata.to + ' of ' + cdata.total;
                $('span.numbers', $fldset).text(newNumbers);
                enable_buts($fldset);
             })
             .fail(ajaxerror)
        });
        enable_buts($fldset);
    });
    $('fieldset,legend', 'div#tablesbody.del').addClass('ui-state-highlight');
}

lib/Mojolicious/Plugin/Tables/resources/templates/tables/view.html.ep  view on Meta::CPAN


        % } else {
            %= t div => (class=>"ui-helper-clearfix") => begin
                % for my $grp (keys %{$tinfo->{has_many}}) {
                    % my $ginfo    = $tinfo->{has_many}{$grp};
                    % my $ctable   = $ginfo->{ctable};
                    % my $cpkey    = $ginfo->{cpkey};
                    % my $total    = $row->$grp->count;
                    % my @children = $row->$grp({}, {order_by=>{-asc=>$cpkey}, rows=>10});
                    % my $to       = scalar(@children);
                    % my %cdata    = ('data-ctable'     => $ctable,
                    %                 'data-collection' => $grp,
                    %                 'data-to'         => $to,
                    %                 'data-total'      => $total);
                    %= t fieldset => (class=>"group", %cdata) => begin
                        % my $nums = @children? sprintf('1 to %d of %d', $to, $total): 'none';
                        %= t legend => (title=>$grp) => begin
                            %== qq[$ginfo->{label}&nbsp;&mdash;&nbsp;<span class="numbers">$nums</span>]
                        % end
                        %= t div => begin
                            %= $paging_buts2->();
                            %= t table => (class=>'rows') => begin
                                % for my $child (@children) {
                                    % my $ckey = $child->compound_ids;
                                    %= t tr => begin



( run in 0.655 second using v1.01-cache-2.11-cpan-454fe037f31 )