@dative-gpi/foundation-shared-components 1.0.50 → 1.0.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/FSCard.vue +6 -2
- package/components/FSClickable.vue +6 -9
- package/components/FSDialogRemove.vue +1 -0
- package/components/agenda/FSAgenda.vue +210 -0
- package/components/agenda/FSAgendaDialogCalendar.vue +76 -0
- package/components/agenda/FSAgendaHeader.vue +190 -0
- package/components/agenda/FSAgendaHorizontalEvent.vue +162 -0
- package/components/agenda/FSAgendaHorizontalTimeLineMarker.vue +46 -0
- package/components/agenda/FSAgendaHoursCol.vue +103 -0
- package/components/agenda/FSAgendaHoursRow.vue +124 -0
- package/components/agenda/FSAgendaVerticalEvent.vue +160 -0
- package/components/agenda/FSAgendaVerticalTimeLineMarker.vue +46 -0
- package/components/agenda/FSDayAgenda.vue +200 -0
- package/components/agenda/FSMonthAgenda.vue +258 -0
- package/components/agenda/FSSelectAgendaMode.vue +54 -0
- package/components/agenda/FSWeekAgenda.vue +329 -0
- package/components/fields/FSCommentField.vue +93 -0
- package/components/tiles/FSChartTileUI.vue +116 -0
- package/components/tiles/FSCommentTileUI.vue +149 -0
- package/components/tiles/FSModelTileUI.vue +59 -0
- package/models/agenda.ts +9 -0
- package/models/index.ts +1 -0
- package/package.json +4 -4
- package/styles/components/fs_agenda.scss +32 -0
- package/styles/components/fs_agenda_event.scss +41 -0
- package/styles/components/fs_agenda_hours_col.scss +4 -0
- package/styles/components/fs_agenda_hours_row.scss +13 -0
- package/styles/components/fs_agenda_time_line_marker.scss +19 -0
- package/styles/components/fs_clickable.scss +4 -2
- package/styles/components/fs_dialog.scss +11 -15
- package/styles/components/index.scss +5 -0
- package/tools/alertsTools.ts +54 -0
- package/tools/chartsTools.ts +300 -0
- package/tools/index.ts +2 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<FSClickable
|
|
3
|
+
padding="16px"
|
|
4
|
+
height="196px"
|
|
5
|
+
width="148px"
|
|
6
|
+
:border="false"
|
|
7
|
+
v-bind="$attrs"
|
|
8
|
+
>
|
|
9
|
+
<template
|
|
10
|
+
#default
|
|
11
|
+
>
|
|
12
|
+
<FSCol
|
|
13
|
+
align="center-center"
|
|
14
|
+
>
|
|
15
|
+
<FSImage
|
|
16
|
+
:imageId="imageId"
|
|
17
|
+
width="116px"
|
|
18
|
+
height="116px"
|
|
19
|
+
/>
|
|
20
|
+
<FSSpan
|
|
21
|
+
:lineClamp="2"
|
|
22
|
+
>
|
|
23
|
+
{{ label }}
|
|
24
|
+
</FSSpan>
|
|
25
|
+
</FSCol>
|
|
26
|
+
</template>
|
|
27
|
+
</FSClickable>
|
|
28
|
+
</template>
|
|
29
|
+
|
|
30
|
+
<script lang="ts">
|
|
31
|
+
import { defineComponent, type PropType } from "vue";
|
|
32
|
+
|
|
33
|
+
import FSCol from "../FSCol.vue";
|
|
34
|
+
import FSSpan from "../FSSpan.vue";
|
|
35
|
+
import FSImage from "../FSImage.vue";
|
|
36
|
+
import FSClickable from "../FSClickable.vue";
|
|
37
|
+
|
|
38
|
+
export default defineComponent({
|
|
39
|
+
name: "FSModelTileUI",
|
|
40
|
+
components: {
|
|
41
|
+
FSCol,
|
|
42
|
+
FSSpan,
|
|
43
|
+
FSImage,
|
|
44
|
+
FSClickable,
|
|
45
|
+
},
|
|
46
|
+
props:{
|
|
47
|
+
label: {
|
|
48
|
+
type: String,
|
|
49
|
+
required: false,
|
|
50
|
+
default: null,
|
|
51
|
+
},
|
|
52
|
+
imageId: {
|
|
53
|
+
type: String as PropType<string | null>,
|
|
54
|
+
required: false,
|
|
55
|
+
default: null,
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
</script>
|
package/models/agenda.ts
ADDED
package/models/index.ts
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dative-gpi/foundation-shared-components",
|
|
3
3
|
"sideEffects": false,
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.52",
|
|
5
5
|
"description": "",
|
|
6
6
|
"publishConfig": {
|
|
7
7
|
"access": "public"
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
"author": "",
|
|
11
11
|
"license": "ISC",
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@dative-gpi/foundation-shared-domain": "1.0.
|
|
14
|
-
"@dative-gpi/foundation-shared-services": "1.0.
|
|
13
|
+
"@dative-gpi/foundation-shared-domain": "1.0.52",
|
|
14
|
+
"@dative-gpi/foundation-shared-services": "1.0.52"
|
|
15
15
|
},
|
|
16
16
|
"peerDependencies": {
|
|
17
17
|
"@dative-gpi/bones-ui": "^0.0.75",
|
|
@@ -35,5 +35,5 @@
|
|
|
35
35
|
"sass": "1.71.1",
|
|
36
36
|
"sass-loader": "13.3.2"
|
|
37
37
|
},
|
|
38
|
-
"gitHead": "
|
|
38
|
+
"gitHead": "3f7d88cfca5c1c30336482b58d65c559e4bdd386"
|
|
39
39
|
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
.fs-agenda-view {
|
|
2
|
+
min-height: 0;
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.fs-agenda-label-day-container {
|
|
6
|
+
flex-shrink: 0;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.fs-agenda-label-day {
|
|
10
|
+
border-bottom: 1px solid var(--fs-agenda-label-day-border-bottom-color);
|
|
11
|
+
border-right: 1px solid var(--fs-agenda-label-day-border-right-color);
|
|
12
|
+
min-height: 0px;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.fs-agenda-label-day-now {
|
|
16
|
+
border-bottom: 4px solid var(--fs-clickable-border-color);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.fs-agenda-body {
|
|
20
|
+
position: relative;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.fs-agenda-row-day {
|
|
24
|
+
position: relative;
|
|
25
|
+
border-bottom: 1px solid var(--fs-agenda-row-day-border-bottom-color);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.fs-day-agenda-hour-line {
|
|
29
|
+
border-top: solid 1px var(--fs-day-agenda-hour-line-color);
|
|
30
|
+
width: 100%;
|
|
31
|
+
height: 100%;
|
|
32
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
.fs-agenda-event {
|
|
2
|
+
position: absolute !important;
|
|
3
|
+
left: var(--fs-agenda-event-left);
|
|
4
|
+
top: var(--fs-agenda-event-top);
|
|
5
|
+
|
|
6
|
+
&.fs-agenda-event-past {
|
|
7
|
+
opacity: 0.5;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
>.fs-card {
|
|
11
|
+
border-left: solid 3px var(--fs-clickable-border-color) !important;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.fs-agenda-event .fs-col,
|
|
16
|
+
.fs-agenda-event .fs-row {
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.fs-day-agenda .fs-agenda-event {
|
|
21
|
+
.fs-agenda-event-day-label-container {
|
|
22
|
+
overflow: visible !important;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.fs-week-agenda .fs-agenda-event{
|
|
27
|
+
margin-top: 3px;
|
|
28
|
+
margin-bottom: 3px;
|
|
29
|
+
height: calc(100% - 6px) !important;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.fs-month-agenda .fs-agenda-event {
|
|
33
|
+
margin-top: 2px;
|
|
34
|
+
margin-bottom: 2px;
|
|
35
|
+
height: calc(100% - 4px) !important;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
.fs-agenda-event-current span {
|
|
39
|
+
text-overflow: unset;
|
|
40
|
+
flex-shrink: 0;
|
|
41
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
.fs-agenda-hours-row {
|
|
2
|
+
transform: translateX(calc(-2.4% + 2px));
|
|
3
|
+
}
|
|
4
|
+
|
|
5
|
+
.fs-agenda-hours-row-text {
|
|
6
|
+
padding: 0 2px;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
.fs-agenda-hours-row-marker {
|
|
10
|
+
height: 4px;
|
|
11
|
+
border-right: solid 1px var(--fs-agenda-hours-row-marker-color);
|
|
12
|
+
transform: translateY(-4px);
|
|
13
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
.fs-agenda-horizontal-time-line-marker {
|
|
2
|
+
position: absolute;
|
|
3
|
+
top: 0;
|
|
4
|
+
left: var(--fs-agenda-horizontal-time-line-marker-left);
|
|
5
|
+
width: 2px;
|
|
6
|
+
height: 100%;
|
|
7
|
+
z-index: 1;
|
|
8
|
+
background-color: var(--fs-agenda-horizontal-time-line-marker-color);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.fs-agenda-vertical-time-line-marker {
|
|
12
|
+
position: absolute;
|
|
13
|
+
top: var(--fs-agenda-vertical-time-line-marker-top);
|
|
14
|
+
left: 0;
|
|
15
|
+
width: 100%;
|
|
16
|
+
height: 2px;
|
|
17
|
+
z-index: 1;
|
|
18
|
+
background-color: var(--fs-agenda-vertical-time-line-marker-color);
|
|
19
|
+
}
|
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
border-color: var(--fs-clickable-hover-border-color) !important;
|
|
18
18
|
color: var(--fs-clickable-hover-color) !important;
|
|
19
19
|
|
|
20
|
-
& .fs-
|
|
20
|
+
& .fs-card-clickable {
|
|
21
|
+
transition: background-color 0.28s cubic-bezier(0.4, 0, 0.2, 1);
|
|
21
22
|
background-color: var(--fs-clickable-hover-background-color);
|
|
22
23
|
}
|
|
23
24
|
}
|
|
@@ -27,7 +28,8 @@
|
|
|
27
28
|
border-color: var(--fs-clickable-active-border-color) !important;
|
|
28
29
|
color: var(--fs-clickable-active-color) !important;
|
|
29
30
|
|
|
30
|
-
& .fs-
|
|
31
|
+
& .fs-card-clickable {
|
|
32
|
+
transition: background-color 0.28s cubic-bezier(0.4, 0, 0.2, 1);
|
|
31
33
|
background-color: var(--fs-clickable-active-background-color);
|
|
32
34
|
}
|
|
33
35
|
}
|
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
.fs-dialog-mobile {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
align-self: flex-end;
|
|
8
|
-
}
|
|
1
|
+
.fs-dialog-mobile > .v-overlay__content {
|
|
2
|
+
max-height: calc(100% - 40px) !important;
|
|
3
|
+
max-width: 100% !important;
|
|
4
|
+
width: 100% !important;
|
|
5
|
+
margin: 0 !important;
|
|
6
|
+
align-self: flex-end;
|
|
9
7
|
}
|
|
10
8
|
|
|
11
|
-
.fs-dialog {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
width: fit-content !important;
|
|
17
|
-
}
|
|
9
|
+
.fs-dialog > .v-overlay__content {
|
|
10
|
+
max-height: calc(100vh - 40px) !important;
|
|
11
|
+
max-width: calc(100vw - 40px) !important;
|
|
12
|
+
width: fit-content !important;
|
|
13
|
+
margin: 20px !important;
|
|
18
14
|
}
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
@import "fs_accordion_panel.scss";
|
|
2
|
+
@import "fs_agenda.scss";
|
|
3
|
+
@import "fs_agenda_event.scss";
|
|
4
|
+
@import "fs_agenda_hours_col.scss";
|
|
5
|
+
@import "fs_agenda_hours_row.scss";
|
|
6
|
+
@import "fs_agenda_time_line_marker.scss";
|
|
2
7
|
@import "fs_autocomplete_field.scss";
|
|
3
8
|
@import "fs_base_field.scss";
|
|
4
9
|
@import "fs_breadcrumbs.scss";
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
2
|
+
import { AlertStatus, Criticity } from "@dative-gpi/foundation-shared-domain/enums";
|
|
3
|
+
import { ColorEnum } from "@dative-gpi/foundation-shared-components/models"
|
|
4
|
+
|
|
5
|
+
const { $tr } = useTranslationsProvider();
|
|
6
|
+
|
|
7
|
+
export const AlertTools = {
|
|
8
|
+
statusIcon(value: AlertStatus): string {
|
|
9
|
+
switch (value) {
|
|
10
|
+
case AlertStatus.Pending: return "mdi-timer-outline";
|
|
11
|
+
case AlertStatus.Untriggered: return "mdi-timer-off-outline";
|
|
12
|
+
case AlertStatus.Unresolved: return "mdi-alert-circle-outline";
|
|
13
|
+
case AlertStatus.Resolved: return "mdi-check-circle-outline";
|
|
14
|
+
case AlertStatus.Expired: return "mdi-clock-outline";
|
|
15
|
+
case AlertStatus.Triggered: return "mdi-alert-circle-outline";
|
|
16
|
+
case AlertStatus.Abandoned: return "mdi-cancel"
|
|
17
|
+
default: return "";
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
statusLabel(value: AlertStatus): string {
|
|
21
|
+
switch (value) {
|
|
22
|
+
case AlertStatus.Pending: return $tr("ui.alert.pending", "Pending");
|
|
23
|
+
case AlertStatus.Untriggered: return $tr("ui.alert.untriggered", "Untriggered");
|
|
24
|
+
case AlertStatus.Unresolved: return $tr("ui.alert.unresolved", "Unresolved");
|
|
25
|
+
case AlertStatus.Resolved: return $tr("ui.alert.resolved", "Resolved");
|
|
26
|
+
case AlertStatus.Expired: return $tr("ui.alert.expired", "Expired");
|
|
27
|
+
case AlertStatus.Triggered: return $tr("ui.alert.triggered", "Triggered");
|
|
28
|
+
case AlertStatus.Abandoned: return $tr("ui.alert.abandoned", "Abandoned");
|
|
29
|
+
default: return "";
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
criticityColor(value: Criticity): ColorEnum {
|
|
33
|
+
switch (value) {
|
|
34
|
+
case Criticity.Warning: return ColorEnum.Warning;
|
|
35
|
+
case Criticity.Error: return ColorEnum.Error;
|
|
36
|
+
case Criticity.Information: return ColorEnum.Primary;
|
|
37
|
+
default: return ColorEnum.Light;
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
criticityIcon(value: Criticity): string {
|
|
41
|
+
switch (value) {
|
|
42
|
+
case Criticity.Warning: return "mdi-alert-outline";
|
|
43
|
+
case Criticity.Error: return "mdi-alert-circle-outline";
|
|
44
|
+
default: return "mdi-information-outline";
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
criticityLabel(value: Criticity): string {
|
|
48
|
+
switch (value) {
|
|
49
|
+
case Criticity.Warning: return $tr("ui.alert.warning", "Warning");
|
|
50
|
+
case Criticity.Error: return $tr("ui.alert.error", "Error");
|
|
51
|
+
default: return $tr("ui.alert.information", "Information");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
import { AxisType, ColorSets, SerieType, ChartType, TimeUnit } from "@dative-gpi/foundation-shared-domain/enums";
|
|
2
|
+
|
|
3
|
+
import { serieTypeLabel, getEnumEntries } from "@dative-gpi/foundation-core-components/utils";
|
|
4
|
+
import { useTranslations as useTranslationsProvider } from "@dative-gpi/bones-ui/composables";
|
|
5
|
+
|
|
6
|
+
const { $tr } = useTranslationsProvider();
|
|
7
|
+
|
|
8
|
+
export const chartTypeLabel = (value: ChartType): string => {
|
|
9
|
+
switch (value) {
|
|
10
|
+
case ChartType.Gauge: return $tr("ui.common.gauge", "Gauge");
|
|
11
|
+
case ChartType.Heatmap: return $tr("ui.common.heatmap", "Heatmap");
|
|
12
|
+
case ChartType.Pie: return $tr("ui.common.pie", "Pie");
|
|
13
|
+
case ChartType.ScoreCard: return $tr("ui.common.scorecard", "Scorecard");
|
|
14
|
+
case ChartType.Slider: return $tr("ui.common.slider", "Slider");
|
|
15
|
+
case ChartType.Table: return $tr("ui.common.table", "Table");
|
|
16
|
+
case ChartType.XY: return $tr("ui.common.xy", "XY");
|
|
17
|
+
default: return $tr("ui.common.none", "None");
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export const colorSetLabel = (value: ColorSets | number): string => {
|
|
22
|
+
switch (value) {
|
|
23
|
+
case ColorSets.Default: return $tr("ui.common.am-charts", "Am Charts");
|
|
24
|
+
case ColorSets.Grafana: return $tr("ui.common.grafana", "Grafana");
|
|
25
|
+
case ColorSets.Armytage: return $tr("ui.common.armytage", "Armytage");
|
|
26
|
+
case ColorSets.Hash: return $tr("ui.common.hash", "Hash");
|
|
27
|
+
case ColorSets.Kelly: return $tr("ui.common.material", "Kelly");
|
|
28
|
+
case ColorSets.ZeileisHornikMurrell: return $tr("ui.common.material", "ZeileisHornikMurrell");
|
|
29
|
+
default: return $tr("ui.common.none", "None");
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
export const chartIcon = (value: ChartType): string => {
|
|
35
|
+
switch (value) {
|
|
36
|
+
case ChartType.Gauge: return "mdi-gauge";
|
|
37
|
+
case ChartType.Heatmap: return "mdi-blur-linear";
|
|
38
|
+
case ChartType.Pie: return "mdi-chart-pie";
|
|
39
|
+
case ChartType.ScoreCard: return "mdi-counter";
|
|
40
|
+
case ChartType.Slider: return "mdi-ruler";
|
|
41
|
+
case ChartType.Table: return "mdi-table";
|
|
42
|
+
case ChartType.XY: return "mdi-chart-line";
|
|
43
|
+
default: return $tr("ui.common.none", "None");
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export const serieTypeIcon = (serieType: SerieType): string => {
|
|
48
|
+
switch (serieType) {
|
|
49
|
+
case SerieType.Lines: return "mdi-chart-line";
|
|
50
|
+
case SerieType.Area: return "mdi-chart-areaspline";
|
|
51
|
+
case SerieType.Range: return "mdi-chart-line-stacked";
|
|
52
|
+
case SerieType.Histogram: return "mdi-chart-histogram";
|
|
53
|
+
case SerieType.Operation: return "mdi-division";
|
|
54
|
+
case SerieType.Planning: return "mdi-chart-timeline";
|
|
55
|
+
case SerieType.ScatterPlot: return "mdi-chart-scatter-plot";
|
|
56
|
+
case SerieType.Top: return "mdi-podium-gold";
|
|
57
|
+
case SerieType.Bars: return "mdi-chart-bar";
|
|
58
|
+
case SerieType.StackedBars: return "mdi-chart-bar-stacked";
|
|
59
|
+
case SerieType.Pie: return "mdi-chart-pie";
|
|
60
|
+
case SerieType.Heatmap: return "mdi-blur-linear";
|
|
61
|
+
case SerieType.Slider: return "mdi-blur-linear";
|
|
62
|
+
case SerieType.Gauge: return "mdi-gauge";
|
|
63
|
+
case SerieType.ScoreCard: return "mdi-counter";
|
|
64
|
+
case SerieType.Table: return "mdi-table";
|
|
65
|
+
default: return "";
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export const showModifiers = (serieType: SerieType) => {
|
|
70
|
+
switch (serieType) {
|
|
71
|
+
case SerieType.Lines:
|
|
72
|
+
return { showData: true, showFirst: true, firstLabel: $tr('ui.common.group-by', 'Group by') };
|
|
73
|
+
case SerieType.Area:
|
|
74
|
+
return { showData: true, showFirst: true, firstLabel: $tr('ui.common.group-by', 'Group by') };
|
|
75
|
+
case SerieType.Range:
|
|
76
|
+
return { showData: true, showFirst: true, firstLabel: $tr('ui.common.group-by', 'Group by') };
|
|
77
|
+
case SerieType.Histogram:
|
|
78
|
+
return { showData: true, showFirst: true, firstLabel: $tr('ui.common.group-by', 'Group by') };
|
|
79
|
+
case SerieType.Operation:
|
|
80
|
+
return { showData: true, showFirst: true, firstLabel: $tr('ui.common.group-by', 'Group by') };
|
|
81
|
+
case SerieType.Planning:
|
|
82
|
+
return {
|
|
83
|
+
showData: true, showY: true, showFirst: true, showSecond: true,
|
|
84
|
+
ylabel: $tr('ui.common.y-axis-categories', 'Y Axis categories'),
|
|
85
|
+
firstLabel: $tr('ui.common.group-by', 'Group by'),
|
|
86
|
+
secondLabel: $tr('ui.common.elapsed-time-by', 'Elapsed time by'),
|
|
87
|
+
};
|
|
88
|
+
case SerieType.ScatterPlot:
|
|
89
|
+
return {
|
|
90
|
+
showX: true, showY: true, showFirst: true, showSecond: true,
|
|
91
|
+
xlabel: $tr('ui.common.x-axis-data', 'X axis data'),
|
|
92
|
+
ylabel: $tr('ui.common.y-axis-data', 'Y axis data'),
|
|
93
|
+
firstLabel: $tr('ui.common.group-by', 'Group by'),
|
|
94
|
+
secondLabel: $tr('ui.common.size-by', 'Size by')
|
|
95
|
+
};
|
|
96
|
+
case SerieType.Top:
|
|
97
|
+
return {
|
|
98
|
+
showData: true, showY: true, showFirst: true,
|
|
99
|
+
ylabel: $tr('ui.common.y-axis-categories', 'Y Axis categories'),
|
|
100
|
+
firstLabel: $tr('ui.common.group-by', 'Group by')
|
|
101
|
+
};
|
|
102
|
+
case SerieType.Bars:
|
|
103
|
+
return { showData: true, showFirst: true, firstLabel: $tr('ui.common.group-by', 'Group by') };
|
|
104
|
+
case SerieType.StackedBars:
|
|
105
|
+
return {
|
|
106
|
+
showData: true, showFirst: true, showSecond: true,
|
|
107
|
+
firstLabel: $tr('ui.common.group-by', 'Group by'),
|
|
108
|
+
secondLabel: $tr('ui.common.stack-by', 'Stack by')
|
|
109
|
+
};
|
|
110
|
+
case SerieType.Pie:
|
|
111
|
+
return { showData: true, showFirst: true, firstLabel: $tr('ui.common.group-by', 'Group by') };
|
|
112
|
+
case SerieType.Heatmap:
|
|
113
|
+
return {
|
|
114
|
+
showData: true, showX: true, showY: true,
|
|
115
|
+
xlabel: $tr('ui.common.x-axis-categories', 'X Axis categories'),
|
|
116
|
+
ylabel: $tr('ui.common.y-axis-categories', 'Y Axis categories')
|
|
117
|
+
};
|
|
118
|
+
case SerieType.Slider:
|
|
119
|
+
return { showData: true, showFirst: true, firstLabel: $tr('ui.common.group-by', 'Group by') };
|
|
120
|
+
case SerieType.Gauge:
|
|
121
|
+
return { showData: true, showFirst: true, firstLabel: $tr('ui.common.group-by', 'Group by') };
|
|
122
|
+
case SerieType.ScoreCard:
|
|
123
|
+
return { showData: true, showFirst: true, firstLabel: $tr('ui.common.group-by', 'Group by') };
|
|
124
|
+
case SerieType.Table:
|
|
125
|
+
return { showData: true };
|
|
126
|
+
default:
|
|
127
|
+
return {};
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export const chartTypeFromSerieType = (serieType: SerieType): ChartType => {
|
|
132
|
+
|
|
133
|
+
switch (serieType) {
|
|
134
|
+
case SerieType.Lines:
|
|
135
|
+
case SerieType.Area:
|
|
136
|
+
case SerieType.Range:
|
|
137
|
+
case SerieType.Histogram:
|
|
138
|
+
case SerieType.Operation:
|
|
139
|
+
case SerieType.Planning:
|
|
140
|
+
case SerieType.ScatterPlot:
|
|
141
|
+
case SerieType.Top:
|
|
142
|
+
case SerieType.Bars:
|
|
143
|
+
case SerieType.StackedBars:
|
|
144
|
+
return ChartType.XY;
|
|
145
|
+
case SerieType.Pie:
|
|
146
|
+
return ChartType.Pie;
|
|
147
|
+
case SerieType.Heatmap:
|
|
148
|
+
return ChartType.Heatmap;
|
|
149
|
+
case SerieType.Slider:
|
|
150
|
+
return ChartType.Slider;
|
|
151
|
+
case SerieType.Gauge:
|
|
152
|
+
return ChartType.Gauge;
|
|
153
|
+
case SerieType.ScoreCard:
|
|
154
|
+
return ChartType.ScoreCard;
|
|
155
|
+
case SerieType.Table:
|
|
156
|
+
return ChartType.Table;
|
|
157
|
+
default:
|
|
158
|
+
return ChartType.None;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export const xAxisTypeFromSerieType = (serieType: SerieType): AxisType[] => {
|
|
163
|
+
|
|
164
|
+
switch (serieType) {
|
|
165
|
+
case SerieType.Lines:
|
|
166
|
+
case SerieType.Area:
|
|
167
|
+
case SerieType.Range:
|
|
168
|
+
case SerieType.Histogram:
|
|
169
|
+
case SerieType.Operation:
|
|
170
|
+
case SerieType.Planning:
|
|
171
|
+
return [AxisType.Date];
|
|
172
|
+
|
|
173
|
+
case SerieType.ScatterPlot:
|
|
174
|
+
return [AxisType.Category, AxisType.Value];
|
|
175
|
+
|
|
176
|
+
case SerieType.Top:
|
|
177
|
+
return [AxisType.Value];
|
|
178
|
+
|
|
179
|
+
case SerieType.Bars:
|
|
180
|
+
case SerieType.StackedBars:
|
|
181
|
+
return [AxisType.Category];
|
|
182
|
+
|
|
183
|
+
case SerieType.Heatmap:
|
|
184
|
+
return [AxisType.Date, AxisType.Category];
|
|
185
|
+
|
|
186
|
+
case SerieType.Slider:
|
|
187
|
+
return [AxisType.Value];
|
|
188
|
+
|
|
189
|
+
case SerieType.Gauge:
|
|
190
|
+
case SerieType.ScoreCard:
|
|
191
|
+
case SerieType.Table:
|
|
192
|
+
case SerieType.Pie:
|
|
193
|
+
return [];
|
|
194
|
+
default:
|
|
195
|
+
return [];
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export const yAxisTypeFromSerieType = (serieType: SerieType): AxisType[] => {
|
|
200
|
+
|
|
201
|
+
switch (serieType) {
|
|
202
|
+
case SerieType.Lines:
|
|
203
|
+
case SerieType.Area:
|
|
204
|
+
case SerieType.Range:
|
|
205
|
+
case SerieType.Histogram:
|
|
206
|
+
case SerieType.Operation:
|
|
207
|
+
return [AxisType.Value];
|
|
208
|
+
|
|
209
|
+
case SerieType.ScatterPlot:
|
|
210
|
+
return [AxisType.Category, AxisType.Value];
|
|
211
|
+
|
|
212
|
+
case SerieType.Bars:
|
|
213
|
+
case SerieType.StackedBars:
|
|
214
|
+
return [AxisType.Value];
|
|
215
|
+
|
|
216
|
+
case SerieType.Top:
|
|
217
|
+
return [AxisType.Category];
|
|
218
|
+
|
|
219
|
+
case SerieType.Planning:
|
|
220
|
+
return [AxisType.Category];
|
|
221
|
+
|
|
222
|
+
case SerieType.Heatmap:
|
|
223
|
+
return [AxisType.Category];
|
|
224
|
+
|
|
225
|
+
case SerieType.Slider:
|
|
226
|
+
return [AxisType.Value];
|
|
227
|
+
|
|
228
|
+
case SerieType.Gauge:
|
|
229
|
+
case SerieType.ScoreCard:
|
|
230
|
+
case SerieType.Table:
|
|
231
|
+
case SerieType.Pie:
|
|
232
|
+
return [];
|
|
233
|
+
default:
|
|
234
|
+
return [];
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
export const hasAxis = (chartType: ChartType) => {
|
|
239
|
+
switch (chartType) {
|
|
240
|
+
case ChartType.XY:
|
|
241
|
+
case ChartType.Heatmap:
|
|
242
|
+
return true;
|
|
243
|
+
default:
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
export const getAllowedSeries = (chartType: ChartType, xAxisType: AxisType, yAxisType: AxisType) => {
|
|
250
|
+
|
|
251
|
+
const items = getEnumEntries(SerieType).map(e => {
|
|
252
|
+
return {
|
|
253
|
+
value: e.value as SerieType,
|
|
254
|
+
text: serieTypeLabel(e.value),
|
|
255
|
+
icon: serieTypeIcon(e.value),
|
|
256
|
+
chartType: chartTypeFromSerieType(e.value),
|
|
257
|
+
xAxis: xAxisTypeFromSerieType(e.value),
|
|
258
|
+
yAxis: yAxisTypeFromSerieType(e.value)
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
|
|
262
|
+
const filteredItems = () => {
|
|
263
|
+
switch (chartType) {
|
|
264
|
+
case ChartType.XY: {
|
|
265
|
+
return items.filter(i => i.chartType === ChartType.XY && i.xAxis.includes(xAxisType) && i.yAxis.includes(yAxisType));
|
|
266
|
+
}
|
|
267
|
+
case ChartType.Pie:
|
|
268
|
+
case ChartType.Heatmap:
|
|
269
|
+
case ChartType.Gauge:
|
|
270
|
+
case ChartType.Slider:
|
|
271
|
+
case ChartType.ScoreCard:
|
|
272
|
+
case ChartType.Table: {
|
|
273
|
+
return items.filter(i => i.chartType === chartType);
|
|
274
|
+
}
|
|
275
|
+
default: {
|
|
276
|
+
return [];
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
return filteredItems();
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
export const timeMillisecond = (value: number | null | undefined, unit: TimeUnit | undefined): number => {
|
|
285
|
+
if (value === null || value === undefined || unit === undefined) {
|
|
286
|
+
return 0;
|
|
287
|
+
}
|
|
288
|
+
switch (unit) {
|
|
289
|
+
case TimeUnit.None: return 0;
|
|
290
|
+
case TimeUnit.Millisecond: return value;
|
|
291
|
+
case TimeUnit.Second: return value * 1000;
|
|
292
|
+
case TimeUnit.Minute: return value * 60000;
|
|
293
|
+
case TimeUnit.Hour: return value * 3600000;
|
|
294
|
+
case TimeUnit.Day: return value * 86400000;
|
|
295
|
+
case TimeUnit.Week: return value * 604800000;
|
|
296
|
+
case TimeUnit.Month: return value * 2628000000;
|
|
297
|
+
case TimeUnit.Year: return value * 31536000000;
|
|
298
|
+
default: return 0;
|
|
299
|
+
}
|
|
300
|
+
}
|
package/tools/index.ts
ADDED