@oneuptime/common 7.0.3309 → 7.0.3336

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.
Files changed (56) hide show
  1. package/Server/Services/DatabaseService.ts +3 -0
  2. package/Server/Utils/Monitor/MonitorResource.ts +78 -0
  3. package/Types/ColorSwatch.ts +27 -0
  4. package/Types/Dashboard/DashboardComponents/ComponentArgument.ts +1 -1
  5. package/Types/Dashboard/DashboardComponents/DashboardChartComponent.ts +6 -2
  6. package/Types/Dashboard/DashboardComponents/DashboardValueComponent.ts +3 -2
  7. package/Types/Metrics/MetricAliasData.ts +5 -3
  8. package/Types/Metrics/MetricQueryConfigData.ts +1 -1
  9. package/Types/ObjectID.ts +1 -1
  10. package/UI/Components/Charts/ChartGroup/ChartGroup.tsx +12 -2
  11. package/UI/Components/Charts/Line/LineChart.tsx +8 -1
  12. package/UI/Components/Date/StartAndEndDate.tsx +131 -116
  13. package/UI/Components/Forms/BasicForm.tsx +7 -0
  14. package/UI/Components/HeaderAlert/HeaderAlert.tsx +8 -0
  15. package/UI/Components/Modal/ConfirmModal.tsx +2 -0
  16. package/UI/Components/Modal/Modal.tsx +4 -0
  17. package/UI/Components/Modal/ModalFooter.tsx +2 -1
  18. package/UI/Components/MoreMenu/MoreMenuItem.tsx +1 -1
  19. package/Utils/Dashboard/Components/DashboardChartComponent.ts +45 -6
  20. package/Utils/Dashboard/Components/DashboardValueComponent.ts +21 -5
  21. package/Utils/Monitor/MonitorMetricType.ts +46 -0
  22. package/build/dist/Server/Services/DatabaseService.js +2 -0
  23. package/build/dist/Server/Services/DatabaseService.js.map +1 -1
  24. package/build/dist/Server/Utils/Monitor/MonitorResource.js +71 -13
  25. package/build/dist/Server/Utils/Monitor/MonitorResource.js.map +1 -1
  26. package/build/dist/Types/ColorSwatch.js +28 -0
  27. package/build/dist/Types/ColorSwatch.js.map +1 -0
  28. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js +1 -1
  29. package/build/dist/Types/Dashboard/DashboardComponents/ComponentArgument.js.map +1 -1
  30. package/build/dist/Types/ObjectID.js +2 -1
  31. package/build/dist/Types/ObjectID.js.map +1 -1
  32. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js +2 -2
  33. package/build/dist/UI/Components/Charts/ChartGroup/ChartGroup.js.map +1 -1
  34. package/build/dist/UI/Components/Charts/Line/LineChart.js +5 -1
  35. package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
  36. package/build/dist/UI/Components/Date/StartAndEndDate.js +2 -2
  37. package/build/dist/UI/Components/Date/StartAndEndDate.js.map +1 -1
  38. package/build/dist/UI/Components/Forms/BasicForm.js +5 -0
  39. package/build/dist/UI/Components/Forms/BasicForm.js.map +1 -1
  40. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js +5 -0
  41. package/build/dist/UI/Components/HeaderAlert/HeaderAlert.js.map +1 -1
  42. package/build/dist/UI/Components/Modal/ConfirmModal.js +1 -1
  43. package/build/dist/UI/Components/Modal/ConfirmModal.js.map +1 -1
  44. package/build/dist/UI/Components/Modal/Modal.js +1 -1
  45. package/build/dist/UI/Components/Modal/Modal.js.map +1 -1
  46. package/build/dist/UI/Components/Modal/ModalFooter.js +1 -1
  47. package/build/dist/UI/Components/Modal/ModalFooter.js.map +1 -1
  48. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js +1 -1
  49. package/build/dist/UI/Components/MoreMenu/MoreMenuItem.js.map +1 -1
  50. package/build/dist/Utils/Dashboard/Components/DashboardChartComponent.js +41 -6
  51. package/build/dist/Utils/Dashboard/Components/DashboardChartComponent.js.map +1 -1
  52. package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js +20 -5
  53. package/build/dist/Utils/Dashboard/Components/DashboardValueComponent.js.map +1 -1
  54. package/build/dist/Utils/Monitor/MonitorMetricType.js +40 -0
  55. package/build/dist/Utils/Monitor/MonitorMetricType.js.map +1 -1
  56. package/package.json +2 -2
