// // import Vue from "vue"; import { convertEnToPe } from "~/manuals/persianNumber"; // import { mapState } from "pinia"; // import Cookies from "js-cookie"; import { useCommonStore } from "~/stores/commonStore"; import { useAuthStore } from "~/stores/authStore"; // // ...mapState("common", ["activeSystemGetter"]), export const appDescription = () => { return import.meta.env.VITVITE_DESCRIPTION_BUILD_NAME ?? "monir"; }; export const buildName = () => { return import.meta.env.VITE_BUILD_NAME ?? "monir"; }; export const logoPhoto = () => { if (buildName() == "majles") return import("assets/majles/img/logo_200x200_green.png"); return import("assets/common/img/logo/logo.png"); }; export const appLongTitle = () => { return import.meta.env.VITE_TITLE ?? "زیست بوم تحریر"; }; export const appShortTitle = () => { return import.meta.env.VITE_SHORT_TITLE ?? "زیست بوم تحریر"; }; export const buildState = () => { return import.meta.env.VITE_BUILD_STATE ?? 0; }; export const isMajlesBuild = () => { return buildName() == "majles" && buildState() == 1; }; export const isAdmin = () => { const authStore = useAuthStore(); return authStore.currentUser?.user_level > 1; }; export const AddButtonText = () => { return import.meta.env.VITE_NEW_TEXT; }; export const EditButtonText = () => { return import.meta.env.VITE_EDIT_TEXT; }; // export const pageFormTitle = () => { // return this.$route.meta.pageFormTitle; // }; // export const pageName = () => { // return this.$route.meta.breadcrumb; // }; // export const getHtmlTooltip = (section, key, id) => { // let res = {}; // let link = ""; // if (id) link = location.origin + "/" + key + "/" + id; // if (section == "search") { // if (key == "search_type") { // res = { // html: // "
" + // "برای یافتن بهترین پاسخ، روش جستجو را تعیین میکند" + // "
" + // ' بیشتر ... ', // }; // } // } // if (section == "entity") { // } // return res; // }; export const tahrirUrl = () => { return import.meta.env.VITE_TAHRIR_BASE_URL + "/"; }; export const messageUrl = () => { return import.meta.env.VITE_MESSAGE + "/"; }; export const loginUrl = () => { return import.meta.env.VITE_AUTH + "/"; }; export const keyValueUrl = () => { return import.meta.env.VITE_KEY_VALUE + "/"; }; export const permitUrl = () => { return import.meta.env.VITE_PERMIT + "/"; }; export const repoUrl = () => { return import.meta.env.VITE_REPO + "/"; }; export const listUrl = () => { return import.meta.env.VITE_LIST + "/"; }; export const taskUrl = () => { return import.meta.env.VITE_TASK + "/"; }; export const logUrl = () => { return import.meta.env.VITE_LOG + "/"; }; export const fileUrl = () => { return import.meta.env.VITE_FILE + "/"; }; export const baseUrl = () => { return import.meta.env.BASE_URL; }; // // ...mapActions(["SET_PWA_ISTALL_PROMPT_EVENT"]), export const setDocumentTitle = (data, key1 = "title") => { let title = ""; if (data) { let dataWithSource = data; if ("_source" in data) { dataWithSource = { ...dataWithSource, ...dataWithSource._source }; } title = appShortTitle(); if (key1 in dataWithSource) title = dataWithSource[key1]; // else if (key2 in dataWithSource) title = dataWithSource[key2]; // else title = dataWithSource[key3]; // this.$nextTick(() => { document.title = title; //appShortTitle() + "-" + // }); } else document.title = appShortTitle(); }; // export const canUpdateInShowPage = (elemnt_key = undefined) => { // const authStore = useAuthStore(); // const CommonStore = useCommonStore(); // if (authStore.currentUser.user_level > 1) return true; // if (elemnt_key) { // // کلید واحد کامل با توجه به صفحه // const res = CommonStore.userPermisionGetter?.includes(elemnt_key + "_update"); // return res; // } // const routeName = this.$route.name; // const routekey = this.$route.params.key; // if (routeName == "answersShow") { // const res = CommonStore.userPermisionGetter?.includes( // "answers-properties_update" // ); // return res; // } // if (routeName == "issuesShow") { // const res = CommonStore.userPermisionGetter?.includes( // "issues-properties_update" // ); // return res; // } // if (routeName == "critionsShow") { // const res = CommonStore.userPermisionGetter?.includes( // "critions-properties_update" // ); // return res; // } // if (routekey == "mqsection" || routekey == "qsection") { // const res = CommonStore.userPermisionGetter?.includes(routekey + "_update"); // return res; // } else { // return CommonStore.userPermisionGetter?.includes(routeName + "_update"); // } // }; export const copyToClipboard = async ( id = undefined, domainUrl = undefined ) => { try { const _id = id ? "/" + id : ""; let url = location.href; if (domainUrl) { url = location.origin + domainUrl; } await navigator.clipboard.writeText(url + _id); mySwalToast({ html: "نشانی پیوند کپی شد.", }); } catch (err) { console.log(err.message); mySwalToast({ html: "خطایی رخ داد.لطفا دوباره امتحان کنید.", }); } }; export const copyTextToClipboard = async (text) => { try { await navigator.clipboard.writeText(text); mySwalToast({ html: "متن کپی شد.", }); } catch (err) { console.log(err.message); mySwalToast({ html: "خطایی رخ داد.لطفا دوباره امتحان کنید.", }); } }; // // for firefox browser that does nt support pwa installation. export const alertPwaNotSupported = () => { if (isMajlesBuild()) return; const vm = this; mySwalConfirm({ title: "توجه!", html: `مرورگر شما امکان نصب سامانه در صفحه گوشی یا رایانه شما را نمی دهد. درصورت تمایل به نصب سامانه، از مرورگر گوگل کروم یا مایکروسافت اج استفاده نمایید. `, showCancelButton: true, confirmButtonText: "باشه", cancelButtonText: "فعلا نمی خوام", }); // .then((result) => { // if (result.isConfirmed) { // vm.dismissPwaInstallationBox(365); // } // }); }; export const identifyBrowser = () => { var ua = navigator.userAgent; var tem; var M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || []; if (/trident/i.test(M[1])) { tem = /\brv[ :]+(\d+)/g.exec(ua) || []; return "IE " + (tem[1] || ""); } if (M[1] === "Chrome") { tem = ua.match(/\b(OPR|Edge)\/(\d+)/); if (tem != null) return tem.slice(1).join(" ").replace("OPR", "Opera"); } M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, "-?"]; if ((tem = ua.match(/version\/(\d+)/i)) != null) M.splice(1, 1, tem[1]); return M.join(" "); }; export const dismissPwaInstallationBox = async (time) => { const CommonStore = useCommonStore(); // Cookies.set("add-to-home-screen", null, { expires: +time }); CommonStore.SET_PWA_INSTALL_PROMPT_EVENT(null); }; export const installPwa = async () => { const vm = this; const CommonStore = useCommonStore(); CommonStore.getPwaInstallPromptEvent.prompt(); // Wait for the user to respond to the prompt CommonStore.getPwaInstallPromptEvent.userChoice.then((choice) => { if (choice.outcome === "accepted") { console.log("User accepted"); } else { console.log("User dismissed"); } }); }; export const userFullname = (user) => { if (user?.first_name || user?.last_name) return user?.first_name + " " + user?.last_name; else return user?.username; }; export const userAvatar = (user = undefined) => { if (user) { try { if (user?.avatar && user?.avatar?.length) { return ( import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_NAME + fileUrl() + user.avatar ); } else { let initials = ""; if (user.first_name) initials += user?.first_name.charAt(0); if (user.last_name) initials += user?.last_name.charAt(0); if (initials == "") initials = user?.username?.charAt(0) + user?.username?.charAt(1); return generateAvatarFromChars(initials); } } catch (err) { return import("~/assets/common/img/user.svg"); } } return import("~/assets/common/img/user.svg"); }; export const generateAvatarFromChars = ( text, foregroundColor = "white", backgroundColor = "#00b6e3" ) => { const canvas = document.createElement("canvas"); const context = canvas.getContext("2d"); canvas.width = 100; canvas.height = 100; // Draw background context.fillStyle = backgroundColor; context.fillRect(0, 0, canvas.width, canvas.height); // Draw text context.font = "normal 2.5rem sahel-bold"; context.fillStyle = foregroundColor; context.textAlign = "center"; context.textBaseline = "middle"; context.direction = "rtl"; context.fillText(text.trim(), canvas.width / 2, canvas.height / 2); return canvas.toDataURL("image/png"); }; export const logout = (route = undefined) => { const authStore = useAuthStore(); // const route = useRoute(); const router = useRouter(); authStore.logout(); if (route) { router.push({ name: "login", params: route.params, query: { redirectBack: true, path: route.fullPath, }, }); } else { router.push({ name: "login", }); } }; export const redirectToRouteName = (routeName = "dashboard") => { const router = useRouter(); router.push({ name: routeName }).then(() => { // if (routeName === 'dashboard') // clearBodyClass(); }); }; export const getGroupAvatar = (user = undefined) => { try { if (user) { if (isValidHttpUrl(user.avatar)) return user.avatar; else { if ("title" in user) { const nameArray = user.title?.split(" "); if (nameArray?.length > 1) { const initials = nameArray[0].charAt(0) + nameArray[1].charAt(0); return generateAvatarFromChars(initials); } else { const initials = nameArray[0].charAt(0); return generateAvatarFromChars(initials); } } } } } catch (err) { return import("~/assets/common/img/default.svg").default; } }; export const convertUnixToPersianDateTime = (created_at) => { if (created_at) { const currentDate = new Date(); const currentYear = currentDate.getFullYear(); const currentMonth = currentDate.getMonth(); const currentDay = currentDate.getDate(); const currentHours = currentDate.getHours(); const currentMinutes = currentDate.getMinutes(); const currentSeconds = currentDate.getSeconds(); const updatedAtDate = new Date(created_at * 1000); const updatedAtYear = updatedAtDate.getFullYear(); const updatedAtMonth = updatedAtDate.getMonth(); const updatedAtDay = updatedAtDate.getDate(); const updatedAtHours = updatedAtDate.getHours(); const updatedAtMinutes = updatedAtDate.getMinutes(); const updatedAtSeconds = updatedAtDate.getSeconds(); let yr = updatedAtYear - currentYear !== 0 ? Math.abs(updatedAtYear - currentYear) : 0; if (yr) return convertEnToPe(yr) + " سال پیش"; let mon = updatedAtMonth - currentMonth !== 0 ? Math.abs(updatedAtMonth - currentMonth) : 0; if (mon) return convertEnToPe(mon) + " ماه پیش"; let dy = updatedAtDay - currentDay !== 0 ? Math.abs(updatedAtDay - currentDay) : 0; if (dy) { if (dy % 7 === 0) return convertEnToPe(dy) + " هفته پیش"; else return convertEnToPe(dy) + " روز پیش"; } let sec = updatedAtSeconds - currentSeconds !== 0 ? Math.abs(updatedAtSeconds - currentSeconds) : 0; let _seconds = ""; if (sec) _seconds = " چند لحظه پیش"; let min = updatedAtMinutes - currentMinutes !== 0 ? Math.abs(updatedAtMinutes - currentMinutes) : 0; let _minutes = ""; if (min) _minutes = convertEnToPe(min) + " دقیقه پیش"; let hr = updatedAtHours - currentHours !== 0 ? Math.abs(updatedAtHours - currentHours) : 0; if (hr) { // if (min) { // return convertEnToPe(hr) + " ساعت و " + _minutes // }; return convertEnToPe(hr) + " ساعت پیش "; } if (!min && sec) return _seconds; return _minutes; } else { return "تاریخ نامعتبر"; } }; // export const deletePaper = (url, { isowner, title, guid }) => { // let html = ` //${title}
//${title}
//