Initial commit: Angular frontend and Expressjs backend

This commit is contained in:
chamikaJ
2024-05-17 09:32:30 +05:30
parent eb0a0d77d6
commit 298ca6beeb
3548 changed files with 193558 additions and 3 deletions

View File

@@ -0,0 +1,75 @@
import {ITaskAssignmentModelProject, ITaskAssignmentModelTeam} from "../interfaces/task-assignments-model";
import {isLocalServer} from "../shared/utils";
export function mapMembersWithAnd(members: string) {
const $members = members.split(",").map(m => m.trim());
if ($members.length > 1) {
const last = $members.pop();
const end = last ? ` and ${last}` : "";
return `${$members.join(", ")}${end}`;
}
return "";
}
export function getBaseUrl() {
if (isLocalServer()) return `http://${process.env.HOSTNAME}`;
return `https://${process.env.HOSTNAME}`;
}
function mapMembers(project: ITaskAssignmentModelProject) {
for (const task of project.tasks || []) {
if (task.members)
task.members = mapMembersWithAnd(task.members);
}
}
function updateUrls(project: ITaskAssignmentModelProject) {
project.url = `${getBaseUrl()}/worklenz/projects/${project.id}`;
if (project.tasks) {
project.tasks = project.tasks.map(task => {
if (task.id)
task.url = `${project.url}?task=${task.id}`;
return task;
});
}
}
export function mapTeams(data?: ITaskAssignmentModelTeam[]) {
if (!data) return [];
const result = [];
for (const item of data || []) {
const projects = item.projects?.filter(project => project.tasks?.length);
for (const project of projects || []) {
if (project.id) {
mapMembers(project);
updateUrls(project);
}
}
if (projects?.length) {
item.projects = projects;
result.push(item);
}
}
return result;
}
export function mapProjects(data?: ITaskAssignmentModelTeam[]) {
if (!data) return [];
const result = [];
for (const item of data || []) {
const projects = item.projects?.filter(project => project.tasks?.length);
for (const project of projects || []) {
if (project.id) {
mapMembers(project);
updateUrls(project);
result.push(project);
}
}
}
return result;
}