@@ -1392,6 +1392,9 @@ class DatabaseService<TBaseModel extends BaseModel> extends BaseService {
1392
1392
  ...data,
1393
1393
  } as any;
1394
1394
 
1395
+ logger.debug("Updated Item");
1396
+ logger.debug(JSON.stringify(updatedItem, null, 2));
1397
+
1395
1398
  await this.getRepository().save(updatedItem);
1396
1399
 
1397
1400
  // hit workflow.
@@ -93,6 +93,7 @@ export default class MonitorResourceUtil {
93
93
  disableActiveMonitoringBecauseOfScheduledMaintenanceEvent: true,
94
94
  currentMonitorStatusId: true,
95
95
  _id: true,
96
+ name: true,
96
97
  },
97
98
  props: {
98
99
  isRoot: true,
@@ -137,6 +138,9 @@ export default class MonitorResourceUtil {
137
138
  );
138
139
  }
139
140
 
141
+ let probeName: string | undefined = undefined;
142
+ const monitorName: string | undefined = monitor.name || undefined;
143
+
140
144
  // save the last log to MonitorProbe.
141
145
 
142
146
  // get last log. We do this because there are many monitoring steps and we need to store those.
@@ -160,6 +164,9 @@ export default class MonitorResourceUtil {
160
164
  },
161
165
  select: {
162
166
  lastMonitoringLog: true,
167
+ probe: {
168
+ name: true,
169
+ },
163
170
  },
