Сообщение от Georgy
|
Есть какие-нибудь альтернативы?
|
Таки выкинуть ПХП и перейти уже на zen.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page xmlns="http://www.intersystems.com/zen" title="">
<html>
<h1>Список работ</h1>
</html>
<hgroup width="100%" cellVAlign="top">
<vgroup id="gTbl" width="90%" cellVAlign="top">
<tableNavigator id="tnJob" tablePaneId="tpJob" align="right"/>
<tablePane
id="tpJob"
tableName="wrk.Job"
valueColumn="ID"
pageSize="50"
useSnapshot="true"
caption="Работы"
onselectrow='zenPage.Select(zenThis.getValue("ID"))'
ondblclick='zenPage.Edit(zenThis.getValue("ID"));'
showValueInTooltip='true'
OnCreateResultSet="CrtSQL"
>
<column
header="Id"
colName="ID"
hidden="true"
/>
<column
header="Название"
colName="Name"
filterType="text"
/>
<column
header="Исполнители"
colName="Member"
width="180px"
filterType="query"
filterQuery="Select Name From wrk.Member Order by Name"
/>
<column
header="Завершение"
colName="Brk"
width="120px"
/>
<column
header="Квартал"
colName="Kvartal"
width="130px"
/>
<column
header="Ok"
colName="Ok"
width="40px"
filterType="enum"
filterEnum="Да,Нет"
/>
</tablePane>
</vgroup>
<dataController id="cnJob" modelClass="wrk.Job"/>
<spacer width="10px" />
<vgroup id="gBtn" cellVAlign="top">
<button
id="bExit"
caption="Выход"
onclick="zenPage.Go('wrk.ZEN.Menu.cls');"
controlClass="btn"
/>
<button
id="bLoad"
caption="Обновить"
onclick="zenPage.Load();"
controlClass="btn"
/>
<fieldSet legend="Работу">
<button
id="bAdd"
caption="Добавить"
onclick="zenPage.Add();"
controlClass="btn"
/>
<button
id="bDel"
caption="Удалить"
onclick="zenPage.Del();"
controlClass="btn"
/>
</fieldSet>
</vgroup>
</hgroup>
</page>
}
/// Построение запроса для отображения таблицы
Method CrtSQL(Output tSC As %Status, pInfo As %ZEN.Auxiliary.QueryInfo) As %ResultSet
{
Set tRS = ""
Set tSC = $$$OK
Set tSELECT = "ID,Name,"
Set tSELECT = tSELECT_"wrk.Job_AllMember(ID) as Member,"
Set tSELECT = tSELECT_"dEnd as Brk,"
Set tSELECT = tSELECT_"wrk.Plan_KvrToStr(Plan->ID) as Kvartal,"
Set tSELECT = tSELECT_"wrk.Job_Ok(ID) as Ok"
Set tFROM = "wrk.Job as a"
Set tWHERE = ""
Set tORDER = "dCreate desc,Member"
// строим критерии отбора по фильтрам
If $g(pInfo.filters("Name"))'="" {
Set tWHERE = tWHERE_"Upper(Name) [ Upper('"_pInfo.filters("Name")_"') "
}
If $g(pInfo.filters("Member"))'="" {
Set:tWHERE'="" tWHERE=tWHERE_" AND "
Set tWHERE=tWHERE_"wrk.Job_AllMember(ID)['"_ pInfo.filters("Member")_"'"
}
If $g(pInfo.filters("Ok"))'="" {
Set:tWHERE'="" tWHERE=tWHERE_" AND "
s ok="<>"
s:pInfo.filters("Ok")="Да" ok="="
Set tWHERE=tWHERE_"wrk.Job_Ok(ID)"_ok_"'Да'"
}
Set sql = "SELECT " _ tSELECT _ " FROM " _ tFROM
Set:tWHERE'="" sql = sql _ " WHERE " _tWHERE
Set:tORDER'="" sql = sql _ " ORDER BY " _tORDER
Set tRS = ##class(%ResultSet).%New()
Set tSC = tRS.Prepare(sql)
Set pInfo.queryText = sql
Quit tRS
}
И ты уже имеешь вот такую страничку с табличкой
Там три фильтра. Помимо этого, если клацать на заголовки столбцов, будет выполняться сортировка таблицы по данным столбца, как по "возрастанию" так и по "убыванию".
Причём в сортировке будет учитываться типаж данных в колонке (строка, дата, время, число и п.р.)...