Newer
Older
smart-home-server / webclient / src / js / components / screens / areas / areas-details-modal.js
import { placeInArea } from "./areas-placeto-component.js";

export function areaDetailsModal(area, sh_api) {
	console.log("areaDetailsModal", area);

	return Modals.create("area-details-modal", {
		title: `<i class="ph ph-map-trifold normalize"></i> ${area.display_name}`,
		body: modal => {
			return `
				<div class="place-in-area-container"></div>
			`;
		},
		actions: modal => {
			const btnCancel = Helper.template.createElement("button", {
				class: "btn btn-primary"
			}, "Close");

			const btnRemove = Helper.template.createElement("button", {
				class: "btn btn-danger with-icon"
			}, `<i class="ph ph-trash"></i> Remove`);

			btnCancel.addEventListener("click", e => {
				modal.close();
			});

			btnRemove.addEventListener("click", e => {
				Helper.states.btnLoadingState(btnRemove, true);

				confirmPopup(
					`Are you sure you want to remove this area? <b>${area.display_name}</b>`, 
					() => {
						sh_api.areas.remove(
							area.id,
							(err, data, meta) => {
								
								Helper.states.btnLoadingState(btnRemove, false);
								console.log("Was removed");

								modal.close();
								Screens.reinit();

								setTimeout(() => {
									Toasts.createSuccess(
										"Removed",
										`Area: ${area.display_name}`
									).show();
								}, 300);
							}
						);
				}, 
				() => {
					Helper.states.btnLoadingState(btnRemove, false);
					console.log("CANCELED");
				});
			});

			return [ btnCancel, btnRemove ];
		},
		onready: modal => {
			placeInArea(
				sh_api,
				modal.querySelector(".place-in-area-container"),
				"area",
				area.id,
				area.parent_id
			);
		}
	});
}