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

Function iterSet

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

Source from the content-addressed store, hash-verified

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

Callers 1

Calls 3

evalExdateFunction · 0.70
iterFunction · 0.70
sortFunction · 0.70

Tested by

no test coverage detected