diff --git a/backend/.idea/workspace.xml b/backend/.idea/workspace.xml
index 1ee79b4..18dc05c 100644
--- a/backend/.idea/workspace.xml
+++ b/backend/.idea/workspace.xml
@@ -20,9 +20,18 @@
+
+
+
+
+
+
+
+
+
@@ -91,7 +100,7 @@
-
+
@@ -111,7 +120,7 @@
-
+
@@ -121,8 +130,8 @@
-
-
+
+
@@ -132,8 +141,8 @@
-
-
+
+
@@ -143,8 +152,8 @@
-
-
+
+
@@ -154,8 +163,8 @@
-
-
+
+
@@ -165,8 +174,8 @@
-
-
+
+
@@ -176,8 +185,8 @@
-
-
+
+
@@ -187,8 +196,8 @@
-
-
+
+
@@ -198,8 +207,8 @@
-
-
+
+
@@ -209,8 +218,8 @@
-
-
+
+
@@ -220,8 +229,8 @@
-
-
+
+
@@ -231,8 +240,8 @@
-
-
+
+
@@ -242,8 +251,8 @@
-
-
+
+
@@ -253,8 +262,8 @@
-
-
+
+
@@ -264,8 +273,8 @@
-
-
+
+
@@ -275,8 +284,8 @@
-
-
+
+
@@ -286,7 +295,7 @@
-
+
diff --git a/backend/sub-store.js b/backend/sub-store.js
index fb10f45..e14252c 100644
--- a/backend/sub-store.js
+++ b/backend/sub-store.js
@@ -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;
})
diff --git a/web/src/components/KeywordDeleteOperator.vue b/web/src/components/KeywordDeleteOperator.vue
new file mode 100644
index 0000000..98d99ec
--- /dev/null
+++ b/web/src/components/KeywordDeleteOperator.vue
@@ -0,0 +1,102 @@
+
+
+
+ filter_list
+ 关键词删除
+
+
+ keyboard_arrow_up
+
+
+ keyboard_arrow_down
+
+
+ mdi-delete
+
+
+
+
+ help
+
+
+
+
+ 关键词删除
+
+
+ 删除节点名中的关键词
+
+
+
+
+
+ 关键词
+
+
+ {{ keyword }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/components/KeywordFilter.vue b/web/src/components/KeywordFilter.vue
index adb1a22..7970e08 100644
--- a/web/src/components/KeywordFilter.vue
+++ b/web/src/components/KeywordFilter.vue
@@ -4,6 +4,12 @@
filter_list
关键词过滤
+
+ keyboard_arrow_up
+
+
+ keyboard_arrow_down
+
mdi-delete
diff --git a/web/src/components/KeywordRename.vue b/web/src/components/KeywordRename.vue
deleted file mode 100644
index 15020d2..0000000
--- a/web/src/components/KeywordRename.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/web/src/components/KeywordRenameOperator.vue b/web/src/components/KeywordRenameOperator.vue
new file mode 100644
index 0000000..df97ade
--- /dev/null
+++ b/web/src/components/KeywordRenameOperator.vue
@@ -0,0 +1,127 @@
+
+
+
+ filter_list
+ 关键词重命名
+
+
+ keyboard_arrow_up
+
+
+ keyboard_arrow_down
+
+
+ mdi-delete
+
+
+
+
+ help
+
+
+
+
+ 关键词重命名
+
+
+ 替换节点名中的关键词。
+
+
+
+
+
+ 关键词
+
+
+ {{ chip }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/components/KeywordSort.vue b/web/src/components/KeywordSortOperator.vue
similarity index 97%
rename from web/src/components/KeywordSort.vue
rename to web/src/components/KeywordSortOperator.vue
index 2ec9da3..f384fea 100644
--- a/web/src/components/KeywordSort.vue
+++ b/web/src/components/KeywordSortOperator.vue
@@ -18,7 +18,7 @@
关键词排序
- 根据给出的关键词的顺序对节点进行排序。
+ 根据给出的关键词的顺序对节点进行排序,没有出现的关键词将会按照正序排列。
diff --git a/web/src/components/RegexDeleteOperator.vue b/web/src/components/RegexDeleteOperator.vue
new file mode 100644
index 0000000..83c1521
--- /dev/null
+++ b/web/src/components/RegexDeleteOperator.vue
@@ -0,0 +1,105 @@
+
+
+
+ code
+ 正则删除
+
+
+ keyboard_arrow_up
+
+
+ keyboard_arrow_down
+
+
+ mdi-delete
+
+
+
+
+ help
+
+
+
+
+ 正则删除
+
+
+ 根据正则表达式删除节点名中的字段,注意正则表达式需要注意转义。
+
这里是一个合法的正则表达式:
+
+ IEPL|IPLC
+
+
+
+
+
+ 正则表达式
+
+
+ {{ regex }}
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/components/RegexFilter.vue b/web/src/components/RegexFilter.vue
index b474db5..26fdaab 100644
--- a/web/src/components/RegexFilter.vue
+++ b/web/src/components/RegexFilter.vue
@@ -4,6 +4,12 @@
code
正则过滤
+
+ keyboard_arrow_up
+
+
+ keyboard_arrow_down
+
mdi-delete
diff --git a/web/src/components/RegexRename.vue b/web/src/components/RegexRename.vue
deleted file mode 100644
index bf5723f..0000000
--- a/web/src/components/RegexRename.vue
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/web/src/components/RegexRenameOperator.vue b/web/src/components/RegexRenameOperator.vue
new file mode 100644
index 0000000..ced5d55
--- /dev/null
+++ b/web/src/components/RegexRenameOperator.vue
@@ -0,0 +1,127 @@
+
+
+
+ filter_list
+ 正则重命名
+
+
+ keyboard_arrow_up
+
+
+ keyboard_arrow_down
+
+
+ mdi-delete
+
+
+
+
+ help
+
+
+
+
+ 正则重命名
+
+
+ 使用替换节点名中的字段。
+
+
+
+
+
+ 正则表达式
+
+
+ {{ chip }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/web/src/components/RegionFilter.vue b/web/src/components/RegionFilter.vue
index 22b3107..55810ce 100644
--- a/web/src/components/RegionFilter.vue
+++ b/web/src/components/RegionFilter.vue
@@ -4,6 +4,12 @@
flag
区域过滤
+
+ keyboard_arrow_up
+
+
+ keyboard_arrow_down
+
mdi-delete
@@ -82,7 +88,6 @@ export default {
selection() {
this.$emit("dataChanged", {
idx: this.idx,
- type: "Region Filter",
args: this.selection
})
}
diff --git a/web/src/components/Sort.vue b/web/src/components/SortOperator.vue
similarity index 64%
rename from web/src/components/Sort.vue
rename to web/src/components/SortOperator.vue
index 9b7602a..11ea471 100644
--- a/web/src/components/Sort.vue
+++ b/web/src/components/SortOperator.vue
@@ -4,6 +4,12 @@
sort_by_alpha
节点排序
+
+ keyboard_arrow_up
+
+
+ keyboard_arrow_down
+
mdi-delete
@@ -28,13 +34,13 @@
-
+
-
+
-
+
@@ -44,11 +50,25 @@
diff --git a/web/src/components/TypeFilter.vue b/web/src/components/TypeFilter.vue
index 7258576..8be9d38 100644
--- a/web/src/components/TypeFilter.vue
+++ b/web/src/components/TypeFilter.vue
@@ -4,6 +4,12 @@
cloud_circle
节点类型过滤
+
+ keyboard_arrow_up
+
+
+ keyboard_arrow_down
+
mdi-delete
diff --git a/web/src/config.js b/web/src/config.js
index 77f362b..33c10f1 100644
--- a/web/src/config.js
+++ b/web/src/config.js
@@ -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`;
\ No newline at end of file
diff --git a/web/src/views/SubEditor.vue b/web/src/views/SubEditor.vue
index 6cd5a42..abb64e7 100644
--- a/web/src/views/SubEditor.vue
+++ b/web/src/views/SubEditor.vue
@@ -163,6 +163,8 @@
:args="p.args"
@dataChanged="dataChanged"
@deleteProcess="deleteProcess"
+ @up="moveUp"
+ @down="moveDown"
>
@@ -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]);
}
}
}