Skip to content

Commit b929323

Browse files
authored
Merge branch 'develop' into feature/setHideDefaultValueField
2 parents 99a1f3a + 2890f68 commit b929323

3 files changed

Lines changed: 139 additions & 102 deletions

File tree

src/js/controllers/measurementAddCtrl.js

Lines changed: 62 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -32,33 +32,34 @@ angular.module('starter').controller('MeasurementAddCtrl', ["$scope", "$q", "$ti
3232
$scope.state.title = 'Record a Measurement';
3333
$scope.state.selectedDate = moment();
3434
$scope.state.units = qm.unitHelper.getNonAdvancedUnits();
35-
if($stateParams.trackingReminder){
36-
setupTrackingByReminderNotification($stateParams.trackingReminder);
37-
}else if($stateParams.measurement){
38-
setupTrackingByMeasurement($stateParams.measurement);
39-
}else if(qm.urlHelper.getParam('measurementObject', window.location.href, true)){
40-
setupTrackingByMeasurement(JSON.parse(qm.urlHelper.getParam('measurementObject', window.location.href, true)));
41-
}else if($stateParams.variableObject){
42-
setupFromVariable($stateParams.variableObject);
43-
}else if(qm.urlHelper.getParam('trackingReminderObject', window.location.href, true)){
44-
setupTrackingByReminderNotification(JSON.parse(qm.urlHelper.getParam('trackingReminderObject', window.location.href, true)));
45-
}else if($stateParams.reminderNotification){
46-
setupTrackingByReminderNotification($stateParams.reminderNotification);
47-
}else if(qm.urlHelper.getParam('measurementId', location.href, true)){
48-
setMeasurementVariablesByMeasurementId().then(function(){
49-
if(!$scope.state.measurementIsSetup){
50-
$scope.goBack();
51-
}
35+
var reminderFromUrl = qm.urlHelper.getParam('trackingReminderObject', window.location.href, true);
36+
var measurementFromUrl = qm.urlHelper.getParam('measurementObject', window.location.href, true);
37+
var tr = $stateParams.trackingReminder;
38+
var m = $stateParams.measurement;
39+
var v = $stateParams.variableObject;
40+
var n = $stateParams.reminderNotification;
41+
var id = qm.urlHelper.getParam('measurementId', location.href, true);
42+
if(tr){
43+
setupTrackingByReminder(tr);
44+
}else if(m){
45+
setupTrackingByMeasurement(m);
46+
}else if(measurementFromUrl){
47+
setupTrackingByMeasurement(JSON.parse(measurementFromUrl));
48+
}else if(v){
49+
setupFromVariable(v);
50+
}else if(reminderFromUrl){
51+
setupTrackingByReminder(JSON.parse(reminderFromUrl));
52+
}else if(n){
53+
setupTrackingByReminder(n);
54+
}else if(id){
55+
setMeasurementVariablesByMeasurementId(id).then(function(){
56+
if(!$scope.state.measurementIsSetup){$scope.goBack();}
5257
});
5358
}else if($stateParams.variableName){
5459
setupFromVariableName($stateParams.variableName);
5560
}
56-
if(!$scope.state.measurementIsSetup){
57-
setupFromUrlParameters();
58-
}
59-
if(!$scope.state.measurementIsSetup){
60-
setupFromVariable(qm.getPrimaryOutcomeVariable());
61-
}
61+
if(!$scope.state.measurementIsSetup){setupFromUrlParameters();}
62+
if(!$scope.state.measurementIsSetup){setupFromVariable(qm.getPrimaryOutcomeVariable());}
6263
});
6364
$scope.$on('$ionicView.enter', function(e){
6465
qmLogService.debug('$ionicView.enter ' + $state.current.name);
@@ -208,12 +209,12 @@ angular.module('starter').controller('MeasurementAddCtrl', ["$scope", "$q", "$ti
208209
var startTimeEpoch = qm.urlHelper.getParam('startTimeEpoch', location.href, true);
209210
var value = qm.urlHelper.getParam('value', location.href, true);
210211
if(unitAbbreviatedName || variableName || startTimeEpoch || value){
211-
var measurementObject = {};
212-
measurementObject.unitAbbreviatedName = unitAbbreviatedName;
213-
measurementObject.variableName = variableName;
214-
measurementObject.startTimeEpoch = startTimeEpoch;
215-
measurementObject.value = value;
216-
setupTrackingByMeasurement(measurementObject);
212+
var m = {};
213+
m.unitAbbreviatedName = unitAbbreviatedName;
214+
m.variableName = variableName;
215+
m.startTimeEpoch = startTimeEpoch;
216+
m.value = value;
217+
setupTrackingByMeasurement(m);
217218
}
218219
};
219220
function isYesNo() {
@@ -247,20 +248,14 @@ angular.module('starter').controller('MeasurementAddCtrl', ["$scope", "$q", "$ti
247248
var category = qmService.getVariableCategoryInfo(v.variableCategoryName);
248249
setupUnit(category.defaultUnitAbbreviatedName, v.valence);
249250
}
250-
if(v.upc){$scope.state.measurement.upc = v.upc;}
251-
if(v.inputType){$scope.state.measurement.inputType = v.inputType;}
252-
$scope.state.measurement.variableName = v.name;
253-
$scope.state.measurement.maximumAllowedValue = v.maximumAllowedValue;
254-
$scope.state.measurement.minimumAllowedValue = v.minimumAllowedValue;
255-
if(!$scope.state.measurement.variableName){$scope.state.measurement.variableName = v.variableName;}
256-
if($scope.state.measurement.variableName.toLowerCase().indexOf('blood pressure') > -1){$rootScope.bloodPressure.show = true;}
257-
if(v.variableCategoryName){
258-
$scope.state.measurement.variableCategoryName = v.variableCategoryName;
259-
setupVariableCategory(v.variableCategoryName);
251+
var m = qm.measurements.newMeasurement(v);
252+
if(m.variableName.toLowerCase().indexOf('blood pressure') > -1){$rootScope.bloodPressure.show = true;}
253+
if(m.variableCategoryName){
254+
setupVariableCategory(m.variableCategoryName);
260255
}else{
261256
$scope.state.showVariableCategorySelector = true;
262257
}
263-
$scope.state.measurement.combinationOperation = (v.combinationOperation) ? v.combinationOperation : 'MEAN';
258+
$scope.state.measurement = m;
264259
$scope.state.measurementIsSetup = true;
265260
// Fill in default value as last value if not /5
266261
/** @namespace variableObject.lastValue */
@@ -278,21 +273,20 @@ angular.module('starter').controller('MeasurementAddCtrl', ["$scope", "$q", "$ti
278273
qmLogService.error(error);
279274
});
280275
};
281-
var setMeasurementVariablesByMeasurementId = function(){
276+
var setMeasurementVariablesByMeasurementId = function(id){
282277
var deferred = $q.defer();
283278
qmService.showBlackRingLoader();
284-
qmService.getMeasurementById(qm.urlHelper.getParam('measurementId', location.href, true))
285-
.then(function(measurementObject){
279+
qmService.getMeasurementById(id)
280+
.then(function(m){
286281
qmService.hideLoader();
287282
$scope.state.measurementIsSetup = true;
288-
setupTrackingByMeasurement(measurementObject);
283+
setupTrackingByMeasurement(m);
289284
deferred.resolve();
290285
}, function(error){
291-
qmService.hideLoader();
292-
qmLogService.error($state.current.name + ": " + "Error response: ", error);
293-
deferred.reject(error);
294-
}
295-
);
286+
qmService.hideLoader();
287+
qmLogService.error($state.current.name + ": " + "Error response: ", error);
288+
deferred.reject(error);
289+
});
296290
return deferred.promise;
297291
};
298292
$scope.goToAddReminder = function(){
@@ -310,7 +304,7 @@ angular.module('starter').controller('MeasurementAddCtrl', ["$scope", "$q", "$ti
310304
qmLogService.error('No unitAbbreviatedName provided to setupValueFieldType');
311305
return false;
312306
}
313-
$scope.state.measurement.inputType = qmService.getInputType(unitAbbreviatedName, valence, variableName);
307+
$scope.state.measurement.inputType = qm.unitHelper.getInputType(unitAbbreviatedName, valence, variableName);
314308
}
315309
function setVariableObjectFromMeasurement(){
316310
$scope.state.variableObject = {
@@ -330,42 +324,29 @@ angular.module('starter').controller('MeasurementAddCtrl', ["$scope", "$q", "$ti
330324
}
331325
}
332326
}
333-
var setupTrackingByMeasurement = function(measurementObject){
334-
if(isNaN(measurementObject.startTimeEpoch)){
335-
measurementObject.startTimeEpoch = moment(measurementObject.startTimeEpoch).unix();
336-
}
337-
if(!measurementObject.id){
338-
measurementObject.prevStartTimeEpoch = measurementObject.startTimeEpoch;
339-
}
327+
var setupTrackingByMeasurement = function(m){
328+
if(isNaN(m.startTimeEpoch)){m.startTimeEpoch = moment(m.startTimeEpoch).unix();}
329+
if(!m.id){m.prevStartTimeEpoch = m.startTimeEpoch;}
340330
$scope.state.title = "Edit Measurement";
341-
$scope.state.selectedDate = moment(measurementObject.startTimeEpoch * 1000);
342-
$scope.state.measurement = measurementObject;
343-
qmLog.info("Setting $scope.state.measurement to ", $scope.state.measurement);
331+
$scope.state.selectedDate = moment(m.startTimeEpoch * 1000);
332+
$scope.state.measurement = m;
333+
qmLog.info("Setting $scope.state.measurement to ", m);
344334
$scope.state.measurementIsSetup = true;
345-
setupUnit($scope.state.measurement.unitAbbreviatedName, $scope.state.measurement.valence);
346-
if($scope.state.measurement.variable){
347-
$scope.state.measurement.variableName = $scope.state.measurement.variable;
348-
}
335+
setupUnit(m.unitAbbreviatedName, m.valence);
349336
setStateVariable();
350337
};
351-
var setupTrackingByReminderNotification = function(n){
352-
if(n){
353-
$scope.state.title = "Record Measurement";
354-
if(!$scope.state.measurement.unitAbbreviatedName){
355-
setupUnit(n.unitAbbreviatedName);
356-
}
357-
$scope.state.hideRemindMeButton = true;
358-
$scope.state.measurement.value = n.defaultValue;
359-
$scope.state.measurement.variableName = n.variableName;
360-
$scope.state.measurement.variableCategoryName = getVariableCategoryName(n);
361-
$scope.state.measurement.combinationOperation = n.combinationOperation;
362-
if(n.trackingReminderNotificationTimeEpoch !== "undefined" && n.trackingReminderNotificationTimeEpoch){
363-
$scope.state.selectedDate = moment(n.trackingReminderNotificationTimeEpoch * 1000);
364-
}
365-
$scope.state.measurementIsSetup = true;
366-
setupUnit(n.unitAbbreviatedName, n.valence);
367-
setStateVariable();
338+
var setupTrackingByReminder = function(n){
339+
$scope.state.title = "Record Measurement";
340+
if(!$scope.state.measurement.unitAbbreviatedName){
341+
setupUnit(n.unitAbbreviatedName);
368342
}
343+
$scope.state.hideRemindMeButton = true;
344+
var m = qm.measurements.fromNotification(n);
345+
$scope.state.measurement = m;
346+
if(m.startTime){$scope.state.selectedDate = moment(m.startTime * 1000);}
347+
$scope.state.measurementIsSetup = true;
348+
setupUnit(n.unitAbbreviatedName, n.valence);
349+
setStateVariable();
369350
// Create variableObject
370351
if(!$scope.state.variableObject){
371352
if($stateParams.variableObject !== null && typeof $stateParams.variableObject !== "undefined"){

src/js/qmHelpers.js

Lines changed: 77 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4219,6 +4219,53 @@ var qm = {
42194219
}
42204220
},
42214221
measurements: {
4222+
newMeasurement: function(src){
4223+
var value;
4224+
if(typeof src.modifiedValue !== "undefined" && src.modifiedValue !== null){
4225+
value = src.modifiedValue;
4226+
} else if (typeof src.value !== "undefined" && src.value !== null){
4227+
value = src.value;
4228+
} else if (typeof src.defaultValue !== "undefined" && src.defaultValue !== null){
4229+
value = src.defaultValue;
4230+
} else {
4231+
value = null;
4232+
}
4233+
var timeAt = src.trackingReminderNotificationTimeEpoch ||
4234+
src.startAt ||
4235+
src.startTime ||
4236+
src.notifyAt ||
4237+
src.startTimeString ||
4238+
src.startTimeEpoch;
4239+
var unit = qm.unitHelper.find(src);
4240+
var cat = qm.variableCategoryHelper.find(src);
4241+
if(!unit && cat){
4242+
unit = qm.unitHelper.find(cat);
4243+
}
4244+
var m = {
4245+
combinationOperation: src.combinationOperation || 'MEAN',
4246+
icon: src.icon,
4247+
inputType: src.inputType || (unit) ? unit.inputType : null,
4248+
maximumAllowedValue: src.maximumAllowedValue || (unit) ? unit.maximum : null,
4249+
minimumAllowedValue: src.minimumAllowedValue || (unit) ? unit.minimum : null,
4250+
pngPath: src.pngPath || src.image || (cat) ? cat.pngUrl : null,
4251+
startAt: qm.timeHelper.toDate(timeAt),
4252+
startTime: qm.timeHelper.toUnixTime(timeAt),
4253+
unitAbbreviatedName: (unit) ? unit.abbreviatedName : null,
4254+
unitId: (unit) ? unit.id : null,
4255+
unitName: (unit) ? unit.name : null,
4256+
upc: src.upc,
4257+
valence: src.valence,
4258+
value: value,
4259+
variableCategoryId: src.variableCategoryName,
4260+
variableCategoryName: src.variableCategoryName,
4261+
variableName: src.variableName || src.name,
4262+
}
4263+
if(!m.inputType && unit){m.inputType = qm.unitHelper.getInputType(unit.abbreviatedName, m.valence, m.variableName);}
4264+
return m;
4265+
},
4266+
fromNotification: function (n){
4267+
return qm.measurements.newMeasurement(n);
4268+
},
42224269
getUniqueKey: function(m){
42234270
if(m.id){return m.id.toString();}
42244271
var startTime = m.startTime || m.startTimeEpoch;
@@ -8482,6 +8529,13 @@ var qm = {
84828529
}
84838530
},
84848531
timeHelper: {
8532+
toDate: function(timeAt){
8533+
var unixTime = qm.timeHelper.universalConversionToUnixTimeSeconds(timeAt);
8534+
return qm.timeHelper.convertUnixTimeStampToISOString(unixTime);
8535+
},
8536+
toUnixTime: function(timeAt){
8537+
return qm.timeHelper.universalConversionToUnixTimeSeconds(timeAt);
8538+
},
84858539
getUnixTimestampInMilliseconds: function(dateTimeString){
84868540
if(!dateTimeString){
84878541
return new Date().getTime();
@@ -8680,6 +8734,17 @@ var qm = {
86808734
}
86818735
},
86828736
unitHelper: {
8737+
getInputType: function(unitAbbreviatedName, valence, variableName) {
8738+
var inputType = 'value';
8739+
if (variableName === 'Blood Pressure') {inputType = 'bloodPressure';}
8740+
if (unitAbbreviatedName === '/5') {
8741+
inputType = 'oneToFiveNumbers';
8742+
if (valence === 'positive') {inputType = 'happiestFaceIsFive';}
8743+
if (valence === 'negative') {inputType = 'saddestFaceIsFive';}
8744+
}
8745+
if (unitAbbreviatedName === 'yes/no') {inputType = 'yesOrNo';}
8746+
return inputType;
8747+
},
86838748
getNonAdvancedUnits: function(){
86848749
var nonAdvancedUnitObjects = [];
86858750
var allUnits = qm.staticData.units;
@@ -8820,9 +8885,9 @@ var qm = {
88208885
}
88218886
return arr;
88228887
},
8823-
find:function(v){
8888+
find: function(v) {
88248889
var nameOrId;
8825-
if(typeof v === "string" || data === parseInt(data, 10)){
8890+
if(typeof v === "string" || v === parseInt(v, 10)){
88268891
nameOrId = v;
88278892
} else {
88288893
nameOrId = v.unitId || v.defaultUnitId || v.defaultUnitAbbreviatedName || v.unitAbbreviatedName || v.id;
@@ -9913,6 +9978,16 @@ var qm = {
99139978
}
99149979
return arr;
99159980
},
9981+
find: function(v) {
9982+
var nameOrId;
9983+
if(typeof v === "string" || v === parseInt(v, 10)){
9984+
nameOrId = v;
9985+
} else {
9986+
nameOrId = v.variableCategoryId || v.variableCategoryName;
9987+
}
9988+
if(!nameOrId){return null;}
9989+
return qm.variableCategoryHelper.getByNameOrId(nameOrId);
9990+
}
99169991
},
99179992
visualizer: {
99189993
visualizerEnabled: true,

src/js/services/qmService.js

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -7439,25 +7439,6 @@ angular.module('starter').factory('qmService', ["$http", "$q", "$rootScope", "$i
74397439
}
74407440
return true;
74417441
};
7442-
qmService.getInputType = function(unitAbbreviatedName, valence, variableName){
7443-
var inputType = 'value';
7444-
if(variableName === 'Blood Pressure'){
7445-
inputType = 'bloodPressure';
7446-
}
7447-
if(unitAbbreviatedName === '/5'){
7448-
inputType = 'oneToFiveNumbers';
7449-
if(valence === 'positive'){
7450-
inputType = 'happiestFaceIsFive';
7451-
}
7452-
if(valence === 'negative'){
7453-
inputType = 'saddestFaceIsFive';
7454-
}
7455-
}
7456-
if(unitAbbreviatedName === 'yes/no'){
7457-
inputType = 'yesOrNo';
7458-
}
7459-
return inputType;
7460-
};
74617442
var deleteAllMeasurementsForVariable = function(variableName){
74627443
qmService.showBlackRingLoader();
74637444
// Delete all measurements for a variable

0 commit comments

Comments
 (0)