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

Function limitPlugin

codebase/sources/dhtmlxscheduler.es.js:232–1033  ·  view source on GitHub ↗
(scheduler2)

Source from the content-addressed store, hash-verified

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

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