Optimize deleting element from array
This commit is contained in:
parent
da8ac77ace
commit
dd2f2030da
|
|
@ -239,7 +239,7 @@ export default {
|
|||
toastr.warning(msg);
|
||||
}
|
||||
},
|
||||
async deletePlayer(player) {
|
||||
async deletePlayer({ pid, originalIndex }) {
|
||||
const { dismiss } = await swal({
|
||||
text: this.$t('admin.deletePlayerNotice'),
|
||||
type: 'warning',
|
||||
|
|
@ -251,10 +251,10 @@ export default {
|
|||
|
||||
const { errno, msg } = await this.$http.post(
|
||||
'/admin/players?action=delete',
|
||||
{ pid: player.pid }
|
||||
{ pid }
|
||||
);
|
||||
if (errno === 0) {
|
||||
this.players = this.players.filter(({ pid }) => pid !== player.pid);
|
||||
this.$delete(this.players, originalIndex);
|
||||
toastr.success(msg);
|
||||
} else {
|
||||
toastr.warning(msg);
|
||||
|
|
|
|||
|
|
@ -182,7 +182,7 @@ export default {
|
|||
swal({ type: 'warning', text: msg });
|
||||
}
|
||||
},
|
||||
async deletePlugin({ name }) {
|
||||
async deletePlugin({ name, originalIndex }) {
|
||||
const { dismiss } = await swal({
|
||||
text: this.$t('admin.confirmDeletion'),
|
||||
type: 'warning',
|
||||
|
|
@ -197,8 +197,8 @@ export default {
|
|||
{ action: 'delete', name }
|
||||
);
|
||||
if (errno === 0) {
|
||||
this.$delete(this.plugins, originalIndex);
|
||||
toastr.success(msg);
|
||||
this.plugins = this.plugins.filter(plugin => plugin.name !== name);
|
||||
} else {
|
||||
swal({ type: 'warning', text: msg });
|
||||
}
|
||||
|
|
|
|||
|
|
@ -288,7 +288,7 @@ export default {
|
|||
toastr.warning(msg);
|
||||
}
|
||||
},
|
||||
async deleteUser(user) {
|
||||
async deleteUser({ uid, originalIndex }) {
|
||||
const { dismiss } = await swal({
|
||||
text: this.$t('admin.deleteUserNotice'),
|
||||
type: 'warning',
|
||||
|
|
@ -300,10 +300,10 @@ export default {
|
|||
|
||||
const { errno, msg } = await this.$http.post(
|
||||
'/admin/users?action=delete',
|
||||
{ uid: user.uid }
|
||||
{ uid }
|
||||
);
|
||||
if (errno === 0) {
|
||||
this.users = this.users.filter(({ uid }) => uid !== user.uid);
|
||||
this.$delete(this.users, originalIndex);
|
||||
toastr.success(msg);
|
||||
} else {
|
||||
toastr.warning(msg);
|
||||
|
|
|
|||
|
|
@ -55,14 +55,14 @@
|
|||
</div>
|
||||
<div v-else>
|
||||
<closet-item
|
||||
v-for="item in skinItems"
|
||||
v-for="(item, index) in skinItems"
|
||||
:key="item.tid"
|
||||
:tid="item.tid"
|
||||
:name="item.name"
|
||||
:type="item.type"
|
||||
:selected="selectedSkin === item.tid"
|
||||
@select="selectTexture(item.tid)"
|
||||
@item-removed="removeSkinItem"
|
||||
@item-removed="removeSkinItem(index)"
|
||||
></closet-item>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -78,14 +78,14 @@
|
|||
</div>
|
||||
<div v-else>
|
||||
<closet-item
|
||||
v-for="item in capeItems"
|
||||
v-for="(item, index) in capeItems"
|
||||
:key="item.tid"
|
||||
:tid="item.tid"
|
||||
:name="item.name"
|
||||
:type="item.type"
|
||||
:selected="selectedCape === item.tid"
|
||||
@select="selectTexture(item.tid)"
|
||||
@item-removed="removeCapeItem"
|
||||
@item-removed="removeCapeItem(index)"
|
||||
></closet-item>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -251,11 +251,11 @@ export default {
|
|||
this[`${category}TotalPages`] = total_pages;
|
||||
this[`${category}Items`] = items;
|
||||
},
|
||||
removeSkinItem(tid) {
|
||||
this.skinItems = this.skinItems.filter(item => item.tid !== tid);
|
||||
removeSkinItem(index) {
|
||||
this.$delete(this.skinItems, index);
|
||||
},
|
||||
removeCapeItem(tid) {
|
||||
this.capeItems = this.capeItems.filter(item => item.tid !== tid);
|
||||
removeCapeItem(index) {
|
||||
this.$delete(this.capeItems, index);
|
||||
},
|
||||
switchCategory() {
|
||||
this.category = this.category === 'skin' ? 'cape' : 'skin';
|
||||
|
|
|
|||
|
|
@ -107,7 +107,7 @@ export default {
|
|||
);
|
||||
|
||||
if (errno === 0) {
|
||||
this.$emit('item-removed', this.tid);
|
||||
this.$emit('item-removed');
|
||||
swal({ type: 'success', text: msg });
|
||||
} else {
|
||||
toastr.warning(msg);
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
<tbody>
|
||||
<tr
|
||||
v-for="player in players"
|
||||
v-for="(player, index) in players"
|
||||
:key="player.pid"
|
||||
class="player"
|
||||
:class="{ 'player-selected': player.pid === selected }"
|
||||
|
|
@ -56,7 +56,7 @@
|
|||
></a>
|
||||
<a
|
||||
class="btn btn-danger btn-sm"
|
||||
@click="deletePlayer(player)"
|
||||
@click="deletePlayer(player, index)"
|
||||
v-t="'user.player.delete-player'"
|
||||
></a>
|
||||
</td>
|
||||
|
|
@ -389,7 +389,7 @@ export default {
|
|||
swal({ type: 'warning', text: msg });
|
||||
}
|
||||
},
|
||||
async deletePlayer(player) {
|
||||
async deletePlayer(player, index) {
|
||||
const { dismiss } = await swal({
|
||||
title: this.$t('user.deletePlayer'),
|
||||
text: this.$t('user.deletePlayerNotice'),
|
||||
|
|
@ -407,8 +407,8 @@ export default {
|
|||
{ pid: player.pid }
|
||||
);
|
||||
if (errno === 0) {
|
||||
this.$delete(this.players, index);
|
||||
swal({ type: 'success', text: msg });
|
||||
this.players = this.players.filter(({ pid }) => pid !== player.pid);
|
||||
} else {
|
||||
swal({ type: 'warning', text: msg });
|
||||
}
|
||||
|
|
|
|||
|
|
@ -191,5 +191,5 @@ test('delete player', async () => {
|
|||
|
||||
button.trigger('click');
|
||||
await flushPromises();
|
||||
expect(wrapper.vm.players).toHaveLength(0);
|
||||
expect(wrapper.text()).toContain('No data');
|
||||
});
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ test('disable plugin', async () => {
|
|||
button.trigger('click');
|
||||
await flushPromises();
|
||||
expect(toastr.success).toBeCalledWith('0');
|
||||
expect(wrapper.text()).toContain('admin.enablePlugin');
|
||||
});
|
||||
|
||||
test('delete plugin', async () => {
|
||||
|
|
@ -134,5 +135,5 @@ test('delete plugin', async () => {
|
|||
|
||||
button.trigger('click');
|
||||
await flushPromises();
|
||||
expect(toastr.success).toBeCalledWith('0');
|
||||
expect(wrapper.text()).toContain('No data');
|
||||
});
|
||||
|
|
|
|||
|
|
@ -529,5 +529,5 @@ test('delete user', async () => {
|
|||
|
||||
button.trigger('click');
|
||||
await flushPromises();
|
||||
expect(wrapper.vm.users).toHaveLength(0);
|
||||
expect(wrapper.text()).toContain('No data');
|
||||
});
|
||||
|
|
|
|||
|
|
@ -135,17 +135,17 @@ test('reload closet when page changed', () => {
|
|||
test('remove skin item', () => {
|
||||
Vue.prototype.$http.get.mockResolvedValue({});
|
||||
const wrapper = mount(Closet);
|
||||
wrapper.setData({ skinItems: [{ tid: 1 }, { tid: 2 }] });
|
||||
wrapper.vm.removeSkinItem(1);
|
||||
expect(wrapper.findAll(ClosetItem)).toHaveLength(1);
|
||||
wrapper.setData({ skinItems: [{ tid: 1 }] });
|
||||
wrapper.vm.removeSkinItem(0);
|
||||
expect(wrapper.find('#skin-category').text()).toContain('user.emptyClosetMsg');
|
||||
});
|
||||
|
||||
test('remove cape item', () => {
|
||||
Vue.prototype.$http.get.mockResolvedValue({});
|
||||
const wrapper = mount(Closet);
|
||||
wrapper.setData({ capeItems: [{ tid: 1 }, { tid: 2 }], category: 'cape' });
|
||||
wrapper.vm.removeCapeItem(1);
|
||||
expect(wrapper.findAll(ClosetItem)).toHaveLength(1);
|
||||
wrapper.setData({ capeItems: [{ tid: 1 }], category: 'cape' });
|
||||
wrapper.vm.removeCapeItem(0);
|
||||
expect(wrapper.find('#cape-category').text()).toContain('user.emptyClosetMsg');
|
||||
});
|
||||
|
||||
test('compute avatar URL', () => {
|
||||
|
|
|
|||
|
|
@ -86,7 +86,7 @@ test('remove texture', async () => {
|
|||
|
||||
button.trigger('click');
|
||||
await flushPromises();
|
||||
expect(wrapper.emitted()['item-removed'][0][0]).toBe(1);
|
||||
expect(wrapper.emitted()['item-removed']).toBeTruthy();
|
||||
expect(Vue.prototype.$http.post).toBeCalledWith('/user/closet/remove', { tid: 1 });
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -159,8 +159,7 @@ test('delete player', async () => {
|
|||
expect(wrapper.text()).toContain('to-be-deleted');
|
||||
|
||||
button.trigger('click');
|
||||
await flushPromises(); // Finish HTTP request
|
||||
await wrapper.vm.$nextTick(); // Update DOM
|
||||
await flushPromises();
|
||||
expect(wrapper.text()).not.toContain('to-be-deleted');
|
||||
});
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user