1 2 3Vue.component('filters-div', { 4 props: {}, 5 data: function() { 6 return { 7 FiltresOberts: false, 8 TagsDisponibles: [ ['1','ArtÃstica'], 9 ['2','Curs'], 10 ['3','Familiar'], 11 ['4','CientÃfica'], 12 ['5','Exposició'], 13 ['6','Humanitats'], 14 ['7','Música'], 15 ['8','Conferència'], 16 ['11','Tecnològica'] 17 ], 18 MesText: '', 19 MesNumero: 0, 20 AnyText: '', 21 AnyNumero: 0, 22 QuantsDiesMes: 0, 23 DiesMes: [], 24 DiesMesFiles: [], 25 TextCerca: '' 26 } 27 }, 28 created: function() { 29 this.carregaMes(); 30 }, 31 computed: { 32 33 }, 34 watch: {}, 35 methods: { 36 carregaMes: function(M = '', Y = '') { 37 let D = new Date(); 38 let Mes = (M.length == 0) ? D.getMonth() : M; 39 let Any = (Y.length == 0) ? D.getFullYear() : Y; 40 41 this.MesNumero = Mes; 42 this.MesText = this.Mesos(this.MesNumero); 43 this.AnyNumero = Any; 44 this.AnyText = this.AnyNumero.toString(); 45 this.QuantsDiesMes = this.QuantsDiesTeElMes(this.AnyNumero, this.MesNumero); 46 this.DiesMes = []; 47 this.DiesMesFiles = []; 48 49 let Fila = 0; 50 for (let i = 1; i < this.QuantsDiesMes + 1; i++) { 51 let DiaSetmana = new Date(this.AnyNumero, this.MesNumero, i).getDay(); 52 let DiaText = this.DiaSetmana(DiaSetmana); 53 let Classe = []; 54 Classe.push('filtres_cal-dia'); 55 if (DiaSetmana == 6 || DiaSetmana == 0) Classe.push('filtres_cal-dia-festa'); 56 else Classe.push('filtres_cal-dia-normal'); 57 let D = { DiaText: DiaText, DiaNumero: i, C: Classe }; 58 this.DiesMes.push(D); 59 60 // Carrego l'array de Dies per files pel calendari 61 if (i == 1) { 62 let DiesASumar = DiaSetmana == 0 ? 7 : DiaSetmana; 63 for (let i = DiesASumar; i > 1; i--) { 64 if (!this.DiesMesFiles[Fila]) this.DiesMesFiles[Fila] = []; 65 this.DiesMesFiles[Fila].push({ DiaText: '', DiaNumero: '', C: Classe }); 66 } 67 } 68 69 if (!this.DiesMesFiles[Fila]) this.DiesMesFiles[Fila] = []; 70 this.DiesMesFiles[Fila].push(D); 71 if (DiaSetmana == 0) Fila++; 72 } 73 }, 74 75 QuantsDiesTeElMes(any, mes) { 76 return new Date(any, mes + 1, 0).getDate(); 77 }, 78 79 DiaSetmana(DiaSetmana) { 80 switch (DiaSetmana) { 81 case 0: 82 return 'Dg'; 83 break; 84 case 1: 85 return 'Dl'; 86 break; 87 case 2: 88 return 'Dt'; 89 break; 90 case 3: 91 return 'Dc'; 92 break; 93 case 4: 94 return 'Dj'; 95 break; 96 case 5: 97 return 'Dv'; 98 break; 99 case 6: 100 return 'Ds'; 101 break; 102 } 103 }, 104 105 Mesos(Mes) { 106 switch (Mes) { 107 case 0: 108 return 'Gener'; 109 case 1: 110 return 'Febrer'; 111 case 2: 112 return 'Març'; 113 case 3: 114 return 'Abril'; 115 case 4: 116 return 'Maig'; 117 case 5: 118 return 'Juny'; 119 case 6: 120 return 'Juliol'; 121 case 7: 122 return 'Agost'; 123 case 8: 124 return 'Setembre'; 125 case 9: 126 return 'Octubre'; 127 case 10: 128 return 'Novembre'; 129 case 11: 130 return 'Desembre'; 131 } 132 }, 133 GoMes: function( Menys = false ) { 134 let M = this.MesNumero; 135 let Y = this.AnyNumero; 136 if (Menys && M == 0) { 137 Y--; 138 M = 11; 139 } else if (!Menys && M == 11) { 140 Y++; 141 M = 0; 142 } else if (Menys) { 143 M--; 144 } else { 145 M++; 146 } 147 148 this.carregaMes(M, Y); 149 }, 150 cercaText: function() { 151 window.location.href = "/activitats/text/" + encodeURIComponent(this.TextCerca); 152 }, 153 executaFiltre: function($eventTipus) { 154 const T = this.TagsDisponibles.find( X => X[0] == $eventTipus.target.value ); 155 window.location.href= this.getLinkTipus( T ); 156 }, 157 getLinkTipus: function(Tipus = '', Dia = '') { 158 if(typeof Tipus == 'object') { 159 return '/activitats/tipus/' + Tipus[0] + '/' + normalize(Tipus[1]); 160 } else if(typeof Dia == 'number') { 161 return '/activitats/data/' + this.AnyNumero + '-' + (this.MesNumero + 1) + '-' + Dia ; 162 } 163 } 164 }, 165 template: ` 166<section> 167 <div class="filtres_requadre_filtres"> 168 <div class="filtres_titol_filtres" @click="FiltresOberts = !FiltresOberts">Filtres</div> 169 <div class="filtres_requadre_tots_filtres" v-if="FiltresOberts"> 170 <div class="filtres_requadre_calendari"> 171 <div class="filtres_cal-mesos-fletxa"> 172 <a @click="GoMes(true)" > < </a> 173 </div> 174 <div class="filtres_requadre-taula-calendari"> 175 <div class="filtres_control-mesos">{{ MesText }} {{ AnyText }}</div> 176 177 <table class="filtres_taula-calendari"> 178 <tr> 179 <td class="filtres_cal-dia-title">Dl</td> 180 <td class="filtres_cal-dia-title">Dt</td> 181 <td class="filtres_cal-dia-title">Dc</td> 182 <td class="filtres_cal-dia-title">Dj</td> 183 <td class="filtres_cal-dia-title">Dv</td> 184 <td class="filtres_cal-dia-title">Ds</td> 185 <td class="filtres_cal-dia-title">Dg</td> 186 </tr> 187 <tr v-for="Row of DiesMesFiles"> 188 <td v-for="D of Row" :class="D.C" @click="executaFiltre('DATA_INICIAL', D.DiaNumero)"> 189 {{ D.DiaNumero }} 190 </td> 191 </tr> 192 </table> 193 </div> 194 195 <div class="filtres_cal-mesos-fletxa" @click="GoMes(false)"> 196 <a @click="GoMes(false)" > > </a> 197 </div> 198 </div> 199 <div class="filtres_AltresFiltresBlock form-group"> 200 <select id="TagsSelect" class="filtres_form-control" @change="executaFiltre($event)"> 201 <option :value="0">-- ESCULL UN TIPUS D'ACTIVITAT --</option> 202 <option v-for="T of TagsDisponibles" :value="T[0]">{{ T[1] }}</option> 203 </select> 204 205 <div class="filtres_input_search"> 206 <input type="text" id="input_cerca" role="textbox" v-model="TextCerca" class="filtres_form-control_input_text" placeholder="Escriu un text per buscar..." aria-label="Escriu el text a buscar" /> 207 <button @click="cercaText()">Cerca!</button> 208 </div> 209 </div> 210 </div> 211 </div> 212 213 214 <nav class="filtres_calendari"> 215 <div class="filtres_control-mesos"> 216 <a class="filtres_cal-mesos-fletxa" @click="GoMes(true)">
217 <span> < </span> 218 </a> 219 <div class="filtres_cal-mesos">{{ MesText }}<br />{{ AnyText }}</div> 220 <a class="filtres_cal-mesos-fletxa" @click="GoMes(false)"> 221 <span> > </span> 222 </a> 223 </div> 224 <div class="filtres_control-dies"> 225 <a :class="D.C" v-for="D of DiesMes" :href="getLinkTipus('', D.DiaNumero)"> 226 <div class="filtres_cal-dia-text">{{ D.DiaText }}</div> 227 <div class="filtres_cal-dia-numero">{{ D.DiaNumero }}</div> 228 </a> 229 </div> 230 </nav> 231 232 <div class="filtres_box-mes-filtres"> 233 <div class="filtres_mes-filtres">Més filtres</div> 234 <div class="filtres_mes-filtres-resta"> 235 <a class="filtres_mes-filtres-resta-element" v-for="T of TagsDisponibles" :href="getLinkTipus(T)"> 236 {{ T[1] }} 237 </a> 238 <input type="text" v-model="TextCerca" id="InputTextCerca" placeholder="Cerca..." aria-label="Cerca alguna cosa" /> 239 <button class="btn btn-xs" id="InputTextBoto" @click="cercaText()">Cerca!</button> 240 </div> 241 </div> 242</section> 243 ` 244});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.