添加四个重命名

This commit is contained in:
Peng-YM 2020-09-01 10:11:02 +08:00
parent 4873c6bb3c
commit b2f9eb9989
16 changed files with 607 additions and 72 deletions

View File

@ -20,9 +20,18 @@
</component>
<component name="ChangeListManager">
<list default="true" id="8b97a098-48b2-4e64-a9ef-522fe2d30b52" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/../web/src/components/KeywordDeleteOperator.vue" afterDir="false" />
<change afterPath="$PROJECT_DIR$/../web/src/components/KeywordRenameOperator.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/sub-store.js" beforeDir="false" afterPath="$PROJECT_DIR$/sub-store.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../web/src/components/KeywordFilter.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../web/src/components/KeywordFilter.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../web/src/components/KeywordRename.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../web/src/components/RegexDeleteOperator.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../web/src/components/KeywordSort.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../web/src/components/KeywordSortOperator.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../web/src/components/RegexFilter.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../web/src/components/RegexFilter.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../web/src/components/RegexRename.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../web/src/components/RegexRenameOperator.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../web/src/components/RegionFilter.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../web/src/components/RegionFilter.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../web/src/components/Sort.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../web/src/components/SortOperator.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../web/src/components/TypeFilter.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../web/src/components/TypeFilter.vue" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../web/src/config.js" beforeDir="false" afterPath="$PROJECT_DIR$/../web/src/config.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../web/src/views/SubEditor.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../web/src/views/SubEditor.vue" afterDir="false" />
</list>
@ -91,7 +100,7 @@
<workItem from="1598876594229" duration="1662000" />
<workItem from="1598887302218" duration="3200000" />
<workItem from="1598898694400" duration="1336000" />
<workItem from="1598900239005" duration="2289000" />
<workItem from="1598900239005" duration="4051000" />
</task>
<servers />
</component>
@ -111,7 +120,7 @@
<option name="oldMeFiltersMigrated" value="true" />
</component>
<component name="WindowStateProjectService">
<state width="1284" height="374" key="GridCell.Tab.0.bottom" timestamp="1598902052341">
<state width="840" height="374" key="GridCell.Tab.0.bottom" timestamp="1598922564717">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.0.bottom/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358068" />
@ -121,8 +130,8 @@
<state width="849" height="374" key="GridCell.Tab.0.bottom/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847575" />
<state width="849" height="374" key="GridCell.Tab.0.bottom/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992684" />
<state width="849" height="374" key="GridCell.Tab.0.bottom/67.23.1725.1097@67.23.1725.1097" timestamp="1598900393008" />
<state width="1284" height="374" key="GridCell.Tab.0.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052341" />
<state width="1284" height="374" key="GridCell.Tab.0.center" timestamp="1598902052340">
<state width="840" height="374" key="GridCell.Tab.0.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564717" />
<state width="840" height="374" key="GridCell.Tab.0.center" timestamp="1598922564716">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.0.center/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358067" />
@ -132,8 +141,8 @@
<state width="849" height="374" key="GridCell.Tab.0.center/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847574" />
<state width="849" height="374" key="GridCell.Tab.0.center/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992684" />
<state width="849" height="374" key="GridCell.Tab.0.center/67.23.1725.1097@67.23.1725.1097" timestamp="1598900393007" />
<state width="1284" height="374" key="GridCell.Tab.0.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052340" />
<state width="1284" height="374" key="GridCell.Tab.0.left" timestamp="1598902052334">
<state width="840" height="374" key="GridCell.Tab.0.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564716" />
<state width="840" height="374" key="GridCell.Tab.0.left" timestamp="1598922564716">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.0.left/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358067" />
@ -143,8 +152,8 @@
<state width="849" height="374" key="GridCell.Tab.0.left/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847574" />
<state width="849" height="374" key="GridCell.Tab.0.left/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992683" />
<state width="849" height="374" key="GridCell.Tab.0.left/67.23.1725.1097@67.23.1725.1097" timestamp="1598900393005" />
<state width="1284" height="374" key="GridCell.Tab.0.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052334" />
<state width="1284" height="374" key="GridCell.Tab.0.right" timestamp="1598902052341">
<state width="840" height="374" key="GridCell.Tab.0.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564716" />
<state width="840" height="374" key="GridCell.Tab.0.right" timestamp="1598922564717">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.0.right/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358068" />
@ -154,8 +163,8 @@
<state width="849" height="374" key="GridCell.Tab.0.right/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847575" />
<state width="849" height="374" key="GridCell.Tab.0.right/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992684" />
<state width="849" height="374" key="GridCell.Tab.0.right/67.23.1725.1097@67.23.1725.1097" timestamp="1598900393007" />
<state width="1284" height="374" key="GridCell.Tab.0.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052341" />
<state width="1284" height="374" key="GridCell.Tab.1.bottom" timestamp="1598902052222">
<state width="840" height="374" key="GridCell.Tab.0.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564717" />
<state width="840" height="374" key="GridCell.Tab.1.bottom" timestamp="1598922564621">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.1.bottom/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358069" />
@ -165,8 +174,8 @@
<state width="849" height="374" key="GridCell.Tab.1.bottom/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847575" />
<state width="849" height="374" key="GridCell.Tab.1.bottom/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992587" />
<state width="849" height="374" key="GridCell.Tab.1.bottom/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392856" />
<state width="1284" height="374" key="GridCell.Tab.1.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052222" />
<state width="1284" height="374" key="GridCell.Tab.1.center" timestamp="1598902052221">
<state width="840" height="374" key="GridCell.Tab.1.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564621" />
<state width="840" height="374" key="GridCell.Tab.1.center" timestamp="1598922564621">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.1.center/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358069" />
@ -176,8 +185,8 @@
<state width="849" height="374" key="GridCell.Tab.1.center/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847575" />
<state width="849" height="374" key="GridCell.Tab.1.center/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992587" />
<state width="849" height="374" key="GridCell.Tab.1.center/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392855" />
<state width="1284" height="374" key="GridCell.Tab.1.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052221" />
<state width="1284" height="374" key="GridCell.Tab.1.left" timestamp="1598902052221">
<state width="840" height="374" key="GridCell.Tab.1.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564621" />
<state width="840" height="374" key="GridCell.Tab.1.left" timestamp="1598922564621">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.1.left/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358069" />
@ -187,8 +196,8 @@
<state width="849" height="374" key="GridCell.Tab.1.left/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847575" />
<state width="849" height="374" key="GridCell.Tab.1.left/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992587" />
<state width="849" height="374" key="GridCell.Tab.1.left/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392855" />
<state width="1284" height="374" key="GridCell.Tab.1.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052221" />
<state width="1284" height="374" key="GridCell.Tab.1.right" timestamp="1598902052221">
<state width="840" height="374" key="GridCell.Tab.1.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564621" />
<state width="840" height="374" key="GridCell.Tab.1.right" timestamp="1598922564621">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.1.right/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358069" />
@ -198,8 +207,8 @@
<state width="849" height="374" key="GridCell.Tab.1.right/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847575" />
<state width="849" height="374" key="GridCell.Tab.1.right/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992587" />
<state width="849" height="374" key="GridCell.Tab.1.right/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392855" />
<state width="1284" height="374" key="GridCell.Tab.1.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052221" />
<state width="1284" height="374" key="GridCell.Tab.2.bottom" timestamp="1598902052222">
<state width="840" height="374" key="GridCell.Tab.1.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564621" />
<state width="840" height="374" key="GridCell.Tab.2.bottom" timestamp="1598922564622">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.2.bottom/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358071" />
@ -209,8 +218,8 @@
<state width="849" height="374" key="GridCell.Tab.2.bottom/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847576" />
<state width="849" height="374" key="GridCell.Tab.2.bottom/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992588" />
<state width="849" height="374" key="GridCell.Tab.2.bottom/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392857" />
<state width="1284" height="374" key="GridCell.Tab.2.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052222" />
<state width="1284" height="374" key="GridCell.Tab.2.center" timestamp="1598902052222">
<state width="840" height="374" key="GridCell.Tab.2.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564622" />
<state width="840" height="374" key="GridCell.Tab.2.center" timestamp="1598922564622">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.2.center/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358070" />
@ -220,8 +229,8 @@
<state width="849" height="374" key="GridCell.Tab.2.center/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847576" />
<state width="849" height="374" key="GridCell.Tab.2.center/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992588" />
<state width="849" height="374" key="GridCell.Tab.2.center/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392856" />
<state width="1284" height="374" key="GridCell.Tab.2.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052222" />
<state width="1284" height="374" key="GridCell.Tab.2.left" timestamp="1598902052222">
<state width="840" height="374" key="GridCell.Tab.2.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564622" />
<state width="840" height="374" key="GridCell.Tab.2.left" timestamp="1598922564622">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.2.left/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358070" />
@ -231,8 +240,8 @@
<state width="849" height="374" key="GridCell.Tab.2.left/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847576" />
<state width="849" height="374" key="GridCell.Tab.2.left/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992587" />
<state width="849" height="374" key="GridCell.Tab.2.left/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392856" />
<state width="1284" height="374" key="GridCell.Tab.2.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052222" />
<state width="1284" height="374" key="GridCell.Tab.2.right" timestamp="1598902052222">
<state width="840" height="374" key="GridCell.Tab.2.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564622" />
<state width="840" height="374" key="GridCell.Tab.2.right" timestamp="1598922564622">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.2.right/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358070" />
@ -242,8 +251,8 @@
<state width="849" height="374" key="GridCell.Tab.2.right/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847576" />
<state width="849" height="374" key="GridCell.Tab.2.right/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992588" />
<state width="849" height="374" key="GridCell.Tab.2.right/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392857" />
<state width="1284" height="374" key="GridCell.Tab.2.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052222" />
<state width="1284" height="374" key="GridCell.Tab.3.bottom" timestamp="1598902052223">
<state width="840" height="374" key="GridCell.Tab.2.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564622" />
<state width="840" height="374" key="GridCell.Tab.3.bottom" timestamp="1598922564623">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.3.bottom/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358072" />
@ -253,8 +262,8 @@
<state width="849" height="374" key="GridCell.Tab.3.bottom/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847577" />
<state width="849" height="374" key="GridCell.Tab.3.bottom/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992588" />
<state width="849" height="374" key="GridCell.Tab.3.bottom/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392858" />
<state width="1284" height="374" key="GridCell.Tab.3.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052223" />
<state width="1284" height="374" key="GridCell.Tab.3.center" timestamp="1598902052223">
<state width="840" height="374" key="GridCell.Tab.3.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564623" />
<state width="840" height="374" key="GridCell.Tab.3.center" timestamp="1598922564622">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.3.center/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358071" />
@ -264,8 +273,8 @@
<state width="849" height="374" key="GridCell.Tab.3.center/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847576" />
<state width="849" height="374" key="GridCell.Tab.3.center/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992588" />
<state width="849" height="374" key="GridCell.Tab.3.center/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392857" />
<state width="1284" height="374" key="GridCell.Tab.3.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052223" />
<state width="1284" height="374" key="GridCell.Tab.3.left" timestamp="1598902052222">
<state width="840" height="374" key="GridCell.Tab.3.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564622" />
<state width="840" height="374" key="GridCell.Tab.3.left" timestamp="1598922564622">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.3.left/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358071" />
@ -275,8 +284,8 @@
<state width="849" height="374" key="GridCell.Tab.3.left/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847576" />
<state width="849" height="374" key="GridCell.Tab.3.left/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992588" />
<state width="849" height="374" key="GridCell.Tab.3.left/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392857" />
<state width="1284" height="374" key="GridCell.Tab.3.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052222" />
<state width="1284" height="374" key="GridCell.Tab.3.right" timestamp="1598902052223">
<state width="840" height="374" key="GridCell.Tab.3.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564622" />
<state width="840" height="374" key="GridCell.Tab.3.right" timestamp="1598922564622">
<screen x="70" y="23" width="1722" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.3.right/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358072" />
@ -286,7 +295,7 @@
<state width="849" height="374" key="GridCell.Tab.3.right/60.23.1732.1097@60.23.1732.1097" timestamp="1598872847577" />
<state width="849" height="374" key="GridCell.Tab.3.right/62.23.1730.1097@62.23.1730.1097" timestamp="1598899992588" />
<state width="849" height="374" key="GridCell.Tab.3.right/67.23.1725.1097@67.23.1725.1097" timestamp="1598900392858" />
<state width="1284" height="374" key="GridCell.Tab.3.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598902052223" />
<state width="840" height="374" key="GridCell.Tab.3.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598922564622" />
<state x="161" y="268" width="670" height="676" key="search.everywhere.popup" timestamp="1598787117227">
<screen x="53" y="23" width="1739" height="1097" />
</state>

