|
@@ -609,98 +609,6 @@ var ApiHelper = (function () {
|
|
|
}));
|
|
}));
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @param {Object} options
|
|
|
|
|
- * @param {Function} options.successCallback
|
|
|
|
|
- * @param {Function} [options.errorCallback]
|
|
|
|
|
- * @param {boolean} [options.silenceErrors]
|
|
|
|
|
- * @param {Number} [options.timeout]
|
|
|
|
|
- * @param {Object} [options.editor] - Ace editor
|
|
|
|
|
- *
|
|
|
|
|
- */
|
|
|
|
|
- ApiHelper.prototype.fetchSolrCollections = function (options) {
|
|
|
|
|
- var self = this;
|
|
|
|
|
- var url = SOLR_COLLECTIONS_API;
|
|
|
|
|
- var fetchFunction = function (storeInCache) {
|
|
|
|
|
- if (options.timeout === 0) {
|
|
|
|
|
- self.assistErrorCallback(options)({ status: -1 });
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
- $.ajax({
|
|
|
|
|
- dataType: "json",
|
|
|
|
|
- url: url,
|
|
|
|
|
- type: 'POST',
|
|
|
|
|
- timeout: options.timeout,
|
|
|
|
|
- success: function (data) {
|
|
|
|
|
- if (!data.error && !self.successResponseIsError(data) && typeof data.collections !== 'undefined' && data.collections !== null) {
|
|
|
|
|
- storeInCache(data);
|
|
|
|
|
- options.successCallback(data);
|
|
|
|
|
- } else {
|
|
|
|
|
- self.assistErrorCallback(options)(data);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- .fail(self.assistErrorCallback(options))
|
|
|
|
|
- .always(function () {
|
|
|
|
|
- if (typeof options.editor !== 'undefined' && options.editor !== null) {
|
|
|
|
|
- options.editor.hideSpinner();
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- fetchCached.bind(self)($.extend({}, options, {
|
|
|
|
|
- sourceType: 'collections',
|
|
|
|
|
- url: url,
|
|
|
|
|
- fetchFunction: fetchFunction
|
|
|
|
|
- }));
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- /**
|
|
|
|
|
- * @param {Object} options
|
|
|
|
|
- * @param {String} options.collectionName
|
|
|
|
|
- * @param {Function} options.successCallback
|
|
|
|
|
- * @param {Function} [options.errorCallback]
|
|
|
|
|
- * @param {boolean} [options.silenceErrors]
|
|
|
|
|
- * @param {Number} [options.timeout]
|
|
|
|
|
- *
|
|
|
|
|
- */
|
|
|
|
|
- ApiHelper.prototype.fetchSolrCollection = function (options) {
|
|
|
|
|
- var self = this;
|
|
|
|
|
- var url = SOLR_FIELDS_API + '?name=' + options.collectionName;
|
|
|
|
|
- var fetchFunction = function (storeInCache) {
|
|
|
|
|
- if (options.timeout === 0) {
|
|
|
|
|
- self.assistErrorCallback(options)({ status: -1 });
|
|
|
|
|
- return;
|
|
|
|
|
- }
|
|
|
|
|
- $.ajax({
|
|
|
|
|
- dataType: "json",
|
|
|
|
|
- url: url,
|
|
|
|
|
- type: 'GET',
|
|
|
|
|
- timeout: options.timeout,
|
|
|
|
|
- success: function (data) {
|
|
|
|
|
- if (!data.error && !self.successResponseIsError(data) && typeof data.schema !== 'undefined' && data.schema !== null) {
|
|
|
|
|
- storeInCache(data);
|
|
|
|
|
- options.successCallback(data);
|
|
|
|
|
- } else {
|
|
|
|
|
- self.assistErrorCallback(options)(data);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- })
|
|
|
|
|
- .fail(self.assistErrorCallback(options))
|
|
|
|
|
- .always(function () {
|
|
|
|
|
- if (typeof options.editor !== 'undefined' && options.editor !== null) {
|
|
|
|
|
- options.editor.hideSpinner();
|
|
|
|
|
- }
|
|
|
|
|
- });
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
- fetchCached.bind(self)($.extend({}, options, {
|
|
|
|
|
- sourceType: 'collections',
|
|
|
|
|
- url: url,
|
|
|
|
|
- fetchFunction: fetchFunction
|
|
|
|
|
- }));
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
/**
|
|
/**
|
|
|
* @param {Object} options
|
|
* @param {Object} options
|
|
|
* @param {String} options.collectionName
|
|
* @param {String} options.collectionName
|
|
@@ -1235,6 +1143,7 @@ var ApiHelper = (function () {
|
|
|
* @param {Object[]} options.identifierChain
|
|
* @param {Object[]} options.identifierChain
|
|
|
* @param {string} options.defaultDatabase
|
|
* @param {string} options.defaultDatabase
|
|
|
*/
|
|
*/
|
|
|
|
|
+ // TODO: Move to DataCatalog
|
|
|
ApiHelper.prototype.fetchPartitions = function (options) {
|
|
ApiHelper.prototype.fetchPartitions = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
|
|
|
|
@@ -1277,6 +1186,7 @@ var ApiHelper = (function () {
|
|
|
* @param {string} options.databaseName
|
|
* @param {string} options.databaseName
|
|
|
* @param {string} options.tableName
|
|
* @param {string} options.tableName
|
|
|
*/
|
|
*/
|
|
|
|
|
+ // TODO: Move to DataCatalog
|
|
|
ApiHelper.prototype.fetchTableDetails = function (options) {
|
|
ApiHelper.prototype.fetchTableDetails = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
$.ajax({
|
|
$.ajax({
|
|
@@ -1300,6 +1210,8 @@ var ApiHelper = (function () {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * Deprecated, use DataCatalog.getEntry(...).getSample()
|
|
|
|
|
+ *
|
|
|
* @param {Object} options
|
|
* @param {Object} options
|
|
|
* @param {string} options.sourceType
|
|
* @param {string} options.sourceType
|
|
|
* @param {Function} options.successCallback
|
|
* @param {Function} options.successCallback
|
|
@@ -1312,6 +1224,7 @@ var ApiHelper = (function () {
|
|
|
* @param {string} [options.columnName]
|
|
* @param {string} [options.columnName]
|
|
|
* @param {Object} [options.editor] - Ace editor
|
|
* @param {Object} [options.editor] - Ace editor
|
|
|
*/
|
|
*/
|
|
|
|
|
+ // TODO: Delete once DataCatalog is used throughout
|
|
|
ApiHelper.prototype.fetchTableSample = function (options) {
|
|
ApiHelper.prototype.fetchTableSample = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
var url = SAMPLE_API_PREFIX + options.databaseName + '/' + options.tableName + (options.columnName ? '/' + options.columnName : '');
|
|
var url = SAMPLE_API_PREFIX + options.databaseName + '/' + options.tableName + (options.columnName ? '/' + options.columnName : '');
|
|
@@ -1396,37 +1309,6 @@ var ApiHelper = (function () {
|
|
|
}).fail(self.assistErrorCallback(options));
|
|
}).fail(self.assistErrorCallback(options));
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- /**
|
|
|
|
|
- * @param {Object} options
|
|
|
|
|
- * @param {string} options.sourceType
|
|
|
|
|
- * @param {Function} options.successCallback
|
|
|
|
|
- * @param {Function} [options.errorCallback]
|
|
|
|
|
- * @param {boolean} [options.silenceErrors]
|
|
|
|
|
- *
|
|
|
|
|
- * @param {string} options.databaseName
|
|
|
|
|
- * @param {string} options.tableName
|
|
|
|
|
- * @param {string} options.columnName
|
|
|
|
|
- */
|
|
|
|
|
- ApiHelper.prototype.fetchStats = function (options) {
|
|
|
|
|
- var self = this;
|
|
|
|
|
- $.ajax({
|
|
|
|
|
- url: "/" + options.sourceType + "/api/table/" + options.databaseName + "/" + options.tableName + "/stats/" + ( options.columnName || ""),
|
|
|
|
|
- data: {},
|
|
|
|
|
- beforeSend: function (xhr) {
|
|
|
|
|
- xhr.setRequestHeader("X-Requested-With", "Hue");
|
|
|
|
|
- },
|
|
|
|
|
- dataType: "json",
|
|
|
|
|
- success: function (response) {
|
|
|
|
|
- if (! self.successResponseIsError(response)) {
|
|
|
|
|
- options.successCallback(response)
|
|
|
|
|
- } else {
|
|
|
|
|
- self.assistErrorCallback(options)(response);
|
|
|
|
|
- }
|
|
|
|
|
- },
|
|
|
|
|
- error: self.assistErrorCallback(options)
|
|
|
|
|
- });
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
/**
|
|
/**
|
|
|
* Returns a promise that will always be resolved with:
|
|
* Returns a promise that will always be resolved with:
|
|
|
*
|
|
*
|
|
@@ -1655,6 +1537,35 @@ var ApiHelper = (function () {
|
|
|
return self.simplePost(url, data, options);
|
|
return self.simplePost(url, data, options);
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
+ /**
|
|
|
|
|
+ * Fetches samples for the given source and path
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param {Object} options
|
|
|
|
|
+ * @param {boolean} [options.silenceErrors]
|
|
|
|
|
+ * @param {boolean} [options.noCache]
|
|
|
|
|
+ * @param {boolean} [options.refreshCache] - Default false
|
|
|
|
|
+ *
|
|
|
|
|
+ * @param {string} options.sourceType
|
|
|
|
|
+ * @param {string[]} options.path
|
|
|
|
|
+ */
|
|
|
|
|
+ ApiHelper.prototype.fetchSample = function (options) {
|
|
|
|
|
+ var self = this;
|
|
|
|
|
+ var deferred = $.Deferred();
|
|
|
|
|
+ fetchAssistData.bind(self)({
|
|
|
|
|
+ url: SAMPLE_API_PREFIX + options.path.join('/'),
|
|
|
|
|
+ sourceType: options.sourceType,
|
|
|
|
|
+ noCache: options.noCache,
|
|
|
|
|
+ refreshCache: options.refreshCache,
|
|
|
|
|
+ silenceErrors: options.silenceErrors,
|
|
|
|
|
+ successCallback: deferred.resolve,
|
|
|
|
|
+ errorCallback: self.assistErrorCallback({
|
|
|
|
|
+ errorCallback: deferred.reject,
|
|
|
|
|
+ silenceErrors: options.silenceErrors
|
|
|
|
|
+ }),
|
|
|
|
|
+ cacheCondition: genericCacheCondition
|
|
|
|
|
+ });
|
|
|
|
|
+ return deferred.promise();
|
|
|
|
|
+ };
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* Fetches a navigator entity for the given source and path
|
|
* Fetches a navigator entity for the given source and path
|
|
@@ -1669,7 +1580,7 @@ var ApiHelper = (function () {
|
|
|
*/
|
|
*/
|
|
|
ApiHelper.prototype.fetchNavigatorMetadata = function (options) {
|
|
ApiHelper.prototype.fetchNavigatorMetadata = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
- var promise = $.Deferred();
|
|
|
|
|
|
|
+ var deferred = $.Deferred();
|
|
|
var url = NAV_URLS.FIND_ENTITY;
|
|
var url = NAV_URLS.FIND_ENTITY;
|
|
|
|
|
|
|
|
if (options.path.length === 1) {
|
|
if (options.path.length === 1) {
|
|
@@ -1686,15 +1597,17 @@ var ApiHelper = (function () {
|
|
|
noCache: options.noCache,
|
|
noCache: options.noCache,
|
|
|
refreshCache: options.refreshCache,
|
|
refreshCache: options.refreshCache,
|
|
|
silenceErrors: options.silenceErrors,
|
|
silenceErrors: options.silenceErrors,
|
|
|
- successCallback: promise.resolve,
|
|
|
|
|
|
|
+ successCallback: function (data) {
|
|
|
|
|
+ deferred.resolve(data.entity || data);
|
|
|
|
|
+ },
|
|
|
errorCallback: self.assistErrorCallback({
|
|
errorCallback: self.assistErrorCallback({
|
|
|
- errorCallback: promise.reject,
|
|
|
|
|
|
|
+ errorCallback: deferred.reject,
|
|
|
silenceErrors: options.silenceErrors
|
|
silenceErrors: options.silenceErrors
|
|
|
}),
|
|
}),
|
|
|
cacheCondition: genericCacheCondition
|
|
cacheCondition: genericCacheCondition
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
- return promise;
|
|
|
|
|
|
|
+ return deferred.promise();
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
ApiHelper.prototype.updateNavigatorMetadata = function (options) {
|
|
ApiHelper.prototype.updateNavigatorMetadata = function (options) {
|
|
@@ -1739,6 +1652,8 @@ var ApiHelper = (function () {
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * Deprecated, use DataCatalog.getEntry(...).getSourceDetails()
|
|
|
|
|
+ *
|
|
|
* @param {Object} options
|
|
* @param {Object} options
|
|
|
* @param {string} options.sourceType
|
|
* @param {string} options.sourceType
|
|
|
* @param {Function} options.successCallback
|
|
* @param {Function} options.successCallback
|
|
@@ -1752,7 +1667,7 @@ var ApiHelper = (function () {
|
|
|
* @param {string} options.identifierChain.name
|
|
* @param {string} options.identifierChain.name
|
|
|
* @param {string} options.defaultDatabase
|
|
* @param {string} options.defaultDatabase
|
|
|
*/
|
|
*/
|
|
|
- // TODO: Drop and use fetchSqlMetadata instead
|
|
|
|
|
|
|
+ // TODO: Drop and use DataCatalog.getEntry(...).getSourceDetails() throughout
|
|
|
ApiHelper.prototype.fetchAutocomplete = function (options) {
|
|
ApiHelper.prototype.fetchAutocomplete = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
self.identifierChainToPath(options).done(function (path) {
|
|
self.identifierChainToPath(options).done(function (path) {
|
|
@@ -1765,6 +1680,8 @@ var ApiHelper = (function () {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * Deprecated, use DataCatalog.getEntry(...).getSourceDetails()
|
|
|
|
|
+ *
|
|
|
* @param {Object} options
|
|
* @param {Object} options
|
|
|
* @param {string} options.sourceType
|
|
* @param {string} options.sourceType
|
|
|
* @param {Function} options.successCallback
|
|
* @param {Function} options.successCallback
|
|
@@ -1775,7 +1692,7 @@ var ApiHelper = (function () {
|
|
|
*
|
|
*
|
|
|
* @param {string} options.databaseName
|
|
* @param {string} options.databaseName
|
|
|
*/
|
|
*/
|
|
|
- // TODO: Drop and use fetchSqlMetadata instead
|
|
|
|
|
|
|
+ // TODO: Drop and use DataCatalog.getEntry(...).getSourceDetails() throughout
|
|
|
ApiHelper.prototype.fetchTables = function (options) {
|
|
ApiHelper.prototype.fetchTables = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
return fetchAssistData.bind(self)($.extend({}, options, {
|
|
return fetchAssistData.bind(self)($.extend({}, options, {
|
|
@@ -1786,6 +1703,8 @@ var ApiHelper = (function () {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * Deprecated, use DataCatalog.getEntry(...).getSourceDetails()
|
|
|
|
|
+ *
|
|
|
* @param {Object} options
|
|
* @param {Object} options
|
|
|
* @param {string} options.sourceType
|
|
* @param {string} options.sourceType
|
|
|
* @param {Function} options.successCallback
|
|
* @param {Function} options.successCallback
|
|
@@ -1799,7 +1718,7 @@ var ApiHelper = (function () {
|
|
|
* @param {string} options.tableName
|
|
* @param {string} options.tableName
|
|
|
* @param {string[]} options.fields
|
|
* @param {string[]} options.fields
|
|
|
*/
|
|
*/
|
|
|
- // TODO: Drop and use fetchSqlMetadata instead
|
|
|
|
|
|
|
+ // TODO: Drop and use DataCatalog.getEntry(...).getSourceDetails() throughout
|
|
|
ApiHelper.prototype.fetchFields = function (options) {
|
|
ApiHelper.prototype.fetchFields = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
var fieldPart = options.fields.length > 0 ? "/" + options.fields.join("/") : "";
|
|
var fieldPart = options.fields.length > 0 ? "/" + options.fields.join("/") : "";
|
|
@@ -1811,6 +1730,8 @@ var ApiHelper = (function () {
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
|
|
+ * Deprecated, use DataCatalog.getEntry(...).getSample()
|
|
|
|
|
+ *
|
|
|
* @param {Object} options
|
|
* @param {Object} options
|
|
|
* @param {string} options.sourceType
|
|
* @param {string} options.sourceType
|
|
|
* @param {Function} options.successCallback
|
|
* @param {Function} options.successCallback
|
|
@@ -1823,6 +1744,7 @@ var ApiHelper = (function () {
|
|
|
* @param {string} options.identifierChain.name
|
|
* @param {string} options.identifierChain.name
|
|
|
* @param {string} options.defaultDatabase
|
|
* @param {string} options.defaultDatabase
|
|
|
*/
|
|
*/
|
|
|
|
|
+ // TODO: Drop and use DataCatalog.getEntry(...).getSample() throughout
|
|
|
ApiHelper.prototype.fetchSamples = function (options) {
|
|
ApiHelper.prototype.fetchSamples = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
self.identifierChainToPath(options).done(function (path) {
|
|
self.identifierChainToPath(options).done(function (path) {
|
|
@@ -1848,6 +1770,7 @@ var ApiHelper = (function () {
|
|
|
* @param {string} options.identifierChain.name
|
|
* @param {string} options.identifierChain.name
|
|
|
* @param {string} options.defaultDatabase
|
|
* @param {string} options.defaultDatabase
|
|
|
*/
|
|
*/
|
|
|
|
|
+ // TODO: Add to DataCatalog
|
|
|
ApiHelper.prototype.fetchAnalysis = function (options) {
|
|
ApiHelper.prototype.fetchAnalysis = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
var clonedIdentifierChain = options.identifierChain.concat();
|
|
var clonedIdentifierChain = options.identifierChain.concat();
|
|
@@ -1964,6 +1887,7 @@ var ApiHelper = (function () {
|
|
|
*
|
|
*
|
|
|
* @param {Object[]} options.database
|
|
* @param {Object[]} options.database
|
|
|
*/
|
|
*/
|
|
|
|
|
+ // TODO: Add to DataCatalog
|
|
|
ApiHelper.prototype.fetchNavOptTopTables = function (options) {
|
|
ApiHelper.prototype.fetchNavOptTopTables = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
return self.fetchNavOptCached(NAV_OPT_URLS.TOP_TABLES, options, function (data) {
|
|
return self.fetchNavOptCached(NAV_OPT_URLS.TOP_TABLES, options, function (data) {
|
|
@@ -1985,6 +1909,7 @@ var ApiHelper = (function () {
|
|
|
* @param {string} options.tables.identifierChain.name
|
|
* @param {string} options.tables.identifierChain.name
|
|
|
* @param {string} [options.defaultDatabase]
|
|
* @param {string} [options.defaultDatabase]
|
|
|
*/
|
|
*/
|
|
|
|
|
+ // TODO: Add to DataCatalog
|
|
|
ApiHelper.prototype.fetchNavOptTopColumns = function (options) {
|
|
ApiHelper.prototype.fetchNavOptTopColumns = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
return self.fetchNavOptCached(NAV_OPT_URLS.TOP_COLUMNS, options, function (data) {
|
|
return self.fetchNavOptCached(NAV_OPT_URLS.TOP_COLUMNS, options, function (data) {
|
|
@@ -2158,33 +2083,6 @@ var ApiHelper = (function () {
|
|
|
return promise;
|
|
return promise;
|
|
|
};
|
|
};
|
|
|
|
|
|
|
|
- ApiHelper.prototype.globalSearchAutocomplete = function (options) {
|
|
|
|
|
- var self = this;
|
|
|
|
|
-
|
|
|
|
|
- $.when.apply($, [
|
|
|
|
|
- $.post(INTERACTIVE_SEARCH_API, {
|
|
|
|
|
- query_s: ko.mapping.toJSON(options.query),
|
|
|
|
|
- limit: 5,
|
|
|
|
|
- sources: '["sql", "hdfs", "s3"]'
|
|
|
|
|
- }),
|
|
|
|
|
- $.post(INTERACTIVE_SEARCH_API, {
|
|
|
|
|
- query_s: ko.mapping.toJSON(options.query),
|
|
|
|
|
- limit: 5,
|
|
|
|
|
- sources: '["documents"]'
|
|
|
|
|
- })
|
|
|
|
|
- ]
|
|
|
|
|
- ).done(function (metadata, documents) {
|
|
|
|
|
- if (metadata[0].status === 0 || documents[0].status === 0) {
|
|
|
|
|
- if (documents[0].status === 0) {
|
|
|
|
|
- metadata[0].resultsHuedocuments = documents[0].results;
|
|
|
|
|
- }
|
|
|
|
|
- options.successCallback(metadata[0]);
|
|
|
|
|
- } else {
|
|
|
|
|
- self.assistErrorCallback(options)(metadata);
|
|
|
|
|
- }
|
|
|
|
|
- }).fail(self.assistErrorCallback(options));
|
|
|
|
|
- };
|
|
|
|
|
-
|
|
|
|
|
ApiHelper.prototype.searchEntities = function (options) {
|
|
ApiHelper.prototype.searchEntities = function (options) {
|
|
|
var self = this;
|
|
var self = this;
|
|
|
var deferred = $.Deferred();
|
|
var deferred = $.Deferred();
|