{"version":3,"sources":["fn.js","DateParts.js","Webinars.js"],"names":["fn","curry","func","numArgs","length","curried","args","apply","concat","Array","prototype","slice","arguments","get","prop","obj","first","pred","arr","i","len","groupBy","grouped","forEach","propVal","push","sum","item","DateParts","constructor","model","this","Year","Month","Day","Hours","Minutes","Seconds","FormattedDate","Date","getDate","getDateWithoutTime","CreateFromDate","date","getFullYear","getMonth","getHours","getMinutes","getSeconds","CreateFromTimestamp","timestamp","setTime","getTime","getSpanBetweenDates","other","datePrecision","divisor","difference","DatePrecision","OneDay","OneMonth","Math","round","abs","getDateFromOffset","startDate","offset","setDate","setMonth","getFormattedDate","format","getMonthName","getFormattedTime","hour","minute","toString","period","getWeekday","WeekNames","getDay","MonthNames","AllWebinarsViewModel","Webinars","WebinarViewModel","createFromArray","SelectedCategory","ko","observable","Categories","getCategories","VisibleWebinars","computed","getVisibleWebinars","utils","arrayGetDistinctValues","map","x","Category","filter","mapping","fromJS","observe","ignore","LoadIframe","Dates","WebinarDateViewModel","Times","InProgress","arrayForEach","d","arrayFirst","t","models","arrayMap","m","getDurationDisplay","isPlural","Duration","getVideoPlayer","VideoUrl","getDateBlockMinHeight","numTimesPerDate","maxNumOfTimesInADay","max","times","WebinarTimeViewModel","groupedTimes","groupByDate","dates","myTimes","time","TimeStamp","videoAudit","$","ajax","type","url","webinarRoutes","data","templateId","Id"],"mappings":"AAAA,IAAIA,IACJ,SAAWA,GACPA,EAAGC,MAAQ,SAAUC,GACjB,IAAIC,EAAUD,EAAKE,OAMnB,OALA,SAASC,EAAQC,GACb,OAAOA,EAAKF,QAAUD,EAChBD,EAAKK,MAAM,KAAMD,GACjB,WAAc,OAAOD,EAAQC,EAAKE,OAAOC,MAAMC,UAAUC,MAAMJ,MAAMK,cAExEP,CAAQI,MAAMC,UAAUC,MAAMJ,MAAMK,UAAW,CAAC,MAE3DZ,EAAGa,IAAMb,EAAGC,MAAM,CAACa,EAAMC,IAAQA,EAAID,IACrCd,EAAGgB,MAAQhB,EAAGC,MAAM,CAACgB,EAAMC,KACvB,IAAK,IAAIC,EAAI,EAAGC,EAAMF,EAAId,OAAQe,EAAIC,EAAKD,IACvC,GAAIF,EAAKC,EAAIC,IACT,OAAOD,EAAIC,GAEnB,OAAO,OAEXnB,EAAGqB,QAAUrB,EAAGC,MAAM,CAACC,EAAMgB,KACzB,IAAII,EAAU,GAQd,OAPAJ,EAAIK,QAAQR,IACR,IAAIS,EAAUtB,EAAKa,GACfS,KAAWF,EACXA,EAAQE,GAASC,KAAKV,GAEtBO,EAAQE,GAAW,CAACT,KAErBO,IAEXtB,EAAG0B,IAAM1B,EAAGC,MAAM,CAACC,EAAMgB,KACrB,IAAIQ,EAAM,EAIV,OAHAR,EAAIK,QAAQ,IACRG,GAAOxB,EAAKyB,KAETD,IAlCf,CAoCU1B,GAAPA,IAAY;MCrCT4B,UACFC,YAAYC,GACRC,KAAKC,KAAOF,EAAME,KAClBD,KAAKE,MAAQH,EAAMG,MACnBF,KAAKG,IAAMJ,EAAMI,IACjBH,KAAKI,MAAQL,EAAMK,MACnBJ,KAAKK,QAAUN,EAAMM,QACrBL,KAAKM,QAAUP,EAAMO,QACrBN,KAAKO,cAAgBR,EAAMQ,cAC3BP,KAAKQ,KAAOR,KAAKS,UAErBA,UACI,OAAO,IAAID,KAAKR,KAAKC,KAAMD,KAAKE,MAAOF,KAAKG,IAAKH,KAAKI,MAAOJ,KAAKK,QAASL,KAAKM,SAEpFI,qBACI,OAAO,IAAIF,KAAKR,KAAKC,KAAMD,KAAKE,MAAOF,KAAKG,KAEhDQ,sBAAsBC,GAUlB,OATgB,IAAIf,UAAU,CAC1BI,KAAMW,EAAKC,cACXX,MAAOU,EAAKE,WACZX,IAAKS,EAAKH,UACVL,MAAOQ,EAAKG,WACZV,QAASO,EAAKI,aACdV,QAASM,EAAKK,aACdV,cAAgBK,EAAKE,WAAa,EAAK,IAAMF,EAAKH,UAAY,IAAMG,EAAKC,gBAIjFK,2BAA2BC,GACvB,IAAIP,EAAO,IAAIJ,KAEf,OADAI,EAAKQ,QAAQD,GACNnB,KAAKW,eAAeC,GAE/BS,UACI,OAAOrB,KAAKQ,KAAKa,UAErBC,oBAAoBC,EAAOC,GACvB,IACIC,EADAC,EAAa1B,KAAKqB,UAAYE,EAAMF,UAMxC,OAJIG,GAAiBG,cAAcxB,IAC/BsB,EAAU5B,UAAU+B,OACfJ,GAAiBG,cAAczB,QACpCuB,EAAU5B,UAAUgC,UACjBC,KAAKC,MAAMD,KAAKE,IAAIN,EAAaD,IAE5CQ,yBAAyBC,EAAWC,EAAQX,GACpCZ,EAAO,IAAIJ,KAAK0B,EAAUb,WAK9B,OAJIG,GAAiBG,cAAcxB,IAC/BS,EAAKwB,QAAQxB,EAAKH,UAAY0B,GACzBX,GAAiBG,cAAczB,OACpCU,EAAKyB,SAASzB,EAAKE,WAAaqB,GAC7BvB,EAEX0B,mBACI,MAAO,eAAeC,OAAOvC,KAAKwC,eAAgBxC,KAAKG,IAAKH,KAAKC,MAErEwC,mBACI,IAAIC,EAAoB,GAAb1C,KAAKI,MAAaJ,KAAKI,MAAQ,GAAKJ,KAAKI,MAChDuC,EAAS3C,KAAKK,QAAU,GAAK,IAAML,KAAKK,QAAUL,KAAKK,QAAQuC,WAC/DC,EAAsB,GAAb7C,KAAKI,MAAa,KAAO,KACtC,MAAO,cAAcmC,OAAOG,EAAMC,EAAQE,GAE9CC,aACI,OAAOjD,UAAUkD,UAAU/C,KAAKS,UAAUuC,UAE9CR,eACI,OAAO3C,UAAUoD,WAAWjD,KAAKE,QAOzC,IAAIyB,cAJJ9B,UAAU+B,OAAS,MACnB/B,UAAUgC,SAAW,GAAKhC,UAAU+B,OACpC/B,UAAUoD,WAAa,CAAC,UAAW,WAAY,QAAS,QAAS,MAAO,OAAQ,OAAQ,SAAU,YAAa,UAAW,WAAY,YACtIpD,UAAUkD,UAAY,CAAC,SAAU,SAAU,UAAW,YAAa,WAAY,SAAU,YAEzF,SAAWpB,GACPA,EAAcA,EAAmB,IAAI,GAAK,MAC1CA,EAAcA,EAAqB,MAAI,GAAK,QAFhD,CAGqBA,cAAlBA,eAAkC;MC3E/BuB,qBACFpD,YAAYC,GACRC,KAAKmD,SAAWC,iBAAiBC,gBAAgBtD,EAAMoD,UACvDnD,KAAKsD,iBAAmBC,GAAGC,WAAW,MACtCxD,KAAKyD,WAAazD,KAAK0D,gBACvB1D,KAAK2D,gBAAkBJ,GAAGK,SAAS5D,KAAK6D,mBAAoB7D,MAEhE0D,gBACI,OAAOH,GAAGO,MAAMC,uBAAuB/D,KAAKmD,SAASa,IAAIC,GAAKA,EAAEC,WAEpEL,qBACI,OAAkC,MAA3B7D,KAAKsD,mBACNtD,KAAKmD,SACLnD,KAAKmD,SAASgB,OAAOF,GAAKA,EAAEC,WAAalE,KAAKsD,2BAGtDF,iBACFtD,YAAYC,GACRwD,GAAGa,QAAQC,OAAOtE,EAAO,CACrBuE,QAAS,CAAC,IACVC,OAAQ,CAAC,UACVvE,MACHA,KAAKwE,WAAajB,GAAGC,YAAW,GAChCxD,KAAKyE,MAAQC,qBAAqBrB,gBAAgBtD,EAAM4E,OACxD3E,KAAK4E,WAAarB,GAAGC,WAAW,MAChCD,GAAGO,MAAMe,aAAa7E,KAAKyE,MAAOK,IAC9B9E,KAAK4E,WAAWrB,GAAGO,MAAMiB,WAAWD,EAAEH,MAAOK,GAAK,IAAIxE,KAASwE,EAAExE,KAAKC,YAAa,IAAID,MAAOa,UAAY2D,EAAExE,KAAKC,UAAUY,UAAY,SAG/IgC,uBAAuB4B,GACnB,OAAO1B,GAAGO,MAAMoB,SAASD,EAAQE,GAAK,IAAI/B,iBAAiB+B,IAE/DC,qBACI,IAAIC,EAA4B,GAAjBrF,KAAKsF,SACpB,MAAO,cAAc/C,OAAOvC,KAAKsF,SAAUD,EAAW,GAAK,KAE/DE,iBACI,MAAO,iEACHvF,KAAKwF,SACL,0HAA4HxF,KAAKwF,SAAW,8DAEpJC,wBACI,IAAIC,EAAkBnC,GAAGO,MAAMoB,SAASlF,KAAKyE,MAAOK,GAAKA,EAAEH,MAAMtG,QAC7DsH,EAAsB7D,KAAK8D,IAAIpH,MAAM,KAAMkH,GAI/C,MAAO,QAAQnD,OAHE,GACJ,GACuBoD,UAItCjB,qBACF5E,YAAYU,EAAMmE,GACd3E,KAAKQ,KAAOA,EACZR,KAAK2E,MAAQA,EAEjBtB,uBAAuB4B,GACnB,IAGS9D,EAHL0E,EAAQC,qBAAqBzC,gBAAgB4B,GAC7Cc,EAAe/F,KAAKgG,YAAYH,GAChCI,EAAQ,IAAIvH,MAChB,IAASyC,KAAa4E,EAAc,CAChC,IAAInF,EAAOf,UAAUqB,oBAAoBC,GACrC+E,EAAUH,EAAa5E,GAC3B8E,EAAMvG,KAAK,IAAIgF,qBAAqB9D,EAAMsF,IAE9C,OAAOD,GAGfvB,qBAAqBsB,YAAc/H,GAAGqB,QAAQ,GAAU6G,EAAK3F,KAAKE,qBAAqBW,iBACjFyE,qBACFhG,YAAYC,GACRwD,GAAGa,QAAQC,OAAOtE,EAAO,CACrBuE,QAAS,CAAC,IACVC,OAAQ,CAAC,SACVvE,MACHA,KAAKQ,KAAOX,UAAUqB,oBAAoBnB,EAAMS,KAAK4F,WAEzD/C,uBAAuB4B,GACnB,OAAO1B,GAAGO,MAAMoB,SAASD,EAAQlF,GAAS,IAAI+F,qBAAqB/F,KAG3E,SAASsG,aAGLC,EAAEC,KAAK,CACHC,KAAM,OACNC,IAAKC,cACLC,KAAM,CACFC,WANG5G,KAMc6G","file":"webinarsbundle.js","sourcesContent":["var fn;\n(function (fn) {\n fn.curry = function (func) {\n var numArgs = func.length;\n function curried(args) {\n return args.length >= numArgs\n ? func.apply(null, args)\n : function () { return curried(args.concat(Array.prototype.slice.apply(arguments))); };\n }\n return curried(Array.prototype.slice.apply(arguments, [1]));\n };\n fn.get = fn.curry((prop, obj) => obj[prop]);\n fn.first = fn.curry((pred, arr) => {\n for (var i = 0, len = arr.length; i < len; i++) {\n if (pred(arr[i]))\n return arr[i];\n }\n return null;\n });\n fn.groupBy = fn.curry((func, arr) => {\n var grouped = {};\n arr.forEach(obj => {\n var propVal = func(obj);\n if (propVal in grouped)\n grouped[propVal].push(obj);\n else\n grouped[propVal] = [obj];\n });\n return grouped;\n });\n fn.sum = fn.curry((func, arr) => {\n var sum = 0;\n arr.forEach((item) => {\n sum += func(item);\n });\n return sum;\n });\n})(fn || (fn = {}));\n//# sourceMappingURL=fn.js.map","class DateParts {\n constructor(model) {\n this.Year = model.Year;\n this.Month = model.Month;\n this.Day = model.Day;\n this.Hours = model.Hours;\n this.Minutes = model.Minutes;\n this.Seconds = model.Seconds;\n this.FormattedDate = model.FormattedDate;\n this.Date = this.getDate();\n }\n getDate() {\n return new Date(this.Year, this.Month, this.Day, this.Hours, this.Minutes, this.Seconds);\n }\n getDateWithoutTime() {\n return new Date(this.Year, this.Month, this.Day);\n }\n static CreateFromDate(date) {\n var dateParts = new DateParts({\n Year: date.getFullYear(),\n Month: date.getMonth(),\n Day: date.getDate(),\n Hours: date.getHours(),\n Minutes: date.getMinutes(),\n Seconds: date.getSeconds(),\n FormattedDate: (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear()\n });\n return dateParts;\n }\n static CreateFromTimestamp(timestamp) {\n var date = new Date();\n date.setTime(timestamp);\n return this.CreateFromDate(date);\n }\n getTime() {\n return this.Date.getTime();\n }\n getSpanBetweenDates(other, datePrecision) {\n var difference = this.getTime() - other.getTime();\n var divisor;\n if (datePrecision == DatePrecision.Day)\n divisor = DateParts.OneDay;\n else if (datePrecision == DatePrecision.Month)\n divisor = DateParts.OneMonth;\n return Math.round(Math.abs(difference / divisor));\n }\n static getDateFromOffset(startDate, offset, datePrecision) {\n var date = new Date(startDate.getTime());\n if (datePrecision == DatePrecision.Day)\n date.setDate(date.getDate() + offset);\n else if (datePrecision == DatePrecision.Month)\n date.setMonth(date.getMonth() + offset);\n return date;\n }\n getFormattedDate() {\n return '{0} {1}, {2}'.format(this.getMonthName(), this.Day, this.Year);\n }\n getFormattedTime() {\n var hour = this.Hours > 12 ? this.Hours - 12 : this.Hours;\n var minute = this.Minutes < 10 ? '0' + this.Minutes : this.Minutes.toString();\n var period = this.Hours > 11 ? 'pm' : 'am';\n return '{0}:{1} {2}'.format(hour, minute, period);\n }\n getWeekday() {\n return DateParts.WeekNames[this.getDate().getDay()];\n }\n getMonthName() {\n return DateParts.MonthNames[this.Month];\n }\n}\nDateParts.OneDay = 24 * 60 * 60 * 1000; // hours*minutes*seconds*milliseconds\nDateParts.OneMonth = 30 * DateParts.OneDay; // days * OneDay\nDateParts.MonthNames = [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"];\nDateParts.WeekNames = [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"];\nvar DatePrecision;\n(function (DatePrecision) {\n DatePrecision[DatePrecision[\"Day\"] = 0] = \"Day\";\n DatePrecision[DatePrecision[\"Month\"] = 1] = \"Month\";\n})(DatePrecision || (DatePrecision = {}));\n//# sourceMappingURL=DateParts.js.map","/// \n/// \n/// \nclass AllWebinarsViewModel {\n constructor(model) {\n this.Webinars = WebinarViewModel.createFromArray(model.Webinars);\n this.SelectedCategory = ko.observable(null);\n this.Categories = this.getCategories();\n this.VisibleWebinars = ko.computed(this.getVisibleWebinars, this);\n }\n getCategories() {\n return ko.utils.arrayGetDistinctValues(this.Webinars.map(x => x.Category));\n }\n getVisibleWebinars() {\n return this.SelectedCategory() == null\n ? this.Webinars\n : this.Webinars.filter(x => x.Category === this.SelectedCategory());\n }\n}\nclass WebinarViewModel {\n constructor(model) {\n ko.mapping.fromJS(model, {\n observe: [''],\n ignore: ['Times']\n }, this);\n this.LoadIframe = ko.observable(false);\n this.Dates = WebinarDateViewModel.createFromArray(model.Times);\n this.InProgress = ko.observable(null);\n ko.utils.arrayForEach(this.Dates, d => {\n this.InProgress(ko.utils.arrayFirst(d.Times, t => new Date() > t.Date.getDate() && new Date().getTime() - t.Date.getDate().getTime() < (1000 * 60 * 60)));\n });\n }\n static createFromArray(models) {\n return ko.utils.arrayMap(models, m => new WebinarViewModel(m));\n }\n getDurationDisplay() {\n var isPlural = this.Duration == 1;\n return '{0} hour{1}'.format(this.Duration, isPlural ? '' : 's');\n }\n getVideoPlayer() {\n return '';\n }\n getDateBlockMinHeight() {\n var numTimesPerDate = ko.utils.arrayMap(this.Dates, d => d.Times.length);\n var maxNumOfTimesInADay = Math.max.apply(null, numTimesPerDate);\n var baseHeight = 50;\n var factor = 50;\n var height = baseHeight + (factor * maxNumOfTimesInADay);\n return '{0}px'.format(height);\n }\n}\nclass WebinarDateViewModel {\n constructor(Date, Times) {\n this.Date = Date;\n this.Times = Times;\n }\n static createFromArray(models) {\n var times = WebinarTimeViewModel.createFromArray(models);\n var groupedTimes = this.groupByDate(times);\n var dates = new Array();\n for (var timestamp in groupedTimes) {\n var date = DateParts.CreateFromTimestamp(timestamp);\n var myTimes = groupedTimes[timestamp];\n dates.push(new WebinarDateViewModel(date, myTimes));\n }\n return dates;\n }\n}\nWebinarDateViewModel.groupByDate = fn.groupBy((time) => time.Date.getDateWithoutTime().getTime());\nclass WebinarTimeViewModel {\n constructor(model) {\n ko.mapping.fromJS(model, {\n observe: [''],\n ignore: ['Date']\n }, this);\n this.Date = DateParts.CreateFromTimestamp(model.Date.TimeStamp);\n }\n static createFromArray(models) {\n return ko.utils.arrayMap(models, model => new WebinarTimeViewModel(model));\n }\n}\nfunction videoAudit() {\n var self = this;\n //console.log(routes);\n $.ajax({\n type: 'POST',\n url: webinarRoutes,\n data: {\n templateId: self.Id\n }\n });\n}\n;\n//# sourceMappingURL=Webinars.js.map"]}