| | |
| | | }; |
| | | |
| | | const addIframeView = (view: TagView): void => { |
| | | if (iframeViews.value.some((v) => v.path === view.path)) return; |
| | | if (iframeViews.value.some((v: TagView) => v.path === view.path)) return; |
| | | iframeViews.value.push( |
| | | Object.assign({}, view, { |
| | | title: view.meta?.title || 'no-name' |
| | |
| | | }; |
| | | const delIframeView = (view: TagView): Promise<TagView[]> => { |
| | | return new Promise((resolve) => { |
| | | iframeViews.value = iframeViews.value.filter((item) => item.path !== view.path); |
| | | iframeViews.value = iframeViews.value.filter((item: TagView) => item.path !== view.path); |
| | | resolve([...iframeViews.value]); |
| | | }); |
| | | }; |
| | | const addVisitedView = (view: TagView): void => { |
| | | if (visitedViews.value.some((v) => v.path === view.path)) return; |
| | | if (visitedViews.value.some((v: TagView) => v.path === view.path)) return; |
| | | visitedViews.value.push( |
| | | Object.assign({}, view, { |
| | | title: view.meta?.title || 'no-name' |
| | |
| | | |
| | | const delOthersVisitedViews = (view: TagView): Promise<TagView[]> => { |
| | | return new Promise((resolve) => { |
| | | visitedViews.value = visitedViews.value.filter((v) => { |
| | | visitedViews.value = visitedViews.value.filter((v: TagView) => { |
| | | return v.meta?.affix || v.path === view.path; |
| | | }); |
| | | resolve([...visitedViews.value]); |
| | |
| | | }; |
| | | const delAllVisitedViews = (): Promise<TagView[]> => { |
| | | return new Promise((resolve) => { |
| | | visitedViews.value = visitedViews.value.filter((tag) => tag.meta?.affix); |
| | | visitedViews.value = visitedViews.value.filter((tag: TagView) => tag.meta?.affix); |
| | | resolve([...visitedViews.value]); |
| | | }); |
| | | }; |
| | |
| | | }); |
| | | }; |
| | | |
| | | const updateVisitedView = (view: TagView): void => { |
| | | const updateVisitedView = (view: TagView | RouteLocationNormalized): void => { |
| | | for (let v of visitedViews.value) { |
| | | if (v.path === view.path) { |
| | | v = Object.assign(v, view); |
| | |
| | | }; |
| | | const delRightTags = (view: TagView): Promise<TagView[]> => { |
| | | return new Promise((resolve) => { |
| | | const index = visitedViews.value.findIndex((v) => v.path === view.path); |
| | | const index = visitedViews.value.findIndex((v: TagView) => v.path === view.path); |
| | | if (index === -1) { |
| | | return; |
| | | } |
| | | visitedViews.value = visitedViews.value.filter((item, idx) => { |
| | | visitedViews.value = visitedViews.value.filter((item: TagView, idx: number) => { |
| | | if (idx <= index || (item.meta && item.meta.affix)) { |
| | | return true; |
| | | } |
| | |
| | | }; |
| | | const delLeftTags = (view: TagView): Promise<TagView[]> => { |
| | | return new Promise((resolve) => { |
| | | const index = visitedViews.value.findIndex((v) => v.path === view.path); |
| | | const index = visitedViews.value.findIndex((v: TagView) => v.path === view.path); |
| | | if (index === -1) { |
| | | return; |
| | | } |
| | | visitedViews.value = visitedViews.value.filter((item, idx) => { |
| | | visitedViews.value = visitedViews.value.filter((item: TagView, idx: number) => { |
| | | if (idx >= index || (item.meta && item.meta.affix)) { |
| | | return true; |
| | | } |
| | |
| | | }); |
| | | }; |
| | | |
| | | const addCachedView = (view: TagView): void => { |
| | | const addCachedView = (view: TagView | RouteLocationNormalized): void => { |
| | | const viewName = view.name as string; |
| | | if (!viewName) return; |
| | | if (cachedViews.value.includes(viewName)) return; |