fixed faq bugs
This commit is contained in:
+1
-1
@@ -129,7 +129,7 @@
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
<span class="absolute top-[0.9vw] w-[1.5vw] text-center left-[0.4vw] text-[#383E43] font-bold thin text-[0.833vw]">{{props.course.averageRating}}</span>
|
||||
<span class="absolute top-[1.3vw] md:top-[0.9vw] w-[1.5vw] text-center left-[3.7vw] md:left-[0.4vw] text-[#383E43] font-bold thin md:text-[0.833vw]">{{props.course.averageRating}}</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -47,7 +47,6 @@
|
||||
const props = defineProps(['item']);
|
||||
const router = useRouter()
|
||||
const route = useRoute()
|
||||
console.log(props);
|
||||
const change = () =>{
|
||||
router.replace(`/${props.item.id}`)
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<img src="/public/images/HeaderBg.jpg" class="absolute top-0 left-0 w-full h-full object-cover -z-[1] scale-x-[-1] md:scale-x-[1]" alt="">
|
||||
<div class=" flex w-[81.04%] text-white">
|
||||
<div class="flex flex-col text-start">
|
||||
<h2 class="w-[25vw] text-[5.751vw] md:text-[2.188vw] font-bold mt-[25vw] md:mt-[0.052vw]">
|
||||
<h2 class="md:w-[25vw] text-[5.751vw] md:text-[2.188vw] font-bold mt-[25vw] md:mt-[0.052vw]">
|
||||
{{ headers.data?.value.header }}
|
||||
</h2>
|
||||
<p class="hidden md:block mt-[1.25vw] text-[1.055vw] leading-[30.38px] mb-[2.917vw]">
|
||||
|
||||
@@ -409,7 +409,7 @@
|
||||
{{ item.headline }}
|
||||
</div>
|
||||
<div class="flexBox gap-[1vw] md:gap-[0.3vw]">
|
||||
02:24
|
||||
{{ convertStoMs(item.time) }}
|
||||
<svg
|
||||
class="h-[4.359vw] w-[4.359vw] md:h-[0.99vw] md:w-[0.99vw]"
|
||||
viewBox="0 0 19 20"
|
||||
@@ -456,7 +456,7 @@
|
||||
class="flex justify-between text-[3.19vw] md:text-[0.833vw] font-semibold text-[#383E43]"
|
||||
>
|
||||
<span class="text-[3.59vw] md:text-[0.938vw]">پیشرفت شما</span>
|
||||
<span>{{ progress.completionPercentage }}%</span>
|
||||
<span>{{ Math.floor(progress.completionPercentage) }}%</span>
|
||||
</div>
|
||||
<div
|
||||
id="progressbar"
|
||||
@@ -500,24 +500,36 @@ const { data, refresh } = await useFetch("/api/courseHeadlines", {
|
||||
id: route.params.product,
|
||||
},
|
||||
});
|
||||
function convertStoMs(seconds) {
|
||||
let minutes = Math.floor(seconds / 60);
|
||||
let extraSeconds = seconds % 60;
|
||||
minutes = minutes < 10 ? "0" + minutes : minutes;
|
||||
return (
|
||||
minutes +
|
||||
":" +
|
||||
(extraSeconds < 10
|
||||
? "0" + Math.floor(extraSeconds)
|
||||
: Math.floor(extraSeconds))
|
||||
);
|
||||
}
|
||||
|
||||
async function addToProgress() {
|
||||
await $fetch("/api/progressCounter", {
|
||||
method: "POST",
|
||||
body: {
|
||||
id: route.query.episode,
|
||||
},
|
||||
});
|
||||
}
|
||||
await $fetch("/api/progressCounter", {
|
||||
method: "POST",
|
||||
body: {
|
||||
id: route.query.episode,
|
||||
},
|
||||
});
|
||||
}
|
||||
import progressAlert from "@/components/progressAlert.vue";
|
||||
const handleVideoEnded = async () => {
|
||||
|
||||
addToProgress();
|
||||
|
||||
reload();
|
||||
if (process.client) {
|
||||
document.querySelector(".next").classList.remove("hidden");
|
||||
}
|
||||
toast.success('ویدیو به پایان رسید');
|
||||
toast.success("ویدیو به پایان رسید");
|
||||
};
|
||||
|
||||
const sendComment = async () => {
|
||||
@@ -567,7 +579,6 @@ if (query.value.hasOwnProperty("episode")) {
|
||||
fileName: fimd.videoUrl,
|
||||
},
|
||||
});
|
||||
console.log("video", getUrl.data.value.url);
|
||||
url.value = getUrl.data.value.url;
|
||||
index.value = data.value.indexOf(fimd);
|
||||
refresh();
|
||||
@@ -602,21 +613,21 @@ async function chengeVideo(item) {
|
||||
|
||||
await refresh();
|
||||
}
|
||||
console.log("yek", data.value[index.value]);
|
||||
|
||||
async function nextHandler() {
|
||||
if (process.client) {
|
||||
document.querySelector(".next").classList.add("hidden");
|
||||
}
|
||||
query.value = { ...route.query, episode: data.value[index.value + 1].id };
|
||||
index.value = index.value + 1;
|
||||
console.log("index", index);
|
||||
|
||||
// const addToProgress = await $fetch("/api/progressCounter", {
|
||||
// method: "POST",
|
||||
// body: {
|
||||
// id: route.query.episode,
|
||||
// },
|
||||
// });
|
||||
addToProgress()
|
||||
addToProgress();
|
||||
activeHead.value = data.value[index.value];
|
||||
const getUrl = await useFetch("/api/checkMedia", {
|
||||
query: {
|
||||
|
||||
@@ -147,5 +147,4 @@
|
||||
|
||||
<script setup>
|
||||
const props = defineProps(['props'])
|
||||
|
||||
</script>
|
||||
@@ -262,6 +262,8 @@
|
||||
import { useToast } from "vue-toastification";
|
||||
const { authUser } = useAuth();
|
||||
const props = defineProps(["props"], ["access"]);
|
||||
|
||||
|
||||
const toast = useToast()
|
||||
const router = useRouter()
|
||||
const paymentHandler = (id) => {
|
||||
|
||||
@@ -61,8 +61,8 @@
|
||||
class="mt-[3vw] md:mt-[0.7vw] h-[2.051vw] md:h-[0.521vw] rounded-[2vw] md:rounded-[0.521vw]"
|
||||
>
|
||||
<div
|
||||
:class="`w-[${props.props.completionPercentage}%]`"
|
||||
|
||||
|
||||
:style="{ width: activeClass + '%' }"
|
||||
class="rounded-[2vw] md:rounded-[0.521vw] h-[2.051vw] md:h-[0.521vw]"
|
||||
>
|
||||
<!-- {{props.props.completionPercentage}} -->
|
||||
@@ -75,7 +75,7 @@
|
||||
<script setup>
|
||||
const adad = 2;
|
||||
const props = defineProps(['props'])
|
||||
|
||||
const activeClass = ref(props.props.completionPercentage);
|
||||
|
||||
</script>
|
||||
<style scoped>
|
||||
|
||||
@@ -17,35 +17,15 @@
|
||||
>توضیحات</span
|
||||
>
|
||||
</div>
|
||||
<p class="mt-[4vw] md:mt-[2.1vw] thin">
|
||||
{{props.props.description}}
|
||||
</p>
|
||||
<p class="mt-[3.4vw] thin">
|
||||
شینان در کنار شماست تا بدون سردرگمی و گشتن بین آموزش های مختلف، کامل
|
||||
ترین و تخصصی ترین آموزش HTML رو دریافت کنید و مزه ی یک آموزش اصولی و
|
||||
یادگیری راحت رو بچشید و خیلی زود قدم های بعدی رو بردارید تا به شغل ها
|
||||
و درآمدهای بالا برسید.
|
||||
</p>
|
||||
|
||||
<p class="text-[4.038vw] md:text-[1.335vw] mt-[10vw] md:mt-[4.8vw]">
|
||||
این دوره برای چه کسانی مناسب هست؟
|
||||
</p>
|
||||
<p class="mt-[5vw] md:mt-[2.2vw] thin">اگر :</p>
|
||||
<ul class="ms-[3vw] md:ms-[1vw] list-disc thin">
|
||||
<li>به حوزه فرانت اند و طراحی رابط کاربری (UI) علاقه دارید</li>
|
||||
<li>دوست دارید صفحات سایت خودتون رو شخصا به شکل دلخواه تغییر بدید</li>
|
||||
<li>
|
||||
قصد دارید سایت هارو آنالیز کنید یا از ساختار اونها ایده بگیرید
|
||||
</li>
|
||||
<li>
|
||||
قصد دارید یک برنامه نویس وب (طراح سایت و اپلیکیشن تحت وب) بشید
|
||||
</li>
|
||||
<li>دوست دارید کدهای بهینه تولید کنید تا سئوی قوی تری داشته باشید</li>
|
||||
</ul>
|
||||
|
||||
<div class="descriptions mt-[4vw] md:mt-[2.1vw] thin">
|
||||
</div>
|
||||
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
const props = defineProps(['props'])
|
||||
|
||||
if (process.client) {
|
||||
document.querySelector('.descriptions').innerHTML = props.props.description;
|
||||
}
|
||||
</script>
|
||||
@@ -2,28 +2,26 @@
|
||||
<div class="w-full relative flex h-[86.41vw] md:h-[40.625vw]">
|
||||
<NuxtImg
|
||||
:placeholder="[30, 20]"
|
||||
:src="props.props.image"
|
||||
:src="props.props?.image"
|
||||
alt="html"
|
||||
class="absolute h-[86.41vw] md:h-[40.625vw] top-0 left-0 w-full object-cover brightness-75"
|
||||
/>
|
||||
<div class="mt-[14vw] ms-[9.5vw] z-[1] text-white">
|
||||
<h1 class="text-[5.751vw] md:text-[1.69vw] font-[600] -tracking-[0.05vw]">
|
||||
{{ props.props.name }}
|
||||
{{ props.props?.name }}
|
||||
</h1>
|
||||
<p class="text-[3.19vw] md:text-[0.833vw] mt-[0.6vw] text-[#E5E5E5]">
|
||||
{{ props.props.categories[0].name }}
|
||||
</p>
|
||||
<p
|
||||
class="hidden md:block w-[39.896vw] text-[1.055vw] leading-[1.582vw] mt-[1.2vw]"
|
||||
>
|
||||
{{ props.props.description }}
|
||||
{{ props.props?.categories[0].name }}
|
||||
</p>
|
||||
<div
|
||||
class="descriptios hidden md:block w-[39.896vw] text-[1.055vw] leading-[1.582vw] mt-[1.2vw]"
|
||||
></div>
|
||||
<p
|
||||
class="text-[2.836vw] md:text-[0.741vw] text-[##E5E5E5] mt-[1.8vw] absolute bottom-[8vw] md:bottom-auto md:relative"
|
||||
>
|
||||
مدرس دوره :
|
||||
<span class="text-[3.59vw] md:text-[1.055vw] text-white ms-[1vw]"
|
||||
>حمیدرضا عبادی</span
|
||||
>{{props.props?.teacher.name}}</span
|
||||
>
|
||||
</p>
|
||||
<div
|
||||
@@ -113,9 +111,7 @@
|
||||
</svg>
|
||||
<div class="space-y-[0.3vw]">
|
||||
<p class="text-[3.59vw] md:text-[1.055vw]">آخرین بروزرسانی</p>
|
||||
<p class="text-[2.518vw] md:text-[0.741vw]">
|
||||
{{ shamsi[2] }} / {{ shamsi[1] }} / {{ shamsi[0] }}
|
||||
</p>
|
||||
<p class="text-[2.518vw] md:text-[0.741vw]">{{jDate(props.props?.updatedAt)}}</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="border-l"></div>
|
||||
@@ -145,7 +141,7 @@
|
||||
<div class="space-y-[0.3vw]">
|
||||
<p class="text-[3.59vw] md:text-[1.055vw]">مدت زمان دوره</p>
|
||||
<p class="text-[2.518vw] md:text-[0.741vw]">
|
||||
{{ props.props.duration }} ساعت
|
||||
{{ props.props?.duration }} ساعت
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@@ -189,7 +185,7 @@
|
||||
|
||||
<div class="space-y-[0.3vw]">
|
||||
<p class="text-[3.59vw] md:text-[1.055vw]">
|
||||
{{ props.props.studentsCount }}
|
||||
{{ props.props?.studentsCount }}
|
||||
</p>
|
||||
<p class="text-[2.518vw] md:text-[0.741vw]">دانشجو</p>
|
||||
</div>
|
||||
@@ -201,15 +197,20 @@
|
||||
|
||||
<script setup>
|
||||
const props = defineProps(["props"]);
|
||||
const isoDateString = props.props.createdAt;
|
||||
const dateObject = new Date(isoDateString);
|
||||
const year = dateObject.getFullYear();
|
||||
const month = dateObject.getMonth() + 1;
|
||||
const day = dateObject.getDate();
|
||||
const hours = dateObject.getHours();
|
||||
const minutes = dateObject.getMinutes();
|
||||
const seconds = dateObject.getSeconds();
|
||||
import {jDate} from "@/utils/jDate"
|
||||
|
||||
|
||||
const shamsi = gregorian_to_jalali(year,month,day)
|
||||
if (process.client) {
|
||||
const des = props?.props.description;
|
||||
function hideEndOfString(inputString) {
|
||||
const words = inputString.split(" ");
|
||||
if (words.length > 50) {
|
||||
const truncatedWords = words.slice(0, 50);
|
||||
return truncatedWords.join(" ") + "...";
|
||||
} else {
|
||||
return inputString;
|
||||
}
|
||||
}
|
||||
const data = hideEndOfString(des);
|
||||
document.querySelector(".descriptios").innerHTML = data;
|
||||
}
|
||||
</script>
|
||||
@@ -113,31 +113,6 @@
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user