119 lines
2.6 KiB
JavaScript
119 lines
2.6 KiB
JavaScript
import { createStore } from 'vuex';
|
|
import { units } from './lib/units';
|
|
|
|
export default createStore({
|
|
state: {
|
|
settings: {
|
|
units: 'mm',
|
|
borders: false,
|
|
boardThickness: 20,
|
|
boardLength: 700,
|
|
bladeKerf: 3.5,
|
|
crosscutWidth: 30,
|
|
|
|
alternateDirection: true
|
|
},
|
|
|
|
wood: [
|
|
{ name: 'Walnut', color: '#58443f' },
|
|
{ name: 'Maple', color: '#f2e0aa' },
|
|
{ name: 'Cherry', color: '#bb8359' },
|
|
{ name: 'Mahogany', color: '#98473f' },
|
|
{ name: 'Yellowheart', color: '#ffff84' },
|
|
{ name: 'White oak', color: '#fdf4b9' },
|
|
{ name: 'Bubinga', color: '#7e3c34' },
|
|
{ name: 'Jatoba', color: '#9b281c' },
|
|
{ name: 'Padouk', color: '#933350' }
|
|
],
|
|
|
|
boards: [
|
|
{
|
|
layers: [
|
|
{ wood: 0, width: 20 },
|
|
{ wood: 1, width: 20 },
|
|
{ wood: 0, width: 20 },
|
|
{ wood: 1, width: 20 },
|
|
{ wood: 0, width: 20 },
|
|
{ wood: 1, width: 20 },
|
|
{ wood: 0, width: 20 },
|
|
{ wood: 1, width: 20 },
|
|
{ wood: 0, width: 20 },
|
|
{ wood: 1, width: 20 },
|
|
{ wood: 0, width: 20 },
|
|
{ wood: 1, width: 20 },
|
|
{ wood: 0, width: 20 },
|
|
{ wood: 1, width: 20 }
|
|
]
|
|
}
|
|
]
|
|
},
|
|
|
|
mutations: {
|
|
addLayer(state, board)
|
|
{
|
|
if (board < 0 || board >= state.boards.length)
|
|
return;
|
|
|
|
state.boards[board].layers.push({
|
|
wood: 0,
|
|
width: units.fromMillimeters(20, state.settings.units)
|
|
});
|
|
},
|
|
|
|
removeLayer(state, payload)
|
|
{
|
|
if (payload.board < 0 || payload.board >= state.boards.length)
|
|
return;
|
|
|
|
if (payload.layer < 0 || payload.layer >= state.boards[payload.board].length)
|
|
return;
|
|
|
|
state.boards[payload.board].layers.splice(payload.layer, 1);
|
|
},
|
|
|
|
|
|
addWood(state)
|
|
{
|
|
state.wood.push({
|
|
name: 'Wood #' + (state.wood.length + 1),
|
|
color: '#f2e0aa'
|
|
});
|
|
},
|
|
|
|
removeWood(state, index)
|
|
{
|
|
if (index < 0 || index >= state.wood.length)
|
|
return;
|
|
|
|
// Update all layers
|
|
state.boards.forEach(board =>
|
|
{
|
|
board.layers.forEach(layer =>
|
|
{
|
|
if (layer.wood === index)
|
|
layer.wood = null
|
|
else if (layer.wood > index)
|
|
layer.wood--;
|
|
});
|
|
});
|
|
|
|
state.wood.splice(index, 1);
|
|
},
|
|
|
|
|
|
updateSettings(state, payload)
|
|
{
|
|
for (const property in payload)
|
|
{
|
|
if (!payload.hasOwnProperty(property) || !state.settings.hasOwnProperty(property))
|
|
continue;
|
|
|
|
state.settings[property] = payload[property];
|
|
}
|
|
}
|
|
},
|
|
|
|
actions: {
|
|
}
|
|
})
|