Monday, June 30, 2014

GSoC 2014 week 6

First, I was really glad to received the email saying that I got through the mid-term evaluation. I need to thank my mentor Madhura Jayarathne for the guidance provided and all others, supported through the mailing list, to achieve this milestone.

During the mid evaluation period, I did some more improvements in the exporting functionality based on the review comments. Also in the show/hide tables in the designer view.

The major task for this few weeks is to enhance the usability of the designer. That is, to use the designer, users need to do some configurations explicitly, which, most of the time, will not be done by the users, hence these funcationalities will never be used.

So the main goal of this task is to provide a mechanism in such a way that, users will not need to configure anything, but still should be able to use the designer. For that "Client side databases" will be used.

After analyzing currently available technologies:
  • Web storage
  • Web Sql database
  • Indexed database
are the most commonly used. Web storage uses a "key-value" pair method to store objects in the browser. Although it's a simple mechanism, It's performance decreases as the data become large and complex. Web Sql database is a normal "SQL" - relational database, and has good performance even for the large data sets. But because of low agility and being deprecated, users are moving away from that.

On the other hand Indexed database is made up by combining all the strengths of both web-storage and Web Sql databases. So its more powerful than any of the above two. Also its browser compatibility is increasing.



Monday, June 23, 2014

GSoC 2014 week 5

As the project has now come to the mid-term evaluation, I've almost completed my first two tasks, as I planned initially. Still I'm getting some feed-backs for the changes I did, but in overall, I've successfully covered all tasks.

Now with the new designer page, a user can:

  • create new pages 
  • edit a page
  • delete a page
  • save changes to a new page or an existing page
  • export pages in various formats.
With these changes done, we can remove the existing "Edit or export relational schema" functionality from the phpmyadmin.


Monday, June 16, 2014

GSoC 2014 week 4

During the last week, I did more changes to my first task to make it more user-friendly and functionality-rich.

Following is how the new tool bar of the designer looks like:

"Edit pages" button was removed and added two new buttons, "Open Page" and "Delete Page", which will have the "Edit Page" and "Delete Page" functionalities respectively. Besides these two buttons, one more "New Page" button was introduced, So that the user will not get confused, while trying to create a new pdf page.

For the current task, which is to integrate the exporting functionality of the schema editor into the designer, a new "Export Page" button was introduced.



Similar to the exporting functionality of the schema editor, this new export pages functionality will use the same classes.


Monday, June 9, 2014

GSoC 2014 week 3

The last week was the final week for completing the first task of my project. As I've been describing in my previous posts, "save as" and "edit" options are introduced. Apart from that, functionality of the"save" button has been changed so that the changes will be saved into the "table_coords" table.

in coding perspective, the new functionalities are handled through the "pmd_general.php" file. Following is a screenshot of the code portion which handles all the new added features.


The functionality which handles the saving is changed to save data into the  "table_coords" table. Same functionality is used for the "save changes to existing page" option.


So now, in the designer, "designer_coords" table will not be used, in fact "pdf_pages" and "table_coords". So unlike the previous behavior, the designer will load page wise designs.

Possible TODOs: add option to delete tables from the pdf pages.
So the user has more flexibility over the pdf pages.

I'll put the details of the next task in a seperate blog post soon.


Monday, June 2, 2014

GSoC 2014 week 2

As shown in my last week flow diagram, I've almost completed the first task. The "save as" and "edit pages" functionalities are being introduced, by means of dialog boxes. Following are the screen shots of them:

Save as:

Edit pages:

Changes done in the code:

separate php files will handle the "save as" and "edit pages" functions (save_as_pages.php and edit_pages.php). According to the flow diagram, another file(pmd_page_loader.php) will handle the page loading function.

Now the designer will be loaded with data from "pma__table_coords" instead of "pma__designer_coords". So the system can load different pages upon user selection.

TODO:
do modifications to the "save" function when there are new/edit pages
modify the pmd_general.php file in such a way that, html will be moved to another files and retrieved by function calls.


Monday, May 26, 2014

GSoC 2014 week 1

As mentioned in my last week's post, I've been implementing the mentioned three tasks.

Following is the flow diagram of the new functionalities added to the designer:

As shown in the diagram, I'm trying to generalize functions as much as possible so that, I can re-use them very easily.

Following is how the new interface looks:


"Import/Export coordinates for PDF schema" button is removed, because it will be implemented as a part of the integration.

Adding slight modifications to the previously planned design, the new "save as" and "edit pages" functionalities will not direct user to a new page, instead, dialog boxes will be pop-up.

Following is the "Edit pages" dialog box, which I implemented.


TO DOs for the next week:

  • "Save as" functionality is to be implemented.
  • page loading functionality is to be implemented.

* I did not commit these changes because still some core functionalities to be implemented and tested.

Monday, May 19, 2014

First week of GSoC 2014 : TODO

Today, the 19th of May 2014, is the official "start coding day" for GSoc 2014. So after spending almost a moth for community bonding, and in spending that time period for analyzing the code, I'm in a good position to start coding.

To start with, according to my plan, I will be working on the task 1:

Prevailing "Designer" and "Edit relational schema" pages share overlapping functionalities. So the intention of the phase 1 is to create one page by combining the features of these two pages. So that there will be no two similar GUI's in the future, instead only the "Designer". With the new designer, a user would additionally be able to:
  1. Change the table layout in the designer and save to database's default layout.
  2. Load a saved set of coordinates from a page, edit and save them.
  3. Perform a "Save as" on edited coordinates to create a new page.
1). When a new user opens the designer, the default table layout will be shown. But if there are existing saved table layouts, then the first layout will be loaded.

2). A new functionality will be introduced into the designer - "edit page", where a user can edit, delete existing pages.

3). Another new functionality will be added - "save as", where the coordinates can be saved to an existing page or a new page.

Following is the new interface for designer:


Following is the page directed by "save as" button:

Following is the page directed by "edit page" button:

Although I've made these mock-ups and started developments, always welcome feed backs.