smartinmedia/cunity

View on GitHub
lib/modules/Events/styles/javascript/events.js

Summary

Maintainability
A
3 hrs
Test Coverage
var currentDate = "NOW", currentTime = "", calendar = null, calendarview = "calendar";
$(document).ready(function () {
    $("#createEvent").on("shown.bs.modal", function () {
        $('#createEvent .input-group.date').datepicker({
            startDate: "now",
            autoclose: true,
            todayHighlight: true
        });

        $("#createEvent .input-group.time > input[type='text']").timepicker({
            template: false,
            showInputs: false,
            showMeridian: false
        });

        $("#createEventForm").bootstrapValidator({
            feedbackIcons: {
                valid: 'fa fa-check',
                invalid: 'fa fa-times',
                validating: 'fa fa-refresh'
            },
            message: "This field cannot be blank!",
            submitButtons: "button[type='submit'],input[type='submit']",
            fields: {
                title: {
                    validators: {
                        stringLength: {
                            min: 3,
                            message: "Your title is too short (min. 3 chars)"
                        }
                    }
                },
                date: {
                    validators: {
                        stringLength: {
                            min: 3,
                            message: "The date must be filled in"
                        }
                    }
                },
                time: {
                    validators: {
                        stringLength: {
                            min: 3,
                            message: "The time must be filled in"
                        }
                    }
                }
            }
        });

        $('#datepicker').on('changeDate', function () {
            $('#createEventForm').data('bootstrapValidator').updateStatus('date', 'NOT_VALIDATED', null).validateField('date');
            $('#datepicker').change();
        });
    });

    $("#createEvent .input-group.date").on("changeDate", function (e) {
        currentDate = e.format(0, "yyyy-mm-dd");
        $("#startDate").val(currentDate + ' ' + currentTime);
    });
    $("#createEvent .input-group.time > input[type='text']").on("changeTime.timepicker", function (e) {
        currentTime = e.time.hours + ':' + e.time.minutes + ':00';
        $("#startDate").val(currentDate + ' ' + currentTime);
    });


    $('button[data-calendar-nav]').each(function () {
        var $this = $(this);
        $this.click(function () {
            calendar.navigate($this.data('calendar-nav'));
            showCalendar();
        });

    });
    $(".cal-month-day,.cal-month-day-has-event span[data-cal-date]").unbind();
    $("label[data-calendar-view]").click(function () {
        $(".calendar-view").hide();
        $("#" + $(this).data("calendar-view")).show();
        calendarview = $(this).data("calendar-view");
        showCalendar();
    });
    calendar = $("#calendar").calendar({
        tmpl_path: siteurl + "lib/modules/Events/styles/tmpls/",
        events_source: convertUrl({module: "events", action: "loadEvents"}),
        onAfterViewLoad: function () {
            $('.calendar-month').text(this.getTitle());
            refreshTooltip();
        }
    });

    if (window.innerWidth < 768) {
        $(".calendar-view").hide();
        $("#list").show();
        showCalendar();
    } else
        showCalendar();
});

function showCalendar() {
    if (window.innerWidth < 768)
        calendarview = "list";
    if (calendarview == "calendar") {
        if (calendar == null) {

        }
    } else if (calendarview == "list") {
        var events = calendar.getEventsBetween(calendar.getStartDate(), calendar.getEndDate());
        $("#list > div.list").empty();
        var currentDay = {};
        currentDay.events = [];
        for (x = 0; x <= events.length; x++) {
            if (x < events.length)
                var d = moment(Number(events[x].start));
            if ((x == events.length || (typeof currentDay.date != "undefined" && d.date() != currentDay.date.date())) && currentDay.events.length > 0) {
                $("#list > div.list").append(tmpl("list-event", currentDay));
                currentDay.events = [];
            }
            if (typeof events[x] !== "undefined") {
                currentDay.date = moment(d);
                events[x].date = currentDay.date;
                currentDay.events.push(events[x]);
                console.log(currentDay);
            }
        }
        if ($("#list > div.list > div").length == 0)
            $("#list > div.alert").show();
        else
            $("#list > div.alert").hide();
        refreshTooltip();
    }
}

function eventCreated(res) {
    location.href=convertUrl({module:"events",action:res.id});
}