author | ymh <ymh.work@gmail.com> |
Tue, 23 Feb 2016 17:47:57 +0100 | |
changeset 127 | 5cd8c3065c38 |
child 134 | c06d08c8a1b8 |
permissions | -rw-r--r-- |
127
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
1 |
import Ember from 'ember'; |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
2 |
import store from 'corpus-common-addon/utils/store'; |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
3 |
import * as constants from 'corpus-common-addon/utils/constants' |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
4 |
|
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
5 |
export default Ember.Service.extend({ |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
6 |
env: function() { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
7 |
return Ember.getOwner(this).resolveRegistration('config:environment') |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
8 |
}, |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
9 |
_getStoreKey: function(id) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
10 |
return 'lexvo:'+id; |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
11 |
}, |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
12 |
getName: function(id) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
13 |
|
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
14 |
if(!id) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
15 |
return new Ember.RSVP.Promise(function(resolve/*, reject*/) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
16 |
resolve(""); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
17 |
}); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
18 |
} |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
19 |
|
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
20 |
var lexvoId = id; |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
21 |
if(id.startsWith(constants.LEXVO_BASE_URL)) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
22 |
lexvoId = id.slice(constants.LEXVO_BASE_URL.length); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
23 |
} |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
24 |
var namePromise = null; |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
25 |
|
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
26 |
var storeKey = this._getStoreKey(id); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
27 |
var name = store.get(storeKey); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
28 |
|
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
29 |
if(!name) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
30 |
//TODO: handle error !!! |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
31 |
namePromise = this.queryName(lexvoId) |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
32 |
.then( function(response) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
33 |
return store.set(storeKey, response); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
34 |
}); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
35 |
} |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
36 |
else { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
37 |
namePromise = new Ember.RSVP.Promise(function(resolve/*, reject*/) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
38 |
resolve(name); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
39 |
}); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
40 |
} |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
41 |
return namePromise; |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
42 |
}, |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
43 |
// make the query for the name. |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
44 |
// return a Promise |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
45 |
queryName: function(id) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
46 |
return new Ember.RSVP.Promise(function(resolve, reject) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
47 |
Ember.$.ajax({ |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
48 |
//TODO Configuration ? |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
49 |
url: this.env().baseURL.replace(/\/$/,"") + "/api/v1/lexvo/"+id, |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
50 |
success: function(lexvoDoc) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
51 |
var names = lexvoDoc.lexvoids; |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
52 |
resolve((id in names)?names[id]:null); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
53 |
}, |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
54 |
error: function(req, status, error) { |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
55 |
reject(status + ":" + error); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
56 |
} |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
57 |
}); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
58 |
}.bind(this)); |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
59 |
} |
5cd8c3065c38
extract common functionalities to common module. First application to lexvo name resolving
ymh <ymh.work@gmail.com>
parents:
diff
changeset
|
60 |
}); |