PageSourceSearch

https://www.kettlerworldtours.de/typo3conf/ext/wwswtportal/Resourc…/JavaScript/KWTRaceData.js?1479934747

js kettlerworldtours.de collected 2026-10-04 14:43:17 UTC 10,371 bytes, 298 lines download raw bytes

1
2function RaceDataItem() {
3    this.Time = 0;
4    this.Distance = 0;
5    this.Power = 0;
6    this.Pulse = 0;
7    this.RPM = 0;
8    this.Speed = 0;
9    this.Grade = 0;
10    this.IsRunning = 1;
11}
12function TourDataItem() {
13    this.Distance = 0;
14    this.Height = 0;
15}
16function RaceUserData() {
17    this.ID = 0;
18    this.Username = "";
19    this.TeamShortName = "";
20    this.Data = new Array();
21}
22RaceUserData.prototype.GetData = function (time) {
23    for (var i = 1; i < this.Data.length; i++) {
24        if (time >= this.Data[i-1].Time && time < this.Data[i].Time) {
25            return this.Data[i-1];
26        }
27    }
28    return (this.Data.length > 0 ? (time >= this.Data[this.Data.length-1].Time ? this.Data[this.Data.length-1] : this.Data[0]) : null);
29}
30RaceUserData.prototype.IsAtEnd = function (time) {
31    return (this.Data.length > 0 ? this.Data[this.Data.length - 1].Time <= time : false);
32}
33RaceUserData.prototype.GetDuration = function () {
34    return (this.Data.length > 0 ? this.Data[this.Data.length - 1].Time : 0);
35}
36function RaceMetaItem() {
37    this.ID = 0;
38    this.Title = "";
39    this.StartTime = "";
40    this.Users = new Array();
41}
42function KWTRaceDataPortal() {
43    this._listeners = {};
44    this.RaceID = 0;
45    this.Title = "";
46    this.Description = "";
47    this.StartTime = "";
48    this.EndTime = "";
49    this.TourName = "";
50    this.TourLength = 0.0;
51    this.CourseID = "";
52    this.RaceLength = 0.0;
53    this.StartDistance = -1;
54    this.TargetDistance = -1;
55    this.Users = new Array();
56    this.TourData = new Array();
57    this.Races = new Array();
58}
59
60KWTRaceDataPortal.prototype.getRaceLength = function () {
61    return dateDiff(this.EndTime, this.StartTime)/1000;
62}
63
64KWTRaceDataPortal.prototype.getRaceData = function (raceID, userNum) {
65    var postData = "{req: {API_KEY: \"" + api_key + "\", SessionID: \"{00000000-0000-0000-0000-000000000000}\", RaceID: " + raceID + ", UserNum: " + userNum + ", UserID: 0}}";
66    $.ajax(
67        {
68            type: "POST",
69            url: "/KWTPortal2/RaceDataPortal.asmx/GetRaceData",
70            dataType: "json",
71            contentType: "application/json; charset=utf-8",
72            success: this.OnKWTRaceDataLoaded,
73            error: this.OnKWTRaceDataError,
74            data: postData
75        }
76    );
77}
78
79KWTRaceDataPortal.prototype.OnKWTRaceDataLoaded = function (msg, textStatus, jqXHR) {
80    raceDataPortal.loadRaceDataObject(msg.d);
81    raceDataPortal.fire({ type: "OnKWTRaceDataLoaded", Result: 1 });
82}
83
84KWTRaceDataPortal.prototype.OnKWTRaceDataError = function (jqXHR, textStatus, errorThrown) {
85    raceDataPortal.fire({ type: "OnKWTRaceDataLoaded", Result: -1 });
86}
87
88KWTRaceDataPortal.prototype.getRaceRecorderData = function (raceID) {
89    var postData = "{req: {API_KEY: \"" + api_key + "\", SessionID: \"{00000000-0000-0000-0000-000000000000}\", RaceID: " + raceID + "}}";
90    $.ajax(
91        {
92            type: "POST",
93            url: "/KWTPortal2/RaceDataPortal.asmx/GetRaceRecorderData",
94            dataType: "json",
95            contentType: "application/json; charset=utf-8",
96            success: this.OnKWTRaceRecorderDataLoaded,
97            error: this.OnKWTRaceRecorderDataError,
98            data: postData
99        }
100    );
101}
102
103    KWTRaceDataPortal.prototype.OnKWTRaceRecorderDataLoaded = function (msg, textStatus, jqXHR) {
104        raceDataPortal.loadRaceRecorderDataObject(msg.d);
105    raceDataPortal.fire({ type: "OnKWTRaceRecorderDataLoaded", Result: 1 });
106}
107
108KWTRaceDataPortal.prototype.OnKWTRaceRecorderDataError = function (jqXHR, textStatus, errorThrown) {
109    raceDataPortal.fire({ type: "OnKWTRaceRecorderDataLoaded", Result: -1 });
110}
111
112KWTRaceDataPortal.prototype.getRaces = function () {
113    var postData = "{req: {API_KEY: \"" + api_key + "\", SessionID: \"{00000000-0000-0000-0000-000000000000}\"}}";
114    $.ajax(
115        {
116            type: "POST",
117            url: "/KWTPortal2/RaceDataPortal.asmx/GetRaces",
118            dataType: "json",
119            contentType: "application/json; charset=utf-8",
120            success: this.OnKWTRacesLoaded,
121            error: this.OnKWTRacesError,
122            data: postData
123        }
124    );
125}
126
127KWTRaceDataPortal.prototype.OnKWTRacesLoaded = function (msg, textStatus, jqXHR) {
128    raceDataPortal.loadRaceMetaItems(msg.d);
129    raceDataPortal.fire({ type: "OnKWTRacesLoaded", Result: 1 });
130}
131
132KWTRaceDataPortal.prototype.OnKWTRacesError = function (jqXHR, textStatus, errorThrown) {
133    raceDataPortal.fire({ type: "OnKWTRacesLoaded", Result: -1 });
134}
135
136function jsonDateTimeToDate(js) {
137    var dpart = js.substr(6, js.length - 8);
138    var dt = new Date();
139    dt.setTime(dpart * 1);
140    return new Date(Date.UTC(dt.getFullYear(), dt.getMonth(), dt.getDate(), dt.getHours(), dt.getMinutes(), dt.getSeconds(), dt.getMilliseconds()));
141}
142
143KWTRaceDataPortal.prototype.loadRaceMetaItems = function (jo) {
144    if (jo == null) return;
145    raceDataPortal.Races = new Array();
146    if (jo.ResultCode < 0) return;
147    for (var i = 0; i < jo.Races.length; i++) {
148        var rj = jo.Races[i];
149        var rmi = new RaceMetaItem();
150        rmi.ID = rj.ID;
151        rmi.Title = rj.Title;
152        rmi.StartTime = jsonDateTimeToDate(rj.StartTime);
153        if (rj.Users != null) {
154            for (var j = 0; j < rj.Users.length; j++) {
155                var uj = rj.Users[j];
156                var u = new RaceUserData();
157                u.ID = uj.ID;
158                u.Username = uj.Username;
159                u.TeamShortName = uj.TeamShortName;
160                rmi.Users.push(u);
161            }
162        }
163        raceDataPortal.Races.push(rmi);
164    }
165}
166
167KWTRaceDataPortal.prototype.loadRaceDataObject = function (jo) {
168    if (jo == null) return null;
169    if (jo.ResultCode < 0) return;
170    raceDataPortal.RaceID = jo.RaceID;
171    raceDataPortal.Title = jo.Title;
172    raceDataPortal.Description = jo.Description;
173    raceDataPortal.StartTime = jsonDateTimeToDate(jo.StartTime);
174    raceDataPortal.EndTime = jsonDateTimeToDate(jo.EndTime);
175    raceDataPortal.TourName = jo.TourName;
176    raceDataPortal.TourLength = jo.TourLength;
177    raceDataPortal.CourseID = jo.CourseID;
178    raceDataPortal.RaceLength = jo.RaceLength;
179    raceDataPortal.StartDistance = jo.StartDistance;
180    raceDataPortal.TargetDistance = jo.TargetDistance;
181    raceDataPortal.Users = new Array();
182    if (jo.Users != null) {
183        for (var i = 0; i < jo.Users.length; i++) {
184            var uj = jo.Users[i];
185            var u = new RaceUserData();
186            u.ID = uj.ID;
187            u.Username = uj.Username;
188            u.TeamShortName = uj.TeamShortName;
189            if (uj.Data != null) {
190
191                for (var j = 0; j < uj.Data.length; j++) {
192                    var dj = uj.Data[j];
193                    var d = new RaceDataItem();
194                    d.Distance = dj.Distance;
195                    d.Time = dj.Time;
196                    d.Power = dj.Power;
197                    d.Pulse = dj.Pulse;
198                    d.RPM = dj.RPM;
199                    d.Speed = dj.Speed;
200                    d.Grade = dj.Grade;
201                    u.Data.push(d);
202                }
203            }
204            raceDataPortal.Users.push(u);
205        }
206    }
207    raceDataPortal.TourData = new Array();
208    if (jo.TourData != null) {
209        for (var i = 0; i < jo.TourData.length; i++) {
210            var tj = jo.TourData[i];
211            var t = new TourDataItem();
212            t.Distance = tj.Distance;
213            t.Height = tj.Height;
214            raceDataPortal.TourData.push(t);
215        }
216    }
217}
218
219
220KWTRaceDataPortal.prototype.loadRaceRecorderDataObject = function (jo) {
221    if (jo == null) return null;
222    if (jo.ResultCode < 0) return;
223    raceDataPortal.RaceID = jo.RaceID;
224    raceDataPortal.Title = jo.Title;
225    raceDataPortal.Description = jo.Description;
226    raceDataPortal.StartTime = jsonDateTimeToDate(jo.StartTime);
227    raceDataPortal.EndTime = jsonDateTimeToDate(jo.EndTime);
228    raceDataPortal.TourName = jo.TourName;
229    raceDataPortal.TourLength = jo.TourLength;
230    raceDataPortal.CourseID = jo.CourseID;
231    raceDataPortal.RaceLength = jo.RaceLength;
232    raceDataPortal.StartDistance = jo.StartDistance;
233    raceDataPortal.TargetDistance = jo.TargetDistance;
234    raceDataPortal.Users = new Array();
235    if (jo.Users != null) {
236        for (var i = 0; i < jo.Users.length; i++) {
237            var uj = jo.Users[i];
238            var u = new RaceUserData();
239            u.ID = uj.ID;
240            u.Username = uj.U;
241            u.TeamShortName = uj.T;
242            if (uj.D != null) {
243
244                for (var j = 0; j < uj.D.length; j++) {
245                    var dj = uj.D[j];
246                    var d = new RaceDataItem();
247                    d.Distance = dj.D;
248                    d.Time = dj.T;
249                    d.Speed = dj.S;
250                    d.IsRunning = dj.R;
251                    u.Data.push(d);
252                }
253            }
254            raceDataPortal.Users.push(u);
255        }
256    }
257    raceDataPortal.TourData = new Array();
258}
259
260KWTRaceDataPortal.prototype.addListener = function (type, listener) {
261    if (typeof this._listeners[type] == "undefined") {
262        this._listeners[type] = [];
263    }
264
265    this._listeners[type].push(listener);
266};
267
268KWTRaceDataPortal.prototype.fire = function (event) {
269    if (typeof event == "string") {
270        event = { type: event };
271    }
272    if (!event.target) {
273        event.target = this;
274    }
275
276    if (!event.type) {  //falsy
277        throw new Error("Event object missing 'type' property.");
278    }
279
280    if (this._listeners[event.type] instanceof Array) {
281        var listeners = this._listeners[event.type];
282        for (var i = 0, len = listeners.length; i < len; i++) {
283            listeners[i].call(this, event);
284        }
285    }
286};
287
288KWTRaceDataPortal.prototype.removeListener = function (type, listener) {
289    if (this._listeners[type] instanceof Array) {
290        var listeners = this._listeners[type];
291        for (var i = 0, len = listeners.length; i < len; i++) {
292            if (listeners[i] === listener) {
293                listeners.splice(i, 1);
294                break;
295            }
296        }
297    }
298};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.