<template>
  <ResearchLayout :menu="menu">
    <section class="myResearches" :class="{ expanded: !isSidebarCollapsed }">
      <div class="container-fluid">
        <div class="row align-items-end border-bottom">
          <div class="col-12 pt-3">
            <div class="row align-items-center mb-3">
              <div class="col col-lg-auto order-1">
                <div class="d-flex align-items-center">
                  <button
                    name="button"
                    type="button"
                    class="toggle-mobile-nav dropdown-hamburger d-md-none"
                    @click.prevent="toggleSidebarMenu()"
                  >
                    <span class="sr-only">باز کردن منوی کنار</span>
                    <svg class="s18" data-testid="sidebar-icon">
                      <use href="assets/common/img/icons.svg#sidebar"></use>
                    </svg>
                  </button>

                  <NuxtLink
                    :to="{
                      name: 'defaultRoute',
                    }"
                    classes="btn me-3"
                  >
                    <img
                      :src="logo"
                      :alt="appLongTitle()"
                      class="img-fluid logo"
                      style="max-width: 3.3em"
                    />
                  </NuxtLink>
                </div>
              </div>

              <div class="col-12 col-lg-6 order-3 order-lg-2">
                <div class="search-container">
                  <div
                    class="input-group"
                    @keyup="keyupdiv"
                    style="box-shadow: 0 1px 3px rgba(23, 23, 23, 0.24)"
                  >
                    <!-- <VMenu class="my-vmenu">
                      <div class="input-group-prepend">
                        <button
                          type="button"
                          @click.prevent="showAdvancedSearch"
                          title="جستجوی پیشرفته"
                          class="btn"
                        >
                          پیشرفته؟
                        </button>
                      </div>

                      <slot name="popper">
                        <div
                          class="my-tooltip-content"
                          v-html="
                            getHtmlTooltip2(
                              'research',
                              'research_advance',
                              'TKVLBY8BPd2Jp_XrBZq0'
                            )
                          "
                        ></div>
                      </slot>
                    </VMenu> -->

                    <input
                      type="text"
                      v-model="textSearch"
                      @keyup.enter="slmSearchStart()"
                      @click="showHisory()"
                      class="form-control"
                      id="research"
                      placeholder="جستجو در تمام تحقیقات"
                      autocomplete="off"
                      ref="searchinput"
                      @focus="inputfocused = true"
                      @blur="inputfocused = false"
                      v-focus
                    />
                    <div class="input-group-append">
                      <button
                        v-tooltip="'جستجو در خاصیت(فیلد) ویژه'"
                        class="btn dropdown-toggle"
                        type="button"
                        data-bs-toggle="dropdown"
                        aria-haspopup="true"
                        aria-expanded="false"
                      >
                        <!-- <span class="navItemlabel">
                        {{ domainActiveGetter?.label }}
                      </span> -->
                      </button>
                      <div class="dropdown-menu">
                        <button
                          v-for="(navItem, index) in searchDomain"
                          :key="index"
                          type="button"
                          class="dropdown-item"
                          @click.prevent="setSelectedNavItem(navItem)"
                        >
                          {{ navItem.label }}
                        </button>
                      </div>

                      <button
                        v-tooltip="'جستجو در خاصیت(فیلد) ویژه'"
                        @click.prevent="slmSearchStart()"
                        class="btn btn-primary search-icon"
                      >
                        <svg class="icon icon-Component-198--1">
                          <use xlink:href="#icon-Component-198--1"></use>
                        </svg>
                      </button>
                    </div>

                    <div
                      v-if="showItem == 3 && listAutocomplate.length"
                      class="search-page__result"
                      :class="{
                        show: listAutocomplate.length,
                      }"
                      v-click-outside="onClickOutside"
                    >
                      <ul ref="aut_ul">
                        <li v-for="(item, i) in listAutocomplate" :key="i">
                          <a @click.prevent="selectAutocomplate(item.text)">
                            <span
                              class="text__14"
                              v-html="getHighlight(item.text)"
                            ></span>
                          </a>
                        </li>
                      </ul>
                    </div>

                    <div
                      v-if="showItem == 1"
                      class="search-page__result"
                      :class="{
                        show: historySearch.length,
                      }"
                      v-click-outside="onClickOutside"
                    >
                      <div>
                        <div class="scrollbar">
                          <ul ref="his_ul">
                            <li v-for="(item, i) in historySearch" :key="i">
                              <a @click="selectHistorySearch(item)">
                                <img
                                  src="assets/common/img/Component 359 – 2.svg"
                                  alt=""
                                />
                                <span class="text__14">{{ item }}</span>
                              </a>
                              <a @click="removeHistorySearch(i)" class="close">
                                <svg class="icon icon-Component-294--1">
                                  <use
                                    xlink:href="#icon-Component-294--1"
                                  ></use>
                                </svg>
                              </a>
                            </li>
                          </ul>
                        </div>
                      </div>
                    </div>

                    <div
                      v-show="showItem == 2"
                      :class="{ show: showItem == 2 }"
                      class="search-page__filters"
                    >
                      <!-- <form action="">
                      <div class="item">
                        <input
                          type="checkbox"
                          name="doc-priority"
                          id="doc-priority"
                          v-model="setRankCheck"
                        />
                        <label for="doc-priority" class="text__14"
                          >جستجو با اولویت متن اسناد</label
                        >
                      </div>
                      <div class="item">
                        <input
                          type="checkbox"
                          name="search-in"
                          id="search-in"
                        />
                        <label for="search-in" class="text__14"
                          >جستجو فقط در
                        </label>
                        <div class="select">
                          <select name="" id="">
                            <option
                              value=""
                              v-for="(item, i) in setListItems"
                              :key="i"
                            >
                              {{ item }}
                            </option>
                          </select>
                          <span class="drop-down">
                            <img
                              src="assets/common/img/Path 13419.svg"
                              alt=""
                            />
                          </span>
                        </div>
                      </div>
                    </form> -->
                    </div>
                  </div>
                </div>
              </div>
              <div class="col-auto col-lg order-2 order-lg-3">
                <div class="d-flex justify-content-end" v-if="!isMajlesBuild">
                  <user-avatar-dropdown class="">
                    <NuxtLink
                      :to="{ name: 'searchAbout' }"
                      class="dropdown-item"
                      >درباره ما</NuxtLink
                    >
                    <NuxtLink
                      :to="{ name: 'searchConnect' }"
                      class="dropdown-item"
                      >تماس با ما</NuxtLink
                    >
                  </user-avatar-dropdown>
                </div>
              </div>
            </div>
          </div>
        </div>

        <div class="row">
          <div
            v-if="showButton"
            class="circle--button"
            @click.prevent="changeHideFilter(0)"
            ref="circle"
          >
            <svg
              class="s12 icon-chevron-double-lg-left"
              data-testid="chevron-double-lg-left-icon"
            >
              <use
                href="assets/common/img/icons.svg#chevron-double-lg-left"
              ></use>
            </svg>
          </div>

          <div
            class="col-8 col-lg-2 filter-list-container"
            :class="{ expanded: showFilter }"
            ref="showFilter"
          >
            <div class="mobile-mode">
              <button class="btn" @click.prevnet="showFilter = !showFilter">
                <svg
                  v-if="showFilter"
                  class="icon icon-chevron-double-right ms-1"
                >
                  <use xlink:href="#icon-chevron-double-right"></use>
                </svg>
                <svg v-else class="icon icon-chevron-double-left">
                  <use xlink:href="#icon-chevron-double-left"></use>
                </svg>
                <!-- بستن فیلتر -->
              </button>
            </div>
            <ResearchFilterList
              v-if="researchSchemaGetter"
              @filterUpdate="filterUpdate"
              @changeHideFilter="changeHideFilter($event)"
              ref="filterlist"
              :lastSearchInListMode="lastSearchInListMode"
              :changePageFilter="changePageFilter"
              :activeTabGetter="researchSchemaGetter[0]"
              class="filterList"
            ></ResearchFilterList>

            <!-- <AdvancedSearch
            v-if="researchSchemaGetter && researchSchemaGetter[0].advance"
            v-show="hideAdvancedSearch"
            @searchStart="slmSearchStart($event)"
            @closeAdvancedSearch="closeAdvancedSearch"
            @set-query-advanced="setQueryAdvanced($event)"
          ></AdvancedSearch> -->
          </div>

          <div class="col">
            <div v-if="!showNoAnswer()">
              <!-- <component
                :key="reRender"
                :is="contentComponentName"
                :listAnswer="listAnswer"
                :summeryKeys="['content', 'mindex', 'mintro']"
                :pagination="pagination"
                :tq="textSearch"
                @changeCurrent="changeCurrent"
                @changePage="changePaging"
                @researchModalHandler="researchModalHandler"
                @updateForDeleteResearch="getQueryForResearch()"
                ref="content"
              ></component> -->
              <MyContent
                :key="reRender"
                :pagination="pagination"
                :viewMode="'list'"
                @changePage="changePaging"
                :schemaItems="myActiveSchema?.search_content"
                :items="listAnswer"
                ref="content"
                @ModalHandler="researchModalHandler"
                @SubjectForm="SubjectFormHandler"
                @updateForDeleteResearch="getQueryForResearch()"
                @delete="deleteFormHandle"
              >
              </MyContent>
            </div>
            <no-data v-else>
              <div class="d-flex justify-content-center align-items-center">
                <div
                  class="alert alert-warning d-flex flex-column justify-content-center"
                >
                  <div class="mb-3">پاسخی برای جستجوی شما یافت نشد.</div>
                  <div class="mb-3" v-if="textSearch">
                    <label>عبارت جستجو :</label>
                    <strong> {{ textSearch }}</strong>
                  </div>
                  <div class="mb-3" v-if="filterUrl">
                    <label>فیلتر :</label>
                    <strong> {{ filterUrl }}</strong>
                  </div>
                  <div class="mb-3" v-if="domain_lable">
                    <label>دامنه :</label>
                    <strong> {{ domain_lable }}</strong>
                  </div>
                  <div class="mb-3">
                    <label>نوع جستجو :</label>
                    <strong> {{ searchType_lable }}</strong>
                  </div>
                </div>
              </div>
            </no-data>
            <base-modal-v2
              v-if="showModal"
              @close="closeBaseModal"
              :showHeaderCloseButton="true"
              :hasFooter="false"
              :modalTitle="modalTitle"
              width="750px"
              height="463px"
              overflow="hidden"
              :showSaveButton="true"
              :showCloseButton="true"
              :showDeleteButton="false"
            >
              <slot> {{ modalTitle }}</slot>

              <slot name="body">
                <component
                  :is="slotComponentName"
                  :valueModal="valueModalResearch"
                  @closeAfterSaving="closeAfterSaving"
                  height="100%"
                ></component>
              </slot>
            </base-modal-v2>
          </div>
          <div
            v-if="showSummary"
            class="col-8 col-lg-3 summary-container"
            :class="{ expanded: showSummary }"
          >
            <component
              ref="summary"
              :currentItem="currentItem"
              :page="page"
              :is="summaryComponentName"
              @hideSummary="hideSummary"
            ></component>
          </div>
        </div>
      </div>
    </section>
  </ResearchLayout>
