Files
familytree/UI/src/app/shares/utils.ts
T
2025-10-27 16:23:06 +11:00

219 lines
6.5 KiB
TypeScript

import moment from "moment";
import { Person, User, userRole } from "../models"
import { TreeNode } from "primeng/api";
type MyProName = "fatherId" | "motherId";
export class Utils {
static toBase64 (file:any)
{
let promise = new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => resolve(reader.result);
reader.onerror = reject;
});
return promise;
}
static getBase64(file: any) {
let result: any;
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function () {
result = reader.result;
console.log('tobase64 ', result);
};
reader.onerror = function (error) {
console.log('Error: ', error);
};
}
static getCurrentUser(): User {
let myUser = new User();
myUser.username = "";
const obj = sessionStorage.getItem('currentUser');
//const obj = localStorage.getItem('currentUser');
if (obj != undefined) {
let user = JSON.parse(obj);
myUser.firstName = user.firstName;
myUser.id = user.id;
myUser.lastName = user.lastName;
myUser.role = user.role;
myUser.username = user.username;
myUser.email = user.email;
myUser.token = user.token;
myUser.phone = user.phone;
myUser.department = user.department;
myUser.position = user.position;
myUser.managerEmail = user.managerEmail;
}
// console.log("[util] getcurrentUser",myUser);
return myUser;
}
static setLocalStore(user: User): void {
if (user && user.token) {
// store user details and jwt token in local storage to keep user logged in between page refreshes
// localStorage.setItem('currentUser', JSON.stringify(user));
sessionStorage.setItem('currentUser', JSON.stringify(user));
}
}
static getLastMonth(): Date {
let result = moment().subtract(1, 'months').toDate();
result.setDate(1);
return result;
}
static getHome(): string {
let result ="";
const user = this.getCurrentUser();
const urole = user.role;
if (urole == userRole.Accounting)
{
result = "staffworkw";
}
else if (urole == userRole.Admin)
{
result = "staff";
}
else if (urole == userRole.ServiceManager)
{
result = "servicetask";
}
else if (urole == userRole.WorkShop)
{
result = "staffwork";
}
else if (urole == userRole.Normal)
{
result = "staff";
}
return result;
}
static getTimeStr(val:Date): string {
let result = "00:00";
if (val)
{
const hh = val.getHours();
const min = val.getMinutes();
if (hh < 10)
result = '0' + hh.toString();
else
result = hh.toString();
if (min < 10)
result = result + ":0" + min.toString();
else
result = result + ":" + min.toString();
}
return result;
}
static canRunReport(role: number): boolean {
let result = false;
if (role == userRole.Admin)
result = true;
return result;
}
static getUserRole(user: User): number {
/*
sysadmin
request_manager
ward_user
*/
let ret = 0;
if (user) {
// console.log("utils user", user);
if (user.role)
ret = user.role;
}
return ret;
}
static getIsAuth(): boolean {
const user = this.getCurrentUser();
if (user.username != "") {
return true;
}
else
return false;
}
static getAdminRoleName(): number {
return userRole.Admin;
}
static clearCurrentUser(): void {
sessionStorage.clear();
//localStorage.clear();
}
static formatNode(item:Person): TreeNode
{
let label = item.lastName + " " + item.firstName;
let key = item.id.toString();
let node: TreeNode ={
key,
label,
type: 'person',
data: {title: item.title, name: label, image: item.image},
icon: 'pi pi-user'
};
return node;
}
static getFileExtension(filename: string): string {
const lastDotIndex = filename.lastIndexOf('.');
if (lastDotIndex !== -1 && lastDotIndex < filename.length - 1) { // Ensure a dot exists and is not the last character
return filename.substring(lastDotIndex + 1);
}
return ''; // No extension found
}
static getChildForParentId(proName: MyProName , pid: number,childressNodes: Person[]): TreeNode[] {
let result: TreeNode[] =[];
let tree_node_child: TreeNode[];
let node:TreeNode;
let item: Person;
const children = childressNodes.filter(x => x[proName] == pid);
for (let c = 0; c < children.length; c++)
{
item = children[c];
node = this.formatNode(item);
tree_node_child = this.getChildForParentId(proName,item.id, childressNodes);
console.log("getChildForParentId childressNodes item tree_node_child ", childressNodes, item, tree_node_child);
if (tree_node_child.length > 0)
{
node.expanded = true;
node.children = tree_node_child;
}
result.push(node);
}
return result;
}
static populateNode(proName: MyProName, familyList: Person[]): TreeNode[] {
let familyTree: TreeNode[] = [];
let node:TreeNode;
let child_nodes:TreeNode[];
let childressNodes:Person[];
let item: Person;
const topNodes = familyList.filter(x => x[proName]! < 1);
childressNodes = familyList.filter(x => x[proName]! > 0);
for(let i = 0; i < topNodes.length; i++)
{
item = topNodes[i];
node = Utils.formatNode(item);
child_nodes = this.getChildForParentId(proName, item.id,childressNodes);
console.log("populate getchildrenForParentId", child_nodes);
if (child_nodes.length > 0)
{
node.expanded = true;
node.children = child_nodes;
}
familyTree.push(node);
//childressNodes =
}
return familyTree;
}
}