2 * STANDARD_RIFT_IO_COPYRIGHT
4 import ProjectManagementActions
from './projectMgmtActions.js';
5 import ProjectManagementSource
from './projectMgmtSource.js';
6 import ROLES
from 'utils/roleConstants.js';
7 import _
from 'lodash';
8 export default class ProjectManagementStore
{
10 this.actions
= ProjectManagementActions(this.alt
);
11 this.bindActions(this.actions
);
12 this.registerAsync(ProjectManagementSource
);
15 this['description'] = 'Some Description';
16 this.projectUsers
= [];
17 this.selectedUser
= null;
18 this.selectedRole
= null;
19 this.roles
= Object
.keys(ROLES
.PROJECT
).filter((p
) => {
22 return ROLES
.PROJECT
[p
];
24 // this.roles = ['rw-project:project-admin', 'rw-project:project-oper', 'rw-project:project-create'];
26 this.activeIndex
= null;
27 this.isReadOnly
= true;
28 this.projectOpen
= false;
29 this.hideColumns
= false;
31 // this.exportPublicMethods({})
34 * [handleFieldUpdate description]
35 * @param {Object} data {
36 * [store_property] : [value]
38 * @return {[type]} [description]
40 handleUpdateInput(data
) {
43 handleAddProjectItem(item
) {
44 let projectRoles
= this.projectRoles
;
45 projectRoles
.push('');
46 this.setState({projectRoles
});
48 handleRemoveProjectItem(i
) {
49 let projectRoles
= this.projectRoles
;
50 projectRoles
.splice(i
, 1);
51 console
.log('Removing', projectRoles
)
52 this.setState({projectRoles
});
54 handleUpdateProjectRole(data
) {
57 let projectRoles
= this.projectRoles
58 projectRoles
[i
] = JSON
.parse(e
.currentTarget
.value
);
64 let data
= arguments
[0];
65 let project
= data
[0];
66 let projectIndex
= data
[1];
67 let isReadOnly
= data
[2];
70 'name': project
['name'],
71 'description': project
['description'],
72 'projectUsers': project
['project-config'] && project
['project-config']['user'] || []
75 activeIndex
: projectIndex
,
78 isReadOnly
: isReadOnly
82 editProject(isReadOnly
) {
83 this.viewProject([this.projects
[this.activeIndex
], this.activeIndex
, isReadOnly
]);
86 handleCloseProjectPanel() {
93 handleHideColumns(e
) {
94 if(this.projectOpen
&& e
.currentTarget
.classList
.contains('hideColumns')) {
104 handleDisabledChange(isDisabled
){
109 handlePlatformRoleUpdate(data
){
110 let platform_role
= data
[0];
111 let checked
= data
[1];
112 let platformRoles
= this.platformRoles
;
113 platformRoles
[platform_role
] = checked
;
118 handleSelectedUser(event
) {
120 selectedUser
: JSON
.parse(event
.currentTarget
.value
)
124 handleSelectedRole(event
) {
126 selectedRole
: JSON
.parse(event
.currentTarget
.value
)
131 let description
= '';
134 'description' : description
138 this.setState(_
.merge( this.resetProject() ,
149 handleUpdateSelectedUser(user
) {
151 selectedUser
: JSON
.parse(user
)
156 let u
= JSON
.parse(this.selectedUser
);
157 let r
= this.selectedRole
;
158 let projectUsers
= this.projectUsers
;
159 console
.log('adding user')
161 'user-name': u
['user-name'],
162 'user-domain': u
['user-domain'],
169 this.setState({projectUsers
, selectedUser
: JSON
.stringify(null)})
171 handleToggleUserRoleInProject(data
) {
173 let {userIndex
, roleIndex
, checked
} = data
;
174 let projectUsers
= this.projectUsers
;
175 let selectedRole
= self
.roles
[roleIndex
];
177 if (!projectUsers
[userIndex
].role
) {
178 projectUsers
[userIndex
].role
= [];
180 if (!projectUsers
[userIndex
]['rw-project-mano:mano-role']) {
181 projectUsers
[userIndex
]['rw-project-mano:mano-role'] = [];
183 switch (ROLES
.PROJECT
.TYPE
[self
.roles
[roleIndex
]]) {
185 projectUsers
[userIndex
].role
.push({
189 case 'rw-project-mano' :
190 projectUsers
[userIndex
]["rw-project-mano:mano-role"].push({
195 projectUsers
[userIndex
].role
.push({
199 let role
= projectUsers
[userIndex
].role
;
200 let roleIndex
= _
.findIndex(role
, {role
:selectedRole
})
201 projectUsers
[userIndex
].role
.splice(roleIndex
, 1)
203 self
.setState({projectUsers
});
206 handleUpdateUserRoleInProject(data
) {
207 let {userIndex
, roleIndex
, value
} = data
;
208 let projectUsers
= this.projectUsers
;
209 projectUsers
[userIndex
].role
[roleIndex
].role
= value
;
212 addRoleToUserInProject(userIndex
) {
213 let projectUsers
= this.projectUsers
;
214 if(!projectUsers
[userIndex
].role
) {
215 projectUsers
[userIndex
].role
= [];
217 projectUsers
[userIndex
].role
.push({
224 handleRemoveRoleFromUserInProject (data
) {
225 let {userIndex
, roleIndex
} = data
;
226 let projectUsers
= this.projectUsers
;
227 projectUsers
[userIndex
].role
.splice(roleIndex
, 1);
232 handleRemoveUserFromProject (userIndex
) {
233 let projectUsers
= this.projectUsers
;
234 projectUsers
.splice(userIndex
, 1);
239 getProjectsSuccess(projects
) {
240 this.alt
.actions
.global
.hideScreenLoader
.defer();
241 this.setState({projects
: projects
});
243 getUsersSuccess(users
) {
245 this.alt
.actions
.global
.hideScreenLoader
.defer();
246 this.setState({users
});
248 updateProjectSuccess() {
249 this.alt
.actions
.global
.hideScreenLoader
.defer();
251 let projects
= this.projects
|| [];
252 projects
[this.activeIndex
] = {
253 'name': this['name'],
254 'description': this['description'],
256 'user': self
.projectUsers
265 deleteProjectSuccess() {
266 this.alt
.actions
.global
.hideScreenLoader
.defer();
267 let projects
= this.projects
;
268 projects
.splice(this.activeIndex
, 1);
269 this.setState({projects
, projectOpen
: false})
271 createProjectSuccess() {
272 this.alt
.actions
.global
.hideScreenLoader
.defer();
273 let projects
= this.projects
|| [];
275 'name': this['name'],
276 'description': this['description']
282 activeIndex
: projects
.length
- 1
285 this.setState(newState
);