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.selectedDomain
= null;
19 this.selectedRole
= null;
20 this.roles
= Object
.keys(ROLES
.PROJECT
).filter((p
) => {
23 return ROLES
.PROJECT
[p
];
25 // this.roles = ['rw-project:project-admin', 'rw-project:project-oper', 'rw-project:project-create'];
28 this.activeIndex
= null;
29 this.isReadOnly
= true;
30 this.projectOpen
= false;
31 this.hideColumns
= false;
33 this.isEditProject
= true;
34 // this.exportPublicMethods({})
37 * [handleFieldUpdate description]
38 * @param {Object} data {
39 * [store_property] : [value]
41 * @return {[type]} [description]
43 handleUpdateInput(data
) {
46 handleAddProjectItem(item
) {
47 let projectRoles
= this.projectRoles
;
48 projectRoles
.push('');
49 this.setState({projectRoles
});
51 handleRemoveProjectItem(i
) {
52 let projectRoles
= this.projectRoles
;
53 projectRoles
.splice(i
, 1);
54 console
.log('Removing', projectRoles
)
55 this.setState({projectRoles
});
57 handleUpdateProjectRole(data
) {
60 let projectRoles
= this.projectRoles
61 projectRoles
[i
] = JSON
.parse(e
.currentTarget
.value
);
67 let data
= arguments
[0];
68 let project
= data
[0];
69 let projectIndex
= data
[1];
70 let isReadOnly
= data
[2];
73 'name': project
['name'],
74 'description': project
['description'],
75 'projectUsers': (project
['project-config'] && project
['project-config']['user'] || [])
78 activeIndex
: projectIndex
,
81 isReadOnly
: isReadOnly
,
82 isEditProject
: isReadOnly
86 editProject(isReadOnly
) {
87 this.viewProject([this.projects
[this.activeIndex
], this.activeIndex
, isReadOnly
]);
90 handleCloseProjectPanel() {
97 handleHideColumns(e
) {
98 if(this.projectOpen
&& e
.currentTarget
.classList
.contains('hideColumns')) {
108 handleDisabledChange(isDisabled
){
113 handlePlatformRoleUpdate(data
){
114 let platform_role
= data
[0];
115 let checked
= data
[1];
116 let platformRoles
= this.platformRoles
;
117 platformRoles
[platform_role
] = checked
;
122 handleSelectedUser(event
) {
124 selectedUser
: JSON
.parse(event
.currentTarget
.value
)
128 handleSelectedRole(event
) {
130 selectedRole
: JSON
.parse(event
.currentTarget
.value
)
135 let description
= '';
138 'description' : description
142 this.setState(_
.merge( this.resetProject() ,
154 handleUpdateSelectedUser(user
) {
156 selectedUser
: JSON
.parse(user
)
160 handleSelectedDomain(event
) {
161 let domain
= JSON
.parse(event
.target
.value
);
163 selectedDomain
: domain
168 let u
= JSON
.parse(this.selectedUser
);
169 let r
= this.selectedRole
;
170 let projectUsers
= this.projectUsers
;
171 console
.log('adding user')
173 'user-name': u
['user-name'],
174 'user-domain': u
['user-domain'],
181 this.setState({projectUsers
, selectedUser
: JSON
.stringify(null)})
183 handleToggleUserRoleInProject(data
) {
185 let {userIndex
, roleIndex
, checked
} = data
;
186 let projectUsers
= this.projectUsers
;
187 let selectedRole
= self
.roles
[roleIndex
];
188 let roleType
= (ROLES
.PROJECT
.TYPE
[selectedRole
] == 'rw-project-mano') ? "rw-project-mano:mano-role" : "role";
191 if (!projectUsers
[userIndex
][roleType
]) {
192 projectUsers
[userIndex
][roleType
] = [];
194 projectUsers
[userIndex
][roleType
].push({
195 role
: self
.roles
[roleIndex
]
198 let role
= projectUsers
[userIndex
][roleType
];
199 let roleIndex
= _
.findIndex(role
, {role
:selectedRole
})
200 projectUsers
[userIndex
][roleType
].splice(roleIndex
, 1)
202 self
.setState({projectUsers
});
205 handleUpdateUserRoleInProject(data
) {
206 let {userIndex
, roleIndex
, value
} = data
;
207 let projectUsers
= this.projectUsers
;
208 projectUsers
[userIndex
].role
[roleIndex
].role
= value
;
211 addRoleToUserInProject(userIndex
) {
212 let projectUsers
= this.projectUsers
;
213 if(!projectUsers
[userIndex
].role
) {
214 projectUsers
[userIndex
].role
= [];
216 projectUsers
[userIndex
].role
.push({
223 handleRemoveRoleFromUserInProject (data
) {
224 let {userIndex
, roleIndex
} = data
;
225 let projectUsers
= this.projectUsers
;
226 projectUsers
[userIndex
].role
.splice(roleIndex
, 1);
231 handleRemoveUserFromProject (userIndex
) {
232 let projectUsers
= this.projectUsers
;
233 projectUsers
.splice(userIndex
, 1);
238 getProjectsSuccess(projects
) {
239 this.alt
.actions
.global
.hideScreenLoader
.defer();
240 this.setState({projects
: projects
});
242 getUsersSuccess(users
) {
244 this.alt
.actions
.global
.hideScreenLoader
.defer();
245 let domains
= users
&& users
.reduce(function(arr
, u
) {
246 if (arr
.indexOf(u
['user-domain']) == -1) {
247 arr
.push(u
['user-domain']);
253 this.setState({users
, domains
, selectedDomain
: domains
[0]});
255 updateProjectSuccess() {
256 this.alt
.actions
.global
.hideScreenLoader
.defer();
258 let projects
= this.projects
|| [];
259 projects
[this.activeIndex
] = {
260 'name': this['name'],
261 'description': this['description'],
263 'user': self
.projectUsers
272 deleteProjectSuccess() {
273 this.alt
.actions
.global
.hideScreenLoader
.defer();
274 let projects
= this.projects
;
275 projects
.splice(this.activeIndex
, 1);
276 this.setState({projects
, projectOpen
: false,isEdit
: true,
279 createProjectSuccess() {
281 this.alt
.actions
.global
.hideScreenLoader
.defer();
282 let projects
= this.projects
|| [];
284 'name': self
['name'],
285 'description': self
['description'],
287 'user': self
.projectUsers
294 activeIndex
: projects
.length
- 1
297 this.setState(newState
);