update search

This commit is contained in:
mustafa-rezae 2025-02-11 10:39:05 +03:30
parent e630a4a8ce
commit e70f3d7422
59 changed files with 2564 additions and 433 deletions

View File

@ -264,8 +264,8 @@
</template>
<script>
import { mapState, mapActions } from "pinia";
import ComparisonEntitys from "@json/entity/comprisonEntity";
import { useEntityStore } from "@stores/entityStore";
import ComparisonEntitys from "../../../json/search/json/comprisonEntity.json";
import { useEntityStore } from "../../../stores/entityStore";
// import diffMatchPatch from "../diff_match_patch.js";

View File

@ -153,6 +153,7 @@
<script>
import { mapState, mapActions } from "pinia";
import entityApi from "@apis/entityApi.js";
import { useEntityStore } from "@search/stores/entityStore";
/**
* @vue-prop {Object} [valueModal={}] - یک آبجکت از مقادیر مورد نیاز برای فیش

View File

@ -72,6 +72,7 @@
import entityApi from "@apis/entityApi";
import { mapState } from "pinia";
import Multiselect from "vue-multiselect";
import { useEntityStore } from "@search/stores/entityStore";
export default {
props: {

View File

@ -49,6 +49,7 @@
<script>
import entityApi from "@apis/entityApi.js";
import { mapState } from "pinia";
import { useEntityStore } from "@search/stores/entityStore";
export default {
name: "EntityChartGantt",
@ -89,7 +90,9 @@ export default {
],
};
},
computed: { ...mapState(useEntityStore, ["activeEntityViewSchemaGetter"]) },
computed: {
...mapState(useEntityStore, ["activeEntityViewSchemaGetter"]),
},
methods: {
getGanttData() {
let payload = {

View File

@ -149,7 +149,7 @@ import { mapState } from "pinia";
import repoApi from "~/apis/repoApi";
import Multiselect from "vue-multiselect";
import ChartGraph from "~/components/charts/ChartGraph.vue";
import { useEntityStore } from "~/stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
export default {
props: {

View File

@ -6,9 +6,7 @@
<script>
import { mapState, mapActions } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import { useEntityStore } from "@search/stores/entityStore";
export default {
watch: {
// #region mehdi entityList

View File

@ -432,9 +432,7 @@
<script>
import { mapActions, mapState } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import { useEntityStore } from "@search/stores/entityStore";
import entityApi from "@apis/entityApi";
/**

View File

@ -141,9 +141,9 @@ import repoApi from "@apis/repoApi";
import chatApi from "@apis/chatApi";
import { mapActions, mapState } from "pinia";
import { useSearchStore } from "@stores/searchStore";
import { useEntityStore } from "@search/stores/entityStore";
import { useCommonStore } from "@stores/commonStore";
import { useListStore } from "@stores/listStore";
import { useSearchStore } from "@search/stores/searchStore";
import propertyModalMixin from "@mixins/entity/propertyModalMixin";
import EntityUploaderModal from "@components/entity/modals/EntityUploaderModal.vue";

View File

@ -75,6 +75,7 @@
<script>
import repoApis from "~/apis/repoApi";
import { mapState } from "pinia";
import { useEntityStore } from "@search/stores/entityStore";
export default {

View File

@ -227,7 +227,7 @@
import repoApi from "@apis/repoApi";
import { mapActions, mapState } from "pinia";
import { useEntityStore } from "@stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
// import { useSearchStore } from "~/stores/searchStore";
// import { useCommonStore } from "~/stores/commonStore";

View File

@ -51,7 +51,7 @@
import repoApi from "@apis/repoApi";
import { mapActions, mapState } from "pinia";
import chatApi from "~/apis/chatApi";
import { useEntityStore } from "@stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
import { useCommonStore } from "@stores/commonStore";
// import { createNewTooltip } from "~/services/createFloatingVue";

View File

@ -378,10 +378,7 @@ import adminApi from "~/apis/adminApi";
import settingsApi from "~/apis/settingsApi";
import { mapState, mapActions } from "pinia";
import stopWordContextMenu from "~/json/entity/stopWordContextMenu";
import { useEntityStore } from "~/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import { useEntityStore } from "@search/stores/entityStore";
/**
* @vue-data {Object} [entity = undefined] - موجودیت

View File

@ -210,6 +210,7 @@
import entityTextMixin from "@mixins/entity/entityTextMixin";
import { mapState, mapActions } from "pinia";
import repoApi from "@apis/repoApi";
import { useEntityStore } from "@search/stores/entityStore";
/**
* @vue-data {Object|undefined} [entity=undefined] - موجودیت.

View File

@ -76,7 +76,7 @@ import entityApi from "~/apis/entityApi.js";
import { mapState } from "pinia";
import { cloneDeep } from "lodash";
import { useCommonStore } from "@stores/commonStore";
import { useEntityStore } from "@stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
/**
* @vue-prop {Object} [valueModal={}] - یک آبجکت از مقادیر مورد نیاز برای فیش
* @vue-data {undefined} [cloneActiveSchemaGetter=undefined] - یک کپی از ساختار صفحه

View File

@ -64,6 +64,7 @@ import repoApi from "~/apis/repoApi";
import { mapActions, mapState } from "pinia";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import { useEntityStore } from "@search/stores/entityStore";
import entityTextMixin from "~/mixins/entity/entityTextMixin";
/**

View File

@ -98,6 +98,7 @@
<script>
import { mapState, mapActions } from "pinia";
import toolsHeader from "~/json/entity/toolsHeader.json";
import { useEntityStore } from "@search/stores/entityStore";
export default {
props: {

View File

@ -83,6 +83,7 @@
import { mapState} from "pinia";
import Multiselect from "vue-multiselect";
import TripleSwitch from "~/components/TripleSwitch";
import { useEntityStore } from "@search/stores/entityStore";
export default {

View File

@ -20,9 +20,8 @@
<script>
import { mapState, mapActions } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import { useEntityStore } from "@search/stores/entityStore";
export default {
mounted() {
this.entity = this.selectedItemEntityGetter;

View File

@ -11,9 +11,8 @@
<script>
import { mapState, mapActions } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import { useEntityStore } from "@search/stores/entityStore";
export default {
mounted() {

View File

@ -234,7 +234,7 @@ import searchApi from "~/apis/searchApi";
import { mapActions, mapState } from "pinia";
import mammoth from "mammoth";
import { useSearchStore } from "@stores/searchStore";
import { useEntityStore } from "@stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
export default {
mounted() {

View File

@ -227,7 +227,7 @@
// import diff from "fast-diff";
// import { CodeDiff } from "v-code-diff";
import { mapState, mapActions } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
import { useCommonStore } from "~/stores/commonStore";
import entityTextMixin from "~/mixins/entity/entityTextMixin";
// import { p2e } from "~/services/persianNumber";

View File

@ -17,8 +17,7 @@
<script>
import { mapState, mapActions } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
import { useEntityStore } from "@search/stores/entityStore";
import { useCommonStore } from "~/stores/commonStore";
export default {

View File

@ -148,6 +148,7 @@ import { mapActions, mapState } from "pinia";
import entityApi from "@apis/entityApi";
import searchApi from "@apis/searchApi";
import repoApi from "@apis/repoApi";
import { useEntityStore } from "@search/stores/entityStore";
export default {
props: {

View File

@ -116,7 +116,7 @@
<script>
import { persianDateAndTime } from "@manuals/utilities";
import { mapState } from "pinia";
import { useEntityStore } from "@stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
export default {
props: ["entityId", "schemaItems"],

View File

@ -138,7 +138,7 @@
import { propertyMixin } from "~/entity/mixins/propertyMixin";
import { commonMixin } from "~/entity/mixins/commonMixin";
import { mapState } from "pinia";
import { useEntityStore } from "@stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
export default {
mixins: [propertyMixin, commonMixin],

View File

@ -64,7 +64,7 @@ import entityApi from "@apis/entityApi";
import { mapActions, mapState } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";

View File

@ -62,9 +62,7 @@
<script>
import { mapActions, mapState } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore"; // import entityViewMixin from "~/entity/mixins/entityViewMixin.js";
import { useEntityStore } from "@search/stores/entityStore";
import repoApi from "~/apis/repoApi";
/**

View File

@ -122,9 +122,8 @@
import entityApi from "~/apis/entityApi.js";
import { mapActions, mapState } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import { useEntityStore } from "@search/stores/entityStore";
import { cloneDeep } from "lodash";

View File

@ -29,7 +29,7 @@
<script>
import { mapState, mapActions } from "pinia";
import favoriteApi from "~/apis/favoriteApi";
import { useEntityStore } from "~/stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
export default {

View File

@ -0,0 +1,557 @@
<template>
<div
class="input-group"
@keyup="keyupdiv"
:style="{
showAppend: { 'box-shadow': '0 1px 3px rgba(23, 23, 23, 0.24)' },
}"
>
<div class="input-group-prepend">
<button
v-if="showPrepend"
dir="rtl"
class="btn d-flex align-items-center"
type="button"
id="button-addon2"
@click="searchNavigateList()"
>
جستجو
<span class="tavasi tavasi-Component-198--1"></span>
</button>
<span v-else style="opacity: 0">xxx</span>
</div>
<input
type="text"
v-model="localTextSearch"
@click="showHisory()"
@keyup.enter="prevSearchStart"
@keyup="toggleAutocomplete"
@keydown="onKeyDown()"
class="form-control"
id="search"
:placeholder="placeholder"
autocomplete="off"
ref="searchinput"
@focus="setInputFocus()"
@blur="inputfocused = false"
v-focus
/>
<div :class="[showAppend ? 'input-group-text' : 'input-group-append']">
<client-only>
<template v-if="showAppend">
<button
v-tooltip="'جستجو در خاصیت(فیلد) ویژه'"
class="btn dropdown-toggle dropdown-toggle-color rounded-0"
type="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
id="dropdownMenuButton12"
>
<span class="navItemlabel">
{{ domainActiveGetter?.label }}
</span>
</button>
<div class="dropdown-menu" aria-labelledby="dropdownMenuButton12">
<button
v-for="(navItem, index) in searchDomain"
:key="index"
type="button"
class="dropdown-item"
@click.prevent="setDomainField(navItem)"
>
{{ navItem.label }}
</button>
</div>
</template>
</client-only>
<button
v-if="showAppendSearchButton"
v-tooltip="'جستجو در خاصیت(فیلد) ویژه'"
@click.prevent="prevSearchStart()"
class="btn btn-primary search-icon"
>
<svg class="icon icon-Component-198--1">
<use xlink:href="#icon-Component-198--1"></use>
</svg>
<!-- <NuxtImg src="@assets/common/img/searchmajles.svg" alt="" /> -->
</button>
</div>
<div
v-if="inputPopupState == 3 && localListAutocomplate.length"
class="search-page__result firefox-scrollbar"
:class="{
show: localListAutocomplate.length,
}"
>
<!-- v-click-outside="onClickOutside" -->
<client-only>
<ul ref="auto_complate_ul">
<li v-for="(item, i) in localListAutocomplate" :key="i" :value="i">
<a @click.prevent="selectAutocomplate2(item)">
<span
class="text__14"
v-html="getHighlightAutocomplate(item)"
></span>
</a>
</li>
</ul>
</client-only>
</div>
<div v-if="inputPopupState == 1" class="search-page__result show">
<!-- v-click-outside="onClickOutside" -->
<client-only>
<template v-if="historySearch.length">
<div>
<div class="scrollbar">
<ul ref="his_ul">
<li v-for="(item, i) in historySearch" :key="i" :data-key="i">
<a @click.prevent="selectHistorySearch(item)">
<NuxtImg
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>
</template>
<template v-else>
<div class="scrollbar">
<ul ref="">
<li>
<p class="m-0 text__light">
<NuxtImg
src="assets/common/img/Component 359 2.svg"
alt=""
/>
<span class="text__14"> تاریخچه جستجو خالی می باشد </span>
</p>
</li>
</ul>
</div>
</template>
</client-only>
</div>
</div>
</template>
<script>
import { mapState } from "pinia";
import searchApi from "../../apis/searchApi.js";
import { useSearchStore } from "../../stores/searchStore";
// Vue.directive("click-outside", {
// bind(el, binding, vnode) {
// el.clickOutsideEvent = (event) => {
// if (!(el === event.target || el.contains(event.target))) {
// vnode.context[binding.expression](event);
// }
// };
// document.body.addEventListener("click", el.clickOutsideEvent);
// },
// unbind(el) {
// document.body.removeEventListener("click", el.clickOutsideEvent);
// },
// });
export default {
props: {
placeholder: {
default: "جستجو در هزاران محتوای قوانین و مقرارت",
},
contentKey: {
default: "qasection",
},
entityTheme: {
default: false,
},
showAppendSearchButton: {
default: true,
},
showPrepend: {
default: false,
},
showAppend: {
default: true,
},
textSearch: {
default: "",
},
modeInit: {
default: 0,
},
searchDomain: {
default() {
return [];
},
},
listAutocomplate: {
default() {
return [];
},
},
},
emits: ["getAutoComplateList"],
watch: {
modeInit(newVal = 1) {
this.mode = newVal;
},
textSearch(newVal) {
this.localTextSearch = newVal;
},
},
beforeMount() {
// this.inputPopupState = this.inputPopupState;
},
mounted() {
this.localTextSearch = this.textSearch;
if (window.localStorage.getItem([this.historySearchRecent])) {
try {
this.historySearch = JSON.parse(
window.localStorage.getItem([this.historySearchRecent])
);
} catch (e) {
window.localStorage.removeItem([this.historySearchRecent]);
}
}
},
beforeDestroy() {
window.removeEventListener("resize", this.handleResize);
window.removeEventListener("load", this.handleResize);
document.removeEventListener("click", this.handleClickOutside);
},
data() {
return {
localListAutocomplate: [],
typingTimer: undefined,
doneTypingInterval: 800,
localTextSearch: "",
historySearch: [],
inputPopupState: 0,
mode: 1,
tagLiSelected: null,
inputfocused: false,
isLastKeyCodeArrow: false,
historySearchRecent: "historysearchrecent",
};
},
computed: {
...mapState(useSearchStore, [
"domainActiveGetter",
"searchActiveTabGetter",
"searchSchemaGetter",
"searchSynonymTitleGetter",
]),
},
methods: {
/**
* تنظیم آیتم انتخاب شده و شروع جستجو.
* @param {Object} navItem - آیتم انتخابشده.
*/
setDomainField(navItem) {
this.$emit("onSetDomainField", navItem);
// this.prevSearchStart();
},
async getAutoComplateList() {
this.localListAutocomplate = [];
if (this.localTextSearch == "") return;
let index_key = this.contentKey;
if (!index_key) return;
let url = searchApi.search.autoComplate;
url = url.replace("{{appname}}", buildName());
url = url.replace("{{index_key}}", index_key);
url = url.replace("{{filter}}", "q=" + this.localTextSearch);
try {
const { $api } = useNuxtApp();
const response = await $api(url, {
baseURL: repoUrl(),
});
this.localListAutocomplate = response.hits?.hits;
this.inputPopupState = 3;
} catch (err) {}
},
onKeyDown() {
clearTimeout(this.typingTimer);
this.typingTimer = undefined;
},
/**
* کنترل تایمر تکمیل خودکار و ارسال کوئری.
* تایمر فعلی را پاک میکند و یک تایمر جدید با یک تاخیر مشخص تنظیم میکند تا کوئری را ارسال کند.
*/
toggleAutocomplete(event) {
// برای کلید حرکت پایین درخواست اضافی نرود
if (
event.keyCode === 40 ||
event.keyCode === 38 ||
event.keyCode === 13
) {
this.isLastKeyCodeArrow = event.keyCode === 40 || event.keyCode === 38;
return;
}
this.isLastKeyCodeArrow = false;
if (!this.inputfocused && this.inputPopupState === 3) {
return;
}
if (this.typingTimer) {
clearTimeout(this.typingTimer);
this.typingTimer = undefined;
} else {
this.typingTimer = setTimeout(() => {
this.getAutoComplateList();
this.typingTimer = undefined;
}, this.doneTypingInterval);
}
},
setInputFocus() {
this.inputfocused = true;
// this.inputPopupfocused=false
},
/**
* شروع جستجو را کنترل میکند.
* @event prevSearchStart
*/
prevSearchStart(event) {
if (
this.isLastKeyCodeArrow &&
event.keyCode === 13 &&
this.inputPopupState != 0
) {
this.selectAutocomplate2();
this.isLastKeyCodeArrow = false;
return;
}
this.tagLiSelected = null;
this.inputPopupState = 0;
this.addHistorySearch(this.localTextSearch);
let tt = myEncodeQuery(this.localTextSearch);
this.$emit("onSearchStart", tt);
// this.searchStart(tt);
},
/**
*نمایش سابقه جستجو.
*/
showHisory() {
setTimeout(() => {
if (this.localTextSearch == "") this.inputPopupState = 1;
else {
this.inputPopupState = 0;
this.tagLiSelected = null;
}
}, 100);
},
/**
* کنترل کلیکهای خارج از المان.
*/
keyupdiv(event) {
// 13:enter
// 8:backspace
if (this.inputfocused == false) return;
if (this.inputPopupState == 0 || this.inputPopupState == 2) return;
var el = "";
el =
this.inputPopupState == 1
? this.$refs["his_ul"]
: this.$refs["auto_complate_ul"];
if (!el || !el.firstChild) return;
const selectItem = (item) => {
this.tagLiSelected = item;
this.tagLiSelected?.classList.add("selected");
this.tagLiSelected?.focus();
};
// 40: arrow down
// 38: arrow up
if (this.inputfocused == true && event.keyCode === 40) {
if (this.tagLiSelected) {
this.tagLiSelected?.classList.remove("selected");
const next = this.tagLiSelected?.nextSibling || el.firstChild;
selectItem(next);
} else {
selectItem(el?.firstChild);
}
} else if (this.inputfocused == true && event.keyCode === 38) {
if (this.tagLiSelected) {
this.tagLiSelected?.classList.remove("selected");
const prev = this.tagLiSelected?.previousSibling || el.lastChild;
selectItem(prev);
} else {
selectItem(el?.lastChild);
}
}
// 46: delete
else if (this.inputfocused == true && event.keyCode === 46) {
let index = this.tagLiSelected?.getAttribute("data-key");
this.removeHistorySearch(index);
}
},
onClickOutside() {
if (this.inputPopupState == 1 || this.inputPopupState == 3) {
this.inputPopupState = 0;
this.tagLiSelected = null;
}
},
selectAutocomplate(item) {
this.tagLiSelected = null;
this.inputPopupState = 0;
this.localTextSearch = item;
this.$emit("onSearchStart", this.localTextSearch);
// this.$emit("onSearchStart", {
// textSearch: this.localTextSearch,
// searchItem: item,
// });
},
selectHistorySearch(item) {
this.localTextSearch = item;
this.$emit("onSearchStart", this.localTextSearch);
},
removeHistorySearch(x) {
this.tagLiSelected = null;
this.historySearch.splice(x, 1);
this.saveHistorySearch();
},
saveHistorySearch() {
const parsed = JSON.stringify(this.historySearch);
window.localStorage.setItem([this.historySearchRecent], parsed);
},
getHighlightAutocomplate(item) {
if (!item) return "";
let html = "";
let key = "title";
if (this.contentKey == "qasection" || this.contentKey == "rgsection") {
key = "qanon_title";
if (item?.highlight[key]) html = item.highlight[key][0];
if (!html) {
let key1 = key + ".ph";
if (item?.highlight[key1]) html = item.highlight[key1][0];
}
if (!html) {
let key1 = key + ".fa";
if (item?.highlight[key1]) html = item.highlight[key1][0];
}
let key2 = "ts_date";
if (item?._source[key2]) {
html += `<span style="color: #a7a098;"> - تاریخ: ${item._source[key2]}</span>`;
}
}
if (this.contentKey == "sanad") {
Object.values(item?.highlight).forEach((element, index) => {
html += element[0];
});
}
return html;
},
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();
},
saveHistorySearch() {
const parsed = JSON.stringify(this.historySearch);
window.localStorage.setItem([this.historySearchRecent], parsed);
},
selectAutocomplate2(item) {
if (!item) {
if (this.localListAutocomplate.length) {
item = this.localListAutocomplate[this.tagLiSelected?.value];
}
}
let key = "title";
if (this.contentKey == "qasection" || this.contentKey == "rgsection")
key = "qanon_title";
this.inputfocused = false;
this.searchinput?.blur();
this.localTextSearch = item?._source[key];
this.$emit("onSearchStart", this.localTextSearch);
// this.$emit("onSearchStart", {
// textSearch: this.localTextSearch,
// searchItem: item,
// });
if (!item) {
this.localTextSearch = this.tagLiSelected?.innerText;
this.addHistorySearch(this.localTextSearch);
let tt = myEncodeQuery(this.localTextSearch);
this.$emit("onSearchStart", tt);
// this.$emit("onSearchStart", { textSearch: tt, searchItem: item });
}
this.inputPopupState = 0;
this.tagLiSelected = null;
},
},
};
</script>
<style lang="scss" scoped>
.entityTheme {
.btn {
border-radius: 0.5rem 0 0 0.5rem !important;
}
}
.close {
svg {
font-size: 0.5em;
&:hover {
color: #ef4444 !important;
}
}
}
.search-page__result.show {
border-radius: 0.5em !important;
}
.input-group-text {
background-color: #fff !important;
}
</style>

