feat: add effectiveBackDesign and patchBackDesign to store
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { ref, computed } from 'vue'
|
||||
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'
|
||||
|
||||
@@ -30,6 +30,13 @@ export const useProjectStore = defineStore('project', () => {
|
||||
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() {
|
||||
loading.value = true
|
||||
error.value = ''
|
||||
@@ -48,6 +55,7 @@ export const useProjectStore = defineStore('project', () => {
|
||||
name,
|
||||
template_id: templateId,
|
||||
design: DEFAULT_DESIGN,
|
||||
back_design: DEFAULT_BACK_DESIGN,
|
||||
card_overrides: {},
|
||||
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.card_overrides) r.data.card_overrides = {}
|
||||
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 = []
|
||||
project.value = r.data
|
||||
currentCard.value = 'spade-A'
|
||||
@@ -100,6 +109,7 @@ export const useProjectStore = defineStore('project', () => {
|
||||
try {
|
||||
await axios.post(`${API}/projects/${project.value.id}/design/`, {
|
||||
design: project.value.design,
|
||||
back_design: project.value.back_design,
|
||||
card_overrides: project.value.card_overrides,
|
||||
number_layout: project.value.number_layout,
|
||||
face_orientations: project.value.face_orientations || {},
|
||||
@@ -118,6 +128,15 @@ export const useProjectStore = defineStore('project', () => {
|
||||
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,
|
||||
allCards,
|
||||
effectiveDesign,
|
||||
effectiveBackDesign,
|
||||
fetchProjects,
|
||||
createProject,
|
||||
deleteProject,
|
||||
@@ -178,6 +198,7 @@ export const useProjectStore = defineStore('project', () => {
|
||||
saveDesign,
|
||||
scheduleSaveDesign,
|
||||
patchDesign,
|
||||
patchBackDesign,
|
||||
patchCardOverride,
|
||||
clearCardOverride,
|
||||
patchNumberLayout,
|
||||
|
||||
Reference in New Issue
Block a user