From 25cf914860616095ea9e2622b291af7d3a1a9a36 Mon Sep 17 00:00:00 2001 From: "sebastien.cassan@geomod.fr" Date: Wed, 11 Dec 2024 10:32:15 +0100 Subject: [PATCH] feat: manage assign legendary dialog fix: change plus icon for rosterList and historyList feat: manage loot color epic and legendary --- src/assets/main.css | 6 +- src/components/HistoryList.vue | 115 ++++++++++++++++++++++++++++++++- src/components/RosterList.vue | 2 +- 3 files changed, 118 insertions(+), 5 deletions(-) diff --git a/src/assets/main.css b/src/assets/main.css index d255f57..5478713 100644 --- a/src/assets/main.css +++ b/src/assets/main.css @@ -50,10 +50,14 @@ html { max-height: 95dvh; } -a, a:active, a:focus, a:hover { +a.color-epic, a.color-epic:active, a.color-epic:focus, a.color-epic:hover { color: #9E9EFF; } +a.color-leg, a.color-leg:active, a.color-leg:focus, a.color-leg:hover { + color: #FB8C00; +} + .select-row { background-color: #444; } diff --git a/src/components/HistoryList.vue b/src/components/HistoryList.vue index 33ce877..e774728 100644 --- a/src/components/HistoryList.vue +++ b/src/components/HistoryList.vue @@ -11,7 +11,6 @@ const errorMessage = ref('') const formValid = ref(true) const historyList = reactive([]) - const historySelected = ref([]) const deleteHistoryDialog = ref(false) @@ -20,6 +19,16 @@ const isLoading = ref(false) const search = ref('') +const assignLegendaryDialog = ref(false) +const listLegendary = [ + { value: 'tarecgosa', title: 'Courroux du dragon, le Repos de Tarecgosa' }, + { value: 'crocsPere', title: 'Crocs du père' } +] +const legendarySelected = ref('tarecgosa') + +const rosterList = reactive([]) +const memberSelected = ref(null) + const headers = [ { value: 'name', title: 'Membre', sortable: true }, { value: 'fullDate', title: 'Date', align: 'center', sortable: true }, @@ -34,6 +43,7 @@ const headers = [ onMounted(async () => { await getHistory() + await getRoster() }) const isLogged = computed(() => { @@ -41,6 +51,12 @@ const isLogged = computed(() => { return false }) +const getRoster = async () => { + rosterList.length = 0 + const result = await httpRequest('/rosters', { method: 'GET' }, false, true) + rosterList.push(...result.rosters) +} + const getHistory = async () => { historyList.length = 0 const result = await httpRequest('/histories', { method: 'GET' }, false, true) @@ -113,6 +129,70 @@ const submitDeleteHistory = async () => { } } +const assignLegendary = () => { + assignLegendaryDialog.value = true +} + +const cancelAssignLegendary = () => { + assignLegendaryDialog.value = false + legendarySelected.value = 'tarecgosa' + memberSelected.value = null +} + +const submitAssignLegendary = async () => { + errorMessage.value = null + if (memberSelected.value) { + try { + isLoading.value = true + const member = rosterList.find(r => r.name === memberSelected.value) + const memberClass = member.classe + const result = await httpRequest('/assignLegendary', { method: 'POST', body: { legendary: legendarySelected.value, member: memberSelected.value, classe: memberClass } }, true, true) + if (result.success) { + await getHistory() + cancelAssignLegendary() + } else errorMessage.value = false + isLoading.value = false + } catch (e) { + errorMessage.value = e.message + isLoading.value = false + } + } else { + errorMessage.value = 'Veuillez sélectionner un membre' + } +} + +const listMember = computed(() => { + const list = [] + if (legendarySelected.value === 'tarecgosa') { + const rosterFiltered = rosterList.filter(r => + r.classe === 'MAGE' || + r.classe === 'WARLOCK' || + (r.classe === 'PRIEST' && r.role === 'Ranged') || + (r.classe === 'SHAMAN' && r.role === 'Ranged') || + (r.classe === 'DRUID' && r.role === 'Ranged') + ) + list.push(...rosterFiltered.map(r => { + return { value: r.name, title: r.name } + })) + } else if (legendarySelected.value === 'crocsPere') { + const rosterFiltered = rosterList.filter(r => r.classe === 'ROGUE') + list.push(...rosterFiltered.map(r => { + return { value: r.name, title: r.name } + })) + } + return list +}) + +const colorItem = (item) => { + switch (item.itemID) { + case '71086': + case '77949': + case '77950': + return 'color-leg' + default: + return 'color-epic' + } +} @@ -175,4 +257,31 @@ const submitDeleteHistory = async () => { + + + + + + + + + + + + + + + + + {{ errorMessage }} + + + + + + + + + + diff --git a/src/components/RosterList.vue b/src/components/RosterList.vue index 1bfb557..d2e32f7 100644 --- a/src/components/RosterList.vue +++ b/src/components/RosterList.vue @@ -206,7 +206,7 @@ const saveRaidDate = async () => { - +