Inwoods

[IE] League of Legends match history console dump

Oct 9th, 2014
319
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. JSoop.define("Codex.util.Config",{singleton:true,get:function(a){return(AppParameters[a]||"")}});JSoop.define("Codex.util.SpineBridge",{});(function(){if(Array.prototype.indexOf){_.indexOf=function(a,b){return a?a.indexOf(b):-1}}Spine.data.Model.prototype.toJSON=function(){return JSoop.clone(this.attributes)};Spine.view.container.CollectionContainer.prototype._initialEvents=function(){var a=this;if(a.collection){a.listenTo(a.collection,"sort",function(){a.render()},a)}Marionette.CompositeView.prototype._initialEvents.apply(a,arguments)};Marionette.CollectionView.prototype.addChildView=function(g,c){var f=this,b=[],a=[],e=[],d;if(c.length===0){return}f.closeEmptyView();JSoop.each(c,function(i){var h=f.collection.indexOf(i);b.push({index:h,item:i})});b.sort(function(i,h){return i.index-h.index});e.push(b.shift());d=e[0].index+1;JSoop.each(b,function(h){if(h.index!==d){a.push(e);e=[h];d=h.index+1}else{e.push(h);d=d+1}});a.push(e);JSoop.each(a,function(h){f.startBuffering();JSoop.each(h,function(k){var i=k.index,j;k=k.item;j=f.getItemView(k);f.addItemView(k,j,i)});f.endBuffering(h[0].index)})};Marionette.CollectionView.prototype.endBuffering=function(a){this.isBuffering=false;if(a!==undefined){this.insertBuffer(this,this.elBuffer,a)}else{this.appendBuffer(this,this.elBuffer)}this._triggerShowBufferedChildren();this.initRenderBuffer()};Marionette.CollectionView.prototype.insertBuffer=function(b,a,c){var e=this.getItemViewContainer(b),d=e.children();if(d.size()<=c){e.append(a)}else{d.eq(c).before(a)}};Marionette.CollectionView.prototype.getItemViewContainer=function(){return this.$el};Marionette.CollectionView.prototype.removeItemView=function(c,b){var a=this;JSoop.each(b,function(e){var d=a.children.findByModel(e);a.removeChildView(d)});a.checkEmpty()};Marionette.CollectionView.prototype._renderChildren=function(){this.startBuffering();this.closeEmptyView();this.closeChildren();if(this.collection&&this.collection.getCount()>0){this.showCollection()}else{if(!this.supressEmptyView){this.showEmptyView()}}this.endBuffering()};Backbone.History.prototype._trackPageview=function(a){if(typeof analytics==="undefined"){return false}var d=(analytics._cid)?analytics._cid:null,c=Riot.getCookie("PVPNET_REGION").toUpperCase(),b=Riot.getCookie("PVPNET_ID_"+c);analytics.pageview({page:a.split("?")[0],pageData:Codex.util.QueryString.getObjectFromQuery(a),region:c,account:b,callchain:d})};Backbone.History.prototype.loadUrl=function(a){var b=this;a=b.fragment=b.getFragment(a);if(a){b._trackPageview(location.pathname+location.search+a)}else{b._trackPageview(location.pathname+location.search)}return _.any(this.handlers,function(c){if(c.route.test(a)){c.callback(a);return true}})}}());JSoop.define("Codex.util.DataDragon",{mixins:{observable:"JSoop.mixins.Observable"},singleton:true,versionCache:{},callbackQueue:{},constructor:function(){var a=this;Riot.DDragon.addApp(["mastery"],function(){Riot.DDragon.fn.fire.plan("model",{},JSoop.bind(a.onModelLoad,a))});a.initMixin("observable")},isLoaded:function(b,a){var d=this,c;a=d.getVersion(a);c=Riot.DDragon.models[b+"_"+a];return !!c&&!!c.keysLoaded},getModel:function(c){var d=this,b,a;c.version=Codex.util.DataDragon.getVersion(c.version);a=c.model+"_"+c.version;b=Riot.DDragon.models[a];if(b&&b.data){c.callback.call(c.scope,b);return}if(!d.callbackQueue[a]){d.callbackQueue[a]=[]}d.callbackQueue[a].push(c);d.createDisplay(c.model,c.version);Riot.DDragon.useModel(c.model,c.version)},getTooltipImg:function(a){var d=this,c=a.callback,b=a.scope;delete a.callback;delete a.scope;a.callback=function(e){a.callback=c;a.scope=b;a.content=e;d.getTooltip(a)};d.getImg(a)},getTooltipImgMarkup:function(b){var c=this,a=JSoop.clone(b);if(!c.isLoaded(b.model,b.version)){return""}a.content=c.getImgMarkup(b);return c.getTooltipMarkup(a)},getTooltipMarkup:function(c){var e=this,a=e.getVersion(c.version),d=c.id,b;if(!e.isLoaded(c.model,c.version)){return""}b=Riot.DDragon.models[c.model+"_"+a];if(c.model!=="rune"&&c.model!=="item"){d=e.getKeyFromId(b,d)}return["<div ",'data-rg-name="'+c.model+"_"+a+'" ','data-rg-id="'+d+'">',c.content,"</div>"].join("")},getImgMarkup:function(d){var f=this,a=f.getVersion(d.version),e=d.id,c,b;if(!f.isLoaded(d.model,a)){return""}c=d.options?JSoop.clone(d.options):{};b=Riot.DDragon.models[d.model+"_"+a];if(d.model!=="rune"&&d.model!=="item"){e=f.getKeyFromId(b,e)}if(d.model!=="mastery"){JSoop.applyIf(c,{src:"full"})}return b.getImg(e,c)},getTooltip:function(a){var d=this,c=a.callback,b=a.scope;delete a.callback;delete a.scope;a.callback=function(e){var f=a.id;if(a.model!=="rune"&&a.model!=="item"){f=d.getKeyFromId(e,f)}c.call(b,["<div ",'data-rg-name="'+a.model+"_"+e.version+'" ','data-rg-id="'+f+'">',a.content,"</div>"].join(""))};d.getModel(a)},getImg:function(a){var d=this,c=a.callback,b=a.scope;delete a.callback;delete a.scope;a.callback=function(f){var g=a.id,e=a.options?JSoop.clone(a.options):{};if(a.model!=="rune"&&a.model!=="item"){g=d.getKeyFromId(f,g)}if(a.model!=="mastery"){JSoop.applyIf(e,{src:"full"})}c.call(b,f.getImg(g,e))};d.getModel(a)},getData:function(a){var d=this,c=a.callback,b=a.scope;a.callback=function(e){var f=a.id;if(a.model!=="rune"&&a.model!=="item"){f=d.getKeyFromId(e,f)}c.call(b,e.data[f])};d.getModel(a)},getKeyFromId:function(a,c){var b=false;JSoop.iterate(a.data,function(e,d){if((e.id+"")===(c+"")||e.key===(c+"")){b=d;return false}});return b},createDisplay:function(b,a){if(b!=="mastery"){Riot.DDragon.addDisplay({type:b+"_"+a+"_tooltip",success:Riot.DDragon.display[b+"_tooltip"].success})}},getVersion:(function(){function a(f,e,d){var c=-1;if(f===null){return e.latest}if(d===undefined){d=999}f=parseInt(f,10);JSoop.each(e.versions,function(g){if(g>c&&g<=f&&(g<d)){c=g}});return c}function b(c){var d=Codex.util.DataDragon.versionCache;if(c.major===-1){c.season=a(c.season,d,c.season);c.major=a(null,d[c.season]);c.minor=a(null,d[c.season][c.major])}if(c.minor===-1){c.minor=a(null,d[c.season][c.major])}}return function(d){var f=Codex.util.DataDragon.versionCache,i=d?d.split("."):[null,null,null],h=a(i[0],f),e=a(i[1],f[h]),g=a(i[2],f[h][e]),c={season:h,major:e,minor:g};b(c);return c.season+"."+c.major+"."+c.minor}}()),onModelLoad:function(e,c){var d=this,a=c.name,b=Riot.DDragon.models[a];if(d.callbackQueue[a]){JSoop.each(d.callbackQueue[a],function(f){f.callback.call(f.scope,b)});d.callbackQueue[a]=[]}d.fireEvent("load",c.name,Riot.DDragon.models[c.name])}},function(c){var a={versions:[]};function b(d,e){d=parseInt(d,10);if(e.versions.indexOf(d)===-1){e.versions.push(d)}if(!e[d]){e[d]={versions:[]}}e.versions.sort(function(g,f){return f-g});e.latest=e.versions[0]}JSoop.each(Riot.DDragon.versions,function(d){var e=d.split(".");if(d.indexOf("lolpatch")!==-1){return}b(e[0],a);b(e[1],a[e[0]]);b(e[2],a[e[0]][e[1]])});c.versionCache=a});JSoop.define("Codex.util.Analytics",{singleton:true,fire:function(a,c){if(analytics==="undefined"){return false}var d=Riot.getCookie("PVPNET_REGION").toUpperCase(),b=Riot.getCookie("PVPNET_ID_"+d);if(JSoop.isObject(c)){c.region=d;c.account=b}analytics.track(a,c)}});JSoop.define("Codex.util.Assets",{singleton:true,colorBlindCookie:"MATCH_HISTORY_COLOR_BLIND_ENABLED",colorBlindEnabled:function(){var a=this;return Riot.getCookie(a.colorBlindCookie)==="true"||false},enableColorBlind:function(){var a=this;Riot.setCookie(a.colorBlindCookie,true);location.reload()},disableColorBlind:function(){var a=this;Riot.setCookie(a.colorBlindCookie,false);location.reload()},loadStyleSheet:function(){var a=this;if(a.colorBlindEnabled()){jQuery('link[href="'+CODEX_ASSET_PATH+'/css/styles.normal.css"]').attr("href",CODEX_ASSET_PATH+"/css/styles.colorblind.css")}},coloredAssetPrefix:function(){var a=this;if(a.colorBlindEnabled()){return"color_blind"}else{return"normal"}},eventIcon:function(a){var b=this;return CODEX_ASSET_PATH+"/images/"+b.coloredAssetPrefix()+"/event_icons/"+a+".png"}});JSoop.define("Codex.util.Formatters",{singleton:true,passThrough:function(a){return a},numberToK:function(c,b){var a=Codex.util.I18n.trans("thousand_format");if(b===undefined){b=1}c=c/1000;return a.replace("{{ number }}",c.toFixed(b))},numberFormat:function(a){return(a>0)?a:"-"},booleanFormat:function(a){return a?"●":"○"},relicFormat:function(a){return a/3},timeFormatMs:function(a){var b=d3.time.format((a<3600000)?"%-M:%S":"%-H:%M:%S");return b(new Date(2014,0,1,0,0,0,a))}});JSoop.define("Codex.model.User",{extend:"Spine.data.Model",name:"User",fields:[{name:"type"},{name:"region"},{name:"id",mapping:"accountId",type:"int"}],whereParticipant:function(b){var c=this,a;if(c.get("type")==="vapor"){a=b.find({currentAccount:c.get("id")})}else{if(c.get("type")==="original"){a=b.find({account:c.get("id")})}}return a},findParticipant:function(b){var c=this,a;if(c.get("type")==="vapor"){a=b.findFirst({currentAccount:c.get("id")})}else{if(c.get("type")==="original"){a=b.findFirst({account:c.get("id")})}}return a},isParticipant:function(a){var b=this;if(b.get("type")==="vapor"){if(a.get("currentAccount")===b.get("id")){return true}}else{if(b.get("type")==="original"){if(a.get("account")===b.get("id")){return true}}}return false}});JSoop.define("Codex.model.Frame",{extend:"Spine.data.Model",name:"Frame",fields:[{name:"id",convert:function(){return _.uniqueId("frame")}},{name:"timestamp",type:"int"},{name:"currentGold",type:"int"},{name:"jungleMinionsKilled",type:"int"},{name:"level",type:"int"},{name:"minionsKilled",type:"int"},{name:"participantId",type:"int"},{name:"position"},{name:"totalGold",type:"int"},{name:"xp",type:"int"},{name:"teamScore",type:"int"},{name:"dominionScore",type:"int"}]});JSoop.define("Codex.model.Rune",{extend:"Spine.data.Model",name:"Rune",fields:[{name:"id",convert:function(){return _.uniqueId("rune")}},{name:"participantId",type:"int"},{name:"count",mapping:"rank"},{name:"runeId",mapping:"runeId"}]});JSoop.define("Codex.view.Tooltip",{extend:"Marionette.ItemView",cls:"codex-tooltip",showAt:function(c,a,f){var b=this,e=(f&&f.left||0),d=(f&&f.top||0),g=jQuery(a).offset();b.offsetTop=parseFloat(jQuery("body").css("margin-top").replace("px"),10)+20;b.show(c,(g.left+e),(g.top+d))},show:function(c,a,d){var b=this;if(c instanceof Backbone.View){b.currentView=c;c.render(b.$el)}else{b.$el.html(c)}b.$el.css("display","block");b.$el.css("top",(d-(b.$el.height()+b.offsetTop))+"px").css("left",(a-(b.$el.width()/2))+"px")},hide:function(){var a=this;if(a.currentView){a.currentView.remove();a.currentView=null}else{a.$el.html("")}a.$el.css("display","none")}},function(){var a=JSoop.create("Codex.view.Tooltip",{renderTo:"body"});Codex.showTip=function(c,b,d){a.showAt(c,b,d)};Codex.hideTip=function(){a.hide()}});JSoop.define("Codex.view.game.Tabs",{extend:"Spine.view.container.Container",template:{name:"Codex.view.game.TabsHeader.template",path:"tab-header.twig"},vtype:"match-tabs",baseId:"game-tabs",baseCls:"game-tabs tabs",defaults:{tagName:"section",tag:"section"},tabs:["overview","builds","stats"],serializeData:function(){var b=this,a=[{"class":"overview",text:Codex.util.I18n.trans("tab_overview")},{"class":"builds",text:Codex.util.I18n.trans("tab_builds")},{"class":"stats",text:Codex.util.I18n.trans("tab_stats")}];if(!b.model.hasBuilds()){a.splice(1,1)}return{tabs:a}},afterRender:function(){var a=this,b=a.tabs.indexOf(a.tab);a.callParent(arguments);a.matchTabs=Riot.create("RiotKit.widget.Tabs",{el:Riot.get(a.el),autoRender:true});b=b>-1?b:0;a.$el.find(".riot-tabs-header-container header").eq(b).click();JSoop.each(a.tabs,function(c){a.$el.find(".match-tab-"+c).on("click",function(){a.trigger("tab-select",c)})})},destroy:function(){var a=this;a.matchTabs.destroy();a.callParent(arguments)}});JSoop.define("Codex.view.player.Search",{extend:"Marionette.ItemView",template:{name:"Codex.view.player.Search.template",path:"player/search.twig"},vtype:"player-search",baseCls:"player-search",baseId:"player-search",ui:{nameEl:"input",buttonEl:"btn-mini"},events:{keyup:"onSearch","click .btn-mini":"onSearch"},onSearch:function(c){if(c.type==="keyup"&&c.which!==13){return}var b=this,a=b.ui.nameEl.val();if(a.trim()){b.trigger("search",a)}c.preventDefault()}});JSoop.define("Codex.view.Breadcrumbs",{mixins:{observable:"JSoop.mixins.Observable"},singleton:true,crumbs:[],constructor:function(){var a=this;a.container=jQuery(".breadcrumb");a.initMixin("observable")},addCrumb:function(h,g){var d=this,f=g.split("/"),e=f.shift(),a,b,c;if(d.hasPage(e)){a=d.getPageIndex(e);for(b=a,c=d.crumbs.length;b<c;b=b+1){d.crumbs[b].el.remove()}d.crumbs=d.crumbs.slice(0,a)}d.crumbs.push(d.renderCrumb({text:h,path:g,page:e},d.crumbs.length))},renderCrumb:function(a){var b=this;a.el=jQuery('<li><a href="#'+a.path+'">'+a.text+"</a></li>").appendTo(b.container);return a},setCrumbs:function(a){var b=this;JSoop.each(b.crumbs,function(c){c.el.remove()});b.crumbs=[];JSoop.each(a,function(c){b.addCrumb(c.text,c.path)})},hasPage:function(a){return this.getPageIndex(a)!==-1},getPageIndex:function(d){var c=this,a=0,b=c.crumbs.length;for(;a<b;a=a+1){if(c.crumbs[a].page===d){return a}}return -1}},function(a){Codex.getBreadcrumbs=function(){return a}});JSoop.define("Codex.controller.Controller",{extend:"Spine.app.Controller",requires:["Codex.view.Breadcrumbs"],initController:function(){Codex.util.Assets.loadStyleSheet()},addCrumb:function(b,a){Codex.getBreadcrumbs().addCrumb(b,a)},setCrumbs:function(a){Codex.getBreadcrumbs().setCrumbs(a)},setContextUser:function(e,c){var b=Codex.getCurrentUser(),d=Codex.getContextUser(),a;if(!e){d.set({type:"vapor",id:b.get("id"),region:b.get("region")});return}if(!c){c="vapor";if(e!==b.get("id")){c="original"}}d.set("id",e);d.set("type",c);a=d.findParticipant(Spine.getCollection("Participants"));if(a&&a.get("region")){d.set("region",a.get("region"))}}});JSoop.define("Codex.controller.Login",{extend:"Codex.controller.Controller",routes:{"login?redirect=:fragment":"loginRedirect"},loginRedirect:function(b){var c=this,e=decodeURIComponent(b),a=Riot.Sandworm.getSummonerName(),d=Spine.getCollection("Games");if(a===false){switch(Riot.getCookie("PVPNET_REGION").toUpperCase()){case"KR":Riot.KrPvpnetBar.showLoginLayer();break;default:Riot.Sandworm.pvpnetMenus.show("login");break}}d.reinitialize();c.navigate(e)}});JSoop.define("Codex.view.page.Faq",{extend:"Marionette.ItemView",template:{name:"Codex.view.page.Faq.template",path:"page/faq.twig"},serializeData:function(){return{faqs:[{question:Codex.util.I18n.trans("faq_question_1"),answer:Codex.util.I18n.trans("faq_answer_1")},{question:Codex.util.I18n.trans("faq_question_2"),answer:Codex.util.I18n.trans("faq_answer_2")},{question:Codex.util.I18n.trans("faq_question_3"),answer:Codex.util.I18n.trans("faq_answer_3")},{question:Codex.util.I18n.trans("faq_question_4"),answer:Codex.util.I18n.trans("faq_answer_4")},{question:Codex.util.I18n.trans("faq_question_5"),answer:Codex.util.I18n.trans("faq_answer_5")},{question:Codex.util.I18n.trans("faq_question_6"),answer:Codex.util.I18n.trans("faq_answer_6")},{question:Codex.util.I18n.trans("faq_question_7"),answer:Codex.util.I18n.trans("faq_answer_7")},{question:Codex.util.I18n.trans("faq_question_8"),answer:Codex.util.I18n.trans("faq_answer_8")},{question:Codex.util.I18n.trans("faq_question_9"),answer:Codex.util.I18n.trans("faq_answer_9")},{question:Codex.util.I18n.trans("faq_question_10"),answer:Codex.util.I18n.trans("faq_answer_10")}]}},onRender:function(){var a=this;jQuery("section.question header",a.$el).on("click",function(){jQuery(this).next(".answer").eq(0).toggle()})}});JSoop.define("Codex.controller.Player",{extend:"Codex.controller.Controller",requires:["Codex.view.player.Search"],routes:{"player-search/currentAccount/:region/:account":"searchAccount"},initController:function(){var a=this;a.control({"player-search":{search:JSoop.bind(a.searchName,a)}});JSoop.create("Codex.view.player.Search",{renderTo:"#search"})},searchName:function(a){var b=this;Codex.util.Analytics.fire("search",{label:a});b.getPlayer(a)},searchAccount:function(c,b){var a=this;a.getPlayer(null,c,b)},getPlayer:function(b,e,d){var c=this,a=(b)?Codex.util.ACS.getPlayer(b):Codex.util.ACS.getPlayerByAccount(d,e),f=Spine.getCollection("Games");jQuery.ajax({url:a,headers:Codex.util.ACS.getHeaders(),dataType:"json",success:function(h){var g="match-history/"+h.platformId+"/"+h.accountId;if(g!==Backbone.history.fragment){f.reinitialize();c.navigate(g)}},error:function(g){if(g.status===404){c.app.controllers.Error.playerNotFound({missing_player_name:b,missing_player_region:e,missing_player_account:d})}else{c.app.controllers.Error.handle(g.status)}}})}});JSoop.define("Codex.view.page.Landing",{extend:"Marionette.ItemView",requires:["Codex.view.player.Search","Codex.controller.Player"],template:{name:"Codex.view.page.Landing.template",path:"page/landing.twig"},serializeData:function(){return{loginStatus:Codex.getCurrentUser().isLoggedIn()}},onRender:function(){var a=this;JSoop.create("Codex.view.player.Search",{renderTo:a.$el.find(".player-search")})}});JSoop.define("Codex.controller.Page",{extend:"Codex.controller.Controller",requires:["Codex.view.page.Landing","Codex.view.page.Faq"],routes:{"page/landing-page":"landingPage","page/faq":"faqPage"},landingPage:function(){var b=this,a=JSoop.create("Codex.view.page.Landing");b.app.getRegion("main").show(a);Codex.util.Analytics.fire("view_landing_page")},faqPage:function(){var b=this,a=JSoop.create("Codex.view.page.Faq");b.app.getRegion("main").show(a)}});JSoop.define("Codex.view.error.Unauthorized",{extend:"Marionette.ItemView",template:{name:"Codex.view.error.Unauthorized.template",path:"error/unauthorized.twig"}});JSoop.define("Codex.view.error.PlayerNotFound",{extend:"Marionette.ItemView",template:{name:"Codex.view.error.PlayerNotFound.template",path:"error/player-not-found.twig"}});JSoop.define("Codex.view.error.GameNotFound",{extend:"Marionette.ItemView",template:{name:"Codex.view.error.GameNotFound.template",path:"error/game-not-found.twig"}});JSoop.define("Codex.view.error.GameProcessing",{extend:"Marionette.ItemView",template:{name:"Codex.view.error.GameProcessing.template",path:"error/game-processing.twig"},afterRender:function(){var a=this;a.callParent(arguments);JSoop.create("Codex.view.Loading",{renderTo:a.$el})}});JSoop.define("Codex.view.error.Default",{extend:"Marionette.ItemView",template:{name:"Codex.view.error.Default.template",path:"error/default.twig"}});JSoop.define("Codex.controller.Error",{extend:"Codex.controller.Controller",requires:["Codex.view.error.Default","Codex.view.error.GameProcessing","Codex.view.error.GameNotFound","Codex.view.error.PlayerNotFound","Codex.view.error.Unauthorized"],routes:{error:"misc","error/game-not-found":"gameNotFound","error/player-not-found":"playerNotFound","error/unauthorized":"unauthorized"},handle:function(a){var b=this;if(a===undefined){a=500}switch(a){case 401:b.unauthorized();break;default:b.misc()}},misc:function(){var b=this,a=JSoop.create("Codex.view.error.Default");b.app.getRegion("main").show(a);Codex.util.Analytics.fire("error_500")},gameProcessing:function(){var b=this,a=JSoop.create("Codex.view.error.GameProcessing");b.app.getRegion("main").show(a)},gameNotFound:function(c){var b=this,a=JSoop.create("Codex.view.error.GameNotFound");b.app.getRegion("main").show(a);Codex.util.Analytics.fire("error_404_game_not_found",c)},playerNotFound:function(c){var b=this,a=JSoop.create("Codex.view.error.PlayerNotFound");b.app.getRegion("main").show(a);Codex.util.Analytics.fire("error_404_player_not_found",c)},unauthorized:function(){var b=this,a=JSoop.create("Codex.view.error.Unauthorized");b.app.getRegion("main").show(a)}});JSoop.define("Codex.view.player.Header",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.header.PlayerHeader.template",path:"game/header/player-header.twig"},baseCls:"player-header",formatter:{fields:[{name:"summonerName"},{name:"currentRegion"}]}});JSoop.define("Codex.view.Loading",{extend:"Marionette.ItemView",cls:"loader",template:{name:"Codex.view.Loading.template",path:"loading.twig"}});JSoop.define("Codex.formatter.field.Map",{extend:"Spine.view.formatter.Field",name:"map",statics:{maps:{1:Codex.util.I18n.trans("map_summoners_rift"),8:Codex.util.I18n.trans("map_crystal_scar"),10:Codex.util.I18n.trans("map_twisted_treeline"),11:Codex.util.I18n.trans("map_summoners_rift"),12:Codex.util.I18n.trans("map_howling_abyss")},objectives:{1:[{name:"towerKills"},{name:"dragonKills"},{name:"baronKills"}],8:[{name:"dominionVictoryScore"}],10:[{name:"towerKills"},{name:"vilemawKills"}],11:[{name:"towerKills"},{name:"dragonKills"},{name:"baronKills"}],12:[{name:"towerKills"}]},hasWards:{1:true,8:false,10:false,11:true,12:false}},formatter:function(f,e,a){var c=a.getModel(),b=(c.isGame)?c:c.getGame(),d=b.get("map");return Codex.formatter.field.Map.maps[d]}});JSoop.define("Codex.formatter.field.Queue",{extend:"Spine.view.formatter.Field",name:"queue",statics:{queues:{0:Codex.util.I18n.trans("queue_custom"),7:Codex.util.I18n.trans("queue_coop_vs_ai"),2:Codex.util.I18n.trans("queue_normal_blind_pick"),14:Codex.util.I18n.trans("queue_normal_draft_mode"),4:Codex.util.I18n.trans("queue_ranked_draft_mode"),42:Codex.util.I18n.trans("queue_ranked_team"),61:Codex.util.I18n.trans("queue_normal_team_builder"),31:Codex.util.I18n.trans("queue_coop_vs_ai"),32:Codex.util.I18n.trans("queue_coop_vs_ai"),33:Codex.util.I18n.trans("queue_coop_vs_ai"),52:Codex.util.I18n.trans("queue_coop_vs_ai"),8:Codex.util.I18n.trans("queue_normal_blind_pick"),41:Codex.util.I18n.trans("queue_ranked_team"),25:Codex.util.I18n.trans("queue_coop_vs_ai"),16:Codex.util.I18n.trans("queue_normal_blind_pick"),17:Codex.util.I18n.trans("queue_normal_draft_mode"),65:Codex.util.I18n.trans("queue_aram"),70:Codex.util.I18n.trans("queue_one_for_all"),73:Codex.util.I18n.trans("queue_first_blood"),76:Codex.util.I18n.trans("queue_urf_mode"),78:Codex.util.I18n.trans("mode_one_for_all_mirror"),83:Codex.util.I18n.trans("queue_coop_vs_ai"),91:Codex.util.I18n.trans("queue_doom_bots_of_doom_1"),92:Codex.util.I18n.trans("queue_doom_bots_of_doom_2"),93:Codex.util.I18n.trans("queue_doom_bots_of_doom_5"),96:Codex.util.I18n.trans("queue_ascension"),9:Codex.util.I18n.trans("queue_ranked_team"),6:Codex.util.I18n.trans("queue_ranked_team")},types:{0:Codex.util.I18n.trans("mode_custom"),1:Codex.util.I18n.trans("queue_normal"),2:Codex.util.I18n.trans("queue_ranked"),3:Codex.util.I18n.trans("queue_coop_vs_ai")},mapping:{0:{type:0},2:{type:1,map:1,mode:"blind"},4:{type:2,map:1,mode:"draft",ranked:"solo"},7:{type:3,map:1,mode:"blind"},14:{type:1,map:1,mode:"draft"},42:{type:2,map:1,mode:"draft",ranked:"team"},61:{type:1,map:1,mode:"teambuilder"},31:{type:3,map:1,mode:"blind"},32:{type:3,map:1,mode:"blind"},33:{type:3,map:1,mode:"blind"},8:{type:1,map:10,mode:"blind"},41:{type:2,map:10,mode:"draft",ranked:"team"},52:{type:3,map:10,mode:"blind"},25:{type:3,map:8,mode:"blind"},16:{type:1,map:8,mode:"blind"},17:{type:1,map:8,mode:"draft"},65:{type:1,map:12,mode:"aram"},70:{type:1,map:1,mode:"draft"},73:{type:1,map:12,mode:"draft"},76:{type:1,map:1,mode:"blind"},78:{type:1,map:12,mode:"draft"},83:{type:1,map:1,mode:"blind"},91:{type:3,map:1,mode:"blind"},92:{type:3,map:1,mode:"blind"},93:{type:3,map:1,mode:"blind"},96:{type:1,map:8,mode:"draft"}},allQueues:function(){var c=this,b=[];for(var a in c.queues){if(c.queues.hasOwnProperty(a)){b.push(a)}}return b},queueTypes:function(b){var a=this;return b.map(function(c){if(a.mapping[c]){return a.mapping[c].type}else{return undefined}}).filter(function(d,e,c){return d!==undefined&&c.indexOf(d)===e})}},formatter:function(f,e,a){var d=a.getModel(),c=(d.isGame)?d:d.getGame(),b=c.get("queue");return Codex.formatter.field.Queue.queues[b]}});JSoop.define("Codex.util.Filters",{singleton:true,requires:["Codex.formatter.field.Queue","Codex.formatter.field.Map"],mapFilters:function(b,c){var d=Codex.formatter.field.Queue.mapping,a=Codex.formatter.field.Queue.allQueues();return a.filter(function(e){return(b==="default"||(d[e]!==undefined&&d[e].type!==undefined&&d[e].type===parseInt(b,10)))&&(c==="default"||(d[e]!==undefined&&d[e].map!==undefined&&d[e].map===parseInt(c,10)))})},getChampions:function(){var b=this,a=Riot.DDragon.models.champion.data,c=[];JSoop.iterate(a,function(d){c.push(d)});c.sort(b.championComparator);return c},championComparator:function(c,a){var d=c.name,b=a.name;if(d<b){return -1}if(d>b){return 1}return 0},getChampionIds:function(){var b=this,a=b.getChampions();return a.map(function(c){return c.key})},getMapIds:function(){var a=this;return a.getObjectKeys(Codex.formatter.field.Map.maps)},getMatchIds:function(){var a=this;return a.getObjectKeys(Codex.formatter.field.Queue.types)},getObjectKeys:function(b){var a=[];JSoop.iterate(b,function(d,c){a.push(c)});return a}});JSoop.define("Codex.util.QueryString",{singleton:true,requires:["Codex.util.Filters"],getValidURLParams:function(){var b=this,a=b.getObjectFromQuery(location.hash);b.nullIfNotPresent(a,"champion",Codex.util.Filters.getChampionIds());b.nullIfNotPresent(a,"map",Codex.util.Filters.getMapIds());b.nullIfNotPresent(a,"matchType",Codex.util.Filters.getMatchIds());return a},getObjectFromQuery:function(e){var a={},c=e.split("?"),b,f;if(c.length!==2){return a}b=c[1].split("&");for(var d=0;d<b.length;d=d+1){f=b[d].split("=");a[f[0]]=f[1]}return a},nullIfNotPresent:function(c,a,b){if(c[a]){if(jQuery.inArray(c[a],b)===-1){c[a]=null}}},getFiltersFromQuery:function(){var c=this,d,b,f,e,a={champion:null,queue:null};d=c.getValidURLParams();b=d.champion?d.champion:null;f=d.matchType?d.matchType:"default";e=d.map?d.map:"default";a.queue=Codex.util.Filters.mapFilters(f,e);if(b&&jQuery.inArray(b,Codex.util.Filters.getChampionIds())!==-1){a.champion=b}return a},getQueryFromObject:function(b){var a="";JSoop.iterate(b,function(d,c){a=a.concat(c+"="+d.toString()+"&")});return a.substr(0,a.length-1)},getNewHashWithQuery:function(d){var c=this,a=location.hash.split("?"),b=c.getQueryFromObject(d);if(b===""){return a[0]}else{return a[0]+"?"+b}}});JSoop.define("Codex.util.Loader",{singleton:true,requires:["Codex.view.Loading"],show:function(){var a=JSoop.create("Codex.view.Loading");Codex.Main.getRegion("main").show(a)}});JSoop.define("Codex.formatter.field.ChampionIcon",{extend:"Spine.view.formatter.Field",requires:["Codex.util.DataDragon"],name:"championIcon",field:"champion",constructor:function(){var a=this;a.id=_.uniqueId("champion-icon-");a.callParent(arguments)},formatter:function(f,e,a){var d=this,b=a.model,c="";if(f.name==="Participant"){b=f.getGame();f=f.get("champion")}else{if(b.name==="Participant"){b=b.getGame()}}if(Codex.util.DataDragon.isLoaded("summoner",b.get("version"))){c=Codex.util.DataDragon.getTooltipImgMarkup({model:"champion",version:b.get("version"),id:f})}else{a.once("afterrender",JSoop.bind(d.onRenderAfter,d));Codex.util.DataDragon.getTooltipImg({model:"champion",version:b.get("version"),id:f,callback:d.onDataReady,scope:d})}return'<div class="champion-icon" id="'+d.id+'">'+c+"</div>"},destroy:function(){var a=this;a.view=null;a.el=null;a.content=null},onDataReady:function(a){var b=this;b.content=a;if(b.el){b.el.html(b.content);b.destroy()}},onRenderAfter:function(a){var b=this;b.el=a.$el.find("#"+b.id);if(b.content){b.el.html(b.content);b.destroy()}}});JSoop.define("Codex.view.matchHistory.NoItems",{extend:"Marionette.ItemView",template:{name:"Codex.view.matchHistory.NoItems.template",path:"matchHistory/empty.twig"},baseCls:"match-history-empty",baseId:"match-history-empty"});JSoop.define("Codex.view.matchHistory.NoItemsFiltered",{extend:"Marionette.ItemView",template:{name:"Codex.view.matchHistory.NoItemsFiltered.template",path:"matchHistory/empty-filtered.twig"},baseCls:"match-history-empty-filtered",baseId:"match-history-empty-filtered"});JSoop.define("Codex.formatter.field.KDABadge",{extend:"Spine.view.formatter.Field",name:"kdaBadge",field:"kills",formatter:function(h,g,c){var f=c.getModel(),e=h,i=f.get("deaths"),b=f.get("assists");if(i===0){return Codex.util.I18n.trans("kdabadge_perfect")}return((e+b)/i).toFixed(2)+":1"}});JSoop.define("Codex.formatter.field.Item",{extend:"Spine.view.formatter.Field",requires:["Codex.util.DataDragon"],constructor:function(){var a=this;a.id=_.uniqueId("item-");a.callParent(arguments)},formatter:function(f,e,a){var d=this,b=a.model,c="";if(b.name==="Participant"){b=b.getGame()}if(Codex.util.DataDragon.isLoaded("item",b.get("version"))){c=Codex.util.DataDragon.getTooltipImgMarkup({model:"item",version:b.get("version"),id:f});if(c.indexOf("getImg(0)")!==-1){c='<div class="no-item"></div>'}}else{a.once("afterrender",JSoop.bind(d.onRenderAfter,d));Codex.util.DataDragon.getTooltipImg({model:"item",version:b.get("version"),id:f,callback:d.onDataReady,scope:d})}return'<div class="item-icon" id="'+d.id+'">'+c+"</div>"},destroy:function(){var a=this;a.view=null;a.el=null;a.content=null},onDataReady:function(a){var b=this;if(a.indexOf("getImg(0)")!==-1){a='<div class="no-item"></div>'}b.content=a;if(b.el){b.el.html(b.content);b.destroy()}},onRenderAfter:function(a){var b=this;b.el=a.$el.find("#"+b.id);if(b.content){b.el.html(b.content);b.destroy()}}});JSoop.define("Codex.formatter.field.Duration",{extend:"Spine.view.formatter.Field",name:"duration",field:"duration",formatter:function(g,i,d){var c=d.getModel(),j=(c.isGame)?c:c.getGame(),f=j.get("duration"),a=Math.floor(f/60),e=Math.floor(a/60);function h(n,l,m){var k;n=n+"";for(k=n.length;k<l;k=k+1){n=n+m}return n}function b(n,l,m){var k;n=n+"";for(k=n.length;k<l;k=k+1){n=m+n}return n}a=a-(e*60);f=f-((e>0)?(e*60*60)+(a*60):(a*60));f=b(f,2,"0");if(e>0){a=b(a,2,"0");return e+":"+a+":"+f}return a+":"+f}});JSoop.define("Codex.formatter.field.Gold",{extend:"Spine.view.formatter.Field",name:"gold",field:"goldEarned",formatter:(function(){var a;return function(b){if(!a){a=Codex.util.I18n.trans("gold_format")}if(b>=1000){return a.replace("{{ gold }}",(b/1000).toFixed(1))}return b}}())});JSoop.define("Codex.formatter.field.Mode",{extend:"Spine.view.formatter.Field",name:"mode",statics:{modes:{CLASSIC:Codex.util.I18n.trans("mode_classic"),ARAM:Codex.util.I18n.trans("mode_aram"),ODIN:Codex.util.I18n.trans("mode_dominion"),ASCENSION:Codex.util.I18n.trans("mode_ascension")},hasScore:{ODIN:true,ASCENSION:true}},formatter:function(f,e,a){var c=a.getModel(),b=(c.isGame)?c:c.getGame(),d=b.get("mode");return Codex.formatter.field.Mode.modes[d]}});JSoop.define("Codex.formatter.field.SpellIcon",{extend:"Spine.view.formatter.Field",requires:["Codex.util.DataDragon"],constructor:function(){var a=this;a.id=_.uniqueId("spell-icon-");a.callParent(arguments)},formatter:function(f,e,a){var d=this,b=a.model,c="";if(b.name==="Participant"){b=b.getGame()}if(Codex.util.DataDragon.isLoaded("summoner",b.get("version"))){c=Codex.util.DataDragon.getTooltipImgMarkup({model:"summoner",version:b.get("version"),id:f})}else{a.once("afterrender",JSoop.bind(d.onRenderAfter,d));Codex.util.DataDragon.getTooltipImg({model:"summoner",version:b.get("version"),id:f,callback:d.onDataReady,scope:d})}return'<div class="spell-icon" id="'+d.id+'">'+c+"</div>"},destroy:function(){var a=this;a.view=null;a.el=null;a.content=null},onDataReady:function(a){var b=this;b.content=a;if(b.el){b.el.html(b.content);b.destroy()}},onRenderAfter:function(a){var b=this;b.el=a.$el.find("#"+b.id);if(b.content){b.el.html(b.content);b.destroy()}}});JSoop.define("Codex.view.game.summary.SpellBook",{extend:"Spine.view.formatter.FormatterView",requires:["Codex.formatter.field.SpellIcon"],template:{name:"Codex.view.game.summary.SpellBook.template",path:"game/summary/spell-book.twig"},baseCls:"spell-book",baseId:"spell-book",formatter:{fields:[{type:"Codex.formatter.field.SpellIcon",name:"spell1",field:"spell1"},{type:"Codex.formatter.field.SpellIcon",name:"spell2",field:"spell2"}]}});JSoop.define("Codex.view.game.summary.Mode",{extend:"Spine.view.formatter.FormatterView",requires:["Codex.formatter.field.Queue","Codex.formatter.field.Map","Codex.formatter.field.Mode"],template:{name:"Codex.view.game.summary.Mode.template",path:"game/summary/mode.twig"},baseCls:"mode",baseId:"mode",formatter:{fields:[{type:"Codex.formatter.field.Queue"},{type:"Codex.formatter.field.Map"},{type:"Codex.formatter.field.Mode"}]}});JSoop.define("Codex.view.game.summary.Income",{extend:"Spine.view.formatter.FormatterView",requires:["Codex.formatter.field.Gold"],template:{name:"Codex.view.game.summary.Income.template",path:"game/summary/income.twig"},baseCls:"income",baseId:"income",formatter:{fields:[{type:"Codex.formatter.field.Gold"},{name:"minions",field:"totalMinionsKilled"}]}});JSoop.define("Codex.view.game.summary.DateDuration",{extend:"Spine.view.formatter.FormatterView",requires:["Codex.formatter.field.Duration"],template:{name:"Codex.view.game.summary.DateDuration.template",path:"game/summary/date-duration.twig"},baseCls:"date-duration",baseId:"date-duration",formatter:{fields:[{type:"Codex.formatter.field.Duration"},{name:"created",formatter:function(e,d,a){var g=a.getModel().getGame().get("created"),b=g.getDate(),f=g.getMonth()+1,c=g.getFullYear();return Codex.util.I18n.trans("date_format").replace("{{ day }}",b).replace("{{ month }}",f).replace("{{ year }}",c)}}]}});JSoop.define("Codex.view.game.summary.ChampRole",{extend:"Spine.view.container.Container",requires:["Codex.formatter.field.Queue"],baseCls:"champ-role",baseId:"champ-role",constructor:function(){var a=this;a.callParent(arguments);a.defaults={model:a.model};a.items=[{type:"Codex.view.ChampionNameplate",cls:"champion-name",hideIcon:true,useSummonerName:false}]}});JSoop.define("Codex.view.Inventory",{extend:"Spine.view.formatter.FormatterView",requires:["Codex.formatter.field.Item"],baseId:"inventory",baseCls:"inventory",template:{name:"Codex.view.Inventory.template",path:"inventory.twig"},formatter:{fields:[{name:"inventory",formatter:function(c,b,a){var d=[];JSoop.each(c,function(g,e){var f;if(a.options.seperateTrinket&&e===6){return}f=JSoop.create("Codex.formatter.field.Item");d.push(JSoop.create("Codex.formatter.field.Item").formatter(g,b,a))});return d}},{name:"trinket",formatter:function(c,b,a){return JSoop.create("Codex.formatter.field.Item").formatter(c,b,a)}}]},initialize:function(){var a=this;if(a.options.cols&&a.options.cols!==7){a.options.seperateTrinket=true}},serializeData:function(){var a=this,b=a.callParent(arguments);b.separateTrinket=a.separateTrinket||false;b.cols=a.cols||7;return b}});JSoop.define("Codex.view.KDAPlate",{extend:"Spine.view.formatter.FormatterView",requires:["Codex.formatter.field.KDABadge"],template:{name:"Codex.view.KDAPlate.template",path:"kda-plate.twig"},baseCls:"kda-plate",baseId:"kda-plate",formatter:{fields:[{type:"Codex.formatter.field.KDABadge"},{name:"kills"},{name:"deaths"},{name:"assists"}]},serializeData:function(){var a=this,b=a.callParent(arguments);b.hideBadge=(a.hideBadge===undefined)?false:a.hideBadge;return b}});JSoop.define("Codex.formatter.field.ChampionName",{extend:"Spine.view.formatter.Field",requires:["Codex.util.DataDragon"],name:"championName",field:"champion",constructor:function(){var a=this;a.id=_.uniqueId("champion-name-");a.callParent(arguments)},formatter:function(e,d,a){var c=this,b=a.model;if(e.name==="Participant"){b=e.getGame();e=e.get("champion")}else{if(b.name==="Participant"){b=b.getGame()}}a.once("afterrender",JSoop.bind(c.onRenderAfter,c));Codex.util.DataDragon.getData({model:"champion",version:b.get("version"),id:e,callback:c.onDataReady,scope:c});return'<div class="champion-name" id="'+c.id+'"></div>'},destroy:function(){var a=this;a.view=null;a.el=null;a.content=null},onDataReady:function(b){var a=this;if(b===undefined||b.name===undefined){return}a.content=b.name;if(a.el){a.el.html(a.content);a.destroy()}},onRenderAfter:function(a){var b=this;b.el=a.$el.find("#"+b.id);if(b.content){b.el.html(b.content);b.destroy()}}});JSoop.define("Codex.view.ChampionNameplate",{extend:"Spine.view.formatter.FormatterView",requires:["Codex.formatter.field.ChampionIcon","Codex.formatter.field.ChampionName"],baseId:"champion-nameplate",baseCls:"champion-nameplate",template:{name:"Codex.view.ChampionNameplate.template",path:"champion-nameplate.twig"},formatter:{fields:[{type:"Codex.formatter.field.ChampionIcon"},{type:"Codex.formatter.field.ChampionName"},{name:"champLevel"},{name:"summonerName"},{name:"account"},{name:"region"}]},serializeData:function(){var a=this,b=a.callParent(arguments),c={hideName:false,hideIcon:false,hideLevel:false,useSummonerName:true,useSummonerLink:false};JSoop.iterate(c,function(e,d){if(a[d]===undefined){b[d]=e}else{b[d]=a[d]}});return b}});JSoop.define("Codex.view.game.summary.View",{extend:"Spine.view.container.Container",requires:["Codex.view.ChampionNameplate","Codex.view.KDAPlate","Codex.view.Inventory","Codex.view.game.summary.ChampRole","Codex.view.game.summary.DateDuration","Codex.view.game.summary.Income","Codex.view.game.summary.Mode","Codex.view.game.summary.SpellBook"],vtype:"game-summary",baseId:"game-summary",baseCls:"game-summary",events:{click:"onClick"},constructor:function(){var a=this;a.callParent(arguments);a.defaults={model:a.model};a.items=[{type:"Codex.view.ChampionNameplate",cls:"champion-icon",hideName:true},{type:"Codex.view.game.summary.SpellBook"},{type:"Codex.view.game.summary.ChampRole"},{type:"Codex.view.game.summary.Mode"},{type:"Codex.view.Inventory"},{type:"Codex.view.KDAPlate",hideBadge:true},{type:"Codex.view.game.summary.Income"},{type:"Codex.view.game.summary.DateDuration"},{cls:(a.getModel().get("win"))?a.baseCls+"-victory":a.baseCls+"-defeat"}]},onClick:function(){var a=this;a.trigger("click",a)}});JSoop.define("Codex.view.matchHistory.List",{extend:"Spine.view.container.CollectionContainer",requires:["Codex.view.game.summary.View","Codex.view.matchHistory.NoItems","Codex.view.matchHistory.NoItemsFiltered","Codex.view.Loading"],template:{name:"Codex.view.matchHistory.List.template",path:"matchHistory/match-history.twig"},vtype:"match-history-list",baseId:"match-history",baseClass:"match-history",targetEl:"ul",defaults:{type:"Codex.view.game.summary.View",tagName:"li",tag:"li",template:"<div><div><div></div></div></div>",targetEl:"div div div"},emptyView:"Codex.view.matchHistory.NoItems",loadingView:"Codex.view.Loading",supressEmptyView:true,gameCreatedComparator:function(d,c){var b=d.getGame().get("created"),a=c.getGame().get("created");if(b>a){return -1}if(b<a){return 1}return 0},initView:function(){var b=this,a=Spine.getCollection("Participants"),d=Spine.getCollection("Games"),c=Codex.getContextUser();b.user=JSoop.create("Codex.model.User",{id:c.get("id"),region:c.get("region"),type:c.get("type")});b.collection=JSoop.create("Codex.collection.Participants",[]);b.populateCollection();if(b.collection.length===0){b.collection.length=1}a.on("add",b.onParticipantAdd,b);d.on({beforeload:b.onGamesBeforeLoad,listLoad:b.onGamesLoad,reinitialize:b.onGamesClear,scope:b});b.onScroll=JSoop.bind(b.scroll,b);jQuery(window).on("scroll",b.onScroll)},scroll:function(d){var b=this,f=jQuery(window),c=f.scrollTop()+f.innerHeight(),a=b.$el.offset().top+b.$el.outerHeight(false);if(!b.loading&&c>a){b.trigger("next",d)}},initItem:function(c,a){var b=this;a=b.callParent(arguments);if(c.getGame===undefined){return}return JSoop.apply(a,{model:c,game:c.getGame()})},onGamesClear:function(){var a=this;a.collection.removeAll();a.closeChildren()},destroy:function(){var b=this,c=Spine.getCollection("Games"),a=Spine.getCollection("Participants");jQuery(window).off("scroll",b.onScroll);a.un("add",b.onParticipantAdd);c.un("beforeload",b.onGamesBeforeLoad);c.un("listLoad",b.onGamesLoad);c.un("reinitialize",b.onGamesClear);b.callParent(arguments)},onGamesBeforeLoad:function(){var a=this;a.loading=true;a.showLoadingView()},onGamesLoad:function(h,d,b){var i=this,f=b.champion.length,j=b.map.length,c=b.queue.length,a=Codex.formatter.field.Queue.allQueues().length,g=f!==0||(c!==0&&c!==a)||j!==0;i.populateCollection(b);i.loading=false;i.hideLoadingView();i.closeEmptyView();if(i.collection.getCount()===0){if(g){i.emptyView="Codex.view.matchHistory.NoItemsFiltered"}else{i.emptyView="Codex.view.matchHistory.NoItems"}i.showEmptyView()}},onParticipantAdd:function(a){var b=this;if(b.user.isParticipant(a)){b.collection.add(a)}},showLoadingView:function(){var a=this,b=a.loadingView;if(b&&a.loading){a.loadingChild=a.addItemView(new Backbone.Model(),b,0)}},hideLoadingView:function(){var a=this;if(a.loadingChild){a.removeChildView(a.loadingChild)}},populateCollection:function(e){var d=this,h=function(){return true},g=Spine.getCollection("Games"),c=[],b=[],f=[],a=[];if(e){h=function(i,j){return(e.champion.indexOf(i.get("champion").toString())!==-1||e.champion.length===0)&&e.queue.indexOf(j.get("queue").toString())!==-1};g.each(function(i){i.getParticipants().each(function(j){if(d.user.isParticipant(j)&&h(j,i)){c.push(j)}})})}c.sort(d.gameCreatedComparator);JSoop.each(c,function(i){a.push(i.get("id"));if(d.collection.indexOfKey(i.get("id"))===-1){b.push(i)}});d.collection.each(function(i){if(a.indexOf(i.get("id"))===-1){f.push(i)}});d.collection.remove(f);d.collection.add(b);if(!d.collection.isSorted){d.collection.sort(d.gameCreatedComparator)}}});JSoop.define("Codex.view.matchHistory.FilterContext",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.matchHistory.FilterContext.template",path:"matchHistory/filter-context.twig"},vtype:"match-filter-context",baseCls:"match-filter-context",baseId:"match-filter-context",initView:function(){var a=this;a.games=Spine.getCollection("Games");a.callParent(arguments);a.listenTo(a.games,"listLoad",a.onGamesLoad,a);a.renderData={customVisibility:"hidden",normalVisibility:"hidden",rankedVisibility:"shown"}},destroy:function(){var a=this;a.stopListening(a.games,"listload",function(){});a.undelegateEvents()},onGamesLoad:function(k,h,d){var m=this,i=h.shownQueues,b=h.friendsFiltered,j=Codex.formatter.field.Queue.queueTypes(i),g=d.queue.map(function(e){return parseInt(e,10)}),f=Codex.formatter.field.Queue.queueTypes(g),l=Codex.formatter.field.Queue.allQueues(),n=Codex.formatter.field.Queue.queueTypes(l),a,c,o;a=jQuery(g).not(i).get();c=Codex.formatter.field.Queue.queueTypes(a);if(g.length===l.length){o=[]}else{o=jQuery(n).not(f).get()}m.showWarning=b===undefined?false:!b;m.renderData={customVisibility:m.queueVisibility(0,j,c,o),normalVisibility:m.queueVisibility(1,j,c,o),rankedVisibility:m.queueVisibility(2,j,c,o),showWarning:m.showWarning};m.render();m.showReasonTips(m.renderData.customVisibility,m.renderData.normalVisibility,m.renderData.rankedVisibility)},showReasonTips:function(h,e,d){var c=this,b=Codex.util.I18n.trans("context_panel_friends_not_filtered_reason"),f=Codex.util.I18n.trans("context_panel_custom_visibility_reason"),a=Codex.util.I18n.trans("context_panel_ranked_visibility_reason"),g=c.getNormalVisibilityReason();if(d==="shown"){c.showReasonTip(a,jQuery(".ranked-visibility"))}if(h==="hidden"){f=Codex.util.I18n.trans("context_panel_custom_visibility_reason");c.showReasonTip(f,jQuery(".custom-visibility"))}if(e==="hidden"){c.showReasonTip(g,jQuery(".normal-visibility"))}c.showReasonTip(b,jQuery(".disabled-friends>img"))},getNormalVisibilityReason:function(){var a=this,b;if(Codex.getCurrentUser().isLoggedIn()){if(a.showWarning){b=Codex.util.I18n.trans("context_panel_friends_not_filtered_reason")}else{b=Codex.util.I18n.trans("context_panel_normal_visibility_reason_not_friends")}}else{b=Codex.util.I18n.trans("context_panel_normal_visibility_reason_logged_out")}return b},showReasonTip:function(b,a){a.hover(function(){Codex.showTip(b,a)},function(){Codex.hideTip()})},queueVisibility:function(c,b,a,d){if(jQuery.inArray(c,b)!==-1){return"shown"}else{if(jQuery.inArray(c,a)!==-1){return"hidden"}else{if(jQuery.inArray(c,d)!==-1){return"filtered"}}}}});JSoop.define("Codex.view.matchHistory.FilterSelect",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.matchHistory.FilterSelect.template",path:"matchHistory/filter-select.twig"},vtype:"match-filter-select",baseCls:"match-filter-select",baseId:"match-filter-select",ui:{championEl:"select#match-filter-champion",typeEl:"select#match-filter-type",mapEl:"select#match-filter-map"},events:{"click button":"onSubmit"},requires:["Codex.util.Filters"],initView:function(){var b=this,c=Codex.util.Filters.getChampions(),a=Codex.formatter.field.Queue.types,d=Codex.formatter.field.Map.maps;b.games=Spine.getCollection("Games");b.callParent(arguments);delete d[11];b.renderData={champions:c,types:a,maps:d}},destroy:function(){var a=this;a.stopListening(a.games,"listload",function(){});a.undelegateEvents()},afterRender:function(){var b=this,a=Codex.util.QueryString.getValidURLParams();if(a.champion){b.ui.championEl.val(a.champion)}if(a.matchType){b.ui.typeEl.val(a.matchType)}if(a.map){b.ui.mapEl.val(a.map)}},onSubmit:function(){var c=this,e=(c.ui.championEl.val()!=="default")?c.ui.championEl.val():null,a=c.ui.typeEl.val(),d=c.ui.mapEl.val(),b=c.getNewHash(e,a,d);if(b!==location.hash){c.trigger("filter",b);Codex.util.Analytics.fire("filter_match_history",{label:"mode",value:a,champion:e,map:d})}},getNewHash:function(d,a,c){var b={};if(d){b.champion=d}if(a!=="default"){b.matchType=a}if(c!=="default"){b.map=c}return Codex.util.QueryString.getNewHashWithQuery(b)}});JSoop.define("Codex.view.matchHistory.Filter",{extend:"Spine.view.container.Container",requires:["Codex.view.matchHistory.FilterContext","Codex.view.matchHistory.FilterSelect"],template:{name:"Codex.view.matchHistory.Filter.template",path:"matchHistory/filter.twig"},vtype:"match-filter",baseId:"match-filter",baseCls:"match-filter",targetEl:"div div div",constructor:function(){var a=this;a.callParent(arguments);a.items=[{type:"Codex.view.matchHistory.FilterSelect",cls:"default-4-7"},{type:"Codex.view.matchHistory.FilterContext",cls:"default-3-7"}]}});JSoop.define("Codex.view.matchHistory.Header",{extend:"Spine.view.container.Container",requires:["Codex.view.player.Header","Codex.view.matchHistory.Filter"],baseCls:"match-history-header",cls:"gs-container",initView:function(){var a=this;a.callParent(arguments);a.items=[{type:"Codex.view.player.Header",cls:"default-1-2",model:a.model},{type:"Codex.view.matchHistory.Filter",cls:"default-1-2"}]}});JSoop.define("Codex.view.matchHistory.MatchHistory",{extend:"Spine.view.container.Container",requires:["Codex.view.matchHistory.Header","Codex.view.matchHistory.List"],initView:function(){var b=this,c=Codex.getContextUser(),a;Spine.getCollection("Participants").each(function(d){if(c.isParticipant(d)){a=d;return false}});b.items=[{type:"Codex.view.matchHistory.List"}];if(a){b.items.unshift({type:"Codex.view.matchHistory.Header",model:a})}else{Spine.getCollection("Participants").on("add",b.onParticipantAdd,b)}b.callParent(arguments)},onParticipantAdd:function(c,a){var b=this;JSoop.each(a,function(d){if(Codex.getContextUser().isParticipant(d)){b.add({type:"Codex.view.matchHistory.Header",model:d},0);Spine.getCollection("Participants").un("add",b.onParticipantAdd);return false}})}});JSoop.define("Codex.view.game.grid.Model",function(){var d={kda:function(e){return e.kills+"/"+e.deaths+"/"+e.assists},largest_killing_spree:function(e){if(e.largestKillingSpree){return e.largestKillingSpree}return e.kills},largest_multi_kill:{field:"largestMultiKill"},first_blood_kill:{field:"firstBloodKill",formatter:"booleanFormat"},total_damage_to_champions:{field:"totalDamageDealtToChampions",formatter:"numberToK"},physical_damage_to_champions:{field:"physicalDamageDealtToChampions",formatter:"numberToK"},magic_damage_to_champions:{field:"magicDamageDealtToChampions",formatter:"numberToK"},true_damage_to_champions:{field:"trueDamageDealtToChampions",formatter:"numberToK"},damage_dealt:{field:"totalDamageDealt",formatter:"numberToK"},physical_damage_dealt:{field:"physicalDamageDealt",formatter:"numberToK"},magic_damage_dealt:{field:"magicDamageDealt",formatter:"numberToK"},true_damage_dealt:{field:"trueDamageDealt",formatter:"numberToK"},largest_critical_strike:{field:"largestCriticalStrike",formatter:"numberFormat"},damage_healed:{field:"totalHeal",formatter:"numberToK"},total_damage_taken:{field:"totalDamageTaken",formatter:"numberToK"},physical_damage_taken:{field:"physicalDamageTaken",formatter:"numberToK"},magic_damage_taken:{field:"magicalDamageTaken",formatter:"numberToK"},true_damage_taken:{field:"trueDamageTaken",formatter:"numberToK"},vision_items_placed:{field:"wardsPlaced",formatter:"numberFormat"},vision_items_destroyed:{field:"wardsKilled",formatter:"numberFormat"},sight_wards_purchased:{field:"sightWardsBoughtInGame",formatter:"numberFormat"},vision_wards_purchased:{field:"visionWardsBoughtInGame",formatter:"numberFormat"},gold_earned:{field:"goldEarned",formatter:"numberToK"},gold_spent:{field:"goldSpent",formatter:"numberToK"},minions_killed:{field:"minionsKilled",formatter:"numberFormat"},neutral_minions_killed:{field:"neutralMinionsKilled",formatter:"numberFormat"},neutral_minions_killed_team_jungle:{field:"neutralMinionsKilledTeamJungle",formatter:"numberFormat"},neutral_minions_killed_enemy_jungle:{field:"neutralMinionsKilledEnemyJungle",formatter:"numberFormat"}},c=[];function a(e){if(JSoop.isFunction(e)){return e}if(JSoop.isString(e)){e={field:e}}JSoop.applyIf(e,{formatter:"passThrough"});e.formatter=Codex.util.Formatters[e.formatter];return function(f){return e.formatter(f[e.field])}}function b(e){return function(h,f,g){return(g[e])?d[f.index].format(g[e]):""}}JSoop.iterate(d,function(f,e){c.push({label:e,format:a(f)})});d=c;return{extend:"Spine.data.Model",name:"GridRow",statics:{rowCount:d.length,rows:d},fields:[{name:"id",convert:function(){return _.uniqueId("grid")}},{name:"label",convert:function(f,e){return Codex.util.I18n.trans(d[e.index].label)}}],constructor:function(f,g){var h=this,e=[];JSoop.iterate(f,function(k,j){if(JSoop.isObject(k)){e.push({name:"c"+j,convert:b(j)})}});Spine.data.Model.addFields.call(h,e);if(g){h.index=g.index}h.callParent(arguments)}}});JSoop.define("Codex.view.game.scoreboard.team.Header",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.scoreboard.team.Header.template",path:"game/scoreboard/team/header.twig"},formatter:{fields:[{name:"teamId",field:"id"},{name:"kills",formatter:function(e,d,a){var c=0,f=0,b=0;a.getModel().getParticipants().each(function(g){c=c+g.get("kills");f=f+g.get("deaths");b=b+g.get("assists")});return c}},{name:"gold",formatter:function(d,c,b){var a=0;b.getModel().getParticipants().each(function(e){a=a+e.get("goldEarned")});return Codex.util.Formatters.numberToK(a)}},{name:"win"},{name:"hasScore",formatter:function(c,b,a){var d=a.getModel().getGame().get("mode");return(Codex.formatter.field.Mode.hasScore[d])?true:false}}]}});JSoop.define("Codex.view.graph.Graph",{extend:"Marionette.ItemView",createCanvas:function(b,a){JSoop.applyIf(b,{padding:{top:0,left:0,right:0,bottom:0},cls:""});return d3.select(a).append("svg:svg").attr("height",b.height).attr("width",b.width).attr("class",b.cls)},createLayer:function(b,a){var d=a.el,c;JSoop.applyIf(b,{x:0,y:0});c=d.append("svg:g").attr("transform","translate("+b.x+", "+b.y+")");if(b.cls){c.attr("class",b.cls)}if(b.clip){c.attr("clip-path","url(#"+b.clip+")")}return c},createRange:function(a){return d3.scale.linear().domain([a.domain.min,a.domain.max]).range([a.range.min,a.range.max])},readConfig:function(){var c=this,a=c.lines,b={x:{min:0,max:0},y:{min:0,max:0}};c.lines=[];JSoop.each(a,function(e){var f=d3.min(e.data),d=d3.max(e.data);if(!e.range){e.range={}}e.range.x=c.applyConfig(e.range.x,{domain:{min:0,max:e.data.length-1},range:{min:0,max:c.graph.width}});e.range.y=c.applyConfig(e.range.y,{domain:{min:f,max:d},range:{min:0,max:c.graph.height}});if((e.data.length-1)>b.x.max){b.x.max=e.data.length-1}if(f<b.y.min){b.y.min=f}if(d>b.y.max){b.y.max=d}c.lines.push(c.applyConfig(e.config,{data:e.data,container:c.graph,xRange:c.createRange(e.range.x),yRange:c.createRange(e.range.y)}))});c.axis.x.range=c.applyConfig(c.axis.x.range,{min:0,max:c.graph.width});c.axis.x.domain=c.applyConfig(c.axis.x.domain,{min:b.x.min,max:b.x.max});c.axis.x.range=c.createRange(c.axis.x);c.axis.y.range=c.applyConfig(c.axis.y.range,{min:0,max:c.graph.height});c.axis.y.domain=c.applyConfig(c.axis.y.domain,{max:b.y.min,min:b.y.max});c.axis.y.range=c.createRange(c.axis.y)},applyConfig:function(b,a){return JSoop.applyIf(b||{},a)},getTargetEl:function(){return this.$el},beforeGraphRender:JSoop.emptyFn,afterGraphRender:JSoop.emptyFn});JSoop.define("Codex.view.game.map.View",{extend:"Marionette.ItemView",requires:["Codex.formatter.field.Map"],template:{name:"Codex.view.game.map.View.template",path:"game/map.twig"},targetEl:"> div > div > div.gs-container",baseCls:"map",baseId:"map",width:289,height:289,domains:{map1:{min:{x:-650,y:-83},max:{x:14076,y:14522}},map3:{min:{x:-500,y:-500},max:{x:15000,y:15000}},map8:{min:{x:0,y:0},max:{x:13987,y:13987}},map10:{min:{x:0,y:0},max:{x:15398,y:15398}},map11:{min:{x:-650,y:-83},max:{x:14076,y:14522}},map12:{min:{x:-28,y:-19},max:{x:12849,y:12858}}},ui:{link:"nav > ul > li > a",title:"header > nav > ul > li > a > span",dropdown:"nav > ul > li > ul",championKills:"nav > ul > li > ul > li:nth-child(1)",buildingKills:"nav > ul > li > ul > li:nth-child(2)",team1:".champions .team-100",team2:".champions .team-200",champions:".champions"},formatter:{fields:[{type:"Codex.formatter.field.Map",name:"map",field:"map"}]},events:{"click nav > ul > li > a":"toggleDropdown","click nav > ul > li > ul > li:nth-child(1)":"showChampionKills","click nav > ul > li > ul > li:nth-child(2)":"showBuildingKills","click .champions img":"toggleChampionKills"},constructor:function(){var a=this;a.callParent(arguments);if("\v"==="v"){a.svgNotSupported=true;a.svgNotSupportedString=Codex.util.I18n.trans("svg_not_supported_msg")}},toggleDropdown:function(b){var a=this;if(a.ui.dropdown.css("display")==="none"){a.ui.dropdown.css("display","block")}else{a.ui.dropdown.css("display","none")}b.preventDefault()},showChampionKills:function(c){var a=this,b=a.$(".event-map");b.find(".building-kills").hide();b.find(".champion-kills").show();a.ui.champions.show();a.ui.dropdown.css("display","none");a.ui.title.html(a.ui.championKills.text());if(c){c.preventDefault()}},showBuildingKills:function(c){var a=this,b=a.$(".event-map");a.ui.champions.hide();b.find(".champion-kills").hide();b.find(".building-kills").show();a.ui.dropdown.css("display","none");a.ui.title.html(a.ui.buildingKills.text());c.preventDefault()},toggleChampionKills:function(f){var c=this,d=c.$(".event-map"),a=jQuery(f.target),b=a.attr("data-player");d.find(".champion-death").hide();if(a.hasClass("selected")){a.removeClass("selected");d.find(".champion-kill").show()}else{jQuery(".champions img").removeClass("selected");a.addClass("selected");d.find(".champion-kill").hide();d.find(".player-"+b).show()}},afterRender:function(){var g=this,f=g.model.getParticipants(),c=g.$(".event-map"),h=g.model.get("map"),e=g.domains["map"+h],a=CODEX_ASSET_PATH+"/images/maps/map"+h+".png",i,d,b;g.canvas=d3.select(c[0]).append("svg:svg").attr("width",g.width).attr("height",g.height);g.xScale=d3.scale.linear().domain([e.min.x,e.max.x]).range([0,g.width]);g.yScale=d3.scale.linear().domain([e.min.y,e.max.y]).range([g.height,0]);g.canvas.append("image").attr("xlink:href",a).attr("x","0").attr("y","0").attr("width",g.width).attr("height",g.height);i=g.canvas.append("svg:g").attr("class","champion-kills");b=i.append("svg:g").attr("class","champion-deaths");d=g.canvas.append("svg:g").attr("class","building-kills");g.model.getTimeline(function(){g.model.getEvents().each(function(k){var j=k.get("team"),m=k.get("timestamp"),o,l,n;switch(k.get("type")){case"CHAMPION_KILL":o=k.get("killer");l=k.get("victim");if(o){n="champion-kill team-"+j+" champion-"+o.get("champion")+" player-"+o.get("id");i.append("svg:circle").attr("cx",g.xScale(k.get("x"))).attr("cy",g.yScale(k.get("y"))).attr("r",5).attr("class",n)}if(l){n="champion-death champion-"+l.get("champion")+" player-"+l.get("id");b.append("svg:image").attr("x",g.xScale(k.get("x"))-12).attr("y",g.yScale(k.get("y"))-12).attr("width",24).attr("height",24).attr("xlink:href",CODEX_ASSET_PATH+"/images/map_icons/kill.png").attr("style","display: none").attr("class",n)}break;case"BUILDING_KILL":d.append("svg:circle").attr("cx",g.xScale(k.get("x"))).attr("cy",g.yScale(k.get("y"))).attr("r",5).attr("class","building-kill").on("mouseover",function(){Codex.showTip(Codex.util.Formatters.timeFormatMs(m),jQuery(this),{left:0,top:5})}).on("mouseout",function(){Codex.hideTip()});break}})});f.each(function(l){var k=l.get("team"),m=l.get("champion"),j=l.get("id");Codex.util.DataDragon.getImg({model:"champion",version:l.getGame().get("version"),id:m,callback:function(n){switch(k){case 100:g.ui.team1.append(jQuery(n).attr("data-team",100).attr("data-player",j));break;case 200:g.ui.team2.append(jQuery(n).attr("data-team",200).attr("data-player",j));break}}})});g.showChampionKills();g.callParent(arguments);if(g.svgNotSupported===true){c.find("svg").css({width:c.attr("width"),height:c.attr("height")}).find("img").attr("src",c.find("img").attr("href")).parent().find("circle").each(function(){var j=jQuery(this);j.css({left:j.attr("cx")-5,top:j.attr("cy")-5})});g.$el.find(".content-border").append('<div class="is-ie-text"><p>'+g.svgNotSupportedString||"</p></div>")}}});JSoop.define("Codex.view.game.breakdown.Chart",{extend:"Codex.view.graph.Graph",baseCls:"breakdown-item",toolTipTemplate:'<div class="breakdown-tooltip">{{ icon }} {{ value }}</div>',initView:function(){var a=this;a.canvas={height:180,width:160,padding:{left:0,right:0,top:10,bottom:0},cls:"breakdown-graph"}},afterRender:function(){var a=this;a.canvas.el=a.createCanvas(a.canvas,a.getTargetEl()[0]);a.renderGraph()},renderGraph:function(){var a=this;a.graph=JSoop.apply(a.graph||{},{height:a.canvas.height-(a.canvas.padding.top+a.canvas.padding.bottom),width:a.canvas.width-(a.canvas.padding.left+a.canvas.padding.right),x:((a.canvas.width/2)+a.canvas.padding.left),y:((a.canvas.height/2)+a.canvas.padding.top)});a.graph.el=a.createLayer(a.graph,a.canvas);a.radius=Math.min(a.canvas.width,a.canvas.height)/2;a.tooltipTpl=Spine.TemplateManager.toTemplate(a.toolTipTemplate);a.addNodes();a.addHeader()},addNodes:function(){var e=this,f=e.nodes,d=e.radius,a=[0,0,(d/1.8)],h=[0,(d/1.8),d],b,c,g;b=d3.layout.partition().size([2*Math.PI,d*d]).sort(function(j,i){if(j.depth===2&&j.parent.name===100){return d3.descending(i.val,j.val)}else{return d3.descending(j.val,i.val)}});c=d3.svg.arc().startAngle(function(i){return i.x}).endAngle(function(i){return i.x+i.dx}).innerRadius(function(i){return a[i.depth]}).outerRadius(function(i){return h[i.depth]});g=e.graph.el.datum(f).selectAll("path").data(b.nodes).enter().append("path").attr("display",function(i){return i.depth?null:"none"}).attr("d",c).attr("class",function(i){return(i.children)?"inner team-"+i.name:"outer team-"+i.parent.name+" player-"+i.player}).on("mouseover",function(i){if(i.depth===2){e.mouseOver(jQuery(this),i,c.centroid(i))}}).on("mouseout",function(i){if(i.depth===2){e.mouseOut()}});g.data(b.value(function(i){return i.val}).nodes).attr("d",c);e.graph.el.datum(f).selectAll("text").data(b.nodes).enter().append("text").attr("transform",function(i){var j=c.centroid(i);if(i.depth>1){j[0]=j[0]*1.65;j[1]=j[1]*1.55}return"translate("+j[0]+","+j[1]+")"}).attr("dy",".35em").style("text-anchor","middle").text(function(i){return(i.depth===1)?Codex.util.Formatters[e.formatter](i.value):null})},addHeader:function(){var c=this,b=Codex.util.I18n.trans(c.field),e=(b.length>26),a=0,d=(c.canvas.height/2)-(c.canvas.padding.top/2);c.graph.el.append("text").attr("transform","translate(-"+a+",-"+d+")").attr("text-anchor","middle").attr("class",function(){return(e)?"label-small":"label"}).text(b)},mouseOver:function(e,n,o){var p=this,a=p.radius,m=Math.sqrt(o[0]*o[0]+o[1]*o[1]),j=(o[0]/m*a),i=(o[1]/m*a),l=(p.canvas.width/2+a/2),k=((p.canvas.height/2)+p.canvas.padding.top),g=5,f=10,b=_.uniqueId("chart-tip");if((n.x-n.dx)>2.2){j=j-a-(g*3.5+(n.value.toString().length*2))}Codex.showTip(p.tooltipTpl({icon:'<div class="champion-icon chart-tip-icon" id="'+b+'"></div>',value:n.value}),e.parent(),{left:(l+g+j),top:(k+f+i)});Codex.util.DataDragon.getImg({model:"champion",version:p.model.get("version"),id:n.championId,callback:function(c){jQuery("#"+b).html(c)}})},mouseOut:function(){Codex.hideTip()}});JSoop.define("Codex.util.BuildParser",{singleton:true,startingThreshold:120000,stepThreshold:30000,getItemEvents:function(a){var b=a.getGame().getEvents().find(function(c){if(c.get("type")==="ITEM_PURCHASED"||c.get("type")==="ITEM_SOLD"||c.get("type")==="ITEM_UNDO"){if(c.get("source").get("id")===a.get("id")){return true}}return false});b.sort(function(d,c){return d.get("timestamp")-c.get("timestamp")});return b},getStartingStep:function(a){var c=this,b=[];while(a.length){if(a[0].get("timestamp")<c.startingThreshold){b.push(a.shift())}else{return c.processStep(b)}}return c.processStep(b)},getStep:function(a){var c=this,b=[],d;if(a.length){b.push(a.shift());d=b[0].get("timestamp")}else{return false}while(a.length){if(a[0].get("timestamp")<(d+c.stepThreshold)){b.push(a.shift());d=b[b.length-1].get("timestamp")}else{return c.processStep(b)}}return c.processStep(b)},processStep:function(e){var d=this,b={buy:{},sell:{}},f;function c(h,g,i){if(!i.hasOwnProperty(h)){i[h]=g}else{i[h]=i[h]+g}}function a(g,h){if(g==="buy"){c(h,-1,b.buy)}else{c(h,-1,b.sell)}}JSoop.each(e,function(j){var h=j.get("type"),i=j.get("item"),g=j.get("undoType");if(!f){f=j.get("timestamp")}if(h==="ITEM_PURCHASED"){c(i,1,b.buy)}else{if(h==="ITEM_UNDO"){a(g,i)}else{if(h==="ITEM_SOLD"){c(i,1,b.sell)}}}});e=[];JSoop.iterate(b.sell,function(h,g){d.addItem({step:e,count:h,item:g,timestamp:f,type:"sell"})});JSoop.iterate(b.buy,function(h,g){d.addItem({step:e,count:h,item:g,timestamp:f,type:"buy"})});return e},addItem:function(a){var f=a.step,e=a.count,d=a.item,g=a.timestamp,c=a.type,b;if(!Riot.DDragon.models.item.get(d).consumed){for(b=e;b>0;b=b-1){f.push({item:d,count:1,type:c,timestamp:g})}}else{f.push({item:d,count:e,type:c,timestamp:g})}},getBuildSteps:function(a){var e=this,c=e.getItemEvents(a),b=[],d=e.getStartingStep(c);if(d.length){b.push(d)}else{return b}while(true){d=e.getStep(c);if(d){if(d.length){b.push(d)}}else{return b}}}});JSoop.define("Codex.view.game.builds.masteries.Header",{extend:"Spine.view.formatter.FormatterView",vtype:"mastery-tree-header",baseCls:"mastery-tree-header",baseId:"mastery-tree-header",template:{name:"Codex.view.game.builds.masteries.Header.template",path:"game/builds/masteries/header.twig"},initView:function(){var a=this,b=0;a.callParent(arguments);JSoop.each(a.tiers,function(c){JSoop.each(c,function(d){if(d&&a.masteries[d.masteryId]!==undefined){b=b+a.masteries[d.masteryId].get("rank")}})});a.renderData={name:Codex.util.I18n.trans("mastery_tree_"+a.tree.toLowerCase()),rank:b}}});JSoop.define("Codex.view.game.builds.skills.SkillSlot",{extend:"Spine.view.formatter.FormatterView",baseId:"skill-slot",baseCls:"skill-slot",template:{name:"Codex.view.game.builds.SkillSlot",path:"game/builds/skills/skill-slot.twig"},initView:function(){var a=this,c=true,b=a.getEvolution();if(a.model&&a.model.get("slot")===a.slot){c=false}a.renderData={level:a.level,isEmpty:c,evolution:b};a.callParent(arguments)},getEvolution:function(){var a=this;if(!a.evolution&&a.model&&a.model.get("slot")===4&&a.slot===4&&a.evolutions&&a.evolutions.length){a.evolution=a.evolutions.shift()}return a.evolution},afterRender:function(){var d=this,a,c,b;if(d.evolution){a=d.model.get("source");c=a.getGame();b=Codex.util.DataDragon.getVersion(c.get("version"));Codex.util.DataDragon.getModel({model:"champion",version:b,callback:d.onModelLoad,scope:d})}d.callParent(arguments)},onModelLoad:function(d){var g=this,a=g.model.get("source"),c=a.getGame(),e=Codex.util.DataDragon.getKeyFromId(d,a.get("champion")),b=Codex.util.DataDragon.getVersion(c.get("version"));d.getFull(e);function f(){setTimeout(function(){var h;if(!d.data[e].spells){f()}else{h=Riot.DDragon.fn.getImg(d.data[e].spells[g.evolution.get("slot")-1],{src:"full",version:b});g.$(".evolution-icon").html(h)}},5)}f()}});JSoop.define("Codex.formatter.field.RuneIcon",{extend:"Spine.view.formatter.Field",requires:["Codex.util.DataDragon"],name:"runeIcon",field:"rune",constructor:function(){var a=this;a.id=_.uniqueId("rune-icon-");a.callParent(arguments)},formatter:function(f,e,b){var d=this,c=b.model,a=null;if(c.name==="Rune"){f=c.get("runeId");a=c.getParticipant().getGame().get("version")}b.once("afterrender",JSoop.bind(d.onRenderAfter,d));Codex.util.DataDragon.getTooltipImg({model:"rune",version:a,id:f,callback:d.onDataReady,scope:d});return'<div class="rune-icon" id="'+d.id+'"></div>'},destroy:function(){var a=this;a.view=null;a.el=null;a.content=null},onDataReady:function(a){var b=this;b.content=a;if(b.el){b.el.html(b.content);b.destroy()}},onRenderAfter:function(a){var b=this;b.el=a.$el.find("#"+b.id);if(b.content){b.el.html(b.content);b.destroy()}}});JSoop.define("Codex.formatter.field.RuneDesc",{extend:"Spine.view.formatter.Field",requires:["Codex.util.DataDragon"],name:"runeDesc",field:"rune",constructor:function(){var a=this;a.id=_.uniqueId("rune-stat-");a.callParent(arguments)},formatter:function(f,e,b){var d=this,c=b.model,a=null;if(c.name==="Rune"){f=c.get("runeId");a=c.getParticipant().getGame().get("version")}b.once("afterrender",JSoop.bind(d.onRenderAfter,d));Codex.util.DataDragon.getData({model:"rune",version:a,id:f,callback:d.onDataReady,scope:d});return'<span id="'+d.id+'"></span>'},destroy:function(){var a=this;a.view=null;a.el=null;a.content=null},getFormattedString:function(){var a=this;return a.content?a.content.description:""},onDataReady:function(b){var a=this;a.content=b;if(a.el){a.el.html(a.getFormattedString());a.destroy()}},onRenderAfter:function(a){var b=this;b.el=a.$el.find("#"+b.id);if(b.content){b.el.html(b.getFormattedString());b.destroy()}}});JSoop.define("Codex.view.game.builds.Rune",{extend:"Spine.view.formatter.FormatterView",requires:["Codex.formatter.field.RuneIcon","Codex.formatter.field.RuneDesc"],template:{name:"Codex.view.game.builds.Rune",path:"game/builds/rune.twig"},baseCls:"rune",targetEl:"div",formatter:{fields:[{name:"runeIcon",type:"Codex.formatter.field.RuneIcon"},{name:"statDesc",type:"Codex.formatter.field.RuneDesc"},{name:"count"},{name:"runeId"}]}});JSoop.define("Codex.view.game.builds.Runes",{extend:"Spine.view.container.CollectionContainer",requires:["Codex.view.game.builds.Rune"],baseCls:"runes",baseId:"Runes",template:{name:"Codex.view.game.builds.Runes",path:"game/builds/runes.twig"},targetEl:"div#rune-list",defaults:{type:"Codex.view.game.builds.Rune",tagName:"div",tag:"div"},initView:function(){var f=this,e=f.model.getGame().get("version"),j={black:1,red:2,yellow:3,blue:4},h=0,a={},g,c=function(i,k){h+=1;a[i]=k;if(h===g.length){f.collection.sort(function(m,l){var q=a[m.attributes.runeId].rune;var p=a[l.attributes.runeId].rune;var o=j[q.type]||5;var n=j[p.type]||5;return o-n});f.render()}},b=function(i){Codex.util.DataDragon.getData({model:"rune",version:e,id:i,callback:function(k){return c(i,k)},scope:f})};f.collection=f.model.getRunes();g=_.map(f.collection.items,function(i){return i.attributes.runeId});for(var d=0;d<g.length;d+=1){b(g[d])}}});JSoop.define("Codex.view.game.builds.skills.SkillProgression",{extend:"Spine.view.container.Container",requires:["Codex.view.game.builds.skills.SkillSlot"],baseId:"skill-progression",baseCls:"skill-progression",template:{name:"Codex.view.game.builds.SkillProgression",path:"game/builds/skills/skill-progression.twig"},targetEl:".skills",initView:function(){var b=this,a=1;b.defaults={type:"Codex.view.game.builds.skills.SkillSlot"};b.items=[];for(;a<=18;a=a+1){b.items.push({level:a,slot:b.slot,model:b.skills[a-1],evolutions:b.evolutions})}b.addClass("slot-"+b.slot);b.callParent(arguments)},afterRender:function(){var d=this,a=d.skills[0].get("source"),c=a.getGame(),b=Codex.util.DataDragon.getVersion(c.get("version"));Codex.util.DataDragon.getModel({model:"champion",version:b,callback:d.onModelLoad,scope:d});d.callParent(arguments)},onModelLoad:function(d){var g=this,a=g.skills[0].get("source"),c=a.getGame(),e=Codex.util.DataDragon.getKeyFromId(d,a.get("champion")),b=Codex.util.DataDragon.getVersion(c.get("version"));d.getFull(e);function f(){setTimeout(function(){var h,i;if(!d.data[e].spells){f()}else{h=g.$(".skill-icon");h.attr("data-rg-id",e);h.attr("data-rg-name","champion");h.attr("data-rg-skill",g.slot);h.attr("data-rg-version",b);h.html(Riot.DDragon.fn.getImg(d.data[e].spells[g.slot-1],{src:"full",version:b}));i=g.$(".skill-name");i.html(d.data[e].spells[g.slot-1].name);JSoop.each(d.data[e].spells,function(j){if(j.name.length>20){i.addClass("long-skill-name");g.$(".skill-slot").addClass("long-skill-slot")}})}},5)}f()}},function(){jQuery("body").on("mouseover","div[data-rg-skill]",function(){var c=jQuery(this),b=c.attr("data-rg-id"),d=parseInt(c.attr("data-rg-skill"),10)-1,a=c.attr("data-rg-version");setTimeout(function(){jQuery(".rg-box-tooltip").removeClass("rg-display-champion_tooltip").html(Riot.DDragon.models["champion_"+a].data[b].spells[d].description)},50)})});JSoop.define("Codex.view.game.builds.skills.View",{extend:"Spine.view.container.Container",requires:["Codex.view.game.builds.skills.SkillProgression"],baseId:"skill-build",baseCls:"skill-build",template:{name:"Codex.view.game.builds.skills.View.template",path:"game/builds/skills/view.twig"},targetEl:".skills",initView:function(){var c=this,a=c.getSkills(),b=c.getEvolutions();c.defaults={type:"Codex.view.game.builds.skills.SkillProgression",skills:a};c.items=[{slot:1},{slot:2},{slot:3},{slot:4,evolutions:b}];c.callParent(arguments)},getSkills:function(){var b=this,a=[];b.model.getGame().getEvents().each(function(c){if(c.name==="SkillUpEvent"&&c.get("source").get("id")===b.model.get("id")&&c.get("skillUpType")==="NORMAL"){a.push(c)}});a.sort(function(d,c){return d.get("timestamp")-c.get("timestamp")});return a},getEvolutions:function(){var b=this,a=[];if(b.model.get("champion")!==121){return[]}b.model.getGame().getEvents().each(function(c){if(c.name==="SkillUpEvent"&&c.get("source").get("id")===b.model.get("id")&&c.get("skillUpType")==="EVOLVE"){a.push(c)}});a.sort(function(d,c){return d.get("timestamp")-c.get("timestamp")});return a},beforeRender:function(){var b=this,a=b.getSkills();if(a.length===0){b.items=[];return false}}});JSoop.define("Codex.view.game.builds.masteries.Mastery",{extend:"Spine.view.formatter.FormatterView",requires:["Codex.util.DataDragon"],vtype:"mastery-mastery",baseCls:"mastery-mastery",baseId:"mastery-mastery",template:{name:"Codex.view.game.builds.masteries.Mastery.template",path:"game/builds/masteries/mastery.twig"},initView:function(){var d=this,b=d.mastery.masteryId,c=Riot.DDragon.models.mastery.get(b).ranks,f=d.rank,a=d.mastery.prereq==="0"?false:1,e;if(f===c){e="maxxed"}else{if(f>0){e="rank"}else{e="empty"}}d.callParent(arguments);d.renderData={masteryId:b,rank:f,maxRank:c,prereq:a,masteryState:e}},afterRender:function(){var e=this,d=e.mastery.masteryId,b=e.model.getGame().get("version"),a=e.rank===0,c={model:"mastery",version:b,id:d,options:{gray:a,classes:a?"img-gray":"",attrs:'data-rg-id="'+d+'" data-rg-name="mastery"'},callback:function(f){e.$el.find("#mastery-img-"+d).html(f)}};e.callParent(arguments);Codex.util.DataDragon.getImg(c)}});JSoop.define("Codex.view.game.builds.masteries.EmptyMastery",{extend:"Spine.view.formatter.FormatterView",vtype:"mastery-mastery",baseCls:"mastery-mastery",baseId:"mastery-mastery",template:{name:"Codex.view.game.builds.masteries.EmptyMastery.template",path:"game/builds/masteries/empty-mastery.twig"}});JSoop.define("Codex.view.game.builds.masteries.Tier",{extend:"Spine.view.container.Container",requires:["Codex.view.game.builds.masteries.Mastery","Codex.view.game.builds.masteries.EmptyMastery"],vtype:"mastery-tier",baseCls:"mastery-tier",baseId:"mastery-tier",template:{name:"Codex.view.game.builds.masteries.Tier.template",path:"game/builds/masteries/tier.twig"},targetEl:".gs-container",initView:function(){var b=this,a=b.tier,d=b.masteries,c;b.items=[];JSoop.each(a,function(e){if(e){if(d[e.masteryId]!==undefined){c=d[e.masteryId].get("rank")}else{c=0}b.items.push({type:"Codex.view.game.builds.masteries.Mastery",cls:"default-1-4",mastery:e,rank:c,model:b.model})}else{b.items.push({type:"Codex.view.game.builds.masteries.EmptyMastery",cls:"default-1-4"})}});b.callParent()}});JSoop.define("Codex.view.game.builds.masteries.TierContainer",{extend:"Spine.view.container.Container",requires:["Codex.view.game.builds.masteries.Tier"],baseCls:"mastery-tier-container",initView:function(){var a=this;a.items=[];JSoop.each(a.tiers,function(b){a.items.push({type:"Codex.view.game.builds.masteries.Tier",cls:"mastery-tier",tier:b,masteries:a.masteries,model:a.model})});a.callParent()}});JSoop.define("Codex.view.game.builds.masteries.Tree",{extend:"Spine.view.container.Container",requires:["Codex.view.game.builds.masteries.Header","Codex.view.game.builds.masteries.TierContainer"],targetEl:"div",template:{name:"Codex.view.game.builds.masteries.Tree.template",path:"game/builds/masteries/tree.twig"},initView:function(){var a=this;a.items=[{type:"Codex.view.game.builds.masteries.Header",cls:"default-1-1",tree:a.tree,tiers:a.tiers,masteries:a.masteries,model:a.model},{type:"Codex.view.game.builds.masteries.TierContainer",cls:"default-1-1",tiers:a.tiers,masteries:a.masteries,model:a.model}];a.callParent()}});JSoop.define("Codex.view.game.builds.masteries.View",{extend:"Spine.view.container.Container",requires:["Codex.view.game.builds.masteries.Tree"],template:{name:"Codex.view.game.builds.masteries.View.template",path:"game/builds/masteries/masteries.twig"},baseCls:"masteries",baseId:"masteries",targetEl:".gs-container",initView:function(){var c=this,a=Riot.DDragon.models.mastery.tree,d=c.masteryArrayToHash(c.model.getMasteries().items);c.items=[];for(var b in a){if(a.hasOwnProperty(b)){c.items.push({type:"Codex.view.game.builds.masteries.Tree",cls:"default-1-3",tree:b,tiers:a[b],masteries:d,model:c.model})}}c.callParent()},masteryArrayToHash:function(b){var a={};JSoop.each(b,function(c){a[c.get("id")]=c});return a}});JSoop.define("Codex.view.game.builds.items.Step",{extend:"Spine.view.formatter.FormatterView",requires:["Codex.formatter.field.Item","Codex.util.Formatters"],baseId:"build-step",baseCls:"build-step",template:{name:"Codex.view.game.builds.items.Step.template",path:"game/builds/items/step.twig"},formatter:{fields:[{name:"items",formatter:function(d,c,a){var b=[];JSoop.each(a.items,function(e){b.push({item:JSoop.create("Codex.formatter.field.Item").formatter(e.item,c,a),count:e.count,type:e.type,timestamp:Codex.util.Formatters.timeFormatMs(e.timestamp)})});return b}}]}});JSoop.define("Codex.view.game.builds.items.View",{extend:"Spine.view.container.Container",requires:["Codex.util.BuildParser","Codex.view.game.builds.items.Step"],baseId:"item-build",baseCls:"item-build",template:{name:"Codex.view.game.builds.items.View.template",path:"game/builds/items/view.twig"},targetEl:".build-container",initView:function(){var b=this,a=Codex.util.BuildParser.getBuildSteps(b.model);b.defaults={type:"Codex.view.game.builds.items.Step",model:b.model};b.items=[];JSoop.each(a,function(d,c){b.items.push({items:d,index:c})});b.addClass("clearfix");b.callParent(arguments)}});JSoop.define("Codex.view.game.builds.ParticipantSelector",{extend:"Marionette.ItemView",template:{name:"Codex.view.game.builds.ParticipantSelector.template",path:"game/builds/participant_selector.twig"},targetEl:".participant-sel",baseCls:"participant-selector",baseId:"participant-selector",vtype:"participant-selector",requires:["Codex.util.QueryString"],ui:{team1:".champions .team-100",team2:".champions .team-200"},events:{"click .champions img":"selectParticipant"},constructor:function(){var a=this;a.callParent(arguments)},selectParticipant:function(f){var c=this,a=jQuery(f.target),b=a.attr("player-id"),d;if(!a.hasClass("selected")){d=Codex.util.QueryString.getObjectFromQuery(location.hash);d.participant=b;c.trigger("selected",Codex.util.QueryString.getNewHashWithQuery(d))}},afterRender:function(){var c=this,b=c.model.getParticipants(),d=Codex.util.QueryString.getObjectFromQuery(location.hash),e,a;if(d.participant){e=d.participant}else{a=Codex.getContextUser().findParticipant(c.model.getParticipants());if(!a){a=c.model.getParticipants().items[0]}e=a.get("participantId")}b.each(function(h){var g=h.get("team"),i=h.get("champion"),f=h.get("participantId");Codex.util.DataDragon.getImg({model:"champion",version:h.getGame().get("version"),id:i,callback:function(j){var k=jQuery(j).attr("player-id",f);if(f===parseInt(e,10)){k.addClass("selected")}else{k.addClass("unselected")}switch(g){case 100:c.ui.team1.append(k.attr("data-team",100));break;case 200:c.ui.team2.append(k.attr("data-team",200));break}}})});c.callParent(arguments)}});JSoop.define("Codex.view.game.builds.View",{extend:"Spine.view.container.Container",requires:["Codex.view.game.builds.ParticipantSelector","Codex.view.game.builds.items.View","Codex.view.game.builds.masteries.View","Codex.view.game.builds.skills.View","Codex.view.game.builds.Runes","Codex.util.QueryString"],template:'<div class="builds"></div>',targetEl:".builds",initView:function(){var a=this;a.items=[{type:"Codex.view.game.builds.ParticipantSelector",model:a.model},{type:"Codex.view.game.builds.Runes",model:a.getParticipant()},{type:"Codex.view.game.builds.masteries.View",model:a.getParticipant()}];a.callParent(arguments)},afterRender:function(){var a=this;a.callParent(arguments);a.isRendered=true;a.model.getTimeline(a.onTimelineLoad,a)},onTimelineLoad:function(){var b=this,a=b.getParticipant();if(b.isRendered){b.add({type:"Codex.view.game.builds.items.View",model:a},1);b.add({type:"Codex.view.game.builds.skills.View",model:a},2)}else{b.items.splice(1,0,{type:"Codex.view.game.builds.items.View",model:a});b.items.splice(2,0,{type:"Codex.view.game.builds.skills.View",model:a})}},getParticipant:function(){var c=this,d=Codex.util.QueryString.getObjectFromQuery(location.hash),e,b,a;if(d.participant){e=d.participant}else{a=Codex.getContextUser().findParticipant(c.model.getParticipants());if(!a){a=c.model.getParticipants().items[0]}e=a.get("participantId")}b=c.model.getParticipants("Participants").find({participantId:parseInt(e,10)});if(b.length===1){return b[0]}}});JSoop.define("Codex.formatter.field.AssistIcons",{extend:"Spine.view.formatter.Field",field:"assists",formatter:function(d,c,a){var b=[];JSoop.each(d,function(e){var f=JSoop.create("Codex.formatter.field.ChampionIcon");b.push(f.formatter.call(f,e,c,a))});return b}});JSoop.define("Codex.view.game.breakdown.cards.FirstTower",{extend:"Spine.view.formatter.FormatterView",baseCls:"breakdown-card",template:{name:"Codex.view.game.breakdown.cards.FirstTower.template",path:"game/breakdown/first-tower.twig"},getVictim:function(){var c=this,b=c.model.get("buildingType"),a=(c.model.get("team")==="100")?"200":"100";switch(b){case"TOWER_BUILDING":return'<img src="'+Codex.util.Assets.eventIcon("turret_"+a)+'"/>';case"INHIBITOR_BUILDING":return'<img src="'+Codex.util.Assets.eventIcon("inhibitor_building_"+a)+'"/>';default:return Codex.util.I18n.trans(b)}},initView:function(){var b=this,c=b.model.get("killer"),a=b.model.get("assists");b.renderData={victim:b.getVictim(),timestamp:Codex.util.Formatters.timeFormatMs(b.model.get("timestamp"))};b.formatter={fields:[]};if(c){b.formatter.fields.push({type:"Codex.formatter.field.ChampionIcon",name:"killer",field:"killer"})}else{b.renderData.killer='<img src="'+Codex.util.Assets.eventIcon("minion_"+b.model.get("team"))+'"/>'}if(a){b.formatter.fields.push({type:"Codex.formatter.field.AssistIcons",name:"assists"})}}});JSoop.define("Codex.view.game.breakdown.cards.FirstAscended",{extend:"Spine.view.formatter.FormatterView",baseCls:"breakdown-card",template:{name:"Codex.view.game.breakdown.cards.FirstAscended.template",path:"game/breakdown/first-ascended.twig"},initView:function(){var b=this,a=b.model.get("ascended");b.renderData={timestamp:Codex.util.Formatters.timeFormatMs(b.model.get("timestamp")),ascended:a,marker:'<img src="'+Codex.util.Assets.eventIcon("champion_ascended_"+b.model.get("team"))+'"/>'};if(b.model.get("ascendedType")==="CHAMPION_ASCENDED"){b.formatter={fields:[{type:"Codex.formatter.field.ChampionIcon",name:"ascended",field:"ascended"}]}}}});JSoop.define("Codex.view.game.breakdown.cards.Stat",{extend:"Spine.view.formatter.FormatterView",baseCls:"breakdown-card",template:{name:"Codex.view.game.breakdown.cards.Stat.template",path:"game/breakdown/stat.twig"},initView:function(){var a=this,b=JSoop.create("Codex.formatter.field.ChampionIcon");a.renderData={};a.model=a.model.getParticipants().at(0);a.renderData.value=Codex.util.Formatters[a.form](a.data.val);a.renderData.champion=b.formatter.call(b,a.data.champion,a.renderData,a);a.renderData.name=Codex.util.I18n.trans(a.field)}});JSoop.define("Codex.view.game.breakdown.cards.FirstBlood",{extend:"Spine.view.formatter.FormatterView",baseCls:"breakdown-card",requires:["Codex.formatter.field.AssistIcons"],template:{name:"Codex.view.game.breakdown.cards.FirstBlood.template",path:"game/breakdown/first-blood.twig"},initView:function(){var b=this,c=b.model.get("killer"),a=b.model.get("assists");b.renderData={timestamp:Codex.util.Formatters.timeFormatMs(b.model.get("timestamp"))};b.formatter={fields:[{type:"Codex.formatter.field.ChampionIcon",name:"victim",field:"victim"}]};if(c){b.formatter.fields.push({type:"Codex.formatter.field.ChampionIcon",name:"killer",field:"killer"})}else{c='<img src="'+Codex.util.Assets.eventIcon("minion_"+b.model.get("team"))+'"/>'}if(a){b.formatter.fields.push({type:"Codex.formatter.field.AssistIcons",name:"assists"})}}});JSoop.define("Codex.view.game.breakdown.Cards",{extend:"Spine.view.container.Container",requires:["Codex.view.game.breakdown.cards.FirstBlood","Codex.view.game.breakdown.cards.FirstTower","Codex.view.game.breakdown.cards.FirstAscended","Codex.view.game.breakdown.cards.Stat"],destroy:function(){var a=this;JSoop.each(a.items,function(b){b.destroy()});a.callParent(arguments)},afterRender:function(){var f=this,e=true,d=true,g=true,c=f.$el[0],a=[],b;f.model.getTimeline(function(){f.model.getEvents().each(function(h){if(g&&a.length<2&&h.get("type")==="ASCENDED_EVENT"&&h.get("ascendedType")==="CHAMPION_ASCENDED"){b=JSoop.create("Codex.view.game.breakdown.cards.FirstAscended",{model:h,renderTo:c});a.push(b);g=false}if(e&&a.length<2&&h.get("type")==="CHAMPION_KILL"&&h.get("killer")!==undefined){b=JSoop.create("Codex.view.game.breakdown.cards.FirstBlood",{model:h,renderTo:c});a.push(b);e=false}if(d&&a.length<2&&h.get("type")==="BUILDING_KILL"){b=JSoop.create("Codex.view.game.breakdown.cards.FirstTower",{model:h,renderTo:c});a.push(b);d=false}});JSoop.iterate(f.cardData,function(i,h){if(i.val>1){b=JSoop.create("Codex.view.game.breakdown.cards.Stat",{data:i,model:f.model,form:f.cardStats[h].formatter,field:f.cardStats[h].field,renderTo:c});a.push(b)}});f.items=a})}});JSoop.define("Codex.view.game.breakdown.View",{extend:"Spine.view.container.Container",requires:["Codex.view.game.breakdown.Chart","Codex.view.game.breakdown.Cards"],template:{name:"Codex.view.game.breakdown.View.template",path:"game/breakdown/breakdown.twig"},baseCls:"match-breakdown",baseId:"match-breakdown",targetEl:".breakdown-area",stats:{ODIN:{kills:{field:"champion_kills",formatter:"numberFormat"},totalDamageDealtToChampions:{field:"total_damage_to_champions",formatter:"numberToK"},objectivePlayerScore:{field:"points_captured",formatter:"numberFormat"},totalPlayerScore:{field:"champion_score_title",formatter:"numberFormat"}},ASCENSION:{kills:{field:"champion_kills",formatter:"numberFormat"},totalDamageDealtToChampions:{field:"total_damage_to_champions",formatter:"numberToK"},relicsCaptured:{field:"relics_captured",formatter:"numberFormat"},totalPlayerScore:{field:"champion_score_title",formatter:"numberFormat"}},"default":{kills:{field:"champion_kills",formatter:"numberFormat"},goldEarned:{field:"gold_earned",formatter:"numberToK"},totalDamageDealtToChampions:{field:"total_damage_to_champions",formatter:"numberToK"},wardsPlaced:{field:"vision_items_placed",formatter:"numberFormat"},totalDamageDealt:{field:"damage_dealt",formatter:"numberToK"}}},cardStats:{ODIN:{largestMultiKill:{field:"largest_multi_kill",formatter:"numberFormat"},largestKillingSpree:{field:"largest_killing_spree",formatter:"numberFormat"}},ASCENSION:{largestMultiKill:{field:"largest_multi_kill",formatter:"numberFormat"},largestKillingSpree:{field:"largest_killing_spree",formatter:"numberFormat"}},"default":{largestMultiKill:{field:"largest_multi_kill",formatter:"numberFormat"},largestKillingSpree:{field:"largest_killing_spree",formatter:"numberFormat"}}},constructor:function(){var a=this;a.callParent(arguments);if("\v"==="v"){a.svgNotSupported=true;a.svgNotSupportedString=Codex.util.I18n.trans("svg_not_supported_msg")}},processStats:function(f){var g=this,e=g.model.getParticipants(),i=[{name:200,children:[]},{name:100,children:[]}],d={},h={},a=1,c=1,b;e.each(function(j){b=j.get("team");JSoop.iterate(g.stats[f],function(l,k){if(d[k]===undefined){d[k]={name:k,children:JSoop.clone(i)}}d[k].children[(b===100)?1:0].children.push({name:"player"+j.get("id"),val:j.get(k),player:(b===100)?a:c,championId:j.get("champion")})});JSoop.iterate(g.cardStats[f],function(l,k){if(h[k]===undefined||h[k].val<j.get(k)){h[k]={player:j.get("id"),val:j.get(k),champion:j.get("champion")}}});if(b===100){a=a+1}else{c=c+1}});if(Codex.formatter.field.Map.hasWards[g.model.get("map")]!==true){delete d.wardsPlaced}g.data=d;g.cardData=h},initView:function(){var c=this,d=c.model.get("mode"),b=0,a=[];if(c.stats[d]===undefined){d="default"}c.processStats(d);JSoop.iterate(c.data,function(e,f){if(b<4){a.push({type:"Codex.view.game.breakdown.Chart",nodes:e,formatter:c.stats[d][f].formatter,field:c.stats[d][f].field,model:c.model})}b=b+1});c.items=[{type:"Spine.view.container.Container",cls:"gs-container",items:[{type:"Spine.view.container.Container",cls:"breakdown-graphs default-3-5",items:a},{type:"Spine.view.container.Container",cls:"breakdown-cards default-2-5",items:[{type:"Codex.view.game.breakdown.Cards",model:c.model,cardStats:c.cardStats[d],cardData:c.cardData}]}]}]},afterRender:function(){var a=this;a.callParent(arguments);if(a.svgNotSupported===true){a.$el.find(".content-border").append('<div class="is-ie-text"><p>'+a.svgNotSupportedString||"</p></div>")}}});JSoop.define("Codex.view.graph.LineGraph",{extend:"Codex.view.graph.Graph",afterRender:function(){var a=this;a.canvas.el=a.createCanvas(a.canvas,a.getTargetEl()[0]);if(a.beforeGraphRender()===false){return}a.renderGraph()},renderBackground:function(b){var d=b.el,c=b.width,a=b.height;d.append("rect").attr("x",0).attr("y",0).attr("width",c).attr("height",a).attr("class","background")},renderMouseHover:function(b){var c=b.el,a=b.height;c.on("mouseover",function(){jQuery("svg .slider").css("display","block")}).on("mouseout",function(){jQuery("svg .slider").css("display","none")}).on("mousemove",function(){var d=d3.mouse(this)[0];jQuery("svg .slider").attr("x1",d).attr("x2",d)});c.append("line").attr("class","slider").attr("y1",0).attr("y2",a)},renderXAxis:function(d,a){var h=this,b=d.range,g=d.count,c=d.label||"",f=d3.svg.axis().scale(b).ticks(g).tickSize(a.height).tickSubdivide(true).tickFormat(d.format||function(i){return i}).tickPadding(5),e=h.createLayer({cls:"axis axis-x"},a);e.call(f);if(JSoop.isString(c)){c={text:c}}JSoop.applyIf(c,{x:35,y:5});e.append("text").attr("class","x label").attr("text-anchor","end").attr("x",a.width-c.x).attr("y",a.height-c.y).text(c.text)},renderYAxis:function(d,a){var h=this,b=d.range,g=d.count,c=d.label||"",f=d3.svg.axis().scale(b).ticks(g).innerTickSize(6).tickSize(-a.width).tickSubdivide(true).tickFormat(d.format||function(i){return i}).tickPadding(5).orient("left"),e=h.createLayer({cls:"axis axis-y"},a);e.append("svg:g").attr("transform","translate(0, 0)").append("svg:line").attr("x1",0).attr("x2",a.width).attr("y1",0).attr("y2",0);e.append("svg:g").attr("transform","translate(0, "+a.height+")").append("svg:line").attr("x1",0).attr("x2",a.width).attr("y1",0).attr("y2",0);e.call(f);if(JSoop.isString(c)){c={text:c}}JSoop.applyIf(c,{x:-35,y:13});e.append("text").attr("class","y label").attr("text-anchor","end").attr("y",c.y).attr("x",c.x).attr("transform","rotate(-90)").text(c.text)},renderPoints:function(j,c){var g=this,e=j.data,a=j.xRange,d=j.yRange,b=j.container,h=(j.points||{}).cls||"point",f=g.createLayer({cls:"points",clip:c||undefined},b),i;f.selectAll("points").data(e).enter().append("svg:circle").attr("cx",function(l,k){return a(k)}).attr("cy",function(k){return d(k)}).attr("r",5).attr("class",h).on("mouseover",function(){d3.select(this).attr("r",7).classed("hover",true)}).on("mouseout",function(){d3.select(this).attr("r",5).classed("hover",false)});if(j.points&&j.points.tooltip){i=g.initTooltip(j.points.tooltip);jQuery("circle",f[0][0]).each(function(k){var l=jQuery(this);l.hover(function(){Codex.showTip(i.fn.call(i.scope,j.data[k],k),l)},function(){Codex.hideTip()})})}},initTooltip:function(b){var a=this;if(!JSoop.isObject(b)){b={fn:b}}if(!b.scope){b.scope=a}if(JSoop.isString(b.fn)){b.fn=b.scope[b.fn]}return b},renderLine:function(b){var d=this,c=d.createLayer({cls:"line "+(b.cls||""),clip:b.clip||undefined},b.container),a=d3.svg.line().interpolate("monotone").x(function(f,e){return b.xRange(e)}).y(b.yRange);c.append("svg:path").attr("d",a(b.data))},createClipPath:function(b,a){var c=a.el;c.append("clipPath").attr("id",b.id).append("rect").attr("x",b.x||0).attr("y",b.y||0).attr("height",b.height).attr("width",b.width)},renderLines:function(){var a=this;JSoop.each(a.lines,function(b){a.renderLine(b);a.renderPoints(b,"graph-clip")})},renderGraph:function(){var a=this;a.graph=JSoop.apply(a.graph||{},{height:a.canvas.height-(a.canvas.padding.top+a.canvas.padding.bottom),width:a.canvas.width-(a.canvas.padding.left+a.canvas.padding.right),x:a.canvas.padding.left,y:a.canvas.padding.top});a.graph.el=a.createLayer(a.graph,a.canvas);a.readConfig();a.renderBackground(a.graph);a.createClipPath({height:a.graph.height+10,width:a.graph.width+10,x:-5,y:-5,id:"graph-clip"},a.graph);a.renderXAxis(a.axis.x,a.graph);a.renderYAxis(a.axis.y,a.graph);a.renderMouseHover(a.graph);a.beforeLineRender();a.renderLines();a.afterGraphRender()},beforeLineRender:JSoop.emptyFn});JSoop.define("Codex.view.game.graph.TimelineGraph",{extend:"Codex.view.graph.LineGraph",initView:function(){var a=this;a.canvas={height:400,width:930,padding:{left:30,right:20,top:20,bottom:20},cls:"line-graph"}},formatGold:function(b){var a=JSoop.create("Codex.formatter.field.Gold");return a.formatter(b,{},this)},formatDuration:function(a){var b=d3.time.format((a<60)?"%-M:%S":"%-H:%M:%S");return b(new Date(2014,0,1,0,a))},getMin:function(a){return d3.min(a)},getMax:function(a){return d3.max(a)},beforeGraphRender:function(){var a=this;a.game.getTimeline(function(){var d=a.getData(),c=a.getMin(d),b=a.getMax(d);a.dataCache=d;a.onTimelineLoad(d,c,b);a.renderGraph()});return false},onTimelineLoad:JSoop.emptyFn});JSoop.define("Codex.view.game.graph.EventChampionKill",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.graph.EventChampionKill.template",path:"game/graph/event-kill.twig"},baseCls:"event-champion-kill",formatter:{fields:[{type:"Codex.formatter.field.ChampionIcon",name:"killer",field:"killer"},{type:"Codex.formatter.field.ChampionIcon",name:"victim",field:"victim"}]}});JSoop.define("Codex.view.game.graph.ScoreAdvantage",{extend:"Codex.view.game.graph.TimelineGraph",title:Codex.util.I18n.trans("score_advantage_title"),onTimelineLoad:function(d,b,a){var c=this;if(Math.abs(b)>Math.abs(a)){a=Math.abs(b)}else{b=-a}a=(Math.ceil(a/5))+a;b=-a;c.axis={x:{format:c.formatDuration,count:(d.length<60)?d.length/2:d.length/3,label:Codex.util.I18n.trans("axis_label_time")},y:{format:function(e){return Math.abs(e)},domain:{max:a,min:b},label:{text:Codex.util.I18n.trans("axis_label_side_score"),x:-10}}};c.lines={data:d,config:{cls:"score-advantage",clip:"graph-clip",points:{cls:function(f){var e="point ";if(f<0){e=e+"team-2"}else{if(f>0){e=e+"team-1"}}return e},tooltip:function(g,j){var i=Math.abs(g),h=c.formatDuration(j),f,e;if(g<0){e=Codex.util.I18n.trans("team_purple")}else{e=Codex.util.I18n.trans("team_blue")}f=Codex.util.I18n.trans("score_advantage_tip",{ahead:e,score:i,time:h});if(g===0){f=Codex.util.I18n.trans("even_tip",{time:h})}return f}}},range:{y:{domain:{min:a,max:b}}}}},getData:function(){var b=this,a=b.game,c=a.getTeams(),e={},d=[];c.each(function(g){var f=g.getParticipants();e[g.get("id")]=[];g=e[g.get("id")];f.each(function(h){h.getTimeline().each(function(j,i){if(g[i]===undefined){g[i]=j.get("teamScore")}else{return}})})});JSoop.each(e["100"],function(g,f){d[f]=g-e["200"][f]});return d},renderAreas:function(c){var f=this,b=f.lines[0],a=b.xRange,h=b.yRange,g=b.data,e=d3.svg.area().interpolate("monotone").x(function(k,j){return a(j)}).y0(h(0)).y1(function(i){return h(i)}),d;f.createClipPath({height:h(0),width:c.width,id:"team-1-clip"},c);f.createClipPath({height:c.height-h(0),width:c.width,x:0,y:h(0),id:"team-2-clip"},c);d=f.createLayer({cls:"area team-1",clip:"team-1-clip"},c);d.append("path").datum(g).attr("d",e);d=f.createLayer({cls:"area team-2",clip:"team-2-clip"},c);d.append("path").datum(g).attr("d",e)},renderSmashLines:function(){var b=this,a=b.createLayer({cls:"smash"},b.graph);a.append("line").attr("x1",0).attr("x2",b.graph.width).attr("y1",b.lines[0].yRange(10000)).attr("y2",b.lines[0].yRange(10000)).attr("stroke-dasharray","10, 5");a.append("line").attr("x1",0).attr("x2",b.graph.width).attr("y1",b.lines[0].yRange(-10000)).attr("y2",b.lines[0].yRange(-10000)).attr("stroke-dasharray","10, 5")},beforeLineRender:function(){var a=this;a.renderAreas(a.graph);if(a.smash){a.renderSmashLines()}}});JSoop.define("Codex.view.game.graph.TeamScore",{extend:"Codex.view.game.graph.TimelineGraph",title:Codex.util.I18n.trans("team_score_title"),getMin:function(a){return d3.min([d3.min(a[0]),d3.min(a[1])])},getMax:function(a){return d3.max([d3.max(a[0]),d3.max(a[1])])},formatTooltip:function(b,e){var a=this,d=b,c=a.formatDuration(e);return Codex.util.I18n.trans("score_at_time",{score:d,time:c})},onTimelineLoad:function(d,b,a){var c=this;c.axis={x:{format:c.formatDuration,count:(d[0].length<60)?d[0].length/2:d[0].length/3,label:Codex.util.I18n.trans("axis_label_time")},y:{format:function(e){return Math.abs(e)},count:11,label:Codex.util.I18n.trans("axis_label_total_score")}};c.lines=[{data:d[0],config:{cls:"team-1-score",clip:"graph-clip",points:{cls:"point team-1",tooltip:{fn:c.formatTooltip,scope:c}}},range:{y:{domain:{min:a,max:b}}}},{data:d[1],config:{cls:"team-2-score",clip:"graph-clip",points:{cls:"point team-2",tooltip:{fn:c.formatTooltip,scope:c}}},range:{y:{domain:{min:a,max:b}}}}]},getData:function(){var b=this,a=b.game,c=a.getTeams(),d={};c.each(function(f){var e=f.getParticipants();d[f.get("id")]=[];f=d[f.get("id")];e.each(function(g){var h=g.getTimeline();h.each(function(j,i){if(f[i]===undefined){f[i]=j.get("teamScore")}else{return}})})});return[d[100],d[200]]}});JSoop.define("Codex.view.game.graph.ChampionGoldPortrait",{extend:"Spine.view.formatter.FormatterView",template:['<div class="icon">{{ championIcon }}</div>','<div class="champion-marker team-{{ team }} champion-{{ player }}"></div>'],baseCls:"champion-gold-portrait",formatter:{fields:[{type:"Codex.formatter.field.ChampionIcon"}]},ui:{icon:".icon .champion-icon"},initView:function(){var a=this;a.callParent(arguments);a.addClass("team-"+a.model.get("team"));a.addClass("champion-"+a.index);a.renderData={team:a.team,player:a.playerIndex};a.isActive=true},afterRender:function(){var a=this;a.callParent(arguments);a.ui.icon.on("click",function(b){if(b.ctrlKey||b.metaKey){a.owner.allSelect()}else{if(b.shiftKey){a.owner.teamSelect(a.model.get("team"))}else{a.onClick()}}})},toggle:function(){var a=this;if(a.isActive){a.deactivate()}else{a.activate()}},activate:function(){var a=this;a.removeClass("deactive");a.isActive=true;a.trigger("select",a,a.index)},deactivate:function(){var a=this;a.addClass("deactive");a.isActive=false;a.trigger("deselect",a,a.index)},onClick:function(){var a=this;a.toggle()}});JSoop.define("Codex.view.game.graph.ChampionScore",{extend:"Codex.view.game.graph.TimelineGraph",requires:["Codex.view.game.graph.ChampionGoldPortrait"],baseCls:"champion-score",title:Codex.util.I18n.trans("champion_score_title"),getMin:function(){return 0},getMax:function(b){var a=0;JSoop.each(b,function(e){var c=d3.max(e);if(c>a){a=c}});return a},onTimelineLoad:function(h,e,a){var g=this,d=g.game.getParticipants(),f=0,b=0,c;g.axis={x:{format:g.formatDuration,count:(h[0].length<60)?h[0].length/2:h[0].length/3,label:Codex.util.I18n.trans("axis_label_time")},y:{count:11,domain:{max:e,min:a},label:Codex.util.I18n.trans("axis_label_total_score")}};g.lines=[];JSoop.each(h,function(i,j){c=d.at(j).get("team");g.lines.push({data:i,config:{cls:"champion-score-"+j,clip:"graph-clip",points:{cls:"point champion-score-"+j+" team-"+c+" player-"+((c===100)?f:b),tooltip:function(k,n){var m=k,l=g.formatDuration(n);return Codex.util.I18n.trans("score_at_time",{score:m,time:l})}}},range:{y:{domain:{min:a,max:e}}}});if(c===100){f=f+1}else{b=b+1}})},getData:function(){var a=this,b=[],c;a.game.getTeams().each(function(d){d.getParticipants().each(function(e){c=[];e.getTimeline().each(function(f){c.push(f.get("dominionScore"))});b.push(c)})});return b},afterGraphRender:function(){var e=this,c=Codex.getContextUser(),b=[{type:"Spine.view.container.Container",cls:"team-100",template:'<div class="team-marker"></div><div class="champions"></div>',items:[],targetEl:".champions"},{type:"Spine.view.container.Container",cls:"team-200",template:'<div class="team-marker"></div><div class="champions"></div>',items:[],targetEl:".champions"}],d=0,a=0;e.callParent(arguments);if(!c.findParticipant(e.game.getParticipants())){c=null}e.game.getTeams().each(function(g,f){var h=g.getParticipants().getCount();g.getParticipants().each(function(j,l){var m=(f*h)+l,k=j.get("team");b[f].items.push({type:"Codex.view.game.graph.ChampionGoldPortrait",model:j,index:m,playerIndex:(k===100)?d:a,teamIndex:f,team:k,listeners:{select:function(n,i){e.$el.find("svg .champion-score-"+i).css("display","block")},deselect:function(n,i){e.$el.find("svg .champion-score-"+i).css("display","none")},afterrender:{fn:function(i){if(c&&!c.isParticipant(j)){i.deactivate()}},single:true}}});b[f].allSelect=function(){var i=true;JSoop.each(e.portraitContainer.items[0].items,function(n){if(!n.isActive){i=false;return false}});if(i){JSoop.each(e.portraitContainer.items[1].items,function(n){if(!n.isActive){i=false;return false}})}e.portraitContainer.items[0].teamSelect(i?"deactivate":"activate");e.portraitContainer.items[1].teamSelect(i?"deactivate":"activate")};b[f].teamSelect=e.teamSelect;if(k===100){d=d+1}else{a=a+1}})});e.portraitContainer=JSoop.create("Spine.view.container.Container",{cls:"portrait-container",items:b,renderTo:e.$el})},teamSelect:function(d){var c=this,e="deactivate",b=c.items.length,a;if(d!==undefined){e=d}else{for(a=0;a<b;a=a+1){if(!c.items[a].isActive){e="activate"}}}for(a=0;a<b;a=a+1){c.items[a][e]()}}});JSoop.define("Codex.view.game.graph.EventBuildingKill",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.graph.EventBuildingKill.template",path:"game/graph/event-kill.twig"},baseCls:"event-building-kill",getVictim:function(){var c=this,b=c.model.get("buildingType"),a=(c.model.get("team")==="100")?"200":"100";switch(b){case"TOWER_BUILDING":return'<img src="'+Codex.util.Assets.eventIcon("turret_"+a)+'"/>';case"INHIBITOR_BUILDING":return'<img src="'+Codex.util.Assets.eventIcon("inhibitor_building_"+a)+'"/>';default:return Codex.util.I18n.trans(b)}},initView:function(){var a=this,b=a.model.get("killer");a.renderData={victim:a.getVictim()};if(b){a.formatter={fields:[{type:"Codex.formatter.field.ChampionIcon",name:"killer",field:"killer"}]}}else{a.renderData.killer='<img src="'+Codex.util.Assets.eventIcon("minion_"+a.model.get("team"))+'"/>'}},afterRender:function(){var a=this;a.callParent(arguments)}});JSoop.define("Codex.view.game.graph.EventEliteMonsterKill",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.graph.EventEliteMonsterKill.template",path:"game/graph/event-kill.twig"},baseCls:"event-champion-kill",formatter:{fields:[{type:"Codex.formatter.field.ChampionIcon",name:"killer",field:"killer"}]},initView:function(){var b=this,a=b.model.get("monsterType").toLowerCase(),c=b.model.get("team");b.renderData={victim:'<img src="'+Codex.util.Assets.eventIcon(a+"_"+c)+'"/>'}}});JSoop.define("Codex.view.game.graph.EventAscended",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.graph.EventAscended.template",path:"game/graph/portrait.twig"},baseCls:"event-ascended",initView:function(){var b=this,a=b.model.get("ascended");b.renderData={ascended:a,marker:'<img src="'+Codex.util.Assets.eventIcon("champion_ascended_"+b.model.get("team"))+'"/>'};if(b.model.get("ascendedType")==="CHAMPION_ASCENDED"){b.formatter={fields:[{type:"Codex.formatter.field.ChampionIcon",name:"champion",field:"ascended"}]}}}});JSoop.define("Codex.view.game.graph.EventCapturePoint",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.graph.EventCapturePoint.template",path:"game/graph/portrait.twig"},baseCls:"event-ascended",initView:function(){var a=this;a.renderData={marker:'<img src="'+Codex.util.Assets.eventIcon("captured_"+a.model.get("team"))+'"/>'};if(a.model.get("participantId")>0&&a.model.get("eventType")==="CAPTURED"){a.formatter={fields:[{type:"Codex.formatter.field.ChampionIcon",name:"champion",field:"participantId"}]}}}});JSoop.define("Codex.view.game.graph.EventTeamSummary",{extend:"Spine.view.container.Container",requires:["Codex.view.game.graph.EventChampionKill","Codex.view.game.graph.EventBuildingKill","Codex.view.game.graph.EventEliteMonsterKill","Codex.view.game.graph.EventAscended","Codex.view.game.graph.EventCapturePoint"],baseCls:"team-summary",initView:function(){var a=this;a.items=[{cls:"team-marker"}];a.addClass("team-"+a.team);JSoop.each(a.events,function(b){switch(b.get("type")){case"CHAMPION_KILL":a.items.push({type:"Codex.view.game.graph.EventChampionKill",model:b});break;case"BUILDING_KILL":a.items.push({type:"Codex.view.game.graph.EventBuildingKill",model:b});break;case"ELITE_MONSTER_KILL":a.items.push({type:"Codex.view.game.graph.EventEliteMonsterKill",model:b});break;case"ASCENDED_EVENT":a.items.push({type:"Codex.view.game.graph.EventAscended",model:b});break;case"CAPTURE_POINT":a.items.push({type:"Codex.view.game.graph.EventCapturePoint",model:b});break}});if(a.items.length===1){a.$el.css("display","none")}}});JSoop.define("Codex.view.game.graph.EventTip",{extend:"Spine.view.container.Container",requires:["Codex.view.game.graph.EventTeamSummary"],baseCls:"event-tip",initView:function(){var a=this;a.items=[{type:"Codex.view.game.graph.EventTeamSummary",team:100,events:a.team1Events},{type:"Codex.view.game.graph.EventTeamSummary",team:200,events:a.team2Events}]}});JSoop.define("Codex.view.game.graph.EventGraph",{extend:"Marionette.ItemView",requires:["Codex.view.game.graph.EventTip"],baseCls:"event-graph",width:880,afterRender:function(){var a=this;a.$el.append('<div class="team-100-kills-bg">'+Codex.util.I18n.trans("KILLS")+"</div>");a.$el.append('<div class="team-100-objectives-bg">'+Codex.util.I18n.trans("OBJECTIVES")+"</div>");a.$el.append('<div class="team-200-kills-bg">'+Codex.util.I18n.trans("KILLS")+"</div>");a.$el.append('<div class="team-200-objectives-bg">'+Codex.util.I18n.trans("OBJECTIVES")+"</div>");a.model.getTimeline(function(){a.renderGraph();a.renderMouseHover();a.renderFrames()});a.callParent(arguments)},renderFrames:function(){var b=this,c=b.model.getParticipants().at(0).getTimeline(),a=b.createLayer({cls:"frames"},b.canvas);c.each(function(f,d){if(d===c.getCount()-1){return}var e=a.append("rect").attr("x",b.xRange(d)).attr("y",0).attr("width",b.frameWidth).attr("height",80).attr("fill","transparent");if(b.data["100"][d].events.length===0&&b.data["200"][d].events.length===0){return}e.on("mouseover",function(){Codex.showTip(b.renderTip(d),this)});e.on("mouseout",function(){Codex.hideTip()})})},renderMouseHover:function(){var a=this;a.canvas.on("mouseover",function(){jQuery("svg .slider").css("display","block")}).on("mouseout",function(){jQuery("svg .slider").css("display","none")}).on("mousemove",function(){var b=d3.mouse(this)[0];jQuery("svg .slider").attr("x1",b).attr("x2",b)});a.canvas.append("line").attr("class","slider").attr("y1",0).attr("x1",50).attr("x2",50).attr("y2",a.height)},renderGraph:function(){var c=this,d=c.getData(),b=0,a=c.model.getParticipants().at(0).getTimeline().getCount()-1;c.sectionHeight=20;c.height=c.sectionHeight*4;c.canvas=d3.select(c.$el[0]).append("svg:svg").attr("height",c.height).attr("width",c.width);c.xRange=d3.scale.linear().domain([b,a]).range([0,c.width]);c.data=d;c.frameWidth=c.xRange(1)-c.xRange(0);c.renderTeamObjectives("100",0);c.renderTeamKills("100",c.sectionHeight+(c.sectionHeight/2));c.renderTeamKills("200",(c.sectionHeight*2)+(c.sectionHeight/2));c.renderTeamObjectives("200",c.sectionHeight*3)},renderLines:function(){var e=this,a=e.xRange,d=e.data["100"].length/2,c=d3.svg.axis().scale(a).ticks(d).tickSize(e.height).tickSubdivide(true).tickFormat(function(){return""}).tickPadding(5),b=e.createLayer({cls:"axis axis-x"},e.canvas);b.call(c)},createLayer:function(b,a){var d=a,c;JSoop.applyIf(b,{x:0,y:0});c=d.append("svg:g").attr("transform","translate("+b.x+", "+b.y+")");if(b.cls){c.attr("class",b.cls)}if(b.clip){c.attr("clip-path","url(#"+b.clip+")")}return c},renderTeamKills:function(a,e){var d=this,b=d.createLayer({cls:"team-"+a+"-kills"},d.canvas),c=d.sectionHeight/2;b.selectAll("points").data(d.data[a]).enter().append("svg:circle").attr("cx",function(f){return d.xRange(f.frame)-(d.frameWidth/2)}).attr("cy",e).attr("r",function(f){return d3.min([c*(f.kills.length/5),c])}).attr("class","point kills team-"+a)},objectiveType:function(b){var c=b.get("type"),a;if(c==="BUILDING_KILL"){a=b.get("buildingType");if(a==="TOWER_BUILDING"){return b.get("towerType")}else{return a}}else{if(c==="ELITE_MONSTER_KILL"){return b.get("monsterType")}else{if(c==="ASCENDED_EVENT"){return b.get("ascendedType")}else{if(c==="CAPTURE_POINT"){return b.get("eventType")}}}}},objectivePriority:function(a){var b=this;var c={BARON_NASHOR:3,VILEMAW:3,DRAGON:2,INHIBITOR_BUILDING:1,CAPTURED:1,NEXUS_TURRET:0,OUTER_TURRET:0,INNER_TURRET:0,BASE_TURRET:0};return c[b.objectiveType(a)]},highestPriorityObjective:function(a){var b=this,c=a[0];JSoop.each(a,function(d){if(b.objectivePriority(d)>b.objectivePriority(c)){c=d}});return c},objectiveImage:function(b,e){var c=this,a=b.get("team"),d=c.objectiveType(b).toLowerCase();if(d.indexOf("turret")!==-1){d="turret"}d=d+"_"+a;if(e){d=d+"_plus"}d=Codex.util.Assets.eventIcon(d);return d},renderTeamObjectives:function(a,d){var c=this,b=c.createLayer({cls:"team-"+a+"-objectives"},c.canvas);b.selectAll("points").data(c.data[a]).enter().append("svg:image").attr("x",function(e){return c.xRange(e.frame-1)}).attr("y",d).attr("width",c.frameWidth).attr("height",c.sectionHeight).attr("xlink:href",function(f){if(f.objectives.length>0){var e=c.highestPriorityObjective(f.objectives);if(f.objectives.length>1){return c.objectiveImage(e,true)}else{return c.objectiveImage(e,false)}}}).attr("class",function(e){if(e.objectives.length===0){return"no-events"}return""})},getData:function(){var c=this,d={"100":[],"200":[]},e=c.model.getParticipants().at(0).getTimeline(),b=c.model.getEvents(),a={BUILDING_KILL:true,ELITE_MONSTER_KILL:true,ASCENDED_EVENT:true,CAPTURE_POINT:true};e.each(function(h,f){var g=b.find({frameTimestamp:h.get("timestamp")});d["100"][f]={frame:f,kills:[],objectives:[],events:[]};d["200"][f]={frame:f,kills:[],objectives:[],events:[]};JSoop.each(g,function(j){var i=j.get("team");if(i===undefined){return}if(j.get("type")==="CHAMPION_KILL"){if(!j.get("killer")){return}d[i][f].kills.push(j)}else{if(a[j.get("type")]){d[i][f].objectives.push(j)}}d[j.get("team")][f].events.push(j)})});d["100"].shift();d["200"].shift();return d},renderTip:function(b){var a=this;return JSoop.create("Codex.view.game.graph.EventTip",{team1Events:a.data["100"][b].events,team2Events:a.data["200"][b].events})}});JSoop.define("Codex.view.game.graph.TeamGold",{extend:"Codex.view.game.graph.TimelineGraph",title:Codex.util.I18n.trans("team_gold_title"),getMin:function(a){return d3.min([d3.min(a[0]),d3.min(a[1])])},getMax:function(a){return d3.max([d3.max(a[0]),d3.max(a[1])])},formatTooltip:function(c,e){var b=this,a=b.formatGold(c),d=b.formatDuration(e);return Codex.util.I18n.trans("gold_at_time",{gold:a,time:d})},onTimelineLoad:function(d,b,a){var c=this;c.axis={x:{format:c.formatDuration,count:(d[0].length<60)?d[0].length/2:d[0].length/3,label:Codex.util.I18n.trans("axis_label_time")},y:{format:function(e){e=Math.abs(e);if(e>=1000){return Codex.util.Formatters.numberToK(e,0)}return e},count:11,label:Codex.util.I18n.trans("axis_label_total_gold")}};c.lines=[{data:d[0],config:{cls:"team-1-gold",clip:"graph-clip",points:{cls:"point team-1",tooltip:{fn:c.formatTooltip,scope:c}}},range:{y:{domain:{min:a,max:b}}}},{data:d[1],config:{cls:"team-2-gold",clip:"graph-clip",points:{cls:"point team-2",tooltip:{fn:c.formatTooltip,scope:c}}},range:{y:{domain:{min:a,max:b}}}}]},getData:function(){var c=this,a=c.game,d=a.getTeams(),b={};d.each(function(f){var e=f.getParticipants();b[f.get("id")]=[];f=b[f.get("id")];e.each(function(g){var h=g.getTimeline();h.each(function(j,i){if(f[i]===undefined){f[i]=0}f[i]=f[i]+j.get("totalGold")})})});return[b[100],b[200]]}});JSoop.define("Codex.view.game.graph.GoldAdvantage",{extend:"Codex.view.game.graph.TimelineGraph",title:Codex.util.I18n.trans("gold_advantage_title"),onTimelineLoad:function(e,c,a){var d=this;if(Math.abs(c)>Math.abs(a)){a=Math.abs(c)}else{c=-a}a=(Math.ceil(a/1000)+1)*1000;c=-a;var b=a/1000;d.axis={x:{format:d.formatDuration,count:(e.length<60)?e.length/2:e.length/3,label:Codex.util.I18n.trans("axis_label_time")},y:{format:function(f){f=Math.abs(f);if(f>=1000){return Codex.util.Formatters.numberToK(f,0)}return f},count:b,domain:{max:c,min:a},label:{text:Codex.util.I18n.trans("axis_label_side_gold"),x:-10}}};d.lines={data:e,config:{cls:"gold-advantage",clip:"graph-clip",points:{cls:function(g){var f="point ";if(g<0){f=f+"team-2"}else{if(g>0){f=f+"team-1"}}return f},tooltip:function(i,k){var f=d.formatGold(Math.abs(i)),j=d.formatDuration(k),h,g;if(i<0){g=Codex.util.I18n.trans("team_purple")}else{g=Codex.util.I18n.trans("team_blue")}h=Codex.util.I18n.trans("gold_advantage_tip",{ahead:g,gold:f,time:j});if(i===0){h=Codex.util.I18n.trans("even_tip",{time:j})}return h}}},range:{y:{domain:{min:a,max:c}}}}},getData:function(){var d=this,a=d.game,e=a.getTeams(),c={},b=[];e.each(function(g){var f=g.getParticipants();c[g.get("id")]=[];g=c[g.get("id")];f.each(function(h){h.getTimeline().each(function(j,i){if(g[i]===undefined){g[i]=0}g[i]=g[i]+j.get("totalGold")})})});JSoop.each(c["100"],function(g,f){b[f]=g-c["200"][f]});return b},renderAreas:function(c){var f=this,b=f.lines[0],a=b.xRange,h=b.yRange,g=b.data,e=d3.svg.area().interpolate("monotone").x(function(k,j){return a(j)}).y0(h(0)).y1(function(i){return h(i)}),d;f.createClipPath({height:h(0),width:c.width,id:"team-1-clip"},c);f.createClipPath({height:c.height-h(0),width:c.width,x:0,y:h(0),id:"team-2-clip"},c);d=f.createLayer({cls:"area team-1",clip:"team-1-clip"},c);d.append("path").datum(g).attr("d",e);d=f.createLayer({cls:"area team-2",clip:"team-2-clip"},c);d.append("path").datum(g).attr("d",e)},renderSmashLines:function(){var b=this,a=b.createLayer({cls:"smash"},b.graph);a.append("line").attr("x1",0).attr("x2",b.graph.width).attr("y1",b.lines[0].yRange(10000)).attr("y2",b.lines[0].yRange(10000)).attr("stroke-dasharray","10, 5");a.append("line").attr("x1",0).attr("x2",b.graph.width).attr("y1",b.lines[0].yRange(-10000)).attr("y2",b.lines[0].yRange(-10000)).attr("stroke-dasharray","10, 5")},beforeLineRender:function(){var a=this;a.renderAreas(a.graph);if(a.smash){a.renderSmashLines()}}});JSoop.define("Codex.view.game.graph.ChampionGold",{extend:"Codex.view.game.graph.TimelineGraph",requires:["Codex.view.game.graph.ChampionGoldPortrait"],baseCls:"champion-gold",title:Codex.util.I18n.trans("champion_gold_title"),getMin:function(){return 0},getMax:function(b){var a=0;JSoop.each(b,function(e){var c=d3.max(e);if(c>a){a=c}});return a},onTimelineLoad:function(h,e,a){var g=this,d=g.game.getParticipants(),f=0,b=0,c;g.axis={x:{format:g.formatDuration,count:(h[0].length<60)?h[0].length/2:h[0].length/3,label:Codex.util.I18n.trans("axis_label_time")},y:{format:function(i){return Codex.util.Formatters.numberToK(i,0)},count:11,domain:{max:e,min:a},label:Codex.util.I18n.trans("axis_label_total_gold")}};g.lines=[];JSoop.each(h,function(i,j){c=d.at(j).get("team");g.lines.push({data:i,config:{cls:"champion-gold-"+j,clip:"graph-clip",points:{cls:"point champion-gold-"+j+" team-"+c+" player-"+((c===100)?f:b),tooltip:function(l,n){var k=g.formatGold(l),m=g.formatDuration(n);return Codex.util.I18n.trans("gold_at_time",{gold:k,time:m})}}},range:{y:{domain:{min:a,max:e}}}});if(c===100){f=f+1}else{b=b+1}})},getData:function(){var a=this,b=[],c;a.game.getTeams().each(function(d){d.getParticipants().each(function(e){c=[];e.getTimeline().each(function(f){c.push(f.get("totalGold"))});b.push(c)})});return b},afterGraphRender:function(){var e=this,c=Codex.getContextUser(),b=[{type:"Spine.view.container.Container",cls:"team-100",template:'<div class="team-marker"></div><div class="champions"></div>',items:[],targetEl:".champions"},{type:"Spine.view.container.Container",cls:"team-200",template:'<div class="team-marker"></div><div class="champions"></div>',items:[],targetEl:".champions"}],d=0,a=0;e.callParent(arguments);if(!c.findParticipant(e.game.getParticipants())){c=null}e.game.getTeams().each(function(g,f){var h=g.getParticipants().getCount();g.getParticipants().each(function(j,l){var m=(f*h)+l,k=j.get("team");b[f].items.push({type:"Codex.view.game.graph.ChampionGoldPortrait",model:j,index:m,playerIndex:(k===100)?d:a,teamIndex:f,team:k,listeners:{select:function(n,i){e.$el.find("svg .champion-gold-"+i).css("display","block")},deselect:function(n,i){e.$el.find("svg .champion-gold-"+i).css("display","none")},afterrender:{fn:function(i){if(c&&!c.isParticipant(j)){i.deactivate()}},single:true}}});b[f].allSelect=function(){var i=true;JSoop.each(e.portraitContainer.items[0].items,function(n){if(!n.isActive){i=false;return false}});if(i){JSoop.each(e.portraitContainer.items[1].items,function(n){if(!n.isActive){i=false;return false}})}e.portraitContainer.items[0].teamSelect(i?"deactivate":"activate");e.portraitContainer.items[1].teamSelect(i?"deactivate":"activate")};b[f].teamSelect=e.teamSelect;if(k===100){d=d+1}else{a=a+1}})});e.portraitContainer=JSoop.create("Spine.view.container.Container",{cls:"portrait-container",items:b,renderTo:e.$el})},teamSelect:function(d){var c=this,e="deactivate",b=c.items.length,a;if(d!==undefined){e=d}else{for(a=0;a<b;a=a+1){if(!c.items[a].isActive){e="activate"}}}for(a=0;a<b;a=a+1){c.items[a][e]()}}});JSoop.define("Codex.view.game.graph.Switcher",{extend:"Spine.view.container.Container",requires:["Codex.view.game.graph.ChampionGold","Codex.view.game.graph.GoldAdvantage","Codex.view.game.graph.TeamGold","Codex.view.game.graph.EventGraph","Codex.view.game.graph.ScoreAdvantage","Codex.view.game.graph.TeamScore","Codex.view.game.graph.ChampionScore"],baseCls:"graph-switcher",template:['<div class="content-border">','<header class="header-primary">',"<h1></h1>",'<nav id="map-switcher" class="header-links">',"<ul>","<li>",'<a href="#">',"<span>"+Codex.util.I18n.trans("select_a_graph_title")+"</span>",'<div class="icon icon-arrow-down-light"><em></em></div>',"</a>",'<ul class="dropdown-menu"></ul>',"</li>","</ul>","</nav>",'<div class="event-target"></div>',"</header>",'<div class="white-stone"></div>',"</div>"],targetEl:".white-stone",ui:{link:"nav > ul > li > a",title:"header > h1",dropdown:"nav > ul > li > ul",events:".event-target"},constructor:function(){var a=this;a.callParent(arguments);if("\v"==="v"){a.svgNotSupported=true;a.svgNotSupportedString=Codex.util.I18n.trans("svg_not_supported_msg")}},initView:function(){var a=this;a.items=a.graphs},afterRender:function(){var a=this;a.callParent(arguments);a.activeItem=0;a.ui.title.html(a.items[0].title);JSoop.each(a.items,function(c,b){var d=jQuery('<li><a href="#">'+c.title+"</a></li>").appendTo(a.ui.dropdown);d.on("click",function(f){a.ui.dropdown.css("display","none");a.items[a.activeItem].$el.css("display","none");c.$el.css("display","block");a.ui.title.html(c.title);a.activeItem=b;f.preventDefault()});if(b!==0){c.$el.css("display","none")}});a.ui.link.on("click",function(b){if(a.ui.dropdown.css("display")==="none"){a.ui.dropdown.css("display","block")}else{a.ui.dropdown.css("display","none")}b.preventDefault()});JSoop.create("Codex.view.game.graph.EventGraph",{model:a.game,renderTo:a.ui.events});if(a.svgNotSupported===true){a.$el.find(".content-border").append('<div class="is-ie-text"><p>'+a.svgNotSupportedString||"</p></div>")}}});JSoop.define("Codex.util.Share",{singleton:true,share:function(d){var f=640,a=395,e=(window.screen.width/2)-((f/2)+10),c=(window.screen.height/2)-((a/2)+50),b="height="+a+",width="+f+"left="+e+",top="+c+",screenX="+e+",screenY="+c+",toolbar=no,menubar=no,scrollbars=no,location=no,directories=no";window.open(d,"_blank",b);return false},facebook:function(b){var c=this,a="http://www.facebook.com/sharer.php?u="+encodeURIComponent(b);Codex.util.Analytics.fire("share_facebook");c.share(a)},twitter:function(a,c){var b=this,d="https://twitter.com/share?text="+encodeURIComponent(c+" #LeagueOfLegends")+"&url="+encodeURIComponent(a);Codex.util.Analytics.fire("share_twitter");b.share(d)},vk:function(b){var c=this,a="http://vk.com/share.php?url="+encodeURIComponent(b);Codex.util.Analytics.fire("share_vk");c.share(a)},mail:function(){Codex.util.Analytics.fire("share_mail")}});JSoop.define("Codex.util.RequestPromise",{mixins:{observable:"JSoop.mixins.Observable",configurable:"JSoop.mixins.Configurable"},isLoading:false,requestCount:0,config:{defaults:{headers:{}}},constructor:function(a){var b=this;b.initMixin("configurable",[a]);b.initMixin("observable");if(b.autoLoad){b.load()}},load:function(){var a=this;if(a.isLoading){return}a.requestCount=a.requestCount+1;jQuery.ajax({url:a.url,headers:a.headers,dataType:"json",success:JSoop.bind(a.onXHRSuccess,a),error:JSoop.bind(a.onXHRError,a)})},destroy:function(){var a=this;a.removeAllListeners()},onXHRSuccess:function(c,a){var b=this;b.fireEvent("load",b,c,a);b.fireEvent("complete",b)},onXHRError:function(d,a,b){var c=this;if(!c.retryXHR()){c.fireEvent("error",c,d.status,b)}},retryXHR:function(){var a=this;a.fireEvent("retry",a);if(a.retry&&a.requestCount<=8){setTimeout(function(){a.load()},(Math.min((Math.pow(2,a.requestCount)*500),60000)));return true}return false}});JSoop.define("Codex.util.ACS",{singleton:true,requires:["Codex.util.RequestPromise","Codex.util.Config","Codex.util.QueryString"],headers:null,promiseCache:{},setHeaders:function(a){this.headers=a},getHeaders:function(){return this.headers},getGame:function(b){var a="stats/game/"+b.region+"/"+b.id,d=Codex.util.QueryString.getObjectFromQuery(location.hash),e={},c=false;if(b.visiblePlatformId!==undefined&&b.visibleAccountId!==undefined){e.visiblePlatformId=b.visiblePlatformId;e.visibleAccountId=b.visibleAccountId;c=true}if(d.gameHash!==undefined){e.gameHash=d.gameHash;c=true}if(c){return this.url+a+"?"+Codex.util.QueryString.getQueryFromObject(e)}else{return this.url+a}},getTimeline:function(d,b){var c=Codex.util.QueryString.getObjectFromQuery(location.hash),e={},a=this.url+"stats/game/"+d+"/"+b+"/timeline";if(c.gameHash!==undefined){e.gameHash=c.gameHash;return a+"?"+Codex.util.QueryString.getQueryFromObject(e)}return a},getPlayerHistory:function(b,d,c){var a=this;c=c||"";if(!b&&!d){return a.url+"stats/player_history/auth"+c}return a.url+"stats/player_history/"+b+"/"+d+c},getPlayer:function(a){return this.url+"players?name="+encodeURIComponent(a)+"&region="+Riot.getCookie("PVPNET_REGION").toUpperCase()},getPlayerByAccount:function(b,a){a=(a||Riot.getCookie("PVPNET_REGION").toUpperCase());return this.url+"players/current?account="+b+"&region="+a},makeRequest:function(a){var b=this,c=b.promiseCache[a.url];if(c){b.listenToPromise(c,a)}else{c=b.promiseCache[a.url]=b.createPromise(a)}return c},createPromise:function(c){var d=this,b=c.url,a=(c.retry||false),e=JSoop.create("Codex.util.RequestPromise",{url:b,headers:d.getHeaders(),autoLoad:true,listeners:{complete:d.destroyPromise,scope:d},retry:a});d.listenToPromise(e,c);return e},listenToPromise:function(b,a){JSoop.applyIf(a,{listeners:{scope:b}});b.on(a.listeners)},destroyPromise:function(b){var a=this;b.destroy();delete a.promiseCache[b.url]}},function(a){a.url=Codex.util.Config.get("acs_url")});JSoop.define("Codex.util.OpenGraph",{singleton:true,requires:["Codex.util.ACS"],url:"https://acs.leagueoflegends.com/v1/",getGameTitle:function(l){var k=l.getUser(Codex.getContextUser()),g,e,i,c,b,a,f,d,j,h;if(k){g=k.get("summonerName");e=k.get("kills");i=k.get("deaths");c=k.get("assists");b=k.get("champion");a=Codex.formatter.field.Map.maps[l.get("map")];h=Riot.DDragon.useModel("champion");f=h.get(Codex.util.DataDragon.getKeyFromId(h,b)).name;return Codex.util.I18n.trans("opengraph_participant_title").replace("{{summonerName}}",g).replace("{{kills}}",e).replace("{{deaths}}",i).replace("{{assists}}",c).replace("{{champion}}",f).replace("{{map}}",a)}else{a=Codex.formatter.field.Map.maps[l.get("map")];j=l.getTeams().items;if(j[0].get("win")){d=j[0].get("id")}else{d=j[1].get("id")}return Codex.util.I18n.trans("opengraph_title").replace("{{team}}",Codex.util.I18n.trans("team_"+d)).replace("{{map}}",a)}},getGameDescription:function(b){var a=b.getUser(Codex.getContextUser()),c,d;if(a){c=a.get("summonerName");return Codex.util.I18n.trans("opengraph_participant_description").replace("{{summonerName}}",c)}else{d=Codex.formatter.field.Map.maps[b.get("map")];return Codex.util.I18n.trans("opengraph_description").replace("{{map}}",d)}},getGameImage:function(c){var a=c.getUser(Codex.getContextUser()),e=Riot.DDragon.models.champion,f,b,d;if(a){f=a.get("champion");b=e.getImg(Codex.util.DataDragon.getKeyFromId(e,f),{src:"full"});d=jQuery(b).first().attr("src");return d}return window.location.protocol+"//"+window.location.host+window.location.pathname+CODEX_ASSET_PATH+"/images/maps/map"+c.get("map")+".png"},getGameUrl:function(b){var d=this,g=d.getGameTitle(b),c=d.getGameDescription(b),f=d.getGameImage(b),e=b.get("region"),a=window.location.pathname+window.location.hash;return this.url+"opengraph?title="+encodeURIComponent(g)+"&description="+encodeURIComponent(c)+"&image="+encodeURIComponent(f)+"&platform="+encodeURIComponent(e)+"&redirectPath="+encodeURIComponent(a)}});JSoop.define("Codex.view.game.header.GameHeader",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.header.GameHeader.template",path:"game/header/game-header.twig"},requires:["Codex.util.OpenGraph","Codex.util.Share"],vtype:"game-header",baseCls:"game-header",baseId:"game-header",ui:{facebookShareButton:".facebook-share-button",vkButton:".vk-button",tweetButton:".tweet-button",mailButton:".mail-button",colorBlindCheckBox:".color-blind-checkbox"},formatter:{fields:[{type:"Codex.formatter.field.Duration"},{name:"created",formatter:function(e,d,a){var g=a.game.get("created"),b=g.getDate(),f=g.getMonth()+1,c=g.getFullYear();return Codex.util.I18n.trans("date_format").replace("{{ day }}",b).replace("{{ month }}",f).replace("{{ year }}",c)}},{type:"Codex.formatter.field.Queue"},{type:"Codex.formatter.field.Map"},{name:"iconSrc",formatter:function(d,c,a){if(a.user){var b=a.user.get("summonerName"),e=a.user.get("currentRegion");return"//avatar.leagueoflegends.com/"+e+"/"+b+".png"}else{return CODEX_ASSET_PATH+"/images/maps/map"+a.game.get("map")+".png"}}},{name:"summonerName",formatter:function(c,b,a){return a.user?a.user.get("summonerName"):undefined}},{name:"opengraphUrl",formatter:function(c,b,a){return encodeURIComponent(Codex.util.OpenGraph.getGameUrl(a.game))}},{name:"gameTitle",formatter:function(c,b,a){return encodeURIComponent(Codex.util.OpenGraph.getGameTitle(a.game))}},{name:"url",formatter:function(){return encodeURIComponent(document.URL)}},{name:"colorBlindEnabled",formatter:function(){return Codex.util.Assets.colorBlindEnabled()}},{name:"region",formatter:function(){return Riot.getCookie("PVPNET_REGION").toUpperCase()}}]},afterRender:function(){var d=this,b=d.getModel(),a=Codex.util.OpenGraph.getGameUrl(b),e=Codex.util.OpenGraph.getGameTitle(b),f=Riot.getCookie("PVPNET_REGION").toUpperCase(),c=document.URL;d.callParent(arguments);d.ui.facebookShareButton.on("click",function(g){Codex.util.Share.facebook(a);g.preventDefault()});d.ui.tweetButton.on("click",function(g){Codex.util.Share.twitter(c,e);g.preventDefault()});d.ui.mailButton.on("click",function(){Codex.util.Share.mail()});if(f==="RU"){d.ui.vkButton.on("click",function(g){Codex.util.Share.vk(a);g.preventDefault()})}d.ui.colorBlindCheckBox.on("click",function(){if(this.checked){d.trigger("colorblind:enable")}else{d.trigger("colorblind:disable")}})}});JSoop.define("Codex.view.game.scoreboard.team.Footer",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.scoreboard.team.Footer.template",path:"game/scoreboard/team/footer.twig"},formatter:{fields:[{name:"towerKills"},{name:"dragonKills"},{name:"baronKills"},{name:"id"}]},ui:{bansEl:".bans"},initView:function(){var b=this,c=b.getModel().getGame().get("map"),a=Codex.formatter.field.Map.objectives;b.formatter=JSoop.clone(b.formatter);if(c&&!_.isUndefined(a[c])){b.formatter.fields=a[c]}b.formatter.fields.push({name:"id"});b.formatter.fields.push({name:"towerIcon",formatter:function(e,d){return Codex.util.Assets.eventIcon("turret_"+d.id)}});b.formatter.fields.push({name:"baronIcon",formatter:function(e,d){return Codex.util.Assets.eventIcon("baron_nashor_"+d.id)}});b.formatter.fields.push({name:"dragonIcon",formatter:function(e,d){return Codex.util.Assets.eventIcon("dragon_"+d.id)}});b.formatter.fields.push({name:"vilemawIcon",formatter:function(e,d){return Codex.util.Assets.eventIcon("vilemaw_"+d.id)}})},afterRender:function(){var b=this,a=b.getModel().get("bans");b.callParent(arguments);if(!a||!a.length){b.ui.bansEl.css("visibility","hidden");return}JSoop.each(a,function(e){var c=JSoop.create("Spine.data.Model",{champion:e.championId},{name:"Ban",fields:["champion"]});var d=JSoop.create("Codex.view.ChampionNameplate",{model:c,hideName:true});d.render(b.ui.bansEl)})}});JSoop.define("Codex.view.game.scoreboard.player.PlayerNameColumn",{extend:"Spine.view.container.Container",template:"",baseCls:"champion-col",constructor:function(){var a=this;a.callParent(arguments);a.defaults={model:a.model};a.items=[{type:"Codex.view.ChampionNameplate",hideName:true},{type:"Codex.view.game.summary.SpellBook"},{type:"Codex.view.ChampionNameplate",hideIcon:true,useSummonerLink:true}]}});JSoop.define("Codex.view.game.scoreboard.player.KDAColumn",{extend:"Spine.view.container.Container",template:"",baseCls:"kills-col",constructor:function(){var a=this;a.callParent(arguments);a.defaults={model:a.model};a.items=[{type:"Codex.view.KDAPlate",hideBadge:true}]}});JSoop.define("Codex.view.game.scoreboard.player.InventoryColumn",{extend:"Spine.view.container.Container",template:"",baseCls:"items-col",constructor:function(){var a=this;a.callParent(arguments);a.defaults={model:a.model};a.items=[{type:"Codex.view.Inventory",separateTrinket:true,cols:3}]}});JSoop.define("Codex.view.game.scoreboard.player.GoldColumn",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.scoreboard.player.GoldColumn",path:"game/scoreboard/player/gold.twig"},baseCls:"gold-col",baseId:"gold-col",formatter:{fields:[{type:"Codex.formatter.field.Gold"}]}});JSoop.define("Codex.view.game.scoreboard.player.CSColumn",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.scoreboard.player.CSColumn",path:"game/scoreboard/player/minions.twig"},baseCls:"minions-col",formatter:{fields:[{name:"minions",field:"totalMinionsKilled"}]},afterRender:function(){var c=this,b=jQuery(this)[0].$el,a=Spine.TemplateManager.toTemplate(Codex.util.I18n.trans("cs_tooltip"));b.hover(function(){Codex.showTip(a({minions:c.model.get("minionsKilled"),jungle:c.model.get("neutralMinionsKilled")}),b,{left:14,top:20})},function(){Codex.hideTip()});c.callParent(arguments)}});JSoop.define("Codex.view.game.scoreboard.player.ScoreColumn",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.scoreboard.player.ScoreColumn",path:"game/scoreboard/player/score.twig"},baseCls:"score-col",formatter:{fields:[{name:"score",field:"totalPlayerScore"}]}});JSoop.define("Codex.view.game.scoreboard.player.RankColumn",{extend:"Spine.view.formatter.FormatterView",template:{name:"Codex.view.game.scoreboard.player.RankColumn",path:"game/scoreboard/player/rank.twig"},baseCls:"rank-col",formatter:{fields:[{name:"rank",field:"totalScoreRank"}]}});JSoop.define("Codex.view.game.scoreboard.player.View",{extend:"Spine.view.container.Container",requires:["Codex.view.game.scoreboard.player.PlayerNameColumn","Codex.view.game.scoreboard.player.KDAColumn","Codex.view.game.scoreboard.player.InventoryColumn","Codex.view.game.scoreboard.player.GoldColumn","Codex.view.game.scoreboard.player.CSColumn","Codex.view.game.scoreboard.player.ScoreColumn","Codex.view.game.scoreboard.player.RankColumn"],template:"",baseCls:"player",baseId:"player",constructor:function(){var b=this,d,a,c;b.callParent(arguments);b.defaults={model:b.model};d=b.model.getGame().get("mode");if(Codex.formatter.field.Mode.hasScore[d]){a={type:"Codex.view.game.scoreboard.player.ScoreColumn"};c={type:"Codex.view.game.scoreboard.player.RankColumn"}}else{a={type:"Codex.view.game.scoreboard.player.CSColumn",model:b.model};c={type:"Codex.view.game.scoreboard.player.GoldColumn",model:b.model}}b.items=[{type:"Codex.view.game.scoreboard.player.PlayerNameColumn"},{type:"Codex.view.game.scoreboard.player.KDAColumn"},{type:"Codex.view.game.scoreboard.player.InventoryColumn"},a,c,{cls:"team-marker"}]}});JSoop.define("Codex.view.game.scoreboard.team.View",{extend:"Spine.view.container.CollectionContainer",requires:["Codex.view.game.scoreboard.player.View"],baseCls:"team",baseId:"team",template:{name:"Codex.view.game.scoreboard.team.View.template",path:"game/scoreboard/team.twig"},targetEl:"ul",defaults:{type:"Codex.view.game.scoreboard.player.View",tagName:"li",tag:"li",template:"<div></div>",targetEl:"div"},ui:{headerEl:"header",footerEl:"footer"},initView:function(){var a=this;a.collection=a.model.getParticipants();a.addClass("team-"+a.model.get("id"))},initItem:function(c,a){var b=this;a=b.callParent(arguments);if(Codex.getContextUser().isParticipant(c)){a.cls=["current-user"]}return a},afterRender:function(){var a=this;a.header=JSoop.create("Codex.view.game.scoreboard.team.Header",{model:a.model});a.footer=JSoop.create("Codex.view.game.scoreboard.team.Footer",{model:a.model});a.header.render();a.footer.render();a.ui.headerEl.append(a.header.$el);a.ui.footerEl.append(a.footer.$el);a.callParent(arguments)}});JSoop.define("Codex.view.game.scoreboard.View",{extend:"Spine.view.container.Container",requires:["Codex.view.game.scoreboard.team.Header","Codex.view.game.scoreboard.team.Footer","Codex.view.game.scoreboard.team.View"],template:{name:"Codex.view.game.scoreboard.View.template",path:"game/scoreboard.twig"},targetEl:"> div > div > div.gs-container",baseCls:"scoreboard",baseId:"scoreboard",ui:{headerEl:"header",footerEl:"footer"},constructor:function(){var a=this,b;a.callParent(arguments);b=a.model.getTeams();a.defaults={type:"Codex.view.game.scoreboard.team.View",game:a.model};a.items=[{model:b.findFirst({id:100})},{model:b.findFirst({id:200})}]}});JSoop.define("Codex.view.game.grid.Collection",{extend:"Spine.data.Collection",model:"Codex.view.game.grid.Model"});JSoop.define("Codex.view.game.grid.View",{extend:"Spine.view.table.TableView",requires:["Codex.view.game.grid.Model","Codex.view.game.grid.Collection"],columns:[],baseId:"game-grid",baseCls:"game-grid",template:{name:"Codex.view.game.grid.View.template",path:"game/grid.twig"},initView:function(){var d=this,b=[{name:"label"}],a,c;d.portraits={};d.participants=d.collection;for(a=0,c=d.participants.getCount();a<c;a=a+1){b.push({name:"c"+a})}d.columns=b;d.updateCollection();d.callParent(arguments);d.addClass("content-border")},updateCollection:function(){var a=this;a.collection=a.createCollection()},createCollection:function(){var e=this,g=JSoop.create("Codex.view.game.grid.Collection"),f={},a=["id","label"],h,b,c,d;for(c=0,d=e.participants.getCount();c<d;c=c+1){a.push("c"+c)}h=JSoop.create("Spine.data.Model",{id:_.uniqueId("grid")},{name:"GridHeader",fields:a});e.participants.each(function(j,i){var k=_.uniqueId("grid-portrait");Codex.util.DataDragon.getImg({model:"champion",version:j.getGame().get("version"),id:j.get("champion"),callback:function(l){if(e.isRendered){e.$el.find("#"+k).html(l)}else{e.portraits[k]=l}}});f[i]=j.attributes;h.set("c"+i,'<div class="champion-icon" id="'+k+'"></div>')});g.add(h);for(c=0,d=Codex.view.game.grid.Model.rowCount;c<d;c=c+1){b=JSoop.create("Codex.view.game.grid.Model",f,{index:c});g.add(b)}return g},afterRender:function(){var b=this,c=Codex.getContextUser(),a={kda:"grid_section_combat",total_damage_to_champions:"grid_section_damage_dealt",damage_healed:"grid_section_damage_taken",vision_items_placed:"grid_section_wards",gold_earned:"grid_section_income"},d=0;b.$el.find("td:first-child").not("tr:first-child td:first-child").addClass("grid-label");b.participants.each(function(e,f){b.$el.find("td:nth-child("+(f+2)+")").addClass("team-"+e.get("team")).append('<div class="team-marker"></div>');if(c.isParticipant(e)){b.$el.find("td:nth-child("+(f+2)+")").addClass("current-user")}});JSoop.iterate(a,function(f,e){var g=b.participants.getCount()+1;f=Codex.util.I18n.trans(f);jQuery('<tr><td colspan="'+g+'" class="grid-section">'+f+"</td></tr>").insertAfter(b.$el.find("tr:nth-child("+(b.findRowIndex(e)+1+d)+")"));d=d+1});JSoop.iterate(b.portraits,function(e,f){b.$el.find("#"+f).html(e)});b.callParent(arguments)},findRowIndex:function(c){var b=Codex.view.game.grid.Model.rows,a=0;JSoop.each(b,function(e,d){if(e.label===c){a=d;return false}});return a}});JSoop.define("Codex.view.game.Details",{extend:"Spine.view.container.Container",requires:["Codex.view.game.Tabs","Codex.view.game.grid.View","Codex.view.game.scoreboard.View","Codex.view.game.header.GameHeader","Codex.view.game.graph.Switcher","Codex.view.game.map.View","Codex.view.game.breakdown.View","Codex.view.game.builds.View"],vtype:"game-details",baseCls:"game-details",baseId:"game-details",modeGraphs:{ODIN:["Codex.view.game.graph.ScoreAdvantage","Codex.view.game.graph.TeamScore","Codex.view.game.graph.ChampionScore","Codex.view.game.graph.ChampionGold"],ASCENSION:["Codex.view.game.graph.ScoreAdvantage","Codex.view.game.graph.TeamScore","Codex.view.game.graph.ChampionScore"],"default":["Codex.view.game.graph.GoldAdvantage","Codex.view.game.graph.TeamGold","Codex.view.game.graph.ChampionGold"]},buildGraphs:function(){var c=this,d=c.model.get("mode"),b=c.modeGraphs[d]||c.modeGraphs["default"],a=b.map(function(e){return{type:e,game:c.model}});return a},initView:function(){var i=this,e=Codex.getContextUser(),f={type:"Codex.view.game.header.GameHeader",user:i.model.getUser(e),game:i.model,model:i.model},g={type:"Codex.view.game.scoreboard.View",model:i.model},h={type:"Codex.view.game.graph.Switcher",graphs:i.buildGraphs(),game:i.model},c={type:"Codex.view.game.breakdown.View",cls:"default-2-3",model:i.model},b={type:"Spine.view.container.Container",cls:"default-1-3",items:[{type:"Codex.view.game.map.View",model:i.model}]},a={type:"Codex.view.game.grid.View",collection:i.model.getParticipants()},d={type:"Codex.view.game.builds.View",model:i.model},j={type:"Codex.view.game.Tabs",tab:i.tab,model:i.model,items:[{type:"Spine.view.container.Container",cls:"gs-container",items:[h,{type:"Spine.view.container.Container",cls:"gs-container graph-container",items:[c,b]}]}]};if(i.model.hasBuilds()){j.items.push(d,a)}else{j.items.push(a)}i.items=[f,g,j];i.callParent()},timelineDetailsLoaded:function(){var a=this;a.items[2].items[0].items[0].$el.css("display","");a.items[2].items[0].items[1].items[1].$el.css("display","")},timelineDetailsRetry:function(){var a=this;a.items[2].items[0].items[0].$el.css("display","none");a.items[2].items[0].items[1].items[1].$el.css("display","none")},timelineDetailsUnavailable:function(){var a=this;a.items[2].items[0].items[0].remove();a.items[2].items[0].items[1].items[1].remove()}});JSoop.define("Codex.controller.Game",{extend:"Codex.controller.Controller",requires:["Codex.view.game.Details","Codex.view.matchHistory.MatchHistory","Codex.util.Loader","Codex.util.QueryString"],routes:{"match-history/:region/:userId?:query":"matchHistory","match-history/:region/:userId":"matchHistory","match-history":"matchHistory","match-details/:region/:id/:userId?:query":"gameDetails","match-details/:region/:id?:query":"gameDetails","match-details/:region/:id/:userId":"gameDetails","match-details/:region/:id":"gameDetails","match-details/:region/:id/:userId/eog":"gameDetailsEndOfGame","match-details/:region/:id/eog":"gameDetailsEndOfGame","*action":"defaultRoute"},initController:function(){var c=this,d=Spine.getCollection("Games"),b=Codex.contextUser=JSoop.create("Codex.model.User");Codex.getContextUser=function(){return Codex.contextUser};c.control({"match-details":{"return":function(){var e=Codex.getContextUser(),f=e.get("region"),g=e.get("id");if(f&&g){c.navigate("match-history/"+e.get("region")+"/"+e.get("id"))}else{c.navigate("match-history")}}},"match-tabs":{"tab-select":function(f){var e=Codex.util.QueryString.getObjectFromQuery(location.hash);e.tab=f;c.updateFragment(Codex.util.QueryString.getNewHashWithQuery(e))}},"game-header":{"colorblind:enable":function(){Codex.util.Assets.enableColorBlind()},"colorblind:disable":function(){Codex.util.Assets.disableColorBlind()}},"game-summary":{click:function(g){Codex.util.Loader.show();var f=g.getModel().getGame(),j=f.get("id"),i=f.get("region"),h=Codex.getContextUser(),e=h.findParticipant(f.getParticipants());jQuery("body").scrollTop(0);c.navigate("match-details/"+i+"/"+j+"/"+e.get("currentAccount"))}},"match-history-list":{next:function(){d.next(b.get("region"),b.get("id"))}},"match-filter-select":{filter:function(e){d.reinitialize();d.removeAll();c.navigate(e)}},"participant-selector":{selected:function(g){var f,e;c.updateFragment(g);if(c.app.getRegion("main").currentView){f=c.findView(c.app.getRegion("main").currentView.items,"Codex.view.game.builds.View");e=jQuery("body").scrollTop();f.initView();f.render();jQuery("body").scrollTop(e)}}}});var a=Spine.getCollection("Participants");a.on("add",c.onParticipantsAdd,c);d.on("filter",function(){var e=d._filter;a.clearFilters();a.addFilter("championFilter",function(f){var g=d.currentFilter.is(f.getGame());if(!g){return false}if(e.champion.length===0){return true}return e.champion.indexOf(f.get("champion")+"")!==-1})});Twig.extendFunction("trans",function(e){return Codex.util.I18n.trans(e)})},matchHistory:function(e,b){var c=this,f=Spine.getCollection("Games"),a,d;b=c.validateUserId(b);if(b){c.setContextUser(b,"original")}else{c.needMatchHistoryUpdate=true;c.setContextUser()}a=Codex.getContextUser();d=JSoop.create("Codex.view.matchHistory.MatchHistory");c.app.getRegion("main").show(d);f.clearFilter();f.setFilters(Codex.util.QueryString.getFiltersFromQuery());f.getHistory(e,b);f.on("error",function(g){if(g===404){c.app.controllers.Error.playerNotFound({missing_player_account:b})}else{c.app.controllers.Error.handle(g)}});c.setCrumbs([]);Codex.util.Analytics.fire("view_match_history",{invokerId:Codex.getCurrentUser().get("id"),principleId:(typeof b!=="undefined")?b:Codex.getCurrentUser().get("id")})},gameDetails:function(j,b,g,f){b=parseInt(b,10);var i=this,c=Spine.getCollection("Games"),l=c.findFirst({id:b}),d=false,a=(f||false),h=Codex.util.QueryString.getObjectFromQuery(location.hash),e=Spine.getCollection("Participants"),k;g=i.validateUserId(g);i.setContextUser(g,"vapor");e.clearFilters();if(!l){l=JSoop.create("Codex.model.Game",{gameId:b,platformId:j});l.set("visiblePlatformId",j);l.set("visibleAccountId",g);d=true}l.getFull(a,function(m){if(d){c.add(m)}var n=JSoop.create("Codex.view.game.Details",{model:m,tab:(h.tab!==undefined)?h.tab:null});i.app.getRegion("main").show(n);k=Codex.getContextUser().findParticipant(m.getParticipants());if(k){i.setCrumbs([{text:k.get("summonerName"),path:"match-history/"+k.get("region")+"/"+k.get("account")}])}m.on("load-timeline",function(){n.timelineDetailsLoaded()});m.on("retry-timeline",function(){n.timelineDetailsRetry()});m.on("error-timeline",function(){n.timelineDetailsUnavailable()})});l.on("retry",function(){i.app.controllers.Error.gameProcessing()});l.on("error",function(m){if(m===404){i.app.controllers.Error.gameNotFound({missing_game:l.attributes})}else{i.app.controllers.Error.handle(m)}});Codex.util.Analytics.fire("view_match_details",{invokerId:Codex.getCurrentUser().get("id"),principleId:(typeof g!=="undefined")?g:Codex.getCurrentUser().get("id")})},gameDetailsEndOfGame:function(c,d,a){var b=this;a=b.validateUserId(a);b.gameDetails(c,d,a,true);b.updateFragment("match-details/"+c+"/"+d+((a)?"/"+a:""))},defaultRoute:function(){var a=this;if(!Codex.getCurrentUser().isLoggedIn()){a.navigate("page/landing-page");return}a.navigate("match-history")},validateUserId:function(a){return isNaN(parseInt(a,10))?undefined:a},findCurrentUser:function(d){var f=this,a=Codex.getCurrentUser(),h=Codex.getContextUser(),b,e,c,g;JSoop.each(d,function(i){if(a.isParticipant(i)){b=i;return false}});if(!b){return}if(f.needMatchHistoryUpdate){e=b.get("matchHistory").split("/");c=e.pop();g=e.pop();f.updateFragment("match-history/"+g+"/"+c);f.needMatchHistoryUpdate=false;h.set("id",c);h.set("region",g);if(a.get("id")!==h.get("id")){h.set("type","original")}}a.set("region",b.get("region"));Spine.getCollection("Participants").un("add",f.onGameAddFindCurrentUser,f)},findContextUser:function(b){var c=Codex.getContextUser(),a;JSoop.each(b,function(d){if(c.isParticipant(d)){a=d;return false}});if(!a){return}c.set("region",a.get("region"))},onParticipantsAdd:function(c,a){var b=this;b.findCurrentUser(a);b.findContextUser(a)},updateFragment:function(a){var b=this;b.navigate(a,{trigger:false,replace:true})},findView:function(b,a){var d=this,e,c;for(c=b.length-1;c>=0;c-=1){if(b[c].type===a){return b[c]}else{if(b[c].items){e=d.findView(b[c].items,a);if(e){return e}}}}}});JSoop.define("Codex.model.Mastery",{extend:"Spine.data.Model",name:"Mastery",fields:[{name:"id",mapping:"masteryId"},{name:"rank"}]});JSoop.define("Codex.model.Participant",{extend:"Spine.data.Model",name:"Participant",isParticipant:true,requires:["Codex.model.Frame","Codex.model.Mastery","Codex.model.Rune"],fields:[{name:"id",mapping:"gameId",convert:function(c,b,a){if(a.id){return a.id}if(a.player&&a.player.currentAccountId){return c+"-"+a.player.currentAccountId}return c+"-"+a.participantId}},{name:"gameId"},{name:"participantId",type:"int"},{name:"team",mapping:"teamId"},{name:"win",mapping:"stats.win"},{name:"lane",mapping:"timeline.lane"},{name:"summonerName",mapping:"player.summonerName"},{name:"account",mapping:"player.accountId"},{name:"region",mapping:"player.platformId"},{name:"currentAccount",mapping:"player.currentAccountId"},{name:"currentRegion",mapping:"player.currentPlatformId"},{name:"matchHistory",mapping:"player.matchHistoryUri"},{name:"champion",mapping:"championId"},{name:"champLevel",mapping:"stats.champLevel"},{name:"skin",mapping:"skinId"},{name:"spell1",mapping:"spell1Id"},{name:"spell2",mapping:"spell2Id"},{name:"item0",mapping:"stats.item0"},{name:"item1",mapping:"stats.item1"},{name:"item2",mapping:"stats.item2"},{name:"item3",mapping:"stats.item3"},{name:"item4",mapping:"stats.item4"},{name:"item5",mapping:"stats.item5"},{name:"trinket",mapping:"stats.item6"},{name:"inventory",mapping:"stats.item0",convert:function(c,b,a){if(c===undefined||a.stats===undefined){return}return[c,a.stats.item1,a.stats.item2,a.stats.item3,a.stats.item4,a.stats.item5,a.stats.item6]}},{name:"kills",mapping:"stats.kills"},{name:"deaths",mapping:"stats.deaths"},{name:"assists",mapping:"stats.assists"},{name:"largestKillingSpree",mapping:"stats.largestKillingSpree"},{name:"largestMultiKill",mapping:"stats.largestMultiKill"},{name:"killingSprees",mapping:"stats.killingSprees"},{name:"doubleKills",mapping:"stats.doubleKills"},{name:"tripleKills",mapping:"stats.tripleKills"},{name:"quadraKills",mapping:"stats.quadraKills"},{name:"pentaKills",mapping:"stats.pentaKills"},{name:"totalDamageDealt",mapping:"stats.totalDamageDealt"},{name:"totalDamageDealtToChampions",mapping:"stats.totalDamageDealtToChampions"},{name:"magicDamageDealt",mapping:"stats.magicDamageDealt"},{name:"magicDamageDealtToChampions",mapping:"stats.magicDamageDealtToChampions"},{name:"physicalDamageDealt",mapping:"stats.physicalDamageDealt"},{name:"physicalDamageDealtToChampions",mapping:"stats.physicalDamageDealtToChampions"},{name:"trueDamageDealt",mapping:"stats.trueDamageDealt"},{name:"trueDamageDealtToChampions",mapping:"stats.trueDamageDealtToChampions"},{name:"largestCriticalStrike",mapping:"stats.largestCriticalStrike"},{name:"totalTimeCrowdControlDealt",mapping:"stats.totalTimeCrowdControlDealt"},{name:"totalHeal",mapping:"stats.totalHeal"},{name:"totalUnitsHealed",mapping:"stats.totalUnitsHealed"},{name:"totalDamageTaken",mapping:"stats.totalDamageTaken"},{name:"physicalDamageTaken",mapping:"stats.physicalDamageTaken"},{name:"magicalDamageTaken",mapping:"stats.magicalDamageTaken"},{name:"trueDamageTaken",mapping:"stats.trueDamageTaken"},{name:"goldEarned",mapping:"stats.goldEarned"},{name:"goldSpent",mapping:"stats.goldSpent"},{name:"turretKills",mapping:"stats.turretKills"},{name:"inhibitorKills",mapping:"stats.inhibitorKills"},{name:"minionsKilled",mapping:"stats.totalMinionsKilled"},{name:"neutralMinionsKilled",mapping:"stats.neutralMinionsKilled"},{name:"neutralMinionsKilledEnemyJungle",mapping:"stats.neutralMinionsKilledEnemyJungle"},{name:"neutralMinionsKilledTeamJungle",mapping:"stats.neutralMinionsKilledTeamJungle"},{name:"totalMinionsKilled",mapping:"stats.totalMinionsKilled",convert:function(c,a,b){if(c===undefined||b.stats===undefined){return}return c+b.stats.neutralMinionsKilled}},{name:"sightWardsBoughtInGame",mapping:"stats.sightWardsBoughtInGame"},{name:"visionWardsBoughtInGame",mapping:"stats.visionWardsBoughtInGame"},{name:"wardsPlaced",mapping:"stats.wardsPlaced"},{name:"wardsKilled",mapping:"stats.wardsKilled"},{name:"firstBloodKill",mapping:"stats.firstBloodKill"},{name:"firstBloodAssist",mapping:"stats.firstBloodAssist"},{name:"firstTowerKill",mapping:"stats.firstTowerKill"},{name:"firstTowerAssist",mapping:"stats.firstTowerAssist"},{name:"firstInhibitorKill",mapping:"stats.firstInhibitorKill"},{name:"firstInhibitorAssist",mapping:"stats.firstInhibitorAssist"},{name:"combatPlayerScore",mapping:"stats.combatPlayerScore"},{name:"objectivePlayerScore",mapping:"stats.objectivePlayerScore"},{name:"totalPlayerScore",mapping:"stats.totalPlayerScore"},{name:"totalScoreRank",mapping:"stats.totalScoreRank"},{name:"relicsCaptured",mapping:"stats.objectivePlayerScore",convert:function(c,a,b){if(c===undefined||b.stats===undefined){return}return c/3}},{name:"longestTimeSpentLiving",mapping:"stats.longestTimeSpentLiving"},{name:"totalTimeSpentDead",mapping:"stats.totalTimeSpentDead"},{name:"masteriesField",mapping:"masteries"},{name:"runesField",mapping:"runes"}],associations:[{type:"hasMany",name:"Timeline",model:"Codex.model.Frame",foreignKey:"participantId",mapping:"frames"},{type:"hasMany",name:"Masteries",model:"Codex.model.Mastery",foreignKey:"participantId",mapping:"masteries"},{type:"hasMany",name:"Runes",model:"Codex.model.Rune",foreignKey:"participantId",mapping:"runes"}],hasMasteries:function(){var a=this;return a.get("masteriesField")!==undefined},hasRunes:function(){var a=this;return a.get("runesField")!==undefined},hasSkillEvents:function(){var e=this,a=e.getGame().get("version"),c=a.split("."),b=parseInt(c[0],10),d=parseInt(c[1],10);return b>=4&&d>=14}});JSoop.define("Codex.collection.Participants",{extend:"Spine.data.Collection",requires:["Codex.model.Participant"],model:"Codex.model.Participant"});JSoop.define("Codex.model.Team",{extend:"Spine.data.Model",name:"Team",isTeam:true,fields:[{name:"id",mapping:"teamId"},{name:"gameId"},{name:"win",convert:function(a){return a!=="Fail"}},{name:"firstBlood",type:"bool"},{name:"firstTower",type:"bool"},{name:"firstInhibitor",type:"bool"},{name:"firstBaron",type:"bool"},{name:"firstDragon",type:"bool"},{name:"towerKills",type:"int"},{name:"inhibitorKills",type:"int"},{name:"baronKills",type:"int"},{name:"dragonKills",type:"int"},{name:"vilemawKills",type:"int"},{name:"dominionVictoryScore",type:"int"},{name:"bans"}],associations:[{type:"hasMany",name:"Participants",model:"Codex.model.Participant",mapping:"participants",foreignKey:"team",prepare:"prepareParticipants"}],prepareParticipants:function(b){var c=this,a;if(c.getGame){a=c.getGame();b.participants=a.getParticipants().find({team:b.teamId})}else{b.participants=Spine.getCollection("Participants").find({team:b.teamId,gameId:b.gameId})}}});JSoop.define("Codex.model.event.Event",{extend:"Spine.data.Model",name:"Event",fields:[{name:"id",convert:function(){return _.uniqueId("event")}},{name:"type"},{name:"timestamp",type:"int"},{name:"frameTimestamp",type:"int"},{name:"x",mapping:"position.x",type:"int"},{name:"y",mapping:"position.y",type:"int"}]});JSoop.define("Codex.model.event.BuildingKillEvent",{extend:"Codex.model.event.Event",name:"BuildingKillEvent",fields:[{name:"buildingType"},{name:"lane",mapping:"laneType"},{name:"killer",mapping:"killerId",convert:function(b,a){return a.getGame().getParticipants().findFirst({participantId:b})}},{name:"team",mapping:"teamId",convert:function(a){return(a===100)?"200":"100"}},{name:"towerType"},{name:"assists",mapping:"assistingParticipantIds",convert:function(d,b){var a=b.getGame().getParticipants(),c=[];JSoop.each(d,function(e){a.each(function(f){if(f.get("participantId")===e){c.push(f)}})});return c}}]});JSoop.define("Codex.model.event.ChampionKillEvent",{extend:"Codex.model.event.Event",name:"ChampionKillEvent",fields:[{name:"killer",mapping:"killerId",convert:function(b,a){return a.getGame().getParticipants().findFirst({participantId:b})}},{name:"assists",mapping:"assistingParticipantIds",convert:function(d,b){var a=b.getGame().getParticipants(),c=[];JSoop.each(d,function(e){a.each(function(f){if(f.get("participantId")===e){c.push(f)}})});return c}},{name:"victim",mapping:"victimId",convert:function(b,a){return a.getGame().getParticipants().findFirst({participantId:b})}},{name:"team",mapping:"victimId",convert:function(c,b){var a=b.getGame().getParticipants().findFirst({participantId:c}).get("team");return(a===100)?"200":"100"}}]});JSoop.define("Codex.model.event.EliteMonsterKillEvent",{extend:"Codex.model.event.Event",name:"EliteMonsterKillEvent",fields:[{name:"monsterType"},{name:"killer",mapping:"killerId",convert:function(b,a){return a.getGame().getParticipants().findFirst({participantId:b})}},{name:"team",mapping:"killerId",convert:function(c,b){var a=b.getGame().getParticipants().findFirst({participantId:c}).get("team");return(a===100)?"100":"200"}},{name:"assists",mapping:"assistingParticipantIds",convert:function(d,b){var a=b.getGame().getParticipants(),c=[];JSoop.each(d,function(e){a.each(function(f){if(f.get("participantId")===e){c.push(f)}})});return c}}]});JSoop.define("Codex.model.event.ItemEvent",{extend:"Codex.model.event.Event",name:"ItemEvent",fields:[{name:"item",mapping:"itemId",type:"int"},{name:"source",mapping:"participantId",type:"int",convert:function(b,a){return a.getGame().getParticipants().findFirst({participantId:b})}}]});JSoop.define("Codex.model.event.ItemPurchaseEvent",{extend:"Codex.model.event.ItemEvent",name:"ItemPurchaseEvent"});JSoop.define("Codex.model.event.ItemSellEvent",{extend:"Codex.model.event.ItemEvent",name:"ItemSellEvent"});JSoop.define("Codex.model.event.ItemUndoEvent",{extend:"Codex.model.event.Event",name:"ItemUndoEvent",fields:[{name:"item",mapping:"beforeId",type:"int",convert:function(c,a,b){return c===0?b.afterId:c}},{name:"source",mapping:"participantId",type:"int",convert:function(b,a){return a.getGame().getParticipants().findFirst({participantId:b})}},{name:"undoType",convert:function(c,a,b){return b.beforeId!==0?"buy":"sell"}}]});JSoop.define("Codex.model.event.SkillUpEvent",{extend:"Codex.model.event.Event",name:"SkillUpEvent",fields:[{name:"source",mapping:"participantId",type:"int",convert:function(b,a){return a.getGame().getParticipants().findFirst({participantId:b})}},{name:"slot",mapping:"skillSlot",type:"int"},{name:"skillUpType",mapping:"levelUpType"}]});JSoop.define("Codex.model.event.AscendedEvent",{extend:"Codex.model.event.Event",name:"AscendedEvent",fields:[{name:"ascended",mapping:"participantId",type:"int",convert:function(b,a){return a.getGame().getParticipants().findFirst({participantId:b})}},{name:"team",mapping:"participantId",convert:function(c,b){var a=b.getGame().getParticipants().findFirst({participantId:c});if(a===undefined){return undefined}a=a.get("team");return(a===100)?"100":"200"}},{name:"ascendedType",mapping:"ascendedType"}]});JSoop.define("Codex.model.event.CapturePointEvent",{extend:"Codex.model.event.Event",name:"CapturePointEvent",fields:[{name:"eventType",mapping:"eventType"},{name:"participantId",mapping:"participantId"},{name:"pointCaptured",mapping:"pointCaptured"},{name:"team",mapping:"participantId",convert:function(c,b){var a=b.getGame().getParticipants().findFirst({participantId:c});if(a===undefined){return undefined}a=a.get("team");return(a===100)?"100":"200"}}]});JSoop.define("Codex.model.Game",{extend:"Spine.data.Model",requires:["Codex.util.ACS","Codex.model.Participant","Codex.model.Team","Codex.model.event.Event","Codex.model.event.BuildingKillEvent","Codex.model.event.ChampionKillEvent","Codex.model.event.EliteMonsterKillEvent","Codex.model.event.ItemEvent","Codex.model.event.ItemPurchaseEvent","Codex.model.event.ItemSellEvent","Codex.model.event.ItemUndoEvent","Codex.model.event.SkillUpEvent","Codex.model.event.AscendedEvent","Codex.model.event.CapturePointEvent"],isGame:true,name:"Game",fields:[{name:"id",mapping:"gameId"},{name:"version",mapping:"gameVersion"},{name:"map",mapping:"mapId"},{name:"created",mapping:"gameCreation",convert:function(a){if(JSoop.isString(a)){a=parseInt(a,10)}else{if(a instanceof Date){return a}}return new Date(a)}},{name:"duration",mapping:"gameDuration",type:"int"},{name:"queue",mapping:"queueId"},{name:"season",mapping:"seasonId"},{name:"region",mapping:"platformId"},{name:"mode",mapping:"gameMode"},{name:"type",mapping:"gameType"},{name:"visiblePlatformId"},{name:"visibleAccountId"}],associations:[{type:"hasMany",name:"Participants",model:"Codex.model.Participant",mapping:"participants",foreignKey:"gameId",globalCollection:"Participants",prepare:"prepareParticipants"},{type:"hasMany",name:"Teams",model:"Codex.model.Team",mapping:"teams",foreignKey:"gameId"},{type:"hasMany",name:"Events",model:"Codex.model.event.Event",mapping:"events",foreignKey:"gameId",prepare:"prepareTimeline"}],hasUser:function(a){var b=this;return !!b.getUser(a)},getUser:function(a){var b=this;return a.findParticipant(b.getParticipants())},hasBuilds:function(){var b=this,a=b.getParticipants().items[0];return a.hasMasteries()&&a.hasRunes()&&a.hasSkillEvents()},getFull:function(a,c,b){var d=this;if(d.isLoadedFull){c.call(b,d);return}if(!d.fullPromise){d.fullPromise=Codex.util.ACS.makeRequest({url:Codex.util.ACS.getGame({region:d.get("region"),id:d.get("id"),visiblePlatformId:d.get("visiblePlatformId"),visibleAccountId:d.get("visibleAccountId")}),listeners:{load:d.onFullLoad,error:d.onPromiseError,retry:d.onGamePromiseRetry,scope:d},retry:a})}d.fullPromise.on("load",d.createPromiseCallback(c,b))},getTimeline:function(b,a){var c=this;if(c.timeline){b.call(a,c);return}if(!c.timelinePromise){c.timelinePromise=Codex.util.ACS.makeRequest({url:Codex.util.ACS.getTimeline(c.get("region"),c.get("id")),listeners:{load:c.onTimelineLoad,error:c.onTimelinePromiseError,retry:c.onTimelinePromiseRetry,scope:c},retry:true})}c.timelinePromise.on("load",c.createPromiseCallback(b,a))},createPromiseCallback:function(b,a){var c=this;return function(){b.call(a,c)}},prepareParticipants:function(a){var c=this,b,d;if(!a.participants){return}if(c.getParticipants){b=Spine.getCollection("Participants");d=c.getParticipants();d.each(function(e){b.remove(e);d.remove(e)})}JSoop.each(a.participants||[],function(e){JSoop.apply(e,_.where(a.participantIdentities,{participantId:e.participantId})[0]);e.gameId=a.gameId})},hasValidMonster:function(a){return a.type==="ELITE_MONSTER_KILL"&&(a.monsterType==="DRAGON"||a.monsterType==="BARON_NASHOR"||a.monsterType==="VILEMAW")},prepareTimeline:function(b){var f=this,c={},d=[],g=b.frames||[],e=function(){return f},a={CHAMPION_KILL:"Codex.model.event.ChampionKillEvent",BUILDING_KILL:"Codex.model.event.BuildingKillEvent",ITEM_PURCHASED:"Codex.model.event.ItemPurchaseEvent",ITEM_SOLD:"Codex.model.event.ItemSellEvent",ITEM_UNDO:"Codex.model.event.ItemUndoEvent",SKILL_LEVEL_UP:"Codex.model.event.SkillUpEvent",ASCENDED_EVENT:"Codex.model.event.AscendedEvent",CAPTURE_POINT:"Codex.model.event.CapturePointEvent"};if(g.length===0){return}JSoop.each(g,function(i){JSoop.each(i.events,function(j){j.frameTimestamp=i.timestamp;if(a[j.type]){j=JSoop.create(a[j.type],j,{getGame:e})}else{if(f.hasValidMonster(j)){j=JSoop.create("Codex.model.event.EliteMonsterKillEvent",j,{getGame:e})}}if(j.isModel){d.push(j)}});var h=[];JSoop.iterate(i.participantFrames,function(j){h.push(j)});JSoop.each(h,function(k){var l=k.participantId,j;if(!c[l]){c[l]=[]}j=c[l];k.timestamp=i.timestamp;j.push(k)})});f.getParticipants().each(function(h){h.set({frames:c[h.get("participantId")]})});b.events=d},onFullLoad:function(c,b){var a=this;a.set(b);a.isLoadedFull=true;delete a.fullPromise},onPromiseError:function(c,a,b){this.fireEvent("error",a,b)},onGamePromiseRetry:function(){this.fireEvent("retry")},onTimelineLoad:function(c,b){var a=this;a.set(b);a.timeline=true;delete a.timelinePromise;this.fireEvent("load-timeline")},onTimelinePromiseError:function(d,a,b){var c=this;c.timeline=false;delete c.timelinePromise;c.fireEvent("error-timeline",a,b)},onTimelinePromiseRetry:function(){this.fireEvent("retry-timeline")}});JSoop.define("Codex.collection.Games",{extend:"Spine.data.Collection",requires:["Codex.util.ACS","Codex.model.Game","Codex.controller.Error"],model:"Codex.model.Game",pager:{perPage:15,page:0,start:0,end:0},constructor:function(){var a=this;a.historyCache={};a._filter={champion:[],map:[],queue:[]};a.callParent(arguments)},comparator:function(a){return -a.get("created")},setFilters:function(a){var b=this;JSoop.iterate(a,function(c,d){if(c&&d in b._filter){JSoop.each(c,function(e){if(jQuery.inArray(e,b._filter[d])===-1){b._filter[d].push(e)}})}});b.clearFilters();b.addFilter("queueFilter",function(c){return b._filter.queue.indexOf(c.get("queue")+"")!==-1})},getFilters:function(){var a=this,b=[];JSoop.iterate(a._filter,function(c,d){if(c){JSoop.each(c,function(e){b.push((e)?d+"="+e:"")})}});return b.join("&")},getHistory:function(j,b){var h=this,c=h.pager.page*h.pager.perPage,e=c+h.pager.perPage,g="?begIndex="+c+"&endIndex="+e+"&"+h.getFilters(),a=Codex.util.ACS.getPlayerHistory(j,b,g),d=h.historyCache[a],f;if(d!==undefined||h.fireEvent("beforeload",h)===false){h.readPager(d.gameData);for(f=d.gameData.games.length-1;f>=0;f=f-1){if(h.find({id:d.gameData.games[f].gameId}).length===0){h.insert(d.gameData.games[f])}}h.fireEvent("listLoad",h,d,h._filter);return}h.historyCache[a]=Codex.util.ACS.makeRequest({url:a,listeners:{load:h.onHistoryLoad,error:h.onPromiseError,scope:h}})},next:function(b,c){var a=this;if((a.pager.page+1)<a.pager.pages){a.pager.page=a.pager.page+1;if(a.pager.page===1){Codex.util.Analytics.fire("view_match_history_more")}a.getHistory(b,c)}},clearPager:function(){var a=this;a.pager.page=0;a.pager.pages=0;a.pager.start=0;a.pager.end=0;a.pager.total=0},clearFilter:function(){var a=this;a._filter.champion=[];a._filter.queue=[];a._filter.map=[]},reinitialize:function(){var a=this;a.clearFilter();a.clearPager();a.fireEvent("reinitialize",a);a.removeAllListeners()},findByUser:function(a){var b=this,c=[];b.each(function(d){if(a.findParticipant(d.getParticipants())){c.push(d)}});return c},readPager:function(b){var a=this;a.pager.total=b.gameCount;a.pager.start=b.gameIndexBegin;a.pager.end=b.gameIndexEnd;a.pager.page=Math.floor(a.pager.start/a.pager.perPage);a.pager.pages=Math.ceil(a.pager.total/a.pager.perPage)},onHistoryLoad:function(e,d){var c=this,b={shownQueues:d.shownQueues,friendsFiltered:d.friendsFiltered,gameData:d.games},a;for(a=d.games.games.length-1;a>=0;a=a-1){if(c.find({id:d.games.games[a].gameId}).length===0){c.insert(d.games.games[a])}}c.readPager(d.games);c.fireEvent("load",c);c.fireEvent("listLoad",c,b,c._filter);c.historyCache[e.url]=JSoop.clone(b)},onPromiseError:function(c,a,b){this.fireEvent("error",a,b)}});JSoop.define("Codex.model.CurrentUser",{extend:"Codex.model.User",singleton:true,requires:["Codex.util.ACS"],constructor:function(a,b){var c=this,d=c.getVaporRegion(),f=Riot.getCookie("PVPNET_ID_"+d),e;a=a||{};a.accountId=f;e={Region:d};if(c.isLoggedIn()){e.Authorization="Vapor "+c.getToken()}Codex.util.ACS.setHeaders(e);c.callParent([a,b]);c.set("type","vapor")},getToken:function(){return Riot.getCookie("PVPNET_TOKEN_"+this.getVaporRegion())},getVaporRegion:function(){return Riot.getCookie("PVPNET_REGION").toUpperCase()},isLoggedIn:function(){return !!Riot.getCookie("PVPNET_TOKEN_"+this.getVaporRegion())}},function(a){Codex.getCurrentUser=function(){return a}});Riot.DDragon.addApp(["item","champion","summoner"],function(){JSoop.iterate(Riot.DDragon.models,function(a,b){Riot.DDragon.models[b+"_"+a.version]=a;if(b!=="mastery"&&b!=="language"){Riot.DDragon.addDisplay({type:b+"_"+a.version+"_tooltip",success:Riot.DDragon.display[b+"_tooltip"].success})}});JSoop.define("Codex.Main",{extend:"Spine.app.Application",singleton:true,requires:["Codex.util.Config","Codex.util.SpineBridge","Codex.util.DataDragon","Codex.util.I18n","Codex.util.Analytics","Codex.util.Assets","Codex.util.Formatters","Codex.model.CurrentUser","Codex.collection.Games","Codex.collection.Participants","Codex.view.Tooltip","Codex.controller.Game","Codex.controller.Player","Codex.controller.Error","Codex.controller.Page","Codex.controller.Login"],controllers:{Game:"Codex.controller.Game",Player:"Codex.controller.Player",Error:"Codex.controller.Error",Page:"Codex.controller.Page",Login:"Codex.controller.Login"},collections:{Games:"Codex.collection.Games",Participants:"Codex.collection.Participants"},regions:{main:"#main"}});Riot.DDragon.addDisplay({type:"champion_tooltip",success:function(a){return'<div class="info"><div class="name">'+a.name+"</div></div>"}})});
Advertisement
Add Comment
Please, Sign In to add comment