@@ -4,12 +4,14 @@ import { IFundValuationDetailResult } from '@/model/IFundValuationDetailResult';
44import { get } from '@/Helper/HttpHelper' ;
55import { ISearchFundResult } from '@/model/ISearchFundResult' ;
66import { IFundEnt } from '@/model/IFundEnt' ;
7+ import Mousetrap from '../assets/js/mousetrap.min.js' ;
78
89// 缓存基金详情
910let CACHE_FUND_DB_LIST : DBItem < IFundEnt > [ ] ;
1011// 当前搜索关键字
1112let CURRENT_SEARCH_WORD = '' ;
1213let QUERY_TIMER : NodeJS . Timeout ;
14+ let CACHE_CALLBACK_SET_LIST : CallbackSetList ;
1315
1416const getMyFundDetails = async ( ) => {
1517 const dbList = FundDBHelper . getAll ( ) ;
@@ -142,6 +144,7 @@ const hanlderUTools = {
142144 val . onPluginOut = cb => {
143145 console . log ( `用户退出插件` ) ;
144146 clearTimeout ( QUERY_TIMER ) ;
147+ unregisterShortCut ( ) ;
145148 return rawOnPluginOut ( cb ) ;
146149 } ;
147150 val . onPluginOut . isMagicRevision = true ;
@@ -157,18 +160,51 @@ const hanlderUTools = {
157160 // },
158161} ;
159162
163+ const registerShortCut = async ( ) => {
164+ // 删除
165+ Mousetrap . bind ( 'mod+del' , ( ) => {
166+ const selectedItem = document . querySelector ( '.list-item-selected .list-item-title' ) ;
167+ if ( selectedItem && selectedItem . innerHTML ) {
168+ const fundId = selectedItem . innerHTML . split ( ' ' ) [ 0 ] ;
169+ if ( CACHE_FUND_DB_LIST && CACHE_FUND_DB_LIST . length > 0 && CACHE_FUND_DB_LIST . some ( x => x . data . id === fundId ) ) {
170+ FundDBHelper . del ( fundId ) ;
171+ if ( CACHE_CALLBACK_SET_LIST ) {
172+ clearTimeout ( QUERY_TIMER ) ;
173+ showFundDetails ( CACHE_CALLBACK_SET_LIST ) ;
174+ } else {
175+ console . error ( `CACHE_CALLBACK_SET_LIST is null` ) ;
176+ }
177+ } else {
178+ console . error ( `del error :` ) ;
179+ console . error ( `fundId : ${ fundId } , CACHE_FUND_DB_LIST : ` , CACHE_FUND_DB_LIST ) ;
180+ }
181+ }
182+ return false ;
183+ } ) ;
184+ // 跳转新增
185+ Mousetrap . bind ( 'mod+ins' , ( ) => {
186+ utools . redirect ( '添加自选基金' , '' ) ;
187+ } ) ;
188+ } ;
189+ const unregisterShortCut = async ( ) => {
190+ // Mousetrap.unbind(['up', 'down', 'mod+del', 'mod+ins']);
191+ } ;
192+
160193const fundMy : TplFeature = {
161194 mode : 'list' ,
162195 args : {
163- placeholder : '输入持有份额,选择对应基金,回车键保存 ,s前缀搜索' ,
196+ placeholder : '输入份额,选择基金,Enter 保存,ctrl + delete 删除 , ctrl + insert 添加 ,s前缀搜索' ,
164197 enter : async ( action , callbackSetList ) => {
198+ CACHE_CALLBACK_SET_LIST = callbackSetList ;
165199 if ( ! utools . isMagicRevision ) {
166200 utools = new Proxy ( utools , hanlderUTools ) ;
167201 }
168202 clearTimeout ( QUERY_TIMER ) ;
169203 showFundDetails ( callbackSetList ) ;
204+ registerShortCut ( ) ;
170205 } ,
171206 search : async ( action , searchWord , callbackSetList ) => {
207+ CACHE_CALLBACK_SET_LIST = callbackSetList ;
172208 let dbList = CACHE_FUND_DB_LIST && CACHE_FUND_DB_LIST . length > 0 ? CACHE_FUND_DB_LIST : await getMyFundDetails ( ) ;
173209 if ( searchWord && searchWord . startsWith ( 's' ) ) {
174210 searchWord = searchWord . substring ( 1 ) ;
@@ -181,6 +217,7 @@ const fundMy: TplFeature = {
181217 callbackSetList ( cbList ) ;
182218 } , // 用户选择列表中某个条目时被调用
183219 select : ( action , itemData , callbackSetList ) => {
220+ CACHE_CALLBACK_SET_LIST = callbackSetList ;
184221 if ( ! CACHE_FUND_DB_LIST || CACHE_FUND_DB_LIST . length === 0 ) {
185222 utools . redirect ( '添加自选基金' , '' ) ;
186223 return ;
0 commit comments