Andromeda can display tables to users for editing in three ways, which we call "profiles". The "grid" and "twosides" profiles do not really allow much in the way of customization, they are meant to be simple. However, their appearance can still be controlled somewhat.
All three profiles are affected the columns that have "uisearch: Y" set within a particular table.
For example, here is the YAML from the Andromeda Demo app that defines the ORDERS table. Notice that some of the columns have the "uisearch: Y" setting:
table orders:
module: ordering
description: Orders
uisort: 100
column recnum_ord:
suffix: _ord
description: Order
uisearch: "Y"
primary_key: "Y"
foreign_key customers:
uisearch: "Y"
column date:
uisearch: "Y"
column description:
description: Company Name
uisearch: "Y"
auto: fetch,customers.description
column first_name:
auto: fetch,customers.first_name
column last_name:
auto: fetch,customers.last_name
column add1:
auto: fetch,customers.add1
column add2:
auto: fetch,customers.add2
column city:
auto: fetch,customers.city
column state:
auto: fetch,customers.state
column zip9:
auto: fetch,customers.zip9
foreign_key custtypes:
column custtype:
auto: fetch,customers.custtype
column pct99_discount:
suffix: _discount
auto: fetch,custtypes.pct99_discount
column amt_retail:
suffix: _retail
description: Order Retail
auto: sum,orderlines.amt_retail
column amt_discount:
suffix: _discount
description: Total Discount
auto: sum,orderlines.amt_discount
column amt_net:
suffix: _net
description: Order Net
auto: sum,orderlines.amt_net
foreign_key taxauths:
column taxauth:
auto: fetchdef,customers.taxauth
column taxpct:
prefix: tax
description: Tax Percent
column amt_tax:
suffix: _tax
description: Tax Amount
auto: sum,orderlines.amt_tax
column amt_due:
suffix: _due
description: Amount Due
chain calc:
test 00:
return: @amt_net + @amt_tax
The resulting admin screen shows the columns recnum_ord, customer, date, and description as search columns:
If your database implements column security, and you set the uisearch property for a column that not everybody can see, then it will simply not be there for those who cannot see it -- no error or warning is displayed.
You can override the list of uisearch columns in code. This is more convenient because you do not have to run a build if you change just one column, but it puts the responsibility onto the programmer to be certain every column named actually exists in the table.
Like all database overrides, put the changes into your application/applib.php file, in a function named "ddTable_" plus the name of the table, and accept one parameter by reference:
<?php
# FILE: APPLICATION/APPLIB.PHP
#
function ddtable_customers(&$dd) {
$dd['projections']['_uisearch'] = 'comma,list,of,columns';
}
?>
Notice that we are assigning a comma-delimited list of columns, into the "projections" array, and the specific key is "_uisearch".