Skip to content
Snippets Groups Projects
Commit e8c6447a authored by Ole Voldsæter's avatar Ole Voldsæter
Browse files

legger til alt unntatt underartikler

parent 99e98405
No related branches found
No related tags found
No related merge requests found
...@@ -4,12 +4,15 @@ ...@@ -4,12 +4,15 @@
<div class=""> <div class="">
<h3>Etymologi</h3> <h3>Etymologi</h3>
<ul> <ul>
<DefElement v-for="(item, index) in article.etymology" :key="index" :element='item' v-if="item.content" /> <DefElement v-for="(element, index) in article.etymology" :key="index" :body='element' v-if="element.content" />
</ul> </ul>
</div> </div>
<div class=""> <div class="">
<h3>Definisjoner</h3> <h3>Definisjoner</h3>
<ol>
<Definition v-for="(definition, index) in article.definitions" :key="index" :body='definition' />
</ol>
</div> </div>
</div> </div>
</template> </template>
...@@ -17,6 +20,7 @@ ...@@ -17,6 +20,7 @@
<script> <script>
import axios from "axios"; import axios from "axios";
import DefElement from './DefElement.vue' import DefElement from './DefElement.vue'
import Definition from './Definition.vue'
export default { export default {
name: 'Article', name: 'Article',
...@@ -46,17 +50,39 @@ export default { ...@@ -46,17 +50,39 @@ export default {
} }
}, },
components: { components: {
DefElement DefElement,
Definition
} }
} }
</script> </script>
<!-- Add "scoped" attribute to limit CSS to this component only --> <!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped> <style>
h3 { h3 {
margin: 40px 0 0; margin: 40px 0 0;
} }
a { a {
color: #42b983; //color: #42b983;
}
ol > li {
padding-bottom: 2em;
}
ul {
padding-top: 8px;
}
ul li {
list-style:none;
}
li ul .definition ul {
padding-left: 0px;
}
ul li.definition {
list-style: disc;
} }
</style> </style>
<template> <template>
<li> <li>
<div :class="element.type"> <div :class="body.type">
<span v-for="item in assemble_text" :class="item.type" v-html="item.html"></span> <span v-for="item in assemble_text" :class="item.type" v-html="item.html"></span>
</div> </div>
</li> </li>
...@@ -13,11 +13,11 @@ import languages from '../utils/languages.js' ...@@ -13,11 +13,11 @@ import languages from '../utils/languages.js'
export default { export default {
name: 'DefElement', name: 'DefElement',
props: { props: {
element: Object body: Object
}, },
computed: { computed: {
unparsed: function(){ unparsed: function(){
return this.element.items.map( return this.body.items.map(
function(item){ function(item){
if (item.type == 'usage') return {type: item.type, html: item.text} if (item.type == 'usage') return {type: item.type, html: item.text}
else if (item.type == 'article_ref') return {type: item.type, html: `<a href="${item.article_id}">${item.lemmas.join(',')}</a>`} else if (item.type == 'article_ref') return {type: item.type, html: `<a href="${item.article_id}">${item.lemmas.join(',')}</a>`}
...@@ -27,7 +27,7 @@ export default { ...@@ -27,7 +27,7 @@ export default {
) )
}, },
assemble_text: function(){ assemble_text: function(){
var old_parts = this.element.content.split(/(\$)/) var old_parts = this.body.content.split(/(\$)/)
var text_items = this.unparsed.slice(0).reverse() var text_items = this.unparsed.slice(0).reverse()
var new_parts = [] var new_parts = []
old_parts.forEach(function(item){ old_parts.forEach(function(item){
...@@ -37,7 +37,6 @@ export default { ...@@ -37,7 +37,6 @@ export default {
new_parts.push({type: 'plain', html: item}) new_parts.push({type: 'plain', html: item})
} }
}) })
console.log(new_parts)
return new_parts return new_parts
} }
} }
......
<template>
<li class="definition" :id="'def' + body.id">
<ul>
<li :is="element_wrapper.template" :body="element_wrapper.element" v-for="element_wrapper in template_name_added">{{element_wrapper.element}}</li>
</ul>
</li>
</template>
<script>
import DefElement from './DefElement.vue'
import Example from './Example.vue'
var Definition = {
name: 'Definition',
props: {
body: Object
},
components: {
DefElement,
Definition,
Example
},
computed: {
template_name_added: function(){
return this.body.elements.map(
function(element){
return {
'template': {
'explanation': 'DefElement',
'definition': 'Definition',
'example': 'Example'
}[element.type] || 'li',
'element': element
}
})
}
}
}
export default Definition
</script>
<style>
li.quote {
font-style: italic;
}
</style>
<template>
<li class="example">
<ul>
<DefElement :body="body.quote" :class="'quote'" />
<DefElement :body="body.explanation" v-if="body.explanation" />
</ul>
</li>
</template>
<script>
import DefElement from './DefElement.vue'
export default {
name: 'Example',
props: {
body: Object
},
components: {
DefElement
}
}
</script>
<style scoped>
ul {
padding-left: 0px;
}
</style>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment