"use strict"; function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } (function () { "use strict"; /** * NewsContainerComponentCtrl News container used in conjunction with the * news component. Creates a loop that iterates over a list of news. */ var NewsContainerComponentCtrl = /*#__PURE__*/function () { /** * constructor News container constructor * @param {Object} NewsService News related stuff * @param {Object} Flash Flash messages service * @param {Object} $translate translate object */ function NewsContainerComponentCtrl(NewsService, Flash, $translate) { _classCallCheck(this, NewsContainerComponentCtrl); this.newsService = NewsService; this.flash = Flash; this.$translate = $translate; this.newsList = []; this.hasError = false; } // Executed on component initialization _createClass(NewsContainerComponentCtrl, [{ key: "$onInit", value: function $onInit() {} /** * $onChanges Executed when bindings (< and @) change. * When the isLoggedIn binding changes a news list is fetched. */ }, { key: "$onChanges", value: function $onChanges() { var resp = [], self = this; this.newsService.getNewsList(this.isLoggedIn).then(function (response) { resp = response; })["catch"](function (error) { self.hasError = true; resp = []; // console.error(error); })["finally"](function () { if (!self.hasError) { self.newsList = resp; } else { self.flash.create("danger", self.$translate.instant("NEWS_ERROR")); } }); } /** * getDateLabel Method that allows to display a label based * on the number of days passed until TODAY. * If the news is from today: display "TODAY", * If the news is from yesterday: display "YESTERDAY", * If the news is two days old: display "TWO_DAYS_AGO", * ÿtherwise display the date itself * @param {String} date Sring representation of a date * @return {String} Returns a label or the date passed */ }, { key: "getDateLabel", value: function getDateLabel(date) { var translate = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.$translate; var dateArray = date.split("/"), //year = parseInt(dateArray[2], 10), year = +dateArray[2], month = dateArray[1] - 1, //day = parseInt(dateArray[0], 10), day = +dateArray[0], today = moment(), label = ""; var self = this; var parsedDate = moment([year, month, day]); var numberOfDaysPassed = today.diff(parsedDate, "days"); switch (numberOfDaysPassed) { case 0: label = translate.instant("TODAY"); break; case 1: label = translate.instant("YESTERDAY"); break; case 2: label = translate.instant("TWO_DAYS_AGO"); break; default: label = parsedDate.format("DD/MM/YYYY"); } return label; } }]); return NewsContainerComponentCtrl; }(); // News container component definition var newsContainerComponent = { bindings: { isLoggedIn: "<" }, controller: NewsContainerComponentCtrl, templateUrl: "transversalModule/template/news_container_comp_view.html" }; angular.module("newsmodule.container", []).component("newsContainerComponent", newsContainerComponent); }).call();