<?= $this->extend("base"); ?> 
 
<?= $this->section("title"); ?>Task<?= $this->endSection(); ?> 
 
<?= $this->section("content"); ?> 
 
<h1 class="title">Tasks</h1> 
 
<div class="mb-4"> 
    <a class="button is-link" href="<?= site_url('/tasks/new'); ?>">Add a task</a> 
</div> 
 
<div class="field"> 
    <label class="label" for="query">Search</label> 
    <div class="control"> 
        <input class="input" name="query" id="query" /> 
    </div> 
</div> 
<div class="content"> 
    <?php if ($tasks) : ?> 
        <ul> 
            <?php foreach ($tasks as $task) : ?> 
                <li><a href="<?= site_url('/tasks/show/' . $task->id); ?>"> 
                        <?= $task->description; ?> 
                    </a> 
                </li> 
            <?php endforeach; ?> 
        </ul> 
        <?= $pages->simpleLinks(); ?> 
    <?php else : ?> 
        <p class="is-medium">There are no tasks</p> 
    <?php endif; ?> 
</div> 
 
<script src="<?= site_url('/js/auto-complete.min.js') ?>"></script> 
 
<script> 
    var searchUrl = "<?= site_url('/tasks/search?q=') ?>"; 
    var showTask = "<?= site_url('/tasks/show/') ?>"; 
    var data; 
    var i; 
 
    var searchAutoComplete = new autoComplete({ 
        selector: 'input[name="query"]', 
        cache: false, 
        source: function(term, response) { 
            var request = new XMLHttpRequest(); 
 
            request.open('GET', searchUrl + term, true); 
 
            request.onload = function() { 
                data = JSON.parse(this.response); 
 
                i = 0; 
 
                var suggestion = data.map(task => task.description); 
 
                response(suggestion); 
            }; 
 
            request.send(); 
        }, 
        renderItem: function(item, search) { 
            var id = data[i].id; 
 
            i++; 
 
            return '<div class="autocomplete-suggestion" data-id="' + id + '">' + item + '</div>'; 
        }, 
        onSelect: function(e, term, item) { 
            window.location.href = showTask + item.getAttribute('data-id'); 
        } 
    }); 
</script> 
 
<?= $this->endSection(); ?>
 
 |