1/*1790295474000*/ 2if ($(".agenda").is("#agenda-do-secretario")) { 3 function str_pad(input, pad_length, pad_string, pad_type) { 4 var half = "", 5 pad_to_go; 6 var str_pad_repeater = function (s, len) { 7 var collect = "", 8 i; 9 while (collect.length < len) { 10 collect += s; 11 } 12 collect = collect.substr(0, len); 13 return collect; 14 }; 15 input += ""; 16 pad_string = pad_string !== undefined ? pad_string : " "; 17 if ( 18 pad_type != "STR_PAD_LEFT" && 19 pad_type != "STR_PAD_RIGHT" && 20 pad_type != "STR_PAD_BOTH" 21 ) { 22 pad_type = "STR_PAD_RIGHT"; 23 } 24 if ((pad_to_go = pad_length - input.length) > 0) { 25 if (pad_type == "STR_PAD_LEFT") { 26 input = str_pad_repeater(pad_string, pad_to_go) + input; 27 } else if (pad_type == "STR_PAD_RIGHT") { 28 input = input + str_pad_repeater(pad_string, pad_to_go); 29 } else if (pad_type == "STR_PAD_BOTH") { 30 half = str_pad_repeater(pad_string, Math.ceil(pad_to_go / 2)); 31 input = half + input + half; 32 input = input.substr(0, pad_length); 33 } 34 } 35 return input; 36 } 37 38 var lstCompromissos = {}, 39 lstParticipantes = {}, 40 url = "https://agendamento.buriti.df.gov.br/calendario/publico/", 41 dtInicial = new Date().toISOString().substr(0, 10), 42 cores = { 43 month: "#12a7c0", 44 agendaWeek: "#eb6709", 45 agendaDay: "#044069", 46 listMonth: "#02b69f", 47 }, 48 calendarEl = document.getElementById("calendar"), 49 calendar = jQuery("#calendar"), 50 lstGabinetes = [ 51 { 52 name: $("#name").val(), 53 cargo: $("#cargo").val(), 54 img: $("#img").val(), 55 hash: $("#hash").val(), 56 }, 57 ]; 58 59 /** 60 * INIT: 61 * 62 * @returns {void} 63 */ 64 65 jQuery(document).ready(function () { 66 var wdHeight = jQuery(window).height(); 67 68 renderCalendar( 69 typeof lstGabinetes[1] != "undefined" 70 ? lstGabinetes[1]["hash"] 71 : lstGabinetes[0]["hash"] 72 ); 73 resizeCalendario(wdHeight); 74 75 jQuery(".fc-right, .fc-left").addClass("hidden-xs"); 76 77 $( 78 ".paginas-internas #main-content.columns-1 > .portlet-layout > .portlet-column-only > .portlet-column-content-only > .portlet-boundary:not(.no-max-width) > .portlet" 79 ).css("maxWidth", "1170px"); 80 81 if (lstGabinetes.length > 1) { 82 for (var i = 0; i < 3; i++) { 83 jQuery(".icones-de-categoria").append( 84 _layoutImagem(lstGabinetes[i], i, i == 1 ? true : false) 85 ); 86 } 87 } else { 88 jQuery(".icones-de-categoria").append( 89 _layoutImagem(lstGabinetes[0], 0, true) 90 ); 91 jQuery(".setaEsquerda, .setaDireita").remove(); 92 } 93 }); 94 95 /** 96 * Garante que o container do pop-up exista no DOM (algumas páginas não incluem .msgCalendarEvent no template). 97 * Cria e anexa ao body se não existir. 98 * @returns {jQuery} 99 */ 100 function getOrCreateMsgCalendarEvent() { 101 var $el = jQuery(".msgCalendarEvent"); 102 if ($el.length === 0) { 103 var style = document.createElement("style"); 104 style.textContent = 105 ".msgCalendarEvent{position:absolute;z-index:1000000;background:#fff;padding:10px;width:350px;border:1px solid #12a7c0;border-radius:3px;display:none;line-height:20px;font-size:14px}" + 106 ".msgCalendarEvent .btnFecharMsg{position:absolute;background:#12a7c0;color:#fff;font-size:12px;line-height:30px;font-weight:bold;text-align:center;border-radius:50%;width:30px;height:30px;top:-10px;right:-10px;cursor:pointer}" + 107 ".msgCalendarEvent hr{margin-top:1px;margin-bottom:2px}"; 108 document.head.appendChild(style); 109 $el = jQuery("<div class=\"msgCalendarEvent\" aria-hidden=\"true\"></div>") 110 .css("display", "none") 111 .appendTo("body"); 112 } 113 return $el; 114 } 115 116 /** 117 * Renderiza o calendário na div especÃfica 118 * 119 * @returns {void} 120 */ 121 122 function renderCalendar(hash) { 123 jQuery(".area-agenda").removeClass("agendaVirtual"); 124 jQuery(".area-carregando").show(); 125 126 jQuery.post( 127 url, 128 { hash: hash }, 129 function (r) { 130 try { 131 lstCompromissos = r.data.lstCompromissos; 132 lstParticipantes = r.data.lstParticipantes; 133 134 if ($(".fc-toolbar").length == 0) { 135 calendarEl = document.getElementById("calendar"); 136 calendar = new FullCalendar.Calendar(calendarEl, { 137 plugins: ["interaction", "dayGrid", "list", "timeGrid"], 138 defaultView: "dayGridMonth", 139 header: { 140 left: "", 141 center: "", 142 right: "", 143 }, 144 businessHours: { 145 start: "07:00", // a start time (8am in this example) 146 end: "22:00", // an end time (6pm in this example) 147 }, 148 defaultDate: dtInicial, 149 minTime: "06:00:00", 150 maxTime: "23:00:00", 151 editable: false, 152 locale: "pt-br", 153 navLinks: true, 154 slotDuration: "00:15:00", 155 height: "1500", 156 eventLimit: false, 157 eventLimitText: "", 158 events: lstCompromissos, 159 dateClick: function (event) { 160 mudarLayoutCalendario( 161 "btnCalendar-timeGridDay", 162 "timeGridDay", 163 event.view.activeStart.toISOString().substr(0, 10) 164 ); 165 }, 166 eventClick: function (event) { 167 if (event.jsEvent) event.jsEvent.preventDefault(); 168 169 var html = "", 170 participantes = "";
171 var eventId = event.event ? event.event.id : event.id; 172 173 if (typeof lstParticipantes[eventId] != "undefined") { 174 for (var i in lstParticipantes[eventId]) { 175 participantes += 176 " - " + 177 lstParticipantes[eventId][i]["name"] + 178 "\n<br />"; 179 } 180 } 181 182 var start = event.event && event.event.start; 183 var dataStr = start 184 ? start.toISOString().substr(0, 10).split("-").reverse().join("/") 185 : ""; 186 var horaStr = start && start.toString ? start.toString().substr(16, 5) : ""; 187 var pauta = 188 (event.event && 189 event.event._def && 190 event.event._def.extendedProps && 191 event.event._def.extendedProps.pauta) || 192 ""; 193 194 html += ` 195 <div class="d-flex justify-content-between pr-5"> 196 <div class="btnFecharMsg">X</div> 197 <span><strong>Data:</strong> ${dataStr}</span> 198 <span><strong>Horário:</strong> ${horaStr}</span> 199 </div> 200 <hr /> 201 <p><strong>Evento:</strong> ${(event.event && event.event.title) || ""}</p> 202 <hr /> 203 <p><strong>Pauta:</strong> ${pauta}</p> 204 ${ 205 participantes != "" 206 ? "<hr /><p><strong>Lista de Participantes:</strong></p>" + 207 participantes 208 : "" 209 } 210 `; 211 var popupW = 350; 212 var offset = 12; 213 var pageX = event.jsEvent.pageX; 214 var pageY = event.jsEvent.pageY; 215 var left = pageX + offset; 216 var top = pageY + offset; 217 var winW = jQuery(window).width(); 218 var winH = jQuery(window).height(); 219 var scrollX = window.pageXOffset || document.documentElement.scrollLeft; 220 var scrollY = window.pageYOffset || document.documentElement.scrollTop; 221 if (left + popupW > scrollX + winW - 10) left = pageX - popupW - offset; 222 if (left < scrollX + 10) left = scrollX + 10; 223 if (top + 200 > scrollY + winH - 10) top = pageY - 220; 224 if (top < scrollY + 10) top = scrollY + 10; 225 getOrCreateMsgCalendarEvent() 226 .css({ 227 top: top + "px", 228 left: left + "px", 229 display: "block", 230 }) 231 .html(html); 232 }, 233 eventRender: function (event) { 234 $(event.el) 235 .find(".fc-list-item-title") 236 .append( 237 '<br/><div class="small"><span>Pauta:</span> ' + 238 event.event._def.extendedProps.pauta + 239 "</div>" 240 ); 241 }, 242 }); 243 calendar.render(); 244 } else { 245 calendar.addEventSource(lstCompromissos); 246 } 247 248 setTimeout(function () { 249 jQuery("#btnCalendar-title").html(calendar.view.title); 250 jQuery(".area-agenda h2").html( 251 jQuery(".imgGabinete.zoom").next().text() 252 ); 253 jQuery(".area-agenda").addClass("agendaVirtual"); 254 jQuery(".area-carregando").hide(); 255 removerScroll(); 256 }, 100); 257 } catch (e) { 258 console.log(e); 259 } //Atualiza a tela em caso de problema 260 }, 261 "json" 262 ); 263 } 264 265 /** 266 * 267 * 268 * @param {type} calendarView 269 * @returns {undefined} */ 270 271 function resizeCalendar(calendarView) { 272 calendarView.setHeight(650); 273 } 274 275 /** 276 * Função que irá redimensionar o calendário para ocupar a tela do celular do usuário 277 * 278 * @param int wdHeight 279 * @returns {undefined} 280 */ 281 282 function resizeCalendario(wdHeight) { 283 if (wdHeight + 450 >= 0) { 284 jQuery(".fc-scroller").height(wdHeight + 450); 285 } 286 } 287 288 /** 289 * Modifica o layout do calendário 290 * 291 * @param {string} btnClicked 292 * @param {string} action 293 * @param {date} changeDate 294 * @return {void} 295 */ 296 297 function mudarLayoutCalendario(btnClicked, action, changeDate) { 298 calendar.changeView(action); 299 300 if (changeDate != null) { 301 calendar.gotoDate(changeDate); 302 } 303 304 jQuery("#btnCalendar-title").html(calendar.view.title); 305 jQuery(".filtrosAgenda img.ativa").removeClass("ativa"); 306 jQuery("#" + btnClicked) 307 .children("img") 308 .addClass("ativa"); 309 jQuery(".escolhaMes").css("background-color", cores[action]); 310 if (jQuery(".menu-mobile").is(":visible")) { 311 jQuery(".filtrosAgenda").toggle(); 312 } 313 } 314 315 /** 316 * Função que será chamada para alterar as informações visÃveis do calendário. 317 * 318 * @return {undefined} 319 */ 320 321 jQuery(document).on( 322 "click", 323 "#btnCalendar-prev, #btnCalendar-next, #btnCalendar-dayGridMonth, #btnCalendar-timeGridWeek, #btnCalendar-timeGridDay, #btnCalendar-listMonth", 324 function () { 325 var idBtn = jQuery(this).attr("id"), 326 action = idBtn.substr(12), 327 leftActions = ["prev", "next"]; 328 329 if (jQuery.inArray(action, leftActions) == -1) { 330 mudarLayoutCalendario(idBtn, action, null); 331 } else { 332 if (action == "prev") { 333 calendar.prev(); 334 } else if (action == "next") { 335 calendar.next(); 336 } 337 jQuery("#btnCalendar-title").html(calendar.view.title); 338 } 339 } 340 ); 341 342 jQuery(document).on("click", ".btnFecharMsg", function () { 343 jQuery(".msgCalendarEvent").hide(); 344 }); 345 346 /** 347 * 348 * @param {type} btnClick 349 * @return {undefined} 350 */ 351 function mudarGabinete(btnClick) { 352 var gabAtivo = parseInt( 353 jQuery(".imgGabinete.zoom").parent().attr("data-id") 354 ), 355 keyProximoGab = 356 btnClick + gabAtivo < 0 357 ? lstGabinetes.length + btnClick + gabAtivo 358 : btnClick + gabAtivo > lstGabinetes.length - 1 359 ? Math.abs(btnClick + gabAtivo) - lstGabinetes.length 360 : btnClick + gabAtivo, 361 proximoGab = lstGabinetes[keyProximoGab]; 362 363 if (btnClick == -2) { 364 jQuery(".imgGabinete:first-of-type:nth(0)") 365 .addClass("zoom") 366 .next() 367 .removeClass("margin-top-negativa"); 368 jQuery(".imgGabinete:first-of-type:nth(1)") 369 .removeClass("zoom") 370 .next() 371 .addClass("margin-top-negativa"); 372 jQuery(".imgGabinete:first-of-type:nth(2)").parent().remove(); 373 jQuery(".icones-de-categoria").prepend( 374 _layoutImagem(proximoGab, keyProximoGab, false) 375 ); 376 } else { 377 jQuery(".imgGabinete:first-of-type:nth(2)") 378 .addClass("zoom") 379 .next() 380 .removeClass("margin-top-negativa"); 381 jQuery(".imgGabinete:first-of-type:nth(1)") 382 .removeClass("zoom") 383 .next() 384 .addClass("margin-top-negativa"); 385 jQuery(".imgGabinete:first-of-type:nth(0)").parent().remove(); 386 jQuery(".icones-de-categoria").append( 387 _layoutImagem(proximoGab, keyProximoGab, false) 388 ); 389 } 390 calendar.removeAllEventSources(); 391 renderCalendar( 392 lstGabinetes[jQuery(".imgGabinete.zoom").parent().attr("data-id")]["hash"] 393 ); 394 } 395 396 /** 397 * 398 * @param {int} proximoGab 399 * @param {int} key 400 * @param {bool} ativo 401 * @return {String} 402 */ 403 function _layoutImagem(proximoGab, key, ativo) { 404 var html = ` 405 <div class="imagem-do-gabinete" data-id="${key}"> 406 <img 407 src="${proximoGab["img"]}" 408 alt="Gabinete" 409 class="ImgCategoria imgGabinete ${ativo ? "zoom" : ""}" 410 /> 411 <p class="nome-autoridade ${ativo ? "" : "margin-top-negativa"}">${ 412 proximoGab["name"] 413 }</p> 414 <p class="cargo-autoridade">${proximoGab["cargo"]}</p> 415 </div> 416 `; 417 return html; 418 } 419 420 /** 421 * Função que remove a barra de rolagem para visualização de semana e diário. 422 * 423 * @return {void} 424 */ 425 function removerScroll() { 426 if ( 427 calendar.view.type == "timeGridWeek" || 428 calendar.view.type == "timeGridDay" 429 ) { 430 jQuery(".fc-scroller").css({ height: "1770px" }); 431 } 432 } 433 434 jQuery(document) 435 .on("click", ".setaEsquerda, .setaDireita", function () {
436 var btnClick = parseInt(jQuery(this).hasClass("setaEsquerda") ? -2 : 2); 437 mudarGabinete(btnClick); 438 }) 439 .on("click", ".imagem-do-gabinete:nth(0)", function () { 440 mudarGabinete(-2); 441 }) 442 .on("click", ".imagem-do-gabinete:nth(2)", function () { 443 mudarGabinete(2); 444 }); 445}
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.