164
171
  props: {
165
172
  isRoot: true,
@@ -170,6 +177,8 @@ export default class MonitorResourceUtil {
170
177
  throw new BadDataException("Probe is not assigned to this monitor");
171
178
  }
172
179
 
180
+ probeName = monitorProbe.probe?.name || undefined;
181
+
173
182
  await MonitorProbeService.updateOneBy({
174
183
  query: {
175
184
  monitorId: monitor.id!,
@@ -252,6 +261,8 @@ export default class MonitorResourceUtil {
252
261
  monitorId: monitor.id!,
253
262
  projectId: monitor.projectId!,
254
263
  dataToProcess: dataToProcess,
264
+ probeName: probeName || undefined,
265
+ monitorName: monitorName || undefined,
255
266
  });
256
267
  } catch (err) {
257
268
  logger.error("Unable to save metrics");
@@ -564,6 +575,8 @@ export default class MonitorResourceUtil {
564
575
  monitorId: ObjectID;
565
576
  projectId: ObjectID;
566
577
  dataToProcess: DataToProcess;
578
+ probeName: string | undefined;
579
+ monitorName: string | undefined;
567
580
  }): Promise<void> {
568
581
  if (!data.monitorId) {
569
582
  return;
@@ -611,6 +624,14 @@ export default class MonitorResourceUtil {
611
624
  projectId: data.projectId.toString(),
612
625
  };
613
626
 
627
+ if (data.monitorName) {
628
+ monitorMetric.attributes["monitorName"] = data.monitorName.toString();
629
+ }
630
+
631
+ if (data.probeName) {
632
+ monitorMetric.attributes["probeName"] = data.probeName.toString();
633
+ }
634
+
614
635
  monitorMetric.time = OneUptimeDate.getCurrentDate();
615
636
  monitorMetric.timeUnixNano = OneUptimeDate.getCurrentDateAsUnixNano();
616
637
  monitorMetric.metricPointType = MetricPointType.Sum;
@@ -641,6 +662,14 @@ export default class MonitorResourceUtil {
641
662
  projectId: data.projectId.toString(),
642
663
  };
643
664
 
665
+ if (data.monitorName) {
666
+ monitorMetric.attributes["monitorName"] = data.monitorName.toString();
667
+ }
668
+
669
+ if (data.probeName) {
670
+ monitorMetric.attributes["probeName"] = data.probeName.toString();
671
+ }
672
+
644
673
  monitorMetric.time = OneUptimeDate.getCurrentDate();
645
674
  monitorMetric.timeUnixNano = OneUptimeDate.getCurrentDateAsUnixNano();
646
675
  monitorMetric.metricPointType = MetricPointType.Sum;
@@ -664,6 +693,14 @@ export default class MonitorResourceUtil {
664
693
  projectId: data.projectId.toString(),
665
694
  };
666
695
 
696
+ if (data.monitorName) {
697
+ monitorMetric.attributes["monitorName"] = data.monitorName.toString();
698
+ }
699
+
700
+ if (data.probeName) {
701
+ monitorMetric.attributes["probeName"] = data.probeName.toString();
702
+ }
703
+
667
704
  monitorMetric.time = OneUptimeDate.getCurrentDate();
668
705
  monitorMetric.timeUnixNano = OneUptimeDate.getCurrentDateAsUnixNano();
669
706
  monitorMetric.metricPointType = MetricPointType.Sum;
@@ -689,6 +726,15 @@ export default class MonitorResourceUtil {
689
726
  diskPath: diskMetric.diskPath,
690
727
  };
691
728
 
729
+ if (data.monitorName) {
730
+ monitorMetric.attributes["monitorName"] =
731
+ data.monitorName.toString();
732
+ }
733
+
734
+ if (data.probeName) {
735
+ monitorMetric.attributes["probeName"] = data.probeName.toString();
736
+ }
737
+
692
738
  monitorMetric.time = OneUptimeDate.getCurrentDate();
693
739
  monitorMetric.timeUnixNano = OneUptimeDate.getCurrentDateAsUnixNano();
694
740
  monitorMetric.metricPointType = MetricPointType.Sum;
@@ -721,6 +767,14 @@ export default class MonitorResourceUtil {
721
767
  ).probeId.toString(),
722
768
  };
723
769
 
770
+ if (data.monitorName) {
771
+ monitorMetric.attributes["monitorName"] = data.monitorName.toString();
772
+ }
773
+
774
+ if (data.probeName) {
775
+ monitorMetric.attributes["probeName"] = data.probeName.toString();
776
+ }
777
+
724
778
  monitorMetric.time = OneUptimeDate.getCurrentDate();
725
779
  monitorMetric.timeUnixNano = OneUptimeDate.getCurrentDateAsUnixNano();
726
780
  monitorMetric.metricPointType = MetricPointType.Sum;
@@ -758,6 +812,14 @@ export default class MonitorResourceUtil {
758
812
  screenSizeType: syntheticMonitorResponse.screenSizeType,
759
813
  };
760
814
 
815
+ if (data.monitorName) {
816
+ monitorMetric.attributes["monitorName"] = data.monitorName.toString();
817
+ }
818
+
819
+ if (data.probeName) {
820
+ monitorMetric.attributes["probeName"] = data.probeName.toString();
821
+ }
822
+
761
823
  monitorMetric.time = OneUptimeDate.getCurrentDate();
762
824
  monitorMetric.timeUnixNano = OneUptimeDate.getCurrentDateAsUnixNano();
763
825
  monitorMetric.metricPointType = MetricPointType.Sum;
@@ -786,6 +848,14 @@ export default class MonitorResourceUtil {
786
848
  ).probeId.toString(),
787
849
  };
788
850
 
851
+ if (data.monitorName) {
852
+ monitorMetric.attributes["monitorName"] = data.monitorName.toString();
853
+ }
854
+
855
+ if (data.probeName) {
856
+ monitorMetric.attributes["probeName"] = data.probeName.toString();
857
+ }
858
+
789
859
  monitorMetric.time = OneUptimeDate.getCurrentDate();
790
860
  monitorMetric.timeUnixNano = OneUptimeDate.getCurrentDateAsUnixNano();
791
861
  monitorMetric.metricPointType = MetricPointType.Sum;
@@ -814,6 +884,14 @@ export default class MonitorResourceUtil {
814
884
  ).probeId.toString(),
815
885
  };
816
886
 
887
+ if (data.monitorName) {
888
+ monitorMetric.attributes["monitorName"] = data.monitorName.toString();
889
+ }
890
+
891
+ if (data.probeName) {
892
+ monitorMetric.attributes["probeName"] = data.probeName.toString();
893
+ }
894
+
817
895
  monitorMetric.time = OneUptimeDate.getCurrentDate();
818
896
  monitorMetric.timeUnixNano = OneUptimeDate.getCurrentDateAsUnixNano();
819
897
  monitorMetric.metricPointType = MetricPointType.Sum;
@@ -0,0 +1,27 @@
1
+ enum ColorSwatch {
2
+ Zinc = "zinc",
3
+ Neutra = "neutra",
4
+ Stone = "stone",
5
+ Slate = "slate",
6
+ Purple = "purple",
7
+ Pink = "pink",
8
+ Red = "red",
9
+ Orange = "orange",
10
+ Yellow = "yellow",
11
+ Green = "green",
12
+ Teal = "teal",
13
+ Cyan = "cyan",
14
+ Gray = "gray",
15
+ Moroon = "moroon",
16
+ Blue = "blue",
17
+ Indigo = "indigo",
18
+ Amber = "amber",
19
+ Lime = "lime",
20
+ Emerald = "emerald",
21
+ Sky = "sky",
22
+ Violet = "violet",
23
+ Fuchsia = "fuchsia",
24
+ Rose = "rose",
25
+ }
26
+
27
+ export default ColorSwatch;
@@ -7,7 +7,7 @@ export enum ComponentInputType {
7
7
  Boolean = "True or False",
8
8
  Number = "Number",
9
9
  Decimal = "Decimal",
10
- MetricsEditor = "MetricsEditor",
10
+ MetricsQueryConfig = "MetricsQueryConfig",
11
11
  LongText = "Long Text",
12
12
  }
13
13
 
@@ -1,4 +1,4 @@
1
- import MetricsViewConfig from "../../Metrics/MetricsViewConfig";
1
+ import MetricQueryConfigData from "../../Metrics/MetricQueryConfigData";
2
2
  import ObjectID from "../../ObjectID";
3
3
  import DashboardComponentType from "../DashboardComponentType";
4
4
  import BaseComponent from "./DashboardBaseComponent";
@@ -7,6 +7,10 @@ export default interface DashboardChartComponent extends BaseComponent {
7
7
  componentType: DashboardComponentType.Chart;
8
8
  componentId: ObjectID;
9
9
  arguments: {
10
- metricsViewConfig?: MetricsViewConfig | undefined;
10
+ metricQueryConfig?: MetricQueryConfigData | undefined;
11
+ chartTitle?: string | undefined;
12
+ chartDescription?: string | undefined;
13
+ legendText?: string | undefined;
14
+ legendUnit?: string | undefined;
11
15
  };
12
16
  }
@@ -1,4 +1,4 @@
1
- import MetricsViewConfig from "../../Metrics/MetricsViewConfig";
1
+ import MetricQueryConfigData from "../../Metrics/MetricQueryConfigData";
2
2
  import ObjectID from "../../ObjectID";
3
3
  import DashboardComponentType from "../DashboardComponentType";
4
4
  import BaseComponent from "./DashboardBaseComponent";
@@ -7,6 +7,7 @@ export default interface DashboardValueComponent extends BaseComponent {
7
7
  componentType: DashboardComponentType.Value;
8
8
  componentId: ObjectID;
9
9
  arguments: {
10
- metricsViewConfig?: MetricsViewConfig | undefined;
10
+ metricQueryConfig?: MetricQueryConfigData | undefined;
11
+ title: string;
11
12
  };
12
13
  }
@@ -1,5 +1,7 @@
1
1
  export default interface MetricAliasData {
2
- metricVariable: string;
3
- title: string;
4
- description: string;
2
+ metricVariable: string | undefined;
3
+ title: string | undefined;
4
+ description: string | undefined;
5
+ legend: string | undefined;
6
+ legendUnit: string | undefined;
5
7
  }
@@ -7,7 +7,7 @@ export interface ChartSeries {
7
7
  }
8
8
 
9
9
  export default interface MetricQueryConfigData {
10
- metricAliasData: MetricAliasData;
10
+ metricAliasData?: MetricAliasData | undefined;
11
11
  metricQueryData: MetricQueryData;
12
12
  getSeries?: ((data: AggregatedModel) => ChartSeries) | undefined;
13
13
  }
package/Types/ObjectID.ts CHANGED
@@ -36,7 +36,7 @@ export default class ObjectID extends DatabaseProperty {
36
36
  }
37
37
 
38
38
  public equals(other: ObjectID): boolean {
39
- return this.id.toString() === other.id.toString();
39
+ return (this.id?.toString() || "") === (other.id?.toString() || "");
40
40
  }
41
41
 
42
42
  public override toString(): string {
@@ -18,6 +18,8 @@ export interface Chart {
18
18
 
19
19
  export interface ComponentProps {
20
20
  charts: Array<Chart>;
21
+ hideCard?: boolean | undefined;
22
+ heightInPx?: number | undefined;
21
23
  }
22
24
 
23
25
  const ChartGroup: FunctionComponent<ComponentProps> = (
@@ -31,7 +33,10 @@ const ChartGroup: FunctionComponent<ComponentProps> = (
31
33
  switch (chart.type) {
32
34
  case ChartType.LINE:
33
35
  return (
34
- <div key={index} className="p-6 rounded-md bg-white shadow">
36
+ <div
37
+ key={index}
38
+ className={`p-6 ${props.hideCard ? "" : "rounded-md bg-white shadow"}`}
39
+ >
35
40
  <h2
36
41
  data-testid="card-details-heading"
37
42
  id="card-details-heading"
@@ -47,7 +52,12 @@ const ChartGroup: FunctionComponent<ComponentProps> = (
47
52
  {chart.description}
48
53
  </p>
49
54
  )}
50
- <LineChart key={index} {...chart.props} syncid={syncId} />
55
+ <LineChart
56
+ key={index}
57
+ {...chart.props}
58
+ syncid={syncId}
59
+ heightInPx={props.heightInPx}
60
+ />
51
61
  </div>
52
62
  );
53
63
  default:
@@ -13,6 +13,7 @@ export interface ComponentProps {
13
13
  yAxis: YAxis;
14
14
  curve: ChartCurve;
15
15
  sync: boolean;
16
+ heightInPx?: number | undefined;
16
17
  }
17
18
 
18
19
  export interface LineInternalProps extends ComponentProps {
@@ -42,9 +43,15 @@ const LineChartElement: FunctionComponent<LineInternalProps> = (
42
43
  setRecords(records);
43
44
  }, [props.data]);
44
45
 
46
+ const className: string = props.heightInPx ? `` : "h-80";
47
+ const style: React.CSSProperties = props.heightInPx
48
+ ? { height: `${props.heightInPx}px` }
49
+ : {};
50
+
45
51
  return (
46
52
  <LineChart
47
- className="h-80"
53
+ className={className}
54
+ style={style}
48
55
  data={records}
49
56
  tickGap={1}
50
57
  index={"Time"}
@@ -13,6 +13,7 @@ export interface ComponentProps {
13
13
  initialValue?: InBetween<Date> | undefined;
14
14
  onValueChanged: (value: InBetween<Date> | null) => void;
15
15
  type: StartAndEndDateType;
16
+ hideTimeButtons?: boolean | undefined;
16
17
  }
17
18
 
18
19
  type DateFilterFunction = (props: ComponentProps) => ReactElement;
@@ -212,17 +213,135 @@ const StartAndEndDate: DateFilterFunction = (
212
213
  </div>
213
214
  </div>
214
215
 
215
- <div className="mt-1 flex space-x-2 -ml-3">
216
- {props.type === StartAndEndDateType.DateTime && (
216
+ {!props.hideTimeButtons && (
217
+ <div className="mt-1 flex space-x-2 -ml-3">
218
+ {props.type === StartAndEndDateType.DateTime && (
219
+ <Button
220
+ buttonStyle={
221
+ is1Hour ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
222
+ }
223
+ buttonSize={ButtonSize.Small}
224
+ onClick={() => {
225
+ // set it to past 1 hour
226
+ const endDate: Date = OneUptimeDate.getCurrentDate();
227
+ const startDate: Date = OneUptimeDate.addRemoveHours(
228
+ endDate,
229
+ -1,
230
+ );
231
+
232
+ setStartDateTime(startDate);
233
+ setEndDateTime(endDate);
234
+ }}
235
+ title="1 hour"
236
+ />
237
+ )}
238
+
239
+ {props.type === StartAndEndDateType.DateTime && (
240
+ <Button
241
+ buttonStyle={
242
+ is3Hours ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
243
+ }
244
+ buttonSize={ButtonSize.Small}
245
+ onClick={() => {
246
+ // set it to past 3 hour
247
+ const endDate: Date = OneUptimeDate.getCurrentDate();
248
+ const startDate: Date = OneUptimeDate.addRemoveHours(
249
+ endDate,
250
+ -3,
251
+ );
252
+
253
+ setStartDateTime(startDate);
254
+ setEndDateTime(endDate);
255
+ }}
256
+ title="3 hours"
257
+ />
258
+ )}
259
+
260
+ <Button
261
+ buttonStyle={
262
+ is1Day ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
263
+ }
264
+ buttonSize={ButtonSize.Small}
265
+ onClick={() => {
266
+ // set it to past 1 day
267
+ const endDate: Date = OneUptimeDate.getCurrentDate();
268
+ const startDate: Date = OneUptimeDate.addRemoveDays(
269
+ endDate,
270
+ -1,
271
+ );
272
+
273
+ setStartDateTime(startDate);
274
+ setEndDateTime(endDate);
275
+ }}
276
+ title="1 day"
277
+ />
278
+
279
+ <Button
280
+ buttonStyle={
281
+ is1Week ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
282
+ }
283
+ buttonSize={ButtonSize.Small}
284
+ onClick={() => {
285
+ // set it to past 1 week
286
+ const endDate: Date = OneUptimeDate.getCurrentDate();
287
+ const startDate: Date = OneUptimeDate.addRemoveDays(
288
+ endDate,
289
+ -7,
290
+ );
291
+
292
+ setStartDateTime(startDate);
293
+ setEndDateTime(endDate);
294
+ }}
295
+ title="1 week"
296
+ />
297
+
298
+ <Button
299
+ buttonStyle={
300
+ is2Weeks ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
301
+ }
302
+ buttonSize={ButtonSize.Small}
303
+ onClick={() => {
304
+ // set it to past 1 week
305
+ const endDate: Date = OneUptimeDate.getCurrentDate();
306
+ const startDate: Date = OneUptimeDate.addRemoveDays(
307
+ endDate,
308
+ -14,
309
+ );
310
+
311
+ setStartDateTime(startDate);
312
+ setEndDateTime(endDate);
313
+ }}
314
+ title="2 weeks"
315
+ />
316
+
217
317
  <Button
218
318
  buttonStyle={
219
- is1Hour ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
319
+ is3Weeks ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
220
320
  }
221
321
  buttonSize={ButtonSize.Small}
222
322
  onClick={() => {
223
- // set it to past 1 hour
323
+ // set it to past 1 week
224
324
  const endDate: Date = OneUptimeDate.getCurrentDate();
225
- const startDate: Date = OneUptimeDate.addRemoveHours(
325
+ const startDate: Date = OneUptimeDate.addRemoveDays(
326
+ endDate,
327
+ -21,
328
+ );
329
+
330
+ setStartDateTime(startDate);
331
+ setEndDateTime(endDate);
332
+ }}
333
+ title="3 weeks"
334
+ />
335
+
336
+ <Button
337
+ buttonStyle={
338
+ is1Month ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
339
+ }
340
+ buttonSize={ButtonSize.Small}
341
+ onClick={() => {
342
+ // set it to past 1 month
343
+ const endDate: Date = OneUptimeDate.getCurrentDate();
344
+ const startDate: Date = OneUptimeDate.addRemoveMonths(
226
345
  endDate,
227
346
  -1,
228
347
  );
@@ -230,20 +349,18 @@ const StartAndEndDate: DateFilterFunction = (
230
349
  setStartDateTime(startDate);
231
350
  setEndDateTime(endDate);
232
351
  }}
233
- title="1 hour"
352
+ title="1 month"
234
353
  />
235
- )}
236
354
 
237
- {props.type === StartAndEndDateType.DateTime && (
238
355
  <Button
239
356
  buttonStyle={
240
- is3Hours ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
357
+ is3Months ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
241
358
  }
242
359
  buttonSize={ButtonSize.Small}
243
360
  onClick={() => {
244
- // set it to past 3 hour
361
+ // set it to past 1 month
245
362
  const endDate: Date = OneUptimeDate.getCurrentDate();
246
- const startDate: Date = OneUptimeDate.addRemoveHours(
363
+ const startDate: Date = OneUptimeDate.addRemoveMonths(
247
364
  endDate,
248
365
  -3,
249
366
  );
@@ -251,112 +368,10 @@ const StartAndEndDate: DateFilterFunction = (
251
368
  setStartDateTime(startDate);
252
369
  setEndDateTime(endDate);
253
370
  }}
254
- title="3 hours"
371
+ title="3 months"
255
372
  />
256
- )}
257
-
258
- <Button
259
- buttonStyle={
260
- is1Day ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
261
- }
262
- buttonSize={ButtonSize.Small}
263
- onClick={() => {
264
- // set it to past 1 day
265
- const endDate: Date = OneUptimeDate.getCurrentDate();
266
- const startDate: Date = OneUptimeDate.addRemoveDays(endDate, -1);
267
-
268
- setStartDateTime(startDate);
269
- setEndDateTime(endDate);
270
- }}
271
- title="1 day"
272
- />
273
-
274
- <Button
275
- buttonStyle={
276
- is1Week ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
277
- }
278
- buttonSize={ButtonSize.Small}
279
- onClick={() => {
280
- // set it to past 1 week
281
- const endDate: Date = OneUptimeDate.getCurrentDate();
282
- const startDate: Date = OneUptimeDate.addRemoveDays(endDate, -7);
283
-
284
- setStartDateTime(startDate);
285
- setEndDateTime(endDate);
286
- }}
287
- title="1 week"
288
- />
289
-
290
- <Button
291
- buttonStyle={
292
- is2Weeks ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
293
- }
294
- buttonSize={ButtonSize.Small}
295
- onClick={() => {
296
- // set it to past 1 week
297
- const endDate: Date = OneUptimeDate.getCurrentDate();
298
- const startDate: Date = OneUptimeDate.addRemoveDays(endDate, -14);
299
-
300
- setStartDateTime(startDate);
301
- setEndDateTime(endDate);
302
- }}
303
- title="2 weeks"
304
- />
305
-
306
- <Button
307
- buttonStyle={
308
- is3Weeks ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
309
- }
310
- buttonSize={ButtonSize.Small}
311
- onClick={() => {
312
- // set it to past 1 week
313
- const endDate: Date = OneUptimeDate.getCurrentDate();
314
- const startDate: Date = OneUptimeDate.addRemoveDays(endDate, -21);
315
-
316
- setStartDateTime(startDate);
317
- setEndDateTime(endDate);
318
- }}
319
- title="3 weeks"
320
- />
321
-
322
- <Button
323
- buttonStyle={
324
- is1Month ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
325
- }
326
- buttonSize={ButtonSize.Small}
327
- onClick={() => {
328
- // set it to past 1 month
329
- const endDate: Date = OneUptimeDate.getCurrentDate();
330
- const startDate: Date = OneUptimeDate.addRemoveMonths(
331
- endDate,
332
- -1,
333
- );
334
-
335
- setStartDateTime(startDate);
336
- setEndDateTime(endDate);
337
- }}
338
- title="1 month"
339
- />
340
-
341
- <Button
342
- buttonStyle={
343
- is3Months ? ButtonStyleType.PRIMARY : ButtonStyleType.NORMAL
344
- }
345
- buttonSize={ButtonSize.Small}
346
- onClick={() => {
347
- // set it to past 1 month
348
- const endDate: Date = OneUptimeDate.getCurrentDate();
349
- const startDate: Date = OneUptimeDate.addRemoveMonths(
350
- endDate,
351
- -3,
352
- );
353
-
354
- setStartDateTime(startDate);
355
- setEndDateTime(endDate);
356
- }}
357
- title="3 months"
358
- />
359
- </div>
373
+ </div>
374
+ )}
360
375
  </div>
361
376
  );
362
377
  }
@@ -51,6 +51,7 @@ export const DefaultValidateFunction: DefaultValidateFunctionType = (
51
51
  export interface BaseComponentProps<T> {
52
52
  submitButtonStyleType?: ButtonStyleType | undefined;
53
53
  initialValues?: FormValues<T> | undefined;
54
+ values?: FormValues<T> | undefined;
54
55
  onValidate?: undefined | ((values: FormValues<T>) => JSONObject);
55
56
  onChange?: undefined | ((values: FormValues<T>) => void);
56
57
  fields: Fields<T>;
@@ -121,6 +122,12 @@ const BasicForm: ForwardRefExoticComponent<any> = forwardRef(
121
122
  null,
122
123
  );
123
124
 
125
+ useEffect(() => {
126
+ if (props.values) {
127
+ refCurrentValue.current = props.values || {};
128
+ }
129
+ }, [props.values]);
130
+
124
131
  useEffect(() => {
125
132
  if (formSteps && formSteps.length > 0 && formSteps[0]) {
126
133
  setCurrentFormStepId(formSteps[0].id);
@@ -3,6 +3,7 @@ import IconProp from "Common/Types/Icon/IconProp";
3
3
  import React, { ReactElement } from "react";
4
4
  import Tooltip from "../Tooltip/Tooltip";
5
5
  import { GetReactElementFunction } from "../../Types/FunctionTypes";
6
+ import ColorSwatch from "../../../Types/ColorSwatch";
6
7
 
7
8
  export enum HeaderAlertType {
8
9
  SUCCESS = "Success",
@@ -18,6 +19,7 @@ export interface ComponentProps {
18
19
  className?: string | undefined;
19
20
  alertType: HeaderAlertType;
20
21
  tooltip?: string | undefined;
22
+ colorSwatch?: ColorSwatch | undefined;
21
23
  }
22
24
 
23
25
  const HeaderAlert: (props: ComponentProps) => ReactElement = (
@@ -57,6 +59,12 @@ const HeaderAlert: (props: ComponentProps) => ReactElement = (
57
59
  break;
58
60
  }
59
61
 
62
+ // color swatch overrides the color.
63
+ if (props.colorSwatch) {
64
+ textColor = `text-${props.colorSwatch}-500 hover:text-${props.colorSwatch}-600`;
65
+ bgColor = `bg-${props.colorSwatch}`;
66
+ }
67
+
60
68
  const getElement: GetReactElementFunction = (): ReactElement => {
61
69
  return (
62
70
  <div