generic-skin 5.1.4 → 5.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -7,6 +7,7 @@ Vue.component('directorio-personajes', {
|
|
|
7
7
|
busqueda: {
|
|
8
8
|
name: '',
|
|
9
9
|
faceClaim: '',
|
|
10
|
+
ocupation: '',
|
|
10
11
|
user: -1,
|
|
11
12
|
group: -1,
|
|
12
13
|
},
|
|
@@ -33,11 +34,11 @@ Vue.component('directorio-personajes', {
|
|
|
33
34
|
const faceClaimLower = this.busqueda.faceClaim.toLowerCase();
|
|
34
35
|
|
|
35
36
|
return this.characters.filter(character =>
|
|
36
|
-
character.name.toLowerCase().includes(nameLower) && character.fields['face_claim'].content.toLowerCase().includes(faceClaimLower) && (this.busqueda.user === -1 || character.fields['usuario'].content === this.busqueda.user) && (this.busqueda.group === -1 || character.colour === forumConfig.profileUser.forumGroups[this.busqueda.group].group)
|
|
37
|
+
character.name.toLowerCase().includes(nameLower) && character.fields['face_claim'].content.toLowerCase().includes(faceClaimLower) && character.fields['ocupacion'].content.toLowerCase().includes(ocupationLower) && (this.busqueda.user === -1 || character.fields['usuario'].content === this.busqueda.user) && (this.busqueda.group === -1 || character.colour === forumConfig.profileUser.forumGroups[this.busqueda.group].group)
|
|
37
38
|
);
|
|
38
39
|
},
|
|
39
40
|
availableUsers() {
|
|
40
|
-
const users = new Set(this.
|
|
41
|
+
const users = new Set(this.filteredCharacters.map(character => character.fields['usuario'].content));
|
|
41
42
|
|
|
42
43
|
return users;
|
|
43
44
|
}
|
|
@@ -47,18 +48,18 @@ Vue.component('directorio-personajes', {
|
|
|
47
48
|
let activeMembers;
|
|
48
49
|
|
|
49
50
|
try {
|
|
50
|
-
activeMembers = await FNR.cache.useData('members',
|
|
51
|
+
activeMembers = await FNR.cache.useData('members', 1);
|
|
51
52
|
} catch (e) {
|
|
52
53
|
activeMembers = null;
|
|
53
54
|
}
|
|
54
55
|
|
|
55
56
|
if (!activeMembers) {
|
|
56
57
|
activeMembers = await FNR.forum.getMembers();
|
|
57
|
-
FNR.cache.setData('members', activeMembers,
|
|
58
|
+
FNR.cache.setData('members', activeMembers, 1);
|
|
58
59
|
}
|
|
59
60
|
|
|
60
61
|
const profiles = await Promise.allSettled(
|
|
61
|
-
activeMembers.map(user => FNR.user.getProfile(user.id.replace('/u', ''), .
|
|
62
|
+
activeMembers.map(user => FNR.user.getProfile(user.id.replace('/u', ''), .5))
|
|
62
63
|
);
|
|
63
64
|
|
|
64
65
|
this.characters = profiles.filter(r => r.status === 'fulfilled').map(r => r.value);;
|
|
@@ -102,7 +103,7 @@ Vue.component('directorio-personajes', {
|
|
|
102
103
|
},
|
|
103
104
|
template: `
|
|
104
105
|
<section id="directory-section" class="basic-element">
|
|
105
|
-
<section
|
|
106
|
+
<section class="generic-element">
|
|
106
107
|
<cabespecial-foro>
|
|
107
108
|
<template slot="title">Directorio</template>
|
|
108
109
|
</cabespecial-foro>
|
|
@@ -112,7 +113,7 @@ Vue.component('directorio-personajes', {
|
|
|
112
113
|
<div class="forum-field">
|
|
113
114
|
<div class="field-name">Nombre</div>
|
|
114
115
|
<div class="field-content">
|
|
115
|
-
<input type="text" :disabled="busqueda.faceClaim !== ''" v-model="busqueda.name" placeholder="Buscar por Nombre.">
|
|
116
|
+
<input type="text" :disabled="busqueda.faceClaim !== '' || busqueda.ocupation !== ''" v-model="busqueda.name" placeholder="Buscar por Nombre.">
|
|
116
117
|
</div>
|
|
117
118
|
</div>
|
|
118
119
|
</li>
|
|
@@ -120,7 +121,15 @@ Vue.component('directorio-personajes', {
|
|
|
120
121
|
<div class="forum-field">
|
|
121
122
|
<div class="field-name">Face claim</div>
|
|
122
123
|
<div class="field-content">
|
|
123
|
-
<input type="text" :disabled="busqueda.name !== ''" v-model="busqueda.faceClaim" placeholder="Buscar por Face Claim.">
|
|
124
|
+
<input type="text" :disabled="busqueda.name !== '' || busqueda.ocupation !== ''" v-model="busqueda.faceClaim" placeholder="Buscar por Face Claim.">
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
</li>
|
|
128
|
+
<li class="field-element field-ocupation">
|
|
129
|
+
<div class="forum-field">
|
|
130
|
+
<div class="field-name">Ocupación</div>
|
|
131
|
+
<div class="field-content">
|
|
132
|
+
<input type="text" :disabled="busqueda.faceClaim !== '' || busqueda.name !== ''" v-model="busqueda.ocupation" placeholder="Buscar por Ocupación.">
|
|
124
133
|
</div>
|
|
125
134
|
</div>
|
|
126
135
|
</li>
|
|
@@ -130,7 +139,7 @@ Vue.component('directorio-personajes', {
|
|
|
130
139
|
<div class="field-content">
|
|
131
140
|
<div class="select-container">
|
|
132
141
|
<select v-model="busqueda.user" @change="updateParams('user', busqueda.user !== -1 ? busqueda.user : null)">
|
|
133
|
-
<option value="-1" selected="selected" hidden="hidden">
|
|
142
|
+
<option value="-1" selected="selected" hidden="hidden">Filtrar por Usuario.</option>
|
|
134
143
|
<option v-for="user in availableUsers" :key="user" :value="user">{{ user }}</option>
|
|
135
144
|
</select>
|
|
136
145
|
</div>
|
|
@@ -143,7 +152,7 @@ Vue.component('directorio-personajes', {
|
|
|
143
152
|
<div class="field-content">
|
|
144
153
|
<div class="select-container">
|
|
145
154
|
<select v-model="busqueda.group" @change="updateParams('group', busqueda.group !== -1 ? busqueda.group : null)">
|
|
146
|
-
<option value="-1" selected="selected" hidden="hidden">
|
|
155
|
+
<option value="-1" selected="selected" hidden="hidden">Filtrar por Grupo.</option>
|
|
147
156
|
<option v-for="group in Object.values(config.profileUser.forumGroups)" :key="group.name" :value="genSlug(group.name)">{{ group.name }}</option>
|
|
148
157
|
</select>
|
|
149
158
|
</div>
|
|
@@ -159,7 +168,7 @@ Vue.component('directorio-personajes', {
|
|
|
159
168
|
<cabecera-foro>
|
|
160
169
|
<template slot="title">Listado</template>
|
|
161
170
|
</cabecera-foro>
|
|
162
|
-
<section class="forum-memberlist">
|
|
171
|
+
<section v-if="!loading" class="forum-memberlist">
|
|
163
172
|
<ul :class="'memberlist-members no-style' + (filteredCharacters.length ? '' : ' no-results')">
|
|
164
173
|
<li v-if="!filteredCharacters.length">
|
|
165
174
|
<h6>No hay personajes que coincidan con la búsqueda.</h6>
|
|
@@ -181,13 +190,7 @@ Vue.component('directorio-personajes', {
|
|
|
181
190
|
</li>
|
|
182
191
|
</ul>
|
|
183
192
|
</section>
|
|
184
|
-
|
|
185
|
-
<section v-else class="generic-element">
|
|
186
|
-
<cabespecial-foro>
|
|
187
|
-
<template slot="title">Directorio</template>
|
|
188
|
-
</cabespecial-foro>
|
|
189
|
-
<separador-foro />
|
|
190
|
-
<cargando-foro text="Cargando utilidad…"></cargando-foro>
|
|
193
|
+
<cargando-foro v-else text="Cargando utilidad…"></cargando-foro>
|
|
191
194
|
</section>
|
|
192
195
|
</section>
|
|
193
196
|
`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
Vue.component("directorio-personajes",{data:()=>({loading:!0,config:forumConfig,logged:""!==_userdata.groupcolor,busqueda:{name:"",faceClaim:"",user:-1,group:-1},characters:[],users:[]}),computed:{directoryFields(){const e=this.config.profileUser.directoryFields;return this.logged&&e.unshift("usuario"),e},filteredCharacters(){if(!this.busqueda.name&&!this.busqueda.faceClaim&&-1===this.busqueda.user&&-1===this.busqueda.group)return this.characters;const e=this.busqueda.name.toLowerCase(),a=this.busqueda.faceClaim.toLowerCase();return this.characters.filter(s=>s.name.toLowerCase().includes(e)&&s.fields.face_claim.content.toLowerCase().includes(a)&&(-1===this.busqueda.user||s.fields.usuario.content===this.busqueda.user)&&(-1===this.busqueda.group||s.colour===forumConfig.profileUser.forumGroups[this.busqueda.group].group))},availableUsers(){const e=new Set(this.
|
|
1
|
+
Vue.component("directorio-personajes",{data:()=>({loading:!0,config:forumConfig,logged:""!==_userdata.groupcolor,busqueda:{name:"",faceClaim:"",ocupation:"",user:-1,group:-1},characters:[],users:[]}),computed:{directoryFields(){const e=this.config.profileUser.directoryFields;return this.logged&&e.unshift("usuario"),e},filteredCharacters(){if(!this.busqueda.name&&!this.busqueda.faceClaim&&-1===this.busqueda.user&&-1===this.busqueda.group)return this.characters;const e=this.busqueda.name.toLowerCase(),a=this.busqueda.faceClaim.toLowerCase();return this.characters.filter(s=>s.name.toLowerCase().includes(e)&&s.fields.face_claim.content.toLowerCase().includes(a)&&s.fields.ocupacion.content.toLowerCase().includes(ocupationLower)&&(-1===this.busqueda.user||s.fields.usuario.content===this.busqueda.user)&&(-1===this.busqueda.group||s.colour===forumConfig.profileUser.forumGroups[this.busqueda.group].group))},availableUsers(){const e=new Set(this.filteredCharacters.map(e=>e.fields.usuario.content));return e}},methods:{async obtainCharacters(){let e;try{e=await FNR.cache.useData("members",1)}catch(a){e=null}e||(e=await FNR.forum.getMembers(),FNR.cache.setData("members",e,1));const a=await Promise.allSettled(e.map(e=>FNR.user.getProfile(e.id.replace("/u",""),.5)));this.characters=a.filter(e=>"fulfilled"===e.status).map(e=>e.value),this.loading=!1},updateParams(e,a){const s=new URL(window.location.href);a?s.searchParams.set(e,a):s.searchParams.delete(e),window.history.replaceState({},"",s)},genSlug:e=>FNR.utility.genSlug(e,"-")},created(){this.obtainCharacters()},mounted(){document.title="Directorio";const e=new URL(window.location.href);e.searchParams.has("group")&&(this.busqueda.group=e.searchParams.get("group")),e.searchParams.has("user")&&this.logged?this.busqueda.user=e.searchParams.get("user"):e.searchParams.has("user")&&this.updateParams("user")},updated(){FNR.behaviour.genMeassure()},template:'\n <section id="directory-section" class="basic-element">\n <section class="generic-element">\n <cabespecial-foro>\n <template slot="title">Directorio</template>\n </cabespecial-foro>\n <section id="memberlist-options" class="field-block">\n <ul class="forum-fieldlist no-style">\n <li class="field-element field-nombre">\n <div class="forum-field">\n <div class="field-name">Nombre</div>\n <div class="field-content">\n <input type="text" :disabled="busqueda.faceClaim !== \'\' || busqueda.ocupation !== \'\'" v-model="busqueda.name" placeholder="Buscar por Nombre.">\n </div>\n </div>\n </li>\n <li class="field-element field-faceclaim">\n <div class="forum-field">\n <div class="field-name">Face claim</div>\n <div class="field-content">\n <input type="text" :disabled="busqueda.name !== \'\' || busqueda.ocupation !== \'\'" v-model="busqueda.faceClaim" placeholder="Buscar por Face Claim.">\n </div>\n </div>\n </li>\n <li class="field-element field-ocupation">\n <div class="forum-field">\n <div class="field-name">Ocupación</div>\n <div class="field-content">\n <input type="text" :disabled="busqueda.faceClaim !== \'\' || busqueda.name !== \'\'" v-model="busqueda.ocupation" placeholder="Buscar por Ocupación.">\n </div>\n </div>\n </li>\n <li v-if="logged" class="field-element field-usuario">\n <div class="forum-field">\n <div class="field-name">Usuario</div>\n <div class="field-content">\n <div class="select-container">\n <select v-model="busqueda.user" @change="updateParams(\'user\', busqueda.user !== -1 ? busqueda.user : null)">\n <option value="-1" selected="selected" hidden="hidden">Filtrar por Usuario.</option>\n <option v-for="user in availableUsers" :key="user" :value="user">{{ user }}</option>\n </select>\n </div>\n </div>\n </div>\n </li>\n <li class="field-element field-group">\n <div class="forum-field">\n <div class="field-name">Grupo</div>\n <div class="field-content">\n <div class="select-container">\n <select v-model="busqueda.group" @change="updateParams(\'group\', busqueda.group !== -1 ? busqueda.group : null)">\n <option value="-1" selected="selected" hidden="hidden">Filtrar por Grupo.</option>\n <option v-for="group in Object.values(config.profileUser.forumGroups)" :key="group.name" :value="genSlug(group.name)">{{ group.name }}</option>\n </select>\n </div>\n </div>\n </div>\n </li>\n </ul>\n \t\t<div id="usereply-comand">\n <button class="button2 btn-main" @click="busqueda.name = \'\'; busqueda.faceClaim = \'\'; busqueda.user = -1; busqueda.group = -1; updateParams(\'group\'); updateParams(\'user\')">Reiniciar</button>\n \t\t</div>\n </section>\n <separador-foro />\n <cabecera-foro>\n <template slot="title">Listado</template>\n </cabecera-foro>\n <section v-if="!loading" class="forum-memberlist">\n <ul :class="\'memberlist-members no-style\' + (filteredCharacters.length ? \'\' : \' no-results\')">\n <li v-if="!filteredCharacters.length">\n <h6>No hay personajes que coincidan con la búsqueda.</h6>\n </li>\n <li v-else v-for="character in filteredCharacters" :key="character.name" class="row">\n <a :href="character.links.profile" target="_blank" :title="\'Ir al \' + config.profileOptions.profileName + \' de «\' + character.name + \'»\'" :class="\'memberitem-element usergroup-\' + character.colour">\n <div class="memberlist-name">\n <h3 class="is-tweakeable">\n <span class="is-measurable">{{ character.name }}</span>\n </h3>\n </div>\n <img :src="character.avatar" :alt="\'Avatar de «\' + character.name + \'»\'" class="memberlist-avatar">\n <ul class="memberlist-fields">\n <li v-for="field in directoryFields" :key="field" :class="\'memberlist-field field-\' + genSlug(character.fields[field].name)">\n <strong>{{ character.fields[field].name }}:</strong> {{ character.fields[field].content | twist-field }}\n </li>\n </ul>\n </a>\n </li>\n </ul>\n </section>\n <cargando-foro v-else text="Cargando utilidad…"></cargando-foro>\n </section>\n </section>\n '});
|