ATK UI Complex User Input Design Style


I’d like to hear other ATK UI’s opinion on a matter of style. I have an application that gets a number of inputs from the user to determine how to display a set of data. For example, the user can choose a date range, decide on daily/weekly/monthly summaries, indicate which people to report on, and indicate whether or not certain types of data is included in the summary.

I chose to implement this by creating a simple Model class to store the user’s selections and associating it with a Persistence_Array using the $_SESSION variable. I then set up a Form to display the fields how I want. It works fine, but for some reason it just doesn’t feel right to me – it feels like a kludge. I’m far from an expert in using ATK UI to develop applications, or in developing web applications at all (though I have developed a lot of code), so I can’t really explain or justify why I feel that way, I just do.

So I thought I’d ask for feedback. I’m sure I’m not the only one to be trying to do this – every non-trivial application will have some place where they need to get input from the user that isn’t necessarily stored in a database, but controls what their application does a bit further down the page. How do you do it?


Hello and welcome to ATK Community.

Using Form for getting user input is a standard Web Dev practice. However for storing those values I would just use a simple $_SESSION setup without model (will get the data from form onSubmit) or maybe store in a DB.

Then for displaying I would use a custom View class or a text, but I guess you want to display the actual report. In which case I would use the Grid component.


I thought of that – but if I do that:

  1. the look & feel of the fields and overall form would be different than that of any form created with the ATK UI, wouldn’t it (unless I did a lot of manual work to duplicate whatever ATK UI is doing to format the form fields, field hints, etc.)?
  2. if I don’t use a model I’d need to duplicate whatever functionality ATK data provides, such as default values, input requirements, custom field types, etc.
  3. I wouldn’t be able to use the layout things that ATK UI brings (i.e, addColumn, addGroup) to the form design, would I? I’m a good algorithm coder, and can write business logic very quickly, but I’m really bad at interface design – ATK UI’s way of getting a nice-looking user interface from business-logic-type code is very attractive to me.

Or am I missing something?


ATK has some built-in methods for displaying data sets based on criteria. I like to use a minimal amount of open fields for items that are harder to select/process in real-time (like daily vs weekly summaries) and use ATK filter columns for general filtering such as choosing a date-range.


Hmm why then don’t you display the result report in a grid with the selected columns? You can build an empty grid initially, when user selects his fields & periods, you will reload that gird and during the refresh you will add the selected fields in the grid?


That’s exactly what I do to display the report – the Grid’s great. But since it contains a summary of the periods (initially coded with aggregate expressions in my Model definition), not the period data unprocessed, every time I do something in the grid (like sort by a certain column) it refreshes/recalculates the report, which can be slow (hence my question in another thread about using temporary SQL tables with Agile Data/UI).

The look & feel I’m talking about here is why I like using Agile UI for the interface to configure the report – if I used a non-Agile UI form to just store things in SESSION, as another user suggested, then that selection interface would look different from other areas where I do use Agile UI. And I wouldn’t be able to use all the things like groups, columns, etc. to help build my form into a decent-looking form (something I’m personally very bad at, and love having Agile UI to help with).