Saturday 28 May 2011

GSoC 2011: Week 1

So this was the official first week of coding. My first task was to design an interface where the user will provide his search criteria, which will then be used to generate a plot.

Firstly, we had to look around and see where to put the interface. There are two places where users can search:
  • The multi-table query generator: It looked a bit complicated to add the interface/link there. Also its not a relatively popular place to search.
  • The table-search page: It looks simple, just displays the fields of a table in query-by-example manner and user can search on it. It is better suited as the task requires search criteria over a single table. 
After discussing it further on the list, we went ahead with developing it on the table-search page. Within the table-search page, two sub-tabs were provided, one for normal table search and the other for zoom-search.

Since this interface requires search criteria on just two columns and the user can put two different search criteria on a single column. This case could not be handled in the table-search page so we made slight modifications to the design. A user first selects the two columns from two drop down lists. The column type,collation, operations and criteria fields of the column are displayed upon selection. It also saves a lot of space on the interface. It uses a little less of jQuery and has a different query generation process. Instead on one search-query spanning all columns, two queries (one for each criteria) is generated. This will also help in future, if we decide on letting the search span multiple tables.


While coding for this I tried coding both the interface in the table-search page(tbl_select.php) but realized that it will complicate future work. So I created a separate component for the zoom-search interface. In doing so I have ended up duplicating a lot of the code, for which I have to refactor the common code into functions and put it in the library part.

My immediate task is to complete this interface asap by refactoring the code and discussing the design for further modifications.