{"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/state/modules/accounts.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?b45c","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/i18n.js","webpack:///./src/main.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/router/routes.js","webpack:///./src/modals.js","webpack:///./src/router/index.js","webpack:///./src/state/modules/users.js","webpack:///./src/http.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","store","auth","token","uri","process","log","HubConnectionBuilder","withUrl","accessTokenFactory","withAutomaticReconnect","build","on","root","seq","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","localStorage","getItem","permissions","createEmptyPermissions","managedAccounts","getElementById","style","display","SET_MANAGED_ACCOUNTS","saveState","removeItem","SET_TOKEN","setItem","SET_PERMISSIONS","SET_CURRENT_USER","loggedIn","accountPermissios","accountPermissions","userPermissios","userPermissions","userType","userRole","logIn","email","password","accountId","success","user","accounts","logOut","allowManage","JSON","stringify","b","parse","parseErrors","loadById","map","webpackContext","webpackContextResolve","keys","__timer","interactiveBrokerClient","axios","baseURL","headers","camelizeKeys","obj","Array","isArray","v","constructor","reduce","camelCase","UPLOAD_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","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_UPLOAD_TRANSACTIONS_FROM_TIME","PAPER_TRADE_UPDATE","selected","forEach","orderStatus","HANDLE_INTERACTIVE_BROKER_POSITIONS_UPDATE","brokerPositions","pos","ticker","includes","nameList","split","brokerPos","find","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","orderQuantity","parseFloat","SET_ORDER_PRICE","price","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","uploadTransactionsFromInteractiveBrokers","param","backendTransactions","tx","timeStampStr","toDate","execId","execID","orderId","orderID","qty","executeOrderInteractiveBrokers","dto","getBrokerPositionsFromInteractiveBrokers","connectToInteractiveBrokers","disconnectFromInteractiveBrokers","makeReq","rootState","uuid","v1","clientId","signalr","userId","changeCurrency","changeReBalanceCloseoutTrades","saveExecutionSettings","saveUserSettings","saveUserSettingsById","loadExecutionSettings","loadUserSettings","loadPositions","loadTransactions","take","skip","loadMoreItemTransactions","loadItem","loadLiveIndicies","initRuntime","refresh","taxLossHarvest","taxLossHarvestData","paperTrade","orderSide","Math","abs","_vm","this","_h","$createElement","_c","_self","attrs","staticRenderFns","page","titleTemplate","title","$store","created","component","loadLocaleMessages","locales","messages","matched","match","locale","Vue","use","VueI18n","fallbackLocale","hcHeatmap","Highcharts","ExportingInit","ExportData","Stock","IndicatorsAll","highchartsMoreInit","solidGaugeInit","HighchartsVue","VueAuthHref","config","productionTip","VueYoutube","BootstrapVue","vco","Vuelidate","VueSweetalert2","VueMask","VueApexCharts","router","i18n","render","h","App","$mount","modulesCache","storeData","getNamespace","subtree","path","namespace","namespaced","requireModule","fileName","moduleDefinition","modulePath","replace","pop","Vuex","Store","strict","meta","beforeResolve","routeTo","routeFrom","next","authRequired","authRequiredOnPreviousRoute","some","route","props","isAllow","assign","query","_stack","forceClose","VueRouter","VueMeta","keyName","routes","scrollBehavior","to","from","savedPosition","y","sendAudit","beforeEach","redirectToLogin","redirectFrom","fullPath","perPage","keyword","accountIs","SET_PAGE","SET_FILTER","HANDLE_LOAD_RESPONSE","respData","setFilter","setPage","debounceLoad","debounce","httpClient","getAuthToken","getSignalRConnectionId","authInterceptor","interceptors","errorInterceptor","responseInterceptor","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","respPayload","prefixPattern","sIndexOfPrefix","eIndexOfPrefix","substring","tmp","loadUserPortfolios","loadUserPortfolio","loadUsersPortfolioSummary","userIDs","createUserPortfolio","constraints","solutionName","riskProfileId","riskTolerance","instruments","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","val","model","makePreviewRequest","debounceReqPreview","respRreview","reqRreview","internal","classifiers","normalized","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","text","filterItems","instrumentItems","SET_TOTAL","SET_SETTINGS","SET_HAS_ACCESS","SET_DEFAULTS","isStatFiltered","setNormalized","setOrder","setSettings","resetFilter","addDefault","removeDefault","addAccess","removeAccess","reload","loadInstrument","showOnlyAccessible","normalisedPerformance","harpeRatioTill","loadClassifiers","Message","a","chartColors","monthNames"],"mappings":"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","file":"js/app.11d515c4.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\":\"7492e42f\",\"chunk-024b2883\":\"9309daf9\",\"chunk-2d7fcf2c\":\"15417132\",\"chunk-017039a5\":\"14c78cc2\",\"chunk-095b3fd1\":\"5cbd2370\",\"chunk-4d8e4706\":\"08f3f1fe\",\"chunk-4dbe686a\":\"1b11c82c\",\"chunk-76d788a1\":\"a6ae64dd\",\"chunk-736f1d2e\":\"82d66080\",\"chunk-25e2e11b\":\"df707d60\",\"chunk-04707f9a\":\"52bf3a73\",\"chunk-1317cfe9\":\"90597212\",\"chunk-4dbc266e\":\"bb92d9e3\",\"chunk-4dbe579a\":\"c9c19ba5\",\"chunk-2d0c78c1\":\"eda4e1ec\",\"chunk-2d21f0fd\":\"2937c46e\",\"chunk-f245e424\":\"b4dc20e1\",\"chunk-fb8d731c\":\"5bc4d193\",\"chunk-cf133432\":\"fdc3b9e9\"}[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-017039a5\":1,\"chunk-095b3fd1\":1,\"chunk-736f1d2e\":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-024b2883\":\"31d6cfe0\",\"chunk-2d7fcf2c\":\"31d6cfe0\",\"chunk-017039a5\":\"f5d74f52\",\"chunk-095b3fd1\":\"b5511a38\",\"chunk-4d8e4706\":\"31d6cfe0\",\"chunk-4dbe686a\":\"31d6cfe0\",\"chunk-76d788a1\":\"31d6cfe0\",\"chunk-736f1d2e\":\"b5511a38\",\"chunk-25e2e11b\":\"31d6cfe0\",\"chunk-04707f9a\":\"31d6cfe0\",\"chunk-1317cfe9\":\"31d6cfe0\",\"chunk-4dbc266e\":\"31d6cfe0\",\"chunk-4dbe579a\":\"31d6cfe0\",\"chunk-2d0c78c1\":\"31d6cfe0\",\"chunk-2d21f0fd\":\"31d6cfe0\",\"chunk-f245e424\":\"31d6cfe0\",\"chunk-fb8d731c\":\"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\nimport 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\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(store.state.auth.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: () => store.state.auth.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} = {}) => {\r\n console.log('PreviewRequestResponse', {seq, data, error});\r\n console.log(data);\r\n dispatch('portfolioEdit/respRreview', {seq, data, error}, { 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 '../../http'\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 '../../http'\r\n\r\nexport const state = {\r\n currentUser: loadState('c8wealth.auth.current-user'),\r\n token: window.localStorage.getItem('c8wealth.auth.token'),\r\n permissions: loadState('c8wealth.auth.permissions') || createEmptyPermissions(),\r\n managedAccounts: loadState('c8wealth.auth.managed-accounts') || []\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 accountPermissios(state) {\r\n return state.permissions.accountPermissions;\r\n },\r\n userPermissios(state) {\r\n return state.permissions.userPermissions;\r\n },\r\n userType(state) {\r\n return state.currentUser.userType;\r\n },\r\n userRole(state) {\r\n return state.currentUser.userRole;\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, accountId } = {}) {\r\n return new Promise( (resolve, reject) => {\r\n\r\n http.post('api/auth', { email, password, accountId }).then((response)=>{\r\n if(response.data.success) {\r\n commit('SET_CURRENT_USER', response.data.user);\r\n commit('SET_TOKEN', response.data.token);\r\n commit('SET_PERMISSIONS', response.data.permissions);\r\n commit('SET_MANAGED_ACCOUNTS', response.data.managedAccounts);\r\n dispatch('signalr/connect', null, { root: true });\r\n dispatch('calculationSignalr/connect', null, { root: true });\r\n document.getElementById(\"tradingview-widget-container\").style.display = 'block';\r\n resolve(true);\r\n } else {\r\n resolve(response.data.accounts);\r\n }\r\n }).catch((error) => {\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 // 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 }\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\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 http from '../../http'\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","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 '../../http';\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 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\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_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 state.runtime.orders[index].orderQuantity = size ? parseFloat(size) : 0;\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.log('aaa', 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();\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 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 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.name,\r\n userId: rootState.auth.currentUser.id,\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 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","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=bcf370b8&\"\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 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\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('c8wealth.auth.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\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","//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 console.log('calculation signalr connect');\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","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: '/logout',\r\n name: 'logout',\r\n meta: {\r\n authRequired: true,\r\n beforeResolve(routeTo, routeFrom, next) {\r\n store.dispatch('auth/logOut')\r\n const authRequiredOnPreviousRoute = routeFrom.matched.some(\r\n (route) => route.push('/login')\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.currentUser \r\n && store.state.auth.currentUser.userType === 'Account' ? \r\n store.state.auth.currentUser.userRole.includes('Admin') \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.userType === 'Owner' || (auth.currentUser.userType === 'Account' && auth.currentUser.userRole.includes('Admin')),\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: '/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.permissions.accountPermissions.allowManage,\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.permissions.accountPermissions.allowManage,\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.userType === 'Account',\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.userType === 'Account',\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.userType === 'Account',\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?.permissions?.userPermissions?.allowManage,\r\n authRequired: true\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?.permissions?.userPermissions?.allowManage,\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 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 (store.state.auth.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 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\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 http from '../../http'\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","import axios from 'axios';\r\nimport router from './router/index'\r\nimport store from '@/state/store'\r\n\r\nconst httpClient = axios.create({\r\n baseURL: process.env.VUE_APP_BASE_URL,\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 getAuthToken = () => 'Bearer ' + store.state.auth.token;\r\nconst getSignalRConnectionId = () => store.state.signalr.connectionId;\r\n\r\nconst authInterceptor = (config) => {\r\n config.headers['Authorization'] = getAuthToken();\r\n config.headers['SignalRConnId'] = getSignalRConnectionId();\r\n return config;\r\n}\r\n\r\nhttpClient.interceptors.request.use(authInterceptor);\r\n\r\n// interceptor to catch errors\r\nconst errorInterceptor = error => {\r\n \r\n // check if it's a server error\r\n if (!error.response) {\r\n //notify.warn('Network/Server error');\r\n return Promise.reject(error);\r\n }\r\n\r\n // all the other error responses\r\n switch(error.response.status) {\r\n case 400:\r\n console.error(error.response.status, error.message);\r\n // notify.warn('Nothing to display','Data Not Found');\r\n break;\r\n\r\n case 401: // authentication error, logout the user\r\n // debugger; // eslint-disable-line no-debugger\r\n //notify.warn( 'Please login again', 'Session Expired');\r\n \r\n store.dispatch('auth/logOut')\r\n router.push('/login');\r\n break;\r\n\r\n default:\r\n console.error(error.response.status, error.message);\r\n //notify.error('Server Error');\r\n\r\n }\r\n return Promise.reject(error);\r\n}\r\n\r\n// Interceptor for responses\r\nconst responseInterceptor = response => {\r\n switch(response.status) {\r\n case 200: \r\n // yay!\r\n break;\r\n // any other cases\r\n default:\r\n // default case\r\n }\r\n\r\n return response;\r\n}\r\n\r\nhttpClient.interceptors.response.use(responseInterceptor, errorInterceptor);\r\n\r\nexport default httpClient;","\r\nimport http from '../../http'\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 console.log('END_REQUEST', { req, resp });\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 \r\n if(!resp.failed) {\r\n\r\n if(req.type === LOAD_USER_PORTFOLIOS) {\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 => {\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 });\r\n console.log('rootState', respPayload);\r\n\r\n const tmp = respPayload;\r\n state.items = tmp;\r\n } else if(req.type === LOAD_USER_PORTFOLIO_BY_ID) {\r\n resp = camelizeKeys(resp);\r\n const respPayload = (resp.payload || resp.Payload);\r\n const tmp = [...state.items.filter(x => x.id !== req.payload.id), respPayload];\r\n state.items = tmp;\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 resp = camelizeKeys(resp);\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 console.log('State after END_REQUEST', state);\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.id,\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 weights: input.weights\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 }, 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, rootState }) {\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 console.log('rootState', rootState)\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 '../../http'\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\r\n console.log('respRreview 2222');\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 console.log('reqRreview', seq);\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 '../../http'\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 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 for (const [key] of Object.entries(newValue.map)) {\r\n let value = newValue.map[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 => newValue.map[x]);\r\n newValue.instrumentItems = newValue.instrumentItems.map(x => newValue.map[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_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 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 };\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\"./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":""}