App-AutoCRUD

 view release on metacpan or  search on metacpan

lib/App/AutoCRUD.pm  view on Meta::CPAN

    - overridable content-type & headers 

  - search form, show associations => link to join search

  - list foreign keys even if not in DBIDM schema

  - change log

  - quoting problem (FromQuery: "J&B")

  - readonly fields: tabindex -1 (can be done by CSS?)
    in fact, current values should NOT be input fields, but plain SPANs

  - NULL in updates
  - Update form, focus problem (focus in field should deactivate TreeNav)
  - add insert link in table descr

  - deal with Favicon.ico

  - declare in http://www.sqlite.org/cvstrac/wiki?p=ManagementTools

lib/App/AutoCRUD/Controller/Table.pm  view on Meta::CPAN

  # select from database
  my $criteria  = $datasource->query_parser->parse(\%where_args) || {};
  my $statement = $datasource->schema->db_table($table)->select(
    -where => $criteria,
    %dashed_args,
    -result_as => 'statement',
   );
  my $rows         = $statement->select();

  # recuperate SQL for logging / informational purposes
  my ($sql, @bind) = $statement->sql;
  my $show_sql     = join " / ", $sql, @bind;
  $self->logger({level => 'debug', message => $show_sql});

  # assemble results
  my $data = $self->descr($table);
  $data->{rows}       = $rows;
  $data->{message}    = $message;
  $data->{criteria}   = $show_sql;
  if ($with_count) {
    $data->{row_count}  = $statement->row_count;
    $data->{page_count} = $statement->page_count;

lib/App/AutoCRUD/share/templates/src/table/search.tt  view on Meta::CPAN

      check/uncheck all <input type=checkbox class="check_all_groups"
                               onclick="propagate_checkbox(this, 'TN_tree')"> 
    </div>
    <div class="TN_node" id="criteria">
      <span class="TN_label param_group">Criteria</span>
      <span class="clear_float"></span>
      <div class="TN_content">
        [% FOREACH group IN data.colgroups;
             node_status = group.node or "open"; %]
        <input type="checkbox" class="check_column check_col_group"
               tabindex="100"  title="check/uncheck columns in this group"
               onclick="propagate_checkbox(this, 'group_[% group.name %]')">
        <div class="TN_node[% " TN_closed" IF node_status == "closed" %]"
             id="group_[% group.name %]">
          <span class="TN_label groupname">[% group.name %]</span>
          <span class="clear_float"></span>
          <div class="TN_content">
            [% FOREACH col IN group.columns %]
            <input name="col.[% col.COLUMN_NAME %]" value="1"
                   title="display this column"
                   type="checkbox" class="check_column" tabindex="100" />
            <div class="TN_leaf">
              <span class="TN_label colname[% ' pk' IF col.is_pk %]">[% col.COLUMN_NAME %]</span>
              <span class="after_label">
                <input name="[% col.COLUMN_NAME %]" size=60 tabindex="1"
                   [%~ IF !seen_autofocus; 
                         " autofocus"; 
                         seen_autofocus = 1; 
                       END %]>
                [%# TODO : autocompleter on col.path (if any) %]
              </span>
            </div>
            [% END; # FOREACH col IN group.columns %]
          </div>
        </div>
        [% END; # FOREACH group IN data.colgroups %]
      </div>
    </div>

    <div class="TN_node">
      <span class="TN_label param_group">Parameters</span>
      <div class="TN_content">
        <div class="TN_leaf">
          <span class="TN_label colname">Page index</span>
            <input name="-page_index" size=8 tabindex="1">
        </div>
        <div class="TN_leaf">
          <span class="TN_label colname">Page size</span>
            <input name="-page_size" size=8 tabindex="1">
        </div>
        <div class="TN_leaf">
          <span class="TN_label colname">Output as</span>
            <input type="radio" id="o.html" name="-output" value="" checked
                   tabindex="1">
            <label for="o.html">html</label>
            <input type="radio" id="o.xlsx" name="-output" value=".xlsx"
                   tabindex="1">
            <label for="o.xlsx">xlsx</label>
            <input type="radio" id="o.tsv" name="-output" value=".tsv"
                   tabindex="1">
            <label for="o.tsv">tsv</label>
            <input type="radio" id="o.yaml" name="-output" value=".yaml"
                   tabindex="1">
            <label for="o.yaml">yaml</label>
            <input type="radio" id="o.json" name="-output" value=".json"
                   tabindex="1">
            <label for="o.json">json</label>
            <input type="radio" id="o.xml" name="-output" value=".xml"
                   tabindex="1">
            <label for="o.xml">xml</label>
        </div>
        <div class="TN_leaf">
          <span class="TN_label colname">With count</span>
            <input name="-with_count" type="checkbox" value="1" checked
                   tabindex="1">
        </div>

      </div>
    </div>
  </div>

  <input type="submit" tabindex="1">
  <input type="reset"  tabindex="1">
</form>

lib/App/AutoCRUD/share/templates/src/table/update.tt  view on Meta::CPAN

                   [%~ IF data.noupd.$col_name;
                         " readonly class='readonly'";
                       ELSIF !seen_autofocus; 
                         " autofocus"; 
                         seen_autofocus = 1; 
                       END %]>


            [% IF data.where_pk.defined(col_name) %]
              <b>where</b> <input name="where.[% col_name %]" size=10 readonly
                                  class="readonly" tabindex=-1>
            [% ELSE %]

              [% IF data.where_pk;
                 # updating one single record, so we show current values.
                 # TODO : should improve GvaScript.Form so that we can
                 # replace this <input> by a mere <div>, and yet update
                 # the content automatically at init() %]
                (curr.<input name="curr.[% col_name %]" size=20 readonly
                             class="readonly" tabindex=-1>)
              [% ELSE;
                 # updating several records, so we show the WHERE criteria %]
                 <span class="where">[%  seen_where ? "and" : "where";
                                         SET seen_where = 1; %]</span>
                 <input name="where.[% col_name %]" size=10>
              [% END; # IF data.where_pk %]
            [% END; # IF data.where_pk.defined(col_name) %]
          </span>




( run in 2.747 seconds using v1.01-cache-2.11-cpan-2398b32b56e )