field_set, instance_ls

This commit is contained in:
msyu
2025-04-06 21:26:58 +03:00
parent af6cb67cf8
commit e58999e489
3 changed files with 137 additions and 139 deletions
+22 -15
View File
@@ -13,6 +13,7 @@
<cfparam name="ATTRIBUTES.lengthOut" default=""/>
<cfparam name="ATTRIBUTES.listOut" default=""/><!---возвращаемый список полей через запятую для селекта. Если не задан (чаще всего так), этот список возвращается в виде контента тега --->
<cfparam name="ATTRIBUTES.listOutKeepContent" default=false/><!--- указывает listOut не очищать контент --->
<cfparam name="ATTRIBUTES.fieldsToInclude" default=""/><!--- список нужных полей, если не пустой - выбрасывать все поля, кроме тех, что в списке --->
<cfparam name="thisTag.fieldsArray" type="array"/><!--- Вложенные теги field отдают сюда свои данные --->
@@ -20,35 +21,41 @@
<cfset list=""/>
<cfset i=0/>
<cfloop array=#thisTag.fieldsArray# index="field">
<cfset i=i+1/>
<cfset list=listAppend(#list#, #field.expression#)/>
<cfif len(#field.name#)>
<cfset structInsert(#titleMap#, #field.name#, structNew())/>
<cfset "titleMap.#field.name#.ordinal"=#i#/>
<cfset "titleMap.#field.name#.title"=#field.title#/>
<cfset "titleMap.#field.name#.type"=#field.type#/>
<cfset "titleMap.#field.name#.cfSqlType"=#field.cfSqlType#/>
<cfset "titleMap.#field.name#.container"=#field.container#/>
<cfset "titleMap.#field.name#.formatter"=#field.formatter#/>
<cfif len(#field.name#) EQ 0
OR listLen(ATTRIBUTES.fieldsToInclude) EQ 0
OR listFind(ATTRIBUTES.fieldsToInclude,field.name)>
<!--- пытаемся сохранить прежнюю логику - поля без имени не выбрасываются, но не попадают в titleMap --->
<cfset i=i+1/>
<cfset list=listAppend(#list#, #field.expression#)/>
<cfif len(#field.name#)>
<cfset structInsert(#titleMap#, #field.name#, structNew())/>
<cfset "titleMap.#field.name#.ordinal"=#i#/>
<cfset "titleMap.#field.name#.title"=#field.title#/>
<cfset "titleMap.#field.name#.type"=#field.type#/>
<cfset "titleMap.#field.name#.cfSqlType"=#field.cfSqlType#/>
<cfset "titleMap.#field.name#.container"=#field.container#/>
<cfset "titleMap.#field.name#.formatter"=#field.formatter#/>
</cfif>
</cfif>
</cfloop>
<cfif len(ATTRIBUTES.lengthOut)>
<cfset "CALLER.#ATTRIBUTES.lengthOut#"=#arrayLen(thisTag.fieldsArray)#/>
<cfset "CALLER.#ATTRIBUTES.lengthOut#"= i/>
</cfif>
<cfif len(ATTRIBUTES.titleMapOut)>
<cfset "CALLER.#ATTRIBUTES.titleMapOut#"=#titleMap#/>
</cfif>
<cfif len(ATTRIBUTES.listOut)>
<!--- <cfif len(ATTRIBUTES.listOut)>
<cfset "CALLER.#ATTRIBUTES.listOut#"=preserveSingleQuotes(list)/>
<cfset thisTag.generatedContent=""/>
</cfif>
</cfif> --->
<cfif len(ATTRIBUTES.listOut)><!--- *** некрасиво --->
<cfset "CALLER.#ATTRIBUTES.listOut#"=preserveSingleQuotes(list)/>
<cfif listOutKeepContent>
<cfset "CALLER.#ATTRIBUTES.listOut#"=list/>
<cfif ATTRIBUTES.listOutKeepContent>
<cfset thisTag.generatedContent=preserveSingleQuotes(list)/>
<cfelse>
<cfset thisTag.generatedContent=""/>