dojo.provide('epages.cartridges.de_epages.calendar.widget.Datastore');
dojo.require('dijit._Widget');
dojo.require('epages.io.json');
dojo.require('epages.localize');
dojo.require('dojo.date.stamp');
dojo.declare(
"epages.cartridges.de_epages.calendar.widget.Datastore",
[dijit._Widget],
{
/**
* public properties
*/
url :'?',
objectId : undefined,
_dayLists : undefined,
_dateFormatsBO : undefined,
_dateFormatsSF : undefined,
postMixInProperties: function () {
this.inherited('postMixInProperties',arguments);
this._dayLists = {};
this._dateFormatsBO = {};
this._dateFormatsSF = {};
},
getDayList: function(date){
date = epages.localize.formatDateTime(date,epages.vars.Locale.datetimeFormat);
if(this._dayLists[date]){
return this._dayLists[date];
}
// load data from server
var json = new epages.io.Json;
var result = json.loadSync(this.url, {
'ViewAction': 'JSON-DayList',
'ObjectID': this.objectId,
'StartDate': date
});
if(!result.error){
var data = result.data;
this._dayLists[date] = data;
return data;
}else{
return false;
}
},
getDateFormats: function(request) {
var startDate = dojo.date.stamp.toISOString(request.startDate);
var endDate = dojo.date.stamp.toISOString(request.endDate);
var requestKey = request.objectId
+':'+ startDate
+':'+ endDate
+':'+ request.available
+':'+request.requestedMinutes;
if(this._dateFormatsBO[requestKey]){
return this._dateFormatsBO[requestKey];
}
else {
var me = this;
var json = new epages.io.Json;
var result = json.loadSync(this.url,{
'ViewAction': 'JSON-BO-AppointmentCalendar',
'ObjectID': request.objectId,
'StartDate': startDate,
'EndDate': endDate,
'Available': request.available,
'RequestedMinutes' : request.requestedMinutes
//'Requested': request.requested
});
if(!result.error){
this._dateFormatsBO[requestKey] = result.data;
return result.data;
}
return false;
}
},
getDateFormatsSF: function(request){
var key = request.objectId
+':'+dojo.date.stamp.toISOString(request.startDate)
+':'+dojo.date.stamp.toISOString(request.endDate)
+':'+request.available
+':'+request.requestedMinutes;
if(this._dateFormatsSF[key]){
var result = this._dateFormatsSF[key];
dojo.publish(this.id+'/load',[result,dojo.date.stamp.toISOString(request.startDate)]);
}
else {
var me = this;
var json = new epages.io.Json;
json.loadAsync(this.url,
function(result){
me._dateFormatsSF[key] = result.data;
dojo.publish(me.id+'/load',[result.data,dojo.date.stamp.toISOString(request.startDate)]);
}
,{
'ViewAction': 'JSON-AppointmentCalendar',
'ObjectID': request.objectId,
'StartDate': dojo.date.stamp.toISOString(request.startDate),
'EndDate': dojo.date.stamp.toISOString(request.endDate),
'Available': request.available,
'RequestedMinutes' : request.requestedMinutes
});
}
}
});