Initial Commit ...
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,78 @@
|
||||
:host {
|
||||
--avatar-size: 40px;
|
||||
}
|
||||
|
||||
.x-header {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
.v-dto-field {
|
||||
width: 100%;
|
||||
display: block;
|
||||
margin: {
|
||||
top: 8px;
|
||||
bottom: 8px;
|
||||
}
|
||||
}
|
||||
|
||||
.v-user {
|
||||
width: 100%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.v-user-wrapper {
|
||||
padding: 6px;
|
||||
}
|
||||
|
||||
.v-avatar-image {
|
||||
//
|
||||
width: var(--avatar-size);
|
||||
height: var(--avatar-size);
|
||||
|
||||
//
|
||||
clip-path: circle();
|
||||
}
|
||||
|
||||
.v-user-full-name,
|
||||
.v-user-friendship-state {
|
||||
//
|
||||
margin: {
|
||||
left: 6px;
|
||||
right: 6px;
|
||||
}
|
||||
}
|
||||
|
||||
.v-user-role,
|
||||
.v-user-friendship-state {
|
||||
font-size: xx-small;
|
||||
}
|
||||
|
||||
.v-user-info-container {
|
||||
//
|
||||
width: 100%;
|
||||
display: block;
|
||||
padding: {
|
||||
left: 6px;
|
||||
right: 6px;
|
||||
}
|
||||
// height: var(--avatar-size);
|
||||
}
|
||||
|
||||
::ng-deep x-card.v-user-card {
|
||||
.x-avatar {
|
||||
width: var(--avatar-size) !important;
|
||||
height: var(--avatar-size) !important;
|
||||
}
|
||||
}
|
||||
|
||||
:host ::ng-deep .v-user-friendship-container {
|
||||
.x-button {
|
||||
.x-icon {
|
||||
color: inherit !important;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.v-dto-field-value-phoneNumber {
|
||||
direction: ltr;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,254 @@
|
||||
import {
|
||||
toNormalString,
|
||||
isNullOrUndefined,
|
||||
isNullOrEmptyString,
|
||||
XResourceIdentifier,
|
||||
} from 'x-framework-core';
|
||||
import { defaultAvatar, defaultFullName } from './v-user.typings';
|
||||
import { XGender, XUserProfileDto } from 'x-framework-identity-sdk';
|
||||
import { AppResourceIDs } from 'src/app/config/localization.config';
|
||||
import { getTopRoleByRoles, XAvailableRoles } from 'x-mabsut-api-sdk';
|
||||
|
||||
/**
|
||||
* Generate User Full Name ...
|
||||
*
|
||||
* @param user
|
||||
* @returns
|
||||
*/
|
||||
export function getUserFullName(user: XUserProfileDto) {
|
||||
//
|
||||
if (isNullOrUndefined(user)) {
|
||||
return defaultFullName;
|
||||
}
|
||||
|
||||
//
|
||||
return `${user.firstName} ${user.lastName}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get User Avatar URL ...
|
||||
*
|
||||
* @param user
|
||||
* @returns
|
||||
*/
|
||||
export function getUserAvatarURL(user: XUserProfileDto) {
|
||||
//
|
||||
if (isNullOrUndefined(user)) {
|
||||
return defaultAvatar;
|
||||
}
|
||||
|
||||
//
|
||||
return user.avatar || defaultAvatar;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Specified Role Title Resource Id ...
|
||||
*
|
||||
* @param role
|
||||
* @returns
|
||||
*/
|
||||
export function getRoleTitleResourceId(role: XAvailableRoles | string) {
|
||||
//
|
||||
let result: XResourceIdentifier = null;
|
||||
if (isNullOrEmptyString(role)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
const mRole = toNormalString(role);
|
||||
switch (mRole) {
|
||||
//
|
||||
case 'admin':
|
||||
result = AppResourceIDs.admin_role;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'responsible_manager':
|
||||
result = AppResourceIDs.responsible_manager_role;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'journalist':
|
||||
result = AppResourceIDs.journalist_role;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'chief_clerk':
|
||||
result = AppResourceIDs.chief_clerk_role;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'chief_clerk_assistant':
|
||||
result = AppResourceIDs.chief_clerk_assistant_role;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'actuary':
|
||||
result = AppResourceIDs.actuary_role;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'actuary_assistant':
|
||||
result = AppResourceIDs.actuary_assistant_role;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'reporter':
|
||||
result = AppResourceIDs.reporter_role;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'reporter_assistant':
|
||||
result = AppResourceIDs.reporter_assistant_role;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'agent':
|
||||
result = AppResourceIDs.agent_role;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'user':
|
||||
result = AppResourceIDs.user_role;
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve Specified Role Description Resource Id ...
|
||||
*
|
||||
* @param role
|
||||
* @returns
|
||||
*/
|
||||
export function getRoleDescriptionResourceId(role: XAvailableRoles | string) {
|
||||
//
|
||||
let result: XResourceIdentifier = null;
|
||||
if (isNullOrEmptyString(role)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
const mRole = toNormalString(role);
|
||||
switch (mRole) {
|
||||
//
|
||||
case 'admin':
|
||||
result = AppResourceIDs.admin_role_description;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'responsible_manager':
|
||||
result = AppResourceIDs.responsible_manager_role_description;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'journalist':
|
||||
result = AppResourceIDs.journalist_role_description;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'chief_clerk':
|
||||
result = AppResourceIDs.chief_clerk_role_description;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'chief_clerk_assistant':
|
||||
result = AppResourceIDs.chief_clerk_assistant_role_description;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'actuary':
|
||||
result = AppResourceIDs.actuary_role_description;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'actuary_assistant':
|
||||
result = AppResourceIDs.actuary_assistant_role_description;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'reporter':
|
||||
result = AppResourceIDs.reporter_role_description;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'reporter_assistant':
|
||||
result = AppResourceIDs.reporter_assistant_role_description;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'agent':
|
||||
result = AppResourceIDs.agent_role_description;
|
||||
break;
|
||||
|
||||
//
|
||||
case 'user':
|
||||
result = AppResourceIDs.user_role_description;
|
||||
break;
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract User Top Role ...
|
||||
*
|
||||
* @param user
|
||||
* @returns
|
||||
*/
|
||||
export function getUserTopRole(user: XUserProfileDto) {
|
||||
//
|
||||
if (isNullOrUndefined(user)) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
//
|
||||
return getTopRole(user.roles);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract Top Role based on Roles Array ...
|
||||
*
|
||||
* @param roles
|
||||
* @returns
|
||||
*/
|
||||
export function getTopRole(roles: Array<XAvailableRoles | string>) {
|
||||
return getTopRoleByRoles(roles);
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract Gender Resource Id ...
|
||||
*
|
||||
* @param gender
|
||||
* @returns
|
||||
*/
|
||||
export function getGenderResourceId(gender: XGender) {
|
||||
//
|
||||
if (gender === XGender.Male) {
|
||||
return AppResourceIDs.male;
|
||||
} else if (gender === XGender.Female) {
|
||||
return AppResourceIDs.female;
|
||||
}
|
||||
|
||||
//
|
||||
return undefined;
|
||||
}
|
||||
|
||||
/**
|
||||
* Extract User Gender Resource Id ...
|
||||
*
|
||||
* @param user
|
||||
* @returns
|
||||
*/
|
||||
export function getUserGenderResourceId(user: XUserProfileDto) {
|
||||
//
|
||||
if (!user) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
//
|
||||
return getGenderResourceId(user.gender);
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
import {
|
||||
XStandardType,
|
||||
XColorIdentifier,
|
||||
XColorWithBrightness,
|
||||
} from 'x-framework-core';
|
||||
import {
|
||||
VFriendshipEventModel,
|
||||
FriendshipActionsPresentType,
|
||||
FriendshipActionsPresentTypeIdentifier,
|
||||
} from '../v-friendship/v-friendship.typings';
|
||||
import { EventEmitter, Injectable } from '@angular/core';
|
||||
import { XUserProfileDto } from 'x-framework-identity-sdk';
|
||||
import { XSlotName, XSlotNameIdentifier } from 'x-framework-components';
|
||||
import { VBaseDtoContainer } from '../../v-dto/v-dto.typings';
|
||||
|
||||
//
|
||||
//#region Resource and Typings ...
|
||||
export const defaultFullName = '...';
|
||||
export const defaultAvatar = '/assets/image/default-user-image.png';
|
||||
|
||||
/**
|
||||
* Present Types ...
|
||||
*/
|
||||
export enum VUserPresentType {
|
||||
/**
|
||||
* Represent Nothing ...
|
||||
*/
|
||||
AsNone = 'as_none',
|
||||
/**
|
||||
* Represent a User as Form for Add or Update Configured Fields ...
|
||||
*/
|
||||
AsForm = 'as_form',
|
||||
/**
|
||||
* Represent Only Avatar ...
|
||||
*/
|
||||
AsAvatar = 'as_avatar',
|
||||
/**
|
||||
* Represent User Avatar and Full Name ...
|
||||
*/
|
||||
AsInfo = 'as_info',
|
||||
/**
|
||||
* Represent User Info and it's Related Axctions as a Follower ...
|
||||
*/
|
||||
AsFollower = 'as_follower',
|
||||
AsFollowerActions = 'as_follower_actions',
|
||||
/**
|
||||
* Represent User Info and it's Related Axctions as a Following ...
|
||||
*/
|
||||
AsFollowing = 'as_following',
|
||||
AsFollowingActions = 'as_following_actions',
|
||||
/**
|
||||
* Represent a User as it's Profile Summary which contains all
|
||||
* available features ...
|
||||
*/
|
||||
AsProfile = 'as_profile',
|
||||
}
|
||||
|
||||
export type VUserPresentTypeIdentifier = VUserPresentType | string;
|
||||
|
||||
export enum UserProfileTasks {
|
||||
AddUserProfile = 'add_user_profile',
|
||||
UpdateUserProfile = 'update_user_profile',
|
||||
}
|
||||
//#endregion
|
||||
|
||||
//
|
||||
//#region Container ...
|
||||
/**
|
||||
* Contains all available Input/Output(s) default Values ...
|
||||
*/
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
})
|
||||
export class VUserDtoContainer extends VBaseDtoContainer {
|
||||
//
|
||||
readonly userInfoColor: XColorIdentifier = XColorWithBrightness.PrimaryTint;
|
||||
readonly putUserInfoOnCardHeader: boolean = false;
|
||||
|
||||
//
|
||||
readonly avatarSize: number = 40;
|
||||
readonly wrapWithCard: boolean = false;
|
||||
readonly autoStylingSlots: boolean = true;
|
||||
readonly avatarSlot: XSlotNameIdentifier = XSlotName.START;
|
||||
readonly fullNameSlot: XSlotNameIdentifier = XSlotName.CENTER;
|
||||
readonly friendshipActionsSlot: XSlotNameIdentifier = XSlotName.END;
|
||||
readonly friendshipActionFired: EventEmitter<VFriendshipEventModel> =
|
||||
new EventEmitter<VFriendshipEventModel>();
|
||||
|
||||
//
|
||||
readonly showActionsOnProfileView: XStandardType<boolean> = false;
|
||||
readonly friendshipActionsType: FriendshipActionsPresentTypeIdentifier =
|
||||
FriendshipActionsPresentType.AsFAB;
|
||||
|
||||
//
|
||||
readonly canSelectUser = false;
|
||||
}
|
||||
//#endregion
|
||||
Reference in New Issue
Block a user