Changeset 944 in genappalpha


Ignore:
Timestamp:
Jun 30, 2016, 12:06:11 AM (6 years ago)
Author:
ehb
Message:

genapp: add listbox choices to graph

File:
1 edited

Legend:

Unmodified
Added
Removed
  • etc/perl/genapp_util.pl

    r939 r944  
    12071207                $error .= valid_name( "$f \"id\"", $x );
    12081208            }
    1209             # check for duplicate id's
     1209            # check for duplicate id's and listbox values
    12101210            {
    12111211                my $ref_mod = {};
     
    12201220                        $error .= "Module $f has fields with duplicate id \"" . $$mod_info{ 'fields:id' } . "\"\n" if $ids{ $$mod_info{ 'fields:id' } }++;
    12211221                    }
     1222                    $error .= "Module $f field " . $$mod_info{ 'fields:id' } . " is a listbox but is missing the required \"values\" tag\n" if $$mod_info{ 'fields:type' } eq 'listbox' && !$$mod_info{ 'fields:values' };
    12221223                } while( $mod_info = next_json( $ref_mod, 'fields:id' ) );
    12231224            }
     
    12271228                my $mod_info = start_json( $json, $ref_mod );
    12281229                my %repeater;
     1230                my %repeaterlb;
    12291231                my %repeat;
    12301232                my %repeattype;
     
    12351237                    {
    12361238                        $repeater{ $$mod_info{ 'fields:id' } } = $$mod_info{ 'fields:type' };
     1239                        if ( $$mod_info{ 'fields:type' } eq 'listbox' ) {
     1240                            my @lbvalues = split '~', $$mod_info{ 'fields:values' };
     1241                            $error .= "Module $f field " . $$mod_info{ 'fields:id' } . " is a listbox but the values are incorrect.  They must contain an even number of ~ separated words\n" if @lbvalues % 2;
     1242                            for ( my $i = 1; $i < @lbvalues; $i += 2 ) {
     1243                                my $k = $$mod_info{ 'fields:id' } . ":" . $lbvalues[ $i ];
     1244                                $repeater  { $k } = $$mod_info{ 'fields:type' } . " choice " . ( 1 + ( ( $i - 1 ) / 2 ) );
     1245                                $repeat    { $k } = $$mod_info{ 'fields:id' };
     1246                                $repeattype{ $k } = $$mod_info{ 'fields:type' } . " choice";
     1247                            }
     1248                        }
    12371249                    }
    12381250                    if ( $$mod_info{ 'fields:repeat' } )
    12391251                    {
    12401252                        $repeat{ $$mod_info{ 'fields:id' } } = $$mod_info{ 'fields:repeat' };
    1241                         $repeat{ $$mod_info{ 'fields:id' } } =~ s/:.*$//;
     1253#                        $repeat{ $$mod_info{ 'fields:id' } } =~ s/:.*$//;
    12421254                        $repeattype{ $$mod_info{ 'fields:id' } } = $$mod_info{ 'fields:type' };
    12431255                    }
     
    13401352                                    $graphviz_repeaters{$modname} .= "  $k1 -> $k2\n";
    13411353                                    $depth++;
    1342                                     if ( $depth > 4 )
     1354                                    if ( $depth > 25 )
    13431355                                    {
    13441356                                        $error .= "Module $f field '$k' exceeds maximum supported repeater depth\n";
Note: See TracChangeset for help on using the changeset viewer.