import Calendar from '../../components/Calendar'
|
|
const state = {
|
docks: [],
|
frames: [],
|
minDocks: [],
|
messageNotices: [],
|
notificationCenterVisible: false,
|
framesOrder: 0,
|
framesOffset: 5,
|
preferenceVisiable: false,
|
safari: {
|
id: 'safari',
|
active: false,
|
isShow: true,
|
url: '',
|
title: 'safari',
|
icon: '/images/desktop/safari.png',
|
order: 0,
|
leftOffset: 8,
|
topOffset: 8
|
},
|
weather: void 0,
|
currentDate: new Date()
|
};
|
|
// getters
|
const getters = {};
|
|
// actions
|
const actions = {
|
addFrame({ commit }, dframe) {
|
commit('addFrame', dframe);
|
commit('refreshFrame', dframe);
|
commit('addDockDot', dframe.id);
|
},
|
addMessage({ commit }, msg) {
|
commit('addMessageNotice', msg);
|
commit('sortMessageNotice');
|
},
|
closeFrame({ commit }, item) {
|
commit('closeFrame', item);
|
},
|
removeMessageById({ commit }, id) {
|
commit('removeMessageById', id);
|
commit('sortMessageNotice');
|
},
|
removeMessageByDate({ commit }, dateStr) {
|
commit('removeMessageByDate', dateStr);
|
commit('sortMessageNotice');
|
}
|
};
|
|
// mutations
|
const mutations = {
|
addDock: (state, dock) => {
|
let ids = state.docks.map(item => item.id);
|
if (ids.indexOf(dock.id) > -1) {
|
return;
|
}
|
dock.isOpen = false;
|
state.docks.push(dock);
|
},
|
addDockDot: (state, id) => {
|
state.docks.find(function (it) {
|
if (it.id === id) {
|
it.isOpen = true;
|
return true;
|
}
|
return false;
|
});
|
},
|
addFrame: (state, dframe) => {
|
let ids = state.frames.map(item => item.id);
|
if (ids.indexOf(dframe.id) > -1) {
|
return;
|
}
|
|
let order = state.framesOrder + 1;
|
let offset = state.framesOffset;
|
if (order >= 10) {
|
order = 0;
|
offset -= 1;
|
if (offset < 0) {
|
offset = 5;
|
}
|
}
|
dframe.leftOffset = state.framesOffset + order;
|
dframe.topOffset = state.framesOffset + order;
|
dframe.order = 0;
|
dframe.isShow = true;
|
let curDframe = state.docks.find(dock => dock.id == dframe.id);
|
dframe.width = curDframe.width;
|
dframe.height = curDframe.height;
|
state.framesOrder = order;
|
state.framesOffset = offset;
|
state.frames.push(dframe);
|
},
|
addMinDock: (state, dock) => {
|
let ids = state.minDocks.map(item => item.id);
|
if (ids.indexOf(dock.id) > -1) {
|
return;
|
}
|
state.frames.find(function (it) {
|
if (it.id === dock.id) {
|
it.isShow = false;
|
return true;
|
}
|
return false;
|
});
|
state.minDocks.push(dock);
|
if (dock.id === 'safari') {
|
state.safari.isShow = false;
|
}
|
},
|
addMessageNotice: (state, msg) => {
|
let ids = state.messageNotices.map(item => item.id);
|
if (ids.indexOf(msg.id) > -1) {
|
return;
|
}
|
state.messageNotices.push(msg);
|
},
|
addWeather: (state, item) => {
|
state.weather = item;
|
},
|
changeNotificationCenterVisible: (state, visible) => {
|
state.notificationCenterVisible = visible;
|
},
|
closeFrame: (state, item) => {
|
state.frames.find(function (it, idx) {
|
if (it.id === item.id) {
|
state.frames.splice(idx, 1);
|
return true;
|
}
|
return false;
|
});
|
state.minDocks.find(function (it, idx) {
|
if (it.id === item.id) {
|
state.minDocks.splice(idx, 1);
|
return true;
|
}
|
return false;
|
});
|
state.docks.find(function (it) {
|
if (it.id === item.id) {
|
it.isOpen = false;
|
return true;
|
}
|
return false;
|
});
|
if (item.id === 'safari') {
|
state.safari.active = false;
|
}
|
},
|
openSafari: (state) => {
|
state.safari.active = true;
|
state.safari.isShow = true;
|
},
|
refreshFrame: (state, item) => {
|
state.frames.forEach(function (it) {
|
if (it.id === item.id) {
|
it.order = 1;
|
} else {
|
it.order = 0;
|
}
|
});
|
if (item.id === 'safari') {
|
state.safari.order = 1;
|
} else {
|
state.safari.order = 0;
|
}
|
},
|
refreshTime: (state) => {
|
state.currentDate = new Date();
|
},
|
resetMinFrame: (state, id) => {
|
state.frames.find(function (it) {
|
if (it.id === id) {
|
it.isShow = true;
|
return true;
|
}
|
return false;
|
});
|
state.minDocks.find(function (it, idx) {
|
if (it.id === id) {
|
state.minDocks.splice(idx, 1);
|
return true;
|
}
|
return false;
|
});
|
if (id === 'safari') {
|
state.safari.isShow = true;
|
}
|
},
|
removeMessageById: (state, id) => {
|
state.messageNotices.find(function (item, idx) {
|
if (item.id === id) {
|
state.messageNotices.splice(idx, 1);
|
return true;
|
}
|
return false;
|
});
|
},
|
removeMessageByDate: (state, dateStr) => {
|
let notices = [];
|
state.messageNotices.forEach(function (item) {
|
if (Calendar.dateOfYear(new Date(item.time)) !== dateStr) {
|
notices.push(item);
|
}
|
});
|
state.messageNotices = notices;
|
},
|
sortMessageNotice: (state) => {
|
state.messageNotices.sort(
|
(a, b) => new Date(b.time).getTime() - new Date(a.time).getTime());
|
let dateMap = {};
|
state.messageNotices.forEach(function (value) {
|
let dateStr = Calendar.dateOfYear(new Date(value.time));
|
if (dateMap[dateStr]) {
|
value.showHeader = false;
|
} else {
|
dateMap[dateStr] = 1;
|
value.showHeader = true;
|
}
|
});
|
},
|
togglePreference: (state) => {
|
state.preferenceVisiable = !state.preferenceVisiable;
|
}
|
};
|
|
export default {
|
namespaced: true,
|
state,
|
getters,
|
actions,
|
mutations
|
}
|