UNPKG

zettapi_client

Version:

Client side CRUD operations in angular to use with zettapi_server rest api to get started quickly in any CMS project

186 lines (157 loc) 4.27 kB
app.factory('$date', function(moment) { var factory = {}; factory.collisionDetection = function(start, end, events) { start = factory.extract(start); end = end ? factory.extract(end) : start; if (end < start) { return null; } for (var i = 0; i < events.length; i++) { /* if (events[i].approval) { if (events[i].approval.cancelled) { continue; } if (events[i].approval.level < events[i].approval.maxLevel) { continue; } } */ var eventStart = factory.extract(events[i].dateStart); var eventEnd = eventStart; if (events[i].dateEnd) { eventEnd = factory.extract(events[i].dateEnd); } // $ |__$__| if (eventEnd > start && eventEnd <= end) { return true; } // |__$__| $ if (eventStart >= start && eventStart < end) { return true; } // $ |____| $ if (eventStart <= start && eventEnd >= end) { return true; } // |___$___$____| if (eventStart >= start && eventEnd <= end) { return true; } } return false; }; factory.extract = function(datetime) { try { return moment(datetime).format('YYYY-MM-DD'); } catch (err) { return factory.extract(new Date(datetime)); } }; factory.extractMinutes = function(time) { try { return factory.pad(time.getHours()) + ':' + factory.pad(time.getMinutes()); } catch (err) { time = new Date(time); return factory.pad(time.getHours()) + ':' + factory.pad(time.getMinutes()); } }; factory.formatDatetime = function(datetime) { if (!datetime) { return '-'; } var d = new Date(datetime); return d.getFullYear() + '-' + factory.pad(d.getMonth() + 1) + '-' + factory.pad(d.getDate()) + ' às ' + factory.pad(d.getHours()) + ':' + factory.pad(d.getMinutes()) + ':' + factory.pad(d.getSeconds()); }; factory.calculateTimespan = function(startTimestamp, endTimestamp) { var end; if (endTimestamp) { end = moment(endTimestamp); } else { end = moment(); } var start = new Date(startTimestamp); var duration = moment.duration(end.diff(start)); var mins = duration.asMinutes().toFixed(2); return mins; }; factory.totalMinutes = function(timeString) { var HourMinutes = timeString.split(':'); if (HourMinutes.length == 1) { HourMinutes.push(0); } var hours = parseInt(HourMinutes[0]); var minutes = parseInt(HourMinutes[1]); return hours * 60 + minutes; }; factory.pad = function(number, count) { var res = number + ""; count = count || 2; while (res.length < count) { res = "0" + res; } return res; }; factory.getTimestamp = function() { var d = new Date(); var timestamp = factory.pad(d.getHours()) + ":" + factory.pad(d.getMinutes()); return timestamp; }; factory.getWeekDay = function(weekday) { weekday -= 1; switch (weekday) { case 0: return 'Domingo'; case 1: return 'Segunda-Feira'; case 2: return 'Terça-Feira'; case 3: return 'Quarta-Feira'; case 4: return 'Quinta-Feira'; case 5: return 'Sexta-Feira'; case 6: return 'Sabado'; default: return '?'; } }; factory.getTotalMinutes = function(time) { var HourMinutes = time.split(':'); if (HourMinutes.length === 0 || HourMinutes.length > 2) { return null; } if (HourMinutes.length == 1) { HourMinutes.push(0); } var hours = parseInt(HourMinutes[0]); if (hours < 0 || hours > 23) { return null; } var minutes = parseInt(HourMinutes[1]); if (minutes < 0 || minutes > 59) { return null; } return hours * 60 + minutes; }; factory.formatDate = function(date) { var d = new Date(date); var month = '' + (d.getMonth() + 1); var day = '' + d.getDate(); var year = d.getFullYear(); if (month.length < 2) { month = '0' + month; } if (day.length < 2) { day = '0' + day; } return [year, month, day].join('-'); }; return factory; });