</template>

<script>
import searchLineMixin from "@research/mixins/research/searchLineMixin.js";
import { mapActions, mapState } from "pinia";
import researchApi from "@research/apis/researchApi";
import sidbarMenu from "@research/json/research/menu.json";

import { useResearchStore } from "@research/stores/researchStore";
import { useSearchStore } from "@research/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import { useAuthStore } from "~/stores/authStore";

export default {
  name: "myResearches",
  setup() {
    definePageMeta({
      layout: false,
      name: "myResearches",
    });
  },
  mixins: [searchLineMixin],
  watch: {
    $route: {
      handler: function (to, from) {
        // this.getSchemas();
        this.setInputText(to.query.q);
        this.state = 2;

        setTimeout(() => {
          if (this.textSearch != undefined && this.textSearch != "") {
            this.searchStart(this.textSearch);
          } else {
            this.getDefaultByFilter();
            // if (this.$refs.content) {
            //   this.$refs.content?.$el.classList.add("component");
            //   this.$refs.content.$el.style.right += 17 + "%";
            // }
          }
        }, 500);
      },
    },

    topRepeatInListMode(navItem) {
      if (navItem == true) {
        setTimeout(() => {
          this.$refs.dropdownSortlist.classList.remove("opacity");
          // this.$refs.circle.classList.remove("opacity");
          this.againsetlist(this.lists);
        }, 100);
      } else {
        setTimeout(() => {
          this.$refs.dropdownSortlist.classList.add("opacity");
          // this.$refs.circle.classList.add("opacity");
        }, 100);
      }
    },
    researchActiveSchemaGetter(newVal) {
      if (newVal?.domain) {
        // this.setSearchDomain(newVal);
      }
    },
  },
  beforeMount() {
    // this.httpService = new HttpService(import.meta.env.VITE_REPO_BASE_URL);
  },
  created() {
    this.httpService = useNuxtApp()["$http"];
  },
  async mounted() {
    this.logo = (await logoPhoto()).default;

    this.researchActiveSchemaSetter(this.myActiveSchema);
    // let schemaExist = this.searchActiveTabGetter && this.searchSchemaGetter;
    if (this.researchActiveSchemaGetter?.domain) {
      // this.setSearchDomain(this.researchActiveSchemaGetter);
    }

    if (window.outerWidth < 992) {
      this.$store.commit("TOGGLE_SIDEBAR_MENU");
    }

    if (this.researchSchemaGetter.length == 0) this.getSchemas();

    this.modetab = 0;
    this.state = 2;
    // }
    if (this.$route.query.q) {
      this.setInputText(this.$route.query.q);
    }
    setTimeout(() => {
      if (this.textSearch != undefined && this.textSearch != "") {
        this.searchStart(this.textSearch);
      } else {
        // this.getDefaultByFilter();
        this.getQueryForResearch();
        // if (this.$refs.content) {
        //   this.$refs.content?.$el.classList.add("component");
        //   this.$refs.content.$el.style.right += 17 + "%";
        // }
      }
    }, 500);
    // ++this.rerenderChart;
  },
  beforeDestroy() {
    window.removeEventListener("resize", this.handleResize);
    window.removeEventListener("load", this.handleResize);
  },
  data() {
    return {
      logo: "",
      showModal: false,
      modalTitle: null,
      slotComponentName: null,
      valueModalResearch: {},
      // Restored from searchLineMixin
      typingTimer: 0,
      doneTypingInterval: 500,
      listAutocomplate: [],
      historySearch: [],
      searchDomain: [],
      showItem: 0,
      inputfocused: false,

      listAnswer: [],
      showFilter: false,
      showDropdown: false,
      showDropdownNavigateList: false,
      navigateListPart2: [],
      navigateListItem: "",
      // httpService: undefined,
      listChangeItem: "",
      showListPanel: false,
      showSearchLine: true,
      state: 2,
      modetab: 0,
      totalCount: 0,
      typeCount: "",
      ismultiWord: false,
      iscode: false,
      listAmplify: [],
      filterNavigate: [],
      amplifyIndex: -1,
      number: 0,

      showfilterCategory: true,
      activeListItem: undefined,
      treeLists: "",

      total_answer: 0,
      showButton: false,
      showSummary: false,
      windowWidth: window?.innerWidth,
      topRepeatInListMode: true,
      activeSortItem: undefined,
      changePageFilter: "",
      httpService: {},
      lastSearchInListMode: true,
      searchingState: false,
      meets: [],
      textSearch: "",
      domain_key: "",
      domain_lable: "",
      filterUrl: "",
      loading: false,
      showSummary: false,
      showTermSummary: false,
      countInPage: 10,
      currentItem: [],
      searchCode: "all",
      searchTab: "searchResult",
      searchType: "typeNormal",
      searchType_lable: "عادی",
      ismultword: true,
      iscode: false,
      reRender: 1,
      hideAdvancedSearch: false,
      page: 0,
      setQuery: "",
      textAmplify: "",
      liSelected: null,
      lists: "",
      pagination: {
        page: 1,
        pages: 0,
        total: 0,
        offset: 0, // page * per_page
        limit: 10, //per_page
      },
    };
  },
  computed: {
    ...mapState(useSearchStore, [
      "domainActiveGetter",
      "searchActiveTabGetter",
      "searchSchemaGetter",
    ]),
    ...mapState(useResearchStore, [
      "researchSchemaGetter",
      "researchActiveSchemaGetter",
    ]),
    ...mapState(useCommonStore, [
      "selectedlists",
      "organNameGetter",
      "isSidebarCollapsed",
    ]),
    ...mapState(useAuthStore, ["currentUser"]),

    myActiveSchema() {
      return this.researchSchemaGetter?.find((item) => {
        return item.key == "research";
      });
    },
    contentComponentName(key) {
      // if (key == "qanon") return "ResearchContent";
      // else if (key == "mqanon" || key == "nqanon") return "MajlesQanonContent";
      // else if (key == "qqanon") return "MajlesQavaninContent";
      // else if (key == "mqsection") return "MajlesSectionContent";
      // else if (key == "mashruh") return "MajlesMashruhContent";
      // else if (key == "term") return "TermContent";
      // else if (key == "emamain") return "EmamainContent";
      // else if (key == "nesha") return "NeshaContent";
      // else if (key == "qasection") return "MajlesQaSectionContent";

      return "ResearchContent";
    },

    summaryComponentName() {
      let key = this.searchActiveTabGetter?.key;
      if (key == "term") return "TermSummary";
      return "Summary";
    },

    isAdmin() {
      return this.currentUser.user_level > 1;
    },
    hasVectorSearch() {
      let key = this.searchActiveTabGetter?.key;
      return key == "mqsection" || key == "qasection";
    },
    navigateList() {
      return this.searchSchemaGetter;
    },
    menu() {
      return sidbarMenu;
    },
  },
  methods: {
    // ...mapActions(["TOGGLE_SIDEBAR_MENU"]),
    ...mapActions(useCommonStore, ["TOGGLE_SIDEBAR_MENU"]),
    ...mapActions(useSearchStore, [
      "searchActiveTabSetter",
      "domainActiveSetter",
    ]),
    ...mapActions(useResearchStore, [
      "researchActiveSchemaSetter",
      "researchSchemaSetter",
    ]),
    deleteFormHandle(event) {
      this.mySwalConfirm({
        title: "هشدار!!!",
        html: `از حذف <b>${event.item._source.text_subject}</b> اطمینان دارید؟ `,
        icon: "warning",
      }).then((result) => {
        if (result.isConfirmed) {
          let url = this.repoMicroServiceName + researchApi.research.deleteItem;
          url = url.replace(
            "{{index_key}}",
            this.researchActiveSchemaGetter?.key
          );
          url = url.replace("{{id}}", event.item._id);
          this.httpService.postRequest(url).then((res) => {
            this.mySwalToast({
              html: res.message,
            });
            setTimeout(() => {
              this.getQueryForResearch();
            }, 1000);
          });
        }
      });
    },
    SubjectFormHandler(event) {
      this.openBaseModal("SubjectForm", "موضوع زنی");
      let cloneItem = structuredClone(event);
      cloneItem = { ...event._source, _id: event._id };

      this.SET_SELECTED_ITEM(cloneItem);
    },
    getSchemas() {
      let url = repoUrl() + "schema";
      this.httpService
        .postRequest(url, {
          organ: "public",
          system: "research",
          build_state: buildState(),
        })
        .then((response) => {
          console.log("🚀 ~ .then ~ response:", response);
          this.researchSchemaSetter(response.data.dataset);
          let ActiveSchema = "";

          ActiveSchema = this.researchSchemaGetter?.find((item) => {
            return item.key == "research";
          });
          this.researchActiveSchemaSetter(ActiveSchema);
          // this.getData();
        })
        .finally(() => {
          this.loading = false;
        });
    },
    closeAfterSaving() {
      this.closeBaseModal();
      setTimeout(() => {
        this.getQueryForResearch("default");
      }, 1000);
    },
    researchModalHandler(event) {
      this.openBaseModal("ResearchFishModal", event.itemSchema.title);
      this.valueModalResearch = event;
    },
    openBaseModal(componentName, title) {
      this.showModal = true;
      this.slotComponentName = componentName;
      this.modalTitle = title;
    },
    closeBaseModal() {
      setTimeout(() => {
        this.showModal = false;
      }, 500);
    },

    toggleSidebarMenu() {
      this.TOGGLE_SIDEBAR_MENU();
    },
    // setSearchDomain(value) {
    //   this.searchDomain = [{ label: "همه", key: "all" }];
    //   this.searchDomain = [...this.searchDomain, ...value.domain.domain];
    //   if (!this.domainActiveGetter) {
    //     if (isMajlesBuild()) this.domainActiveSetter(this.searchDomain[1]);
    //     else this.domainActiveSetter(this.searchDomain[0]);
    //   }
    // },
    keyupdiv(event) {
      if (this.showItem == 0 || this.showItem == 2) return;

      var el = this.showItem == 1 ? this.$refs["his_ul"] : this.$refs["aut_ul"];

      if (this.inputfocused && event.which === 38) {
        this.liSelected = el.firstChild;
        this.liSelected.classList.add("selected");
        this.liSelected.focus();
        return;
      }
      var next = null;
      if (event.which === 40) {
        if (this.liSelected) {
          this.liSelected.classList.remove("selected");
          next = this.liSelected.nextSibling;
          if (next) {
            this.liSelected = next.classList.add("selected");
          } else {
            this.liSelected = el.firstChild;
            this.liSelected.classList.add("selected");
          }
          this.liSelected.focus();
        } else {
          this.liSelected = el.firstChild;
          this.liSelected.classList.add("selected");
          this.liSelected.focus();
        }
      } else if (event.which === 38) {
        if (this.liSelected) {
          this.liSelected.classList.remove("selected");
          next = this.liSelected.prevSibling;
          if (next) {
            this.liSelected = next.classList.add("selected");
          } else {
            this.liSelected = el.lastChild;
            this.liSelected.classList.add("selected");
          }
          this.liSelected.focus();
        } else {
          this.liSelected = el.lastChild;
          this.liSelected.classList.add("selected");
          this.liSelected.focus();
        }
      }
    },
    slmSearchStart() {
      this.liSelected = null;
      this.showItem = 0;
      this.addHistorySearch(this.textSearch);

      let tt = myEncodeQuery(this.textSearch);
      // if (emited) this.$emit("searchStart", tt);
      this.searchStart(tt);
    },
    setInputText(text) {
      this.textSearch = myEncodeQuery(text);
    },
    showHisory() {
      setTimeout(() => {
        if (this.textSearch == "") this.showItem = 1;
        else {
          this.showItem = 0;
          this.liSelected = null;
        }
      }, 100);
    },
    setSelectedNavItem(navItem) {
      this.domainActiveSetter(navItem);
      this.slmSearchStart();
    },
    onClickOutside() {
      if (this.showItem == 1) {
        this.showItem = 0;
        this.liSelected = null;
      }
    },

    handleResize() {
      return window.outerWidth < 992;

      // if (this.windowWidth < 990) {
      //   this.$store.commit("TOGGLE_SIDEBAR_MENU");
      // }
    },

    changeHideFilter(event) {
      if (event === 0) {
        this.$refs.axis.classList.remove("hiden");
        this.$refs.showFilter.classList.toggle("d-none");

        this.showButton = false;
        this.showFilter = true;
      } else if (event === 1) {
        this.$refs.axis.classList.add("hiden");
        this.$refs.showFilter.classList.toggle("d-none");
        this.showButton = true;
        this.showFilter = false;
      }
    },

    searchCoding() {
      this.slmSearchStart();
    },
    resetOptions() {
      this.page = 0;
      this.filterUrl = "";
      this.$refs.filterlist?.resetFilter();
    },
    showfilter: function () {
      this.$refs.filterlist?.showfilter();
    },
    checkMultiword(query_string) {
      this.ismultword = true;
      if (query_string == null || query_string == "") return;
      var ww = query_string.split(" ");
      this.iscode = /^\d+$/.test(query_string);

      this.setOptions(this.ismultword, this.iscode);
    },
    setOptions(isMulti, isCode = false) {
      this.ismultiWord = isMulti;
      if (this.ismultiWord == false) this.searchType = "typeNormal";
      this.iscode = isCode;
    },

    searchStart(query_string = null) {
      if (query_string != null && query_string != "") {
        //console.log(query_string);
        query_string = query_string.trim();
        this.setInputText(query_string);
        this.checkMultiword(query_string);

        if (this.topRepeatInListMode)
          this.$refs?.content?.setTextSearch(query_string, this.countInPage);

        this.resetOptions();
        this.getQueryForResearch("filter");
      } else {
        this.setInputText("");
        this.searchingState = false;
        this.getQueryForResearch("default");
      }

      if (this.textSearch != "") {
        history.pushState(
          {},
          document.title,
          "/research" + "/?q=" + myEncodeQuery(this.textSearch)
        );
      } else history.pushState({}, document.title, "/research");
    },
    setQueryAdvanced(query) {
      this.initText(query);
      // if (this.$refs.topheader) {
      //   this.$refs.topheader.setSearchLine(query);
      // }
    },
    changePaging(item) {
      this.pagination = item;

      if (this.searchingState) this.getQueryForResearch("filter");
      else this.getQueryForResearch("default");
    },
    hideSummary: function () {
      this.showSummary = false;
      // this.showTermSummary = false;
    },
    changeCurrent: function (item) {
      this.showSummary = false;
      // if (this.$route.name == "termResult") {
      //   this.changeCurrentTerm(item);
      // }
      // if (item == this.currentItem) this.showSummary = !this.showSummary;
      // else this.showSummary = true;
      this.$nextTick(() => {
        this.showSummary = true;
      });

      this.currentItem = item;
      if (this.$refs.summary) this.$refs.summary.setInfo(item);
    },

    filterUpdate(filter) {
      this.filterUrl = filter;
      this.page = 0;
      if (filter) this.getQueryForResearch("filter");
      else this.getQueryForResearch("default");
    },

    getQueryForResearch(position = "default") {
      this.loading = true;

      let query = "";
      let text = myEncodeQuery(this.textSearch);
      if (text?.length != 0) {
        this.domain_key = this.domainActiveGetter?.key;
        if (this.domain_key && this.domain_key != "all") {
          this.domain_lable = this.domainActiveGetter?.label;
          query =
            "q=" + encodeURIComponent("#") + this.domain_lable + " " + text;
        } else {
          query = "q=" + text;
        }
      }

      let filter = this.filterUrl;
      if (this.textAmplify != undefined && this.textAmplify != "") {
        filter += "&o_am=" + this.textAmplify;
      }

      let url = researchApi.research?.listDefault;
      url = url.replace("{{user_id}}", this.currentUser?.user_id);
      url = url.replace("{{offset}}", this.pagination?.offset);
      url = url.replace("{{limit}}", this.pagination?.limit);

      if (query ? query : "" || filter ? filter : "")
        url = url + "/" + query + filter;
      this.httpService
        .getRequest(repoUrl() + url)
        .then((response) => {
          this.searchingState = true;
          this.$refs.filterlist?.setAnswer(response.aggregations);
          this.lists = response.hits.hits;
          this.listAnswer = response.hits.hits;

          this.loading = false;

          this.total_answer = response.hits.total.value;

          const total = response.hits.total.value;
          this.total_answer = total;
          const pages = Math.ceil(total / this.pagination.limit);
          const pagination = {
            total: total,
            pages: pages == 0 ? 1 : pages,
          };
          this.pagination = { ...this.pagination, ...pagination };
        })
        .catch((error) => {
          this.loading = false;
          this.searchingState = false;
          // vm.$alert(error);
        });
    },

    againsetlist(list) {
      this.$refs.content?.setAnswer(
        // this.lists.data.aggregations.branch.buckets,
        this.lists.data.hits.hits,
        this.lists.data.hits.total.value,
        this.lists.data.hits.total.relation
      );
      this.$refs.filterlist?.setAnswer(this.lists.data.aggregations);
    },

    resetPagination() {
      this.pagination = {
        pages: 0,
        total: 0,
        page: 1,
        offset: 0,
        limit: 10,
      };
    },
    closeAdvancedSearch() {
      this.hideAdvancedSearch = false;
    },
    showAdvancedSearch() {
      if (this.hideAdvancedSearch) {
        this.hideAdvancedSearch = false;
      } else {
        this.hideAdvancedSearch = true;
      }
    },
    showNoAnswer() {
      if (this.searchingState) {
        return this.total_answer == 0;
      }
      return false;
    },
    canSee(keyName) {
      if (this.currentUser?.user_level > 1) return true;
      return this.userPermisionGetter?.includes(keyName);
    },
    myEncodeQuery(text) {
      if (!text) return "";
      //text = JSON.stringify(text);
      let ch1 = encodeURIComponent("#");
      let ch3 = encodeURIComponent("\\");
      let ch4 = encodeURIComponent("&");
      text = text.replaceAll("#", ch1);
      text = text.replaceAll("&", ch4);
      text = text.replaceAll("/", "\\");
      text = text.replaceAll("\\", ch3);
      // text = text.replaceAll(".", '%2E');
      return text;
    },
    myEncodeQuery(text) {
      //text = JSON.stringify(text);
      if (!text) return "";

      let ch1 = encodeURIComponent("#");
      let ch3 = encodeURIComponent("\\");

      text = text.replaceAll(ch1, "#");
      text = text.replaceAll(ch3, "\\");
      return text;
    },
    getHtmlTooltip2(section, key, id) {
      let res = "";
      let link = "";
      if (id) link = location?.origin + "/pages/help/" + section + "/" + id;

      if (section == "research") {
        if (key == "research_advance") {
          res = `<p class="mb-2">برای یافتن بهترین پاسخ، روش جستجو را تعیین می‌کند</p>`;
        } else if (key == "search_sort") {
          res = `<p class="mb-2">ترتیب نمایش فهرست قبل و بعد از جستجو را تعیین می کند</p>`;
        } else if (key == "search_advance") {
          res = `<p class="mb-2">امکانات ویژه جهت جستجو در ویژگی های همراه متن در اختیار می گذارد </p>`;
        }
      }

      if (section == "entity") {
      }

      if (res != "" && link != "")
        res += `<a class="btn btn-link" target="_blank" href="${link}"> بیشتر ... </a>`;

      return res;
    },
    initText(item) {
      this.textSearch = item;
    },

    getHighlight(item) {
      var find = this.textSearch;
      var text = item.replaceAll(find, "<b>" + find + "</b>");
      return text;
    },
    selectHistorySearch(item) {
      this.textSearch = item;
      this.searchStart(this.textSearch);
    },
    addHistorySearch(newSearch = "") {
      if (newSearch == "") {
        return;
      }
      var index = this.historySearch.indexOf(newSearch);
      if (index != -1) {
        this.historySearch.splice(index, 1);
      }

      this.historySearch.unshift(newSearch);
      this.saveHistorySearch();
    },
    removeHistorySearch(x) {
      this.historySearch.splice(x, 1);
      this.saveHistorySearch();
    },
    saveHistorySearch() {
      const parsed = JSON.stringify(this.historySearch);
      window.localStorage.setItem([HISTORY_SEARCH_RECENT], parsed);
    },
  },
  components: {
    ResearchLayout: defineAsyncComponent(() =>
      import("@research/layouts/ResearchLayout.vue")
    ),
    ResearchFilterList: defineAsyncComponent(() =>
      import("@research/components/research/components/ResearchFilterList.vue")
    ),
    MyContent: defineAsyncComponent(() =>
      import("@search/components/search/MyContent.vue")
    ),
    ResearchFishModal: defineAsyncComponent(() =>
      import("@research/components/research/components/ResearchFishModal.vue")
    ),
    AdvancedSearch: defineAsyncComponent(() =>
      import("@research/components/research/components/AdvancedSearch.vue")
    ),
    SubjectForm: defineAsyncComponent(() =>
      import("@research/components/research/components/SubjectForm.vue")
    ),

    // MyContent: () => import("@search/components/search/MyContent.vue"),
    // ResearchFishModal: () =>
    //   import("@research/components/research/components/ResearchFishModal.vue"),
    // FilterList: () => import("@research/components/FilterList.vue"),
    // FilterListSearch: () => import("@search/view/layout/FilterListSearch.vue"),
    // AdvancedSearch: () =>
    //   import("@research/components/research/components/AdvancedSearch.vue"),
    // SubjectForm: () =>
    //   import("@research/components/research/components/SubjectForm.vue"),
  },
};
</script>
<style scoped lang="scss">
.v-popper--theme-dropdown {
  display: flex;

  .v-popper__inner {
    .my-tooltip-content {
      color: white;
      background-color: black;
      padding: 1em;
    }
  }
}
</style>