/*
 * Copyright (C) 2013-2021 Combodo SARL
 *
 * This file is part of iTop.
 *
 * iTop is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * iTop is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 */

;
$(function () {
	$.widget('itop.dashlet_badge',
		{
			options: {},
			js_selectors:
				{
					dashlet_container: '[data-role="ibo-dashlet"]',
					dashlet_actions: '[data-role="ibo-dashlet-badge--actions"]',
					dashlet_action_list: '[data-role="ibo-dashlet-badge--action-list"]'
				},
			$dashlet_container: null,

			_create: function () {
				this.$dashlet_container = $(
					this.element
						.parents(this.js_selectors.dashlet_container)
						.get(-1)
				);

				this._setStyle();
				this._bindEvents();
			},
			// events bound via _bind are removed automatically
			// revert other modifications here
			_destroy: function () {
			},
			_setStyle: function () {
				this.$dashlet_container.css("cursor", "pointer");
			},
			_bindEvents: function () {
				const me = this;

				this.$dashlet_container.on('click', function (oEvent) {
					me._onComponentClick(oEvent);
				});
			},
			_onComponentClick: function (oEvent) {
				let $eventTarget = $(oEvent.target);

				if ($eventTarget.is(this.js_selectors.dashlet_actions)) {
					return;
				}

				let $listLink = $eventTarget
					.closest(this.js_selectors.dashlet_container)
					.find(this.js_selectors.dashlet_action_list);
				$listLink[0].click();
			}
		})
});