View File

@ -403,10 +403,9 @@ import favoriteApi from "~/apis/favoriteApi";
import researchApi from "~/apis/researchApi";
import { mapState, mapActions } from "pinia";
import { useResearchStore } from "~/stores/researchStore";
import { useSearchStore } from "~/stores/searchStore";
import { useEntityStore } from "~/stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
import { useAuthStore } from "~/stores/authStore";
export default {
props: {
@ -477,8 +476,8 @@ export default {
};
},
computed: {
...mapState(useResearchStore, ["searchActiveTabGetter"]),
...mapState(useSearchStore, ["searchActiveTabGetter"]),
...mapState(useAuthStore, ["isRealUser"]),
},
methods: {
...mapActions(useEntityStore, ["SET_ITEM_ENTITY", "SET_LIST_ENTITY"]),
@ -814,7 +813,7 @@ export default {
},
components: {
lineContent: defineAsyncComponent(() =>
import("~/components/search/view/lineContent.vue")
import("@search/components/search/view/lineContent.vue")
),
},
};

View File

@ -187,8 +187,8 @@ import { mapState, mapActions } from "pinia";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import { useEntityStore } from "~/stores/entityStore";
import { useListStore } from "~/stores/listStore";
import { useEntityStore } from "@search/stores/entityStore";
import { useSearchStore } from "@search/stores/searchStore";
import apis from "~/apis/listApi";
import searchApis from "~/apis/searchApi";
@ -287,28 +287,26 @@ export default {
};
},
computed: {
...mapState(useCommonStore, ["getPanelStatus", "isSidebarCollapsed"]),
...mapState(useSearchStore, [
"searchListSchemaGetter",
"searchListActiveSchemaGetter",
"searchListActiveTabGetter",
]),
...mapState(useCommonStore, ["getPanelStatus", "isSidebarCollapsed"]),
...mapState(useListStore, [
"selectedProjectGetter",
"selectedItemGetter",
"isReturnFromItemshowPageGetter",
]),
},
methods: {
...mapActions(useCommonStore, ["TOGGLE_PANEL"]),
...mapActions(useListStore, [
...mapActions(useCommonStore, ["TOGGLE_PANEL","checkPermissions"]),
...mapActions(useSearchStore, [
"SET_SELECTED_PROJECT",
"SET_LIST_ID",
"SET_LIST",
"SET_SELECTED_ITEM",
"SET_CHART_DATA",
]),
...mapActions(useCommonStore, ["checkPermissions"]),
clearSearchAndGetList() {
this.searchText = "";
this.groups = [];

View File

@ -176,7 +176,7 @@
import apis from "~/apis/listApi";
import { mapState, mapActions } from "pinia";
import { useAuthStore } from "~/stores/authStore";
import { useListStore } from "~/stores/listStore";
import { useSearchStore } from "@search/stores/searchStore";
export default {
props: {
@ -263,11 +263,11 @@ export default {
},
computed: {
...mapState(useAuthStore, ["isGuest"]),
...mapState(useListStore, ["selectedProjectGetter", "selectedItemGetter"]),
...mapState(useSearchStore, ["selectedProjectGetter", "selectedItemGetter"]),
},
methods: {
...mapActions(useListStore, ["SET_SELECTED_PROJECT"]),
...mapActions(useSearchStore, ["SET_SELECTED_PROJECT"]),
pageChanged({ pageNumber, limit }) {
let page = paging.pageNumber;

View File

@ -89,9 +89,6 @@ import { mapState, mapActions } from "pinia";
import listApis from "~/apis/listApi";
import { useSearchStore } from "~/stores/searchStore";
// import { useCommonStore } from "~/stores/commonStore";
// import { useEntityStore } from "~/stores/entityStore";
import { useListStore } from "~/stores/listStore";
// import { VueTreeList, Tree, TreeNode } from "vue-tree-list";
@ -133,6 +130,8 @@ export default {
// },
},
mounted() {
this.httpService = useNuxtApp()["$http"];
// فهرست های تنقیح
if (
this.searchListActiveTabGetter?.items &&
@ -152,6 +151,7 @@ export default {
},
data() {
return {
httpService: undefined,
mainList: "",
listSelect: [],
filterUrl: "",
@ -205,7 +205,7 @@ export default {
// },
},
methods: {
...mapActions(useListStore, ["SET_SELECTED_PROJECT"]),
...mapActions(useSearchStore, ["SET_SELECTED_PROJECT"]),
callShowCategory() {
let newVal = !this.showCategory;
this.$emit("show-category", newVal);
@ -282,7 +282,10 @@ export default {
this.mainList = res.data;
this.treeItems = this.ConvertDataToTree(this.mainList);
this.$nextTick(() => {
this.clickItem(this.treeItems[0]);
});
} catch (err) {}
},
async getListURl(url) {
@ -294,12 +297,7 @@ export default {
// url = url.replace("{{sortby}}", sortby);
// url = url.replace("{{sortorder}}", sortorder);
try {
const { $api } = useNuxtApp();
const res = await $api(url, {
baseURL: baseUrl(),
});
this.httpService.getRequest(url).then((res) => {
if (res?.aggregations?.result) {
var lists = [];
res.aggregations.result.buckets.forEach((element) => {
@ -313,9 +311,12 @@ export default {
});
this.mainList = lists;
this.treeItems = this.ConvertDataToTree(this.mainList);
this.$nextTick(() => {
this.clickItem(this.treeItems[0]);
});
}
} catch (err) {}
});
},
async clickItem(event) {
@ -324,7 +325,10 @@ export default {
if (element?.children.length == 0) {
this.getChildren(element).then((res) => {
element.children = res;
if (this.$refs?.treelist)
this.$refs.treelist.updateChildren(element, element.children);
element.expanded = true;
this.addFilter(
@ -487,6 +491,11 @@ export default {
});
},
},
components: {
MyVueTreeList: defineAsyncComponent(() =>
import("@components/other/MyVueTreeList.vue")
),
},
};
</script>
<style lang="scss">

View File

@ -128,7 +128,7 @@
<script>
import { mapState, mapActions } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
/**
*
@ -473,6 +473,11 @@ export default {
else return item.doc_count;
},
},
components: {
SearchFilter: defineAsyncComponent(() =>
import("@search/components/search/SearchFilter.vue")
),
},
};
</script>

View File

@ -44,7 +44,7 @@
<script>
import { mapActions } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
export default {
props: {

View File

@ -0,0 +1,34 @@
[
{
"chartName": "گاه شمار ",
"chartkey": "time-line",
"componentName":"MyTimeLine",
"items": []
},
{
"chartName": "دایره ای",
"chartkey": "pie-chart",
"componentName":"HiChartPie"
},
{
"chartName": " میله ای",
"chartkey": "xy-chart",
"componentName":"HiChartXy"
},
{
"chartName": "نقشه جامع",
"chartkey": "Large-tree-map",
"componentName":"largeTreeMapChart"
},
{
"chartName": "نمودار درختی",
"chartkey": "tree-graph",
"componentName":"HiChartTreegraph"
},
{
"chartName": "گانت",
"chartkey": "gantt-graph",
"componentName":"Gantt"
}
]

View File

@ -0,0 +1,90 @@
[
{
"title": "عناوین اصلی",
"key": "title_main",
"items": [
{
"title": "عنوان",
"key": "title",
"type": "string"
},
{
"title": "دوره",
"key": "branch",
"type": "string"
},
{
"title": "جلسه",
"key": "meet_no",
"type": "string"
},
{
"title": "صاحب اثر",
"key": "author",
"type": "string"
},
{
"title": "تاریخ",
"key": "begin_date",
"type": "date"
},
{
"title": "کد داخلی",
"key": "meet_lid",
"type": "string"
},
{
"title": "نوع",
"key": "format",
"type": "string"
}
]
},
{
"title": "متن اصلی",
"key": "content",
"items": [
{
"title": "متن اصلی",
"key": "content",
"type": "text"
}
]
},
{
"title": "عناوین فرعی",
"key": "title_sub",
"items": [
{
"title": "عنوان موضوعی",
"key": "subtitle",
"type": "string"
},
{
"title": "پیوند",
"key": "link",
"type": "string"
},
{
"title": "شهر",
"key": "city",
"type": "string"
},
{
"title": "مکان",
"key": "place",
"type": "string"
},
{
"title": "نشانی",
"key": "address",
"type": "string"
},
{
"title": "تاریخ پایان",
"key": "end_date",
"type": "string"
}
]
}
]

View File

@ -0,0 +1,852 @@
[
{
"Eastern Mediterranean": {
"Afghanistan": {
"Communicable & other Group I": 102.5,
"Injuries": 47,
"Noncommunicable diseases": 110.4
},
"Bahrain": {
"Communicable & other Group I": 0.2,
"Injuries": 0.3,
"Noncommunicable diseases": 2.7
},
"Djibouti": {
"Communicable & other Group I": 3.4,
"Injuries": 0.7,
"Noncommunicable diseases": 3.1
},
"Egypt": {
"Communicable & other Group I": 63.5,
"Injuries": 31.6,
"Noncommunicable diseases": 476.3
},
"Iran (Islamic Republic of)": {
"Communicable & other Group I": 30.6,
"Injuries": 39.8,
"Noncommunicable diseases": 291.5
},
"Iraq": {
"Communicable & other Group I": 33,
"Injuries": 56.9,
"Noncommunicable diseases": 104.6
},
"Jordan": {
"Communicable & other Group I": 3.4,
"Injuries": 3.1,
"Noncommunicable diseases": 22.6
},
"Kuwait": {
"Communicable & other Group I": 0.9,
"Injuries": 1.3,
"Noncommunicable diseases": 7.4
},
"Lebanon": {
"Communicable & other Group I": 1.3,
"Injuries": 2.8,
"Noncommunicable diseases": 32.4
},
"Libyan Arab Jamahiriya": {
"Communicable & other Group I": 3,
"Injuries": 4.7,
"Noncommunicable diseases": 24.4
},
"Morocco": {
"Communicable & other Group I": 29.9,
"Injuries": 13.3,
"Noncommunicable diseases": 151.3
},
"Oman": {
"Communicable & other Group I": 1.5,
"Injuries": 2.1,
"Noncommunicable diseases": 8.4
},
"Pakistan": {
"Communicable & other Group I": 477.3,
"Injuries": 118.5,
"Noncommunicable diseases": 775
},
"Qatar": {
"Communicable & other Group I": 0.2,
"Injuries": 0.9,
"Noncommunicable diseases": 2.2
},
"Saudi Arabia": {
"Communicable & other Group I": 12.8,
"Injuries": 17.1,
"Noncommunicable diseases": 76.4
},
"Somalia": {
"Communicable & other Group I": 93.4,
"Injuries": 13.4,
"Noncommunicable diseases": 29.8
},
"South Sudan": {
"Communicable & other Group I": 79.9,
"Injuries": 14.7,
"Noncommunicable diseases": 35.9
},
"Sudan": {
"Communicable & other Group I": 109,
"Injuries": 40.3,
"Noncommunicable diseases": 151
},
"Syrian Arab Republic": {
"Communicable & other Group I": 7.8,
"Injuries": 68.1,
"Noncommunicable diseases": 68.9
},
"Tunisia": {
"Communicable & other Group I": 6.1,
"Injuries": 5.1,
"Noncommunicable diseases": 62.1
},
"United Arab Emirates": {
"Communicable & other Group I": 1,
"Injuries": 2.5,
"Noncommunicable diseases": 11.6
},
"Yemen": {
"Communicable & other Group I": 39.9,
"Injuries": 23.2,
"Noncommunicable diseases": 97.6
}
},
"Europe": {
"Albania": {
"Communicable & other Group I": 0.8,
"Injuries": 0.9,
"Noncommunicable diseases": 20.2
},
"Armenia": {
"Communicable & other Group I": 0.9,
"Injuries": 1.1,
"Noncommunicable diseases": 27.4
},
"Austria": {
"Communicable & other Group I": 1.5,
"Injuries": 4.5,
"Noncommunicable diseases": 72.9
},
"Azerbaijan": {
"Communicable & other Group I": 6.5,
"Injuries": 3.1,
"Noncommunicable diseases": 57.9
},
"Belarus": {
"Communicable & other Group I": 3.1,
"Injuries": 10.9,
"Noncommunicable diseases": 114.9
},
"Belgium": {
"Communicable & other Group I": 8.3,
"Injuries": 7.1,
"Noncommunicable diseases": 94.3
},
"Bosnia and Herzegovina": {
"Communicable & other Group I": 0.8,
"Injuries": 1.7,
"Noncommunicable diseases": 37
},
"Bulgaria": {
"Communicable & other Group I": 2.5,
"Injuries": 3.2,
"Noncommunicable diseases": 101.6
},
"Croatia": {
"Communicable & other Group I": 1.1,
"Injuries": 2.8,
"Noncommunicable diseases": 50.2
},
"Cyprus": {
"Communicable & other Group I": 0.3,
"Injuries": 0.4,
"Noncommunicable diseases": 7.4
},
"Czechia": {
"Communicable & other Group I": 5.6,
"Injuries": 5.4,
"Noncommunicable diseases": 99.9
},
"Denmark": {
"Communicable & other Group I": 3.2,
"Injuries": 2,
"Noncommunicable diseases": 45
},
"Estonia": {
"Communicable & other Group I": 0.4,
"Injuries": 0.7,
"Noncommunicable diseases": 13.9
},
"Finland": {
"Communicable & other Group I": 0.7,
"Injuries": 3,
"Noncommunicable diseases": 48.8
},
"France": {
"Communicable & other Group I": 36,
"Injuries": 35.7,
"Noncommunicable diseases": 487.1
},
"Georgia": {
"Communicable & other Group I": 1.4,
"Injuries": 1.8,
"Noncommunicable diseases": 46.2
},
"Germany": {
"Communicable & other Group I": 39.9,
"Injuries": 34.8,
"Noncommunicable diseases": 800.8
},
"Greece": {
"Communicable & other Group I": 4,
"Injuries": 3.3,
"Noncommunicable diseases": 113.4
},
"Hungary": {
"Communicable & other Group I": 2.3,
"Injuries": 5.6,
"Noncommunicable diseases": 116.1
},
"Iceland": {
"Communicable & other Group I": 0.1,
"Injuries": 0.1,
"Noncommunicable diseases": 1.8
},
"Ireland": {
"Communicable & other Group I": 1.5,
"Injuries": 1.4,
"Noncommunicable diseases": 27.1
},
"Israel": {
"Communicable & other Group I": 4.1,
"Injuries": 1.8,
"Noncommunicable diseases": 36.7
},
"Italy": {
"Communicable & other Group I": 28.3,
"Injuries": 23.8,
"Noncommunicable diseases": 573.3
},
"Kazakhstan": {
"Communicable & other Group I": 11,
"Injuries": 16.4,
"Noncommunicable diseases": 123.8
},
"Kyrgyzstan": {
"Communicable & other Group I": 3.8,
"Injuries": 3.1,
"Noncommunicable diseases": 30.5
},
"Latvia": {
"Communicable & other Group I": 0.8,
"Injuries": 1.5,
"Noncommunicable diseases": 26.6
},
"Lithuania": {
"Communicable & other Group I": 1.4,
"Injuries": 2.6,
"Noncommunicable diseases": 38
},
"Luxembourg": {
"Communicable & other Group I": 0.2,
"Injuries": 0.3,
"Noncommunicable diseases": 3.3
},
"Malta": {
"Communicable & other Group I": 0.2,
"Injuries": 0.1,
"Noncommunicable diseases": 3
},
"Montenegro": {
"Communicable & other Group I": 0.1,
"Injuries": 0.2,
"Noncommunicable diseases": 6.1
},
"Netherlands": {
"Communicable & other Group I": 8.5,
"Injuries": 7.2,
"Noncommunicable diseases": 130.8
},
"Norway": {
"Communicable & other Group I": 2.8,
"Injuries": 2.3,
"Noncommunicable diseases": 35.3
},
"Poland": {
"Communicable & other Group I": 15.1,
"Injuries": 22.6,
"Noncommunicable diseases": 350.5
},
"Portugal": {
"Communicable & other Group I": 10.4,
"Injuries": 4.4,
"Noncommunicable diseases": 90.3
},
"Republic of Moldova": {
"Communicable & other Group I": 1.9,
"Injuries": 2.3,
"Noncommunicable diseases": 39.9
},
"Romania": {
"Communicable & other Group I": 10.8,
"Injuries": 8.7,
"Noncommunicable diseases": 241.2
},
"Russian Federation": {
"Communicable & other Group I": 120.9,
"Injuries": 159.3,
"Noncommunicable diseases": 1719
},
"Serbia": {
"Communicable & other Group I": 2.5,
"Injuries": 3.4,
"Noncommunicable diseases": 99.9
},
"Slovakia": {
"Communicable & other Group I": 2.4,
"Injuries": 3,
"Noncommunicable diseases": 45.3
},
"Slovenia": {
"Communicable & other Group I": 1,
"Injuries": 1.4,
"Noncommunicable diseases": 17.5
},
"Spain": {
"Communicable & other Group I": 18.4,
"Injuries": 14.1,
"Noncommunicable diseases": 363.9
},
"Sweden": {
"Communicable & other Group I": 5.3,
"Injuries": 4.6,
"Noncommunicable diseases": 80.9
},
"Switzerland": {
"Communicable & other Group I": 2.7,
"Injuries": 4,
"Noncommunicable diseases": 58.5
},
"Tajikistan": {
"Communicable & other Group I": 12.2,
"Injuries": 4.4,
"Noncommunicable diseases": 29.8
},
"The former Yugoslav Republic of Macedonia": {
"Communicable & other Group I": 0.3,
"Injuries": 0.6,
"Noncommunicable diseases": 19.2
},
"Turkey": {
"Communicable & other Group I": 24.7,
"Injuries": 29.7,
"Noncommunicable diseases": 392.8
},
"Turkmenistan": {
"Communicable & other Group I": 5.5,
"Injuries": 3.1,
"Noncommunicable diseases": 32
},
"Ukraine": {
"Communicable & other Group I": 25.1,
"Injuries": 43.3,
"Noncommunicable diseases": 605.1
},
"United Kingdom": {
"Communicable & other Group I": 40,
"Injuries": 19.5,
"Noncommunicable diseases": 513.1
},
"Uzbekistan": {
"Communicable & other Group I": 27.7,
"Injuries": 13.2,
"Noncommunicable diseases": 149
}
},
"Africa": {
"Algeria": {
"Communicable & other Group I": 31.5,
"Injuries": 19.8,
"Noncommunicable diseases": 144.6
},
"Angola": {
"Communicable & other Group I": 210.9,
"Injuries": 36.6,
"Noncommunicable diseases": 93.9
},
"Benin": {
"Communicable & other Group I": 51.6,
"Injuries": 10.3,
"Noncommunicable diseases": 36.8
},
"Botswana": {
"Communicable & other Group I": 7.8,
"Injuries": 1.3,
"Noncommunicable diseases": 6.7
},
"Burkina Faso": {
"Communicable & other Group I": 87.5,
"Injuries": 18.3,
"Noncommunicable diseases": 51.6
},
"Burundi": {
"Communicable & other Group I": 59.4,
"Injuries": 12.6,
"Noncommunicable diseases": 32.5
},
"Cameroon": {
"Communicable & other Group I": 134.2,
"Injuries": 25.1,
"Noncommunicable diseases": 83.9
},
"Cape Verde": {
"Communicable & other Group I": 0.6,
"Injuries": 0.3,
"Noncommunicable diseases": 1.9
},
"Central African Republic": {
"Communicable & other Group I": 40.4,
"Injuries": 6.9,
"Noncommunicable diseases": 19.9
},
"Chad": {
"Communicable & other Group I": 118.8,
"Injuries": 17.3,
"Noncommunicable diseases": 45
},
"Comoros": {
"Communicable & other Group I": 2.8,
"Injuries": 0.7,
"Noncommunicable diseases": 2.4
},
"Congo": {
"Communicable & other Group I": 18.6,
"Injuries": 3.5,
"Noncommunicable diseases": 12.8
},
"Côte d'Ivoire": {
"Communicable & other Group I": 151.1,
"Injuries": 31.4,
"Noncommunicable diseases": 102.3
},
"Democratic Republic of the Congo": {
"Communicable & other Group I": 437.5,
"Injuries": 79.9,
"Noncommunicable diseases": 218
},
"Equatorial Guinea": {
"Communicable & other Group I": 4.4,
"Injuries": 0.9,
"Noncommunicable diseases": 3.4
},
"Eritrea": {
"Communicable & other Group I": 14.9,
"Injuries": 3.8,
"Noncommunicable diseases": 13.5
},
"Ethiopia": {
"Communicable & other Group I": 353,
"Injuries": 83.5,
"Noncommunicable diseases": 284.6
},
"Gabon": {
"Communicable & other Group I": 6.4,
"Injuries": 1.2,
"Noncommunicable diseases": 6.3
},
"Gambia": {
"Communicable & other Group I": 9,
"Injuries": 1.9,
"Noncommunicable diseases": 5.4
},
"Ghana": {
"Communicable & other Group I": 105.7,
"Injuries": 23.7,
"Noncommunicable diseases": 101.6
},
"Guinea": {
"Communicable & other Group I": 72.7,
"Injuries": 11.8,
"Noncommunicable diseases": 38.8
},
"Guinea-Bissau": {
"Communicable & other Group I": 11.4,
"Injuries": 1.7,
"Noncommunicable diseases": 5.6
},
"Kenya": {
"Communicable & other Group I": 174.9,
"Injuries": 36.3,
"Noncommunicable diseases": 106
},
"Lesotho": {
"Communicable & other Group I": 17.5,
"Injuries": 2,
"Noncommunicable diseases": 7.9
},
"Liberia": {
"Communicable & other Group I": 22.6,
"Injuries": 3.9,
"Noncommunicable diseases": 11.8
},
"Madagascar": {
"Communicable & other Group I": 74.9,
"Injuries": 16.7,
"Noncommunicable diseases": 68.3
},
"Malawi": {
"Communicable & other Group I": 92.9,
"Injuries": 12.7,
"Noncommunicable diseases": 48
},
"Mali": {
"Communicable & other Group I": 107.3,
"Injuries": 17.2,
"Noncommunicable diseases": 54.7
},
"Mauritania": {
"Communicable & other Group I": 16.5,
"Injuries": 3.2,
"Noncommunicable diseases": 11.7
},
"Mauritius": {
"Communicable & other Group I": 0.7,
"Injuries": 0.5,
"Noncommunicable diseases": 8.4
},
"Mozambique": {
"Communicable & other Group I": 170.1,
"Injuries": 26.2,
"Noncommunicable diseases": 90.8
},
"Namibia": {
"Communicable & other Group I": 8.3,
"Injuries": 1.6,
"Noncommunicable diseases": 6.7
},
"Niger": {
"Communicable & other Group I": 113.3,
"Injuries": 18.1,
"Noncommunicable diseases": 46.6
},
"Nigeria": {
"Communicable & other Group I": 1442.7,
"Injuries": 190.4,
"Noncommunicable diseases": 570.5
},
"Rwanda": {
"Communicable & other Group I": 28.8,
"Injuries": 10.7,
"Noncommunicable diseases": 31.9
},
"Sao Tome and Principe": {
"Communicable & other Group I": 0.5,
"Injuries": 0.1,
"Noncommunicable diseases": 0.6
},
"Senegal": {
"Communicable & other Group I": 43.5,
"Injuries": 10.9,
"Noncommunicable diseases": 37.5
},
"Seychelles": {
"Communicable & other Group I": 0.1,
"Injuries": 0.1,
"Noncommunicable diseases": 0.6
},
"Sierra Leone": {
"Communicable & other Group I": 54,
"Injuries": 9,
"Noncommunicable diseases": 28
},
"South Africa": {
"Communicable & other Group I": 234.8,
"Injuries": 42.6,
"Noncommunicable diseases": 260.6
},
"Swaziland": {
"Communicable & other Group I": 6.2,
"Injuries": 1.2,
"Noncommunicable diseases": 4.6
},
"Togo": {
"Communicable & other Group I": 33.7,
"Injuries": 6.9,
"Noncommunicable diseases": 23.5
},
"Uganda": {
"Communicable & other Group I": 154,
"Injuries": 36.2,
"Noncommunicable diseases": 100.9
},
"United Republic of Tanzania": {
"Communicable & other Group I": 226.3,
"Injuries": 46.3,
"Noncommunicable diseases": 142.5
},
"Zambia": {
"Communicable & other Group I": 77.8,
"Injuries": 12.6,
"Noncommunicable diseases": 37.7
},
"Zimbabwe": {
"Communicable & other Group I": 78.1,
"Injuries": null,
"Noncommunicable diseases": 40.5
}
},
"alii": {
"Albania": {
"Communicable & other Group I": 0.8,
"Injuries": 0.9,
"Noncommunicable diseases": 20.2
},
"Armenia": {
"Communicable & other Group I": 0.9,
"Injuries": 1.1,
"Noncommunicable diseases": 27.4
},
"Austria": {
"Communicable & other Group I": 1.5,
"Injuries": 4.5,
"Noncommunicable diseases": 72.9
},
"Azerbaijan": {
"Communicable & other Group I": 6.5,
"Injuries": 3.1,
"Noncommunicable diseases": 57.9
},
"Belarus": {
"Communicable & other Group I": 3.1,
"Injuries": 10.9,
"Noncommunicable diseases": 114.9
},
"Belgium": {
"Communicable & other Group I": 8.3,
"Injuries": 7.1,
"Noncommunicable diseases": 94.3
},
"Bosnia and Herzegovina": {
"Communicable & other Group I": 0.8,
"Injuries": 1.7,
"Noncommunicable diseases": 37
},
"Bulgaria": {
"Communicable & other Group I": 2.5,
"Injuries": 3.2,
"Noncommunicable diseases": 101.6
},
"Croatia": {
"Communicable & other Group I": 1.1,
"Injuries": 2.8,
"Noncommunicable diseases": 50.2
},
"Cyprus": {
"Communicable & other Group I": 0.3,
"Injuries": 0.4,
"Noncommunicable diseases": 7.4
},
"Czechia": {
"Communicable & other Group I": 5.6,
"Injuries": 5.4,
"Noncommunicable diseases": 99.9
},
"Denmark": {
"Communicable & other Group I": 3.2,
"Injuries": 2,
"Noncommunicable diseases": 45
},
"Estonia": {
"Communicable & other Group I": 0.4,
"Injuries": 0.7,
"Noncommunicable diseases": 13.9
},
"Finland": {
"Communicable & other Group I": 0.7,
"Injuries": 3,
"Noncommunicable diseases": 48.8
},
"France": {
"Communicable & other Group I": 36,
"Injuries": 35.7,
"Noncommunicable diseases": 487.1
},
"Georgia": {
"Communicable & other Group I": 1.4,
"Injuries": 1.8,
"Noncommunicable diseases": 46.2
},
"Germany": {
"Communicable & other Group I": 39.9,
"Injuries": 34.8,
"Noncommunicable diseases": 800.8
},
"Greece": {
"Communicable & other Group I": 4,
"Injuries": 3.3,
"Noncommunicable diseases": 113.4
},
"Hungary": {
"Communicable & other Group I": 2.3,
"Injuries": 5.6,
"Noncommunicable diseases": 116.1
},
"Iceland": {
"Communicable & other Group I": 0.1,
"Injuries": 0.1,
"Noncommunicable diseases": 1.8
},
"Ireland": {
"Communicable & other Group I": 1.5,
"Injuries": 1.4,
"Noncommunicable diseases": 27.1
},
"Israel": {
"Communicable & other Group I": 4.1,
"Injuries": 1.8,
"Noncommunicable diseases": 36.7
},
"Italy": {
"Communicable & other Group I": 28.3,
"Injuries": 23.8,
"Noncommunicable diseases": 573.3
},
"Kazakhstan": {
"Communicable & other Group I": 11,
"Injuries": 16.4,
"Noncommunicable diseases": 123.8
},
"Kyrgyzstan": {
"Communicable & other Group I": 3.8,
"Injuries": 3.1,
"Noncommunicable diseases": 30.5
},
"Latvia": {
"Communicable & other Group I": 0.8,
"Injuries": 1.5,
"Noncommunicable diseases": 26.6
},
"Lithuania": {
"Communicable & other Group I": 1.4,
"Injuries": 2.6,
"Noncommunicable diseases": 38
},
"Luxembourg": {
"Communicable & other Group I": 0.2,
"Injuries": 0.3,
"Noncommunicable diseases": 3.3
},
"Malta": {
"Communicable & other Group I": 0.2,
"Injuries": 0.1,
"Noncommunicable diseases": 3
},
"Montenegro": {
"Communicable & other Group I": 0.1,
"Injuries": 0.2,
"Noncommunicable diseases": 6.1
},
"Netherlands": {
"Communicable & other Group I": 8.5,
"Injuries": 7.2,
"Noncommunicable diseases": 130.8
},
"Norway": {
"Communicable & other Group I": 2.8,
"Injuries": 2.3,
"Noncommunicable diseases": 35.3
},
"Poland": {
"Communicable & other Group I": 15.1,
"Injuries": 22.6,
"Noncommunicable diseases": 350.5
},
"Portugal": {
"Communicable & other Group I": 10.4,
"Injuries": 4.4,
"Noncommunicable diseases": 90.3
},
"Republic of Moldova": {
"Communicable & other Group I": 1.9,
"Injuries": 2.3,
"Noncommunicable diseases": 39.9
},
"Romania": {
"Communicable & other Group I": 10.8,
"Injuries": 8.7,
"Noncommunicable diseases": 241.2
},
"Russian Federation": {
"Communicable & other Group I": 120.9,
"Injuries": 159.3,
"Noncommunicable diseases": 1719
},
"Serbia": {
"Communicable & other Group I": 2.5,
"Injuries": 3.4,
"Noncommunicable diseases": 99.9
},
"Slovakia": {
"Communicable & other Group I": 2.4,
"Injuries": 3,
"Noncommunicable diseases": 45.3
},
"Slovenia": {
"Communicable & other Group I": 1,
"Injuries": 1.4,
"Noncommunicable diseases": 17.5
},
"Spain": {
"Communicable & other Group I": 18.4,
"Injuries": 14.1,
"Noncommunicable diseases": 363.9
},
"Sweden": {
"Communicable & other Group I": 5.3,
"Injuries": 4.6,
"Noncommunicable diseases": 80.9
},
"Switzerland": {
"Communicable & other Group I": 2.7,
"Injuries": 4,
"Noncommunicable diseases": 58.5
},
"Tajikistan": {
"Communicable & other Group I": 12.2,
"Injuries": 4.4,
"Noncommunicable diseases": 29.8
},
"The former Yugoslav Republic of Macedonia": {
"Communicable & other Group I": 0.3,
"Injuries": 0.6,
"Noncommunicable diseases": 19.2
},
"Turkey": {
"Communicable & other Group I": 24.7,
"Injuries": 29.7,
"Noncommunicable diseases": 392.8
},
"Turkmenistan": {
"Communicable & other Group I": 5.5,
"Injuries": 3.1,
"Noncommunicable diseases": 32
},
"Ukraine": {
"Communicable & other Group I": 25.1,
"Injuries": 43.3,
"Noncommunicable diseases": 605.1
},
"United Kingdom": {
"Communicable & other Group I": 40,
"Injuries": 19.5,
"Noncommunicable diseases": 513.1
},
"Uzbekistan": {
"Communicable & other Group I": 27.7,
"Injuries": 13.2,
"Noncommunicable diseases": 149
}
}
}
]

View File

@ -0,0 +1,35 @@
[
{
"showOutside":true,
"show": false,
"icon": "tavasi tavasi-Component-71--1",
"title": "جزییات",
"to": {
"name": "undefined"
},
"selected": false,
"disabled": false,
"howToOpen": "",
"href": "",
"class": "btn show-detail-btn -rotate-180",
"action": "showDetails",
"can":""
},
{
"showOutside":true,
"show": true,
"icon": "eye-icon-ldpi",
"title": "نمایش",
"to": {
"name": "undefined"
},
"selected": false,
"disabled": false,
"howToOpen": "",
"href": "",
"class": "show-detail-btn -rotate-180",
"action": "show-text",
"can":"",
"isSvg":"true"
}
]

View File

@ -0,0 +1,36 @@
{
"reports": [
{
"icon": "Home-21",
"color": 1,
"link": "defaultRoute",
"actionMode": 1,
"title": "خانه",
"translateKey": "Home"
},
{
"icon": "Component-198--1",
"color": 3,
"link": "search",
"actionMode": 3,
"title": "جستجو",
"translateKey": "Search"
},
{
"icon": "Component-68--1",
"color": 3,
"link": "searchNavigation",
"actionMode": 3,
"title": "فهرست",
"translateKey": "List"
},
{
"icon": "reports",
"color": 3,
"link": "searchChart",
"actionMode": 3,
"title": "نمودار",
"translateKey": "Chart"
}
]
}

View File

@ -0,0 +1,362 @@
[
{
"title": "متن اصلی",
"items": [
{
"key": "mintro",
"label": "متن",
"type": "textarea",
"placeholder": "متن را اینجا بنویسید",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-12",
"rows": "20"
}
]
},
{
"title": "مشخصات اصلی",
"items": [
{
"key": "title",
"label": "عنوان",
"type": "string",
"placeholder": "عنوان را وارد کنید",
"required": "1",
"validation_regex": "[3-100]",
"validation_error": "عبارت باید حداقل 3 و حداکثر 100 حرف باشد",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "ts_ref",
"label": "مرجع تصویب",
"type": "string",
"placeholder": "عنوان را وارد کنید",
"required": "1",
"validation_regex": "[3-100]",
"validation_error": "عبارت باید حداقل 3 و حداکثر 100 حرف باشد",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "ts_date",
"label": "تاریخ تصویب",
"type": "string",
"placeholder": "تاریخ را وارد کنید",
"required": "1",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "ts_number",
"label": "شماره",
"type": "string",
"placeholder": "شماره نامه رسمی ",
"required": "1",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "main_type",
"label": "نوع",
"type": "select",
"placeholder": "انتخاب کنید",
"required": "1",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"labelClass": "col-md-3",
"inputClass": "col-md-3",
"options": [
{
"value": "قانون",
"title": "قانون"
},
{
"value": "مقرره",
"title": "مقرره"
},
{
"value": "طرح",
"title": "طرح"
},
{
"value": "لایحه",
"title": "لایح"
},
{
"value": "نظریه مشورتی",
"title": "نظریه مشورتی"
},
{
"value": "سایر",
"title": "سایر"
}
]
}
]
},
{
"title": "اطلاعات ابلاغ",
"items": [
{
"key": "eb_date",
"label": "تاریخ ابلاغ",
"type": "date",
"placeholder": "",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-3"
},
{
"key": "eb_from",
"label": "ابلاغ از",
"type": "string",
"placeholder": "ابلاغ کننده کیست",
"required": "0",
"validation_regex": "",
"validation_error": "عبارت باید حداقل 3 و حداکثر 200 حرف باشد",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "eb_to",
"label": "ابلاغ به",
"type": "string",
"placeholder": "ابلاغ به",
"required": "0",
"validation_regex": "",
"validation_error": "عبارت باید حداقل 3 و حداکثر 100 حرف باشد",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "eb_number",
"label": "شماره نامه",
"type": "string",
"placeholder": "انتخاب کنید",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "sh_date",
"label": "تاریخ تایید",
"type": "date",
"placeholder": "تاریخ تایید نهایی",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-3"
}
]
},
{
"title": "اطلاعات منبع",
"items": [
{
"key": "ref_url",
"label": "نشانی منبع",
"type": "string",
"placeholder": "لینک را وارد کنید",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "ref_key",
"label": "کلید منبع",
"type": "string",
"placeholder": "کلید انگلیسی",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "ref_date",
"label": "تاریخ انتشار در منبع",
"type": "date",
"placeholder": "تاریخ انتشار در سایت منبع",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-3"
},
{
"key": "ref_pdf",
"label": "فایل pdf",
"type": "string",
"placeholder": "نشانی پیوند فایل pdf در منبع",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
}
]
},
{
"title": "اطلاعات انتشار در روزنامه رسمی",
"items": [
{
"key": "rrk_date",
"label": "تاریخ انتشار",
"type": "date",
"placeholder": "انتخاب کنید",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-3"
},
{
"key": "rrk_url",
"label": "نشانی انتشار",
"type": "string",
"placeholder": "انتخاب کنید",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "rrk_number",
"label": "شماره انتشار",
"type": "string",
"placeholder": "انتخاب کنید",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "rrk_Vnumber",
"label": "شماره ویژه‌نامه",
"type": "string",
"placeholder": "انتخاب کنید",
"required": "0",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
}
]
},
{
"title": "سایر اطلاعات",
"items": [
{
"key": "tags",
"label": "برچسب ها",
"type": "string",
"placeholder": " بصورت مجزا با ، وارد کنید",
"required": "1",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "categories",
"label": "مکلفین",
"type": "string",
"placeholder": " بصورت مجزا با ، وارد کنید",
"required": "1",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "keywords",
"label": "واژگان کلیدی",
"type": "string",
"placeholder": " بصورت مجزا با ، وارد کنید",
"required": "1",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
},
{
"key": "subject",
"label": "موضوعات",
"type": "string",
"placeholder": " بصورت مجزا با ، وارد کنید",
"required": "1",
"validation_regex": "",
"validation_error": "",
"multi_select": "0",
"options": [],
"labelClass": "col-md-3",
"inputClass": "col-md-8"
}
]
}
]

View File

@ -0,0 +1,38 @@
{
"projects": {
"create": "",
"read": "",
"update": "",
"delete": ""
},
"list": {
"create": "list_create",
"read": "list_view",
"update": "",
"delete": ""
},
"folder": {
"create": "list_folder_new",
"read": "",
"update": "list_folder_edit",
"delete": ""
},
"info": {
"create": "item-subject_new",
"read": "",
"update": "list_info_edit",
"delete": "item-subject_delete"
},
"item": {
"create": "item_new",
"read": "item_view",
"update": "item-info_edit",
"delete": ""
},
"subject": {
"create": "subject_new",
"read": "subject_view",
"update": "",
"delete": ""
}
}

View File

@ -0,0 +1,12 @@
{
"reports": [
{
"icon": "Home-21",
"color": 1,
"link": "defaultRoute",
"actionMode": 1,
"title": "‌خانه",
"translateKey": "Dashboard"
}
]
}

View File

@ -0,0 +1,16 @@
[
{
"color": 1,
"icon": "reports",
"link": "managementReports",
"title": "آمار",
"translateKey": "Statistics"
},{
"color": 2,
"icon": "settings",
"link": "managementSetting",
"title": "تنظیمات",
"translateKey": "Settings"
}
]

View File

@ -0,0 +1,60 @@
[
{
"show": true,
"icon": "add-folder",
"title": "انتخاب برای موضوع",
"to": {
"name": "undefined"
},
"selected": false,
"disabled": false,
"howToOpen": "modal",
"href": "",
"class": "",
"action": "new-sub-folder"
},
{
"show": true,
"icon": "default",
"title": "اصلاح نیم فاصله ",
"to": {
"name": "undefined"
},
"selected": false,
"disabled": false,
"howToOpen": "inline",
"href": "",
"class": "",
"action": "rename"
},
{
"show": true,
"icon": "bin",
"title": "انتقال به کلمات حذفی ",
"to": {
"name": "undefined"
},
"selected": false,
"disabled": false,
"howToOpen": "modal",
"href": "",
"class": "",
"action": "remove"
},
{
"show": true,
"icon": "bin",
"title": "حذف از کلمات حذفی",
"to": {
"name": "undefined"
},
"selected": false,
"disabled": false,
"howToOpen": "modal",
"href": "",
"class": "",
"action": "import"
}
]

View File

@ -0,0 +1,87 @@
[
{
"showOutside":true,
"show": true,
"icon": "tavasi tavasi-Component-71--1",
"title": "جزییات",
"to": {
"name": "undefined"
},
"selected": false,
"disabled": false,
"howToOpen": "",
"href": "",
"class": "btn show-detail-btn -rotate-180",
"action": "showDetails",
"can":"subject-item-info_details"
},
{
"showOutside":true,
"show": true,
"icon": "tavasi tavasi-eye",
"title": "نمایش",
"to": {
"name": "undefined"
},
"selected": false,
"disabled": false,
"howToOpen": "",
"href": "",
"class": "show-detail-btn -rotate-180",
"action": "showText",
"can":"subject-item-info_text"
},
{
"showOutside":false,
"show": true,
"icon": "default",
"title": "موضوع",
"to": {
"name": "undefined"
},
"selected": false,
"disabled": false,
"howToOpen": "",
"href": "",
"class": "",
"action": "showSubjectForm",
"can":"subject-item-subject_new"
},
{
"showOutside":false,
"show": true,
"icon": "default",
"title": "ویرایش",
"to": {
"name": "undefined"
},
"selected": false,
"disabled": false,
"howToOpen": "",
"href": "",
"class": "edit-btn",
"action": "togglePanel",
"can": "subject-item-info_edit"
},
{
"showOutside":false,
"show": true,
"icon": "default",
"title": "حذف",
"to": {
"name": "undefined"
},
"selected": false,
"disabled": false,
"howToOpen": "",
"href": "",
"class": "delete-btn",
"action": "delete-table-item",
"can": "subject-item-info_delete"
}
]

View File

@ -0,0 +1,53 @@
[
{
"title": "مشخصات",
"key": "specifications",
"options": [
{
"key": "meet_code",
"label": "کد جلسه",
"type": "string"
},
{
"key": "meet_no",
"label": "شماره جلسه",
"type": "string"
},
{
"key": "author",
"label": "پدید آورندگان",
"type": "string"
},
{
"key": "begin_date",
"label": "تاریخ تولید",
"type": "date"
},
{
"key": "branch",
"label": "مجموعه",
"type": "string"
},
{
"key": "format",
"label": "نوع سند",
"type": "string"
},
{
"key": "attendees",
"label": "حاضرین",
"type": "string"
},
{
"key": "mintro",
"label": "چکیده اثر",
"type": "string"
},
{
"key": "mindex",
"label": "فهرست",
"type": "textarea"
}
]
}
]

View File

@ -1,10 +1,6 @@
<template>
<main :class="$route.name">
<the-sidebar
:showUserAvatar="true"
:menu="$attrs.menu"
@statusPag="statusPag"
></the-sidebar>
<main >
<the-sidebar :showUserAvatar="true" :menu="$attrs.menu"></the-sidebar>
<section
class="main-page__content"
@ -18,8 +14,9 @@
<script>
// import { mapActions, mapState } from "pinia";
// import { useCommonStore } from "~/stores/commonStore";
import {clearBodyClass} from "@manuals/utilities"
import { useCommonStore } from "~/stores/commonStore";
import { clearBodyClass } from "@manuals/utilities";
import { mapState } from "pinia";
export default {
beforeMount() {
@ -38,6 +35,9 @@ export default {
uuid: undefined,
};
},
computed: {
...mapState(useCommonStore, ["isSidebarCollapsed"]),
},
// methods: {
// ...mapActions(useCommonStore, ["setBodyClass"]),
// },

View File

@ -1,241 +0,0 @@
<!-- layouts/default.vue -->
<template>
<div>
<header v-if="buildName() != 'majles'">
<!-- //////////////////// begin navbar //////////////////// -->
<nav
class="navbar navbar-expand-md navbar-light bg-light"
:class="{ expanded: !isSidebarCollapsed }"
>
<!-- sidebar menu toggler -->
<button-component
@click="sidebarCollapsedSetter(false)"
classes="p-0 d-lg-none"
buttonText=""
>
<svg class="icon icon-Component-68--1">
<use xlink:href="#icon-Component-68--1"></use>
</svg>
</button-component>
<a
class="navbar-brand d-none d-lg-inline-block"
style="color: #00b6e3"
>{{ navTitle }}</a
>
<a class="navbar-brand d-lg-none" style="color: #00b6e3">{{
navShortTitle
}}</a>
<button
class="navbar-toggler"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation"
>
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse" id="navbarSupportedContent">
<div class="collapse-mobile-header">
<div>
<img
src="assets/common/img/logo/gray-logo.png"
alt="هم فهمی"
class="img-fluid"
style="width: 2em; filter: invert(0)"
/>
هم فهمی
</div>
<button
class="btn p-0 me-auto"
type="button"
data-bs-toggle="collapse"
data-bs-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent"
aria-expanded="false"
aria-label="Toggle navigation"
>
<svg class="icon icon-Component-71--1">
<use xlink:href="#icon-Component-71--1"></use>
</svg>
</button>
</div>
<ul class="navbar-nav ms-auto me-md-5">
<!-- <li class="nav-item active">
<a class="nav-link" href="#"
>پیشخوان <span class="sr-only">(current)</span></a
>
</li> -->
<!-- <li class="nav-item">
<a class="nav-link" href="#">سامانهها</a>
</li> -->
<li class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
id="navbarDropdown"
role="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
>
{{ $t("Systems") }}
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<!-- <my-system class="list" layout="list"></my-system> -->
</div>
</li>
<li class="nav-item dropdown">
<a
class="nav-link dropdown-toggle"
href="#"
id="navbarDropdown"
role="button"
data-bs-toggle="dropdown"
aria-haspopup="true"
aria-expanded="false"
>
{{ $t("Portal") }}
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
<a
class="dropdown-item"
href="http://pub.hamfahmi.ir/public"
target="_blank"
>{{ $t("PersonalFolder") }}</a
>
<a
class="dropdown-item"
href="http://pub.hamfahmi.ir/wiki"
target="_blank"
>{{ $t("WikiFarhangestan") }}</a
>
<a
class="dropdown-item"
href="http://pub.hamfahmi.ir:91/"
target="_blank"
>{{ $t("ResearchPortal") }}</a
>
<a
class="dropdown-item"
href="http://pub.hamfahmi.ir:94/"
target="_blank"
>{{ $t("ResearchSoftware") }}</a
>
</div>
</li>
</ul>
<ul class="navbar-nav ms-md-3 me-auto">
<li class="nav-item">
<notification></notification>
</li>
<li class="nav-item">
<select-language-dropdown
toggleClass="dropdown-toggle"
></select-language-dropdown>
</li>
<li class="nav-item">
<user-avatar-dropdown
class="position-static"
></user-avatar-dropdown>
</li>
</ul>
</div>
</nav>
<!-- //////////////////// end navbar //////////////////// -->
</header>
<!-- <the-sidebar :showUserAvatar="true" :menu="menu"></the-sidebar> -->
<the-sidebar
:showUserAvatar="true"
:menu="$attrs.menu"
@statusPag="statusPag"
></the-sidebar>
<main class="main-page__content" :class="{ expanded: !isSidebarCollapsed }">
<!-- <div class="pages list-page"> -->
<!-- <div class="pages-content align-items-stretch p-0"> -->
<!-- <div class="flex-grow-1"> -->
<slot></slot>
<!-- </div> -->
<!-- </div> -->
<!-- </div> -->
</main>
</div>
</template>
<script>
import { mapState, mapActions } from "pinia";
import { useCommonStore } from "~/stores/commonStore";
import {clearBodyClass} from "@manuals/utilities"
export default {
mounted() {
// this.setBodyClass("default-dashboard");
},
beforeUnmount() {
this.sidebarMenuSetter();
},
data() {
return {
menu: undefined,
// #region mehdi
statusPag: 0,
nomber: 0,
statusPagHedear: 1,
// #endregion
};
},
computed: {
...mapState(useCommonStore, [
"getPanelStatus",
"getRefreshForm",
"isSidebarCollapsed",
"sidebarMenuGetter",
]),
navTitle() {
return import.meta.env.VITE_TITLE;
},
navShortTitle() {
return import.meta.env.VITE_SHORT_TITLE;
},
// sidbarMenu() {
// if (buildName() == "majles") return majlesMenu;
// return monirMenu;
// },
},
methods: {
...mapActions(useCommonStore, [
"setBodyClass",
"TOGGLE_PANEL",
"sidebarCollapsedSetter",
"SET_SIDEBAR_LIST_STATUS",
"sidebarMenuSetter",
]),
showPortal() {
return buildName() == "monir" && buildState() != 2;
},
},
};
</script>
<style lang="scss">
@import "../assets/default-dashboard/scss/default-dashboard";
</style>
<style scoped lang="scss">
.dropdown-menu {
float: right;
min-width: 13rem;
font-size: 0.9rem;
border: none;
border-radius: 0.1em;
text-align: right;
min-width: 20em;
}
</style>

View File

@ -1,4 +1,5 @@
import { mapState, mapActions } from "pinia";
import { useEntityStore } from "@search/stores/entityStore";
export default {
data() {

View File

@ -1,7 +1,7 @@
// import HttpService from "~/services/httpService";
import { mapState, mapActions } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useListStore } from "~/stores/listStore";
import { useEntityStore } from "@search/stores/entityStore";
import { useSearchStore } from "@search/stores/searchStore";
export default {
// mounted() {
@ -31,7 +31,7 @@ export default {
...mapState(useEntityStore, ["activeTabGetter"]),
},
methods: {
...mapActions(useListStore, ["SET_SELECTED_ITEM"]),
...mapActions(useSearchStore, ["SET_SELECTED_ITEM"]),
openModal({ ev, modal, modalTitle, property = null, index = -1 }) {
this.modal = modal;
this.modal_data.entity = this.entity;

View File

@ -1,5 +1,5 @@
import apis from "~/apis/listApi";
import { useListStore } from "~/stores/listStore";
import { useSearchStore } from "@search/stores/searchStore";
interface FormData {
id: string | number;
@ -48,7 +48,7 @@ export const moveFromFolderToFolder = async (
cloneId: string | number,
toId: string | number
) => {
const myStore = useListStore();
const myStore = useSearchStore();
const formData = {
id: cloneId,
newparent: toId ?? 0,
@ -59,7 +59,7 @@ export const moveFromFolderToFolder = async (
};
export const moveFromFolderToRoot = async (cloneId: string | number) => {
const myStore = useListStore();
const myStore = useSearchStore();
const formData = {
id: cloneId,
newparent: 0,
@ -73,7 +73,7 @@ export const moveFromRootToFolder = async (
cloneId: string | number,
toId: string | number
) => {
const myStore = useListStore();
const myStore = useSearchStore();
const formData = {
id: cloneId,
newparent: toId ?? 0,
@ -110,7 +110,7 @@ export const moveItem = async (formData: FormData) => {
};
export const addItemToList = async (itemId: string, listId: string) => {
const myStore = useListStore();
const myStore = useSearchStore();
const payload = {
itemid: itemId,
listid: listId,
@ -144,7 +144,7 @@ export const updateOrder = async (
listArray: [],
index: number
) => {
const myStore = useListStore();
const myStore = useSearchStore();
const payload = {
id: list.id,
offset: type === "move-up" ? -1 : 1,

View File

@ -427,7 +427,7 @@
<script>
import { mapActions, mapState } from "pinia";
import { useEntityStore } from "~/stores/entityStore";
import { useEntityStore } from "@search/stores/entityStore";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
@ -1592,6 +1592,9 @@ export default {
},
components: {
AutoComplation: defineAsyncComponent(() =>
import("../../../../../../components/global/AutoComplation.vue")
),
EntityQaRelation: defineAsyncComponent(() =>
import("~/components/entity/components/EntityQaRelation.vue")
),

View File

@ -245,13 +245,14 @@
<script>
import { mapState, mapActions } from "pinia";
import searchApis from "~/apis/searchApi";
import chartType from "~/json/search/json/chart.json";
import searchApis from "@search/apis/searchApi";
import chartType from "@search/json/search/json/chart.json";
import sidbarMenuDefault from "~/json/search/json/menu.json";
import sidbarMenuMin from "~/json/search/json/sidbarMenuMin.json";
import sidbarMenuDefault from "@search/json/search/json/menu.json";
import sidbarMenuMin from "@search/json/search/json/sidbarMenuMin.json";
import tableActions from "~/json/search/json/listTableContextMenu";
import tableActions from "@search/json/search/json/listTableContextMenu";
import { useSearchStore } from "@search/stores/searchStore";
export default {
name: "searchChart",
@ -412,8 +413,10 @@ export default {
},
},
methods: {
...mapActions(useListStore, ["SET_SELECTED_PROJECT", "SET_LIST"]),
...mapActions(useSearchStore, [
"SET_SELECTED_PROJECT",
"SET_LIST",
"searchChartActiveSchemaSetter",
"searchChartSchemaSetter",
"searchChartActiveTabSetter",

View File

@ -1,5 +1,5 @@
<template>
<NuxtLayout name="search-layout" :menu="sidbarMenu">
<SearchLayout :menu="sidbarMenu">
<!-- <Head> -->
<!-- <Title>{{ metaTitle }}</Title> -->
<!-- <Meta name="description" :content="title" /> -->
@ -81,6 +81,7 @@
aria-expanded="false"
id="dropdownSearchMenu"
>
<client-only>
<span class="navItemlabel">
{{
searchActiveTabGetter?.searchType.find(
@ -88,7 +89,9 @@
)?.label || "نوع جستجو"
}}
</span>
</client-only>
</button>
<div
class="dropdown-menu"
aria-labelledby="dropdownSearchMenu"
@ -118,9 +121,11 @@
type="button"
@click.prevent="showSynonymModal"
>
<client-only>
<span class="navItemlabel">
{{ searchTypeItem.item?.label }}
</span>
</client-only>
</button>
<select
v-else-if="searchTypeItem.item.type == 'select'"
@ -273,7 +278,9 @@
active: navbarKey == getNavbarKey(navItem),
}"
>
<client-only>
{{ navItem.label }}
</client-only>
</button>
</li>
@ -298,6 +305,7 @@
class="dropdown-menu"
aria-labelledby="dropdownMenuButton"
>
<client-only>
<template
v-for="(navItem, index) in searchSchemaGetter"
:key="index"
@ -312,6 +320,7 @@
>{{ navItem.label }}</a
>
</template>
</client-only>
</div>
</div>
</li>
@ -354,12 +363,14 @@
aria-expanded="false"
id="dropdownSortMenu"
>
<client-only>
<span class="navItemlabel">
{{
sortList.find((item) => item.list_key === sortKey)
?.title || "نوع مرتب‌سازی"
}}
</span>
</client-only>
</button>
<div
class="dropdown-menu"
@ -469,6 +480,7 @@
id="dropdownSearchMenu"
data-bs-toggle="dropdown"
>
<client-only>
<span class="navItemlabel">
{{
searchActiveTabGetter?.searchType.find(
@ -476,6 +488,7 @@
)?.label || "نوع جستجو"
}}
</span>
</client-only>
</button>
<div
class="dropdown-menu"
@ -506,9 +519,11 @@
type="button"
@click.prevent="showSynonymModal"
>
<client-only>
<span class="navItemlabel">
{{ searchTypeItem.item?.label }}
</span>
</client-only>
</button>
<div
@ -556,12 +571,14 @@
aria-expanded="false"
id="dropdownSortMenu"
>
<client-only>
<span class="navItemlabel">
{{
sortList.find((item) => item.list_key === sortKey)
?.title || "نوع مرتب‌سازی"
}}
</span>
</client-only>
</button>
<div
class="dropdown-menu"
@ -770,16 +787,17 @@
<!-- <template v-slot:footer> This is a new modal footer. </template> -->
</base-modal-v2>
</NuxtLayout>
</SearchLayout>
</template>
<script>
import { mapActions, mapState } from "pinia";
import { useSearchStore } from "~/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import searchApi from "~/apis/searchApi";
import adminApi from "~/apis/adminApi";
import sidbarMenuDefault from "~/json/search/json/menu.json";
import { useStorage } from "@vueuse/core";
import { mapActions, mapState } from "pinia";
import { useSearchStore } from "../../stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import searchApi from "../../apis/searchApi.js";
import adminApi from "~/apis/adminApi";
import sidbarMenuDefault from "../../json/search/json/menu.json";
export default {
name: "search",
@ -2005,24 +2023,36 @@ export default {
},
},
components: {
AutoComplation: defineAsyncComponent(() =>
import("@search/components/global/AutoComplation.vue")
),
MyContent: defineAsyncComponent(() =>
import("~/components/search/MyContent.vue")
import("@search/components/search/MyContent.vue")
),
FilterListSearch: defineAsyncComponent(() =>
import("~/components/search/view/FilterListSearch.vue")
import("@search/components/search/view/FilterListSearch.vue")
),
SwitchComponent: defineAsyncComponent(() =>
import("~/components/global/SwitchComponent.vue")
),
SynonymSearch: defineAsyncComponent(() =>
import("~/components/search/forms/SynonymSearch.vue")
import("@search/components/search/forms/SynonymSearch.vue")
),
AdvancedSearch: defineAsyncComponent(() =>
import("~/components/research/components/AdvancedSearch.vue")
import("@search/components/search/view/SearchAdvancedSearch.vue")
),
TripleSwitch: defineAsyncComponent(() =>
import("~/components/global/TripleSwitch.vue")
),
SearchLayout: defineAsyncComponent(() =>
import("@search/layouts/SearchLayout.vue")
),
SwitchWithIcon: defineAsyncComponent(() =>
import("@components/other/SwitchWithIcon.vue")
),
SearchSummary: defineAsyncComponent(() =>
import("@search/components/search/view/SearchSummary.vue")
),
},
};
</script>

View File

@ -1,5 +1,5 @@
<template>
<NuxtLayout name="search-layout" :menu="sidbarMenu">
<SearchLayout :menu="sidbarMenu">
<div class="searchNavigation">
<div class="container-fluid">
<div class="row main-page__content-header">
@ -453,13 +453,13 @@
ref="content"
></component> -->
<item-details
<search-item-details
v-if="showDetailsPanel"
:key="formRerrenderer"
:selectedItem="rowItem"
@open-form="openForm"
@close-detail-panel="showDetailsPanel = false"
></item-details>
></search-item-details>
</template>
<no-data v-else>
<p class="text-center p-3">عدم دسترسی</p>
@ -505,22 +505,21 @@
</div>
</div>
</div>
</NuxtLayout>
</SearchLayout>
</template>
<script>
import tableActions from "~/json/search/json/listTableContextMenu";
import tableActions from "@search/json/search/json/listTableContextMenu";
import { mapState, mapActions } from "pinia";
import searchApis from "~/apis/searchApi";
import searchApis from "@search/apis/searchApi";
import sidbarMenuDefault from "~/json/search/json/menu.json";
import sidbarMenuMin from "~/json/search/json/sidbarMenuMin.json";
import sidbarMenuDefault from "@search/json/search/json/menu.json";
import sidbarMenuMin from "@search/json/search/json/sidbarMenuMin.json";
// import menu from "~/json/reports/menu.json";
import { useSearchStore } from "~/stores/searchStore";
import { useSearchStore } from "@search/stores/searchStore";
import { useCommonStore } from "~/stores/commonStore";
import { useEntityStore } from "~/stores/entityStore";
import { useListStore } from "~/stores/listStore";
import { useEntityStore } from "@search/stores/entityStore";
export default {
name: "searchNavigation",
@ -792,8 +791,7 @@ export default {
"searchListActiveTabGetter",
"selectionFilterItemsGetter",
"searchListActiveTabGetter",
]),
...mapState(useListStore, [
"listComponentNameGetter",
"selectedProjectGetter",
"listIdGetter",
@ -869,8 +867,7 @@ export default {
"searchListSchemaSetter",
"searchListActiveTabSetter",
"selectionFilterItemsSetter",
]),
...mapActions(useListStore, [
"SET_LIST_COMPONENT_NAME",
"SET_SELECTED_ITEM",
"SET_SELECTED_PROJECT",
@ -1811,6 +1808,56 @@ export default {
}, 500);
},
},
components: {
SearchFilterModal: defineAsyncComponent(() =>
import("@search/components/search/forms/SearchFilterModal.vue")
),
SearchSubjectForm: defineAsyncComponent(() =>
import("@search/components/search/forms/SearchSubjectForm.vue")
),
SearchItemDetails: defineAsyncComponent(() =>
import("@search/components/search/SearchItemDetails.vue")
),
SearchFilter: defineAsyncComponent(() =>
import("@search/components/search/SearchFilter.vue")
),
CategoryList: defineAsyncComponent(() =>
import("@search/components/search/view/CategoryList.vue")
),
SearchNavigationFilter: defineAsyncComponent(() =>
import("@search/components/search/SearchNavigationFilter.vue")
),
AutoComplation: defineAsyncComponent(() =>
import("@search/components/global/AutoComplation.vue")
),
MyContent: defineAsyncComponent(() =>
import("@search/components/search/MyContent.vue")
),
FilterListSearch: defineAsyncComponent(() =>
import("@search/components/search/view/FilterListSearch.vue")
),
SwitchComponent: defineAsyncComponent(() =>
import("~/components/global/SwitchComponent.vue")
),
SynonymSearch: defineAsyncComponent(() =>
import("@search/components/search/forms/SynonymSearch.vue")
),
AdvancedSearch: defineAsyncComponent(() =>
import("@search/components/search/view/SearchAdvancedSearch.vue")
),
TripleSwitch: defineAsyncComponent(() =>
import("~/components/global/TripleSwitch.vue")
),
SearchLayout: defineAsyncComponent(() =>
import("@search/layouts/SearchLayout.vue")
),
SwitchWithIcon: defineAsyncComponent(() =>
import("@components/other/SwitchWithIcon.vue")
),
SearchSummary: defineAsyncComponent(() =>
import("@search/components/search/view/SearchSummary.vue")
),
},
};
</script>
<style lang="scss">

View File

@ -1,5 +1,4 @@
import type {
ActiveEntityViewSchema,
activeResearchType,
ActiveTab,
EntityViewSchema,
@ -19,12 +18,9 @@ export const useEntityStore = defineStore("entityStore", {
"draftActiveSchema",
"draftSaveBoxSchema",
"diffType",
"activeTab",
"isReadingMode",
"entityViewSchema",
"activeEntityViewSchema",
"qruleActiveTab",
"qruleSchema",
@ -35,9 +31,7 @@ export const useEntityStore = defineStore("entityStore", {
],
},
state: () => ({
activeTab: undefined as ActiveTab | undefined,
entityViewSchema: undefined as EntityViewSchema | undefined,
activeEntityViewSchema: undefined as ActiveEntityViewSchema | undefined,
selectedItemEntity: undefined as SelectedItemEntity | undefined,
listEntity: undefined as ListEntity | undefined,
similarInfo: {} as SimilarInfo | undefined,
@ -65,7 +59,6 @@ export const useEntityStore = defineStore("entityStore", {
// draft law
qruleSchema: undefined,
diffType: undefined,
queryParams: undefined,
statusRemovCheckBox: undefined,
requestSimilar: false, // این متغییر دیگه نباید استفاده شود
@ -103,15 +96,11 @@ export const useEntityStore = defineStore("entityStore", {
breadCrumbGetter(state) {
return state.breadCrumb;
},
activeTabGetter(state) {
return state.activeTab;
},
entityViewSchemaGetter(state) {
return state.entityViewSchema;
},
activeEntityViewSchemaGetter(state) {
return state.activeEntityViewSchema;
},
qruleActiveTabGetter(state) {
return state.qruleActiveTab;
},
@ -181,15 +170,11 @@ export const useEntityStore = defineStore("entityStore", {
if (!newItem) this.breadCrumb = [];
else this.breadCrumb = [...this.breadCrumb, newItem];
},
activeTabSetter(activeTab = undefined) {
this.activeTab = activeTab;
},
entityViewSchemaSetter(entityViewSchema = undefined) {
this.entityViewSchema = entityViewSchema;
},
activeEntityViewSchemaSetter(activeEntityViewSchema = undefined) {
this.activeEntityViewSchema = activeEntityViewSchema;
},
qruleActiveTabSetter(qruleActiveTab = undefined) {
this.qruleActiveTab = qruleActiveTab;
},
@ -199,9 +184,7 @@ export const useEntityStore = defineStore("entityStore", {
qruleActiveSchemaSetter(qruleActiveSchema = undefined) {
this.qruleActiveSchema = qruleActiveSchema;
},
diffTypeSetter(diffType) {
this.diffType = diffType;
},
SET_ITEM_ENTITY(item) {
this.selectedItemEntity = item;

View File

@ -13,10 +13,30 @@ import type {
selectionFilterItems,
} from "~/types/searchTypes";
import type {
isReturnFromItemshowPage,
list,
listComponentName,
listId,
projects,
selectedItem,
selectedProject,
} from "~/types/listTypes";
export const useSearchStore = defineStore("searchStore", {
persist: {
storage: piniaPluginPersistedstate.localStorage(),
}, state: () => ({
selectedProject: undefined as selectedProject | undefined,
isReturnFromItemshowPage: false as isReturnFromItemshowPage,
list: undefined as list | undefined,
listId: undefined as listId | undefined,
listComponentName: "ItemList" as listComponentName | undefined,
projects: [] as projects[],
// pieData: [],
selectedItem: undefined as selectedItem | undefined,
domainActive: undefined as Domain | undefined,
// activeTab: undefined,
@ -40,6 +60,28 @@ export const useSearchStore = defineStore("searchStore", {
selectionFilterItems: [] as selectionFilterItems,
}),
getters: {
projectsGetter(state) {
return state.projects;
},
selectedProjectGetter(state) {
return state.selectedProject;
},
listIdGetter(state) {
return state.listId;
},
listComponentNameGetter(state) {
return state.listComponentName;
},
selectedItemGetter(state) {
return state.selectedItem;
},
isReturnFromItemshowPageGetter(state) {
return state.isReturnFromItemshowPage;
},
listGetter(state) {
return state.list;
},
searchSynonymTitleGetter(state) {
return state.searchSynonymTitle;
},
@ -97,6 +139,28 @@ export const useSearchStore = defineStore("searchStore", {
},
},
actions: {
SET_SELECTED_PROJECT(selectedProject = undefined) {
this.selectedProject = selectedProject;
},
SET_LIST_ID(listId = undefined) {
this.listId = listId;
},
SET_LIST_COMPONENT_NAME(
payload = { selectedItem: undefined, listComponentName: undefined }
) {
this.selectedItem = payload.selectedItem;
this.listComponentName = payload.listComponentName;
},
SET_SELECTED_ITEM(selectedItem = undefined) {
this.selectedItem = selectedItem;
},
SET_IS_RETURN_FROM_ITEM_SHOW_PAGE(isReturnFromItemshowPage = false) {
this.isReturnFromItemshowPage = isReturnFromItemshowPage;
},
SET_LIST(list = undefined) {
this.list = list;
},
searchSynonymFormSetter(searchSynonymForm = undefined) {
this.searchSynonymForm = searchSynonymForm;
},