Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 43 additions & 4 deletions src/components/tutor/FirstStep.vue
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ defineProps<{
}>();
const inputGroupLength = ref(1);

// TODO: think of a vue way of doing this
const appendNewInputFile = () => {
const inputGroup = document.querySelector('.input-group');
const div = document.createElement('div');
Expand Down Expand Up @@ -43,6 +44,35 @@ const removeLastInputFile = () => {
<div class="wrapper" :class="{ disabled: disabled }">
<h1 class="title is-4">{{ $t('tutor.firstStep.title') }}</h1>
<p class="subtitle is-6">{{ $t('tutor.firstStep.description') }}</p>
<div class="is-flex is-flex-wrap-wrap mb-4 descriptions">
<div class="description">
<label for="cursus-title">{{ $t('tutor.firstStep.cursusTitleLabel') }}</label>
<input
class="input decription"
type="text"
id="cursus-title"
:placeholder="$t('tutor.firstStep.cursusTitlePlaceholder')"
/>
</div>
<div class="description">
<label for="cursus-level">{{ $t('tutor.firstStep.cursusLevelLabel') }}</label>
<input
class="input decription"
type="text"
id="cursus-level"
:placeholder="$t('tutor.firstStep.cursusLevelPlaceholder')"
/>
</div>
<div class="description">
<label for="cursus-duration">{{ $t('tutor.firstStep.cursusDurationLabel') }}</label>
<input
class="input decription"
type="text"
id="cursus-duration"
:placeholder="$t('tutor.firstStep.cursusDurationPlaceholder')"
/>
</div>
</div>
<div>
<div class="input-group is-flex is-flex-direction-column">
<div class="is-flex is-flex-direction-row" id="first">
Expand All @@ -62,15 +92,24 @@ const removeLastInputFile = () => {
display: flex;
flex-direction: column;
flex-grow: 0.25;
flex-shrink: 1;
flex-basis: 1;
transition: all 2s;
flex-shrink: 0.25;
flex-basis: 30%;
transition: all 1s;
margin: 0 auto;
}

.wrapper.disabled {
flex-basis: 25%;
opacity: 0.5;
pointer-events: none;
flex-grow: 0.5;
flex-grow: 0.25;
}

.description {
width: calc((100% / 3) - (0.5rem * 2));
}

.descriptions {
gap: 0.5rem;
}
</style>
92 changes: 9 additions & 83 deletions src/components/tutor/SecondStep.vue
Original file line number Diff line number Diff line change
Expand Up @@ -2,98 +2,25 @@
import { ref } from 'vue';
import { type Document } from '@/types';
import CardSimpleComponent from '@/components/CardSimpleComponent.vue';
import data from './mockedSearchResult.json';
defineProps<{
disabled?: boolean;
visible?: boolean;
}>();

const sources = ref<Document[]>([
{
id: 1,
title: 'Document 1',
description: 'This is the first document',
selected: false,
corpus: 'pubmed',
url: 'https://pubmed.ncbi.nlm.nih.gov/123456789/',
details: {
publisher: 'Elsevier',
authors: ['John Doe', 'Jane Doe']
}
},
{
id: 2,
title: 'Document 2',
description: 'This is the second document',
selected: false,
corpus: 'pubmed',
url: 'https://pubmed.ncbi.nlm.nih.gov/123456789/',
details: {
publisher: 'Elsevier',
authors: ['John Doe', 'Jane Doe']
}
},
{
id: 3,
title: 'Document 3',
description: 'This is the third document',
selected: false,
corpus: 'pubmed',
url: 'https://pubmed.ncbi.nlm.nih.gov/123456789/',
details: {
publisher: 'Elsevier',
authors: ['John Doe', 'Jane Doe']
}
},
{
id: 4,
title: 'Document 4',
description: 'This is the third document',
selected: false,
corpus: 'pubmed',
url: 'https://pubmed.ncbi.nlm.nih.gov/123456789/',
details: {
publisher: 'Elsevier',
authors: ['John Doe', 'Jane Doe']
}
},
{
id: 3,
title: 'Document 3',
description: 'This is the third document',
selected: false,
corpus: 'pubmed',
url: 'https://pubmed.ncbi.nlm.nih.gov/123456789/',
details: {
publisher: 'Elsevier',
authors: ['John Doe', 'Jane Doe']
}
},
{
id: 4,
title: 'Document 4',
description: 'This is the third document',
selected: false,
corpus: 'pubmed',
url: 'https://pubmed.ncbi.nlm.nih.gov/123456789/',
details: {
publisher: 'Elsevier',
authors: ['John Doe', 'Jane Doe']
}
}
]);
const sources = ref<Document[]>(data);
</script>
<template>
<div class="wrapper" :class="{ disabled: disabled, visible: visible }">
<h1 class="title is-4">{{ $t('tutor.secondStep.title') }}</h1>
<p class="subtitle is-6">{{ $t('tutor.secondStep.description') }}</p>
<div class="sources">
<div class="source" v-for="source in sources" :key="source.id">
<input type="checkbox" v-model="source.selected" />
<CardSimpleComponent
:title="source.title"
:corpus="source.corpus"
:url="source.url"
:details="source.details"
:title="source.payload.document_title"
:corpus="source.payload.document_corpus"
:url="source.payload.document_url"
:details="source.payload.document_details"
/>
</div>
</div>
Expand All @@ -108,29 +35,28 @@ const sources = ref<Document[]>([
flex-grow: 0;
flex-basis: 0;
height: 100%;
transition: all 2s;
transition: all 0.5s;
margin-left: 2rem;
overflow: hidden;
}
.wrapper.visible {
flex-grow: 3;
}
.wrapper.disabled {
pointer-events: none;
opacity: 0.5;
flex-grow: 1;
margin-left: 0;
margin-top: 1rem;
transition: flex-grow 0s;
}
.source {
display: flex;
}
.sources {
overflow-y: auto;
overflow-x: hidden;
display: flex;
flex-direction: column;
max-height: 80%;
height: 100%;
width: 100%;
}
.sources > * {
Expand Down
20 changes: 11 additions & 9 deletions src/components/tutor/StepsIndicator.vue
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
<script setup lang="ts">
const props = defineProps({
step: Number,
stepsLength: Number
});
const props = defineProps<{ step: number; stepsLength: number; setStep: () => void }>();

const stepsLengthArray = Array.from({ length: props.stepsLength }, (_, i) => i + 1);
</script>
Expand All @@ -12,7 +9,8 @@ const stepsLengthArray = Array.from({ length: props.stepsLength }, (_, i) => i +
class="step-inidicator"
v-for="i in stepsLengthArray"
:key="i"
:class="{ step: true, active: i === step }"
:class="{ active: i === step, disabled: i > step }"
@click="setStep(i)"
>
{{ i }}
</p>
Expand All @@ -23,17 +21,21 @@ const stepsLengthArray = Array.from({ length: props.stepsLength }, (_, i) => i +
margin: 0 0.5rem;
padding: 0 0.5rem;
border-radius: 30%;
background-color: #f0f0f0;
color: #333;
color: var(--neutral-90);
font-size: 1.5rem;
font-weight: bold;
cursor: pointer;
transition: background-color 0.3s;
}

.step-inidicator.active {
background-color: #333;
color: #f0f0f0;
background-color: var(--neutral-90);
color: var(--neutral-10);
}

.step-inidicator.disabled {
pointer-events: none;
color: var(--neutral-50);
}

.is-flex {
Expand Down
63 changes: 23 additions & 40 deletions src/components/tutor/ThirdStep.vue
Original file line number Diff line number Diff line change
@@ -1,40 +1,32 @@
<script setup lang="ts">
import { ref } from 'vue';
import { marked } from 'marked';
import axios from 'axios';
defineProps<{
visible?: boolean;
}>();
const syllabus = ref('');

const setSyllabusValue = (text) => {
syllabus.value = text;
};

axios
.get('./src/components/tutor/mockedSyllabus.md')
.then((res) => setSyllabusValue(res.data))
.catch((err) => console.log(err));
</script>
<template>
<div class="wrapper" :class="{ visible: visible }">
<div class="wrapper" :class="{ visible: visible && syllabus.length }">
<h1 class="title is-4">{{ $t('tutor.thirdStep.title') }}</h1>
<p class="subtitle is-6">{{ $t('tutor.thirdStep.description') }}</p>
<!-- syllabus -->
<p contenteditable="true" class="syllabus">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam nec purus nec nunc ultricies
tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies
tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies
tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam nec purus Lorem ipsum dolor
sit amet, consectetur adipiscing elit. Nullam nec purus Lorem ipsum dolor sit amet,
consectetur adipiscing elit. Nullam nec purus Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Nullam nec purus Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies tincidunt.
Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies tincidunt.
Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies tincidunt.
Nullam nec purus nec nunc ultricies nec nunc ultricies tincidunt. Nullam nec purus nec nunc
ultricies tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc
ultricies tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc
ultricies tincidunt. Nullam nec purus nec nunc ultricies nec nunc ultricies tincidunt. Nullam
nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam
nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam
nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies nec nunc ultricies
tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies
tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies
tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies
nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus
nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus
nec nunc ultricies tincidunt. Nullam nec purus nec nunc ultricies tincidunt. Nullam nec purus
nec nunc ultricies
</p>
<p
contenteditable="true"
class="syllabus content"
v-if="syllabus.length"
v-html="marked.parse(syllabus)"
/>
</div>
</template>

Expand All @@ -46,30 +38,21 @@ defineProps<{
flex-direction: column;
flex-grow: 0;
flex-basis: 0;
transition: flex-grow 2s;
transition: flex-grow 0.3s;
}

.wrapper.visible {
flex-grow: 3;
}

.syllabus {
padding: 1rem;
padding: 2rem;
border: 1px solid var(--neutral-20);
border-radius: 0.5rem;
margin: 1rem 0;
min-height: 10rem;
width: 90%;
overflow-y: auto;
overflow-x: hidden;
white-space: pre-wrap;
word-wrap: break-word;
word-break: break-all;
font-size: 1rem;
line-height: 1.5rem;
overflow-x: auto;
background-color: var(--neutral-10);
color: var(--neutral-90);
cursor: text;
transition: background-color 0.3s;
}
</style>
Loading