PageSourceSearch

https://internacional.df.gov.br/o/gdf-secretarias-lf7_4-2026-theme…=js&languageId=pt_BR&t=1790295484000

js internacional.df.gov.br collected 2026-10-02 10:45:54 UTC 14,323 bytes, 445 lines download raw bytes

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                      "&nbsp;&nbsp;&nbsp;&nbsp;- " +
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.