Skip to content

Commit ea8637c

Browse files
committed
Created version 1 of the value-modeling page which is used to create realistic targets for the different metrics being tracked.
1 parent 30b351d commit ea8637c

File tree

8 files changed

+709
-151
lines changed

8 files changed

+709
-151
lines changed

backend/Value-Modeling.png

232 KB
Loading
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
export interface MetricState {
2+
seats: number;
3+
adoptedDevs: number;
4+
monthlyDevsReportingTimeSavings: number;
5+
percentSeatsReportingTimeSavings: number;
6+
percentSeatsAdopted: number;
7+
percentMaxAdopted: number;
8+
dailySuggestions: number;
9+
dailyChatTurns: number;
10+
weeklyPRSummaries: number;
11+
weeklyTimeSaved: number;
12+
monthlyTimeSavings: number;
13+
annualTimeSavingsDollars: number;
14+
productivityBoost: number;
15+
[key: string]: number; // Index signature
16+
}
17+
18+
export interface GridObject {
19+
current: MetricState;
20+
target: MetricState;
21+
max: MetricState;
22+
}
23+
24+
export function initializeGridObject(): GridObject {
25+
const defaultMetricState: MetricState = {
26+
seats: 0,
27+
adoptedDevs: 0,
28+
monthlyDevsReportingTimeSavings: 0,
29+
percentSeatsReportingTimeSavings: 0,
30+
percentSeatsAdopted: 0,
31+
percentMaxAdopted: 0,
32+
dailySuggestions: 0,
33+
dailyChatTurns: 0,
34+
weeklyPRSummaries: 0,
35+
weeklyTimeSaved: 0,
36+
monthlyTimeSavings: 0,
37+
annualTimeSavingsDollars: 0,
38+
productivityBoost: 0
39+
};
40+
41+
return {
42+
current: { ...defaultMetricState },
43+
target: { ...defaultMetricState },
44+
max: { ...defaultMetricState }
45+
};
46+
}

frontend/src/app/main/copilot/value-modeling/value-modeling.component.html

Lines changed: 321 additions & 82 deletions
Large diffs are not rendered by default.

frontend/src/app/main/copilot/value-modeling/value-modeling.component.scss

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,21 @@
55
}
66

77
.page-header {
8+
display: flex;
9+
justify-content: space-between;
10+
align-items: center;
811
margin-bottom: 24px;
12+
913
h1 {
1014
margin: 0;
1115
font-size: 24px;
1216
font-weight: 500;
1317
}
18+
19+
.button-group {
20+
display: flex;
21+
gap: 16px;
22+
}
1423
}
1524

1625
.charts-grid {
@@ -55,10 +64,58 @@
5564
}
5665
}
5766

67+
.metrics-table {
68+
display: grid;
69+
grid-template-columns: 1fr;
70+
gap: 24px;
71+
72+
mat-card {
73+
display: grid;
74+
grid-template-columns: 1fr;
75+
gap: 16px;
76+
77+
table {
78+
width: 100%;
79+
border-collapse: collapse;
80+
81+
th, td {
82+
padding: 8px;
83+
text-align: right; /* Right justify all content */
84+
width: 25%; /* Ensure consistent column widths */
85+
}
86+
87+
th {
88+
font-weight: 500;
89+
}
90+
91+
td {
92+
mat-form-field {
93+
width: 100%;
94+
}
95+
}
96+
}
97+
}
98+
}
99+
58100
.example-right-align {
59101
text-align: right;
60102
}
61103

104+
.invalid {
105+
border-color: red;
106+
}
107+
108+
mat-form-field[disabled] {
109+
.mat-form-field-wrapper {
110+
background-color: #f5f5f5;
111+
box-shadow: none;
112+
}
113+
114+
.mat-input-element {
115+
color: #9e9e9e;
116+
}
117+
}
118+
62119
@media (max-width: 768px) {
63120
.charts-grid {
64121
grid-template-columns: 1fr;
@@ -75,4 +132,8 @@
75132
grid-template-columns: 1fr;
76133
}
77134
}
135+
136+
.metrics-table {
137+
grid-template-columns: 1fr;
138+
}
78139
}

0 commit comments

Comments
 (0)