UI添加两个过滤器: 区域过滤器和类型过滤器

This commit is contained in:
Peng-YM 2020-08-31 21:10:36 +08:00
parent 9291c4f628
commit ea90f16e54
5 changed files with 268 additions and 79 deletions

View File

@ -20,8 +20,12 @@
</component>
<component name="ChangeListManager">
<list default="true" id="8b97a098-48b2-4e64-a9ef-522fe2d30b52" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/../web/src/components/TypeFilter.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/RegionFilter.vue" beforeDir="false" afterPath="$PROJECT_DIR$/../web/src/components/RegionFilter.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>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
@ -84,7 +88,8 @@
<workItem from="1598846615232" duration="8566000" />
<workItem from="1598859428550" duration="320000" />
<workItem from="1598860098729" duration="530000" />
<workItem from="1598861164355" duration="4516000" />
<workItem from="1598861164355" duration="5198000" />
<workItem from="1598876594229" duration="1648000" />
</task>
<servers />
</component>
@ -104,180 +109,180 @@
<option name="oldMeFiltersMigrated" value="true" />
</component>
<component name="WindowStateProjectService">
<state width="849" height="374" key="GridCell.Tab.0.bottom" timestamp="1598872112103">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.0.bottom" timestamp="1598877603951">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.0.bottom/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358068" />
<state width="850" height="374" key="GridCell.Tab.0.bottom/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773766" />
<state width="849" height="374" key="GridCell.Tab.0.bottom/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052766" />
<state width="850" height="374" key="GridCell.Tab.0.bottom/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298702" />
<state width="849" height="374" key="GridCell.Tab.0.bottom/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112103" />
<state width="849" height="374" key="GridCell.Tab.0.bottom/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634610" />
<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="1598877603951" />
<state width="843" height="374" key="GridCell.Tab.0.bottom/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390883" />
<state width="840" height="374" key="GridCell.Tab.0.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598324500703" />
<state width="849" height="374" key="GridCell.Tab.0.center" timestamp="1598872112103">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.0.center" timestamp="1598877603950">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.0.center/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358067" />
<state width="850" height="374" key="GridCell.Tab.0.center/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773766" />
<state width="849" height="374" key="GridCell.Tab.0.center/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052765" />
<state width="850" height="374" key="GridCell.Tab.0.center/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298701" />
<state width="849" height="374" key="GridCell.Tab.0.center/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112103" />
<state width="849" height="374" key="GridCell.Tab.0.center/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634610" />
<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="1598877603950" />
<state width="843" height="374" key="GridCell.Tab.0.center/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390882" />
<state width="840" height="374" key="GridCell.Tab.0.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598324500702" />
<state width="849" height="374" key="GridCell.Tab.0.left" timestamp="1598872112102">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.0.left" timestamp="1598877603950">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.0.left/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358067" />
<state width="850" height="374" key="GridCell.Tab.0.left/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773765" />
<state width="849" height="374" key="GridCell.Tab.0.left/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052763" />
<state width="850" height="374" key="GridCell.Tab.0.left/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298699" />
<state width="849" height="374" key="GridCell.Tab.0.left/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112102" />
<state width="849" height="374" key="GridCell.Tab.0.left/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634609" />
<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="1598877603950" />
<state width="843" height="374" key="GridCell.Tab.0.left/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390882" />
<state width="840" height="374" key="GridCell.Tab.0.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598324500701" />
<state width="849" height="374" key="GridCell.Tab.0.right" timestamp="1598872112103">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.0.right" timestamp="1598877603950">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.0.right/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358068" />
<state width="850" height="374" key="GridCell.Tab.0.right/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773766" />
<state width="849" height="374" key="GridCell.Tab.0.right/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052766" />
<state width="850" height="374" key="GridCell.Tab.0.right/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298701" />
<state width="849" height="374" key="GridCell.Tab.0.right/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112103" />
<state width="849" height="374" key="GridCell.Tab.0.right/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634610" />
<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="1598877603950" />
<state width="843" height="374" key="GridCell.Tab.0.right/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390883" />
<state width="840" height="374" key="GridCell.Tab.0.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598324500702" />
<state width="849" height="374" key="GridCell.Tab.1.bottom" timestamp="1598872112104">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.1.bottom" timestamp="1598877608668">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.1.bottom/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358069" />
<state width="850" height="374" key="GridCell.Tab.1.bottom/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773767" />
<state width="849" height="374" key="GridCell.Tab.1.bottom/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052626" />
<state width="850" height="374" key="GridCell.Tab.1.bottom/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298587" />
<state width="849" height="374" key="GridCell.Tab.1.bottom/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112104" />
<state width="849" height="374" key="GridCell.Tab.1.bottom/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634521" />
<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="1598877608668" />
<state width="843" height="374" key="GridCell.Tab.1.bottom/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390883" />
<state width="840" height="374" key="GridCell.Tab.1.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292666" />
<state width="849" height="374" key="GridCell.Tab.1.center" timestamp="1598872112103">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.1.center" timestamp="1598877608667">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.1.center/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358069" />
<state width="850" height="374" key="GridCell.Tab.1.center/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773766" />
<state width="849" height="374" key="GridCell.Tab.1.center/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052625" />
<state width="850" height="374" key="GridCell.Tab.1.center/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298586" />
<state width="849" height="374" key="GridCell.Tab.1.center/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112103" />
<state width="849" height="374" key="GridCell.Tab.1.center/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634520" />
<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="1598877608667" />
<state width="843" height="374" key="GridCell.Tab.1.center/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390883" />
<state width="840" height="374" key="GridCell.Tab.1.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292666" />
<state width="849" height="374" key="GridCell.Tab.1.left" timestamp="1598872112103">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.1.left" timestamp="1598877608667">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.1.left/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358069" />
<state width="850" height="374" key="GridCell.Tab.1.left/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773766" />
<state width="849" height="374" key="GridCell.Tab.1.left/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052625" />
<state width="850" height="374" key="GridCell.Tab.1.left/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298586" />
<state width="849" height="374" key="GridCell.Tab.1.left/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112103" />
<state width="849" height="374" key="GridCell.Tab.1.left/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634520" />
<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="1598877608667" />
<state width="843" height="374" key="GridCell.Tab.1.left/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390883" />
<state width="840" height="374" key="GridCell.Tab.1.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292665" />
<state width="849" height="374" key="GridCell.Tab.1.right" timestamp="1598872112104">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.1.right" timestamp="1598877608667">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.1.right/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358069" />
<state width="850" height="374" key="GridCell.Tab.1.right/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773766" />
<state width="849" height="374" key="GridCell.Tab.1.right/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052625" />
<state width="850" height="374" key="GridCell.Tab.1.right/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298587" />
<state width="849" height="374" key="GridCell.Tab.1.right/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112104" />
<state width="849" height="374" key="GridCell.Tab.1.right/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634520" />
<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="1598877608667" />
<state width="843" height="374" key="GridCell.Tab.1.right/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390883" />
<state width="840" height="374" key="GridCell.Tab.1.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292666" />
<state width="849" height="374" key="GridCell.Tab.2.bottom" timestamp="1598872112105">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.2.bottom" timestamp="1598877603856">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.2.bottom/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358071" />
<state width="850" height="374" key="GridCell.Tab.2.bottom/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773767" />
<state width="849" height="374" key="GridCell.Tab.2.bottom/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052626" />
<state width="850" height="374" key="GridCell.Tab.2.bottom/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298588" />
<state width="849" height="374" key="GridCell.Tab.2.bottom/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112105" />
<state width="849" height="374" key="GridCell.Tab.2.bottom/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634521" />
<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="1598877603856" />
<state width="843" height="374" key="GridCell.Tab.2.bottom/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390884" />
<state width="840" height="374" key="GridCell.Tab.2.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292666" />
<state width="849" height="374" key="GridCell.Tab.2.center" timestamp="1598872112104">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.2.center" timestamp="1598877603855">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.2.center/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358070" />
<state width="850" height="374" key="GridCell.Tab.2.center/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773767" />
<state width="849" height="374" key="GridCell.Tab.2.center/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052626" />
<state width="850" height="374" key="GridCell.Tab.2.center/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298587" />
<state width="849" height="374" key="GridCell.Tab.2.center/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112104" />
<state width="849" height="374" key="GridCell.Tab.2.center/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634521" />
<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="1598877603855" />
<state width="843" height="374" key="GridCell.Tab.2.center/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390884" />
<state width="840" height="374" key="GridCell.Tab.2.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292666" />
<state width="849" height="374" key="GridCell.Tab.2.left" timestamp="1598872112104">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.2.left" timestamp="1598877603855">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.2.left/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358070" />
<state width="850" height="374" key="GridCell.Tab.2.left/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773767" />
<state width="849" height="374" key="GridCell.Tab.2.left/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052626" />
<state width="850" height="374" key="GridCell.Tab.2.left/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298587" />
<state width="849" height="374" key="GridCell.Tab.2.left/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112104" />
<state width="849" height="374" key="GridCell.Tab.2.left/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634521" />
<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="1598877603855" />
<state width="843" height="374" key="GridCell.Tab.2.left/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390883" />
<state width="840" height="374" key="GridCell.Tab.2.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292666" />
<state width="849" height="374" key="GridCell.Tab.2.right" timestamp="1598872112104">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.2.right" timestamp="1598877603855">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.2.right/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358070" />
<state width="850" height="374" key="GridCell.Tab.2.right/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773767" />
<state width="849" height="374" key="GridCell.Tab.2.right/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052626" />
<state width="850" height="374" key="GridCell.Tab.2.right/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298587" />
<state width="849" height="374" key="GridCell.Tab.2.right/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112104" />
<state width="849" height="374" key="GridCell.Tab.2.right/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634521" />
<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="1598877603855" />
<state width="843" height="374" key="GridCell.Tab.2.right/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390884" />
<state width="840" height="374" key="GridCell.Tab.2.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292666" />
<state width="849" height="374" key="GridCell.Tab.3.bottom" timestamp="1598872112105">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.3.bottom" timestamp="1598877603856">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.3.bottom/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358072" />
<state width="850" height="374" key="GridCell.Tab.3.bottom/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773768" />
<state width="849" height="374" key="GridCell.Tab.3.bottom/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052627" />
<state width="850" height="374" key="GridCell.Tab.3.bottom/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298589" />
<state width="849" height="374" key="GridCell.Tab.3.bottom/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112105" />
<state width="849" height="374" key="GridCell.Tab.3.bottom/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634522" />
<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="1598877603856" />
<state width="843" height="374" key="GridCell.Tab.3.bottom/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390884" />
<state width="840" height="374" key="GridCell.Tab.3.bottom/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292667" />
<state width="849" height="374" key="GridCell.Tab.3.center" timestamp="1598872112105">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.3.center" timestamp="1598877603856">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.3.center/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358071" />
<state width="850" height="374" key="GridCell.Tab.3.center/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773768" />
<state width="849" height="374" key="GridCell.Tab.3.center/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052626" />
<state width="850" height="374" key="GridCell.Tab.3.center/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298588" />
<state width="849" height="374" key="GridCell.Tab.3.center/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112105" />
<state width="849" height="374" key="GridCell.Tab.3.center/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634522" />
<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="1598877603856" />
<state width="843" height="374" key="GridCell.Tab.3.center/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390884" />
<state width="840" height="374" key="GridCell.Tab.3.center/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292667" />
<state width="849" height="374" key="GridCell.Tab.3.left" timestamp="1598872112105">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.3.left" timestamp="1598877603856">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.3.left/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358071" />
<state width="850" height="374" key="GridCell.Tab.3.left/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773767" />
<state width="849" height="374" key="GridCell.Tab.3.left/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052626" />
<state width="850" height="374" key="GridCell.Tab.3.left/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298588" />
<state width="849" height="374" key="GridCell.Tab.3.left/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112105" />
<state width="849" height="374" key="GridCell.Tab.3.left/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634521" />
<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="1598877603856" />
<state width="843" height="374" key="GridCell.Tab.3.left/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390884" />
<state width="840" height="374" key="GridCell.Tab.3.left/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292667" />
<state width="849" height="374" key="GridCell.Tab.3.right" timestamp="1598872112105">
<screen x="60" y="23" width="1732" height="1097" />
<state width="849" height="374" key="GridCell.Tab.3.right" timestamp="1598877603856">
<screen x="62" y="23" width="1730" height="1097" />
</state>
<state width="840" height="374" key="GridCell.Tab.3.right/0.0.1792.1120@0.0.1792.1120" timestamp="1598115358072" />
<state width="850" height="374" key="GridCell.Tab.3.right/51.23.1741.1097@51.23.1741.1097" timestamp="1598805773768" />
<state width="849" height="374" key="GridCell.Tab.3.right/53.23.1739.1097@53.23.1739.1097" timestamp="1598865052627" />
<state width="850" height="374" key="GridCell.Tab.3.right/55.23.1737.1097@55.23.1737.1097" timestamp="1598850298588" />
<state width="849" height="374" key="GridCell.Tab.3.right/60.23.1732.1097@60.23.1732.1097" timestamp="1598872112105" />
<state width="849" height="374" key="GridCell.Tab.3.right/62.23.1730.1097@62.23.1730.1097" timestamp="1598871634522" />
<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="1598877603856" />
<state width="843" height="374" key="GridCell.Tab.3.right/67.23.1725.1097@67.23.1725.1097" timestamp="1598663390884" />
<state width="840" height="374" key="GridCell.Tab.3.right/70.23.1722.1097@70.23.1722.1097" timestamp="1598233292667" />
<state x="161" y="268" width="670" height="676" key="search.everywhere.popup" timestamp="1598787117227">

