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

Function limitPlugin

codebase/sources/dhtmlxscheduler.js:236–1037  ·  view source on GitHub ↗
(scheduler2)

Source from the content-addressed store, hash-verified

234 });
235 }
236 function limitPlugin(scheduler2) {
237 scheduler2.config.mark_now = true;
238 scheduler2.config.display_marked_timespans = true;
239 scheduler2.config.overwrite_marked_timespans = true;
240 var dhx_time_block = "dhx_time_block";
241 var default_timespan_type = "default";
242 var fix_options = function(options, days, zones) {
243 if (days instanceof Date && zones instanceof Date) {
244 options.start_date = days;
245 options.end_date = zones;
246 } else {
247 options.days = days;
248 options.zones = zones;
249 }
250 return options;
251 };
252 var get_resulting_options = function(days, zones, sections) {
253 var options = typeof days == "object" ? days : { days };
254 options.type = dhx_time_block;
255 options.css = "";
256 if (zones) {
257 if (sections)
258 options.sections = sections;
259 options = fix_options(options, days, zones);
260 }
261 return options;
262 };
263 scheduler2.blockTime = function(days, zones, sections) {
264 var options = get_resulting_options(days, zones, sections);
265 return scheduler2.addMarkedTimespan(options);
266 };
267 scheduler2.unblockTime = function(days, zones, sections) {
268 zones = zones || "fullday";
269 var options = get_resulting_options(days, zones, sections);
270 return scheduler2.deleteMarkedTimespan(options);
271 };
272 scheduler2.checkInMarkedTimespan = function(ev, timespan_type, on_overlap) {
273 timespan_type = timespan_type || default_timespan_type;
274 var res = true;
275 var temp_start_date = new Date(ev.start_date.valueOf());
276 var temp_end_date = scheduler2.date.add(temp_start_date, 1, "day");
277 var timespans = scheduler2._marked_timespans;
278 for (; temp_start_date < ev.end_date; temp_start_date = scheduler2.date.date_part(temp_end_date), temp_end_date = scheduler2.date.add(temp_start_date, 1, "day")) {
279 var day_value = +scheduler2.date.date_part(new Date(temp_start_date));
280 var day_index = temp_start_date.getDay();
281 var zones = getZones(ev, timespans, day_index, day_value, timespan_type);
282 if (zones) {
283 for (var i = 0; i < zones.length; i += 2) {
284 var eventStart = scheduler2._get_zone_minutes(temp_start_date);
285 var eventEnd = ev.end_date > temp_end_date || ev.end_date.getDate() != temp_start_date.getDate() ? 1440 : scheduler2._get_zone_minutes(ev.end_date);
286 var markerStart = zones[i];
287 var markerEnd = zones[i + 1];
288 if (markerStart < eventEnd && markerEnd > eventStart) {
289 if (typeof on_overlap == "function") {
290 res = on_overlap(ev, eventStart, eventEnd, markerStart, markerEnd);
291 } else {
292 res = false;
293 }

Callers 1

initPluginsFunction · 0.70

Calls 15

get_resulting_optionsFunction · 0.70
getZonesFunction · 0.70
addMarkedTimespanMethod · 0.65
deleteMarkedTimespanMethod · 0.65
addMethod · 0.65
date_partMethod · 0.65
isOneDayEventMethod · 0.65
checkInMarkedTimespanMethod · 0.65
checkEventMethod · 0.65
callEventMethod · 0.65
invertZonesMethod · 0.65
uidMethod · 0.65

Tested by

no test coverage detected