search_ui/mixins/entity/propertyModalMixin.js

92 lines
2.5 KiB
JavaScript
Raw Normal View History

2025-02-01 11:06:10 +00:00
// import HttpService from "~/services/httpService";
import { mapState, mapActions } from "pinia";
2025-02-11 07:09:05 +00:00
import { useEntityStore } from "@search/stores/entityStore";
import { useSearchStore } from "@search/stores/searchStore";
2025-02-01 11:06:10 +00:00
export default {
// mounted() {
// this.httpService = new HttpService(
// import.meta.env.VITE_REPO_BASE_URL + this.$route.meta.slug
// );
// },
data() {
return {
// httpService: undefined,
showModal: false,
modal: undefined,
modal_title: null,
modal_data: {
entity: {},
keyName: "",
index: -1,
tabKey: "",
},
errors: {},
};
},
computed: {
...mapState(useEntityStore, ["activeTabGetter"]),
},
methods: {
2025-02-11 07:09:05 +00:00
...mapActions(useSearchStore, ["SET_SELECTED_ITEM"]),
2025-02-01 11:06:10 +00:00
openModal({ ev, modal, modalTitle, property = null, index = -1 }) {
this.modal = modal;
this.modal_data.entity = this.entity;
this.modal_data.index = index;
this.modal_data.keyName = property;
this.modal_data.tabKey = this.activeTabGetter?.key;
if (modalTitle) {
this.modal_title = modalTitle;
} else {
this.modal_title = ev.target?.title ?? "بدون عنوان";
}
this.SET_SELECTED_ITEM(this.entity);
this.beforeShowModal();
},
beforeShowModal() {
this.showModal = true;
// setTimeout(() => {
// $("#jahat-modal").modal(
// { backdrop: "static", keyboard: false },
// "show"
// );
// }, 500);
},
closeModal() {
// $("#jahat-modal").modal("hide");
this.$emit("close-modal");
// setTimeout(() => {
this.showModal = false;
this.render++;
// this.getEntity();
// }, 500);
},
updateOrNewProperty(item) {
if (item.entity) this.entity = item.entity;
else {
// این حالت دیگه نباید لازم باشه ... چون حالت بالا پیش فرض از بک فرستاده می شود
let index = item.index;
let key = item.keyName;
let value = item.data[key];
if (key in this.entity) {
if (this.entity[key] instanceof Array) {
if (index > -1 && index < this.entity[key].length)
this.entity[key][index] = value;
else this.entity[key].push(value);
} else this.entity[key] = value;
} else this.entity[key] = value;
}
this.closeModal();
},
getComponent() {
return this.modal;
},
},
};