dtable-utils
Version:
dtable common utils
60 lines (56 loc) • 2.18 kB
JavaScript
/**
* Get collaborator by email
* @param {array} collaborators e.g. [{ email, name, ... }, ...]
* @param {string} email
* @returns collaborator, object
*/
var getCollaborator = function getCollaborator(collaborators, email) {
if (!Array.isArray(collaborators) || !email) return null;
return collaborators.find(function (collaborator) {
return collaborator.email === email;
});
};
/**
* Get collaborators name list of given emails
* @param {array} emails e.g. ['email', ...]
* @param {array} collaborators e.g. [{ email, name, ... }, ...]
* @returns name list, array. e.g. ['name1', 'name2']
*/
var getCollaboratorsNames = function getCollaboratorsNames(emails, collaborators) {
if (!Array.isArray(emails) || !Array.isArray(collaborators)) {
return [];
}
var emailCollaboratorMap = {};
collaborators.forEach(function (collaborator) {
emailCollaboratorMap[collaborator.email] = collaborator;
});
return emails.map(function (email) {
var collaborator = emailCollaboratorMap[email];
return collaborator && collaborator.name;
}).filter(Boolean);
};
/**
* Get concatenated collaborators names of given emails.
* @param {array} collaborators e.g. [{ email, name, ... }, ...]
* @param {array} emails e.g. ['email', ...]
* @returns concatenated collaborators names, string. e.g. 'name1, name2'
*/
var getCollaboratorsName = function getCollaboratorsName(collaborators, emails) {
var collaboratorsNames = getCollaboratorsNames(emails, collaborators);
if (!Array.isArray(collaboratorsNames) || collaboratorsNames.length === 0) return '';
return collaboratorsNames.join(', ');
};
var getCollaboratorEmailsByNames = function getCollaboratorEmailsByNames(names, collaborators) {
if (!Array.isArray(names) || !Array.isArray(collaborators)) return [];
var emails = [];
names.forEach(function (name) {
var collaborator = collaborators.find(function (collaboratorItem) {
return collaboratorItem.name === name;
});
if (collaborator) {
emails.push(collaborator.email);
}
});
return emails;
};
export { getCollaborator, getCollaboratorEmailsByNames, getCollaboratorsName, getCollaboratorsNames };