App-Dochazka-WWW

 view release on metacpan or  search on metacpan

share/js/dochazka-www/viewer.js  view on Meta::CPAN

                        }
                    } else if (st.code === 'DISPATCH_NO_SCHEDULED_INTERVALS_IDENTIFIED') {
                        // do nothing, for the time being
                    } else {
                        throw "unexpected \"interval/scheduled\" status code " + st.code;
                    }
                    $('#dcallback').html(entryPoint(obj));
                };
            ajax(rest, sc);
            return null;
        },

        holidayOrWeekend = function (d) {
            var rv = false;
            // returns true if a given date is a holiday or weekend
            if (haw.hasOwnProperty(d)) {
                if (haw[d].hasOwnProperty('holiday') && haw[d].holiday) {
                    rv = true;
                }
                if (haw[d].hasOwnProperty('weekend') && haw[d].weekend) {
                    rv = true;
                }
            } else {
                throw "haw lookup failed (unexpectedly) for key " + d;
            }
            return rv;
        },

        initializeStore = function (pl) {
            // by "Store" here, I mean "haw" and "sortedDates"
            var date, i;
            haw = $.extend({}, pl);
            sortedDates = Object.keys(haw).sort();
            for (i = 0; i < sortedDates.length; i += 1) {
                date = sortedDates[i];
                if (! haw[date].hasOwnProperty('scheduled')) {
                    haw[date].scheduled = [];
                }
                if (! haw[date].hasOwnProperty('clocked')) {
                    haw[date].clocked = [];
                }
            }
        }
        ;

    return {

        'multiDayViewer': function (obj) {
            var i,
                tsr = '[ ' + obj.beginDate + ' 00:00, ' + obj.endDate + ' 23:59 )',
                date, tr, aid,
                rest = {
                    "method": "GET",
                    "path": "holiday/" + tsr,
                },
                sc = function (st) {
                    if (st.code === 'DOCHAZKA_HOLIDAYS_AND_WEEKENDS_IN_TSRANGE') {
                        initializeStore(st.payload);
                        for (i = 0; i < obj.intervals.length; i += 1) {
                            aid = obj.intervals[i].aid;
                            [date, tr] = [obj.intervals[i].iNdate, obj.intervals[i].iNtimerange];
                            haw[date].clocked.push({"iNtimerange": tr, "aid": aid});
                        }
                        addScheduledIntervals(obj);
                    } else {
                        throw "unexpected holidays status code " + st.code;
                    }
                };
            ajax(rest, sc);
            return null;
        },

    };
    
});



( run in 0.920 second using v1.01-cache-2.11-cpan-acf6aa7dc9e )