<?= $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(); ?>
|