common/corpus-common-addon/addon/services/resolver-service.js
changeset 328 04e728651a48
parent 261 02e2396bcbbc
child 450 7bddb57bf806
--- a/common/corpus-common-addon/addon/services/resolver-service.js	Tue Oct 11 16:39:11 2016 +0200
+++ b/common/corpus-common-addon/addon/services/resolver-service.js	Thu Oct 13 13:01:12 2016 +0200
@@ -2,103 +2,115 @@
 import _ from 'lodash';
 import store from 'corpus-common-addon/utils/store';
 
+const DEFAULT_DEBOUNCE = 10;
+
 export default Ember.Service.extend({
 
-    promises: null,
-    queryRegister: null,
+  promises: null,
+  queryRegister: null,
 
-    storeKeyBase: null,
-    apiPath: null,
-    resDocRoot: null,
+  storeKeyBase: null,
+  apiPath: null,
+  resDocRoot: null,
 
-    processId: function(id) { return id; },
-
-    getReturnDictKey: function(id) { return id; },
+  processId: function (id) {
+    return id;
+  },
 
-    init() {
-        this._super(...arguments);
-        this.set('promises', []);
-        this.set('queryRegister',{});
-        this.doQuery = _.debounce(this._doQuery,10);
-    },
+  getReturnDictKey: function (id) {
+    return id;
+  },
 
-    env: function() {
-        return Ember.getOwner(this).resolveRegistration('config:environment');
-    },
+  init(...args) {
+    this._super(...args);
+    this.set('promises', []);
+    this.set('queryRegister', {});
+    this.doQuery = _.debounce(this._doQuery, DEFAULT_DEBOUNCE);
+  },
+
+  env: function () {
+    return Ember.getOwner(this).resolveRegistration('config:environment');
+  },
 
 
-    _getStoreKey: function(id) {
-        return this.storeKeyBase+':'+id;
-    },
+  _getStoreKey: function (id) {
+    return this.storeKeyBase + ':' + id;
+  },
+
+  _doQuery: function () {
+    const queryRegister = this.get('queryRegister');
+
+    this.set('queryRegister', {});
 
-    _doQuery: function() {
-        var queryRegister = this.get('queryRegister');
-        this.set('queryRegister', {});
-        var ids = Object.keys(queryRegister).join(',');
-        if(!ids) {
-            _.each(queryRegister, (resolve_reject) => {
-                resolve_reject[0]({});
-            });
-        }
-        Ember.$.ajax({
-            //TODO Configuration ?
-            url: this.env().rootURL.replace(/\/$/,'') + this.apiPath +ids,
+    const ids = Object.keys(queryRegister).join(',');
 
-            success: (itemDoc) => {
-                _.each(queryRegister, (resolve_reject) => {
-                    resolve_reject[0](itemDoc[this.resDocRoot]);
-                });
-            },
-            error: (req, status, error) => {
-                _.each(queryRegister, (resolve_reject) => {
-                    resolve_reject[1](status + ':' + error);
-                });
-
-            }
-        });
-    },
+    if (!ids) {
+      _.each(queryRegister, resolveReject=> {
+        resolveReject[0]({});
+      });
+    }
+    Ember.$.ajax({
+      // TODO Configuration ?
+      url: this.env().APP.backRootURL.replace(/\/$/, '') + this.apiPath + ids,
 
-    // make the query for the name.
-    // return a Promise
-    queryName: function(id) {
-        var queryRegister = this.get('queryRegister');
-        return new Ember.RSVP.Promise(function(resolve, reject) {
-            queryRegister[id] = [resolve, reject];
-            this.doQuery(this);
-        }.bind(this));
-    },
+      success: itemDoc=> {
+        _.each(queryRegister, resolveReject=> {
+          resolveReject[0](itemDoc[this.resDocRoot]);
+        });
+      },
+      error: (req, status, error)=> {
+        _.each(queryRegister, resolveReject=> {
+          resolveReject[1](status + ':' + error);
+        });
 
-    getName: function(id) {
-
-        if(!id) {
-            return new Ember.RSVP.Promise(function(resolve/*, reject*/) {
-                resolve('');
-            });
-        }
-
-        var objectId = this.processId(id);
+      }
+    });
+  },
 
-        var namePromise = null;
-
-        var storeKey = this._getStoreKey(id);
-        var name = store.get(storeKey);
+  // make the query for the name.
+  // return a Promise
+  queryName: function (id) {
+    const queryRegister = this.get('queryRegister');
 
-        if( name !== null) {
-            namePromise = new Ember.RSVP.Promise(function(resolve/*, reject*/) {
-                resolve(name);
-            });
-        } else if ( storeKey in this.get('promises')) {
-            namePromise = this.get('promises')[storeKey];
-        } else {
-            //TODO: handle error !!!
-            namePromise = this.queryName(objectId)
-                .then(function(names) {
-                    delete this.get('promises')[storeKey];
-                    return store.set(storeKey, names[this.getReturnDictKey(objectId)]);
-                }.bind(this));
-            this.get('promises')[storeKey] = namePromise;
-        }
-        return namePromise;
+    return new Ember.RSVP.Promise(function (resolve, reject) {
+      queryRegister[id] = [resolve, reject];
+      this.doQuery(this);
+    }.bind(this));
+  },
+
+  getName: function (id) {
+
+    if (!id) {
+      return new Ember.RSVP.Promise(function (resolve/* , reject*/) {
+        resolve('');
+      });
     }
 
+    const objectId = this.processId(id);
+
+    let namePromise = null;
+
+    const storeKey = this._getStoreKey(id);
+    const name = store.get(storeKey);
+
+    if (name !== null) {
+      namePromise = new Ember.RSVP.Promise(function (resolve/* , reject*/) {
+        resolve(name);
+      });
+    } else if (storeKey in this.get('promises')) {
+      namePromise = this.get('promises')[storeKey];
+    } else {
+      // handle error !!!
+      namePromise = this.queryName(objectId)
+        .then(function (names) {
+          Reflect.deleteProperty(this.get('promises'), storeKey);
+
+          return store.set(storeKey, names[this.getReturnDictKey(objectId)]);
+        }.bind(this));
+      this.get('promises')[storeKey] = namePromise;
+    }
+
+    return namePromise;
+  }
+
 });