2 * STANDARD_RIFT_IO_COPYRIGHT
4 import ProjectManagementActions
from './projectMgmtActions.js';
5 import ProjectManagementSource
from './projectMgmtSource.js';
6 import _
from 'lodash';
7 export default class ProjectManagementStore
{
9 this.actions
= ProjectManagementActions(this.alt
);
10 this.bindActions(this.actions
);
11 this.registerAsync(ProjectManagementSource
);
14 this['description'] = 'Some Description';
15 this.projectUsers
= [];
16 this.selectedUser
= null;
17 this.selectedRole
= null;
18 this.roles
= ['rw-project:project-admin', 'rw-project:project-oper', 'rw-project:project-create'
21 this.activeIndex
= null;
22 this.isReadOnly
= true;
23 this.projectOpen
= false;
24 this.hideColumns
= false;
26 // this.exportPublicMethods({})
29 * [handleFieldUpdate description]
30 * @param {Object} data {
31 * [store_property] : [value]
33 * @return {[type]} [description]
35 handleUpdateInput(data
) {
38 handleAddProjectItem(item
) {
39 let projectRoles
= this.projectRoles
;
40 projectRoles
.push('');
41 this.setState({projectRoles
});
43 handleRemoveProjectItem(i
) {
44 let projectRoles
= this.projectRoles
;
45 projectRoles
.splice(i
, 1);
46 console
.log('Removing', projectRoles
)
47 this.setState({projectRoles
});
49 handleUpdateProjectRole(data
) {
52 let projectRoles
= this.projectRoles
53 projectRoles
[i
] = JSON
.parse(e
.currentTarget
.value
);
59 let project
= data
[0];
60 let projectIndex
= data
[1];
63 'name': project
['name'],
64 'description': project
['description'],
65 'projectUsers': project
['project-config'] && project
['project-config']['user'] || []
68 activeIndex
: projectIndex
,
80 handleCloseProjectPanel() {
87 handleHideColumns(e
) {
88 if(this.projectOpen
&& e
.currentTarget
.classList
.contains('hideColumns')) {
98 handleDisabledChange(isDisabled
){
103 handlePlatformRoleUpdate(data
){
104 let platform_role
= data
[0];
105 let checked
= data
[1];
106 let platformRoles
= this.platformRoles
;
107 platformRoles
[platform_role
] = checked
;
112 handleSelectedUser(event
) {
114 selectedUser
: JSON
.parse(event
.currentTarget
.value
)
118 handleSelectedRole(event
) {
120 selectedRole
: JSON
.parse(event
.currentTarget
.value
)
125 let description
= '';
128 'description' : description
132 this.setState(_
.merge( this.resetProject() ,
143 handleUpdateSelectedUser(user
) {
145 selectedUser
: JSON
.parse(user
)
150 let u
= JSON
.parse(this.selectedUser
);
151 let r
= this.selectedRole
;
152 let projectUsers
= this.projectUsers
;
153 console
.log('adding user')
155 'user-name': u
['user-name'],
156 'user-domain': u
['user-domain'],
163 this.setState({projectUsers
, selectedUser
: JSON
.stringify(null)})
165 handleToggleUserRoleInProject(data
) {
167 let {userIndex
, roleIndex
, checked
} = data
;
168 let projectUsers
= this.projectUsers
;
169 let selectedRole
= self
.roles
[roleIndex
];
171 if(!projectUsers
[userIndex
].role
) projectUsers
[userIndex
].role
= [];
172 projectUsers
[userIndex
].role
.push({
173 role
: self
.roles
[roleIndex
]
176 let role
= projectUsers
[userIndex
].role
;
177 let roleIndex
= _
.findIndex(role
, {role
:selectedRole
})
178 projectUsers
[userIndex
].role
.splice(roleIndex
, 1)
180 self
.setState({projectUsers
});
183 handleUpdateUserRoleInProject(data
) {
184 let {userIndex
, roleIndex
, value
} = data
;
185 let projectUsers
= this.projectUsers
;
186 projectUsers
[userIndex
].role
[roleIndex
].role
= value
;
189 addRoleToUserInProject(userIndex
) {
190 let projectUsers
= this.projectUsers
;
191 if(!projectUsers
[userIndex
].role
) {
192 projectUsers
[userIndex
].role
= [];
194 projectUsers
[userIndex
].role
.push({
201 handleRemoveRoleFromUserInProject (data
) {
202 let {userIndex
, roleIndex
} = data
;
203 let projectUsers
= this.projectUsers
;
204 projectUsers
[userIndex
].role
.splice(roleIndex
, 1);
209 handleRemoveUserFromProject (userIndex
) {
210 let projectUsers
= this.projectUsers
;
211 projectUsers
.splice(userIndex
, 1);
216 getProjectsSuccess(projects
) {
217 this.alt
.actions
.global
.hideScreenLoader
.defer();
218 this.setState({projects
: projects
});
220 getUsersSuccess(users
) {
222 this.alt
.actions
.global
.hideScreenLoader
.defer();
223 this.setState({users
});
225 updateProjectSuccess() {
226 this.alt
.actions
.global
.hideScreenLoader
.defer();
228 let projects
= this.projects
|| [];
229 projects
[this.activeIndex
] = {
230 'name': this['name'],
231 'description': this['description'],
233 'user': self
.projectUsers
242 deleteProjectSuccess() {
243 this.alt
.actions
.global
.hideScreenLoader
.defer();
244 let projects
= this.projects
;
245 projects
.splice(this.activeIndex
, 1);
246 this.setState({projects
, projectOpen
: false})
248 createProjectSuccess() {
249 this.alt
.actions
.global
.hideScreenLoader
.defer();
250 let projects
= this.projects
|| [];
252 'name': this['name'],
253 'description': this['description']
259 activeIndex
: projects
.length
- 1
262 this.setState(newState
);