108 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
		
		
			
		
	
	
			108 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Vue
		
	
	
	
|  | <template> | ||
|  |   <div> | ||
|  |     <v-toolbar> | ||
|  |       <v-toolbar-title>Gesamtübersicht</v-toolbar-title> | ||
|  |       <v-spacer /> | ||
|  |       <v-toolbar-items> | ||
|  |         <v-text-field | ||
|  |           v-model="filter" | ||
|  |           style="margin-top: 3px" | ||
|  |           append-icon="search" | ||
|  |           outlined | ||
|  |           :rules="[isNumber]" | ||
|  |         ></v-text-field> | ||
|  |       </v-toolbar-items> | ||
|  |     </v-toolbar> | ||
|  |     <div v-for="year in years" :key="years.indexOf(year)"> | ||
|  |       <v-card style="margin-top: 3px" v-if="isFiltered(year)"> | ||
|  |         <v-card-title>{{ year }}</v-card-title> | ||
|  |         <Table v-bind:user="user" v-bind:year="year" /> | ||
|  |         <v-container fluid> | ||
|  |           <v-col> | ||
|  |             <v-row> | ||
|  |               <v-col> | ||
|  |                 <v-label>Vorjahr:</v-label> | ||
|  |               </v-col> | ||
|  |               <v-col> | ||
|  |                 <v-chip | ||
|  |                   outlined | ||
|  |                   :text-color="getLastColor(user.creditList[year][1].last)" | ||
|  |                   >{{ (user.creditList[year][1].last / 100).toFixed(2) }} | ||
|  |                 </v-chip> | ||
|  |               </v-col> | ||
|  |               <v-col> | ||
|  |                 <v-label>Gesamt:</v-label> | ||
|  |               </v-col> | ||
|  |               <v-col> | ||
|  |                 <v-chip | ||
|  |                   outlined | ||
|  |                   x-large | ||
|  |                   :text-color=" | ||
|  |                     getLastColor( | ||
|  |                       getAllSum( | ||
|  |                         user.creditList[year][2].sum, | ||
|  |                         user.creditList[year][1].last | ||
|  |                       ) | ||
|  |                     ) | ||
|  |                   " | ||
|  |                 > | ||
|  |                   {{ | ||
|  |                     ( | ||
|  |                       getAllSum( | ||
|  |                         user.creditList[year][2].sum, | ||
|  |                         user.creditList[year][1].last | ||
|  |                       ) / 100 | ||
|  |                     ).toFixed(2) | ||
|  |                   }} | ||
|  |                 </v-chip> | ||
|  |               </v-col> | ||
|  |             </v-row> | ||
|  |           </v-col> | ||
|  |         </v-container> | ||
|  |       </v-card> | ||
|  |     </div> | ||
|  |   </div> | ||
|  | </template> | ||
|  | 
 | ||
|  | <script> | ||
|  | import { mapGetters } from 'vuex' | ||
|  | import Table from '../finanzer/Table' | ||
|  | export default { | ||
|  |   name: 'CreditOverview', | ||
|  |   components: { Table }, | ||
|  |   data() { | ||
|  |     return { | ||
|  |       isNumber: value => Number.isInteger(parseInt(value === '' ? 0 : value)) || "Muss eine Zahl sein.", | ||
|  |       filter: '' | ||
|  |     } | ||
|  |   }, | ||
|  |   methods: { | ||
|  |     getLastColor(value) { | ||
|  |       return value < 0 ? 'red' : 'green' | ||
|  |     }, | ||
|  |     getAllSum(sum, lastYear) { | ||
|  |       return lastYear + sum | ||
|  |     }, | ||
|  |     isFiltered(value) { | ||
|  |       return value.toString().includes(this.filter) | ||
|  |     } | ||
|  |   }, | ||
|  |   computed: { | ||
|  |     ...mapGetters({ | ||
|  |       user: 'user/user' | ||
|  |     }), | ||
|  |     years() { | ||
|  |       let years = [] | ||
|  |       if (this.user) { | ||
|  |         for (let year in this.user.creditList) { | ||
|  |           years.unshift(parseInt(year)) | ||
|  |         } | ||
|  |       } | ||
|  |       return years | ||
|  |     } | ||
|  |   } | ||
|  | } | ||
|  | </script> | ||
|  | 
 | ||
|  | <style scoped></style> |