Table from database
There exist typical operation of looking database table:
smaller quantity of records is shown in browser, bigger quantity is still not inquired from database.
We enter html-element dialogue, displaying records of database table
with slider on right side
(that database table is demonstrated especially so,
instead of representation as tree or cube,
property type must be equal record).
In attribute roll, we specify name of database table
<dialogue roll="A"/>
dialogue {
type: record;
}
or SQL-request
<dialogue roll="select * from A where a15=100"/>
dialogue {
type: record;
}
and in properties
- address - domain name or IP-address of DBMS
(by default it's the same address, from which html-document is obtained)
- size - quantity of simultaneously displayed records (i.e. lenght of html-¤ыхьхэЄ)
- type=record
Connection with database occurs via separate TCP-port by protocal SQL5.
When browser meets this html-element during loading document, it:
Note: field of view A refers to the same column of some table C,
to which field of table B, entered into view, refers.
Displayed values are demonstrated so:
If user press "arrow-down" on last received record, then browser asks next portion by request
select * from A downward a1="v50_1" a2="v50_2" a3="v50_3" limit 50;
If user press "arrow-up" in first newly received record,
then browser asks previous portion (which can be changed already in database)
select * from A upward a1="v100_1" a2="v100_2" a3="v100_3" limit 50;
If user tries to enter value into refering (to some master table) field,
then new separate browser window appears with content of master table
(user must choose record of master table).
If user appends new record and fill all its obligatory cells
(which are known from database scheme), and wait time, equal double-click,
then browser immediately saves appended record.
If user changes record, and wait time, equal double-click,
then browser immediately saves new variants of record.
If user deletes record (by button
"Dell" in browser menu), then browser deletes it in DBMS.
Each 1-st click on column header orders to request portion of records from database,
sorted by ascending, beginning from current record.
Each 2-nd click - by descending.
Displaying of columns
CSS can make some columns non-displayed
dialogue зa2 {
display: none;
}
Table columns are displayed in line with CSS, specified for them.
Properties of columns can be equal to not only constant (as in CSS now), but to values of other columns too
(it's necessary to specify name of xml-attribute, anticipated by sign "з", as value of property).
dialogue зa3 {
color: зa4;
font: зa5;
}
Property header specifies header for each column
(by default header is equal to name of field in database).
dialogue зa3 {
header: "column header"
}
Following value of property path means,
that "C" is master table for table "B", "B" is master table for field "зa2",
and that browser visualize content of table "C" before in separate window
to choose sub-set of table "B"
(i.e. records of table "B", which refer to chosen record of table "C").
dialogue зa2 {
path: B C;
}
Fields of current record (on which user's cursor is) can be duplicated in input
-
input
must have the same value of attribute roll,
as dialogue has,
and must contain names of xml-attributes in attribute value
(their attribute type
is ignored, because is specified by database scheme).
Changes, entered into current record, is displayed in input
too;
changes, entered into these input
, is displayed in current record too.
<dialogue roll="A"/>
<input roll="A" value="a1">
<input roll="A" value="a2">
<input roll="A" value="a3">
If master and slave table are displayed in two dialogue of one html-document,
then only records, refering to current record of master table, are demonstrated in slave table.
<dialogue roll="M"/>
<dialogue roll="S"/>
If master and several slave tables are displayed each in separate dialogue
of one html-document,
then only records, refering to current records of master tables, are demonstrated in slave table.
<dialogue roll="M1"/>
<dialogue roll="M2"/>
<dialogue roll="M3"/>
<dialogue roll="S"/>
If slave table refers to master table by several own fields, then
attribute influence of master dialogue specifies
value of attribute id
of slave dialogue,
and attribute to of master dialogue specifies
name of column of slave database table.
<dialogue roll="M" to="s3"/>
<dialogue roll="M" to="s5"/>
<dialogue roll="M" to="s7"/>
<dialogue roll="S"/>
<dialogue roll="M" influence="id1" to="s3"/>
<dialogue roll="S" id="id1"/>
<dialogue roll="S" id="id2/>
Besides this, it's possible to specify additional virtual columns for master table,
property cultivate of which contains name of slave table,
and property to - refering field of slave table.
If user clicks on cell of so virtual column,
new separate browser window appears with records of slave table, which refer to record of master table
(to see all records of slave table, it's necessary to press button
"All" in browser menu).
dialogue зm20::after { cultivate:S; to:s5 }
dialogue зm20::after::after { cultivate:SS; to:ss8 }
dialogue зm20::after::after::after { cultivate:SSS; to:sss7 }
Property to is unnecessary, if only one field of slave table refers to master table.
dialogue зm20::after {
cultivate: S;
}
P.S.
dialogue with any value of property type
(equal to record, tree, or cube)
can be master html-element for
dialogue with any value of property type.
Html-document itself, requests from all dialogue, containing in it,
answers to request go sequentially via the same TCP-connection
(answers are separated from each other and from html-document by bament
<?new/?>,
answers come after end of accepting html-document).
Dmitry Turin