<?php
/*
 * OpenSTAManager: il software gestionale open source per l'assistenza tecnica e la fatturazione
 * Copyright (C) DevCode s.r.l.
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program 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 General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org/licenses/>.
 */

include_once __DIR__.'/../core.php';

$checklist_module = Modules::get('Checklists');
$checks_id = 'checklist_'.$id_module.'_'.$id_plugin;

echo '
<div id="'.$checks_id.'">
    <div class="box box-primary">
        <div class="box-header">
            <h3 class="box-title">'.tr('Checklist').'</h3>
        </div>
        <div class="box-body" style="position:relative">
            <div id="loading_'.$checks_id.'" class="text-center hide component-loader">
                <div>
                    <i class="fa fa-refresh fa-spin fa-3x fa-fw"></i>
                    <span class="sr-only">'.tr('Caricamento...').'</span>
                </div>
            </div>';

// Form per la creazione di una nuova checklist
if ($structure->permission == 'rw') {
    echo '
            <div class="row">
                <div class="col-md-12">
                    <a class="btn btn-sm btn-primary" data-href="'.$checklist_module->fileurl('components/add-check.php').'?id_module='.$id_module.'&id_record='.$id_record.'&id_plugin='.$id_plugin.'&manager_id='.$checks_id.'" data-toggle="tooltip" data-title="'.tr('Aggiungi check').'">
                        <i class="fa fa-plus"></i> '.tr('Nuova').'
                    </a>

                    <a class="btn btn-sm btn-primary" data-href="'.$checklist_module->fileurl('components/add-checklist.php').'?id_module='.$id_module.'&id_record='.$id_record.'&id_plugin='.$id_plugin.'&manager_id='.$checks_id.'" data-toggle="tooltip" data-title="'.tr('Aggiungi check').'">
                        <i class="fa fa-plus"></i> '.tr('Checklist predefinite').'
                    </a>
                </div>
            </div>

            <div class="clearfix"></div>
            <br>';
}

$checks = $structure->mainChecks($id_record);

echo '
            <ul class="todo-list checklist">';

    foreach ($checks as $check) {
        echo renderChecklist($check);
    }

    echo '
            </ul>
        </div>
    </div>
</div>';

echo '
<script>$(document).ready(init)</script>

<script type="module">
import Checklist from "./modules/checklists/js/checklist.js";

var checklists = checklists ? checklists : {};
$(document).ready(function() {
    checklists["'.$checks_id.'"] = new Checklist({
        id_module: "'.$id_module.'",
        id_plugin: "'.$id_plugin.'",
        id_record: "'.$id_record.'",
    }, "'.$checks_id.'");

    sortable(".checklist", {
        placeholder: "sort-highlight",
        handle: ".handle",
        forcePlaceholderSize: true,
        zIndex: 999999,
    })[0].addEventListener("sortupdate", function(e) {
        let order = $(".checklist > li[data-id]").toArray().map(a => $(a).data("id"))

        $.post(globals.rootdir + "/actions.php", {
            id_module: globals.id_module,
            id_plugin: "'.$id_plugin.'",
            id_record: globals.id_record,
                op: "ordina-checks",
            order: order.join(","),
        });
    });

    $(".checklist").todoList({
        onCheck: function () {
            var id = $(this).parent().data("id");

            checklists["'.$checks_id.'"].toggleCheck(id);
        },
        onUnCheck: function () {
            var id = $(this).parent().data("id");

            checklists["'.$checks_id.'"].toggleCheck(id);
        }
    });

    $(".check-delete").click(function(event){
        var li = $(this).closest("li");
        var id = li.data("id");

        swal({
            title: "'.tr("Rimuovere l'elemento della checklist?").'",
            html: "'.tr('Tutti gli elementi figli saranno rimossi di conseguenza. Continuare?').'",
            showCancelButton: true,
            confirmButtonText: "'.tr('Procedi').'",
            type: "error",
        }).then(function (result) {
            checklists["'.$checks_id.'"].deleteCheck(id);
        });

        event.stopPropagation();
    });
});
</script>';
