spec/svc_ls.cfm
2025-06-09 16:03:38 +03:00

134 lines
6.0 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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"/>