@expofp/floorplan
Version:
Interactive floor plan library for expos and events
2 lines (1 loc) • 1.73 kB
JavaScript
import{__decorate as f}from"tslib";import C from"color";import{computed as p}from"mobx";import y from"../tools/settings";import{getColorFromGradient as k}from"../utils/color-gradient";import{BoothBase as g}from"./BoothStore";import{Category as x}from"./CategoryStore";import{EventItem as d}from"./EventStore";import{Exhibitor as l}from"./ExhibitorStore";export default class m{constructor(){this.heatmapData={},this.forceTrack=null}get minAndMaxClicks(){const{booths:t=[],exhibitors:i=[],yah:o=[]}=this.heatmapData,e=[...t,...i,...o];if(e.length===0)return{min:0,max:0};const s=h=>h.reduce((r,n)=>(n.viewCount>r.max&&(r.max=n.viewCount),n.viewCount<r.min&&(r.min=n.viewCount),r),{min:h[0].viewCount,max:h[0].viewCount}),{min:a,max:u}=s(e);return{min:a,max:u}}getClicksByType(t){return t instanceof x?-1:t instanceof l?this.getClicksByItem(t):t instanceof HeatmapYah?this.getClicksByItem(t):t instanceof d?0:this.getClicksByItem(t)}getClicksByItem(t){return t instanceof l?this.heatmapData?.exhibitors?.find(i=>i.id===t.id)?.viewCount||0:t instanceof g?this.heatmapData?.booths?.find(i=>i.id===t.id)?.viewCount||0:t instanceof HeatmapYah&&this.heatmapData?.yah?.find(i=>i.id===t.id)?.viewCount||0}getTotalClicksByBooth(t){let i=this.getClicksByItem(t);for(const o of t.exhibitors){const e=this.getClicksByItem(o);i+=e}return i}getColorByClicks(t){const{min:i,max:o}=this.minAndMaxClicks;return k(t,i,o,y.heatmapColors)}getHeatmapColorForBooth(t){const i=this.getTotalClicksByBooth(t);return C(this.getColorByClicks(i))}}f([p({keepAlive:!0})],m.prototype,"minAndMaxClicks",null);export class HeatmapYah{constructor(t,i,o,e,s,a){this.id=t,this.name=i,this.viewCount=o,this.x=e,this.y=s,this.z=a,this.entity={type:"heatmap-yah"}}}