Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
portal-apps-manage
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
angular
portal-apps-manage
Commits
2176373c
Commit
2176373c
authored
Sep 02, 2025
by
Ooh-Ao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ดึงข้อมูล
parent
469b489b
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
123 additions
and
28 deletions
+123
-28
dashboard-management.component.ts
...ge/dashboard-management/dashboard-management.component.ts
+95
-8
dashboard-viewer.component.ts
...tal-manage/dashboard-viewer/dashboard-viewer.component.ts
+1
-1
dashboard-state.service.ts
src/app/portal-manage/services/dashboard-state.service.ts
+25
-17
dataset.service.ts
src/app/portal-manage/services/dataset.service.ts
+2
-2
No files found.
src/app/portal-manage/dashboard-management/dashboard-management.component.ts
View file @
2176373c
...
...
@@ -594,7 +594,7 @@ export class DashboardManagementComponent implements OnInit {
this
.
dashboardData
=
dashboard
;
this
.
panels
=
this
.
mapWidgetsToPanels
(
dashboard
.
widgets
||
[]);
if
(
dashboard
.
datasetId
)
{
this
.
dashboardStateService
.
selectDataset
(
dashboard
.
datasetId
);
// this.dashboardStateService.selectDataset(this.dashboardData
);
}
}
});
...
...
@@ -739,17 +739,104 @@ export class DashboardManagementComponent implements OnInit {
}
}
onDatasetSelected
(
dataset
Id
:
string
):
void
{
console
.
log
(
'Dataset selected:'
,
dataset
Id
);
// Added for debugging/clarity
onDatasetSelected
(
dataset
:
DatasetModel
):
void
{
console
.
log
(
'Dataset selected:'
,
dataset
);
// Added for debugging/clarity
if
(
this
.
dashboardData
)
{
this
.
dashboardData
.
datasetId
=
datasetId
;
this
.
dashboardStateService
.
selectDataset
(
dataset
Id
);
this
.
getDatasetByTemplate
(
dataset
Id
);
this
.
dashboardData
.
datasetId
=
dataset
.
item
Id
;
this
.
dashboardStateService
.
selectDataset
(
dataset
);
this
.
getDatasetByTemplate
(
dataset
);
}
}
getDatasetByTemplate
(
datasetId
:
string
):
void
{
this
.
datasetService
.
getDatasetByTemplate
(
datasetId
).
subscribe
(
dataset
=>
{
getDatasetByTemplate
(
dataset
:
DatasetModel
):
void
{
this
.
datasetService
.
getDatasetByTemplate
(
dataset
.
templateId
,
dataset
.
fileName
).
subscribe
(
dataset
=>
{
if
(
dataset
&&
this
.
dashboardData
)
{
// Update the config of each widget with the new data
this
.
dashboardData
.
widgets
.
forEach
(
widget
=>
{
if
(
widget
.
config
)
{
widget
.
config
.
source
.
data
=
dataset
;
// Assuming the dataset is the data source
}
});
// Remap panels to reflect the changes
this
.
panels
=
this
.
mapWidgetsToPanels
(
this
.
dashboardData
.
widgets
);
}
},
(
error
)
=>
{
console
.
error
(
'Error fetching dataset by template:'
,
error
);
let
dataset
=
[
{
"id"
:
"E001"
,
"name"
:
"Alice Smith"
,
"department"
:
"Sales"
,
"salary"
:
60000
,
"hireDate"
:
"2020-01-15"
,
"performanceScore"
:
85
,
"gender"
:
"Female"
,
"age"
:
30
,
"salesAmount"
:
120000
,
"region"
:
"North"
},
{
"id"
:
"E002"
,
"name"
:
"Bob Johnson"
,
"department"
:
"Marketing"
,
"salary"
:
55000
,
"hireDate"
:
"2019-03-20"
,
"performanceScore"
:
92
,
"gender"
:
"Male"
,
"age"
:
35
,
"salesAmount"
:
0
,
"region"
:
"East"
},
{
"id"
:
"E003"
,
"name"
:
"Charlie Brown"
,
"department"
:
"Sales"
,
"salary"
:
62000
,
"hireDate"
:
"2021-07-01"
,
"performanceScore"
:
78
,
"gender"
:
"Male"
,
"age"
:
28
,
"salesAmount"
:
110000
,
"region"
:
"West"
},
{
"id"
:
"E004"
,
"name"
:
"Diana Prince"
,
"department"
:
"HR"
,
"salary"
:
70000
,
"hireDate"
:
"2018-11-10"
,
"performanceScore"
:
95
,
"gender"
:
"Female"
,
"age"
:
40
,
"salesAmount"
:
0
,
"region"
:
"South"
},
{
"id"
:
"E005"
,
"name"
:
"Eve Adams"
,
"department"
:
"Marketing"
,
"salary"
:
58000
,
"hireDate"
:
"2022-05-25"
,
"performanceScore"
:
88
,
"gender"
:
"Female"
,
"age"
:
25
,
"salesAmount"
:
0
,
"region"
:
"North"
},
{
"id"
:
"E006"
,
"name"
:
"Frank White"
,
"department"
:
"Sales"
,
"salary"
:
65000
,
"hireDate"
:
"2019-09-01"
,
"performanceScore"
:
90
,
"gender"
:
"Male"
,
"age"
:
32
,
"salesAmount"
:
130000
,
"region"
:
"East"
}
]
if
(
dataset
&&
this
.
dashboardData
)
{
// Update the config of each widget with the new data
this
.
dashboardData
.
widgets
.
forEach
(
widget
=>
{
...
...
src/app/portal-manage/dashboard-viewer/dashboard-viewer.component.ts
View file @
2176373c
...
...
@@ -156,7 +156,7 @@ export class DashboardViewerComponent implements OnInit {
this
.
dashboardName
=
dashboard
.
thName
;
if
(
dashboard
.
datasetId
)
{
this
.
dashboardStateService
.
selectDataset
(
dashboard
.
datasetId
);
//
this.dashboardStateService.selectDataset(dashboard.datasetId);
}
// Process widgets and fetch data if necessary
...
...
src/app/portal-manage/services/dashboard-state.service.ts
View file @
2176373c
import
{
Injectable
}
from
'@angular/core'
;
import
{
BehaviorSubject
,
Observable
,
of
}
from
'rxjs'
;
import
{
switchMap
,
map
}
from
'rxjs/operators'
;
import
{
switchMap
,
map
,
shareReplay
}
from
'rxjs/operators'
;
import
{
DatasetService
}
from
'./dataset.service'
;
import
{
HttpClient
}
from
'@angular/common/http'
;
import
{
DatasetModel
}
from
'../models/widgets.model'
;
...
...
@@ -14,27 +14,35 @@ export interface SelectedDataset {
providedIn
:
'root'
})
export
class
DashboardStateService
{
private
selectedDatasetId
=
new
BehaviorSubject
<
string
|
null
>
(
null
);
private
selectedDatasetId
=
new
BehaviorSubject
<
DatasetModel
|
null
>
(
null
);
public
selectedDataset$
:
Observable
<
SelectedDataset
|
null
>
;
constructor
(
private
datasetService
:
DatasetService
,
private
http
:
HttpClient
)
{
// this.selectedDataset$ = this.selectedDatasetId.pipe(
// switchMap(id => {
// if (id) {
// console.log('Selected dataset ID:', id); // Log selected dataset ID
// return this.datasetService.getDatasetByTemplate(id).pipe(
// switchMap((dataset: DatasetModel | undefined) => {
this
.
selectedDataset$
=
this
.
selectedDatasetId
.
pipe
(
switchMap
(
dataset
=>
{
if
(
dataset
)
{
return
this
.
datasetService
.
getDatasetByTemplate
(
dataset
.
templateId
,
dataset
.
fileName
).
pipe
(
map
(
response
=>
{
// The API might return an array directly, or an object with a 'data' property.
const
dataArray
=
Array
.
isArray
(
response
)
?
response
:
(
response
&&
Array
.
isArray
(
response
.
data
))
?
response
.
data
:
null
;
// return of(null);
// })
// );
// }
// return of(null);
// })
// );
if
(
dataArray
&&
dataArray
.
length
>
0
)
{
return
{
data
:
dataArray
,
columns
:
Object
.
keys
(
dataArray
[
0
])
};
}
return
null
;
// Return null if data is not in the expected format
})
);
}
return
of
(
null
);
// No dataset ID selected
}),
shareReplay
(
1
)
// Cache and replay the last emitted value
);
}
selectDataset
(
dataset
Id
:
string
):
void
{
this
.
selectedDatasetId
.
next
(
dataset
Id
);
selectDataset
(
dataset
:
DatasetModel
):
void
{
this
.
selectedDatasetId
.
next
(
dataset
);
}
}
src/app/portal-manage/services/dataset.service.ts
View file @
2176373c
...
...
@@ -28,8 +28,8 @@ export class DatasetService {
return
this
.
http
.
get
<
DatasetModel
[]
>
(
'https://portal.myhr.co.th/api/template-file/menuitem/mini/lists?companyid=DEMO'
);
}
getDatasetByTemplate
(
id
:
string
):
Observable
<
DatasetModel
|
undefined
>
{
getDatasetByTemplate
(
templateId
:
string
,
fileName
:
string
):
Observable
<
any
>
{
// return this.http.get<DatasetModel>(`https://portal.myhr.co.th/api/template-file/dataset/${id}`);
return
this
.
http
.
get
<
DatasetModel
>
(
'https://portal.myhr.co.th/api/template-file/dataset/3/5D5TITDVNH.xlsm?companyid=DEMO'
)
return
this
.
http
.
get
<
any
>
(
`https://portal.myhr.co.th/api/template-file/dataset/
${
templateId
}
/
${
fileName
}
?companyid=DEMO`
)
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment