238 lines
9.1 KiB
Plaintext
238 lines
9.1 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="plain2HtmClean">
|
||
<cfargument name="s" type="string"/>
|
||
<cfreturn request.plain2htm(request.cleanHtm(s))/>
|
||
</cffunction>
|
||
|
||
<cffunction name="cleanInput">
|
||
<cfargument name="s" type="string"/>
|
||
<cfreturn htmlEditFormat(s)/>
|
||
</cffunction>
|
||
|
||
<m:prepare_detail entity="modifier" key="modifier_id" pageInfoOut="pageInfo"/>
|
||
|
||
<d:bean readonly=#!pageInfo.writePermitted()# table="#pageInfo.entity#" datasource="#request.DS#" output="d" status="status">
|
||
<d:param field="modifier_id" type="integer" key autoincrement/>
|
||
<d:param field="modifier_class_id" type="integer"/>
|
||
<d:param field="modifier" type="varchar" size="255" preprocessor=#cleanInput#/>
|
||
<d:param field="modifier_en" type="varchar" size="255" preprocessor=#cleanInput#/>
|
||
<d:param field="code" type="varchar" size="15" preprocessor=#cleanInput#/>
|
||
<d:param field="sort" type="integer" forNull=""/>
|
||
<d:param field="descr" type="varchar" preprocessor=#plain2HtmClean#/>
|
||
|
||
<d:param field="creator_id" type="integer" value="#request.usr_id#" skipUpdate/>
|
||
<d:param field="updater_id" type="integer" value="#request.usr_id#" />
|
||
<d:param field="dt_created" type="timestamp" value="#Now()#" skipUpdate/>
|
||
<d:param field="dt_updated" type="timestamp" value="#Now()#"/>
|
||
</d:bean>
|
||
|
||
<m:dispatch_detail
|
||
usePRG="No"<!---*** --->
|
||
pageInfo=#pageInfo#
|
||
id="#d.modifier_id#"
|
||
status=#pageInfo.status#
|
||
trackOut="tr"
|
||
idAttributesOut="id"
|
||
/>
|
||
|
||
<cfquery name="qUsr" datasource="#request.DS#">
|
||
select
|
||
a.login as creator, a.shortname as creator_shortname, m.login as updater, m.shortname as updater_shortname
|
||
from #pageInfo.entity# e
|
||
left outer join usr a on (e.creator_id=a.usr_id)
|
||
left outer join usr m on (e.updater_id=m.usr_id)
|
||
where e.#pageInfo.key#=<cfqueryparam attributeCollection=#id#/>
|
||
</cfquery>
|
||
<!--- в данном случае пробуем выделить декорирующий селект, потому что селект упрощенного аудита одинаков для всех сущностей --->
|
||
<cfquery name="qDecoration" datasource="#request.DS#">
|
||
select
|
||
m.modifier_id, c.modifier_class
|
||
from modifier m
|
||
left outer join modifier_class c on (m.modifier_class_id=c.modifier_class_id)
|
||
where m.modifier_id=<cfqueryparam attributeCollection=#id#/>
|
||
</cfquery>
|
||
|
||
|
||
</m:silent><!---
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
------------------------------------------------------------------------------------------------------------------------
|
||
---><layout:page section="header" pageInfo=#pageInfo#>
|
||
<layout:attribute name="title">
|
||
<cfoutput>
|
||
Характеристика (модификатор)
|
||
<cfif d.modifier_id GT 0>
|
||
<b>#qDecoration.modifier_class#</b>
|
||
[#d.modifier_class_id#]<cfif len(#qDecoration.modifier_class#) GT 0>:</cfif>
|
||
<b>#d.modifier#</b>
|
||
[#d.modifier_id#]
|
||
</cfif>
|
||
</cfoutput>
|
||
</layout:attribute>
|
||
</layout:page>
|
||
|
||
<cfif status.errorState GT 0>
|
||
<cfoutput><div class="err">#status.errorMessage#</div></cfoutput>
|
||
</cfif>
|
||
|
||
<cfoutput>
|
||
<input type="hidden" name="modifier_id" value="#d.modifier_id#"/>
|
||
<input type="hidden" name="track" value="#tr.self#"/>
|
||
<input type="hidden" name="pass" value=""/><!--- pass marker to prevent save on submit --->
|
||
|
||
<div class="detail">
|
||
|
||
|
||
<div class="tr">
|
||
<div class="th">Класс характеристики</div>
|
||
<div class="td">
|
||
<cfquery name="qModifierClass" datasource="#request.DS#">
|
||
select modifier_class_id, modifier_class
|
||
from modifier_class
|
||
order by 2
|
||
</cfquery>
|
||
<c:combo
|
||
query=#qModifierClass#
|
||
combo="modifier_class_id"
|
||
id="modifier_class_id"
|
||
key="modifier_class_id"
|
||
selected="#d.modifier_class_id#"
|
||
displayf="##modifier_class##"
|
||
empty=""
|
||
class=""
|
||
<!---onchange="submit();"--->
|
||
/>
|
||
<cfif d.modifier_id GT 0>
|
||
<cfif d.modifier_class_id GT 0>
|
||
<a href="modifier_class.cfm?modifier_class_id=#d.modifier_class_id#&#tr.fwx#">
|
||
<img src="img/edit.gif"/>
|
||
</a>
|
||
</cfif>
|
||
<a href="modifier_class.cfm?modifier_class_id=-1&#tr.fwx#">
|
||
<img src="img/add.gif"/>
|
||
</a>
|
||
</cfif>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tr">
|
||
<div class="th">Характеристика (RUS)</div>
|
||
<div class="td">
|
||
<input type="text" name="modifier" value="#d.modifier#" size="70"/>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tr">
|
||
<div class="th">Характеристика (ENG)</div>
|
||
<div class="td">
|
||
<input type="text" name="modifier_en" value="#d.modifier_en#" size="70"/>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tr">
|
||
<div class="th">Код</div>
|
||
<div class="td">
|
||
<input type="text" name="code" value="#d.code#" size="5"/>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tr">
|
||
<div class="th">Сортировка</div>
|
||
<div class="td">
|
||
<input type="text" name="sort" id="sort" value="#d.sort#" size="2" class="r"/>
|
||
<i>Целое число - порядок, в котором Характеристика будет выводиться в списке (или соответствующий Вариант услуги в списке вариантов). Рекомендуется ставить через 100, чтобы потом удобнее было тасовать</i>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tr">
|
||
<div class="th">Описание</div>
|
||
<div class="td">
|
||
<textarea name="descr" rows="10" cols="100">#request.htm2plain(d.descr)#</textarea>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="tr">
|
||
<div class="th">Создано</div>
|
||
<div class="td">
|
||
#dateFormat(d.dt_created,'DD.MM.YYYY')# #timeFormat(d.dt_created,'HH:MM')#
|
||
#qUsr.creator# <cfif len(qUsr.creator_shortname)>(#qUsr.creator_shortname#)</cfif>
|
||
|
||
Изменено
|
||
#dateFormat(d.dt_updated,'DD.MM.YYYY')# #timeFormat(d.dt_updated,'HH:MM')#
|
||
#qUsr.updater# <cfif len(qUsr.updater_shortname)>(#qUsr.updater_shortname#)</cfif>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
|
||
</cfoutput>
|
||
|
||
<layout:page section="extension" closeForm="Yes"/>
|
||
|
||
<cfif d.modifier_id GT 0>
|
||
|
||
<cfquery name="qService" datasource="#request.DS#">
|
||
select distinct
|
||
s.service_id
|
||
,a.abstract_service_id
|
||
,a.code as abstract_service_code
|
||
,a.abstract_service
|
||
,m.modifier
|
||
from service s
|
||
left outer join modifier m on (s.modifier_id=m.modifier_id)
|
||
left outer join abstract_service a on (s.abstract_service_id=a.abstract_service_id)
|
||
where s.modifier_id=<cfqueryparam cfsqltype="cf_sql_integer" value="#d.modifier_id#"/>
|
||
order by a.code, a.abstract_service
|
||
</cfquery>
|
||
|
||
<cfoutput>
|
||
<h4>Используется услугами (#qService.recordCount#)</h4>
|
||
</cfoutput>
|
||
|
||
|
||
<table class="worktable">
|
||
<thead>
|
||
<tr>
|
||
<th></th>
|
||
<th>Код услуги</th>
|
||
<th>Абстрактная услуга</th>
|
||
<th>Характеристика</th>
|
||
<th></th>
|
||
</tr>
|
||
</thead>
|
||
<cfoutput query="qService">
|
||
<tr>
|
||
<td>
|
||
<c:link_view_edit canWrite=#pageInfo.writePermitted()# entity="service" id=#service_id# fwx=#tr.fwx#/>
|
||
</td>
|
||
<td>
|
||
<cfif abstract_service_id GT 0>#abstract_service_code#.#d.code#</cfif>
|
||
</td>
|
||
<td>
|
||
<cfif abstract_service_id GT 0><a href="abstract_service.cfm?abstract_service_id=#abstract_service_id#&#tr.fwx#">#abstract_service#</a></cfif>
|
||
</td>
|
||
<td class="c">
|
||
#modifier#
|
||
</td>
|
||
<td class="c">
|
||
<c:link_del canWrite=#pageInfo.writePermitted()# entity="service" id=#service_id# fwx=#tr.fwx#/>
|
||
</td>
|
||
</tr>
|
||
</cfoutput>
|
||
</table>
|
||
</cfif>
|
||
|
||
<p>Конкретные услуги (варианты услуги) определяются значением характеристики-модификатора. В тривиальном случае услуга может иметь только один вариант. Разные варианты услуги могут иметь различный состав компонентов (более того, этот состав определяется именно для конкретной услуги), например, в разных кластерах виртуализации может быть доступен разный набор типов дисков. </p>
|
||
<p>Один и тот же класс модификатора может применяться к разным абстрактным услугам.</p>
|
||
<p>Модификатор может состоять из нескольких переменных, например, система виртуализации + частота процессора. В этом случае в справочник нужно включить все актуальные комбинации</p>
|
||
|
||
<layout:page section="footer"/>
|