diff --git a/packages/common/src/core/schemas/internal/metrics/MetricSchema.ts b/packages/common/src/core/schemas/internal/metrics/MetricSchema.ts index 570123d52c1..620188ffb44 100644 --- a/packages/common/src/core/schemas/internal/metrics/MetricSchema.ts +++ b/packages/common/src/core/schemas/internal/metrics/MetricSchema.ts @@ -23,7 +23,7 @@ export const MetricSchema: IConfigurationSchema = { valueType: { type: "string", default: "string", - enum: ["string", "number"], + enum: ["string", "number", "date"], }, dynamicMetric: { type: "object", diff --git a/packages/common/src/core/schemas/internal/metrics/ProjectUiSchemaMetrics.ts b/packages/common/src/core/schemas/internal/metrics/ProjectUiSchemaMetrics.ts index f26065d4d4b..69cb80c596e 100644 --- a/packages/common/src/core/schemas/internal/metrics/ProjectUiSchemaMetrics.ts +++ b/packages/common/src/core/schemas/internal/metrics/ProjectUiSchemaMetrics.ts @@ -116,23 +116,24 @@ export const buildUiSchema = ( ], }, }, - // { - // labelKey: `${i18nScope}.fields.metrics.value.label`, - // scope: "/properties/_metric/properties/value", - // type: "Control", - // rule: SHOW_FOR_STATIC_AND_DATE_RULE_ENTITY, - // options: { - // control: "hub-field-input-date", - // messages: [ - // { - // type: "ERROR", - // keyword: "required", - // labelKey: `${i18nScope}.fields.metrics.value.message.required`, - // icon: true, - // }, - // ], - // }, - // }, + { + labelKey: `${i18nScope}.fields.metrics.value.label`, + scope: "/properties/_metric/properties/value", + type: "Control", + rule: SHOW_FOR_STATIC_AND_DATE_RULE_ENTITY, + options: { + control: "hub-field-input-date", + clearOnHidden: true, + messages: [ + { + type: "ERROR", + keyword: "required", + labelKey: `${i18nScope}.fields.metrics.value.message.required`, + icon: true, + }, + ], + }, + }, { scope: "/properties/_metric/properties/dynamicMetric", type: "Control", diff --git a/packages/common/src/metrics/resolveMetric.ts b/packages/common/src/metrics/resolveMetric.ts index 1d107ab9cc5..5488b72c60e 100644 --- a/packages/common/src/metrics/resolveMetric.ts +++ b/packages/common/src/metrics/resolveMetric.ts @@ -68,6 +68,7 @@ function resolveStaticValueMetric( name: metric.entityInfo.name, type: metric.entityInfo.type, [fieldName]: source.value, + valueType: source.valueType, }, }; return Promise.resolve({ diff --git a/packages/common/test/core/schemas/internal/metrics/ProjectUiSchemaMetrics.test.ts b/packages/common/test/core/schemas/internal/metrics/ProjectUiSchemaMetrics.test.ts index 5f73d5b56c8..81bf07f43b2 100644 --- a/packages/common/test/core/schemas/internal/metrics/ProjectUiSchemaMetrics.test.ts +++ b/packages/common/test/core/schemas/internal/metrics/ProjectUiSchemaMetrics.test.ts @@ -134,37 +134,38 @@ describe("buildUiSchema: metric", () => { ], }, }, - // { - // labelKey: `some.scope.fields.metrics.value.label`, - // scope: "/properties/_metric/properties/value", - // type: "Control", - // rule: { - // condition: { - // schema: { - // properties: { - // _metric: { - // properties: { - // type: { const: "static" }, - // valueType: { const: "date" }, - // }, - // }, - // }, - // }, - // }, - // effect: UiSchemaRuleEffects.SHOW, - // }, - // options: { - // control: "hub-field-input-date", - // messages: [ - // { - // type: "ERROR", - // keyword: "required", - // labelKey: `some.scope.fields.metrics.value.message.required`, - // icon: true, - // }, - // ], - // }, - // }, + { + labelKey: `some.scope.fields.metrics.value.label`, + scope: "/properties/_metric/properties/value", + type: "Control", + rule: { + condition: { + schema: { + properties: { + _metric: { + properties: { + type: { const: "static" }, + valueType: { const: "date" }, + }, + }, + }, + }, + }, + effect: UiSchemaRuleEffects.SHOW, + }, + options: { + control: "hub-field-input-date", + clearOnHidden: true, + messages: [ + { + type: "ERROR", + keyword: "required", + labelKey: `some.scope.fields.metrics.value.message.required`, + icon: true, + }, + ], + }, + }, { scope: "/properties/_metric/properties/dynamicMetric", type: "Control", diff --git a/packages/common/test/metrics/resolveMetric.test.ts b/packages/common/test/metrics/resolveMetric.test.ts index 3d8b5189d44..ab1b1e53325 100644 --- a/packages/common/test/metrics/resolveMetric.test.ts +++ b/packages/common/test/metrics/resolveMetric.test.ts @@ -60,6 +60,7 @@ describe("resolveMetric:", () => { source: { type: "static-value", value: 100000, + valueType: "number", }, entityInfo: { id: "00c", @@ -76,6 +77,7 @@ describe("resolveMetric:", () => { name: "Some Project Name", type: "Hub Project", initiativeBudget: 100000, + valueType: "number", }, }, ]);