优化命令概览的生成逻辑,只显示输入框的值

This commit is contained in:
fofolee 2025-01-27 13:05:11 +08:00
parent 4461619a39
commit 17cec93767
2 changed files with 49 additions and 34 deletions

View File

@ -3,7 +3,7 @@
<OperationCard
v-if="hasSubCommands"
:model-value="funcName"
@update:model-value="funcName = $event"
@update:model-value="updateFuncName($event)"
:options="localCommand.subCommands"
/>
<ParamInput :configs="localConfig" :values="argvs" @update="updateArgv" />
@ -15,7 +15,11 @@ import { defineComponent } from "vue";
import OperationCard from "components/composer/common/OperationCard.vue";
import ParamInput from "components/composer/param/ParamInput.vue";
import { stringifyArgv, parseFunction } from "js/composer/formatString";
import { newVarInputVal } from "js/composer/varInputValManager";
import {
newVarInputVal,
isVarInputVal,
stringifyVarInputVal,
} from "js/composer/varInputValManager";
export default defineComponent({
name: "MultiParams",
@ -59,26 +63,8 @@ export default defineComponent({
defaultArgvs() {
return this.localConfig.map((item) => item.value);
},
funcName: {
get() {
return this.modelValue.value;
},
set(value) {
//
const newArgvs = [];
//
this.commonConfig.forEach((_, index) => {
newArgvs[index] = this.argvs[index];
});
// 使
this.getSelectSubCommand(value)?.config?.forEach((config, index) => {
newArgvs[this.commonConfig.length + index] = config.defaultValue;
});
this.updateModelValue(value, newArgvs, true);
},
funcName() {
return this.modelValue.value;
},
argvs() {
return (
@ -101,6 +87,22 @@ export default defineComponent({
this.updateModelValue(this.funcName, newArgvs);
},
updateFuncName(value) {
//
const newArgvs = [];
//
this.commonConfig.forEach((_, index) => {
newArgvs[index] = this.argvs[index];
});
// 使
this.getSelectSubCommand(value)?.config?.forEach((config, index) => {
newArgvs[this.commonConfig.length + index] = config.defaultValue;
});
this.updateModelValue(value, newArgvs, true);
},
generateCode(funcName, argvs) {
if (this.localCommand.isExpression) {
return argvs.join("");
@ -175,18 +177,31 @@ export default defineComponent({
}
return argvs;
},
getSummary(argvs) {
getAllInputValues(argvs) {
const flatArgvs = [];
argvs.forEach((item) => {
if (isVarInputVal(item) && item.value) {
flatArgvs.push(stringifyVarInputVal(item));
} else if (typeof item === "number") {
flatArgvs.push(item.toString());
} else if (Array.isArray(item)) {
flatArgvs.push(...this.getAllInputValues(item));
} else if (typeof item === "object") {
flatArgvs.push(...this.getAllInputValues(Object.values(item)));
}
});
return flatArgvs;
},
getSummary(funcName, argvs) {
// header
const funcNameLabel = this.getSelectSubCommand()?.label;
const funcNameLabel = this.getSelectSubCommand(funcName)?.label;
const subFeature = funcNameLabel ? `${funcNameLabel} ` : "";
const allArgvs = argvs
.filter((item) => item != null && item != "")
.map((item) =>
window.lodashM.truncate(stringifyArgv(item).toString(), {
length: 30,
omission: "...",
})
);
const allArgvs = this.getAllInputValues(argvs).map((item) =>
window.lodashM.truncate(item, {
length: 30,
omission: "...",
})
);
return `${subFeature}${allArgvs.join(",")}`;
},
updateModelValue(funcName, argvs, resetOutputVariable = false) {
@ -194,7 +209,7 @@ export default defineComponent({
...this.modelValue,
value: funcName,
argvs,
summary: this.getSummary(argvs),
summary: this.getSummary(funcName, argvs),
code: this.generateCode(funcName, argvs),
};
if (resetOutputVariable) {

View File

@ -37,7 +37,7 @@ export const newEmptyVarInputVal = (type = "str") => {
* @returns {string} 处理后的字符串
*/
export const stringifyVarInputVal = (argv) => {
if (!argv.isString) return argv.value;
if (!argv.isString) return argv.value.toString();
try {
return JSON.stringify(argv.value);
} catch (e) {