added 260907 version of worker toolkit
This commit is contained in:
140
worker-toolkit-flaredown/repo/frontend/app/models/checkin.js
Normal file
140
worker-toolkit-flaredown/repo/frontend/app/models/checkin.js
Normal file
@@ -0,0 +1,140 @@
|
||||
import DS from 'ember-data';
|
||||
import Ember from 'ember';
|
||||
import moment from 'moment';
|
||||
|
||||
const {
|
||||
attr,
|
||||
Model,
|
||||
hasMany,
|
||||
belongsTo,
|
||||
} = DS;
|
||||
|
||||
const {
|
||||
A,
|
||||
get,
|
||||
set,
|
||||
RSVP,
|
||||
isBlank,
|
||||
computed,
|
||||
observer,
|
||||
isPresent,
|
||||
getProperties,
|
||||
Logger: { error },
|
||||
computed: { and, alias },
|
||||
} = Ember;
|
||||
|
||||
export default Model.extend({
|
||||
date: attr('string'), // please keep this as string as we don't need timezone info
|
||||
note: attr('string'),
|
||||
tagIds: attr(),
|
||||
foodIds: attr(),
|
||||
postalCode: attr('string'),
|
||||
availableForPromotion: attr('boolean'),
|
||||
locationName: attr('string'),
|
||||
promotionSkippedAt: attr('string'),
|
||||
|
||||
tags: hasMany('tag', { async: false }),
|
||||
foods: hasMany('food', { async: false }),
|
||||
symptoms: hasMany('checkinSymptom'),
|
||||
conditions: hasMany('checkinCondition'),
|
||||
treatments: hasMany('checkinTreatment'),
|
||||
|
||||
weather: belongsTo('weather', { async: false }),
|
||||
harveyBradshawIndex: belongsTo('harveyBradshawIndex', { async: false }),
|
||||
promotionRate: belongsTo('promotionRate', { async: false }),
|
||||
|
||||
tagsChanged: false,
|
||||
|
||||
shouldShowPrStep: alias('availableForPromotion'),
|
||||
|
||||
addObj: function(obj, idsKey, relationKey) {
|
||||
const objId = parseInt(get(obj, 'id'));
|
||||
|
||||
if (!get(this, idsKey).includes(objId)) {
|
||||
get(this, relationKey).pushObject(obj);
|
||||
get(this, idsKey).pushObject(objId);
|
||||
set(this, 'hasDirtyAttributes', true);
|
||||
}
|
||||
},
|
||||
|
||||
removeObj: function(obj, idsKey, relationKey) {
|
||||
get(this, relationKey).removeObject(obj);
|
||||
get(this, idsKey).removeObject(parseInt(get(obj, 'id')));
|
||||
set(this, 'hasDirtyAttributes', true);
|
||||
},
|
||||
|
||||
deleteTrackablesPreparedForDestroy() {
|
||||
const { conditions, symptoms, treatments } = getProperties(this, 'conditions', 'symptoms', 'treatments');
|
||||
|
||||
[conditions, symptoms, treatments].forEach(trackables => {
|
||||
trackables.toArray().forEach(trackable => {
|
||||
if (get(trackable, 'isPreparedForDestroy')) {
|
||||
trackables.removeObject(trackable);
|
||||
|
||||
trackable.deleteRecord();
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
handleSaveError(obj) {
|
||||
get(this, 'errors')._add(
|
||||
'saveFailure',
|
||||
['Checkin save failed!<br>Please check your connection and then refresh the page.']
|
||||
);
|
||||
|
||||
error(obj);
|
||||
},
|
||||
|
||||
isBlank: and('conditionsBlank', 'symptomsBlank', 'treatmentsBlank', 'tagsBlank', 'noteBlank'),
|
||||
|
||||
formattedDate: computed('date', function() {
|
||||
return moment(get(this, 'date')).format("YYYY-MM-DD");
|
||||
}),
|
||||
|
||||
conditionsBlank: computed('conditions', 'conditions.[]', function() {
|
||||
return get(this, 'conditions').toArray().filter(function(condition) {
|
||||
return isPresent(get(condition, 'value'));
|
||||
}).length === 0;
|
||||
}),
|
||||
|
||||
symptomsBlank: computed('symptoms', 'symptoms.[]', function() {
|
||||
return get(this, 'symptoms').toArray().filter(function(symptom) {
|
||||
return isPresent(get(symptom, 'value'));
|
||||
}).length === 0;
|
||||
}),
|
||||
|
||||
treatmentsBlank: computed('treatments', 'treatments.[]', function() {
|
||||
return get(this, 'treatments').toArray().filter(function(treatment) {
|
||||
return get(treatment, 'isTaken');
|
||||
}).length === 0;
|
||||
}),
|
||||
|
||||
tagsBlank: computed('tags', 'tags.[]', function() {
|
||||
return get(this, 'tags').toArray().length === 0;
|
||||
}),
|
||||
|
||||
noteBlank: computed('note', function() {
|
||||
return isBlank(get(this, 'note'));
|
||||
}),
|
||||
|
||||
allColorIds: computed('conditions', 'symptoms', 'treatments', function() {
|
||||
let result = A();
|
||||
|
||||
result.pushObjects(get(this, 'conditions').mapBy('colorId'));
|
||||
result.pushObjects(get(this, 'symptoms').mapBy('colorId'));
|
||||
result.pushObjects(get(this, 'treatments').mapBy('colorId'));
|
||||
|
||||
return result;
|
||||
}),
|
||||
|
||||
conditionsObserver: observer('conditions', 'conditions.[]', function() {
|
||||
get(this, 'conditions')
|
||||
.then(conditions => RSVP.all(conditions.map(c => get(c, 'condition'))))
|
||||
.then(conditions => set(
|
||||
this,
|
||||
'shouldShowHbiStep',
|
||||
conditions.any(condition => get(condition, 'name') === "Crohn's disease")
|
||||
));
|
||||
}).on('init'),
|
||||
});
|
||||
Reference in New Issue
Block a user