diff --git a/static/admin/js/SelectBox.99d0cfd2e80c.js b/static/admin/js/SelectBox.99d0cfd2e80c.js new file mode 100644 index 00000000..2073f03d --- /dev/null +++ b/static/admin/js/SelectBox.99d0cfd2e80c.js @@ -0,0 +1,144 @@ +(function($) { + 'use strict'; + var SelectBox = { + cache: {}, + init: function(id) { + var box = document.getElementById(id); + var node; + SelectBox.cache[id] = []; + var cache = SelectBox.cache[id]; + var boxOptions = box.options; + var boxOptionsLength = boxOptions.length; + for (var i = 0, j = boxOptionsLength; i < j; i++) { + node = boxOptions[i]; + cache.push({value: node.value, text: node.text, displayed: 1}); + } + }, + redisplay: function(id) { + // Repopulate HTML select box from cache + var box = document.getElementById(id); + var node; + $(box).empty(); // clear all options + var new_options = box.outerHTML.slice(0, -9); // grab just the opening tag + var cache = SelectBox.cache[id]; + for (var i = 0, j = cache.length; i < j; i++) { + node = cache[i]; + if (node.displayed) { + var new_option = new Option(node.text, node.value, false, false); + // Shows a tooltip when hovering over the option + new_option.setAttribute("title", node.text); + new_options += new_option.outerHTML; + } + } + new_options += ''; + box.outerHTML = new_options; + }, + filter: function(id, text) { + // Redisplay the HTML select box, displaying only the choices containing ALL + // the words in text. (It's an AND search.) + var tokens = text.toLowerCase().split(/\s+/); + var node, token; + var cache = SelectBox.cache[id]; + for (var i = 0, j = cache.length; i < j; i++) { + node = cache[i]; + node.displayed = 1; + var node_text = node.text.toLowerCase(); + var numTokens = tokens.length; + for (var k = 0; k < numTokens; k++) { + token = tokens[k]; + if (node_text.indexOf(token) === -1) { + node.displayed = 0; + break; // Once the first token isn't found we're done + } + } + } + SelectBox.redisplay(id); + }, + delete_from_cache: function(id, value) { + var node, delete_index = null; + var cache = SelectBox.cache[id]; + for (var i = 0, j = cache.length; i < j; i++) { + node = cache[i]; + if (node.value === value) { + delete_index = i; + break; + } + } + cache.splice(delete_index, 1); + }, + add_to_cache: function(id, option) { + SelectBox.cache[id].push({value: option.value, text: option.text, displayed: 1}); + }, + cache_contains: function(id, value) { + // Check if an item is contained in the cache + var node; + var cache = SelectBox.cache[id]; + for (var i = 0, j = cache.length; i < j; i++) { + node = cache[i]; + if (node.value === value) { + return true; + } + } + return false; + }, + move: function(from, to) { + var from_box = document.getElementById(from); + var option; + var boxOptions = from_box.options; + var boxOptionsLength = boxOptions.length; + for (var i = 0, j = boxOptionsLength; i < j; i++) { + option = boxOptions[i]; + var option_value = option.value; + if (option.selected && SelectBox.cache_contains(from, option_value)) { + SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option_value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + move_all: function(from, to) { + var from_box = document.getElementById(from); + var option; + var boxOptions = from_box.options; + var boxOptionsLength = boxOptions.length; + for (var i = 0, j = boxOptionsLength; i < j; i++) { + option = boxOptions[i]; + var option_value = option.value; + if (SelectBox.cache_contains(from, option_value)) { + SelectBox.add_to_cache(to, {value: option_value, text: option.text, displayed: 1}); + SelectBox.delete_from_cache(from, option_value); + } + } + SelectBox.redisplay(from); + SelectBox.redisplay(to); + }, + sort: function(id) { + SelectBox.cache[id].sort(function(a, b) { + a = a.text.toLowerCase(); + b = b.text.toLowerCase(); + try { + if (a > b) { + return 1; + } + if (a < b) { + return -1; + } + } + catch (e) { + // silently fail on IE 'unknown' exception + } + return 0; + } ); + }, + select_all: function(id) { + var box = document.getElementById(id); + var boxOptions = box.options; + var boxOptionsLength = boxOptions.length; + for (var i = 0; i < boxOptionsLength; i++) { + boxOptions[i].selected = 'selected'; + } + } + }; + window.SelectBox = SelectBox; +})(django.jQuery); diff --git a/static/admin/js/SelectBox.99d0cfd2e80c.js.gz b/static/admin/js/SelectBox.99d0cfd2e80c.js.gz new file mode 100644 index 00000000..1736d8c1 Binary files /dev/null and b/static/admin/js/SelectBox.99d0cfd2e80c.js.gz differ diff --git a/static/admin/js/SelectBox.js b/static/admin/js/SelectBox.js index 1a14959b..2073f03d 100644 --- a/static/admin/js/SelectBox.js +++ b/static/admin/js/SelectBox.js @@ -19,7 +19,7 @@ var box = document.getElementById(id); var node; $(box).empty(); // clear all options - var new_options = box.outerHTML.slice(0, -9); // grab just the opening tag + var new_options = box.outerHTML.slice(0, -9); // grab just the opening tag var cache = SelectBox.cache[id]; for (var i = 0, j = cache.length; i < j; i++) { node = cache[i]; @@ -48,7 +48,7 @@ token = tokens[k]; if (node_text.indexOf(token) === -1) { node.displayed = 0; - break; // Once the first token isn't found we're done + break; // Once the first token isn't found we're done } } } diff --git a/static/admin/js/SelectBox.js.gz b/static/admin/js/SelectBox.js.gz index f743a4a8..1736d8c1 100644 Binary files a/static/admin/js/SelectBox.js.gz and b/static/admin/js/SelectBox.js.gz differ diff --git a/static/admin/js/actions.8d83e3af0fbd.js b/static/admin/js/actions.8d83e3af0fbd.js new file mode 100644 index 00000000..27c60a6e --- /dev/null +++ b/static/admin/js/actions.8d83e3af0fbd.js @@ -0,0 +1,153 @@ +/*global gettext, interpolate, ngettext*/ +(function($) { + 'use strict'; + var lastChecked; + + $.fn.actions = function(opts) { + var options = $.extend({}, $.fn.actions.defaults, opts); + var actionCheckboxes = $(this); + var list_editable_changed = false; + var showQuestion = function() { + $(options.acrossClears).hide(); + $(options.acrossQuestions).show(); + $(options.allContainer).hide(); + }, + showClear = function() { + $(options.acrossClears).show(); + $(options.acrossQuestions).hide(); + $(options.actionContainer).toggleClass(options.selectedClass); + $(options.allContainer).show(); + $(options.counterContainer).hide(); + }, + reset = function() { + $(options.acrossClears).hide(); + $(options.acrossQuestions).hide(); + $(options.allContainer).hide(); + $(options.counterContainer).show(); + }, + clearAcross = function() { + reset(); + $(options.acrossInput).val(0); + $(options.actionContainer).removeClass(options.selectedClass); + }, + checker = function(checked) { + if (checked) { + showQuestion(); + } else { + reset(); + } + $(actionCheckboxes).prop("checked", checked) + .parent().parent().toggleClass(options.selectedClass, checked); + }, + updateCounter = function() { + var sel = $(actionCheckboxes).filter(":checked").length; + // data-actions-icnt is defined in the generated HTML + // and contains the total amount of objects in the queryset + var actions_icnt = $('.action-counter').data('actionsIcnt'); + $(options.counterContainer).html(interpolate( + ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { + sel: sel, + cnt: actions_icnt + }, true)); + $(options.allToggle).prop("checked", function() { + var value; + if (sel === actionCheckboxes.length) { + value = true; + showQuestion(); + } else { + value = false; + clearAcross(); + } + return value; + }); + }; + // Show counter by default + $(options.counterContainer).show(); + // Check state of checkboxes and reinit state if needed + $(this).filter(":checked").each(function(i) { + $(this).parent().parent().toggleClass(options.selectedClass); + updateCounter(); + if ($(options.acrossInput).val() === 1) { + showClear(); + } + }); + $(options.allToggle).show().on('click', function() { + checker($(this).prop("checked")); + updateCounter(); + }); + $("a", options.acrossQuestions).on('click', function(event) { + event.preventDefault(); + $(options.acrossInput).val(1); + showClear(); + }); + $("a", options.acrossClears).on('click', function(event) { + event.preventDefault(); + $(options.allToggle).prop("checked", false); + clearAcross(); + checker(0); + updateCounter(); + }); + lastChecked = null; + $(actionCheckboxes).on('click', function(event) { + if (!event) { event = window.event; } + var target = event.target ? event.target : event.srcElement; + if (lastChecked && $.data(lastChecked) !== $.data(target) && event.shiftKey === true) { + var inrange = false; + $(lastChecked).prop("checked", target.checked) + .parent().parent().toggleClass(options.selectedClass, target.checked); + $(actionCheckboxes).each(function() { + if ($.data(this) === $.data(lastChecked) || $.data(this) === $.data(target)) { + inrange = (inrange) ? false : true; + } + if (inrange) { + $(this).prop("checked", target.checked) + .parent().parent().toggleClass(options.selectedClass, target.checked); + } + }); + } + $(target).parent().parent().toggleClass(options.selectedClass, target.checked); + lastChecked = target; + updateCounter(); + }); + $('form#changelist-form table#result_list tr').on('change', 'td:gt(0) :input', function() { + list_editable_changed = true; + }); + $('form#changelist-form button[name="index"]').on('click', function(event) { + if (list_editable_changed) { + return confirm(gettext("You have unsaved changes on individual editable fields. If you run an action, your unsaved changes will be lost.")); + } + }); + $('form#changelist-form input[name="_save"]').on('click', function(event) { + var action_changed = false; + $('select option:selected', options.actionContainer).each(function() { + if ($(this).val()) { + action_changed = true; + } + }); + if (action_changed) { + if (list_editable_changed) { + return confirm(gettext("You have selected an action, but you haven't saved your changes to individual fields yet. Please click OK to save. You'll need to re-run the action.")); + } else { + return confirm(gettext("You have selected an action, and you haven't made any changes on individual fields. You're probably looking for the Go button rather than the Save button.")); + } + } + }); + }; + /* Setup plugin defaults */ + $.fn.actions.defaults = { + actionContainer: "div.actions", + counterContainer: "span.action-counter", + allContainer: "div.actions span.all", + acrossInput: "div.actions input.select-across", + acrossQuestions: "div.actions span.question", + acrossClears: "div.actions span.clear", + allToggle: "#action-toggle", + selectedClass: "selected" + }; + $(document).ready(function() { + var $actionsEls = $('tr input.action-select'); + if ($actionsEls.length > 0) { + $actionsEls.actions(); + } + }); +})(django.jQuery); diff --git a/static/admin/js/actions.8d83e3af0fbd.js.gz b/static/admin/js/actions.8d83e3af0fbd.js.gz new file mode 100644 index 00000000..95a332b2 Binary files /dev/null and b/static/admin/js/actions.8d83e3af0fbd.js.gz differ diff --git a/static/admin/js/actions.js b/static/admin/js/actions.js index 524616fb..27c60a6e 100644 --- a/static/admin/js/actions.js +++ b/static/admin/js/actions.js @@ -8,59 +8,59 @@ var actionCheckboxes = $(this); var list_editable_changed = false; var showQuestion = function() { - $(options.acrossClears).hide(); - $(options.acrossQuestions).show(); - $(options.allContainer).hide(); - }, - showClear = function() { - $(options.acrossClears).show(); - $(options.acrossQuestions).hide(); - $(options.actionContainer).toggleClass(options.selectedClass); - $(options.allContainer).show(); - $(options.counterContainer).hide(); - }, - reset = function() { - $(options.acrossClears).hide(); - $(options.acrossQuestions).hide(); - $(options.allContainer).hide(); - $(options.counterContainer).show(); - }, - clearAcross = function() { - reset(); - $(options.acrossInput).val(0); - $(options.actionContainer).removeClass(options.selectedClass); - }, - checker = function(checked) { - if (checked) { - showQuestion(); - } else { + $(options.acrossClears).hide(); + $(options.acrossQuestions).show(); + $(options.allContainer).hide(); + }, + showClear = function() { + $(options.acrossClears).show(); + $(options.acrossQuestions).hide(); + $(options.actionContainer).toggleClass(options.selectedClass); + $(options.allContainer).show(); + $(options.counterContainer).hide(); + }, + reset = function() { + $(options.acrossClears).hide(); + $(options.acrossQuestions).hide(); + $(options.allContainer).hide(); + $(options.counterContainer).show(); + }, + clearAcross = function() { reset(); - } - $(actionCheckboxes).prop("checked", checked) - .parent().parent().toggleClass(options.selectedClass, checked); - }, - updateCounter = function() { - var sel = $(actionCheckboxes).filter(":checked").length; - // data-actions-icnt is defined in the generated HTML - // and contains the total amount of objects in the queryset - var actions_icnt = $('.action-counter').data('actionsIcnt'); - $(options.counterContainer).html(interpolate( - ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { - sel: sel, - cnt: actions_icnt - }, true)); - $(options.allToggle).prop("checked", function() { - var value; - if (sel === actionCheckboxes.length) { - value = true; + $(options.acrossInput).val(0); + $(options.actionContainer).removeClass(options.selectedClass); + }, + checker = function(checked) { + if (checked) { showQuestion(); } else { - value = false; - clearAcross(); + reset(); } - return value; - }); - }; + $(actionCheckboxes).prop("checked", checked) + .parent().parent().toggleClass(options.selectedClass, checked); + }, + updateCounter = function() { + var sel = $(actionCheckboxes).filter(":checked").length; + // data-actions-icnt is defined in the generated HTML + // and contains the total amount of objects in the queryset + var actions_icnt = $('.action-counter').data('actionsIcnt'); + $(options.counterContainer).html(interpolate( + ngettext('%(sel)s of %(cnt)s selected', '%(sel)s of %(cnt)s selected', sel), { + sel: sel, + cnt: actions_icnt + }, true)); + $(options.allToggle).prop("checked", function() { + var value; + if (sel === actionCheckboxes.length) { + value = true; + showQuestion(); + } else { + value = false; + clearAcross(); + } + return value; + }); + }; // Show counter by default $(options.counterContainer).show(); // Check state of checkboxes and reinit state if needed diff --git a/static/admin/js/actions.js.gz b/static/admin/js/actions.js.gz index 9e8b13ed..95a332b2 100644 Binary files a/static/admin/js/actions.js.gz and b/static/admin/js/actions.js.gz differ diff --git a/static/admin/js/admin/DateTimeShortcuts.efa703f6f0b3.js b/static/admin/js/admin/DateTimeShortcuts.efa703f6f0b3.js new file mode 100644 index 00000000..1ee7c2a9 --- /dev/null +++ b/static/admin/js/admin/DateTimeShortcuts.efa703f6f0b3.js @@ -0,0 +1,423 @@ +/*global Calendar, findPosX, findPosY, getStyle, get_format, gettext, gettext_noop, interpolate, ngettext, quickElement*/ +// Inserts shortcut buttons after all of the following: +// +// +(function() { + 'use strict'; + var DateTimeShortcuts = { + calendars: [], + calendarInputs: [], + clockInputs: [], + clockHours: { + default_: [ + [gettext_noop('Now'), -1], + [gettext_noop('Midnight'), 0], + [gettext_noop('6 a.m.'), 6], + [gettext_noop('Noon'), 12], + [gettext_noop('6 p.m.'), 18] + ] + }, + dismissClockFunc: [], + dismissCalendarFunc: [], + calendarDivName1: 'calendarbox', // name of calendar
that gets toggled + calendarDivName2: 'calendarin', // name of
that contains calendar + calendarLinkName: 'calendarlink', // name of the link that is used to toggle + clockDivName: 'clockbox', // name of clock
that gets toggled + clockLinkName: 'clocklink', // name of the link that is used to toggle + shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts + timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch + timezoneOffset: 0, + init: function() { + var body = document.getElementsByTagName('body')[0]; + var serverOffset = body.getAttribute('data-admin-utc-offset'); + if (serverOffset) { + var localOffset = new Date().getTimezoneOffset() * -60; + DateTimeShortcuts.timezoneOffset = localOffset - serverOffset; + } + + var inputs = document.getElementsByTagName('input'); + for (var i = 0; i < inputs.length; i++) { + var inp = inputs[i]; + if (inp.getAttribute('type') === 'text' && inp.className.match(/vTimeField/)) { + DateTimeShortcuts.addClock(inp); + DateTimeShortcuts.addTimezoneWarning(inp); + } + else if (inp.getAttribute('type') === 'text' && inp.className.match(/vDateField/)) { + DateTimeShortcuts.addCalendar(inp); + DateTimeShortcuts.addTimezoneWarning(inp); + } + } + }, + // Return the current time while accounting for the server timezone. + now: function() { + var body = document.getElementsByTagName('body')[0]; + var serverOffset = body.getAttribute('data-admin-utc-offset'); + if (serverOffset) { + var localNow = new Date(); + var localOffset = localNow.getTimezoneOffset() * -60; + localNow.setTime(localNow.getTime() + 1000 * (serverOffset - localOffset)); + return localNow; + } else { + return new Date(); + } + }, + // Add a warning when the time zone in the browser and backend do not match. + addTimezoneWarning: function(inp) { + var warningClass = DateTimeShortcuts.timezoneWarningClass; + var timezoneOffset = DateTimeShortcuts.timezoneOffset / 3600; + + // Only warn if there is a time zone mismatch. + if (!timezoneOffset) { + return; + } + + // Check if warning is already there. + if (inp.parentNode.querySelectorAll('.' + warningClass).length) { + return; + } + + var message; + if (timezoneOffset > 0) { + message = ngettext( + 'Note: You are %s hour ahead of server time.', + 'Note: You are %s hours ahead of server time.', + timezoneOffset + ); + } + else { + timezoneOffset *= -1; + message = ngettext( + 'Note: You are %s hour behind server time.', + 'Note: You are %s hours behind server time.', + timezoneOffset + ); + } + message = interpolate(message, [timezoneOffset]); + + var warning = document.createElement('span'); + warning.className = warningClass; + warning.textContent = message; + inp.parentNode.appendChild(document.createElement('br')); + inp.parentNode.appendChild(warning); + }, + // Add clock widget to a given field + addClock: function(inp) { + var num = DateTimeShortcuts.clockInputs.length; + DateTimeShortcuts.clockInputs[num] = inp; + DateTimeShortcuts.dismissClockFunc[num] = function() { DateTimeShortcuts.dismissClock(num); return true; }; + + // Shortcut links (clock icon and "Now" link) + var shortcuts_span = document.createElement('span'); + shortcuts_span.className = DateTimeShortcuts.shortCutsClass; + inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); + var now_link = document.createElement('a'); + now_link.setAttribute('href', "#"); + now_link.textContent = gettext('Now'); + now_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleClockQuicklink(num, -1); + }); + var clock_link = document.createElement('a'); + clock_link.setAttribute('href', '#'); + clock_link.id = DateTimeShortcuts.clockLinkName + num; + clock_link.addEventListener('click', function(e) { + e.preventDefault(); + // avoid triggering the document click handler to dismiss the clock + e.stopPropagation(); + DateTimeShortcuts.openClock(num); + }); + + quickElement( + 'span', clock_link, '', + 'class', 'clock-icon', + 'title', gettext('Choose a Time') + ); + shortcuts_span.appendChild(document.createTextNode('\u00A0')); + shortcuts_span.appendChild(now_link); + shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); + shortcuts_span.appendChild(clock_link); + + // Create clock link div + // + // Markup looks like: + //
+ //

Choose a time

+ // + //

Cancel

+ //
+ + var clock_box = document.createElement('div'); + clock_box.style.display = 'none'; + clock_box.style.position = 'absolute'; + clock_box.className = 'clockbox module'; + clock_box.setAttribute('id', DateTimeShortcuts.clockDivName + num); + document.body.appendChild(clock_box); + clock_box.addEventListener('click', function(e) { e.stopPropagation(); }); + + quickElement('h2', clock_box, gettext('Choose a time')); + var time_list = quickElement('ul', clock_box); + time_list.className = 'timelist'; + // The list of choices can be overridden in JavaScript like this: + // DateTimeShortcuts.clockHours.name = [['3 a.m.', 3]]; + // where name is the name attribute of the . + var name = typeof DateTimeShortcuts.clockHours[inp.name] === 'undefined' ? 'default_' : inp.name; + DateTimeShortcuts.clockHours[name].forEach(function(element) { + var time_link = quickElement('a', quickElement('li', time_list), gettext(element[0]), 'href', '#'); + time_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleClockQuicklink(num, element[1]); + }); + }); + + var cancel_p = quickElement('p', clock_box); + cancel_p.className = 'calendar-cancel'; + var cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); + cancel_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.dismissClock(num); + }); + + document.addEventListener('keyup', function(event) { + if (event.which === 27) { + // ESC key closes popup + DateTimeShortcuts.dismissClock(num); + event.preventDefault(); + } + }); + }, + openClock: function(num) { + var clock_box = document.getElementById(DateTimeShortcuts.clockDivName + num); + var clock_link = document.getElementById(DateTimeShortcuts.clockLinkName + num); + + // Recalculate the clockbox position + // is it left-to-right or right-to-left layout ? + if (getStyle(document.body, 'direction') !== 'rtl') { + clock_box.style.left = findPosX(clock_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + // TODO: IE returns wrong value for findPosX when in rtl mode + // (it returns as it was left aligned), needs to be fixed. + clock_box.style.left = findPosX(clock_link) - 110 + 'px'; + } + clock_box.style.top = Math.max(0, findPosY(clock_link) - 30) + 'px'; + + // Show the clock box + clock_box.style.display = 'block'; + document.addEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); + }, + dismissClock: function(num) { + document.getElementById(DateTimeShortcuts.clockDivName + num).style.display = 'none'; + document.removeEventListener('click', DateTimeShortcuts.dismissClockFunc[num]); + }, + handleClockQuicklink: function(num, val) { + var d; + if (val === -1) { + d = DateTimeShortcuts.now(); + } + else { + d = new Date(1970, 1, 1, val, 0, 0, 0); + } + DateTimeShortcuts.clockInputs[num].value = d.strftime(get_format('TIME_INPUT_FORMATS')[0]); + DateTimeShortcuts.clockInputs[num].focus(); + DateTimeShortcuts.dismissClock(num); + }, + // Add calendar widget to a given field. + addCalendar: function(inp) { + var num = DateTimeShortcuts.calendars.length; + + DateTimeShortcuts.calendarInputs[num] = inp; + DateTimeShortcuts.dismissCalendarFunc[num] = function() { DateTimeShortcuts.dismissCalendar(num); return true; }; + + // Shortcut links (calendar icon and "Today" link) + var shortcuts_span = document.createElement('span'); + shortcuts_span.className = DateTimeShortcuts.shortCutsClass; + inp.parentNode.insertBefore(shortcuts_span, inp.nextSibling); + var today_link = document.createElement('a'); + today_link.setAttribute('href', '#'); + today_link.appendChild(document.createTextNode(gettext('Today'))); + today_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, 0); + }); + var cal_link = document.createElement('a'); + cal_link.setAttribute('href', '#'); + cal_link.id = DateTimeShortcuts.calendarLinkName + num; + cal_link.addEventListener('click', function(e) { + e.preventDefault(); + // avoid triggering the document click handler to dismiss the calendar + e.stopPropagation(); + DateTimeShortcuts.openCalendar(num); + }); + quickElement( + 'span', cal_link, '', + 'class', 'date-icon', + 'title', gettext('Choose a Date') + ); + shortcuts_span.appendChild(document.createTextNode('\u00A0')); + shortcuts_span.appendChild(today_link); + shortcuts_span.appendChild(document.createTextNode('\u00A0|\u00A0')); + shortcuts_span.appendChild(cal_link); + + // Create calendarbox div. + // + // Markup looks like: + // + //
+ //

+ // + // February 2003 + //

+ //
+ // + //
+ //
+ // Yesterday | Today | Tomorrow + //
+ //

Cancel

+ //
+ var cal_box = document.createElement('div'); + cal_box.style.display = 'none'; + cal_box.style.position = 'absolute'; + cal_box.className = 'calendarbox module'; + cal_box.setAttribute('id', DateTimeShortcuts.calendarDivName1 + num); + document.body.appendChild(cal_box); + cal_box.addEventListener('click', function(e) { e.stopPropagation(); }); + + // next-prev links + var cal_nav = quickElement('div', cal_box); + var cal_nav_prev = quickElement('a', cal_nav, '<', 'href', '#'); + cal_nav_prev.className = 'calendarnav-previous'; + cal_nav_prev.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.drawPrev(num); + }); + + var cal_nav_next = quickElement('a', cal_nav, '>', 'href', '#'); + cal_nav_next.className = 'calendarnav-next'; + cal_nav_next.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.drawNext(num); + }); + + // main box + var cal_main = quickElement('div', cal_box, '', 'id', DateTimeShortcuts.calendarDivName2 + num); + cal_main.className = 'calendar'; + DateTimeShortcuts.calendars[num] = new Calendar(DateTimeShortcuts.calendarDivName2 + num, DateTimeShortcuts.handleCalendarCallback(num)); + DateTimeShortcuts.calendars[num].drawCurrent(); + + // calendar shortcuts + var shortcuts = quickElement('div', cal_box); + shortcuts.className = 'calendar-shortcuts'; + var day_link = quickElement('a', shortcuts, gettext('Yesterday'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, -1); + }); + shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); + day_link = quickElement('a', shortcuts, gettext('Today'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, 0); + }); + shortcuts.appendChild(document.createTextNode('\u00A0|\u00A0')); + day_link = quickElement('a', shortcuts, gettext('Tomorrow'), 'href', '#'); + day_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.handleCalendarQuickLink(num, +1); + }); + + // cancel bar + var cancel_p = quickElement('p', cal_box); + cancel_p.className = 'calendar-cancel'; + var cancel_link = quickElement('a', cancel_p, gettext('Cancel'), 'href', '#'); + cancel_link.addEventListener('click', function(e) { + e.preventDefault(); + DateTimeShortcuts.dismissCalendar(num); + }); + document.addEventListener('keyup', function(event) { + if (event.which === 27) { + // ESC key closes popup + DateTimeShortcuts.dismissCalendar(num); + event.preventDefault(); + } + }); + }, + openCalendar: function(num) { + var cal_box = document.getElementById(DateTimeShortcuts.calendarDivName1 + num); + var cal_link = document.getElementById(DateTimeShortcuts.calendarLinkName + num); + var inp = DateTimeShortcuts.calendarInputs[num]; + + // Determine if the current value in the input has a valid date. + // If so, draw the calendar with that date's year and month. + if (inp.value) { + var format = get_format('DATE_INPUT_FORMATS')[0]; + var selected = inp.value.strptime(format); + var year = selected.getUTCFullYear(); + var month = selected.getUTCMonth() + 1; + var re = /\d{4}/; + if (re.test(year.toString()) && month >= 1 && month <= 12) { + DateTimeShortcuts.calendars[num].drawDate(month, year, selected); + } + } + + // Recalculate the clockbox position + // is it left-to-right or right-to-left layout ? + if (getStyle(document.body, 'direction') !== 'rtl') { + cal_box.style.left = findPosX(cal_link) + 17 + 'px'; + } + else { + // since style's width is in em, it'd be tough to calculate + // px value of it. let's use an estimated px for now + // TODO: IE returns wrong value for findPosX when in rtl mode + // (it returns as it was left aligned), needs to be fixed. + cal_box.style.left = findPosX(cal_link) - 180 + 'px'; + } + cal_box.style.top = Math.max(0, findPosY(cal_link) - 75) + 'px'; + + cal_box.style.display = 'block'; + document.addEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); + }, + dismissCalendar: function(num) { + document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; + document.removeEventListener('click', DateTimeShortcuts.dismissCalendarFunc[num]); + }, + drawPrev: function(num) { + DateTimeShortcuts.calendars[num].drawPreviousMonth(); + }, + drawNext: function(num) { + DateTimeShortcuts.calendars[num].drawNextMonth(); + }, + handleCalendarCallback: function(num) { + var format = get_format('DATE_INPUT_FORMATS')[0]; + // the format needs to be escaped a little + format = format.replace('\\', '\\\\') + .replace('\r', '\\r') + .replace('\n', '\\n') + .replace('\t', '\\t') + .replace("'", "\\'"); + return function(y, m, d) { + DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format); + DateTimeShortcuts.calendarInputs[num].focus(); + document.getElementById(DateTimeShortcuts.calendarDivName1 + num).style.display = 'none'; + }; + }, + handleCalendarQuickLink: function(num, offset) { + var d = DateTimeShortcuts.now(); + d.setDate(d.getDate() + offset); + DateTimeShortcuts.calendarInputs[num].value = d.strftime(get_format('DATE_INPUT_FORMATS')[0]); + DateTimeShortcuts.calendarInputs[num].focus(); + DateTimeShortcuts.dismissCalendar(num); + } + }; + + window.addEventListener('load', DateTimeShortcuts.init); + window.DateTimeShortcuts = DateTimeShortcuts; +})(); diff --git a/static/admin/js/admin/DateTimeShortcuts.efa703f6f0b3.js.gz b/static/admin/js/admin/DateTimeShortcuts.efa703f6f0b3.js.gz new file mode 100644 index 00000000..e4c5c0fb Binary files /dev/null and b/static/admin/js/admin/DateTimeShortcuts.efa703f6f0b3.js.gz differ diff --git a/static/admin/js/admin/DateTimeShortcuts.js b/static/admin/js/admin/DateTimeShortcuts.js index 08b2785c..1ee7c2a9 100644 --- a/static/admin/js/admin/DateTimeShortcuts.js +++ b/static/admin/js/admin/DateTimeShortcuts.js @@ -20,10 +20,10 @@ dismissClockFunc: [], dismissCalendarFunc: [], calendarDivName1: 'calendarbox', // name of calendar
that gets toggled - calendarDivName2: 'calendarin', // name of
that contains calendar - calendarLinkName: 'calendarlink',// name of the link that is used to toggle - clockDivName: 'clockbox', // name of clock
that gets toggled - clockLinkName: 'clocklink', // name of the link that is used to toggle + calendarDivName2: 'calendarin', // name of
that contains calendar + calendarLinkName: 'calendarlink', // name of the link that is used to toggle + clockDivName: 'clockbox', // name of clock
that gets toggled + clockLinkName: 'clocklink', // name of the link that is used to toggle shortCutsClass: 'datetimeshortcuts', // class of the clock and cal shortcuts timezoneWarningClass: 'timezonewarning', // class of the warning for timezone mismatch timezoneOffset: 0, @@ -399,10 +399,10 @@ var format = get_format('DATE_INPUT_FORMATS')[0]; // the format needs to be escaped a little format = format.replace('\\', '\\\\') - .replace('\r', '\\r') - .replace('\n', '\\n') - .replace('\t', '\\t') - .replace("'", "\\'"); + .replace('\r', '\\r') + .replace('\n', '\\n') + .replace('\t', '\\t') + .replace("'", "\\'"); return function(y, m, d) { DateTimeShortcuts.calendarInputs[num].value = new Date(y, m - 1, d).strftime(format); DateTimeShortcuts.calendarInputs[num].focus(); diff --git a/static/admin/js/admin/DateTimeShortcuts.js.gz b/static/admin/js/admin/DateTimeShortcuts.js.gz index c5ecf1ba..e4c5c0fb 100644 Binary files a/static/admin/js/admin/DateTimeShortcuts.js.gz and b/static/admin/js/admin/DateTimeShortcuts.js.gz differ diff --git a/static/admin/js/cancel.a2c3149a1c5e.js b/static/admin/js/cancel.a2c3149a1c5e.js new file mode 100644 index 00000000..8809ee77 --- /dev/null +++ b/static/admin/js/cancel.a2c3149a1c5e.js @@ -0,0 +1,13 @@ +(function($) { + 'use strict'; + $(function() { + $('.cancel-link').on('click', function(e) { + e.preventDefault(); + if (window.location.search.indexOf('&_popup=1') === -1) { + window.history.back(); // Go back if not a popup. + } else { + window.close(); // Otherwise, close the popup. + } + }); + }); +})(django.jQuery); diff --git a/static/admin/js/cancel.a2c3149a1c5e.js.gz b/static/admin/js/cancel.a2c3149a1c5e.js.gz new file mode 100644 index 00000000..41ae011a Binary files /dev/null and b/static/admin/js/cancel.a2c3149a1c5e.js.gz differ diff --git a/static/admin/js/cancel.js b/static/admin/js/cancel.js index 04ec812a..8809ee77 100644 --- a/static/admin/js/cancel.js +++ b/static/admin/js/cancel.js @@ -4,7 +4,7 @@ $('.cancel-link').on('click', function(e) { e.preventDefault(); if (window.location.search.indexOf('&_popup=1') === -1) { - window.history.back(); // Go back if not a popup. + window.history.back(); // Go back if not a popup. } else { window.close(); // Otherwise, close the popup. } diff --git a/static/admin/js/cancel.js.gz b/static/admin/js/cancel.js.gz index e60263d1..41ae011a 100644 Binary files a/static/admin/js/cancel.js.gz and b/static/admin/js/cancel.js.gz differ diff --git a/static/admin/js/core.a004ed25a257.js b/static/admin/js/core.a004ed25a257.js new file mode 100644 index 00000000..4f2fe138 --- /dev/null +++ b/static/admin/js/core.a004ed25a257.js @@ -0,0 +1,212 @@ +// Core javascript helper functions + +// basic browser identification & version +var isOpera = (navigator.userAgent.indexOf("Opera") >= 0) && parseFloat(navigator.appVersion); +var isIE = ((document.all) && (!isOpera)) && parseFloat(navigator.appVersion.split("MSIE ")[1].split(";")[0]); + +// quickElement(tagType, parentReference [, textInChildNode, attribute, attributeValue ...]); +function quickElement() { + 'use strict'; + var obj = document.createElement(arguments[0]); + if (arguments[2]) { + var textNode = document.createTextNode(arguments[2]); + obj.appendChild(textNode); + } + var len = arguments.length; + for (var i = 3; i < len; i += 2) { + obj.setAttribute(arguments[i], arguments[i + 1]); + } + arguments[1].appendChild(obj); + return obj; +} + +// "a" is reference to an object +function removeChildren(a) { + 'use strict'; + while (a.hasChildNodes()) { + a.removeChild(a.lastChild); + } +} + +// ---------------------------------------------------------------------------- +// Find-position functions by PPK +// See https://www.quirksmode.org/js/findpos.html +// ---------------------------------------------------------------------------- +function findPosX(obj) { + 'use strict'; + var curleft = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curleft += obj.offsetLeft - ((isOpera) ? 0 : obj.scrollLeft); + obj = obj.offsetParent; + } + // IE offsetParent does not include the top-level + if (isIE && obj.parentElement) { + curleft += obj.offsetLeft - obj.scrollLeft; + } + } else if (obj.x) { + curleft += obj.x; + } + return curleft; +} + +function findPosY(obj) { + 'use strict'; + var curtop = 0; + if (obj.offsetParent) { + while (obj.offsetParent) { + curtop += obj.offsetTop - ((isOpera) ? 0 : obj.scrollTop); + obj = obj.offsetParent; + } + // IE offsetParent does not include the top-level + if (isIE && obj.parentElement) { + curtop += obj.offsetTop - obj.scrollTop; + } + } else if (obj.y) { + curtop += obj.y; + } + return curtop; +} + +//----------------------------------------------------------------------------- +// Date object extensions +// ---------------------------------------------------------------------------- +(function() { + 'use strict'; + Date.prototype.getTwelveHours = function() { + var hours = this.getHours(); + if (hours === 0) { + return 12; + } + else { + return hours <= 12 ? hours : hours - 12; + } + }; + + Date.prototype.getTwoDigitMonth = function() { + return (this.getMonth() < 9) ? '0' + (this.getMonth() + 1) : (this.getMonth() + 1); + }; + + Date.prototype.getTwoDigitDate = function() { + return (this.getDate() < 10) ? '0' + this.getDate() : this.getDate(); + }; + + Date.prototype.getTwoDigitTwelveHour = function() { + return (this.getTwelveHours() < 10) ? '0' + this.getTwelveHours() : this.getTwelveHours(); + }; + + Date.prototype.getTwoDigitHour = function() { + return (this.getHours() < 10) ? '0' + this.getHours() : this.getHours(); + }; + + Date.prototype.getTwoDigitMinute = function() { + return (this.getMinutes() < 10) ? '0' + this.getMinutes() : this.getMinutes(); + }; + + Date.prototype.getTwoDigitSecond = function() { + return (this.getSeconds() < 10) ? '0' + this.getSeconds() : this.getSeconds(); + }; + + Date.prototype.getHourMinute = function() { + return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute(); + }; + + Date.prototype.getHourMinuteSecond = function() { + return this.getTwoDigitHour() + ':' + this.getTwoDigitMinute() + ':' + this.getTwoDigitSecond(); + }; + + Date.prototype.getFullMonthName = function() { + return typeof window.CalendarNamespace === "undefined" + ? this.getTwoDigitMonth() + : window.CalendarNamespace.monthsOfYear[this.getMonth()]; + }; + + Date.prototype.strftime = function(format) { + var fields = { + B: this.getFullMonthName(), + c: this.toString(), + d: this.getTwoDigitDate(), + H: this.getTwoDigitHour(), + I: this.getTwoDigitTwelveHour(), + m: this.getTwoDigitMonth(), + M: this.getTwoDigitMinute(), + p: (this.getHours() >= 12) ? 'PM' : 'AM', + S: this.getTwoDigitSecond(), + w: '0' + this.getDay(), + x: this.toLocaleDateString(), + X: this.toLocaleTimeString(), + y: ('' + this.getFullYear()).substr(2, 4), + Y: '' + this.getFullYear(), + '%': '%' + }; + var result = '', i = 0; + while (i < format.length) { + if (format.charAt(i) === '%') { + result = result + fields[format.charAt(i + 1)]; + ++i; + } + else { + result = result + format.charAt(i); + } + ++i; + } + return result; + }; + + // ---------------------------------------------------------------------------- + // String object extensions + // ---------------------------------------------------------------------------- + String.prototype.pad_left = function(pad_length, pad_string) { + var new_string = this; + for (var i = 0; new_string.length < pad_length; i++) { + new_string = pad_string + new_string; + } + return new_string; + }; + + String.prototype.strptime = function(format) { + var split_format = format.split(/[.\-/]/); + var date = this.split(/[.\-/]/); + var i = 0; + var day, month, year; + while (i < split_format.length) { + switch (split_format[i]) { + case "%d": + day = date[i]; + break; + case "%m": + month = date[i] - 1; + break; + case "%Y": + year = date[i]; + break; + case "%y": + year = date[i]; + break; + } + ++i; + } + // Create Date object from UTC since the parsed value is supposed to be + // in UTC, not local time. Also, the calendar uses UTC functions for + // date extraction. + return new Date(Date.UTC(year, month, day)); + }; + +})(); +// ---------------------------------------------------------------------------- +// Get the computed style for and element +// ---------------------------------------------------------------------------- +function getStyle(oElm, strCssRule) { + 'use strict'; + var strValue = ""; + if(document.defaultView && document.defaultView.getComputedStyle) { + strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); + } + else if(oElm.currentStyle) { + strCssRule = strCssRule.replace(/\-(\w)/g, function(strMatch, p1) { + return p1.toUpperCase(); + }); + strValue = oElm.currentStyle[strCssRule]; + } + return strValue; +} diff --git a/static/admin/js/core.a004ed25a257.js.gz b/static/admin/js/core.a004ed25a257.js.gz new file mode 100644 index 00000000..37ba5ad5 Binary files /dev/null and b/static/admin/js/core.a004ed25a257.js.gz differ diff --git a/static/admin/js/core.js b/static/admin/js/core.js index 591394e5..4f2fe138 100644 --- a/static/admin/js/core.js +++ b/static/admin/js/core.js @@ -153,9 +153,9 @@ function findPosY(obj) { return result; }; -// ---------------------------------------------------------------------------- -// String object extensions -// ---------------------------------------------------------------------------- + // ---------------------------------------------------------------------------- + // String object extensions + // ---------------------------------------------------------------------------- String.prototype.pad_left = function(pad_length, pad_string) { var new_string = this; for (var i = 0; new_string.length < pad_length; i++) { @@ -171,18 +171,18 @@ function findPosY(obj) { var day, month, year; while (i < split_format.length) { switch (split_format[i]) { - case "%d": - day = date[i]; - break; - case "%m": - month = date[i] - 1; - break; - case "%Y": - year = date[i]; - break; - case "%y": - year = date[i]; - break; + case "%d": + day = date[i]; + break; + case "%m": + month = date[i] - 1; + break; + case "%Y": + year = date[i]; + break; + case "%y": + year = date[i]; + break; } ++i; } diff --git a/static/admin/js/core.js.gz b/static/admin/js/core.js.gz index 1e37902b..37ba5ad5 100644 Binary files a/static/admin/js/core.js.gz and b/static/admin/js/core.js.gz differ diff --git a/static/admin/js/inlines.12d1af430335.js b/static/admin/js/inlines.12d1af430335.js new file mode 100644 index 00000000..ba8c9cd7 --- /dev/null +++ b/static/admin/js/inlines.12d1af430335.js @@ -0,0 +1,298 @@ +/*global DateTimeShortcuts, SelectFilter*/ +/** + * Django admin inlines + * + * Based on jQuery Formset 1.1 + * @author Stanislaus Madueke (stan DOT madueke AT gmail DOT com) + * @requires jQuery 1.2.6 or later + * + * Copyright (c) 2009, Stanislaus Madueke + * All rights reserved. + * + * Spiced up with Code from Zain Memon's GSoC project 2009 + * and modified for Django by Jannis Leidel, Travis Swicegood and Julien Phalip. + * + * Licensed under the New BSD License + * See: https://opensource.org/licenses/bsd-license.php + */ +(function($) { + 'use strict'; + $.fn.formset = function(opts) { + var options = $.extend({}, $.fn.formset.defaults, opts); + var $this = $(this); + var $parent = $this.parent(); + var updateElementIndex = function(el, prefix, ndx) { + var id_regex = new RegExp("(" + prefix + "-(\\d+|__prefix__))"); + var replacement = prefix + "-" + ndx; + if ($(el).prop("for")) { + $(el).prop("for", $(el).prop("for").replace(id_regex, replacement)); + } + if (el.id) { + el.id = el.id.replace(id_regex, replacement); + } + if (el.name) { + el.name = el.name.replace(id_regex, replacement); + } + }; + var totalForms = $("#id_" + options.prefix + "-TOTAL_FORMS").prop("autocomplete", "off"); + var nextIndex = parseInt(totalForms.val(), 10); + var maxForms = $("#id_" + options.prefix + "-MAX_NUM_FORMS").prop("autocomplete", "off"); + // only show the add button if we are allowed to add more items, + // note that max_num = None translates to a blank string. + var showAddButton = maxForms.val() === '' || (maxForms.val() - totalForms.val()) > 0; + $this.each(function(i) { + $(this).not("." + options.emptyCssClass).addClass(options.formCssClass); + }); + if ($this.length && showAddButton) { + var addButton = options.addButton; + if (addButton === null) { + if ($this.prop("tagName") === "TR") { + // If forms are laid out as table rows, insert the + // "add" button in a new table row: + var numCols = this.eq(-1).children().length; + $parent.append('' + options.addText + ""); + addButton = $parent.find("tr:last a"); + } else { + // Otherwise, insert it immediately after the last form: + $this.filter(":last").after('"); + addButton = $this.filter(":last").next().find("a"); + } + } + addButton.on('click', function(e) { + e.preventDefault(); + var template = $("#" + options.prefix + "-empty"); + var row = template.clone(true); + row.removeClass(options.emptyCssClass) + .addClass(options.formCssClass) + .attr("id", options.prefix + "-" + nextIndex); + if (row.is("tr")) { + // If the forms are laid out in table rows, insert + // the remove button into the last table cell: + row.children(":last").append('"); + } else if (row.is("ul") || row.is("ol")) { + // If they're laid out as an ordered/unordered list, + // insert an
  • after the last list item: + row.append('
  • ' + options.deleteText + "
  • "); + } else { + // Otherwise, just insert the remove button as the + // last child element of the form's container: + row.children(":first").append('' + options.deleteText + ""); + } + row.find("*").each(function() { + updateElementIndex(this, options.prefix, totalForms.val()); + }); + // Insert the new form when it has been fully edited + row.insertBefore($(template)); + // Update number of total forms + $(totalForms).val(parseInt(totalForms.val(), 10) + 1); + nextIndex += 1; + // Hide add button in case we've hit the max, except we want to add infinitely + if ((maxForms.val() !== '') && (maxForms.val() - totalForms.val()) <= 0) { + addButton.parent().hide(); + } + // The delete button of each row triggers a bunch of other things + row.find("a." + options.deleteCssClass).on('click', function(e1) { + e1.preventDefault(); + // Remove the parent form containing this button: + row.remove(); + nextIndex -= 1; + // If a post-delete callback was provided, call it with the deleted form: + if (options.removed) { + options.removed(row); + } + $(document).trigger('formset:removed', [row, options.prefix]); + // Update the TOTAL_FORMS form count. + var forms = $("." + options.formCssClass); + $("#id_" + options.prefix + "-TOTAL_FORMS").val(forms.length); + // Show add button again once we drop below max + if ((maxForms.val() === '') || (maxForms.val() - forms.length) > 0) { + addButton.parent().show(); + } + // Also, update names and ids for all remaining form controls + // so they remain in sequence: + var i, formCount; + var updateElementCallback = function() { + updateElementIndex(this, options.prefix, i); + }; + for (i = 0, formCount = forms.length; i < formCount; i++) { + updateElementIndex($(forms).get(i), options.prefix, i); + $(forms.get(i)).find("*").each(updateElementCallback); + } + }); + // If a post-add callback was supplied, call it with the added form: + if (options.added) { + options.added(row); + } + $(document).trigger('formset:added', [row, options.prefix]); + }); + } + return this; + }; + + /* Setup plugin defaults */ + $.fn.formset.defaults = { + prefix: "form", // The form prefix for your django formset + addText: "add another", // Text for the add link + deleteText: "remove", // Text for the delete link + addCssClass: "add-row", // CSS class applied to the add link + deleteCssClass: "delete-row", // CSS class applied to the delete link + emptyCssClass: "empty-row", // CSS class applied to the empty row + formCssClass: "dynamic-form", // CSS class applied to each form in a formset + added: null, // Function called each time a new form is added + removed: null, // Function called each time a form is deleted + addButton: null // Existing add button to use + }; + + + // Tabular inlines --------------------------------------------------------- + $.fn.tabularFormset = function(selector, options) { + var $rows = $(this); + var alternatingRows = function(row) { + $(selector).not(".add-row").removeClass("row1 row2") + .filter(":even").addClass("row1").end() + .filter(":odd").addClass("row2"); + }; + + var reinitDateTimeShortCuts = function() { + // Reinitialize the calendar and clock widgets by force + if (typeof DateTimeShortcuts !== "undefined") { + $(".datetimeshortcuts").remove(); + DateTimeShortcuts.init(); + } + }; + + var updateSelectFilter = function() { + // If any SelectFilter widgets are a part of the new form, + // instantiate a new SelectFilter instance for it. + if (typeof SelectFilter !== 'undefined') { + $('.selectfilter').each(function(index, value) { + var namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], false); + }); + $('.selectfilterstacked').each(function(index, value) { + var namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], true); + }); + } + }; + + var initPrepopulatedFields = function(row) { + row.find('.prepopulated_field').each(function() { + var field = $(this), + input = field.find('input, select, textarea'), + dependency_list = input.data('dependency_list') || [], + dependencies = []; + $.each(dependency_list, function(i, field_name) { + dependencies.push('#' + row.find('.field-' + field_name).find('input, select, textarea').attr('id')); + }); + if (dependencies.length) { + input.prepopulate(dependencies, input.attr('maxlength')); + } + }); + }; + + $rows.formset({ + prefix: options.prefix, + addText: options.addText, + formCssClass: "dynamic-" + options.prefix, + deleteCssClass: "inline-deletelink", + deleteText: options.deleteText, + emptyCssClass: "empty-form", + removed: alternatingRows, + added: function(row) { + initPrepopulatedFields(row); + reinitDateTimeShortCuts(); + updateSelectFilter(); + alternatingRows(row); + }, + addButton: options.addButton + }); + + return $rows; + }; + + // Stacked inlines --------------------------------------------------------- + $.fn.stackedFormset = function(selector, options) { + var $rows = $(this); + var updateInlineLabel = function(row) { + $(selector).find(".inline_label").each(function(i) { + var count = i + 1; + $(this).html($(this).html().replace(/(#\d+)/g, "#" + count)); + }); + }; + + var reinitDateTimeShortCuts = function() { + // Reinitialize the calendar and clock widgets by force, yuck. + if (typeof DateTimeShortcuts !== "undefined") { + $(".datetimeshortcuts").remove(); + DateTimeShortcuts.init(); + } + }; + + var updateSelectFilter = function() { + // If any SelectFilter widgets were added, instantiate a new instance. + if (typeof SelectFilter !== "undefined") { + $(".selectfilter").each(function(index, value) { + var namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], false); + }); + $(".selectfilterstacked").each(function(index, value) { + var namearr = value.name.split('-'); + SelectFilter.init(value.id, namearr[namearr.length - 1], true); + }); + } + }; + + var initPrepopulatedFields = function(row) { + row.find('.prepopulated_field').each(function() { + var field = $(this), + input = field.find('input, select, textarea'), + dependency_list = input.data('dependency_list') || [], + dependencies = []; + $.each(dependency_list, function(i, field_name) { + dependencies.push('#' + row.find('.form-row .field-' + field_name).find('input, select, textarea').attr('id')); + }); + if (dependencies.length) { + input.prepopulate(dependencies, input.attr('maxlength')); + } + }); + }; + + $rows.formset({ + prefix: options.prefix, + addText: options.addText, + formCssClass: "dynamic-" + options.prefix, + deleteCssClass: "inline-deletelink", + deleteText: options.deleteText, + emptyCssClass: "empty-form", + removed: updateInlineLabel, + added: function(row) { + initPrepopulatedFields(row); + reinitDateTimeShortCuts(); + updateSelectFilter(); + updateInlineLabel(row); + }, + addButton: options.addButton + }); + + return $rows; + }; + + $(document).ready(function() { + $(".js-inline-admin-formset").each(function() { + var data = $(this).data(), + inlineOptions = data.inlineFormset, + selector; + switch(data.inlineType) { + case "stacked": + selector = inlineOptions.name + "-group .inline-related"; + $(selector).stackedFormset(selector, inlineOptions.options); + break; + case "tabular": + selector = inlineOptions.name + "-group .tabular.inline-related tbody:first > tr"; + $(selector).tabularFormset(selector, inlineOptions.options); + break; + } + }); + }); +})(django.jQuery); diff --git a/static/admin/js/inlines.12d1af430335.js.gz b/static/admin/js/inlines.12d1af430335.js.gz new file mode 100644 index 00000000..64c540c8 Binary files /dev/null and b/static/admin/js/inlines.12d1af430335.js.gz differ diff --git a/static/admin/js/inlines.js b/static/admin/js/inlines.js index 045ef1ec..ba8c9cd7 100644 --- a/static/admin/js/inlines.js +++ b/static/admin/js/inlines.js @@ -63,8 +63,8 @@ var template = $("#" + options.prefix + "-empty"); var row = template.clone(true); row.removeClass(options.emptyCssClass) - .addClass(options.formCssClass) - .attr("id", options.prefix + "-" + nextIndex); + .addClass(options.formCssClass) + .attr("id", options.prefix + "-" + nextIndex); if (row.is("tr")) { // If the forms are laid out in table rows, insert // the remove button into the last table cell: @@ -131,16 +131,16 @@ /* Setup plugin defaults */ $.fn.formset.defaults = { - prefix: "form", // The form prefix for your django formset - addText: "add another", // Text for the add link - deleteText: "remove", // Text for the delete link - addCssClass: "add-row", // CSS class applied to the add link - deleteCssClass: "delete-row", // CSS class applied to the delete link - emptyCssClass: "empty-row", // CSS class applied to the empty row - formCssClass: "dynamic-form", // CSS class applied to each form in a formset - added: null, // Function called each time a new form is added - removed: null, // Function called each time a form is deleted - addButton: null // Existing add button to use + prefix: "form", // The form prefix for your django formset + addText: "add another", // Text for the add link + deleteText: "remove", // Text for the delete link + addCssClass: "add-row", // CSS class applied to the add link + deleteCssClass: "delete-row", // CSS class applied to the delete link + emptyCssClass: "empty-row", // CSS class applied to the empty row + formCssClass: "dynamic-form", // CSS class applied to each form in a formset + added: null, // Function called each time a new form is added + removed: null, // Function called each time a form is deleted + addButton: null // Existing add button to use }; @@ -149,8 +149,8 @@ var $rows = $(this); var alternatingRows = function(row) { $(selector).not(".add-row").removeClass("row1 row2") - .filter(":even").addClass("row1").end() - .filter(":odd").addClass("row2"); + .filter(":even").addClass("row1").end() + .filter(":odd").addClass("row2"); }; var reinitDateTimeShortCuts = function() { diff --git a/static/admin/js/inlines.js.gz b/static/admin/js/inlines.js.gz index 8204bd76..64c540c8 100644 Binary files a/static/admin/js/inlines.js.gz and b/static/admin/js/inlines.js.gz differ diff --git a/static/admin/js/urlify.67bae52223e0.js b/static/admin/js/urlify.67bae52223e0.js new file mode 100644 index 00000000..c3342b9d --- /dev/null +++ b/static/admin/js/urlify.67bae52223e0.js @@ -0,0 +1,195 @@ +/*global XRegExp*/ +(function() { + 'use strict'; + + var LATIN_MAP = { + 'À': 'A', 'Á': 'A', 'Â': 'A', 'Ã': 'A', 'Ä': 'A', 'Å': 'A', 'Æ': 'AE', + 'Ç': 'C', 'È': 'E', 'É': 'E', 'Ê': 'E', 'Ë': 'E', 'Ì': 'I', 'Í': 'I', + 'Î': 'I', 'Ï': 'I', 'Ð': 'D', 'Ñ': 'N', 'Ò': 'O', 'Ó': 'O', 'Ô': 'O', + 'Õ': 'O', 'Ö': 'O', 'Ő': 'O', 'Ø': 'O', 'Ù': 'U', 'Ú': 'U', 'Û': 'U', + 'Ü': 'U', 'Ű': 'U', 'Ý': 'Y', 'Þ': 'TH', 'Ÿ': 'Y', 'ß': 'ss', 'à': 'a', + 'á': 'a', 'â': 'a', 'ã': 'a', 'ä': 'a', 'å': 'a', 'æ': 'ae', 'ç': 'c', + 'è': 'e', 'é': 'e', 'ê': 'e', 'ë': 'e', 'ì': 'i', 'í': 'i', 'î': 'i', + 'ï': 'i', 'ð': 'd', 'ñ': 'n', 'ò': 'o', 'ó': 'o', 'ô': 'o', 'õ': 'o', + 'ö': 'o', 'ő': 'o', 'ø': 'o', 'ù': 'u', 'ú': 'u', 'û': 'u', 'ü': 'u', + 'ű': 'u', 'ý': 'y', 'þ': 'th', 'ÿ': 'y' + }; + var LATIN_SYMBOLS_MAP = { + '©': '(c)' + }; + var GREEK_MAP = { + 'α': 'a', 'β': 'b', 'γ': 'g', 'δ': 'd', 'ε': 'e', 'ζ': 'z', 'η': 'h', + 'θ': '8', 'ι': 'i', 'κ': 'k', 'λ': 'l', 'μ': 'm', 'ν': 'n', 'ξ': '3', + 'ο': 'o', 'π': 'p', 'ρ': 'r', 'σ': 's', 'τ': 't', 'υ': 'y', 'φ': 'f', + 'χ': 'x', 'ψ': 'ps', 'ω': 'w', 'ά': 'a', 'έ': 'e', 'ί': 'i', 'ό': 'o', + 'ύ': 'y', 'ή': 'h', 'ώ': 'w', 'ς': 's', 'ϊ': 'i', 'ΰ': 'y', 'ϋ': 'y', + 'ΐ': 'i', 'Α': 'A', 'Β': 'B', 'Γ': 'G', 'Δ': 'D', 'Ε': 'E', 'Ζ': 'Z', + 'Η': 'H', 'Θ': '8', 'Ι': 'I', 'Κ': 'K', 'Λ': 'L', 'Μ': 'M', 'Ν': 'N', + 'Ξ': '3', 'Ο': 'O', 'Π': 'P', 'Ρ': 'R', 'Σ': 'S', 'Τ': 'T', 'Υ': 'Y', + 'Φ': 'F', 'Χ': 'X', 'Ψ': 'PS', 'Ω': 'W', 'Ά': 'A', 'Έ': 'E', 'Ί': 'I', + 'Ό': 'O', 'Ύ': 'Y', 'Ή': 'H', 'Ώ': 'W', 'Ϊ': 'I', 'Ϋ': 'Y' + }; + var TURKISH_MAP = { + 'ş': 's', 'Ş': 'S', 'ı': 'i', 'İ': 'I', 'ç': 'c', 'Ç': 'C', 'ü': 'u', + 'Ü': 'U', 'ö': 'o', 'Ö': 'O', 'ğ': 'g', 'Ğ': 'G' + }; + var ROMANIAN_MAP = { + 'ă': 'a', 'î': 'i', 'ș': 's', 'ț': 't', 'â': 'a', + 'Ă': 'A', 'Î': 'I', 'Ș': 'S', 'Ț': 'T', 'Â': 'A' + }; + var RUSSIAN_MAP = { + 'а': 'a', 'б': 'b', 'в': 'v', 'г': 'g', 'д': 'd', 'е': 'e', 'ё': 'yo', + 'ж': 'zh', 'з': 'z', 'и': 'i', 'й': 'j', 'к': 'k', 'л': 'l', 'м': 'm', + 'н': 'n', 'о': 'o', 'п': 'p', 'р': 'r', 'с': 's', 'т': 't', 'у': 'u', + 'ф': 'f', 'х': 'h', 'ц': 'c', 'ч': 'ch', 'ш': 'sh', 'щ': 'sh', 'ъ': '', + 'ы': 'y', 'ь': '', 'э': 'e', 'ю': 'yu', 'я': 'ya', + 'А': 'A', 'Б': 'B', 'В': 'V', 'Г': 'G', 'Д': 'D', 'Е': 'E', 'Ё': 'Yo', + 'Ж': 'Zh', 'З': 'Z', 'И': 'I', 'Й': 'J', 'К': 'K', 'Л': 'L', 'М': 'M', + 'Н': 'N', 'О': 'O', 'П': 'P', 'Р': 'R', 'С': 'S', 'Т': 'T', 'У': 'U', + 'Ф': 'F', 'Х': 'H', 'Ц': 'C', 'Ч': 'Ch', 'Ш': 'Sh', 'Щ': 'Sh', 'Ъ': '', + 'Ы': 'Y', 'Ь': '', 'Э': 'E', 'Ю': 'Yu', 'Я': 'Ya' + }; + var UKRAINIAN_MAP = { + 'Є': 'Ye', 'І': 'I', 'Ї': 'Yi', 'Ґ': 'G', 'є': 'ye', 'і': 'i', + 'ї': 'yi', 'ґ': 'g' + }; + var CZECH_MAP = { + 'č': 'c', 'ď': 'd', 'ě': 'e', 'ň': 'n', 'ř': 'r', 'š': 's', 'ť': 't', + 'ů': 'u', 'ž': 'z', 'Č': 'C', 'Ď': 'D', 'Ě': 'E', 'Ň': 'N', 'Ř': 'R', + 'Š': 'S', 'Ť': 'T', 'Ů': 'U', 'Ž': 'Z' + }; + var SLOVAK_MAP = { + 'á': 'a', 'ä': 'a', 'č': 'c', 'ď': 'd', 'é': 'e', 'í': 'i', 'ľ': 'l', + 'ĺ': 'l', 'ň': 'n', 'ó': 'o', 'ô': 'o', 'ŕ': 'r', 'š': 's', 'ť': 't', + 'ú': 'u', 'ý': 'y', 'ž': 'z', + 'Á': 'a', 'Ä': 'A', 'Č': 'C', 'Ď': 'D', 'É': 'E', 'Í': 'I', 'Ľ': 'L', + 'Ĺ': 'L', 'Ň': 'N', 'Ó': 'O', 'Ô': 'O', 'Ŕ': 'R', 'Š': 'S', 'Ť': 'T', + 'Ú': 'U', 'Ý': 'Y', 'Ž': 'Z' + }; + var POLISH_MAP = { + 'ą': 'a', 'ć': 'c', 'ę': 'e', 'ł': 'l', 'ń': 'n', 'ó': 'o', 'ś': 's', + 'ź': 'z', 'ż': 'z', + 'Ą': 'A', 'Ć': 'C', 'Ę': 'E', 'Ł': 'L', 'Ń': 'N', 'Ó': 'O', 'Ś': 'S', + 'Ź': 'Z', 'Ż': 'Z' + }; + var LATVIAN_MAP = { + 'ā': 'a', 'č': 'c', 'ē': 'e', 'ģ': 'g', 'ī': 'i', 'ķ': 'k', 'ļ': 'l', + 'ņ': 'n', 'š': 's', 'ū': 'u', 'ž': 'z', + 'Ā': 'A', 'Č': 'C', 'Ē': 'E', 'Ģ': 'G', 'Ī': 'I', 'Ķ': 'K', 'Ļ': 'L', + 'Ņ': 'N', 'Š': 'S', 'Ū': 'U', 'Ž': 'Z' + }; + var ARABIC_MAP = { + 'أ': 'a', 'ب': 'b', 'ت': 't', 'ث': 'th', 'ج': 'g', 'ح': 'h', 'خ': 'kh', 'د': 'd', + 'ذ': 'th', 'ر': 'r', 'ز': 'z', 'س': 's', 'ش': 'sh', 'ص': 's', 'ض': 'd', 'ط': 't', + 'ظ': 'th', 'ع': 'aa', 'غ': 'gh', 'ف': 'f', 'ق': 'k', 'ك': 'k', 'ل': 'l', 'م': 'm', + 'ن': 'n', 'ه': 'h', 'و': 'o', 'ي': 'y' + }; + var LITHUANIAN_MAP = { + 'ą': 'a', 'č': 'c', 'ę': 'e', 'ė': 'e', 'į': 'i', 'š': 's', 'ų': 'u', + 'ū': 'u', 'ž': 'z', + 'Ą': 'A', 'Č': 'C', 'Ę': 'E', 'Ė': 'E', 'Į': 'I', 'Š': 'S', 'Ų': 'U', + 'Ū': 'U', 'Ž': 'Z' + }; + var SERBIAN_MAP = { + 'ђ': 'dj', 'ј': 'j', 'љ': 'lj', 'њ': 'nj', 'ћ': 'c', 'џ': 'dz', + 'đ': 'dj', 'Ђ': 'Dj', 'Ј': 'j', 'Љ': 'Lj', 'Њ': 'Nj', 'Ћ': 'C', + 'Џ': 'Dz', 'Đ': 'Dj' + }; + var AZERBAIJANI_MAP = { + 'ç': 'c', 'ə': 'e', 'ğ': 'g', 'ı': 'i', 'ö': 'o', 'ş': 's', 'ü': 'u', + 'Ç': 'C', 'Ə': 'E', 'Ğ': 'G', 'İ': 'I', 'Ö': 'O', 'Ş': 'S', 'Ü': 'U' + }; + var GEORGIAN_MAP = { + 'ა': 'a', 'ბ': 'b', 'გ': 'g', 'დ': 'd', 'ე': 'e', 'ვ': 'v', 'ზ': 'z', + 'თ': 't', 'ი': 'i', 'კ': 'k', 'ლ': 'l', 'მ': 'm', 'ნ': 'n', 'ო': 'o', + 'პ': 'p', 'ჟ': 'j', 'რ': 'r', 'ს': 's', 'ტ': 't', 'უ': 'u', 'ფ': 'f', + 'ქ': 'q', 'ღ': 'g', 'ყ': 'y', 'შ': 'sh', 'ჩ': 'ch', 'ც': 'c', 'ძ': 'dz', + 'წ': 'w', 'ჭ': 'ch', 'ხ': 'x', 'ჯ': 'j', 'ჰ': 'h' + }; + + var ALL_DOWNCODE_MAPS = [ + LATIN_MAP, + LATIN_SYMBOLS_MAP, + GREEK_MAP, + TURKISH_MAP, + ROMANIAN_MAP, + RUSSIAN_MAP, + UKRAINIAN_MAP, + CZECH_MAP, + SLOVAK_MAP, + POLISH_MAP, + LATVIAN_MAP, + ARABIC_MAP, + LITHUANIAN_MAP, + SERBIAN_MAP, + AZERBAIJANI_MAP, + GEORGIAN_MAP + ]; + + var Downcoder = { + 'Initialize': function() { + if (Downcoder.map) { // already made + return; + } + Downcoder.map = {}; + Downcoder.chars = []; + for (var i = 0; i < ALL_DOWNCODE_MAPS.length; i++) { + var lookup = ALL_DOWNCODE_MAPS[i]; + for (var c in lookup) { + if (lookup.hasOwnProperty(c)) { + Downcoder.map[c] = lookup[c]; + } + } + } + for (var k in Downcoder.map) { + if (Downcoder.map.hasOwnProperty(k)) { + Downcoder.chars.push(k); + } + } + Downcoder.regex = new RegExp(Downcoder.chars.join('|'), 'g'); + } + }; + + function downcode(slug) { + Downcoder.Initialize(); + return slug.replace(Downcoder.regex, function(m) { + return Downcoder.map[m]; + }); + } + + + function URLify(s, num_chars, allowUnicode) { + // changes, e.g., "Petty theft" to "petty-theft" + // remove all these words from the string before urlifying + if (!allowUnicode) { + s = downcode(s); + } + var hasUnicodeChars = /[^\u0000-\u007f]/.test(s); + // Remove English words only if the string contains ASCII (English) + // characters. + if (!hasUnicodeChars) { + var removeList = [ + "a", "an", "as", "at", "before", "but", "by", "for", "from", + "is", "in", "into", "like", "of", "off", "on", "onto", "per", + "since", "than", "the", "this", "that", "to", "up", "via", + "with" + ]; + var r = new RegExp('\\b(' + removeList.join('|') + ')\\b', 'gi'); + s = s.replace(r, ''); + } + // if downcode doesn't hit, the char will be stripped here + if (allowUnicode) { + // Keep Unicode letters including both lowercase and uppercase + // characters, whitespace, and dash; remove other characters. + s = XRegExp.replace(s, XRegExp('[^-_\\p{L}\\p{N}\\s]', 'g'), ''); + } else { + s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars + } + s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces + s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens + s = s.substring(0, num_chars); // trim to first num_chars chars + s = s.replace(/-+$/g, ''); // trim any trailing hyphens + return s.toLowerCase(); // convert to lowercase + } + window.URLify = URLify; +})(); diff --git a/static/admin/js/urlify.67bae52223e0.js.gz b/static/admin/js/urlify.67bae52223e0.js.gz new file mode 100644 index 00000000..b3801f4a Binary files /dev/null and b/static/admin/js/urlify.67bae52223e0.js.gz differ diff --git a/static/admin/js/urlify.js b/static/admin/js/urlify.js index 2d70dcd0..c3342b9d 100644 --- a/static/admin/js/urlify.js +++ b/static/admin/js/urlify.js @@ -128,7 +128,7 @@ var Downcoder = { 'Initialize': function() { - if (Downcoder.map) { // already made + if (Downcoder.map) { // already made return; } Downcoder.map = {}; @@ -183,13 +183,13 @@ // characters, whitespace, and dash; remove other characters. s = XRegExp.replace(s, XRegExp('[^-_\\p{L}\\p{N}\\s]', 'g'), ''); } else { - s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars + s = s.replace(/[^-\w\s]/g, ''); // remove unneeded chars } - s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces - s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens - s = s.substring(0, num_chars); // trim to first num_chars chars - s = s.replace(/-+$/g, ''); // trim any trailing hyphens - return s.toLowerCase(); // convert to lowercase + s = s.replace(/^\s+|\s+$/g, ''); // trim leading/trailing spaces + s = s.replace(/[-\s]+/g, '-'); // convert spaces to hyphens + s = s.substring(0, num_chars); // trim to first num_chars chars + s = s.replace(/-+$/g, ''); // trim any trailing hyphens + return s.toLowerCase(); // convert to lowercase } window.URLify = URLify; })(); diff --git a/static/admin/js/urlify.js.gz b/static/admin/js/urlify.js.gz index 7720851b..b3801f4a 100644 Binary files a/static/admin/js/urlify.js.gz and b/static/admin/js/urlify.js.gz differ diff --git a/static/babybuddy/js/graph.da32e0532ca2.js.gz b/static/babybuddy/js/graph.da32e0532ca2.js.gz index e69de29b..f7fa75b6 100644 Binary files a/static/babybuddy/js/graph.da32e0532ca2.js.gz and b/static/babybuddy/js/graph.da32e0532ca2.js.gz differ diff --git a/static/babybuddy/js/graph.js.gz b/static/babybuddy/js/graph.js.gz index a684d224..f7fa75b6 100644 Binary files a/static/babybuddy/js/graph.js.gz and b/static/babybuddy/js/graph.js.gz differ diff --git a/static/babybuddy/webfonts/fa-brands-400.38975343b586.svg b/static/babybuddy/webfonts/fa-brands-400.38975343b586.svg new file mode 100644 index 00000000..c5f544c7 --- /dev/null +++ b/static/babybuddy/webfonts/fa-brands-400.38975343b586.svg @@ -0,0 +1,3452 @@ + + + + + +Created by FontForge 20190112 at Tue May 7 11:33:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/babybuddy/webfonts/fa-brands-400.38975343b586.svg.gz b/static/babybuddy/webfonts/fa-brands-400.38975343b586.svg.gz new file mode 100644 index 00000000..42ac9a0b Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.38975343b586.svg.gz differ diff --git a/static/babybuddy/webfonts/fa-brands-400.8e49b7284130.eot b/static/babybuddy/webfonts/fa-brands-400.8e49b7284130.eot new file mode 100644 index 00000000..4f991ad3 Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.8e49b7284130.eot differ diff --git a/static/babybuddy/webfonts/fa-brands-400.8e49b7284130.eot.gz b/static/babybuddy/webfonts/fa-brands-400.8e49b7284130.eot.gz new file mode 100644 index 00000000..3fec3334 Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.8e49b7284130.eot.gz differ diff --git a/static/babybuddy/webfonts/fa-brands-400.9f018d102556.woff b/static/babybuddy/webfonts/fa-brands-400.9f018d102556.woff new file mode 100644 index 00000000..d65148db Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.9f018d102556.woff differ diff --git a/static/babybuddy/webfonts/fa-brands-400.9f4ce3dc6899.woff2 b/static/babybuddy/webfonts/fa-brands-400.9f4ce3dc6899.woff2 new file mode 100644 index 00000000..e2bfe667 Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.9f4ce3dc6899.woff2 differ diff --git a/static/babybuddy/webfonts/fa-brands-400.b7d071b9c3c1.ttf b/static/babybuddy/webfonts/fa-brands-400.b7d071b9c3c1.ttf new file mode 100644 index 00000000..8836d9ff Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.b7d071b9c3c1.ttf differ diff --git a/static/babybuddy/webfonts/fa-brands-400.b7d071b9c3c1.ttf.gz b/static/babybuddy/webfonts/fa-brands-400.b7d071b9c3c1.ttf.gz new file mode 100644 index 00000000..753640d1 Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.b7d071b9c3c1.ttf.gz differ diff --git a/static/babybuddy/webfonts/fa-brands-400.eot b/static/babybuddy/webfonts/fa-brands-400.eot new file mode 100644 index 00000000..4f991ad3 Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.eot differ diff --git a/static/babybuddy/webfonts/fa-brands-400.eot.gz b/static/babybuddy/webfonts/fa-brands-400.eot.gz new file mode 100644 index 00000000..3fec3334 Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.eot.gz differ diff --git a/static/babybuddy/webfonts/fa-brands-400.svg b/static/babybuddy/webfonts/fa-brands-400.svg new file mode 100644 index 00000000..c5f544c7 --- /dev/null +++ b/static/babybuddy/webfonts/fa-brands-400.svg @@ -0,0 +1,3452 @@ + + + + + +Created by FontForge 20190112 at Tue May 7 11:33:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/babybuddy/webfonts/fa-brands-400.svg.gz b/static/babybuddy/webfonts/fa-brands-400.svg.gz new file mode 100644 index 00000000..42ac9a0b Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.svg.gz differ diff --git a/static/babybuddy/webfonts/fa-brands-400.ttf b/static/babybuddy/webfonts/fa-brands-400.ttf new file mode 100644 index 00000000..8836d9ff Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.ttf differ diff --git a/static/babybuddy/webfonts/fa-brands-400.ttf.gz b/static/babybuddy/webfonts/fa-brands-400.ttf.gz new file mode 100644 index 00000000..753640d1 Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.ttf.gz differ diff --git a/static/babybuddy/webfonts/fa-brands-400.woff b/static/babybuddy/webfonts/fa-brands-400.woff new file mode 100644 index 00000000..d65148db Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.woff differ diff --git a/static/babybuddy/webfonts/fa-brands-400.woff2 b/static/babybuddy/webfonts/fa-brands-400.woff2 new file mode 100644 index 00000000..e2bfe667 Binary files /dev/null and b/static/babybuddy/webfonts/fa-brands-400.woff2 differ diff --git a/static/babybuddy/webfonts/fa-regular-400.7980a6361c25.woff2 b/static/babybuddy/webfonts/fa-regular-400.7980a6361c25.woff2 new file mode 100644 index 00000000..7faee563 Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.7980a6361c25.woff2 differ diff --git a/static/babybuddy/webfonts/fa-regular-400.7aaf5675efd6.woff b/static/babybuddy/webfonts/fa-regular-400.7aaf5675efd6.woff new file mode 100644 index 00000000..b7414354 Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.7aaf5675efd6.woff differ diff --git a/static/babybuddy/webfonts/fa-regular-400.859001f6ae8e.eot b/static/babybuddy/webfonts/fa-regular-400.859001f6ae8e.eot new file mode 100644 index 00000000..f9c3418a Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.859001f6ae8e.eot differ diff --git a/static/babybuddy/webfonts/fa-regular-400.859001f6ae8e.eot.gz b/static/babybuddy/webfonts/fa-regular-400.859001f6ae8e.eot.gz new file mode 100644 index 00000000..5d08e439 Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.859001f6ae8e.eot.gz differ diff --git a/static/babybuddy/webfonts/fa-regular-400.da8a235bb207.svg b/static/babybuddy/webfonts/fa-regular-400.da8a235bb207.svg new file mode 100644 index 00000000..38b66718 --- /dev/null +++ b/static/babybuddy/webfonts/fa-regular-400.da8a235bb207.svg @@ -0,0 +1,803 @@ + + + + + +Created by FontForge 20190112 at Tue May 7 11:33:43 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/babybuddy/webfonts/fa-regular-400.da8a235bb207.svg.gz b/static/babybuddy/webfonts/fa-regular-400.da8a235bb207.svg.gz new file mode 100644 index 00000000..a416434e Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.da8a235bb207.svg.gz differ diff --git a/static/babybuddy/webfonts/fa-regular-400.eot b/static/babybuddy/webfonts/fa-regular-400.eot new file mode 100644 index 00000000..f9c3418a Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.eot differ diff --git a/static/babybuddy/webfonts/fa-regular-400.eot.gz b/static/babybuddy/webfonts/fa-regular-400.eot.gz new file mode 100644 index 00000000..5d08e439 Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.eot.gz differ diff --git a/static/babybuddy/webfonts/fa-regular-400.f33342516f7c.ttf b/static/babybuddy/webfonts/fa-regular-400.f33342516f7c.ttf new file mode 100644 index 00000000..b4abb3df Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.f33342516f7c.ttf differ diff --git a/static/babybuddy/webfonts/fa-regular-400.f33342516f7c.ttf.gz b/static/babybuddy/webfonts/fa-regular-400.f33342516f7c.ttf.gz new file mode 100644 index 00000000..f965e362 Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.f33342516f7c.ttf.gz differ diff --git a/static/babybuddy/webfonts/fa-regular-400.svg b/static/babybuddy/webfonts/fa-regular-400.svg new file mode 100644 index 00000000..38b66718 --- /dev/null +++ b/static/babybuddy/webfonts/fa-regular-400.svg @@ -0,0 +1,803 @@ + + + + + +Created by FontForge 20190112 at Tue May 7 11:33:43 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/babybuddy/webfonts/fa-regular-400.svg.gz b/static/babybuddy/webfonts/fa-regular-400.svg.gz new file mode 100644 index 00000000..a416434e Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.svg.gz differ diff --git a/static/babybuddy/webfonts/fa-regular-400.ttf b/static/babybuddy/webfonts/fa-regular-400.ttf new file mode 100644 index 00000000..b4abb3df Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.ttf differ diff --git a/static/babybuddy/webfonts/fa-regular-400.ttf.gz b/static/babybuddy/webfonts/fa-regular-400.ttf.gz new file mode 100644 index 00000000..f965e362 Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.ttf.gz differ diff --git a/static/babybuddy/webfonts/fa-regular-400.woff b/static/babybuddy/webfonts/fa-regular-400.woff new file mode 100644 index 00000000..b7414354 Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.woff differ diff --git a/static/babybuddy/webfonts/fa-regular-400.woff2 b/static/babybuddy/webfonts/fa-regular-400.woff2 new file mode 100644 index 00000000..7faee563 Binary files /dev/null and b/static/babybuddy/webfonts/fa-regular-400.woff2 differ diff --git a/static/babybuddy/webfonts/fa-solid-900.0be94a07755b.woff b/static/babybuddy/webfonts/fa-solid-900.0be94a07755b.woff new file mode 100644 index 00000000..49325538 Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.0be94a07755b.woff differ diff --git a/static/babybuddy/webfonts/fa-solid-900.64b3e814a66c.woff2 b/static/babybuddy/webfonts/fa-solid-900.64b3e814a66c.woff2 new file mode 100644 index 00000000..92c4d57c Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.64b3e814a66c.woff2 differ diff --git a/static/babybuddy/webfonts/fa-solid-900.7726a281c1d4.svg b/static/babybuddy/webfonts/fa-solid-900.7726a281c1d4.svg new file mode 100644 index 00000000..35b78661 --- /dev/null +++ b/static/babybuddy/webfonts/fa-solid-900.7726a281c1d4.svg @@ -0,0 +1,4527 @@ + + + + + +Created by FontForge 20190112 at Tue May 7 11:33:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/babybuddy/webfonts/fa-solid-900.7726a281c1d4.svg.gz b/static/babybuddy/webfonts/fa-solid-900.7726a281c1d4.svg.gz new file mode 100644 index 00000000..80e94cf1 Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.7726a281c1d4.svg.gz differ diff --git a/static/babybuddy/webfonts/fa-solid-900.e2675a616b68.eot b/static/babybuddy/webfonts/fa-solid-900.e2675a616b68.eot new file mode 100644 index 00000000..bf4fd60a Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.e2675a616b68.eot differ diff --git a/static/babybuddy/webfonts/fa-solid-900.e2675a616b68.eot.gz b/static/babybuddy/webfonts/fa-solid-900.e2675a616b68.eot.gz new file mode 100644 index 00000000..4b1083cd Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.e2675a616b68.eot.gz differ diff --git a/static/babybuddy/webfonts/fa-solid-900.eot b/static/babybuddy/webfonts/fa-solid-900.eot new file mode 100644 index 00000000..bf4fd60a Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.eot differ diff --git a/static/babybuddy/webfonts/fa-solid-900.eot.gz b/static/babybuddy/webfonts/fa-solid-900.eot.gz new file mode 100644 index 00000000..4b1083cd Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.eot.gz differ diff --git a/static/babybuddy/webfonts/fa-solid-900.f14c3b2ff7c8.ttf b/static/babybuddy/webfonts/fa-solid-900.f14c3b2ff7c8.ttf new file mode 100644 index 00000000..9821bea3 Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.f14c3b2ff7c8.ttf differ diff --git a/static/babybuddy/webfonts/fa-solid-900.f14c3b2ff7c8.ttf.gz b/static/babybuddy/webfonts/fa-solid-900.f14c3b2ff7c8.ttf.gz new file mode 100644 index 00000000..a494c40a Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.f14c3b2ff7c8.ttf.gz differ diff --git a/static/babybuddy/webfonts/fa-solid-900.svg b/static/babybuddy/webfonts/fa-solid-900.svg new file mode 100644 index 00000000..35b78661 --- /dev/null +++ b/static/babybuddy/webfonts/fa-solid-900.svg @@ -0,0 +1,4527 @@ + + + + + +Created by FontForge 20190112 at Tue May 7 11:33:44 2019 + By Robert Madole +Copyright (c) Font Awesome + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/static/babybuddy/webfonts/fa-solid-900.svg.gz b/static/babybuddy/webfonts/fa-solid-900.svg.gz new file mode 100644 index 00000000..80e94cf1 Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.svg.gz differ diff --git a/static/babybuddy/webfonts/fa-solid-900.ttf b/static/babybuddy/webfonts/fa-solid-900.ttf new file mode 100644 index 00000000..9821bea3 Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.ttf differ diff --git a/static/babybuddy/webfonts/fa-solid-900.ttf.gz b/static/babybuddy/webfonts/fa-solid-900.ttf.gz new file mode 100644 index 00000000..a494c40a Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.ttf.gz differ diff --git a/static/babybuddy/webfonts/fa-solid-900.woff b/static/babybuddy/webfonts/fa-solid-900.woff new file mode 100644 index 00000000..49325538 Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.woff differ diff --git a/static/babybuddy/webfonts/fa-solid-900.woff2 b/static/babybuddy/webfonts/fa-solid-900.woff2 new file mode 100644 index 00000000..92c4d57c Binary files /dev/null and b/static/babybuddy/webfonts/fa-solid-900.woff2 differ diff --git a/static/staticfiles.json b/static/staticfiles.json index 6aedacd2..206143d8 100644 --- a/static/staticfiles.json +++ b/static/staticfiles.json @@ -1 +1 @@ -{"paths": {"admin/js/vendor/select2/i18n/cs.js": "admin/js/vendor/select2/i18n/cs.a68bcd293adc.js", "admin/js/vendor/select2/i18n/en.js": "admin/js/vendor/select2/i18n/en.05649b26c086.js", "admin/js/vendor/select2/i18n/ko.js": "admin/js/vendor/select2/i18n/ko.74b17541834f.js", "admin/js/vendor/select2/i18n/lv.js": "admin/js/vendor/select2/i18n/lv.07fe2a580d17.js", "admin/js/vendor/select2/i18n/km.js": "admin/js/vendor/select2/i18n/km.6074a9c5575c.js", "admin/js/vendor/select2/i18n/pl.js": "admin/js/vendor/select2/i18n/pl.76465b54a6b0.js", "admin/js/vendor/select2/i18n/de.js": "admin/js/vendor/select2/i18n/de.366d0aacb55f.js", "admin/js/vendor/select2/i18n/sr.js": "admin/js/vendor/select2/i18n/sr.157bc6eb978e.js", "admin/js/vendor/select2/i18n/ru.js": "admin/js/vendor/select2/i18n/ru.d83609abf2e0.js", "admin/js/vendor/select2/i18n/he.js": "admin/js/vendor/select2/i18n/he.222d90ee0344.js", "admin/js/vendor/select2/i18n/el.js": "admin/js/vendor/select2/i18n/el.5629ce65500f.js", "admin/js/vendor/select2/i18n/pt-BR.js": "admin/js/vendor/select2/i18n/pt-BR.9efbbac4fda8.js", "admin/js/vendor/select2/i18n/uk.js": "admin/js/vendor/select2/i18n/uk.3d56f311192d.js", "admin/js/vendor/select2/i18n/nl.js": "admin/js/vendor/select2/i18n/nl.c363ace8aa05.js", "admin/js/vendor/select2/i18n/sv.js": "admin/js/vendor/select2/i18n/sv.2b21bb3f6110.js", "admin/js/vendor/select2/i18n/mk.js": "admin/js/vendor/select2/i18n/mk.4986d7fc3ff3.js", "admin/js/vendor/select2/i18n/bg.js": "admin/js/vendor/select2/i18n/bg.89cba4df3c86.js", "admin/js/vendor/select2/i18n/zh-CN.js": "admin/js/vendor/select2/i18n/zh-CN.419002d3c6c1.js", "admin/js/vendor/select2/i18n/vi.js": "admin/js/vendor/select2/i18n/vi.3520aa7bdea8.js", "admin/js/vendor/select2/i18n/tr.js": "admin/js/vendor/select2/i18n/tr.c1925d8817db.js", "admin/js/vendor/select2/i18n/fr.js": "admin/js/vendor/select2/i18n/fr.b06a3340de45.js", "admin/js/vendor/select2/i18n/gl.js": "admin/js/vendor/select2/i18n/gl.78a87f7c0a51.js", "admin/js/vendor/select2/i18n/hr.js": "admin/js/vendor/select2/i18n/hr.e1d2c70b4df5.js", "admin/js/vendor/select2/i18n/eu.js": "admin/js/vendor/select2/i18n/eu.11b925456433.js", "admin/js/vendor/select2/i18n/ar.js": "admin/js/vendor/select2/i18n/ar.a8bb27ec698c.js", "admin/js/vendor/select2/i18n/zh-TW.js": "admin/js/vendor/select2/i18n/zh-TW.c021537edf2c.js", "admin/js/vendor/select2/i18n/th.js": "admin/js/vendor/select2/i18n/th.2a4ece4c4355.js", "admin/js/vendor/select2/i18n/sr-Cyrl.js": "admin/js/vendor/select2/i18n/sr-Cyrl.2f3047aad49e.js", "admin/js/vendor/select2/i18n/lt.js": "admin/js/vendor/select2/i18n/lt.a0783b1bd159.js", "admin/js/vendor/select2/i18n/et.js": "admin/js/vendor/select2/i18n/et.c3953fb90b6b.js", "admin/js/vendor/select2/i18n/fi.js": "admin/js/vendor/select2/i18n/fi.659847deefdc.js", "admin/js/vendor/select2/i18n/hi.js": "admin/js/vendor/select2/i18n/hi.116a90b7111b.js", "admin/js/vendor/select2/i18n/ja.js": "admin/js/vendor/select2/i18n/ja.19cf1ce8a03d.js", "admin/js/vendor/select2/i18n/sk.js": "admin/js/vendor/select2/i18n/sk.a0f1a818d092.js", "admin/js/vendor/select2/i18n/da.js": "admin/js/vendor/select2/i18n/da.cbf897a0ae53.js", "admin/js/vendor/select2/i18n/id.js": "admin/js/vendor/select2/i18n/id.6ee6c9c64b94.js", "admin/js/vendor/select2/i18n/es.js": "admin/js/vendor/select2/i18n/es.dc9dbf9d65df.js", "admin/js/vendor/select2/i18n/it.js": "admin/js/vendor/select2/i18n/it.bae1661dbb77.js", "admin/js/vendor/select2/i18n/hu.js": "admin/js/vendor/select2/i18n/hu.db45641f10b2.js", "admin/js/vendor/select2/i18n/ms.js": "admin/js/vendor/select2/i18n/ms.23e7b4369579.js", "admin/js/vendor/select2/i18n/fa.js": "admin/js/vendor/select2/i18n/fa.98e52839b583.js", "admin/js/vendor/select2/i18n/nb.js": "admin/js/vendor/select2/i18n/nb.137e184004aa.js", "admin/js/vendor/select2/i18n/az.js": "admin/js/vendor/select2/i18n/az.498dc667b34e.js", "admin/js/vendor/select2/i18n/ca.js": "admin/js/vendor/select2/i18n/ca.2eaad4eb1950.js", "admin/js/vendor/select2/i18n/ro.js": "admin/js/vendor/select2/i18n/ro.1ddc2b9980dc.js", "admin/js/vendor/select2/i18n/pt.js": "admin/js/vendor/select2/i18n/pt.5d6ccc53b347.js", "admin/js/vendor/select2/i18n/is.js": "admin/js/vendor/select2/i18n/is.808c7d47acb5.js", "admin/js/vendor/xregexp/LICENSE.txt": "admin/js/vendor/xregexp/LICENSE.d64cecf4f157.txt", "admin/js/vendor/xregexp/xregexp.min.js": "admin/js/vendor/xregexp/xregexp.min.c95393b8ca4d.js", "admin/js/vendor/xregexp/xregexp.js": "admin/js/vendor/xregexp/xregexp.1865b1cf5085.js", "admin/js/vendor/select2/LICENSE.md": "admin/js/vendor/select2/LICENSE.7cf1de939f3b.md", "admin/js/vendor/select2/select2.full.js": "admin/js/vendor/select2/select2.full.a95323cb4760.js", "admin/js/vendor/select2/select2.full.min.js": "admin/js/vendor/select2/select2.full.min.da607360bcc6.js", "admin/js/vendor/jquery/jquery.js": "admin/js/vendor/jquery/jquery.6fb03f669462.js", "admin/js/vendor/jquery/LICENSE.txt": "admin/js/vendor/jquery/LICENSE.a158210a2737.txt", "admin/js/vendor/jquery/jquery.min.js": "admin/js/vendor/jquery/jquery.min.9c86871c4213.js", "admin/css/vendor/select2/select2.min.css": "admin/css/vendor/select2/select2.min.d44571114a90.css", "admin/css/vendor/select2/select2.css": "admin/css/vendor/select2/select2.3805311d5fc1.css", "admin/css/vendor/select2/LICENSE-SELECT2.md": "admin/css/vendor/select2/LICENSE-SELECT2.7cf1de939f3b.md", "babybuddy/img/core/child-placeholder.png": "babybuddy/img/core/child-placeholder.7c0a81f0d7f0.png", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/js/api.js": "rest_framework/docs/js/api.c9743eab7a4f.js", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.d9cd17260641.css", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "admin/js/admin/DateTimeShortcuts.js": "admin/js/admin/DateTimeShortcuts.c085703ffd82.js", "admin/js/admin/RelatedObjectLookups.js": "admin/js/admin/RelatedObjectLookups.ea0683bea064.js", "admin/img/gis/move_vertex_on.svg": "admin/img/gis/move_vertex_on.0047eba25b67.svg", "admin/img/gis/move_vertex_off.svg": "admin/img/gis/move_vertex_off.7a23bf31ef8a.svg", "babybuddy/logo/icon2.png": "babybuddy/logo/icon2.be48fd16c53f.png", "babybuddy/logo/icon-brand.png": "babybuddy/logo/icon-brand.96e4491f2209.png", "babybuddy/logo/logo.png": "babybuddy/logo/logo.62870041cc83.png", "babybuddy/logo/icon.png": "babybuddy/logo/icon.6377611bf399.png", "babybuddy/js/app.js": "babybuddy/js/app.0079764f3fc1.js", "babybuddy/js/graph.js": "babybuddy/js/graph.da32e0532ca2.js", "babybuddy/js/vendor.js": "babybuddy/js/vendor.3aed05379df2.js", "babybuddy/css/vendor.css": "babybuddy/css/vendor.be1a1448dd86.css", "babybuddy/css/app.css": "babybuddy/css/app.3349e431532d.css", "babybuddy/fonts/fontawesome-webfont.eot": "babybuddy/fonts/fontawesome-webfont.674f50d287a8.eot", "babybuddy/fonts/fontawesome-webfont.ttf": "babybuddy/fonts/fontawesome-webfont.b06871f281fe.ttf", "babybuddy/fonts/fontawesome-webfont.svg": "babybuddy/fonts/fontawesome-webfont.912ec66d7572.svg", "babybuddy/fonts/fontawesome-webfont.woff2": "babybuddy/fonts/fontawesome-webfont.af7ae505a9ee.woff2", "babybuddy/fonts/FontAwesome.otf": "babybuddy/fonts/FontAwesome.0d2717cd5d85.otf", "babybuddy/fonts/fontawesome-webfont.woff": "babybuddy/fonts/fontawesome-webfont.fee66e712a8a.woff", "babybuddy/root/site.webmanifest.json": "babybuddy/root/site.webmanifest.61dac00bb04b.json", "babybuddy/root/favicon-32x32.png": "babybuddy/root/favicon-32x32.076f1340f1cf.png", "babybuddy/root/favicon.ico": "babybuddy/root/favicon.1b19cfd81791.ico", "babybuddy/root/android-chrome-512x512.png": "babybuddy/root/android-chrome-512x512.89ee40b783cd.png", "babybuddy/root/favicon-16x16.png": "babybuddy/root/favicon-16x16.12c501486484.png", "babybuddy/root/mstile-150x150.png": "babybuddy/root/mstile-150x150.f231c8ff6157.png", "babybuddy/root/apple-touch-icon.png": "babybuddy/root/apple-touch-icon.33416748f239.png", "babybuddy/root/safari-pinned-tab.svg": "babybuddy/root/safari-pinned-tab.3de51db2baf2.svg", "babybuddy/root/android-chrome-192x192.png": "babybuddy/root/android-chrome-192x192.484bd0e8cb66.png", "babybuddy/root/browserconfig.xml": "babybuddy/root/browserconfig.5858221e0a38.xml", "babybuddy/root/android-chrome-384x384.png": "babybuddy/root/android-chrome-384x384.7849615a1e26.png", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.969930007329.js", "rest_framework/js/jquery-3.3.1.min.js": "rest_framework/js/jquery-3.3.1.min.a09e13ee94d5.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.3d8308804264.js", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.0ea6e6052ab5.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.46ed116b0edd.css", "rest_framework/css/default.css": "rest_framework/css/default.8d5591a6aabc.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.66b84a04375e.css", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.77017a69879a.css", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "admin/js/prepopulate.min.js": "admin/js/prepopulate.min.85fd5e0fb706.js", "admin/js/calendar.js": "admin/js/calendar.aae57adab5f6.js", "admin/js/inlines.min.js": "admin/js/inlines.min.4d23f8660b21.js", "admin/js/SelectBox.js": "admin/js/SelectBox.b49f008d186b.js", "admin/js/collapse.min.js": "admin/js/collapse.min.44dfdb427845.js", "admin/js/urlify.js": "admin/js/urlify.4087f3e18796.js", "admin/js/actions.min.js": "admin/js/actions.min.5fa8cb0403f1.js", "admin/js/popup_response.js": "admin/js/popup_response.6ce3197f8fc8.js", "admin/js/autocomplete.js": "admin/js/autocomplete.cfd2c4dc8981.js", "admin/js/collapse.js": "admin/js/collapse.c5b851e91226.js", "admin/js/change_form.js": "admin/js/change_form.9e85003a1a38.js", "admin/js/jquery.init.js": "admin/js/jquery.init.95b62fa19378.js", "admin/js/actions.js": "admin/js/actions.2fb8e8349c22.js", "admin/js/prepopulate_init.js": "admin/js/prepopulate_init.0d3b53c37074.js", "admin/js/inlines.js": "admin/js/inlines.3b3fb199b064.js", "admin/js/timeparse.js": "admin/js/timeparse.51258861a46a.js", "admin/js/prepopulate.js": "admin/js/prepopulate.2f90da7170ec.js", "admin/js/cancel.js": "admin/js/cancel.d6b4b556c3aa.js", "admin/js/SelectFilter2.js": "admin/js/SelectFilter2.32ea9335ce47.js", "admin/js/core.js": "admin/js/core.9c3bce7d1006.js", "admin/css/changelists.css": "admin/css/changelists.f6dc691f8d62.css", "admin/css/login.css": "admin/css/login.252ffabd6548.css", "admin/css/fonts.css": "admin/css/fonts.168bab448fee.css", "admin/css/responsive.css": "admin/css/responsive.3a465780d49f.css", "admin/css/autocomplete.css": "admin/css/autocomplete.781713f30664.css", "admin/css/base.css": "admin/css/base.ae33e6383baa.css", "admin/css/widgets.css": "admin/css/widgets.5e372b41c483.css", "admin/css/forms.css": "admin/css/forms.31b2f650d92e.css", "admin/css/dashboard.css": "admin/css/dashboard.7ac78187c567.css", "admin/css/rtl.css": "admin/css/rtl.30f903442dc5.css", "admin/css/responsive_rtl.css": "admin/css/responsive_rtl.51c7445ceeff.css", "admin/fonts/LICENSE.txt": "admin/fonts/LICENSE.d273d63619c9.txt", "admin/fonts/Roboto-Bold-webfont.woff": "admin/fonts/Roboto-Bold-webfont.50d75e48e0a3.woff", "admin/fonts/Roboto-Light-webfont.woff": "admin/fonts/Roboto-Light-webfont.c73eb1ceba33.woff", "admin/fonts/README.txt": "admin/fonts/README.ab99e6b541ea.txt", "admin/fonts/Roboto-Regular-webfont.woff": "admin/fonts/Roboto-Regular-webfont.35b07eb2f871.woff", "admin/img/icon-changelink.svg": "admin/img/icon-changelink.18d2fd706348.svg", "admin/img/icon-no.svg": "admin/img/icon-no.439e821418cd.svg", "admin/img/selector-icons.svg": "admin/img/selector-icons.b4555096cea2.svg", "admin/img/search.svg": "admin/img/search.7cf54ff789c6.svg", "admin/img/icon-yes.svg": "admin/img/icon-yes.d2f9f035226a.svg", "admin/img/icon-addlink.svg": "admin/img/icon-addlink.d519b3bab011.svg", "admin/img/icon-clock.svg": "admin/img/icon-clock.e1d4dfac3f2b.svg", "admin/img/LICENSE": "admin/img/LICENSE.2c54f4e1ca1c", "admin/img/icon-viewlink.svg": "admin/img/icon-viewlink.41eb31f7826e.svg", "admin/img/icon-unknown.svg": "admin/img/icon-unknown.a18cb4398978.svg", "admin/img/README.txt": "admin/img/README.a70711a38d87.txt", "admin/img/icon-calendar.svg": "admin/img/icon-calendar.ac7aea671bea.svg", "admin/img/sorting-icons.svg": "admin/img/sorting-icons.3a097b59f104.svg", "admin/img/tooltag-arrowright.svg": "admin/img/tooltag-arrowright.bbfb788a849e.svg", "admin/img/icon-deletelink.svg": "admin/img/icon-deletelink.564ef9dc3854.svg", "admin/img/tooltag-add.svg": "admin/img/tooltag-add.e59d620a9742.svg", "admin/img/inline-delete.svg": "admin/img/inline-delete.fec1b761f254.svg", "admin/img/icon-alert.svg": "admin/img/icon-alert.034cc7d8a67f.svg", "admin/img/icon-unknown-alt.svg": "admin/img/icon-unknown-alt.81536e128bb6.svg", "admin/img/calendar-icons.svg": "admin/img/calendar-icons.39b290681a8b.svg"}, "version": "1.0"} \ No newline at end of file +{"paths": {"admin/js/vendor/select2/i18n/cs.js": "admin/js/vendor/select2/i18n/cs.a68bcd293adc.js", "admin/js/vendor/select2/i18n/en.js": "admin/js/vendor/select2/i18n/en.05649b26c086.js", "admin/js/vendor/select2/i18n/ko.js": "admin/js/vendor/select2/i18n/ko.74b17541834f.js", "admin/js/vendor/select2/i18n/lv.js": "admin/js/vendor/select2/i18n/lv.07fe2a580d17.js", "admin/js/vendor/select2/i18n/km.js": "admin/js/vendor/select2/i18n/km.6074a9c5575c.js", "admin/js/vendor/select2/i18n/pl.js": "admin/js/vendor/select2/i18n/pl.76465b54a6b0.js", "admin/js/vendor/select2/i18n/de.js": "admin/js/vendor/select2/i18n/de.366d0aacb55f.js", "admin/js/vendor/select2/i18n/sr.js": "admin/js/vendor/select2/i18n/sr.157bc6eb978e.js", "admin/js/vendor/select2/i18n/ru.js": "admin/js/vendor/select2/i18n/ru.d83609abf2e0.js", "admin/js/vendor/select2/i18n/he.js": "admin/js/vendor/select2/i18n/he.222d90ee0344.js", "admin/js/vendor/select2/i18n/el.js": "admin/js/vendor/select2/i18n/el.5629ce65500f.js", "admin/js/vendor/select2/i18n/pt-BR.js": "admin/js/vendor/select2/i18n/pt-BR.9efbbac4fda8.js", "admin/js/vendor/select2/i18n/uk.js": "admin/js/vendor/select2/i18n/uk.3d56f311192d.js", "admin/js/vendor/select2/i18n/nl.js": "admin/js/vendor/select2/i18n/nl.c363ace8aa05.js", "admin/js/vendor/select2/i18n/sv.js": "admin/js/vendor/select2/i18n/sv.2b21bb3f6110.js", "admin/js/vendor/select2/i18n/mk.js": "admin/js/vendor/select2/i18n/mk.4986d7fc3ff3.js", "admin/js/vendor/select2/i18n/bg.js": "admin/js/vendor/select2/i18n/bg.89cba4df3c86.js", "admin/js/vendor/select2/i18n/zh-CN.js": "admin/js/vendor/select2/i18n/zh-CN.419002d3c6c1.js", "admin/js/vendor/select2/i18n/vi.js": "admin/js/vendor/select2/i18n/vi.3520aa7bdea8.js", "admin/js/vendor/select2/i18n/tr.js": "admin/js/vendor/select2/i18n/tr.c1925d8817db.js", "admin/js/vendor/select2/i18n/fr.js": "admin/js/vendor/select2/i18n/fr.b06a3340de45.js", "admin/js/vendor/select2/i18n/gl.js": "admin/js/vendor/select2/i18n/gl.78a87f7c0a51.js", "admin/js/vendor/select2/i18n/hr.js": "admin/js/vendor/select2/i18n/hr.e1d2c70b4df5.js", "admin/js/vendor/select2/i18n/eu.js": "admin/js/vendor/select2/i18n/eu.11b925456433.js", "admin/js/vendor/select2/i18n/ar.js": "admin/js/vendor/select2/i18n/ar.a8bb27ec698c.js", "admin/js/vendor/select2/i18n/zh-TW.js": "admin/js/vendor/select2/i18n/zh-TW.c021537edf2c.js", "admin/js/vendor/select2/i18n/th.js": "admin/js/vendor/select2/i18n/th.2a4ece4c4355.js", "admin/js/vendor/select2/i18n/sr-Cyrl.js": "admin/js/vendor/select2/i18n/sr-Cyrl.2f3047aad49e.js", "admin/js/vendor/select2/i18n/lt.js": "admin/js/vendor/select2/i18n/lt.a0783b1bd159.js", "admin/js/vendor/select2/i18n/et.js": "admin/js/vendor/select2/i18n/et.c3953fb90b6b.js", "admin/js/vendor/select2/i18n/fi.js": "admin/js/vendor/select2/i18n/fi.659847deefdc.js", "admin/js/vendor/select2/i18n/hi.js": "admin/js/vendor/select2/i18n/hi.116a90b7111b.js", "admin/js/vendor/select2/i18n/ja.js": "admin/js/vendor/select2/i18n/ja.19cf1ce8a03d.js", "admin/js/vendor/select2/i18n/sk.js": "admin/js/vendor/select2/i18n/sk.a0f1a818d092.js", "admin/js/vendor/select2/i18n/da.js": "admin/js/vendor/select2/i18n/da.cbf897a0ae53.js", "admin/js/vendor/select2/i18n/id.js": "admin/js/vendor/select2/i18n/id.6ee6c9c64b94.js", "admin/js/vendor/select2/i18n/es.js": "admin/js/vendor/select2/i18n/es.dc9dbf9d65df.js", "admin/js/vendor/select2/i18n/it.js": "admin/js/vendor/select2/i18n/it.bae1661dbb77.js", "admin/js/vendor/select2/i18n/hu.js": "admin/js/vendor/select2/i18n/hu.db45641f10b2.js", "admin/js/vendor/select2/i18n/ms.js": "admin/js/vendor/select2/i18n/ms.23e7b4369579.js", "admin/js/vendor/select2/i18n/fa.js": "admin/js/vendor/select2/i18n/fa.98e52839b583.js", "admin/js/vendor/select2/i18n/nb.js": "admin/js/vendor/select2/i18n/nb.137e184004aa.js", "admin/js/vendor/select2/i18n/az.js": "admin/js/vendor/select2/i18n/az.498dc667b34e.js", "admin/js/vendor/select2/i18n/ca.js": "admin/js/vendor/select2/i18n/ca.2eaad4eb1950.js", "admin/js/vendor/select2/i18n/ro.js": "admin/js/vendor/select2/i18n/ro.1ddc2b9980dc.js", "admin/js/vendor/select2/i18n/pt.js": "admin/js/vendor/select2/i18n/pt.5d6ccc53b347.js", "admin/js/vendor/select2/i18n/is.js": "admin/js/vendor/select2/i18n/is.808c7d47acb5.js", "admin/js/vendor/xregexp/LICENSE.txt": "admin/js/vendor/xregexp/LICENSE.d64cecf4f157.txt", "admin/js/vendor/xregexp/xregexp.min.js": "admin/js/vendor/xregexp/xregexp.min.c95393b8ca4d.js", "admin/js/vendor/xregexp/xregexp.js": "admin/js/vendor/xregexp/xregexp.1865b1cf5085.js", "admin/js/vendor/select2/LICENSE.md": "admin/js/vendor/select2/LICENSE.7cf1de939f3b.md", "admin/js/vendor/select2/select2.full.js": "admin/js/vendor/select2/select2.full.a95323cb4760.js", "admin/js/vendor/select2/select2.full.min.js": "admin/js/vendor/select2/select2.full.min.da607360bcc6.js", "admin/js/vendor/jquery/jquery.js": "admin/js/vendor/jquery/jquery.6fb03f669462.js", "admin/js/vendor/jquery/LICENSE.txt": "admin/js/vendor/jquery/LICENSE.a158210a2737.txt", "admin/js/vendor/jquery/jquery.min.js": "admin/js/vendor/jquery/jquery.min.9c86871c4213.js", "admin/css/vendor/select2/select2.min.css": "admin/css/vendor/select2/select2.min.d44571114a90.css", "admin/css/vendor/select2/select2.css": "admin/css/vendor/select2/select2.3805311d5fc1.css", "admin/css/vendor/select2/LICENSE-SELECT2.md": "admin/css/vendor/select2/LICENSE-SELECT2.7cf1de939f3b.md", "babybuddy/img/core/child-placeholder.png": "babybuddy/img/core/child-placeholder.7c0a81f0d7f0.png", "rest_framework/docs/js/jquery.json-view.min.js": "rest_framework/docs/js/jquery.json-view.min.b7c2d6981377.js", "rest_framework/docs/js/highlight.pack.js": "rest_framework/docs/js/highlight.pack.479b5f21dcba.js", "rest_framework/docs/js/api.js": "rest_framework/docs/js/api.c9743eab7a4f.js", "rest_framework/docs/css/base.css": "rest_framework/docs/css/base.d9cd17260641.css", "rest_framework/docs/css/jquery.json-view.min.css": "rest_framework/docs/css/jquery.json-view.min.a2e6beeb6710.css", "rest_framework/docs/css/highlight.css": "rest_framework/docs/css/highlight.e0e4d973c6d7.css", "rest_framework/docs/img/grid.png": "rest_framework/docs/img/grid.a4b938cf382b.png", "rest_framework/docs/img/favicon.ico": "rest_framework/docs/img/favicon.5195b4d0f3eb.ico", "admin/js/admin/DateTimeShortcuts.js": "admin/js/admin/DateTimeShortcuts.efa703f6f0b3.js", "admin/js/admin/RelatedObjectLookups.js": "admin/js/admin/RelatedObjectLookups.ea0683bea064.js", "admin/img/gis/move_vertex_on.svg": "admin/img/gis/move_vertex_on.0047eba25b67.svg", "admin/img/gis/move_vertex_off.svg": "admin/img/gis/move_vertex_off.7a23bf31ef8a.svg", "babybuddy/logo/icon2.png": "babybuddy/logo/icon2.be48fd16c53f.png", "babybuddy/logo/icon-brand.png": "babybuddy/logo/icon-brand.96e4491f2209.png", "babybuddy/logo/logo.png": "babybuddy/logo/logo.62870041cc83.png", "babybuddy/logo/icon.png": "babybuddy/logo/icon.6377611bf399.png", "babybuddy/js/app.js": "babybuddy/js/app.0079764f3fc1.js", "babybuddy/js/graph.js": "babybuddy/js/graph.da32e0532ca2.js", "babybuddy/js/vendor.js": "babybuddy/js/vendor.3aed05379df2.js", "babybuddy/css/vendor.css": "babybuddy/css/vendor.be1a1448dd86.css", "babybuddy/css/app.css": "babybuddy/css/app.3349e431532d.css", "babybuddy/fonts/fontawesome-webfont.eot": "babybuddy/fonts/fontawesome-webfont.674f50d287a8.eot", "babybuddy/fonts/fontawesome-webfont.ttf": "babybuddy/fonts/fontawesome-webfont.b06871f281fe.ttf", "babybuddy/fonts/fontawesome-webfont.svg": "babybuddy/fonts/fontawesome-webfont.912ec66d7572.svg", "babybuddy/fonts/fontawesome-webfont.woff2": "babybuddy/fonts/fontawesome-webfont.af7ae505a9ee.woff2", "babybuddy/fonts/FontAwesome.otf": "babybuddy/fonts/FontAwesome.0d2717cd5d85.otf", "babybuddy/fonts/fontawesome-webfont.woff": "babybuddy/fonts/fontawesome-webfont.fee66e712a8a.woff", "babybuddy/root/site.webmanifest.json": "babybuddy/root/site.webmanifest.61dac00bb04b.json", "babybuddy/root/favicon-32x32.png": "babybuddy/root/favicon-32x32.076f1340f1cf.png", "babybuddy/root/favicon.ico": "babybuddy/root/favicon.1b19cfd81791.ico", "babybuddy/root/android-chrome-512x512.png": "babybuddy/root/android-chrome-512x512.89ee40b783cd.png", "babybuddy/root/favicon-16x16.png": "babybuddy/root/favicon-16x16.12c501486484.png", "babybuddy/root/mstile-150x150.png": "babybuddy/root/mstile-150x150.f231c8ff6157.png", "babybuddy/root/apple-touch-icon.png": "babybuddy/root/apple-touch-icon.33416748f239.png", "babybuddy/root/safari-pinned-tab.svg": "babybuddy/root/safari-pinned-tab.3de51db2baf2.svg", "babybuddy/root/android-chrome-192x192.png": "babybuddy/root/android-chrome-192x192.484bd0e8cb66.png", "babybuddy/root/browserconfig.xml": "babybuddy/root/browserconfig.5858221e0a38.xml", "babybuddy/root/android-chrome-384x384.png": "babybuddy/root/android-chrome-384x384.7849615a1e26.png", "babybuddy/webfonts/fa-brands-400.svg": "babybuddy/webfonts/fa-brands-400.38975343b586.svg", "babybuddy/webfonts/fa-solid-900.svg": "babybuddy/webfonts/fa-solid-900.7726a281c1d4.svg", "babybuddy/webfonts/fa-regular-400.woff": "babybuddy/webfonts/fa-regular-400.7aaf5675efd6.woff", "babybuddy/webfonts/fa-solid-900.woff2": "babybuddy/webfonts/fa-solid-900.64b3e814a66c.woff2", "babybuddy/webfonts/fa-regular-400.eot": "babybuddy/webfonts/fa-regular-400.859001f6ae8e.eot", "babybuddy/webfonts/fa-solid-900.woff": "babybuddy/webfonts/fa-solid-900.0be94a07755b.woff", "babybuddy/webfonts/fa-brands-400.eot": "babybuddy/webfonts/fa-brands-400.8e49b7284130.eot", "babybuddy/webfonts/fa-brands-400.woff2": "babybuddy/webfonts/fa-brands-400.9f4ce3dc6899.woff2", "babybuddy/webfonts/fa-brands-400.ttf": "babybuddy/webfonts/fa-brands-400.b7d071b9c3c1.ttf", "babybuddy/webfonts/fa-regular-400.ttf": "babybuddy/webfonts/fa-regular-400.f33342516f7c.ttf", "babybuddy/webfonts/fa-solid-900.ttf": "babybuddy/webfonts/fa-solid-900.f14c3b2ff7c8.ttf", "babybuddy/webfonts/fa-regular-400.woff2": "babybuddy/webfonts/fa-regular-400.7980a6361c25.woff2", "babybuddy/webfonts/fa-solid-900.eot": "babybuddy/webfonts/fa-solid-900.e2675a616b68.eot", "babybuddy/webfonts/fa-regular-400.svg": "babybuddy/webfonts/fa-regular-400.da8a235bb207.svg", "babybuddy/webfonts/fa-brands-400.woff": "babybuddy/webfonts/fa-brands-400.9f018d102556.woff", "rest_framework/js/prettify-min.js": "rest_framework/js/prettify-min.709bfcc456c6.js", "rest_framework/js/default.js": "rest_framework/js/default.5b08897dbdc3.js", "rest_framework/js/csrf.js": "rest_framework/js/csrf.969930007329.js", "rest_framework/js/jquery-3.3.1.min.js": "rest_framework/js/jquery-3.3.1.min.a09e13ee94d5.js", "rest_framework/js/bootstrap.min.js": "rest_framework/js/bootstrap.min.3d8308804264.js", "rest_framework/js/ajax-form.js": "rest_framework/js/ajax-form.0ea6e6052ab5.js", "rest_framework/js/coreapi-0.1.1.js": "rest_framework/js/coreapi-0.1.1.8851fb9336c9.js", "rest_framework/css/prettify.css": "rest_framework/css/prettify.a987f72342ee.css", "rest_framework/css/font-awesome-4.0.3.css": "rest_framework/css/font-awesome-4.0.3.c1e1ea213abf.css", "rest_framework/css/bootstrap-tweaks.css": "rest_framework/css/bootstrap-tweaks.46ed116b0edd.css", "rest_framework/css/default.css": "rest_framework/css/default.8d5591a6aabc.css", "rest_framework/css/bootstrap-theme.min.css": "rest_framework/css/bootstrap-theme.min.66b84a04375e.css", "rest_framework/css/bootstrap.min.css": "rest_framework/css/bootstrap.min.77017a69879a.css", "rest_framework/fonts/fontawesome-webfont.eot": "rest_framework/fonts/fontawesome-webfont.8b27bc96115c.eot", "rest_framework/fonts/glyphicons-halflings-regular.svg": "rest_framework/fonts/glyphicons-halflings-regular.08eda92397ae.svg", "rest_framework/fonts/glyphicons-halflings-regular.woff2": "rest_framework/fonts/glyphicons-halflings-regular.448c34a56d69.woff2", "rest_framework/fonts/glyphicons-halflings-regular.ttf": "rest_framework/fonts/glyphicons-halflings-regular.e18bbf611f2a.ttf", "rest_framework/fonts/fontawesome-webfont.ttf": "rest_framework/fonts/fontawesome-webfont.dcb26c7239d8.ttf", "rest_framework/fonts/fontawesome-webfont.svg": "rest_framework/fonts/fontawesome-webfont.83e37a11f9d7.svg", "rest_framework/fonts/glyphicons-halflings-regular.eot": "rest_framework/fonts/glyphicons-halflings-regular.f4769f9bdb74.eot", "rest_framework/fonts/glyphicons-halflings-regular.woff": "rest_framework/fonts/glyphicons-halflings-regular.fa2772327f55.woff", "rest_framework/fonts/fontawesome-webfont.woff": "rest_framework/fonts/fontawesome-webfont.3293616ec0c6.woff", "rest_framework/img/grid.png": "rest_framework/img/grid.a4b938cf382b.png", "rest_framework/img/glyphicons-halflings.png": "rest_framework/img/glyphicons-halflings.90233c9067e9.png", "rest_framework/img/glyphicons-halflings-white.png": "rest_framework/img/glyphicons-halflings-white.9bbc6e960299.png", "admin/js/prepopulate.min.js": "admin/js/prepopulate.min.85fd5e0fb706.js", "admin/js/calendar.js": "admin/js/calendar.aae57adab5f6.js", "admin/js/inlines.min.js": "admin/js/inlines.min.4d23f8660b21.js", "admin/js/SelectBox.js": "admin/js/SelectBox.99d0cfd2e80c.js", "admin/js/collapse.min.js": "admin/js/collapse.min.44dfdb427845.js", "admin/js/urlify.js": "admin/js/urlify.67bae52223e0.js", "admin/js/actions.min.js": "admin/js/actions.min.5fa8cb0403f1.js", "admin/js/popup_response.js": "admin/js/popup_response.6ce3197f8fc8.js", "admin/js/autocomplete.js": "admin/js/autocomplete.cfd2c4dc8981.js", "admin/js/collapse.js": "admin/js/collapse.c5b851e91226.js", "admin/js/change_form.js": "admin/js/change_form.9e85003a1a38.js", "admin/js/jquery.init.js": "admin/js/jquery.init.95b62fa19378.js", "admin/js/actions.js": "admin/js/actions.8d83e3af0fbd.js", "admin/js/prepopulate_init.js": "admin/js/prepopulate_init.0d3b53c37074.js", "admin/js/inlines.js": "admin/js/inlines.12d1af430335.js", "admin/js/timeparse.js": "admin/js/timeparse.51258861a46a.js", "admin/js/prepopulate.js": "admin/js/prepopulate.2f90da7170ec.js", "admin/js/cancel.js": "admin/js/cancel.a2c3149a1c5e.js", "admin/js/SelectFilter2.js": "admin/js/SelectFilter2.32ea9335ce47.js", "admin/js/core.js": "admin/js/core.a004ed25a257.js", "admin/css/changelists.css": "admin/css/changelists.f6dc691f8d62.css", "admin/css/login.css": "admin/css/login.252ffabd6548.css", "admin/css/fonts.css": "admin/css/fonts.168bab448fee.css", "admin/css/responsive.css": "admin/css/responsive.3a465780d49f.css", "admin/css/autocomplete.css": "admin/css/autocomplete.781713f30664.css", "admin/css/base.css": "admin/css/base.ae33e6383baa.css", "admin/css/widgets.css": "admin/css/widgets.5e372b41c483.css", "admin/css/forms.css": "admin/css/forms.31b2f650d92e.css", "admin/css/dashboard.css": "admin/css/dashboard.7ac78187c567.css", "admin/css/rtl.css": "admin/css/rtl.30f903442dc5.css", "admin/css/responsive_rtl.css": "admin/css/responsive_rtl.51c7445ceeff.css", "admin/fonts/LICENSE.txt": "admin/fonts/LICENSE.d273d63619c9.txt", "admin/fonts/Roboto-Bold-webfont.woff": "admin/fonts/Roboto-Bold-webfont.50d75e48e0a3.woff", "admin/fonts/Roboto-Light-webfont.woff": "admin/fonts/Roboto-Light-webfont.c73eb1ceba33.woff", "admin/fonts/README.txt": "admin/fonts/README.ab99e6b541ea.txt", "admin/fonts/Roboto-Regular-webfont.woff": "admin/fonts/Roboto-Regular-webfont.35b07eb2f871.woff", "admin/img/icon-changelink.svg": "admin/img/icon-changelink.18d2fd706348.svg", "admin/img/icon-no.svg": "admin/img/icon-no.439e821418cd.svg", "admin/img/selector-icons.svg": "admin/img/selector-icons.b4555096cea2.svg", "admin/img/search.svg": "admin/img/search.7cf54ff789c6.svg", "admin/img/icon-yes.svg": "admin/img/icon-yes.d2f9f035226a.svg", "admin/img/icon-addlink.svg": "admin/img/icon-addlink.d519b3bab011.svg", "admin/img/icon-clock.svg": "admin/img/icon-clock.e1d4dfac3f2b.svg", "admin/img/LICENSE": "admin/img/LICENSE.2c54f4e1ca1c", "admin/img/icon-viewlink.svg": "admin/img/icon-viewlink.41eb31f7826e.svg", "admin/img/icon-unknown.svg": "admin/img/icon-unknown.a18cb4398978.svg", "admin/img/README.txt": "admin/img/README.a70711a38d87.txt", "admin/img/icon-calendar.svg": "admin/img/icon-calendar.ac7aea671bea.svg", "admin/img/sorting-icons.svg": "admin/img/sorting-icons.3a097b59f104.svg", "admin/img/tooltag-arrowright.svg": "admin/img/tooltag-arrowright.bbfb788a849e.svg", "admin/img/icon-deletelink.svg": "admin/img/icon-deletelink.564ef9dc3854.svg", "admin/img/tooltag-add.svg": "admin/img/tooltag-add.e59d620a9742.svg", "admin/img/inline-delete.svg": "admin/img/inline-delete.fec1b761f254.svg", "admin/img/icon-alert.svg": "admin/img/icon-alert.034cc7d8a67f.svg", "admin/img/icon-unknown-alt.svg": "admin/img/icon-unknown-alt.81536e128bb6.svg", "admin/img/calendar-icons.svg": "admin/img/calendar-icons.39b290681a8b.svg"}, "version": "1.0"} \ No newline at end of file