78735 Resultados disponibles

Filtrar:

Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> esResponse.getAggregationResult(specificationKey + "_with_organismos")  [in template "34352066712900#33336#362186" at line 73, column 33]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #local aggregationResult = esResponse...  [in template "34352066712900#33336#362186" in function "getAggregationResult" at line 73, column 5]
----
1<#-- Variables --> 
2<#assign specificationName          = 'ctn' /> 
3<#assign paramNameSpecificationName = cpSpecificationOptionsSearchFacetDisplayContext.getParameterName() /> 
4<#assign isDebug                    = false /> 
5<#assign showAllSpecificationsName  = false /> 
6<#assign staticHost                 = getCXConfig("ecom-static-files") /> 
7 
8<#-- ========================= --> 
9<#-- Functions freemaker       --> 
10<#-- ========================= --> 
11<#function getCXConfig clientExtensionName field="webApiUrl"> 
12    <#if !clientExtensionName?has_content><#return "" /></#if> 
13    <#local encoded = urlCodec.encodeURL(clientExtensionName) /> 
14    <#local items   = restClient.get("/c/customconfigs/?fields=clientExtensionConfig&filter=clientExtensionName eq '" + encoded + "'").items![] /> 
15    <#return items?has_content?then(items[0].clientExtensionConfig?eval[field]!"", "") /> 
16</#function> 
17 
18<#function getTaxonomyVocabularyId vocabularyName> 
19    <#local response = restClient.get("/headless-admin-taxonomy/v1.0/sites/" + groupId + "/taxonomy-vocabularies?filter=contains(name,'" + vocabularyName + "')&pageSize=1")!{} /> 
20    <#local items    = response.items![] /> 
21    <#return items?has_content?then(items[0].id, "") /> 
22</#function> 
23 
24<#function getTaxonomyCategoryMap vocabularyId pageSize=200> 
25    <#local response   = restClient.get("/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/" + vocabularyId + "/taxonomy-categories?pageSize=" + pageSize)!{} /> 
26    <#local categoryMap = {} /> 
27    <#list response.items![] as cat> 
28        <#local categoryMap = categoryMap + {vocabularyId + "-" + cat.id: cat.name} /> 
29    </#list> 
30    <#return categoryMap /> 
31</#function> 
32 
33<#function getSpecOrganismosMap organismoMap organismoVocabId aggResult> 
34    <#local specMap     = {} /> 
35    <#local vocabPrefix = organismoVocabId + "-" /> 
36    <#if !aggResult?has_content || !organismoMap?has_content><#return specMap /></#if> 
37    <#list aggResult.getBuckets() as specBucket> 
38        <#local specKey      = specBucket.getKey() /> 
39        <#local organismoAgg = specBucket.getChildAggregationResult("organismos") /> 
40        <#local orgNames     = [] /> 
41        <#if organismoAgg?has_content> 
42            <#list organismoAgg.getBuckets() as orgBucket> 
43                <#if orgBucket.getKey()?starts_with(vocabPrefix)> 
44                    <#local orgName = organismoMap[orgBucket.getKey()]!"" /> 
45                    <#if orgName?has_content> 
46                        <#local orgNames = orgNames + [orgName] /> 
47                    </#if> 
48                </#if> 
49            </#list> 
50        </#if> 
51        <#if orgNames?has_content> 
52            <#local specMap = specMap + {specKey: orgNames} /> 
53            <#if specKey?contains(" - ")> 
54                <#local specMap = specMap + {specKey?keep_before(" - "): orgNames} /> 
55            </#if> 
56        </#if> 
57    </#list> 
58    <#return specMap /> 
59</#function> 
60 
61<#function getAggregationResult specificationKey> 
62    <#if !specificationKey?has_content><#return {} /></#if> 
63 
64    <#local sharedSearchResponse = renderRequest.getAttribute("LIFERAY_SHARED_PortletSharedSearchResponse") /> 
65    <#if !sharedSearchResponse?has_content><#return {} /></#if> 
66 
67    <#local searchResponse = sharedSearchResponse.get() /> 
68    <#if !searchResponse?has_content><#return {} /></#if> 
69 
70    <#local esResponse = searchResponse.getSearchResponse() /> 
71    <#if !esResponse?has_content><#return {} /></#if> 
72 
73    <#local aggregationResult = esResponse.getAggregationResult(specificationKey + "_with_organismos") /> 
74    <#if !aggregationResult?has_content><#return {} /></#if> 
75 
76    <#return aggregationResult /> 
77</#function> 
78 
79 
80 
81<#if paramNameSpecificationName == specificationName || showAllSpecificationsName> 
82 
83    <#-- ========================= --> 
84    <#-- Datos                     --> 
85    <#-- ========================= --> 
86	<#assign organismoVocabId  = getTaxonomyVocabularyId("organismos") /> 
87	<#assign organismoMap      = getTaxonomyCategoryMap(organismoVocabId) /> 
88	<#assign aggResult         = getAggregationResult(paramNameSpecificationName)! /> 
89	<#assign specOrganismosMap = getSpecOrganismosMap(organismoMap, organismoVocabId, aggResult) /> 
90 
91    <#-- ========================= --> 
92    <#-- Debug                     --> 
93    <#-- ========================= --> 
94    <#if isDebug> 
95        <div style="background:#f0f0f0;padding:8px;margin-bottom:8px;font-size:11px;border:1px solid #ccc;"> 
96            <p><strong>paramName:</strong> ${paramNameSpecificationName}</p> 
97            <p><strong>organismoMap size:</strong> ${organismoMap?size}</p> 
98            <p><strong>specOrganismosMap size:</strong> ${specOrganismosMap?size}</p> 
99            <#list specOrganismosMap?keys as spec> 
100                <p>${spec}: ${specOrganismosMap[spec]?join(", ")}</p> 
101            </#list> 
102        </div> 
103    </#if> 
104 
105    <#-- Variables --> 
106    <#assign facetId    = "facet-" + paramNameSpecificationName + "-" + renderResponse.getNamespace() /> 
107    <#assign facetClass = "facet-" + paramNameSpecificationName + "-combo-search-wrapper" /> 
108 
109    <#-- ========================= --> 
110    <#-- TOM SELECT framework      --> 
111    <#-- ========================= --> 
112    <@liferay_util["html-top"] outputKey="tom-select"> 
113        <link href="${staticHost}/scripts/vendor/tom-select/tom-select.css" rel="stylesheet"> 
114        <script src="${staticHost}/scripts/vendor/tom-select/tom-select.complete.min.js"></script> 
115    </@> 
116 
117    <#-- ========================= --> 
118    <#-- CSS                       --> 
119    <#-- ========================= --> 
120    <style> 
121        #${facetId} { 
122            --facet-font-family: Inter; 
123            --facet-font-size: 14px; 
124            --facet-font-weight: 400; 
125            --facet-line-height: 18px; 
126            --facet-letter-spacing: 0.5px; 
127            --facet-color: #66757f; 
128
129        #${facetId}-select { 
130            appearance: none; 
131            -webkit-appearance: none; 
132            visibility: hidden; 
133            position: absolute; 
134
135        #${facetId} .ts-wrapper { 
136            width: 100%; 
137            margin-bottom: 16px; 
138            opacity: 0; 
139            transition: opacity 0.1s ease; 
140
141        #${facetId} .ts-wrapper .ts-control { 
142            padding: 15.5px 16px; 
143            font-family: var(--facet-font-family); 
144            font-size: var(--facet-font-size); 
145            font-weight: var(--facet-font-weight); 
146            line-height: var(--facet-line-height); 
147            letter-spacing: var(--facet-letter-spacing); 
148            color: var(--facet-color); 
149            text-align: left; 
150            height: 55px; 
151            width: 100%; 
152            border-radius: 4px; 
153            border: none; 
154            background-color: #F5F5F5; 
155            background-image: url(/documents/d/global/ico-chevron-down-2); 
156            background-repeat: no-repeat; 
157            background-position: right 1rem center; 
158            background-size: 18px 10px; 
159            box-shadow: none; 
160            cursor: pointer; 
161            box-sizing: border-box; 
162
163        #${facetId} .ts-wrapper .ts-control:focus, 
164        #${facetId} .ts-wrapper .ts-control:focus-visible { 
165            background-image: url(/documents/d/global/ico-chevron-down-2); 
166            background-position: right 1rem center; 
167            background-size: 18px 10px; 
168            outline: none; 
169            box-shadow: none; 
170
171        #${facetId} .ts-wrapper .ts-control .item { 
172            padding-right: 0.75rem; 
173            overflow: hidden; 
174            text-overflow: ellipsis; 
175            max-width: calc(100% - 0.75rem); 
176
177        #${facetId} .ts-wrapper.single .ts-control::after { 
178            display: none; 
179
180        #${facetId} .ts-dropdown .dropdown-input-wrap .dropdown-input { 
181            font-family: var(--facet-font-family); 
182            font-size: var(--facet-font-size); 
183            font-weight: var(--facet-font-weight); 
184            line-height: var(--facet-line-height); 
185            letter-spacing: var(--facet-letter-spacing); 
186            color: var(--facet-color); 
187            padding: 8px 16px; 
188            border: none; 
189            border-bottom: 1px solid #d9d9d9; 
190            background-color: #fff; 
191            width: 100%; 
192            box-sizing: border-box; 
193
194        #${facetId} .ts-dropdown .dropdown-input-wrap .dropdown-input:focus { 
195            outline: none; 
196            box-shadow: none; 
197
198        #${facetId} .ts-dropdown .ts-dropdown-content .option { 
199            font-family: var(--facet-font-family); 
200            font-size: var(--facet-font-size); 
201            font-weight: var(--facet-font-weight); 
202            line-height: var(--facet-line-height); 
203            letter-spacing: var(--facet-letter-spacing); 
204            color: var(--facet-color); 
205            padding: 8px 16px; 
206
207        #${facetId} .ts-dropdown .ts-dropdown-content .option:hover, 
208        #${facetId} .ts-dropdown .ts-dropdown-content .option.active { 
209            background-color: #6a9bd3; 
210            color: #fff; 
211
212        #${facetId} .ts-dropdown .ts-dropdown-content .option:hover .badge, 
213        #${facetId} .ts-dropdown .ts-dropdown-content .option.active .badge { 
214            background-color: #fff; 
215            color: #3a6a9b; 
216
217    </style> 
218 
219    <div class="checks-container ${facetClass}" id="${facetId}"> 
220        <div class="d-flex flex-column w-100"> 
221            <label class="panel-title mb-2" for="${facetId}-select"> 
222                ${languageUtil.get(locale, "norma." + paramNameSpecificationName)} 
223                <#if isDebug> 
224                    <p style="font-size:11px;color:#999;font-weight:normal;"> 
225                        (total options: ${entries?size}) 
226                    </p> 
227                    <p style="font-size:11px;color:#999;font-weight:normal;"> 
228                        (facetId: ${facetId}) 
229                    </p> 
230                </#if> 
231            </label> 
232 
233            <#-- ========================= --> 
234            <#-- SELECT UI                 --> 
235            <#-- ========================= --> 
236            <select id="${facetId}-select" data-parameter-name="${paramNameSpecificationName}"> 
237                <option value="">${languageUtil.get(locale, "search.cualquiera")}</option> 
238                <#list entries?sort_by("displayName") as entry> 
239                    <#assign specName = entry.getDisplayName() /> 
240                    <#assign orgNames = specOrganismosMap[specName]![] /> 
241                    <option value="${htmlUtil.escape(specName)}" 
242                        <#if entry.isSelected()>selected</#if> 
243                        data-organismos="${htmlUtil.escape(orgNames?join(","))}"> 
244                        ${htmlUtil.escape(specName)} (${entry.getFrequency()}) 
245                    </option> 
246                </#list> 
247            </select> 
248        </div> 
249    </div> 
250 
251    <#-- ========================= --> 
252    <#-- SCRIPT                    --> 
253    <#-- ========================= --> 
254    <script> 
255        (function () { 
256            var FACET_ID   = '${facetId}'; 
257            var PARAM_NAME = '${paramNameSpecificationName}'; 
258 
259            function applyUrlFilter(value) { 
260                var url = new URL(window.location.href); 
261                if (value) { 
262                    url.searchParams.set(PARAM_NAME, value); 
263                } else { 
264                    url.searchParams.delete(PARAM_NAME); 
265
266                window.location.href = url.toString(); 
267
268 
269            function initFacet() { 
270                var select = document.getElementById(FACET_ID + '-select'); 
271                if (!select) return; 
272                if (select.tomselect) select.tomselect.destroy(); 
273                if (select.dataset.bound === 'true') return; 
274                select.dataset.bound = 'true'; 
275 
276                new TomSelect(select, { 
277                    allowEmptyOption: true, 
278                    maxItems: 1, 
279                    create: false, 
280                    render: { 
281                        option: function(data, escape) { 
282                            var organismos = data.$option ? data.$option.getAttribute('data-organismos') : ''; 
283                            var badges = ''; 
284                            if (organismos) { 
285                                organismos.split(',').forEach(function(org) { 
286                                    badges += '<span class="badge badge-secondary mr-1">' + escape(org.trim()) + '</span>'; 
287                                }); 
288
289                            return '<div class="option py-1">' + escape(data.text) + '<div class="mt-1">' + badges + '</div></div>'; 
290                        }, 
291                        no_results: function(data, escape) { 
292                            return '<div class="no-results">${languageUtil.get(locale, "occurrence-not-found")}</div>'; 
293
294                    }, 
295                    plugins: { 
296                        dropdown_input: {} 
297                    }, 
298                    onDelete: function(value) { 
299                        this.isDelete = true; 
300                    }, 
301                    onChange: function(value) { 
302                        if (value) { 
303                            this.lastValidValue = value; 
304                            applyUrlFilter(value); 
305                            return; 
306
307                        this.lastValidValue = ''; 
308                        applyUrlFilter(''); 
309                    }, 
310                    onInitialize: function() { 
311                        this.lastValidValue = this.getValue() || ''; 
312                        this.isDelete = false; 
313                        var wrapper = document.querySelector('#' + FACET_ID + ' .ts-wrapper'); 
314                        if (wrapper) wrapper.style.opacity = '1'; 
315
316                }); 
317
318 
319            if (document.readyState === 'loading') { 
320                document.addEventListener('DOMContentLoaded', initFacet); 
321            } else { 
322                initFacet(); 
323
324        })(); 
325    </script> 
326 
327</#if> 
Se ha producido un error al procesar la plantilla.
The following has evaluated to null or missing:
==> esResponse.getAggregationResult(specificationKey + "_with_organismos")  [in template "34352066712900#33336#362204" at line 73, column 33]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #local aggregationResult = esResponse...  [in template "34352066712900#33336#362204" in function "getAggregationResult" at line 73, column 5]
----
1<#-- Variables --> 
2<#assign specificationName          = 'ics' /> 
3<#assign paramNameSpecificationName = cpSpecificationOptionsSearchFacetDisplayContext.getParameterName() /> 
4<#assign isDebug                    = false /> 
5<#assign showAllSpecificationsName  = false /> 
6<#assign staticHost                 = getCXConfig("ecom-static-files") /> 
7 
8<#-- ========================= --> 
9<#-- Functions freemaker       --> 
10<#-- ========================= --> 
11<#function getCXConfig clientExtensionName field="webApiUrl"> 
12    <#if !clientExtensionName?has_content><#return "" /></#if> 
13    <#local encoded = urlCodec.encodeURL(clientExtensionName) /> 
14    <#local items   = restClient.get("/c/customconfigs/?fields=clientExtensionConfig&filter=clientExtensionName eq '" + encoded + "'").items![] /> 
15    <#return items?has_content?then(items[0].clientExtensionConfig?eval[field]!"", "") /> 
16</#function> 
17 
18<#function getTaxonomyVocabularyId vocabularyName> 
19    <#local response = restClient.get("/headless-admin-taxonomy/v1.0/sites/" + groupId + "/taxonomy-vocabularies?filter=contains(name,'" + vocabularyName + "')&pageSize=1")!{} /> 
20    <#local items    = response.items![] /> 
21    <#return items?has_content?then(items[0].id, "") /> 
22</#function> 
23 
24<#function getTaxonomyCategoryMap vocabularyId pageSize=200> 
25    <#local response   = restClient.get("/headless-admin-taxonomy/v1.0/taxonomy-vocabularies/" + vocabularyId + "/taxonomy-categories?pageSize=" + pageSize)!{} /> 
26    <#local categoryMap = {} /> 
27    <#list response.items![] as cat> 
28        <#local categoryMap = categoryMap + {vocabularyId + "-" + cat.id: cat.name} /> 
29    </#list> 
30    <#return categoryMap /> 
31</#function> 
32 
33<#function getSpecOrganismosMap organismoMap organismoVocabId aggResult> 
34    <#local specMap     = {} /> 
35    <#local vocabPrefix = organismoVocabId + "-" /> 
36    <#if !aggResult?has_content || !organismoMap?has_content><#return specMap /></#if> 
37    <#list aggResult.getBuckets() as specBucket> 
38        <#local specKey      = specBucket.getKey() /> 
39        <#local organismoAgg = specBucket.getChildAggregationResult("organismos") /> 
40        <#local orgNames     = [] /> 
41        <#if organismoAgg?has_content> 
42            <#list organismoAgg.getBuckets() as orgBucket> 
43                <#if orgBucket.getKey()?starts_with(vocabPrefix)> 
44                    <#local orgName = organismoMap[orgBucket.getKey()]!"" /> 
45                    <#if orgName?has_content> 
46                        <#local orgNames = orgNames + [orgName] /> 
47                    </#if> 
48                </#if> 
49            </#list> 
50        </#if> 
51        <#if orgNames?has_content> 
52            <#local specMap = specMap + {specKey: orgNames} /> 
53            <#if specKey?contains(" - ")> 
54                <#local specMap = specMap + {specKey?keep_before(" - "): orgNames} /> 
55            </#if> 
56        </#if> 
57    </#list> 
58    <#return specMap /> 
59</#function> 
60 
61<#function getAggregationResult specificationKey> 
62    <#if !specificationKey?has_content><#return {} /></#if> 
63 
64    <#local sharedSearchResponse = renderRequest.getAttribute("LIFERAY_SHARED_PortletSharedSearchResponse") /> 
65    <#if !sharedSearchResponse?has_content><#return {} /></#if> 
66 
67    <#local searchResponse = sharedSearchResponse.get() /> 
68    <#if !searchResponse?has_content><#return {} /></#if> 
69 
70    <#local esResponse = searchResponse.getSearchResponse() /> 
71    <#if !esResponse?has_content><#return {} /></#if> 
72 
73    <#local aggregationResult = esResponse.getAggregationResult(specificationKey + "_with_organismos") /> 
74    <#if !aggregationResult?has_content><#return {} /></#if> 
75 
76    <#return aggregationResult /> 
77</#function> 
78 
79 
80 
81 
82<#if paramNameSpecificationName == specificationName || showAllSpecificationsName> 
83 
84    <#-- ========================= --> 
85    <#-- Datos                     --> 
86    <#-- ========================= --> 
87	<#assign organismoVocabId  = getTaxonomyVocabularyId("organismos") /> 
88	<#assign organismoMap      = getTaxonomyCategoryMap(organismoVocabId) /> 
89	<#assign aggResult         = getAggregationResult(paramNameSpecificationName)! /> 
90	<#assign specOrganismosMap = getSpecOrganismosMap(organismoMap, organismoVocabId, aggResult) /> 
91 
92    <#-- ========================= --> 
93    <#-- Debug                     --> 
94    <#-- ========================= --> 
95    <#if isDebug> 
96        <div style="background:#f0f0f0;padding:8px;margin-bottom:8px;font-size:11px;border:1px solid #ccc;"> 
97            <p><strong>paramName:</strong> ${paramNameSpecificationName}</p> 
98            <p><strong>organismoMap size:</strong> ${organismoMap?size}</p> 
99            <p><strong>specOrganismosMap size:</strong> ${specOrganismosMap?size}</p> 
100            <#list specOrganismosMap?keys as spec> 
101                <p>${spec}: ${specOrganismosMap[spec]?join(", ")}</p> 
102            </#list> 
103        </div> 
104    </#if> 
105 
106    <#-- Variables --> 
107    <#assign facetId    = "facet-" + paramNameSpecificationName + "-" + renderResponse.getNamespace() /> 
108    <#assign facetClass = "facet-" + paramNameSpecificationName + "-combo-search-wrapper" /> 
109 
110    <#-- ========================= --> 
111    <#-- TOM SELECT framework      --> 
112    <#-- ========================= --> 
113    <@liferay_util["html-top"] outputKey="tom-select"> 
114        <link href="${staticHost}/scripts/vendor/tom-select/tom-select.css" rel="stylesheet"> 
115        <script src="${staticHost}/scripts/vendor/tom-select/tom-select.complete.min.js"></script> 
116    </@> 
117 
118    <#-- ========================= --> 
119    <#-- CSS                       --> 
120    <#-- ========================= --> 
121    <style> 
122        #${facetId} { 
123            --facet-font-family: Inter; 
124            --facet-font-size: 14px; 
125            --facet-font-weight: 400; 
126            --facet-line-height: 18px; 
127            --facet-letter-spacing: 0.5px; 
128            --facet-color: #66757f; 
129
130        #${facetId}-select { 
131            appearance: none; 
132            -webkit-appearance: none; 
133            visibility: hidden; 
134            position: absolute; 
135
136        #${facetId} .ts-wrapper { 
137            width: 100%; 
138            margin-bottom: 16px; 
139            opacity: 0; 
140            transition: opacity 0.1s ease; 
141
142        #${facetId} .ts-wrapper .ts-control { 
143            padding: 15.5px 16px; 
144            font-family: var(--facet-font-family); 
145            font-size: var(--facet-font-size); 
146            font-weight: var(--facet-font-weight); 
147            line-height: var(--facet-line-height); 
148            letter-spacing: var(--facet-letter-spacing); 
149            color: var(--facet-color); 
150            text-align: left; 
151            height: 55px; 
152            width: 100%; 
153            border-radius: 4px; 
154            border: none; 
155            background-color: #F5F5F5; 
156            background-image: url(/documents/d/global/ico-chevron-down-2); 
157            background-repeat: no-repeat; 
158            background-position: right 1rem center; 
159            background-size: 18px 10px; 
160            box-shadow: none; 
161            cursor: pointer; 
162            box-sizing: border-box; 
163
164        #${facetId} .ts-wrapper .ts-control:focus, 
165        #${facetId} .ts-wrapper .ts-control:focus-visible { 
166            background-image: url(/documents/d/global/ico-chevron-down-2); 
167            background-position: right 1rem center; 
168            background-size: 18px 10px; 
169            outline: none; 
170            box-shadow: none; 
171
172        #${facetId} .ts-wrapper .ts-control .item { 
173            padding-right: 0.75rem; 
174            overflow: hidden; 
175            text-overflow: ellipsis; 
176            max-width: calc(100% - 0.75rem); 
177
178        #${facetId} .ts-wrapper.single .ts-control::after { 
179            display: none; 
180
181        #${facetId} .ts-dropdown .dropdown-input-wrap .dropdown-input { 
182            font-family: var(--facet-font-family); 
183            font-size: var(--facet-font-size); 
184            font-weight: var(--facet-font-weight); 
185            line-height: var(--facet-line-height); 
186            letter-spacing: var(--facet-letter-spacing); 
187            color: var(--facet-color); 
188            padding: 8px 16px; 
189            border: none; 
190            border-bottom: 1px solid #d9d9d9; 
191            background-color: #fff; 
192            width: 100%; 
193            box-sizing: border-box; 
194
195        #${facetId} .ts-dropdown .dropdown-input-wrap .dropdown-input:focus { 
196            outline: none; 
197            box-shadow: none; 
198
199        #${facetId} .ts-dropdown .ts-dropdown-content .option { 
200            font-family: var(--facet-font-family); 
201            font-size: var(--facet-font-size); 
202            font-weight: var(--facet-font-weight); 
203            line-height: var(--facet-line-height); 
204            letter-spacing: var(--facet-letter-spacing); 
205            color: var(--facet-color); 
206            padding: 8px 16px; 
207
208        #${facetId} .ts-dropdown .ts-dropdown-content .option:hover, 
209        #${facetId} .ts-dropdown .ts-dropdown-content .option.active { 
210            background-color: #6a9bd3; 
211            color: #fff; 
212
213        #${facetId} .ts-dropdown .ts-dropdown-content .option:hover .badge, 
214        #${facetId} .ts-dropdown .ts-dropdown-content .option.active .badge { 
215            background-color: #fff; 
216            color: #3a6a9b; 
217
218    </style> 
219 
220    <div class="checks-container ${facetClass}" id="${facetId}"> 
221        <div class="d-flex flex-column w-100"> 
222            <label class="panel-title mb-2" for="${facetId}-select"> 
223                ${languageUtil.get(locale, "norma." + paramNameSpecificationName)} 
224                <#if isDebug> 
225                    <p style="font-size:11px;color:#999;font-weight:normal;"> 
226                        (total options: ${entries?size}) 
227                    </p> 
228                    <p style="font-size:11px;color:#999;font-weight:normal;"> 
229                        (facetId: ${facetId}) 
230                    </p> 
231                </#if> 
232            </label> 
233 
234            <#-- ========================= --> 
235            <#-- SELECT UI                 --> 
236            <#-- ========================= --> 
237            <select id="${facetId}-select" data-parameter-name="${paramNameSpecificationName}"> 
238                <option value="">${languageUtil.get(locale, "search.cualquiera")}</option> 
239                <#list entries?sort_by("displayName") as entry> 
240                    <#assign specName = entry.getDisplayName() /> 
241                    <#assign orgNames = specOrganismosMap[specName]![] /> 
242                    <option value="${htmlUtil.escape(specName)}" 
243                        <#if entry.isSelected()>selected</#if> 
244                        data-organismos="${htmlUtil.escape(orgNames?join(","))}"> 
245                        ${htmlUtil.escape(specName)} (${entry.getFrequency()}) 
246                    </option> 
247                </#list> 
248            </select> 
249        </div> 
250    </div> 
251 
252    <#-- ========================= --> 
253    <#-- SCRIPT                    --> 
254    <#-- ========================= --> 
255    <script> 
256        (function () { 
257            var FACET_ID   = '${facetId}'; 
258            var PARAM_NAME = '${paramNameSpecificationName}'; 
259 
260            function applyUrlFilter(value) { 
261                var url = new URL(window.location.href); 
262                if (value) { 
263                    url.searchParams.set(PARAM_NAME, value); 
264                } else { 
265                    url.searchParams.delete(PARAM_NAME); 
266
267                window.location.href = url.toString(); 
268
269 
270            function initFacet() { 
271                var select = document.getElementById(FACET_ID + '-select'); 
272                if (!select) return; 
273                if (select.tomselect) select.tomselect.destroy(); 
274                if (select.dataset.bound === 'true') return; 
275                select.dataset.bound = 'true'; 
276 
277                new TomSelect(select, { 
278                    allowEmptyOption: true, 
279                    maxItems: 1, 
280                    create: false, 
281                    render: { 
282                        option: function(data, escape) { 
283                            var organismos = data.$option ? data.$option.getAttribute('data-organismos') : ''; 
284                            var badges = ''; 
285                            if (organismos) { 
286                                organismos.split(',').forEach(function(org) { 
287                                    badges += '<span class="badge badge-secondary mr-1">' + escape(org.trim()) + '</span>'; 
288                                }); 
289
290                            return '<div class="option py-1">' + escape(data.text) + '<div class="mt-1">' + badges + '</div></div>'; 
291                        }, 
292                        no_results: function(data, escape) { 
293                            return '<div class="no-results">${languageUtil.get(locale, "occurrence-not-found")}</div>'; 
294
295                    }, 
296                    plugins: { 
297                        dropdown_input: {} 
298                    }, 
299                    onDelete: function(value) { 
300                        this.isDelete = true; 
301                    }, 
302                    onChange: function(value) { 
303                        if (value) { 
304                            this.lastValidValue = value; 
305                            applyUrlFilter(value); 
306                            return; 
307
308                        this.lastValidValue = ''; 
309                        applyUrlFilter(''); 
310                    }, 
311                    onInitialize: function() { 
312                        this.lastValidValue = this.getValue() || ''; 
313                        this.isDelete = false; 
314                        var wrapper = document.querySelector('#' + FACET_ID + ' .ts-wrapper'); 
315                        if (wrapper) wrapper.style.opacity = '1'; 
316
317                }); 
318
319 
320            if (document.readyState === 'loading') { 
321                document.addEventListener('DOMContentLoaded', initFacet); 
322            } else { 
323                initFacet(); 
324
325        })(); 
326    </script> 
327 
328</#if> 
(37753)
(36846)
(4136)
UNE

UNE-ISO 21902:2021

En Vigor
2021-07-14
Turismo y servicios relacionados. Turismo accesible para todos. Requisitos y recomendaciones.
UNE

UNE-EN IEC 62386-332:2018

En Vigor
2018-03-01
Interfaz de iluminación direccionable digital. Parte 332: Requisitos particulares. Dispositivos de control de entrada. Retroalimentación. (Ratificada por la Asociación Española de Normalización en marzo de 2018.)
UNE

UNE-EN 16755:2018

En Vigor
2018-02-21
Durabilidad de las prestaciones de reacción al fuego. Clasificación de los productos derivados de la madera ignifugados para su utilización en interior y exterior.
UNE

UNE-EN IEC 60601-2-50:2021

En Vigor
2021-09-01
Equipos electromédicos. Parte 2-50: Requisitos particulares para la seguridad básica y funcionamiento esencial de los equipos de fototerapia infantil. (Ratificada por la Asociación Española de Normalización en septiembre de 2021.)
UNE

UNE-EN 1335-2:2019

En Vigor
2019-04-17
Mobiliario de oficina. Sillas de oficina. Parte 2: Requisitos de seguridad.
UNE

UNE-CEN/TR 16958:2018 IN

En Vigor
2018-02-28
Materiales de señalización vial horizontal. Condiciones para el borrado/enmascaramiento de marcas viales.
UNE

UNE-EN 4641-202:2018

En Vigor
2019-01-01
Material aeroespacial. Cable óptico, diámetro exterior de la funda óptica 125 µm. Parte 202: Cable de estructura semilibre, fibra de SM 9/125 µm, diámetro exterior 2,74 mm. Norma de producto. (Ratificada por la Asociación Española de Normalización en enero de 2019.)
UNE

UNE-EN 1646-1:2018

En Vigor
2018-03-01
Vehículos habitables de recreo. Autocaravanas. Parte 1: Requisitos del habitáculo referentes a la salud y seguridad. (Ratificada por la Asociación Española de Normalización en marzo de 2018.)
UNE

UNE-EN 16798-15:2018

En Vigor
2018-12-12
Eficiencia energética de los edificios. Ventilación de los edificios. Parte 15: Cálculo de los sistemas de refrigeración. Módulos M4-7. Acumulación.
UNE

UNE-EN 13623:2021

En Vigor
2021-09-01
Antisépticos y desinfectantes químicos. Ensayo cuantitativo de suspensión para la evaluación de la actividad bactericida contra la legionella de los desinfectantes químicos para los sistemas acuosos. Método de ensayo y requisitos (fase 2, etapa 1).
UNE

UNE 199102-1:2018 IN

En Vigor
2018-03-07
Equipamiento para la gestión del tráfico. Mantenimiento. Recomendaciones para el mantenimiento. Parte 1: Recomendaciones para mantenimiento preventivo de estructuras metálicas.
UNE

UNE-EN 16798-5-2:2018

En Vigor
2018-12-19
Eficiencia energética de los edificios. Ventilación de los edificios. Parte 5-2: Métodos de cálculo para las demandas energéticas de los sistemas de ventilación (Módulos M5-6, M5-8, M6-5, M6-8, M7-5, M7-8). Método 2: Distribución y generación.
UNE

UNE-EN ISO 12944-5:2020

En Vigor
2020-06-03
Pinturas y barnices. Protección de estructuras de acero frente a la corrosión mediante sistemas de pintura protectores. Parte 5: Sistemas de pintura protectores. (ISO 12944-5:2019).
UNE

UNE-EN ISO 28921-2:2018

En Vigor
2018-03-07
Válvulas industriales. Válvulas de aislamiento para aplicaciones a baja temperatura. Parte 2: Ensayos de tipo. (ISO 28921-2:2015).
UNE

UNE-EN ISO 11146-1:2021

En Vigor
2021-09-01
Láseres y equipos relacionados. Métodos de ensayo para anchuras del haz láser, ángulos de divergencia y factor de propagación del haz. Parte 1: Haces estigmáticos y astigmáticos simples (ISO 11146-1:2021) (Ratificada por la Asociación Española de Normalización en septiembre de 2021.)
UNE

UNE-EN 17210:2021

En Vigor
2021-09-08
Accesibilidad del entorno construido. Requisitos funcionales.
UNE

UNE-HD 60364-8-2:2020/A11:2020

En Vigor
2020-06-03
Instalaciones eléctricas de baja tensión. Parte 8-2: Instalaciones eléctricas de baja tensión de prosumidores.
UNE

UNE-EN 998-1:2018

En Vigor
2018-03-14
Especificaciones de los morteros para albañilería. Parte 1: Morteros para revoco y enlucido.
UNE

UNE-EN IEC 61757-1-1:2020

En Vigor
2020-07-01
Sensores de fibra óptica. Parte 1-1: Medición de la tensión mecánica. Sensores de tensión mecánica basados en rejillas de fibra Bragg (Ratificada por la Asociación Española de Normalización en julio de 2020.)
UNE

UNE-EN ISO 23900-3:2018

En Vigor
2018-03-14
Pigmentos y extendedores. Métodos de dispersión y evaluación de la dispersibilidad en plásticos. Parte 3: Determinación de las propiedades colorimétricas y de la facilidad de dispersión de pigmentos negros y de color en polietileno por calandrado con dos cilindros. (ISO 23900-3:2015).
UNE

UNE-CEN/TS 16931-7:2020

En Vigor
2020-07-01
Facturación electrónica. Parte 7: Metodología para el desarrollo y uso de las especificaciones de uso de la factura principal estructurada conforme a la norma EN 16931-1. (Ratificada por la Asociación Española de Normalización en julio de 2020.)
UNE

UNE-EN 84:2021

En Vigor
2021-09-08
Durabilidad de la madera y de los productos derivados de la madera. Envejecimiento acelerado de las maderas tratadas antes de los ensayos biológicos. Procedimiento de deslavado.
UNE

UNE-EN 17050:2018

En Vigor
2018-03-14
Alimentos para animales. Métodos de muestreo y análisis. Determinación del yodo en la alimentación animal mediante ICP-MS.
UNE

UNE-EN ISO 11070:2015/A1:2018

En Vigor
2018-12-26
Introductores, dilatadores y guías intravasculares estériles para un solo uso. Modificación 1. (ISO 11070:2014/Amd 1:2018).
UNE

UNE-EN ISO 22631:2020

En Vigor
2020-06-10
Adhesivos. Método de ensayo de adhesivos para revestimientos de paredes y suelos. Ensayo de pelado. (ISO 22631:2019).
UNE

UNE-EN 60904-8-1:2018

En Vigor
2018-03-28
Dispositivos fotovoltaicos. Parte 8-1: Medida de la respuesta espectral de dispositivos fotovoltaicos (FV) multi-unión.
UNE

UNE-EN IEC 60445:2021

En Vigor
2021-10-01
Principios fundamentales y de seguridad para la interfaz hombre-máquina, el marcado y la identificación. Identificación de los bornes de equipos, de los terminales de los conductores y de los conductores. (Ratificada por la Asociación Española de Normalización en octubre de 2021.)
UNE

UNE-EN 16985:2018

En Vigor
2019-02-01
Cabinas de pulverización para materiales de recubrimiento orgánico. Requisitos de seguridad (Ratificada por la Asociación Española de Normalización en febrero de 2019.)
UNE

UNE-EN 9223-105:2018

En Vigor
2018-04-01
Gestión del programa. Gestión de la configuración. Parte 105: Glosario. (Ratificada por la Asociación Española de Normalización en abril de 2018.)
UNE

UNE-EN 2341:2018

En Vigor
2019-02-01
Material aeroespacial. Aluminio y aleaciones de aluminio. Barras extruidas rectangulares y cuadradas. Dimensiones. (Ratificada por la Asociación Española de Normalización en febrero de 2019.)
UNE

UNE-EN 62133-2:2017/A1:2021

En Vigor
2021-10-01
Acumuladores alcalinos y otros acumuladores con electrolito no ácido. Requisitos de seguridad para acumuladores estancos portátiles y para baterías construidas a partir de ellos, para uso en aplicaciones portátiles. Parte 2: Sistemas de litio (Ratificada por la Asociación Española de Normalización en octubre de 2021.)
UNE

UNE-EN ISO 9017:2018

En Vigor
2018-03-28
Ensayos destructivos de soldaduras de materiales metálicos. Ensayo de rotura. (ISO 9017:2017).
UNE

UNE-EN IEC 60268-21:2018

En Vigor
2019-02-01
Equipos de sistemas de sonido. Parte 21: Mediciones acústicas (de salida) (Ratificada por la Asociación Española de Normalización en febrero de 2019.)
UNE

UNE-EN 16851:2017+A1:2021

En Vigor
2021-09-22
Grúas. Sistemas de grúa ligera.
UNE

UNE-EN 16190:2018

En Vigor
2019-02-01
Suelos, residuos biológicos tratados y lodos. Determinación de dioxinas y furanos y bifenilos policlorados similares a dioxinas por cromatografía de gases con detección selectiva de masas de alta resolución (HR GC-MS) (Ratificada por la Asociación Española de Normalización en febrero de 2019.)
UNE

UNE-EN 60061-3:1997/A54:2018

En Vigor
2018-05-01
Casquillos y portalámparas junto con los calibres para el control de la intercambiabilidad y de la seguridad. Parte 3: Calibres. (Ratificada por la Asociación Española de Normalización en mayo de 2018.)
UNE

UNE-EN ISO 19115-1:2014/A1:2018

En Vigor
2018-05-16
Información geográfica. Metadatos. Parte 1: Fundamentos. Modificación 1. (ISO 19115-1:2014/Amd 1:2018).
UNE

UNE 136021:2019

En Vigor
2019-01-30
Método de cálculo por elementos finitos para determinar la transmitancia térmica de muros de fábrica de piezas de arcilla cocida.
UNE

UNE-EN ISO 15216-2:2020

En Vigor
2020-07-01
Microbiología de la cadena alimentaria. Método horizontal para la determinación del virus de la hepatitis A y norovirus utilizando RT-PCR en tiempo real. Parte 2: Método para la detección. (ISO 15216-2:2019).
UNE

UNE-EN ISO 787-22:2018

En Vigor
2018-04-18
Métodos generales de ensayo para pigmentos y extendedores. Parte 22: Comparación de la resistencia al sangrado de los pigmentos. (ISO 787-22:1980).