Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
allgo
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
110
Issues
110
List
Boards
Labels
Service Desk
Milestones
Merge Requests
12
Merge Requests
12
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Packages & Registries
Packages & Registries
Container Registry
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
allgo
allgo
Commits
6de75526
Commit
6de75526
authored
Feb 21, 2019
by
sebastien letort
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Again, little code simplification, PerStatePlot more similar to PerUserPlot.
parent
03f83da6
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
29 additions
and
31 deletions
+29
-31
django/allgo/static/js/metrics.js
django/allgo/static/js/metrics.js
+29
-31
No files found.
django/allgo/static/js/metrics.js
View file @
6de75526
...
...
@@ -39,6 +39,15 @@ function build_list( l_data, key, fn_map )
.
map
(
x
=>
fn_map
(
x
)
);
}
function
build_default_dict
(
l_keys
,
default_value
=
0
)
{
let
d_defaults
=
{};
for
(
let
i
=
0
;
i
<
l_keys
.
length
;
++
i
)
{
let
key
=
l_keys
[
i
];
d_defaults
[
key
]
=
default_value
;
}
return
d_defaults
;
}
// ===========================================
class
Metrics
{
...
...
@@ -145,9 +154,7 @@ class PerUserPlot extends Metrics
// turn [ {'time_period':x, key:y, 'n':z }, ...]
// to { y: [{ x: z },{ x: z },...], ... }
// d_default is the default dictionnary {any_key: default_val}
let
d_defaults
=
{};
for
(
let
i
=
0
;
i
<
l_periods
.
length
;
++
i
)
{
let
tp
=
l_periods
[
i
];
d_defaults
[
tp
]
=
0
;
}
let
d_defaults
=
build_default_dict
(
l_periods
,
0
);
let
d_data
=
{};
for
(
let
i
=
0
;
i
<
l_data
.
length
;
++
i
)
...
...
@@ -209,29 +216,27 @@ class PerStatePlot extends Metrics
_setChartjsData
(
l_data
)
{
function
__dictionnarize
(
l_data
,
key
,
d_default
s
)
function
__dictionnarize
(
l_data
,
key
,
l_periods
,
l_state
s
)
{
// turn [ {'time_period':x, key:y, 'n':z }, ...]
// to {
x: { y
: z }, ... }
// to {
y: { x
: z }, ... }
// d_defaults is the default dictionnary {any_key: default_val}
let
d_defaults
=
build_default_dict
(
l_periods
,
0
);
//~ let ld_new = []
let
d_keys
=
{};
let
d_data
=
{};
for
(
let
i
=
0
;
i
<
l_states
.
length
;
++
i
)
{
d_data
[
l_states
[
i
]]
=
JSON
.
parse
(
JSON
.
stringify
(
d_defaults
));
// new object.
}
for
(
let
i
=
0
;
i
<
l_data
.
length
;
++
i
)
{
let
tp
=
fmt_date
(
l_data
[
i
][
"
time_period
"
]
);
let
val
=
l_data
[
i
][
key
];
let
n
=
l_data
[
i
][
"
n
"
];
if
(
!
d_data
[
tp
]
)
if
(
d_defaults
)
d_data
[
tp
]
=
JSON
.
parse
(
JSON
.
stringify
(
d_defaults
));
// new object.
else
// the [val] notation as key means 'val' will be evaluated.
d_data
[
tp
]
=
{
[
val
]:
null
};
d_data
[
tp
][
val
]
=
n
;
d_keys
[
val
]
=
1
;
d_data
[
val
][
tp
]
=
n
;
}
return
d_data
;
...
...
@@ -245,35 +250,28 @@ class PerStatePlot extends Metrics
"
ABORTED
"
:
'
#FF8000
'
,
"
TIMEOUT
"
:
'
#DDAA22
'
};
let
d_defaults
=
{
// I did not succeed in building it looping on d_labels !
"
NONE
"
:
0
,
"
SUCCESS
"
:
0
,
"
ERROR
"
:
0
,
"
ABORTED
"
:
0
,
"
TIMEOUT
"
:
0
};
let
l_periods
=
build_list
(
l_data
,
'
time_period
'
,
fmt_date
);
let
l_states
=
[
"
NONE
"
,
"
SUCCESS
"
,
"
ERROR
"
,
"
ABORTED
"
,
"
TIMEOUT
"
];
// to ensure the order.
let
d_data
=
__dictionnarize
(
l_data
,
'
result
'
,
d_default
s
);
let
d_data
=
__dictionnarize
(
l_data
,
'
result
'
,
l_periods
,
l_state
s
);
// now let's turn this dict to chartjs_data
let
chartjs_data
=
{
labels
:
l_periods
,
datasets
:
[]
};
let
l_labels
=
[
"
NONE
"
,
"
SUCCESS
"
,
"
ERROR
"
,
"
ABORTED
"
,
"
TIMEOUT
"
];
// to ensure the order.
for
(
let
i
=
0
;
i
<
l_labels
.
length
;
++
i
)
for
(
let
i
=
0
;
i
<
l_states
.
length
;
++
i
)
{
let
status
=
l_
label
s
[
i
];
let
status
=
l_
state
s
[
i
];
chartjs_data
.
datasets
[
i
]
=
{
data
:
l_periods
.
map
(
x
=>
d_data
[
x
][
status
]
),
data
:
l_periods
.
map
(
x
=>
d_data
[
status
][
x
]
),
label
:
status
.
toLowerCase
(),
fill
:
false
,
backgroundColor
:
d_colors
[
status
],
borderColor
:
d_colors
[
status
],
borderWidth
:
1
,
borderColor
:
d_colors
[
status
],
borderWidth
:
1
,
fill
:
false
,
};
}
...
...
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