MCPcopy Create free account
hub / github.com/DHTMLX/scheduler / iterSet

Function iterSet

codebase/sources/dhtmlxscheduler.js:17900–17958  ·  view source on GitHub ↗
(iterResult, _rrule, _exrule, _rdate, _exdate, tzid)

Source from the content-addressed store, hash-verified

17898 return RRule2;
17899 }();
17900 function iterSet(iterResult, _rrule, _exrule, _rdate, _exdate, tzid) {
17901 var _exdateHash = {};
17902 var _accept = iterResult.accept;
17903 function evalExdate(after, before) {
17904 _exrule.forEach(function(rrule) {
17905 rrule.between(after, before, true).forEach(function(date) {
17906 _exdateHash[Number(date)] = true;
17907 });
17908 });
17909 }
17910 _exdate.forEach(function(date) {
17911 var zonedDate2 = new DateWithZone(date, tzid).rezonedDate();
17912 _exdateHash[Number(zonedDate2)] = true;
17913 });
17914 iterResult.accept = function(date) {
17915 var dt = Number(date);
17916 if (isNaN(dt))
17917 return _accept.call(this, date);
17918 if (!_exdateHash[dt]) {
17919 evalExdate(new Date(dt - 1), new Date(dt + 1));
17920 if (!_exdateHash[dt]) {
17921 _exdateHash[dt] = true;
17922 return _accept.call(this, date);
17923 }
17924 }
17925 return true;
17926 };
17927 if (iterResult.method === "between") {
17928 evalExdate(iterResult.args.after, iterResult.args.before);
17929 iterResult.accept = function(date) {
17930 var dt = Number(date);
17931 if (!_exdateHash[dt]) {
17932 _exdateHash[dt] = true;
17933 return _accept.call(this, date);
17934 }
17935 return true;
17936 };
17937 }
17938 for (var i = 0; i < _rdate.length; i++) {
17939 var zonedDate = new DateWithZone(_rdate[i], tzid).rezonedDate();
17940 if (!iterResult.accept(new Date(zonedDate.getTime())))
17941 break;
17942 }
17943 _rrule.forEach(function(rrule) {
17944 iter(iterResult, rrule.options);
17945 });
17946 var res = iterResult._result;
17947 sort(res);
17948 switch (iterResult.method) {
17949 case "all":
17950 case "between":
17951 return res;
17952 case "before":
17953 return res.length && res[res.length - 1] || null;
17954 case "after":
17955 default:
17956 return res.length && res[0] || null;
17957 }

Callers 1

dhtmlxscheduler.jsFile · 0.70

Calls 3

evalExdateFunction · 0.70
iterFunction · 0.70
sortFunction · 0.70

Tested by

no test coverage detected