App-AutoCRUD
view release on metacpan or search on metacpan
lib/App/AutoCRUD/share/templates/src/table/update.tt view on Meta::CPAN
.actions { float: right; text-align: right; background-color: LightCyan;
margin-left: 1em; margin-top: 1em; padding-left: 0.5em }
.readonly { background-color: lightgrey }
.where { display: inline-block; width: 4em; text-align: right}
.focused_label { border-bottom: 1px dashed blue }
</style>
<script>
var tn_tree;
function setup() {
tn_tree = new GvaScript.TreeNavigator(
'TN_tree',
{selectFirstNode: false, tabIndex: -1}
);
var form = new GvaScript.Form('update_form', {
datatree: [% data.init_form %]
});
form.register('textarea, input', 'focus', on_focus_input);
form.register('textarea, input', 'blur', on_blur_input);
}
window.onload = setup;
function on_focus_input(event) {
var label = get_label(event);
if (label)
label.addClassName('focused_label');
// deselect treeNavigator
tn_tree.select(undefined);
}
function on_blur_input(event) {
var label = get_label(event);
if (label)
label.removeClassName('focused_label');
}
function get_label(event) {
var node = tn_tree.enclosingNode(event.element());
return node ? tn_tree.label(node) : undefined;
}
// TODO : clicking on a column name should set focus to its "set" input
</script>
[% WRAPPER linked_script %][% base %]static/js/autocrud_utils.js[% END %]
[% END; # WRAPPER head %]
[%# ---------- start body ---------- %]
<div class="actions">
<a href="descr">describe</a> |
<a href="search">search</a> this table
</div>
<h1>Update [% data.table %]</h1>
<form action="update" method="POST" id='update_form' accept-charset='utf-8'
[% "onsubmit='return confirm_n_ary_operation(this,\"update\")'"
IF ! data.where_pk %]>
<div id="TN_tree">
[% FOREACH multi_cols_key IN data.multi_cols_keys %]
<div class="TN_node">
<span class="TN_label groupname">Multi-column keys</span>
<div class="TN_content">
<div class="TN_leaf">
<span class="TN_label colname">[% multi_cols_key %]</span>
<span class="after_label">
set <input name="set.[% multi_cols_key %]" size=20
readonly class="readonly">
<span class="where">[% seen_where ? "and" : "where";
SET seen_where = 1; %]</span>
<input name="where.[% multi_cols_key %]" size=10
readonly class="readonly">
</span>
</div>
</div>
</div>
[% END; # FOREACH multi_cols_key IN data.multi_cols_keys %]
[% FOREACH group IN data.colgroups %]
<div class="TN_node">
<span class="TN_label groupname">[% group.name %]</span>
<div class="TN_content">
[% FOREACH col IN group.columns;
SET col_name = col.COLUMN_NAME;
NEXT IF data.ignore_col.$col_name; %]
<div class="TN_leaf">
<span class="TN_label colname"
title="[% col.descr %]">[% col_name %]</span>
<span class="after_label">
set <input name="set.[% col_name %]" size=20
[%~ 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;
( run in 3.396 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )