홈 화면 왼쪽 메뉴 구성
1. 다양한 검색 조건으로 직원을 검색
2. 조직을 계층적으로 표시
3. 조직을 확장 및 축소
4. 조직에 포함된 직원의 수를 표시
5. 모바일에서 전화를 바로 걸수 있는 아이콘 표시
6. 편집 아이콘으로 자기 자신의 일부 정보 수정 가능 할 수 있게 구성
[구성 화면]
앱 실행 초기 구성
ColOrgAllList 앱을 실행하면 컬렉션을 만들어 홈 화면에 표시 할 수 있게 구성
// 관리자 그룹인지 확인하여 관리자 그룹이면 왼쪽 메뉴가 나타나게 하고 그렇지 않은 일반 사용자는 왼쪽 메뉴가 나타나지 않게 구성
Set(varGroupMembers,Office365그룹.ListGroupMembers("1eddd77c-c080-4427-a3c7-5908af36d342").value);
// varLeftSize 값이 관리자이면 false로 설정, 관리자가 아니면 true
Set(varLeftSize,IsBlank(LookUp(varGroupMembers,mail=User().Email)));
// ColDepartment 초기화 및 생성
ClearCollect(ColDepartment,AddColumns(OrgDepartment,NewID,ID));
// OrgCompany의 회사 정보를 ColDepartment에 추가
ForAll(
OrgCompany,
Collect(
ColDepartment,
{
No: Text(OrderNo,"00"),
CompanyID : ID,
Name: Name,
Level: 0,
OrderNo: Text(OrderNo,"00") & "000000000000000000000000000000",
Visible:true
}
)
);
// ColEmployee 초기화 및 생성
ClearCollect(ColEmployee,AddColumns(OrgEmployee,NewID,ID));
ForAll(
OrgCompany,
Collect(
ColEmployee,
{
No: Text(OrderNo,"00"),
CompanyID : ID,
Name: Name,
Level: 0,
OrderNo: Text(OrderNo,"00") & "000000000000000000000000000000",
Visible:true
}
)
);
Clear(ColOrgAllList);
ForAll(
OrgCompany,
Collect(ColOrgAllList,
{
Name: Name,
Level: 0,
OrderNo: Text(OrderNo,"00") & "000000000000000000000000000000",
Visible:true,
Type:"Company"
}
)
);
ForAll(
Filter(ColDepartment,Level<>0),
Collect(ColOrgAllList,
{
Company:Company,
Name: Name,
DepartmentID: ID,
Level: Level,
OrderNo: OrderNo,
Visible:true,
Type:"Department"
}
)
);
ForAll(
Filter(ColEmployee,!IsBlank(No) And Level<>0),
Collect(ColOrgAllList,
{
Company:Company,
CompanyID:CompanyID,
Name: Name,
DepartmentID: DepartmentID,
Department:Department,
EmpNo: EmpNo,
EmployeeID:ID,
Level: Level,
No:No,
OrderNo: OrderNo,
Jobtitle : Jobtitle,
Position : Position,
Mail:Mail,
Phone:Phone,
Mobile:Mobile,
ShortNumber:ShortNumber,
Visible:true,
ResignationDate:ResignationDate,
JoinDate:JoinDate,
Specialize:Specialize,
Type:"Employee",
DepartmentNum : 1
}
)
);
ForAll(
Filter(ColEmployee,!IsBlank(No1)),
Collect(ColOrgAllList,
{
Company:Company,
CompanyID:CompanyID,
Name: Name,
DepartmentID: DepartmentID1,
Department:Department1,
EmpNo: EmpNo,
EmployeeID:ID,
Level: Level1,
No:No1,
OrderNo: OrderNo1,
Jobtitle : Jobtitle,
Position : Position,
Mail:Mail,
Phone:Phone,
Mobile:Mobile,
ShortNumber:ShortNumber,
Visible:true,
ResignationDate:ResignationDate,
JoinDate:JoinDate,
Specialize:Specialize,
Type:"Employee",
DepartmentNum : 2
}
)
);
ForAll(
Filter(ColEmployee,!IsBlank(No2)),
Collect(ColOrgAllList,
{
Company:Company,
CompanyID:CompanyID,
Name: Name,
DepartmentID: DepartmentID2,
Department:Department2,
EmpNo: EmpNo,
EmployeeID:ID,
Level: Level2,
No:No2,
OrderNo: OrderNo2,
Jobtitle : Jobtitle,
Position : Position,
Mail:Mail,
Phone:Phone,
Mobile:Mobile,
ShortNumber:ShortNumber,
Visible:true,
ResignationDate:ResignationDate,
JoinDate:JoinDate,
Specialize:Specialize,
Type:"Employee",
DepartmentNum : 3
}
)
);
|
갤러리 Items 속성
Filter(
// ColOrgAllList OrderNo로 정렬 한 값을 기준으로 필터
Sort(ColOrgAllList,OrderNo),
// 조직의 확장 표시를 위해 Visible 값이 True 인 것만 화면에 표시
Visible=true And
// 퇴사자는 화면에 표시 하지 않음
IsBlank(ResignationDate) And
(
// Type이 회사와 부서는 모두 표시
Type="Company" Or Type="Department" Or
// 검색 조건을 이름, 전문분야, 휴대폰, 메일, 소속부서로 설정
Name in Search(ColOrgAllList,HomeSearch.Text,Name).Name Or
Specialize in Search(ColOrgAllList,HomeSearch.Text,Specialize).Specialize Or
Mobile in Search(ColOrgAllList,HomeSearch.Text,Mobile).Mobile Or
Mail in Search(ColOrgAllList,HomeSearch.Text,Mail).Mail Or
Department in Search(ColOrgAllList,HomeSearch.Text,Department).Department
)
)
|
OnSelect 속성
OnSelect = UpdateContext({ itemSelected: true, CurrentItem: ThisItem , editMode:false, newMode:false,deleteMode:false}) |
홈 아이콘 설정
OnSelect 속성
// 클릭하면 조직의 확장 및 축소
UpdateIf(ColOrgAllList,StartsWith(OrderNo,Left(ThisItem.OrderNo,ThisItem.Level * 5 + 2)) And DepartmentID <> ThisItem.DepartmentID,{Visible:!Visible});
UpdateIf(ColOrgAllList,StartsWith(OrderNo,Left(ThisItem.OrderNo,ThisItem.Level * 5 + 2)) And DepartmentID <> ThisItem.DepartmentID And Level > ThisItem.Level + 1,{Visible:false});
UpdateIf(ColOrgAllList,StartsWith(OrderNo,Left(ThisItem.OrderNo,ThisItem.Level * 5 + 2)) And Type="Employee" ,{Visible:!Visible});
UpdateIf(ColOrgAllList,StartsWith(OrderNo,Left(ThisItem.OrderNo,ThisItem.Level * 5 + 2)) And Type="Employee" And Level > ThisItem.Level + 1,{Visible:false});
|
아이콘 위치 X 속성
Level을 기준으로 아이콘의 위치를 설정
X = ThisItem.Level * 20
|
아이콘 모양
회사와 부서 직원의 아이콘 모양을 다르게 표현 한다.
Icon = If(ThisItem.Type="Company",Icon.OfficeBuilding,ThisItem.Type="Department",Icon.People,Icon.Person) |
조직에 포함된 직원의 수를 표시
하위 조직에 포함된 직원 수를 나타낸다.
위치를 조직 아이콘 좌측 하단에 표시
Text 속성
If(
// 직원이 아닌 경우
ThisItem.Type<>"Employee",If(
// 회사에 포함된 직원으로 퇴사자 제외
ThisItem.Type="Company",CountRows(Filter(ColEmployee,IsBlank(ResignationDate) And StartsWith(OrderNo,Left(ThisItem.OrderNo,ThisItem.Level*5+2))))-1,
// 소속 부서에 포함된 직원으로 퇴사자 제외
CountRows(Filter(Filter(ColOrgAllList,Type="Employee" And IsBlank(ResignationDate)),StartsWith(OrderNo,Left(ThisItem.OrderNo,ThisItem.Level*5+2))))))
|
위치 설정
아이콘 왼쪽 하단에 위치
X = HomeIcon.X + 27
|
글꼴 크기 8, 여백으로 위치 지정
아이콘 설정
모바일 아이콘
Icon = Icon.Mobile
OnSelect = Launch("Tel:"&ThisItem.Mobile)
HoverFill = ColorFade(RGBA(248, 248, 255, 0.2), -30%)
// 직원일 경우 표시 Visible = ThisItem.Type="Employee"
|
전화 아이콘 위치는 위의 모바일 아이콘 위치를 기준으로 설정
Icon = Icon.Phone
OnSelect = Launch("Tel:"&ThisItem.Phone) HoverFill = ColorFade(RGBA(248, 248, 255, 0.2), -30%)
// 직원일 경우 표시 및 모바일 화면이 작을 경우 화면에 나타나지 않게 구성 Visible = And(ThisItem.Type="Employee",Parent.Width>300)
|
메일 아이콘
Icon = Icon.Mail
X = PhoneIcon_1.X - Self.Width OnSelect = Launch("Mailto:"&ThisItem.Mail)
HoverFill = ColorFade(RGBA(248, 248, 255, 0.2), -30%)
And(ThisItem.Type="Employee",Parent.Width>300)
// 직원일 경우 표시 및 모바일 화면이 작을 경우 화면에 나타나지 않게 구성 Visible = And(ThisItem.Type="Employee",Parent.Width>300)
|
자기 자신의 정보 수정
왼쪽 메뉴의 편집 버튼을 눌렀을 경우
2번 화면 구성 및 설정은 13. 홈 화면 (상세 화면) 에서 표시하기 위한 기본 설정
OnSelect = UpdateContext({editMode: true});
|
댓글