Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sencha-core
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
project-open
sencha-core
Commits
9bcf9aac
Commit
9bcf9aac
authored
Jan 05, 2021
by
Project Open
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Fixed issues after copy-paste-modify
- Implemented parsing of roles instead of percentages
parent
efef7100
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
37 additions
and
32 deletions
+37
-32
POObjectMembers.js
www/view/field/POObjectMembers.js
+37
-32
No files found.
www/view/field/POObjectMembers.js
View file @
9bcf9aac
...
...
@@ -18,7 +18,7 @@ Ext.define('PO.view.field.POObjectMembers', {
requires
:
[
'Ext.grid.Panel'
],
alias
:
'widget.poobjectmembers'
,
debug
:
tru
e
,
debug
:
fals
e
,
memberStore
:
null
,
// Config: Store with users as candidates for members
groupStore
:
null
,
...
...
@@ -37,13 +37,12 @@ Ext.define('PO.view.field.POObjectMembers', {
var
names
=
value
.
split
(
";"
);
for
(
var
i
=
0
;
i
<
names
.
length
;
i
++
)
{
var
name
=
names
[
i
];
// BB[20%]
var
memberObject
=
this
.
parseMember
s
(
me
,
name
);
var
memberObject
=
this
.
parseMember
(
me
,
name
);
if
(
!
Ext
.
isString
(
memberObject
)
&&
null
!=
memberObject
)
{
result
.
push
(
memberObject
);
}
}
// if (0 == result.length) return null;
if
(
me
.
debug
)
console
.
log
(
'POObjectMembers.parseMembers: Finished'
);
return
result
;
},
...
...
@@ -52,8 +51,8 @@ Ext.define('PO.view.field.POObjectMembers', {
* Returns a member object if it can successfully parse a value like "BB[PM]".
* Returns a string with an error message if it can't parse the value.
*/
parseMember
s
:
function
(
me
,
value
)
{
if
(
me
.
debug
)
console
.
log
(
'POObjectMember
s
.parseMembers: Starting: value='
+
value
);
parseMember
:
function
(
me
,
value
)
{
if
(
me
.
debug
)
console
.
log
(
'POObjectMember.parseMembers: Starting: value='
+
value
);
if
(
!
Ext
.
isString
(
value
))
{
return
"Value='"
+
value
+
"' is not a string but a "
+
typeof
value
;
...
...
@@ -64,16 +63,16 @@ Ext.define('PO.view.field.POObjectMembers', {
return
"Value='"
+
value
+
"' should contain of at least two characters"
;
}
var
initials
=
""
;
var
percent
String
=
value
;
var
role
String
=
value
;
// Split the value into the "initials" part possibly including
// numbers and the remaining part hopefully containing "[80%]"
while
(
/^
[
a-zA-Z0-9
]
/
.
test
(
percent
String
.
substr
(
0
,
1
)))
{
while
(
/^
[
a-zA-Z0-9
]
/
.
test
(
role
String
.
substr
(
0
,
1
)))
{
initials
=
initials
+
value
.
substr
(
0
,
1
);
percentString
=
percent
String
.
substring
(
1
,
value
.
length
);
roleString
=
role
String
.
substring
(
1
,
value
.
length
);
}
var
percent
=
this
.
parseMembersPercent
(
me
,
percentString
.
trim
());
// Number indicating percent or an error
if
(
Ext
.
isString
(
percent
))
{
return
percent
;
}
// Return an error string
var
role
=
this
.
parseMembersRole
(
me
,
roleString
.
trim
());
// FullMember = 1300
if
(
Ext
.
isString
(
role
))
{
return
role
;
}
// Return an error string
// ToDo: Sort the user store alphabetically in order to create
// deterministic results
...
...
@@ -92,10 +91,10 @@ Ext.define('PO.view.field.POObjectMembers', {
if
(
letters
[
0
]
==
firstNamesInitial
&&
letters
[
1
]
==
lastNameInitial
)
{
found
=
true
;
}
if
(
found
)
{
// {id:123456, user_id:8864,
percent:0.
0}
// {id:123456, user_id:8864,
role:130
0}
var
user_id
=
parseInt
(
user
.
get
(
'user_id'
));
var
rel_id
=
Math
.
floor
((
Math
.
random
()
*
10000000000000.0
));
result
=
[{
id
:
rel_id
,
user_id
:
user_id
,
percent
:
percent
}]
;
result
=
{
id
:
rel_id
,
user_id
:
user_id
,
role
:
role
}
;
}
});
...
...
@@ -106,40 +105,41 @@ Ext.define('PO.view.field.POObjectMembers', {
return
result
;
},
/**
* Parse a string like "[80%]" into the number 80.
* Returns 100 for an empty or invalid string.
* Parse a string like "[M]" into the number 1310 (=Budget Item Manager)
* Returns 1300 (=Full Member) for an empty string or a string object
* with an error message in case of an error.
*/
parseMembers
Percent
:
function
(
me
,
percent
String
)
{
if
(
me
.
debug
)
console
.
log
(
'POObjectMembers.parseMembers
Percent: Starting: str='
+
percent
String
);
if
(
!
Ext
.
isString
(
percentString
)
||
0
==
percentString
.
length
)
{
return
100.
0
;
}
parseMembers
Role
:
function
(
me
,
role
String
)
{
if
(
me
.
debug
)
console
.
log
(
'POObjectMembers.parseMembers
Role: Starting: str='
+
role
String
);
if
(
!
Ext
.
isString
(
roleString
)
||
0
==
roleString
.
length
)
{
return
130
0
;
}
var
str
=
percent
String
;
var
str
=
role
String
;
if
(
!
/^
\[
.+
\]
$/
.
test
(
str
))
{
return
"
Percent specification '"
+
str
+
"' does not consist of a brackets enclosing a numb
er."
;
return
"
Role specification '"
+
str
+
"' does not consist of a brackets enclosing a charact
er."
;
}
var
str
=
str
.
substr
(
1
,
str
.
length
-
2
);
if
(
!
/^
[
0-9
\.]
+%
$/
.
test
(
str
))
{
return
"
Percent specification '"
+
str
+
"' does not include in it's brackets a number followed by '%'
."
;
if
(
!
/^
[
a-zA-Z
]
$/
.
test
(
str
))
{
return
"
Role specification '"
+
str
+
"' does not include in it's brackets a single letter
."
;
}
var
str
=
str
.
substr
(
0
,
str
.
length
-
1
);
var
number
=
parseFloat
(
str
);
if
(
NaN
==
number
)
{
return
"Percent specification '"
+
str
+
"' does not include a valid number between it's brackets."
;
}
return
number
;
switch
(
str
.
toLowerCase
())
{
case
"m"
:
role
=
1310
;
break
;
default
:
role
=
1300
;
break
}
if
(
me
.
debug
)
console
.
log
(
'POObjectMembers.parseMembersRole: Finished: str='
+
roleString
+
' -> '
+
role
);
return
role
;
},
/**
* Format membership list to a String
*/
formatMembers
:
function
(
me
,
memberExpr
)
{
if
(
me
.
debug
)
console
.
log
(
'POObjectMembers.formatMembers: Starting: memberExpr='
+
memberExpr
);
if
(
me
.
debug
)
console
.
log
(
me
);
if
(
me
.
debug
)
console
.
log
(
memberExpr
);
if
(
Ext
.
isString
(
memberExpr
))
{
return
memberExpr
;
}
var
projectMemberStore
=
me
.
memberStore
;
var
groupStore
=
me
.
groupStore
;
...
...
@@ -161,8 +161,13 @@ Ext.define('PO.view.field.POObjectMembers', {
result
=
result
+
groupModel
.
get
(
'group_name'
);
}
}
if
(
100
!=
member
.
percent
)
{
result
=
result
+
'['
+
member
.
percent
+
'%]'
;
if
(
!!
member
.
role
&&
1300
!=
member
.
role
)
{
var
roleString
=
""
switch
(
member
.
role
)
{
case
1310
:
roleString
=
"M"
;
break
;
default
:
roleString
=
"#"
+
member
.
role
;
}
result
=
result
+
'['
+
roleString
+
']'
;
}
});
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment