Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

IrisWebClient

The Rich GUI web application for InterSystems IRIS database.

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

📘 Full Docker Installation Guide:

IrisWebClient runs on Windows and Linux hosting

The Rich GUI web application for the InterSystems IRIS database

A modern web client built with Delphi + uniGUI and connected to InterSystems IRIS via ODBC.
The application demonstrates full CRUD operations, referential property handling, and IRIS-native filtering using implicit JOINs.

Features

<ul> <li>Multiplatform Deployment — Windows and Linux supported <ul> <li>Linux: Standalone ELF executable, Apache module</li> <li>Windows: Service, Standalone EXE, ISAPI</li> </ul> </li>

<li>Full CRUD (Create, Read, Update, Delete) for IRIS persistent classes</li>

<li>Insert/Update of Referential Properties <ul> <li>Person → Spouse</li> <li>Employee → Company</li> </ul> </li>

<li>IRIS Implicit JOIN Filtering <ul> <li>Filter by nested referential fields</li> <li>Examples: <ul> <li>Person.Spouse.Name</li> <li>Employee.Company.Name</li> <li>Address.City</li> </ul> </li> </ul> </li>

<li>Rich web UI built with uniGUI</li> <li>ODBC connectivity for SQL access to IRIS</li> <li>Zero‑installation browser client</li> </ul>

Quick Start

How to Test

If you want to test the app without installing anything: [https://demo.irisclient.org](https://demo.irisclient.org)

Login: demo

Password: demo

IrisWebClient – Docker Installation Guide

ODBC Installation Guide

Architecture Overview

<ul> <li>Frontend: uniGUI (Delphi) https://unigui.com/ </li> <li>Backend: InterSystems IRIS https://www.intersystems.com/</li> <li>Connectivity: IRIS ODBC driver, used over standard FireDAC data access library in Delphi</li> <li>Data Model: Person, Employee, Company, Address (with referential relationships)</br>
ObjectScript-Native-API-demo </li> </ul>

CRUD Demonstration

The application implements full CRUD for all major entities:

<table> <tr> <th>Entity</th> <th>Create</th> <th>Read</th> <th>Update</th> <th>Delete</th> <th>Referential Fields</th> </tr> <tr> <td>Person</td> <td>✔</td> <td>✔</td> <td>✔</td> <td>✔</td> <td>Spouse, Address</td> </tr> <tr> <td>Employee</td> <td>✔</td> <td>✔</td> <td>✔</td> <td>✔</td> <td>Company</td> </tr> <tr> <td>Company</td> <td>✔</td> <td>✔</td> <td>✔</td> <td>✔</td> <td>—</td> </tr> </table>

Referential Property Handling

The application demonstrates how to:

<ul> <li>Insert and update objects with references.</li> <li>Display referential fields in grids.</li> <li>Resolve nested properties (e.g., Person.Spouse.Name).</li> <li>Maintain referential integrity through UI controls.</li> </ul>

Filtering with IRIS Implicit JOIN

IRIS automatically resolves referential properties in SQL queries.
This application shows how to filter by nested properties without writing explicit JOINs.

<pre><code> SELECT * FROM ONAPI.Person WHERE Spouse->Name LIKE 'A%' </pre></code>

Installation on Windows host

<ul> <li>Install IRIS</li> <li>Load sample classes to IRIS</br> use ObjectScript-Native-API-demo</br>
<pre><code>git clone https://github.com/r-cemper/ObjectScript-Native-API.git</code></pre> load classes <pre><code> USER>do $system.OBJ.LoadDir("...\ObjectScript-Native-API\src\ONAPI","ck") </code></pre>Run the database installation. This is an interactive process; you will be asked how many Persons, Employees, and Companies to create.

<pre><code>USER>do ##class(ONAPI.demo).Run()</code></pre> </li> <li>Configure ODBC DSN

Create a 'User DSN' for InterSystems IRIS ODBC driver </li>
<li>Build the uniGUI IrisWebClient.exe application in Delphi</br> Delphi 12 CE was used to create this aplication, but the application should build </> with no problems on any modern Delphi version since uniGUI is only third-party dependency,</br> but indeed the breakthrough technology. </li>

<li>Update connection.ini with ODBC connection parameters and make sure the file is located in the same directory as IrisWebClient.exe <pre><code> DataSource=... User_Name=... Password=... ODBCDriver=InterSystems IRIS ODBC35 Database=... DriverID=ODBC</code></pre> </li> <li>Make sure login.html is located in the same directory as IrisWebClient.exe.</li> <li>Run IrisWebClient.exe and navigate your browser to the default address and port:</br>
http://localhost:8077</li>

</ul>

Screenshots

Main Dashboard Use implicit JOIN to select referential fields. <pre><code>SELECT *, Spouse->Name AS SpouseName FROM ONAPI.Person </code></pre> This works perfectly fine with FireDAC over IRIS ODBC. IRIS ODBC does accept object‑projection syntax (->) when the SQL is passed through FireDAC unchanged </br> Assigning referential properties Select a Person, click button in SpouseName column, select a Spouse, click 'OK' to confirm assignment Implementation using ODBC layer as FireDAC dataset. Assign referetial field with reference ID and do Post. <pre><code> FTargetDataSet.Edit; FTargetDataSet['Spouse'] := qryPersonDict['ID']; FTargetDataSet.Post; </pre></code> </br> Searchable Lookup Combobox Assign <code>Employee->Company</code> by selecting a company in the searchable lookup combobox.

Lookup persistent fields in Delphi provide a true No‑Code solution.
Simply configure the Lookup properties in the Object Inspector.

</br> Filtering using referential properties Use 'Filter' button to call Filter dialog and add add filtering criteria </br> Calendar widget in the Grid

License

MIT LICENSE