1// The code in this file is property of Zone Five Software and may not be reused without explicit license 2// and permission from Zone Five Software. Contact [email protected] with any questions. 3 4define("view/shared/DialogBase",[],function(){var e=Backbone.View.extend({defaults:{resizable:!1,width:520,height:400,modal:!0,dialogTitle:"",content:"",classes:"",okText:SportTracks.text.ok,cancelText:SportTracks.text.cancel,showCancel:!0,showOk:!0,canClose:function(e){return!0},onOkClicked:function(e){},onCancelClicked:function(e){},onClosing:function(e){},onClosed:function(e){}},initialize:function(){this.options=_.extend({},e.prototype.defaults,this.options),_.bindAll(this,"handleOkClick","handleCancelClick","closeDialog"),this.okClicked=!1},showDialog:function(){var e='<div title="'+this.getTitle()+'">'+this.getContentHtml()+"</div>";this.createDialog(e,this.getButtons()),this.render()},getContentHtml:function(){return this.options.content},getTitle:function(){return this.options.dialogTitle},setTitle:function(e){this.options.dialogTitle=e,this.$(".ui-dialog-title").html(e)},getButtons:function(){var e=this.options,t=[];return e.showOk&&t.push({class:"ok-button",text:e.okText,click:this.handleOkClick}),e.showCancel&&t.push({class:"cancel-button",text:e.cancelText,click:this.handleCancelClick}),t},dialogClasses:function(){return this.options.classes},createDialog:function(e,t){var n=this,i=this.options;this.dialog=jQuery(e).dialog({autoOpen:!0,dialogClass:this.dialogClasses(),resizable:i.resizable,width:i.width,height:i.height,modal:i.modal,close:function(){n.onCloseDialog()},buttons:t}),this.setElement(this.dialog.closest(".ui-dialog")),this.render()},render:function(){return this.dialog&&this.$(".ui-dialog-content").html(this.getContentHtml()),this},enableButton:function(e,t){this.$(".ui-dialog-buttonset button."+e+"-button").attr("disabled",!t).toggleClass("ui-state-disabled",!t)},setVisibleButtons:function(e){var t=this.$(".ui-dialog-buttonset");jQuery("button",t).hide(),_(e).each(function(e){jQuery("button."+e+"-button",t).show()},this)},handleOkClick:function(){this.okClicked=!0;var e=this.options;e.canClose(this)&&(this.closeDialog(),e.onOkClicked(this))},handleCancelClick:function(){this.closeDialog(),this.options.onCancelClicked(this)},closeDialog:function(){this.dialog.dialog("close")},onCloseDialog:function(){var e=this.options;e.onClosing(this),this.dialog.dialog("destroy").remove(),e.onClosed(this),this.remove()}});return e}),define("view/shared/MultipageDialog",["view/shared/DialogBase"],function(e){var t=e.extend({defaults:{},initialize:function(){this.options=_.extend({},t.prototype.defaults,this.options),e.prototype.initialize.apply(this,arguments),this.visiblePage=null,this.pages={}},render:function(){return this.setPage(this.page),this},getContentHtml:function(){var e=this.getPagesHtml();return e=_(e).map(function(e,t){return'<div class="dialog-page page-'+t+'" style="display:none">'+e+"</div>"},this),e.join("")},createDialog:function(t,n){if(n&&n.length>1)for(var i=1;i<n.length;i++)n[i].style?n[i].style+=";":n[i].style="",n[i].style+="display:none";e.prototype.createDialog.apply(this,arguments)},getPagesHtml:function(){var e={};return _(this.pages).each(function(t,n){e[n]=t.html}),e},setPage:function(e){this.visiblePage!=e&&(this.page=e,this.refreshVisiblePage())},setPageHtml:function(e,t){this.pages[e].html=t,this.$(".dialog-page.page-"+e).html(t)},refreshVisiblePage:function(){this.$(".dialog-page").hide(),this.visiblePage=this.page;var e=this.pages[this.page];this.setTitle(e.title),this.setVisibleButtons(e.buttons),this.$(".dialog-page.page-"+this.page).show()},displayError:function(e,t){null==t&&(t=SportTracks.text.unspecifiedError),this.$(".ui-dialog-buttonset button").attr("disabled",!1).removeClass("ui-state-disabled"),this.pages.error.title=e,this.$(".page-error .status-message").html(t),this.setPage("error")}});return t}),define("view/shared/ConnectionsDialog",["view/shared/MultipageDialog"],function(e){var t=e.extend({defaults:{dialogTitle:SportTracks.text.MyConnections,classes:"my-connections connections full-pages",itemsPerPage:50,sendMessageTo:null,height:420},events:{"click .user-connection":"onSelectConnection","click .add-connection":"onAddClick","click .more-button":"onMoreClick","click .comment-button":"onCommentClick","change #my-connections-send-subject":"onSendSubjectChange","keyup #my-connections-send-subject":"onSendSubjectChange","change #my-connections-send-message":"onSendMessageChange","keyup #my-connections-send-message":"onSendMessageChange"},initialize:function(){var n=this;this.options=_.extend({},t.prototype.defaults,this.options),e.prototype.initialize.apply(this,arguments),this.backTo="main",this.pageNum=0,this.connections=[],this.connectionUid=0;this.itemTemplate=Handlebars.compile('<button type="button" data-href="{{itemUrl}}" data-uid="{{uid}}" class="user-connection list-group-item list-group-item-action highlight-on-hover d-flex px-2 py-1"><div class="user-picture small align-self-center" style="background-image:url({{picture}})"></div><div class="flex-grow-1 align-self-center font-weight-bold large mx-2">{{name}}</div><div class="actions align-self-center muted-except-hover"><div class="comment-button btn btn-light btn-flat"><div class="icon16 comment-icon"></div></div></div></button>');var i=this.options;this.pages={main:{title:i.dialogTitle,buttons:[],html:n.getMainPageHtml()},message:{title:SportTracks.text.SendMessage,buttons:["back","send"],html:""},working:{buttons:["send"],html:'<div class="busy-spinner-img" /><div class="status-message">'+SportTracks.text.Sending+"</div>"},done:{buttons:["close"],html:'<div class="status-icon icon-check" /><div class="status-message">'+SportTracks.text.MessageSent+"</div>"},error:{title:"",buttons:["back"],html:'<div class="status-icon icon-error" /><div class="status-message" />'},invite:{buttons:["send"],html:"<h3>"+SportTracks.text.LookingToConnect+"</h3><label>"+SportTracks.text.EnterEmail+'</label><textarea id="my-connections-invite-recipients"></textarea><p><a href="/users">'+SportTracks.text.FindConnections+"</a></p>"}},this.page="main",_.bindAll(this,"onSendButtonClick")},onSelectConnection:function(e){window.location=jQuery(e.currentTarget).data("href")},onAddClick:function(){this.closeDialog()},onMoreClick:function(){this.fetchingData||this._fetchConnections()},onCommentClick:function(e){e.preventDefault(),e.stopPropagation(),this.showMessagePage(parseInt(j
4Query(e.currentTarget).closest(".user-connection").data("uid")))},onSendSubjectChange:function(){this.refreshSendButton()},onSendMessageChange:function(){this.refreshSendButton()},onSendButtonClick:function(){switch(this.page){case"message":return this.onSendMessageClick();case"invite":return this.onSendInviteClick()}},onSendMessageClick:function(){var e=this;e.setPage("working"),e.$(".send-button").attr("disabled",!0).addClass("ui-state-disabled");var t=e.$("#my-connections-send-subject").val().trim(),n=e.$("#my-connections-send-message").val().trim(),i={recipient:e.connectionUid,subject:t,message:n};e._ajaxSend(e,"/api/ajax/messages",i)},onSendInviteClick:function(){var e=this;e.setPage("working"),e.$(".send-button").attr("disabled",!0).addClass("ui-state-disabled");var t=e.$("#my-connections-invite-recipients").val().trim(),n={recipients:t};SportTracks.me.isCoach&&(n.role="coaching"),e._ajaxSend(e,"/api/ajax/users/"+SportTracks.me.uid+"/invites",n)},_ajaxSend:function(e,t,n){jQuery.ajax({url:t,type:"POST",contentType:"application/json",dataType:"json",data:JSON.stringify(n),success:function(t){e.setPage("done")},error:function(t){0!=t.readyState&&e.displayError(SportTracks.text.ErrorSending,t.responseText)}})},showDialog:function(){e.prototype.showDialog.apply(this,arguments);var t=this;t.$(".ui-dialog-titlebar .ui-dialog-title").after('<a href="/users" class="add-connection btn mr-4"><div class="icon16 add-icon"></div></a>'),jQuery(".ui-widget-overlay").bind("click",function(){t.closeDialog()}),t._fetchConnections(),this.options.sendMessageTo&&(this.showMessagePage(this.options.sendMessageTo),this.$(".back-button").hide())},showMessagePage:function(e){this.connectionUid=e;var t=_(this.connections).findWhere({uid:this.connectionUid});this.setPageHtml("message",this.getMessagePageHtml(t)),this.render(),this.backTo="main",this.setPage("message"),this.refreshSen
4dButton(),this.$("#my-connections-send-subject").focus(),t||this._fetchSingleConnection(this.connectionUid)},getMainPageHtml:function(){var e="";return e+='<div class="connection-items list-group list-group-flush list-group-table"></div>',e+='<div class="item-spinner busy-spinner-center fetching-connections"><div class="busy-spinner-wrap"><div class="busy-spinner-img"></div></div></div>',e+='<div class="text-center p-2"><button class="more-button btn btn-light btn-flat" style="display:none"><div class="icon16 spinner-icon mr-2"></div><div class="icon16 down-icon mr-2"></div>'+SportTracks.text["More..."]+"</button></div>"},getMessagePageHtml:function(e){var t='<div class="h-100" {{#unless connection}} style="display:none"{{/unless}}><div class="d-flex flex-column h-100"><div class="d-flex"><div class="user-picture medium mr-3" style="background-image:url({{connection.picture}})"></div><h4 class="text-black font-weight-bold">{{connection.name}}</h4></div><label>'+SportTracks.text.Subject+'</label><input id="my-connections-send-subject" type="text" class="mb-1"></input><textarea id="my-connections-send-message" class="flex-grow-1"></textarea></div>{{#unless connection}}<div class="item-spinner busy-spinner-center fetching-connection"><div class="busy-spinner-wrap"><div class="busy-spinner-img"></div></div></div>{{/unless}}';return Handlebars.compile(t)({connection:e})},getButtons:function(){var e=this;return[{class:"back-button",text:SportTracks.text.Back,click:function(){e.setPage(e.backTo)}},{class:"send-button",text:SportTracks.text.Send,click:e.onSendButtonClick},{class:"close-button",text:SportTracks.text.Close,click:e.closeDialog}]},refreshSendButton:function(){var e=this.$("#my-connections-send-subject").val().trim(),t=this.$("#my-connections-send-message").val().trim(),n=0==t.length||0==e.length;this.$(".send-button").attr("disabled",n).toggleClass("ui-state-disabled",n)},_fetchConnections:function(){var e=this;e.fetchingData=!0,e.pageNum++,e.$(".more-button .spinner-icon").show(),e.$(".more-button .down-icon").hide();var t="/api/ajax/users/"+SportTracks.me.uid+"/connections";jQuery.ajax({url:t,contentType:"application/json",dataType:"json",data:{page:e.pageNum,count:e.options.itemsPerPage,noSummary:!0},success:function(t){_(t.items).each(function(t){e.connections.push(t)});var n=Math.ceil(t.total/e.options.itemsPerPage),i=_(t.items).map(e._itemHtml,e).join("");e.$(".connection-items").append(i),e.$(".more-button").toggle(e.pageNum<n),0==e.connections.length&&e.setPage("invite")},error:function(t){e.$(".more-button").hide(),0!=t.readyState&&alert("Error fetching connections. "+t.responseText)},complete:function(t){e.$(".item-spinner.fetching-connections").hide(),e.$(".more-button .spinner-icon").hide(),e.$(".more-button .down-icon").show(),e.fetchingData=!1}})},_fetchSingleConnection:function(e){var t=this,n="/api/ajax/users/"+SportTracks.me.uid+"/connections";jQuery.ajax({url:n,contentType:"application/json",dataType:"json",data:{memberUid:e,noSummary:!0},success:function(e){var n=_(e.items).findWhere({uid:t.connectionUid});n?(t.setPageHtml("message",t.getMessagePageHtml(n)),t.$("#my-connections-send-subject").focus()):t.setPage("main")},error:function(e){0!=e.readyState&&alert("Error fetching connection. "+e.responseText)},complete:function(e){t.$(".item-spinner.fetching-connection").hide()}})},_itemHtml:function(e){if(e.itemUrl=e.profileUrl,e.views)for(var t=["calendar","analysis","workouts","health","goals","personal-records","profile"],n=0;n<t.length;n++)if(e.views[t[n]]){e.itemUrl=e.views[t[n]];break}return this.itemTemplate(e)}});return t}),define("util/Date",[],function(){function e(e,t){for(e+="";e.length<t;)e="0"+e;return e}function t(t,n,i,o){var s=o?t.getUTCFullYear():t.getFullYear(),a=o?t.getUTCMonth():t.getMonth(),c=o?t.getUTCDate():t.getDate(),r=o?t.getUTCDay():t.getDay(),l=o?t.getUTCHours():t.getHours(),d=o?t.getUTCMinutes():t.getMinutes(),u=o?t.getUTCSeconds():t.getSeconds(),p=l,h=0;0==p?p=12:p>=12&&(p>12&&(p-=12),h=1);var g=n;return-1!=g.indexOf("a")&&(g=g.replace("a","%a%")),-1!=g.indexOf("MMMMM")?g=g.replace("MMMMM","%M5%"):-1!=g.indexOf("MMMM")?g=g.replace("MMMM","%M4%"):-1!=g.indexOf("MMM")?g=g.replace("MMM","%M3%"):-1!=g.indexOf("MM")?g=g.replace("MM","%M2%"):-1!=g.indexOf("M")&&(g=g.replace("M","%M1%")),-1!=g.indexOf("EEEEE")?g=g.replace("EEEEE","%E5%"):-1!=g.indexOf("EEEE")?g=g.replace("EEEE","%E4%"):-1!=g.indexOf("EEE")?g=g.replace("EEE","%E3%"):-1!=g.indexOf("EE")?g=g.replace("EE","%E2%"):-1!=g.indexOf("E")&&(g=g.replace("E","%E1%")),-1!=g.indexOf("%a%")&&(g=g.replace("%a%",i.ampm[h])),-1!=g.indexOf("HH")?g=g.replace("HH",e(l,2)):-1!=g.
4indexOf("H")&&(g=g.replace("H",l)),-1!=g.indexOf("hh")?g=g.replace("hh",e(p,2)):-1!=g.indexOf("h")&&(g=g.replace("h",p)),-1!=g.indexOf("mm")?g=g.replace("mm",e(d,2)):-1!=g.indexOf("m")&&(g=g.replace("m",d)),-1!=g.indexOf("ss")?g=g.replace("ss",e(u,2)):-1!=g.indexOf("s")&&(g=g.replace("s",u)),-1!=g.indexOf("yyyy")?g=g.replace("yyyy",s):-1!=g.indexOf("yy")?g=g.replace("yy",e(s%100,2)):-1!=g.indexOf("y")&&(g=g.replace("y",s)),-1!=g.indexOf("%M5%")?g=g.replace("%M5%",i.months[a].abbr.charAt(0)):-1!=g.indexOf("%M4%")?g=g.replace("%M4%",i.months[a].full):-1!=g.indexOf("%M3%")?g=g.replace("%M3%",i.months[a].abbr):-1!=g.indexOf("%M2%")?g=g.replace("%M2%",e(a+1,2)):-1!=g.indexOf("%M1%")&&(g=g.replace("%M1%",a+1)),-1!=g.indexOf("dd")?g=g.replace("dd",e(c,2)):-1!=g.indexOf("d")&&(g=g.replace("d",c)),-1!=g.indexOf("%E5%")?g=g.replace("%E5%",i.days[r].abbr.charAt(0)):-1!=g.indexOf("%E4%")?g=g.replace("%E4%",i.days[r].full):-1!=g.indexOf("%E3%")?g=g.replace("%E3%",i.days[r].abbr):-1!=g.indexOf("%E2%")?g=g.replace("%E2%",i.days[r].abbr):-1!=g.indexOf("%E1%")&&(g=g.replace("%E1%",i.days[r].abbr)),g}function n(e){e=e.split("T")[0];var t=_.map(e.split("-"),function(e){return parseInt(e,10)});return new Date(t[0],t[1]-1,t[2])}function i(e){e=e.split("T");var t=e[0],n="00:00:00";e.length>1&&(n=e[1]);var i=_.map(t.split("-"),function(e){return parseInt(e,10)}),o=_.map(n.split(":"),function(e){return parseInt(e,10)});return new Date(i[0],i[1]-1,i[2],o[0],o[1],o[2])}function o(e,n){return t(e,"yyyy-MM-dd",null,n)}function s(e,n){return t(e,"yyyy-MM-ddTHH:mm:ss",null,n)}function a(e,t){switch(t[1]){case"year":e.setMonth(e.getMonth()+12*t[0]);break;case"quarter":e.setMonth(e.getMonth()+3*t[0]);break;case"month":e.setMonth(e.getMonth()+t[0]);break;case"week":e.setDate(e.getDate()+7*t[0]);break;case"day":e.setDate(e.getDate()+t[0])}return e}function c(e,t){return e<t?c(t,e):(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())-Date.UTC(t.getFullYear(),t.getMonth(),t.getDate()))/864e5}return{toText:t,parseUTCDate:n,parseUTCDatetime:i,toXmlDate:o,toXmlDatetime:s,addDatePeriod:a,daysBetweenDates:c}}),define("view/shared/NotificationsDialog",["util/Date","view/shared/DialogBase"],function(e,t){var n=t.extend({defaults:{dialogTitle:SportTracks.text.Notifications,classes:"notifications",height:"auto",itemsPerPage:6},events:{"click .more-button":"onMoreClick"},initialize:function(){this.options=_.extend({},n.prototype.defaults,this.options),t.prototype.initialize.apply(this,arguments),this.pageNum=0},onMoreClick:function(){this.fetchingData||this._fetchNotifications()},showDialog:function(){t.prototype.showDialog.apply(this,arguments);var e=this;jQuery(".ui-widget-overlay").bind("click",function(){e.closeDialog()}),e._fetchNotifications()},getContentHtml:function(){var e="";return e+='<div class="items"></div>',e+='<div class="item-spinner busy-spinner-center"><div class="busy-spinner-wrap"><div class="busy-spinner-img"></div></div></div>',e+='<div class="btn-toolbar d-flex justify-content-center p-2"><button type="button" class="more-button btn btn-light" style="display:none"><div class="icon16 down-icon mr-2"></div><div class="icon16 spinner-icon mr-2" style="display:none"></div>'+SportTracks.text["More..."]+"</button></div>"},getButtons:function(){return[]},_fetchNotifications:function(){var e=this;e.fetchingData=!0,e.pageNum++;var t=e.$(".more-button");jQuery(".down-icon",t).hide(),jQuery(".spinner-icon",t).show();var n="/api/ajax/users/"+SportTracks.me.uid+"/notifications";jQuery.ajax({url:n,contentType:"application/json",dataType:"json",data:{page:e.pageNum,count:e.options.itemsPerPage},success:function(n){var i=_(n).map(e._itemHtml).join("");e.$(".items").append(i),t.toggle(n.length>=e.options.itemsPerPage)},error:function(e){t.hide(),0!=e.readyState&&alert("Error fetching notifications. "+e.responseText)},complete:function(n){e.$(".item-spinner").hide(),jQuery(".spinner-icon",t).hide(),jQuery(".down-icon",t).show(),e.fetchingData=!1}})},_itemHtml:function(t){var n=["notification"];n.push(t.read?"read":"not-read");var i=e.parseUTCDatetime(t.created),o=e.toText(i,SportTracks.text.datetime.pattern.full,SportTracks.text.datetime);o+=". "+e.toText(i,SportTracks.me.timePattern,SportTracks.text.datetime);var s='<div class="text">'+t.html+"</div>";return s+='<div class="date">'+o+"</div>",'<div class="'+n.join(" ")+'">'+s+"</div>"}});return n}),function(e){e(document).ready(function(){requirejs.config({baseUrl:"/sites/all/modules/sporttracks_base/js/sr
4c",urlArgs:SportTracks.js_query}),requirejs(["view/shared/ConnectionsDialog","view/shared/NotificationsDialog"],function(t,n){e("body").tooltip({selector:'[data-toggle="tooltip"], [title]:not([data-toggle="popover"])',trigger:"hover",container:"body"}).on("click mousedown mouseup",'[data-toggle="tooltip"], [title]:not([data-toggle="popover"])',function(){e('[data-toggle="tooltip"], [title]:not([data-toggle="popover"])').tooltip("dispose")}),e("#main-menu-more-button .btn").popover({trigger:"click",placement:"bottom",content:function(){return Handlebars.compile(jQuery("#more-menu-popover-template").html())(SportTracks)},html:!0,sanitize:!1,template:'<div class="more-menu-popover popover bg-white rounded-0 shadow-sm" role="tooltip"><div class="arrow"></div><div class="popover-body p-0"></div></div>'}),e("#main-menu-user-menu-button").popover({trigger:"click",placement:"bottom",content:function(){return Handlebars.compile(jQuery("#user-menu-popup-template").html())(SportTracks)},html:!0,sanitize:!1,template:'<div class="user-menu-popover popover bg-white rounded-0 shadow-sm" role="tooltip"><div class="arrow"></div><div class="popover-body p-0"></div></div>'}),e(document).on("click",function(){e("#main-menu-more-button .btn").popover("hide"),e("#main-menu-user-menu-button").popover("hide")}),e("#main-menu-more-button .btn").click(function(){return e("#main-menu-user-menu-button").popover("hide"),!1}),e("#main-menu-user-menu-button").click(function(){return e("#main-menu-more-button .btn").popover("hide"),!1}),e(document).on("click",".user-menu-popover .notifications-button",function(){new n({onClosed:function(){e("#main-menu-user-menu-button").removeClass("new-notifications"),SportTracks.me.notificationCount=0}}).showDialog()}),e(document).on("click","#main-menu-my-connections",function(){new t({dialogTitle:SportTracks.me.isCoach?SportTracks.text.MyAthletes:SportTracks.text.MyConnections}).showDialog()})})})}(jQuery),define("app",function(){});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.