(scheduler2)
| 230 | }); |
| 231 | } |
| 232 | function 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 | } |
no test coverage detected