| | |
| | | const state = { |
| | | visitedViews: [], |
| | | cachedViews: [] |
| | | cachedViews: [], |
| | | iframeViews: [] |
| | | } |
| | | |
| | | const mutations = { |
| | | ADD_IFRAME_VIEW: (state, view) => { |
| | | if (state.iframeViews.some(v => v.path === view.path)) return |
| | | state.iframeViews.push( |
| | | Object.assign({}, view, { |
| | | title: view.meta.title || 'no-name' |
| | | }) |
| | | ) |
| | | }, |
| | | ADD_VISITED_VIEW: (state, view) => { |
| | | if (state.visitedViews.some(v => v.path === view.path)) return |
| | | state.visitedViews.push( |
| | |
| | | state.cachedViews.push(view.name) |
| | | } |
| | | }, |
| | | |
| | | DEL_VISITED_VIEW: (state, view) => { |
| | | for (const [i, v] of state.visitedViews.entries()) { |
| | | if (v.path === view.path) { |
| | |
| | | break |
| | | } |
| | | } |
| | | state.iframeViews = state.iframeViews.filter(item => item.path !== view.path) |
| | | }, |
| | | DEL_IFRAME_VIEW: (state, view) => { |
| | | state.iframeViews = state.iframeViews.filter(item => item.path !== view.path) |
| | | }, |
| | | DEL_CACHED_VIEW: (state, view) => { |
| | | const index = state.cachedViews.indexOf(view.name) |
| | |
| | | state.visitedViews = state.visitedViews.filter(v => { |
| | | return v.meta.affix || v.path === view.path |
| | | }) |
| | | state.iframeViews = state.iframeViews.filter(item => item.path === view.path) |
| | | }, |
| | | DEL_OTHERS_CACHED_VIEWS: (state, view) => { |
| | | const index = state.cachedViews.indexOf(view.name) |
| | |
| | | state.cachedViews = [] |
| | | } |
| | | }, |
| | | |
| | | DEL_ALL_VISITED_VIEWS: state => { |
| | | // keep affix tags |
| | | const affixTags = state.visitedViews.filter(tag => tag.meta.affix) |
| | | state.visitedViews = affixTags |
| | | state.iframeViews = [] |
| | | }, |
| | | DEL_ALL_CACHED_VIEWS: state => { |
| | | state.cachedViews = [] |
| | | }, |
| | | |
| | | UPDATE_VISITED_VIEW: (state, view) => { |
| | | for (let v of state.visitedViews) { |
| | | if (v.path === view.path) { |
| | |
| | | } |
| | | } |
| | | }, |
| | | |
| | | DEL_RIGHT_VIEWS: (state, view) => { |
| | | const index = state.visitedViews.findIndex(v => v.path === view.path) |
| | | if (index === -1) { |
| | |
| | | if (i > -1) { |
| | | state.cachedViews.splice(i, 1) |
| | | } |
| | | if(item.meta.link) { |
| | | const fi = state.iframeViews.findIndex(v => v.path === item.path) |
| | | state.iframeViews.splice(fi, 1) |
| | | } |
| | | return false |
| | | }) |
| | | }, |
| | | |
| | | DEL_LEFT_VIEWS: (state, view) => { |
| | | const index = state.visitedViews.findIndex(v => v.path === view.path) |
| | | if (index === -1) { |
| | |
| | | if (i > -1) { |
| | | state.cachedViews.splice(i, 1) |
| | | } |
| | | if(item.meta.link) { |
| | | const fi = state.iframeViews.findIndex(v => v.path === item.path) |
| | | state.iframeViews.splice(fi, 1) |
| | | } |
| | | return false |
| | | }) |
| | | } |
| | |
| | | dispatch('addVisitedView', view) |
| | | dispatch('addCachedView', view) |
| | | }, |
| | | addIframeView({ commit }, view) { |
| | | commit('ADD_IFRAME_VIEW', view) |
| | | }, |
| | | addVisitedView({ commit }, view) { |
| | | commit('ADD_VISITED_VIEW', view) |
| | | }, |
| | | addCachedView({ commit }, view) { |
| | | commit('ADD_CACHED_VIEW', view) |
| | | }, |
| | | |
| | | delView({ dispatch, state }, view) { |
| | | return new Promise(resolve => { |
| | | dispatch('delVisitedView', view) |
| | |
| | | resolve([...state.visitedViews]) |
| | | }) |
| | | }, |
| | | delIframeView({ commit, state }, view) { |
| | | return new Promise(resolve => { |
| | | commit('DEL_IFRAME_VIEW', view) |
| | | resolve([...state.iframeViews]) |
| | | }) |
| | | }, |
| | | delCachedView({ commit, state }, view) { |
| | | return new Promise(resolve => { |
| | | commit('DEL_CACHED_VIEW', view) |
| | | resolve([...state.cachedViews]) |
| | | }) |
| | | }, |
| | | |
| | | delOthersViews({ dispatch, state }, view) { |
| | | return new Promise(resolve => { |
| | | dispatch('delOthersVisitedViews', view) |
| | |
| | | resolve([...state.cachedViews]) |
| | | }) |
| | | }, |
| | | |
| | | delAllViews({ dispatch, state }, view) { |
| | | return new Promise(resolve => { |
| | | dispatch('delAllVisitedViews', view) |
| | |
| | | resolve([...state.cachedViews]) |
| | | }) |
| | | }, |
| | | |
| | | updateVisitedView({ commit }, view) { |
| | | commit('UPDATE_VISITED_VIEW', view) |
| | | }, |
| | | |
| | | delRightTags({ commit }, view) { |
| | | return new Promise(resolve => { |
| | | commit('DEL_RIGHT_VIEWS', view) |
| | | resolve([...state.visitedViews]) |
| | | }) |
| | | }, |
| | | |
| | | delLeftTags({ commit }, view) { |
| | | return new Promise(resolve => { |
| | | commit('DEL_LEFT_VIEWS', view) |