1var next_news; 2var news_loaded = false; 3 4const white_letter_headers = [ 5 "oma", 6 "internacional", 7 "nandu", 8 "mateclubes", 9 "literatura", 10 "otros_nac", 11 "otros_inter", 12 "otros" 13]; 14const news_category_aliases = { 15 OMA: "oma", 16 oma: "oma", 17 nandu: "nandu", 18 mateclubes: "mateclubes", 19 internacional: "internacional", 20 selectivo: "selectivo", 21 literatura: "literatura", 22 otros: "otros", 23 otros_nac: "otros_nac", 24 otros_inter: "otros_inter" 25}; 26 27function normalize_news_category(category){ 28 if (!category){ 29 return "otros"; 30 } 31 if (news_category_aliases[category]){ 32 return news_category_aliases[category]; 33 } 34 const normalized = String(category).toLowerCase(); 35 return news_category_aliases[normalized] || normalized; 36} 37 38function normalize_news_item(news_info){ 39 var normalized = Object.assign({}, news_info); 40 normalized.categoria = normalize_news_category(news_info.categoria); 41 return normalized; 42} 43 44function save_and_show_news(filters){ 45 return function(news_info) { 46 next_news = news_info.map(normalize_news_item); 47 if (!filters.show_hidden){ 48 next_news = next_news.filter(item => item.show === true); 49 } 50 if (filters.fill_all){ 51 agregar_news(next_news.length); 52 } else { 53 agregar_news(5); 54 } 55 news_loaded = true; 56 }; 57} 58 59function get_news(year, callback){ 60 var url = "/contents/news/" + year + ".json"; 61 fetch(url, {"cache": "no-store"}) 62 .then(function(response){ 63 if (!response.ok){ 64 return []; 65 } 66 return response.json(); 67 }) 68 .then(callback); 69} 70 71function fill_news(year, filters){ 72 get_news(year, save_and_show_news(filters || {})); 73} 74 75function get_header_classes(tag){ 76 var normalizedTag = normalize_news_category(tag); 77 if (white_letter_headers.indexOf(normalizedTag) !== -1){ 78 return "card-header text-white card-header-" + normalizedTag; 79 } 80 return "card-header card-header-" + normalizedTag; 81} 82 83function create_news(news_info){ 84 var normalizedNews = normalize_news_item(news_info); 85 var card_div = document.createElement("div"); 86 card_div.className = "card news-card"; 87 card_div.setAttribute("news_id", normalizedNews.id); 88 card_div.setAttribute("show_news", normalizedNews.show); 89 90 var card_header = document.createElement("div"); 91 card_header.className = get_header_classes(normalizedNews.categoria); 92 card_header.innerHTML = normalizedNews.title; 93 card_div.appendChild(card_header); 94 95 var card_body = document.createElement("div"); 96 card_body.className = "card-body"; 97 card_body.innerHTML = normalizedNews.body; 98 card_div.appendChild(card_body); 99 100 if (normalizedNews.footer){ 101 var card_footer = document.createElement("div"); 102 card_footer.className = "card-footer text-end text-muted"; 103 var small_footer = document.createElement("small"); 104 small_footer.innerHTML = normalizedNews.footer; 105 card_footer.appendChild(small_footer); 106 card_div.appendChild(card_footer); 107 } 108 return card_div; 109} 110 111function agregar_news(n){ 112 var listed_news = document.getElementById("listed-news"); 113 for (var i = 0; i < n; i++) { 114 if (next_news.length) { 115 var news_info = next_news.shift(); 116 listed_news.appendChild(create_news(news_info)); 117 } 118 } 119} 120 121function ensure_news_category_option(category){ 122 var normalizedCategory = normalize_news_category(category); 123 var categorySelect = document.getElementById("categoria"); 124 for (var i = 0; i < categorySelect.options.length; i++) { 125 if (categorySelect.options[i].value === normalizedCategory) { 126 return normalizedCategory; 127 } 128 } 129 var option = document.createElement("option"); 130 option.value = normalizedCategory; 131 option.text = normalizedCategory; 132 categorySelect.appendChild(option); 133 return normalizedCategory; 134} 135 136function set_body_editor_content(body){ 137 var normalizedBody = body || ""; 138 document.getElementById("body").value = normalizedBody; 139 140 var retries = 0; 141 function setEditorContent(){ 142 var editor = tinymce.get("body"); 143 if (editor){ 144 editor.setContent(normalizedBody); 145 return; 146 } 147 if (retries < 20){ 148 retries += 1; 149 window.setTimeout(setEditorContent, 100); 150 } 151 } 152 153 setEditorContent(); 154} 155 156function build_news_option_label(news_info){ 157 var label = "Id " + news_info.id + " - " + news_info.title; 158 if (news_info.show === false){
159 label += " (oculta)"; 160 } 161 return label; 162} 163 164function populate_news_select(year, select, selectedNewsId){ 165 select.innerHTML = ""; 166 get_news(year, function(news_list){ 167 var placeholder = document.createElement("option"); 168 placeholder.value = ""; 169 placeholder.text = news_list.length ? "Elegir noticia" : "No hay noticias para este año"; 170 select.appendChild(placeholder); 171 172 news_list.forEach(function(news_info){ 173 var normalizedNews = normalize_news_item(news_info); 174 var option = document.createElement("option"); 175 option.value = normalizedNews.id; 176 option.text = build_news_option_label(normalizedNews); 177 select.appendChild(option); 178 }); 179 180 if (selectedNewsId){ 181 select.value = String(selectedNewsId); 182 } 183 }); 184} 185 186function load_news(year, news_id, callback){ 187 function fill_news_by_id(news_list){ 188 var correct_news; 189 for (var i = 0; i < news_list.length; i++) { 190 if (news_list[i].id == news_id) { 191 correct_news = normalize_news_item(news_list[i]); 192 } 193 } 194 if (correct_news){ 195 document.getElementById("news-id").value = correct_news.id; 196 document.getElementById("title").value = correct_news.title; 197 document.getElementById("categoria").value = ensure_news_category_option(correct_news.categoria); 198 document.getElementById("footer").value = correct_news.footer || ""; 199 document.getElementById("news-show").checked = correct_news.show; 200 set_body_editor_content(correct_news.body); 201 if (callback){ 202 callback(correct_news); 203 } 204 } else { 205 show_modal("Error", "No existe noticia con id " + news_id + " para el año " + year); 206 } 207 } 208 get_news(year, fill_news_by_id); 209}
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.