feat: add effectiveBackDesign and patchBackDesign to store
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
import { defineStore } from 'pinia'
|
import { defineStore } from 'pinia'
|
||||||
import { ref, computed } from 'vue'
|
import { ref, computed } from 'vue'
|
||||||
import axios from 'axios'
|
import axios from 'axios'
|
||||||
import { DEFAULT_DESIGN, listAllCards } from '@/utils/cardLayout.js'
|
import { DEFAULT_DESIGN, DEFAULT_BACK_DESIGN, listAllCards } from '@/utils/cardLayout.js'
|
||||||
|
|
||||||
const API = '/api'
|
const API = '/api'
|
||||||
|
|
||||||
@@ -30,6 +30,13 @@ export const useProjectStore = defineStore('project', () => {
|
|||||||
return { ...base, ...ovr }
|
return { ...base, ...ovr }
|
||||||
})
|
})
|
||||||
|
|
||||||
|
const effectiveBackDesign = computed(() => {
|
||||||
|
if (!project.value) return DEFAULT_BACK_DESIGN
|
||||||
|
const base = JSON.parse(JSON.stringify(project.value.back_design || DEFAULT_BACK_DESIGN))
|
||||||
|
const ovr = (project.value.card_overrides || {})['back'] || {}
|
||||||
|
return { ...base, ...ovr }
|
||||||
|
})
|
||||||
|
|
||||||
async function fetchProjects() {
|
async function fetchProjects() {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
error.value = ''
|
error.value = ''
|
||||||
@@ -48,6 +55,7 @@ export const useProjectStore = defineStore('project', () => {
|
|||||||
name,
|
name,
|
||||||
template_id: templateId,
|
template_id: templateId,
|
||||||
design: DEFAULT_DESIGN,
|
design: DEFAULT_DESIGN,
|
||||||
|
back_design: DEFAULT_BACK_DESIGN,
|
||||||
card_overrides: {},
|
card_overrides: {},
|
||||||
number_layout: {},
|
number_layout: {},
|
||||||
})
|
})
|
||||||
@@ -69,6 +77,7 @@ export const useProjectStore = defineStore('project', () => {
|
|||||||
if (!r.data.design) r.data.design = JSON.parse(JSON.stringify(DEFAULT_DESIGN))
|
if (!r.data.design) r.data.design = JSON.parse(JSON.stringify(DEFAULT_DESIGN))
|
||||||
if (!r.data.card_overrides) r.data.card_overrides = {}
|
if (!r.data.card_overrides) r.data.card_overrides = {}
|
||||||
if (!r.data.number_layout) r.data.number_layout = {}
|
if (!r.data.number_layout) r.data.number_layout = {}
|
||||||
|
if (!r.data.back_design) r.data.back_design = JSON.parse(JSON.stringify(DEFAULT_BACK_DESIGN))
|
||||||
if (!r.data.assets) r.data.assets = []
|
if (!r.data.assets) r.data.assets = []
|
||||||
project.value = r.data
|
project.value = r.data
|
||||||
currentCard.value = 'spade-A'
|
currentCard.value = 'spade-A'
|
||||||
@@ -100,6 +109,7 @@ export const useProjectStore = defineStore('project', () => {
|
|||||||
try {
|
try {
|
||||||
await axios.post(`${API}/projects/${project.value.id}/design/`, {
|
await axios.post(`${API}/projects/${project.value.id}/design/`, {
|
||||||
design: project.value.design,
|
design: project.value.design,
|
||||||
|
back_design: project.value.back_design,
|
||||||
card_overrides: project.value.card_overrides,
|
card_overrides: project.value.card_overrides,
|
||||||
number_layout: project.value.number_layout,
|
number_layout: project.value.number_layout,
|
||||||
face_orientations: project.value.face_orientations || {},
|
face_orientations: project.value.face_orientations || {},
|
||||||
@@ -118,6 +128,15 @@ export const useProjectStore = defineStore('project', () => {
|
|||||||
scheduleSaveDesign()
|
scheduleSaveDesign()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function patchBackDesign(path, value) {
|
||||||
|
if (!project.value) return
|
||||||
|
if (!project.value.back_design) {
|
||||||
|
project.value.back_design = JSON.parse(JSON.stringify(DEFAULT_BACK_DESIGN))
|
||||||
|
}
|
||||||
|
setPath(project.value.back_design, path, value)
|
||||||
|
scheduleSaveDesign()
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改某张牌对项目级设计的覆盖
|
* 修改某张牌对项目级设计的覆盖
|
||||||
*/
|
*/
|
||||||
@@ -170,6 +189,7 @@ export const useProjectStore = defineStore('project', () => {
|
|||||||
error,
|
error,
|
||||||
allCards,
|
allCards,
|
||||||
effectiveDesign,
|
effectiveDesign,
|
||||||
|
effectiveBackDesign,
|
||||||
fetchProjects,
|
fetchProjects,
|
||||||
createProject,
|
createProject,
|
||||||
deleteProject,
|
deleteProject,
|
||||||
@@ -178,6 +198,7 @@ export const useProjectStore = defineStore('project', () => {
|
|||||||
saveDesign,
|
saveDesign,
|
||||||
scheduleSaveDesign,
|
scheduleSaveDesign,
|
||||||
patchDesign,
|
patchDesign,
|
||||||
|
patchBackDesign,
|
||||||
patchCardOverride,
|
patchCardOverride,
|
||||||
clearCardOverride,
|
clearCardOverride,
|
||||||
patchNumberLayout,
|
patchNumberLayout,
|
||||||
|
|||||||
Reference in New Issue
Block a user