PageSourceSearch

https://www.minagricultura.gov.co/typo3conf/ext/madrskin/Resources/Public/js/normas.js?1697058794

js minagricultura.gov.co collected 2026-09-24 08:42:00 UTC 8,474 bytes, 341 lines download raw bytes

1/* -------
2NORMATIVA - 2023
3MADR - Nelson Velasco
4----- */
5
6// console.log("Normas");
7
8//
9// VARS
10//
11let arr_norms = [];
12let arr_norms_data = [];
13var str_number = "";
14var str_year = "";
15// Export
16const fileType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8";
17const fileExtension = ".xlsx";
18var fileTitle = "Descarga";
19var fileTitle_str = "";
20
21//
22// EVENTS
23//
24// LOAD
25window.addEventListener("load", function(event)
26{
27	// prepare norms list
28	get_norms();
29
30	// datepicker
31	prepare_datepicker();
32
33	// show result norm list
34	seach_norma();
35
36	// set title file
37	// var breadcrumb_madr = document.querySelectorAll(".breadcrumb_madr");
38	var breadcrumb_madr = document.querySelectorAll(".breadcrumb_madr p");
39	// add item to container
40	breadcrumb_madr.forEach(item_b => {
41		fileTitle_str = item_b.innerHTML.substr( item_b.innerHTML.lastIndexOf(">") + 1 );
42		fileTitle_str = fileTitle_str.replace(' ', '');
43	});
44	if(fileTitle_str!=""){
45		fileTitle = fileTitle_str;
46	}
47
48});
49// event export excel button
50var cnt_export_norm = document.getElementById("cnt_export_norm");
51if(typeof(cnt_export_norm) != 'undefined' && cnt_export_norm != null)
52{
53	cnt_export_norm.addEventListener("click", function(){ exportTableToExcel(); });
54}
55// event search
56var btn_norm_search = document.getElementById("btn_norm_search");
57if(typeof(btn_norm_search) != 'undefined' && btn_norm_search != null)
58{
59	btn_norm_search.addEventListener("click", function(){ seach_norma(); });
60}
61
62// FUNCTIONS
63// load Norms
64function seach_norma()
65{
66	let str_result = "";
67	let str_table = "";
68	let tab_id = "";
69	// get container to show norms
70	var cnt_normas = document.querySelectorAll(".cnt_normas");
71	if(typeof(cnt_normas) != 'undefined' && cnt_normas != null)
72	{
73		cnt_normas.forEach(item => {
74			item.innerHTML = "";
75		});
76	}
77	// get year field
78	var txt_norm_year = document.getElementById("txt_norm_year");
79	if(typeof(txt_norm_year) != 'undefined' && txt_norm_year != null)
80	{
81		str_year = txt_norm_year.value;
82	}
83	// get number field
84	var txt_norm_number = document.getElementById("txt_norm_number");
85	if(typeof(txt_norm_number) != 'undefined' && txt_norm_number != null)
86	{
87		str_number = txt_norm_number.value;
88	}
89	// clear array results
90	// arr_norms_data = [];
91	arr_norms_data = [['Nombre','Descripción','Año','Número']];
92
93	//iterate norms to add norms list
94	arr_norms.forEach(function(item)
95	{
96		let valida = 1;
97		let str_title = item.title;
98		let str_title_link = item.title;
99		tab_id = item.id_tab;
100
101		// prepare field title with link
102		if(item.link!="")
103		{
104			str_title = '<a href="'+item.link+'">'+item.title+'</a>';
105		}
106		// validate
107		if(str_number!="" && str_year!="" )
108		{
109			if(item.year==str_year && item.number==str_number)
110			{
111				valida = 1;
112			}
113			else{
114				valida = 0;
115			}
116		}
117		else
118		{
119			if(str_year!="")
120			{
121				if(item.year==str_year)
122				{
123					valida = 1;
124				}
125				else{
126					valida = 0;
127				}
128			}
129			if(str_number!="")
130			{
131				if(item.number==str_number)
132				{
133					valida = 1;
134				}
135				else{
136					valida = 0;
137				}
138			}
139		}
140		//
141		if(valida == 1)
142		{
143			// build html item norm
144			str_result = build_item_result(str_title, item.info, item.content);
145			// validate container
146			if(tab_id!="")
147			{
148				// iterate multiple container
149				var cnt_tab_id = document.querySelectorAll("#"+tab_id+" .cnt_normas");
150				// add item to container
151				cnt_tab_id.forEach(item => { item.innerHTML += str_result; });
152			}
153			else
154			{
155				// add item to container
156				cnt_normas.forEach(item => { item.innerHTML += str_result; });
157			}
158
159			// build array to export
160			let item_norma_res = [
161				item.title,
162				item.info,
163				item.year,
164				item.number,
165				item.link,
166			]
167			arr_norms_data.push(item_norma_res);
168		}
169	});
170}
171
172//
173function build_item_result(title, info, content)
174{
175	let str_result = '';
176	str_result +='<div class="row_item_norm">';
177	str_result +='<div class="txt_title_listnorm">'+title+'</div>';
178
179	if(content!="")
180	{
181		str_result +='<div>'+content+'</div>';
182	}
183	else{
184		str_result +='<div>'+info+'</div>';
185	}
186
187	str_result +='</div>';
188
189	return str_result;
190}
191
192// Iterate norms to create array js
193function get_norms()
194{
195	var tabs = document.querySelectorAll("#cnt_tab_notificaciones .ce-tab-pane");
196	// console.log(tabs);
197
198	// validar en caso de que existan tabs
199	// if(typeof(tabs) != 'undefined' && tabs != null)
200	if(tabs.length>0)
201	{
202		// console.log("entra tabs");
203		// recorrer los tabs del contenedor
204		tabs.forEach(item => {
205			// get id
206			var id_tab = item.getAttribute("id");
207			var normas = document.querySelectorAll("#"+id_tab+" .item_norm");
208			loop_items_norma(normas, id_tab);
209		});
210	}
211	else
212	{
213		// console.log("entra normal");
214		// get list normas
215		var normas = document.querySelectorAll(".item_norm");
216		loop_items_norma(normas);
217	}
218}
219
220function loop_items_norma(normas, id_tab="")
221{
222	if(typeof(normas) != 'undefined' && normas != null)
223	{
224		normas.forEach(item => {
225			let title = item.getAttribute("data-title");
226			let info = item.getAttribute("data-info");
227			let content = item.getAttribute("data-content");
228			let year = item.getAttribute("data-year");
229			let number = item.getAttribute("data-number");
230			// let link = item.getAttribute("data-link");
231			let link = "";
232			var links = item.querySelectorAll("a");
233			links.forEach(item_a => {
234				link = item_a.getAttribute("href");
235			});
236
237			let item_norma = {
238				"title": title,
239				"info": info,
240				"year": year,
241				"number": number,
242				"link": link,
243				"content": content,
244				"id_tab": id_tab
245			}
246			arr_norms.push(item_norma);
247		});
248	}
249}
250
251// export html table to excel
252function exportTableToExcel()
253{
254	// element table
255	var tbl_data = document.getElementById("tbl_data");
256	if(typeof(tbl_data) != 'undefined' && tbl_data != null)
257	{
258		// var downloadLink;
259		var dataType = 'application/vnd.ms-excel;charset=utf-8';
260		var tableHTML = tbl_data.outerHTML.replace(/ /g, '%20');
261
262		// Specify file name
263		filename = 'export.xls';
264		// Create download link element
265		var downloadLink = document.createElement("a");
266		var universalBOM = "\uFEFF";
267		// Create a link to the file
268		downloadLink.href = 'data:' + dataType + ', ' + universalBOM+tableHTML;
269		// downloadLink.setAttribute('download', 'example.csv');
270		downloadLink.setAttribute('download', filename);
271		//triggering the function
272		document.body.appendChild(downloadLink);
273		downloadLink.click();
274	}
275
276	if(arr_norms_data.length>0 )
277	{
278		// Create object XLSX
279		var ws = XLSX.utils.aoa_to_sheet(arr_norms_data);
280		ws['!cols'] = [];
281		ws['!cols'] = [
282            {'width' : 30}, // width for col A
283            {'width' : 40}, // width for col B
284		]; // hidding col C
285		/* Add link */
286		const cells = Object.keys(ws);
287		// console.log(ws);
288		cells.forEach(cell => {
289			// If cell contains a hyperlink, overwrite the raw value with the hyperlink
290			if(cell.charAt(0)=="E" && ws[cell].v!="")
291			{
292				var num_cell = cell.replace(/\D/g,'');
293				let title_norm = ws["A"+num_cell].v;
294
295				ws["A"+num_cell].l = {
296					Target: ws[cell].v,
297					Tooltip: title_norm
298				};
299				ws[cell].l = {
300					Target: ws[cell].v,
301					Tooltip: ws[cell].v
302				};
303			}
304		});
305
306		/* Export to file (start a download) */
307  		var wb = XLSX.utils.book_new();
308  		XLSX.utils.book_append_sheet(wb, ws, fileTitle);
309		const excelBuffer = XLSX.write(wb, { bookType: "xlsx", type: "array" });
310
311		var fileName = fileTitle;
312		const fileData = new Blob([excelBuffer], { type: fileType });
313		saveAs(fileData, fileName + fileExtension);
314	}
315}
316
317
318// get data from datepicker
319function prepare_datepicker()
320{
321	//if exists datepicker
322	// VANILLA DATEPICKER
323	const elem_date = document.getElementById('dat_norm_year');
324	if(typeof(elem_date) != 'undefined' && elem_date != null)
325	{
326		var init_year = new Date().getFullYear()  // returns the current year
327		str_year = init_year;
328
329		const datepicker = new Datepicker(elem_date, {
330		  	pickLevel : 2,
331			format : "yyyy",
332			defaultViewDate : '"'+init_year+'"'
333		});
334		// event datepicker
335		elem_date.addEventListener('changeDate', function(e) {
336			// console.log(e.detail.date.getFullYear());
337			str_year = e.detail.date.getFullYear();
338			seach_norma();
339		});
340	}
341}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.