92a439555d410f110414ec6e9132c0736949b991
[osm/UI.git] / skyquake / plugins / project-management / src / dashboard / projectMgmtStore.js
1 /*
2 * STANDARD_RIFT_IO_COPYRIGHT
3 */
4 import ProjectManagementActions from './projectMgmtActions.js';
5 import ProjectManagementSource from './projectMgmtSource.js';
6 import _ from 'lodash';
7 export default class ProjectManagementStore {
8 constructor() {
9 this.actions = ProjectManagementActions(this.alt);
10 this.bindActions(this.actions);
11 this.registerAsync(ProjectManagementSource);
12 this.projects = [];
13 this['name'] = '';
14 this['description'] = 'Some Description';
15 this.projectUsers = [];
16 this.selectedUser = null;
17 this.selectedRole = null;
18 this.roles = ['Assign a role', 'super_admin'];
19 this.users = [];
20 this.activeIndex = null;
21 this.isReadOnly = true;
22 this.projectOpen = false;
23 this.hideColumns = false;
24 this.isEdit = false;
25 // this.exportPublicMethods({})
26 }
27 /**
28 * [handleFieldUpdate description]
29 * @param {Object} data {
30 * [store_property] : [value]
31 * }
32 * @return {[type]} [description]
33 */
34 handleUpdateInput(data) {
35 this.setState(data);
36 }
37 handleAddProjectItem(item) {
38 let projectRoles = this.projectRoles;
39 projectRoles.push('');
40 this.setState({projectRoles});
41 }
42 handleRemoveProjectItem(i) {
43 let projectRoles = this.projectRoles;
44 projectRoles.splice(i, 1);
45 console.log('Removing', projectRoles)
46 this.setState({projectRoles});
47 }
48 handleUpdateProjectRole(data) {
49 let i = data[0];
50 let e = data[1];
51 let projectRoles = this.projectRoles
52 projectRoles[i] = JSON.parse(e.currentTarget.value);
53 this.setState({
54 projectRoles
55 });
56 }
57 viewProject(data) {
58 let project = data[0];
59 let projectIndex = data[1];
60
61 let ProjectUser = {
62 'name': project['name'],
63 'description': project['description'],
64 'projectUsers': project['project-config'] && project['project-config']['user'] || []
65 }
66 let state = _.merge({
67 activeIndex: projectIndex,
68 projectOpen: true,
69 isEdit: true,
70 isReadOnly: true
71 }, ProjectUser);
72 this.setState(state)
73 }
74 editProject(isEdit) {
75 this.setState({
76 isReadOnly: isEdit
77 })
78 }
79 handleCloseProjectPanel() {
80 this.setState({
81 projectOpen: false,
82 isEdit: false,
83 isReadOnly: true
84 })
85 }
86 handleHideColumns(e) {
87 if(this.projectOpen && e.currentTarget.classList.contains('hideColumns')) {
88 this.setState({
89 hideColumns: true
90 })
91 } else {
92 this.setState({
93 hideColumns: false
94 })
95 }
96 }
97 handleDisabledChange(isDisabled){
98 this.setState({
99 disabled: isDisabled
100 })
101 }
102 handlePlatformRoleUpdate(data){
103 let platform_role = data[0];
104 let checked = data[1];
105 let platformRoles = this.platformRoles;
106 platformRoles[platform_role] = checked;
107 this.setState({
108 platformRoles
109 })
110 }
111 handleSelectedUser(event) {
112 this.setState({
113 selectedUser: JSON.parse(event.currentTarget.value)
114 })
115 }
116
117 handleSelectedRole(event) {
118 this.setState({
119 selectedRole: JSON.parse(event.currentTarget.value)
120 })
121 }
122 resetProject() {
123 let name = '';
124 let description = '';
125 return {
126 'name' : name,
127 'description' : description
128 }
129 }
130 handleAddProject() {
131 this.setState(_.merge( this.resetProject() ,
132 {
133 isEdit: false,
134 projectOpen: true,
135 activeIndex: null,
136 isReadOnly: false,
137 projectUsers: []
138 }
139 ))
140 }
141
142 handleUpdateSelectedUser(user) {
143 this.setState({
144 selectedUser: JSON.parse(user)
145 });
146 }
147 handleAddUser() {
148 let u = JSON.parse(this.selectedUser);
149 let r = this.selectedRole;
150 let projectUsers = this.projectUsers;
151 console.log('adding user')
152 projectUsers.push({
153 'user-name': u['user-name'],
154 'user-domain': u['user-domain'],
155 "role":[{
156 "role": r,
157 "keys": r
158 }
159 ]
160 })
161 this.setState({projectUsers})
162 }
163 handleUpdateUserRoleInProject(data) {
164 let {userIndex, roleIndex, value} = data;
165 let projectUsers = this.projectUsers;
166 projectUsers[userIndex].role[roleIndex].role = value;
167 projectUsers[userIndex].role[roleIndex]['keys'] = value;
168
169 }
170 addRoleToUserInProject(userIndex) {
171 let projectUsers = this.projectUsers;
172 if(!projectUsers[userIndex].role) {
173 projectUsers[userIndex].role = [];
174 }
175 projectUsers[userIndex].role.push({
176 'role': null,
177 //temp until we get actual keys
178 'keys' : 'some key'
179 });
180 this.setState({
181 projectUsers
182 })
183 }
184 handleRemoveRoleFromUserInProject (data) {
185 let {userIndex, roleIndex} = data;
186 let projectUsers = this.projectUsers;
187 projectUsers[userIndex].role.splice(roleIndex, 1);
188 this.setState({
189 projectUsers
190 })
191 }
192 handleRemoveUserFromProject (userIndex) {
193 let projectUsers = this.projectUsers;
194 projectUsers.splice(userIndex, 1);
195 this.setState({
196 projectUsers
197 })
198 }
199 getProjectsSuccess(projects) {
200 this.alt.actions.global.hideScreenLoader.defer();
201 this.setState({projects: projects});
202 }
203 getUsersSuccess(users) {
204 console.log(users)
205 this.alt.actions.global.hideScreenLoader.defer();
206 this.setState({users});
207 }
208 updateProjectSuccess() {
209 this.alt.actions.global.hideScreenLoader.defer();
210 let projects = this.projects || [];
211 projects[this.activeIndex] = {
212 'name': this['name'],
213 'description': this['description']
214 }
215 this.setState({
216 projects,
217 isEdit: true,
218 isReadOnly: true
219 })
220 }
221 deleteProjectSuccess() {
222 this.alt.actions.global.hideScreenLoader.defer();
223 let projects = this.projects;
224 projects.splice(this.activeIndex, 1);
225 this.setState({projects, projectOpen: false})
226 }
227 createProjectSuccess() {
228 this.alt.actions.global.hideScreenLoader.defer();
229 let projects = this.projects || [];
230 projects.push({
231 'name': this['name'],
232 'description': this['description']
233 });
234 let newState = {
235 projects,
236 isEdit: true,
237 isReadOnly: true,
238 activeIndex: projects.length - 1
239 };
240 _.merge(newState)
241 this.setState(newState);
242 }
243 }