Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 1162x 1162x 200x 102x 102x 102x 102x 102x 98x 155x 155x 93x 155x 1353x 727x 727x | 'use strict';
define(['jquery', 'underscore', 'pim/base-fetcher', 'routing'], function($, _, BaseFetcher, Routing) {
return BaseFetcher.extend({
identifierPromise: null,
fetchByTypesPromises: [],
/**
* Return the identifier attribute
*
* @return {Promise}
*/
getIdentifierAttribute: function() {
if (null === this.identifierPromise) {
this.identifierPromise = $.Deferred();
return this.fetchByTypes([this.options.identifier_type]).then(
function(attributes) {
Eif (attributes.length > 0) {
this.identifierPromise.resolve(attributes[0]).promise();
return this.identifierPromise;
}
return this.identifierPromise.reject().promise();
}.bind(this)
);
}
return this.identifierPromise;
},
/**
* Fetch attributes by types
*
* @param {Array} attributeTypes
*
* @return {Promise}
*/
fetchByTypes: function(attributeTypes, useCache = true) {
var cacheKey = attributeTypes.sort().join('');
if (!_.has(this.fetchByTypesPromises, cacheKey) || !useCache) {
this.fetchByTypesPromises[cacheKey] = this.getJSON(this.options.urls.list, {types: attributeTypes.join(',')})
.then(_.identity)
.promise();
}
return this.fetchByTypesPromises[cacheKey];
},
/**
* This method overrides the base method, to send a POST query instead of a GET query, because the request
* URI can be too long.
* TODO Should be deleted to set it back to GET.
*
* {@inheritdoc}
*/
getJSON: function(url, parameters) {
return $.post(Routing.generate(url), parameters, null, 'json');
},
/**
* {@inheritdoc}
*/
clear: function() {
BaseFetcher.prototype.clear.apply(this, arguments);
this.identifierPromise = null;
},
});
});
|