View File

@ -192,7 +192,7 @@ async function parseSub(sub, platform) {
} else if (item.type.indexOf("Operator") !== -1) {
const operator = AVAILABLE_OPERATORS[item.type];
if (operator) {
$operator.addOperators(operator(...(item.args || [])));
$operator.addOperators(operator(item.args));
proxies = $operator.process(proxies);
$.log(`Applying operator "${item.type}" with arguments: \n >>> ${item.args || "None"}`);
}
@ -1587,7 +1587,7 @@ function KeywordRenameOperator(keywords) {
func: proxies => {
return proxies.map(proxy => {
for (const {old, now} of keywords) {
proxy.name = proxy.name.replace(old, now);
proxy.name = proxy.name.replace(old, now).trim();
}
return proxy;
})
@ -1603,7 +1603,7 @@ function RegexRenameOperator(regex) {
func: proxies => {
return proxies.map(proxy => {
for (const {expr, now} of regex) {
proxy.name = proxy.name.replace(new RegExp(expr, "g"), now);
proxy.name = proxy.name.replace(new RegExp(expr, "g"), now).trim();
}
return proxy;
})

View File

@ -0,0 +1,102 @@
<template>
<v-card class="ml-1 mr-1 mb-1 mt-1">
<v-card-title>
<v-icon left color="primary">filter_list</v-icon>
关键词删除
<v-spacer></v-spacer>
<v-btn icon @click="$emit('up', idx)">
<v-icon>keyboard_arrow_up</v-icon>
</v-btn>
<v-btn icon @click="$emit('down', idx)">
<v-icon>keyboard_arrow_down</v-icon>
</v-btn>
<v-btn icon @click="$emit('deleteProcess', idx)">
<v-icon color="error">mdi-delete</v-icon>
</v-btn>
<v-dialog>
<template #activator="{on}">
<v-btn icon v-on="on">
<v-icon>help</v-icon>
</v-btn>
</template>
<v-card>
<v-card-title class="headline">
关键词删除
</v-card-title>
<v-card-text>
删除节点名中的关键词
</v-card-text>
</v-card>
</v-dialog>
</v-card-title>
<v-card-text>
关键词
<v-chip-group>
<v-chip
close
close-icon="mdi-delete"
v-for="(keyword, idx) in keywords"
:key="idx"
@click:close="remove(idx)"
>
{{ keyword }}
</v-chip>
</v-chip-group>
<v-text-field
placeholder="添加新关键词"
solo
v-model="form.keyword"
append-icon="mdi-send"
@click:append="add(form.keyword)"
@keyup.enter="add(form.keyword)"
/>
</v-card-text>
</v-card>
</template>
<script>
export default {
props: ['args'],
data: function () {
return {
idx: this.$vnode.key,
mode: "IN",
form: {
keyword: ""
},
keywords: []
}
},
methods: {
add(keyword) {
if (keyword) {
this.keywords.push(keyword);
this.form.keyword = "";
} else {
this.$store.commit("SET_ERROR_MESSAGE", "关键词不能为空!");
}
},
remove(idx) {
this.keywords.splice(idx, 1);
},
save() {
this.$emit("dataChanged", {
idx: this.idx,
args: this.keywords
});
}
},
created() {
this.keywords = this.args || [];
},
watch: {
keywords() {
this.save();
}
},
}
</script>
<style scoped>
</style>

View File

@ -4,6 +4,12 @@
<v-icon left color="primary">filter_list</v-icon>
关键词过滤
<v-spacer></v-spacer>
<v-btn icon @click="$emit('up', idx)">
<v-icon>keyboard_arrow_up</v-icon>
</v-btn>
<v-btn icon @click="$emit('down', idx)">
<v-icon>keyboard_arrow_down</v-icon>
</v-btn>
<v-btn icon @click="$emit('deleteProcess', idx)">
<v-icon color="error">mdi-delete</v-icon>
</v-btn>

View File

@ -1,13 +0,0 @@
<template>
</template>
<script>
export default {
name: "KeywordRename"
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,127 @@
<template>
<v-card class="ml-1 mr-1 mb-1 mt-1">
<v-card-title>
<v-icon left color="primary">filter_list</v-icon>
关键词重命名
<v-spacer></v-spacer>
<v-btn icon @click="$emit('up', idx)">
<v-icon>keyboard_arrow_up</v-icon>
</v-btn>
<v-btn icon @click="$emit('down', idx)">
<v-icon>keyboard_arrow_down</v-icon>
</v-btn>
<v-btn icon @click="$emit('deleteProcess', idx)">
<v-icon color="error">mdi-delete</v-icon>
</v-btn>
<v-dialog>
<template #activator="{on}">
<v-btn icon v-on="on">
<v-icon>help</v-icon>
</v-btn>
</template>
<v-card>
<v-card-title class="headline">
关键词重命名
</v-card-title>
<v-card-text>
替换节点名中的关键词
</v-card-text>
</v-card>
</v-dialog>
</v-card-title>
<v-card-text>
关键词
<v-chip-group>
<v-chip
close
close-icon="mdi-delete"
v-for="(chip, idx) in chips"
:key="idx"
@click:close="remove(idx)"
>
{{ chip }}
</v-chip>
</v-chip-group>
<v-row>
<v-col>
<v-text-field
placeholder="关键词"
solo
v-model="form.keyword"
/>
</v-col>
<v-col>
<v-text-field
placeholder="替换为"
solo
v-model="form.replace"
append-icon="mdi-send"
@click:append="add"
@keyup.enter="add"
/>
</v-col>
</v-row>
</v-card-text>
</v-card>
</template>
<script>
export default {
props: ['args'],
data: function () {
return {
idx: this.$vnode.key,
mode: "IN",
form: {
keyword: "",
replace: ""
},
keywords: []
}
},
computed: {
chips() {
return this.keywords.map(k => {
const {old, now} = k;
return `${old}${now}`;
});
}
},
methods: {
add() {
if (this.form.keyword && this.form.replace) {
this.keywords.push({
old: this.form.keyword,
now: this.form.replace
});
this.form.keyword = "";
this.form.replace = "";
} else {
this.$store.commit("SET_ERROR_MESSAGE", "关键词不能为空!");
}
},
remove(idx) {
this.keywords.splice(idx, 1);
},
save() {
this.$emit("dataChanged", {
idx: this.idx,
args: this.keywords
});
}
},
created() {
this.keywords = this.args || [];
},
watch: {
keywords() {
this.save();
}
},
}
</script>
<style scoped>
</style>

View File

@ -18,7 +18,7 @@
关键词排序
</v-card-title>
<v-card-text>
根据给出的关键词的顺序对节点进行排序
根据给出的关键词的顺序对节点进行排序没有出现的关键词将会按照正序排列
</v-card-text>
</v-card>
</v-dialog>

View File

@ -0,0 +1,105 @@
<template>
<v-card class="ml-1 mr-1 mb-1 mt-1">
<v-card-title>
<v-icon left color="primary">code</v-icon>
正则删除
<v-spacer></v-spacer>
<v-btn icon @click="$emit('up', idx)">
<v-icon>keyboard_arrow_up</v-icon>
</v-btn>
<v-btn icon @click="$emit('down', idx)">
<v-icon>keyboard_arrow_down</v-icon>
</v-btn>
<v-btn icon @click="$emit('deleteProcess', idx)">
<v-icon color="error">mdi-delete</v-icon>
</v-btn>
<v-dialog>
<template #activator="{on}">
<v-btn icon v-on="on">
<v-icon>help</v-icon>
</v-btn>
</template>
<v-card>
<v-card-title class="headline">
正则删除
</v-card-title>
<v-card-text>
根据正则表达式删除节点名中的字段注意正则表达式需要注意转义
<br/>这里是一个合法的正则表达式:
<br/>
<b>IEPL|IPLC</b>
</v-card-text>
</v-card>
</v-dialog>
</v-card-title>
<v-card-text>
正则表达式
<v-chip-group>
<v-chip
close
close-icon="mdi-delete"
v-for="(regex, idx) in regexps"
:key="idx"
@click:close="remove(idx)"
>
{{ regex }}
</v-chip>
</v-chip-group>
<v-text-field
placeholder="添加新正则表达式"
solo
v-model="form.regex"
append-icon="mdi-send"
@click:append="add(form.regex)"
@keyup.enter="add(form.regex)"
/>
</v-card-text>
</v-card>
</template>
<script>
export default {
props: ['args'],
data: function () {
return {
mode: "IN",
form: {
regex: ""
},
regexps: [],
idx: this.$vnode.key,
}
},
methods: {
add(keyword) {
if (keyword) {
this.regexps.push(keyword);
this.form.regex = "";
} else {
this.$store.commit("SET_ERROR_MESSAGE", "正则表达式不能为空!");
}
},
remove(idx) {
this.regexps.splice(idx, 1);
},
save() {
this.$emit("dataChanged", {
idx: this.idx,
args: this.regexps
});
}
},
watch: {
regexps() {
this.save();
}
},
created() {
this.regexps = this.args || [];
}
}
</script>
<style scoped>
</style>

View File

@ -4,6 +4,12 @@
<v-icon left color="primary">code</v-icon>
正则过滤
<v-spacer></v-spacer>
<v-btn icon @click="$emit('up', idx)">
<v-icon>keyboard_arrow_up</v-icon>
</v-btn>
<v-btn icon @click="$emit('down', idx)">
<v-icon>keyboard_arrow_down</v-icon>
</v-btn>
<v-btn icon @click="$emit('deleteProcess', idx)">
<v-icon color="error">mdi-delete</v-icon>
</v-btn>

View File

@ -1,13 +0,0 @@
<template>
</template>
<script>
export default {
name: "RegexRename"
}
</script>
<style scoped>
</style>

View File

@ -0,0 +1,127 @@
<template>
<v-card class="ml-1 mr-1 mb-1 mt-1">
<v-card-title>
<v-icon left color="primary">filter_list</v-icon>
正则重命名
<v-spacer></v-spacer>
<v-btn icon @click="$emit('up', idx)">
<v-icon>keyboard_arrow_up</v-icon>
</v-btn>
<v-btn icon @click="$emit('down', idx)">
<v-icon>keyboard_arrow_down</v-icon>
</v-btn>
<v-btn icon @click="$emit('deleteProcess', idx)">
<v-icon color="error">mdi-delete</v-icon>
</v-btn>
<v-dialog>
<template #activator="{on}">
<v-btn icon v-on="on">
<v-icon>help</v-icon>
</v-btn>
</template>
<v-card>
<v-card-title class="headline">
正则重命名
</v-card-title>
<v-card-text>
使用替换节点名中的字段
</v-card-text>
</v-card>
</v-dialog>
</v-card-title>
<v-card-text>
正则表达式
<v-chip-group>
<v-chip
close
close-icon="mdi-delete"
v-for="(chip, idx) in chips"
:key="idx"
@click:close="remove(idx)"
>
{{ chip }}
</v-chip>
</v-chip-group>
<v-row>
<v-col>
<v-text-field
placeholder="关键词"
solo
v-model="form.regex"
/>
</v-col>
<v-col>
<v-text-field
placeholder="替换为"
solo
v-model="form.replace"
append-icon="mdi-send"
@click:append="add"
@keyup.enter="add"
/>
</v-col>
</v-row>
</v-card-text>
</v-card>
</template>
<script>
export default {
props: ['args'],
data: function () {
return {
idx: this.$vnode.key,
mode: "IN",
form: {
regex: "",
replace: ""
},
regexps: []
}
},
computed: {
chips() {
return this.regexps.map(k => {
const {expr, now} = k;
return `${expr}${now}`;
});
}
},
methods: {
add() {
if (this.form.regex && this.form.replace) {
this.regexps.push({
expr: this.form.regex,
now: this.form.replace
});
this.form.regex = "";
this.form.replace = "";
} else {
this.$store.commit("SET_ERROR_MESSAGE", "关键词不能为空!");
}
},
remove(idx) {
this.regexps.splice(idx, 1);
},
save() {
this.$emit("dataChanged", {
idx: this.idx,
args: this.regexps
});
}
},
created() {
this.regexps = this.args || [];
},
watch: {
regexps() {
this.save();
}
},
}
</script>
<style scoped>
</style>

View File

@ -4,6 +4,12 @@
<v-icon left color="primary">flag</v-icon>
区域过滤
<v-spacer></v-spacer>
<v-btn icon @click="$emit('up', idx)">
<v-icon>keyboard_arrow_up</v-icon>
</v-btn>
<v-btn icon @click="$emit('down', idx)">
<v-icon>keyboard_arrow_down</v-icon>
</v-btn>
<v-btn icon @click="$emit('deleteProcess', idx)">
<v-icon color="error">mdi-delete</v-icon>
</v-btn>
@ -82,7 +88,6 @@ export default {
selection() {
this.$emit("dataChanged", {
idx: this.idx,
type: "Region Filter",
args: this.selection
})
}

View File

@ -4,6 +4,12 @@
<v-icon left color="primary">sort_by_alpha</v-icon>
节点排序
<v-spacer></v-spacer>
<v-btn icon @click="$emit('up', idx)">
<v-icon>keyboard_arrow_up</v-icon>
</v-btn>
<v-btn icon @click="$emit('down', idx)">
<v-icon>keyboard_arrow_down</v-icon>
</v-btn>
<v-btn icon>
<v-icon color="error">mdi-delete</v-icon>
</v-btn>
@ -28,13 +34,13 @@
<v-radio-group v-model="mode">
<v-row>
<v-col>
<v-radio label="正序" value="ASC"/>
<v-radio label="正序" value="asc"/>
</v-col>
<v-col>
<v-radio label="逆序" value="DESC"/>
<v-radio label="逆序" value="desc"/>
</v-col>
<v-col>
<v-radio label="随机" value="RANDOM"/>
<v-radio label="随机" value="random"/>
</v-col>
</v-row>
</v-radio-group>
@ -44,11 +50,25 @@
<script>
export default {
props: ["args"],
data: function () {
return {
mode: "ASC"
idx: this.$vnode.key,
mode: "asc"
}
},
created() {
this.mode = this.args;
},
watch: {
mode() {
this.$emit("dataChanged", {
idx: this.idx,
args: this.mode
})
}
}
}
</script>

View File

@ -4,6 +4,12 @@
<v-icon left color="primary">cloud_circle</v-icon>
节点类型过滤
<v-spacer></v-spacer>
<v-btn icon @click="$emit('up', idx)">
<v-icon>keyboard_arrow_up</v-icon>
</v-btn>
<v-btn icon @click="$emit('down', idx)">
<v-icon>keyboard_arrow_down</v-icon>
</v-btn>
<v-btn icon @click="$emit('deleteProcess', idx)">
<v-icon color="error">mdi-delete</v-icon>
</v-btn>

View File

@ -1,3 +1,3 @@
const DEBUG = true;
const DEBUG = process.env.NODE_ENV === "development";
export const BACKEND_BASE = DEBUG ? `http://192.168.1.134:3000` : `https://sub.store`;

View File

@ -163,6 +163,8 @@
:args="p.args"
@dataChanged="dataChanged"
@deleteProcess="deleteProcess"
@up="moveUp"
@down="moveDown"
>
</component>
</v-card>
@ -175,6 +177,11 @@ import TypeFilter from "@/components/TypeFilter";
import RegionFilter from "@/components/RegionFilter";
import KeywordFilter from "@/components/KeywordFilter";
import RegexFilter from "@/components/RegexFilter";
import SortOperator from "@/components/SortOperator";
import KeywordRenameOperator from "@/components/KeywordRenameOperator";
import RegexRenameOperator from "@/components/RegexRenameOperator";
import KeywordDeleteOperator from "@/components/KeywordDeleteOperator";
import RegexDeleteOperator from "@/components/RegexDeleteOperator";
const AVAILABLE_PROCESSORS = {
"Type Filter": {
@ -192,11 +199,41 @@ const AVAILABLE_PROCESSORS = {
"Regex Filter": {
component: "RegexFilter",
name: "正则过滤器"
}
},
"Sort Operator": {
component: "SortOperator",
name: "节点排序"
},
"Keyword Rename Operator": {
component: "KeywordRenameOperator",
name: "关键词重命名"
},
"Regex Rename Operator": {
component: "RegexRenameOperator",
name: "正则重命名"
},
"Keyword Delete Operator": {
component: "KeywordDeleteOperator",
name: "删除关键词"
},
"Regex Delete Operator": {
component: "RegexDeleteOperator",
name: "删除正则"
},
}
export default {
components: {KeywordFilter, RegexFilter, RegionFilter, TypeFilter},
components: {
KeywordFilter,
RegexFilter,
RegionFilter,
TypeFilter,
SortOperator,
KeywordRenameOperator,
RegexRenameOperator,
KeywordDeleteOperator,
RegexDeleteOperator
},
data: function () {
return {
selectedProcess: null,
@ -274,7 +311,6 @@ export default {
},
dataChanged(content) {
console.log(`${JSON.stringify(content)}`);
this.options.process[content.idx].args = content.args;
},
@ -285,6 +321,18 @@ export default {
deleteProcess(key) {
this.options.process.splice(key, 1);
},
moveUp(index) {
if (index === 0) return;
// otherwise swap with previous one
this.options.process.splice(index - 1, 2, this.options.process[index], this.options.process[index - 1]);
},
moveDown(index) {
if (index === this.options.process.length) return;
// otherwise swap with latter one
this.options.process.splice(index, 2, this.options.process[index + 1], this.options.process[index]);
}
}
}