App-Dochazka-WWW

 view release on metacpan or  search on metacpan

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

        prepSchedIntvl = function (dow, uint) {
            // given schedule interval entered by user (e.g. "8-12:30"),
            // convert it into a string suitable for passing to the
            // 'schedule/new' REST API resource
            var dow_map = {
                    'mon': '2015-03-23',
                    'tue': '2015-03-24',
                    'wed': '2015-03-25',
                    'thu': '2015-03-26',
                    'fri': '2015-03-27',
                    'sat': '2015-03-28',
                    'sun': '2015-03-29',
                },
                tsr = uint.split('-');
            return "["  + dow_map[dow.toLowerCase()] + " " + tsr[0] +
                   ", " + dow_map[dow.toLowerCase()] + " " + tsr[1] + ")";
        },

        schedGen = function (mode, schedObj) {
            var rest = {
                    "path": 'schedule/sid/' + schedObj.sid,
                    "body": schedObj
                },
                dispMsg,
                sc = function (st) {
                    if (mode === "edit") {
                        dispMsg = "Edited schedule saved";
                        if (stack.grep('schedLookup')) {
                            stack.unwindToTarget('actionSchedLookup', {
                                "searchKeySchedID": schedObj.sid
                            });
                        } else if (stack.grep('simpleScheduleBrowser')) {
                            var obj = coreLib.dbrowserState.set[coreLib.dbrowserState.pos];
                            $.extend(coreLib.dbrowserState.obj, schedObj);
                            $.extend(obj, schedObj);
                            stack.unwindToTarget('simpleScheduleBrowser');
                        } else if (stack.grep('schedDisplay')) {
                            stack.unwindToTarget('schedDisplay', schedObj);
                        } else {
                            dispMsg = "Don't know what to do here";
                        }
                    } else if (mode === "delete") {
                        dispMsg = "Schedule deleted";
                        if (browsing) {
                            var set = coreLib.dbrowserState.set,
                                pos = coreLib.dbrowserState.pos,
                                len = set.length;
                            set.splice(pos, 1);
                            if (pos > 0) {
                                coreLib.dbrowserState.pos -= 1;
                            }
                        }
                        stack.unwindToFlag();
                    }
                    coreLib.displayResult(dispMsg);
                },
                fc = function (st) {
                    coreLib.displayError(st.payload.message);
                };
            if (mode === 'edit') {
                rest.method = 'PUT';
            } else if (mode === 'delete') {
                rest.method = 'DELETE';
            }
            ajax(rest, sc, fc);
        };

    // here is where we define methods implementing the various
    // schedule-related actions (see daction-start.js)
    return {
        actionDisplaySchedule: actionDisplaySchedule,
        actionSchedLookup: actionSchedLookup,
        browseAllSchedules: browseAllSchedules,
        createSchedule: createSchedule,
        prepSchedIntvl: prepSchedIntvl,
        schedEditSave: function (obj) {
            schedGen('edit', obj);
        },
        schedReallyDelete: function (obj) {
            schedGen('delete', obj);
        },
    };

});



( run in 1.516 second using v1.01-cache-2.11-cpan-5b529ec07f3 )