/* * edit.js * Copyright (c) 2018 thegrumpydictator@gmail.com * * This file is part of Firefly III. * * Firefly III is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Firefly III is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Firefly III. If not, see . */ /** global: Modernizr, currencies */ var calendar; $(document).ready(function () { "use strict"; $(".content-wrapper form input:enabled:visible:first").first().focus().select(); if (!Modernizr.inputtypes.date) { $('input[type="date"]').datepicker( { dateFormat: 'yy-mm-dd' } ); } initializeButtons(); initializeAutoComplete(); respondToFirstDateChange(); respondToRepetitionEnd(); $('.switch-button').on('click', switchTransactionType); $('#ffInput_repetition_end').on('change', respondToRepetitionEnd); $('#ffInput_first_date').on('change', respondToFirstDateChange); // new date var firstDate = $('#ffInput_first_date').val(); // create calendar on load: calendar = $('#recurring_calendar').fullCalendar( { defaultDate: firstDate, editable: false, height: 400, width: 200, contentHeight: 400, aspectRatio: 1.25, eventLimit: true, eventSources: [], }); $('#calendar-link').on('click', showRepCalendar); }); /** * */ function showRepCalendar() { // pre-append URL with repetition info: var newEventsUri = eventsUri + '?type=' + $('#ffInput_repetition_type').val(); newEventsUri += '&skip=' + $('#ffInput_skip').val(); newEventsUri += '&ends=' + $('#ffInput_repetition_end').val(); newEventsUri += '&end_date=' + $('#ffInput_repeat_until').val(); newEventsUri += '&reps=' + $('#ffInput_repetitions').val(); newEventsUri += '&first_date=' + $('#ffInput_first_date').val(); newEventsUri += '&weekend=' + $('#ffInput_weekend').val(); // remove all event sources from calendar: calendar.fullCalendar('removeEventSources'); // add a new one: calendar.fullCalendar('addEventSource', newEventsUri); $('#calendarModal').modal('show'); return false; } function respondToRepetitionEnd() { var obj = $('#ffInput_repetition_end'); var value = obj.val(); switch (value) { case 'forever': $('#repeat_until_holder').hide(); $('#repetitions_holder').hide(); break; case 'until_date': $('#repeat_until_holder').show(); $('#repetitions_holder').hide(); break; case 'times': $('#repeat_until_holder').hide(); $('#repetitions_holder').show(); break; } } function respondToFirstDateChange() { // var obj = $('#ffInput_first_date'); var select = $('#ffInput_repetition_type'); var date = obj.val(); select.prop('disabled', true); // preselected value: var preSelected = currentRepType; if (preSelected === '') { preSelected = select.val(); } $.getJSON(suggestUri, {date: date, pre_select: preSelected, past: true}).fail(function () { console.error('Could not load repetition suggestions'); alert('Could not load repetition suggestions'); }).done(parseRepetitionSuggestions); } function parseRepetitionSuggestions(data) { var select = $('#ffInput_repetition_type'); select.empty(); var opt; for (var k in data) { if (data.hasOwnProperty(k)) { console.log('label: ' + data[k].label + ', selected: ' + data[k].selected); opt = $('