{"version":3,"sources":["webpack:///./src/components/SetAlertPrice.vue?b76a","webpack:///./src/components/SetAlertPrice.vue","webpack:///./src/components/SetAlertPrice.vue?9d73","webpack:///./src/components/SetAlertPrice.vue?f596","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./src/services/socket.ts","webpack:///./src/services/data.ts","webpack:///./src/components/SymbolName.vue?ff53","webpack:///./src/components/SymbolName.vue","webpack:///./src/components/SymbolName.vue?7cd3","webpack:///./src/components/SymbolName.vue?6647","webpack:///./node_modules/core-js/modules/es.array.find.js","webpack:///./src/services/symbolService.ts","webpack:///./src/services/settingService.ts","webpack:///./src/assets/bell-green.svg","webpack:///./src/assets/bell.svg"],"names":["render","_vm","this","_h","$createElement","_c","_self","attrs","innerVisible","on","$event","ref","model","staticClass","staticStyle","_v","_s","symbolName","lastPrice","change","style","toFixed","changeRate","_e","_l","item","index","key","RowRuler","LowPrice","value","Group","Low","callback","$$v","$set","_n","expression","isNaN","AlertPrice","HighPrice","High","removeRow","addNewRow","slot","submit","staticRenderFns","name","Alerts","Array","alertRow","validator","number","trigger","fun","visible","loadData","v","$emit","symbolService","getAlertPricesAsync","typeInfo","res","Result","rows","forEach","p","Type","find","q","push","TriggerToDo","PriceAlertId","map","createRowRuler","length","newAlert","utility","removeArrayItem","$refs","theForm","validate","valid","addOrUpdateAlertPriceAsync","Error","$alert","alertInfo","count","component","global","DOMIterables","createNonEnumerableProperty","COLLECTION_NAME","Collection","CollectionPrototype","prototype","error","$forEach","arrayMethodIsStrict","arrayMethodUsesToLength","STRICT_METHOD","USES_TO_LENGTH","module","exports","callbackfn","arguments","undefined","$","target","proto","forced","ClientSocket","dataSource","DataSource","TryTimes","Messages","OnMessage","OnOpen","OnError","isConnecting","timeoutInterval","autoConnect","context","state","user","jwt","ws","location","protocol","url","uid","window","host","startsWith","WebSocket","Socket","readyState","getWsUrl","onopen","sendMessages","onerror","err","reconnect","onmessage","msg","message","JSON","parse","data","Action","sendDirectMsg","i","onclose","e","clearInterval","setTimeout","init","action","content","send","stringify","MsgId","Content","shift","console","log","source","close","server","local","Server","Local","GetSocketServer","localStorage","getItem","InitAll","addMessageCallBack","SendAll","sendContext","RemoveAll","removeMessageCallBack","SymbolType","PortfolioGroupCls","group","IsExpanded","Symbol","Items","ComboType","PreMarketStart","PreMarketEnd","PriceCls","price","Open","Close","Last","Bid","BidYtm","DailyBid","DailyBidYtm","Volume","AvgVolume","LastUpdated","NextEarnDate","LastClosed","Status","last","getLast","getClose","getChange","closed","getPreAfterChange","Currency","SecType","class","SymbolClass","padStart","PrimaryExch","$find","addToUnscopables","FIND","SKIPS_HOLES","getSymbolPriceAsync","SymbolId","tryPostResult","Price","getRssNewsAsync","addOrUpdateBatchAlertPrice","models","tryPostBooleanResult","AlertInfo","PriceAlerts","getAllAlertPricesAsync","removePriceAlertsAsync","updateFromYahooAsync","searchSymbolsAsync","input","type","searchOptionsAsync","expiration","getOptionDefInfo","symbolId","getWatchedOptions","generateOptions","Expiration","readSysSettingByNamesAsync","names","addOrUpdateSysSettingAsync","settings","readUserSettingsByNamesAsync","addOrUpdateUserSettingAsync","testPop3","testSmtp"],"mappings":"kHAAA,IAAIA,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,YAAY,CAACE,MAAM,CAAC,wBAAuB,EAAM,QAAUN,EAAIO,aAAa,iBAAiB,GAAG,cAAa,EAAK,MAAQ,SAASC,GAAG,CAAC,iBAAiB,SAASC,GAAQT,EAAIO,aAAaE,KAAU,CAAET,EAAc,WAAEI,EAAG,UAAU,CAACM,IAAI,UAAUJ,MAAM,CAAC,MAAQN,EAAIW,QAAQ,CAACP,EAAG,MAAM,CAACQ,YAAY,wBAAwBC,YAAY,CAAC,aAAa,UAAU,CAACb,EAAIc,GAAG,mBAAmBd,EAAIe,GAAGf,EAAIgB,eAAeZ,EAAG,MAAM,CAACQ,YAAY,kBAAkB,CAACZ,EAAIc,GAAG,kBAAkBd,EAAIe,GAAGf,EAAIiB,WAAW,KAAkB,MAAZjB,EAAIkB,OAAcd,EAAG,OAAO,CAACQ,YAAY,iBAAiBO,MAAM,CAAG,MAAUnB,EAAIkB,OAAS,EAAI,QAAU,QAAU,CAAClB,EAAIc,GAAG,IAAId,EAAIe,GAAGf,EAAIkB,OAAOE,QAAQ,IAAI,IAAIpB,EAAIe,IAAqB,IAAjBf,EAAIqB,YAAkBD,QAAQ,IAAI,OAAOpB,EAAIsB,OAAOtB,EAAIuB,GAAIvB,EAAIW,MAAY,QAAE,SAASa,EAAKC,GAAO,OAAOrB,EAAG,MAAM,CAACsB,IAAID,EAAMb,YAAY,eAAe,CAACR,EAAG,eAAe,CAACE,MAAM,CAAC,KAAO,UAAYmB,EAAQ,wBAAwB,MAAQD,EAAKG,SAASC,WAAW,CAACxB,EAAG,WAAW,CAACQ,YAAY,aAAaC,YAAY,CAAC,MAAQ,SAASP,MAAM,CAAC,KAAO,SAAS,aAAe,OAAOK,MAAM,CAACkB,MAAOL,EAAKM,MAAMC,IAAc,WAAEC,SAAS,SAAUC,GAAMjC,EAAIkC,KAAKV,EAAKM,MAAMC,IAAK,aAAc/B,EAAImC,GAAGF,KAAOG,WAAW,+BAAgCZ,EAAKM,MAAMC,MAAQM,MAAMb,EAAKM,MAAMC,IAAIO,aAAed,EAAKM,MAAMC,IAAIO,WAAatC,EAAIiB,UAAYb,EAAG,MAAM,CAACQ,YAAY,eAAe,CAAEY,EAAKM,MAAMC,IAAc,WAAE3B,EAAG,OAAO,CAACJ,EAAIc,GAAGd,EAAIe,KAAKS,EAAKM,MAAMC,IAAIO,WAAatC,EAAIiB,WAAajB,EAAIiB,UAAY,KAAKG,QAAQ,IAAI,OAAOpB,EAAIsB,OAAOtB,EAAIsB,MAAM,GAAGlB,EAAG,OAAO,CAACQ,YAAY,mBAAmBC,YAAY,CAAC,MAAQ,UAAU,CAACb,EAAIc,GAAG,eAAeV,EAAG,eAAe,CAACE,MAAM,CAAC,KAAO,UAAYmB,EAAQ,yBAAyB,MAAQD,EAAKG,SAASY,YAAY,CAACnC,EAAG,WAAW,CAACQ,YAAY,aAAaC,YAAY,CAAC,MAAQ,SAASP,MAAM,CAAC,KAAO,SAAS,aAAe,OAAOK,MAAM,CAACkB,MAAOL,EAAKM,MAAMU,KAAe,WAAER,SAAS,SAAUC,GAAMjC,EAAIkC,KAAKV,EAAKM,MAAMU,KAAM,aAAcxC,EAAImC,GAAGF,KAAOG,WAAW,gCAAiCZ,EAAKM,MAAMU,OAASH,MAAMb,EAAKM,MAAMU,KAAKF,aAAed,EAAKM,MAAMU,KAAKF,WAAatC,EAAIiB,UAAYb,EAAG,MAAM,CAACQ,YAAY,gBAAgB,CAAEY,EAAKM,MAAMU,KAAe,WAAEpC,EAAG,OAAO,CAACJ,EAAIc,GAAG,IAAId,EAAIe,KAAKS,EAAKM,MAAMU,KAAKF,WAAatC,EAAIiB,WAAajB,EAAIiB,UAAY,KAAKG,QAAQ,IAAI,QAAQpB,EAAIsB,OAAOtB,EAAIsB,MAAM,GAAGlB,EAAG,eAAe,CAACQ,YAAY,OAAON,MAAM,CAAC,KAAO,UAAYmB,EAAQ,uBAAuB,CAACrB,EAAG,QAAQ,CAACA,EAAG,cAAc,CAACO,MAAM,CAACkB,MAAOL,EAAKM,MAAiB,YAAEE,SAAS,SAAUC,GAAMjC,EAAIkC,KAAKV,EAAKM,MAAO,cAAeG,IAAMG,WAAW,4BAA4BpC,EAAIc,GAAG,mBAAmB,KAAKV,EAAG,IAAI,CAACQ,YAAY,wCAAwCJ,GAAG,CAAC,MAAQ,SAASC,GAAQ,OAAOT,EAAIyC,UAAUjB,QAAW,OAAM,GAAGxB,EAAIsB,KAAKlB,EAAG,OAAO,CAACQ,YAAY,oBAAoBJ,GAAG,CAAC,MAAQR,EAAI0C,YAAY,CAAC1C,EAAIc,GAAG,iBAAiBV,EAAG,MAAM,CAACQ,YAAY,4BAA4BN,MAAM,CAAC,KAAO,UAAUqC,KAAK,UAAU,CAACvC,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,WAAWE,GAAG,CAAC,MAAQR,EAAI4C,SAAS,CAAC5C,EAAIc,GAAG,QAAQV,EAAG,YAAY,CAACE,MAAM,CAAC,KAAO,UAAUE,GAAG,CAAC,MAAQ,SAASC,GAAQT,EAAIO,cAAe,KAAS,CAACP,EAAIc,GAAG,aAAa,IAAI,IACpqG+B,EAAkB,G,sLCqED,EAArB,yG,0BACE,EAAAC,KAAO,oBAYP,EAAAvC,cAAe,EACf,EAAAI,MAAQ,CACNoC,OAAQ,IAAIC,OAfhB,gEAkBkBC,GAAyB,WACvC,MAAO,CACLrB,SAAU,CAAC,CACTsB,UAAW,OAAWC,SACtBC,QAAS,QACR,CACDF,UAAW,OAAWG,KAAX,EAAiB,WAC1B,OAAKJ,EAAST,KAAKF,aAAeW,EAASlB,IAAIO,YACnCW,EAASlB,IAAIO,aAAeD,MAAMY,EAASlB,IAAIO,aAAeW,EAASlB,IAAIO,WAAa,EAAKrB,YACxG,0BACHmC,QAAS,SAEXb,UAAW,CAAC,CACVW,UAAW,OAAWC,SACtBC,QAAS,QACR,CACDF,UAAW,OAAWG,KAAX,EAAiB,WAC1B,OAAKJ,EAAST,KAAKF,aAAeW,EAASlB,IAAIO,YACnCW,EAAST,KAAKF,aAAeD,MAAMY,EAAST,KAAKF,aAAeW,EAAST,KAAKF,WAAa,EAAKrB,YAC3G,0BACHmC,QAAS,YAtCjB,mLA4CInD,KAAKM,aAAeN,KAAKqD,QA5C7B,SA6CUrD,KAAKsD,WA7Cf,8IAiDkBC,GACdvD,KAAKM,aAAeiD,IAlDxB,0CAsDuBA,GAEnBvD,KAAKwD,MAAM,iBAAkBD,KAxDjC,4MA4DsBE,EAAA,KAAcC,oBAAoB1D,KAAK2D,UA5D7D,OA4DUC,EA5DV,OA6DQA,EAAIC,SACAC,EAA0B,GAChCF,EAAIC,OAAOE,SAAQ,SAAAC,GACjB,GAAe,QAAXA,EAAEC,KAAgB,CACpB,IAAMC,EAAOJ,EAAKI,MAAK,SAAAC,GAAC,OAAa,MAATA,EAAErC,OAC1BoC,EACFA,EAAKpC,IAAMkC,EAEXF,EAAKM,KAAK,CAAEtC,IAAKkC,EAAGzB,KAAM,KAAM8B,YAAaL,EAAEK,mBAE5C,GAAe,SAAXL,EAAEC,KAAiB,CAC5B,IAAM,EAAOH,EAAKI,MAAK,SAAAC,GAAC,OAAc,MAAVA,EAAE5B,QAC1B,EACF,EAAKA,KAAOyB,EAEZF,EAAKM,KAAK,CAAE7B,KAAMyB,EAAGlC,IAAK,KAAMuC,YAAaL,EAAEK,kBAIrDP,EAAKC,SAAQ,SAAAC,GAAI,QACfA,EAAElC,IAAF,UAAQkC,EAAElC,WAAV,QAAiB,CAAEwC,aAAc,EAAGjC,WAAY,KAAM4B,KAAM,MAAOI,aAAa,GAChFL,EAAEzB,KAAF,UAASyB,EAAEzB,YAAX,QAAmB,CAAE+B,aAAc,EAAGjC,WAAY,KAAM4B,KAAM,OAAQI,aAAa,GACnFL,EAAEK,YAAcL,EAAElC,IAAIuC,aAAeL,EAAEzB,KAAK8B,eAE9CrE,KAAKU,MAAMoC,OAASgB,EAAKS,KAAI,SAAAP,GAAI,QAC/B,MAAO,CAAEnC,MAAOmC,EAAGtC,SAAU,EAAK8C,eAAeR,GAAIK,aAAa,UAAAL,EAAElC,WAAF,eAAOuC,eAAP,UAAsBL,EAAEzB,YAAxB,aAAsB,EAAQ8B,iBAExE,IAAtBT,EAAIC,OAAOY,QACbzE,KAAKyC,aAzFb,2IA+FI,IAAMiC,EAA4B,CAChC5C,IAAK,CAAEwC,aAAc,EAAGjC,WAAY,KAAM4B,KAAM,MAAOI,aAAa,GACpE9B,KAAM,CAAE+B,aAAc,EAAGjC,WAAY,KAAM4B,KAAM,OAAQI,aAAa,GACtEA,aAAa,GAEfrE,KAAKU,MAAMoC,OAAOsB,KAAK,CACrBvC,MAAO6C,EAAUhD,SAAU1B,KAAKwE,eAAeE,OArGrD,gCAyGanD,GACToD,EAAA,KAAQC,gBAAgB5E,KAAKU,MAAMoC,OAAQvB,KA1G/C,+BA6GQ,WACJvB,KAAK6E,MAAMC,QAAQC,SAAnB,yDAA4B,WAAOC,GAAP,6FACtBA,EADsB,wBAElBlB,EAAqB,GAC3B,EAAKpD,MAAMoC,OAAOiB,SAAQ,SAAAC,GACpBA,EAAEnC,MAAMC,IAAIO,aACd2B,EAAEnC,MAAMC,IAAIuC,YAAcL,EAAEnC,MAAMwC,YAClCP,EAAKM,KAAKJ,EAAEnC,MAAMC,MAEhBkC,EAAEnC,MAAMU,KAAKF,aACf2B,EAAEnC,MAAMU,KAAK8B,YAAcL,EAAEnC,MAAMwC,YACnCP,EAAKM,KAAKJ,EAAEnC,MAAMU,UAVE,SAaNkB,EAAA,KAAcwB,2BAA2B,EAAKtB,SAAUG,GAblD,UAalBF,EAbkB,QAcpBA,EAAIsB,MAdgB,iCAehB,EAAKC,OAAOvB,EAAIsB,OAfA,+BAiBtB,EAAK1B,MAAM,UAAW,CAAE4B,UAAW,EAAKzB,SAAU0B,MAAOvB,EAAKW,SAC9D,EAAKnE,cAAe,EAlBE,4CAA5B,kCAAAN,KAAA,oBA9GJ,GAA2C,QAMjC,gBAAP,kB,8BACO,gBAAP,kB,iCACO,gBAAP,kB,gCACO,gBAAP,kB,6BACO,gBAAP,kB,iCACO,gBAAP,kB,+BAsCD,gBADC,eAAM,Y,6BAGN,MAGD,gBADC,eAAM,iB,kCAIN,MAzDkB,EAAa,gBADjC,QACoB,WCtEmX,I,YCOpYsF,EAAY,eACd,EACAxF,EACA8C,GACA,EACA,KACA,KACA,MAIa,OAAA0C,E,gCClBf,IAAIC,EAAS,EAAQ,QACjBC,EAAe,EAAQ,QACvBzB,EAAU,EAAQ,QAClB0B,EAA8B,EAAQ,QAE1C,IAAK,IAAIC,KAAmBF,EAAc,CACxC,IAAIG,EAAaJ,EAAOG,GACpBE,EAAsBD,GAAcA,EAAWE,UAEnD,GAAID,GAAuBA,EAAoB7B,UAAYA,EAAS,IAClE0B,EAA4BG,EAAqB,UAAW7B,GAC5D,MAAO+B,GACPF,EAAoB7B,QAAUA,K,oCCXlC,IAAIgC,EAAW,EAAQ,QAAgChC,QACnDiC,EAAsB,EAAQ,QAC9BC,EAA0B,EAAQ,QAElCC,EAAgBF,EAAoB,WACpCG,EAAiBF,EAAwB,WAI7CG,EAAOC,QAAYH,GAAkBC,EAEjC,GAAGpC,QAFgD,SAAiBuC,GACtE,OAAOP,EAAS/F,KAAMsG,EAAYC,UAAU9B,OAAS,EAAI8B,UAAU,QAAKC,K,kCCV1E,IAAIC,EAAI,EAAQ,QACZ1C,EAAU,EAAQ,QAItB0C,EAAE,CAAEC,OAAQ,QAASC,OAAO,EAAMC,OAAQ,GAAG7C,SAAWA,GAAW,CACjEA,QAASA,K,0GCEE8C,EAAb,WAaE,WAAaC,GAAkB,uBAX/B,KAAAC,WAAa,SACb,KAAAC,SAAW,EACX,KAAAC,SAA6B,GAC7B,KAAAC,UAA6C,GAC7C,KAAAC,OAAqB,KACrB,KAAAC,QAAgC,KAChC,KAAAC,cAAe,EACf,KAAAC,gBAAkB,EAClB,KAAAC,aAAc,EACd,KAAAC,QAAkB,KAGhBxH,KAAK+G,WAAaD,EAdtB,0DAkBI,GAAwB,MAApB,OAAMW,MAAMC,KACd,OAAO,KAET,IAAMC,EAAM,OAAMF,MAAMC,KAAKC,IACvBC,EAA2B,WAAtBC,SAASC,SAAwB,MAAQ,KAChDC,EAAc,KASlB,MARwB,UAApB/H,KAAK+G,WACPgB,EAAM,+BAAH,OAAkCJ,EAAlC,gBAA6C,OAAMF,MAAMC,KAAKM,MAEjED,EAAM,GAAH,OAAMH,EAAN,cAAcK,OAAOJ,SAASK,KAA9B,uBAAiDP,EAAjD,gBAA4D,OAAMF,MAAMC,KAAKM,MAC5EC,OAAOJ,SAASK,KAAKC,WAAW,cAAgBF,OAAOJ,SAASK,KAAKC,WAAW,cAClFJ,EAAM,GAAH,OAAMH,EAAN,wCAAwCD,EAAxC,gBAAmD,OAAMF,MAAMC,KAAKM,OAGpED,IAhCX,6BAmCa,WAET,GADA/H,KAAKuH,aAAc,EACQ,qBAAfa,UAA4B,CACtC,GAAIpI,KAAKqI,QAAUrI,KAAKqI,OAAOC,WAAa,EAC1C,OAEF,IAAMP,EAAM/H,KAAKuI,WACjB,IAAKR,EACH,OAEF,IAEE/H,KAAKqI,OAAS,IAAID,UAAUL,GAE5B/H,KAAKqI,OAAOG,OAAS,WAEnB,EAAKC,eACD,EAAKtB,QACP,EAAKA,UAITnH,KAAKqI,OAAOK,QAAU,SAAAC,GAEhB,EAAKvB,SACP,EAAKA,QAAQuB,GAEf,EAAKC,aAGP5I,KAAKqI,OAAOQ,UAAY,SAAAC,GACtB,IAAMC,EAAUC,KAAKC,MAAMH,EAAII,MAE/B,GADuB,WAAnBH,EAAQI,QAAqB,EAAKC,cAAc,cAAe,EAAK5B,SACpE,EAAKN,UAAUzC,OAAS,EAC1B,IAAK,IAAI4E,EAAI,EAAGA,EAAI,EAAKnC,UAAUzC,OAAQ4E,IACzC,EAAKnC,UAAUmC,GAAGN,IAKxB/I,KAAKqI,OAAOiB,QAAU,WACpB,EAAKV,aAEP,MAAOW,QA9Ef,kCAoFsB/B,GAClBxH,KAAKwH,QAAUA,EAEfxH,KAAKoJ,cAAc,cAAe5B,KAvFtC,kCA0FmB,WACVxH,KAAKuH,cACNvH,KAAKqH,eAGLrH,KAAKsH,iBACPkC,cAAcxJ,KAAKsH,iBAErBtH,KAAKqH,cAAe,EACpBrH,KAAKsH,gBAAkBmC,YAAW,WAChC,EAAKC,OACL,EAAKrC,cAAe,IACnB,SAtGP,wCA0GIrH,KAAKuH,aAAc,IA1GvB,oCA6GwBoC,EAAgBC,GACpC,GAAmB,MAAf5J,KAAKqI,QAA6C,IAA3BrI,KAAKqI,OAAOC,WACrC,IAEEtI,KAAKqI,OAAOwB,KAAKb,KAAKc,UAAU,CAAEC,MAAO,EAAGZ,OAAQQ,EAAQK,QAASJ,KACrE,MAAOL,OAlHf,qCAuHsB,WAClB,GAAIvJ,KAAKgH,SAAW,EAClBhH,KAAKgH,SAAW,OAGlB,GAAmB,MAAfhH,KAAKqI,QAA6C,IAA3BrI,KAAKqI,OAAOC,WAAkB,CACvDtI,KAAKoJ,cAAc,cAAepJ,KAAKwH,SACvC,MAAOxH,KAAKiH,SAASxC,OAAS,EAAG,CAC/B,IAAMqE,EAAM9I,KAAKiH,SAASgD,QAC1BC,QAAQC,IAAI,qBAAsBnK,KAAK+G,WAAY+B,GACnD,IACE9I,KAAKqI,OAAOwB,KAAKb,KAAKc,UAAUhB,IAChC,MAAOS,GACPW,QAAQC,IAAIZ,IAGhBvJ,KAAKgH,SAAW,OAEhBhH,KAAKgH,WACLyC,YAAW,WACT,EAAKhB,iBACJ,OA5IT,yCAgJ6B1G,GACzB/B,KAAKkH,UAAU9C,KAAKrC,KAjJxB,4CAoJgCA,GAC5B,OAAQ6C,gBAAgB5E,KAAKkH,UAAWnF,KArJ5C,8BAwJkB+G,GACd,GAAmB,MAAf9I,KAAKqI,QAA6C,IAA3BrI,KAAKqI,OAAOC,WAAvC,CAIA4B,QAAQC,IAAI,WAAYnK,KAAK+G,WAAY+B,GACzC,IACE9I,KAAKqI,OAAOwB,KAAKb,KAAKc,UAAUhB,IAChC,MAAOS,SANY,gBAAfT,EAAIK,QAA4BnJ,KAAKiH,SAAS7C,KAAK0E,KA1J7D,mCAoKgBsB,GACRpK,KAAK+G,aAAeqD,IACtBpK,KAAK+G,WAAaqD,EAClBpK,KAAKqK,WAvKX,8BA4KIrK,KAAKuH,aAAc,EACfvH,KAAKqI,SACPrI,KAAKqI,OAAOgC,QACZrK,KAAKqI,OAAS,UA/KpB,KAoLMiC,EAAS,IAAIzD,EAAa,UAC1B0D,EAAQ,IAAI1D,EAAa,SAEhB,QACb2D,OAAQF,EACRG,MAAOF,EACPG,gBAHa,WAIX,IAAM5D,EAAa6D,aAAaC,QAAQ,mBACxC,MAAmB,UAAf9D,EAA+ByD,EAC5BD,GAETO,QARa,SAQJ9I,GACPuI,EAAOZ,OACPY,EAAOQ,mBAAmB/I,GAC1BwI,EAAMb,OACNa,EAAMO,mBAAmB/I,IAE3BgJ,QAda,SAcJvD,GACyC,UAA5CmD,aAAaC,QAAQ,oBACvBN,EAAOU,YAAY,MACnBT,EAAMS,YAAYxD,KAElB8C,EAAOU,YAAYxD,GACnB+C,EAAMS,YAAY,QAGtBC,UAvBa,SAuBFlJ,GACTuI,EAAOY,sBAAsBnJ,GAC7BwI,EAAMW,sBAAsBnJ,M,8IC1HpBoJ,E,yBAAZ,SAAYA,GAER,wBACA,0BACA,0BACA,uBALJ,CAAYA,MAAU,KA8Cf,IAAMC,EACX,WAAaC,GAAqB,uBASlC,KAAAC,YAAc,EARZtL,KAAKuL,OAASF,EAAME,OACpBvL,KAAKwL,MAAQH,EAAMG,MACnBxL,KAAKyL,UAAYJ,EAAMI,WAuErBC,EAAiB,EACjBC,EAAe,GAIRC,EAAb,WAeE,WAAaC,GAAY,uBACV,MAATA,IACF7L,KAAK8L,KAAOD,EAAMC,KAClB9L,KAAK+L,MAAQF,EAAME,MACnB/L,KAAKgM,KAAOH,EAAMG,KAClBhM,KAAKiM,IAAMJ,EAAMI,IACjBjM,KAAKkM,OAASL,EAAMK,OACpBlM,KAAKmM,SAAWN,EAAMM,SACtBnM,KAAKoM,YAAcP,EAAMO,YACzBpM,KAAKqM,OAASR,EAAMQ,OACpBrM,KAAKsM,UAAYT,EAAMS,UACvBtM,KAAKuM,YAAcV,EAAMU,YACzBvM,KAAKwM,aAAeX,EAAMW,aAC1BxM,KAAKyM,WAAaZ,EAAMY,WACxBzM,KAAK0M,OAASb,EAAMa,QA7B1B,yDAkCI,OAAI1M,KAAK0M,SAAWhB,GAAkB1L,KAAK0M,SAAWf,EAC7C3L,KAAKyM,WAELzM,KAAKgM,OArClB,iCA0CI,OAAOhM,KAAK+L,QA1ChB,kCA8CI,IAAMY,EAAO3M,KAAK4M,UACZvC,EAAQrK,KAAK6M,WACnB,OAAIxC,GAASsC,EACJA,EAAOtC,EAET,IAnDX,sCAuDI,IAAMpJ,EAASjB,KAAK8M,YACdC,EAAS/M,KAAK6M,WACpB,OAAI5L,EACMA,EAAS8L,EAAU,IAEtB,IA5DX,0CAgEI,OAAI/M,KAAK0M,SAAWhB,GAAkB1L,KAAK0M,SAAWf,IAChD3L,KAAKgM,MAAQhM,KAAKyM,WACZzM,KAAKgM,KAAOhM,KAAKyM,WAGtB,OArEX,8CAyEI,IAAMxL,EAASjB,KAAKgN,oBACpB,OAAI/L,EACMA,EAASjB,KAAKyM,WAAc,IAE/B,SA7EX,M,kCC7NA,IAAI3M,EAAS,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAQF,EAAU,OAAEI,EAAG,MAAM,CAACQ,YAAY,kBAAkB,CAA2B,QAAxBZ,EAAIwL,OAAO0B,UAA6C,QAAvBlN,EAAIwL,OAAO2B,QAAoB/M,EAAG,OAAO,CAACgN,MAAMpN,EAAIqN,aAAa,CAACrN,EAAIc,GAAG,SAASV,EAAG,QAAQ,CAACgN,MAAMpN,EAAIqN,aAAa,CAACrN,EAAIc,GAAGd,EAAIe,GAAGf,EAAIwL,OAAOA,OAAO8B,SAAS,EAAE,WAAuC,YAA1BtN,EAAIwL,OAAO+B,YAA4BnN,EAAG,OAAO,CAACgN,MAAMpN,EAAIqN,aAAa,CAACrN,EAAIc,GAAG,QAAQV,EAAG,OAAO,CAACgN,MAAMpN,EAAIqN,aAAa,CAACrN,EAAIc,GAAGd,EAAIe,GAAGf,EAAIwL,OAAOA,OAAO8B,SAAS,EAAE,WAAmC,QAAtBtN,EAAIwL,OAAO2B,QAAoB/M,EAAG,OAAO,CAACgN,MAAMpN,EAAIqN,aAAa,CAACrN,EAAIc,GAAG,IAAId,EAAIe,GAAGf,EAAIwL,OAAOA,QAAQ,OAAOpL,EAAG,OAAO,CAACgN,MAAMpN,EAAIqN,aAAa,CAACrN,EAAIc,GAAGd,EAAIe,GAAGf,EAAIwL,OAAOA,aAAaxL,EAAIsB,MACltBuB,EAAkB,G,wECiBD,EAArB,yG,0BACE,EAAAC,KAAO,aADT,YAAwC,QAE9B,gBAAP,kB,6BACO,gBAAP,kB,kCAHkB,EAAU,gBAD9B,QACoB,WClBgX,I,YCOjYyC,EAAY,eACd,EACAxF,EACA8C,GACA,EACA,KACA,KACA,MAIa,OAAA0C,E,6CCjBf,IAAImB,EAAI,EAAQ,QACZ8G,EAAQ,EAAQ,QAAgCrJ,KAChDsJ,EAAmB,EAAQ,QAC3BvH,EAA0B,EAAQ,QAElCwH,EAAO,OACPC,GAAc,EAEdvH,EAAiBF,EAAwBwH,GAGzCA,IAAQ,IAAI1K,MAAM,GAAG0K,IAAM,WAAcC,GAAc,KAI3DjH,EAAE,CAAEC,OAAQ,QAASC,OAAO,EAAMC,OAAQ8G,IAAgBvH,GAAkB,CAC1EjC,KAAM,SAAcoC,GAClB,OAAOiH,EAAMvN,KAAMsG,EAAYC,UAAU9B,OAAS,EAAI8B,UAAU,QAAKC,MAKzEgH,EAAiBC,I,sFCcF,QACPE,oBADO,SACcC,GAAgB,mKACvB,OAAYC,cAA0B,6BAA8B,CAAED,aAD/C,cACnChK,EADmC,OAErCA,EAAIC,SACND,EAAIC,OAAOiK,MAAQ,IAAI,OAASlK,EAAIC,OAAOiK,QAHJ,kBAKlClK,GALkC,8CAOrCmK,gBARO,SAQUH,GAAgB,6JACxB,OAAYC,cAAyB,qBAAsB,CAAED,aADrC,sFAGjCI,2BAXO,SAWqBC,GAAiE,6JACpF,OAAYC,qBAAqB,qCAAsCD,GADa,sFAG7FhJ,2BAdO,SAcqBG,EAA0B1E,GAAmB,6JAChE,OAAYwN,qBAAqB,gCAAiC,CAC7EC,UAAW/I,EACXgJ,YAAa1N,IAH8D,sFAMzEgD,oBApBO,SAoBc0B,GAAwB,6JACpC,OAAYyI,cAA4B,yBAA0BzI,GAD9B,sFAG7CiJ,uBAvBO,WAuBe,6JACb,OAAYR,cAAgC,6BAD/B,sFAGtBS,uBA1BO,SA0BiBhK,GAAoB,6JACnC,OAAY4J,qBAAqB,4BAA6B,CAAE5J,iBAD7B,sFAG5CiK,qBA7BO,WA6Ba,6JACX,OAAYL,qBAAqB,2BADtB,sFAGpBM,mBAhCO,SAgCaC,EAAeC,GAAgB,6JAC1C,OAAYb,cAAgC,wBAAyB,CAAEY,QAAOC,SADpC,sFAGnDC,mBAnCO,SAmCaF,EAAeG,GAAkB,6JAC5C,OAAYf,cAA6B,wBAAyB,CAAEY,QAAOG,eAD/B,sFAGrDC,iBAtCO,SAsCWC,GAAgB,6JACzB,OAAYjB,cAA6B,2BAA4B,CAAEiB,aAD9C,sFAGlCC,kBAzCO,SAyCYnB,GAAgB,6JAC1B,OAAYC,cAA8B,4BAA6B,CAAED,aAD/C,sFAGnCoB,gBA5CO,SA4CUpB,EAAkBqB,GAAkB,6JAC5C,OAAYpB,cAAgE,0BAA2B,CAAED,WAAUqB,eADvE,wF,0ECzD9C,QACPC,2BADO,SACqBC,GAAoB,6JACvC,OAAYtB,cAAmC,iCAAkCsB,GAD1C,sFAGhDC,2BAJO,SAIqBC,GAA6B,6JAChD,OAAYnB,qBAAqB,iCAAkCmB,GADnB,sFAGzDC,6BAPO,SAOuBH,GAAoB,6JACzC,OAAYtB,cAAmC,mCAAoCsB,GAD1C,sFAGlDI,4BAVO,SAUsBF,GAA6B,6JACjD,OAAYnB,qBAAqB,kCAAmCmB,GADnB,sFAG1DG,SAbO,SAaGtG,GAAqB,6JACtB,OAAYgF,qBAAqB,mBAAoBhF,GAD/B,sFAG/BuG,SAhBO,SAgBGvG,GAAqB,6JACtB,OAAYgF,qBAAqB,oBAAqBhF,GADhC,wF,qBCxCvC9C,EAAOC,QAAU,IAA0B,sB,qBCA3CD,EAAOC,QAAU,IAA0B","file":"js/chunk-ceff9880.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dialog',{attrs:{\"close-on-click-modal\":false,\"visible\":_vm.innerVisible,\"append-to-body\":\"\",\"show-close\":true,\"width\":\"700px\"},on:{\"update:visible\":function($event){_vm.innerVisible=$event}}},[(_vm.symbolName)?_c('el-form',{ref:\"theForm\",attrs:{\"model\":_vm.model}},[_c('div',{staticClass:\"f-22 font-weight-bold\",staticStyle:{\"margin-top\":\"-20px\"}},[_vm._v(\"Price Alert for \"+_vm._s(_vm.symbolName))]),_c('div',{staticClass:\"mt-4 mb-4 f-18\"},[_vm._v(\"Current Price: \"+_vm._s(_vm.lastPrice)+\" \"),(_vm.change!=null)?_c('span',{staticClass:\"ml-2 mr-2 f-14\",style:({ 'color' : _vm.change > 0 ? 'green' : 'red' })},[_vm._v(\" \"+_vm._s(_vm.change.toFixed(2))+\" \"+_vm._s((_vm.changeRate * 100).toFixed(2))+\"%\")]):_vm._e()]),_vm._l((_vm.model.Alerts),function(item,index){return _c('div',{key:index,staticClass:\"d-flex f-18\"},[_c('el-form-item',{attrs:{\"prop\":'Alerts.' + index + '.Group.Low.AlertPrice',\"rules\":item.RowRuler.LowPrice}},[_c('el-input',{staticClass:\"form-input\",staticStyle:{\"width\":\"160px\"},attrs:{\"type\":\"number\",\"autocomplete\":\"off\"},model:{value:(item.Group.Low.AlertPrice),callback:function ($$v) {_vm.$set(item.Group.Low, \"AlertPrice\", _vm._n($$v))},expression:\"item.Group.Low.AlertPrice\"}}),(item.Group.Low && !isNaN(item.Group.Low.AlertPrice) && item.Group.Low.AlertPrice < _vm.lastPrice )?_c('div',{staticClass:\"text-danger\"},[(item.Group.Low.AlertPrice)?_c('span',[_vm._v(_vm._s(((item.Group.Low.AlertPrice - _vm.lastPrice) / _vm.lastPrice * 100).toFixed(2))+\"%\")]):_vm._e()]):_vm._e()],1),_c('span',{staticClass:\"text-center mt-2\",staticStyle:{\"width\":\"120px\"}},[_vm._v(\"≤ Price ≥\")]),_c('el-form-item',{attrs:{\"prop\":'Alerts.' + index + '.Group.High.AlertPrice',\"rules\":item.RowRuler.HighPrice}},[_c('el-input',{staticClass:\"form-input\",staticStyle:{\"width\":\"160px\"},attrs:{\"type\":\"number\",\"autocomplete\":\"off\"},model:{value:(item.Group.High.AlertPrice),callback:function ($$v) {_vm.$set(item.Group.High, \"AlertPrice\", _vm._n($$v))},expression:\"item.Group.High.AlertPrice\"}}),(item.Group.High && !isNaN(item.Group.High.AlertPrice) && item.Group.High.AlertPrice > _vm.lastPrice )?_c('div',{staticClass:\"text-success\"},[(item.Group.High.AlertPrice)?_c('span',[_vm._v(\" \"+_vm._s(((item.Group.High.AlertPrice - _vm.lastPrice) / _vm.lastPrice * 100).toFixed(2))+\"% \")]):_vm._e()]):_vm._e()],1),_c('el-form-item',{staticClass:\"ml-2\",attrs:{\"prop\":'Alerts.' + index + '.Group.TriggerToDo'}},[_c('label',[_c('el-checkbox',{model:{value:(item.Group.TriggerToDo),callback:function ($$v) {_vm.$set(item.Group, \"TriggerToDo\", $$v)},expression:\"item.Group.TriggerToDo\"}}),_vm._v(\" Trigger To-Do\")],1)]),_c('i',{staticClass:\"el-icon-delete pointer f-24 ml-2 mt-2\",on:{\"click\":function($event){return _vm.removeRow(item)}}})],1)})],2):_vm._e(),_c('span',{staticClass:\"pointer f-16 ml-2\",on:{\"click\":_vm.addNewRow}},[_vm._v(\"+ Add Alert\")]),_c('div',{staticClass:\"dialog-footer text-center\",attrs:{\"slot\":\"footer\"},slot:\"footer\"},[_c('el-button',{attrs:{\"type\":\"success\"},on:{\"click\":_vm.submit}},[_vm._v(\"Ok\")]),_c('el-button',{attrs:{\"type\":\"danger\"},on:{\"click\":function($event){_vm.innerVisible = false}}},[_vm._v(\"Cancel\")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { Component, Vue, Prop, Watch } from 'vue-property-decorator'\r\nimport validation, { Ruler } from '@/common/element-val'\r\nimport { ElForm } from 'element-ui/types/form'\r\nimport { AlertTypeInfo, PriceAlert } from '@/services/data'\r\nimport symbolService from '@/services/symbolService'\r\nimport utility from '@/common/utility'\r\n\r\ninterface RowRuler {\r\n LowPrice: Ruler;\r\n HighPrice: Ruler;\r\n}\r\n\r\nexport interface PriceAlertGroup {\r\n Low: PriceAlert;\r\n High: PriceAlert;\r\n TriggerToDo: boolean;\r\n}\r\n\r\n@Component\r\nexport default class SetAlertPrice extends Vue {\r\n name = 'SetAlertPrice.vue'\r\n $refs: {\r\n theForm: ElForm;\r\n }\r\n\r\n @Prop() visible: boolean\r\n @Prop() symbolName: string\r\n @Prop() lastPrice: number\r\n @Prop() change: number\r\n @Prop() changeRate: number\r\n @Prop() typeInfo: AlertTypeInfo\r\n\r\n innerVisible = false\r\n model = {\r\n Alerts: new Array<{ Group: PriceAlertGroup; RowRuler: RowRuler }>()\r\n }\r\n\r\n createRowRuler (alertRow: PriceAlertGroup): RowRuler {\r\n return {\r\n LowPrice: [{\r\n validator: validation.number(),\r\n trigger: 'blur'\r\n }, {\r\n validator: validation.fun()(() => {\r\n if (!alertRow.High.AlertPrice || !alertRow.Low.AlertPrice) return true\r\n else return alertRow.Low.AlertPrice && !isNaN(alertRow.Low.AlertPrice) && alertRow.Low.AlertPrice < this.lastPrice\r\n }, 'Target < Current Price'),\r\n trigger: 'blur'\r\n }],\r\n HighPrice: [{\r\n validator: validation.number(),\r\n trigger: 'blur'\r\n }, {\r\n validator: validation.fun()(() => {\r\n if (!alertRow.High.AlertPrice || !alertRow.Low.AlertPrice) return true\r\n else return alertRow.High.AlertPrice && !isNaN(alertRow.High.AlertPrice) && alertRow.High.AlertPrice > this.lastPrice\r\n }, 'Target > Current Price'),\r\n trigger: 'blur'\r\n }]\r\n }\r\n }\r\n\r\n async mounted () {\r\n this.innerVisible = this.visible\r\n await this.loadData()\r\n }\r\n\r\n @Watch('visible')\r\n onValueChanged (v: boolean) {\r\n this.innerVisible = v\r\n }\r\n\r\n @Watch('innerVisible')\r\n onInputValueChanged (v: boolean\r\n ) {\r\n this.$emit('update:visible', v)\r\n }\r\n\r\n async loadData () {\r\n const res = await symbolService.getAlertPricesAsync(this.typeInfo)\r\n if (res.Result) {\r\n const rows: PriceAlertGroup[] = []\r\n res.Result.forEach(p => {\r\n if (p.Type === 'Low') {\r\n const find = rows.find(q => q.Low == null)\r\n if (find) {\r\n find.Low = p\r\n } else {\r\n rows.push({ Low: p, High: null, TriggerToDo: p.TriggerToDo })\r\n }\r\n } else if (p.Type === 'High') {\r\n const find = rows.find(q => q.High == null)\r\n if (find) {\r\n find.High = p\r\n } else {\r\n rows.push({ High: p, Low: null, TriggerToDo: p.TriggerToDo })\r\n }\r\n }\r\n })\r\n rows.forEach(p => {\r\n p.Low = p.Low ?? { PriceAlertId: 0, AlertPrice: null, Type: 'Low', TriggerToDo: false }\r\n p.High = p.High ?? { PriceAlertId: 0, AlertPrice: null, Type: 'High', TriggerToDo: false }\r\n p.TriggerToDo = p.Low.TriggerToDo || p.High.TriggerToDo\r\n })\r\n this.model.Alerts = rows.map(p => {\r\n return { Group: p, RowRuler: this.createRowRuler(p), TriggerToDo: p.Low?.TriggerToDo || p.High?.TriggerToDo }\r\n })\r\n if (res.Result.length === 0) {\r\n this.addNewRow()\r\n }\r\n }\r\n }\r\n\r\n addNewRow () {\r\n const newAlert: PriceAlertGroup = {\r\n Low: { PriceAlertId: 0, AlertPrice: null, Type: 'Low', TriggerToDo: false },\r\n High: { PriceAlertId: 0, AlertPrice: null, Type: 'High', TriggerToDo: false },\r\n TriggerToDo: false\r\n }\r\n this.model.Alerts.push({\r\n Group: newAlert, RowRuler: this.createRowRuler(newAlert)\r\n })\r\n }\r\n\r\n removeRow (item: any) {\r\n utility.removeArrayItem(this.model.Alerts, item)\r\n }\r\n\r\n submit () {\r\n this.$refs.theForm.validate(async (valid: boolean) => {\r\n if (valid) {\r\n const rows: PriceAlert[] = []\r\n this.model.Alerts.forEach(p => {\r\n if (p.Group.Low.AlertPrice) {\r\n p.Group.Low.TriggerToDo = p.Group.TriggerToDo\r\n rows.push(p.Group.Low)\r\n }\r\n if (p.Group.High.AlertPrice) {\r\n p.Group.High.TriggerToDo = p.Group.TriggerToDo\r\n rows.push(p.Group.High)\r\n }\r\n })\r\n const res = await symbolService.addOrUpdateAlertPriceAsync(this.typeInfo, rows)\r\n if (res.Error) {\r\n await this.$alert(res.Error)\r\n } else {\r\n this.$emit('updated', { alertInfo: this.typeInfo, count: rows.length })\r\n this.innerVisible = false\r\n }\r\n }\r\n })\r\n }\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetAlertPrice.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetAlertPrice.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SetAlertPrice.vue?vue&type=template&id=38db87f4&\"\nimport script from \"./SetAlertPrice.vue?vue&type=script&lang=ts&\"\nexport * from \"./SetAlertPrice.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = (!STRICT_METHOD || !USES_TO_LENGTH) ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n} : [].forEach;\n","'use strict';\nvar $ = require('../internals/export');\nvar forEach = require('../internals/array-for-each');\n\n// `Array.prototype.forEach` method\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\n$({ target: 'Array', proto: true, forced: [].forEach != forEach }, {\n forEach: forEach\n});\n","import store from '../store'\r\nimport utility from '@/common/utility'\r\n\r\nexport interface SocketMsg {\r\n MsgId: number;\r\n Action: string;\r\n Content?: any;\r\n}\r\n\r\nexport class ClientSocket {\r\n Socket: WebSocket\r\n DataSource = 'Server'\r\n TryTimes = 0\r\n Messages: Array = []\r\n OnMessage: Array<(msg: SocketMsg) => void> = []\r\n OnOpen: () => void = null\r\n OnError: (err: Event) => void = null\r\n isConnecting = false\r\n timeoutInterval = 0\r\n autoConnect = true\r\n context: object = null\r\n\r\n constructor (dataSource: string) {\r\n this.DataSource = dataSource\r\n }\r\n\r\n private getWsUrl () {\r\n if (store.state.user == null) {\r\n return null\r\n }\r\n const jwt = store.state.user.jwt\r\n const ws = location.protocol === 'https:' ? 'wss' : 'ws'\r\n let url: string = null\r\n if (this.DataSource === 'Local') {\r\n url = `ws://localhost:12479/ws?jwt=${jwt}&uid=${store.state.user.uid}`\r\n } else {\r\n url = `${ws}://${window.location.host}/api/ws?jwt=${jwt}&uid=${store.state.user.uid}`\r\n if (window.location.host.startsWith('localhost') || window.location.host.startsWith('192.168')) {\r\n url = `${ws}://localhost:5000/api/ws?jwt=${jwt}&uid=${store.state.user.uid}`\r\n }\r\n }\r\n return url\r\n }\r\n\r\n public init () {\r\n this.autoConnect = true\r\n if (typeof (WebSocket) !== 'undefined') {\r\n if (this.Socket && this.Socket.readyState < 2) {\r\n return\r\n }\r\n const url = this.getWsUrl()\r\n if (!url) {\r\n return\r\n }\r\n try {\r\n // console.log('Connecting to: ' + url)\r\n this.Socket = new WebSocket(url)\r\n // 监听socket连接\r\n this.Socket.onopen = () => {\r\n // the connection maybe connecting,but not connected here.\r\n this.sendMessages()\r\n if (this.OnOpen) {\r\n this.OnOpen()\r\n }\r\n }\r\n // 监听socket错误信息\r\n this.Socket.onerror = err => {\r\n // the connection maybe connecting,but not connected here.\r\n if (this.OnError) {\r\n this.OnError(err)\r\n }\r\n this.reconnect()\r\n }\r\n // 监听socket消息\r\n this.Socket.onmessage = msg => {\r\n const message = JSON.parse(msg.data) as SocketMsg\r\n if (message.Action === 'resAcc') this.sendDirectMsg('sendContext', this.context)\r\n if (this.OnMessage.length > 0) {\r\n for (let i = 0; i < this.OnMessage.length; i++) {\r\n this.OnMessage[i](message)\r\n }\r\n }\r\n }\r\n // on Close\r\n this.Socket.onclose = () => {\r\n this.reconnect()\r\n }\r\n } catch (e) {\r\n // console.log(e)\r\n }\r\n }\r\n }\r\n\r\n public sendContext (context: object) {\r\n this.context = context\r\n // console.log('sending', this.DataSource, context)\r\n this.sendDirectMsg('sendContext', context)\r\n }\r\n\r\n private reconnect () {\r\n if (!this.autoConnect) return\r\n if (this.isConnecting) {\r\n return\r\n }\r\n if (this.timeoutInterval) {\r\n clearInterval(this.timeoutInterval)\r\n }\r\n this.isConnecting = true\r\n this.timeoutInterval = setTimeout(() => {\r\n this.init()\r\n this.isConnecting = false\r\n }, 4000)\r\n }\r\n\r\n stopAutoConnect () {\r\n this.autoConnect = false\r\n }\r\n\r\n public sendDirectMsg (action: string, content: any) {\r\n if (this.Socket != null && this.Socket.readyState === 1) {\r\n try {\r\n // console.log('sendDirectMsg', this.DataSource, content)\r\n this.Socket.send(JSON.stringify({ MsgId: 0, Action: action, Content: content }))\r\n } catch (e) {\r\n }\r\n }\r\n }\r\n\r\n private sendMessages () {\r\n if (this.TryTimes > 3) {\r\n this.TryTimes = 0\r\n return\r\n }\r\n if (this.Socket != null && this.Socket.readyState === 1) {\r\n this.sendDirectMsg('sendContext', this.context)\r\n while (this.Messages.length > 0) {\r\n const msg = this.Messages.shift()\r\n console.log('sent delay message', this.DataSource, msg)\r\n try {\r\n this.Socket.send(JSON.stringify(msg))\r\n } catch (e) {\r\n console.log(e)\r\n }\r\n }\r\n this.TryTimes = 0\r\n } else {\r\n this.TryTimes++\r\n setTimeout(() => {\r\n this.sendMessages()\r\n }, 200)\r\n }\r\n }\r\n\r\n public addMessageCallBack (callback: (msg: SocketMsg) => void) {\r\n this.OnMessage.push(callback)\r\n }\r\n\r\n public removeMessageCallBack (callback: (msg: SocketMsg) => void) {\r\n utility.removeArrayItem(this.OnMessage, callback)\r\n }\r\n\r\n public sendMsg (msg: SocketMsg) {\r\n if (this.Socket == null || this.Socket.readyState !== 1) {\r\n if (msg.Action !== 'sendContext') { this.Messages.push(msg) }\r\n return\r\n }\r\n console.log('send msg', this.DataSource, msg)\r\n try {\r\n this.Socket.send(JSON.stringify(msg))\r\n } catch (e) {\r\n }\r\n }\r\n\r\n changeSource (source: string) {\r\n if (this.DataSource !== source) {\r\n this.DataSource = source\r\n this.close()\r\n }\r\n }\r\n\r\n close () {\r\n this.autoConnect = false\r\n if (this.Socket) {\r\n this.Socket.close()\r\n this.Socket = null\r\n }\r\n }\r\n}\r\n\r\nconst server = new ClientSocket('Server')\r\nconst local = new ClientSocket('Local')\r\n\r\nexport default {\r\n Server: server,\r\n Local: local,\r\n GetSocketServer (): ClientSocket {\r\n const dataSource = localStorage.getItem('StockDataSource')\r\n if (dataSource === 'Local') return local\r\n return server\r\n },\r\n InitAll (callback: (msg: SocketMsg) => void) {\r\n server.init()\r\n server.addMessageCallBack(callback)\r\n local.init()\r\n local.addMessageCallBack(callback)\r\n },\r\n SendAll (context: Record) {\r\n if (localStorage.getItem('StockDataSource') === 'Local') {\r\n server.sendContext(null)\r\n local.sendContext(context)\r\n } else {\r\n server.sendContext(context)\r\n local.sendContext(null)\r\n }\r\n },\r\n RemoveAll (callback: (msg: SocketMsg) => void) {\r\n server.removeMessageCallBack(callback)\r\n local.removeMessageCallBack(callback)\r\n }\r\n}\r\n","export interface ApiResult {\r\n Error: string;\r\n Result: T;\r\n}\r\n\r\nexport interface ApiBooleanResult {\r\n Error: string;\r\n Result: boolean;\r\n}\r\n\r\nexport interface JwtResult {\r\n jwt: string;\r\n chromeToken: string;\r\n}\r\n\r\nexport interface User {\r\n email: string;\r\n name: string;\r\n accNo: string;\r\n jwt: string;\r\n uid?: string;\r\n agentId?: string;\r\n}\r\n\r\nexport interface MessageText {\r\n success?: string;\r\n error?: string;\r\n}\r\n\r\nexport interface Sort {\r\n key: string;\r\n direction: string;\r\n}\r\n\r\nexport interface SocketResponse {\r\n Action: string;\r\n Content: T;\r\n}\r\n\r\nexport interface ContractSymbol {\r\n SymbolUId: number;\r\n SymbolId: number;\r\n Symbol: string;\r\n SecType: string;\r\n Currency: string;\r\n PrimaryExch: string;\r\n CompanyName: string;\r\n CondId?: number;\r\n Description?: string;\r\n Detail?: any;\r\n IssuerId?: string;\r\n}\r\n\r\nexport interface BasePortfolio {\r\n Position: number;\r\n MarketValue: number;\r\n AverageCost: number;\r\n DailyPL?: number;\r\n}\r\n\r\nexport interface Option {\r\n Right: string;\r\n Multiplier: number;\r\n Expiration: string;\r\n Strike: number;\r\n Code: string;\r\n}\r\n\r\nexport interface OptionRow {\r\n OptionId: number;\r\n OptionUId: number;\r\n LocalSymbol: string;\r\n Right: string;\r\n Multiplier: number;\r\n ExpirationDate: string;\r\n Strike: number;\r\n ComboType?: string;\r\n}\r\n\r\nexport interface OptionSymbol extends OptionRow, ContractSymbol {\r\n Expiration: string;\r\n}\r\n\r\nexport interface WatchOption {\r\n Option: OptionSymbol;\r\n Price: Price;\r\n}\r\n\r\nexport interface CryptoSymbol\r\n{\r\n CryptoId: number;\r\n Code: string;\r\n Name: string;\r\n}\r\n\r\nexport enum SymbolType\r\n{\r\n Stock = 1,\r\n Option = 2,\r\n Crypto = 3,\r\n Bond = 4\r\n}\r\n\r\nexport interface OtmRange {\r\n SymbolId: number;\r\n Low: number;\r\n High: number;\r\n Run?: boolean;\r\n RangeType?: 'Download' | 'Freebie';\r\n}\r\n\r\nexport interface OptionPrice {\r\n Option: OptionRow;\r\n Price: BasePrice;\r\n}\r\n\r\nexport interface PortfolioMessage extends BasePortfolio {\r\n PortfolioId: number;\r\n SecType: string;\r\n ConId: number;\r\n AccountName: string;\r\n StockPrice?: Price;\r\n OptionData?: OptionRow;\r\n MarketPrice: number;\r\n UnrealizedPL: number;\r\n Change: number;\r\n ChangeRate: number;\r\n Return: number;\r\n Alert?: boolean;\r\n ExRate: number;\r\n Exposure?: number;\r\n StrikeProx?: string;\r\n}\r\n\r\nexport interface PortfolioGroup {\r\n Symbol: ContractSymbol;\r\n Items: PortfolioMessage[];\r\n ComboType: number;\r\n IsExpanded?: boolean;\r\n}\r\n\r\nexport class PortfolioGroupCls implements PortfolioGroup {\r\n constructor (group: PortfolioGroup) {\r\n this.Symbol = group.Symbol\r\n this.Items = group.Items\r\n this.ComboType = group.ComboType\r\n }\r\n\r\n Symbol: ContractSymbol\r\n Items: PortfolioMessage[]\r\n ComboType: number;\r\n IsExpanded? = true\r\n}\r\n\r\nexport interface GroupedData {\r\n SecType: string;\r\n Items: T[];\r\n Keys: string[];\r\n Sort: Sort;\r\n}\r\n\r\nexport interface WatchListName {\r\n WatchListId: number;\r\n Name: string;\r\n Keys: string[];\r\n OptKeys: string[];\r\n CryptoKeys: string[];\r\n BondKeys: string[];\r\n IsSystem: boolean;\r\n IsReadOnly: boolean;\r\n FromUserId: number;\r\n Rank: number;\r\n}\r\n\r\nexport interface WatchGroup {\r\n WatchName: WatchListName;\r\n Symbols: WatchSymbol[];\r\n Options: WatchOption[];\r\n Cryptos: WatchCrypto[];\r\n Rank?: number;\r\n LastUpdated?: string;\r\n}\r\n\r\nexport interface BasePrice {\r\n Last: number;\r\n Bid?: number;\r\n Ask?: number;\r\n Open: number;\r\n Close: number;\r\n}\r\n\r\nexport interface Price extends BasePrice {\r\n Volume?: number;\r\n AvgVolume?: number;\r\n LastUpdated?: string;\r\n NextEarnDate?: string;\r\n LastClosed?: number;\r\n Status?: number;\r\n BidYtm?: number;\r\n Bid?: number;\r\n DailyBid?: number;\r\n DailyBidYtm?: number;\r\n\r\n getLast? (): number;\r\n\r\n getClose? (): number;\r\n\r\n getChange? (): number;\r\n\r\n getChangeRate? (): number;\r\n\r\n getPreAfterChange? (): number;\r\n\r\n getPreAfterChangeRate? (): number;\r\n}\r\n\r\nconst PreMarketStart = 4\r\nconst PreMarketEnd = 16\r\nconst InTrading = 8\r\nconst Closed = 64\r\n\r\nexport class PriceCls implements Price {\r\n Open: number\r\n Close: number\r\n Last: number\r\n Bid: number\r\n BidYtm?: number\r\n DailyBid?: number\r\n DailyBidYtm?: number\r\n Volume?: number\r\n AvgVolume?: number\r\n LastUpdated?: string\r\n NextEarnDate?: string\r\n LastClosed?: number\r\n Status?: number\r\n\r\n constructor (price: Price) {\r\n if (price != null) {\r\n this.Open = price.Open\r\n this.Close = price.Close\r\n this.Last = price.Last\r\n this.Bid = price.Bid\r\n this.BidYtm = price.BidYtm\r\n this.DailyBid = price.DailyBid\r\n this.DailyBidYtm = price.DailyBidYtm\r\n this.Volume = price.Volume\r\n this.AvgVolume = price.AvgVolume\r\n this.LastUpdated = price.LastUpdated\r\n this.NextEarnDate = price.NextEarnDate\r\n this.LastClosed = price.LastClosed\r\n this.Status = price.Status\r\n }\r\n }\r\n\r\n getLast (): number {\r\n if (this.Status === PreMarketStart || this.Status === PreMarketEnd) { // support pre after price for some us stocks\r\n return this.LastClosed\r\n } else {\r\n return this.Last\r\n }\r\n }\r\n\r\n getClose (): number {\r\n return this.Close\r\n }\r\n\r\n getChange (): number {\r\n const last = this.getLast()\r\n const close = this.getClose()\r\n if (close && last) {\r\n return last - close\r\n }\r\n return 0\r\n }\r\n\r\n getChangeRate (): number {\r\n const change = this.getChange()\r\n const closed = this.getClose()\r\n if (change) {\r\n return (change / closed) * 100\r\n }\r\n return 0\r\n }\r\n\r\n getPreAfterChange (): number {\r\n if (this.Status === PreMarketStart || this.Status === PreMarketEnd) {\r\n if (this.Last && this.LastClosed) {\r\n return (this.Last - this.LastClosed)\r\n }\r\n }\r\n return null\r\n }\r\n\r\n getPreAfterChangeRate (): number {\r\n const change = this.getPreAfterChange()\r\n if (change) {\r\n return (change / this.LastClosed) * 100\r\n }\r\n return null\r\n }\r\n}\r\n\r\nexport interface StockPrice {\r\n Symbol: ContractSymbol;\r\n Price: Price;\r\n ExRate?: number;\r\n}\r\n\r\nexport interface WatchSymbol extends StockPrice {\r\n WatchListId: number;\r\n NextEarnDate: string;\r\n Alert: boolean;\r\n Rank?: number;\r\n Target?: number;\r\n IsDownload?: boolean;\r\n IsDownloading?: boolean;\r\n Portfolio?: BasePortfolio;\r\n}\r\n\r\nexport interface WatchCrypto {\r\n WatchListId: number;\r\n Alert: boolean;\r\n Rank?: number;\r\n Target?: number;\r\n Symbol: CryptoSymbol;\r\n}\r\n\r\nexport interface AlertTypeInfo{\r\n type: 'Stock' | 'Option' | 'Bond';\r\n symbolId?: number;\r\n optionId?: number;\r\n}\r\n\r\nexport interface PriceAlert {\r\n PriceAlertId: number;\r\n AlertPrice: number;\r\n Type: string;\r\n TriggerToDo: boolean;\r\n Created?: string;\r\n CreatedStr?: string;\r\n IsDeleting?: boolean;\r\n SymbolId?: number;\r\n OptionId?: number;\r\n}\r\n\r\nexport interface PriceMsgContent {\r\n Name: string;\r\n Value: number;\r\n LastTime?: string;\r\n Status: number;\r\n}\r\n\r\nexport interface OptionMsgContent extends PriceMsgContent {\r\n ConId?: number;\r\n Otm: number;\r\n StockPrice: number;\r\n Target: number;\r\n}\r\n\r\nexport interface TransactionItem {\r\n SymbolTransId?: number;\r\n SymbolId: number;\r\n Quantity: number;\r\n CostPerShare: number;\r\n TransDate: string;\r\n Commission: number;\r\n Type: string;\r\n}\r\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.Symbol)?_c('div',{staticClass:\"d-inline-block\"},[( _vm.Symbol.Currency === 'HKD' && _vm.Symbol.SecType === 'STK' )?_c('span',{class:_vm.SymbolClass},[_vm._v(\" HKG:\"),_c('label',{class:_vm.SymbolClass},[_vm._v(_vm._s(_vm.Symbol.Symbol.padStart(4,'0')))])]):( _vm.Symbol.PrimaryExch == 'SEHKSZSE' )?_c('span',{class:_vm.SymbolClass},[_vm._v(\"SHE:\"),_c('span',{class:_vm.SymbolClass},[_vm._v(_vm._s(_vm.Symbol.Symbol.padStart(4,'0')))])]):( _vm.Symbol.SecType == 'BOND' )?_c('span',{class:_vm.SymbolClass},[_vm._v(\" \"+_vm._s(_vm.Symbol.Symbol)+\" \")]):_c('span',{class:_vm.SymbolClass},[_vm._v(_vm._s(_vm.Symbol.Symbol))])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\r\nimport { ContractSymbol } from '@/services/data'\r\nimport { Component, Vue, Prop } from 'vue-property-decorator'\r\n\r\n@Component\r\nexport default class SymbolName extends Vue {\r\n name = 'SymbolName'\r\n @Prop() Symbol: ContractSymbol\r\n @Prop() SymbolClass: string\r\n}\r\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SymbolName.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SymbolName.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SymbolName.vue?vue&type=template&id=171114f6&\"\nimport script from \"./SymbolName.vue?vue&type=script&lang=ts&\"\nexport * from \"./SymbolName.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","'use strict';\nvar $ = require('../internals/export');\nvar $find = require('../internals/array-iteration').find;\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar arrayMethodUsesToLength = require('../internals/array-method-uses-to-length');\n\nvar FIND = 'find';\nvar SKIPS_HOLES = true;\n\nvar USES_TO_LENGTH = arrayMethodUsesToLength(FIND);\n\n// Shouldn't skip holes\nif (FIND in []) Array(1)[FIND](function () { SKIPS_HOLES = false; });\n\n// `Array.prototype.find` method\n// https://tc39.es/ecma262/#sec-array.prototype.find\n$({ target: 'Array', proto: true, forced: SKIPS_HOLES || !USES_TO_LENGTH }, {\n find: function find(callbackfn /* , that = undefined */) {\n return $find(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables(FIND);\n","import {\r\n ContractSymbol, PriceAlert, PriceCls, StockPrice, OptionPrice, AlertTypeInfo, OptionSymbol, SymbolType\r\n} from '@/services/data'\r\nimport ServiceBase from '@/services/serviceBase'\r\n\r\nexport interface SymbolPriceAlert {\r\n Symbol: { Symbol: ContractSymbol; Alerts: PriceAlert[] }[];\r\n Name: string;\r\n Option: { Option: OptionSymbol; Alerts: PriceAlert[] }[];\r\n}\r\n\r\nexport interface RssFeeds {\r\n SymbolId: number;\r\n FeedIcon?: string;\r\n Link: string;\r\n FeedName: string;\r\n}\r\n\r\nexport interface RssNews {\r\n Title: string;\r\n Author: string;\r\n Link: string;\r\n Icon: string;\r\n PublishDate: string;\r\n}\r\n\r\nexport interface OptionScanRes {\r\n Symbol: ContractSymbol;\r\n Expirations: string[];\r\n Strikes: number[];\r\n Multiplier: number;\r\n}\r\n\r\nexport interface OptionWatchData extends OptionPrice {\r\n IsWatched: boolean;\r\n}\r\n\r\nexport default {\r\n async getSymbolPriceAsync (SymbolId: number) {\r\n const res = await ServiceBase.tryPostResult('/symbol/getSymbolWithPrice', { SymbolId })\r\n if (res.Result) {\r\n res.Result.Price = new PriceCls(res.Result.Price)\r\n }\r\n return res\r\n },\r\n async getRssNewsAsync (SymbolId: number) {\r\n return await ServiceBase.tryPostResult('/symbol/getRssNews', { SymbolId })\r\n },\r\n async addOrUpdateBatchAlertPrice (models: { AlertInfo: AlertTypeInfo; PriceAlerts: PriceAlert[] }[]) {\r\n return await ServiceBase.tryPostBooleanResult('/symbol/addOrUpdateBatchAlertPrice', models)\r\n },\r\n async addOrUpdateAlertPriceAsync (alertInfo: AlertTypeInfo, model: PriceAlert[]) {\r\n return await ServiceBase.tryPostBooleanResult('/symbol/addOrUpdateAlertPrice', {\r\n AlertInfo: alertInfo,\r\n PriceAlerts: model\r\n })\r\n },\r\n async getAlertPricesAsync (alertInfo: AlertTypeInfo) {\r\n return await ServiceBase.tryPostResult('/symbol/getAlertPrices', alertInfo)\r\n },\r\n async getAllAlertPricesAsync () {\r\n return await ServiceBase.tryPostResult('/symbol/getAllAlertPrices')\r\n },\r\n async removePriceAlertsAsync (PriceAlertId: number) {\r\n return await ServiceBase.tryPostBooleanResult('/symbol/removePriceAlerts', { PriceAlertId })\r\n },\r\n async updateFromYahooAsync () {\r\n return await ServiceBase.tryPostBooleanResult('/symbol/updateFromYahoo')\r\n },\r\n async searchSymbolsAsync (input: string, type: SymbolType) {\r\n return await ServiceBase.tryPostResult('/symbol/searchSymbols', { input, type })\r\n },\r\n async searchOptionsAsync (input: string, expiration: string) {\r\n return await ServiceBase.tryPostResult('/symbol/searchOptions', { input, expiration })\r\n },\r\n async getOptionDefInfo (symbolId: number) {\r\n return await ServiceBase.tryPostResult('/symbol/getOptionDefInfo', { symbolId })\r\n },\r\n async getWatchedOptions (SymbolId: number) {\r\n return await ServiceBase.tryPostResult('/symbol/getWatchedOptions', { SymbolId })\r\n },\r\n async generateOptions (SymbolId: number, Expiration: string) {\r\n return await ServiceBase.tryPostResult<{ Data: OptionWatchData[]; MarketState: number }>('/symbol/generateOptions', { SymbolId, Expiration })\r\n }\r\n}\r\n","import serviceBase from '@/services/serviceBase'\r\nimport { ApiBooleanResult, ApiResult } from '@/services/data'\r\n\r\nexport interface Pop3OrSmtpModel {\r\n Server: string;\r\n Port: number;\r\n Ssl: boolean;\r\n}\r\n\r\nexport interface EmailModel {\r\n Reg: string;\r\n RegPwd: string;\r\n Statement: string;\r\n StatementPwd: string;\r\n TradeConfirm: string;\r\n TradeConfirmPwd: string;\r\n}\r\n\r\nexport interface SettingValueModel {\r\n Name: string;\r\n Value: string;\r\n ValueType: string;\r\n}\r\n\r\nexport default {\r\n async readSysSettingByNamesAsync (names: Array): Promise> {\r\n return await serviceBase.tryPostResult('/Setting/readSysSettingByNames', names)\r\n },\r\n async addOrUpdateSysSettingAsync (settings: SettingValueModel[]): Promise {\r\n return await serviceBase.tryPostBooleanResult('/Setting/addOrUpdateSysSetting', settings)\r\n },\r\n async readUserSettingsByNamesAsync (names: Array): Promise> {\r\n return await serviceBase.tryPostResult('/Setting/readUserSettingsByNames', names)\r\n },\r\n async addOrUpdateUserSettingAsync (settings: SettingValueModel[]): Promise {\r\n return await serviceBase.tryPostBooleanResult('/Setting/addOrUpdateUserSetting', settings)\r\n },\r\n async testPop3 (data: Pop3OrSmtpModel): Promise {\r\n return await serviceBase.tryPostBooleanResult('/Setting/testPop', data)\r\n },\r\n async testSmtp (data: Pop3OrSmtpModel): Promise {\r\n return await serviceBase.tryPostBooleanResult('/Setting/testSmtp', data)\r\n }\r\n}\r\n","module.exports = __webpack_public_path__ + \"img/bell-green.svg\";","module.exports = __webpack_public_path__ + \"img/bell.svg\";"],"sourceRoot":""}