{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/state/modules/signalr.js","webpack:///./src/state/modules/riskprofiles.js","webpack:///./src/state/modules/auth.js","webpack:///./src/explorer-client.js","webpack:///./src/state/modules/accounts.js","webpack:///./src/oauth-client.js","webpack:///./node_modules/moment/locale sync ^\\.\\/.*$","webpack:///./src/locales sync [A-Za-z0-9-_,\\s]+\\.json$/","webpack:///./src/state/modules/execution.js","webpack:///./src/App.vue?8857","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/router/routes.js","webpack:///./src/modals.js","webpack:///./src/router/index.js","webpack:///./src/i18n.js","webpack:///./src/main.js","webpack:///./src/state/modules/chatgpt.js","webpack:///./src/state/modules/calculation-signalr.js","webpack:///./src/state/modules/tax-loss-harvest.js","webpack:///./src/state/modules/index.js","webpack:///./src/state/store.js","webpack:///./src/explorer-axois.js","webpack:///./src/state/modules/users.js","webpack:///./src/state/modules/portfolios.js","webpack:///./src/state/modules/layout.js","webpack:///./src/state/modules/portfolio-edit.js","webpack:///./src/state/modules/instruments.js","webpack:///index|\\.unit\\.).)*\\.js$","webpack:///./src/helpers.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","signalR","require","connection","state","connectionId","mutations","SET_CONNECTIONID","newValue","getters","signalrConnection","actions","connect","dispatch","commit","stop","localStorage","getItem","uri","process","log","HubConnectionBuilder","withUrl","accessTokenFactory","withAutomaticReconnect","build","on","root","seq","aicontext","start","catch","onreconnected","resp","onclose","disconnect","items","loading","deleting","processing","SET_ITEMS","SET_LOADING","SET_DELETING","SET_PROCESSING","activeItems","filter","x","calculationStatus","input","http","post","response","errors","load","req","params","delete","id","update","put","currentUser","loadState","token","permissions","createEmptyPermissions","managedAccounts","IdentityId","removeItem","getElementById","style","display","SET_MANAGED_ACCOUNTS","saveState","SET_TOKEN","setItem","SET_PERMISSIONS","SET_CURRENT_USER","loggedIn","accountPermissions","userPermissions","predefinedProfilePermissions","userType","Roles","find","userRole","logIn","email","password","login","username","explorerHttp","userResp","user","allowManage","canUsePredefinedProfilesOnly","logOut","clearTokens","location","reload","refresh","CanUsePredefinedProfileOnly","JSON","stringify","b","parse","axiosManager","createAxiosInstance","baseURL","authBaseURL","parseErrors","loadById","map","webpackContext","webpackContextResolve","keys","__timer","interactiveBrokerClient","axios","headers","camelizeKeys","obj","Array","isArray","v","constructor","reduce","camelCase","UPLOAD_TRANSACTIONS","VALIDATE_TRANSACTIONS","EXECUTION_RUNTIME_INIT_REQ_NAME","SAVE_EXECUTION_SETTINGS_REQ_NAME","LOAD_EXECUTION_SETTINGS_REQ_NAME","SAVE_USER_SETTINGS_REQ_NAME","LOAD_USER_SETTINGS_REQ_NAME","LOAD_LIVE_INDICIES_REQ_NAME","LOAD_LIVE_ITEM_STAT_REQ_NAME","LOAD_LIVE_ITEM_REBALANCE_REQ_NAME","LOAD_LIVE_ITEM_PORTFOLIO_POSITIONS_REQ_NAME","LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS_REQ_NAME","MAKE_OPTIMIZATION_REQ_NAME","TIMEOUT","getDefaultState","interactiveBrokers","connected","uploadTransactionsFromTime","liveIndicies","isBackendAlive","requests","failedRequests","runtime","orders","item","currencyName","chartData","weights","totalReturn","ytd","mtd","dtd","reBalanceCloseoutTrades","reBalance","positions","userSettings","executionSettings","transactions","total","reqSize","SET_ORDER_PROCESSING","SET_UPLOAD_TRANSACTIONS_FROM_TIME","PAPER_TRADE_UPDATE","selected","forEach","orderStatus","HANDLE_INTERACTIVE_BROKER_POSITIONS_UPDATE","brokerPositions","pos","ticker","includes","nameList","split","brokerPos","instrument","brokerPosition","position","HANDLE_INTERACTIVE_BROKER_UPDATE","order","clOrderID","index","indexOf","status","filled","cumQty","remaining","leavesQty","SET_INTERACTIVE_BROKERS_CONNECTED","copy","SET_ORDER_SIZE","size","Number","NaN","orderQuantity","SET_ORDER_PRICE","price","parseFloat","SET_ORDER_PARAMETERS","parameters","orderParameters","SET_ORDER_TYPE","orderType","settings","orderTypes","SELECT_ALL_RUNTIME_ORDERS","UNSELECT_ALL_RUNTIME_ORDERS","SET_ORDER_SELECTED","SET_REBALANCE_CLOSEOUT_TRADES","SET_ITEM_ID","SET_CURRENCY_NAME","SET_IS_BACKEND_ALIVE","SET_LIVE_INDICIES_LOADING","BEGIN_REQUEST","END_REQUEST","reqId","ReqId","failed","errorMessage","ErrorMessage","HANDLE_INIT_REQUEST","payload","Payload","Name","Id","ChartData","Weights","TotalReturn","YTD","MTD","DTD","timeStamp","moment","dateTime","DateTime","unix","Value","productName","ProductName","Ticker","weight","Weight","currentSize","CurrentSize","difference","Difference","proposedSize","ProposedSize","newItem","OrderSettings","displayName","DisplayName","OrderTypes","OrderType","OrderParameters","defaultOrderType","DefaultOrderType","providerName","ProviderName","debugLevel","DebugLevel","autoExecuteTime","AutoExecuteTime","autoSnap","AutoSnap","hasExecuted","HasExecuted","aus","AUS","ausCurrency","AUSCurrency","gearing","Gearing","startDate","StartDate","format","annualFixFee","AnnualFixFee","annualPerformanceFee","AnnualPerformanceFee","userName","UserName","Password","Email","broker","Broker","defaultOrderSettings","DefaultOrderSettings","options","brokers","Options","Brokers","brokerName","BrokerName","Settings","Size","BrokerPosition","pl","PL","warning","Warning","Total","Items","direction","Direction","Price","timestamp","Timestamp","more","runtimeOrders","cancellAllInteractiveBrokersOrders","checkConnectStatusOfInteractiveBrokers","updateInteractiveBrokersOrders","uploadTransactionsFromFile","txList","validateTransactionsFromFile","uploadTransactionsFromInteractiveBrokers","param","backendTransactions","tx","timeStampStr","toDate","execId","execID","orderId","orderID","qty","cancelOrderInteractiveBrokers","executeOrderInteractiveBrokers","dto","getBrokerPositionsFromInteractiveBrokers","connectToInteractiveBrokers","disconnectFromInteractiveBrokers","makeReq","rootState","uuid","v1","clientId","signalr","auth","userId","changeCurrency","changeReBalanceCloseoutTrades","saveExecutionSettings","saveUserSettings","saveUserSettingsById","loadExecutionSettings","loadUserSettings","loadPositions","loadTransactions","take","skip","loadMoreItemTransactions","loadItem","loadLiveIndicies","makeOptimization","json","initRuntime","taxLossHarvest","taxLossHarvestData","paperTrade","orderSide","Math","abs","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","page","titleTemplate","title","$store","created","path","component","meta","beforeResolve","routeTo","routeFrom","next","store","authRequired","authRequiredOnPreviousRoute","matched","some","route","props","isAllow","assign","query","_stack","forceClose","Vue","use","VueRouter","VueMeta","keyName","router","routes","scrollBehavior","to","from","savedPosition","y","sendAudit","beforeEach","redirectToLogin","protocol","hostname","substring","redirectFrom","fullPath","loadLocaleMessages","locales","messages","match","locale","VueI18n","fallbackLocale","hcHeatmap","Highcharts","ExportingInit","ExportData","Stock","IndicatorsAll","highchartsMoreInit","solidGaugeInit","HighchartsVue","VueAuthHref","config","productionTip","VueYoutube","BootstrapVue","vco","Vuelidate","VueSweetalert2","VueMask","VueApexCharts","Chat","i18n","render","h","App","$mount","controller","audio","audioContext","AudioContext","playing","playQueue","playText","playMsg","pause","currentTime","abort","AbortController","fetch","lang","method","body","text","signal","ok","blob","Audio","URL","createObjectURL","addEventListener","play","sendToPlay","stopText","chatId","thinking","soundEnabled","messageList","optimizationRequest","SET_THINKING","val","INIT_CHAT","assistantMessages","author","msg","ADD_MESSAGES","jsonMsg","PLAY_SPEECH","resume","lastMessage","OPTIMIZATION_SUCCESS","pop","OPTIMIZATION_ERROR","startChat","sendMsg","optimiationError","optimiationSuccess","previewReady","modulesCache","storeData","getNamespace","subtree","namespace","namespaced","requireModule","fileName","moduleDefinition","modulePath","replace","Vuex","Store","strict","getSignalRConnectionId","saveTokens","access_token","refresh_token","clear","isAuth","axiosInstance","loginRequest","Token","AccessToken","RefreshToken","requestInterceptor","accessToken","Authorization","responseInterceptor","responseErrorInterceptor","refreshToken","interceptors","perPage","keyword","accountIs","SET_PAGE","SET_FILTER","HANDLE_LOAD_RESPONSE","respData","setFilter","setPage","debounceLoad","debounce","accountId","TAX_LOSS_HARVEST_PAPER_TRADE","TAX_LOSS_HARVEST_REPLACEMENT_POSITIONS","EXECUTE","LOAD_USER_PORTFOLIOS","LOAD_USERS_PORTFOLIO_SUMMARY","LOAD_USER_PORTFOLIO_BY_ID","CREATE_USER_PORTFOLIO","DELETE_USER_PORTFOLIO","usersPortfolioSummary","suppressCamelCase","originalPayload","respPayload","prefixPattern","originalBasket","Data","Basket","indexNames","instruments","originalInstruments","Instruments","sIndexOfPrefix","eIndexOfPrefix","tmp","sourceWeight","instrumentWeights","InstrumentWeights","min","Min","max","Max","loadUserPortfolios","loadUserPortfolio","loadUsersPortfolioSummary","userIDs","createUserPortfolio","constraints","solutionName","riskProfileId","riskTolerance","weightsMode","endDate","updateUserPortfolio","loadPortfolio","deleteUserPortfolio","execute","taxLossHarvestPaperTrade","taxLossHarvestReplacementPositions","layoutType","layoutWidth","leftSidebarType","topbar","loader","fullScreen","CHANGE_LAYOUT","CHANGE_LAYOUT_WIDTH","CHANGE_LEFT_SIDEBAR_TYPE","CHANGE_TOPBAR","CHANGE_FULLSCREEN","LOADER","changeLayoutType","changeLayoutWidth","changeLeftSidebarType","changeTopbar","changeLoaderValue","previewRequestSeq","previewRequest","demo","RESET_PREVIEW","portfolio","stat","pending","requesting","colors","REQ_PREVIEW_STARTED","orig","START_PREVIEW_REQUEST","prev","END_PREVIEW_REQUEST","childrenMap","SET_MODEL","model","makePreviewRequest","debounceReqPreview","respRreview","reqRreview","internal","classifiers","normalized","ids","mtdFrom","ytdFrom","annualisedReturnFrom","realisedVolatilityFrom","downsideVolatilityFrom","maxDrawdownFrom","winningMonthsFrom","sharpeRatioFrom","sortinoRatioFrom","calmarRatioFrom","mtdTill","ytdTill","annualisedReturnTill","realisedVolatilityTill","downsideVolatilityTill","maxDrawdownTill","winningMonthsTill","sharpeRatioTill","sortinoRatioTill","calmarRatioTill","by","asc","hasAccess","defaults","SET_NORMALIZED","SET_ORDER","SET_USER","CLEAR_DATA","SET_MODE","RESET_FILTER","ADD_DEFAULT","instrumentId","REMOVE_DEFAULT","ADD_ACCESS","REMOVE_ACCESS","SET_CLASSIFIERS","entries","values","acc","curr","filterItems","instrumentItems","SET_TOTAL","SET_IDS","SET_SETTINGS","SET_HAS_ACCESS","SET_DEFAULTS","isStatFiltered","setNormalized","setOrder","setSettings","setIDs","resetFilter","addDefault","removeDefault","addAccess","removeAccess","loadInstrument","showOnlyAccessible","normalisedPerformance","harpeRatioTill","loadClassifiers","Message","a","chartColors","monthNames"],"mappings":"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","file":"js/app.2171f55b.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-c0b09c6a\":\"07c86d98\",\"chunk-0abef96c\":\"b822c758\",\"chunk-2071ece4\":\"083f1871\",\"chunk-2d0c4d85\":\"25bf45a2\",\"chunk-17c73076\":\"7e56b764\",\"chunk-4db86d10\":\"bcac76ba\",\"chunk-76d788a1\":\"030c96e1\",\"chunk-1b4c82a2\":\"4595612c\",\"chunk-cccc64a4\":\"8184865e\",\"chunk-27238e59\":\"3e451a52\",\"chunk-2b330bce\":\"eaf9a0e9\",\"chunk-68bd17fc\":\"e12c023b\",\"chunk-a7e0eab0\":\"8400a47b\",\"chunk-2d217e30\":\"de4f4811\",\"chunk-4dbc266e\":\"271fa6f6\",\"chunk-73f8c5c3\":\"2cfa0f42\",\"chunk-2d0c78c1\":\"7df180f0\",\"chunk-2d21f0fd\":\"a4bb4644\",\"chunk-2d0d7120\":\"4e18e282\",\"chunk-4db9d57a\":\"c188681c\",\"chunk-cf133432\":\"a33dde53\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-c0b09c6a\":1,\"chunk-1b4c82a2\":1,\"chunk-2b330bce\":1,\"chunk-68bd17fc\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-c0b09c6a\":\"48f58da3\",\"chunk-0abef96c\":\"31d6cfe0\",\"chunk-2071ece4\":\"31d6cfe0\",\"chunk-2d0c4d85\":\"31d6cfe0\",\"chunk-17c73076\":\"31d6cfe0\",\"chunk-4db86d10\":\"31d6cfe0\",\"chunk-76d788a1\":\"31d6cfe0\",\"chunk-1b4c82a2\":\"b5511a38\",\"chunk-cccc64a4\":\"31d6cfe0\",\"chunk-27238e59\":\"31d6cfe0\",\"chunk-2b330bce\":\"f5d74f52\",\"chunk-68bd17fc\":\"b5511a38\",\"chunk-a7e0eab0\":\"31d6cfe0\",\"chunk-2d217e30\":\"31d6cfe0\",\"chunk-4dbc266e\":\"31d6cfe0\",\"chunk-73f8c5c3\":\"31d6cfe0\",\"chunk-2d0c78c1\":\"31d6cfe0\",\"chunk-2d21f0fd\":\"31d6cfe0\",\"chunk-2d0d7120\":\"31d6cfe0\",\"chunk-4db9d57a\":\"31d6cfe0\",\"chunk-cf133432\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","const signalR = require(\"@microsoft/signalr\");\r\n\r\n\r\nlet connection = null;\r\n\r\nexport const state = {\r\n connectionId: null\r\n}\r\n\r\nexport const mutations = {\r\n SET_CONNECTIONID(state, newValue) {\r\n state.connectionId = newValue;\r\n },\r\n}\r\nexport const getters = {\r\n signalrConnection(state) {\r\n return state.connectionId;\r\n }\r\n}\r\n\r\nexport const actions = {\r\n connect({ dispatch, commit }) {\r\n return new Promise( (resolve) => {\r\n \r\n if(connection) {\r\n connection.stop();\r\n }\r\n \r\n if(localStorage.getItem('access_token')) {\r\n const uri = process.env.VUE_APP_BASE_URL + \"/client-notifications\";\r\n console.log('signlaR trying to connect ' + uri)\r\n connection = new signalR.HubConnectionBuilder()\r\n .withUrl(uri, { accessTokenFactory: () => localStorage.getItem('access_token') })\r\n .withAutomaticReconnect()\r\n .build();\r\n \r\n connection.on(\"RefreshAccounts\", () => {\r\n console.log('RefreshAccounts');\r\n dispatch('accounts/load', null, { root: true });\r\n });\r\n\r\n connection.on(\"PreviewRequestResponse\", ({seq, data, error, aicontext} = {}) => {\r\n console.log('PreviewRequestResponse', {seq, data, error, aicontext});\r\n dispatch('portfolioEdit/respRreview', {seq, data, error}, { root: true });\r\n dispatch('chatgpt/previewReady', {aicontext}, { root: true });\r\n });\r\n\r\n connection.on(\"RefreshRiskProfiles\", () => {\r\n console.log('RefreshRiskProfiles');\r\n dispatch('riskprofiles/load', null, { root: true });\r\n });\r\n \r\n connection.start()\r\n .then(() => {\r\n console.log('signlaR connected!', connection.connection.connectionId)\r\n commit('SET_CONNECTIONID', connection.connection.connectionId);\r\n })\r\n .catch(console.error);\r\n\r\n connection.onreconnected((connectionId) => {\r\n console.log('signlaR onreconnected!', connectionId)\r\n commit('SET_CONNECTIONID', connectionId);\r\n });\r\n\r\n connection.on(\"SendMessage\", data => {\r\n console.log('SendMessage', data);\r\n commit('portfolios/END_REQUEST', { resp: data}, { root: true });\r\n commit('execution/END_REQUEST', { resp: data}, { root: true });\r\n });\r\n\r\n connection.onclose(async () => {\r\n commit('SET_CONNECTIONID', null);\r\n });\r\n \r\n }\r\n resolve();\r\n });\r\n },\r\n disconnect() {\r\n return new Promise( (resolve) => {\r\n if(connection) {\r\n connection.stop();\r\n }\r\n connection = null;\r\n resolve();\r\n });\r\n },\r\n}\r\n","\r\nimport http from '@/oauth-client'\r\n\r\nexport const state = {\r\n items: [],\r\n loading: false,\r\n deleting: null,\r\n processing: false\r\n}\r\n\r\nexport const mutations = {\r\n SET_ITEMS(state, newValue) {\r\n state.items = newValue\r\n },\r\n SET_LOADING(state, newValue) {\r\n state.loading = newValue\r\n },\r\n SET_DELETING(state, newValue) {\r\n state.deleting = newValue\r\n },\r\n SET_PROCESSING(state, newValue) {\r\n state.processing = newValue\r\n }\r\n}\r\n\r\nexport const getters = {\r\n loading(state) {\r\n return state.loading;\r\n },\r\n deleting(state) {\r\n return state.deleting;\r\n },\r\n processing(state) {\r\n return state.processing;\r\n },\r\n items(state) {\r\n return state.items;\r\n },\r\n activeItems(state) {\r\n return state.items.filter(x => x.calculationStatus === 'Success');\r\n }\r\n}\r\n\r\nexport const actions = {\r\n create({ commit, dispatch }, input) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.post('api/risk-profiles', input).then((response)=>{\r\n commit('SET_PROCESSING', false);\r\n dispatch('load');\r\n resolve(response.data);\r\n }).catch((errors) => {\r\n commit('SET_PROCESSING', false);\r\n reject(errors);\r\n });\r\n });\r\n },\r\n load({ commit }) {\r\n commit('SET_LOADING', true);\r\n return new Promise( (resolve, reject) => {\r\n const req = {\r\n \r\n };\r\n http.get('api/risk-profiles', { params: req}).then((response)=>{\r\n commit('SET_ITEMS', response.data);\r\n commit('SET_LOADING', false);\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_LOADING', false);\r\n reject(error);\r\n });\r\n });\r\n },\r\n delete({ commit, dispatch }, { id } = {}) {\r\n commit('SET_DELETING', id);\r\n return new Promise( (resolve, reject) => {\r\n http.delete(`api/risk-profiles/${id}`).then((response)=>{\r\n commit('SET_DELETING', null);\r\n dispatch('load');\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_DELETING', null);\r\n reject(error);\r\n });\r\n });\r\n },\r\n update({ commit, dispatch }, { id, name } = {}) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.put(`api/risk-profiles/${id}`, { name}).then((response)=>{\r\n commit('SET_PROCESSING', false);\r\n dispatch('load');\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_PROCESSING', false);\r\n reject(error);\r\n });\r\n });\r\n }\r\n}\r\n","import http from '../../oauth-client'\r\nimport explorerHttp from '@/explorer-client'\r\n\r\nexport const state = {\r\n currentUser: loadState('c8wealth.auth.current-user'),\r\n token: window.localStorage.getItem('access_token'),\r\n permissions: loadState('c8wealth.auth.permissions') || createEmptyPermissions(),\r\n managedAccounts: loadState('c8wealth.auth.managed-accounts') || []\r\n}\r\n\r\nif(!(state.currentUser?.IdentityId)) {\r\n state.currentUser = null;\r\n state.token = null;\r\n state.permissions = createEmptyPermissions();\r\n state.managedAccounts = [];\r\n window.localStorage.removeItem('c8wealth.auth.current-user');\r\n localStorage.removeItem('access_token');\r\n localStorage.removeItem('refresh_token');\r\n}\r\n\r\nif(loadState('c8wealth.auth.current-user')) {\r\n document.getElementById(\"tradingview-widget-container\").style.display = 'block';\r\n}\r\n\r\nexport const mutations = {\r\n SET_MANAGED_ACCOUNTS(state, newValue) {\r\n state.managedAccounts = newValue\r\n if(newValue) {\r\n saveState('c8wealth.auth.managed-accounts', newValue);\r\n }\r\n else {\r\n localStorage.removeItem('c8wealth.auth.managed-accounts');\r\n }\r\n },\r\n SET_TOKEN(state, newValue) {\r\n state.token = newValue\r\n if(newValue) {\r\n localStorage.setItem('c8wealth.auth.token', newValue);\r\n }\r\n else {\r\n localStorage.removeItem('c8wealth.auth.token');\r\n }\r\n },\r\n SET_PERMISSIONS(state, newValue) {\r\n state.permissions = newValue || createEmptyPermissions();\r\n if(newValue) {\r\n saveState('c8wealth.auth.permissions', newValue);\r\n }\r\n else {\r\n localStorage.removeItem('c8wealth.auth.permissions');\r\n }\r\n },\r\n SET_CURRENT_USER(state, newValue) {\r\n state.currentUser = newValue\r\n if(newValue) {\r\n saveState('c8wealth.auth.current-user', newValue)\r\n }\r\n else {\r\n localStorage.removeItem('c8wealth.auth.current-user');\r\n }\r\n },\r\n}\r\n\r\nexport const getters = {\r\n // Whether the user is currently logged in.\r\n loggedIn(state) {\r\n return !!state.currentUser\r\n },\r\n token(state) {\r\n return state.token;\r\n },\r\n permissions(state) {\r\n return state.permissions || {};\r\n },\r\n accountPermissions(state) {\r\n return state.permissions.accountPermissions;\r\n },\r\n userPermissions(state) {\r\n return state.permissions.userPermissions;\r\n },\r\n predefinedProfilePermissions(state) {\r\n return state.permissions.predefinedProfilePermissions;\r\n },\r\n userType(state) {\r\n return state.currentUser?.Roles ? (state.currentUser.Roles.find(x => x === 'accountuser') ? 'Account' : 'C8') : '';\r\n },\r\n userRole(state) {\r\n return state.currentUser.Roles;\r\n },\r\n currentUser(state) {\r\n return state.currentUser;\r\n },\r\n managedAccounts(state) {\r\n return state.currentUser.managedAccounts;\r\n }\r\n}\r\n\r\nexport const actions = {\r\n // Logs in the current user.\r\n logIn({ dispatch, commit }, { email, password } = {}) {\r\n return new Promise( (resolve, reject) => {\r\n http.login({username: email, password}).then(async (response)=>{\r\n console.log(' response.data', response.data);\r\n const o = {...response.data};\r\n const userResp = await explorerHttp.get(`data/User/objects/current`);\r\n const user = userResp.data;\r\n const permissions = {\r\n predefinedProfilePermissions: (o.Roles && o.Roles.find(x => x === 'administrator') && !o.Roles.find(x => x === 'accountuser')) ? { allowManage: true} : { allowManage: false },\r\n userPermissions: o.Roles && o.Roles.find(x => x === 'administrator') ? { allowManage: true} : { allowManage: false },\r\n accountPermissions: o.Roles && o.Roles.find(x => x === 'administrator') && !o.Roles.find(x => x === 'accountuser') ? { allowManage: true} : { allowManage: false },\r\n canUsePredefinedProfilesOnly: user.canUsePredefinedProfilesOnly\r\n }\r\n o.permissions = permissions;\r\n commit('SET_CURRENT_USER', o);\r\n \r\n //console.log('userResp', userResp);\r\n commit('SET_PERMISSIONS', permissions);\r\n // commit('SET_MANAGED_ACCOUNTS', response.data.ManagedCompanies.map(x => x.Id));\r\n dispatch('signalr/connect', null, { root: true });\r\n await dispatch('refresh');\r\n \r\n document.getElementById(\"tradingview-widget-container\").style.display = 'block';\r\n resolve(response.data.token)\r\n }).catch((error) => {\r\n \r\n reject(error);\r\n });\r\n });\r\n },\r\n\r\n // Logs out the current user.\r\n logOut({ commit }) {\r\n console.log('auth logOut');\r\n // eslint-disable-next-line no-unused-vars\r\n document.getElementById(\"tradingview-widget-container\").style.display = 'none';\r\n commit('SET_CURRENT_USER', null);\r\n commit('SET_TOKEN', null);\r\n commit('SET_PERMISSIONS', null);\r\n commit('SET_MANAGED_ACCOUNTS', null);\r\n http.clearTokens();\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 1000);\r\n },\r\n async refresh({ commit, state }) {\r\n \r\n const userResp = await explorerHttp.get(`data/User/objects/current`);\r\n const user = userResp.data;\r\n const o = {...state.currentUser, Roles: user.Roles };\r\n\r\n const permissions = {\r\n predefinedProfilePermissions: (o.Roles && o.Roles.find(x => x === 'administrator') && !o.Roles.find(x => x === 'accountuser')) ? { allowManage: true} : { allowManage: false },\r\n userPermissions: o.Roles && o.Roles.find(x => x === 'administrator') ? { allowManage: true} : { allowManage: false },\r\n accountPermissions: o.Roles && o.Roles.find(x => x === 'administrator') && !o.Roles.find(x => x === 'accountuser') ? { allowManage: true} : { allowManage: false },\r\n canUsePredefinedProfilesOnly: user.CanUsePredefinedProfileOnly\r\n }\r\n o.permissions = permissions;\r\n commit('SET_CURRENT_USER', o);\r\n commit('SET_PERMISSIONS', permissions);\r\n }\r\n}\r\n\r\n// ===\r\n// Private helpers\r\n// ===\r\n\r\nfunction createEmptyPermissions(){\r\n return {\r\n accountPermissions:{\r\n managedAccounts:[],\r\n allowManage: false\r\n },\r\n \r\n };\r\n}\r\n\r\nfunction saveState(key, state) {\r\n window.localStorage.setItem(key, JSON.stringify(state))\r\n}\r\n\r\n\r\nfunction loadState(key) {\r\n const b = window.localStorage.getItem(key);\r\n if (b) {\r\n return JSON.parse(b);\r\n }\r\n return null;\r\n}\r\n","import createAxiosInstance from './explorer-axois';\r\n\r\nconst axiosManager = createAxiosInstance({ \r\n baseURL: process.env.VUE_APP_AUTH_BASE_URL,\r\n authBaseURL: process.env.VUE_APP_AUTH_BASE_URL,\r\n});\r\n\r\nexport default axiosManager;","import http from '@/oauth-client'\r\nimport { parseErrors } from '../../helpers'\r\n\r\nexport const state = {\r\n items: [],\r\n loading: false,\r\n processing: false\r\n}\r\n\r\nexport const mutations = {\r\n SET_ITEMS(state, newValue) {\r\n state.items = newValue\r\n },\r\n SET_LOADING(state, newValue) {\r\n state.loading = newValue\r\n },\r\n SET_PROCESSING(state, newValue) {\r\n state.processing = newValue\r\n }\r\n}\r\n\r\nexport const getters = {\r\n loading(state) {\r\n return state.loading;\r\n },\r\n processing(state) {\r\n return state.processing;\r\n },\r\n items(state) {\r\n return state.items;\r\n },\r\n}\r\n\r\nexport const actions = {\r\n delete({ commit, dispatch }, id) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.delete('api/accounts/' + id).then((response)=>{\r\n commit('SET_PROCESSING', false);\r\n dispatch('load');\r\n resolve(response.data);\r\n }).catch((errors) => {\r\n commit('SET_PROCESSING', false);\r\n reject(parseErrors(errors));\r\n });\r\n });\r\n },\r\n update({ commit, dispatch }, { id, input} = {}) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.put('api/accounts/' + id, input).then((response)=>{\r\n commit('SET_PROCESSING', false);\r\n dispatch('load');\r\n resolve(response.data);\r\n }).catch((errors) => {\r\n commit('SET_PROCESSING', false);\r\n reject(parseErrors(errors));\r\n });\r\n });\r\n },\r\n create({ commit, dispatch }, input) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.post('api/accounts', input).then((response)=>{\r\n commit('SET_PROCESSING', false);\r\n dispatch('load');\r\n resolve(response.data);\r\n }).catch((errors) => {\r\n commit('SET_PROCESSING', false);\r\n reject(parseErrors(errors));\r\n });\r\n });\r\n },\r\n load({ commit }) {\r\n commit('SET_LOADING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.get('api/accounts').then((response)=>{\r\n commit('SET_ITEMS', response.data);\r\n commit('SET_LOADING', false);\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_LOADING', false);\r\n reject(error);\r\n });\r\n });\r\n },\r\n loadById({ commit }, id) {\r\n commit('SET_LOADING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.get('api/accounts/' + id).then((response) => {\r\n commit('SET_LOADING', false);\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_LOADING', false);\r\n reject(error);\r\n });\r\n });\r\n }\r\n}\r\n","import createAxiosInstance from './explorer-axois';\r\n\r\nconst axiosManager = createAxiosInstance({ \r\n baseURL: process.env.VUE_APP_BASE_URL,\r\n authBaseURL: process.env.VUE_APP_AUTH_BASE_URL,\r\n});\r\n\r\nexport default axiosManager;","var map = {\n\t\"./af\": \"2bfb\",\n\t\"./af.js\": \"2bfb\",\n\t\"./ar\": \"8e73\",\n\t\"./ar-dz\": \"a356\",\n\t\"./ar-dz.js\": \"a356\",\n\t\"./ar-kw\": \"423e\",\n\t\"./ar-kw.js\": \"423e\",\n\t\"./ar-ly\": \"1cfd\",\n\t\"./ar-ly.js\": \"1cfd\",\n\t\"./ar-ma\": \"0a84\",\n\t\"./ar-ma.js\": \"0a84\",\n\t\"./ar-sa\": \"8230\",\n\t\"./ar-sa.js\": \"8230\",\n\t\"./ar-tn\": \"6d83\",\n\t\"./ar-tn.js\": \"6d83\",\n\t\"./ar.js\": \"8e73\",\n\t\"./az\": \"485c\",\n\t\"./az.js\": \"485c\",\n\t\"./be\": \"1fc1\",\n\t\"./be.js\": \"1fc1\",\n\t\"./bg\": \"84aa\",\n\t\"./bg.js\": \"84aa\",\n\t\"./bm\": \"a7fa\",\n\t\"./bm.js\": \"a7fa\",\n\t\"./bn\": \"9043\",\n\t\"./bn-bd\": \"9686\",\n\t\"./bn-bd.js\": \"9686\",\n\t\"./bn.js\": \"9043\",\n\t\"./bo\": \"d26a\",\n\t\"./bo.js\": \"d26a\",\n\t\"./br\": \"6887\",\n\t\"./br.js\": \"6887\",\n\t\"./bs\": \"2554\",\n\t\"./bs.js\": \"2554\",\n\t\"./ca\": \"d716\",\n\t\"./ca.js\": \"d716\",\n\t\"./cs\": \"3c0d\",\n\t\"./cs.js\": \"3c0d\",\n\t\"./cv\": \"03ec\",\n\t\"./cv.js\": \"03ec\",\n\t\"./cy\": \"9797\",\n\t\"./cy.js\": \"9797\",\n\t\"./da\": \"0f14\",\n\t\"./da.js\": \"0f14\",\n\t\"./de\": \"b469\",\n\t\"./de-at\": \"b3eb\",\n\t\"./de-at.js\": \"b3eb\",\n\t\"./de-ch\": \"bb71\",\n\t\"./de-ch.js\": \"bb71\",\n\t\"./de.js\": \"b469\",\n\t\"./dv\": \"598a\",\n\t\"./dv.js\": \"598a\",\n\t\"./el\": \"8d47\",\n\t\"./el.js\": \"8d47\",\n\t\"./en-au\": \"0e6b\",\n\t\"./en-au.js\": \"0e6b\",\n\t\"./en-ca\": \"3886\",\n\t\"./en-ca.js\": \"3886\",\n\t\"./en-gb\": \"39a6\",\n\t\"./en-gb.js\": \"39a6\",\n\t\"./en-ie\": \"e1d3\",\n\t\"./en-ie.js\": \"e1d3\",\n\t\"./en-il\": \"7333\",\n\t\"./en-il.js\": \"7333\",\n\t\"./en-in\": \"ec2e\",\n\t\"./en-in.js\": \"ec2e\",\n\t\"./en-nz\": \"6f50\",\n\t\"./en-nz.js\": \"6f50\",\n\t\"./en-sg\": \"b7e9\",\n\t\"./en-sg.js\": \"b7e9\",\n\t\"./eo\": \"65db\",\n\t\"./eo.js\": \"65db\",\n\t\"./es\": \"898b\",\n\t\"./es-do\": \"0a3c\",\n\t\"./es-do.js\": \"0a3c\",\n\t\"./es-mx\": \"b5b7\",\n\t\"./es-mx.js\": \"b5b7\",\n\t\"./es-us\": \"55c9\",\n\t\"./es-us.js\": \"55c9\",\n\t\"./es.js\": \"898b\",\n\t\"./et\": \"ec18\",\n\t\"./et.js\": \"ec18\",\n\t\"./eu\": \"0ff2\",\n\t\"./eu.js\": \"0ff2\",\n\t\"./fa\": \"8df4\",\n\t\"./fa.js\": \"8df4\",\n\t\"./fi\": \"81e9\",\n\t\"./fi.js\": \"81e9\",\n\t\"./fil\": \"d69a\",\n\t\"./fil.js\": \"d69a\",\n\t\"./fo\": \"0721\",\n\t\"./fo.js\": \"0721\",\n\t\"./fr\": \"9f26\",\n\t\"./fr-ca\": \"d9f8\",\n\t\"./fr-ca.js\": \"d9f8\",\n\t\"./fr-ch\": \"0e49\",\n\t\"./fr-ch.js\": \"0e49\",\n\t\"./fr.js\": \"9f26\",\n\t\"./fy\": \"7118\",\n\t\"./fy.js\": \"7118\",\n\t\"./ga\": \"5120\",\n\t\"./ga.js\": \"5120\",\n\t\"./gd\": \"f6b4\",\n\t\"./gd.js\": \"f6b4\",\n\t\"./gl\": \"8840\",\n\t\"./gl.js\": \"8840\",\n\t\"./gom-deva\": \"aaf2\",\n\t\"./gom-deva.js\": \"aaf2\",\n\t\"./gom-latn\": \"0caa\",\n\t\"./gom-latn.js\": \"0caa\",\n\t\"./gu\": \"e0c5\",\n\t\"./gu.js\": \"e0c5\",\n\t\"./he\": \"c7aa\",\n\t\"./he.js\": \"c7aa\",\n\t\"./hi\": \"dc4d\",\n\t\"./hi.js\": \"dc4d\",\n\t\"./hr\": \"4ba9\",\n\t\"./hr.js\": \"4ba9\",\n\t\"./hu\": \"5b14\",\n\t\"./hu.js\": \"5b14\",\n\t\"./hy-am\": \"d6b6\",\n\t\"./hy-am.js\": \"d6b6\",\n\t\"./id\": \"5038\",\n\t\"./id.js\": \"5038\",\n\t\"./is\": \"0558\",\n\t\"./is.js\": \"0558\",\n\t\"./it\": \"6e98\",\n\t\"./it-ch\": \"6f12\",\n\t\"./it-ch.js\": \"6f12\",\n\t\"./it.js\": \"6e98\",\n\t\"./ja\": \"079e\",\n\t\"./ja.js\": \"079e\",\n\t\"./jv\": \"b540\",\n\t\"./jv.js\": \"b540\",\n\t\"./ka\": \"201b\",\n\t\"./ka.js\": \"201b\",\n\t\"./kk\": \"6d79\",\n\t\"./kk.js\": \"6d79\",\n\t\"./km\": \"e81d\",\n\t\"./km.js\": \"e81d\",\n\t\"./kn\": \"3e92\",\n\t\"./kn.js\": \"3e92\",\n\t\"./ko\": \"22f8\",\n\t\"./ko.js\": \"22f8\",\n\t\"./ku\": \"2421\",\n\t\"./ku.js\": \"2421\",\n\t\"./ky\": \"9609\",\n\t\"./ky.js\": \"9609\",\n\t\"./lb\": \"440c\",\n\t\"./lb.js\": \"440c\",\n\t\"./lo\": \"b29d\",\n\t\"./lo.js\": \"b29d\",\n\t\"./lt\": \"26f9\",\n\t\"./lt.js\": \"26f9\",\n\t\"./lv\": \"b97c\",\n\t\"./lv.js\": \"b97c\",\n\t\"./me\": \"293c\",\n\t\"./me.js\": \"293c\",\n\t\"./mi\": \"688b\",\n\t\"./mi.js\": \"688b\",\n\t\"./mk\": \"6909\",\n\t\"./mk.js\": \"6909\",\n\t\"./ml\": \"02fb\",\n\t\"./ml.js\": \"02fb\",\n\t\"./mn\": \"958b\",\n\t\"./mn.js\": \"958b\",\n\t\"./mr\": \"39bd\",\n\t\"./mr.js\": \"39bd\",\n\t\"./ms\": \"ebe4\",\n\t\"./ms-my\": \"6403\",\n\t\"./ms-my.js\": \"6403\",\n\t\"./ms.js\": \"ebe4\",\n\t\"./mt\": \"1b45\",\n\t\"./mt.js\": \"1b45\",\n\t\"./my\": \"8689\",\n\t\"./my.js\": \"8689\",\n\t\"./nb\": \"6ce3\",\n\t\"./nb.js\": \"6ce3\",\n\t\"./ne\": \"3a39\",\n\t\"./ne.js\": \"3a39\",\n\t\"./nl\": \"facd\",\n\t\"./nl-be\": \"db29\",\n\t\"./nl-be.js\": \"db29\",\n\t\"./nl.js\": \"facd\",\n\t\"./nn\": \"b84c\",\n\t\"./nn.js\": \"b84c\",\n\t\"./oc-lnc\": \"167b\",\n\t\"./oc-lnc.js\": \"167b\",\n\t\"./pa-in\": \"f3ff\",\n\t\"./pa-in.js\": \"f3ff\",\n\t\"./pl\": \"8d57\",\n\t\"./pl.js\": \"8d57\",\n\t\"./pt\": \"f260\",\n\t\"./pt-br\": \"d2d4\",\n\t\"./pt-br.js\": \"d2d4\",\n\t\"./pt.js\": \"f260\",\n\t\"./ro\": \"972c\",\n\t\"./ro.js\": \"972c\",\n\t\"./ru\": \"957c\",\n\t\"./ru.js\": \"957c\",\n\t\"./sd\": \"6784\",\n\t\"./sd.js\": \"6784\",\n\t\"./se\": \"ffff\",\n\t\"./se.js\": \"ffff\",\n\t\"./si\": \"eda5\",\n\t\"./si.js\": \"eda5\",\n\t\"./sk\": \"7be6\",\n\t\"./sk.js\": \"7be6\",\n\t\"./sl\": \"8155\",\n\t\"./sl.js\": \"8155\",\n\t\"./sq\": \"c8f3\",\n\t\"./sq.js\": \"c8f3\",\n\t\"./sr\": \"cf1e\",\n\t\"./sr-cyrl\": \"13e9\",\n\t\"./sr-cyrl.js\": \"13e9\",\n\t\"./sr.js\": \"cf1e\",\n\t\"./ss\": \"52bd\",\n\t\"./ss.js\": \"52bd\",\n\t\"./sv\": \"5fbd\",\n\t\"./sv.js\": \"5fbd\",\n\t\"./sw\": \"74dc\",\n\t\"./sw.js\": \"74dc\",\n\t\"./ta\": \"3de5\",\n\t\"./ta.js\": \"3de5\",\n\t\"./te\": \"5cbb\",\n\t\"./te.js\": \"5cbb\",\n\t\"./tet\": \"576c\",\n\t\"./tet.js\": \"576c\",\n\t\"./tg\": \"3b1b\",\n\t\"./tg.js\": \"3b1b\",\n\t\"./th\": \"10e8\",\n\t\"./th.js\": \"10e8\",\n\t\"./tk\": \"5aff\",\n\t\"./tk.js\": \"5aff\",\n\t\"./tl-ph\": \"0f38\",\n\t\"./tl-ph.js\": \"0f38\",\n\t\"./tlh\": \"cf75\",\n\t\"./tlh.js\": \"cf75\",\n\t\"./tr\": \"0e81\",\n\t\"./tr.js\": \"0e81\",\n\t\"./tzl\": \"cf51\",\n\t\"./tzl.js\": \"cf51\",\n\t\"./tzm\": \"c109\",\n\t\"./tzm-latn\": \"b53d\",\n\t\"./tzm-latn.js\": \"b53d\",\n\t\"./tzm.js\": \"c109\",\n\t\"./ug-cn\": \"6117\",\n\t\"./ug-cn.js\": \"6117\",\n\t\"./uk\": \"ada2\",\n\t\"./uk.js\": \"ada2\",\n\t\"./ur\": \"5294\",\n\t\"./ur.js\": \"5294\",\n\t\"./uz\": \"2e8c\",\n\t\"./uz-latn\": \"010e\",\n\t\"./uz-latn.js\": \"010e\",\n\t\"./uz.js\": \"2e8c\",\n\t\"./vi\": \"2921\",\n\t\"./vi.js\": \"2921\",\n\t\"./x-pseudo\": \"fd7e\",\n\t\"./x-pseudo.js\": \"fd7e\",\n\t\"./yo\": \"7f33\",\n\t\"./yo.js\": \"7f33\",\n\t\"./zh-cn\": \"5c3a\",\n\t\"./zh-cn.js\": \"5c3a\",\n\t\"./zh-hk\": \"49ab\",\n\t\"./zh-hk.js\": \"49ab\",\n\t\"./zh-mo\": \"3a6c\",\n\t\"./zh-mo.js\": \"3a6c\",\n\t\"./zh-tw\": \"90ea\",\n\t\"./zh-tw.js\": \"90ea\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"4678\";","var map = {\n\t\"./ar.json\": \"af08\",\n\t\"./en.json\": \"edd4\",\n\t\"./es.json\": \"a306\",\n\t\"./fr.json\": \"f693\",\n\t\"./zh.json\": \"3504\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"49f8\";","import http from '@/oauth-client'\r\nimport { uuid } from 'vue-uuid';\r\nimport moment from 'moment'\r\nimport { camelCase } from 'lodash';\r\nimport axios from 'axios';\r\n\r\nlet __timer;\r\n\r\nconst interactiveBrokerClient = axios.create({\r\n baseURL: 'http://localhost:7000',\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n // anything you want to add to the headers\r\n }\r\n});\r\n\r\nconst camelizeKeys = (obj) => {\r\n if (Array.isArray(obj)) {\r\n return obj.map(v => camelizeKeys(v));\r\n } else if (obj != null && obj.constructor === Object) {\r\n return Object.keys(obj).reduce(\r\n (result, key) => ({\r\n ...result,\r\n [camelCase(key)]: camelizeKeys(obj[key]),\r\n }),\r\n {},\r\n );\r\n }\r\n return obj;\r\n };\r\n\r\nconst UPLOAD_TRANSACTIONS = 'UPLOAD_TRANSACTIONS';\r\nconst VALIDATE_TRANSACTIONS = 'VALIDATE_TRANSACTIONS';\r\nconst EXECUTION_RUNTIME_INIT_REQ_NAME = 'EXECUTION_RUNTIME_INIT';\r\nconst SAVE_EXECUTION_SETTINGS_REQ_NAME = 'SAVE_EXECUTION_SETTINGS';\r\nconst LOAD_EXECUTION_SETTINGS_REQ_NAME = 'LOAD_EXECUTION_SETTINGS';\r\nconst SAVE_USER_SETTINGS_REQ_NAME = 'SAVE_USER_SETTINGS';\r\nconst LOAD_USER_SETTINGS_REQ_NAME = 'LOAD_USER_SETTINGS';\r\nconst LOAD_LIVE_INDICIES_REQ_NAME = 'LOAD_LIVE_INDICIES';\r\nconst LOAD_LIVE_ITEM_STAT_REQ_NAME = 'LOAD_LIVE_ITEM_STAT';\r\nconst LOAD_LIVE_ITEM_REBALANCE_REQ_NAME = 'LOAD_LIVE_ITEM_REBALANCE';\r\nconst LOAD_LIVE_ITEM_PORTFOLIO_POSITIONS_REQ_NAME = 'LOAD_LIVE_ITEM_PORTFOLIO_POSITIONS';\r\nconst LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS_REQ_NAME = 'LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS';\r\nconst MAKE_OPTIMIZATION_REQ_NAME = \"MAKE_OPTIMIZATION\";\r\n\r\n\r\nconst TIMEOUT = 120000;\r\n\r\nconst getDefaultState = () => {\r\n return {\r\n interactiveBrokers:{\r\n connected: false\r\n },\r\n uploadTransactionsFromTime: null,\r\n liveIndicies: [],\r\n isBackendAlive: false,\r\n requests: [],\r\n failedRequests: [],\r\n runtime: {\r\n orders: []\r\n },\r\n item: {\r\n id: null,\r\n \r\n currencyName: 'USD',\r\n name: '',\r\n chartData: [],\r\n weights: [],\r\n \r\n totalReturn: null,\r\n ytd: null,\r\n mtd: null,\r\n dtd: null,\r\n\r\n reBalanceCloseoutTrades: false,\r\n reBalance: [],\r\n positions: [],\r\n userSettings: null,\r\n executionSettings: null,\r\n transactions: {\r\n items: [],\r\n total: 0,\r\n reqSize: 100\r\n }\r\n }\r\n };\r\n};\r\n\r\nexport const state = getDefaultState();\r\n\r\nexport const mutations = {\r\n SET_ORDER_PROCESSING(state, {id, value}) {\r\n const items = [...state.runtime.orders];\r\n const o = items.find(x => x.id === id);\r\n o.processing = value;\r\n state.runtime.orders = items;\r\n },\r\n SET_UPLOAD_TRANSACTIONS_FROM_TIME(state, newValue) {\r\n state.uploadTransactionsFromTime = newValue;\r\n },\r\n PAPER_TRADE_UPDATE(state) {\r\n const items = [...state.runtime.orders.filter(x => x.selected)];\r\n items.forEach(x => x.orderStatus = 'Filled');\r\n },\r\n HANDLE_INTERACTIVE_BROKER_POSITIONS_UPDATE(state, {brokerPositions}) {\r\n const pos = JSON.parse(JSON.stringify(state.item.positions));\r\n pos.forEach(p=>{\r\n let ticker = p.ticker;\r\n if ( ticker.includes(\":\") )\r\n {\r\n var nameList = ticker.split(\":\");\r\n ticker = nameList[0];\r\n }\r\n const brokerPos = brokerPositions.find(x => x.instrument === ticker);\r\n if(brokerPos) {\r\n p.brokerPosition = brokerPos.position;\r\n // console.log('found position', brokerPos);\r\n } \r\n });\r\n // console.log('HANDLE_INTERACTIVE_BROKER_POSITIONS_UPDATE', {pos, brokerPositions});\r\n state.item.positions = pos;\r\n },\r\n HANDLE_INTERACTIVE_BROKER_UPDATE(state, data) {\r\n const items = [...state.runtime.orders];\r\n const order = items.find(x => x.id === data.clOrderID);\r\n \r\n if(order) {\r\n const index = items.indexOf(order);\r\n if(index>= 0) {\r\n \r\n const order = {...items[index]};\r\n order.orderStatus = data.status;\r\n order.filled = data.cumQty;\r\n order.remaining = data.leavesQty;\r\n items[index] = order;\r\n\r\n state.runtime = { ...state.runtime, orders: items};\r\n }\r\n }\r\n },\r\n SET_INTERACTIVE_BROKERS_CONNECTED(state, newValue) {\r\n const copy = {...state.interactiveBrokers};\r\n if(copy.connected !== true && newValue) {\r\n state.requests.forEach(req => {\r\n if(req.type === UPLOAD_TRANSACTIONS) {\r\n if(req.reject) {\r\n req.reject();\r\n }\r\n }\r\n });\r\n state.requests = state.requests.filter(req => req.type !== UPLOAD_TRANSACTIONS);\r\n }\r\n copy.connected = newValue;\r\n state.interactiveBrokers = copy;\r\n },\r\n SET_ORDER_SIZE(state, {index, size}) {\r\n if(size === '' || size == null || size == undefined || Number(size) === Number.NaN) {\r\n state.runtime.orders[index].orderQuantity = null;\r\n } else {\r\n state.runtime.orders[index].orderQuantity = Number(size)\r\n }\r\n },\r\n SET_ORDER_PRICE(state, {index, price}) {\r\n state.runtime.orders[index].price = price ? parseFloat(price) : 0;\r\n },\r\n SET_ORDER_PARAMETERS(state, {index, parameters}) {\r\n state.runtime.orders[index].orderParameters = parameters;\r\n },\r\n SET_ORDER_TYPE(state, {index, orderType}) {\r\n state.runtime.orders[index].orderType = orderType;\r\n const settings = state.runtime.orders[index].executionSettings.orderTypes.find(x => x.orderType === orderType);\r\n state.runtime.orders[index].orderParameters = settings.orderParameters;\r\n },\r\n SELECT_ALL_RUNTIME_ORDERS(state) {\r\n state.runtime.orders = state.runtime.orders.map(x =>{\r\n return {...x, selected: true };\r\n });\r\n },\r\n UNSELECT_ALL_RUNTIME_ORDERS(state) {\r\n state.runtime.orders = state.runtime.orders.map(x =>{\r\n return {...x, selected: false };\r\n });\r\n },\r\n SET_ORDER_SELECTED(state, {index, selected}) {\r\n state.runtime.orders[index].selected = selected;\r\n },\r\n SET_REBALANCE_CLOSEOUT_TRADES(state, newValue) {\r\n state.item.reBalanceCloseoutTrades = newValue;\r\n },\r\n SET_ITEM_ID(state, newValue) {\r\n state.item.id = newValue;\r\n },\r\n SET_CURRENCY_NAME(state, newValue) {\r\n state.item.currencyName = newValue;\r\n },\r\n SET_IS_BACKEND_ALIVE(state, newValue) {\r\n state.isBackendAlive = newValue\r\n },\r\n SET_LIVE_INDICIES_LOADING(state, newValue) {\r\n state.liveIndicies.loading = newValue\r\n },\r\n BEGIN_REQUEST(state, { req } = {}) {\r\n state.requests = [...state.requests, req];\r\n },\r\n END_REQUEST(state, { resp } = {}) {\r\n const reqId = resp.reqId || resp.ReqId;\r\n const req = state.requests.find(x => x.id == reqId );\r\n \r\n if(!req) return;\r\n\r\n // console.log('END_REQUEST', {req, resp });\r\n\r\n state.requests = [...state.requests.filter(x => x.id != reqId)];\r\n \r\n if(!resp.failed) {\r\n if(req.type === EXECUTION_RUNTIME_INIT_REQ_NAME) {\r\n HANDLE_INIT_REQUEST(state, { payload: resp.payload || resp.Payload } );\r\n }else if(req.type === LOAD_LIVE_INDICIES_REQ_NAME) {\r\n state.liveIndicies = (resp.payload || resp.Payload).map(x => {\r\n return { name: x.Name, id: x.id || x.Id };\r\n });\r\n } else if(req.type === LOAD_LIVE_ITEM_STAT_REQ_NAME) {\r\n const { Name, ChartData, Weights, TotalReturn, YTD, MTD, DTD } = resp.payload || resp.Payload;\r\n state.item.name = Name;\r\n state.item.chartData = ChartData.map(x => {\r\n return {\r\n timeStamp: moment(x.dateTime || x.DateTime).unix(),\r\n dateTime: x.dateTime || x.DateTime,\r\n value: x.value || x.Value\r\n };\r\n });\r\n state.item.weights = Weights.map(x => {\r\n return {\r\n productName: x.ProductName,\r\n ticker: x.Ticker,\r\n weight: x.weight || x.Weight\r\n };\r\n });\r\n state.item.totalReturn = TotalReturn;\r\n state.item.ytd = YTD;\r\n state.item.mtd = MTD;\r\n state.item.dtd = DTD;\r\n } else if(req.type === LOAD_LIVE_ITEM_REBALANCE_REQ_NAME) {\r\n const reBalance = resp.payload || resp.Payload;\r\n state.item.reBalance = reBalance.map(x => {\r\n return { productName: x.ProductName, ticker: x.Ticker, currentSize: x.CurrentSize, difference: x.Difference, proposedSize: x.ProposedSize};\r\n });\r\n } else if(req.type === LOAD_EXECUTION_SETTINGS_REQ_NAME) {\r\n \r\n const executionSettings = resp.payload || resp.Payload;\r\n \r\n try{\r\n const newItem = {...state.item, executionSettings: executionSettings.OrderSettings.map(x => {\r\n \r\n var o = {\r\n displayName: x.DisplayName,\r\n productName: x.ProductName,\r\n ticker: x.Ticker,\r\n // defaultOrderType: ot ? { orderType: ot.OrderType, orderParameters: ot.OrderParameters } : null,\r\n orderTypes: x.OrderTypes.map(p => {\r\n return { orderType: p.OrderType, orderParameters: p.OrderParameters }\r\n })\r\n };\r\n o.defaultOrderType = (x.DefaultOrderType || {}).OrderType;\r\n return o;\r\n })\r\n };\r\n state.item = newItem;\r\n }catch(e) {\r\n console.error(e);\r\n }\r\n \r\n } else if(req.type === LOAD_USER_SETTINGS_REQ_NAME) {\r\n const userSettings = resp.payload || resp.Payload;\r\n state.item = {...state.item, userSettings:{\r\n providerName: userSettings.ProviderName,\r\n name: userSettings.Name,\r\n debugLevel: userSettings.DebugLevel,\r\n autoExecuteTime: userSettings.AutoExecuteTime,\r\n autoSnap: userSettings.AutoSnap,\r\n hasExecuted: userSettings.HasExecuted,\r\n aus: userSettings.AUS,\r\n ausCurrency: userSettings.AUSCurrency,\r\n gearing: userSettings.Gearing,\r\n startDate: userSettings.StartDate ? moment(userSettings.StartDate).format('YYYY/MM/DD') : '',\r\n annualFixFee: userSettings.AnnualFixFee,\r\n annualPerformanceFee: userSettings.AnnualPerformanceFee,\r\n userName: userSettings.UserName,\r\n password: userSettings.Password,\r\n email: userSettings.Email,\r\n broker: userSettings.Broker,\r\n defaultOrderType: userSettings.DefaultOrderType,\r\n defaultOrderSettings: userSettings.DefaultOrderSettings,\r\n options: {\r\n brokers: userSettings.Options.Brokers.map(b => {\r\n return {\r\n brokerName: b.BrokerName,\r\n defaultOrderType: b.DefaultOrderType,\r\n orderTypes: b.OrderTypes.map(o => {\r\n return {\r\n orderType: o.OrderType,\r\n settings: o.Settings.map(s => {\r\n return {\r\n name: s.Name,\r\n value: s.Value\r\n }\r\n })\r\n }\r\n }),\r\n }\r\n })\r\n }\r\n }};\r\n } else if(req.type === LOAD_LIVE_ITEM_PORTFOLIO_POSITIONS_REQ_NAME) {\r\n const payload = resp.payload || resp.Payload;\r\n state.item.positions = payload.map(x => {\r\n return { displayName: x.DisplayName, productName: x.ProductName, ticker: x.Ticker, size: x.Size, brokerPosition: x.BrokerPosition, pl: x.PL, warning: x.Warning };\r\n });\r\n } else if(req.type === LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS_REQ_NAME) {\r\n const payload = resp.payload || resp.Payload;\r\n const { Total, Items } = payload;\r\n state.item.transactions.total = Total;\r\n const items = Items.map(x => {\r\n return { displayName: x.DisplayName, productName: x.ProductName, ticker: x.Ticker, direction: x.Direction, size: x.Size, price: x.Price, timestamp: x.Timestamp };\r\n });\r\n\r\n state.item.transactions.items = req.more ? [...state.item.transactions.items, ...items] : items;\r\n }\r\n if(req.resolve) {\r\n req.resolve(resp);\r\n }\r\n } else {\r\n state.failedRequests = [...state.failedRequests,{...req, errorMessage: resp.errorMessage || resp.ErrorMessage}];\r\n if(req.reject) {\r\n req.reject();\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport const getters = {\r\n uploadTransactionsFromTime(state) {\r\n return state.uploadTransactionsFromTime;\r\n },\r\n interactiveBrokers(state) {\r\n return state.interactiveBrokers;\r\n },\r\n item(state) {\r\n return state.item;\r\n },\r\n isBackendAlive(state) {\r\n return state.isBackendAlive;\r\n },\r\n liveIndicies(state) {\r\n return state.liveIndicies;\r\n },\r\n loading(state) {\r\n return state.requests.length > 0;\r\n },\r\n runtimeOrders(state) {\r\n return state.runtime.orders || [];\r\n }\r\n}\r\n\r\nfunction HANDLE_INIT_REQUEST(state, {payload} = {}) {\r\n\r\n var orders = camelizeKeys(payload);\r\n orders.forEach(order => {\r\n order.selected = true;\r\n order.filled = 0;\r\n order.remaining = 0;\r\n });\r\n //console.log('HANDLE_INIT_REQUEST', orders);\r\n state.runtime.orders = orders;\r\n}\r\n\r\n\r\nexport const actions = {\r\n async cancellAllInteractiveBrokersOrders({ dispatch, commit }) {\r\n try {\r\n await interactiveBrokerClient.get('/execution/cancelall');\r\n await dispatch('updateInteractiveBrokersOrders');\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n }\r\n },\r\n async checkConnectStatusOfInteractiveBrokers ({ dispatch, commit }) {\r\n try {\r\n const resp = await interactiveBrokerClient.get('/execution/connectionstatus');\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', resp.data.connected);\r\n dispatch('updateInteractiveBrokersOrders');\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n }\r\n },\r\n async updateInteractiveBrokersOrders ({dispatch, commit, state}) {\r\n if(__timer){\r\n window.clearTimeout(__timer);\r\n }\r\n \r\n try {\r\n if(state.interactiveBrokers.connected) {\r\n const response = await interactiveBrokerClient.get('/execution/orders');\r\n response.data.forEach(o => {\r\n commit('HANDLE_INTERACTIVE_BROKER_UPDATE', o);\r\n });\r\n }\r\n \r\n __timer = window.setTimeout(() => {\r\n dispatch('updateInteractiveBrokersOrders');\r\n }, 1000); \r\n\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n }\r\n },\r\n uploadTransactionsFromFile( {dispatch, state }, txList) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id: state.item.id, items: txList }, resolve, reject, type: UPLOAD_TRANSACTIONS });\r\n });\r\n },\r\n validateTransactionsFromFile( {dispatch, state }, txList) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id: state.item.id, items: txList }, resolve, reject, type: VALIDATE_TRANSACTIONS });\r\n });\r\n },\r\n uploadTransactionsFromInteractiveBrokers ({ dispatch, state, commit }) {\r\n return new Promise( (resolve, reject) => {\r\n let param = '';\r\n if(state.uploadTransactionsFromTime) {\r\n const m = state.uploadTransactionsFromTime;\r\n param = m;\r\n param = '?from=' + m;\r\n }\r\n interactiveBrokerClient.get('/execution/transactions' + param).then((response) => {\r\n const orders = state.runtime.orders.map(o => {\r\n let ticker = o.ticker;\r\n if ( ticker.includes(\":\") )\r\n {\r\n var nameList = ticker.split(\":\");\r\n ticker = nameList[0];\r\n }\r\n return {\r\n ticker,\r\n productName: o.productName\r\n };\r\n })\r\n const backendTransactions = response.data.map(tx => {\r\n const o = orders.find(o => o.ticker === tx.instrument);\r\n return {\r\n timeStamp: moment(tx.timeStampStr, 'YYYYMMDD hh:mm:ss').toDate(),\r\n execId : tx.execID,\r\n orderId: tx.orderID,\r\n productName: o ? o.productName : null,\r\n ticker: tx.instrument,\r\n qty: tx.qty,\r\n price: tx.price\r\n };\r\n }).filter(x => x.productName);\r\n\r\n dispatch('makeReq', { payload: { id: state.item.id, items: backendTransactions }, resolve, reject, type: UPLOAD_TRANSACTIONS });\r\n }).catch((error)=>{\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n reject(error);\r\n });\r\n \r\n });\r\n },\r\n async cancelOrderInteractiveBrokers ({commit}, {clOrderID}) {\r\n try {\r\n commit('SET_ORDER_PROCESSING', {id: clOrderID, value: true});\r\n await interactiveBrokerClient.post('/execution/cancel', {clOrderID});\r\n window.setTimeout(() => {\r\n commit('SET_ORDER_PROCESSING', {id: clOrderID, value: false});\r\n }, 1000);\r\n \r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n } \r\n },\r\n async executeOrderInteractiveBrokers ({commit}, dto) {\r\n try {\r\n const response = await interactiveBrokerClient.post('/execution/new', dto);\r\n commit('HANDLE_INTERACTIVE_BROKER_UPDATE', response.data);\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n } \r\n },\r\n async getBrokerPositionsFromInteractiveBrokers({commit}) {\r\n try {\r\n const resp = await interactiveBrokerClient.get('/execution/positions');\r\n commit('HANDLE_INTERACTIVE_BROKER_POSITIONS_UPDATE', {brokerPositions:resp.data});\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n } \r\n },\r\n async connectToInteractiveBrokers ({ commit, state, dispatch }) {\r\n // try {\r\n // await interactiveBrokerClient.get('/execution/connect');\r\n // commit('SET_INTERACTIVE_BROKERS_CONNECTED', true);\r\n // return;\r\n // } catch(e) {\r\n // console.error(e);\r\n // commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n // }\r\n \r\n try {\r\n await dispatch('loadUserSettings')\r\n await interactiveBrokerClient.post('/execution/connect', state.item.userSettings);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', true);\r\n return;\r\n } catch(e) {\r\n console.error(e);\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n }\r\n },\r\n async disconnectFromInteractiveBrokers ({ commit }) {\r\n await interactiveBrokerClient.get('/execution/disconnect');\r\n commit('SET_INTERACTIVE_BROKERS_CONNECTED', false);\r\n },\r\n async isBackendAlive({ commit }) {\r\n try { \r\n const response = await http.get('api/backend/alive');\r\n commit('SET_IS_BACKEND_ALIVE', response.data);\r\n } catch(e) {\r\n console.log(e);\r\n commit('SET_IS_BACKEND_ALIVE', false);\r\n }\r\n },\r\n async makeReq({ commit, rootState }, { payload, type, resolve, reject } = {}) {\r\n const req = { \r\n id: uuid.v1(),\r\n resolve, \r\n reject,\r\n clientId: rootState.signalr.connectionId,\r\n type: type,\r\n payload: payload,\r\n userName: rootState.auth.currentUser.UserName,\r\n userId: rootState.auth.currentUser.IdentityId,\r\n };\r\n commit('BEGIN_REQUEST', { req });\r\n window.setTimeout(() => {\r\n commit('END_REQUEST', { resp: { reqId: req.id, failed: true, errorMessage: \"Timeout reached\" } });\r\n }, TIMEOUT);\r\n\r\n await http.post('api/backend/messages/out', req);\r\n\r\n // commit('END_REQUEST', { resp: {...d, ReqId: req.id}});\r\n },\r\n async changeCurrency({dispatch, commit}, {currencyName } = {}) {\r\n commit('SET_CURRENCY_NAME', currencyName);\r\n await dispatch('loadItem');\r\n },\r\n async changeReBalanceCloseoutTrades({dispatch, commit}, newValue) {\r\n console.log('store changeReBalanceCloseoutTrades', newValue);\r\n commit('SET_REBALANCE_CLOSEOUT_TRADES', newValue);\r\n await dispatch('makeReq', {payload: { id: state.item.id, reBalanceCloseoutTrades: newValue }, type: LOAD_LIVE_ITEM_REBALANCE_REQ_NAME});\r\n },\r\n saveExecutionSettings({ dispatch, state }, { value } = {}) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id: state.item.id, value }, resolve, reject, type: SAVE_EXECUTION_SETTINGS_REQ_NAME });\r\n });\r\n },\r\n saveUserSettings({ dispatch, state }, { value } = {}) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id: state.item.id, value }, resolve, reject, type: SAVE_USER_SETTINGS_REQ_NAME });\r\n });\r\n },\r\n saveUserSettingsById({ dispatch }, { id, value } = {}) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id: id, value }, resolve, reject, type: SAVE_USER_SETTINGS_REQ_NAME });\r\n });\r\n },\r\n loadExecutionSettings({ dispatch, state }) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', {payload: { id: state.item.id, }, resolve, reject, type: LOAD_EXECUTION_SETTINGS_REQ_NAME});\r\n });\r\n },\r\n loadUserSettings({ dispatch, state }) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', {payload: { id: state.item.id, }, resolve, reject, type: LOAD_USER_SETTINGS_REQ_NAME});\r\n });\r\n },\r\n async loadPositions({ dispatch, state }) {\r\n await dispatch('makeReq', {payload: { id: state.item.id }, type: LOAD_LIVE_ITEM_PORTFOLIO_POSITIONS_REQ_NAME});\r\n },\r\n async loadTransactions({ dispatch, state }) {\r\n await dispatch('makeReq', {payload: { id: state.item.id, take: state.item.transactions.reqSize, skip: state.item.transactions.items.length }, type: LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS_REQ_NAME});\r\n },\r\n async loadMoreItemTransactions({ dispatch, state }) {\r\n await dispatch('makeReq', {payload: { more: true, id: state.item.id, take: state.item.transactions.reqSize, skip: state.item.transactions.items.length }, type: LOAD_LIVE_ITEM_PORTFOLIO_TRANSACTIONS_REQ_NAME});\r\n },\r\n async loadItem({ dispatch, state }) {\r\n await dispatch('makeReq', {payload: { id: state.item.id, currencyName: state.item.currencyName }, type: LOAD_LIVE_ITEM_STAT_REQ_NAME});\r\n await dispatch('makeReq', {payload: { id: state.item.id, reBalanceCloseoutTrades: state.item.reBalanceCloseoutTrades }, type: LOAD_LIVE_ITEM_REBALANCE_REQ_NAME});\r\n },\r\n async loadLiveIndicies({ dispatch }) {\r\n await dispatch('makeReq', {payload: null, type: LOAD_LIVE_INDICIES_REQ_NAME});\r\n },\r\n \r\n async makeOptimization({ dispatch }, input ) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { json: input }, resolve, reject, type: MAKE_OPTIMIZATION_REQ_NAME });\r\n });\r\n },\r\n async initRuntime({ dispatch }, { refresh, taxLossHarvest, taxLossHarvestData } ) {\r\n dispatch('updateInteractiveBrokersOrders');\r\n dispatch('checkConnectStatusOfInteractiveBrokers');\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id: state.item.id, refresh, taxLossHarvest, taxLossHarvestData }, resolve, reject, type: EXECUTION_RUNTIME_INIT_REQ_NAME });\r\n });\r\n },\r\n paperTrade({commit, dispatch, state}) {\r\n commit('PAPER_TRADE_UPDATE');\r\n const orders = state.runtime.orders.filter(x => x.selected);\r\n let backendTransactions = [];\r\n orders.forEach(o => {\r\n backendTransactions.push({\r\n timeStamp: moment().toDate(),\r\n execId : uuid.v1(),\r\n orderId: o.id,\r\n productName: o.productName,\r\n ticker: o.ticker,\r\n qty: o.orderSide === 'Sell' ? (Math.abs(o.orderQuantity) * -1) : Math.abs(o.orderQuantity),\r\n price: o.price\r\n });\r\n });\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id: state.item.id, items: backendTransactions }, resolve, reject, type: UPLOAD_TRANSACTIONS });\r\n });\r\n }\r\n}","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n \n \n
\n\n\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=76475985&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\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","import store from '@/state/store'\r\n\r\nexport default [\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/pages/account/login'),\r\n meta: {\r\n beforeResolve(routeTo, routeFrom, next) {\r\n // If the user is already logged in\r\n if (store.state.auth.token) {\r\n // Redirect to the home page instead\r\n next({ name: 'home' })\r\n } else {\r\n // Continue to the login page\r\n next()\r\n }\r\n },\r\n },\r\n },\r\n {\r\n path: '/test',\r\n name: 'test',\r\n component: () => import('../views/pages/test'),\r\n meta: {\r\n authRequired: false,\r\n },\r\n },\r\n {\r\n path: '/logout',\r\n name: 'logout',\r\n meta: {\r\n authRequired: true,\r\n beforeResolve(routeTo, routeFrom, next) {\r\n console.log('route logout')\r\n store.dispatch('auth/logOut')\r\n const authRequiredOnPreviousRoute = routeFrom.matched.some(\r\n (route) => route.push('/')\r\n )\r\n // Navigate back to previous page, or home as a fallback\r\n next(authRequiredOnPreviousRoute ? { name: 'home' } : { ...routeFrom })\r\n },\r\n },\r\n },\r\n {\r\n path: '/',\r\n name: 'home',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => store.state.auth && store.state.auth.currentUser \r\n && store.state.auth.currentUser.Roles.find(x => x === 'accountuser') ? \r\n store.state.auth.currentUser.Roles.find(x => x == 'administrator') \r\n ? import('../views/pages/home/admin-index' )\r\n : import('../views/pages/home/index')\r\n : import('../views/pages/users/index')\r\n },\r\n {\r\n path: '/users/:userid/portfolios',\r\n name: 'user-portfolio',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/home/index'),\r\n props: true\r\n },\r\n {\r\n path: '/:targetType/:targetId/instruments',\r\n name: 'instrument-assignment',\r\n meta: {\r\n isAllow: (auth) => !auth.currentUser.Roles.find(x => x === 'accountuser') || (auth.currentUser.Roles.find(x => x === 'accountuser') && auth.currentUser.Roles.find(x => x == 'administrator')),\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/instruments/assignment'),\r\n props: true\r\n },\r\n {\r\n path: '/instruments',\r\n name: 'instruments',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/instruments/index'),\r\n props: true\r\n },\r\n {\r\n path: '/predefined-risk-profiles',\r\n name: 'predefined-risk-profiles',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/predefined-risk-profiles/index'),\r\n props: true\r\n },\r\n {\r\n path: '/instruments/:instrumentId',\r\n name: 'instrument-view',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/instruments/view'),\r\n props: true\r\n },\r\n {\r\n path: '/execution/:id',\r\n name: 'execution',\r\n meta: {\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/execution/index'),\r\n props: route => Object.assign({}, route.query, route.params),\r\n },\r\n {\r\n path: '/accounts',\r\n name: 'accounts',\r\n meta: {\r\n isAllow: (auth) => !auth.currentUser.Roles.find(x => x === 'accountuser') && auth.currentUser.Roles.find(x => x === 'administrator'),\r\n authRequired: true\r\n },\r\n component: () => import('../views/pages/accounts/index')\r\n },\r\n {\r\n path: '/accounts/:id',\r\n name: 'accounts-edit',\r\n meta: {\r\n isAllow: (auth) => !auth.currentUser.Roles.find(x => x === 'accountuser') && auth.currentUser.Roles.find(x => x === 'administrator'),\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/accounts/edit'),\r\n props: true\r\n },\r\n {\r\n path: '/risk-profile-new',\r\n name: 'risk-profile-new',\r\n meta: {\r\n isAllow: (auth) => auth.currentUser.Roles.find(x => x === 'accountuser'),\r\n authRequired: true\r\n },\r\n component: () => import('../views/pages/home/risk-profile-new')\r\n },\r\n {\r\n path: '/portfolios/:id/edit',\r\n name: 'portfolio-edit',\r\n meta: {\r\n isAllow: (auth) => auth.currentUser.Roles.find(x => x === 'accountuser'),\r\n authRequired: true\r\n },\r\n component: () => import('../views/pages/portfolios/portfolio-edit'),\r\n props: true\r\n },\r\n {\r\n path: '/portfolios/:id/tax-loss-harvest',\r\n name: 'tax-loss-harvest',\r\n meta: {\r\n isAllow: (auth) => auth.currentUser.Roles.find(x => x === 'accountuser'),\r\n authRequired: true\r\n },\r\n component: () => import('../views/pages/portfolios/tax-loss-harvest-page'),\r\n props: route => Object.assign({}, route.query, route.params),\r\n },\r\n {\r\n path: '/users',\r\n name: 'users',\r\n meta: {\r\n isAllow: (auth) => auth.currentUser.Roles.find(x => x === 'administrator')\r\n },\r\n component: () => import('../views/pages/users/index')\r\n },\r\n {\r\n path: '/users/:id',\r\n name: 'users-edit',\r\n meta: {\r\n isAllow: (auth) => auth.currentUser.Roles.find(x => x === 'administrator'),\r\n authRequired: true,\r\n },\r\n component: () => import('../views/pages/users/edit'),\r\n props: true\r\n },\r\n // {\r\n // path: '/register',\r\n // name: 'register',\r\n // component: () => import('../views/pages/account/register'),\r\n // meta: {\r\n // beforeResolve(routeTo, routeFrom, next) {\r\n // // If the user is already logged in\r\n // if (store.state.auth.token) {\r\n // // Redirect to the home page instead\r\n // next({ name: 'home' })\r\n // } else {\r\n // // Continue to the login page\r\n // next()\r\n // }\r\n // },\r\n // },\r\n // },\r\n \r\n // {\r\n // path: '/forgot-password',\r\n // name: 'Forgot-password',\r\n // component: () => import('../views/pages/account/forgot-password'),\r\n // meta: {\r\n // beforeResolve(routeTo, routeFrom, next) {\r\n // // If the user is already logged in\r\n // if (store.getters['auth/loggedIn']) {\r\n // // Redirect to the home page instead\r\n // next({ name: 'home' })\r\n // } else {\r\n // // Continue to the login page\r\n // next()\r\n // }\r\n // },\r\n // },\r\n // },\r\n \r\n // {\r\n // path: '/',\r\n // name: 'account-users',\r\n // meta: {\r\n // role:[ROLES.AccountManager],\r\n // authRequired: true,\r\n // },\r\n // component: () => import('../views/pages/account-users/index')\r\n // },\r\n // {\r\n // path: '/',\r\n // name: 'accounts',\r\n // meta: {\r\n // role:[ROLES.C8Manager, ROLES.C8Admin],\r\n // authRequired: true,\r\n // },\r\n // component: () => import('../views/pages/account-users/index')\r\n // }\r\n]\r\n","let _stack = [];\nwindow._stack = _stack;\n\nexport function pushModal ({modalInstance, forceClose}) {\n _stack.push({ modalInstance: modalInstance, forceClose });\n}\n\nexport function popModal () {\n return _stack.pop();\n}\n\nexport function forceClose() {\n const copy = [..._stack];\n copy.forEach(x => {\n x.forceClose();\n });\n _stack = [];\n}","import Vue from 'vue'\r\nimport VueRouter from 'vue-router'\r\nimport VueMeta from 'vue-meta'\r\nimport store from '@/state/store'\r\nimport routes from './routes'\r\nimport {forceClose } from \"@/modals\";\r\n\r\nVue.use(VueRouter)\r\nVue.use(VueMeta, {\r\n // The component option name that vue-meta looks for meta info on.\r\n keyName: 'page',\r\n})\r\n\r\nconst router = new VueRouter({\r\n routes,\r\n // Use the HTML5 history API (i.e. normal-looking routes)\r\n // instead of routes with hashes (e.g. example.com/#/about).\r\n // This may require some server configuration in production:\r\n // https://router.vuejs.org/en/essentials/history-mode.html#example-server-configurations\r\n mode: 'history',\r\n // Simulate native-like scroll behavior when navigating to a new\r\n // route and using back/forward buttons.\r\n scrollBehavior(to, from, savedPosition) {\r\n if (savedPosition) {\r\n return savedPosition\r\n } else {\r\n return { x: 0, y: 0 }\r\n }\r\n },\r\n})\r\n\r\nconst sendAudit = () => {\r\n //http.post('api/audit', { type: 'OpenPage', text: page});\r\n};\r\n\r\n// Before each route evaluates...\r\nrouter.beforeEach(async (routeTo, routeFrom, next) => {\r\n \r\n if (process.env.NODE_ENV === 'production' && location.protocol !== 'https:' && location.hostname !== 'localhost') {\r\n location.href = 'https:' + window.location.href.substring(window.location.protocol.length);\r\n } else {\r\n forceClose();\r\n //debugger; // eslint-disable-line no-debugger\r\n \r\n // Check if auth is required on this route\r\n // (including nested routes).\r\n const authRequired = routeTo.matched.some((route) => route.meta.authRequired)\r\n const isAllow = routeTo.meta.isAllow;\r\n\r\n // If auth isn't required for the route, just continue.\r\n if (!authRequired) {\r\n \r\n return next();\r\n }\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n // eslint-disable-next-line no-inner-declarations\r\n function redirectToLogin() {\r\n sendAudit('login');\r\n // Pass the original route to the login component\r\n next({ name: 'login', query: { redirectFrom: routeTo.fullPath } })\r\n }\r\n\r\n // If auth is required and the user is logged in...\r\n if (localStorage.getItem('access_token')) {\r\n \r\n if(isAllow) {\r\n if(store.state.auth && store.state.auth.currentUser) {\r\n if(isAllow(store.state.auth)) {\r\n return next();\r\n }\r\n }\r\n \r\n localStorage.removeItem('access_token')\r\n store.dispatch('auth/logOut')\r\n redirectToLogin();\r\n }\r\n \r\n return next();\r\n }\r\n\r\n // If auth is required and the user is NOT currently logged in,\r\n // redirect to login.\r\n redirectToLogin()\r\n }\r\n})\r\n\r\nrouter.beforeResolve(async (routeTo, routeFrom, next) => {\r\n \r\n // Create a `beforeResolve` hook, which fires whenever\r\n // `beforeRouteEnter` and `beforeRouteUpdate` would. This\r\n // allows us to ensure data is fetched even when params change,\r\n // but the resolved route does not. We put it in `meta` to\r\n // indicate that it's a hook we created, rather than part of\r\n // Vue Router (yet?).\r\n try {\r\n // For each matched route...\r\n for (const route of routeTo.matched) {\r\n await new Promise((resolve, reject) => {\r\n // If a `beforeResolve` hook is defined, call it with\r\n // the same arguments as the `beforeEnter` hook.\r\n if (route.meta && route.meta.beforeResolve) {\r\n route.meta.beforeResolve(routeTo, routeFrom, (...args) => {\r\n // If the user chose to redirect...\r\n if (args.length) {\r\n // If redirecting to the same route we're coming from...\r\n // Complete the redirect.\r\n next(...args)\r\n reject(new Error('Redirected'))\r\n } else {\r\n resolve()\r\n }\r\n })\r\n } else {\r\n // Otherwise, continue resolving the route.\r\n resolve()\r\n }\r\n })\r\n }\r\n // If a `beforeResolve` hook chose to redirect, just return.\r\n } catch (error) {\r\n return\r\n }\r\n\r\n // If we reach this point, continue resolving the route.\r\n next()\r\n})\r\n\r\nexport default router\r\n","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\n\nVue.use(VueI18n)\n\nfunction loadLocaleMessages () {\n const locales = require.context('./locales', true, /[A-Za-z0-9-_,\\s]+\\.json$/i)\n const messages = {}\n locales.keys().forEach(key => {\n const matched = key.match(/([A-Za-z0-9-_]+)\\./i)\n if (matched && matched.length > 1) {\n const locale = matched[1]\n messages[locale] = locales(key)\n }\n })\n return messages\n}\n\nexport default new VueI18n({\n locale: process.env.VUE_APP_I18N_LOCALE || 'en',\n fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',\n messages: loadLocaleMessages()\n})\n","import Vue from 'vue'\r\nimport App from './App.vue'\r\nimport BootstrapVue from 'bootstrap-vue'\r\nimport VueApexCharts from 'vue-apexcharts'\r\nimport Vuelidate from 'vuelidate'\r\nimport VueSweetalert2 from 'vue-sweetalert2';\r\nimport VueMask from 'v-mask'\r\nimport VueYoutube from 'vue-youtube'\r\nimport vco from \"v-click-outside\"\r\n\r\nimport router from './router'\r\nimport store from '@/state/store'\r\nimport i18n from './i18n'\r\n\r\nimport Highcharts from \"highcharts\";\r\nimport Stock from \"highcharts/modules/stock\";\r\nimport HighchartsVue from \"highcharts-vue\";\r\nimport IndicatorsAll from 'highcharts/indicators/indicators-all'\r\nimport ExportingInit from 'highcharts/modules/exporting'\r\nimport ExportData from 'highcharts/modules/export-data'\r\nimport highchartsMoreInit from \"highcharts/highcharts-more\";\r\nimport solidGaugeInit from \"highcharts/modules/solid-gauge\";\r\nimport hcHeatmap from \"highcharts/modules/heatmap\";\r\nimport Chat from 'vue-beautiful-chat'\r\n\r\nhcHeatmap(Highcharts);\r\nExportingInit(Highcharts);\r\nExportData(Highcharts);\r\nStock(Highcharts);\r\nIndicatorsAll(Highcharts);\r\nhighchartsMoreInit(Highcharts);\r\nsolidGaugeInit(Highcharts);\r\nVue.use(HighchartsVue);\r\n\r\nimport \"@/assets/scss/app.scss\";\r\n\r\nimport moment from 'moment'\r\nimport 'moment/min/locales'\r\n\r\nmoment.locale('en')\r\n\r\nimport VueAuthHref from 'vue-auth-href'\r\n\r\nconst options = {\r\n token: () => localStorage.getItem('access_token'), // Note that this MUST BE a function that returns the token.\r\n // other options here (full list of options described below)\r\n}\r\nVue.use(VueAuthHref, options)\r\n\r\nVue.prototype.moment = moment\r\nVue.config.productionTip = false\r\nVue.use(VueYoutube)\r\nVue.use(BootstrapVue)\r\nVue.use(vco)\r\nVue.use(Vuelidate)\r\nVue.use(VueSweetalert2);\r\nVue.use(VueMask)\r\nVue.use(require('vue-chartist'))\r\nVue.use(require('vue-moment'));\r\nVue.component('apexchart', VueApexCharts)\r\nVue.use(Chat)\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n i18n,\r\n render: h => h(App)\r\n}).$mount('#app')\r\n","import http from '@/oauth-client'\r\nconst audioContext = new AudioContext();\r\n\r\nlet controller;\r\nlet audio;\r\nlet playing = false;\r\nlet playQueue = [];\r\n\r\nfunction playText() {\r\n \r\n if(playQueue.length === 0 || playing) return;\r\n\r\n var playMsg = playQueue[0];\r\n playQueue.shift();\r\n\r\n if(audio) {\r\n audio.pause();\r\n audio.currentTime = 0;\r\n }\r\n if(controller) {\r\n controller.abort();\r\n }\r\n\r\n playing = true;\r\n controller = new AbortController();\r\n fetch(`${process.env.VUE_APP_BASE_URL}/api/speech?lang=` + playMsg.lang, {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify(playMsg.text),\r\n signal: controller.signal \r\n })\r\n .then(response => {\r\n controller = null;\r\n if (!response.ok) {\r\n throw new Error(\"HTTP error \" + response.status);\r\n }\r\n return response.blob();\r\n })\r\n .then(blob => {\r\n controller = null;\r\n audio = new Audio(URL.createObjectURL(blob));\r\n audio.addEventListener('ended', function() {\r\n // Ваш код, который будет выполняться после окончания воспроизведения\r\n console.log('Воспроизведение окончено');\r\n playing = false;\r\n playText();\r\n });\r\n audio.play();\r\n \r\n })\r\n .catch(function() {\r\n controller = null;\r\n console.log(\"An error occurred while fetching the speech audio.\");\r\n playing = false;\r\n });\r\n}\r\n\r\n\r\nfunction sendToPlay(text, lang = 'en-US') {\r\n playQueue = [...playQueue, { text, lang}];\r\n playText();\r\n}\r\n\r\n\r\nfunction stopText() {\r\n if(audio) {\r\n audio.pause();\r\n audio.currentTime = 0;\r\n playing = false;\r\n }\r\n}\r\n\r\nexport const state = {\r\n chatId: null,\r\n thinking: false,\r\n soundEnabled: false,\r\n messageList: [\r\n // { type: 'system', author: `assistant`, data: { text: `No1111` } },\r\n // { type: 'text', author: `assistant`, data: { text: `No.` } },\r\n // { type: 'text', author: `me`, data: { text: `Say yes!` } },\r\n ],\r\n optimizationRequest: null\r\n}\r\n\r\nexport const mutations = {\r\n SET_THINKING(state, val) {\r\n state.thinking = val;\r\n },\r\n INIT_CHAT(state, data) {\r\n state.messageList = data.messages;\r\n state.chatId = data.chatId;\r\n state.optimizationRequest = null;\r\n if(state.soundEnabled) {\r\n const assistantMessages = data.messages.filter(x => x.author === 'assistant');\r\n if(assistantMessages.length > 0) {\r\n assistantMessages.forEach(msg => {\r\n sendToPlay(msg.data.text, msg.data.lang);\r\n });\r\n \r\n }\r\n }\r\n },\r\n ADD_MESSAGES(state, data) {\r\n console.log('ADD_MESSAGES',data);\r\n if(state.soundEnabled) {\r\n const assistantMessages = data.filter(x => x.author === 'assistant');\r\n if(assistantMessages.length > 0) {\r\n assistantMessages.forEach(msg => {\r\n sendToPlay(msg.data.text, msg.data.lang);\r\n });\r\n \r\n } else {\r\n if(data.find(x => x.author === 'me')) {\r\n stopText();\r\n } \r\n }\r\n }\r\n state.messageList = [...state.messageList, ...data];\r\n if(!state.optimizationRequest) {\r\n const jsonMsg = data.find(x => x.type === 'json-optimization-input');\r\n if(jsonMsg){\r\n state.optimizationRequest = jsonMsg.data.text;\r\n }\r\n }\r\n },\r\n PLAY_SPEECH(state, value) {\r\n state.soundEnabled = value;\r\n if(value) {\r\n audioContext.resume().then(() => {\r\n console.log('Playback resumed successfully');\r\n const assistantMessages = state.messageList.filter(x => x.author === 'assistant');\r\n if(assistantMessages.length > 0) {\r\n const lastMessage = assistantMessages[assistantMessages.length-1];\r\n sendToPlay(lastMessage.data.text, lastMessage.data.lang);\r\n }\r\n });\r\n \r\n } else {\r\n stopText();\r\n }\r\n },\r\n OPTIMIZATION_SUCCESS(state) {\r\n const o = [...state.messageList];\r\n o.pop();\r\n state.messageList = [...o];\r\n state.optimizationRequest = null;\r\n },\r\n OPTIMIZATION_ERROR(state) {\r\n state.messageList = [...state.messageList,...[\r\n { type: 'system', author: `assistant`, data: { text: `Calculation ERROR` } },\r\n ]];\r\n state.optimizationRequest = null;\r\n },\r\n\r\n}\r\n\r\nexport const getters = {\r\n \r\n}\r\n\r\nexport const actions = {\r\n async startChat({ commit, state }) {\r\n if(state.chatId) return;\r\n commit('SET_THINKING', true);\r\n const response = await http.post('api/chatgpt/chats');\r\n const { data } = response;\r\n commit('INIT_CHAT', data);\r\n commit('SET_THINKING', false);\r\n },\r\n async sendMsg({ commit, state }, text ) {\r\n \r\n commit('SET_THINKING', true);\r\n commit('ADD_MESSAGES', [\r\n { type: 'text', author: `me`, data: { text } }\r\n ]);\r\n if(!state.chatId) return;\r\n const response = await http.post('api/chatgpt/chats/' + state.chatId, {\r\n text\r\n });\r\n const { data } = response;\r\n const { messages } = data;\r\n commit('ADD_MESSAGES', messages);\r\n commit('SET_THINKING', false);\r\n },\r\n async optimiationError({ commit } ) {\r\n commit('OPTIMIZATION_ERROR');\r\n },\r\n async optimiationSuccess({ commit }, data ) {\r\n commit('OPTIMIZATION_SUCCESS', data);\r\n },\r\n async previewReady({ commit }, {aicontext} = {}) {\r\n commit('OPTIMIZATION_SUCCESS');\r\n commit('SET_THINKING', true);\r\n const response = await http.post('api/chatgpt/chats/' + state.chatId + '/context', {\r\n text: aicontext\r\n });\r\n const { data } = response;\r\n const { messages } = data;\r\n commit('ADD_MESSAGES', messages);\r\n commit('SET_THINKING', false);\r\n }\r\n}\r\n","//const signalR = require(\"@microsoft/signalr\");\r\n//import store from '@/state/store'\r\n\r\nlet connection = null;\r\n\r\nexport const state = {\r\n connectionId: null\r\n}\r\n\r\nexport const mutations = {\r\n SET_CONNECTIONID(state, newValue) {\r\n state.connectionId = newValue;\r\n },\r\n}\r\n\r\nexport const actions = {\r\n connect(/*{ dispatch, commit }*/) {\r\n return new Promise( (resolve) => {\r\n \r\n if(connection) {\r\n connection.stop();\r\n }\r\n \r\n //if(store.state.auth.token) {\r\n // const uri = process.env.VUE_APP_BASE_CALCULATION_URL + \"/notifications\";\r\n // console.log('calculation signlaR trying to connect ' + uri)\r\n // connection = new signalR.HubConnectionBuilder()\r\n // .withUrl(uri, { accessTokenFactory: () => store.state.auth.token })\r\n // .withAutomaticReconnect()\r\n // .build();\r\n \r\n // connection.on(\"UserMessage\", data => {\r\n // console.log('UserMessage', data);\r\n // Swal.fire({\r\n // title: data.value,\r\n // width: 600,\r\n // padding: 100,\r\n // confirmButtonColor: \"#556ee6\",\r\n // background:\r\n // \"#fff url(//subtlepatterns2015.subtlepatterns.netdna-cdn.com/patterns/geometry.png)\"\r\n // });\r\n // });\r\n\r\n // connection.on(\"ActiveIndexNotification\", data => {\r\n // console.log('ActiveIndexNotification', data);\r\n // dispatch('activeIndices/load', null, { root: true });\r\n // });\r\n \r\n \r\n // connection.start()\r\n // .then(() => {\r\n // console.log('calculation signlaR connected!', connection.connection.connectionId)\r\n // commit('SET_CONNECTIONID', connection.connection.connectionId);\r\n // })\r\n // .catch(console.error);\r\n\r\n // connection.onreconnected((connectionId) => {\r\n // console.log('calculation signlaR onreconnected!', connectionId)\r\n // commit('SET_CONNECTIONID', connectionId);\r\n // });\r\n\r\n // connection.onclose(async (connectionId) => {\r\n // console.log('calculation signlaR onclose!', connectionId)\r\n // });\r\n \r\n //}\r\n resolve();\r\n });\r\n },\r\n disconnect() {\r\n return new Promise( (resolve) => {\r\n if(connection) {\r\n connection.stop();\r\n }\r\n connection = null;\r\n resolve();\r\n });\r\n },\r\n}\r\n","\r\n\r\nconst getDefaultState = () => {\r\n return {\r\n \r\n }\r\n};\r\n\r\nexport const state = getDefaultState();\r\n\r\nexport const mutations = {\r\n \r\n}\r\n\r\nexport const getters = {\r\n \r\n}\r\n\r\nexport const actions = {\r\n \r\n}\r\n","// Register each file as a corresponding Vuex module. Module nesting\n// will mirror [sub-]directory hierarchy and modules are namespaced\n// as the camelCase equivalent of their file name.\n\nimport camelCase from 'lodash/camelCase'\n\nconst modulesCache = {}\nconst storeData = { modules: {} }\n\n;(function updateModules() {\n // Allow us to dynamically require all Vuex module files.\n // https://webpack.js.org/guides/dependency-management/#require-context\n const requireModule = require.context(\n // Search for files in the current directory.\n '.',\n // Search for files in subdirectories.\n true,\n // Include any .js files that are not this file or a unit test.\n /^((?!index|\\.unit\\.).)*\\.js$/\n )\n\n // For every Vuex module...\n requireModule.keys().forEach((fileName) => {\n const moduleDefinition = requireModule(fileName)\n\n // Skip the module during hot reload if it refers to the\n // same module definition as the one we have cached.\n if (modulesCache[fileName] === moduleDefinition) return\n\n // Update the module cache, for efficient hot reloading.\n modulesCache[fileName] = moduleDefinition\n\n // Get the module path as an array.\n const modulePath = fileName\n // Remove the \"./\" from the beginning.\n .replace(/^\\.\\//, '')\n // Remove the file extension from the end.\n .replace(/\\.\\w+$/, '')\n // Split nested modules into an array path.\n .split(/\\//)\n // camelCase all module namespaces and names.\n .map(camelCase)\n\n // Get the modules object for the current path.\n const { modules } = getNamespace(storeData, modulePath)\n\n // Add the module to our modules object.\n modules[modulePath.pop()] = {\n // Modules are namespaced by default.\n namespaced: true,\n ...moduleDefinition,\n }\n })\n\n // If the environment supports hot reloading...\n if (module.hot) {\n // Whenever any Vuex module is updated...\n module.hot.accept(requireModule.id, () => {\n // Update `storeData.modules` with the latest definitions.\n updateModules()\n // Trigger a hot update in the store.\n require('../store').default.hotUpdate({ modules: storeData.modules })\n })\n }\n})()\n\n// Recursively get the namespace of a Vuex module, even if nested.\nfunction getNamespace(subtree, path) {\n if (path.length === 1) return subtree\n\n const namespace = path.shift()\n subtree.modules[namespace] = {\n modules: {},\n namespaced: true,\n ...subtree.modules[namespace],\n }\n return getNamespace(subtree.modules[namespace], path)\n}\n\nexport default storeData.modules\n","import Vue from 'vue'\r\nimport Vuex from 'vuex'\r\n\r\nimport modules from './modules'\r\n\r\nVue.use(Vuex)\r\n\r\nconst store = new Vuex.Store({\r\n modules,\r\n // Enable strict mode in development to get a warning\r\n // when mutating state outside of a mutation.\r\n // https://vuex.vuejs.org/guide/strict.html\r\n strict: process.env.NODE_ENV !== 'production',\r\n})\r\n\r\nexport default store\r\n\r\n","/*eslint no-mixed-spaces-and-tabs: \"off\"*/\r\n\r\nimport axios from 'axios';\r\nimport store from '@/state/store'\r\n\r\nconst getSignalRConnectionId = () => store.state.signalr.connectionId;\r\n\r\nconst saveTokens = (access_token, refresh_token) => {\r\n localStorage.setItem('access_token', access_token);\r\n localStorage.setItem('refresh_token', refresh_token);\r\n};\r\n\r\nconst clearTokens = () => {\r\n console.log('clear localStorage');\r\n localStorage.removeItem('access_token');\r\n localStorage.removeItem('refresh_token');\r\n localStorage.clear();\r\n};\r\n\r\nconst isAuth = () => {\r\n return localStorage.getItem('access_token') ? true : false;\r\n}\r\n\r\nconst createAxiosInstance = (config = {}) => {\r\n const axiosInstance = axios.create({\r\n baseURL: config.baseURL || '', \r\n headers: {\r\n \"Content-Type\": \"application/json\"\r\n } \r\n });\r\n \r\n const login = async (loginRequest) => {\r\n try {\r\n const response = await axios.post(`${axiosInstance.authBaseURL}/auth`, loginRequest);\r\n const access_token = response.data.Token.AccessToken;\r\n const refresh_token = response.data.Token.RefreshToken;\r\n saveTokens(access_token, refresh_token);\r\n return response;\r\n } catch (error) {\r\n clearTokens();\r\n throw error;\r\n }\r\n };\r\n\r\n axiosInstance.saveTokens = saveTokens;\r\n axiosInstance.clearTokens = clearTokens;\r\n axiosInstance.authBaseURL = config.authBaseURL || config.baseURL || '';\r\n axiosInstance.isAuth = isAuth;\r\n axiosInstance.login = login;\r\n \r\n const requestInterceptor = (config) => {\r\n const accessToken = localStorage.getItem('access_token');\r\n if (accessToken) {\r\n\t\t\tconfig.headers.Authorization = `Bearer ${accessToken}`;\r\n config.headers['SignalRConnId'] = getSignalRConnectionId();\r\n }\r\n return config;\r\n };\r\n \r\n const responseInterceptor = async (response) => {\r\n return response;\r\n };\r\n \r\n const responseErrorInterceptor = async (error) => {\r\n if (error.response.status === 401) {\r\n const refreshToken = localStorage.getItem('refresh_token');\r\n const accessToken = localStorage.getItem('access_token');\r\n\t\t\t\r\n if (refreshToken) {\r\n\t\t\t \r\n try {\r\n const response = await axios.post(`${axiosInstance.authBaseURL}/auth/refresh`, { refreshToken: refreshToken, accessToken: accessToken });\r\n\t\t\t\t\r\n if (response.status === 200) {\r\n console.log('refresh token success',{response: response.data, access_token: response.data.Token.AccessToken });\r\n localStorage.setItem('access_token', response.data.Token.AccessToken);\r\n error.config.headers.Authorization = `Bearer ${response.data.Token.AccessToken}`;\r\n return axios(error.config);\r\n } else {\r\n console.log('refresh token failed');\r\n clearTokens();\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 1000);\r\n \r\n return Promise.reject(error);\r\n }\r\n \r\n } catch(e) {\r\n console.log('refresh token failed');\r\n console.error(e);\r\n clearTokens();\r\n setTimeout(() => {\r\n window.location.reload();\r\n }, 1000);\r\n return Promise.reject(error);\r\n }\r\n \r\n }\r\n }\r\n return Promise.reject(error);\r\n };\r\n \r\n axiosInstance.interceptors.request.use(requestInterceptor);\r\n axiosInstance.interceptors.response.use(responseInterceptor, responseErrorInterceptor);\r\n \r\n return axiosInstance;\r\n };\r\n \r\n export default createAxiosInstance;","import http from '@/oauth-client'\r\nimport { parseErrors } from '../../helpers'\r\nimport { debounce } from \"lodash\";\r\n\r\nexport const state = {\r\n items: [],\r\n loading: false,\r\n processing: false,\r\n page: 1,\r\n total: 0,\r\n perPage: 20,\r\n filter:{\r\n keyword: null,\r\n accountIs: null,\r\n userType: null\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n SET_PAGE(state, newValue) {\r\n state.page = newValue;\r\n },\r\n SET_ITEMS(state, newValue) {\r\n state.items = newValue\r\n },\r\n SET_LOADING(state, newValue) {\r\n state.loading = newValue\r\n },\r\n SET_PROCESSING(state, newValue) {\r\n state.processing = newValue\r\n },\r\n SET_FILTER(state, newValue) {\r\n state.filter = newValue\r\n },\r\n HANDLE_LOAD_RESPONSE(state, respData) {\r\n state.items = respData.items;\r\n state.total = respData.total;\r\n }\r\n}\r\n\r\nexport const getters = {\r\n loading(state) {\r\n return state.loading;\r\n },\r\n processing(state) {\r\n return state.processing;\r\n },\r\n items(state) {\r\n return state.items;\r\n },\r\n perPage(state){\r\n return state.perPage;\r\n },\r\n page(state){\r\n return state.page;\r\n },\r\n total(state){\r\n return state.total;\r\n },\r\n filter(state){\r\n return state.filter;\r\n }\r\n}\r\n\r\nexport const actions = {\r\n async setFilter({ commit, dispatch }, data) {\r\n //console.log('SET_FILTER', data);\r\n commit('SET_FILTER', data);\r\n commit('SET_PAGE', 1);\r\n await dispatch('debounceLoad');\r\n },\r\n async setPage({ commit, dispatch }, page) {\r\n commit('SET_PAGE', page);\r\n await dispatch('debounceLoad');\r\n },\r\n delete({ commit, dispatch }, id) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.delete('api/users/' + id).then((response)=>{\r\n commit('SET_PROCESSING', false);\r\n dispatch('load');\r\n resolve(response.data);\r\n }).catch((errors) => {\r\n commit('SET_PROCESSING', false);\r\n reject(parseErrors(errors));\r\n });\r\n });\r\n },\r\n update({ commit, dispatch }, { id, input} = {}) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.put('api/users/' + id, input).then((response)=>{\r\n commit('SET_PROCESSING', false);\r\n dispatch('load');\r\n resolve(response.data);\r\n }).catch((errors) => {\r\n commit('SET_PROCESSING', false);\r\n reject(parseErrors(errors));\r\n });\r\n });\r\n },\r\n create({ commit, dispatch }, input) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.post('api/users', input).then((response)=>{\r\n commit('SET_PROCESSING', false);\r\n dispatch('load');\r\n resolve(response.data);\r\n }).catch((errors) => {\r\n commit('SET_PROCESSING', false);\r\n reject(parseErrors(errors));\r\n });\r\n });\r\n },\r\n debounceLoad: debounce(async ({ dispatch }) => {\r\n await dispatch('load');\r\n }, 1000),\r\n load({ commit, state }) {\r\n commit('SET_LOADING', true);\r\n return new Promise( (resolve, reject) => {\r\n const req = {\r\n skip: (state.page - 1) * state.perPage,\r\n take: state.perPage,\r\n userType: state.filter.userType,\r\n keyword: state.filter.keyword,\r\n accountId: state.filter.accountId\r\n };\r\n http.get('api/users', { params: req}).then((response)=>{\r\n commit('HANDLE_LOAD_RESPONSE', response.data);\r\n commit('SET_LOADING', false);\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_LOADING', false);\r\n reject(error);\r\n });\r\n });\r\n },\r\n loadById({ commit }, id) {\r\n commit('SET_LOADING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.get('api/users/' + id).then((response) => {\r\n commit('SET_LOADING', false);\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_LOADING', false);\r\n reject(error);\r\n });\r\n });\r\n }\r\n}\r\n","\r\nimport http from '@/oauth-client'\r\nimport { uuid } from 'vue-uuid';\r\nimport { camelCase } from 'lodash';\r\nimport store from '@/state/store'\r\n\r\nconst TAX_LOSS_HARVEST_PAPER_TRADE = 'TAX_LOSS_HARVEST_PAPER_TRADE';\r\nconst TAX_LOSS_HARVEST_REPLACEMENT_POSITIONS = 'TAX_LOSS_HARVEST_REPLACEMENT_POSITIONS';\r\nconst EXECUTE = 'EXECUTE';\r\nconst LOAD_USER_PORTFOLIOS = 'LOAD_USER_PORTFOLIOS';\r\nconst LOAD_USERS_PORTFOLIO_SUMMARY = 'LOAD_USERS_PORTFOLIO_SUMMARY';\r\nconst LOAD_USER_PORTFOLIO_BY_ID = 'LOAD_USER_PORTFOLIO_BY_ID';\r\nconst CREATE_USER_PORTFOLIO = 'CREATE_USER_PORTFOLIO';\r\n//const UPDATE_USER_PORTFOLIO = 'UPDATE_USER_PORTFOLIO';\r\nconst DELETE_USER_PORTFOLIO = 'DELETE_USER_PORTFOLIO';\r\n\r\nconst TIMEOUT = 120000;\r\n\r\nconst camelizeKeys = (obj) => {\r\n if (Array.isArray(obj)) {\r\n return obj.map(v => camelizeKeys(v));\r\n } else if (obj != null && obj.constructor === Object) {\r\n return Object.keys(obj).reduce(\r\n (result, key) => ({\r\n ...result,\r\n [camelCase(key)]: camelizeKeys(obj[key]),\r\n }),\r\n {},\r\n );\r\n }\r\n return obj;\r\n};\r\n\r\n\r\nexport const state = {\r\n items: [],\r\n loading: false,\r\n deleting: null,\r\n processing: false,\r\n usersPortfolioSummary: [],\r\n requests: [],\r\n failedRequests: [],\r\n}\r\n\r\nexport const mutations = {\r\n SET_ITEMS(state, newValue) {\r\n\r\n state.items = newValue\r\n },\r\n SET_LOADING(state, newValue) {\r\n state.loading = newValue\r\n },\r\n SET_DELETING(state, newValue) {\r\n state.deleting = newValue\r\n },\r\n SET_PROCESSING(state, newValue) {\r\n state.processing = newValue\r\n },\r\n BEGIN_REQUEST(state, { req } = {}) {\r\n state.requests = [...state.requests, req];\r\n },\r\n END_REQUEST(state, { resp } = {}) {\r\n \r\n\r\n const reqId = resp.reqId || resp.ReqId;\r\n const req = state.requests.find(x => x.id == reqId );\r\n \r\n if(!req) return;\r\n\r\n state.requests = [...state.requests.filter(x => x.id != reqId)];\r\n\r\n if(req.type === CREATE_USER_PORTFOLIO) {\r\n state.processing = false;\r\n }else if(req.type === DELETE_USER_PORTFOLIO) {\r\n state.deleting = null;\r\n }\r\n let suppressCamelCase = false;\r\n if(!resp.failed) {\r\n\r\n if(req.type === LOAD_USER_PORTFOLIOS) {\r\n \r\n var originalPayload = [...(resp.payload || resp.Payload)];\r\n\r\n resp = camelizeKeys(resp);\r\n const respPayload = (resp.payload || resp.Payload);\r\n //state.items = (demoResp.payload || demoResp.Payload);\r\n\r\n const userName = store.state.auth?.currentUser?.Name || '';\r\n const prefixPattern = '_' + userName + '_';\r\n\r\n respPayload.forEach((p, i) => {\r\n\r\n if(p.id !== '$$TOTAL$$') {\r\n const originalBasket = originalPayload[i]?.Data?.Basket || {};\r\n const indexNames = Object.keys(originalBasket.Items);\r\n \r\n try {\r\n p.instruments = indexNames.map(x => ({ id: x, name: x}));\r\n p.originalInstruments = camelizeKeys(originalPayload[i].Instruments);\r\n } catch(e) {\r\n console.error(e);\r\n }\r\n \r\n }\r\n \r\n const sIndexOfPrefix = p.name.indexOf(prefixPattern);\r\n if(sIndexOfPrefix >= 0) {\r\n const eIndexOfPrefix = sIndexOfPrefix + prefixPattern.length;\r\n p.displayName = p.name.substring(eIndexOfPrefix, p.name.length);\r\n }\r\n });\r\n\r\n const tmp = respPayload;\r\n \r\n state.items = tmp;\r\n\r\n } else if(req.type === LOAD_USER_PORTFOLIO_BY_ID) {\r\n \r\n let respPayload = (resp.payload || resp.Payload);\r\n const sourceWeight = (respPayload.instrumentWeights || respPayload.InstrumentWeights);\r\n const instrumentWeights = {};\r\n Object.keys(sourceWeight).forEach(key => {\r\n var v = sourceWeight[key];\r\n const min = (v.min === undefined ? v.Min : v.min) != undefined ? (v.min === undefined ? v.Min : v.min) : null;\r\n const max = (v.max === undefined ? v.Max : v.max) != undefined ? (v.max === undefined ? v.Max : v.max) : null;\r\n instrumentWeights[key] = { min: min, max: max };\r\n });\r\n resp = camelizeKeys(resp);\r\n respPayload = (resp.payload || resp.Payload);\r\n respPayload.instrumentWeights = instrumentWeights;\r\n const tmp = [...state.items.filter(x => x.id !== req.payload.id), respPayload];\r\n state.items = tmp;\r\n suppressCamelCase = true;\r\n } else if(req.type === EXECUTE) {\r\n resp = camelizeKeys(resp);\r\n const respPayload = (resp.payload || resp.Payload);\r\n const tmp = respPayload;\r\n state.items = tmp;\r\n } else if(req.type === CREATE_USER_PORTFOLIO) {\r\n resp = camelizeKeys(resp);\r\n // TODO:\r\n }else if(req.type === DELETE_USER_PORTFOLIO) {\r\n resp = camelizeKeys(resp);\r\n // TODO:\r\n } else if(req.type === LOAD_USERS_PORTFOLIO_SUMMARY) {\r\n const respPayload = (resp.payload || resp.Payload);\r\n // const keys = Object.keys(respPayload);\r\n // let o = {};\r\n // keys.forEach(key => {\r\n // o[key.toLocaleLowerCase()] = respPayload[key];\r\n // })\r\n state.usersPortfolioSummary = respPayload;\r\n }\r\n\r\n if(req.resolve) {\r\n if(!suppressCamelCase) {\r\n resp = camelizeKeys(resp);\r\n }\r\n \r\n const respPayload = (resp.payload || resp.Payload);\r\n req.resolve(respPayload);\r\n }\r\n } else {\r\n \r\n state.failedRequests = [...state.failedRequests,{...req, errorMessage: resp.errorMessage || resp.ErrorMessage}];\r\n if(req.reject) {\r\n req.reject(resp.errorMessage || resp.ErrorMessage);\r\n }\r\n }\r\n\r\n }\r\n}\r\n\r\nexport const getters = {\r\n // loading(state) {\r\n // return state.loading;\r\n // },\r\n deleting(state) {\r\n return state.deleting;\r\n },\r\n processing(state) {\r\n return state.processing;\r\n },\r\n items(state) {\r\n return state.items;\r\n },\r\n usersPortfolioSummary(state) {\r\n return state.usersPortfolioSummary;\r\n },\r\n loading(state) {\r\n return state.loading;\r\n }\r\n}\r\n\r\nexport const actions = {\r\n async makeReq({ commit, rootState }, { payload, type, resolve, reject, userId } = {}) {\r\n\r\n const req = { \r\n id: uuid.v1(),\r\n clientId: rootState.signalr.connectionId,\r\n type: type,\r\n payload: payload,\r\n userId: userId || rootState.auth.currentUser.IdentityId,\r\n userName: userId ? '' : rootState.auth.currentUser.UserName,\r\n resolve, \r\n reject\r\n };\r\n commit('BEGIN_REQUEST', { req });\r\n window.setTimeout(() => {\r\n commit('END_REQUEST', { resp: { reqId: req.id, failed: true, errorMessage: \"Timeout reached\" } });\r\n }, TIMEOUT);\r\n\r\n //console.log('demoResp', demoResp);\r\n //only for test\r\n //commit('END_REQUEST', { resp: {...demoResp, reqId: req.id}});\r\n await http.post('api/backend/messages/out', req);\r\n },\r\n async loadUserPortfolios({dispatch}, { userId } = {}) {\r\n await dispatch('makeReq', {payload: { }, type: LOAD_USER_PORTFOLIOS, userId});\r\n },\r\n loadUserPortfolio({dispatch}, { id }) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: id, type: LOAD_USER_PORTFOLIO_BY_ID, resolve, reject});\r\n });\r\n },\r\n loadUsersPortfolioSummary({dispatch}, { userIDs }) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { userIDs }, type: LOAD_USERS_PORTFOLIO_SUMMARY, resolve, reject});\r\n });\r\n },\r\n createUserPortfolio({ commit, dispatch },{input}) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n \r\n dispatch('makeReq', { payload: {\r\n id: uuid.v1(),\r\n data: input.constraints,\r\n name: input.name,\r\n solutionName: input.solutionName,\r\n riskProfileId: input.riskProfileId,\r\n riskTolerance: input.riskTolerance,\r\n instruments: input.instruments,\r\n instrumentWeights: input.instrumentWeights,\r\n weightsMode: input.weightsMode,\r\n weights: input.weights,\r\n startDate: input.startDate,\r\n endDate: input.endDate,\r\n }, type: CREATE_USER_PORTFOLIO, resolve, reject});\r\n });\r\n },\r\n updateUserPortfolio({ commit, dispatch },{id, input}) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n \r\n dispatch('makeReq', { payload: {\r\n id: id,\r\n data: input.constraints,\r\n name: input.name,\r\n solutionName: input.solutionName,\r\n riskProfileId: input.riskProfileId,\r\n riskTolerance: input.riskTolerance,\r\n instruments: input.instruments,\r\n instrumentWeights: input.instrumentWeights,\r\n weightsMode: input.weightsMode,\r\n weights: input.weights,\r\n startDate: input.startDate,\r\n endDate: input.endDate,\r\n }, type: CREATE_USER_PORTFOLIO, resolve, reject});\r\n });\r\n },\r\n \r\n create({ commit, dispatch },{input}) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.post('api/portfolios', input).then((response)=>{\r\n commit('SET_PROCESSING', false);\r\n dispatch('load');\r\n resolve(response.data);\r\n }).catch((errors) => {\r\n commit('SET_PROCESSING', false);\r\n reject(errors);\r\n });\r\n });\r\n },\r\n loadPortfolio({ commit }, { id }) {\r\n commit('SET_LOADING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.get('api/portfolios/' + id).then((response)=>{\r\n commit('SET_LOADING', false);\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_LOADING', false);\r\n reject(error);\r\n });\r\n });\r\n },\r\n load({ commit }) {\r\n commit('SET_LOADING', true);\r\n return new Promise( (resolve, reject) => {\r\n const req = {\r\n \r\n };\r\n http.get('api/portfolios', { params: req}).then((response)=>{\r\n \r\n const l = response.data;\r\n //const userName = rootState.auth;\r\n // l.forEach(p => {\r\n \r\n // });\r\n commit('SET_ITEMS', l);\r\n commit('SET_LOADING', false);\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_LOADING', false);\r\n reject(error);\r\n });\r\n });\r\n },\r\n delete({ commit, dispatch }, { id } = {}) {\r\n commit('SET_DELETING', id);\r\n return new Promise( (resolve, reject) => {\r\n http.delete(`api/portfolios/${id}`).then((response)=>{\r\n commit('SET_DELETING', null);\r\n dispatch('load');\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_DELETING', null);\r\n reject(error);\r\n });\r\n });\r\n },\r\n deleteUserPortfolio({dispatch, commit}, { id,name }) {\r\n commit('SET_DELETING', id);\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: name, type: DELETE_USER_PORTFOLIO, resolve, reject});\r\n });\r\n },\r\n execute({dispatch}, { id, name }) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: { id, name }, type: EXECUTE, resolve, reject});\r\n });\r\n },\r\n taxLossHarvestPaperTrade({dispatch},payload) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: payload, type: TAX_LOSS_HARVEST_PAPER_TRADE, resolve, reject});\r\n });\r\n \r\n },\r\n taxLossHarvestReplacementPositions({dispatch},payload) {\r\n return new Promise( (resolve, reject) => {\r\n dispatch('makeReq', { payload: payload, type: TAX_LOSS_HARVEST_REPLACEMENT_POSITIONS, resolve, reject});\r\n });\r\n },\r\n update({ commit, dispatch }, { id, input } = {}) {\r\n commit('SET_PROCESSING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.put(`api/portfolios/${id}`, input).then((response)=>{\r\n commit('SET_PROCESSING', false);\r\n dispatch('load');\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_PROCESSING', false);\r\n reject(error);\r\n });\r\n });\r\n }\r\n}\r\n","export const state = {\r\n layoutType: 'vertical',\r\n layoutWidth: 'fluid',\r\n leftSidebarType: 'dark',\r\n topbar: 'dark',\r\n loader: false,\r\n fullScreen: false\r\n}\r\n\r\nexport const getters = {}\r\n\r\nexport const mutations = {\r\n CHANGE_LAYOUT(state, layoutType) {\r\n state.layoutType = layoutType;\r\n },\r\n CHANGE_LAYOUT_WIDTH(state, layoutWidth) {\r\n state.layoutWidth = layoutWidth;\r\n },\r\n CHANGE_LEFT_SIDEBAR_TYPE(state, leftSidebarType) {\r\n state.leftSidebarType = leftSidebarType;\r\n },\r\n CHANGE_TOPBAR(state, topbar) {\r\n state.topbar = topbar;\r\n },\r\n CHANGE_FULLSCREEN(state, fullScreen) {\r\n console.log('CHANGE_FULLSCREEN', fullScreen);\r\n state.fullScreen = fullScreen;\r\n },\r\n LOADER(state, loader) {\r\n state.loader = loader\r\n }\r\n}\r\n\r\nexport const actions = {\r\n changeLayoutType({ commit }, { layoutType }) {\r\n commit('CHANGE_LAYOUT', layoutType);\r\n },\r\n\r\n changeLayoutWidth({ commit }, { layoutWidth }) {\r\n commit('CHANGE_LAYOUT_WIDTH', layoutWidth)\r\n },\r\n\r\n changeLeftSidebarType({ commit }, { leftSidebarType }) {\r\n commit('CHANGE_LEFT_SIDEBAR_TYPE', leftSidebarType)\r\n },\r\n\r\n changeTopbar({ commit }, { topbar }) {\r\n commit('CHANGE_TOPBAR', topbar)\r\n },\r\n\r\n changeLoaderValue({ commit }, { loader }) {\r\n commit('LOADER', loader)\r\n }\r\n}\r\n","import http from '@/oauth-client'\r\nimport { debounce } from \"lodash\";\r\n//import { chartColors } from '@/helpers'\r\n\r\nconst TIMEOUT = 120000;\r\n\r\nconst getDefaultState = () => {\r\n return {\r\n \r\n previewRequestSeq: 0,\r\n previewRequest: {\r\n \r\n }\r\n };\r\n}\r\n\r\n\r\nexport const state = getDefaultState();\r\n\r\nexport const getters = {\r\n previewRequest(state){\r\n return state.previewRequest[state.previewRequestSeq] || null;\r\n },\r\n demo(state) {\r\n return state.demo\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n RESET_PREVIEW(state, { seq, portfolio } = {}) {\r\n state.previewRequest = {};\r\n if(seq) {\r\n state.previewRequestSeq = seq;\r\n state.previewRequest = {};\r\n state.previewRequest[seq] = {\r\n result: { data: portfolio.stat, id: portfolio.id },\r\n input: portfolio.constraints,\r\n pending: false,\r\n requesting: false,\r\n colors:{}\r\n }\r\n }\r\n },\r\n REQ_PREVIEW_STARTED(state, {seq}) {\r\n const orig = state.previewRequest[seq];\r\n if(orig) {\r\n const o = {...state.previewRequest};\r\n o[seq] = {...orig, requesting: true };\r\n state.previewRequest = o;\r\n }\r\n },\r\n START_PREVIEW_REQUEST(state, input) {\r\n const o = {...state.previewRequest};\r\n const prev = o[state.previewRequestSeq] || {};\r\n state.previewRequestSeq = state.previewRequestSeq + 1;\r\n o[state.previewRequestSeq] = {\r\n input,\r\n pending: true,\r\n requesting: false,\r\n result: prev.result || null,\r\n colors:{}\r\n };\r\n state.previewRequest = o;\r\n },\r\n END_PREVIEW_REQUEST(state, {seq, result, error}) {\r\n\r\n //let colorIndex = 0;\r\n // let generatorColor = () => {\r\n // if(!colorIndex) {\r\n // colorIndex = 0;\r\n // }\r\n // if(colorIndex >= chartColors.length) {\r\n // colorIndex = 0;\r\n // }\r\n // return chartColors[colorIndex++];\r\n // };\r\n\r\n let colors = {};\r\n if(result) {\r\n colors[result.id] = \"#FE6C2D\";\r\n const childrenMap = {};\r\n // if(result.children) {\r\n // result.children.forEach(c => {\r\n // childrenMap[c.id] = c;\r\n // colors[c.id] = generatorColor();\r\n // c.visible = true;\r\n // });\r\n // }\r\n result.childrenMap = childrenMap;\r\n }\r\n \r\n\r\n const o = {...state.previewRequest};\r\n const orig = o[seq];\r\n if(orig) {\r\n o[seq] = {\r\n ...orig, \r\n result: result, \r\n pending: false, \r\n requesting: false, \r\n error: error,\r\n colors \r\n };\r\n }\r\n state.previewRequest = o;\r\n },\r\n SET_MODEL(state, val) {\r\n state.model = val;\r\n }\r\n}\r\n\r\nexport const actions = {\r\n async makePreviewRequest ({ dispatch, commit }, { input }) {\r\n commit('START_PREVIEW_REQUEST', input);\r\n await dispatch('debounceReqPreview');\r\n },\r\n debounceReqPreview: debounce(async ({ dispatch }) => {\r\n await dispatch('reqRreview');\r\n }, 1000),\r\n async respRreview({ commit }, { seq, data, error }) {\r\n console.log('preview request response');\r\n commit('END_PREVIEW_REQUEST', { result: data, error, seq }); \r\n },\r\n async reqRreview ({ state, commit }) {\r\n \r\n const seq = state.previewRequestSeq;\r\n \r\n if(state.previewRequest[seq]) {\r\n const input = state.previewRequest[seq].input;\r\n commit('REQ_PREVIEW_STARTED', { seq }); \r\n await http.post(`api/portfolio-previews/${seq}`, input );\r\n } \r\n setTimeout(()=>{\r\n if(state.previewRequest[seq]?.pending) { \r\n commit('END_PREVIEW_REQUEST', { seq, error: { internal: true } }); \r\n //commit('END_PREVIEW_REQUEST', { result: demo.data, error: demo.error, seq: seq });\r\n }\r\n }, TIMEOUT);\r\n }\r\n}\r\n","import http from '@/oauth-client'\r\nimport { debounce } from \"lodash\";\r\n\r\nexport const state = {\r\n classifiers: [],\r\n loading: false,\r\n processing: {},\r\n page: 1,\r\n perPage: 20,\r\n normalized: false,\r\n ids: [],\r\n filter: {\r\n accountId: null,\r\n userId: null,\r\n keyword: '',\r\n\r\n mtdFrom:null,\r\n ytdFrom:null,\r\n annualisedReturnFrom:null,\r\n realisedVolatilityFrom:null,\r\n downsideVolatilityFrom:null,\r\n maxDrawdownFrom:null,\r\n winningMonthsFrom:null,\r\n sharpeRatioFrom:null,\r\n sortinoRatioFrom:null,\r\n calmarRatioFrom:null,\r\n\r\n mtdTill:null,\r\n ytdTill:null,\r\n annualisedReturnTill:null,\r\n realisedVolatilityTill:null,\r\n downsideVolatilityTill:null,\r\n maxDrawdownTill:null,\r\n winningMonthsTill:null,\r\n sharpeRatioTill:null,\r\n sortinoRatioTill:null,\r\n calmarRatioTill:null,\r\n\r\n classifiers: {\r\n\r\n }\r\n },\r\n order:{\r\n by: 'Name',\r\n asc: true\r\n },\r\n total: 0,\r\n items: [],\r\n hasAccess: {},\r\n defaults: {},\r\n settings: {\r\n mode: 'All'\r\n }\r\n}\r\n\r\nexport const mutations = {\r\n SET_NORMALIZED(state, newValue) {\r\n state.normalized = newValue;\r\n },\r\n SET_ORDER(state, newValue) {\r\n state.order = newValue;\r\n },\r\n SET_USER(state, newValue) {\r\n state.filter.userId =newValue;\r\n },\r\n CLEAR_DATA(state) {\r\n state.page = 1;\r\n state.items = [];\r\n },\r\n SET_MODE(state, newValue) {\r\n state.settings.mode =newValue;\r\n },\r\n RESET_FILTER(state){\r\n\r\n state.filter.keyword ='';\r\n state.filter.classifiers = {};\r\n\r\n state.filter.mtdFrom=null;\r\n state.filter.ytdFrom=null;\r\n state.filter.annualisedReturnFrom=null;\r\n state.filter.realisedVolatilityFrom=null;\r\n state.filter.downsideVolatilityFrom=null;\r\n state.filter.maxDrawdownFrom=null;\r\n state.filter.winningMonthsFrom=null;\r\n state.filter.sharpeRatioFrom=null;\r\n state.filter.sortinoRatioFrom=null;\r\n state.filter.calmarRatioFrom=null;\r\n\r\n state.filter.mtdTill=null;\r\n state.filter.ytdTill=null;\r\n state.filter.annualisedReturnTill=null;\r\n state.filter.realisedVolatilityTill=null;\r\n state.filter.downsideVolatilityTill=null;\r\n state.filter.maxDrawdownTill=null;\r\n state.filter.winningMonthsTill=null;\r\n state.filter.sharpeRatioTill=null;\r\n state.filter.sortinoRatioTill=null;\r\n state.filter.calmarRatioTill=null;\r\n \r\n state.filter = JSON.parse(JSON.stringify(state.filter));\r\n },\r\n ADD_DEFAULT(state, instrumentId) {\r\n state.defaults[instrumentId] = true;\r\n },\r\n REMOVE_DEFAULT(state, instrumentId) {\r\n state.defaults[instrumentId] = false;\r\n },\r\n ADD_ACCESS(state, instrumentId) {\r\n state.hasAccess[instrumentId] = true;\r\n },\r\n REMOVE_ACCESS(state, instrumentId) {\r\n state.hasAccess[instrumentId] = false;\r\n },\r\n SET_CLASSIFIERS(state, newValue) {\r\n const o = newValue.map || {};\r\n for (const [key] of Object.entries(o)) {\r\n let value =o[key];\r\n value.map = value.values.reduce((acc,curr)=> (acc[curr.value]=curr.text,acc),{});\r\n }\r\n newValue.filterItems = newValue.filterItems.map(x => o[x]);\r\n newValue.instrumentItems = newValue.instrumentItems.map(x => o[x]);\r\n state.classifiers = newValue;\r\n },\r\n SET_TOTAL(state, newValue) {\r\n state.total = newValue\r\n },\r\n SET_LOADING(state, newValue) {\r\n state.loading = newValue\r\n },\r\n SET_PROCESSING(state, newValue) {\r\n state.processing = newValue\r\n },\r\n SET_FILTER(state, newValue) {\r\n state.filter = newValue;\r\n },\r\n SET_IDS(state, ids) {\r\n state.ids = ids;\r\n },\r\n SET_SETTINGS(state, newValue) {\r\n state.settings = newValue\r\n },\r\n SET_PAGE(state, newValue) {\r\n state.page = newValue\r\n },\r\n SET_ITEMS(state, newValue) {\r\n state.items = newValue\r\n },\r\n SET_HAS_ACCESS(state, newValue) {\r\n state.hasAccess = newValue\r\n },\r\n SET_DEFAULTS(state, newValue) {\r\n state.defaults = newValue\r\n }\r\n}\r\n\r\nexport const getters = {\r\n \r\n normalized(state) {\r\n return state.normalized;\r\n },\r\n isStatFiltered(state) {\r\n if(state.filter.mtdFrom !== null && state.filter.mtdFrom !== undefined) return true;\r\n if(state.filter.mtdTill !== null && state.filter.mtdTill !== undefined) return true;\r\n \r\n if(state.filter.ytdFrom !== null && state.filter.ytdFrom !== undefined) return true;\r\n if(state.filter.ytdTill !== null && state.filter.ytdTill !== undefined) return true;\r\n\r\n if(state.filter.annualisedReturnFrom !== null && state.filter.annualisedReturnFrom !== undefined) return true;\r\n if(state.filter.annualisedReturnTill !== null && state.filter.annualisedReturnTill !== undefined) return true;\r\n\r\n if(state.filter.realisedVolatilityFrom !== null && state.filter.realisedVolatilityFrom !== undefined) return true;\r\n if(state.filter.realisedVolatilityTill !== null && state.filter.realisedVolatilityTill !== undefined) return true;\r\n\r\n if(state.filter.downsideVolatilityFrom !== null && state.filter.downsideVolatilityFrom !== undefined) return true;\r\n if(state.filter.downsideVolatilityTill !== null && state.filter.downsideVolatilityTill !== undefined) return true;\r\n \r\n if(state.filter.maxDrawdownFrom !== null && state.filter.maxDrawdownFrom !== undefined) return true;\r\n if(state.filter.maxDrawdownTill !== null && state.filter.maxDrawdownTill !== undefined) return true;\r\n\r\n if(state.filter.winningMonthsFrom !== null && state.filter.winningMonthsFrom !== undefined) return true;\r\n if(state.filter.winningMonthsTill !== null && state.filter.winningMonthsTill !== undefined) return true;\r\n\r\n if(state.filter.sharpeRatioFrom !== null && state.filter.sharpeRatioFrom !== undefined) return true;\r\n if(state.filter.sharpeRatioTill !== null && state.filter.sharpeRatioTill !== undefined) return true;\r\n\r\n if(state.filter.sortinoRatioFrom !== null && state.filter.sortinoRatioFrom !== undefined) return true;\r\n if(state.filter.sortinoRatioTill !== null && state.filter.sortinoRatioTill !== undefined) return true;\r\n\r\n if(state.filter.calmarRatioFrom !== null && state.filter.calmarRatioFrom !== undefined) return true;\r\n if(state.filter.calmarRatioTill !== null && state.filter.calmarRatioTill !== undefined) return true;\r\n\r\n\r\n return false;\r\n },\r\n order(state) {\r\n return state.order;\r\n },\r\n total(state) {\r\n return state.total;\r\n },\r\n page(state) {\r\n return state.page;\r\n },\r\n items(state) {\r\n return state.items;\r\n },\r\n hasAccess(state) {\r\n return state.hasAccess;\r\n },\r\n defaults(state) {\r\n return state.defaults;\r\n },\r\n perPage(state) {\r\n return state.perPage;\r\n },\r\n settings(state) {\r\n return state.settings;\r\n },\r\n filter(state) {\r\n return state.filter;\r\n },\r\n loading(state) {\r\n return state.loading;\r\n },\r\n processing(state) {\r\n return state.processing;\r\n },\r\n classifiers(state) {\r\n return state.classifiers;\r\n }\r\n}\r\n\r\nexport const actions = {\r\n async setNormalized({ dispatch, commit }, value) {\r\n commit('SET_NORMALIZED', value);\r\n await dispatch('debounceLoad');\r\n },\r\n async setOrder({ dispatch, commit }, value) {\r\n commit('SET_ORDER', value);\r\n await dispatch('debounceLoad');\r\n },\r\n async setSettings({ dispatch, commit }, settings) {\r\n commit('SET_SETTINGS', settings);\r\n await dispatch('load');\r\n },\r\n async setFilter({ commit }, filter) {\r\n commit('SET_FILTER', filter);\r\n },\r\n async setIDs({ commit }, ids) {\r\n commit('SET_IDS', ids);\r\n commit('CLEAR_DATA');\r\n \r\n },\r\n async resetFilter({ commit }) {\r\n commit('RESET_FILTER');\r\n },\r\n async setPage({ dispatch, commit }, page) {\r\n commit('SET_PAGE', page);\r\n await dispatch('load');\r\n },\r\n debounceLoad: debounce(async ({ dispatch }) => {\r\n await dispatch('load');\r\n }, 1000),\r\n addDefault({ dispatch, commit, state }, instrumentId) {\r\n const o = {...state.processing };\r\n o[instrumentId] = true;\r\n commit('SET_PROCESSING', o);\r\n return new Promise( (resolve, reject) => {\r\n const req = {instrumentId, accountId: state.filter.accountId, userId: state.filter.userId };\r\n http.post('api/instrument-default/add', req).then((response)=>{\r\n const o = {...state.processing };\r\n o[instrumentId] = false;\r\n commit('SET_PROCESSING', o);\r\n commit('ADD_DEFAULT', instrumentId);\r\n dispatch('debounceLoad')\r\n resolve(response.data)\r\n }).catch((error) => {\r\n const o = {...state.processing };\r\n o[instrumentId] = false;\r\n commit('SET_PROCESSING', o);\r\n reject(error);\r\n });\r\n });\r\n },\r\n removeDefault({ dispatch, commit, state }, instrumentId) {\r\n const o = {...state.processing };\r\n o[instrumentId] = true;\r\n commit('SET_PROCESSING', o);\r\n return new Promise( (resolve, reject) => {\r\n const req = {instrumentId, accountId: state.filter.accountId, userId: state.filter.userId };\r\n http.post('api/instrument-default/remove', req).then((response)=>{\r\n const o = {...state.processing };\r\n o[instrumentId] = false;\r\n commit('SET_PROCESSING', o);\r\n commit('REMOVE_DEFAULT', instrumentId);\r\n dispatch('debounceLoad')\r\n resolve(response.data)\r\n }).catch((error) => {\r\n const o = {...state.processing };\r\n o[instrumentId] = false;\r\n commit('SET_PROCESSING', o);\r\n reject(error);\r\n });\r\n });\r\n },\r\n addAccess({ dispatch, commit, state }, instrumentId) {\r\n const o = {...state.processing };\r\n o[instrumentId] = true;\r\n commit('SET_PROCESSING', o);\r\n return new Promise( (resolve, reject) => {\r\n const req = {instrumentId, accountId: state.filter.accountId, userId: state.filter.userId };\r\n http.post('api/instrument-access/add', req).then((response)=>{\r\n const o = {...state.processing };\r\n o[instrumentId] = false;\r\n commit('SET_PROCESSING', o);\r\n commit('ADD_ACCESS', instrumentId);\r\n dispatch('debounceLoad')\r\n resolve(response.data)\r\n }).catch((error) => {\r\n const o = {...state.processing };\r\n o[instrumentId] = false;\r\n commit('SET_PROCESSING', o);\r\n reject(error);\r\n });\r\n });\r\n },\r\n removeAccess({ dispatch, commit, state }, instrumentId) {\r\n const o = {...state.processing };\r\n o[instrumentId] = true;\r\n commit('SET_PROCESSING', o);\r\n return new Promise( (resolve, reject) => {\r\n const req = {instrumentId, accountId: state.filter.accountId, userId: state.filter.userId };\r\n http.post('api/instrument-access/remove', req).then((response)=>{\r\n const o = {...state.processing };\r\n o[instrumentId] = false;\r\n commit('SET_PROCESSING', o);\r\n commit('REMOVE_ACCESS', instrumentId);\r\n dispatch('debounceLoad')\r\n resolve(response.data)\r\n }).catch((error) => {\r\n const o = {...state.processing };\r\n o[instrumentId] = false;\r\n commit('SET_PROCESSING', o);\r\n reject(error);\r\n });\r\n });\r\n },\r\n async reload({dispatch, commit}){\r\n commit('SET_PAGE', 1);\r\n await dispatch('load');\r\n },\r\n loadInstrument({ commit }, id) {\r\n commit('SET_LOADING', true);\r\n return new Promise( (resolve, reject) => {\r\n http.get(`api/instruments/${id}`).then((response)=>{\r\n commit('SET_LOADING', false);\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_LOADING', false);\r\n reject(error);\r\n });\r\n });\r\n },\r\n load({ commit, state }) {\r\n commit('SET_LOADING', true);\r\n return new Promise( (resolve, reject) => {\r\n const skip = (state.page - 1) * state.perPage;\r\n const req = {\r\n skip,\r\n take: state.perPage,\r\n keyword: state.filter.keyword,\r\n classifiers: state.filter.classifiers,\r\n accountId: state.filter.accountId,\r\n userId: state.filter.userId,\r\n showOnlyAccessible: state.settings.mode !== 'All',\r\n order: state.order,\r\n normalisedPerformance: state.normalized,\r\n mtdFrom:state.filter.mtdFrom,\r\n ytdFrom:state.filter.ytdFrom,\r\n annualisedReturnFrom:state.filter.annualisedReturnFrom,\r\n realisedVolatilityFrom:state.filter.realisedVolatilityFrom,\r\n downsideVolatilityFrom:state.filter.downsideVolatilityFrom,\r\n maxDrawdownFrom:state.filter.maxDrawdownFrom,\r\n winningMonthsFrom:state.filter.winningMonthsFrom,\r\n sharpeRatioFrom:state.filter.sharpeRatioFrom,\r\n sortinoRatioFrom:state.filter.sortinoRatioFrom,\r\n calmarRatioFrom:state.filter.calmarRatioFrom,\r\n mtdTill:state.filter.mtdTill,\r\n ytdTill:state.filter.ytdTill,\r\n annualisedReturnTill:state.filter.annualisedReturnTill,\r\n realisedVolatilityTill:state.filter.realisedVolatilityTill,\r\n downsideVolatilityTill:state.filter.downsideVolatilityTill,\r\n maxDrawdownTill:state.filter.maxDrawdownTill,\r\n winningMonthsTill:state.filter.winningMonthsTill,\r\n harpeRatioTill:state.filter.harpeRatioTill,\r\n sortinoRatioTill:state.filter.sortinoRatioTill,\r\n calmarRatioTill:state.filter.calmarRatioTill,\r\n ids: state.ids || []\r\n };\r\n \r\n http.post('api/instrument-search', req).then((response)=>{\r\n commit('SET_TOTAL', response.data.total);\r\n commit('SET_ITEMS', response.data.items);\r\n commit('SET_HAS_ACCESS', response.data.hasAccess);\r\n commit('SET_DEFAULTS', response.data.defaults);\r\n commit('SET_LOADING', false);\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_LOADING', false);\r\n reject(error);\r\n });\r\n });\r\n },\r\n loadClassifiers({ commit }) {\r\n commit('SET_LOADING', true);\r\n return new Promise( (resolve, reject) => {\r\n const req = {\r\n \r\n };\r\n http.get('api/instrument-classifiers', { params: req}).then((response)=>{\r\n commit('SET_CLASSIFIERS', response.data);\r\n commit('SET_LOADING', false);\r\n resolve(response.data)\r\n }).catch((error) => {\r\n commit('SET_LOADING', false);\r\n reject(error);\r\n });\r\n });\r\n }\r\n}\r\n","var map = {\n\t\"./accounts.js\": \"260b\",\n\t\"./auth.js\": \"11c0\",\n\t\"./calculation-signalr.js\": \"7d53\",\n\t\"./chatgpt.js\": \"5dd0\",\n\t\"./execution.js\": \"5059\",\n\t\"./instruments.js\": \"ccbd\",\n\t\"./layout.js\": \"c21a\",\n\t\"./portfolio-edit.js\": \"c640\",\n\t\"./portfolios.js\": \"bc93\",\n\t\"./riskprofiles.js\": \"0851\",\n\t\"./signalr.js\": \"03b5\",\n\t\"./tax-loss-harvest.js\": \"838d\",\n\t\"./users.js\": \"b20d\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"cfa9\";","export function parseErrors (error) {\r\n if(error.response.status === 500){\r\n return [error.response.data.Message || error.response.data.message];\r\n }\r\n let a = [];\r\n const errors = (error.response.data || {}).errors || error.response.data;\r\n if(Array.isArray (errors)) {\r\n a = [...errors];\r\n } else{\r\n for (var key in errors) {\r\n for (var e in errors[key]) {\r\n a.push(errors[key][e])\r\n }\r\n }\r\n }\r\n \r\n return a;\r\n}\r\n\r\n\r\nexport const chartColors = [\r\n '#3366CC',\r\n '#DC3912',\r\n '#FF9900',\r\n '#109618',\r\n '#990099',\r\n '#3B3EAC',\r\n '#0099C6',\r\n '#DD4477',\r\n '#66AA00',\r\n '#B82E2E',\r\n '#316395',\r\n '#994499',\r\n '#22AA99',\r\n '#AAAA11',\r\n '#6633CC',\r\n '#E67300',\r\n '#8B0707',\r\n '#329262',\r\n '#5574A6',\r\n '#3B3EAC'\r\n];\r\n\r\nexport const monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\",\r\n\"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\", \"YTD\"\r\n];"],"sourceRoot":""}