Skip to content

Commit 39039b5

Browse files
committed
Merge branch 'feature/del-issue' into develop
2 parents ca179ea + 024cd28 commit 39039b5

File tree

8 files changed

+82
-27
lines changed

8 files changed

+82
-27
lines changed

app-ui/Panel/ListItem.less

+7
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@
9090
}
9191

9292
.sys-hosts {
93+
margin-top: 10px;
9394
.item-icon {
9495
margin-left: 21px;
9596
}
@@ -99,6 +100,12 @@
99100
opacity: 0.5;
100101
}
101102

103+
:global(.platform-darwin) {
104+
.sys-hosts {
105+
margin-top: 0;
106+
}
107+
}
108+
102109
:global(.theme-dark) {
103110
.list-item {
104111
&.selected {

app-ui/Panel/index.less

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
.mac_handler {
3030
height: 36px;
31-
//-webkit-app-region: drag;
31+
-webkit-app-region: drag;
3232
}
3333

3434
:global(.theme-dark) {

app-ui/events/del_hosts.js

+12-12
Original file line numberDiff line numberDiff line change
@@ -6,25 +6,25 @@
66
'use strict'
77

88
import Agent from '../Agent'
9+
import treeFunc from '../../app/libs/treeFunc'
910

1011
module.exports = (app, hosts) => {
1112
let list = app.state.list
12-
let idx = list.findIndex(item => item.id === hosts.id)
13-
if (idx === -1) {
14-
return
15-
}
13+
let id = hosts.id
14+
let neighbors = [treeFunc.getUpItemWithCollapseState(list, id), treeFunc.getDownItemWithCollapseState(list, id)]
15+
list = treeFunc.removeItemFromTreeById(list, hosts.id)
16+
let next_hosts = neighbors[1] || neighbors[0] || null
1617

17-
list.splice(idx, 1)
18+
//let idx = list.findIndex(item => item.id === hosts.id)
19+
//if (idx === -1) {
20+
// return
21+
//}
22+
//
23+
//list.splice(idx, 1)
1824

1925
Agent.pact('saveHosts', list)
2026
.then(list => {
21-
app.setState({list}, () => {
22-
// 选中下一个 hosts
23-
let next_hosts = list[idx] || list[idx - 1] || null
24-
if (next_hosts) {
25-
app.setState({current: next_hosts})
26-
}
27-
})
27+
app.setState({list, current: next_hosts})
2828
})
2929
.catch(e => console.log(e))
3030
}

app/libs/treeFunc.js

+58-10
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,29 @@
44
* @homepage: https://oldj.net
55
*/
66

7-
const flatTree = tree => {
8-
let list = []
9-
10-
tree.map(t => {
11-
list.push(t)
12-
let {children} = t
13-
if (Array.isArray(children) && children.length > 0) {
14-
list = [...list, ...flatTree(children)]
7+
/**
8+
* 将 tree_list 树状对象变成一个平的数组
9+
* @param tree_list {Array} 树状对象
10+
* @param ignore_collapsed {Boolean} 是否忽略折叠起来的对象
11+
* @returns {Array}
12+
*/
13+
function flatTree(tree_list, ignore_collapsed = false) {
14+
let arr = []
15+
16+
Array.isArray(tree_list) && tree_list.map((item) => {
17+
if (!item) return
18+
19+
arr.push(item)
20+
21+
if (ignore_collapsed && item.collapsed) return
22+
23+
if (item.children) {
24+
let a2 = flatTree(item.children, ignore_collapsed)
25+
arr = arr.concat(a2)
1526
}
1627
})
1728

18-
return list
29+
return arr
1930
}
2031

2132
const getItemById = (tree, id) => {
@@ -97,9 +108,46 @@ const updateTree = (tree, updates) => {
97108
return tree
98109
}
99110

111+
function getParentList (list, id) {
112+
if (list.findIndex(i => i.id === id) > -1) return list
113+
114+
let fl = flatTree(list)
115+
let found = false
116+
let parent_list = []
117+
118+
fl.map((i) => {
119+
if (found) return
120+
121+
if (i.id === id) {
122+
found = true
123+
parent_list = list
124+
} else if (i.children && i.children.find((i2) => i2.id === id)) {
125+
found = true
126+
parent_list = i.children
127+
}
128+
})
129+
130+
return parent_list
131+
}
132+
133+
function getUpItemWithCollapseState (list, id) {
134+
let f_list = flatTree(list, true)
135+
let idx = f_list.findIndex(i => i.id === id)
136+
return idx > 0 ? f_list[idx - 1] : null
137+
}
138+
139+
function getDownItemWithCollapseState (list, id) {
140+
let f_list = flatTree(list, true)
141+
let idx = f_list.findIndex(i => i.id === id)
142+
return f_list[idx + 1] || null
143+
}
144+
100145
module.exports = {
101146
flatTree,
102147
updateTree,
103148
getItemById,
104-
getItemDetailById
149+
getItemDetailById,
150+
removeItemFromTreeById,
151+
getUpItemWithCollapseState,
152+
getDownItemWithCollapseState
105153
}

app/ui/app.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/ui/app.js

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/ui/common.js.LICENSE

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/*! SwitchHosts! common.js, 2019-11-18 10:51:26 */
1+
/*! SwitchHosts! common.js, 2019-11-18 20:18:23 */
22

33
/*!
44
Copyright (c) 2017 Jed Watson.

app/version.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
module.exports = [3, 5, 1, 5489]
1+
module.exports = [3, 5, 1, 5498]

0 commit comments

Comments
 (0)