169 lines
10 KiB
HTML
169 lines
10 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="pl">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>bookmeterplus Project</title>
|
|
<style>
|
|
[x-cloak] {
|
|
display: none;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<div x-data="bookmeterList">
|
|
<div x-cloak>
|
|
<form class="flex items-center m-2" x-show="!advancedSearch">
|
|
<div class="relative w-full d-block max-w-md ">
|
|
<div class="absolute inset-y-0 start-0 flex items-center ps-3 pointer-events-none">
|
|
<svg class="w-4 h-4 text-gray-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 21 21">
|
|
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m19 19-4-4m0-7A7 7 0 1 1 1 8a7 7 0 0 1 14 0Z"/>
|
|
</svg>
|
|
</div>
|
|
<input type="text" class="peer bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:outline focus:outline-sky-500 block w-full ps-10 p-2.5 pr-8"
|
|
x-model="nameFilter" placeholder="wyszukiwarka"/>
|
|
<button x-show="nameFilter.length" @click="nameFilter=''" type="button" class="absolute inset-y-0 end-0 flex items-center pe-3 invisible peer-valid:visible">
|
|
<svg class="w-4 h-4 text-gray-500 " xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
<div class="relative inline-block m-4 text-blue-400 inline cursor-pointer">
|
|
<div @click="advancedSearch = true">zaawansowane filtrowanie</div>
|
|
</div>
|
|
</form>
|
|
<div x-show="advancedSearch" class="flex m-4">
|
|
<div class="relative w-full d-block max-w-xs mr-2">
|
|
<input x-model="username" placeholder="użytkownik" type="text" class="peer mr-2 max-w-xs bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:outline focus:outline-sky-500 block w-full p-2.5 px-4" />
|
|
<button x-show="username.length" @click="username=''" type="button" class="absolute inset-y-0 end-0 flex items-center pe-3 invisible peer-valid:visible">
|
|
<svg class="w-4 h-4 text-gray-500 " xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
<div class="relative w-full d-block max-w-xs mr-2">
|
|
<input x-model="title" placeholder="tytuł" type="text" class="peer mr-2 max-w-xs bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:outline focus:outline-sky-500 block w-full p-2.5 px-4" />
|
|
<button x-show="title.length" @click="title=''" type="button" class="absolute inset-y-0 end-0 flex items-center pe-3 invisible peer-valid:visible">
|
|
<svg class="w-4 h-4 text-gray-500 " xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
<div class="relative w-full d-block max-w-xs mr-2">
|
|
<input x-model="author" placeholder="autor" type="text" class="peer mr-2 max-w-xs bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:outline focus:outline-sky-500 block w-full p-2.5 px-4" />
|
|
<button x-show="author.length" @click="author=''" type="button" class="absolute inset-y-0 end-0 flex items-center pe-3 invisible peer-valid:visible">
|
|
<svg class="w-4 h-4 text-gray-500 " xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
<div class="relative w-full d-block max-w-xs mr-2">
|
|
<input x-model="publisher" placeholder="wydawca" type="text" class="peer mr-2 max-w-xs bg-gray-50 border border-gray-300 text-gray-900 text-sm rounded-lg focus:outline focus:outline-sky-500 block w-full p-2.5 px-4" />
|
|
<button x-show="publisher.length" @click="author=''" type="button" class="absolute inset-y-0 end-0 flex items-center pe-3 invisible peer-valid:visible">
|
|
<svg class="w-4 h-4 text-gray-500 " xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18 18 6M6 6l12 12"/>
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
|
|
<div class="inline-block m-2 text-blue-400 inline cursor-pointer">
|
|
<div @click="advancedSearch = false">proste filtrowanie</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<table class="table table-fixed w-full text-sm">
|
|
<thead>
|
|
<tr>
|
|
<th class="text-right pl-1 w-[4rem]">#</th>
|
|
<th class="text-left pl-1">Uzytkownik</th>
|
|
<th class="text-left pl-1">Tytuł</th>
|
|
<th class="text-left pl-1">Autor</th>
|
|
<th class="text-left pl-1">Wydawca</th>
|
|
<th class="text-right pr-4 w-[7rem]">Stron</th>
|
|
<th class="text-left pl-1 w-[12rem]">Format</th>
|
|
<th class="text-right w-[5rem]">Ocena</th>
|
|
<th class="text-right pr-4 w-[5rem]">⚡</th>
|
|
<th class="text-left pl-1 w-[5rem]">Link</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<template x-for="(item, key) in filteredItems" :key="item.index">
|
|
<tr class="border-b border-slate-100 m-3 w-auto hover:bg-gray-100">
|
|
<td class="pl-1 text-right" x-text="filteredItems.length-key"></td>
|
|
<td class="pl-1 w-3 py-2">
|
|
<template x-if="!advancedSearch">
|
|
<a @click="nameFilter='@'+item.username" class="cursor-pointer" x-text="item.username"></a>
|
|
</template>
|
|
<template x-if="advancedSearch">
|
|
<a @click="username=item.username" class="cursor-pointer" x-text="item.username"></a>
|
|
</template>
|
|
</td>
|
|
<td class="pl-1 w-12">
|
|
<template x-if="!advancedSearch">
|
|
<a @click="nameFilter=item.book.title" class="cursor-pointer" x-text="item.book.title"></a>
|
|
</template>
|
|
<template x-if="advancedSearch">
|
|
<a @click="title=item.book.title" class="cursor-pointer" x-text="item.book.title"></a>
|
|
</template>
|
|
</td>
|
|
<td class="pl-1 w-8">
|
|
<template x-if="!advancedSearch">
|
|
<a @click="nameFilter=item.book.author" class="cursor-pointer" x-text="item.book.author"></a>
|
|
</template>
|
|
<template x-if="advancedSearch">
|
|
<a @click="author=item.book.author" class="cursor-pointer" x-text="item.book.author"></a>
|
|
</template>
|
|
</td>
|
|
<td class="pl-1 w-8">
|
|
<template x-if="!advancedSearch">
|
|
<a @click="nameFilter=item.book.publisher" class="cursor-pointer" x-text="item.book.publisher"></a>
|
|
</template>
|
|
<template x-if="advancedSearch">
|
|
<a @click="publisher=item.book.publisher" class="cursor-pointer" x-text="item.book.publisher"></a>
|
|
</template>
|
|
</td>
|
|
<td class="pr-4 text-right w-[5rem] w-[5rem]"><a :href="item.book.pages" x-text="item.book.pages"></a></td>
|
|
<td class="pl-1"><a :href="item.book.format" x-text="item.book.format"></a></td>
|
|
<td class="text-right"><a :href="item.book.rating" x-text="item.book.rating"></a></td>
|
|
<td class="pr-4 text-right"><a :href="item.book.likes" x-text="item.likes"></a></td>
|
|
<td class="pl-1 py-2">
|
|
<a :href="'https://www.hejto.pl/wpis/'+item.slug">
|
|
link
|
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" class="w-4 h-4 text-gray-500 inline">
|
|
<path stroke-linecap="round" stroke-linejoin="round"
|
|
d="M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"/>
|
|
</svg>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
</template>
|
|
</tbody>
|
|
<tfoot>
|
|
<tr x-show="filteredItems.length">
|
|
<td colspan="4"></td>
|
|
<td class="align-top" colspan="2">
|
|
<p class="text-right pr-4" x-text="'strony: '+stats().pages_total"></p>
|
|
<p class="text-right pr-4" x-text="'strony śr: '+stats().pages_avg"></p>
|
|
</td>
|
|
<td class="align-top">
|
|
<template x-for="(item, index) in stats().formats">
|
|
<p x-text="index+': '+item"></p>
|
|
</template>
|
|
</td>
|
|
<td class="align-top">
|
|
<p class="text-right" x-text="'ocena śr: '+stats().rating_avg"></p>
|
|
</td>
|
|
<td>
|
|
<p class="text-right" x-text="'⚡: '+stats().likes_total"></p>
|
|
<p class="text-right" x-text="'⚡ śr: '+stats().likes_avg"></p>
|
|
</td>
|
|
<td></td>
|
|
</tr>
|
|
</tfoot>
|
|
</table>
|
|
</div>
|
|
<script type="module" src="/src/main.js"></script>
|
|
</body>
|
|
</html> |