App-Dochazka-WWW
view release on metacpan or search on metacpan
share/js/dochazka-www/int-lib.js view on Meta::CPAN
});
return false;
}
return true;
},
createMultipleIntSave = function (obj) {
var cu = currentUser('obj'),
daylist = $('input[id="iNdaylist"]').val(),
month = $('input[id="iNmonth"]').val(),
year = $('input[id="iNyear"]').val(),
dl = daylist.split(','),
i, rest, sc, fc;
// validate activity
if (obj.code) {
console.log("Looking up activity " + obj.code + " in cache");
i = appCaches.getActivityByCode(obj.code);
if (! i) {
coreLib.displayError('Activity ' + obj.code + ' not found');
return null;
}
obj.aid = i.aid;
} else {
coreLib.displayError("Interval activity code missing");
return null;
}
// validate day list
if (! coreLib.isArray(dl) || dl.length === 0) {
coreLib.displayError("Invalid day list");
return null;
}
for (i = 0; i < dl.length; i += 1) {
dl[i] = year + '-' + dt.monthToInt(month) + '-' + dl[i];
}
console.log("Date list", dl);
rest = {
"method": "POST",
"path": "interval/fillup",
"body": {
'date_list': dl,
'dry_run': '0',
'eid': String(cu.eid),
'aid': obj.acTaid,
},
};
sc = function (st) {
if (st.code === "DISPATCH_FILLUP_INTERVALS_CREATED") {
coreLib.displayResult(
st.payload.success.intervals.length + " intervals created; " +
st.payload.failure.intervals.length + " intervals failed"
);
} else if (st.code === "DISPATCH_FILLUP_NO_INTERVALS_CREATED") {
coreLib.displayResult("The dates in question already have 100% schedule fulfillment");
} else {
coreLib.displayError(st.text);
}
};
ajax(rest, sc);
},
createSingleIntMenuItem = function (obj) {
stack.push('createSingleInt');
},
createSingleIntSave = function (obj) {
var caller = stack.getTarget().name,
cu = currentUser('obj'),
rest,
sc = function (st) {
if (caller === 'createSingleIntFixedDay') {
stack.unwindToTarget('viewIntervalsAction');
} else {
stack.unwindToTarget(
'createSingleInt',
emptyObj,
{
"resultLine": "Interval " + st.payload.iid + " created",
"inputId": "iNdate",
}
);
}
};
console.log("Entering createSingleIntSave() from caller " + caller + " with obj", obj);
if (caller === 'createSingleInt' || caller === 'createSingleIntFixedDay') {
// obj already populated
} else if (caller === 'createLastPlusOffset' || caller === 'createNextScheduled') {
// Scrape time range from form
// (The "createLastPlusOffset" dform has no inputs (writable
// entries); instead, it has spans (read-only entries) that are
// populated asynchronously and obj does not contain any of
// the new values. In this case, the time range is residing
// in one of the spans.)
// Scrape time range from form
obj.iNdate = $('input[id="iNdate"]').val();
obj.iNtimerange = $('input[id="iNtimerange"]').val();
obj.code = $('input[id="iNact"]').val();
obj.long_desc = $('input[id="iNdesc"]').val();
} else {
console.log("CRITICAL ERROR: unexpected caller", caller);
return null;
}
if (obj.iNtimerange === '+') {
stack.push('createNextScheduled', obj);
return null;
}
if (obj.iNtimerange.match(/\+/)) {
obj.iNoffset = obj.iNtimerange;
stack.push('createLastPlusOffset', obj);
return null;
}
if (! createIntervalCheckMandatoryProps(obj)) {
return null;
}
obj["intvl"] = genIntvl(obj.iNdate, obj.iNtimerange);
if (! obj.intvl) {
return null;
}
rest = {
"method": 'POST',
"path": 'interval/new',
"body": {
share/js/dochazka-www/int-lib.js view on Meta::CPAN
},
fc = function (st) {
var opts = { "resultLine": st.payload.message };
if (st.code === 'DISPATCH_NOTHING_IN_TSRANGE' ) {
if (multipleDates) {
opts['xtarget'] = 'viewIntervalsPrep'; // so we don't land in viewIntervalsAction
obj = {
"beginDate": begin,
"endDate": end,
"intervals": [],
};
stack.push('multiDayViewer', obj, opts);
} else {
stack.pop(undefined, opts);
}
} else {
opts.resultLine += ' (unexpected status code ' + st.code + ')';
stack.pop(undefined, opts);
}
};
[begin, end] = viewIntervalsActionCache();
multipleDates = (begin === end) ? false : true;
rest = {
"method": 'GET',
"path": 'interval/eid/' + cu.eid + "/[" + String(begin) + " 00:00, " + String(end) + " 24:00 )",
};
ajax(rest, sc, fc);
},
viewIntervalsCache = [],
viewIntervalsMultiDayCallback = function (obj, title, preamble) {
var i, r = '';
preamble = preamble
.replace(/\[BEGIN\]/, obj.beginDate)
.replace(/\[END\]/, obj.endDate);
r += "<b>" + title + "</b><br><br>";
r += preamble + "<br><br>";
return r;
},
viewIntervalsMultiDayCallbackRaw = function (obj) {
var r = '';
r += "<pre>";
if (typeof obj === 'object') {
r += JSON.stringify(obj, null, 2);
} else if (typeof obj === 'string') {
r += obj;
} else {
console.log("viewIntervalsMultiDayCallbackRaw(): CRITICAL ERROR: bad object", obj);
r += 'ERROR<br>';
}
r += "</pre><br>";
return r;
}
;
// here is where we define methods implementing the various
// interval-related actions (see daction-start.js)
return {
createMultipleIntSave: createMultipleIntSave,
createSingleIntMenuItem: createSingleIntMenuItem,
createSingleIntSave: createSingleIntSave,
deleteSingleInt: deleteSingleInt,
vetDayList: vetDayList,
vetDayRange: vetDayRange,
updateSingleIntSave: updateSingleIntSave,
viewIntervalsAction: viewIntervalsAction,
viewIntervalsMultiDayCallback: viewIntervalsMultiDayCallback,
viewIntervalsMultiDayCallbackRaw: viewIntervalsMultiDayCallbackRaw,
};
});
( run in 1.102 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )