POST #021
=======================================================================
The end-result of this mini-video was demonstrate the aproach JSON based-data or key-per-column. The idea is store UI settings JSON object into Sqlite database. Once stored, I’ll retrieve these preferences when user returns to the web app and set the UI as it was when they last left it at later time. One obvious drawback of this approach is that it makes it VERY slow to find things, but it's fine for small structure of data you don't need to search by.
I'm using meta columns which stores data about the user in JSON format. For example, "roles" object is stored as TEXT in Sqlite database column, and extracted directly as such from DB. You just need to decode JSON string as a JSON object. For instance, it is just one line of javascript. I'm using the stringify method to convert the JS object into a string, store it in the Sqlite database and then pull it back and use the reverse parse method to give me the javascript object back.
Maybe this is neither the best aproach to store UI user preferences nor design-wise or performance-wise, but I believe that it often makes sense to organize small trunk of data and store it in json object in database. That's all.
POST #020
=======================================================================
In this mini video, I gonna use the old Delphi 7 to build a mobile web frontend application for displaying "NorthWind Traders" database data coming from a
mORMot server. Northwind Traders is based on sample database that ships
with Microsoft Access. I use the ideas in Northwind Traders to implement this mobile version.
The end-result is mORMot data server providing data optimized for web browsers available on smartphones, like Blackberry, iPhone, Android and others. At this time of this writing, I'm going to point out two things:
a) I know barely nothing about application development for smartphones; and
b) this is my first mobile version using Delphi.
I guess many companies are creating mobile applications for their internal staff, for their customers, or both. These applications need access to data, business rules, and business processes. For architectural and security reasons these applications are typically built to access remotes services that provide the data and functionality that are required by the users.
I believe that it often makes sense to organize those services into a mobile environment built using REST, and delivering data in JSON format. Believe it or not, this is possible using the old Delphi 7. Here, Delphi 7 provides dynamic JSON to a thin javascript client.
Tags: smart phones with delphi; Delphi mORMot with Blackberry; Delphi jquery mobile; Delphi REST server;
POST #019
=======================================================================
This is the 1st part of the mini-video about uniGUI. Developing a stateful Rich Internet
Application (RIA) is one of the challenging fields in software
development. uniGUI Web
application framework makes developing
stateful Web applications easier than ever.
uniGUI extends Web
Application development experience to a new dimension. In my little experiment, I'm using uniGUI with DataSnap.
uniGUI with DataSnap seems to be a good match.
DataSnap architecture is more flexible than before. It moves the
connection between the client applications and database server to
application server and database server while you can connect many
client applications to the same application server.
Tags: RIA with Delphi; unigui; DataSnap with uniGUI; unigui web application.
POST #018
=======================================================================
You can create web applications RIA (Rich Internet Application) without the need for many specific knowledge for web environment, such as HTML, javascript, CSS, PHP, etc.
You can use the same code base object pascal to create a desktop app and a win32 VCL application RIA web quickly and very easily.
If you do not know, uniGUI is an alternative for developing RIA web applications using 100% AJAX features of the Delphi RAD environment. In uniGUI, most of the business logic, as well as the complexity of threads, managing multi-user access and all data is located in a central layer, running on the server.
You can freely download uniGUI beta, for testing. But if you intend to use it to publish a web application or even a commercial application freeware, closed source, the developer will have to purchase a full license of ExtJS, which costs about US$330. Any uniGUI server requires a copy of the ExtJS library. Due to its licensing scheme, I think even freeware closed source applications are unable to use it. According to the roadmap uniGUI, from version 1.0, it is likely that uniGUI be marketed - in 2013, and the license price will be the "style" of the Sencha ExtJS, around US$330 per developer, ie, to use uniGUI, developer should spend approximately R$1.200,00 (BR).
I was wondering about using mORMot together uniGUI. In uniGUI, since all server-centered activity is hosted in one multi-thread process. Perhaps, make sense to use a local SQLite database engine. I'd like to use SQLite3 as a client-server where the same database will be accessed simultaneously by many clients/threads, accessing a common database. Interesting, isn't it?
Typically in uniGUI, if you want to show records from your database table on a DBGrid in your application, you will need:
1. TSQLConnection to provide the necessary connection details to the database. One TSQLConnection can service several TSQLDatasets.
2. A TSQLDataset component which will specify the TSQLConnection component in the SQLConnection property.
3. A TDatasetProvider component which will specify the TSQLDataset in its Dataset property.
4. A TClientDataset component which will specify the TDatasetProvider in its ProviderName property
5. A TDataSource component which will specify the TClientDataset component in its Dataset property.
A TDBGrid component which will specify the TDataSource in its DataSource property.
By setting the appropriate Active properties to true in TSQLConnection, TSQLDataset and TClientDataset you should find that the data will appear in the grid. __________ I skipped steps 1-2 to simply display data in a DBGrid, for me, the easiest way to edit/delete/insert any of the cell values in a DBGrid with mORMOt and write back do database is using TClientDataSet. On BeforeApplyUpdates event I could capture delta, and put Delta back to to the database using Batch sequences. TDatasetProvider here is like a pipe connecting TClientDataset with TSQLTableJSON. It seems like quite a bit of effort to simply display and modify records in a DBGrid, but that is the way it works!
Yep, this is like bizarre creatures from another planet.
Tags: RIA with Delphi; unigui; mORMOt with uniGUI; unigui web application.
POST #017
=======================================================================
Remember that old demo well known "FishFacts" developed with Delphi win32 that displays a list of fishes, as well fishes images and notes text BLOBS from a paradox dataset Biolife. Old days...
Now, I’m using mORMot, with a background HTTP REST server, together with its SQLite3 database engine. I’ve implemented a thin client, Ajax-ready, open and lightweight javascript client using jQuery, that shows how to display style memo and graphic fields. This app has been compiled with Delphi 7, but you can recompile it with Delphi 2009/2010/XE.
Tags: Delphi with jQuery; Delphi REST server; Delphi mORMOt with thin client.
POST #016
=======================================================================
Rather than just dabbling around a handful of jqGrid demos examples, I recently spent a few hours building a quite simplistic project using jqGrid with mORMot. I found that functionalities like "remote paging", "remote sorting" and "remote multi-searching" are working fine.
Remote paging is fine but I would like the grid will automatically postback to the server when end-users select a row and will fire the RowSelecting event handler and databind a second grid with details. I have tested more complex events, such as a subgrid. It's so fast and beautiful.
I had to use boils down (to do a MacGyver) to handle master detail and subgrid with mORMot with jqGrid. Technically everything goes pretty well.
Tags: Remote Filtering with jqGrid and Delphi; jqGrid with Delphi mORMot; Master detail grid with jqGrid and Delphi mORMot; subgrid with jqGrid and Delphi mORMot;Delphi Restful.