skul
Advanced tools
Comparing version 0.6.0 to 0.6.1
@@ -104,2 +104,7 @@ /* | ||
////// TODO : REFACTOR AND FIX BUGS (RELATIONSHIP ARE NOT CHECKED IF NO DISPLAYED KEYS IN THE CURRENT MODEL | ||
// Get displayable keys | ||
@@ -106,0 +111,0 @@ var orderby = options.orderby; |
@@ -45,71 +45,50 @@ /** | ||
var displayableKeys = this.getDisplayableKeys(params, true); | ||
var structureColumns = this.getStructureColumns(); | ||
var hasManyRelationshipsKeys = this.getRelationshipKeys(['hasMany', 'hasManyCustom', 'hasManyThrough']); | ||
var relationshipsKeys = this.getRelationshipKeys(); | ||
var virtualsKeys = this.getVirtualKeys(); | ||
var customsKeys = this.getCustomKeys(); | ||
var asyncQueue = Promise.resolve(); | ||
// Check if data to parse is an array | ||
if(!isArray) { | ||
dataToParse = [ dataToParse ]; | ||
} | ||
if(!isArray) dataToParse = [ dataToParse ]; | ||
// Only hide keys if displayableKeys != null | ||
if(displayableKeys) { | ||
// Transform data | ||
_.each(dataToParse, function(dataItem) { | ||
_.each(dataItem, function(dataValue, dataKey) { | ||
// Transform data | ||
_.each(dataToParse, function(dataItem) { | ||
_.each(dataItem, function(dataValue, dataKey) { | ||
// Delete if not displayable | ||
if(displayableKeys && !_.contains(displayableKeys, dataKey)) { | ||
delete dataItem[dataKey]; | ||
} | ||
if ( | ||
(_.contains(structureColumns, dataKey) && !_.contains(displayableKeys, dataKey)) | ||
|| (_.contains(virtualsKeys, dataKey) && !_.contains(displayableKeys, dataKey)) | ||
|| (_.contains(customsKeys, dataKey) && !_.contains(displayableKeys, dataKey)) | ||
) { | ||
delete dataItem[dataKey]; | ||
} else if (_.contains(hasManyRelationshipsKeys, dataKey) || _.contains(relationshipsKeys, dataKey)) { | ||
if (!_.contains(displayableKeys, dataKey)) delete dataItem[dataKey]; | ||
else if (dataItem[dataKey] != null && typeof dataItem[dataKey] === 'object') { | ||
// If relationship | ||
else if(_.contains(relationshipsKeys, dataKey) && dataItem[dataKey] !== null && typeof dataItem[dataKey] === 'object') { | ||
// Data | ||
var relModel = self.getRelationship(dataKey); | ||
var relData = dataItem[dataKey].data || dataItem[dataKey]; | ||
// Set data | ||
var relItem = self.getRelationship(dataKey); | ||
var relModel = objectPath.get(relItem, ['model', '$model']) || objectPath.get(relItem, ['model']) || null; | ||
var relTypeIsOneToMany = _.contains(['hasMany', 'hasManyCustom', 'hasManyThrough'], relItem.type); | ||
var relData = relTypeIsOneToMany ? objectPath.get(dataItem, [dataKey, 'data']) : objectPath.get(dataItem, [dataKey]); | ||
if (relModel && relModel.model) { | ||
if (relModel.model['$model'] && typeof relModel.model['$model'] === 'object') relModel = relModel.model['$model']; | ||
else relModel = relModel.model; | ||
// Stop if no model | ||
if(!relModel) return; | ||
// Add to queue | ||
asyncQueue = asyncQueue | ||
.then(relModel.hideFields.bind(relModel, relData, params)) | ||
.then(function() { | ||
return Promise.resolve(); | ||
}); | ||
} | ||
} | ||
} | ||
}) | ||
// Add to queue | ||
asyncQueue = asyncQueue | ||
.then(relModel.hideFields.bind(relModel, relData, params)) | ||
.then(function() { | ||
return Promise.resolve(); | ||
}); | ||
} | ||
}); | ||
} | ||
}); | ||
// Add to queue | ||
asyncQueue = asyncQueue | ||
// Run queue | ||
return ( | ||
asyncQueue | ||
.then(function() { | ||
if(isArray) return Promise.resolve(dataToParse); | ||
else return Promise.resolve(dataToParse[0]); | ||
}) | ||
); | ||
// Return data | ||
if(isArray) { | ||
return Promise.resolve(dataToParse); | ||
} else { | ||
return Promise.resolve(dataToParse[0]); | ||
} | ||
}); | ||
// Return async queue | ||
return asyncQueue; | ||
}; | ||
@@ -116,0 +95,0 @@ |
{ | ||
"name": "skul", | ||
"description": "SKuL - SQL query manager", | ||
"version": "0.6.0", | ||
"version": "0.6.1", | ||
"author": "Paul Duthoit <duthoit.paul@gmail.com>", | ||
@@ -6,0 +6,0 @@ "homepage": "http://skul.io/", |
193110
30
5714