403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/calendar/counters/src/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/calendar/counters/src/counters.js
import { Loc } from 'main.core';
import { CounterPanel } from 'ui.counterpanel';
import { EventEmitter } from 'main.core.events';

export class Counters extends CounterPanel
{
	static TYPE_INVITATION = 'invitation';
	static TYPE_GROUP_INVITATION_TPL = 'calendar_group_invites_\\d';

	constructor(options)
	{
		super({
			target: options.countersWrap,
			items: Counters.getCountersValue(options.counters),
			multiselect: false,
		});

		this.search = options.search;
		this.userId = options.userId;
		this.counters = options.counters;
		this.countersWrap = options.countersWrap;

		this.bindEvents();
	}

	bindEvents(): void
	{
		EventEmitter.subscribe('BX.UI.CounterPanel.Item:activate', this.onActivateItem.bind(this));
		EventEmitter.subscribe('BX.UI.CounterPanel.Item:deactivate', this.onDeactivateItem.bind(this));
		EventEmitter.subscribe('BX.Main.Filter:apply', this.onFilterApply.bind(this));
	}

	onActivateItem(event): void
	{
		const item = event.getData();
		const shouldSetPreset = item.id === Counters.TYPE_INVITATION
			|| Counters.checkCounterIsForGroup(item.id)
		;

		if (shouldSetPreset)
		{
			this.search.setPresetInvitation();
		}
	}

	onDeactivateItem(): void
	{
		this.search.resetPreset();
	}

	recalculateCounters(): void
	{
		Object.entries(this.counters).forEach(([code, data]): void => {
			const item = this.getItemById(code);
			item?.updateValue(data.value);
			item?.updateColor(data.color);
		});
	}

	markCounters(): void
	{
		Object.entries(this.counters).forEach(([code, data]): void => {
			const item = this.getItemById(code);

			if (
				item.id === 'invitation'
				|| item.id.includes('calendar_group_invites_')
			)
			{
				this.fields.MEETING_STATUS === 'Q'
					? item.activate(false)
					: item.deactivate(false)
				;
			}
		});
	}

	setCountersValue(counters): void
	{
		this.counters = counters;
		this.recalculateCounters();
	}

	onFilterApply(): void
	{
		this.fields = this.search.filter.getFilterFieldsValues();
		this.markCounters();
	}

	static checkCounterIsForGroup(counterName: string): boolean
	{
		return new RegExp(Counters.TYPE_GROUP_INVITATION_TPL).test(counterName);
	}

	static getCountersValue(counters): Object
	{
		return Object.entries(counters).map(([code, item]) => {
			return {
				id: code,
				title: Counters.getCountersName(code),
				value: item.value,
				color: item.color,
			};
		});
	}

	static getCountersName(type: string): string | null
	{
		if (
			type === Counters.TYPE_INVITATION
			|| Counters.checkCounterIsForGroup(type)
		)
		{
			return Loc.getMessage('EC_COUNTER_INVITATION');
		}

		return null;
	}

	static getCounterNameByGroupId(groupId: number): string
	{
		return Counters.TYPE_GROUP_INVITATION_TPL.replace('\\d', groupId);
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit