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

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 <OperationCard
v-if="hasSubCommands" v-if="hasSubCommands"
:model-value="funcName" :model-value="funcName"
@update:model-value="funcName = $event" @update:model-value="updateFuncName($event)"
:options="localCommand.subCommands" :options="localCommand.subCommands"
/> />
<ParamInput :configs="localConfig" :values="argvs" @update="updateArgv" /> <ParamInput :configs="localConfig" :values="argvs" @update="updateArgv" />
@ -15,7 +15,11 @@ import { defineComponent } from "vue";
import OperationCard from "components/composer/common/OperationCard.vue"; import OperationCard from "components/composer/common/OperationCard.vue";
import ParamInput from "components/composer/param/ParamInput.vue"; import ParamInput from "components/composer/param/ParamInput.vue";
import { stringifyArgv, parseFunction } from "js/composer/formatString"; import { stringifyArgv, parseFunction } from "js/composer/formatString";
import { newVarInputVal } from "js/composer/varInputValManager"; import {
newVarInputVal,
isVarInputVal,
stringifyVarInputVal,
} from "js/composer/varInputValManager";
export default defineComponent({ export default defineComponent({
name: "MultiParams", name: "MultiParams",
@ -59,27 +63,9 @@ export default defineComponent({
defaultArgvs() { defaultArgvs() {
return this.localConfig.map((item) => item.value); return this.localConfig.map((item) => item.value);
}, },
funcName: { funcName() {
get() {
return this.modelValue.value; 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);
},
},
argvs() { argvs() {
return ( return (
this.modelValue.argvs || this.parseCodeToArgvs(this.modelValue.code) this.modelValue.argvs || this.parseCodeToArgvs(this.modelValue.code)
@ -101,6 +87,22 @@ export default defineComponent({
this.updateModelValue(this.funcName, newArgvs); 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) { generateCode(funcName, argvs) {
if (this.localCommand.isExpression) { if (this.localCommand.isExpression) {
return argvs.join(""); return argvs.join("");
@ -175,14 +177,27 @@ export default defineComponent({
} }
return argvs; 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 // header
const funcNameLabel = this.getSelectSubCommand()?.label; const funcNameLabel = this.getSelectSubCommand(funcName)?.label;
const subFeature = funcNameLabel ? `${funcNameLabel} ` : ""; const subFeature = funcNameLabel ? `${funcNameLabel} ` : "";
const allArgvs = argvs const allArgvs = this.getAllInputValues(argvs).map((item) =>
.filter((item) => item != null && item != "") window.lodashM.truncate(item, {
.map((item) =>
window.lodashM.truncate(stringifyArgv(item).toString(), {
length: 30, length: 30,
omission: "...", omission: "...",
}) })
@ -194,7 +209,7 @@ export default defineComponent({
...this.modelValue, ...this.modelValue,
value: funcName, value: funcName,
argvs, argvs,
summary: this.getSummary(argvs), summary: this.getSummary(funcName, argvs),
code: this.generateCode(funcName, argvs), code: this.generateCode(funcName, argvs),
}; };
if (resetOutputVariable) { if (resetOutputVariable) {

View File

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