tideline 1.36.0-develop.1 → 1.36.0-develop.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,4 @@
1
+ <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M12 0.75C18.2132 0.75 23.25 5.7868 23.25 12C23.25 18.2132 18.2132 23.25 12 23.25C5.7868 23.25 0.75 18.2132 0.75 12C0.75 5.7868 5.7868 0.75 12 0.75Z" fill="#CC6D00" stroke="#CC6D00" stroke-width="1.5"/>
3
+ <path d="M12 12.1347V8M12 16.0323V16.1425" stroke="white" stroke-width="2.02073" stroke-linecap="round" stroke-linejoin="round"/>
4
+ </svg>
package/js/index.js CHANGED
@@ -47,6 +47,7 @@ module.exports = {
47
47
  SMBGTime: require('./plot/smbgtime'),
48
48
  smbg: require('./plot/smbg'),
49
49
  suspend: require('./plot/suspend'),
50
+ alarm: require('./plot/alarm'),
50
51
  pumpSettingsOverride: require('./plot/pumpSettingsOverride'),
51
52
  wizard: require('./plot/wizard'),
52
53
  carb: require('./plot/carb'),
@@ -0,0 +1,93 @@
1
+ var d3 = require('d3');
2
+ var _ = require('lodash');
3
+
4
+ var alarmImage = require('../../img/alarm/alarm.svg');
5
+
6
+ /**
7
+ * Module for adding alarm markers to a chart pool
8
+ *
9
+ * @param {Object} pool the chart pool
10
+ * @param {Object|null} opts configuration options
11
+ * @return {Object} alarm object
12
+ */
13
+ module.exports = function(pool, opts = {}) {
14
+ function alarm(selection) {
15
+ selection.each(function(currentData) {
16
+ var filteredData = _.filter(currentData, { tags: { alarm: true } });
17
+
18
+ var alarms = d3.select(this)
19
+ .selectAll('g.d3-alarm-group')
20
+ .data(filteredData, function(d) {
21
+ return d.id;
22
+ });
23
+
24
+ var alarmGroup = alarms.enter()
25
+ .append('g')
26
+ .attr({
27
+ 'class': 'd3-alarm-group',
28
+ id: function(d) {
29
+ return 'alarm_' + d.id;
30
+ }
31
+ });
32
+
33
+ alarm.addalarmToPool(alarmGroup);
34
+
35
+ alarms.exit().remove();
36
+
37
+ // tooltips
38
+ selection.selectAll('.d3-alarm-group').on('mouseover', function() {
39
+ var parentContainer = document.getElementsByClassName('patient-data')[0].getBoundingClientRect();
40
+ var chartNavContainer = document.getElementById('tidelineScrollNav').getBoundingClientRect();
41
+ var container = this.getBoundingClientRect();
42
+ container.y = container.top - parentContainer.top;
43
+
44
+ var chartExtents = {
45
+ left: chartNavContainer.left,
46
+ right: chartNavContainer.right,
47
+ width: chartNavContainer.right - chartNavContainer.left,
48
+ };
49
+
50
+ alarm.addTooltip(d3.select(this).datum(), container, chartExtents);
51
+ });
52
+
53
+ selection.selectAll('.d3-alarm-group').on('mouseout', function() {
54
+ if (_.get(opts, 'onAlarmOut', false)) {
55
+ opts.onAlarmOut();
56
+ }
57
+ });
58
+ });
59
+ };
60
+
61
+ alarm.addTooltip = function(d, rect, chartExtents) {
62
+ if (_.get(opts, 'onAlarmHover', false)) {
63
+ opts.onAlarmHover({
64
+ data: d,
65
+ rect: rect,
66
+ chartExtents,
67
+ });
68
+ }
69
+ };
70
+
71
+ alarm.addalarmToPool = function(selection) {
72
+ opts.xScale = pool.xScale().copy();
73
+ selection.append('image')
74
+ .attr({
75
+ 'xlink:href': alarmImage,
76
+ x: alarm.xPositionCorner,
77
+ y: alarm.yPositionCorner,
78
+ width: opts.size,
79
+ height: opts.size
80
+ })
81
+ .classed({'d3-image': true, 'd3-alarm': true});
82
+ };
83
+
84
+ alarm.xPositionCorner = function(d) {
85
+ return opts.xScale(d.normalTime) - opts.size / 2;
86
+ };
87
+
88
+ alarm.yPositionCorner = function(d) {
89
+ return pool.height() / 2 - opts.size / 2;
90
+ };
91
+
92
+ return alarm;
93
+ };
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "node": "20.8.0"
5
5
  },
6
6
  "packageManager": "yarn@3.6.4",
7
- "version": "1.36.0-develop.1",
7
+ "version": "1.36.0-develop.2",
8
8
  "description": "Tidepool's timeline data visualization",
9
9
  "repository": {
10
10
  "type": "git",
@@ -396,6 +396,17 @@ function chartDailyFactory(el, options) {
396
396
  timezone: chart.options.timePrefs.timezoneName
397
397
  }), true, true);
398
398
 
399
+ // add pump alarm data to messages pool
400
+ poolMessages.addPlotType('deviceEvent', tideline.plot.alarm(poolMessages, {
401
+ size: 23,
402
+ emitter: emitter,
403
+ data: groupedData.deviceEvent,
404
+ timezoneAware: chart.options.timePrefs.timezoneAware,
405
+ timezoneName: chart.options.timePrefs.timezoneName,
406
+ onAlarmHover: options.onAlarmHover,
407
+ onAlarmOut: options.onAlarmOut,
408
+ }), true, true);
409
+
399
410
  return chart;
400
411
  };
401
412