hadith_ui/pages/hadith/public-pages/contact-us.vue
2025-02-11 13:47:22 +03:30

248 lines
6.5 KiB
Vue

<template>
<div class="wrapper detail-page">
<TopHeader
ref="topheader"
@searchStart="searchStart"
@showfilter="showfilter"
@searchType="searchTyping"
@="searchCoding"
></TopHeader>
<Content
:pagination="pagination"
@changeCurrent="changeCurrent"
@changePage="changePaging"
ref="content"
></Content>
<filter-list-search @filterUpdate="filterUpdate" ref="filterlist"></filter-list-search>
<Summary
ref="summary"
:meets="meets"
@hideSummary="hideSummary"
v-show="showSummary"
>
</Summary>
<!-- <ChartTree>
</ChartTree> -->
</div>
</template>
<script>
// import axios from "axios";
import TopHeader from "~/search/view/layout/Top.vue";
import FilterListSearch from "~/search/view/layout/FilterListSearch.vue";
import Content from "~/search/view/pages/TermContent.vue";
import Summary from "~/search/view/layout/TermSummary.vue";
import LogService from "~/services/log.service";
import {mapState} from "pinia";
//
// const API = axios.create({
// //baseURL: 'http://2.182.155.188',
// baseURL: import.meta.env.VITE_API_SEARCH,
// })
export default {
props: ["q"],
name: "Term",
data() {
return {
meets: [],
tq: this.q,
filterUrl: "",
loading: false,
showSummary: false,
countInPage: 10,
currentItem: [],
searchType: "",
searchCode: "all",
ismultword: false,
iscode: false,
page: 0,
pagination: {
page: 1,
pages: 0,
total: 0,
offset: 0, // page * per_page
limit: 10, //per_page
},
};
},
computed:{
...mapState(["currentUser"])
},
mounted() {
this.$refs.topheader.modetab = 3;
this.$refs.topheader.state = 2;
if (this.tq != "") {
var item = this.tq;
this.checkMultiword(item);
this.$refs.topheader.setSearchLine(this.tq);
this.$refs.content.setTextSearch(this.tq, this.countInPage);
this.getQuery();
}
},
methods: {
searchTyping(type) {
this.searchType = type;
},
searchCoding(code) {
this.searchCode = code;
},
resetOptions() {
this.page = 0;
this.filterUrl = "";
this.$refs.filterlist.resetFilter();
},
showfilter: function() {
this.$refs.filterlist.showfilter();
},
checkMultiword(item) {
this.ismultword = false;
if (item == null || item == "") return;
var ww = item.split(" ");
this.iscode = /^\d+$/.test(item);
if (this.iscode == false) this.ismultword = item.split(" ").length > 1;
this.$refs.topheader.setOptions(this.ismultword, this.iscode);
},
searchStart: function(item) {
if (item != null) {
item = item.trim();
this.tq = item;
this.checkMultiword(item);
this.$refs.content.setTextSearch(item, this.countInPage);
}
this.resetOptions();
this.getQuery();
},
changePaging: function(item) {
this.pagination = item;
this.getQuery(true);
},
hideSummary: function() {
this.showSummary = false;
},
changeCurrent(item) {
if (item == this.currentItem) this.showSummary = !this.showSummary;
else this.showSummary = true;
this.currentItem = item;
var vm = this;
this.loading = true;
var suburl = "/monir/search/term/items/";
ApiService.getRequest(
suburl +
this.page +
"/" +
item.doc_count +
"/q=" +
item.key +
this.filterUrl
)
.then((response) => {
vm.loading = false;
// if (title == this.currentItem) this.showSummary = !this.showSummary;
// else this.showSummary = true;
// this.showSummary = true;
this.meets = response.data.hits.hits;
// this.$refs.summary.setInfo(response.data.hits.hits);
})
.catch((error) => {
vm.loading = false;
vm.$alert(error);
});
},
filterUpdate: function(filter) {
this.filterUrl = filter;
// history.pushState(null, '', '/list' + '/q='+ this.tq+ filter);
this.$router.push({
name: "TermResult",
query: { q: this.tq + filter },
});
this.page = 0;
this.getQuery(false, true);
},
// typeNormal : جستجوی عادی
// typeAnd : جستجوی عطفی
// typePhrase : جستجوی عبارتی
getQuery: function(pageOnly = false, filteronly = false) {
var vm = this;
this.loading = true;
var suburl = "/monir/search/term/";
if (this.ismultword) {
if (this.searchType == "typeAnd") suburl = "/monir/search/term/and/";
else if (this.searchType == "typePhrase")
suburl = "/monir/search/term/phrase/";
}
ApiService.getRequest(
suburl +
this.pagination.offset +
"/" +
this.pagination.limit +
"/q=" +
this.tq +
this.filterUrl
)
.then((response) => {
vm.loading = false;
if (pageOnly) {
this.$refs.content.setAnswer(
response.data.aggregations.branch.buckets
);
} else if (filteronly) {
this.$refs.topheader.setCount(
response.data.hits.total.value,
response.data.hits.total.relation
);
this.$refs.content.setAnswer(
response.data.aggregations.branch.buckets,
response.data.hits.total.value,
response.data.hits.total.relation
);
} else {
this.$refs.topheader.setCount(
response.data.hits.total.value,
response.data.hits.total.relation
);
this.$refs.content.setAnswer(
response.data.aggregations.branch.buckets,
response.data.hits.total.value,
response.data.hits.total.relation
);
response.data.aggregations.branch.buckets = [];
this.$refs.filterlist.setAnswer(response.data.aggregations);
}
const total = response.data.hits.total.value;
const pages = Math.ceil(total / this.pagination.limit);
const pagination = {
total: total,
pages: pages == 0 ? 1 : pages
}
this.pagination = { ...this.pagination, ...pagination };
LogService.index(this.currentUser,vm.tq, vm.page, vm.filterUrl, response.data.took);
})
.catch((error) => {
vm.loading = false;
vm.$alert(error);
});
},
},
};
</script>