134 lines
6.0 KiB
Plaintext
134 lines
6.0 KiB
Plaintext
<cfsilent>
|
||
<cfimport prefix="m" taglib="lib"/>
|
||
<cfimport prefix="c" taglib="lib/controls"/>
|
||
<cfimport prefix="d" taglib="lib/data"/>
|
||
<cfimport prefix="layout" taglib="layout"/>
|
||
</cfsilent><m:silent silent="No">
|
||
|
||
<cffunction name="hideNonPositive">
|
||
<cfargument name="a"/>
|
||
<cfreturn (a GT 0)? a : ""/>
|
||
</cffunction>
|
||
|
||
<m:prepare_ls entity="svc" accessObject="" pageInfoOut="pageInfo" trackOut="tr"/>
|
||
|
||
<cftry>
|
||
<cfquery name="qRead" datasource="#request.DS#">
|
||
select
|
||
<d:field_set titleMapOut="titleMap" lengthOut="fieldCount">
|
||
<d:field title="ID" cfSqlType="CF_SQL_INTEGER">s.svc_id</d:field>
|
||
<d:field title="Наименование">s.svc</d:field>
|
||
<d:field title="Сокращение">s.svc_short</d:field>
|
||
<d:field title="Имя для оркестратора">s.orchestrator_name</d:field>
|
||
<d:field title="Код">s.code</d:field>
|
||
<d:field title="Production Ready">s.is_production_ready</d:field>
|
||
<d:field title="Описание">s.descr</d:field>
|
||
<d:field title="v">s.version</d:field>
|
||
<d:field title="Sort">s.sort</d:field>
|
||
<d:field title="Экземпляров">(select count(*) from specification_item i where i.svc_id=s.svc_id) as spec_cnt</d:field>
|
||
</d:field_set>
|
||
from svc s
|
||
where 1=1 <m:filter_build filter=#pageInfo.settings.filter#/>
|
||
order by <m:order_build sortArray=#pageInfo.settings.sort.sortArray# fieldCount=#fieldCount#/>
|
||
</cfquery>
|
||
|
||
|
||
<cfcatch type="database">
|
||
<!--- <cfrethrow/> --->
|
||
<m:ls_catch catch=#cfcatch# status=#pageInfo.status#/>
|
||
</cfcatch>
|
||
</cftry>
|
||
|
||
<cfquery name="qCountTotal" datasource="#request.DS#">
|
||
select count(*) as cnt from svc where 1=1
|
||
</cfquery>
|
||
|
||
</m:silent><!---
|
||
-----------------------------------------------------------------------------------------
|
||
-----------------------------------------------------------------------------------------
|
||
-----------------------------------------------------------------------------------------
|
||
---><cfif isDefined("output_xls")>
|
||
<layout:xml qRead=#qRead# titleMap=#titleMap# filename="#pageInfo.entity#.xml"/>
|
||
<cfabort/>
|
||
</cfif><cfif isDefined("output_json")>
|
||
<layout:json qRead=#qRead# titleMap=#titleMap# filename="#pageInfo.entity#.json"/>
|
||
<cfabort/>
|
||
</cfif><!---
|
||
---><layout:page section="header" pageInfo=#pageInfo#>
|
||
|
||
<layout:attribute name="title">
|
||
<cfoutput><b>Сервисы</b></cfoutput>
|
||
</layout:attribute>
|
||
<layout:attribute name="controls">
|
||
<!---skip filter link, filter is not implemented--->
|
||
<!---<layout:language_switch/>--->
|
||
</layout:attribute>
|
||
</layout:page>
|
||
|
||
<cfif pageInfo.readPermitted() AND !pageInfo.status.errorState>
|
||
|
||
<layout:grid_summary
|
||
recordCount=#qRead.recordCount#
|
||
totalCount=#qCountTotal.cnt#
|
||
footerOut="gridFooter"
|
||
excelLink="Yes"
|
||
jsonLink="Yes"
|
||
/>
|
||
|
||
|
||
<!--- так довольно громоздко, но можно обойтись без Dynamic Evaluation --->
|
||
<cfset queryAddColumn(qRead,'f_link_view_edit')/>
|
||
<cfset titleMap.f_link_view_edit={ordinal=#StructCount(titleMap)+1#}/><!--- *** Это легко забыть, потому что TitleMap никак не сцеплен с qRead. Напрашивается: упаковать их в одну обертку (но тогда обращение станет длиннее). Еще идея - назвать qRead и TitleMap так, чтобы была видна их связь. --->
|
||
<!--- <cfdump var=#titleMap#/> --->
|
||
<cfset queryAddColumn(qRead,'f_link_del')/>
|
||
<cfset titleMap.f_link_del={ordinal=0}/>
|
||
|
||
<cfset queryAddColumn(qRead,'f_is_production_ready')/>
|
||
<cfset titleMap.f_is_production_ready=titleMap.is_production_ready/>
|
||
|
||
<cfset queryAddColumn(qRead,'f_svc')/>
|
||
<cfset titleMap.f_svc=titleMap.svc/>
|
||
|
||
|
||
<cfoutput query=#qRead# startRow=#pageInfo.nStart# maxRows=#pageInfo.recordsPerPage#><!--- *** Здесь некомфортное дублирование startRow, maxRows с вызовом c:table ниже, причем в c:table оно закопано в модуль, и аргументы называются по-разному... но мы хотим немного сэкономить и не обрабатывать весь резалтсет --->
|
||
<cfsavecontent variable="qRead.f_link_view_edit">
|
||
<a href="#pageInfo.entity#.cfm?#pageInfo.entity#_id=#svc_id#&#tr.fwx#" name="#svc_id#" <cfif pageInfo.writePermitted()>title="редактировать" class="edit"<cfelse>title="просмотр" class="view"</cfif>></a>
|
||
</cfsavecontent>
|
||
|
||
<cfsavecontent variable="qRead.f_link_del">
|
||
<cfif pageInfo.writePermitted()><a href="#pageInfo.entity#_del.cfm?#pageInfo.entity#_id=#svc_id#&#tr.fwx#" name="#svc_id#" class="del" title="удалить"></a></cfif>
|
||
</cfsavecontent>
|
||
|
||
<cfsavecontent variable="qRead.f_is_production_ready">
|
||
<cfif is_production_ready GT 0><img src="img/ok.png"/></cfif>
|
||
</cfsavecontent>
|
||
|
||
<cfsavecontent variable="qRead.f_svc">
|
||
<a href="#pageInfo.entity#.cfm?#pageInfo.entity#_id=#svc_id#&#tr.fwx#">#svc#</a>
|
||
</cfsavecontent>
|
||
</cfoutput>
|
||
|
||
<c:table query=#qRead# recordsPerPage=#pageInfo.recordsPerPage# nStart=#pageInfo.nStart# titleMap=#titleMap# sortArray=#pageInfo.settings.sort.sortArray# class="worktable wide">
|
||
<c:column width="1%" sortable="false"><!---*** class="c" не пробрасывается --->
|
||
<c:th><c:link_add canWrite=#pageInfo.writePermitted()# entity=#pageInfo.entity# fwx=#tr.fwx#/></c:th>
|
||
<c:td field="f_link_view_edit" class="c"/>
|
||
</c:column>
|
||
<c:column width="3%" field="svc_id"/>
|
||
<c:column width="5%" field="f_svc"/>
|
||
<c:column width="5%" field="svc_short"/>
|
||
<c:column width="2%" field="f_is_production_ready"><c:td class="c"/></c:column>
|
||
<c:column width="5%" field="code"/>
|
||
<c:column width="2%" field="version"/>
|
||
<c:column width="3%" field="sort"/>
|
||
<c:column width="20%" field="descr"/>
|
||
<c:column width="5%" field="spec_cnt" formatter=#hideNonPositive#><c:td class="c"/></c:column>
|
||
<c:column width="1%" sortable="false">
|
||
<c:td field="f_link_del" class="c"/>
|
||
</c:column>
|
||
</c:table>
|
||
|
||
<cfoutput>#gridFooter#</cfoutput>
|
||
|
||
</cfif>
|
||
<layout:page section="footer"/>
|