fix front pagination and search

This commit is contained in:
Julien Aldon
2026-01-13 15:26:11 +01:00
parent 959d4e7281
commit d5fc8142b2
5 changed files with 29 additions and 29 deletions

View File

@@ -1,7 +1,10 @@
SERVICE_ORIGIN DB_HOST=database
DB_HOST MARIADB_USER=root
MARIADB_USER # openssl rand -hex 32
SERVICE_SECRET_KEY SERVICE_SECRET_KEY=xxxx
MARIADB_PASSWORD # openssl rand -hex 12
MARIADB_ROOT_PASSWORD MARIADB_PASSWORD=xxxx
MARIADB_DATABASE # openssl rand -hex 12
MARIADB_ROOT_PASSWORD=xxxx
MARIADB_DATABASE=bookshelf
SERVICE_ORIGIN=http://localhost:8080

View File

@@ -3,27 +3,22 @@ Ce projet est un gestionnaire de base de données pour la bibliotèque de la mai
L'outil permet l'ajout, la modification, la suppression et de consulter les livres présents dans la base de donnée. L'outil permet l'ajout, la modification, la suppression et de consulter les livres présents dans la base de donnée.
## Deploiement ## Développement local
### Avec Docker Compose ### Avec Docker Compose
```sh ```sh
docker-compose up --build -d docker compose -f docker-compose.dev.yml down -v
docker compose -f docker-compose.dev.yml up
# Init database # Init database (if database not initialized)
docker-compose exec database mariadb -u root -p docker-compose exec database mariadb -u root -p
$>source /docker-entrypoint-initdb.d/*.sql $>source /docker-entrypoint-initdb.d/*.sql
# SSL https://certbot-dns-ovh.readthedocs.io/en/stable/
# Create certificates
certbot certonly --dns-ovh --dns-ovh-credentials ~/.secrets/certbot/ovh.ini -d home.aldon.fr
``` ```
# Set env variables inside secrets action ## Déploiement
```sh ```sh
SERVICE_ORIGIN # SSL https://certbot-dns-ovh.readthedocs.io/en/stable/
DB_HOST # Create certificates
SERVICE_SECRET_KEY certbot certonly --dns-ovh --dns-ovh-credentials ~/.secrets/certbot/ovh.ini -d bookshelf.aldon.fr
MARIADB_USER ```
MARIADB_PASSWORD ## TODO
MARIADB_ROOT_PASSWORD Change `front/src/config.js` : Variabilize `ROOT_FQDN`
MARIADB_DATABASE
```

View File

@@ -4,18 +4,18 @@
<button class="page" v-for="index in $store.getters.getBookCurrentPage + 1" :key="index">{{ index }}</button> <button class="page" v-for="index in $store.getters.getBookCurrentPage + 1" :key="index">{{ index }}</button>
</footer> </footer>
<footer v-else> <footer v-else>
<button @click="$store.dispatch('fetchPageBooks', {page: 0, nooption: false})" class="page"> {{ '<<' }} </button> <button @click="$store.dispatch('fetchPageBooks', {page: 0, nooption: false, ...$route.query})" class="page"> {{ '<<' }} </button>
<button <button
class="page" class="page"
:class="{ 'red': $store.getters.getBookCurrentPage - Math.max(0, Math.min($store.getters.getBookCurrentPage - 2, $store.getters.getBookPageNb - 5)) === index}" :class="{ 'red': $store.getters.getBookCurrentPage - Math.max(0, Math.min($store.getters.getBookCurrentPage - 2, $store.getters.getBookPageNb - 5)) === index}"
v-for="(n, index) in (Math.max(5, Math.min($store.getters.getBookCurrentPage + 2, $store.getters.getBookPageNb)) - Math.max(0, Math.min($store.getters.getBookCurrentPage - 2, $store.getters.getBookPageNb - 5)))" v-for="(n, index) in (Math.max(5, Math.min($store.getters.getBookCurrentPage + 2, $store.getters.getBookPageNb)) - Math.max(0, Math.min($store.getters.getBookCurrentPage - 2, $store.getters.getBookPageNb - 5)))"
:key="index" :key="index"
@click="$store.dispatch('fetchPageBooks', {page: Math.max(0, Math.min($store.getters.getBookCurrentPage - 2, $store.getters.getBookPageNb - 5)) + index, nooption: false})"> @click="$store.dispatch('fetchPageBooks', {page: Math.max(0, Math.min($store.getters.getBookCurrentPage - 2, $store.getters.getBookPageNb - 5)) + index, nooption: false, ...$route.query})">
{{ Math.max(0, Math.min($store.getters.getBookCurrentPage - 2, $store.getters.getBookPageNb - 5)) + index }} {{ Math.max(0, Math.min($store.getters.getBookCurrentPage - 2, $store.getters.getBookPageNb - 5)) + index }}
</button> </button>
<p v-if="$store.getters.getBookCurrentPage !== $store.getters.getBookPageNb" class="elipsis">...</p> <p v-if="$store.getters.getBookCurrentPage !== $store.getters.getBookPageNb" class="elipsis">...</p>
<button v-if="$store.getters.getBookCurrentPage !== $store.getters.getBookPageNb" class="page" @click="$store.dispatch('fetchPageBooks', {page: $store.getters.getBookPageNb, nooption: false})">{{ $store.getters.getBookPageNb }}</button> <button v-if="$store.getters.getBookCurrentPage !== $store.getters.getBookPageNb" class="page" @click="$store.dispatch('fetchPageBooks', {page: $store.getters.getBookPageNb, nooption: false, ...$route.query})">{{ $store.getters.getBookPageNb }}</button>
<button @click="$store.dispatch('fetchPageBooks', {page: $store.getters.getBookPageNb, nooption: false})" class="page"> >> </button> <button @click="$store.dispatch('fetchPageBooks', {page: $store.getters.getBookPageNb, nooption: false, ...$route.query})" class="page"> >> </button>
</footer> </footer>
</div> </div>
</template> </template>

View File

@@ -5,6 +5,7 @@
</div> </div>
</template> </template>
<script> <script>
import router from '@/router';
export default { export default {
props: { props: {
page: String, page: String,
@@ -12,6 +13,7 @@ export default {
watch: { watch: {
search: function() { search: function() {
this.$emit('changeSearch', this.search); this.$emit('changeSearch', this.search);
router.push({ path: 'books', query: { search: this.search }})
this.$store.dispatch('fetchPage'+this.page, {page: 0, nooption: false, search: this.search, order: this.order}) this.$store.dispatch('fetchPage'+this.page, {page: 0, nooption: false, search: this.search, order: this.order})
} }
}, },

View File

@@ -1,5 +1,5 @@
const ROOT_FQDN = 'https://bookshelf.aldon.fr/api'; // const ROOT_FQDN = 'https://bookshelf.aldon.fr/api';
// const ROOT_FQDN = 'http://localhost:8000/api'; const ROOT_FQDN = 'http://localhost:8000/api';
export { export {
ROOT_FQDN ROOT_FQDN