blob: 8da19344c40e887b488e3cb5ccc0773006bd92ea [file] [log] [blame]
Nils Diewald0e6992a2015-04-14 20:13:52 +00001define(['util'], function () {
Nils Diewald58141332015-04-07 16:18:45 +00002 // TODO: https://github.com/honza/140medley/blob/master/140medley.js
3 // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest
4 // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest
5 // r.addEventListener("progress", updateProgress, false);
6 // http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml
7 // http://stackoverflow.com/questions/6112744/load-javascript-on-demand
8
Nils Diewald29f25ee2015-05-08 00:51:47 +00009 KorAP.URL = KorAP.URL !== undefined ? KorAP.URL : 'http://korap.ids-mannheim.de/kalamar';
Nils Diewald0e6992a2015-04-14 20:13:52 +000010
Nils Diewald4347ee92015-05-04 20:32:48 +000011 KorAP.API = KorAP.API || {};
Nils Diewald58141332015-04-07 16:18:45 +000012
Akron48b1e4d2015-06-17 18:47:01 +020013 /**
14 * Retrieve information about a match
15 */
Nils Diewald4347ee92015-05-04 20:32:48 +000016 KorAP.API.getMatchInfo = function (match, param, cb) {
Nils Diewald58141332015-04-07 16:18:45 +000017
Nils Diewald4347ee92015-05-04 20:32:48 +000018 // match is a KorAP.Match object
19 var url = KorAP.URL;
20 url += '/corpus';
Akron0a6768f2016-07-13 18:00:43 +020021/*
Nils Diewald4347ee92015-05-04 20:32:48 +000022 url += '/' + match.corpusID;
23 url += '/' + match.docID;
24 url += '/' + match.textID;
Akron0a6768f2016-07-13 18:00:43 +020025*/
26 url += '/' + match.textSigle;
Nils Diewald4347ee92015-05-04 20:32:48 +000027 url += '/' + match.matchID;
Nils Diewald58141332015-04-07 16:18:45 +000028
Nils Diewald4347ee92015-05-04 20:32:48 +000029 // { spans: true, layer:x, foundry : y}
30 if (param['spans'] == true) {
31 url += '?spans=true';
32 if (param['foundry'] !== undefined)
33 url += '&foundry=' + param['foundry'];
34 if (param['layer'] !== undefined)
35 url += '&layer=' + param['layer'];
Nils Diewald58141332015-04-07 16:18:45 +000036 }
Nils Diewald4347ee92015-05-04 20:32:48 +000037
38 // { spans : false, layer: [Array of KorAP.InfoLayer] }
39 else {
40 // TODO
41 url += '?spans=false';
42 }
43
44 KorAP.API.getJSON(url, cb);
Nils Diewald58141332015-04-07 16:18:45 +000045 };
Nils Diewald4347ee92015-05-04 20:32:48 +000046
Akron48b1e4d2015-06-17 18:47:01 +020047 /**
48 * Retrieve information about collections
49 */
50 KorAP.API.getCollections = function (cb) {
51 KorAP.API.getJSON(KorAP.URL + '/collection', cb);
52 };
53
54 /**
55 * General method to retrieve JSON information
56 */
Nils Diewald4347ee92015-05-04 20:32:48 +000057 KorAP.API.getJSON = function (url, onload) {
58 var req = new XMLHttpRequest();
59
60 req.open("GET", url, true);
61 req.setRequestHeader("Accept", "application/json");
62 req.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
63 req.onreadystatechange = function () {
64 /*
65 States:
66 0 - unsent (prior to open)
67 1 - opened (prior to send)
68 2 - headers received
69 3 - loading (responseText has partial data)
70 4 - done
71 */
72 if (this.readyState == 4) {
Akron9f64fd02016-02-13 05:51:38 +010073 if (this.status === 200) {
74 var json = JSON.parse(this.responseText);
75 if (json["errors"] !== null) {
76 for (var i in json["errors"]) {
77 KorAP.log(json["errors"][i][0], json["errors"][i][1]);
78 };
79 };
80 onload(json);
81 }
Nils Diewald4347ee92015-05-04 20:32:48 +000082 else
83 KorAP.log(this.status, this.statusText);
84 }
85 };
86 req.ontimeout = function () {
87 KorAP.log(0, 'Request Timeout');
88 };
89 req.send();
90 }
Nils Diewald0e6992a2015-04-14 20:13:52 +000091});