{"version":3,"sources":["/source/modules/uci/module_create.ts","/source/modules/uci/services/resultsService.ts","/source/modules/uci/services/uciLiveService.ts","/source/modules/uci/controllers/uciBmxController.ts","/source/modules/uci/controllers/uciBmxFsController.ts","/source/modules/uci/controllers/uciDhLiveCtrl.ts","/source/modules/uci/controllers/uciEdrLiveCtrl.ts","/source/modules/uci/controllers/uciEventCategoryCtrl.ts","/source/modules/uci/controllers/uciEventCtrl.ts","/source/modules/uci/controllers/uciTrackController.ts","/source/modules/uci/controllers/uciTrialsController.ts","/source/modules/uci/controllers/uciXcoController.ts","/source/modules/uci/config/route.ts","uci.js","/source/modules/uci/contracts/contracts.ts","uci-tmpl.js"],"names":["uci","uci.genericResultsService","uci.genericResultsService.constructor","uci.genericResultsService.Uci","uci.uciLiveService","uci.uciLiveService.constructor","uci.uciLiveService.LiveContext","uci.uciLiveService.RaceDetails","uci.uciBmxCtrl","uci.uciBmxCtrl.constructor","uci.uciBmxOverviewCtrl","uci.uciBmxOverviewCtrl.constructor","uci.uciBmxOverviewCtrl.IsCollapsed","uci.uciBmxOverviewCtrl.ToggleCollapse","uci.uciBmxFsRaceCtrl","uci.uciBmxFsRaceCtrl.constructor","uci.uciDhLiveCtrl","uci.uciDhLiveCtrl.constructor","uci.uciDhLiveCtrl.GetFlagLink","uci.uciDhLiveCtrl.LiveCtx","uci.uciDhLiveCtrl.GetGap","uci.uciEdrLiveCtrl","uci.uciEdrLiveCtrl.constructor","uci.uciEdrLiveCtrl.GetFlagLink","uci.uciEdrLiveCtrl.LiveCtx","uci.uciCategoryCtrl","uci.uciCategoryCtrl.constructor","uci.uciCategoryCtrl.LiveCtx","uci.uciCategoryCtrl.Refresh","uci.uciDisciplineCtrl","uci.uciDisciplineCtrl.constructor","uci.uciDisciplineCtrl.LiveCtx","uci.uciEventCtrl","uci.uciEventCtrl.constructor","uci.uciMtbCtrl","uci.uciMtbCtrl.constructor","uci.uciMtbCtrl.setTab","uci.uciTrackCtrl","uci.uciTrackCtrl.constructor","uci.uciTrialsRaceCtrl","uci.uciTrialsRaceCtrl.constructor","uci.uciXcoCtrl","uci.uciXcoCtrl.constructor","uci.uciXcoRaceCtrl","uci.uciXcoRaceCtrl.constructor","uci.uciTkConfigCtrl","uci.uciTkConfigCtrl.constructor","uci.uciTkConfigCtrl.PlaceMarkerIcon","uci.uciTkConfigCtrl.AddTrack","uci.uciTkConfigCtrl.InitMap","module","angular","err","run","$templateCache","put"],"mappings":"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","file":"uci.js","sourcesContent":["/// \r\n/// \r\n/// \r\n\r\nmodule uci\r\n{\r\n uciModule = angular.module(\"uci\", [\"cr.infrastructure\",\"cr.form\",\"cr.job\",\"angularFileUpload\",\"cr.event\"]);\r\n}\r\n","/**\n * Created by christian on 2/26/2015.\n */\n\nmodule uci\n{\n class genericResultsService {\n\n private url:string;\n static $inject = ['$http', '$q', '$log','cfg'];\n busy:any={};\n\n private $log:angular.ILogService;\n\n ReturnState:string;\n\n //[Route(\"uci/{db}/{discipline}/{key?}\")]\n Uci(db,discipline,key):angular.IPromise\n {\n\n if (this.busy.hasOwnProperty(key))\n {\n var toRet = this.$q.defer();\n toRet.reject(\"BUSY\");\n console.log('already busy');\n return toRet.promise;\n }\n\n this.busy[key]=true;\n //console.log(\"fetch data: \"+this.url + 'uci/'+db+'/'+discipline+'?key='+encodeURIComponent(key));\n var url=this.url + 'uci/'+db+'/'+discipline+'?key='+encodeURIComponent(key);\n //console.log(\"genric url: \",url);\n\n // this.$http({url: this.url + 'race/'+db+'/'+key, method: \"GET\"}).then(result=> {\n // this.busy=false;\n // return result.data;\n\n return this.$http({url: this.url + 'uci/'+db+'/'+discipline+'?key='+encodeURIComponent(key), method: \"GET\"})\n .then(result=> {\n delete this.busy[key];\n //console.log(\"cool? \",result.data);\n return result.data;\n },error=>{\n delete this.busy[key];\n console.log(\"get results error\",error);\n return error;\n });\n }\n\n\n\n constructor(public $http:angular.IHttpService,\n private $q:angular.IQService,\n $log:any,public cfg) {\n\n //this.$log = $log.getInstance('abcService');\n\n console.log(\"uci url: \",window.location.href);\n this.url = cfg.ResultsService;\n\n if (window.location.href.indexOf(\"chronorace\")!=-1)\n {\n console.log(\"USING ONLINE SERVICE\");\n this.url=\"https://prod.chronorace.be/api/results/generic/\";\n } else\n {\n console.log(\"USING OFFLINE SERVICE\");\n this.url=\"/api/scoring/results/generic/\";\n }\n\n\n this.url=\"https://prod.chronorace.be/api/results/generic/\";\n\n //this.url=\"/api/results/generic/\";\n\n\n console.log(\"GenericResultsServiceController: \"+this.url);\n //this.url = \"api/rbmh/dh/\";\n }\n }\n\n // Module registrations.\n uciModule.service('genericResultsService', genericResultsService);\n}\n","/**\r\n * Created by christian on 2/26/2015.\r\n */\r\n\r\nmodule uci\r\n{\r\n class uciLiveService {\r\n \r\n private url:string;\r\n static $inject = ['$http', '$q', '$log','cfg','genericResultsService'];\r\n busy:boolean=false;\r\n private $log:angular.ILogService;\r\n\r\n ReturnState:string;\r\n\r\n LiveContext(db):angular.IPromise\r\n {\r\n return this.$http({url: this.url + 'cms/'+db, method: \"GET\"}).then(result=> result.data);\r\n }\r\n\r\n RaceDetails(db,key):angular.IPromise\r\n {\r\n return this.genericResultsService.Uci(db,'dh',key);\r\n /*if (this.busy)\r\n {\r\n var toRet = this.$q.defer();\r\n toRet.reject(\"BUSY\");\r\n console.log('already busy');\r\n return toRet.promise; \r\n }\r\n\r\n this.busy=true;\r\n\r\n return this.$http({url: this.url + 'race/'+db+'/'+key, method: \"GET\"}).then(result=> {\r\n this.busy=false;\r\n return result.data;\r\n },error=>{\r\n this.busy=false;\r\n console.log(\"getracedataerror\",error);\r\n return error;\r\n });*/\r\n }\r\n\r\n //api/scoring/uci/dh\r\n StartUpload=()=>\r\n {\r\n return this.$http({url: this.url + 'start', method: \"GET\"}).then(result=> {\r\n return result.data;\r\n });\r\n }\r\n \r\n STMessage=(messageType)=>\r\n {\r\n console.log(\"request ST Message\");\r\n return this.$http({url: this.url + 'stmessage/0/'+messageType, method: \"GET\"}).then(result=> {\r\n return result.data;\r\n });\r\n }\r\n STFXMessage=(round,messageType)=>\r\n {\r\n console.log(\"request ST Message\");\r\n return this.$http({url: this.url + 'st4xmessage/'+round+'/'+messageType, method: \"GET\"}).then(result=> {\r\n return result.data;\r\n });\r\n }\r\n \r\n StopUpload=()=>\r\n {\r\n return this.$http({url: this.url + 'stop', method: \"GET\"}).then(result=> {\r\n return result.data;\r\n });\r\n\r\n }\r\n Running=()=>\r\n {\r\n return this.$http({url: this.url + 'running', method: \"GET\"}).then(result=> {\r\n return result.data;\r\n });\r\n }\r\n BuildCms=(upload)=>\r\n {\r\n return this.$http({url: this.url + 'buildcms/'+upload, method: \"GET\"}).then(result=> {\r\n return result.data;\r\n });\r\n\r\n }\r\n\r\n Build=(upload)=>\r\n {\r\n return this.$http({url: this.url + 'build/'+upload, method: \"GET\"}).then(result=> {\r\n return result.data;\r\n });\r\n }\r\n \r\n constructor(public $http:angular.IHttpService,\r\n private $q:angular.IQService,\r\n $log:any,public cfg,public genericResultsService) {\r\n\r\n //this.$log = $log.getInstance('abcService');\r\n\r\n console.log(\"uci url: \"+ angular.toJson(cfg));\r\n \r\n this.url = cfg.UciDhService;\r\n \r\n // this.url=\"https://prod.chronorace.be/api/results/uci/dh/\";\r\n\r\n //this.url + 'uci/'+db+'/'+discipline+'?key='+encodeURIComponent(key)\r\n //this.url = \"api/rbmh/dh/\";\r\n }\r\n }\r\n\r\n // Module registrations.\r\n uciModule.service('uciLiveService', uciLiveService);\r\n}\r\n","module uci\r\n{\r\n export class uciBmxCtrl {\r\n static $inject = ['genericResultsService','$scope', '$stateParams','$modal','$state','$interval','results'];\r\n\r\n context:any=null;\r\n fastest:any=null;\r\n busy:boolean=false;\r\n\r\n PrintStatus=status=>\r\n {\r\n if (status=='Unknown') return '-';\r\n if (status=='Finished') return '';\r\n return status;\r\n }\r\n\r\n FormatPoints=points=>\r\n {\r\n if (points<0) return \"-\";\r\n return points;\r\n }\r\n\r\n StatusClass=status=>\r\n {\r\n switch (status)\r\n {\r\n case \"DSQ\":\r\n return \"label-danger\";\r\n\r\n case \"DNS\":\r\n return \"label-warning\";\r\n\r\n case \"Finished\":\r\n return \"label-success\";\r\n\r\n case \"InRace\":\r\n return \"label-info\";\r\n\r\n default:\r\n return \"label-default\";\r\n }\r\n }\r\n\r\n SetResult=results=>{\r\n this.results=results;\r\n }\r\n\r\n SetContext=context=>{\r\n this.context=context;\r\n if (this.results!=null && this.results.GroupId!=null && this.context!=null)\r\n {\r\n console.log(\"Lala: \",this.context.Fast)\r\n this.context.Fastest.forEach(f => {\r\n if (f.GroupId==this.results.GroupId)\r\n {\r\n this.fastest=f;\r\n }\r\n });\r\n }\r\n }\r\n\r\n Refresh=()=>\r\n {\r\n if (this.busy) return;\r\n\r\n this.busy=true;\r\n\r\n this.genericResultsService.Uci(this.$stateParams[\"context\"],'bmx',$stateParams[\"key\"]+'/results').then(data=>{\r\n this.SetResult(data);\r\n this.busy=false;\r\n },error=>this.busy=false)\r\n\r\n this.genericResultsService.Uci(this.$stateParams[\"context\"],'bmx','context').then(data=>{\r\n this.SetContext(data);\r\n this.busy=false;\r\n },error=>this.busy=false)\r\n }\r\n\r\n constructor(private genericResultsService, private $scope, private $stateParams, private $modal,public $state,public $interval,public results)\r\n {\r\n\r\n //if ($state.current.name=='uci.event.discipline.category.trials') $state.go(\".ov\");\r\n this.SetResult(results);\r\n\r\n var i=0;\r\n var timer = $interval(()=>\r\n {\r\n this.Refresh();\r\n },3000);\r\n\r\n this.Refresh();\r\n\r\n $scope.$on('$destroy', () => {\r\n // Make sure that the interval is destroyed too\r\n $interval.cancel(timer);\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n export class uciBmxOverviewCtrl {\r\n static $inject = ['genericResultsService','$scope', '$stateParams','$modal','$state','$interval','overview'];\r\n\r\n context:any=null;\r\n overview:any=null;\r\n busy:boolean=false;\r\n collapsed:any={}\r\n\r\n IsCollapsed(phase)\r\n {\r\n return this.collapsed.hasOwnProperty(phase.RoundId) && this.collapsed[phase.RoundId];\r\n }\r\n\r\n ToggleCollapse(phase)\r\n {\r\n this.collapsed[phase.RoundId]=!this.IsCollapsed(phase);\r\n console.log(\"Toggle Collapse: \",this.IsCollapsed(phase))\r\n }\r\n\r\n PrintStatus=status=>\r\n {\r\n if (status=='Unknown') return '-';\r\n if (status=='Finished') return '';\r\n return status;\r\n }\r\n\r\n FormatPoints=points=>\r\n {\r\n if (points<0) return \"-\";\r\n return points;\r\n }\r\n\r\n StatusClass=status=>\r\n {\r\n switch (status)\r\n {\r\n case \"DSQ\":\r\n return \"label-danger\";\r\n\r\n case \"DNS\":\r\n return \"label-warning\";\r\n\r\n case \"Finished\":\r\n return \"label-success\";\r\n\r\n case \"InRace\":\r\n return \"label-info\";\r\n\r\n default:\r\n return \"label-default\";\r\n }\r\n }\r\n\r\n SetOverview=overview=>{\r\n console.log(\"SET OVERVIEW \",overview)\r\n if (!overview || overview=='null' || overview.Phases==null) return;\r\n this.overview=overview;\r\n\r\n overview.Phases.forEach(p=>{\r\n if (!p.Heats) p.Heats=[];\r\n\r\n p.Heats.forEach(h=>{\r\n if (!h.Data) h.Data=[];\r\n\r\n while (h.Data.length<8)\r\n {\r\n h.Data.push({\"IRM\":\"NA\"});\r\n }\r\n })\r\n })\r\n }\r\n\r\n Refresh=()=>\r\n {\r\n if (this.busy) return;\r\n\r\n this.busy=true;\r\n\r\n this.genericResultsService.Uci(this.$stateParams[\"context\"],'bmx','overview').then(data=>{\r\n this.SetOverview(data);\r\n this.busy=false;\r\n },error=>this.busy=false)\r\n }\r\n\r\n GetHeatStyle=(heat,phase)=>\r\n {\r\n switch (heat.HeatStatus)\r\n {\r\n case \"Confirmed\":\r\n return {\"background-color\":\"darkgreen\",\"color\":\"white\"};\r\n\r\n case \"Running\":\r\n return {\"background-color\":\"#bbbb00\",\"color\":\"black\"};\r\n\r\n case \"GateSelectionDone\":\r\n return {\"background-color\":\"#330000\",\"color\":\"white\"};\r\n\r\n case \"RTS\":\r\n return {\"background-color\":\"#925000\",\"color\":\"white\"};\r\n\r\n default:\r\n return {\"background-color\":\"#333333\",\"color\":\"white\"};\r\n }\r\n }\r\n\r\n GetStyle=(rider,heat,phase)=>\r\n {\r\n var color=\"white\";\r\n var backColor=\"transparant\";\r\n var borderColor=\"\";\r\n\r\n var borderColor=\"\";\r\n var borderWidth=\"2px\";\r\n\r\n if (heat.HeatStatus=='Confirmed' && rider.Qual=='Q')\r\n {\r\n borderColor=\"lime\";\r\n //return 'solid 2px lime';\r\n }\r\n else if (heat.HeatStatus=='Running' && rider.Qual=='-')\r\n {\r\n borderColor=\"lime\";\r\n //return 'solid 2px lime';\r\n }\r\n else if (heat.HeatStatus=='Running' && rider.IRM=='' && rider.Pos!=='')\r\n {\r\n borderColor=\"white\";\r\n //return 'solid 2px lime';\r\n }\r\n else if (rider.IRM=='DNS')\r\n {\r\n borderColor=\"red\";\r\n //return 'solid 2px red';\r\n }\r\n else if (rider.IRM=='DNF')\r\n {\r\n borderColor=\"orange\";\r\n //return 'solid 2px orange';\r\n }\r\n else if (rider.IRM=='REL')\r\n {\r\n borderColor=\"darkred\";\r\n //return 'solid 2px darkred';\r\n }\r\n else if (rider.IRM=='NA') {\r\n return {};\r\n }\r\n else if (heat.HeatStatus=='Confirmed') {\r\n borderColor=\"white\";\r\n //return 'solid 2px white';\r\n } else\r\n {\r\n borderWidth=\"1px\";\r\n borderColor=\"#333333\";\r\n }\r\n\r\n if (heat.HeatStatus=='Confirmed')\r\n {\r\n backColor=borderColor;\r\n if (backColor!=\"darkred\")\r\n {\r\n color=\"black\";\r\n }\r\n }\r\n\r\n return {\r\n \"border\":\"solid \"+borderWidth+\" \"+borderColor,\r\n \"background-color\":backColor,\r\n \"color\":color\r\n }\r\n\r\n //return 'solid 1px #444444'\r\n\r\n }\r\n\r\n\r\n constructor(private genericResultsService, private $scope, private $stateParams, private $modal,public $state,public $interval,public overview)\r\n {\r\n\r\n //if ($state.current.name=='uci.event.discipline.category.trials') $state.go(\".ov\");\r\n this.SetOverview(overview);\r\n\r\n var i=0;\r\n var timer = $interval(()=>\r\n {\r\n this.Refresh();\r\n },1500);\r\n\r\n this.Refresh();\r\n\r\n $scope.$on('$destroy', () => {\r\n // Make sure that the interval is destroyed too\r\n $interval.cancel(timer);\r\n });\r\n }\r\n }\r\n\r\n}\r\n","module uci\r\n{\r\n export class uciBmxFsRaceCtrl {\r\n static $inject = ['genericResultsService','$scope', '$stateParams','$modal','$state','$interval','registrations','results'];\r\n\r\n PrintStatus=status=>\r\n {\r\n if (status=='Unknown') return '-';\r\n if (status=='Finished') return '';\r\n return status;\r\n }\r\n\r\n FormatPoints=points=>\r\n {\r\n if (points<0) return \"-\";\r\n return points;\r\n }\r\n\r\n StatusClass=status=>\r\n {\r\n switch (status)\r\n {\r\n case \"DSQ\":\r\n return \"label-danger\";\r\n\r\n case \"DNS\":\r\n return \"label-warning\";\r\n\r\n case \"Finished\":\r\n return \"label-success\";\r\n\r\n case \"InRace\":\r\n return \"label-info\";\r\n\r\n default:\r\n return \"label-default\";\r\n }\r\n }\r\n\r\n SetResult=results=>{\r\n this.results=results;\r\n }\r\n\r\n constructor(private genericResultsService, private $scope, private $stateParams, private $modal,public $state,public $interval,public registrations,public results)\r\n {\r\n\r\n //if ($state.current.name=='uci.event.discipline.category.trials') $state.go(\".ov\");\r\n this.SetResult(results);\r\n\r\n var i=0;\r\n var timer = $interval(()=>\r\n {\r\n this.genericResultsService.Uci($stateParams[\"context\"],'bmxfs',$stateParams[\"key\"]+'/results').then(data=>{\r\n this.SetResult(data);\r\n })\r\n\r\n i++;\r\n if (i>20)\r\n {\r\n this.genericResultsService.Uci($stateParams[\"context\"],'bmxfs',$stateParams[\"key\"]+'/registrations').then(data=>{\r\n this.registrations=data;\r\n })\r\n i=0;\r\n }\r\n },3000);\r\n\r\n $scope.$on('$destroy', () => {\r\n // Make sure that the interval is destroyed too\r\n $interval.cancel(timer);\r\n });\r\n }\r\n }\r\n}\r\n","module uci\r\n{\r\n export class uciDhLiveCtrl {\r\n static $inject = ['$scope','$state','$stateParams','$interval','uciLiveService','cfg'/*,'raceData'*/];\r\n\r\n //raceData:any={};\r\n\r\n ImagePath:string=\"\";\r\n\r\n GetFlagLink(nat)\r\n {\r\n if (!nat || nat=='') return \"\";\r\n return this.ImagePath+'flags/'+nat.toLowerCase()+'.png';\r\n }\r\n\r\n\r\n best:any={};\r\n second:any={};\r\n\r\n splits:Array=[];\r\n allSplits:Array=[];\r\n\r\n //best:any={};\r\n\r\n NbSplit:number=0;\r\n\r\n LiveCtx()\r\n {\r\n return this.$scope.uciDhCtrl.liveCtx;\r\n }\r\n\r\n GetGap(pt,res)\r\n {\r\n if (pt==-1) pt=this.allSplits.length;\r\n if (!angular.isDefined(res.Times)) return 0;\r\n if (!angular.isDefined(this.best) || this.best==null) return 0;\r\n\r\n if (res.Times.length<=pt || !res.Times[pt] || res.Times[pt]==0) return 0;\r\n\r\n var cmp=this.best;\r\n if (res.RaceNr==this.best.RaceNr) cmp=this.second;\r\n\r\n\r\n if (cmp.Times && cmp.Times.length>pt) \r\n {\r\n if (cmp.Times[pt].RaceTime==0) return 0;\r\n var toRet=res.Times[pt].RaceTime-cmp.Times[pt].RaceTime;\r\n return toRet; \r\n }\r\n else\r\n {\r\n return \"-\";\r\n }\r\n\r\n //return 123;\r\n }\r\n\r\n SetRaceData=data=>{\r\n //console.log('SET RACE DATA: ',data.Results);\r\n if (!angular.isDefined(data) || !data) return;\r\n this.splits=[];\r\n this.allSplits=[];\r\n this.raceData=data;\r\n var i=0;\r\n\r\n var tmp=data.Results;\r\n if (!angular.isDefined(tmp) || tmp==null) return;\r\n\r\n i=0;\r\n this.NbSplit=4;\r\n if (tmp.length>0) this.best=tmp[0];\r\n if (tmp.length>1) this.second=tmp[1];\r\n\r\n //console.log(\"bst: \"+angular.toJson(this.best));\r\n i=0;\r\n while (i<(this.NbSplit+1)>>1) {\r\n this.splits.push(i);\r\n i++;\r\n }\r\n i=0;\r\n while (i<(this.NbSplit)) {\r\n this.allSplits.push(i);\r\n i++;\r\n }\r\n }\r\n\r\n GetRaceData=()=>{\r\n this.uciLiveService.RaceDetails(this.$stateParams.context,this.$stateParams.key).then(data=>{\r\n this.SetRaceData(data);\r\n },error=>{\r\n console.log(\"Error... \",error);\r\n });\r\n\r\n //console.log(\"GetRaceData: \"+angular.toJson(this.raceData));\r\n }\r\n\r\n constructor(private $scope,private $state,private $stateParams,public $interval,public uciLiveService,public cfg/*,public raceData*/)\r\n {\r\n\r\n //this.SetRaceData(raceData);\r\n this.ImagePath=cfg.ImagePath;\r\n\r\n // console.log(\"key: \"+$stateParams.context+\" / \"+$stateParams.key);\r\n var timer = $interval(()=>\r\n {\r\n this.GetRaceData();\r\n },2000);\r\n\r\n this.GetRaceData();\r\n\r\n if ($state.current.name=='uci.dh.race.live')\r\n {\r\n if (raceData.Results && raceData.Results.length>0)\r\n {\r\n $state.go(\"uci.dh.race.live.res\");\r\n } else if (raceData.NextToStart && raceData.NextToStart.length>0)\r\n {\r\n $state.go(\"uci.dh.race.live.nxt\");\r\n }\r\n }\r\n\r\n //this.GetRaceData();\r\n\r\n $scope.$on('$destroy', () => {\r\n // Make sure that the interval is destroyed too\r\n $interval.cancel(timer);\r\n });\r\n\r\n }\r\n }\r\n\r\n}\r\n","module uci\r\n{\r\n export class uciEdrLiveCtrl {\r\n static $inject = ['$scope','$state','$stateParams','$interval','uciLiveService','cfg','genericResultsService'];\r\n\r\n //raceData:any={};\r\n\r\n ImagePath:string=\"\";\r\n\r\n GetFlagLink(nat)\r\n {\r\n if (!nat || nat=='') return \"\";\r\n return this.ImagePath+'flags/'+nat.toLowerCase()+'.png';\r\n }\r\n\r\n db:any=null;\r\n key:any=null;\r\n\r\n mode:any='Stage';\r\n\r\n best:any={};\r\n second:any={};\r\n stages:any=[];\r\n\r\n config:any=null;\r\n curConfig:any=null;\r\n selStage:any=null;\r\n\r\n results:any=null;\r\n\r\n splits:Array=[];\r\n allSplits:Array=[];\r\n\r\n //best:any={};\r\n\r\n LiveCtx()\r\n {\r\n return this.$scope.uciEdrCtrl.liveCtx;\r\n }\r\n\r\n SetRaceData=data=>{\r\n }\r\n\r\n SetMode=mode=>{\r\n this.mode=mode;\r\n }\r\n\r\n SelectStage=stage=>{\r\n this.selStage=stage\r\n console.log(\"SelectStage=\",stage);\r\n this.results=null;\r\n\r\n this.GetRaceData();\r\n }\r\n\r\n GetRaceData=()=>{\r\n if (this.config==null)\r\n {\r\n this.genericResultsService.Uci(this.db,\"edr\",\"config\").then(data=>\r\n {\r\n console.log(\"CONFIG: \",data)\r\n this.config=data;\r\n data.RaceList.forEach(d=>\r\n {\r\n if (d.Id==this.key)\r\n {\r\n this.stages=[]\r\n this.curConfig=d;\r\n d.Stages.forEach(stage=>{\r\n if (stage.Distance>0)\r\n {\r\n this.stages.push(stage);\r\n }\r\n })\r\n }\r\n }\r\n )\r\n this.GetRaceData();\r\n }\r\n )\r\n }\r\n\r\n if (this.selStage==null && this.stages!=null && this.stages.length>0)\r\n {\r\n this.selStage=this.stages[0];\r\n }\r\n\r\n if (this.selStage!=null)\r\n {\r\n this.genericResultsService.Uci(this.db,\"edr\",this.key+'/'+this.selStage.Idx+'/result').then(data=>\r\n {\r\n this.results=data\r\n });\r\n\r\n }\r\n\r\n /*this.uciLiveService.RaceDetails(this.$stateParams.context,this.$stateParams.key).then(data=>{\r\n this.SetRaceData(data);\r\n },error=>{\r\n console.log(\"Error... \",error);\r\n });\r\n*/\r\n //console.log(\"GetRaceData: \"+angular.toJson(this.raceData));\r\n }\r\n\r\n constructor(private $scope,private $state,private $stateParams,public $interval,public uciLiveService,public cfg,public genericResultsService)\r\n {\r\n\r\n //this.SetRaceData(raceData);\r\n this.ImagePath=cfg.ImagePath;\r\n\r\n this.db=this.$stateParams[\"context\"];\r\n this.key=this.$stateParams[\"key\"];\r\n\r\n //console.log(\"DB=\",this.$stateParams[\"context\"],\" key=\",this.$stateParams[\"key\"])\r\n\r\n // console.log(\"key: \"+$stateParams.context+\" / \"+$stateParams.key);\r\n var timer = $interval(()=>\r\n {\r\n this.GetRaceData();\r\n },10000);\r\n\r\n this.GetRaceData();\r\n\r\n /*if ($state.current.name=='uci.dh.race.live')\r\n {\r\n if (raceData.Results && raceData.Results.length>0)\r\n {\r\n $state.go(\"uci.dh.race.live.res\");\r\n } else if (raceData.NextToStart && raceData.NextToStart.length>0)\r\n {\r\n $state.go(\"uci.dh.race.live.nxt\");\r\n }\r\n }*/\r\n\r\n //this.GetRaceData();\r\n\r\n $scope.$on('$destroy', () => {\r\n // Make sure that the interval is destroyed too\r\n $interval.cancel(timer);\r\n });\r\n\r\n }\r\n }\r\n\r\n}\r\n","module uci\r\n{\r\n export class uciCategoryCtrl {\r\n static $inject = ['$scope','$state','$stateParams'];\r\n\r\n LiveCtx()\r\n {\r\n return this.$scope.uciEventCtrl.liveCtx;\r\n }\r\n\r\n Refresh()\r\n {\r\n console.log(\"REFRESH clicked\");\r\n this.$scope.uciEventCtrl.Refresh();\r\n }\r\n\r\n HandleClick=(grp,chl)=>{\r\n //console.log(\"Hello: \"+angular.toJson(grp));\r\n //console.log(\"Chk: \"+angular.toJson(chl));\r\n\r\n if (angular.isDefined(chl.Route))\r\n {\r\n console.log(\"go to route: \"+chl.Route);\r\n var rteObj=angular.fromJson(chl.Route);\r\n this.$state.go(rteObj.Route,rteObj.Params);\r\n } else if (angular.isDefined(chl.Link) && chl.Link!='')\r\n {\r\n window.location=chl.Link;\r\n }\r\n }\r\n\r\n Folders=()=>{\r\n var curCateg=this.CurrentCategory();\r\n var toRet=[];\r\n\r\n if (!curCateg || !curCateg.Childs) return toRet;\r\n\r\n angular.forEach(curCateg.Childs,chl=>{\r\n if (chl.Childs!=null && chl.Childs.length>0) toRet.push(chl);\r\n //if (!chl.Type || chl.Type!='File') toRet.push(chl);\r\n });\r\n return toRet; \r\n }\r\n\r\n Leafs=()=>{\r\n var curCateg=this.CurrentCategory();\r\n var toRet=[];\r\n\r\n console.log(\"curdiscipline \",this.$scope.uciDisciplineCtrl.CurrentDiscipline());\r\n console.log(\"???? \",curCateg);\r\n console.log(\"searched: \",this.$stateParams.category);\r\n\r\n if (!curCateg || !curCateg.Childs) \r\n {\r\n return toRet;\r\n }\r\n\r\n angular.forEach(curCateg.Childs,chl=>{\r\n if (chl.Childs==null || chl.Childs.length==0) toRet.push(chl);\r\n //if (chl.Type && chl.Type=='File') toRet.push(chl);\r\n });\r\n return toRet;\r\n } \r\n\r\n Files=()=>{\r\n var curCateg=this.CurrentCategory();\r\n var toRet=[];\r\n angular.forEach(curCateg.Childs,chl=>{\r\n if (chl.Type && chl.Type=='File') toRet.push(chl);\r\n });\r\n return toRet;\r\n }\r\n\r\n CurrentCategory=()=>{\r\n var ctx=this.$scope.uciDisciplineCtrl.CurrentDiscipline();\r\n return _.where(ctx.Childs,{Id:this.$stateParams.category})[0];\r\n }\r\n\r\n constructor(private $scope,private $state,private $stateParams)\r\n {\r\n this.Refresh();\r\n // console.log(\"category: \"+angular.toJson($stateParams.category));\r\n }\r\n }\r\n\r\n\r\n export class uciDisciplineCtrl {\r\n static $inject = ['$scope','$state','$stateParams'];\r\n\r\n\r\n LiveCtx()\r\n {\r\n return this.$scope.uciEventCtrl.liveCtx;\r\n }\r\n\r\n HandleClick=(grp,chl)=>{\r\n //console.log(\"Hello: \"+angular.toJson(grp));\r\n //console.log(\"Chk: \"+angular.toJson(chl));\r\n\r\n if (angular.isDefined(chl.Route))\r\n {\r\n\r\n var rteObj=angular.fromJson(chl.Route);\r\n this.$state.go(rteObj.Route,rteObj.Params);\r\n } else if (angular.isDefined(chl.Link) && chl.Link!='')\r\n {\r\n window.location=chl.Link;\r\n }\r\n }\r\n\r\n\r\n Folders=()=>{\r\n var curCateg=this.CurrentDiscipline();\r\n var toRet=[];\r\n\r\n angular.forEach(curCateg.Childs,chl=>{\r\n if (chl.Childs!=null && chl.Childs.length>0) toRet.push(chl);\r\n //if (!chl.Type || chl.Type!='File') toRet.push(chl);\r\n });\r\n return toRet; \r\n }\r\n Leafs=()=>{\r\n var curCateg=this.CurrentDiscipline(); \r\n var toRet=[];\r\n if (curCateg==null) return toRet;\r\n angular.forEach(curCateg.Childs,chl=>{\r\n if (chl.Childs==null || chl.Childs.length==0) toRet.push(chl);\r\n //if (chl.Type && chl.Type=='File') toRet.push(chl);\r\n });\r\n return toRet;\r\n } \r\n\r\n Files=()=>{\r\n var curCateg=this.CurrentDiscipline();\r\n var toRet=[];\r\n if (curCateg==null) return toRet;\r\n angular.forEach(curCateg.Childs,chl=>{\r\n if (chl.Type && chl.Type=='File') toRet.push(chl);\r\n });\r\n return toRet;\r\n }\r\n\r\n\r\n CurrentDiscipline:any=()=>{\r\n var ctx=this.LiveCtx();\r\n return _.where(ctx.Childs,{Id:this.$stateParams.discipline})[0];\r\n }\r\n\r\n constructor(private $scope,private $state,private $stateParams)\r\n {\r\n //console.log(\"discipline: \"+angular.toJson($stateParams.discipline));\r\n\r\n if ($state.current.name=='uci.event.discipline' && this.CurrentDiscipline()!=null )\r\n {\r\n var folders=this.Folders();\r\n if (folders.length>0) $state.go(\"uci.event.discipline.category\",{category:folders[0].Id});\r\n }\r\n\r\n }\r\n }\r\n}\r\n","module uci\r\n{\r\n export class uciEventCtrl {\r\n static $inject = ['$scope','$state','liveCtx','uciLiveService','$stateParams'];\r\n\r\n public files:Array=[];\r\n\r\n GoBack=()=>\r\n {\r\n this.$state.go(this.uciLiveService.ReturnState);\r\n }\r\n\r\n Refresh=()=>\r\n {\r\n console.log(\"Refresh on event\");\r\n\r\n //liveCtx: ['uciLiveService','$stateParams', (uciLiveService,$stateParams:angular.ui.IStateParamsService) => uciLiveService.LiveContext($stateParams[\"context\"])]\r\n this.uciLiveService.LiveContext(this.$stateParams[\"context\"]).then(data=>{\r\n console.log(\"live ctx refreshed\",data);\r\n this.liveCtx=data;\r\n });\r\n }\r\n\r\n constructor(private $scope,private $state,public liveCtx,public uciLiveService,public $stateParams)\r\n {\r\n $scope.context=\"chrono\";\r\n\r\n //console.log(angular.toJson(liveCtx));\r\n\r\n if ($state.current.name=='uci.event' && liveCtx!=null && liveCtx.Childs !=null && liveCtx.Childs.length>0 )\r\n {\r\n //console.log(\"redirect?\");\r\n $state.go(\"uci.event.discipline\",{discipline:liveCtx.Childs[0].Id})\r\n }\r\n //console.log(\"uci dh controller: \"+angular.toJson(liveCtx));\r\n }\r\n }\r\n\r\n export class uciMtbCtrl {\r\n static $inject = ['$scope','$state','uciLiveService'];\r\n\r\n public tab:string=\"2024\";\r\n\r\n setTab(tab:string)\r\n {\r\n this.tab=tab;\r\n }\r\n\r\n constructor(private $scope,private $state,public uciLiveService)\r\n {\r\n $scope.context=\"chrono\";\r\n uciLiveService.ReturnState=$state.current.name;\r\n this.setTab(\"2024\");\r\n }\r\n }\r\n\r\n // Module registrations.\r\n //uciDhCtrl.controller('chronoCtrl', uciDhCtrl);\r\n}\r\n","module uci\r\n{\r\n export class uciTrackCtrl {\r\n static $inject = ['genericResultsService','$scope', '$stateParams','$modal','$state','$interval','results'];\r\n\r\n PrintStatus=status=>\r\n {\r\n if (status=='Unknown') return '-';\r\n if (status=='Finished') return '';\r\n return status;\r\n }\r\n\r\n FormatPoints=points=>\r\n {\r\n if (points<0) return \"-\";\r\n return points;\r\n }\r\n\r\n StatusClass=status=>\r\n {\r\n switch (status)\r\n {\r\n case \"DSQ\":\r\n return \"label-danger\";\r\n\r\n case \"DNS\":\r\n return \"label-warning\";\r\n\r\n case \"Finished\":\r\n return \"label-success\";\r\n\r\n case \"InRace\":\r\n return \"label-info\";\r\n\r\n default:\r\n return \"label-default\";\r\n }\r\n }\r\n\r\n SetResult=results=>{\r\n this.results=results;\r\n }\r\n\r\n constructor(private genericResultsService, private $scope, private $stateParams, private $modal,public $state,public $interval,public results)\r\n {\r\n\r\n //if ($state.current.name=='uci.event.discipline.category.trials') $state.go(\".ov\");\r\n this.SetResult(results);\r\n\r\n var i=0;\r\n var busy=false;\r\n var timer = $interval(()=>\r\n {\r\n if (busy) return;\r\n \r\n busy=true;\r\n this.genericResultsService.Uci($stateParams[\"context\"],'track',$stateParams[\"key\"]+'/results').then(data=>{\r\n busy=false;\r\n this.SetResult(data); \r\n },error=>{\r\n busy=false;\r\n })\r\n \r\n },3000);\r\n\r\n $scope.$on('$destroy', () => {\r\n // Make sure that the interval is destroyed too\r\n $interval.cancel(timer);\r\n });\r\n }\r\n }\r\n}\r\n","module uci\r\n{\r\n export class uciTrialsRaceCtrl {\r\n static $inject = ['genericResultsService','$scope', '$stateParams','$modal','$state','$interval','registrations','results'];\r\n\r\n PrintStatus=status=>\r\n {\r\n if (status=='Unknown') return '-';\r\n return status;\r\n }\r\n\r\n FormatPoints=points=>\r\n {\r\n if (points<0) return \"-\";\r\n return points;\r\n }\r\n\r\n StatusClass=status=>\r\n {\r\n switch (status)\r\n {\r\n case \"DSQ\":\r\n return \"label-danger\";\r\n\r\n case \"DNS\":\r\n return \"label-warning\";\r\n\r\n case \"Finished\":\r\n return \"label-success\";\r\n\r\n case \"InRace\":\r\n return \"label-info\";\r\n\r\n default:\r\n return \"label-default\";\r\n }\r\n }\r\n\r\n realSections:any=[];\r\n runs:any=[];\r\n sections:any={};\r\n\r\n GetResult=(raceNr,run,realIdx)=>\r\n {\r\n var sctIdx=this.sections[realIdx+\"_\"+run].Idx;\r\n //console.log(\"GetResult: \"+sctIdx+\"_\"+raceNr+\" / \"+run);\r\n var det=this.results.Details[sctIdx+\"_\"+raceNr];\r\n\r\n if (det.Points==0 && det.Status=='Unknown') return '-';\r\n\r\n if (!det) return \"-\";\r\n\r\n return det.Points;\r\n }\r\n\r\n selectedRider:any={};\r\n\r\n SetResult=results=>{\r\n this.results=results;\r\n\r\n this.runs=[];\r\n this.realSections=[];\r\n this.sections={};\r\n\r\n angular.forEach(results.Sections,sct=>{\r\n if (sct.RealIdx>this.realSections.length) this.realSections.push({Idx:sct.RealIdx,Name:\"Section \"+sct.RealIdx});\r\n if (sct.Lap>this.runs.length) this.runs.push({Idx:sct.Lap,\"Run \":sct.Lap});\r\n this.sections[sct.RealIdx+\"_\"+sct.Lap]=sct;\r\n });\r\n\r\n if (this.$state.current.name=='uci.event.discipline.category.trials.detail')\r\n {\r\n this.selectedRider=this.registrations[this.$stateParams[\"nr\"]];\r\n }\r\n }\r\n\r\n\r\n\r\n constructor(private genericResultsService, private $scope, private $stateParams, private $modal,public $state,public $interval,public registrations,public results)\r\n {\r\n\r\n //if ($state.current.name=='uci.event.discipline.category.trials') $state.go(\".ov\");\r\n this.SetResult(results);\r\n\r\n var i=0;\r\n var timer = $interval(()=>\r\n {\r\n this.genericResultsService.Uci($stateParams[\"context\"],'trials',$stateParams[\"key\"]+'/results').then(data=>{\r\n this.SetResult(data);\r\n })\r\n\r\n i++;\r\n if (i>20)\r\n {\r\n this.genericResultsService.Uci($stateParams[\"context\"],'trials',$stateParams[\"key\"]+'/registrations').then(data=>{\r\n this.registrations=data;\r\n })\r\n i=0;\r\n }\r\n },3000);\r\n\r\n $scope.$on('$destroy', () => {\r\n // Make sure that the interval is destroyed too\r\n $interval.cancel(timer);\r\n });\r\n }\r\n }\r\n}\r\n","module uci\r\n{\r\n export class uciXcoCtrl {\r\n static $inject = ['xcoService','$scope', '$stateParams','$modal','$state','raceList' ];\r\n\r\n constructor(private xcoService, private $scope, private $stateParams, private $modal,$state,public raceList) {\r\n $scope.context=\"chronorace\";\r\n\r\n console.log(\"xcoController ok: \"+angular.toJson(raceList));\r\n\r\n if (raceList && raceList.length>0)\r\n {\r\n $state.go(\"xco.race\",{raceName: raceList[0] });\r\n }\r\n }\r\n }\r\n //uciModule.controller('xcoController', xcoController);\r\n\r\n export class uciXcoRaceCtrl {\r\n static $inject = ['xcoService','$scope', '$stateParams','$modal','$state','registration','overview' ,'$interval'];\r\n\r\n FormatTime=input=>{\r\n if (!input) {\r\n return \"\";\r\n }\r\n\r\n var ms = input % 1000;\r\n input = (input - ms) / 1000;\r\n var secs:string = input % 60 + \"\";\r\n input = (input - +secs) / 60;\r\n var mins:string = input % 60 + \"\";\r\n var hrs:string = (input - +mins) / 60 + \"\";\r\n\r\n if (+hrs>0)\r\n {\r\n if (+mins < 10 ){\r\n mins = '0' + mins;\r\n }\r\n if (+secs < 10) {\r\n secs = '0' + secs;\r\n }\r\n\r\n return hrs + ':' + mins + ':' + secs;\r\n }\r\n if (+mins>0)\r\n {\r\n if (+secs < 10) {\r\n secs = '0' + secs;\r\n }\r\n return mins + ':' + secs;\r\n }\r\n\r\n return secs;\r\n }\r\n\r\n\r\n GetLapTimes=(ov)=> {\r\n if (!angular.isDefined(ov.LapTimes)) return \"\";\r\n var i=ov.LapTimes.length-10;\r\n if (i<0) i=0;\r\n\r\n var toRet=\"\";\r\n var first=true;\r\n while (i{\r\n if (!angular.isDefined(ov.CurrentSituation)) return \"\";\r\n\r\n if (+ov.CurrentSituation.Lap==0) return \"STRT\";\r\n if (+ov.CurrentSituation.LapLocation>0)\r\n {\r\n return \"Lap \"+ov.CurrentSituation.Lap+\" / ctrl \"+ov.CurrentSituation.LapLocation;\r\n }\r\n\r\n return \"Lap \"+ov.CurrentSituation.Lap;\r\n }\r\n\r\n constructor(private xcoService, private $scope, private $stateParams, private $modal,$state,public registration,public overview,public $interval)\r\n {\r\n\r\n if ($state.current.name=='uci.event.discipline.category.xco') $state.go(\".ov\");\r\n\r\n var i=0;\r\n var timer = $interval(()=>\r\n {\r\n xcoService.overview($stateParams.context,$stateParams.key).then(data=>{\r\n console.log(\"overview\");\r\n this.overview=data;\r\n });\r\n i++;\r\n if (i>20)\r\n {\r\n xcoService.overview($stateParams.context,$stateParams.key).then(data=>{\r\n console.log(\"registration\");\r\n this.registration=registration;\r\n });\r\n\r\n i=0;\r\n }\r\n },3000);\r\n\r\n $scope.$on('$destroy', () => {\r\n // Make sure that the interval is destroyed too\r\n $interval.cancel(timer);\r\n });\r\n }\r\n }\r\n\r\n export class uciTkConfigCtrl\r\n {\r\n static $inject = ['xcoService','$scope', '$stateParams','$modal','$state','registration','overview' ,'$interval','trackingConfig','genericResultsService'];\r\n\r\n icons=['m01','m02','m03','m04','m05','m06','m07','m08','m09','m10','m11','m12','m13','m14','m15','m16'\r\n ,'m01-b','m02-b','m03-b','m04-b','m05-b','m06-b','m07-b','m08-b','m09-b','m10-b','m11-b','m12-b','m13-b','m14-b','m15-b','m16-b'\r\n ,'m01-c','m02-c','m03-c','m04-c','m05-c','m06-c','m07-c','m08-c','m09-c','m10-c','m11-c','m12-c','m13-c','m14-c','m15-c','m16-c'\r\n ,'m01-c','m02-c','m03-c','m04-c','m05-c','m06-c','m07-c','m08-c','m09-c','m10-c','m11-c','m12-c','m13-c','m14-c','m15-c','m16-c'];\r\n\r\n map:any={};\r\n\r\n SetMapType=type=>\r\n {\r\n this.map.setMapTypeId(type);\r\n }\r\n\r\n markers:any={};\r\n\r\n PlaceMarkerIcon(key,name, lat, lng, icon,label)\r\n {\r\n var location = new google.maps.LatLng(parseFloat(lat), parseFloat(lng));\r\n\r\n // Get or create marker.\r\n var marker = this.markers[key];\r\n if (marker == undefined) {\r\n\r\n if (!angular.isDefined(icon)) icon='s16';\r\n\r\n //https://chronorace.blob.core.windows.net/webresources/img/icons/m01.png\r\n var image = {\r\n url: 'https://chronorace.blob.core.windows.net/webresources/img/icons/'+icon+'.png',\r\n // This marker is 20 pixels wide by 32 pixels high.\r\n size: new google.maps.Size(24, 24),\r\n // The origin for this image is (0, 0).\r\n origin: new google.maps.Point(0, 0),\r\n // The anchor for this image is the base of the flagpole at (0, 32).\r\n anchor: new google.maps.Point(12, 12)\r\n };\r\n\r\n\r\n marker = new google.maps.Marker({\r\n position: location,\r\n map: this.map,\r\n icon:image,\r\n });\r\n\r\n\r\n //console.log(\"Add Marker: \"+angular.toJson(marker.position)+\" @ \"+marker.icon);\r\n\r\n var infoWindow = new google.maps.InfoWindow();\r\n //marker.window=infoWindow;\r\n\r\n google.maps.event.addListener(marker, 'click', ()=>\r\n {\r\n var grp=this.markerGroups[key];\r\n var html=\"\";\r\n angular.forEach(grp.Bibs,bib=>{\r\n html=html+\"n°\"+bib+\", \"+this.registration[bib].LastName+' '+this.registration[bib].FirstName+\" (\"+this.registration[bib].Pays+\")
\";\r\n });\r\n //var html = angular.toJson(grp);\r\n\r\n infoWindow.setContent(html);\r\n infoWindow.open(this.map, marker);\r\n });\r\n\r\n\r\n this.markers[key] = marker;\r\n } else {\r\n //console.log(\"move marker\");\r\n marker.setPosition(location);\r\n }\r\n\r\n //marker.setMap(this.map);\r\n\r\n /*if (this.enabledTrackers[key] && marker.map==null) marker.setMap(this.map);\r\n else if (!this.enabledTrackers[key] && marker.map!=null) marker.setMap(null);*/\r\n }\r\n\r\n\r\n AddTrack(color:any,trackData:any)\r\n {\r\n var points:any=[];\r\n\r\n console.log(\"Add track: \");\r\n\r\n var bounds = new google.maps.LatLngBounds();\r\n //After that, you can get the center with:\r\n\r\n //bounds.getCenter();\r\n //Or alternatively, you can call map.fitBounds() directly, which will center the map around the center of the bounds and adjust the zoom, so that the whole bounds will fit exactly into the view port.\r\n //map.fitBounds(bounds);\r\n\r\n angular.forEach(trackData,point=>{\r\n var toAdd=new google.maps.LatLng(point.Lat, point.Lon);\r\n points.push(toAdd)\r\n bounds.extend(toAdd);\r\n });\r\n\r\n // Add line.\r\n var poly = new google.maps.Polyline({\r\n path: points,\r\n strokeColor: \"white\",\r\n strokeOpacity: 0.8,\r\n strokeWeight: 8 });\r\n\r\n poly.setMap(this.map);\r\n\r\n var poly = new google.maps.Polyline({\r\n path: points,\r\n strokeColor: color,\r\n strokeOpacity: .9,\r\n strokeWeight: 4 });\r\n\r\n poly.setMap(this.map);\r\n\r\n this.map.fitBounds(bounds);\r\n\r\n }\r\n\r\n\r\n GMapLoaded=()=>\r\n {\r\n this.map = new google.maps.Map(document.getElementById('map'), {\r\n zoom: 4,\r\n mapTypeControl: false,\r\n fullscreenControl: false,\r\n streetViewControl: false,\r\n center: new google.maps.LatLng(54.57951, -4.41387),\r\n mapTypeId: 'hybrid'\r\n });\r\n\r\n console.log(\"lala: \"+angular.toJson(this.trackingConfig));\r\n\r\n angular.forEach(this.trackingConfig.TrackKeys,tk=>{\r\n this.genericResultsService.Uci(this.$stateParams[\"context\"],'xco',this.$stateParams[\"key\"]+'/tracks/'+tk).then(track=>{\r\n this.AddTrack(tk=='start'?\"yellow\":\"red\",track);\r\n });\r\n });\r\n\r\n this.InitInterval();\r\n }\r\n\r\n\r\n markerGroups:any={};\r\n\r\n trackingSituation:any={};\r\n RefreshLiveData=()=>{\r\n this.genericResultsService.Uci(this.$stateParams[\"context\"],'xco',this.$stateParams[\"key\"]+'/trackingsituation').then(data=>{\r\n //console.log(\"trackingsituation\");\r\n this.trackingSituation=data;\r\n\r\n var i=0;\r\n\r\n\r\n angular.forEach(data.InRace,sit=>{\r\n sit.Icon=this.icons[(sit.FirstPos-1)%this.icons.length];\r\n this.markerGroups[\"m\"+sit.FirstPos]=sit;\r\n\r\n //var marker=this.icons[sit.FirstPos%this.icons.length];\r\n this.PlaceMarkerIcon(\"m\"+sit.FirstPos,sit.Title,sit.Lat,sit.Lon,sit.Icon,\"\");\r\n i++;\r\n });\r\n angular.forEach(this.markers,(v,k)=>{\r\n if (!this.markerGroups.hasOwnProperty(k))\r\n {\r\n var marker = this.markers[k];\r\n marker.setMap(null);\r\n delete this.markers[k];\r\n }\r\n });\r\n });\r\n }\r\n\r\n InitInterval=()=>{\r\n var timer = this.$interval(()=>\r\n {\r\n this.RefreshLiveData();\r\n },2000);\r\n\r\n this.$scope.$on('$destroy', () => {\r\n // Make sure that the interval is destroyed too\r\n this.$interval.cancel(timer);\r\n });\r\n this.RefreshLiveData();\r\n }\r\n\r\n InitMap()\r\n {\r\n var includeAPI = () => {\r\n var js, fjs = document.getElementsByTagName('script')[0];\r\n\r\n if (!document.getElementById('gmap-api')) {\r\n js = document.createElement('script');\r\n js.id = 'gmap-api';\r\n js.onload=()=>this.GMapLoaded();\r\n js.setAttribute('async', '');\r\n\r\n js.src = \"//maps.googleapis.com/maps/api/js?key=AIzaSyCxXmZsHXzWadccYtwOpreuEjxHY6dFzCU\"; //&callback=App.mapInit\r\n fjs.parentNode.insertBefore(js, fjs);\r\n } else this.GMapLoaded();\r\n };\r\n\r\n includeAPI();\r\n\r\n\r\n // this.infowindow = new google.maps.InfoWindow;\r\n\r\n// var center = {lat: parseFloat(this.gpsConfiguration.TrackingOriginLatitude), lng: parseFloat(this.gpsConfiguration.TrackingOriginLongitude)};\r\n /* this.map = new google.maps.Map(document.getElementById('map'), {\r\n zoom: 4,\r\n mapTypeControl: false,\r\n center: new google.maps.LatLng(54.57951, -4.41387),\r\n mapTypeId: 'hybrid'\r\n });*/\r\n\r\n\r\n /* angular.forEach(this.gpsConfiguration.Tracks,track=>{\r\n angular.forEach(track.Files,file=>{\r\n console.log(\"load track: \"+file);\r\n if (file.endsWith(\".kml\"))\r\n {\r\n }\r\n else\r\n {\r\n this.trackingService.getTrack(this.$stateParams[\"eventId\"],file).then(data=>this.AddTrack(track.Color,data));\r\n\r\n\r\n }\r\n\r\n })\r\n });*/\r\n\r\n\r\n\r\n console.log(\"init map\");\r\n }\r\n\r\n constructor(private xcoService, private $scope, private $stateParams\r\n , private $modal,$state,public registration,public overview,public $interval,public trackingConfig\r\n , public genericResultsService)\r\n {\r\n this.InitMap();\r\n var newReg:any={};\r\n angular.forEach(registration,(v,k)=>{\r\n newReg[\"\"+parseInt(k)%1000]=v;\r\n });\r\n this.registration=newReg;\r\n }\r\n }\r\n}\r\n","module uci\r\n{\r\n uciModule.config([\"$stateProvider\",\r\n ($stateProvider: any) =>\r\n {\r\n console.log(\"define uci routes\");\r\n $stateProvider\r\n .state(\"uci\", {\r\n url: \"/uci\",\r\n templateUrl:\"modules/uci/views/layout.html\",\r\n abstract:true,\r\n ncyBreadcrumb: {\r\n skip:true\r\n },\r\n resolve:\r\n {\r\n }\r\n }).state(\"uci.x2o\", {\r\n url: \"/x2o\",\r\n templateUrl:\"modules/uci/views/x2o.html\",\r\n controller:uciMtbCtrl,\r\n controllerAs:\"uciMtbCtrl\",\r\n ncyBreadcrumb: {\r\n skip:false\r\n }\r\n }).state(\"uci.bmx\", {\r\n url: \"/bmx\",\r\n templateUrl:\"modules/uci/views/bmx.html\",\r\n controller:uciMtbCtrl,\r\n controllerAs:\"uciMtbCtrl\",\r\n ncyBreadcrumb: {\r\n skip:false\r\n }\r\n }).state(\"uci.bmx.overview\", {\r\n url: \"/overview/:context\",\r\n views:{\r\n '@uci':\r\n {\r\n templateUrl: \"modules/uci/views/livebmxoverview.html\",\r\n controller: uciBmxOverviewCtrl,\r\n controllerAs:'uciBmxCtrl'\r\n }\r\n },\r\n resolve:\r\n {\r\n overview: ['genericResultsService','$stateParams', (genericResultsService,$stateParams:angular.ui.IStateParamsService) =>\r\n genericResultsService.Uci($stateParams[\"context\"],'bmx','overview')\r\n ]\r\n },\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n }).state(\"uci.mtb\", {\r\n url: \"/mtb\",\r\n templateUrl:\"modules/uci/views/mtb.html\",\r\n controller:uciMtbCtrl,\r\n controllerAs:\"uciMtbCtrl\",\r\n ncyBreadcrumb: {\r\n skip:false\r\n }\r\n }).state(\"uci.cro\", {\r\n url: \"/cro\",\r\n templateUrl:\"modules/uci/views/cro2020.html\",\r\n controller:uciMtbCtrl,\r\n controllerAs:\"uciMtbCtrl\",\r\n ncyBreadcrumb: {\r\n skip:false\r\n }\r\n }).state(\"uci.event\", {\r\n url: \"/event/:context\",\r\n templateUrl: \"modules/uci/views/event.html\",\r\n controller: uciEventCtrl,\r\n controllerAs:'uciEventCtrl',\r\n resolve:\r\n {\r\n liveCtx: ['uciLiveService','$stateParams', (uciLiveService,$stateParams:angular.ui.IStateParamsService) => uciLiveService.LiveContext($stateParams[\"context\"])]\r\n },\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n }).state(\"uci.event.discipline\", {\r\n url: \"/:discipline\",\r\n templateUrl: \"modules/uci/views/discipline.html\",\r\n controller: uciDisciplineCtrl,\r\n controllerAs:'uciDisciplineCtrl',\r\n resolve:\r\n {\r\n },\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n }).state(\"uci.event.discipline.category\", {\r\n url: \"/:category\",\r\n templateUrl: \"modules/uci/views/category.html\",\r\n controller: uciCategoryCtrl,\r\n controllerAs:'uciCategoryCtrl',\r\n resolve:\r\n {\r\n },\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n })\r\n .state(\"uci.event.discipline.category.edr\", {\r\n url: \"/edr/:key\",\r\n views:{\r\n '@uci.event.discipline':\r\n {\r\n templateUrl: \"modules/uci/views/liveedr.html\",\r\n controller: uciEdrLiveCtrl,\r\n controllerAs:'uciEdrLiveCtrl'\r\n }\r\n },\r\n resolve:\r\n {\r\n //raceData:['uciLiveService','$stateParams', (uciLiveService,$stateParams:angular.ui.IStateParamsService)=>uciLiveService.RaceDetails($stateParams[\"context\"],$stateParams[\"key\"]) ]\r\n },\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n })\r\n .state(\"uci.event.discipline.category.dh\", {\r\n url: \"/dh/:key\",\r\n views:{\r\n '@uci.event.discipline':\r\n {\r\n templateUrl: \"modules/uci/views/livedh.html\",\r\n controller: uciDhLiveCtrl,\r\n controllerAs:'uciDhLiveCtrl'\r\n }\r\n },\r\n resolve:\r\n {\r\n //raceData:['uciLiveService','$stateParams', (uciLiveService,$stateParams:angular.ui.IStateParamsService)=>uciLiveService.RaceDetails($stateParams[\"context\"],$stateParams[\"key\"]) ]\r\n },\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n }).state(\"uci.event.discipline.category.dh.nxt\", {\r\n url: \"/nxt\",\r\n templateUrl: \"modules/uci/views/livedhnxt.html\",\r\n ncyBreadcrumb: {\r\n skip:false\r\n }\r\n }).state(\"uci.event.discipline.category.dh.lst\", {\r\n url: \"/lst\",\r\n templateUrl: \"modules/uci/views/livedhlst.html\",\r\n ncyBreadcrumb: {\r\n skip:false\r\n }\r\n }).state(\"uci.event.discipline.category.dh.res\", {\r\n url: \"/res\",\r\n templateUrl: \"modules/uci/views/livedhres.html\",\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n }).state(\"uci.event.discipline.category.dh.trk\", {\r\n url: \"/trk\",\r\n templateUrl: \"modules/uci/views/livedhtrk.html\",\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n }).state(\"uci.event.discipline.category.xco\", {\r\n url: \"/xco/:key\",\r\n views:{\r\n '@uci.event.discipline':\r\n {\r\n templateUrl: \"modules/uci/views/livexco.html\",\r\n controller: uciXcoRaceCtrl,\r\n controllerAs:'uciXcoRaceCtrl'\r\n }\r\n },\r\n resolve:\r\n {\r\n registration: ['xcoService','$stateParams', (xcoService,$stateParams:angular.ui.IStateParamsService) =>xcoService.registration($stateParams[\"context\"],$stateParams[\"key\"])],\r\n overview: ['xcoService','$stateParams', (xcoService,$stateParams:angular.ui.IStateParamsService) => xcoService.overview($stateParams[\"context\"],$stateParams[\"key\"])]\r\n },\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n }).state(\"uci.event.discipline.category.xco.ov\", {\r\n url: \"/ov\",\r\n templateUrl: \"modules/uci/views/livexcoov.html\",\r\n ncyBreadcrumb: {\r\n skip:false\r\n }\r\n }).state(\"uci.event.discipline.category.xco.lt\", {\r\n url: \"/lt\",\r\n templateUrl: \"modules/uci/views/livexcolt.html\",\r\n ncyBreadcrumb: {\r\n skip:false\r\n }\r\n }).state(\"uci.event.discipline.category.xco.fs\", {\r\n url: \"/fs\",\r\n templateUrl: \"modules/uci/views/livexcofas.html\",\r\n ncyBreadcrumb: {\r\n skip:false\r\n }\r\n }).state(\"uci.event.discipline.category.xco.tk\", {\r\n url: \"/tk\",\r\n templateUrl: \"modules/uci/views/livexcotk.html\",\r\n\r\n controller: uciTkConfigCtrl,\r\n controllerAs:'uciTkConfigCtrl',\r\n resolve: {\r\n //tkconfig: ['xcoService', '$stateParams', (xcoService, $stateParams:angular.ui.IStateParamsService) =>xcoService.registration($stateParams[\"context\"], $stateParams[\"key\"])]\r\n trackingConfig: ['genericResultsService','$stateParams', (genericResultsService,$stateParams:angular.ui.IStateParamsService) =>\r\n\r\n genericResultsService.Uci($stateParams[\"context\"],'xco',$stateParams[\"key\"]+'/trackingconfig')\r\n ]\r\n\r\n },\r\n ncyBreadcrumb: {\r\n skip:false\r\n }\r\n })\r\n .state(\"uci.event.discipline.category.trials\", {\r\n url: \"/trials/:key\",\r\n views:{\r\n '@uci.event.discipline':\r\n {\r\n templateUrl: \"modules/uci/views/livetrials.html\",\r\n controller: uciTrialsRaceCtrl,\r\n controllerAs:'uciTrialsRaceCtrl'\r\n }\r\n },\r\n resolve:\r\n {\r\n //Uci(db,discipline,key):angular.IPromise\r\n registrations: ['genericResultsService','$stateParams', (genericResultsService,$stateParams:angular.ui.IStateParamsService) =>\r\n genericResultsService.Uci($stateParams[\"context\"],'trials',$stateParams[\"key\"]+'/registrations')\r\n ],\r\n results: ['genericResultsService','$stateParams', (genericResultsService,$stateParams:angular.ui.IStateParamsService) =>\r\n genericResultsService.Uci($stateParams[\"context\"],'trials',$stateParams[\"key\"]+'/results')\r\n ]\r\n //overview: ['xcoService','$stateParams', (xcoService,$stateParams:angular.ui.IStateParamsService) => xcoService.overview($stateParams[\"context\"],$stateParams[\"key\"])]\r\n },\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n }).state(\"uci.event.discipline.category.trials.detail\", {\r\n url: \"/:nr\",\r\n views:{\r\n '@uci.event.discipline':\r\n {\r\n templateUrl: \"modules/uci/views/livetrialsdetail.html\",\r\n controller: uciTrialsRaceCtrl,\r\n controllerAs:'uciTrialsRaceCtrl'\r\n }\r\n }\r\n }).state(\"uci.event.discipline.category.bmxfs\", {\r\n url: \"/bmxfs/:key\",\r\n views:{\r\n '@uci.event.discipline':\r\n {\r\n templateUrl: \"modules/uci/views/livebmxfs.html\",\r\n controller: uciBmxFsRaceCtrl,\r\n controllerAs:'uciBmxFsRaceCtrl'\r\n }\r\n },\r\n resolve:\r\n {\r\n\r\n registrations: ['genericResultsService','$stateParams', (genericResultsService,$stateParams:angular.ui.IStateParamsService) =>\r\n genericResultsService.Uci($stateParams[\"context\"],'bmxfs',$stateParams[\"key\"]+'/registrations')\r\n ],\r\n results: ['genericResultsService','$stateParams', (genericResultsService,$stateParams:angular.ui.IStateParamsService) =>\r\n genericResultsService.Uci($stateParams[\"context\"],'bmxfs',$stateParams[\"key\"]+'/results')\r\n ]\r\n //overview: ['xcoService','$stateParams', (xcoService,$stateParams:angular.ui.IStateParamsService) => xcoService.overview($stateParams[\"context\"],$stateParams[\"key\"])]\r\n },\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n }).state(\"uci.event.discipline.category.bmx\", {\r\n url: \"/bmx/:key\",\r\n views:{\r\n '':\r\n {\r\n templateUrl: \"modules/uci/views/livebmx.html\",\r\n controller: uciBmxCtrl,\r\n controllerAs:'uciBmxCtrl'\r\n }\r\n },\r\n resolve:\r\n {\r\n results: ['genericResultsService','$stateParams', (genericResultsService,$stateParams:angular.ui.IStateParamsService) =>\r\n genericResultsService.Uci($stateParams[\"context\"],'bmx',$stateParams[\"key\"]+'/results')\r\n ]\r\n },\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n }).state(\"uci.event.discipline.category.track\", {\r\n\r\n url: \"/track/:key\",\r\n views:{\r\n '':\r\n {\r\n templateUrl: \"modules/uci/views/livetrack.html\",\r\n controller: uciTrackCtrl,\r\n controllerAs:'uciTrackCtrl'\r\n }\r\n },\r\n resolve:\r\n {\r\n results: ['genericResultsService','$stateParams', (genericResultsService,$stateParams:angular.ui.IStateParamsService) =>\r\n genericResultsService.Uci($stateParams[\"context\"],'track',$stateParams[\"key\"]+'/results')\r\n ]\r\n },\r\n ncyBreadcrumb: {\r\n skip:true\r\n }\r\n });\r\n\r\n }]);\r\n}\r\n","/// \n/// \n/// \nvar uci;\n(function (uci) {\n uci.uciModule = angular.module(\"uci\", [\"cr.infrastructure\", \"cr.form\", \"cr.job\", \"angularFileUpload\", \"cr.event\"]);\n})(uci || (uci = {}));\n\n/**\n * Created by christian on 2/26/2015.\n */\nvar uci;\n(function (uci) {\n var genericResultsService = (function () {\n function genericResultsService($http, $q, $log, cfg) {\n //this.$log = $log.getInstance('abcService');\n this.$http = $http;\n this.$q = $q;\n this.cfg = cfg;\n this.busy = {};\n console.log(\"uci url: \", window.location.href);\n this.url = cfg.ResultsService;\n if (window.location.href.indexOf(\"chronorace\") != -1) {\n console.log(\"USING ONLINE SERVICE\");\n this.url = \"https://prod.chronorace.be/api/results/generic/\";\n }\n else {\n console.log(\"USING OFFLINE SERVICE\");\n this.url = \"/api/scoring/results/generic/\";\n }\n this.url = \"https://prod.chronorace.be/api/results/generic/\";\n console.log(\"GenericResultsServiceController: \" + this.url);\n }\n genericResultsService.prototype.Uci = function (db, discipline, key) {\n var _this = this;\n if (this.busy.hasOwnProperty(key)) {\n var toRet = this.$q.defer();\n toRet.reject(\"BUSY\");\n console.log('already busy');\n return toRet.promise;\n }\n this.busy[key] = true;\n var url = this.url + 'uci/' + db + '/' + discipline + '?key=' + encodeURIComponent(key);\n return this.$http({ url: this.url + 'uci/' + db + '/' + discipline + '?key=' + encodeURIComponent(key), method: \"GET\" })\n .then(function (result) {\n delete _this.busy[key];\n return result.data;\n }, function (error) {\n delete _this.busy[key];\n console.log(\"get results error\", error);\n return error;\n });\n };\n genericResultsService.$inject = ['$http', '$q', '$log', 'cfg'];\n return genericResultsService;\n })();\n uci.uciModule.service('genericResultsService', genericResultsService);\n})(uci || (uci = {}));\n\n/**\n * Created by christian on 2/26/2015.\n */\nvar uci;\n(function (uci) {\n var uciLiveService = (function () {\n function uciLiveService($http, $q, $log, cfg, genericResultsService) {\n //this.$log = $log.getInstance('abcService');\n var _this = this;\n this.$http = $http;\n this.$q = $q;\n this.cfg = cfg;\n this.genericResultsService = genericResultsService;\n this.busy = false;\n this.StartUpload = function () {\n return _this.$http({ url: _this.url + 'start', method: \"GET\" }).then(function (result) {\n return result.data;\n });\n };\n this.STMessage = function (messageType) {\n console.log(\"request ST Message\");\n return _this.$http({ url: _this.url + 'stmessage/0/' + messageType, method: \"GET\" }).then(function (result) {\n return result.data;\n });\n };\n this.STFXMessage = function (round, messageType) {\n console.log(\"request ST Message\");\n return _this.$http({ url: _this.url + 'st4xmessage/' + round + '/' + messageType, method: \"GET\" }).then(function (result) {\n return result.data;\n });\n };\n this.StopUpload = function () {\n return _this.$http({ url: _this.url + 'stop', method: \"GET\" }).then(function (result) {\n return result.data;\n });\n };\n this.Running = function () {\n return _this.$http({ url: _this.url + 'running', method: \"GET\" }).then(function (result) {\n return result.data;\n });\n };\n this.BuildCms = function (upload) {\n return _this.$http({ url: _this.url + 'buildcms/' + upload, method: \"GET\" }).then(function (result) {\n return result.data;\n });\n };\n this.Build = function (upload) {\n return _this.$http({ url: _this.url + 'build/' + upload, method: \"GET\" }).then(function (result) {\n return result.data;\n });\n };\n console.log(\"uci url: \" + angular.toJson(cfg));\n this.url = cfg.UciDhService;\n }\n uciLiveService.prototype.LiveContext = function (db) {\n return this.$http({ url: this.url + 'cms/' + db, method: \"GET\" }).then(function (result) { return result.data; });\n };\n uciLiveService.prototype.RaceDetails = function (db, key) {\n return this.genericResultsService.Uci(db, 'dh', key);\n };\n uciLiveService.$inject = ['$http', '$q', '$log', 'cfg', 'genericResultsService'];\n return uciLiveService;\n })();\n uci.uciModule.service('uciLiveService', uciLiveService);\n})(uci || (uci = {}));\n\nvar uci;\n(function (uci) {\n var uciBmxCtrl = (function () {\n function uciBmxCtrl(genericResultsService, $scope, $stateParams, $modal, $state, $interval, results) {\n var _this = this;\n this.genericResultsService = genericResultsService;\n this.$scope = $scope;\n this.$stateParams = $stateParams;\n this.$modal = $modal;\n this.$state = $state;\n this.$interval = $interval;\n this.results = results;\n this.context = null;\n this.fastest = null;\n this.busy = false;\n this.PrintStatus = function (status) {\n if (status == 'Unknown')\n return '-';\n if (status == 'Finished')\n return '';\n return status;\n };\n this.FormatPoints = function (points) {\n if (points < 0)\n return \"-\";\n return points;\n };\n this.StatusClass = function (status) {\n switch (status) {\n case \"DSQ\":\n return \"label-danger\";\n case \"DNS\":\n return \"label-warning\";\n case \"Finished\":\n return \"label-success\";\n case \"InRace\":\n return \"label-info\";\n default:\n return \"label-default\";\n }\n };\n this.SetResult = function (results) {\n _this.results = results;\n };\n this.SetContext = function (context) {\n _this.context = context;\n if (_this.results != null && _this.results.GroupId != null && _this.context != null) {\n console.log(\"Lala: \", _this.context.Fast);\n _this.context.Fastest.forEach(function (f) {\n if (f.GroupId == _this.results.GroupId) {\n _this.fastest = f;\n }\n });\n }\n };\n this.Refresh = function () {\n if (_this.busy)\n return;\n _this.busy = true;\n _this.genericResultsService.Uci(_this.$stateParams[\"context\"], 'bmx', $stateParams[\"key\"] + '/results').then(function (data) {\n _this.SetResult(data);\n _this.busy = false;\n }, function (error) { return _this.busy = false; });\n _this.genericResultsService.Uci(_this.$stateParams[\"context\"], 'bmx', 'context').then(function (data) {\n _this.SetContext(data);\n _this.busy = false;\n }, function (error) { return _this.busy = false; });\n };\n this.SetResult(results);\n var i = 0;\n var timer = $interval(function () {\n _this.Refresh();\n }, 3000);\n this.Refresh();\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n }\n uciBmxCtrl.$inject = ['genericResultsService', '$scope', '$stateParams', '$modal', '$state', '$interval', 'results'];\n return uciBmxCtrl;\n })();\n uci.uciBmxCtrl = uciBmxCtrl;\n var uciBmxOverviewCtrl = (function () {\n function uciBmxOverviewCtrl(genericResultsService, $scope, $stateParams, $modal, $state, $interval, overview) {\n var _this = this;\n this.genericResultsService = genericResultsService;\n this.$scope = $scope;\n this.$stateParams = $stateParams;\n this.$modal = $modal;\n this.$state = $state;\n this.$interval = $interval;\n this.overview = overview;\n this.context = null;\n this.overview = null;\n this.busy = false;\n this.collapsed = {};\n this.PrintStatus = function (status) {\n if (status == 'Unknown')\n return '-';\n if (status == 'Finished')\n return '';\n return status;\n };\n this.FormatPoints = function (points) {\n if (points < 0)\n return \"-\";\n return points;\n };\n this.StatusClass = function (status) {\n switch (status) {\n case \"DSQ\":\n return \"label-danger\";\n case \"DNS\":\n return \"label-warning\";\n case \"Finished\":\n return \"label-success\";\n case \"InRace\":\n return \"label-info\";\n default:\n return \"label-default\";\n }\n };\n this.SetOverview = function (overview) {\n console.log(\"SET OVERVIEW \", overview);\n if (!overview || overview == 'null' || overview.Phases == null)\n return;\n _this.overview = overview;\n overview.Phases.forEach(function (p) {\n if (!p.Heats)\n p.Heats = [];\n p.Heats.forEach(function (h) {\n if (!h.Data)\n h.Data = [];\n while (h.Data.length < 8) {\n h.Data.push({ \"IRM\": \"NA\" });\n }\n });\n });\n };\n this.Refresh = function () {\n if (_this.busy)\n return;\n _this.busy = true;\n _this.genericResultsService.Uci(_this.$stateParams[\"context\"], 'bmx', 'overview').then(function (data) {\n _this.SetOverview(data);\n _this.busy = false;\n }, function (error) { return _this.busy = false; });\n };\n this.GetHeatStyle = function (heat, phase) {\n switch (heat.HeatStatus) {\n case \"Confirmed\":\n return { \"background-color\": \"darkgreen\", \"color\": \"white\" };\n case \"Running\":\n return { \"background-color\": \"#bbbb00\", \"color\": \"black\" };\n case \"GateSelectionDone\":\n return { \"background-color\": \"#330000\", \"color\": \"white\" };\n case \"RTS\":\n return { \"background-color\": \"#925000\", \"color\": \"white\" };\n default:\n return { \"background-color\": \"#333333\", \"color\": \"white\" };\n }\n };\n this.GetStyle = function (rider, heat, phase) {\n var color = \"white\";\n var backColor = \"transparant\";\n var borderColor = \"\";\n var borderColor = \"\";\n var borderWidth = \"2px\";\n if (heat.HeatStatus == 'Confirmed' && rider.Qual == 'Q') {\n borderColor = \"lime\";\n }\n else if (heat.HeatStatus == 'Running' && rider.Qual == '-') {\n borderColor = \"lime\";\n }\n else if (heat.HeatStatus == 'Running' && rider.IRM == '' && rider.Pos !== '') {\n borderColor = \"white\";\n }\n else if (rider.IRM == 'DNS') {\n borderColor = \"red\";\n }\n else if (rider.IRM == 'DNF') {\n borderColor = \"orange\";\n }\n else if (rider.IRM == 'REL') {\n borderColor = \"darkred\";\n }\n else if (rider.IRM == 'NA') {\n return {};\n }\n else if (heat.HeatStatus == 'Confirmed') {\n borderColor = \"white\";\n }\n else {\n borderWidth = \"1px\";\n borderColor = \"#333333\";\n }\n if (heat.HeatStatus == 'Confirmed') {\n backColor = borderColor;\n if (backColor != \"darkred\") {\n color = \"black\";\n }\n }\n return {\n \"border\": \"solid \" + borderWidth + \" \" + borderColor,\n \"background-color\": backColor,\n \"color\": color\n };\n };\n this.SetOverview(overview);\n var i = 0;\n var timer = $interval(function () {\n _this.Refresh();\n }, 1500);\n this.Refresh();\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n }\n uciBmxOverviewCtrl.prototype.IsCollapsed = function (phase) {\n return this.collapsed.hasOwnProperty(phase.RoundId) && this.collapsed[phase.RoundId];\n };\n uciBmxOverviewCtrl.prototype.ToggleCollapse = function (phase) {\n this.collapsed[phase.RoundId] = !this.IsCollapsed(phase);\n console.log(\"Toggle Collapse: \", this.IsCollapsed(phase));\n };\n uciBmxOverviewCtrl.$inject = ['genericResultsService', '$scope', '$stateParams', '$modal', '$state', '$interval', 'overview'];\n return uciBmxOverviewCtrl;\n })();\n uci.uciBmxOverviewCtrl = uciBmxOverviewCtrl;\n})(uci || (uci = {}));\n\nvar uci;\n(function (uci) {\n var uciBmxFsRaceCtrl = (function () {\n function uciBmxFsRaceCtrl(genericResultsService, $scope, $stateParams, $modal, $state, $interval, registrations, results) {\n var _this = this;\n this.genericResultsService = genericResultsService;\n this.$scope = $scope;\n this.$stateParams = $stateParams;\n this.$modal = $modal;\n this.$state = $state;\n this.$interval = $interval;\n this.registrations = registrations;\n this.results = results;\n this.PrintStatus = function (status) {\n if (status == 'Unknown')\n return '-';\n if (status == 'Finished')\n return '';\n return status;\n };\n this.FormatPoints = function (points) {\n if (points < 0)\n return \"-\";\n return points;\n };\n this.StatusClass = function (status) {\n switch (status) {\n case \"DSQ\":\n return \"label-danger\";\n case \"DNS\":\n return \"label-warning\";\n case \"Finished\":\n return \"label-success\";\n case \"InRace\":\n return \"label-info\";\n default:\n return \"label-default\";\n }\n };\n this.SetResult = function (results) {\n _this.results = results;\n };\n this.SetResult(results);\n var i = 0;\n var timer = $interval(function () {\n _this.genericResultsService.Uci($stateParams[\"context\"], 'bmxfs', $stateParams[\"key\"] + '/results').then(function (data) {\n _this.SetResult(data);\n });\n i++;\n if (i > 20) {\n _this.genericResultsService.Uci($stateParams[\"context\"], 'bmxfs', $stateParams[\"key\"] + '/registrations').then(function (data) {\n _this.registrations = data;\n });\n i = 0;\n }\n }, 3000);\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n }\n uciBmxFsRaceCtrl.$inject = ['genericResultsService', '$scope', '$stateParams', '$modal', '$state', '$interval', 'registrations', 'results'];\n return uciBmxFsRaceCtrl;\n })();\n uci.uciBmxFsRaceCtrl = uciBmxFsRaceCtrl;\n})(uci || (uci = {}));\n\nvar uci;\n(function (uci) {\n var uciDhLiveCtrl = (function () {\n function uciDhLiveCtrl($scope, $state, $stateParams, $interval, uciLiveService, cfg) {\n var _this = this;\n this.$scope = $scope;\n this.$state = $state;\n this.$stateParams = $stateParams;\n this.$interval = $interval;\n this.uciLiveService = uciLiveService;\n this.cfg = cfg;\n this.ImagePath = \"\";\n this.best = {};\n this.second = {};\n this.splits = [];\n this.allSplits = [];\n this.NbSplit = 0;\n this.SetRaceData = function (data) {\n if (!angular.isDefined(data) || !data)\n return;\n _this.splits = [];\n _this.allSplits = [];\n _this.raceData = data;\n var i = 0;\n var tmp = data.Results;\n if (!angular.isDefined(tmp) || tmp == null)\n return;\n i = 0;\n _this.NbSplit = 4;\n if (tmp.length > 0)\n _this.best = tmp[0];\n if (tmp.length > 1)\n _this.second = tmp[1];\n i = 0;\n while (i < (_this.NbSplit + 1) >> 1) {\n _this.splits.push(i);\n i++;\n }\n i = 0;\n while (i < (_this.NbSplit)) {\n _this.allSplits.push(i);\n i++;\n }\n };\n this.GetRaceData = function () {\n _this.uciLiveService.RaceDetails(_this.$stateParams.context, _this.$stateParams.key).then(function (data) {\n _this.SetRaceData(data);\n }, function (error) {\n console.log(\"Error... \", error);\n });\n };\n this.ImagePath = cfg.ImagePath;\n var timer = $interval(function () {\n _this.GetRaceData();\n }, 2000);\n this.GetRaceData();\n if ($state.current.name == 'uci.dh.race.live') {\n if (raceData.Results && raceData.Results.length > 0) {\n $state.go(\"uci.dh.race.live.res\");\n }\n else if (raceData.NextToStart && raceData.NextToStart.length > 0) {\n $state.go(\"uci.dh.race.live.nxt\");\n }\n }\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n }\n uciDhLiveCtrl.prototype.GetFlagLink = function (nat) {\n if (!nat || nat == '')\n return \"\";\n return this.ImagePath + 'flags/' + nat.toLowerCase() + '.png';\n };\n uciDhLiveCtrl.prototype.LiveCtx = function () {\n return this.$scope.uciDhCtrl.liveCtx;\n };\n uciDhLiveCtrl.prototype.GetGap = function (pt, res) {\n if (pt == -1)\n pt = this.allSplits.length;\n if (!angular.isDefined(res.Times))\n return 0;\n if (!angular.isDefined(this.best) || this.best == null)\n return 0;\n if (res.Times.length <= pt || !res.Times[pt] || res.Times[pt] == 0)\n return 0;\n var cmp = this.best;\n if (res.RaceNr == this.best.RaceNr)\n cmp = this.second;\n if (cmp.Times && cmp.Times.length > pt) {\n if (cmp.Times[pt].RaceTime == 0)\n return 0;\n var toRet = res.Times[pt].RaceTime - cmp.Times[pt].RaceTime;\n return toRet;\n }\n else {\n return \"-\";\n }\n };\n uciDhLiveCtrl.$inject = ['$scope', '$state', '$stateParams', '$interval', 'uciLiveService', 'cfg'];\n return uciDhLiveCtrl;\n })();\n uci.uciDhLiveCtrl = uciDhLiveCtrl;\n})(uci || (uci = {}));\n\nvar uci;\n(function (uci) {\n var uciEdrLiveCtrl = (function () {\n function uciEdrLiveCtrl($scope, $state, $stateParams, $interval, uciLiveService, cfg, genericResultsService) {\n var _this = this;\n this.$scope = $scope;\n this.$state = $state;\n this.$stateParams = $stateParams;\n this.$interval = $interval;\n this.uciLiveService = uciLiveService;\n this.cfg = cfg;\n this.genericResultsService = genericResultsService;\n this.ImagePath = \"\";\n this.db = null;\n this.key = null;\n this.mode = 'Stage';\n this.best = {};\n this.second = {};\n this.stages = [];\n this.config = null;\n this.curConfig = null;\n this.selStage = null;\n this.results = null;\n this.splits = [];\n this.allSplits = [];\n this.SetRaceData = function (data) {\n };\n this.SetMode = function (mode) {\n _this.mode = mode;\n };\n this.SelectStage = function (stage) {\n _this.selStage = stage;\n console.log(\"SelectStage=\", stage);\n _this.results = null;\n _this.GetRaceData();\n };\n this.GetRaceData = function () {\n if (_this.config == null) {\n _this.genericResultsService.Uci(_this.db, \"edr\", \"config\").then(function (data) {\n console.log(\"CONFIG: \", data);\n _this.config = data;\n data.RaceList.forEach(function (d) {\n if (d.Id == _this.key) {\n _this.stages = [];\n _this.curConfig = d;\n d.Stages.forEach(function (stage) {\n if (stage.Distance > 0) {\n _this.stages.push(stage);\n }\n });\n }\n });\n _this.GetRaceData();\n });\n }\n if (_this.selStage == null && _this.stages != null && _this.stages.length > 0) {\n _this.selStage = _this.stages[0];\n }\n if (_this.selStage != null) {\n _this.genericResultsService.Uci(_this.db, \"edr\", _this.key + '/' + _this.selStage.Idx + '/result').then(function (data) {\n _this.results = data;\n });\n }\n };\n this.ImagePath = cfg.ImagePath;\n this.db = this.$stateParams[\"context\"];\n this.key = this.$stateParams[\"key\"];\n var timer = $interval(function () {\n _this.GetRaceData();\n }, 10000);\n this.GetRaceData();\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n }\n uciEdrLiveCtrl.prototype.GetFlagLink = function (nat) {\n if (!nat || nat == '')\n return \"\";\n return this.ImagePath + 'flags/' + nat.toLowerCase() + '.png';\n };\n uciEdrLiveCtrl.prototype.LiveCtx = function () {\n return this.$scope.uciEdrCtrl.liveCtx;\n };\n uciEdrLiveCtrl.$inject = ['$scope', '$state', '$stateParams', '$interval', 'uciLiveService', 'cfg', 'genericResultsService'];\n return uciEdrLiveCtrl;\n })();\n uci.uciEdrLiveCtrl = uciEdrLiveCtrl;\n})(uci || (uci = {}));\n\nvar uci;\n(function (uci) {\n var uciCategoryCtrl = (function () {\n function uciCategoryCtrl($scope, $state, $stateParams) {\n var _this = this;\n this.$scope = $scope;\n this.$state = $state;\n this.$stateParams = $stateParams;\n this.HandleClick = function (grp, chl) {\n //console.log(\"Hello: \"+angular.toJson(grp));\n //console.log(\"Chk: \"+angular.toJson(chl));\n if (angular.isDefined(chl.Route)) {\n console.log(\"go to route: \" + chl.Route);\n var rteObj = angular.fromJson(chl.Route);\n _this.$state.go(rteObj.Route, rteObj.Params);\n }\n else if (angular.isDefined(chl.Link) && chl.Link != '') {\n window.location = chl.Link;\n }\n };\n this.Folders = function () {\n var curCateg = _this.CurrentCategory();\n var toRet = [];\n if (!curCateg || !curCateg.Childs)\n return toRet;\n angular.forEach(curCateg.Childs, function (chl) {\n if (chl.Childs != null && chl.Childs.length > 0)\n toRet.push(chl);\n });\n return toRet;\n };\n this.Leafs = function () {\n var curCateg = _this.CurrentCategory();\n var toRet = [];\n console.log(\"curdiscipline \", _this.$scope.uciDisciplineCtrl.CurrentDiscipline());\n console.log(\"???? \", curCateg);\n console.log(\"searched: \", _this.$stateParams.category);\n if (!curCateg || !curCateg.Childs) {\n return toRet;\n }\n angular.forEach(curCateg.Childs, function (chl) {\n if (chl.Childs == null || chl.Childs.length == 0)\n toRet.push(chl);\n });\n return toRet;\n };\n this.Files = function () {\n var curCateg = _this.CurrentCategory();\n var toRet = [];\n angular.forEach(curCateg.Childs, function (chl) {\n if (chl.Type && chl.Type == 'File')\n toRet.push(chl);\n });\n return toRet;\n };\n this.CurrentCategory = function () {\n var ctx = _this.$scope.uciDisciplineCtrl.CurrentDiscipline();\n return _.where(ctx.Childs, { Id: _this.$stateParams.category })[0];\n };\n this.Refresh();\n }\n uciCategoryCtrl.prototype.LiveCtx = function () {\n return this.$scope.uciEventCtrl.liveCtx;\n };\n uciCategoryCtrl.prototype.Refresh = function () {\n console.log(\"REFRESH clicked\");\n this.$scope.uciEventCtrl.Refresh();\n };\n uciCategoryCtrl.$inject = ['$scope', '$state', '$stateParams'];\n return uciCategoryCtrl;\n })();\n uci.uciCategoryCtrl = uciCategoryCtrl;\n var uciDisciplineCtrl = (function () {\n function uciDisciplineCtrl($scope, $state, $stateParams) {\n //console.log(\"discipline: \"+angular.toJson($stateParams.discipline));\n var _this = this;\n this.$scope = $scope;\n this.$state = $state;\n this.$stateParams = $stateParams;\n this.HandleClick = function (grp, chl) {\n //console.log(\"Hello: \"+angular.toJson(grp));\n //console.log(\"Chk: \"+angular.toJson(chl));\n if (angular.isDefined(chl.Route)) {\n var rteObj = angular.fromJson(chl.Route);\n _this.$state.go(rteObj.Route, rteObj.Params);\n }\n else if (angular.isDefined(chl.Link) && chl.Link != '') {\n window.location = chl.Link;\n }\n };\n this.Folders = function () {\n var curCateg = _this.CurrentDiscipline();\n var toRet = [];\n angular.forEach(curCateg.Childs, function (chl) {\n if (chl.Childs != null && chl.Childs.length > 0)\n toRet.push(chl);\n });\n return toRet;\n };\n this.Leafs = function () {\n var curCateg = _this.CurrentDiscipline();\n var toRet = [];\n if (curCateg == null)\n return toRet;\n angular.forEach(curCateg.Childs, function (chl) {\n if (chl.Childs == null || chl.Childs.length == 0)\n toRet.push(chl);\n });\n return toRet;\n };\n this.Files = function () {\n var curCateg = _this.CurrentDiscipline();\n var toRet = [];\n if (curCateg == null)\n return toRet;\n angular.forEach(curCateg.Childs, function (chl) {\n if (chl.Type && chl.Type == 'File')\n toRet.push(chl);\n });\n return toRet;\n };\n this.CurrentDiscipline = function () {\n var ctx = _this.LiveCtx();\n return _.where(ctx.Childs, { Id: _this.$stateParams.discipline })[0];\n };\n if ($state.current.name == 'uci.event.discipline' && this.CurrentDiscipline() != null) {\n var folders = this.Folders();\n if (folders.length > 0)\n $state.go(\"uci.event.discipline.category\", { category: folders[0].Id });\n }\n }\n uciDisciplineCtrl.prototype.LiveCtx = function () {\n return this.$scope.uciEventCtrl.liveCtx;\n };\n uciDisciplineCtrl.$inject = ['$scope', '$state', '$stateParams'];\n return uciDisciplineCtrl;\n })();\n uci.uciDisciplineCtrl = uciDisciplineCtrl;\n})(uci || (uci = {}));\n\nvar uci;\n(function (uci) {\n var uciEventCtrl = (function () {\n function uciEventCtrl($scope, $state, liveCtx, uciLiveService, $stateParams) {\n var _this = this;\n this.$scope = $scope;\n this.$state = $state;\n this.liveCtx = liveCtx;\n this.uciLiveService = uciLiveService;\n this.$stateParams = $stateParams;\n this.files = [];\n this.GoBack = function () {\n _this.$state.go(_this.uciLiveService.ReturnState);\n };\n this.Refresh = function () {\n console.log(\"Refresh on event\");\n _this.uciLiveService.LiveContext(_this.$stateParams[\"context\"]).then(function (data) {\n console.log(\"live ctx refreshed\", data);\n _this.liveCtx = data;\n });\n };\n $scope.context = \"chrono\";\n if ($state.current.name == 'uci.event' && liveCtx != null && liveCtx.Childs != null && liveCtx.Childs.length > 0) {\n $state.go(\"uci.event.discipline\", { discipline: liveCtx.Childs[0].Id });\n }\n }\n uciEventCtrl.$inject = ['$scope', '$state', 'liveCtx', 'uciLiveService', '$stateParams'];\n return uciEventCtrl;\n })();\n uci.uciEventCtrl = uciEventCtrl;\n var uciMtbCtrl = (function () {\n function uciMtbCtrl($scope, $state, uciLiveService) {\n this.$scope = $scope;\n this.$state = $state;\n this.uciLiveService = uciLiveService;\n this.tab = \"2024\";\n $scope.context = \"chrono\";\n uciLiveService.ReturnState = $state.current.name;\n this.setTab(\"2024\");\n }\n uciMtbCtrl.prototype.setTab = function (tab) {\n this.tab = tab;\n };\n uciMtbCtrl.$inject = ['$scope', '$state', 'uciLiveService'];\n return uciMtbCtrl;\n })();\n uci.uciMtbCtrl = uciMtbCtrl;\n})(uci || (uci = {}));\n\nvar uci;\n(function (uci) {\n var uciTrackCtrl = (function () {\n function uciTrackCtrl(genericResultsService, $scope, $stateParams, $modal, $state, $interval, results) {\n var _this = this;\n this.genericResultsService = genericResultsService;\n this.$scope = $scope;\n this.$stateParams = $stateParams;\n this.$modal = $modal;\n this.$state = $state;\n this.$interval = $interval;\n this.results = results;\n this.PrintStatus = function (status) {\n if (status == 'Unknown')\n return '-';\n if (status == 'Finished')\n return '';\n return status;\n };\n this.FormatPoints = function (points) {\n if (points < 0)\n return \"-\";\n return points;\n };\n this.StatusClass = function (status) {\n switch (status) {\n case \"DSQ\":\n return \"label-danger\";\n case \"DNS\":\n return \"label-warning\";\n case \"Finished\":\n return \"label-success\";\n case \"InRace\":\n return \"label-info\";\n default:\n return \"label-default\";\n }\n };\n this.SetResult = function (results) {\n _this.results = results;\n };\n this.SetResult(results);\n var i = 0;\n var busy = false;\n var timer = $interval(function () {\n if (busy)\n return;\n busy = true;\n _this.genericResultsService.Uci($stateParams[\"context\"], 'track', $stateParams[\"key\"] + '/results').then(function (data) {\n busy = false;\n _this.SetResult(data);\n }, function (error) {\n busy = false;\n });\n }, 3000);\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n }\n uciTrackCtrl.$inject = ['genericResultsService', '$scope', '$stateParams', '$modal', '$state', '$interval', 'results'];\n return uciTrackCtrl;\n })();\n uci.uciTrackCtrl = uciTrackCtrl;\n})(uci || (uci = {}));\n\nvar uci;\n(function (uci) {\n var uciTrialsRaceCtrl = (function () {\n function uciTrialsRaceCtrl(genericResultsService, $scope, $stateParams, $modal, $state, $interval, registrations, results) {\n var _this = this;\n this.genericResultsService = genericResultsService;\n this.$scope = $scope;\n this.$stateParams = $stateParams;\n this.$modal = $modal;\n this.$state = $state;\n this.$interval = $interval;\n this.registrations = registrations;\n this.results = results;\n this.PrintStatus = function (status) {\n if (status == 'Unknown')\n return '-';\n return status;\n };\n this.FormatPoints = function (points) {\n if (points < 0)\n return \"-\";\n return points;\n };\n this.StatusClass = function (status) {\n switch (status) {\n case \"DSQ\":\n return \"label-danger\";\n case \"DNS\":\n return \"label-warning\";\n case \"Finished\":\n return \"label-success\";\n case \"InRace\":\n return \"label-info\";\n default:\n return \"label-default\";\n }\n };\n this.realSections = [];\n this.runs = [];\n this.sections = {};\n this.GetResult = function (raceNr, run, realIdx) {\n var sctIdx = _this.sections[realIdx + \"_\" + run].Idx;\n var det = _this.results.Details[sctIdx + \"_\" + raceNr];\n if (det.Points == 0 && det.Status == 'Unknown')\n return '-';\n if (!det)\n return \"-\";\n return det.Points;\n };\n this.selectedRider = {};\n this.SetResult = function (results) {\n _this.results = results;\n _this.runs = [];\n _this.realSections = [];\n _this.sections = {};\n angular.forEach(results.Sections, function (sct) {\n if (sct.RealIdx > _this.realSections.length)\n _this.realSections.push({ Idx: sct.RealIdx, Name: \"Section \" + sct.RealIdx });\n if (sct.Lap > _this.runs.length)\n _this.runs.push({ Idx: sct.Lap, \"Run \": sct.Lap });\n _this.sections[sct.RealIdx + \"_\" + sct.Lap] = sct;\n });\n if (_this.$state.current.name == 'uci.event.discipline.category.trials.detail') {\n _this.selectedRider = _this.registrations[_this.$stateParams[\"nr\"]];\n }\n };\n this.SetResult(results);\n var i = 0;\n var timer = $interval(function () {\n _this.genericResultsService.Uci($stateParams[\"context\"], 'trials', $stateParams[\"key\"] + '/results').then(function (data) {\n _this.SetResult(data);\n });\n i++;\n if (i > 20) {\n _this.genericResultsService.Uci($stateParams[\"context\"], 'trials', $stateParams[\"key\"] + '/registrations').then(function (data) {\n _this.registrations = data;\n });\n i = 0;\n }\n }, 3000);\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n }\n uciTrialsRaceCtrl.$inject = ['genericResultsService', '$scope', '$stateParams', '$modal', '$state', '$interval', 'registrations', 'results'];\n return uciTrialsRaceCtrl;\n })();\n uci.uciTrialsRaceCtrl = uciTrialsRaceCtrl;\n})(uci || (uci = {}));\n\nvar uci;\n(function (uci) {\n var uciXcoCtrl = (function () {\n function uciXcoCtrl(xcoService, $scope, $stateParams, $modal, $state, raceList) {\n this.xcoService = xcoService;\n this.$scope = $scope;\n this.$stateParams = $stateParams;\n this.$modal = $modal;\n this.raceList = raceList;\n $scope.context = \"chronorace\";\n console.log(\"xcoController ok: \" + angular.toJson(raceList));\n if (raceList && raceList.length > 0) {\n $state.go(\"xco.race\", { raceName: raceList[0] });\n }\n }\n uciXcoCtrl.$inject = ['xcoService', '$scope', '$stateParams', '$modal', '$state', 'raceList'];\n return uciXcoCtrl;\n })();\n uci.uciXcoCtrl = uciXcoCtrl;\n var uciXcoRaceCtrl = (function () {\n function uciXcoRaceCtrl(xcoService, $scope, $stateParams, $modal, $state, registration, overview, $interval) {\n var _this = this;\n this.xcoService = xcoService;\n this.$scope = $scope;\n this.$stateParams = $stateParams;\n this.$modal = $modal;\n this.registration = registration;\n this.overview = overview;\n this.$interval = $interval;\n this.FormatTime = function (input) {\n if (!input) {\n return \"\";\n }\n var ms = input % 1000;\n input = (input - ms) / 1000;\n var secs = input % 60 + \"\";\n input = (input - +secs) / 60;\n var mins = input % 60 + \"\";\n var hrs = (input - +mins) / 60 + \"\";\n if (+hrs > 0) {\n if (+mins < 10) {\n mins = '0' + mins;\n }\n if (+secs < 10) {\n secs = '0' + secs;\n }\n return hrs + ':' + mins + ':' + secs;\n }\n if (+mins > 0) {\n if (+secs < 10) {\n secs = '0' + secs;\n }\n return mins + ':' + secs;\n }\n return secs;\n };\n this.GetLapTimes = function (ov) {\n if (!angular.isDefined(ov.LapTimes))\n return \"\";\n var i = ov.LapTimes.length - 10;\n if (i < 0)\n i = 0;\n var toRet = \"\";\n var first = true;\n while (i < ov.LapTimes.length) {\n if (!first)\n toRet = toRet + \", \";\n toRet = toRet + _this.FormatTime(ov.LapTimes[i]);\n first = false;\n i++;\n }\n return toRet;\n };\n this.GetRacePosition = function (ov) {\n if (!angular.isDefined(ov.CurrentSituation))\n return \"\";\n if (+ov.CurrentSituation.Lap == 0)\n return \"STRT\";\n if (+ov.CurrentSituation.LapLocation > 0) {\n return \"Lap \" + ov.CurrentSituation.Lap + \" / ctrl \" + ov.CurrentSituation.LapLocation;\n }\n return \"Lap \" + ov.CurrentSituation.Lap;\n };\n if ($state.current.name == 'uci.event.discipline.category.xco')\n $state.go(\".ov\");\n var i = 0;\n var timer = $interval(function () {\n xcoService.overview($stateParams.context, $stateParams.key).then(function (data) {\n console.log(\"overview\");\n _this.overview = data;\n });\n i++;\n if (i > 20) {\n xcoService.overview($stateParams.context, $stateParams.key).then(function (data) {\n console.log(\"registration\");\n _this.registration = registration;\n });\n i = 0;\n }\n }, 3000);\n $scope.$on('$destroy', function () {\n $interval.cancel(timer);\n });\n }\n uciXcoRaceCtrl.$inject = ['xcoService', '$scope', '$stateParams', '$modal', '$state', 'registration', 'overview', '$interval'];\n return uciXcoRaceCtrl;\n })();\n uci.uciXcoRaceCtrl = uciXcoRaceCtrl;\n var uciTkConfigCtrl = (function () {\n function uciTkConfigCtrl(xcoService, $scope, $stateParams, $modal, $state, registration, overview, $interval, trackingConfig, genericResultsService) {\n var _this = this;\n this.xcoService = xcoService;\n this.$scope = $scope;\n this.$stateParams = $stateParams;\n this.$modal = $modal;\n this.registration = registration;\n this.overview = overview;\n this.$interval = $interval;\n this.trackingConfig = trackingConfig;\n this.genericResultsService = genericResultsService;\n this.icons = ['m01', 'm02', 'm03', 'm04', 'm05', 'm06', 'm07', 'm08', 'm09', 'm10', 'm11', 'm12', 'm13', 'm14', 'm15', 'm16',\n 'm01-b', 'm02-b', 'm03-b', 'm04-b', 'm05-b', 'm06-b', 'm07-b', 'm08-b', 'm09-b', 'm10-b', 'm11-b', 'm12-b', 'm13-b', 'm14-b', 'm15-b', 'm16-b',\n 'm01-c', 'm02-c', 'm03-c', 'm04-c', 'm05-c', 'm06-c', 'm07-c', 'm08-c', 'm09-c', 'm10-c', 'm11-c', 'm12-c', 'm13-c', 'm14-c', 'm15-c', 'm16-c',\n 'm01-c', 'm02-c', 'm03-c', 'm04-c', 'm05-c', 'm06-c', 'm07-c', 'm08-c', 'm09-c', 'm10-c', 'm11-c', 'm12-c', 'm13-c', 'm14-c', 'm15-c', 'm16-c'];\n this.map = {};\n this.SetMapType = function (type) {\n _this.map.setMapTypeId(type);\n };\n this.markers = {};\n this.GMapLoaded = function () {\n _this.map = new google.maps.Map(document.getElementById('map'), {\n zoom: 4,\n mapTypeControl: false,\n fullscreenControl: false,\n streetViewControl: false,\n center: new google.maps.LatLng(54.57951, -4.41387),\n mapTypeId: 'hybrid'\n });\n console.log(\"lala: \" + angular.toJson(_this.trackingConfig));\n angular.forEach(_this.trackingConfig.TrackKeys, function (tk) {\n _this.genericResultsService.Uci(_this.$stateParams[\"context\"], 'xco', _this.$stateParams[\"key\"] + '/tracks/' + tk).then(function (track) {\n _this.AddTrack(tk == 'start' ? \"yellow\" : \"red\", track);\n });\n });\n _this.InitInterval();\n };\n this.markerGroups = {};\n this.trackingSituation = {};\n this.RefreshLiveData = function () {\n _this.genericResultsService.Uci(_this.$stateParams[\"context\"], 'xco', _this.$stateParams[\"key\"] + '/trackingsituation').then(function (data) {\n _this.trackingSituation = data;\n var i = 0;\n angular.forEach(data.InRace, function (sit) {\n sit.Icon = _this.icons[(sit.FirstPos - 1) % _this.icons.length];\n _this.markerGroups[\"m\" + sit.FirstPos] = sit;\n _this.PlaceMarkerIcon(\"m\" + sit.FirstPos, sit.Title, sit.Lat, sit.Lon, sit.Icon, \"\");\n i++;\n });\n angular.forEach(_this.markers, function (v, k) {\n if (!_this.markerGroups.hasOwnProperty(k)) {\n var marker = _this.markers[k];\n marker.setMap(null);\n delete _this.markers[k];\n }\n });\n });\n };\n this.InitInterval = function () {\n var timer = _this.$interval(function () {\n _this.RefreshLiveData();\n }, 2000);\n _this.$scope.$on('$destroy', function () {\n _this.$interval.cancel(timer);\n });\n _this.RefreshLiveData();\n };\n this.InitMap();\n var newReg = {};\n angular.forEach(registration, function (v, k) {\n newReg[\"\" + parseInt(k) % 1000] = v;\n });\n this.registration = newReg;\n }\n uciTkConfigCtrl.prototype.PlaceMarkerIcon = function (key, name, lat, lng, icon, label) {\n var _this = this;\n var location = new google.maps.LatLng(parseFloat(lat), parseFloat(lng));\n var marker = this.markers[key];\n if (marker == undefined) {\n if (!angular.isDefined(icon))\n icon = 's16';\n var image = {\n url: 'https://chronorace.blob.core.windows.net/webresources/img/icons/' + icon + '.png',\n size: new google.maps.Size(24, 24),\n origin: new google.maps.Point(0, 0),\n anchor: new google.maps.Point(12, 12)\n };\n marker = new google.maps.Marker({\n position: location,\n map: this.map,\n icon: image\n });\n var infoWindow = new google.maps.InfoWindow();\n google.maps.event.addListener(marker, 'click', function () {\n var grp = _this.markerGroups[key];\n var html = \"\";\n angular.forEach(grp.Bibs, function (bib) {\n html = html + \"n°\" + bib + \", \" + _this.registration[bib].LastName + ' ' + _this.registration[bib].FirstName + \" (\" + _this.registration[bib].Pays + \")
\";\n });\n infoWindow.setContent(html);\n infoWindow.open(_this.map, marker);\n });\n this.markers[key] = marker;\n }\n else {\n marker.setPosition(location);\n }\n };\n uciTkConfigCtrl.prototype.AddTrack = function (color, trackData) {\n var points = [];\n console.log(\"Add track: \");\n var bounds = new google.maps.LatLngBounds();\n angular.forEach(trackData, function (point) {\n var toAdd = new google.maps.LatLng(point.Lat, point.Lon);\n points.push(toAdd);\n bounds.extend(toAdd);\n });\n var poly = new google.maps.Polyline({\n path: points,\n strokeColor: \"white\",\n strokeOpacity: 0.8,\n strokeWeight: 8 });\n poly.setMap(this.map);\n var poly = new google.maps.Polyline({\n path: points,\n strokeColor: color,\n strokeOpacity: .9,\n strokeWeight: 4 });\n poly.setMap(this.map);\n this.map.fitBounds(bounds);\n };\n uciTkConfigCtrl.prototype.InitMap = function () {\n var _this = this;\n var includeAPI = function () {\n var js, fjs = document.getElementsByTagName('script')[0];\n if (!document.getElementById('gmap-api')) {\n js = document.createElement('script');\n js.id = 'gmap-api';\n js.onload = function () { return _this.GMapLoaded(); };\n js.setAttribute('async', '');\n js.src = \"//maps.googleapis.com/maps/api/js?key=AIzaSyCxXmZsHXzWadccYtwOpreuEjxHY6dFzCU\";\n fjs.parentNode.insertBefore(js, fjs);\n }\n else\n _this.GMapLoaded();\n };\n includeAPI();\n console.log(\"init map\");\n };\n uciTkConfigCtrl.$inject = ['xcoService', '$scope', '$stateParams', '$modal', '$state', 'registration', 'overview', '$interval', 'trackingConfig', 'genericResultsService'];\n return uciTkConfigCtrl;\n })();\n uci.uciTkConfigCtrl = uciTkConfigCtrl;\n})(uci || (uci = {}));\n\nvar uci;\n(function (uci) {\n uci.uciModule.config([\"$stateProvider\",\n function ($stateProvider) {\n console.log(\"define uci routes\");\n $stateProvider\n .state(\"uci\", {\n url: \"/uci\",\n templateUrl: \"modules/uci/views/layout.html\",\n abstract: true,\n ncyBreadcrumb: {\n skip: true\n },\n resolve: {}\n }).state(\"uci.x2o\", {\n url: \"/x2o\",\n templateUrl: \"modules/uci/views/x2o.html\",\n controller: uci.uciMtbCtrl,\n controllerAs: \"uciMtbCtrl\",\n ncyBreadcrumb: {\n skip: false\n }\n }).state(\"uci.bmx\", {\n url: \"/bmx\",\n templateUrl: \"modules/uci/views/bmx.html\",\n controller: uci.uciMtbCtrl,\n controllerAs: \"uciMtbCtrl\",\n ncyBreadcrumb: {\n skip: false\n }\n }).state(\"uci.bmx.overview\", {\n url: \"/overview/:context\",\n views: {\n '@uci': {\n templateUrl: \"modules/uci/views/livebmxoverview.html\",\n controller: uci.uciBmxOverviewCtrl,\n controllerAs: 'uciBmxCtrl'\n }\n },\n resolve: {\n overview: ['genericResultsService', '$stateParams', function (genericResultsService, $stateParams) {\n return genericResultsService.Uci($stateParams[\"context\"], 'bmx', 'overview');\n }\n ]\n },\n ncyBreadcrumb: {\n skip: true\n }\n }).state(\"uci.mtb\", {\n url: \"/mtb\",\n templateUrl: \"modules/uci/views/mtb.html\",\n controller: uci.uciMtbCtrl,\n controllerAs: \"uciMtbCtrl\",\n ncyBreadcrumb: {\n skip: false\n }\n }).state(\"uci.cro\", {\n url: \"/cro\",\n templateUrl: \"modules/uci/views/cro2020.html\",\n controller: uci.uciMtbCtrl,\n controllerAs: \"uciMtbCtrl\",\n ncyBreadcrumb: {\n skip: false\n }\n }).state(\"uci.event\", {\n url: \"/event/:context\",\n templateUrl: \"modules/uci/views/event.html\",\n controller: uci.uciEventCtrl,\n controllerAs: 'uciEventCtrl',\n resolve: {\n liveCtx: ['uciLiveService', '$stateParams', function (uciLiveService, $stateParams) { return uciLiveService.LiveContext($stateParams[\"context\"]); }]\n },\n ncyBreadcrumb: {\n skip: true\n }\n }).state(\"uci.event.discipline\", {\n url: \"/:discipline\",\n templateUrl: \"modules/uci/views/discipline.html\",\n controller: uci.uciDisciplineCtrl,\n controllerAs: 'uciDisciplineCtrl',\n resolve: {},\n ncyBreadcrumb: {\n skip: true\n }\n }).state(\"uci.event.discipline.category\", {\n url: \"/:category\",\n templateUrl: \"modules/uci/views/category.html\",\n controller: uci.uciCategoryCtrl,\n controllerAs: 'uciCategoryCtrl',\n resolve: {},\n ncyBreadcrumb: {\n skip: true\n }\n })\n .state(\"uci.event.discipline.category.edr\", {\n url: \"/edr/:key\",\n views: {\n '@uci.event.discipline': {\n templateUrl: \"modules/uci/views/liveedr.html\",\n controller: uci.uciEdrLiveCtrl,\n controllerAs: 'uciEdrLiveCtrl'\n }\n },\n resolve: {},\n ncyBreadcrumb: {\n skip: true\n }\n })\n .state(\"uci.event.discipline.category.dh\", {\n url: \"/dh/:key\",\n views: {\n '@uci.event.discipline': {\n templateUrl: \"modules/uci/views/livedh.html\",\n controller: uci.uciDhLiveCtrl,\n controllerAs: 'uciDhLiveCtrl'\n }\n },\n resolve: {},\n ncyBreadcrumb: {\n skip: true\n }\n }).state(\"uci.event.discipline.category.dh.nxt\", {\n url: \"/nxt\",\n templateUrl: \"modules/uci/views/livedhnxt.html\",\n ncyBreadcrumb: {\n skip: false\n }\n }).state(\"uci.event.discipline.category.dh.lst\", {\n url: \"/lst\",\n templateUrl: \"modules/uci/views/livedhlst.html\",\n ncyBreadcrumb: {\n skip: false\n }\n }).state(\"uci.event.discipline.category.dh.res\", {\n url: \"/res\",\n templateUrl: \"modules/uci/views/livedhres.html\",\n ncyBreadcrumb: {\n skip: true\n }\n }).state(\"uci.event.discipline.category.dh.trk\", {\n url: \"/trk\",\n templateUrl: \"modules/uci/views/livedhtrk.html\",\n ncyBreadcrumb: {\n skip: true\n }\n }).state(\"uci.event.discipline.category.xco\", {\n url: \"/xco/:key\",\n views: {\n '@uci.event.discipline': {\n templateUrl: \"modules/uci/views/livexco.html\",\n controller: uci.uciXcoRaceCtrl,\n controllerAs: 'uciXcoRaceCtrl'\n }\n },\n resolve: {\n registration: ['xcoService', '$stateParams', function (xcoService, $stateParams) { return xcoService.registration($stateParams[\"context\"], $stateParams[\"key\"]); }],\n overview: ['xcoService', '$stateParams', function (xcoService, $stateParams) { return xcoService.overview($stateParams[\"context\"], $stateParams[\"key\"]); }]\n },\n ncyBreadcrumb: {\n skip: true\n }\n }).state(\"uci.event.discipline.category.xco.ov\", {\n url: \"/ov\",\n templateUrl: \"modules/uci/views/livexcoov.html\",\n ncyBreadcrumb: {\n skip: false\n }\n }).state(\"uci.event.discipline.category.xco.lt\", {\n url: \"/lt\",\n templateUrl: \"modules/uci/views/livexcolt.html\",\n ncyBreadcrumb: {\n skip: false\n }\n }).state(\"uci.event.discipline.category.xco.fs\", {\n url: \"/fs\",\n templateUrl: \"modules/uci/views/livexcofas.html\",\n ncyBreadcrumb: {\n skip: false\n }\n }).state(\"uci.event.discipline.category.xco.tk\", {\n url: \"/tk\",\n templateUrl: \"modules/uci/views/livexcotk.html\",\n controller: uci.uciTkConfigCtrl,\n controllerAs: 'uciTkConfigCtrl',\n resolve: {\n trackingConfig: ['genericResultsService', '$stateParams', function (genericResultsService, $stateParams) {\n return genericResultsService.Uci($stateParams[\"context\"], 'xco', $stateParams[\"key\"] + '/trackingconfig');\n }\n ]\n },\n ncyBreadcrumb: {\n skip: false\n }\n })\n .state(\"uci.event.discipline.category.trials\", {\n url: \"/trials/:key\",\n views: {\n '@uci.event.discipline': {\n templateUrl: \"modules/uci/views/livetrials.html\",\n controller: uci.uciTrialsRaceCtrl,\n controllerAs: 'uciTrialsRaceCtrl'\n }\n },\n resolve: {\n registrations: ['genericResultsService', '$stateParams', function (genericResultsService, $stateParams) {\n return genericResultsService.Uci($stateParams[\"context\"], 'trials', $stateParams[\"key\"] + '/registrations');\n }\n ],\n results: ['genericResultsService', '$stateParams', function (genericResultsService, $stateParams) {\n return genericResultsService.Uci($stateParams[\"context\"], 'trials', $stateParams[\"key\"] + '/results');\n }\n ]\n },\n ncyBreadcrumb: {\n skip: true\n }\n }).state(\"uci.event.discipline.category.trials.detail\", {\n url: \"/:nr\",\n views: {\n '@uci.event.discipline': {\n templateUrl: \"modules/uci/views/livetrialsdetail.html\",\n controller: uci.uciTrialsRaceCtrl,\n controllerAs: 'uciTrialsRaceCtrl'\n }\n }\n }).state(\"uci.event.discipline.category.bmxfs\", {\n url: \"/bmxfs/:key\",\n views: {\n '@uci.event.discipline': {\n templateUrl: \"modules/uci/views/livebmxfs.html\",\n controller: uci.uciBmxFsRaceCtrl,\n controllerAs: 'uciBmxFsRaceCtrl'\n }\n },\n resolve: {\n registrations: ['genericResultsService', '$stateParams', function (genericResultsService, $stateParams) {\n return genericResultsService.Uci($stateParams[\"context\"], 'bmxfs', $stateParams[\"key\"] + '/registrations');\n }\n ],\n results: ['genericResultsService', '$stateParams', function (genericResultsService, $stateParams) {\n return genericResultsService.Uci($stateParams[\"context\"], 'bmxfs', $stateParams[\"key\"] + '/results');\n }\n ]\n },\n ncyBreadcrumb: {\n skip: true\n }\n }).state(\"uci.event.discipline.category.bmx\", {\n url: \"/bmx/:key\",\n views: {\n '': {\n templateUrl: \"modules/uci/views/livebmx.html\",\n controller: uci.uciBmxCtrl,\n controllerAs: 'uciBmxCtrl'\n }\n },\n resolve: {\n results: ['genericResultsService', '$stateParams', function (genericResultsService, $stateParams) {\n return genericResultsService.Uci($stateParams[\"context\"], 'bmx', $stateParams[\"key\"] + '/results');\n }\n ]\n },\n ncyBreadcrumb: {\n skip: true\n }\n }).state(\"uci.event.discipline.category.track\", {\n url: \"/track/:key\",\n views: {\n '': {\n templateUrl: \"modules/uci/views/livetrack.html\",\n controller: uci.uciTrackCtrl,\n controllerAs: 'uciTrackCtrl'\n }\n },\n resolve: {\n results: ['genericResultsService', '$stateParams', function (genericResultsService, $stateParams) {\n return genericResultsService.Uci($stateParams[\"context\"], 'track', $stateParams[\"key\"] + '/results');\n }\n ]\n },\n ncyBreadcrumb: {\n skip: true\n }\n });\n }]);\n})(uci || (uci = {}));\n\nvar uci;\n(function (uci) {\n})(uci || (uci = {}));\n\n\n\n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n/// \n\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/bmx.html\",\n \"

2024 UCI BMX Racing World Cup

DateVenue
10-11 FEB 2024Rotorua (NZL)Stage 1
Stage 2
24-25 FEB 2024Brisbane (AUS)Stage 3
Stage 4
27-28 APR 2024Tulsa (USA)Stage 5
Stage 6

2023 UCI BMX Racing World Cup

DateVenue
3-4 JUN 2023Sakarya (TUR)Stage 1
Stage 2
24-25 JUN 2023Papendal (NED)Stage 3
Stage 4
23-24 SEP 2023Sarrians (FRA)Stage 5
Stage 6
7-8 OCT 2023Santiago del Estero (ARG)Stage 7
Stage 8
13-14 OCT 2023Santiago del Estero (ARG)Stage 9
Stage 10

2022 UCI BMX Racing World Cup

DateVenue
28-29 MAY 2022Glasgow (GBR)Round 1
Round 2
11-12 JUN 2022Papendal (NED)Round 3
Round 4
24-25 SEP 2022Bogota (COL)Round 5
Round 6
1-2 OCT 2022Bogota (COL)Round 7
Round 8

2021 BMX SUPERCROSS WORLD CUP

DateVenue
8-9 MAY 2021Verona (ITA)Round 1
Round 2
29-30 MAY 2021Bogota (COL)Round 3
Round 4
23-24 OCT 2021Sakarya (TUR)Round 5
Round 6
30-31 OCT 2021Sakarya (TUR)Round 7
Round 8
\");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/category.html\",\n \"

AVAILABLE SOON

{{uciCategoryCtrl.CurrentCategory().DisplayName}}

{{uciCategoryCtrl.CurrentCategory().Description | sanitize}}

{{chl.Description | sanitize}}

  • {{lnk.DisplayName}} {{lnk.DisplayName}} {{lnk.DisplayName}}
    1. {{l.DisplayName}} {{l.DisplayName}}
  • \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/cro.html\",\n \"

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    29 NOV 2020Tabor (CZE)ME+ WE+ MU+ MJ+ WJEntries - Results
    20 DEC 2020Namur (BEL)ME+ WEEntries - Results
    27 DEC 2020Dendermonde (BEL)ME+ WEEntries - Results
    3 JAN 2021Hulst (NED)ME+ WE+Entries - Results
    24 JAN 2021Overijse (BEL)ME+ WEEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    14 SEP 2019Iowa (USA)ME+ WEEntries - Results
    22 SEP 2019Waterloo (USA)ME+ WEEntries - Results
    20 OCT 2019Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    16 NOV 2019Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    24 NOV 2019Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    22 DEC 2019Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2019Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    19 JAN 2020Nommay Pays de Montbeliard (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2020Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    23 SEP 2018Waterloo (USA)ME+ WEEntries - Results
    29 SEP 2018Iowa (USA)ME+ WEEntries - Results
    21 OCT 2018Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    17 NOV 2018Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    25 NOV 2018Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    23 DEC 2018Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2018Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    20 JAN 2019Pont-Château (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2019Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    17 SEP 2017Iowa (USA)ME+WEEntries - Results
    24 SEP 2017Waterloo (USA)ME+WEEntries - Results
    22 OCT 2017Koksijde (BEL)ME+WE+MU+MJEntries - Results
    19 NOV 2017Bogense (DEN)ME+WE+MU+MJEntries - Results
    25 NOV 2017Zeven (GER)ME+WE+MU+MJEntries - Results
    17 DEC 2017Namur (BEL)ME+WE+MU+MJEntries - Results
    26 DEC 2017Heusden-Zolder (BEL)ME+WE+MU+MJEntries - Results
    21 JAN 2018Nommay Pays de Montbéliart (FRA)ME+ WE+ MU+ MJEntries - Results
    28 JAN 2018Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results + Live Timing
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/cro2019.html\",\n \"

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    29 NOV 2020Tabor (CZE)ME+ WE+ MU+ MJ+ WJEntries - Results
    20 DEC 2020Namur (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    27 DEC 2020Dendermonde (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    3 JAN 2021Hulst (NED)ME+ WE+Entries - Results
    24 JAN 2021Overijse (BEL)ME+ WE+ MU+ MJ+ WJ+Entries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    14 SEP 2019Iowa (USA)ME+ WEEntries - Results
    22 SEP 2019Waterloo (USA)ME+ WEEntries - Results
    20 OCT 2019Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    16 NOV 2019Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    24 NOV 2019Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    22 DEC 2019Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2019Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    19 JAN 2020Nommay Pays de Montbeliard (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2020Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    23 SEP 2018Waterloo (USA)ME+ WEEntries - Results
    29 SEP 2018Iowa (USA)ME+ WEEntries - Results
    21 OCT 2018Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    17 NOV 2018Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    25 NOV 2018Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    23 DEC 2018Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2018Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    20 JAN 2019Pont-Château (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2019Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    17 SEP 2017Iowa (USA)ME+WEEntries - Results
    24 SEP 2017Waterloo (USA)ME+WEEntries - Results
    22 OCT 2017Koksijde (BEL)ME+WE+MU+MJEntries - Results
    19 NOV 2017Bogense (DEN)ME+WE+MU+MJEntries - Results
    25 NOV 2017Zeven (GER)ME+WE+MU+MJEntries - Results
    17 DEC 2017Namur (BEL)ME+WE+MU+MJEntries - Results
    26 DEC 2017Heusden-Zolder (BEL)ME+WE+MU+MJEntries - Results
    21 JAN 2018Nommay Pays de Montbéliart (FRA)ME+ WE+ MU+ MJEntries - Results
    28 JAN 2018Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results + Live Timing
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/cro2020.html\",\n \"

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    24 NOV 2024Antwerpen (BEL)ME+ WEEntries - Results
    1 DEC 2024Dublin (IRL)ME+ WE+ MU+ MJ+ WJEntries - Results
    8 DEC 2024Cabras-Sardinia (ITA)ME+ WEEntries - Results
    15 DEC 2024Namur (BEL)ME+ WEEntries - Results
    21 DEC 2024Hulst (NED)ME+ WE+ MU+ MJ+ WJEntries - Results
    22 DEC 2024Zonhoven (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    26 DEC 2024Gavere (BEL)ME+ WEEntries - Results
    29 DEC 2024Besançon (FRA)ME+ WE+ MU+ MJ+ WJEntries - Results
    5 JAN 2025Dendermonde (BEL)ME+ WEEntries - Results
    19 JAN 2025Benidorm (ESP)ME+ WE+ MU+ MJ+ WJEntries - Results
    25 JAN 2025Maasmachelen (BEL)ME+ WEEntries - Results
    26 JAN 2025Hoogerheide (NED)ME+ WE+ MU+ MJ+ WJEntries - Results

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    15 OCT 2023Waterloo (USA)ME+ WEEntries - Results
    29 OCT 2023Maasmechelen (BEL)ME+ WEEntries - Results
    12 NOV 2023Dendermonde (BEL)ME+ WEEntries - Results
    19 NOV 2023Troyes (FRA)ME+ WE+ MU+ MJ+ WJEntries - Results
    26 NOV 2023Dublin (IRL)ME+ WE+ MU+ MJ+ WJEntries - Results
    3 DEC 2023Flamanville (FRA)ME+ WEEntries - Results
    10 DEC 2023Val di Sole (ITA)ME+ WEEntries - Results
    17 DEC 2023Namur (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    23 DEC 2023Antwerpen (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    26 DEC 2023Gavere (BEL)ME+ WEEntries - Results
    30 DEC 2023Hulst (NED)ME+ WEEntries - Results
    7 JAN 2024Zonhoven (BEL)ME+ WEEntries - Results
    21 JAN 2024Benidorm (ESP)ME+ WE+ MU+ MJ+ WJEntries - Results
    28 JAN 2024Hoogerheide (NED)ME+ WE+ MU+ MJ+ WJEntries - Results

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    9 OCT 2022Waterloo (USA)ME+ WE+Entries - Results
    16 OCT 2022Fayeteville (USA)ME+ WEEntries - Results
    23 OCT 2022Tabor (CZE)ME+ WE+ MU+ MJ+ WJEntries - Results
    30 OCT 2022Maasmechelen (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    13 NOV 2022Beekse Bergen (NED)ME+ WE+Entries - Results
    20 NOV 2022Overijse (BEL)ME+ WE+Entries - Results
    27 NOV 2022Hulst (NED)ME+ WE+Entries - Results
    4 DEC 2022Anvers (BEL)ME+ WE+Entries - Results
    11 DEC 2022Dublin (IRL)ME+ WE+Entries - Results
    17 DEC 2022Val di Sole (ITA)ME+ WE+Entries - Results
    26 DEC 2022Gavere (BEL)ME+ WE+Entries - Results
    8 JAN 2023Zonhoven (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    22 JAN 2023Benidorm (ESP)ME+ WE+ MU+ MJ+ WJEntries - Results
    29 JAN 2023Besançon (FRA)ME+ WE+ MU+ MJ+ WJEntries - Results

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    10 OCT 2021Waterloo (USA)ME+ WE+Entries - Results
    13 OCT 2021Fayeteville (USA)ME+ WEEntries - Results
    17 OCT 2021Iowa (USA)ME+ WEEntries - Results
    24 OCT 2021Zonhoven (BEL)ME+ WEEntries - Results
    31 OCT 2021Overijse (BEL)ME+ WEEntries - Results
    14 NOV 2021Tabor (CZE)ME+ WE+ MU+ MJ+ WJEntries - Results
    21 NOV 2021Koksijde (BEL)ME+ WEEntries - Results
    28 NOV 2021Besancon (FRA)ME+ WEEntries - Results
    5 DEC 2021Antwerpen (BEL) - Cancelled
    12 DEC 2021Val di Sole (ITA)ME+ WEEntries - Results
    18 DEC 2021Rucphen (NED)ME+ WEEntries - Results
    19 DEC 2021Namur (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    26 DEC 2021Dendermonde (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    2 JAN 2022Hulst (NED)ME+ WEEntries - Results
    16 JAN 2022Flamanville (FRA)ME+ WE+ MU+ MJ+ WJEntries - Results
    23 JAN 2022Hoogerheide (NED)ME+ WE+ MU+ MJ+ WJEntries - Results

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    29 NOV 2020Tabor (CZE)ME+ WE+ MU+ MJ+ WJEntries - Results
    20 DEC 2020Namur (BEL)ME+ WEEntries - Results
    27 DEC 2020Dendermonde (BEL)ME+ WEEntries - Results
    3 JAN 2021Hulst (NED)ME+ WEEntries - Results
    24 JAN 2021Overijse (BEL)ME+ WEEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    14 SEP 2019Iowa (USA)ME+ WEEntries - Results
    22 SEP 2019Waterloo (USA)ME+ WEEntries - Results
    20 OCT 2019Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    16 NOV 2019Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    24 NOV 2019Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    22 DEC 2019Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2019Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    19 JAN 2020Nommay Pays de Montbeliard (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2020Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    23 SEP 2018Waterloo (USA)ME+ WEEntries - Results
    29 SEP 2018Iowa (USA)ME+ WEEntries - Results
    21 OCT 2018Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    17 NOV 2018Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    25 NOV 2018Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    23 DEC 2018Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2018Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    20 JAN 2019Pont-Château (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2019Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    17 SEP 2017Iowa (USA)ME+WEEntries - Results
    24 SEP 2017Waterloo (USA)ME+WEEntries - Results
    22 OCT 2017Koksijde (BEL)ME+WE+MU+MJEntries - Results
    19 NOV 2017Bogense (DEN)ME+WE+MU+MJEntries - Results
    25 NOV 2017Zeven (GER)ME+WE+MU+MJEntries - Results
    17 DEC 2017Namur (BEL)ME+WE+MU+MJEntries - Results
    26 DEC 2017Heusden-Zolder (BEL)ME+WE+MU+MJEntries - Results
    21 JAN 2018Nommay Pays de Montbéliart (FRA)ME+ WE+ MU+ MJEntries - Results
    28 JAN 2018Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results + Live Timing
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/dh.html\",\n \"

    LIVE TIMING AVAILABLE SOON

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/discipline.html\",\n \"0\\\">
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/event.html\",\n \"
    0\\\">

    {{uciEventCtrl.liveCtx.DisplayName}}

    LIVE TIMING AVAILABLE SOON


    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/home.html\",\n \"

    erg

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/layout.html\",\n \"\");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livebmx.html\",\n \"

    Fastest Lap

    Day {{uciBmxCtrl.fastest.Day}}, {{uciBmxCtrl.fastest.Round }} - {{uciBmxCtrl.fastest.Heat}}, n°{{uciBmxCtrl.fastest.RaceNr}} - {{uciBmxCtrl.fastest.LastName}} {{uciBmxCtrl.fastest.FirstName}} ({{uciBmxCtrl.fastest.Nation}}): {{uciBmxCtrl.fastest.StrTime}}

    {{uciBmxCtrl.results.Title}} - Live timing

    {{uciBmxCtrl.results.QualificationRule}}

    PosNrNationNameGateStartTurn 1Turn 2Turn 3ResultQ

    {{heat.Title}}

    {{result.Pos}}n°{{result.Bib}}
    {{result.LastName}} {{result.FirstName}}{{result.Lane}}{{result.Start}}{{result.T1}}{{result.T2}}{{result.T3}}{{result.Time}} {{result.IRM}}{{result.Qual}}0\\\">{{result.Points}} {{uciBmxFsRaceCtrl.PrintStatus(result.Status)}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livebmxfs.html\",\n \"

    {{uciBmxFsRaceCtrl.results.Round.RoundName}} - Live results

    PosNrNationNameRun 1Run 2Points
    0\\\">{{result.Pos}}. -n°{{result.RaceNr}}
    {{uciBmxFsRaceCtrl.registrations[\\\"\\\"+result.RaceNr].PrintName}}{{result.Points1 | number:2}}{{result.Points2 | number:2}}0\\\">{{result.Points | number:2}} {{uciBmxFsRaceCtrl.PrintStatus(result.Status)}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livebmxoverview.html\",\n \"
    {{phase.CategoryName}} - {{phase.RoundName}}
    {{phase.QualificationRule}} 
    {{ heat.HeatName}} - {{ heat.HeatStatus}}
    {{rider.Pos}}.

    {{rider.IRM}} {{rider.Time}} #{{rider.Lane}}
    {{rider.FirstName }}
    {{rider.LastName }}
    n°{{rider.Bib}}
    {{rider.Nation}}
    FASTEST LAPS
    {{lap.Category}}
    {{lap.Name}} ({{lap.Nation}})
    {{lap.StrTime}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livedh.html\",\n \"

    Live Timing - {{uciDhLiveCtrl.raceData.DisplayName}}

    • 0\\\" role=\\\"presentation\\\" ui-sref-active=\\\"active\\\">Next to Start
    • 0\\\" role=\\\"presentation\\\" ui-sref-active=\\\"active\\\">On track
    • 0\\\" role=\\\"presentation\\\" ui-sref-active=\\\"active\\\">Last finishers
    • 0\\\" role=\\\"presentation\\\" ui-sref-active=\\\"active\\\">Results

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livedhlst.html\",\n \"
    RankNr
    Nation
    Name / TeamSplit {{$index+1}}Time / Gap
    0\\\">{{res.Position}}.n°{{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].RaceNr%1000}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].PrintName}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].UciTeamName}}
    0\\\">{{res.Times[$index].RaceTime | mstotimehmmssfff}}
    0\\\">+{{uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}} -{{-uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}}
    {{res.RaceTime | mstotimehmmssfff }}
    0\\\">+{{uciDhLiveCtrl.GetGap(-1,res) | mstotimehmmssfff }} -{{-uciDhLiveCtrl.GetGap(-1,res) | mstotimehmmssfff }} -
    {{res.Status}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livedhnxt.html\",\n \"
    Nr
    Nation
    Name / TeamStart time
    n°{{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+nxt].RaceNr%1000}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+nxt].PrintName}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+nxt].UciTeamName}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+nxt].StartTime |mstotimehmmss }}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livedhres.html\",\n \"
    RankNr
    Nation
    Name / TeamSplit {{$index+1}}Time / Gap
    0\\\">{{res.Position}}. InRace -n°{{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].RaceNr%1000}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].PrintName}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].UciTeamName}}
    0\\\">{{res.Times[$index].RaceTime | mstotimehmmssfff}} ({{res.Times[$index].Position}})
    0\\\">+{{uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}} -{{-uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}}
    {{res.RaceTime | mstotimehmmssfff }}
    0\\\">+{{uciDhLiveCtrl.GetGap(-1,res) | mstotimehmmssfff }} -{{-uciDhLiveCtrl.GetGap(-1,res) | mstotimehmmssfff }}
    {{res.RaceTime | mstotimehmmss }}
    @{{res.LastPoint}}
    Start at
    {{res.ExpectedStartTime | mstotimehmmss }}
    {{res.Status}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livedhtrk.html\",\n \"
    Nr
    Nation
    Name / TeamSplit {{$index+1}}Running time
    n°{{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].RaceNr%1000}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].PrintName}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].UciTeamName}}
    0\\\">{{res.Times[$index].RaceTime | mstotimehmmssfff}}
    0\\\">+{{uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}} -{{-uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}}
    {{res.RaceTime | mstotimehmmss}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/liveedr.html\",\n \"

    NO DATA YET

    {{ uciEdrLiveCtrl.selStage.Idx }} - {{uciEdrLiveCtrl.selStage.Name}} - Stage result

    -
    Last riders
    0\\\">
    Pos
    Nr
    Name
    Team
    NationPenTime
    Gap
    Pts
    {{row.Pos}}
    n°{{row.RaceNr}}
    {{row.LastName}} {{row.FirstName}}
    {{row.UCITeamName}}
    {{row.Penal}}
    {{ row.Gap}}
    {{ row.Points}}
    Full results
    0\\\">
    Pos
    Nr
    Name
    Team
    NationPenTime
    Gap
    Pts
    {{row.Pos}}
    n°{{row.RaceNr}}
    {{row.LastName}} {{row.FirstName}}
    {{row.UCITeamName}}
    {{row.Penal}}
    {{ row.Gap}}
    {{ row.Points}}

    Overall result after stage {{ uciEdrLiveCtrl.selStage.Idx }} - {{uciEdrLiveCtrl.selStage.Name}}

    0\\\">
    Last riders
    Pos
    Nr
    Name
    Team
    NationPenTime
    Gap
    Pts
    {{row.Pos}}
    n°{{row.RaceNr}}
    {{row.LastName}} {{row.FirstName}}
    {{row.UCITeamName}}
    {{row.Penal}}{{row.Time}}
    {{ row.Gap}}
    {{ row.Points}}
    Full Results
    0\\\">
    Pos
    Nr
    Name
    Team
    NationPenTime
    Gap
    Pts
    {{row.Pos}}
    n°{{row.RaceNr}}
    {{row.LastName}} {{row.FirstName}}
    {{row.UCITeamName}}
    {{row.Penal}}{{row.Time}}
    {{ row.Gap}}
    {{ row.Points}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livetrack.html\",\n \"

    {{uciTrackCtrl.results.Round.RoundDisplayName}}

    {{uciTrackCtrl.results.Round.RaceConfiguration}}

    PosNrNameNationResultPoints
    {{result.Pos}}n°{{result.DisplayBib}}{{result.FirstName1}} {{result.LastName1}}/{{result.FirstName2}} {{result.LastName2}} {{result.FirstName}} {{result.LastName}}
    {{result.Text}}
    {{result.Result}}{{result.ReportedPoints}}
    0\\\">

    Ranking

    PosNrNameNationLapsPoints
    {{result.Pos}}n°{{result.DisplayBib}}{{result.FirstName1}} {{result.LastName1}}/{{result.FirstName2}} {{result.LastName2}} {{result.FirstName}} {{result.LastName}}
    {{result.Text}}
    {{result.Laps}}{{result.Points}}
    0\\\">
    PosNrNameNationResultQ

    {{partition.DisplayName}}

    {{result.Remark}}{{result.Pos}}{{result.RaceNr}}{{result.DisplayName}}
    {{result.Result}}{{result.Qual}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livetrials.html\",\n \"

    {{uciTrialsRaceCtrl.results.Round.RoundName}} - Live Timing

    PosNrNationName1\\\">Sct {{sct.Idx}}Total
    0\\\">{{result.Pos}}. -n°{{result.RaceNr}}
    {{uciTrialsRaceCtrl.registrations[\\\"\\\"+result.RaceNr].PrintName}}1\\\" nowrap=\\\"\\\">Run {{run.Idx}}
    {{uciTrialsRaceCtrl.GetResult(result.RaceNr,run.Idx,sct.Idx)}}
    0\\\">{{result.Points}} {{uciTrialsRaceCtrl.GetPrintStatus(result.Status)}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livetrialsdetail.html\",\n \"

    {{uciTrialsRaceCtrl.results.Round.RoundName}} - Live Timing - Details for {{uciTrialsRaceCtrl.selectedRider.PrintName}} ({{uciTrialsRaceCtrl.selectedRider.Nation}})

    SectionStatusPosSgt 1Sgt 2Sgt 3Sgt 4Sgt 5Sgt 6PenaltyPointsDabs
    {{sct.Name}}{{uciTrialsRaceCtrl.PrintStatus(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Status)}}0\\\">{{uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Pos}}.{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z1)}}{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z2)}}{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z3)}}{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z4)}}{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z5)}}{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z6)}}{{uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Penal}}{{uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Points}}=1\\\" class=\\\"fa fa-circle text-danger\\\"> =2\\\" class=\\\"fa fa-circle text-danger\\\"> =3\\\" class=\\\"fa fa-circle text-danger\\\"> =4\\\" class=\\\"fa fa-circle text-danger\\\"> =5\\\" class=\\\"fa fa-circle text-danger\\\">
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livexco.html\",\n \"

    LIVE TIMING AVAILABLE SOON

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livexcofas.html\",\n \"
    0\\\">{{$index+1}}.
    {{uciXcoRaceCtrl.registration[fastest.Dossard].LastName}} {{uciXcoRaceCtrl.registration[fastest.Dossard].FirstName}} ({{uciXcoRaceCtrl.registration[ov.Dossard].Team}})
    n°{{fastest.Dossard%1000}} 0\\\">- {{fastest.AvgSpeed|number:2}}km/h (Lap {{fastest.Lap}})
    {{fastest.LapTime|mstotimehmmssf}}
    0\\\">+{{(fastest.LapTime-uciXcoRaceCtrl.overview.FastestLaps[0].LapTime)|mstotimehmmssf}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livexcolt.html\",\n \"
    0\\\">{{lap.Lap}} -
    {{uciXcoRaceCtrl.registration[lap.Dossard].LastName}} {{uciXcoRaceCtrl.registration[lap.Dossard].FirstName}}
    n°{{lap.Dossard%1000}} 0\\\">- {{lap.AvgSpeed|number:2}}km/h
    {{lap.Time|mstotimehmmss}}
    {{lap.CumTime|mstotimehmmss}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livexcoov.html\",\n \"
    {{ov.StrPos}}
    * {{uciXcoRaceCtrl.registration[ov.Dossard].LastName}} {{uciXcoRaceCtrl.registration[ov.Dossard].FirstName}} ({{uciXcoRaceCtrl.registration[ov.Dossard].Team}}) {{uciXcoRaceCtrl.GetRacePosition(ov)}}
    n°{{ov.Dossard%1000}} {{uciXcoRaceCtrl.GetLapTimes(ov)}}
    {{ov.CurrentSituation.TotalTime|mstotimehmmss}}
    0\\\">+{{ov.CurrentSituation.GapWithFirst|mstotimehmmss}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livexcotk.html\",\n \"
    0\\\">

    InRace

    {{grp.FirstPos}}.
    {{uciTkConfigCtrl.registration[bib].FirstName.substring(0,1)}}.{{uciTkConfigCtrl.registration[\\\"\\\"+bib].LastName}}
    {{grp.TotalDistance|number:0}}m +{{grp.GapInMeters|number:0}}m
    +{{grp.Gap|mstotimehmmss}}
    0\\\">

    Finished

    {{f.Pos}}.{{uciTkConfigCtrl.registration[f.RaceNr].FirstName.substring(0,1)}}.{{uciTkConfigCtrl.registration[f.RaceNr].LastName}}{{f.RaceTime|mstotimehmmss}} +{{f.Gap|mstotimehmmss}}
    0\\\">

    IRM

    -{{uciTkConfigCtrl.registration[f.RaceNr].FirstName.substring(0,1)}}.{{uciTkConfigCtrl.registration[f.RaceNr].LastName}}{{f.Status}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/mtb.html\",\n \"

    2024 UCI Mountain Bike World Series

    DateVenueEvent
    12-14 APR 2024Mairoporã (BRA)XCO #1+XCC #1Entries - Results+Live timing
    19-21 APR 2024Araxá (BRA)XCO #2+XCC #2Entries - Results+Live timing
    3-5 MAY 2024Fort William (GBR)DHI #1Entries - Results+Live timing
    10-12 MAY 2024Finale (ITA)EDR #1Entries - Results+Live timing
    17-19 MAY 2024Bielsko-Biala (POL)EDR #2Entries - Results+Live timing
    DHI #2Entries - Results+Live timing
    24-26 MAY 2024Nove Mesto na Morave (CZE)XCO #3 + XCC #3 + XCM #1Entries - Results+Live timing
    7-9 JUN 2024Saalfelden Leogang (AUT)DHI #3 + EDR #3Entries - Results+Live timing
    14-16 JUN 2024Val di Sole (ITA)XCO #4 + XCC #4 + DHI #4Entries - Results+Live timing
    21-23 JUN 2024Crans-Montana (SUI)XCO #5 + XCC #5Entries - Results+Live timing
    28-30 JUN 2024Haute-Savoie, Combloux (FRA)EDR #4Entries - Results+Live timing
    28-30 JUN 2024Haute-Savoie, Megève (FRA)XCM #2Entries - Results+Live timing
    4-7 JUL 2024Haute-Savoie, Les Gets (FRA)XCO #6 + XCC #6 + DHI #5Entries - Results+Live timing
    12-14 JUL 2024Aletsch Arena, Valais (SUI)EDR #5Entries - Results+Live timing
    6-8 SEP 2024Loudenvielle - Peyragudes (FRA)DHI #6 + EDR #6Entries - Results+Live timing
    27-29 SEP 2024Mt Van Hoevenberg - Lake Placid (USA)XCO #7 + XCC #7 + XCM #3Entries - Results+Live timing
    4-6 OCT 2024Maint-Sainte-Anne (CAN)XCO #8 + XCC #8 + DHI #7Entries - Results+Live timing

    2023 UCI Mountain Bike World Series

    DateVenueEvent
    11-14 MAI 2023Nove Mesto na Morave (CZE)XCO #1+XCC #1+XCM #1Entries - Results+Live timing
    2-4 JUN 2023Final Outdoor Region (ITA)XCM #2Entries - Results+Live timing
    8-11 JUN 2023Lenzerheide (SUI)DHI #1+XCO #2+XCC #2Entries - Results+Live timing
    15-18 JUN 2023Leogang-Salzburgerland (AUT)DHI #2+XCO #3+XCC #3Entries - Results+Live timing
    29 JUN-2 JUL 2023Val di Sole Trentino (ITA)DHI #3+XCO #4+XCC #4Entries - Results+Live timing
    24-27 AUG 2023Pal Arinsal (AND)DHI #4+XCO #5+XCC #5Entries - Results+Live timing
    1-3 SEP 2023Loudenvielle-Peyragudes (FRA)DHI #5Entries - Results+Live timing
    7-17 SEP 2023Haute-Savoie (FRA)DHI #6+XCO #6+XCC #6+XCM #3Entries - Results+Live timing
    27 SEP-1 OCT 2023Snowshoe (USA)DHI #7+XCO #7+XCC #7+XCM #4Entries - Results+Live timing
    5-8 OCT 2023Mont-Sainte-Anne (CAN)DHI #8+XCO #8+XCC #8Entries - Results+Live timing

    2022 MERCEDES-BENZ UCI MOUNTAIN BIKE WORLD CUP

    DateVenueEvent
    26-27 MAR 2022Lourdes (FRA)DHI #1Entries - Results+Live timing
    08-10 APR 2022Petropolis (BRA)XCO #1+XCC #1Entries - Results+Live timing
    06-08 MAY 2022Albstadt (GER)XCO #2+XCC #2Entries - Results+Live timing
    13-15 MAY 2022Nove Mesto Na Morave (CZE)XCO #3+XCC #3Entries - Results+Live timing
    21-22 MAY 2022Fort William (GBR)DHI #2Entries - Results+Live timing
    10-12 JUN 2022Leogang (AUT)DHI #3+XCO #4+XCC #4Entries - Results+Live timing
    08-10 JUL 2022Lenzerheide (SUI)DHI #4+XCO #5+XCC #5Entries - Results+Live timing
    15-17 JUL 2022Vallnord Pal Arinsal (AND)DHI #5+XCO #6+XCC #6Entries - Results+Live timing
    29-31 JUL 2022Snowshoe (USA)DHI #6+XCO #7+XCC #7Entries - Results+Live timing
    05-07 AUG 2022Mont-Sainte-Anne (CAN)DHI #7+XCO #8+XCC #8Entries - Results+Live timing
    02-04 SEP 2022Val di Sole (ITA)DHI #8+XCO #9+XCC #9Entries - Results+Live timing

    2021 MERCEDES-BENZ UCI MOUNTAIN BIKE WORLD CUP

    DateVenueEvent
    8-9 MAY 2021Albstadt (GER)XCC #1+XCO #1Entries - Results+Live timing
    15-16 MAY 2021Nove Mesto na Morave (CZE)XCC #2+XCO #2Entries - Results+Live timing
    To be confirmedFort William (GBR)DHI #1Entries - Results+Live timing
    12-13 JUN 2021Leogang (AUT)XCC #3+XCO #3+DHI #2Entries - Results+Live timing
    3-4 JUL 2021Les Gets (FRA)XCC #4+XCO #4+DHI #3Entries - Results+Live timing
    14-15 AUG 2021Maribor (SLO)DHI #4Entries - Results+Live timing
    4-5 SEP 2021Lenzerheide (SUI)XCC #5+XCO #5+DHI #5Entries - Results+Live timing
    14-19 SEP 2021Snowshoe (USA)DHI #6Entries - Results+Live timing
    XCC #6+XCO #6+DHI #7Results+Live timing

    2020 MERCEDES-BENZ UCI MOUNTAIN BIKE WORLD CUP

    DateVenueEvent
    29 SEP-04 OCT 2020Nove Mesto na Morave (CZE)XCC #1+XCO #1Entries - Results+Live timing
    XCC #2+XCO #2Results+Live timing
    14-16 OCT 2020Maribor (SLO)DHI #1Entries - Results+Live timing
    DHI #2Results+Live timing
    Lousã (POR)28 OCT-1 NOV 2020DHI #3Entries - Results+Live timing
    DHI #4Results+Live timing

    UCI Mercedes-Benz MTB World Cup

    DateVenueEvent
    27-28 APR 2019Maribor (SLO)DHI #1Entries - Results+Live timing
    18-19 MAY 2019Albstadt (GER)XCC #1+XCO #1Entries - Results+Live timing
    25-26 MAY 2019Nove Mesto na Morave (CZE)XCC #2+XCO #2Entries - Results+Live timing
    1-2 JUN 2019Fort William (GBR)DHI #2Entries - Results+Live timing
    8-9 JUN 2019Leogang (AUT)DHI #3Entries - Results+Live timing
    6-7 JUL 2019Vallnord (AND)XCC#3+XCO #3+DHI #4Entries - Results+Live timing
    13-14 JUL 2019Les Gets (FRA)XCC #4+XCO #4+DHI #5Entries - Results+Live timing
    3-4 AUG 2019Val di Sole (ITA)XCC #5+XCO #5+DHI #6Entries - Results+Live timing
    10-11 AUG 2019Lenzerheide (SUI)XCC #6+XCO #6+DHI #7Entries - Results+Live timing
    7-8 SEP 2019Snowshoe (USA)XCC #7+XCO #7+DHI #8Entries - Results+Live timing

    UCI Mercedes-Benz MTB World Cup

    DateVenueEvent
    10 MAR 2018Stellenbosch (RSA)XCO #1Entries - Results+Live timing
    21-22 APR 2018Losinj (CRO)DHI #1Entries - Results+Live timing
    18-20 MAY 2018Albstadt (GER)XCC #1+XCO #2Entries - Results+Live timing
    25-27 MAY 2018Nove Mesto na Morave (CZE)XCC #2+XCO #3Entries - Results+Live timing
    2-3 JUN 2018Fort William (GBR)DHI #2Entries - Results+Live timing
    9-10 JUN 2018Leogang (AUT)DHI #3Entries - Results+Live timing
    6-8 JUL 2018Val di Sole (ITA)XCC #3+XCO #4+DHI #4Entries - Results+Live timing
    13-15 JUL 2018Vallnord (AND)XCC #4+XCO #5+DHI #5Entries - Results+Live timing
    10-12 AUG 2018Mont-Sainte-Anne (CAN)XCC #5+XCO #6+DHI #6Entries - Results+Live timing
    24-26 AUG 2018La Bresse (FRA)XCC #6+XCO #7+DHI #7Entries - Results+Live timing

    UCI Mountain bike World Cup presented by Shimano

    DateVenueEvent
    29-30 APR 2017Lourdes (FRA)DHI #1Results
    20-21 MAY 2017Nové Mesto na Morave (CZE)XCO #1Results
    27-28 MAY 2017Albstadt (GER)XCO #2Entries - Results
    3-4 JUN 2017Fort William (GBR)DHI #2Entries - Results
    10-11 JUN 2017Leogang (AUT)DHI #3Entries - Results
    1-2 JUL 2017Vallnord (AND)DHI #4 + XCO #3Entries - Results
    8-9 JUL 2017Lenzerheide (SUI)DHI #5 + XCO #4Entries - Results
    5-6 AUG 2017Mont-Sainte-Anne (CAN)DHI #6 + XCO #5Entries - Results
    26-27 AUG 2017Val Di Sole - Trentino (ITA)DHI #7 + XCO #6Entries - Results
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/x2o.html\",\n \"

    X²O Badkamers Trofee 2021-2022

    DateVenueEvent + Live Timing
    1 NOV 2021Oudenaarde - KoppenbergcrossResults+Ranking
    27 NOV 2021Kortrijk - Caps Urban CrossResults+Ranking
    30 DEC 2021Loenhout - AzencrossResults+Ranking
    1 JAN 2022Baal - GP Sven NysResults+Ranking
    5 JAN 2022Herentals - Herentals CrosstResults+Ranking
    22 JAN 2022Hamme - Rectavit FlandrienCrossResults+Ranking
    6 FEB 2022Lille - Soudal KrawatenCrossResults+Ranking
    13 FEB 2021Brussels - Soudal Brussels Universities CyclocrossResults+Ranking

    X2O Badkamers Trofee 2020-2021

    DateVenueEvent + Live Timing
    31 OCT 2020OudenaardeResults+Ranking
    28 NOV 2020KortrijkResults+Ranking
    12 DEV 2020Antwerpen - ScheldecrossResults+Ranking
    23 DEV 2020Herentals - HerentalsCrossResults+Ranking
    1 JAN 2021Baal - GP Sven NysResults+Ranking
    17 JAN 2021Hamme - FlandrienCrossResults+Ranking
    7 FEB 2021Lille - KrawatenCrossResults+Ranking
    14 FEB 2021Brussels - Brussels Universities CyclocrossResults+Ranking
    \");\n}]);\n})();\n","module uci\r\n{\r\n export var uciModule: angular.IModule;\r\n}\r\n","(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/bmx.html\",\n \"

    2024 UCI BMX Racing World Cup

    DateVenue
    10-11 FEB 2024Rotorua (NZL)Stage 1
    Stage 2
    24-25 FEB 2024Brisbane (AUS)Stage 3
    Stage 4
    27-28 APR 2024Tulsa (USA)Stage 5
    Stage 6

    2023 UCI BMX Racing World Cup

    DateVenue
    3-4 JUN 2023Sakarya (TUR)Stage 1
    Stage 2
    24-25 JUN 2023Papendal (NED)Stage 3
    Stage 4
    23-24 SEP 2023Sarrians (FRA)Stage 5
    Stage 6
    7-8 OCT 2023Santiago del Estero (ARG)Stage 7
    Stage 8
    13-14 OCT 2023Santiago del Estero (ARG)Stage 9
    Stage 10

    2022 UCI BMX Racing World Cup

    DateVenue
    28-29 MAY 2022Glasgow (GBR)Round 1
    Round 2
    11-12 JUN 2022Papendal (NED)Round 3
    Round 4
    24-25 SEP 2022Bogota (COL)Round 5
    Round 6
    1-2 OCT 2022Bogota (COL)Round 7
    Round 8

    2021 BMX SUPERCROSS WORLD CUP

    DateVenue
    8-9 MAY 2021Verona (ITA)Round 1
    Round 2
    29-30 MAY 2021Bogota (COL)Round 3
    Round 4
    23-24 OCT 2021Sakarya (TUR)Round 5
    Round 6
    30-31 OCT 2021Sakarya (TUR)Round 7
    Round 8
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/category.html\",\n \"

    AVAILABLE SOON

    {{uciCategoryCtrl.CurrentCategory().DisplayName}}

    {{uciCategoryCtrl.CurrentCategory().Description | sanitize}}

    {{chl.Description | sanitize}}

  • {{lnk.DisplayName}} {{lnk.DisplayName}} {{lnk.DisplayName}}
    1. {{l.DisplayName}} {{l.DisplayName}}
  • \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/cro.html\",\n \"

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    29 NOV 2020Tabor (CZE)ME+ WE+ MU+ MJ+ WJEntries - Results
    20 DEC 2020Namur (BEL)ME+ WEEntries - Results
    27 DEC 2020Dendermonde (BEL)ME+ WEEntries - Results
    3 JAN 2021Hulst (NED)ME+ WE+Entries - Results
    24 JAN 2021Overijse (BEL)ME+ WEEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    14 SEP 2019Iowa (USA)ME+ WEEntries - Results
    22 SEP 2019Waterloo (USA)ME+ WEEntries - Results
    20 OCT 2019Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    16 NOV 2019Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    24 NOV 2019Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    22 DEC 2019Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2019Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    19 JAN 2020Nommay Pays de Montbeliard (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2020Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    23 SEP 2018Waterloo (USA)ME+ WEEntries - Results
    29 SEP 2018Iowa (USA)ME+ WEEntries - Results
    21 OCT 2018Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    17 NOV 2018Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    25 NOV 2018Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    23 DEC 2018Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2018Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    20 JAN 2019Pont-Château (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2019Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    17 SEP 2017Iowa (USA)ME+WEEntries - Results
    24 SEP 2017Waterloo (USA)ME+WEEntries - Results
    22 OCT 2017Koksijde (BEL)ME+WE+MU+MJEntries - Results
    19 NOV 2017Bogense (DEN)ME+WE+MU+MJEntries - Results
    25 NOV 2017Zeven (GER)ME+WE+MU+MJEntries - Results
    17 DEC 2017Namur (BEL)ME+WE+MU+MJEntries - Results
    26 DEC 2017Heusden-Zolder (BEL)ME+WE+MU+MJEntries - Results
    21 JAN 2018Nommay Pays de Montbéliart (FRA)ME+ WE+ MU+ MJEntries - Results
    28 JAN 2018Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results + Live Timing
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/cro2019.html\",\n \"

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    29 NOV 2020Tabor (CZE)ME+ WE+ MU+ MJ+ WJEntries - Results
    20 DEC 2020Namur (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    27 DEC 2020Dendermonde (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    3 JAN 2021Hulst (NED)ME+ WE+Entries - Results
    24 JAN 2021Overijse (BEL)ME+ WE+ MU+ MJ+ WJ+Entries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    14 SEP 2019Iowa (USA)ME+ WEEntries - Results
    22 SEP 2019Waterloo (USA)ME+ WEEntries - Results
    20 OCT 2019Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    16 NOV 2019Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    24 NOV 2019Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    22 DEC 2019Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2019Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    19 JAN 2020Nommay Pays de Montbeliard (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2020Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    23 SEP 2018Waterloo (USA)ME+ WEEntries - Results
    29 SEP 2018Iowa (USA)ME+ WEEntries - Results
    21 OCT 2018Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    17 NOV 2018Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    25 NOV 2018Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    23 DEC 2018Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2018Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    20 JAN 2019Pont-Château (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2019Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    17 SEP 2017Iowa (USA)ME+WEEntries - Results
    24 SEP 2017Waterloo (USA)ME+WEEntries - Results
    22 OCT 2017Koksijde (BEL)ME+WE+MU+MJEntries - Results
    19 NOV 2017Bogense (DEN)ME+WE+MU+MJEntries - Results
    25 NOV 2017Zeven (GER)ME+WE+MU+MJEntries - Results
    17 DEC 2017Namur (BEL)ME+WE+MU+MJEntries - Results
    26 DEC 2017Heusden-Zolder (BEL)ME+WE+MU+MJEntries - Results
    21 JAN 2018Nommay Pays de Montbéliart (FRA)ME+ WE+ MU+ MJEntries - Results
    28 JAN 2018Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results + Live Timing
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/cro2020.html\",\n \"

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    24 NOV 2024Antwerpen (BEL)ME+ WEEntries - Results
    1 DEC 2024Dublin (IRL)ME+ WE+ MU+ MJ+ WJEntries - Results
    8 DEC 2024Cabras-Sardinia (ITA)ME+ WEEntries - Results
    15 DEC 2024Namur (BEL)ME+ WEEntries - Results
    21 DEC 2024Hulst (NED)ME+ WE+ MU+ MJ+ WJEntries - Results
    22 DEC 2024Zonhoven (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    26 DEC 2024Gavere (BEL)ME+ WEEntries - Results
    29 DEC 2024Besançon (FRA)ME+ WE+ MU+ MJ+ WJEntries - Results
    5 JAN 2025Dendermonde (BEL)ME+ WEEntries - Results
    19 JAN 2025Benidorm (ESP)ME+ WE+ MU+ MJ+ WJEntries - Results
    25 JAN 2025Maasmachelen (BEL)ME+ WEEntries - Results
    26 JAN 2025Hoogerheide (NED)ME+ WE+ MU+ MJ+ WJEntries - Results

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    15 OCT 2023Waterloo (USA)ME+ WEEntries - Results
    29 OCT 2023Maasmechelen (BEL)ME+ WEEntries - Results
    12 NOV 2023Dendermonde (BEL)ME+ WEEntries - Results
    19 NOV 2023Troyes (FRA)ME+ WE+ MU+ MJ+ WJEntries - Results
    26 NOV 2023Dublin (IRL)ME+ WE+ MU+ MJ+ WJEntries - Results
    3 DEC 2023Flamanville (FRA)ME+ WEEntries - Results
    10 DEC 2023Val di Sole (ITA)ME+ WEEntries - Results
    17 DEC 2023Namur (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    23 DEC 2023Antwerpen (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    26 DEC 2023Gavere (BEL)ME+ WEEntries - Results
    30 DEC 2023Hulst (NED)ME+ WEEntries - Results
    7 JAN 2024Zonhoven (BEL)ME+ WEEntries - Results
    21 JAN 2024Benidorm (ESP)ME+ WE+ MU+ MJ+ WJEntries - Results
    28 JAN 2024Hoogerheide (NED)ME+ WE+ MU+ MJ+ WJEntries - Results

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    9 OCT 2022Waterloo (USA)ME+ WE+Entries - Results
    16 OCT 2022Fayeteville (USA)ME+ WEEntries - Results
    23 OCT 2022Tabor (CZE)ME+ WE+ MU+ MJ+ WJEntries - Results
    30 OCT 2022Maasmechelen (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    13 NOV 2022Beekse Bergen (NED)ME+ WE+Entries - Results
    20 NOV 2022Overijse (BEL)ME+ WE+Entries - Results
    27 NOV 2022Hulst (NED)ME+ WE+Entries - Results
    4 DEC 2022Anvers (BEL)ME+ WE+Entries - Results
    11 DEC 2022Dublin (IRL)ME+ WE+Entries - Results
    17 DEC 2022Val di Sole (ITA)ME+ WE+Entries - Results
    26 DEC 2022Gavere (BEL)ME+ WE+Entries - Results
    8 JAN 2023Zonhoven (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    22 JAN 2023Benidorm (ESP)ME+ WE+ MU+ MJ+ WJEntries - Results
    29 JAN 2023Besançon (FRA)ME+ WE+ MU+ MJ+ WJEntries - Results

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    10 OCT 2021Waterloo (USA)ME+ WE+Entries - Results
    13 OCT 2021Fayeteville (USA)ME+ WEEntries - Results
    17 OCT 2021Iowa (USA)ME+ WEEntries - Results
    24 OCT 2021Zonhoven (BEL)ME+ WEEntries - Results
    31 OCT 2021Overijse (BEL)ME+ WEEntries - Results
    14 NOV 2021Tabor (CZE)ME+ WE+ MU+ MJ+ WJEntries - Results
    21 NOV 2021Koksijde (BEL)ME+ WEEntries - Results
    28 NOV 2021Besancon (FRA)ME+ WEEntries - Results
    5 DEC 2021Antwerpen (BEL) - Cancelled
    12 DEC 2021Val di Sole (ITA)ME+ WEEntries - Results
    18 DEC 2021Rucphen (NED)ME+ WEEntries - Results
    19 DEC 2021Namur (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    26 DEC 2021Dendermonde (BEL)ME+ WE+ MU+ MJ+ WJEntries - Results
    2 JAN 2022Hulst (NED)ME+ WEEntries - Results
    16 JAN 2022Flamanville (FRA)ME+ WE+ MU+ MJ+ WJEntries - Results
    23 JAN 2022Hoogerheide (NED)ME+ WE+ MU+ MJ+ WJEntries - Results

    UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    29 NOV 2020Tabor (CZE)ME+ WE+ MU+ MJ+ WJEntries - Results
    20 DEC 2020Namur (BEL)ME+ WEEntries - Results
    27 DEC 2020Dendermonde (BEL)ME+ WEEntries - Results
    3 JAN 2021Hulst (NED)ME+ WEEntries - Results
    24 JAN 2021Overijse (BEL)ME+ WEEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    14 SEP 2019Iowa (USA)ME+ WEEntries - Results
    22 SEP 2019Waterloo (USA)ME+ WEEntries - Results
    20 OCT 2019Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    16 NOV 2019Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    24 NOV 2019Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    22 DEC 2019Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2019Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    19 JAN 2020Nommay Pays de Montbeliard (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2020Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    23 SEP 2018Waterloo (USA)ME+ WEEntries - Results
    29 SEP 2018Iowa (USA)ME+ WEEntries - Results
    21 OCT 2018Bern (SUI)ME+ WE+ MU+ MJEntries - Results
    17 NOV 2018Tabor (CZE)ME+ WE+ MU+ MJEntries - Results
    25 NOV 2018Koksijde (BEL)ME+ WE+ MU+ MJEntries - Results
    23 DEC 2018Namur (BEL)ME+ WE+ MU+ MJEntries - Results
    26 DEC 2018Heusden-Zolder (BEL)ME+ WE+ MU+ MJEntries - Results
    20 JAN 2019Pont-Château (FRA)ME+ WE+ MU+ MJEntries - Results
    27 JAN 2019Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results

    TELENET UCI CYCLO-CROSS WORLD CUP

    DateVenueEvent + Live Timing
    17 SEP 2017Iowa (USA)ME+WEEntries - Results
    24 SEP 2017Waterloo (USA)ME+WEEntries - Results
    22 OCT 2017Koksijde (BEL)ME+WE+MU+MJEntries - Results
    19 NOV 2017Bogense (DEN)ME+WE+MU+MJEntries - Results
    25 NOV 2017Zeven (GER)ME+WE+MU+MJEntries - Results
    17 DEC 2017Namur (BEL)ME+WE+MU+MJEntries - Results
    26 DEC 2017Heusden-Zolder (BEL)ME+WE+MU+MJEntries - Results
    21 JAN 2018Nommay Pays de Montbéliart (FRA)ME+ WE+ MU+ MJEntries - Results
    28 JAN 2018Hoogerheide Provincie Noord-Brabant (NED)ME+ WE+ MU+ MJEntries - Results + Live Timing
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/dh.html\",\n \"

    LIVE TIMING AVAILABLE SOON

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/discipline.html\",\n \"0\\\">
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/event.html\",\n \"
    0\\\">

    {{uciEventCtrl.liveCtx.DisplayName}}

    LIVE TIMING AVAILABLE SOON


    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/home.html\",\n \"

    erg

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/layout.html\",\n \"\");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livebmx.html\",\n \"

    Fastest Lap

    Day {{uciBmxCtrl.fastest.Day}}, {{uciBmxCtrl.fastest.Round }} - {{uciBmxCtrl.fastest.Heat}}, n°{{uciBmxCtrl.fastest.RaceNr}} - {{uciBmxCtrl.fastest.LastName}} {{uciBmxCtrl.fastest.FirstName}} ({{uciBmxCtrl.fastest.Nation}}): {{uciBmxCtrl.fastest.StrTime}}

    {{uciBmxCtrl.results.Title}} - Live timing

    {{uciBmxCtrl.results.QualificationRule}}

    PosNrNationNameGateStartTurn 1Turn 2Turn 3ResultQ

    {{heat.Title}}

    {{result.Pos}}n°{{result.Bib}}
    {{result.LastName}} {{result.FirstName}}{{result.Lane}}{{result.Start}}{{result.T1}}{{result.T2}}{{result.T3}}{{result.Time}} {{result.IRM}}{{result.Qual}}0\\\">{{result.Points}} {{uciBmxFsRaceCtrl.PrintStatus(result.Status)}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livebmxfs.html\",\n \"

    {{uciBmxFsRaceCtrl.results.Round.RoundName}} - Live results

    PosNrNationNameRun 1Run 2Points
    0\\\">{{result.Pos}}. -n°{{result.RaceNr}}
    {{uciBmxFsRaceCtrl.registrations[\\\"\\\"+result.RaceNr].PrintName}}{{result.Points1 | number:2}}{{result.Points2 | number:2}}0\\\">{{result.Points | number:2}} {{uciBmxFsRaceCtrl.PrintStatus(result.Status)}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livebmxoverview.html\",\n \"
    {{phase.CategoryName}} - {{phase.RoundName}}
    {{phase.QualificationRule}} 
    {{ heat.HeatName}} - {{ heat.HeatStatus}}
    {{rider.Pos}}.

    {{rider.IRM}} {{rider.Time}} #{{rider.Lane}}
    {{rider.FirstName }}
    {{rider.LastName }}
    n°{{rider.Bib}}
    {{rider.Nation}}
    FASTEST LAPS
    {{lap.Category}}
    {{lap.Name}} ({{lap.Nation}})
    {{lap.StrTime}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livedh.html\",\n \"

    Live Timing - {{uciDhLiveCtrl.raceData.DisplayName}}

    • 0\\\" role=\\\"presentation\\\" ui-sref-active=\\\"active\\\">Next to Start
    • 0\\\" role=\\\"presentation\\\" ui-sref-active=\\\"active\\\">On track
    • 0\\\" role=\\\"presentation\\\" ui-sref-active=\\\"active\\\">Last finishers
    • 0\\\" role=\\\"presentation\\\" ui-sref-active=\\\"active\\\">Results

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livedhlst.html\",\n \"
    RankNr
    Nation
    Name / TeamSplit {{$index+1}}Time / Gap
    0\\\">{{res.Position}}.n°{{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].RaceNr%1000}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].PrintName}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].UciTeamName}}
    0\\\">{{res.Times[$index].RaceTime | mstotimehmmssfff}}
    0\\\">+{{uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}} -{{-uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}}
    {{res.RaceTime | mstotimehmmssfff }}
    0\\\">+{{uciDhLiveCtrl.GetGap(-1,res) | mstotimehmmssfff }} -{{-uciDhLiveCtrl.GetGap(-1,res) | mstotimehmmssfff }} -
    {{res.Status}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livedhnxt.html\",\n \"
    Nr
    Nation
    Name / TeamStart time
    n°{{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+nxt].RaceNr%1000}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+nxt].PrintName}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+nxt].UciTeamName}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+nxt].StartTime |mstotimehmmss }}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livedhres.html\",\n \"
    RankNr
    Nation
    Name / TeamSplit {{$index+1}}Time / Gap
    0\\\">{{res.Position}}. InRace -n°{{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].RaceNr%1000}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].PrintName}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].UciTeamName}}
    0\\\">{{res.Times[$index].RaceTime | mstotimehmmssfff}} ({{res.Times[$index].Position}})
    0\\\">+{{uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}} -{{-uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}}
    {{res.RaceTime | mstotimehmmssfff }}
    0\\\">+{{uciDhLiveCtrl.GetGap(-1,res) | mstotimehmmssfff }} -{{-uciDhLiveCtrl.GetGap(-1,res) | mstotimehmmssfff }}
    {{res.RaceTime | mstotimehmmss }}
    @{{res.LastPoint}}
    Start at
    {{res.ExpectedStartTime | mstotimehmmss }}
    {{res.Status}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livedhtrk.html\",\n \"
    Nr
    Nation
    Name / TeamSplit {{$index+1}}Running time
    n°{{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].RaceNr%1000}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].PrintName}}
    {{uciDhLiveCtrl.raceData.Riders[\\\"\\\"+res.RaceNr].UciTeamName}}
    0\\\">{{res.Times[$index].RaceTime | mstotimehmmssfff}}
    0\\\">+{{uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}} -{{-uciDhLiveCtrl.GetGap($index,res) | mstotimehmmssfff}}
    {{res.RaceTime | mstotimehmmss}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/liveedr.html\",\n \"

    NO DATA YET

    {{ uciEdrLiveCtrl.selStage.Idx }} - {{uciEdrLiveCtrl.selStage.Name}} - Stage result

    -
    Last riders
    0\\\">
    Pos
    Nr
    Name
    Team
    NationPenTime
    Gap
    Pts
    {{row.Pos}}
    n°{{row.RaceNr}}
    {{row.LastName}} {{row.FirstName}}
    {{row.UCITeamName}}
    {{row.Penal}}
    {{ row.Gap}}
    {{ row.Points}}
    Full results
    0\\\">
    Pos
    Nr
    Name
    Team
    NationPenTime
    Gap
    Pts
    {{row.Pos}}
    n°{{row.RaceNr}}
    {{row.LastName}} {{row.FirstName}}
    {{row.UCITeamName}}
    {{row.Penal}}
    {{ row.Gap}}
    {{ row.Points}}

    Overall result after stage {{ uciEdrLiveCtrl.selStage.Idx }} - {{uciEdrLiveCtrl.selStage.Name}}

    0\\\">
    Last riders
    Pos
    Nr
    Name
    Team
    NationPenTime
    Gap
    Pts
    {{row.Pos}}
    n°{{row.RaceNr}}
    {{row.LastName}} {{row.FirstName}}
    {{row.UCITeamName}}
    {{row.Penal}}{{row.Time}}
    {{ row.Gap}}
    {{ row.Points}}
    Full Results
    0\\\">
    Pos
    Nr
    Name
    Team
    NationPenTime
    Gap
    Pts
    {{row.Pos}}
    n°{{row.RaceNr}}
    {{row.LastName}} {{row.FirstName}}
    {{row.UCITeamName}}
    {{row.Penal}}{{row.Time}}
    {{ row.Gap}}
    {{ row.Points}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livetrack.html\",\n \"

    {{uciTrackCtrl.results.Round.RoundDisplayName}}

    {{uciTrackCtrl.results.Round.RaceConfiguration}}

    PosNrNameNationResultPoints
    {{result.Pos}}n°{{result.DisplayBib}}{{result.FirstName1}} {{result.LastName1}}/{{result.FirstName2}} {{result.LastName2}} {{result.FirstName}} {{result.LastName}}
    {{result.Text}}
    {{result.Result}}{{result.ReportedPoints}}
    0\\\">

    Ranking

    PosNrNameNationLapsPoints
    {{result.Pos}}n°{{result.DisplayBib}}{{result.FirstName1}} {{result.LastName1}}/{{result.FirstName2}} {{result.LastName2}} {{result.FirstName}} {{result.LastName}}
    {{result.Text}}
    {{result.Laps}}{{result.Points}}
    0\\\">
    PosNrNameNationResultQ

    {{partition.DisplayName}}

    {{result.Remark}}{{result.Pos}}{{result.RaceNr}}{{result.DisplayName}}
    {{result.Result}}{{result.Qual}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livetrials.html\",\n \"

    {{uciTrialsRaceCtrl.results.Round.RoundName}} - Live Timing

    PosNrNationName1\\\">Sct {{sct.Idx}}Total
    0\\\">{{result.Pos}}. -n°{{result.RaceNr}}
    {{uciTrialsRaceCtrl.registrations[\\\"\\\"+result.RaceNr].PrintName}}1\\\" nowrap=\\\"\\\">Run {{run.Idx}}
    {{uciTrialsRaceCtrl.GetResult(result.RaceNr,run.Idx,sct.Idx)}}
    0\\\">{{result.Points}} {{uciTrialsRaceCtrl.GetPrintStatus(result.Status)}}

    LIVE TIMING NOT AVAILABLE YET

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livetrialsdetail.html\",\n \"

    {{uciTrialsRaceCtrl.results.Round.RoundName}} - Live Timing - Details for {{uciTrialsRaceCtrl.selectedRider.PrintName}} ({{uciTrialsRaceCtrl.selectedRider.Nation}})

    SectionStatusPosSgt 1Sgt 2Sgt 3Sgt 4Sgt 5Sgt 6PenaltyPointsDabs
    {{sct.Name}}{{uciTrialsRaceCtrl.PrintStatus(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Status)}}0\\\">{{uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Pos}}.{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z1)}}{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z2)}}{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z3)}}{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z4)}}{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z5)}}{{uciTrialsRaceCtrl.FormatPoints(uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Z6)}}{{uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Penal}}{{uciTrialsRaceCtrl.results.Details[sct.Idx+'_'+uciTrialsRaceCtrl.selectedRider.RaceNr].Points}}=1\\\" class=\\\"fa fa-circle text-danger\\\"> =2\\\" class=\\\"fa fa-circle text-danger\\\"> =3\\\" class=\\\"fa fa-circle text-danger\\\"> =4\\\" class=\\\"fa fa-circle text-danger\\\"> =5\\\" class=\\\"fa fa-circle text-danger\\\">
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livexco.html\",\n \"

    LIVE TIMING AVAILABLE SOON

    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livexcofas.html\",\n \"
    0\\\">{{$index+1}}.
    {{uciXcoRaceCtrl.registration[fastest.Dossard].LastName}} {{uciXcoRaceCtrl.registration[fastest.Dossard].FirstName}} ({{uciXcoRaceCtrl.registration[ov.Dossard].Team}})
    n°{{fastest.Dossard%1000}} 0\\\">- {{fastest.AvgSpeed|number:2}}km/h (Lap {{fastest.Lap}})
    {{fastest.LapTime|mstotimehmmssf}}
    0\\\">+{{(fastest.LapTime-uciXcoRaceCtrl.overview.FastestLaps[0].LapTime)|mstotimehmmssf}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livexcolt.html\",\n \"
    0\\\">{{lap.Lap}} -
    {{uciXcoRaceCtrl.registration[lap.Dossard].LastName}} {{uciXcoRaceCtrl.registration[lap.Dossard].FirstName}}
    n°{{lap.Dossard%1000}} 0\\\">- {{lap.AvgSpeed|number:2}}km/h
    {{lap.Time|mstotimehmmss}}
    {{lap.CumTime|mstotimehmmss}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livexcoov.html\",\n \"
    {{ov.StrPos}}
    * {{uciXcoRaceCtrl.registration[ov.Dossard].LastName}} {{uciXcoRaceCtrl.registration[ov.Dossard].FirstName}} ({{uciXcoRaceCtrl.registration[ov.Dossard].Team}}) {{uciXcoRaceCtrl.GetRacePosition(ov)}}
    n°{{ov.Dossard%1000}} {{uciXcoRaceCtrl.GetLapTimes(ov)}}
    {{ov.CurrentSituation.TotalTime|mstotimehmmss}}
    0\\\">+{{ov.CurrentSituation.GapWithFirst|mstotimehmmss}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/livexcotk.html\",\n \"
    0\\\">

    InRace

    {{grp.FirstPos}}.
    {{uciTkConfigCtrl.registration[bib].FirstName.substring(0,1)}}.{{uciTkConfigCtrl.registration[\\\"\\\"+bib].LastName}}
    {{grp.TotalDistance|number:0}}m +{{grp.GapInMeters|number:0}}m
    +{{grp.Gap|mstotimehmmss}}
    0\\\">

    Finished

    {{f.Pos}}.{{uciTkConfigCtrl.registration[f.RaceNr].FirstName.substring(0,1)}}.{{uciTkConfigCtrl.registration[f.RaceNr].LastName}}{{f.RaceTime|mstotimehmmss}} +{{f.Gap|mstotimehmmss}}
    0\\\">

    IRM

    -{{uciTkConfigCtrl.registration[f.RaceNr].FirstName.substring(0,1)}}.{{uciTkConfigCtrl.registration[f.RaceNr].LastName}}{{f.Status}}
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/mtb.html\",\n \"

    2024 UCI Mountain Bike World Series

    DateVenueEvent
    12-14 APR 2024Mairoporã (BRA)XCO #1+XCC #1Entries - Results+Live timing
    19-21 APR 2024Araxá (BRA)XCO #2+XCC #2Entries - Results+Live timing
    3-5 MAY 2024Fort William (GBR)DHI #1Entries - Results+Live timing
    10-12 MAY 2024Finale (ITA)EDR #1Entries - Results+Live timing
    17-19 MAY 2024Bielsko-Biala (POL)EDR #2Entries - Results+Live timing
    DHI #2Entries - Results+Live timing
    24-26 MAY 2024Nove Mesto na Morave (CZE)XCO #3 + XCC #3 + XCM #1Entries - Results+Live timing
    7-9 JUN 2024Saalfelden Leogang (AUT)DHI #3 + EDR #3Entries - Results+Live timing
    14-16 JUN 2024Val di Sole (ITA)XCO #4 + XCC #4 + DHI #4Entries - Results+Live timing
    21-23 JUN 2024Crans-Montana (SUI)XCO #5 + XCC #5Entries - Results+Live timing
    28-30 JUN 2024Haute-Savoie, Combloux (FRA)EDR #4Entries - Results+Live timing
    28-30 JUN 2024Haute-Savoie, Megève (FRA)XCM #2Entries - Results+Live timing
    4-7 JUL 2024Haute-Savoie, Les Gets (FRA)XCO #6 + XCC #6 + DHI #5Entries - Results+Live timing
    12-14 JUL 2024Aletsch Arena, Valais (SUI)EDR #5Entries - Results+Live timing
    6-8 SEP 2024Loudenvielle - Peyragudes (FRA)DHI #6 + EDR #6Entries - Results+Live timing
    27-29 SEP 2024Mt Van Hoevenberg - Lake Placid (USA)XCO #7 + XCC #7 + XCM #3Entries - Results+Live timing
    4-6 OCT 2024Maint-Sainte-Anne (CAN)XCO #8 + XCC #8 + DHI #7Entries - Results+Live timing

    2023 UCI Mountain Bike World Series

    DateVenueEvent
    11-14 MAI 2023Nove Mesto na Morave (CZE)XCO #1+XCC #1+XCM #1Entries - Results+Live timing
    2-4 JUN 2023Final Outdoor Region (ITA)XCM #2Entries - Results+Live timing
    8-11 JUN 2023Lenzerheide (SUI)DHI #1+XCO #2+XCC #2Entries - Results+Live timing
    15-18 JUN 2023Leogang-Salzburgerland (AUT)DHI #2+XCO #3+XCC #3Entries - Results+Live timing
    29 JUN-2 JUL 2023Val di Sole Trentino (ITA)DHI #3+XCO #4+XCC #4Entries - Results+Live timing
    24-27 AUG 2023Pal Arinsal (AND)DHI #4+XCO #5+XCC #5Entries - Results+Live timing
    1-3 SEP 2023Loudenvielle-Peyragudes (FRA)DHI #5Entries - Results+Live timing
    7-17 SEP 2023Haute-Savoie (FRA)DHI #6+XCO #6+XCC #6+XCM #3Entries - Results+Live timing
    27 SEP-1 OCT 2023Snowshoe (USA)DHI #7+XCO #7+XCC #7+XCM #4Entries - Results+Live timing
    5-8 OCT 2023Mont-Sainte-Anne (CAN)DHI #8+XCO #8+XCC #8Entries - Results+Live timing

    2022 MERCEDES-BENZ UCI MOUNTAIN BIKE WORLD CUP

    DateVenueEvent
    26-27 MAR 2022Lourdes (FRA)DHI #1Entries - Results+Live timing
    08-10 APR 2022Petropolis (BRA)XCO #1+XCC #1Entries - Results+Live timing
    06-08 MAY 2022Albstadt (GER)XCO #2+XCC #2Entries - Results+Live timing
    13-15 MAY 2022Nove Mesto Na Morave (CZE)XCO #3+XCC #3Entries - Results+Live timing
    21-22 MAY 2022Fort William (GBR)DHI #2Entries - Results+Live timing
    10-12 JUN 2022Leogang (AUT)DHI #3+XCO #4+XCC #4Entries - Results+Live timing
    08-10 JUL 2022Lenzerheide (SUI)DHI #4+XCO #5+XCC #5Entries - Results+Live timing
    15-17 JUL 2022Vallnord Pal Arinsal (AND)DHI #5+XCO #6+XCC #6Entries - Results+Live timing
    29-31 JUL 2022Snowshoe (USA)DHI #6+XCO #7+XCC #7Entries - Results+Live timing
    05-07 AUG 2022Mont-Sainte-Anne (CAN)DHI #7+XCO #8+XCC #8Entries - Results+Live timing
    02-04 SEP 2022Val di Sole (ITA)DHI #8+XCO #9+XCC #9Entries - Results+Live timing

    2021 MERCEDES-BENZ UCI MOUNTAIN BIKE WORLD CUP

    DateVenueEvent
    8-9 MAY 2021Albstadt (GER)XCC #1+XCO #1Entries - Results+Live timing
    15-16 MAY 2021Nove Mesto na Morave (CZE)XCC #2+XCO #2Entries - Results+Live timing
    To be confirmedFort William (GBR)DHI #1Entries - Results+Live timing
    12-13 JUN 2021Leogang (AUT)XCC #3+XCO #3+DHI #2Entries - Results+Live timing
    3-4 JUL 2021Les Gets (FRA)XCC #4+XCO #4+DHI #3Entries - Results+Live timing
    14-15 AUG 2021Maribor (SLO)DHI #4Entries - Results+Live timing
    4-5 SEP 2021Lenzerheide (SUI)XCC #5+XCO #5+DHI #5Entries - Results+Live timing
    14-19 SEP 2021Snowshoe (USA)DHI #6Entries - Results+Live timing
    XCC #6+XCO #6+DHI #7Results+Live timing

    2020 MERCEDES-BENZ UCI MOUNTAIN BIKE WORLD CUP

    DateVenueEvent
    29 SEP-04 OCT 2020Nove Mesto na Morave (CZE)XCC #1+XCO #1Entries - Results+Live timing
    XCC #2+XCO #2Results+Live timing
    14-16 OCT 2020Maribor (SLO)DHI #1Entries - Results+Live timing
    DHI #2Results+Live timing
    Lousã (POR)28 OCT-1 NOV 2020DHI #3Entries - Results+Live timing
    DHI #4Results+Live timing

    UCI Mercedes-Benz MTB World Cup

    DateVenueEvent
    27-28 APR 2019Maribor (SLO)DHI #1Entries - Results+Live timing
    18-19 MAY 2019Albstadt (GER)XCC #1+XCO #1Entries - Results+Live timing
    25-26 MAY 2019Nove Mesto na Morave (CZE)XCC #2+XCO #2Entries - Results+Live timing
    1-2 JUN 2019Fort William (GBR)DHI #2Entries - Results+Live timing
    8-9 JUN 2019Leogang (AUT)DHI #3Entries - Results+Live timing
    6-7 JUL 2019Vallnord (AND)XCC#3+XCO #3+DHI #4Entries - Results+Live timing
    13-14 JUL 2019Les Gets (FRA)XCC #4+XCO #4+DHI #5Entries - Results+Live timing
    3-4 AUG 2019Val di Sole (ITA)XCC #5+XCO #5+DHI #6Entries - Results+Live timing
    10-11 AUG 2019Lenzerheide (SUI)XCC #6+XCO #6+DHI #7Entries - Results+Live timing
    7-8 SEP 2019Snowshoe (USA)XCC #7+XCO #7+DHI #8Entries - Results+Live timing

    UCI Mercedes-Benz MTB World Cup

    DateVenueEvent
    10 MAR 2018Stellenbosch (RSA)XCO #1Entries - Results+Live timing
    21-22 APR 2018Losinj (CRO)DHI #1Entries - Results+Live timing
    18-20 MAY 2018Albstadt (GER)XCC #1+XCO #2Entries - Results+Live timing
    25-27 MAY 2018Nove Mesto na Morave (CZE)XCC #2+XCO #3Entries - Results+Live timing
    2-3 JUN 2018Fort William (GBR)DHI #2Entries - Results+Live timing
    9-10 JUN 2018Leogang (AUT)DHI #3Entries - Results+Live timing
    6-8 JUL 2018Val di Sole (ITA)XCC #3+XCO #4+DHI #4Entries - Results+Live timing
    13-15 JUL 2018Vallnord (AND)XCC #4+XCO #5+DHI #5Entries - Results+Live timing
    10-12 AUG 2018Mont-Sainte-Anne (CAN)XCC #5+XCO #6+DHI #6Entries - Results+Live timing
    24-26 AUG 2018La Bresse (FRA)XCC #6+XCO #7+DHI #7Entries - Results+Live timing

    UCI Mountain bike World Cup presented by Shimano

    DateVenueEvent
    29-30 APR 2017Lourdes (FRA)DHI #1Results
    20-21 MAY 2017Nové Mesto na Morave (CZE)XCO #1Results
    27-28 MAY 2017Albstadt (GER)XCO #2Entries - Results
    3-4 JUN 2017Fort William (GBR)DHI #2Entries - Results
    10-11 JUN 2017Leogang (AUT)DHI #3Entries - Results
    1-2 JUL 2017Vallnord (AND)DHI #4 + XCO #3Entries - Results
    8-9 JUL 2017Lenzerheide (SUI)DHI #5 + XCO #4Entries - Results
    5-6 AUG 2017Mont-Sainte-Anne (CAN)DHI #6 + XCO #5Entries - Results
    26-27 AUG 2017Val Di Sole - Trentino (ITA)DHI #7 + XCO #6Entries - Results
    \");\n}]);\n})();\n\n(function(module) {\ntry { module = angular.module(\"uci\"); }\ncatch(err) { module = angular.module(\"uci\", []); }\nmodule.run([\"$templateCache\", function($templateCache) {\n $templateCache.put(\"modules/uci/views/x2o.html\",\n \"

    X²O Badkamers Trofee 2021-2022

    DateVenueEvent + Live Timing
    1 NOV 2021Oudenaarde - KoppenbergcrossResults+Ranking
    27 NOV 2021Kortrijk - Caps Urban CrossResults+Ranking
    30 DEC 2021Loenhout - AzencrossResults+Ranking
    1 JAN 2022Baal - GP Sven NysResults+Ranking
    5 JAN 2022Herentals - Herentals CrosstResults+Ranking
    22 JAN 2022Hamme - Rectavit FlandrienCrossResults+Ranking
    6 FEB 2022Lille - Soudal KrawatenCrossResults+Ranking
    13 FEB 2021Brussels - Soudal Brussels Universities CyclocrossResults+Ranking

    X2O Badkamers Trofee 2020-2021

    DateVenueEvent + Live Timing
    31 OCT 2020OudenaardeResults+Ranking
    28 NOV 2020KortrijkResults+Ranking
    12 DEV 2020Antwerpen - ScheldecrossResults+Ranking
    23 DEV 2020Herentals - HerentalsCrossResults+Ranking
    1 JAN 2021Baal - GP Sven NysResults+Ranking
    17 JAN 2021Hamme - FlandrienCrossResults+Ranking
    7 FEB 2021Lille - KrawatenCrossResults+Ranking
    14 FEB 2021Brussels - Brussels Universities CyclocrossResults+Ranking
    \");\n}]);\n})();\n"],"sourceRoot":"/source/"}