UNPKG

zettapi_client

Version:

Admin panel and client-side CRUD operations in angular to use with zettapi_server rest api to get started quickly in any CMS project.

160 lines (135 loc) 4.06 kB
app.factory('$date', function (moment) { var factory = {}; factory.collisionDetection = function (start, end, events) { start = moment(start).format('YYYY-MM-DD'); end = end ? moment(end).format('YYYY-MM-DD') : 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 = moment(events[i].dateStart).format('YYYY-MM-DD'); var eventEnd = eventStart; if (events[i].dateEnd) { eventEnd = moment(events[i].dateEnd).format('YYYY-MM-DD'); } // $ |__$__| 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.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.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)); return duration.asMinutes().toFixed(2); }; 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.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.getWeekNumber = function (d) { // Copy date so don't modify original d = new Date(+d); d.setHours(0, 0, 0); // Set to nearest Thursday: current date + 4 - current day number // Make Sunday's day number 7 d.setDate(d.getDate() + 4 - (d.getDay() || 7)); // Get first day of year var yearStart = new Date(d.getFullYear(), 0, 1); // Calculate full weeks to nearest Thursday var weekNo = Math.ceil((((d - yearStart) / 86400000) + 1) / 7); // Return array of year and week number return [d.getFullYear(), weekNo]; }; factory.weeksInYear = function (year) { var month = 11, day = 31, week; // Find week that 31 Dec is in. If is first week, reduce date until // get previous week. do { d = new Date(year, month, day--); week = factory.getWeekNumber(d)[1]; } while (week == 1); return week; }; factory.getDateOfISOWeek = function (w, y) { var simple = new Date(y, 0, 1 + (w - 1) * 7); var dow = simple.getDay(); var ISOweekStart = simple; if (dow <= 4) ISOweekStart.setDate(simple.getDate() - simple.getDay() + 1); else ISOweekStart.setDate(simple.getDate() + 8 - simple.getDay()); return ISOweekStart; }; return factory; });