Summary Table
| Categories |
Total Count |
| PII |
0 |
| URL |
0 |
| DNS |
0 |
| EKL |
0 |
| IP |
0 |
| PORT |
0 |
| VsID |
0 |
| CF |
0 |
| AI |
0 |
| VPD |
0 |
| PL |
0 |
| Other |
0 |
File Content
define(['angular', 'app', 'moment', 'appConfig'], function (angular, app, moment) {
"use strict";
app.service("formatter",
function ($rootScope, $filter, config) {
var formatter = {};
formatter.getFormattedFrontendMonthYear = function(dateString){
if(!dateString) {
return "";
}
var date = new Date(dateString);
if(date.toString() === "Invalid Date") {
return null;
}
return $filter('date')(date, config.formats.FRONTEND.MONTH_YEAR);
};
formatter.getFormattedFrontendDate = function(dateString){
if(!dateString) {
return "";
}
if(!(dateString instanceof Date) && dateString.indexOf(':') < 0 && dateString.indexOf('-') === 4) //limit to just YYYY-DD-MM format from backend
dateString = dateString + "T12:00:00";
var date = new Date(dateString);
if(date.toString() === "Invalid Date") {
return null;
}
return $filter('date')(date, config.formats.FRONTEND.DATE);
};
formatter.getFormattedFrontendTime = function(timeString){
if(!timeString) {
return "";
}
var date = new Date(timeString);
if(date.toString() === "Invalid Date") {
date = new Date("12/12/1212 " + timeString);
}
return $filter('date')(date, config.formats.FRONTEND.TIME);
};
formatter.getFormattedFrontendDateTime = function(dateTimeString){
if(!dateTimeString) {
return "";
}
var dateTime = new Date(dateTimeString);
if(dateTime.toString() === "Invalid Date") {
return null;
}
return $filter('date')(dateTime, config.formats.FRONTEND.DATE_TIME);
};
formatter.getFormattedBackendDate = function(dateString){
if(!dateString) {
return "";
}
if(!(dateString instanceof Date) && dateString.indexOf(':') < 0)
dateString = dateString + " 12:00:00";
var date = new Date(dateString);
if(date.toString() === "Invalid Date") {
return null;
}
return $filter('date')(date, config.formats.BACKEND.DATE);
};
formatter.getFormattedBackendTime = function(timeString){
if(!timeString) {
return "";
}
var date = new Date(timeString);
if(date.toString() === "Invalid Date") {
date = new Date("12/12/1212 " + timeString);
}
return $filter('date')(date, config.formats.BACKEND.TIME);
};
formatter.getFormattedBackendDateTime = function(dateTimeString){
if(!dateTimeString) {
return "";
}
var dateTime = new Date(dateTimeString);
if(dateTime.toString() === "Invalid Date") {
return null;
}
var filterDate = $filter('date')(dateTime, config.formats.BACKEND.DATE_TIME);
//insert colon into timezone info as required by HL7 standard https://www.hl7.org/fhir/datatypes.html#dateTime
filterDate = filterDate.slice(0, filterDate.length - 2) + ":" + filterDate.slice(filterDate.length - 2);
return filterDate;
};
formatter.getDateTimeMinusDelta = function(date, delta, format){
date = new Date(date);
var months = delta.months || 0;
var days = delta.days || 0;
var years = delta.years || 0;
var hours = delta.hours || 0;
var minutes = delta.minutes || 0;
var seconds = delta.seconds || 0;
var milliseconds = delta.milliseconds || 0;
date = new Date(date.getFullYear()+years, date.getMonth()+months, date.getDate()+days,
date.getHours()+hours, date.getMinutes()+minutes, date.getSeconds()+seconds, date.getMilliseconds()+milliseconds);
if(format ==="front") {
return formatter.getFormattedFrontendDateTime(date);
} else {
return formatter.getFormattedBackendDateTime(date)
}
};
formatter.getDateRangeFromStartDate = function(startDate, delta){
var endDate = formatter.getDateTimeMinusDelta(startDate, delta, "front");
return {
startDate : formatter.getFormattedFrontendDate(startDate),
endDate : formatter.getFormattedFrontendDate(endDate)
};
};
formatter.getDateRangeFromEndDate = function(endDate, delta){
delta = angular.copy(delta);
for(var key in delta) {
if(delta.hasOwnProperty(key)) {
delta[key] = -1 * delta[key];
}
}
var startDate = formatter.getDateTimeMinusDelta(endDate, delta, "front");
return {
startDate : formatter.getFormattedFrontendDate(startDate),
endDate : formatter.getFormattedFrontendDate(endDate)
};
};
formatter.getDefaultDateRange = function(){
var startDate = new Date();
return formatter.getDateRangeFromEndDate(startDate, config.defaults.DATE_RANGE_DELTA);
};
formatter.addDays = function(date, days) {
var dat = new Date(date.valueOf());
dat.setDate(dat.getDate() + days);
return dat;
}
formatter.dotifyArrayOfPrimatives = function(array){
return array.map(function(item){
return {value : item};
});
};
formatter.undotifyArrayOfPrimatives = function(array){
return array.map(function(item){
return item.value;
});
};
formatter.getNthBirthday = function (dob, years) {
var dobMoment = moment(dob);
return dobMoment.add(years, 'Y');
};
formatter.base64toBlob = function(rawBase64Data) {
// convert base64 to raw binary data held in a string
var byteString = atob(rawBase64Data.split(',')[1]);
// separate out the mime component
var mimeString = rawBase64Data.split(',')[0].split(':')[1].split(';')[0];
// write the bytes of the string to an ArrayBuffer
var arrayBuffer = new ArrayBuffer(byteString.length);
var _ia = new Uint8Array(arrayBuffer);
for (var i = 0; i < byteString.length; i++) {
_ia[i] = byteString.charCodeAt(i);
}
var dataView = new DataView(arrayBuffer);
// fix for InvalidStateError in internet explorer 11
try {
var blob = new Blob([dataView], { type: mimeString });
}
catch (e) {
window.BlobBuilder = window.BlobBuilder ||
window.webKitBlobBuilder ||
window.MozBlobBuilder ||
window.MSBlobBuilder;
if (window.BlobBuilder) {
var bb = new BlobBuilder();
bb.append(arrayBuffer);
blob = bb.getBlob(mimeString);
}
}
return blob;
};
formatter.toTitleCase = function(word) {
return word[0].toUpperCase() + word.slice(1).toLowerCase();
};
return formatter;
});
});