[Phpmyadmin-devel] Gsoc : zoom search implementaion abstract view [2nd draft]

Marc Delisle marc at infomarc.info
Tue Mar 29 13:18:18 CEST 2011

Dushy at nT T!wAr! a écrit :
> Hi,
> With reference to my previous ideas regarding zoom search, I present 
> here some of the implementation details of the project.
> Implementation tags: php, jQuery, ajax
> *Default View:*
> Every database is first represented as a scatter of points based on its 
> primary key values.

I guess you mean "Every table".

> 1.       This is very intuitive if the primary key is a numeric value.

I don't understand, in this case, which second column you choose to base 
the scattering, for the other axis.

> 2.       For varchar type primary keys we can always define ranges. For 
> example the values based on initials can be clubbed together and 
> represented as a graph. The following illustration shows it
> C|
> B|
> A|___________________________________
>     Values with their relative order in the class->

Good idea; beware of special characters as initials for all languages.

> Example: ‘AB’ and ‘AC’ will belong to the same class of A but ‘AC’ will 
> lie to the right of ‘AB’.
> Zooming into a class will result in more detail scale. Ex A on the y 
> axis will become AA, AB etc.
> 3.       If a primary key is represented as enum (which is very rare) 
> then a pie chart can be formed.
> *User defined:*
> The user will be allowed to pick up 2 columns and then view them 
> graphically. The allowed type will be based on the type on the data type 
> of the 2 columns.
> For example: A varchar and integer col can be represented as a graph 
> with discrete classes (‘A’,’B’ etc) on the x axis and values at the y 
> axis. And can be accordingly mapped.
> At every zoom level we keep a track of the points displayed. The cool 
> feature of this api will be as the user selects 2 columns to view at any 
> zoom level. The points available at that zoom level get affected and 
> form a scatter (or the graph depending on the selection).
> *Some intuitive operation*
> Once the data is graphically represented we can easily associate values 
> with each point and manipulate them (update, delete).
> Also a nice addition can be a graphical way of inserting data as we can 
> map every single pixel easily using jQuery (even simple javascript also) 
> we can register a click (when user is in the insert mode) and 
> appropriately map the 2 columns displayed and provide a nice ajax pop up 
> that will allow user to add information about other fields in the table.
> These are the feature I find appropriate for a 13*40hr project. One of 
> the hot trends on the mailing list was how to implement zooming feature.
> *ZOOOoooooOM*
> At this juncture I can think of a simple algorithm based on jQuery. The 
> ui will listen to the mouse wheel. At every discrete step it will create 
> a rectangle with center at the mouse pointer location. Every time we 
> zoom in the rectangle will be reduced in its size. Since we will map 
> every pixel in the ui we can easily find out the points that lie inside 
> the region and hence appropriately show them.
> One advantage of this is we can use simple limits for points and check 
> what all qualifies. Also this will also allow us to provide an abstract 
> view of level of zoom in the database also.
> For example: A small section in the ui can show the database and a 
> rectangle showing where we are right now.
> Let me know your suggestions.

Very interesting!

Marc Delisle

More information about the Developers mailing list