six-favorites-widget
Version:
SIX Favorites Widget
1 lines • 12.9 kB
JavaScript
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FavoritesImplWidget=exports.Favorites=exports.FavoritesImpl=void 0;var f=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var i in s)Object.prototype.hasOwnProperty.call(s,i)&&(e[i]=s[i])}return e},t=function(){function i(e,t){for(var s=0;s<t.length;s++){var i=t[s];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}return function(e,t,s){return t&&i(e.prototype,t),s&&i(e,s),e}}(),s=require("react"),h=p(s),e=require("prop-types"),i=p(e),r=require("six-widget-support/lib/context-provider"),a=p(r),m=require("six-widget-support"),v=require("six-widget-support/lib/sorting"),y=p(v),T=require("six-live-search-box-widget/lib/live-search-box"),n=require("six-panel"),o=p(n),l=require("./listing-row"),c=p(l),d=require("./meta-version"),u=p(d);function p(e){return e&&e.__esModule?e:{default:e}}function b(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function E(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function x(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}require("inject-style-tag").inject(".six-positive-change{color:#00A}.six-negative-change{color:#A00}","42de51730378fdd5c8a18afd1ccafdd4");var g=exports.FavoritesImpl=function(e){function g(e){b(this,g);var r=E(this,(g.__proto__||Object.getPrototypeOf(g)).call(this,e));return r.filterExisting=r.filterExisting.bind(r),r.triggerStartTime=Date.now(),r.sorter=new v.Sorter([{field:"longName",direction:"ASC"}]),r.sortFieldHandler=function(e){r.sorter.cycleSort(e,!0),r.setState({sorting:r.sorter.getSorting()})},e.session&&e.session._internal&&e.session._internal.managers&&e.session._internal.managers.alerts&&(r.toggleAlertControl=function(e){r.setState({alertControlListingId:e.id!==r.state.alertControlListingId?e.id:void 0})},r.hideAlertControl=function(){r.setState({alertControlListingId:void 0})}),r.onLiveSearchListingSelect=function(s){var i=r.props||e;i.onLiveSearchListingSelect&&i.onLiveSearchListingSelect(s),i.session._internal.managers&&i.session._internal.managers.favorites&&(r.setState({actionInProgress:!0}),i.session._internal.managers.favorites.addListing(i.favoriteId,s.id).then(function(){r.setState({actionInProgress:!1});var e=i.favorites||{},t=e&&e.listings&&e.listings[s.type]||[];t.push(s),e.listings||(e.listings={}),e.listings[s.type]=t,i.session._internal.publish("/favorites/"+i.session._internal.managers.favorites.userId+"/"+i.favoriteId+"?fields=url,listings,quotes",e,null)}).catch(function(e){console.warn(e,"Failed to add favorite",i.favoriteId,s.id),r.setState({actionInProgress:!1})}))},r.handleTriggers(e.triggers),r.state={sorting:r.sorter.getSorting(),favoriteId:e.favoriteId,actionInProgress:!1},r}return x(g,s.Component),t(g,null,[{key:"addToMap",value:function(e,t,s,i){var r=e;return r[t]||(r[t]={listings:[],sort:s}),r[t].listings.push(i),r}},{key:"createSubGroupMapper",value:function(r,e){if(e&&0<e.length){var a={};return e.forEach(function(i){if(0<r.subType.length&&r.subType)for(var e=function(e){var s=r.subType[e];Object.keys(s).forEach(function(e){var t=s[e].sort;i.subType===e?g.addToMap(a,e,t,i):g.addToMap(a,i.type,r.sort,i)})},t=0;t<r.subType.length;t+=1)e(t);else g.addToMap(a,i.type,r.sort,i)}),a}return null}}]),t(g,[{key:"componentWillReceiveProps",value:function(e){this.handleTriggers(e.triggers)}},{key:"isMatchedTrigger",value:function(e){return!!(this.latestTriggered[e]&&this.latestTriggered[e]>this.triggerStartTime&&(!this.latestActive[e]||this.latestActive[e]<this.latestTriggered[e]))}},{key:"isActiveTrigger",value:function(e){return!!this.latestActive[e]}},{key:"handleTriggers",value:function(e){if(this.latestTriggered={},this.latestActive={},e&&e.items&&0<e.items.length)for(var t=e&&e.items&&e.items.length||0,s=0;s<t;s+=1){var i=e.items[s],r=i.condition&&i.condition.listing,a=i.triggeredTime?new Date(i.triggeredTime).getTime():0,n=new Date(i.creationTime).getTime();r&&a&&(!this.latestTriggered[r.id]||this.latestTriggered[r.id]<a)&&(this.latestTriggered[r.id]=a),r&&!a&&(!this.latestActive[r.id]||this.latestActive[r.id]<n)&&(this.latestActive[r.id]=n)}}},{key:"mapListings",value:function(e,t){for(var s=[],i=0;i<e.length;i++){var r=e[i];r&&(s.push(h.default.createElement(c.default,{key:r.id,session:this.props.session,userId:this.props.session._internal.managers&&this.props.session._internal.managers.favorites&&this.props.session._internal.managers.favorites.userId,favoriteId:this.props.favoriteId,listing:r,onBuyButtonClick:this.props.onBuyButtonClick,onSellButtonClick:this.props.onSellButtonClick,onListingClick:this.props.onListingClick,analysis:this.props.analysis,onAlertClick:this.toggleAlertControl,isActiveTrigger:this.isActiveTrigger(r.id),isTriggered:this.isMatchedTrigger(r.id)})),this.state.alertControlListingId&&this.state.alertControlListingId===r.id&&s.push(h.default.createElement("tr",{key:r.id+"-alert-control-row"},h.default.createElement("td",{colSpan:t},h.default.createElement("div",{className:"six-alert-control-wrapper"},h.default.createElement(o.default,{className:"six-alert-control-panel",onCloseClick:this.hideAlertControl},this.props.session._internal.managers&&this.props.session._internal.managers.alerts&&this.props.session._internal.managers.alerts.getAlertControlWidget&&this.props.session._internal.managers.alerts.getAlertControlWidget({session:this.props.session,listingId:r.id,onSave:this.hideAlertControl,context:this.props.context})||h.default.createElement("span",null)))))))}return s}},{key:"filterExisting",value:function(e){var t=this.props&&this.props.favorites&&this.props.favorites.listings;if(t)for(var s in t)if(Object.prototype.hasOwnProperty.call(t,s))for(var i=0;i<t[s].length;i+=1)if(t[s][i].id===e.id)return null;return e}},{key:"render",value:function(){var r=this,a=function(e){return r.props.context.translator.translate(e)},n=this.props.onBuyButtonClick||this.props.onSellButtonClick,e=null,o=12;n&&(o+=1,e=h.default.createElement("th",{className:"six-buttons-column"}," ")),this.props.analysis&&(o+=1);var t=[],s=this.props.displayMode&&this.props.displayMode.element.current,i="";if(this.state&&this.state.actionInProgress&&(i="six-action-in-progress"),this.props&&this.props.favorites&&this.props.favorites.listings){var l=this.props.favorites,c=[],d=[];Object.keys(g.typeSubTypeMap).forEach(function(e){var t=g.typeSubTypeMap[e],s=g.createSubGroupMapper(t,function(e){if(e){var t=[].concat(e);return(0,y.default)(r.state.sorting,t,r.props.context.locale),t}return[]}(g.getListing(e,l.listings)));null!==s&&Object.keys(s).forEach(function(e){var t={};t[e]=s[e],d.push(t)})}),d.sort(function(e,t){var s=Object.keys(e)[0],i=Object.keys(t)[0];return e[s].sort-t[i].sort});var u={};d.forEach(function(e){var t=Object.keys(e)[0];u[t]=e[t].listings}),Object.keys(u).forEach(function(e){var t=e,s=u[t],i=r.mapListings(s,o);i.length&&i.unshift(h.default.createElement("tr",{key:t},h.default.createElement("th",{colSpan:n?"13":"12"},a(g.typeTitleMap[t])))),c.push(i)}),t=[].concat(c);var p=null;return this.props.analysis&&(p=h.default.createElement("th",{className:"six-analysis-column"})),h.default.createElement("div",{className:"six-widget six-favorites-widget "+i+" "+(0,m.getDisplayClass)(s)},h.default.createElement(T.LiveSearchBox,f({},this.props,{session:this.props.session,onListingSelect:this.onLiveSearchListingSelect,showMic:!0,title:this.props.searchTitle||a("Add favorite"),filter:this.filterExisting})),h.default.createElement("table",null,h.default.createElement("thead",null,h.default.createElement("tr",null,e,h.default.createElement(v.SortableTableHeader,{onClick:this.sortFieldHandler,sortFields:this.state.sorting,sortField:"longName",className:"six-name-column"},a("Name")),p,h.default.createElement(v.SortableTableHeader,{onClick:this.sortFieldHandler,sortFields:this.state.sorting,sortField:"quotes.lastPrice,quotes.lastValue,quotes.midPrice,quotes.midInterest",className:"six-last-column"},a("Last")),h.default.createElement(v.SortableTableHeader,{onClick:this.sortFieldHandler,sortFields:this.state.sorting,sortField:"quotes.changePercentDay",className:"six-change-percent-column"},"%"),h.default.createElement(v.SortableTableHeader,{onClick:this.sortFieldHandler,sortFields:this.state.sorting,sortField:"quotes.changeDay",className:"six-change-column six-display-priority-2"},"+/-"),h.default.createElement(v.SortableTableHeader,{onClick:this.sortFieldHandler,sortFields:this.state.sorting,sortField:"quotes.bidPrice",className:"six-bid-column six-display-priority-2"},a("Bid")),h.default.createElement(v.SortableTableHeader,{onClick:this.sortFieldHandler,sortFields:this.state.sorting,sortField:"quotes.askPrice",className:"six-ask-column six-display-priority-2"},a("Ask")),h.default.createElement(v.SortableTableHeader,{onClick:this.sortFieldHandler,sortFields:this.state.sorting,sortField:"quotes.lastUpdated",className:"six-last-updated-column six-display-priority-2"},a("Time")),h.default.createElement(v.SortableTableHeader,{onClick:this.sortFieldHandler,sortFields:this.state.sorting,sortField:"quotes.tradedAmount",className:"six-traded-amount-column six-display-priority-3"},a("Amount")),h.default.createElement(v.SortableTableHeader,{onClick:this.sortFieldHandler,sortFields:this.state.sorting,sortField:"quotes.tradedVolume",className:"six-traded-volume-column six-display-priority-3"},a("Volume")),h.default.createElement(v.SortableTableHeader,{onClick:this.sortFieldHandler,sortFields:this.state.sorting,sortField:"currencyCode",className:"six-currency-column six-display-priority-3"},a("Currency")),h.default.createElement(v.SortableTableHeader,{onClick:this.sortFieldHandler,sortFields:this.state.sorting,sortField:"micCode",className:"six-mic-code-column six-display-priority-3"},a("Market")),h.default.createElement("th",{className:"six-admin-column"}))),h.default.createElement("tbody",null,t)))}return h.default.createElement("div",{className:"six-widget six-favorites-widget "+i+" "+(0,m.getDisplayClass)(s)},h.default.createElement(T.LiveSearchBox,f({},this.props,{session:this.props.session,onListingSelect:this.onLiveSearchListingSelect,showMic:!0,title:this.searchTitle||a("Add favorite"),filter:this.filterExisting})),h.default.createElement("div",{className:"six-no-content"},h.default.createElement("span",{className:"six-no-content-text"},a("This list is empty"))))}}],[{key:"getListing",value:function(e,t){return t[e]}}]),g}();g.displayVersion=u.default.version,g.typeTitleMap={EQUITY:"Equities",RIGHT:"Rights",EXCHANGE_TRADED_FUND:"ETF",WARRANT:"Warrants",BOND:"Bonds",OPTION:"Options",INDEX:"Index",FOREX:"Currencies",FUTURE:"Futures",FORWARD:"Forwards",MONEYMARKET:"Money market",REFERENCE_RATE:"Reference rates",COMMODITY:"Commodities",CERTIFICATE:"Certificates",STRUCTURED_PRODUCT:"Structured products"},g.typeSubTypeMap={EQUITY:{subType:[],sort:0},RIGHT:{subType:[],sort:1},EXCHANGE_TRADED_FUND:{subType:[],sort:2},WARRANT:{subType:[{CERTIFICATE:{sort:3}}],sort:4},OPTION:{subType:[],sort:5},FORWARD:{subType:[],sort:6},FUTURE:{subType:[],sort:7},BOND:{subType:[{STRUCTURED_PRODUCT:{sort:8}}],sort:9},INDEX:{subType:[],sort:10},FOREX:{subType:[],sort:11},MONEYMARKET:{subType:[],sort:12},REFERENCE_RATE:{subType:[],sort:13},COMMODITY:{subType:[],sort:14}},g.displayName="six-favorites-widget",g.propTypes={session:i.default.object.isRequired,favoriteId:i.default.string,favorites:i.default.object,onBuyButtonClick:i.default.func,onSellButtonClick:i.default.func,onListingClick:i.default.func,displayMode:i.default.object,analysis:i.default.func,triggers:i.default.object,searchTitle:i.default.string,context:i.default.object.isRequired},g.defaultProps={favoriteId:"default",favorites:void 0,onBuyButtonClick:void 0,onSellButtonClick:void 0,onListingClick:void 0,displayMode:void 0,analysis:void 0,triggers:void 0,searchTitle:void 0};var C=exports.Favorites=(0,m.withData)(function(e){var t={};return e.session._internal.managers&&e.session._internal.managers.favorites&&(t.favorites="/favorites/"+e.session._internal.managers.favorites.userId+"/"+(e.favoriteId||"default")+"?fields=url,listings,quotes"),e.session._internal.managers&&e.session._internal.managers.alerts&&(t.triggers="/alerts/"+e.session._internal.managers.alerts.userId+"/triggers"),t})((0,m.resizeAware)(g)),F=exports.FavoritesImplWidget=function(t){return h.default.createElement(a.default.Consumer,null,function(e){return h.default.createElement(C,f({},t,{context:e}))})};exports.default=(0,m.widget)(F);