fix(editor): Render dates correctly in parameter hint (#9089)
This commit is contained in:
@@ -4,14 +4,13 @@ import InputTriple from '@/components/InputTriple/InputTriple.vue';
|
||||
import ParameterInputFull from '@/components/ParameterInputFull.vue';
|
||||
import ParameterInputHint from '@/components/ParameterInputHint.vue';
|
||||
import ParameterIssues from '@/components/ParameterIssues.vue';
|
||||
import { resolveParameter } from '@/composables/useWorkflowHelpers';
|
||||
import { isExpression } from '@/utils/expressions';
|
||||
import { isObject } from '@jsplumb/util';
|
||||
import type { AssignmentValue, INodeProperties } from 'n8n-workflow';
|
||||
import { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';
|
||||
import { isExpression, stringifyExpressionResult } from '@/utils/expressions';
|
||||
import type { AssignmentValue, INodeProperties, Result } from 'n8n-workflow';
|
||||
import { computed, ref } from 'vue';
|
||||
import TypeSelect from './TypeSelect.vue';
|
||||
import { useNDVStore } from '@/stores/ndv.store';
|
||||
import { useI18n } from '@/composables/useI18n';
|
||||
import { useRouter } from 'vue-router';
|
||||
|
||||
interface Props {
|
||||
path: string;
|
||||
@@ -32,7 +31,8 @@ const emit = defineEmits<{
|
||||
}>();
|
||||
|
||||
const ndvStore = useNDVStore();
|
||||
const i18n = useI18n();
|
||||
const router = useRouter();
|
||||
const { resolveExpression } = useWorkflowHelpers({ router });
|
||||
|
||||
const assignmentTypeToNodeProperty = (
|
||||
type: string,
|
||||
@@ -81,29 +81,21 @@ const hint = computed(() => {
|
||||
return '';
|
||||
}
|
||||
|
||||
let result: Result<unknown, Error>;
|
||||
try {
|
||||
const resolvedValue = resolveParameter(value, {
|
||||
const resolvedValue = resolveExpression(value, undefined, {
|
||||
targetItem: ndvStore.hoveringItem ?? undefined,
|
||||
inputNodeName: ndvStore.ndvInputNodeName,
|
||||
inputRunIndex: ndvStore.ndvInputRunIndex,
|
||||
inputBranchIndex: ndvStore.ndvInputBranchIndex,
|
||||
}) as unknown;
|
||||
|
||||
if (isObject(resolvedValue)) {
|
||||
return JSON.stringify(resolvedValue);
|
||||
}
|
||||
if (typeof resolvedValue === 'boolean' || typeof resolvedValue === 'number') {
|
||||
return resolvedValue.toString();
|
||||
}
|
||||
|
||||
if (resolvedValue === '') {
|
||||
return i18n.baseText('parameterInput.emptyString');
|
||||
}
|
||||
|
||||
return resolvedValue as string;
|
||||
result = { ok: true, result: resolvedValue };
|
||||
} catch (error) {
|
||||
return '';
|
||||
result = { ok: false, error };
|
||||
}
|
||||
|
||||
return stringifyExpressionResult(result);
|
||||
});
|
||||
|
||||
const highlightHint = computed(() =>
|
||||
|
||||
@@ -71,7 +71,7 @@ import type { EventBus } from 'n8n-design-system/utils';
|
||||
import { createEventBus } from 'n8n-design-system/utils';
|
||||
import { useRouter } from 'vue-router';
|
||||
import { useWorkflowHelpers } from '@/composables/useWorkflowHelpers';
|
||||
import { getExpressionErrorMessage, getResolvableState } from '@/utils/expressions';
|
||||
import { stringifyExpressionResult } from '@/utils/expressions';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'ParameterInputWrapper',
|
||||
@@ -197,12 +197,13 @@ export default defineComponent({
|
||||
isInputParentOfActiveNode(): boolean {
|
||||
return this.ndvStore.isInputParentOfActiveNode;
|
||||
},
|
||||
evaluatedExpression(): Result<unknown, unknown> {
|
||||
evaluatedExpression(): Result<unknown, Error> {
|
||||
const value = isResourceLocatorValue(this.modelValue)
|
||||
? this.modelValue.value
|
||||
: this.modelValue;
|
||||
|
||||
if (!this.activeNode || !this.isValueExpression || typeof value !== 'string') {
|
||||
return { ok: false, error: '' };
|
||||
return { ok: false, error: new Error() };
|
||||
}
|
||||
|
||||
try {
|
||||
@@ -227,28 +228,7 @@ export default defineComponent({
|
||||
return evaluated.ok ? evaluated.result : null;
|
||||
},
|
||||
evaluatedExpressionString(): string | null {
|
||||
const evaluated = this.evaluatedExpression;
|
||||
|
||||
if (!evaluated.ok) {
|
||||
if (getResolvableState(evaluated.error) !== 'invalid') {
|
||||
return null;
|
||||
}
|
||||
|
||||
return `[${this.$locale.baseText('parameterInput.error')}: ${getExpressionErrorMessage(
|
||||
evaluated.error as Error,
|
||||
)}]`;
|
||||
}
|
||||
|
||||
if (evaluated.result === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (typeof evaluated.result === 'string' && evaluated.result.length === 0) {
|
||||
return this.$locale.baseText('parameterInput.emptyString');
|
||||
}
|
||||
return typeof evaluated.result === 'string'
|
||||
? evaluated.result
|
||||
: JSON.stringify(evaluated.result);
|
||||
return stringifyExpressionResult(this.evaluatedExpression);
|
||||
},
|
||||
expressionOutput(): string | null {
|
||||
if (this.isValueExpression && this.evaluatedExpressionString) {
|
||||
|
||||
Reference in New Issue
Block a user