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 = { frames(state) { return state.frames; } }; // 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 false; } 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); //读取当前屏幕分辨率 console.log(window.screen.availWidth); console.log(window.screen.availHeight); dframe.name = curDframe.name; dframe.width = curDframe.width; dframe.height = curDframe.height; //根据分辨率动态调整(摄像机配置,数据栈配置,比对库管理,算力管理,实时监控) //获取原始宽高比 let ratio = curDframe.width / curDframe.height; if (curDframe.name == 'cameraAccess' || curDframe.name == 'dataStack' || curDframe.name == 'library' || curDframe.name == 'analysisPower' || curDframe.name == 'cameraVideo') { //处理富余高度大于140的窗口 if (window.screen.availHeight - curDframe.height > 140) { dframe.height = (window.screen.availHeight - curDframe.height) / 2 + curDframe.height - 50; dframe.width = dframe.height * ratio; } } //全部绝对居中 dframe.leftOffset = (document.body.offsetWidth - dframe.width) / 2; dframe.topOffset = (document.body.offsetHeight - dframe.height) / 2; state.framesOrder = order; state.framesOffset = offset; state.frames.push(dframe); return true; }, shotscreen: (state, { id, src }) => { let curFrame = state.frames.find(frame => frame.id == id); if (!curFrame.isShow) { return } let curDock = state.minDocks.find(one => one.id == id); curDock.screenshot = src; }, addMinDock: (state, dock) => { let ids = state.minDocks.map(item => item.id); if (ids.indexOf(dock.id) > -1) { //已经在mindock里 let curFrame = state.frames.find(frame => frame.id == dock.id); curFrame.isShow = false; let minOne = state.minDocks.find(one => one.id == dock.id); minOne.highlight = false; minOne.screenshot = dock.screenshot ? dock.screenshot : minOne.screenshot; //找到minDocks最近打开的状态isShow为true的dock置为高亮 let minLen = state.minDocks.length; for (var i = minLen - 1; i >= 0; i--) { let temp = state.frames.find(frame => frame.id == state.minDocks[i].id); if (temp.isShow) { state.minDocks[i].highlight = true; return; } } return; } // state.frames.find(function (it) { // if (it.id === dock.id) { // it.isShow = false; // return true; // } // return false; // }); state.minDocks.push(dock); }, 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; } }, highlight(state) { //找到minDocks最近打开的状态isShow为true的dock置为高亮 let minLen = state.minDocks.length; for (var i = minLen - 1; i >= 0; i--) { let temp = state.frames.find(frame => frame.id == state.minDocks[i].id); if (temp.isShow) { state.minDocks[i].highlight = true; return; } } }, 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; state.minDocks.forEach((min, index) => { if (min.id == it.id) { min.highlight = true; } else { min.highlight = false; } }) } else { it.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; }); }, 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 }