View File

@ -50,6 +50,7 @@ $app.route("/api/collection/:name")
.get(getCollection)
.patch(updateCollection)
.delete(deleteCollection);
$app.route("/api/collection")
.get(getAllCollections)
.post(newCollection)
@ -179,7 +180,7 @@ async function parseSub(sub, platform) {
if (item.type.indexOf("Filter") !== -1) {
const filter = AVAILABLE_FILTERS[item.type];
if (filter) {
$filter.addFilters(filter(...(item.args || [])));
$filter.addFilters(filter(item.args));
proxies = $filter.process(proxies);
$.log(`Applying filter "${item.type}" with arguments:\n >>> ${item.args || "None"}`);
}
@ -1671,7 +1672,6 @@ function RegionFilter(regions) {
"SG": "🇸🇬",
"JP": "🇯🇵",
"UK": "🇬🇧",
"KR": "🇰🇷"
};
return {
name: "Region Filter",

View File

@ -4,7 +4,7 @@
<v-icon left color="primary">flag</v-icon>
区域过滤
<v-spacer></v-spacer>
<v-btn icon>
<v-btn icon @click="$emit('deleteProcess', idx)">
<v-icon color="error">mdi-delete</v-icon>
</v-btn>
<v-dialog>
@ -18,7 +18,7 @@
区域过滤器
</v-card-title>
<v-card-text>
根据区域过滤节点不选则默认保留所有节点
根据区域过滤节点至少需要保留一个区域
</v-card-text>
</v-card>
</v-dialog>
@ -67,11 +67,25 @@ const regions = [
}
];
export default {
props: ["args"],
data: function () {
return {
idx: this.$vnode.key,
regions,
selection: []
}
},
created() {
this.selection = this.args || [];
},
watch: {
selection() {
this.$emit("dataChanged", {
idx: this.idx,
type: "Region Filter",
args: this.selection
})
}
}
}
</script>

View File

@ -0,0 +1,91 @@
<template>
<v-card class="ml-1 mr-1 mb-1 mt-1">
<v-card-title>
<v-icon left color="primary">cloud_circle</v-icon>
节点类型过滤
<v-spacer></v-spacer>
<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 multiple active-class="primary accent-4" v-model="selection" column>
<v-chip
class="ma-2"
v-for="type in types"
label
:key="type.name"
:value="type.value"
>
{{ type.name }}
</v-chip>
</v-chip-group>
</v-card-text>
</v-card>
</template>
<script>
const types = [
{
name: "Shadowsocks",
value: "ss"
},
{
name: "Shadowsocks R",
value: "ssr"
},
{
name: "V2Ray",
value: "vmess"
},
{
name: "Trojan",
value: "trojan"
},
{
name: "HTTP",
value: "http"
}
];
export default {
props: ['args'],
data: function () {
return {
idx: this.$vnode.key,
types,
selection: []
}
},
created() {
this.selection = this.args || [];
},
watch: {
selection() {
this.$emit("dataChanged", {
idx: this.idx,
type: "Type Filter",
args: this.selection
})
}
}
}
</script>
<style scoped>
</style>

View File

@ -23,8 +23,12 @@
</v-form>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn icon @click="save"><v-icon>save_alt</v-icon></v-btn>
<v-btn icon @click="discard"><v-icon>settings_backup_restore</v-icon></v-btn>
<v-btn icon @click="save">
<v-icon>save_alt</v-icon>
</v-btn>
<v-btn icon @click="discard">
<v-icon>settings_backup_restore</v-icon>
</v-btn>
</v-card-actions>
</v-card>
<v-card class="mb-4">
@ -44,6 +48,7 @@
<v-col>
<v-radio label="删除" value="REMOVE"/>
</v-col>
<v-col></v-col>
</v-row>
</v-radio-group>
<v-radio-group
@ -123,25 +128,69 @@
</v-item-group>
</v-form>
</v-card>
<v-card class="mb-4">
<v-card class="mb-4" id="processors">
<v-subheader>
节点操作
<v-spacer></v-spacer>
<v-btn icon>
<v-icon color="primary">add_circle</v-icon>
</v-btn>
<v-dialog scrollable v-model="dialog">
<template #activator="{on}">
<v-btn icon v-on="on">
<v-icon color="primary">add_circle</v-icon>
</v-btn>
</template>
<v-card>
<v-card-title>选择节点操作</v-card-title>
<v-divider></v-divider>
<v-card-text>
<v-radio-group dense v-model="selectedProcess">
<v-radio v-for="(k, idx) in Object.keys(availableProcessors)" :label="availableProcessors[k].name"
:key="idx" :value="k"></v-radio>
</v-radio-group>
</v-card-text>
<v-card-actions>
<v-spacer></v-spacer>
<v-btn color="primary" text @click="addProcess(selectedProcess)">确认</v-btn>
<v-btn text @click="dialog = false">取消</v-btn>
</v-card-actions>
</v-card>
</v-dialog>
</v-subheader>
<v-divider></v-divider>
<component v-for="(p, idx) in processors"
:is="p.component"
:key="idx"
:args="p.args"
@dataChanged="dataChanged"
@deleteProcess="deleteProcess"
>
</component>
</v-card>
</v-container>
</template>
<script>
import {showError, showInfo} from "@/utils";
import TypeFilter from "@/components/TypeFilter";
import RegionFilter from "@/components/RegionFilter";
const AVAILABLE_PROCESSORS = {
"Type Filter": {
component: "TypeFilter",
name: "类型过滤器"
},
"Region Filter": {
component: "RegionFilter",
name: "区域过滤器"
}
}
export default {
components: {RegionFilter, TypeFilter},
data: function () {
return {
selectedProcess: null,
dialog: false,
validations: {
nameRules: [
v => !!v || "订阅名称不能为空!",
@ -173,6 +222,20 @@ export default {
this.$store.commit("SET_NAV_TITLE", sub.name ? `订阅编辑 -- ${sub.name}` : "新建订阅");
this.options = loadSubscription(this.options, sub);
},
computed: {
availableProcessors() {
return AVAILABLE_PROCESSORS;
},
processors() {
return this.options.process.map(p => {
return {
component: AVAILABLE_PROCESSORS[p.type].component,
args: p.args
}
});
}
},
methods: {
save() {
if (this.options.name && this.options.url) {
@ -198,6 +261,19 @@ export default {
discard() {
this.$router.back();
},
dataChanged(content) {
this.options.process[content.idx].args = content.args;
},
addProcess(type) {
this.options.process.push({type});
this.dialog = false;
},
deleteProcess(key) {
this.options.process.splice(key, 1);
}
}
}
@ -206,7 +282,8 @@ function loadSubscription(options, sub) {
options = {
...options,
name: sub.name,
url: sub.url
url: sub.url,
process: []
}
// flag
for (const p of (sub.process || [])) {
@ -220,6 +297,8 @@ function loadSubscription(options, sub) {
case 'Set Property Operator':
options[p.args[0]] = p.args[1] ? "FORCE_OPEN" : "FORCE_CLOSE";
break
default:
options.process.push(p);
}
}
return options;
@ -253,9 +332,9 @@ function buildSubscription(options) {
});
}
}
// for (const p of options.process) {
//
// }
for (const p of options.process) {
sub.process.push(p);
}
return sub;
}
</script>