Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-analytics-dashboard
Overview
Overview
Details
Activity
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
edx
edx-analytics-dashboard
Commits
d5b77d2c
Commit
d5b77d2c
authored
Jul 19, 2016
by
Tyler Hallada
Committed by
GitHub
Jul 19, 2016
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #509 from edx/thallada/metric-range-edge-cases
Fix edge cases for metric ranges
parents
e75e489c
7b26686c
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
8 deletions
+29
-8
analytics_dashboard/static/apps/learners/common/models/course-metadata.js
+12
-4
analytics_dashboard/static/apps/learners/common/models/spec/course-metadata-spec.js
+17
-4
No files found.
analytics_dashboard/static/apps/learners/common/models/course-metadata.js
View file @
d5b77d2c
...
...
@@ -94,7 +94,9 @@ define(function (require) {
return
null
;
}
return
[
_
.
isNull
(
range
[
0
])
?
-
Infinity
:
range
[
0
],
// A null element is interpreted as infinity
// Note: Something like [null, 0] is invalid. The API should not return that.
_
.
isNull
(
range
[
0
])
?
Infinity
:
range
[
0
],
_
.
isNull
(
range
[
1
])
?
Infinity
:
range
[
1
]
];
});
...
...
@@ -134,14 +136,20 @@ define(function (require) {
* in-range.
* - When the range is infinite in the positive dimension, infinity is
* considered in-range.
* - When the range has the same value on both sides, that value is
* considered in-range, but only that value.
*
* @param value Value in question.
* @param range Array of min and max. May be null.
*/
inMetricRange
:
function
(
value
,
range
)
{
return
_
.
isNull
(
range
)
?
false
:
(
value
===
Infinity
&&
range
[
1
]
===
Infinity
)
?
true
:
value
>=
range
[
0
]
&&
value
<
range
[
1
];
if
(
_
.
isNull
(
range
))
{
return
false
;
}
else
if
((
value
===
Infinity
&&
range
[
1
]
===
Infinity
)
||
(
value
===
range
[
0
]
&&
range
[
0
]
===
range
[
1
]))
{
return
true
;
}
return
value
>=
range
[
0
]
&&
value
<
range
[
1
];
}
});
...
...
analytics_dashboard/static/apps/learners/common/models/spec/course-metadata-spec.js
View file @
d5b77d2c
...
...
@@ -67,15 +67,22 @@ define(function (require) {
var
courseMetadata
=
new
CourseMetadataModel
({
engagement_ranges
:
{
problems_attempted
:
{
below_average
:
[
null
,
0
],
average
:
[
0
,
null
],
below_average
:
[
0
,
1
0
],
average
:
[
1
0
,
null
],
above_average
:
null
},
problem_attempts_per_completed
:
{
below_average
:
[
0
,
10
],
average
:
[
10
,
null
],
above_average
:
[
null
,
null
]
}
}
},
{
parse
:
true
});
expect
(
courseMetadata
.
get
(
'engagement_ranges'
).
problems_attempted
.
below_average
).
toEqual
([
-
Infinity
,
0
]);
expect
(
courseMetadata
.
get
(
'engagement_ranges'
).
problems_attempted
.
average
).
toEqual
([
0
,
Infinity
]);
expect
(
courseMetadata
.
get
(
'engagement_ranges'
).
problems_attempted
.
below_average
).
toEqual
([
0
,
1
0
]);
expect
(
courseMetadata
.
get
(
'engagement_ranges'
).
problems_attempted
.
average
).
toEqual
([
1
0
,
Infinity
]);
expect
(
courseMetadata
.
get
(
'engagement_ranges'
).
problems_attempted
.
above_average
).
toEqual
(
null
);
expect
(
courseMetadata
.
get
(
'engagement_ranges'
).
problem_attempts_per_completed
.
above_average
)
.
toEqual
([
Infinity
,
Infinity
]);
});
it
(
'does not parse engagement date range'
,
function
()
{
...
...
@@ -112,6 +119,12 @@ define(function (require) {
var
courseMetadata
=
new
CourseMetadataModel
();
expect
(
courseMetadata
.
inMetricRange
(
Infinity
,
[
0
,
Infinity
])).
toBe
(
true
);
});
it
(
'value is included in ranges where value is specified on both sides'
,
function
()
{
var
courseMetadata
=
new
CourseMetadataModel
();
expect
(
courseMetadata
.
inMetricRange
(
0
,
[
0
,
0
])).
toBe
(
true
);
expect
(
courseMetadata
.
inMetricRange
(
Infinity
,
[
Infinity
,
Infinity
])).
toBe
(
true
);
});
});
});
...
...
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