Strippets.prototype.mapEntitiesToIconMap = function()

in lib/@uncharted/strippets/src/strippets.js [311:349]


Strippets.prototype.mapEntitiesToIconMap = function(data, iconMap) {
    var concatEntities = function(array, item) {
        return array.concat(item.entities);
    };
    var nameAndType = function(entity) {
        return entity.name + '&' + entity.type;
    };
    var toEntityReference = function(entityList) {
        return {
            type: entityList[0].type,
            name: entityList[0].name,
            count: entityList.length,
        };
    };
    // process data
    var allEntities = data.reduce(concatEntities, []);
    var entityGroups = _.groupBy(allEntities, nameAndType);
    var entityReferences = Object.keys(entityGroups)
        .map(function(key) {
            return toEntityReference(entityGroups[key]);
        })
        .sort(function(entityRefA, entityRefB) {
            return entityRefB.count - entityRefA.count;
        });

    entityReferences.forEach(function(entity) {
        var entityAlreadyMapped = _.some(iconMap, function(icon) {
            return icon.type === entity.type && entity.name !== undefined && icon.name === entity.name;
        });
        if (!entityAlreadyMapped) {
            var unusedIcon = _.find(iconMap, function(icon) {
                return icon.type === entity.type && icon.name === undefined && !icon.isDefault;
            });
            if (unusedIcon) {
                unusedIcon.name = entity.name;
            }
        }
    });
};