Add Category and CategoryType to module
This commit is contained in:
parent
f88a85a54f
commit
e99c703f55
|
|
@ -15,20 +15,19 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="dropdown-container">
|
<div class="dropdown-container">
|
||||||
<select id="lernfeld-select" v-model="selectedLernfeld" @change="filterModules">
|
<select id="lernfeld-select" v-model="selectedLernfeld" @change="filterModules">
|
||||||
<option v-for="(lernfeld, index) in lernfeldOptions" :key="index" :value="lernfeld"
|
<option v-for="(lernfeld, index) in lernfeldOptions" :value="lernfeld" :key="index">
|
||||||
>
|
|
||||||
{{ lernfeld }}
|
{{ lernfeld }}
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="topic__modules">
|
<div class="topic__modules">
|
||||||
<module-teaser
|
<module-teaser
|
||||||
v-for="module in filteredModules"
|
v-for="module in filteredModules"
|
||||||
v-bind="module"
|
v-bind="module"
|
||||||
:key="module.slug"
|
:key="module.slug"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -44,14 +43,15 @@
|
||||||
}>();
|
}>();
|
||||||
|
|
||||||
const selectedCategory = ref(null);
|
const selectedCategory = ref(null);
|
||||||
console.log(props.modules)
|
console.log("modules", props.modules)
|
||||||
|
|
||||||
|
|
||||||
const lernfeldOptions = ['Alle Lernfelder', 'Lernfeld 1', 'Lernfeld 2', 'Lernfeld 3', 'Lernfeld 4', 'Lernfeld 5'];
|
const lernfeldOptions = ['Alle Lernfelder', 'Lernfeld 1', 'Lernfeld 2', 'Lernfeld 3', 'Lernfeld 4', 'Lernfeld 5'];
|
||||||
const selectedLernfeld = ref('Alle Lernfelder');
|
const selectedLernfeld = ref('Alle Lernfelder');
|
||||||
|
|
||||||
|
|
||||||
const firstLevelCategories = computed(() => {
|
const firstLevelCategories = computed(() => {
|
||||||
return ["1. Lehrjahr", "2. Lehrjahr", "3. Lehrjahr",];
|
return ["Alle Lehrjahre", "1. Lehrjahr", "2. Lehrjahr", "3. Lehrjahr",];
|
||||||
});
|
});
|
||||||
|
|
||||||
let filteredModules = computed(() => {
|
let filteredModules = computed(() => {
|
||||||
|
|
@ -60,21 +60,22 @@
|
||||||
|
|
||||||
|
|
||||||
function filterModules() {
|
function filterModules() {
|
||||||
|
|
||||||
let filteredModules = props.modules;
|
let filteredModules = props.modules;
|
||||||
if (selectedCategory.value === null) {
|
if (selectedCategory.value === null) {
|
||||||
return props.modules;
|
return props.modules;
|
||||||
}
|
}
|
||||||
|
|
||||||
// filter by Lehrjahr
|
// filter by Lehrjahr
|
||||||
filteredModules = props.modules.filter((module) => {
|
if (selectedCategory.value !== 'Alle Lehrjahre') {
|
||||||
return module.metaTitle.includes(selectedCategory.value);
|
filteredModules = filteredModules.filter((module) => {
|
||||||
});
|
return module.categoryName.includes(selectedCategory.value);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
//filter by Lernfeld
|
//filter by Lernfeld
|
||||||
if (selectedLernfeld.value !== 'Alle Lernfelder') {
|
if (selectedLernfeld.value !== 'Alle Lernfelder') {
|
||||||
filteredModules = filteredModules.filter((module) => {
|
filteredModules = filteredModules.filter((module) => {
|
||||||
return module.metaTitle.includes(selectedLernfeld.value);
|
return module.categoryTypeName.includes(selectedLernfeld.value);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -115,6 +116,7 @@
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
.topic {
|
.topic {
|
||||||
display: grid;
|
display: grid;
|
||||||
padding: $large-spacing $small-spacing;
|
padding: $large-spacing $small-spacing;
|
||||||
|
|
|
||||||
|
|
@ -17,13 +17,16 @@
|
||||||
<p class="module-teaser__description">
|
<p class="module-teaser__description">
|
||||||
{{ teaser }}
|
{{ teaser }}
|
||||||
</p>
|
</p>
|
||||||
|
<span :value="attribute" v-for="attribute in [categoryName, categoryTypeName]">
|
||||||
|
<div class="module-teaser__module-category" v-if="attribute">{{attribute}}</div>
|
||||||
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</router-link>
|
</router-link>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
export default {
|
export default {
|
||||||
props: ['metaTitle', 'title', 'teaser', 'id', 'slug', 'heroImage'],
|
props: ['metaTitle', 'title', 'teaser', 'id', 'slug', 'heroImage', 'categoryName', 'categoryTypeName'],
|
||||||
|
|
||||||
computed: {
|
computed: {
|
||||||
moduleLink() {
|
moduleLink() {
|
||||||
|
|
@ -48,7 +51,7 @@ export default {
|
||||||
.module-teaser {
|
.module-teaser {
|
||||||
box-shadow: 0 3px 9px 0 rgba(0, 0, 0, 0.12);
|
box-shadow: 0 3px 9px 0 rgba(0, 0, 0, 0.12);
|
||||||
border: 1px solid #e2e2e2;
|
border: 1px solid #e2e2e2;
|
||||||
height: 330px;
|
height: 390px;
|
||||||
max-width: 380px;
|
max-width: 380px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-radius: 12px;
|
border-radius: 12px;
|
||||||
|
|
@ -88,5 +91,15 @@ export default {
|
||||||
line-height: $default-line-height;
|
line-height: $default-line-height;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&__module-category {
|
||||||
|
background-color: rgba(129, 129, 129, 0.99); /* Replace with your desired background color */
|
||||||
|
color: #fff; /* Replace with your desired text color */
|
||||||
|
padding: 10px 20px;
|
||||||
|
border-radius: 40px; /* A high value to make it look like a pill */
|
||||||
|
display: inline-block; /* Ensures the pill takes only the necessary width */
|
||||||
|
margin-right: 10px;
|
||||||
|
margin-top: 20px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ fragment ModuleParts on ModuleNode {
|
||||||
heroSource
|
heroSource
|
||||||
solutionsEnabled
|
solutionsEnabled
|
||||||
inEditMode @client
|
inEditMode @client
|
||||||
|
categoryName
|
||||||
|
categoryTypeName
|
||||||
topic {
|
topic {
|
||||||
slug
|
slug
|
||||||
title
|
title
|
||||||
|
|
|
||||||
|
|
@ -168,6 +168,13 @@ class Module(StrictHierarchyPage):
|
||||||
def get_admin_display_title(self):
|
def get_admin_display_title(self):
|
||||||
return f"{self.meta_title} - {self.title}"
|
return f"{self.meta_title} - {self.title}"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def category_name(self) -> str:
|
||||||
|
return self.category.name if self.category else ""
|
||||||
|
@property
|
||||||
|
def category_type_name(self) -> str:
|
||||||
|
return self.category_type.name if self.category_type else ""
|
||||||
|
|
||||||
|
|
||||||
class RecentModule(models.Model):
|
class RecentModule(models.Model):
|
||||||
module = models.ForeignKey(
|
module = models.ForeignKey(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue