You are viewing a plain text version of this content. The canonical link for it is here.
Posted to submarine-dev@hadoop.apache.org by li...@apache.org on 2019/10/08 12:32:52 UTC
[hadoop-submarine] branch master updated: [SUBMARINE-211]
Integrated Submarine workbench team manager web & server
This is an automated email from the ASF dual-hosted git repository.
liuxun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hadoop-submarine.git
The following commit(s) were added to refs/heads/master by this push:
new e17397c [SUBMARINE-211] Integrated Submarine workbench team manager web & server
e17397c is described below
commit e17397caaef792f930447e7361aeea65550aeac5
Author: Xun Liu <li...@apache.org>
AuthorDate: Wed Oct 2 00:24:09 2019 +0800
[SUBMARINE-211] Integrated Submarine workbench team manager web & server
### What is this PR for?
The submarine team manager is independently developed.
Integration of front-end pages and back-end services is required.
### What type of PR is it?
[Refactoring]
### What is the Jira issue?
* https://issues.apache.org/jira/browse/SUBMARINE-211
### How should this be tested?
* [CI Pass](https://travis-ci.org/liuxunorg/hadoop-submarine/builds/592117183)
### Screenshots (if appropriate)
![team-web-server](https://user-images.githubusercontent.com/3677382/65981603-0ae81300-e4ac-11e9-91f4-cb01fbe527da.gif)
### Questions:
* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No
Author: Xun Liu <li...@apache.org>
Closes #30 from liuxunorg/SUBMARINE-211 and squashes the following commits:
7e94bad [Xun Liu] [SUBMARINE-211] Integrated Submarine team manager web & server
---
.../org/apache/submarine/database/entity/Team.java | 5 +-
.../submarine/database/service/TeamService.java | 32 ++--
.../org/apache/submarine/rest/TeamRestApi.java | 4 +-
.../src/components/Dict/SearchSelect.vue | 4 +-
.../src/views/account/settings/Team.vue | 164 ++++++++++-----------
5 files changed, 95 insertions(+), 114 deletions(-)
diff --git a/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/database/entity/Team.java b/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/database/entity/Team.java
index e76492c..8a8fbea 100644
--- a/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/database/entity/Team.java
+++ b/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/database/entity/Team.java
@@ -22,7 +22,7 @@ public class Team extends BaseEntity {
private String teamName;
- private List<TeamMember> collaborators;
+ private List<TeamMember> collaborators = new ArrayList<>();;
public String getOwner() {
return owner;
@@ -49,9 +49,6 @@ public class Team extends BaseEntity {
}
public void addCollaborator(TeamMember memeber) {
- if (collaborators == null) {
- collaborators = new ArrayList<>();
- }
this.collaborators.add(memeber);
}
}
diff --git a/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/database/service/TeamService.java b/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/database/service/TeamService.java
index 5e2692e..a32ac85 100644
--- a/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/database/service/TeamService.java
+++ b/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/database/service/TeamService.java
@@ -101,30 +101,30 @@ public class TeamService {
where.put("teamId", team.getId());
// Take two lists of difference
- List<TeamMember> old_teamMembers = teamMemberMapper.selectAll(where);
- List<String> old_teamMembers_member = new ArrayList<>();
- for (TeamMember old_teamMember : old_teamMembers) {
- old_teamMembers_member.add(old_teamMember.getMember());
+ List<TeamMember> oldTeamMembers = teamMemberMapper.selectAll(where);
+ List<String> oldMembers = new ArrayList<>();
+ for (TeamMember oldTeamMember : oldTeamMembers) {
+ oldMembers.add(oldTeamMember.getMember());
}
- List<TeamMember> curr_teamMembers = team.getCollaborators();
- List<String> curr_teamMembers_member = new ArrayList<>();
- for (TeamMember curr_teamMember : curr_teamMembers) {
- curr_teamMembers_member.add(curr_teamMember.getMember());
+ List<TeamMember> newTeamMembers = team.getCollaborators();
+ List<String> newMembers = new ArrayList<>();
+ for (TeamMember newTeamMember : newTeamMembers) {
+ newMembers.add(newTeamMember.getMember());
}
- for (TeamMember old : old_teamMembers) {
- if (!curr_teamMembers_member.contains(old.getMember())) {
- teamMemberMapper.deleteByPrimaryKey(old.getId());
+ for (TeamMember oldTeamMember : oldTeamMembers) {
+ if (!newMembers.contains(oldTeamMember.getMember())) {
+ teamMemberMapper.deleteByPrimaryKey(oldTeamMember.getId());
}
}
- for (TeamMember curr : curr_teamMembers) {
- if (!old_teamMembers_member.contains(curr.getMember())) {
+ for (TeamMember newTeamMember : newTeamMembers) {
+ if (!oldMembers.contains(newTeamMember.getMember())) {
// TODO(zhulinhao):teamId Send it by the front desk, here there is no assignment
- curr.setTeamId(team.getId());
- curr.setTeamName(team.getTeamName());
- teamMemberMapper.insert(curr);
+ newTeamMember.setTeamId(team.getId());
+ newTeamMember.setTeamName(team.getTeamName());
+ teamMemberMapper.insert(newTeamMember);
}
}
diff --git a/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/rest/TeamRestApi.java b/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/rest/TeamRestApi.java
index 2aaa619..75a065c 100644
--- a/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/rest/TeamRestApi.java
+++ b/submarine-workbench/workbench-server/src/main/java/org/apache/submarine/rest/TeamRestApi.java
@@ -121,11 +121,11 @@ public class TeamRestApi {
} catch (Exception e) {
return new JsonResponse.Builder<>(Response.Status.OK).success(false)
- .message("update team failed!").build();
+ .message("Update team failed!").build();
}
return new JsonResponse.Builder<>(Response.Status.OK)
- .message("update team successfully!").success(true).build();
+ .message("Update team successfully!").success(true).build();
}
@DELETE
diff --git a/submarine-workbench/workbench-web/src/components/Dict/SearchSelect.vue b/submarine-workbench/workbench-web/src/components/Dict/SearchSelect.vue
index 5ed70ef..b29fc39 100644
--- a/submarine-workbench/workbench-web/src/components/Dict/SearchSelect.vue
+++ b/submarine-workbench/workbench-web/src/components/Dict/SearchSelect.vue
@@ -49,7 +49,7 @@ export default {
initValue: {
immediate: true,
handler (val) {
- console.log('val = ', val)
+ // console.log('val = ', val)
if (val && this.initSelectValue.length === 0) {
for (var i = 0; i < val.length; i++) {
var option = {}
@@ -104,7 +104,7 @@ export default {
})
},
handleChange (value) {
- this.$emit('change', this.id, value)
+ this.$emit('change', this.id, value, this.$store.getters.userInfo)
}
}
}
diff --git a/submarine-workbench/workbench-web/src/views/account/settings/Team.vue b/submarine-workbench/workbench-web/src/views/account/settings/Team.vue
index 19d4008..862fcc0 100644
--- a/submarine-workbench/workbench-web/src/views/account/settings/Team.vue
+++ b/submarine-workbench/workbench-web/src/views/account/settings/Team.vue
@@ -80,7 +80,6 @@ import { filterObj } from '@/utils/util'
import { ListMixin } from '@/mixins/ListMixin'
import SearchSelect from '@/components/Dict/SearchSelect.vue'
import { addTeam, editTeam, deleteTeam, duplicateCheck } from '@/api/system'
-import { getAction } from '@/api/manage'
export default {
name: 'Team',
@@ -89,9 +88,8 @@ export default {
data () {
return {
visible: false,
- // 查询条件
+ // query Param
queryParam: {
- owner: 'test'
},
searchSelectValue: '',
cacheData: [],
@@ -140,53 +138,27 @@ export default {
},
created () {
this.login_user = this.userInfo
+ this.queryParam.owner = this.login_user.name
},
methods: {
- loadData222 (arg) {
- if (!this.url.list) {
- console.log('Please set the url.list property!')
- return
- }
- // load first page data
- if (arg === 1) {
- this.ipagination.current = 1
- }
- var params = this.getQueryParams()
- this.loading = true
- getAction(this.url.list, params).then((res) => {
- this.responseAttributes = Object.assign({}, res.attributes)
- if (res.success) {
- res.result.records.forEach((team) => {
- // console.log('team = ', team)
- team.collaborators.forEach((member) => {
- // console.log('member = ', member)
- member.label = member.member
- member.key = member.id
- })
- })
- // console.log('res.result.records = ', res.result.records)
- this.dataSource = res.result.records
- this.ipagination.total = res.result.total
- } else {
- this.$message.warning(res.message)
- }
- this.loading = false
- })
- },
getQueryParams () {
var param = Object.assign({}, this.queryParam, this.isorter)
param.pageNo = this.ipagination.current
param.pageSize = this.ipagination.pageSize
return filterObj(param)
},
- changeSearchSelect (id, selected) {
- console.log('selected', selected)
+ changeSearchSelect (id, selected, userInfo) {
+ // console.log('selected', selected)
// const changeData = [...this.dataSource]
const team = this.dataSource.filter(item => item.id === id)[0]
if (team) {
- console.log('team', team)
+ // console.log('team', team)
+ if (team.collaborators === null) {
+ team.collaborators = []
+ }
var deleted = []
var newAdd = []
+
// found deleted team member
team.collaborators.forEach(function (oldMember) {
var notFoundNum = 0
@@ -214,17 +186,21 @@ export default {
}
})
- console.log('deleted', deleted)
- console.log('newAdd', newAdd)
+ // console.log('deleted', deleted)
+ // console.log('newAdd', newAdd)
// delete from dataSource
var newTeam = Object.assign({}, team)
newTeam.collaborators = []
+
// add not deleted member
- team.collaborators.forEach(function (oldMember) {
- if (deleted.indexOf(oldMember.id) < 0) {
- newTeam.collaborators = [...newTeam.collaborators, oldMember]
- }
- })
+ if (team.collaborators) {
+ team.collaborators.forEach(function (oldMember) {
+ if (deleted.indexOf(oldMember.id) < 0) {
+ newTeam.collaborators = [...newTeam.collaborators, oldMember]
+ }
+ })
+ }
+
// add new add member
newAdd.forEach(function (newAddMember) {
var newMember = {}
@@ -232,9 +208,11 @@ export default {
newMember.id = newAddMember.key
newMember.member = newAddMember.label
newMember.inviter = 0
+ newMember.createBy = userInfo.name
+ newMember.updateBy = userInfo.name
newTeam.collaborators = [...newTeam.collaborators, newMember]
})
- console.log('newTeam', newTeam)
+ // console.log('newTeam', newTeam)
// replace newTeam into dataSource
this.dataSource.forEach(function (team) {
@@ -286,54 +264,59 @@ export default {
onSaveMember (id) {
const newData = [...this.dataSource]
const target = newData.filter(item => id === item.id)[0]
+ // console.log('target = ', target)
if (target) {
- const validate = this.validateTeamName(target.teamName)
- if (validate === false) {
- return
- }
- if (target.hasOwnProperty('editable')) {
- // need delete editable Property
- delete target['editable']
- }
- // clean collaborators text and value Property
- target.collaborators.forEach((member) => {
- delete member['text']
- delete member['value']
- })
+ this.validateTeamName(target, () => {
+ if (target.hasOwnProperty('editable')) {
+ // need delete editable Property
+ delete target['editable']
+ }
+ // clean collaborators text and value Property
+ if (target.collaborators) {
+ target.collaborators.forEach((member) => {
+ delete member['text']
+ delete member['value']
+ })
+ }
- const that = this
- that.confirmLoading = true
- // console.log('target = ', target)
- let obj
- if (target.id === '0') {
- obj = addTeam(target)
- } else {
- obj = editTeam(target)
- }
- obj.then(res => {
- if (res.success) {
- // console.log('res = ', res)
- that.$message.success(res.message)
- delete target.editable
- if (target.id === '0') {
- target.id = res.result.records[0].id
- }
- this.dataSource = newData
- this.cacheData = newData.map(item => ({ ...item }))
- // console.log('dataSource = ', this.dataSource)
- this.loadData(1)
+ const that = this
+ that.confirmLoading = true
+ console.log('target = ', target)
+ let obj
+ if (target.id === '0') {
+ target.createBy = this.login_user.name
+ obj = addTeam(target)
} else {
- that.$message.warning(res.message)
+ target.updateBy = this.login_user.name
+ obj = editTeam(target)
}
- }).finally(() => {
- that.confirmLoading = false
+ obj.then(res => {
+ if (res.success) {
+ // console.log('res = ', res)
+ that.$message.success(res.message)
+ delete target.editable
+ if (target.id === '0') {
+ target.id = res.result.id
+ }
+ this.dataSource = newData
+ this.cacheData = newData.map(item => ({ ...item }))
+ // console.log('dataSource = ', this.dataSource)
+ this.loadData(1)
+ } else {
+ that.$message.warning(res.message)
+ }
+ }).finally(() => {
+ that.confirmLoading = false
+ })
})
}
},
onCancelMember (id) {
const newData = [...this.dataSource]
const target = newData.filter(item => id === item.id)[0]
- if (target) {
+ if (target.id === '0') {
+ this.loadData(1)
+ } else {
Object.assign(target, this.cacheData.filter(item => id === item.id)[0])
delete target.editable
this.dataSource = newData
@@ -344,7 +327,7 @@ export default {
const target = newData.filter(item => id === item.id)[0]
const that = this
that.confirmLoading = true
- deleteTeam(id).then(res => {
+ deleteTeam({ id: id }).then(res => {
if (res.success) {
that.$message.success(res.message)
delete target.editable
@@ -357,24 +340,25 @@ export default {
that.confirmLoading = false
})
},
- validateTeamName (value) {
+ validateTeamName (team, callback) {
const that = this
- if (value === null || value === '') {
+ if (team.teamName === null || team.teamName === '') {
that.$message.warning('Team name can not empty!')
return false
}
var params = {
tableName: 'team',
fieldName: 'team_name',
- fieldVal: value,
- dataId: null
+ fieldVal: team.teamName
+ }
+ if (team.id !== '0') {
+ params.dataId = team.id
}
duplicateCheck(params).then((res) => {
if (res.success === false) {
that.$message.warning('Team name already exist!')
- return false
} else {
- return true
+ callback()
}
})
}