75908 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> 
(40288)
(35620)
(0)
AFNOR

NF EN 301144-6

En Vigor
2005-10-01
Integrated Services Digital Network (ISDN) - Digital Subscriber Signalling System No. one (DSS1) and Signalling System No.7 (SS7) protocols - Signalling application for the mobility management service on the alpha interface - Part 6 : Abstract Test Suite (ATS) and partial Protocol Implementation eXtra Information for Testing (PIXIT) proforma specification for the network (V1.1.1)
AFNOR

NF ISO 16000-6

En Vigor
2021-09-26
Indoor air - Part 6: Determination of organic compounds (VVOC, VOC, SVOC) in indoor and test chamber air by active sampling on sorbent tubes, thermal desorption and gas chromatography using MS or MS FID
AFNOR

NF EN 14053

En Vigor
2004-02-01
Packaging - Packagings manufactured from corrugated or solid fibreboard - Types and construction
AFNOR

FD T54-193

En Vigor
1997-05-01
Plastics. Films and sheets made of polymers for industrial purposes. Industrial criteria and test methods.