62 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <div
 | |
|     class="grid"
 | |
|   >
 | |
|     <ConfigEditor
 | |
|       :config="config"
 | |
|       :template="template"
 | |
|     />
 | |
|     <ViewComponent
 | |
|       v-for="(item,key) of config"
 | |
|       :key="key"
 | |
|       :config="item"
 | |
|       :data="parsed_log"
 | |
|     />
 | |
|   </div>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| import Vuex from 'vuex';
 | |
| import ViewComponent from '../components/ViewComponent.vue';
 | |
| import ConfigEditor from '../components/ConfigEditor.vue';
 | |
| import default_config from '../default';
 | |
| import default_template from '../template';
 | |
| 
 | |
| export default {
 | |
|   components: { ViewComponent, ConfigEditor },
 | |
|   data () {
 | |
|     return {
 | |
|       config:   default_config,
 | |
|       template: default_template
 | |
|     };
 | |
|   },
 | |
|   computed:   {
 | |
|     parsed_log () {
 | |
|       return this.log.map ((l) => {
 | |
|         l.data = JSON.parse (l.data);
 | |
|         return l;
 | |
|       });
 | |
|     },
 | |
|     ...Vuex.mapState ({ log: (state) => state.log })
 | |
|   },
 | |
|   mounted () {
 | |
|     this.get_log ();
 | |
|   },
 | |
|   methods: { ...Vuex.mapActions ({ get_log: 'get_log' }) }
 | |
| };
 | |
| </script>
 | |
| 
 | |
| <style scoped>
 | |
| .grid {
 | |
|   display: flex;
 | |
|   flex-direction: row;
 | |
|   flex-wrap: wrap;
 | |
|   width: 100%;
 | |
|   height: 100%;
 | |
| }
 | |
| 
 | |
| p {
 | |
|   display: inline-block;
 | |
| }
 | |
| </style>
 |