base_ui/extensions/reportExtension.js

174 lines
4.2 KiB
JavaScript
Raw Permalink Normal View History

2025-02-01 09:34:55 +00:00
/* hooks order
1) extension
2) mixins
3) component
*/
import { mapState, mapActions } from "pinia";
// import HttpService from "~/services/httpService";
import { useCommonStore } from "~/stores/commonStore";
export default {
// beforeMount() {
// this.searchHttpService = new HttpService(import.meta.env.VITE_REPO_BASE_URL);
// },
data() {
return {
searchHttpService: undefined,
originNokeysArray: [],
viewMode: "table",
listItem: [],
sorting: {
sortby: "created",
sortorder: "asc", // asc | desc
},
filterUrl: "",
countInPage: 10,
page: 0,
pagination: {
pages: 0,
total: 0,
page: 1,
offset: 0, // page * per_page
limit: 10, //per_page
},
fetchingData: false,
tableColumns: [
{
key: "key",
title: "عنوان",
width: "2",
},
{
key: "doc_count",
title: "تعداد تکرار",
width: "2",
},
{
key: "last_access",
title: "تاریخ",
width: "4",
},
],
};
},
computed: {
...mapState(useCommonStore, ["getPanelStatus", "isSidebarCollapsed"]),
listTitle() {
return this.$route.meta.breadcrumb;
},
},
methods: {
...mapActions(useCommonStore, ["TOGGLE_PANEL"]),
toggleSidebarMenu() {
const CommonStore = useCommonStore();
CommonStore.TOGGLE_SIDEBAR_MENU();
},
filterUpdate: function (filter) {
this.filterUrl = filter;
this.resetPagination();
this.getData();
},
async getData(apiKey = this.$route.meta.apiKey, limit = undefined) {
// if(this.fetchingData) return;
// this.fetchingData = true;
var vm = this;
if (limit === undefined) limit = vm.pagination.limit;
// this.fetchingData = true;
var suburl = `/searchlog/`;
// searchlog/nokeys/0/10
try {
const { $api } = useNuxtApp();
const response = await $api(
suburl +
apiKey +
"/" +
vm.pagination.offset +
"/" +
limit +
"?sortby=" +
vm.sorting.sortby +
"&sortorder=" +
vm.sorting.sortorder +
vm.filterUrl,
{
baseURL: import.meta.env.VITE_REPO_BASE_URL,
method: "GET",
}
);
vm.listItem = [];
vm.fetchingData = false;
if (response?.hits) {
vm.pagination.pages = Math.ceil(
response.hits.total.value / vm.pagination.limit
);
vm.pagination.total = response.hits.total.value;
vm.listItem = response.aggregations.query_String.buckets;
} else {
this.originNokeysArray = structuredClone(response.buckets);
vm.pagination.pages = Math.ceil(
response.buckets.length / vm.pagination.limit
);
vm.pagination.total = response.buckets.length;
vm.listItem = response.buckets.slice(
vm.pagination.offset,
vm.pagination.limit
);
}
setTimeout(() => {
vm.$refs?.filterlist?.setAnswer(response.aggregations);
}, 500);
return vm.listItem;
} catch (err) {
}
},
resetPagination() {
this.page = 0;
this.countInPage = 10;
this.pagination = {
pages: 0,
total: 0,
page: 1,
offset: 0, // page * per_page
limit: 10, //per_page
};
},
pageChanged(paging) {
// keep original page number and just updating the offset.
let page = paging.pageNumber;
page -= 1;
this.pagination.offset = page * paging.limit;
this.pagination.limit = paging.limit;
this.pagination.page = paging.pageNumber;
this.getData();
},
pageLimitChanged(paging) {
this.resetPagination();
this.pagination.limit = paging.limit;
this.getData();
},
sortChanged(sorting) {
// keep limit status.
// reset page and offset values.
this.pagination.page = this.pagination.offset = 0;
this.sorting = sorting;
this.getData();
},
},
};