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
2ad457f5
Commit
2ad457f5
authored
Sep 02, 2025
by
Ooh-Ao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
s
parent
cc462cc0
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
69 additions
and
109 deletions
+69
-109
dashboard-management.component.ts
...ge/dashboard-management/dashboard-management.component.ts
+1
-2
dashboard-viewer.component.html
...l-manage/dashboard-viewer/dashboard-viewer.component.html
+3
-2
dashboard-viewer.component.ts
...tal-manage/dashboard-viewer/dashboard-viewer.component.ts
+30
-83
dashboard-state.service.ts
src/app/portal-manage/services/dashboard-state.service.ts
+30
-22
combo-chart-widget.component.ts
...idgets/combo-chart-widget/combo-chart-widget.component.ts
+1
-0
filled-map-widget.component.ts
.../widgets/filled-map-widget/filled-map-widget.component.ts
+1
-0
gauge-chart-widget.component.ts
...idgets/gauge-chart-widget/gauge-chart-widget.component.ts
+1
-0
scatter-bubble-chart-widget.component.ts
...ble-chart-widget/scatter-bubble-chart-widget.component.ts
+1
-0
treemap-widget.component.ts
...manage/widgets/treemap-widget/treemap-widget.component.ts
+1
-0
No files found.
src/app/portal-manage/dashboard-management/dashboard-management.component.ts
View file @
2ad457f5
...
...
@@ -744,8 +744,7 @@ export class DashboardManagementComponent implements OnInit {
this
.
dashboardData
.
datasetId
=
dataset
.
itemId
;
this
.
dashboardData
.
templateId
=
dataset
.
templateId
;
this
.
dashboardData
.
fileName
=
dataset
.
fileName
;
this
.
dashboardStateService
.
selectDataset
(
dataset
);
// this.getDatasetByTemplate(dataset);
this
.
dashboardStateService
.
selectDataset
(
dataset
.
itemId
);
}
}
...
...
src/app/portal-manage/dashboard-viewer/dashboard-viewer.component.html
View file @
2ad457f5
<div
*
ngIf=
"errorMessage"
class=
"alert alert-danger"
>
{{errorMessage}}
</div>
<div
class=
"dashboard-viewer-container"
>
<div
*
ngIf=
"dashboardData"
class=
"dashboard-viewer-container p-4"
>
<h1
class=
"text-2xl font-bold mb-4 text-gray-800"
>
{{ dashboardData.thName }}
</h1>
<div
class=
"control-section"
>
<ejs-dashboardlayout
id=
'dashboard_viewer'
#
viewerLayout
[
cellSpacing
]="
cellSpacing
"
[
panels
]="
panels
"
[
columns
]="
6
"
[
allowResizing
]="
false
"
[
allowDragging
]="
false
"
>
<e-panels>
<e-panel
*
ngFor=
"let panel of panels"
[
row
]="
panel
.
row
"
[
col
]="
panel
.
col
"
[
sizeX
]="
panel
.
sizeX
"
[
sizeY
]="
panel
.
sizeY
"
[
id
]="
panel
.
id
"
>
<ng-template
#
header
>
<div
class=
"
p-2 bg-white border-b border-gray-200 text-gray-700 font-semibold
flex justify-between items-center"
>
<div
class=
"
e-panel-header
flex justify-between items-center"
>
<span>
{{panel.header}}
</span>
</div>
</ng-template>
...
...
src/app/portal-manage/dashboard-viewer/dashboard-viewer.component.ts
View file @
2ad457f5
This diff is collapsed.
Click to expand it.
src/app/portal-manage/services/dashboard-state.service.ts
View file @
2ad457f5
import
{
Injectable
}
from
'@angular/core'
;
import
{
BehaviorSubject
,
Observable
,
of
}
from
'rxjs'
;
import
{
switchMap
,
map
,
shareReplay
}
from
'rxjs/operators'
;
import
{
switchMap
,
map
,
shareReplay
,
tap
}
from
'rxjs/operators'
;
import
{
DatasetService
}
from
'./dataset.service'
;
import
{
HttpClient
}
from
'@angular/common/http'
;
import
{
DatasetModel
}
from
'../models/widgets.model'
;
...
...
@@ -14,35 +14,43 @@ export interface SelectedDataset {
providedIn
:
'root'
})
export
class
DashboardStateService
{
private
selectedDatasetId
=
new
BehaviorSubject
<
DatasetModel
|
null
>
(
null
);
private
selectedDatasetId
=
new
BehaviorSubject
<
string
|
null
>
(
null
);
public
selectedDataset$
:
Observable
<
SelectedDataset
|
null
>
;
constructor
(
private
datasetService
:
DatasetService
,
private
http
:
HttpClient
)
{
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
;
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
})
);
switchMap
(
id
=>
{
if
(
!
id
)
{
return
of
(
null
);
}
return
of
(
null
);
// No dataset ID selected
// First, get all datasets to find the selected one's details
return
this
.
datasetService
.
getDatasets
().
pipe
(
switchMap
(
datasets
=>
{
const
selected
=
datasets
.
find
(
d
=>
d
.
itemId
===
id
);
if
(
selected
)
{
// Now fetch the actual data using templateId and fileName
return
this
.
datasetService
.
getDatasetByTemplate
(
selected
.
templateId
,
selected
.
fileName
).
pipe
(
map
(
response
=>
{
const
dataArray
=
Array
.
isArray
(
response
)
?
response
:
(
response
&&
Array
.
isArray
(
response
.
data
))
?
response
.
data
:
null
;
if
(
dataArray
&&
dataArray
.
length
>
0
)
{
return
{
data
:
dataArray
,
columns
:
Object
.
keys
(
dataArray
[
0
])
};
}
return
null
;
})
);
}
return
of
(
null
);
// Dataset with the given ID not found
})
);
}),
shareReplay
(
1
)
// Cache and replay the last emitted value
shareReplay
(
1
)
);
}
selectDataset
(
dataset
:
DatasetMode
l
):
void
{
this
.
selectedDatasetId
.
next
(
dataset
);
selectDataset
(
dataset
Id
:
string
|
nul
l
):
void
{
this
.
selectedDatasetId
.
next
(
dataset
Id
);
}
}
src/app/portal-manage/widgets/combo-chart-widget/combo-chart-widget.component.ts
View file @
2ad457f5
...
...
@@ -49,3 +49,4 @@ export class ComboChartWidgetComponent extends BaseWidgetComponent {
];
}
}
src/app/portal-manage/widgets/filled-map-widget/filled-map-widget.component.ts
View file @
2ad457f5
...
...
@@ -65,3 +65,4 @@ export class FilledMapWidgetComponent extends BaseWidgetComponent {
];
}
}
src/app/portal-manage/widgets/gauge-chart-widget/gauge-chart-widget.component.ts
View file @
2ad457f5
...
...
@@ -64,3 +64,4 @@ export class GaugeChartWidgetComponent extends BaseWidgetComponent {
}];
}
}
src/app/portal-manage/widgets/scatter-bubble-chart-widget/scatter-bubble-chart-widget.component.ts
View file @
2ad457f5
...
...
@@ -58,3 +58,4 @@ export class ScatterBubbleChartWidgetComponent extends BaseWidgetComponent {
this
.
primaryYAxis
=
{
title
:
'Y-Value'
};
}
}
src/app/portal-manage/widgets/treemap-widget/treemap-widget.component.ts
View file @
2ad457f5
...
...
@@ -51,3 +51,4 @@ export class TreemapWidgetComponent extends BaseWidgetComponent {
};
}
}
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