{"version":3,"sources":["helpers.js","graphql/client.js","graphql/defaultDashboard.js","graphql/queries.js","components/Header.js","App.js","serviceWorker.js","components/QueryBuilder/plus-icon.svg","components/QueryBuilder/PlusIcon.js","components/QueryBuilder/ButtonDropdown.js","components/QueryBuilder/MemberDropdown.js","components/QueryBuilder/RemoveButtonGroup.js","components/QueryBuilder/MemberGroupTitle.js","components/QueryBuilder/MemberGroup.js","components/QueryBuilder/FilterInput.js","components/QueryBuilder/FilterGroup.js","components/QueryBuilder/OrderGroup.js","components/QueryBuilder/DateRangeMenu.js","components/QueryBuilder/TimeGroup.js","components/QueryBuilder/SelectChartType.js","components/ChartRenderer.js","components/QueryBuilder/stateChangeHeuristics.js","components/QueryBuilder/ExploreQueryBuilder.js","graphql/mutations.js","components/TitleModal.js","components/PageHeader.js","components/ExploreTitle.js","pages/ExplorePage.js","components/Dashboard.js","components/DashboardItem.js","components/QueryBuilder/BusinessesMenu.js","pages/DashboardPage.js","index.js","components/logo.png","components/QueryBuilder/remove-button.svg","components/drag-background.svg"],"names":["ApiUrl","concat","window","location","hostname","cache","InMemoryCache","defaultDashboardItems","dashboardName","vizState","name","id","layout","API_URL","getDashboardItems","_ref","Object","asyncToGenerator","regenerator_default","a","mark","_callee","response","data","wrap","_context","prev","next","fetch","headers","X-Requested-With","sent","status","pathname","abrupt","json","Error","Message","dashboards","JSON","parse","stop","apply","this","arguments","setDashboardItems","_ref2","_callee2","items","_context2","method","Content-Type","body","stringify","_x","toApolloItem","i","_objectSpread","__typename","schema","makeExecutableSchema","typeDefs","resolvers","Query","dashboardItems","_dashboardItems","_callee3","_context3","map","dashboardItem","_dashboardItem","_callee4","_","_ref3","_context4","find","toString","_x2","_x3","Mutation","createDashboardItem","_createDashboardItem","_callee5","_ref4","item","_context5","esm_extends","input","replace","c","r","Math","random","push","_x4","_x5","updateDashboardItem","_updateDashboardItem","_callee6","_ref5","index","_context6","keys","filter","k","defineProperty","reduce","b","findIndex","_x6","_x7","deleteDashboardItem","_deleteDashboardItem","_callee7","_ref7","_dashboardItems$splic","_dashboardItems$splic2","removedItem","_context7","splice","slicedToArray","_x8","_x9","client","ApolloClient","link","SchemaLink","GET_DASHBOARD_ITEMS","gql","_templateObject","GET_DASHBOARD_ITEM","_templateObject2","apiTokenPromise","StyledHeader","styled","Layout","Header","Header_templateObject","StyledMenu","Menu","Header_templateObject2","MenuItemStyled","Item","_templateObject3","Logo","div","_templateObject4","_templateObject5","_useQuery","useQuery","loading","error","group","indexOf","react_default","createElement","es_alert","style","margin","type","message","height","src","logo","alt","mode","selectedKeys","key","react_router_dom","to","encodeURIComponent","cubejsApi","cubejs","then","res","jwt","apiUrl","AppLayout","children","components_Header","Content","App","withRouter","cubejs_client_react_esm","react_apollo_esm","react_common_esm","App_AppLayout","Boolean","match","_extends","assign","target","length","source","prototype","hasOwnProperty","call","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","plus_icon_ref2","width","rx","fill","plus_icon_ref3","x","y","plus_icon_ref4","transform","plus_icon_SvgPlusIcon","svgRef","props","viewBox","ref","ForwardRef","forwardRef","__webpack_require__","p","PlusIconStyled","Icon","PlusIcon_templateObject","PlusIcon","component","PlusIconSvg","StyledButton","Button","ButtonDropdown_templateObject","SelectedFilterButton","ButtonDropdown_templateObject2","NewButton","ButtonDropdown_templateObject3","TimeGroupButton","ButtonDropdown_templateObject4","PlusIconButton","span","ButtonDropdown_templateObject5","ButtonDropdown","overlay","buttonProps","objectWithoutProperties","QueryBuilder_PlusIcon","dropdown","placement","trigger","Search","Input","sortByTitle","sortBy","prop","menuStyle","maxHeight","overflow","MemberMenu","onClick","availableMembers","_useState","useState","_useState2","setFilter","title","toLowerCase","Fragment","focus","value","onChange","e","placeholder","es_menu","m","disabled","MemberDropdown","QueryBuilder_ButtonDropdown","MemberDropdown_MemberMenu","RemoveButtonGroup_templateObject","removeButtonSvg","RemoveButtonGroup","onRemoveClick","display","es_button","Group","marginRight","RemoveButtonGroup_StyledButton","LabelStyled","MemberGroupTitle_templateObject","MemberGroupTitle","MemberGroup","members","addMemberName","updateMethods","QueryBuilder_MemberGroupTitle","QueryBuilder_RemoveButtonGroup","remove","QueryBuilder_MemberDropdown","updateWith","update","add","Option","Select","FilterInputs","boolean","values","es_select","string","number","propTypes","PropTypes","isRequired","defaultProps","FilterInput","member","Filter","dimension","FilterInput_objectSpread","FilterGroup","marginBottom","FilterGroup_objectSpread","operator","operators","QueryBuilder_FilterInput","OrderGroup","updateFilters","OrderGroup_objectSpread","direction","CurrentDateRanges","PastDateRanges","FutureDateRanges","DateRangeMenu","defaultValueLabel","undefined","SubMenu_default","GroupLabel","TimeGroup_templateObject","TimeGroup","TimeGroup_objectSpread","QueryBuilder_DateRangeMenu","dateRange","granularity","granularities","g","StyledDropdownTrigger","SelectChartType_templateObject","ChartTypes","icon","SelectChartType","chartType","updateChartType","menu","foundChartType","t","lacement","ExcelFile","ReactExport","ExcelSheet","ExcelColumn","longNumberFormatter","numeral","format","abs","numberFormatter","colors","xAxisFormatter","moment","isValid","date","dateFormatter","CartesianChart","resultSet","ChartComponent","chartRef","es6","top","left","chartPivot","axisLine","tickLine","tickFormatter","dataKey","minTickGap","vertical","labelFormatter","formatter","TypeToChartComponent","line","ChartRenderer_CartesianChart","LineChart","seriesNames","series","stackId","stroke","bar","handleBarClick","BarChart","hasDrillMembers","loadResponse","annotation","measures","yValues","drillMembers","cursor","event","area","AreaChart","pie","isAnimationActive","nameKey","table","_ref6","className","es_table","pagination","columns","tableColumns","ChartRenderer_objectSpread","align","render","textAlign","second","minute","hour","smartDateFormatter","href","dataIndex","dataSource","tablePivot","row","justify","col","s","statistic","valueStyle","fontSize","fontWeight","totalRow","TypeToMemoChartComponent","React","memo","SpinContainer","ChartRenderer_templateObject","TimeRange","ChartRenderer_templateObject2","Spinner","spin","size","renderChart","Component","_ref9","setChart","handleDownload","formattedTimeDimensions","query","timeDimensions","console","log","react_csv","label","filename","element","ChartRenderer_Spinner","ChartRenderer","_ref10","selectedBusinesses","chartHeight","_React$useState","_React$useState2","chart","useCallback","pngData","getPngData","FileSaver","saveAs","drillDownQuery","setDrillDownQuery","_useState3","_useState4","setTableData","filters","foundFilter","f","bids","Id","renderProps","useCubeQuery","drillDownResponse","skip","useEffect","isLoading","modal","padding","visible","onCancel","onOk","cancelButtonProps","xValues","drillDown","ex","stateChangeHeuristics","oldState","newState","defaultGranularity","sessionGranularity","oldQuery","newQuery","meta","stateChangeHeuristics_objectSpread","defaultTimeDimension","defaultTimeDimensionNameFor","dimensions","td","newChartType","ControlsRow","Row","ExploreQueryBuilder_templateObject","StyledDivider","Divider","ExploreQueryBuilder_templateObject2","HorizontalDivider","ExploreQueryBuilder_templateObject3","ChartCard","Card","ExploreQueryBuilder_templateObject4","ChartRow","ExploreQueryBuilder_templateObject5","Empty","_templateObject6","ExploreQueryBuilder","setVizState","chartExtra","orders","setOrders","updateOrder","o","old","nw","order","orderObj","getOrderObject","wrapWithQueryRenderer","availableMeasures","updateMeasures","availableDimensions","updateDimensions","segments","availableSegments","updateSegments","availableTimeDimensions","updateTimeDimensions","isQueryPresent","validatedQuery","paddingBottom","QueryBuilder_MemberGroup","QueryBuilder_TimeGroup","gutter","marginTop","QueryBuilder_FilterGroup","QueryBuilder_OrderGroup","action","_len","rest","Array","_key","QueryBuilder_SelectChartType","minHeight","components_ChartRenderer","ExploreQueryBuilder_Empty","CREATE_DASHBOARD_ITEM","mutations_templateObject","UPDATE_DASHBOARD_ITEM","mutations_templateObject2","DELETE_DASHBOARD_ITEM","mutations_templateObject3","labelCol","wrapperCol","TitleModal","history","itemId","titleModalVisible","setTitleModalVisible","setAddingToDashboard","finalVizState","setTitle","finalTitle","finalDashboardName","setDashboardName","setError","_useMutation","useMutation","refetchQueries","addDashboardItem","_useMutation3","onClose","variables","t0","finish","es_form","rules","required","StyledRow","PageHeader_templateObject","ButtonsCol","Col","PageHeader_templateObject2","PageHeader","button","noBorder","StyledLink","Link","ExploreTitle_templateObject","StyledDash","ExploreTitle_templateObject2","ExploreTitle","itemTitle","typography","Title","level","ExplorePage","addingToDashboard","URLSearchParams","search","get","_useState5","_useState6","_useState7","_useState8","_useState9","_useState10","components_TitleModal","components_PageHeader","components_ExploreTitle","QueryBuilder_ExploreQueryBuilder","ReactGridLayout","WidthProvider","RGL","DragField","Dashboard_templateObject","isDragging","dragBackground","Dashboard","setIsDragging","containerPadding","onDragStart","onDragStop","onResizeStart","onResizeStop","cols","rowHeight","onLayoutChange","newLayout","forEach","l","toUpdate","w","h","StyledCard","DashboardItem_templateObject","DashboardItemDropdown","removeDashboardItem","dashboardItemDropdownMenu","Modal","confirm","okText","okType","cancelText","DashboardItem","bordered","extra","DashboardItem_DashboardItemDropdown","BusinessesMenu","businesses","setBusinesses","setSelectedBusinesses","clear","toggle","biz","isSelected","foundBiz","newBusinesses","removeBusiness","addBusiness","result","Records","fetchBusinesses","maxWidth","Name","deserializeItem","DashboardPage_objectSpread","DashboardPage","setDateRange","description","decodedDashboardName","decodeURIComponent","params","h4","DashboardPage_templateObject","selectedDateRange","QueryBuilder_BusinessesMenu","join","components_Dashboard","data-grid","minW","minH","components_DashboardItem","ReactDOM","src_App","react_router","path","exact","document","getElementById","navigator","serviceWorker","ready","registration","unregister","module","exports"],"mappings":"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","file":"static/js/main.93be80dc.chunk.js","sourcesContent":["export const isDev = () => {\r\n return process.env.NODE_ENV === 'development';\r\n};\r\n\r\nexport const ApiUrl = () => {\r\n return isDev\r\n ? `https://${window.location.hostname}`\r\n : `https://${window.location.hostname}`;\r\n};\r\n","/* globals window */\r\nimport { ApolloClient } from 'apollo-client';\r\nimport { InMemoryCache } from 'apollo-cache-inmemory';\r\nimport { SchemaLink } from 'apollo-link-schema';\r\nimport { makeExecutableSchema } from 'graphql-tools';\r\nimport { defaultDashboards } from './defaultDashboard';\r\nimport { ApiUrl } from '../helpers';\r\nconst cache = new InMemoryCache();\r\nconst defaultDashboardItems = defaultDashboards;\r\nconst API_URL = ApiUrl();\r\n\r\nexport const getDashboardItems = async () => {\r\n const response = await fetch(`${API_URL}/api/integrations/cubejs/load`, {\r\n headers: { 'X-Requested-With': 'cubejs' },\r\n });\r\n\r\n if (response.status === 401) {\r\n window.location = `${API_URL}/login?returnUrl=${window.location.pathname}`;\r\n return [];\r\n }\r\n\r\n const data = await response.json();\r\n\r\n if (response.status === 400) {\r\n throw new Error(data.Message);\r\n }\r\n\r\n return data.dashboards ? JSON.parse(data.dashboards) : defaultDashboardItems;\r\n};\r\n\r\nexport const setDashboardItems = async (items) => {\r\n const response = await fetch(`${API_URL}/api/integrations/cubejs/save`, {\r\n method: 'post',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify({\r\n dashboards: JSON.stringify(items),\r\n }),\r\n });\r\n const data = await response.json();\r\n if (response.status === 400) {\r\n throw new Error(data.Message);\r\n }\r\n};\r\n\r\nconst nextId = () => {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = (Math.random() * 16) | 0,\r\n v = c == 'x' ? r : (r & 0x3) | 0x8;\r\n return v.toString(16);\r\n });\r\n};\r\n\r\nconst toApolloItem = (i) => ({ ...i, __typename: 'DashboardItem' });\r\n\r\nconst typeDefs = `\r\n\r\n type DashboardItem {\r\n id: String!\r\n layout: String\r\n vizState: String\r\n dashboardName: String\r\n name: String\r\n }\r\n\r\n input DashboardItemInput {\r\n layout: String\r\n vizState: String\r\n dashboardName: String\r\n name: String\r\n }\r\n\r\n type Query {\r\n dashboardItems: [DashboardItem]\r\n dashboardItem(id: String!): DashboardItem\r\n }\r\n\r\n type Mutation {\r\n createDashboardItem(input: DashboardItemInput): DashboardItem\r\n updateDashboardItem(id: String!, input: DashboardItemInput): DashboardItem\r\n deleteDashboardItem(id: String!): DashboardItem\r\n }\r\n`;\r\nconst schema = makeExecutableSchema({\r\n typeDefs,\r\n resolvers: {\r\n Query: {\r\n async dashboardItems() {\r\n const dashboardItems = await getDashboardItems();\r\n return dashboardItems.map(toApolloItem);\r\n },\r\n\r\n async dashboardItem(_, { id }) {\r\n const dashboardItems = await getDashboardItems();\r\n return toApolloItem(dashboardItems.find((i) => i.id.toString() === id));\r\n },\r\n },\r\n Mutation: {\r\n createDashboardItem: async (_, { input: { ...item } }) => {\r\n const dashboardItems = await getDashboardItems();\r\n item = { ...item, id: nextId(), layout: JSON.stringify({}) };\r\n dashboardItems.push(item);\r\n await setDashboardItems(dashboardItems);\r\n return toApolloItem(item);\r\n },\r\n updateDashboardItem: async (_, { id, input: { ...item } }) => {\r\n const dashboardItems = await getDashboardItems();\r\n item = Object.keys(item)\r\n .filter((k) => !!item[k])\r\n .map((k) => ({\r\n [k]: item[k],\r\n }))\r\n .reduce((a, b) => ({ ...a, ...b }), {});\r\n const index = dashboardItems.findIndex((i) => i.id.toString() === id);\r\n dashboardItems[index] = { ...dashboardItems[index], ...item };\r\n await setDashboardItems(dashboardItems);\r\n return toApolloItem(dashboardItems[index]);\r\n },\r\n deleteDashboardItem: async (_, { id }) => {\r\n const dashboardItems = await getDashboardItems();\r\n const index = dashboardItems.findIndex((i) => i.id.toString() === id);\r\n const [removedItem] = dashboardItems.splice(index, 1);\r\n await setDashboardItems(dashboardItems);\r\n return toApolloItem(removedItem);\r\n },\r\n },\r\n },\r\n});\r\nexport default new ApolloClient({\r\n cache,\r\n link: new SchemaLink({\r\n schema,\r\n }),\r\n});\r\n","export const defaultDashboards = [\r\n {\r\n dashboardName: \"Bookings\",\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Bookings.count\"],\"timeDimensions\":[{\"dimension\":\"Bookings.FromTime\",\"granularity\":\"month\"}],\"order\":{}},\"chartType\":\"bar\",\"orderMembers\":[{\"id\":\"Bookings.count\",\"title\":\"Booking Count\",\"order\":\"none\"},{\"id\":\"Bookings.FromTime\",\"title\":\"Booking Start Time\",\"order\":\"none\"}],\"sessionGranularity\":\"month\"}',\r\n name: \"Bookings per Month\",\r\n id: \"1\",\r\n layout: '{\"x\":0,\"y\":3,\"w\":18,\"h\":9}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CoworkerInvoices.SubTotal\",\"CoworkerInvoices.TaxAmount\"],\"timeDimensions\":[{\"dimension\":\"CoworkerInvoices.CreatedOn\",\"granularity\":\"month\",\"dateRange\":\"Last 12 months\"}],\"order\":{}},\"chartType\":\"area\",\"orderMembers\":[{\"id\":\"CoworkerInvoices.SubTotal\",\"title\":\"Invoice Sub Subtotal\",\"order\":\"none\"},{\"id\":\"CoworkerInvoices.TaxAmount\",\"title\":\"Invoice Sum Tax\",\"order\":\"none\"},{\"id\":\"CoworkerInvoices.CreatedOn\",\"title\":\"Invoice Created on\",\"order\":\"none\"}],\"sessionGranularity\":\"month\"}',\r\n dashboardName: \"Billing\",\r\n name: \"Revenue By Month\",\r\n id: \"2\",\r\n layout: '{\"x\":0,\"y\":3,\"w\":16,\"h\":10}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CoworkerInvoices.TotalAmount\"],\"timeDimensions\":[{\"dimension\":\"CoworkerInvoices.CreatedOn\",\"dateRange\":\"Last quarter\"}],\"order\":{},\"dimensions\":[\"Businesses.Name\"]},\"chartType\":\"pie\",\"orderMembers\":[{\"id\":\"CoworkerInvoices.TotalAmount\",\"title\":\"Coworker Invoices Total Amount\",\"order\":\"none\"},{\"id\":\"Businesses.Name\",\"title\":\"Businesses Location Name\",\"order\":\"none\"},{\"id\":\"CoworkerInvoices.CreatedOn\",\"title\":\"Coworker Invoices Paid on\",\"order\":\"none\"}]}',\r\n dashboardName: \"Billing\",\r\n name: \"Invoiced Amount Per Location\",\r\n id: \"5\",\r\n layout: '{\"x\":16,\"y\":3,\"w\":8,\"h\":10}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CrmOpportunities.count\"],\"timeDimensions\":[{\"dimension\":\"CrmOpportunities.CreatedOn\",\"granularity\":\"month\"}],\"order\":{},\"dimensions\":[\"CrmOpportunities.Status\"]},\"chartType\":\"bar\",\"orderMembers\":[{\"id\":\"CrmOpportunities.count\",\"title\":\"Opportunity Count\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.Status\",\"title\":\"Opportunity Status\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.CreatedOn\",\"title\":\"Opportunity Created on\",\"order\":\"none\"}],\"sessionGranularity\":\"month\"}',\r\n dashboardName: \"CRM\",\r\n name: \"Opportunity Status By Month\",\r\n id: \"6\",\r\n layout: '{\"x\":0,\"y\":3,\"w\":18,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CrmOpportunities.count\"],\"timeDimensions\":[{\"dimension\":\"CrmOpportunities.CreatedOn\"}],\"order\":{},\"dimensions\":[\"CrmOpportunities.LeadSource\"],\"filters\":[{\"dimension\":\"CrmOpportunities.count\",\"operator\":\"gt\",\"values\":[\"1\"]}]},\"chartType\":\"pie\",\"orderMembers\":[{\"id\":\"CrmOpportunities.count\",\"title\":\"Opportunity Count\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.LeadSource\",\"title\":\"Opportunity Source\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.CreatedOn\",\"title\":\"Opportunity Created on\",\"order\":\"none\"}]}',\r\n dashboardName: \"CRM\",\r\n name: \"Opportunity Source\",\r\n id: \"7\",\r\n layout: '{\"x\":18,\"y\":3,\"w\":6,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ActiveCoworkerContracts.customerCount\"],\"timeDimensions\":[{\"dimension\":\"ActiveCoworkerContracts.Month\",\"granularity\":\"month\"}],\"order\":{},\"dimensions\":[\"Businesses.Name\"]},\"chartType\":\"area\",\"orderMembers\":[{\"id\":\"ActiveCoworkerContracts.customerCount\",\"title\":\"Active Contract Customer Count\",\"order\":\"none\"},{\"id\":\"Businesses.Name\",\"title\":\"Location Name\",\"order\":\"none\"},{\"id\":\"ActiveCoworkerContracts.Month\",\"title\":\"Active Contract Month\",\"order\":\"none\"}],\"sessionGranularity\":\"month\"}',\r\n dashboardName: \"Membership\",\r\n name: \"Lifetime Contracts and Members\",\r\n id: \"9\",\r\n layout: '{\"x\":0,\"y\":3,\"w\":18,\"h\":9}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ActiveCoworkerContracts.count\"],\"timeDimensions\":[{\"dimension\":\"ActiveCoworkerContracts.Month\",\"dateRange\":\"This month\"}],\"order\":{},\"filters\":[{\"dimension\":\"ActiveCoworkerContracts.count\",\"operator\":\"gt\",\"values\":[\"1\"]}],\"dimensions\":[\"Tariffs.Name\"]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"ActiveCoworkerContracts.count\",\"title\":\"Active Contract Count\",\"order\":\"none\"},{\"id\":\"Tariffs.Name\",\"title\":\"Plan Name\",\"order\":\"none\"},{\"id\":\"ActiveCoworkerContracts.Month\",\"title\":\"Active Contract Month\",\"order\":\"none\"}],\"sessionGranularity\":null}',\r\n dashboardName: \"Membership\",\r\n name: \"Top Plans\",\r\n id: \"10\",\r\n layout: '{\"x\":0,\"y\":12,\"w\":13,\"h\":10}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Bookings.count\"],\"timeDimensions\":[{\"dimension\":\"Bookings.FromTime\",\"dateRange\":\"This month\"}],\"order\":{},\"dimensions\":[\"Businesses.Name\"]},\"chartType\":\"pie\",\"orderMembers\":[{\"id\":\"Bookings.count\",\"title\":\"Booking Count\",\"order\":\"none\"},{\"id\":\"Businesses.Name\",\"title\":\"Location Name\",\"order\":\"none\"},{\"id\":\"Bookings.FromTime\",\"title\":\"Booking Start Time\",\"order\":\"none\"}],\"sessionGranularity\":\"month\"}',\r\n dashboardName: \"Bookings\",\r\n name: \"Bookings per Location\",\r\n id: \"11\",\r\n layout: '{\"x\":18,\"y\":3,\"w\":6,\"h\":9}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Coworkers.count\"],\"timeDimensions\":[],\"order\":{},\"segments\":[],\"dimensions\":[\"Coworkers.Gender\"]},\"chartType\":\"pie\",\"orderMembers\":[{\"id\":\"Coworkers.count\",\"title\":\"Customer Count\",\"order\":\"none\"},{\"id\":\"Coworkers.Gender\",\"title\":\"Customer Gender\",\"order\":\"none\"}]}',\r\n dashboardName: \"Membership\",\r\n name: \"Gender\",\r\n id: \"ab69fc3e-7931-40f9-bdcf-b272a3c3094a\",\r\n layout: '{\"x\":18,\"y\":3,\"w\":6,\"h\":9}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Checkins.lengthHoursSum\"],\"timeDimensions\":[{\"dimension\":\"Checkins.FromTime\",\"granularity\":\"day\",\"dateRange\":\"Last 30 days\"}],\"order\":{},\"dimensions\":[\"Businesses.Name\"]},\"chartType\":\"bar\",\"orderMembers\":[{\"id\":\"Checkins.lengthHoursSum\",\"title\":\"Check-in Time (hrs.) (sum)\",\"order\":\"none\"},{\"id\":\"Businesses.Name\",\"title\":\"Location Name\",\"order\":\"none\"},{\"id\":\"Checkins.FromTime\",\"title\":\"Check-in From Time\",\"order\":\"none\"}],\"sessionGranularity\":\"day\",\"orders\":[]}',\r\n dashboardName: \"Access\",\r\n name: \"Checked In Hours\",\r\n id: \"dbbb7a6e-120d-4513-94e1-8de141471e9f\",\r\n layout: '{\"x\":0,\"y\":0,\"w\":14,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Checkins.lengthHoursSum\"],\"timeDimensions\":[{\"dimension\":\"Checkins.FromTime\",\"dateRange\":\"Last 30 days\"}],\"order\":{},\"dimensions\":[\"Coworkers.FullName\"]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"Checkins.lengthHoursSum\",\"title\":\"Check-in Time (hrs.) (sum)\",\"order\":\"none\"},{\"id\":\"Coworkers.FullName\",\"title\":\"Customer Full Name\",\"order\":\"none\"},{\"id\":\"Checkins.FromTime\",\"title\":\"Check-in From Time\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Access\",\r\n name: \"Most Frequent Customers\",\r\n id: \"6075b011-87dd-49ad-8f41-f09b0ecbc184\",\r\n layout: '{\"x\":8,\"y\":8,\"w\":9,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Checkins.lengthHoursSum\"],\"timeDimensions\":[{\"dimension\":\"Checkins.FromTime\",\"dateRange\":\"Last 30 days\"}],\"order\":{},\"dimensions\":[\"Checkins.TariffAtTheTimeOfCheckin\"]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"Checkins.lengthHoursSum\",\"title\":\"Check-in Time (hrs.) (sum)\",\"order\":\"none\"},{\"id\":\"Checkins.TariffAtTheTimeOfCheckin\",\"title\":\"Check-in Plan\",\"order\":\"none\"},{\"id\":\"Checkins.FromTime\",\"title\":\"Check-in From Time\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Access\",\r\n name: \"Most Frequent Plans\",\r\n id: \"fc9c69bc-95d1-4fd5-b252-c73480a47bec\",\r\n layout: '{\"x\":14,\"y\":0,\"w\":10,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Checkins.lengthHoursSum\"],\"timeDimensions\":[{\"dimension\":\"Checkins.FromTime\",\"dateRange\":\"Last 30 days\"}],\"order\":{},\"dimensions\":[\"Checkins.TeamsAtTheTimeOfCheckin\"],\"filters\":[{\"dimension\":\"Checkins.TeamsAtTheTimeOfCheckin\",\"operator\":\"set\"}]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"Checkins.lengthHoursSum\",\"title\":\"Check-in Time (hrs.) (sum)\",\"order\":\"none\"},{\"id\":\"Checkins.TeamsAtTheTimeOfCheckin\",\"title\":\"Check-in Team\",\"order\":\"none\"},{\"id\":\"Checkins.FromTime\",\"title\":\"Check-in From Time\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Access\",\r\n name: \"Most Frequent Teams\",\r\n id: \"632f2548-0dbd-4818-aa12-e17e3ae3bc58\",\r\n layout: '{\"x\":0,\"y\":8,\"w\":8,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Checkins.lengthHoursSum\"],\"timeDimensions\":[{\"dimension\":\"Checkins.FromTime\",\"dateRange\":\"Last 30 days\"}],\"order\":{},\"dimensions\":[\"Checkins.FromTimeDayOfWeek\"]},\"chartType\":\"pie\",\"orderMembers\":[{\"id\":\"Checkins.lengthHoursSum\",\"title\":\"Check-in Time (hrs.) (sum)\",\"order\":\"none\"},{\"id\":\"Checkins.FromTimeDayOfWeek\",\"title\":\"Check-in Day Of Week\",\"order\":\"none\"},{\"id\":\"Checkins.FromTime\",\"title\":\"Check-in From Time\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Access\",\r\n name: \"Day of the Week (hrs.)\",\r\n id: \"cd705101-d59e-41f0-a306-c95a734874a0\",\r\n layout: '{\"x\":17,\"y\":8,\"w\":7,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CrmOpportunities.count\"],\"timeDimensions\":[{\"dimension\":\"CrmOpportunities.CreatedOn\"}],\"order\":{},\"dimensions\":[\"CrmOpportunities.LossReason\"],\"segments\":[\"CrmOpportunities.Lost\"]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"CrmOpportunities.count\",\"title\":\"Opportunity Count\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.LossReason\",\"title\":\"Opportunity LossReason\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.CreatedOn\",\"title\":\"Opportunity Created on\",\"order\":\"none\"}]}',\r\n dashboardName: \"CRM\",\r\n name: \"Top Loss Reasons\",\r\n id: \"f3282fea-f395-4e39-9055-17d81d8633f5\",\r\n layout: '{\"x\":0,\"y\":11,\"w\":10,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CrmOpportunities.count\",\"CrmOpportunities.inProgressCount\",\"CrmOpportunities.lostCount\",\"CrmOpportunities.wonCount\"],\"timeDimensions\":[{\"dimension\":\"CrmOpportunities.WonOn\"}],\"order\":{},\"dimensions\":[\"Owners.FullName\"],\"filters\":[{\"dimension\":\"Owners.FullName\",\"operator\":\"set\"}]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"CrmOpportunities.count\",\"title\":\"Opportunity Count\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.inProgressCount\",\"title\":\"Opportunity In Progress Count\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.lostCount\",\"title\":\"Opportunity Lost Count\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.wonCount\",\"title\":\"Opportunity Won Count\",\"order\":\"none\"},{\"id\":\"Owners.FullName\",\"title\":\"CRM Owner Full Name\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.WonOn\",\"title\":\"Opportunity Won on\",\"order\":\"none\"}]}',\r\n dashboardName: \"CRM\",\r\n name: \"Top Sellers\",\r\n id: \"d908971b-ed3b-4b0b-bc11-5486ef8e4b95\",\r\n layout: '{\"x\":10,\"y\":11,\"w\":14,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CoworkerInvoiceLines.TotalQuantity\",\"CoworkerInvoiceLines.TotalSubTotal\"],\"timeDimensions\":[{\"dimension\":\"CoworkerInvoiceLines.SaleDate\",\"dateRange\":\"Last quarter\"}],\"order\":{},\"dimensions\":[\"CoworkerInvoiceLines.CoworkerProductName\"],\"filters\":[{\"dimension\":\"CoworkerInvoiceLines.CoworkerProductName\",\"operator\":\"set\"}]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"CoworkerInvoiceLines.TotalQuantity\",\"title\":\"Invoice Line Total Quantity\",\"order\":\"none\"},{\"id\":\"CoworkerInvoiceLines.TotalSubTotal\",\"title\":\"Invoice Line Total Sub Total\",\"order\":\"none\"},{\"id\":\"CoworkerInvoiceLines.CoworkerProductName\",\"title\":\"Invoice Line Invoiced Product Name\",\"order\":\"none\"},{\"id\":\"CoworkerInvoiceLines.SaleDate\",\"title\":\"Invoice Line Created On\",\"order\": {\"CoworkerInvoiceLines.TotalSubTotal\":\"desc\"}}]}',\r\n dashboardName: \"Billing\",\r\n name: \"Best selling Products\",\r\n id: \"b0b428a2-b9c0-4ecc-80f8-25bd7d865c66\",\r\n layout: '{\"x\":0,\"y\":13,\"w\":12,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Bookings.count\"],\"timeDimensions\":[{\"dimension\":\"Bookings.FromTime\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"Bookings.count\",\"title\":\"Booking Count\",\"order\":\"none\"},{\"id\":\"Bookings.FromTime\",\"title\":\"Booking Start Time\",\"order\":\"none\"}]}',\r\n dashboardName: \"Bookings\",\r\n name: \"Number of Bookings\",\r\n id: \"157d91b8-2b33-40cb-a981-ab4060cc9249\",\r\n layout: '{\"x\":12,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Bookings.TimeInHours\"],\"timeDimensions\":[{\"dimension\":\"Bookings.FromTime\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"Bookings.TimeInHours\",\"title\":\"Booking Time (hrs.) (sum)\",\"order\":\"none\"},{\"id\":\"Bookings.FromTime\",\"title\":\"Booking Start Time\",\"order\":\"none\"}]}',\r\n dashboardName: \"Bookings\",\r\n name: \"Hours Booked\",\r\n id: \"fa83d707-d6d6-41fb-a205-5794b74f512d\",\r\n layout: '{\"x\":6,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"BookingVisitors.count\"],\"timeDimensions\":[{\"dimension\":\"BookingVisitors.CreatedOn\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"BookingVisitors.count\",\"title\":\"Guest in Booking Count\",\"order\":\"none\"},{\"id\":\"BookingVisitors.CreatedOn\",\"title\":\"Guest in Booking Created On\",\"order\":\"none\"}]}',\r\n dashboardName: \"Bookings\",\r\n name: \"Number of Guests\",\r\n id: \"e5aaa428-4923-4a02-afc5-8285efff19cd\",\r\n layout: '{\"x\":0,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Bookings.CoworkerExtraServicePrice\"],\"timeDimensions\":[{\"dimension\":\"Bookings.FromTime\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"Bookings.CoworkerExtraServicePrice\",\"title\":\"Booking Price (sum)\",\"order\":\"none\"},{\"id\":\"Bookings.FromTime\",\"title\":\"Booking Start Time\",\"order\":\"none\"}]}',\r\n dashboardName: \"Bookings\",\r\n name: \"Booking Revenue\",\r\n id: \"399a7dbb-2b46-4f91-89dd-c39806d1b355\",\r\n layout: '{\"x\":18,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Bookings.count\"],\"timeDimensions\":[],\"order\":{\"Bookings.StartHour\":\"asc\"},\"dimensions\":[\"Bookings.StartHour\"],\"filters\":[]},\"chartType\":\"bar\",\"orderMembers\":[{\"id\":\"Bookings.count\",\"title\":\"Booking Count\",\"order\":\"none\"},{\"id\":\"Bookings.StartHour\",\"title\":\"Booking Hour\",\"order\":\"desc\"}],\"orders\":[{\"dimension\":{\"name\":\"Bookings.StartHour\",\"title\":\"Booking Hour\",\"type\":\"number\",\"shortTitle\":\"Hour\",\"suggestFilterValues\":true},\"direction\":\"asc\"}]}',\r\n dashboardName: \"Bookings\",\r\n name: \"Bookings by Hour\",\r\n id: \"aa6e56b4-ede5-4f60-9b94-dbf08ed7eb66\",\r\n layout: '{\"x\":0,\"y\":12,\"w\":12,\"h\":9}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Bookings.count\"],\"timeDimensions\":[{\"dimension\":\"Bookings.CreatedOn\",\"granularity\":\"day\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"bar\",\"orderMembers\":[{\"id\":\"Bookings.count\",\"title\":\"Booking Count\",\"order\":\"none\"},{\"id\":\"Bookings.CreatedOn\",\"title\":\"Booking Created On\",\"order\":\"none\"}]}',\r\n dashboardName: \"Bookings\",\r\n name: \"Bookings Requested By Day\",\r\n id: \"804c5d40-14f8-4ad2-89c2-763a062b4273\",\r\n layout: '{\"x\":12,\"y\":9,\"w\":12,\"h\":9}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Bookings.TimeInHours\"],\"timeDimensions\":[{\"dimension\":\"Bookings.FromTime\",\"dateRange\":\"This month\"}],\"order\":{},\"dimensions\":[\"Resources.Name\"]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"Bookings.TimeInHours\",\"title\":\"Booking Time (hrs.) (sum)\",\"order\":\"none\"},{\"id\":\"Resources.Name\",\"title\":\"Bookable Resource Name\",\"order\":\"none\"},{\"id\":\"Bookings.FromTime\",\"title\":\"Booking Start Time\",\"order\":\"none\"}]}',\r\n dashboardName: \"Bookings\",\r\n name: \"Most Booked Resources\",\r\n id: \"1c3b0e48-dde9-4ade-b79f-fef0fb3cd4e5\",\r\n layout: '{\"x\":0,\"y\":21,\"w\":12,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Bookings.TimeInHours\"],\"timeDimensions\":[{\"dimension\":\"Bookings.FromTime\",\"dateRange\":\"This month\"}],\"order\":{},\"dimensions\":[\"Coworkers.FullName\",\"Coworkers.TeamNames\"]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"Bookings.TimeInHours\",\"title\":\"Booking Time (hrs.) (sum)\",\"order\":\"none\"},{\"id\":\"Coworkers.FullName\",\"title\":\"Customer Full Name\",\"order\":\"none\"},{\"id\":\"Coworkers.TeamNames\",\"title\":\"Customer Team Names\",\"order\":\"none\"},{\"id\":\"Bookings.FromTime\",\"title\":\"Booking Start Time\",\"order\":\"none\"}]}',\r\n dashboardName: \"Bookings\",\r\n name: \"Top Booking Customers\",\r\n id: \"83ddff8d-3bf3-4bec-9933-fa95f5f29501\",\r\n layout: '{\"x\":12,\"y\":21,\"w\":12,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CoworkerInvoices.TotalAmount\"],\"timeDimensions\":[{\"dimension\":\"CoworkerInvoices.CreatedOn\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CoworkerInvoices.TotalAmount\",\"title\":\"Invoice Sum Total\",\"order\":\"none\"},{\"id\":\"CoworkerInvoices.CreatedOn\",\"title\":\"Invoice Created on\",\"order\":\"none\"}]}',\r\n dashboardName: \"Billing\",\r\n name: \"Invoiced Amount\",\r\n id: \"93c01240-4f00-4dbc-8744-946bb34c8f89\",\r\n layout: '{\"x\":0,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CoworkerLedgerEntries.CreditSum\"],\"timeDimensions\":[{\"dimension\":\"CoworkerLedgerEntries.TransactionDate\",\"dateRange\":\"Last 30 days\"}],\"order\":{},\"filters\":[{\"dimension\":\"CoworkerLedgerEntries.CreditSum\",\"operator\":\"gt\",\"values\":[\"0\"]},{\"dimension\":\"CoworkerLedgerEntries.PaymentGatewayName\",\"operator\":\"notContains\",\"values\":[\"Credit\",\"BadDebt\",\"Gift\"]}]},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CoworkerLedgerEntries.CreditSum\",\"title\":\"Transaction Credit (sum)\",\"order\":\"none\"},{\"id\":\"CoworkerLedgerEntries.TransactionDate\",\"title\":\"Transaction Transaction Date\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Billing\",\r\n name: \"Paid Amount\",\r\n id: \"99998428-ccae-4cf7-bf88-d740014fa91a\",\r\n layout: '{\"x\":6,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CoworkerInvoices.TaxAmount\"],\"timeDimensions\":[{\"dimension\":\"CoworkerInvoices.CreatedOn\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CoworkerInvoices.TaxAmount\",\"title\":\"Invoice Sum Tax\",\"order\":\"none\"},{\"id\":\"CoworkerInvoices.CreatedOn\",\"title\":\"Invoice Created on\",\"order\":\"none\"}]}',\r\n dashboardName: \"Billing\",\r\n name: \"Tax Collected\",\r\n id: \"3f595a64-29ac-432c-9d64-d43c8954857b\",\r\n layout: '{\"x\":18,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CoworkerLedgerEntries.CreditSum\"],\"timeDimensions\":[{\"dimension\":\"CoworkerLedgerEntries.TransactionDate\",\"dateRange\":\"Last 30 days\"}],\"order\":{},\"filters\":[{\"dimension\":\"CoworkerLedgerEntries.Credit\",\"operator\":\"lt\",\"values\":[\"0\"]},{\"dimension\":\"CoworkerLedgerEntries.PaymentGatewayName\",\"operator\":\"notEquals\",\"values\":[\"Credit\",\"BadDebt\",\"Gift\"]}]},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CoworkerLedgerEntries.CreditSum\",\"title\":\"Transaction Credit (sum)\",\"order\":\"none\"},{\"id\":\"CoworkerLedgerEntries.TransactionDate\",\"title\":\"Transaction Transaction Date\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Billing\",\r\n name: \"Refunds\",\r\n id: \"e38493af-ca8d-4227-bc82-96f275c1b4fb\",\r\n layout: '{\"x\":12,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CoworkerLedgerEntries.CreditSum\"],\"timeDimensions\":[{\"dimension\":\"CoworkerLedgerEntries.TransactionDate\",\"dateRange\":\"This month\"}],\"order\":{},\"dimensions\":[\"Coworkers.FullName\"]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"CoworkerLedgerEntries.CreditSum\",\"title\":\"Transaction Credit (sum)\",\"order\":\"none\"},{\"id\":\"Coworkers.FullName\",\"title\":\"Customer Full Name\",\"order\":\"none\"},{\"id\":\"CoworkerLedgerEntries.TransactionDate\",\"title\":\"Transaction Transaction Date\",\"order\":\"none\"}]}',\r\n dashboardName: \"Billing\",\r\n name: \"Top Customers\",\r\n id: \"6d47c460-3ce8-4e54-aeb3-ccc680ce6ed5\",\r\n layout: '{\"x\":12,\"y\":13,\"w\":12,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CrmOpportunities.count\"],\"timeDimensions\":[],\"order\":{},\"segments\":[\"CrmOpportunities.InProgress\"]},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CrmOpportunities.count\",\"title\":\"Opportunity Count\",\"order\":\"none\"}]}',\r\n dashboardName: \"CRM\",\r\n name: \"Opportunities in Progress\",\r\n id: \"3cc91616-8903-495f-bf72-e435e976a678\",\r\n layout: '{\"x\":0,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CrmOpportunities.count\"],\"timeDimensions\":[{\"dimension\":\"CrmOpportunities.LostOn\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CrmOpportunities.count\",\"title\":\"Opportunity Count\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.LostOn\",\"title\":\"Opportunity Lost on\",\"order\":\"none\"}]}',\r\n dashboardName: \"CRM\",\r\n name: \"Lost Opportunities\",\r\n id: \"2b2e1d76-f980-463b-b196-fda6ee6cc0d9\",\r\n layout: '{\"x\":6,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CrmOpportunities.count\"],\"timeDimensions\":[{\"dimension\":\"CrmOpportunities.WonOn\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CrmOpportunities.count\",\"title\":\"Opportunity Count\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.WonOn\",\"title\":\"Opportunity Won on\",\"order\":\"none\"}]}',\r\n dashboardName: \"CRM\",\r\n name: \"Won Opportunities\",\r\n id: \"833f44ce-4cc3-4a6d-81b8-3ac38dbfea3c\",\r\n layout: '{\"x\":12,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CrmOpportunities.AverageValue\"],\"timeDimensions\":[{\"dimension\":\"CrmOpportunities.CreatedOn\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CrmOpportunities.AverageValue\",\"title\":\"Opportunity Average Value\",\"order\":\"none\"},{\"id\":\"CrmOpportunities.CreatedOn\",\"title\":\"Opportunity Created on\",\"order\":\"none\"}]}',\r\n dashboardName: \"CRM\",\r\n name: \"Opportunity Average Value\",\r\n id: \"be7a2a62-b44b-4fc0-a35b-a7aabc1bb895\",\r\n layout: '{\"x\":18,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Coworkers.count\"],\"timeDimensions\":[],\"order\":{},\"filters\":[{\"dimension\":\"Coworkers.CoworkerContractTariffNames\",\"operator\":\"set\"}]},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"Coworkers.count\",\"title\":\"Customer Count\",\"order\":\"none\"}]}',\r\n dashboardName: \"Membership\",\r\n name: \"Current Members\",\r\n id: \"c33692d9-1b39-43b1-a036-9d3af9dcc1d8\",\r\n layout: '{\"x\":6,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CoworkerContracts.TimeInDaysAvg\"],\"timeDimensions\":[],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CoworkerContracts.TimeInDaysAvg\",\"title\":\"Contract Time (days) (avg)\",\"order\":\"none\"}]}',\r\n dashboardName: \"Membership\",\r\n name: \"Avg. Contract Days\",\r\n id: \"acd9d105-4ab3-47b8-845e-7ccbda3e8737\",\r\n layout: '{\"x\":12,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ActiveCoworkerContracts.PriceAvg\"],\"timeDimensions\":[],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"ActiveCoworkerContracts.PriceAvg\",\"title\":\"Active Contract Price (avg)\",\"order\":\"none\"}]}',\r\n dashboardName: \"Membership\",\r\n name: \"Avg Contract Price\",\r\n id: \"653d3cb0-40cc-475f-823e-2d0d09aaff7a\",\r\n layout: '{\"x\":0,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CoworkerContracts.count\"],\"timeDimensions\":[{\"dimension\":\"CoworkerContracts.StartDate\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CoworkerContracts.count\",\"title\":\"Contract Count\",\"order\":\"none\"},{\"id\":\"CoworkerContracts.StartDate\",\"title\":\"Contract Start Date\",\"order\":\"none\"}]}',\r\n dashboardName: \"Membership\",\r\n name: \"Contracts Starting\",\r\n id: \"4a334448-4be2-472d-b392-fca3b6451b7e\",\r\n layout: '{\"x\":18,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CoworkerContracts.count\"],\"timeDimensions\":[{\"dimension\":\"CoworkerContracts.CancellationDate\",\"dateRange\":\"This month\"}],\"order\":{},\"dimensions\":[\"CoworkerContracts.CancellationReason\"]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"CoworkerContracts.count\",\"title\":\"Contract Count\",\"order\":\"none\"},{\"id\":\"CoworkerContracts.CancellationReason\",\"title\":\"Contract Cancellation Reason\",\"order\":\"none\"},{\"id\":\"CoworkerContracts.CancellationDate\",\"title\":\"Contract Cancellation Date\",\"order\":\"none\"}]}',\r\n dashboardName: \"Membership\",\r\n name: \"Top Cancellation Reasons\",\r\n id: \"5f542f6c-25ef-4d75-aa78-10811000a7fb\",\r\n layout: '{\"x\":13,\"y\":12,\"w\":11,\"h\":10}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ContractChanges.ChurnValue\"],\"timeDimensions\":[{\"dimension\":\"ContractChanges.ChangeDate\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"ContractChanges.ChurnValue\",\"title\":\"Contract Change Churn Value\",\"order\":\"none\"},{\"id\":\"ContractChanges.ChangeDate\",\"title\":\"Contract Change Change Date\",\"order\":\"none\"}],\"orders\":[],\"sessionGranularity\":\"month\"}',\r\n dashboardName: \"Churn\",\r\n name: \"Churn ($ daily value)\",\r\n id: \"7a052c57-c340-429e-aea4-959197ce55cd\",\r\n layout: '{\"x\":0,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ContractChanges.ChurnQuantity\"],\"timeDimensions\":[{\"dimension\":\"ContractChanges.ChangeDate\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"ContractChanges.ChurnQuantity\",\"title\":\"Contract Change Churn Quantity\",\"order\":\"none\"},{\"id\":\"ContractChanges.ChangeDate\",\"title\":\"Contract Change Change Date\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Churn\",\r\n name: \"Current Churn (%)\",\r\n id: \"2baf9103-78af-49b1-8e45-88ad727689af\",\r\n layout: '{\"x\":6,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ContractChanges.CancelledContracts\"],\"timeDimensions\":[{\"dimension\":\"ContractChanges.ChangeDate\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"ContractChanges.CancelledContracts\",\"title\":\"Contract Change Cancelled Contracts\",\"order\":\"none\"},{\"id\":\"ContractChanges.ChangeDate\",\"title\":\"Contract Change Change Date\",\"order\":\"none\"}],\"orders\":[],\"sessionGranularity\":\"day\"}',\r\n dashboardName: \"Churn\",\r\n name: \"Cancellations\",\r\n id: \"52e655f6-2630-4443-bce2-fed41e6e5217\",\r\n layout: '{\"x\":12,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ContractChanges.CancelledContractsPrice\"],\"timeDimensions\":[{\"dimension\":\"ContractChanges.ChangeDate\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"ContractChanges.CancelledContractsPrice\",\"title\":\"Contract Change Cancelled Contracts Price\",\"order\":\"none\"},{\"id\":\"ContractChanges.ChangeDate\",\"title\":\"Contract Change Change Date\",\"order\":\"none\"}],\"orders\":[],\"sessionGranularity\":\"hour\"}',\r\n dashboardName: \"Churn\",\r\n name: \"Cancelled $ Value\",\r\n id: \"94ef4875-1c85-49f8-a69e-1bac400550ae\",\r\n layout: '{\"x\":18,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ContractChanges.NewContractsPrice\",\"ContractChanges.CancelledValueNeg\"],\"timeDimensions\":[{\"dimension\":\"ContractChanges.ChangeDate\",\"granularity\":\"month\",\"dateRange\":\"This year\"}],\"order\":{}},\"chartType\":\"line\",\"orderMembers\":[{\"id\":\"ContractChanges.NewContractsPrice\",\"title\":\"Contract Change New Contracts Price\",\"order\":\"none\"},{\"id\":\"ContractChanges.CancelledValueNeg\",\"title\":\"Contract Change Cancelled Contracts Price this Month (neg)\",\"order\":\"none\"},{\"id\":\"ContractChanges.ChangeDate\",\"title\":\"Contract Change Change Date\",\"order\":\"none\"}],\"orders\":[],\"sessionGranularity\":\"month\"}',\r\n dashboardName: \"Churn\",\r\n name: \"New vs. Cancelled $ Amount\",\r\n id: \"870f36cb-075b-434c-9945-2fdf5ca1546e\",\r\n layout: '{\"x\":0,\"y\":11,\"w\":12,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ContractChanges.CancelledQuantity\"],\"timeDimensions\":[{\"dimension\":\"ContractChanges.ChangeDate\"}],\"order\":{},\"dimensions\":[\"OldPlans.Name\"],\"filters\":[{\"dimension\":\"OldPlans.Name\",\"operator\":\"set\"}]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"ContractChanges.CancelledQuantity\",\"title\":\"Contract Change Cancelled Contracts this Month\",\"order\":\"none\"},{\"id\":\"OldPlans.Name\",\"title\":\"Plan Cancelled Plan Name\",\"order\":\"none\"},{\"id\":\"ContractChanges.ChangeDate\",\"title\":\"Contract Change Change Date\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Churn\",\r\n name: \"Top Cancelling Plans\",\r\n id: \"db133c0a-8855-4bf4-87bd-37e830d2518b\",\r\n layout: '{\"x\":12,\"y\":11,\"w\":12,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"HelpDeskMessages.count\"],\"timeDimensions\":[],\"order\":{},\"filters\":[{\"dimension\":\"HelpDeskMessages.Closed\",\"operator\":\"equals\",\"values\":[\"0\"]}]},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"HelpDeskMessages.count\",\"title\":\"Help-Desk Message Count\",\"order\":\"none\"}],\"sessionGranularity\":null}',\r\n dashboardName: \"Help-desk\",\r\n name: \"Current Unsolved Tickets\",\r\n id: \"6fbf9fe9-d76b-417a-9c8a-2543d0af5e1e\",\r\n layout: '{\"x\":0,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"HelpDeskMessages.count\"],\"timeDimensions\":[{\"dimension\":\"HelpDeskMessages.CreatedOn\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"HelpDeskMessages.count\",\"title\":\"Help-Desk Message Count\",\"order\":\"none\"},{\"id\":\"HelpDeskMessages.CreatedOn\",\"title\":\"Help-Desk Message Created On\",\"order\":\"none\"}]}',\r\n dashboardName: \"Help-desk\",\r\n name: \"Created Tickets\",\r\n id: \"cdaff66a-fb72-4ddf-8002-286c66d2e8b9\",\r\n layout: '{\"x\":6,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"HelpDeskMessages.count\"],\"timeDimensions\":[{\"dimension\":\"HelpDeskMessages.ClosedOn\",\"dateRange\":\"This month\"}],\"order\":{},\"filters\":[{\"dimension\":\"HelpDeskMessages.Closed\",\"operator\":\"equals\",\"values\":[\"1\"]}]},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"HelpDeskMessages.count\",\"title\":\"Help-Desk Message Count\",\"order\":\"none\"},{\"id\":\"HelpDeskMessages.ClosedOn\",\"title\":\"Help-Desk Message Closed on\",\"order\":\"none\"}]}',\r\n dashboardName: \"Help-desk\",\r\n name: \"Solved Tickets\",\r\n id: \"1e810801-7904-48aa-aa08-d5bd9266f60e\",\r\n layout: '{\"x\":12,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"HelpDeskMessages.TimeToCloseHoursAvg\"],\"timeDimensions\":[{\"dimension\":\"HelpDeskMessages.ClosedOn\",\"dateRange\":\"Last 30 days\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"HelpDeskMessages.TimeToCloseHoursAvg\",\"title\":\"Help-Desk Message Time To Close (hours) (avg)\",\"order\":\"none\"},{\"id\":\"HelpDeskMessages.ClosedOn\",\"title\":\"Help-Desk Message Closed on\",\"order\":\"none\"}]}',\r\n dashboardName: \"Help-desk\",\r\n name: \"Avg Hours to Close\",\r\n id: \"f274caf9-0027-4d5a-956d-c01f57de992a\",\r\n layout: '{\"x\":0,\"y\":12,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"HelpDeskMessages.count\"],\"timeDimensions\":[{\"dimension\":\"HelpDeskMessages.ClosedOn\",\"dateRange\":\"This month\"}],\"order\":{},\"filters\":[{\"dimension\":\"HelpDeskMessages.responses\",\"operator\":\"equals\",\"values\":[\"1\"]},{\"dimension\":\"HelpDeskMessages.Closed\",\"operator\":\"equals\",\"values\":[\"1\"]}]},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"HelpDeskMessages.count\",\"title\":\"Help-Desk Message Count\",\"order\":\"none\"},{\"id\":\"HelpDeskMessages.ClosedOn\",\"title\":\"Help-Desk Message Closed on\",\"order\":\"none\"}]}',\r\n dashboardName: \"Help-desk\",\r\n name: \"One touch tickets\",\r\n id: \"162f1eef-63ce-48dd-9498-1f93ec62b29c\",\r\n layout: '{\"x\":18,\"y\":0,\"w\":6,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"HelpDeskMessages.solvedCount\",\"HelpDeskMessages.unsolvedCount\"],\"timeDimensions\":[{\"dimension\":\"HelpDeskMessages.CreatedOn\",\"granularity\":\"day\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"area\",\"orderMembers\":[{\"id\":\"HelpDeskMessages.solvedCount\",\"title\":\"Help-Desk Message Solved Count\",\"order\":\"none\"},{\"id\":\"HelpDeskMessages.unsolvedCount\",\"title\":\"Help-Desk Message Unsolved Count\",\"order\":\"none\"},{\"id\":\"HelpDeskMessages.CreatedOn\",\"title\":\"Help-Desk Message Created On\",\"order\":\"none\"}]}',\r\n dashboardName: \"Help-desk\",\r\n name: \"Tickets Created and Solved by Day\",\r\n id: \"88511267-3db9-4e25-aedb-65f6d04654f0\",\r\n layout: '{\"x\":6,\"y\":3,\"w\":12,\"h\":9}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"HelpDeskMessages.count\"],\"timeDimensions\":[{\"dimension\":\"HelpDeskMessages.CreatedOn\"}],\"order\":{},\"filters\":[],\"dimensions\":[\"HelpDeskDepartments.Name\"]},\"chartType\":\"pie\",\"orderMembers\":[{\"id\":\"HelpDeskMessages.count\",\"title\":\"Help-Desk Message Count\",\"order\":\"none\"},{\"id\":\"HelpDeskDepartments.Name\",\"title\":\"Help-Desk Department Name\",\"order\":\"none\"},{\"id\":\"HelpDeskMessages.CreatedOn\",\"title\":\"Help-Desk Message Created On\",\"order\":\"none\"}],\"sessionGranularity\":null}',\r\n dashboardName: \"Help-desk\",\r\n name: \"Tickets by Department\",\r\n id: \"0c885fb3-5953-4284-aaa0-7444e75ffd99\",\r\n layout: '{\"x\":18,\"y\":3,\"w\":6,\"h\":9}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"HelpDeskMessages.count\"],\"timeDimensions\":[{\"dimension\":\"HelpDeskMessages.CreatedOn\"}],\"order\":{\"HelpDeskMessages.CreatedOnDayOfWeek\":\"asc\"},\"dimensions\":[\"HelpDeskMessages.CreatedOnDayOfWeek\"],\"filters\":[]},\"chartType\":\"bar\",\"orderMembers\":[{\"id\":\"HelpDeskMessages.count\",\"title\":\"Help-Desk Message Count\",\"order\":\"none\"},{\"id\":\"HelpDeskMessages.CreatedOnDayOfWeek\",\"title\":\"Help-Desk Message Day of Week\",\"order\":\"desc\"},{\"id\":\"HelpDeskMessages.CreatedOn\",\"title\":\"Help-Desk Message Created On\",\"order\":\"none\"}],\"orders\":[{\"dimension\":{\"name\":\"HelpDeskMessages.CreatedOnDayOfWeek\",\"title\":\"Help-Desk Message Day of Week\",\"type\":\"string\",\"shortTitle\":\"Day of Week\",\"suggestFilterValues\":true},\"direction\":\"asc\"}]}',\r\n dashboardName: \"Help-desk\",\r\n name: \"Tickets by Day Of Week\",\r\n id: \"7e5a7219-3b1a-4995-8f67-d952ca4c727d\",\r\n layout: '{\"x\":6,\"y\":12,\"w\":12,\"h\":9}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"HelpDeskMessages.count\"],\"timeDimensions\":[{\"dimension\":\"HelpDeskMessages.CreatedOn\"}],\"order\":{},\"dimensions\":[\"Businesses.Name\"]},\"chartType\":\"pie\",\"orderMembers\":[{\"id\":\"HelpDeskMessages.count\",\"title\":\"Help-Desk Message Count\",\"order\":\"none\"},{\"id\":\"Businesses.Name\",\"title\":\"Location Name\",\"order\":\"none\"},{\"id\":\"HelpDeskMessages.CreatedOn\",\"title\":\"Help-Desk Message Created On\",\"order\":\"none\"}]}',\r\n dashboardName: \"Help-desk\",\r\n name: \"Tickets by Location\",\r\n id: \"5db3243e-30c4-4deb-bf48-37da57f99f11\",\r\n layout: '{\"x\":0,\"y\":3,\"w\":6,\"h\":9}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CommunityThreads.publicMessagesCount\",\"CommunityThreads.privateMessagesCount\"],\"timeDimensions\":[{\"dimension\":\"CommunityThreads.CreatedOn\",\"granularity\":\"week\",\"dateRange\":\"Last 30 days\"}],\"order\":{}},\"chartType\":\"area\",\"orderMembers\":[{\"id\":\"CommunityThreads.publicMessagesCount\",\"title\":\"Community Thread Public Messages Count\",\"order\":\"none\"},{\"id\":\"CommunityThreads.privateMessagesCount\",\"title\":\"Community Thread Private Messages Count\",\"order\":\"none\"},{\"id\":\"CommunityThreads.CreatedOn\",\"title\":\"Community Thread Created On\",\"order\":\"none\"}],\"orders\":[],\"sessionGranularity\":\"week\"}',\r\n dashboardName: \"Community\",\r\n name: \"Threads a Week\",\r\n id: \"9b6672ee-975c-467c-9676-b12961ef0a1a\",\r\n layout: '{\"x\":5,\"y\":0,\"w\":12,\"h\":6}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Coworkers.count\"],\"timeDimensions\":[],\"order\":{},\"dimensions\":[\"Coworkers.ProfileStatus\"],\"filters\":[{\"dimension\":\"Coworkers.CoworkerContractTariffNames\",\"operator\":\"set\"}]},\"chartType\":\"pie\",\"orderMembers\":[{\"id\":\"Coworkers.count\",\"title\":\"Customer Count\",\"order\":\"none\"},{\"id\":\"Coworkers.ProfileStatus\",\"title\":\"Customer Profile Status\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Community\",\r\n name: \"Members Profile Status\",\r\n id: \"442d4255-1acf-4a65-a583-b6e60a31587c\",\r\n layout: '{\"x\":17,\"y\":0,\"w\":7,\"h\":6}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"Coworkers.count\"],\"timeDimensions\":[],\"order\":{},\"filters\":[{\"dimension\":\"Coworkers.CoworkerContractTariffNames\",\"operator\":\"set\"}]},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"Coworkers.count\",\"title\":\"Customer Count\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Community\",\r\n name: \"Current Members\",\r\n id: \"712b6605-fc2d-4a05-aab0-1870b5f9f349\",\r\n layout: '{\"x\":0,\"y\":0,\"w\":5,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CommunityMessages.count\"],\"timeDimensions\":[{\"dimension\":\"CommunityMessages.CreatedOn\",\"granularity\":\"day\",\"dateRange\":\"Last 30 days\"}],\"order\":{}},\"chartType\":\"line\",\"orderMembers\":[{\"id\":\"CommunityMessages.count\",\"title\":\"Community Message Count\",\"order\":\"none\"},{\"id\":\"CommunityMessages.CreatedOn\",\"title\":\"Community Message Created On\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Community\",\r\n name: \"Responses a Day\",\r\n id: \"09673cd5-3f47-4fdf-ae5b-0e7a8e2241e1\",\r\n layout: '{\"x\":5,\"y\":6,\"w\":12,\"h\":6}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CommunityThreads.privateMessagesCount\"],\"timeDimensions\":[{\"dimension\":\"CommunityThreads.CreatedOn\",\"dateRange\":\"This week\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CommunityThreads.privateMessagesCount\",\"title\":\"Community Thread Private Messages Count\",\"order\":\"none\"},{\"id\":\"CommunityThreads.CreatedOn\",\"title\":\"Community Thread Created On\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Community\",\r\n name: \"Private Interactions\",\r\n id: \"d6a35167-8aa5-42f0-a3ec-d505ee51636e\",\r\n layout: '{\"x\":0,\"y\":6,\"w\":5,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"EventAttendees.count\"],\"timeDimensions\":[{\"dimension\":\"EventAttendees.CreatedOn\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"EventAttendees.count\",\"title\":\"Event Attendee Count\",\"order\":\"none\"},{\"id\":\"EventAttendees.CreatedOn\",\"title\":\"Event Attendee Created On\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Community\",\r\n name: \"Ticket Sales\",\r\n id: \"db26b462-2950-4f15-bf67-094ac670d115\",\r\n layout: '{\"x\":0,\"y\":15,\"w\":5,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"EventProducts.salesAmount\"],\"timeDimensions\":[{\"dimension\":\"EventProducts.CreatedOn\",\"dateRange\":\"This month\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"EventProducts.salesAmount\",\"title\":\"Ticket Sales Amount\",\"order\":\"none\"},{\"id\":\"EventProducts.CreatedOn\",\"title\":\"Ticket Created On\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Community\",\r\n name: \"Ticket Revenue\",\r\n id: \"2ba784a2-f893-4f93-8e37-a652eed09f23\",\r\n layout: '{\"x\":0,\"y\":12,\"w\":5,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"EventAttendees.count\",\"EventAttendees.checkedInCount\"],\"timeDimensions\":[{\"dimension\":\"CalendarEvents.StartDate\",\"granularity\":\"month\",\"dateRange\":\"This year\"}],\"order\":{}},\"chartType\":\"line\",\"orderMembers\":[{\"id\":\"EventAttendees.count\",\"title\":\"Event Attendee Count\",\"order\":\"none\"},{\"id\":\"EventAttendees.checkedInCount\",\"title\":\"Event Attendee Checked in Count\",\"order\":\"none\"},{\"id\":\"CalendarEvents.StartDate\",\"title\":\"Event Start Date\",\"order\":\"none\"}],\"orders\":[],\"sessionGranularity\":\"month\"}',\r\n dashboardName: \"Community\",\r\n name: \"Ticket Sales by Event Date\",\r\n id: \"b86d1806-8533-49cf-a11a-646fe8c9b2b7\",\r\n layout: '{\"x\":5,\"y\":12,\"w\":12,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"EventAttendees.count\"],\"timeDimensions\":[],\"order\":{},\"dimensions\":[\"Coworkers.Gender\"]},\"chartType\":\"pie\",\"orderMembers\":[{\"id\":\"EventAttendees.count\",\"title\":\"Event Attendee Count\",\"order\":\"none\"},{\"id\":\"Coworkers.Gender\",\"title\":\"Customer Gender\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Community\",\r\n name: \"Ticket Sales By Gender\",\r\n id: \"9c6a65b4-d46f-4798-9ee7-d5e3de6c7ae2\",\r\n layout: '{\"x\":17,\"y\":12,\"w\":7,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CommunityThreads.count\"],\"timeDimensions\":[],\"order\":{},\"dimensions\":[\"Users.FullName\"]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"CommunityThreads.count\",\"title\":\"Community Thread Count\",\"order\":\"none\"},{\"id\":\"Users.FullName\",\"title\":\"User Full Name\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Community\",\r\n name: \"Conversation Starters\",\r\n id: \"be0593e5-0259-4c24-bf32-014f64acac6a\",\r\n layout: '{\"x\":17,\"y\":6,\"w\":7,\"h\":6}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CommunityThreads.count\"],\"timeDimensions\":[{\"dimension\":\"CommunityThreads.CreatedOn\",\"dateRange\":\"This week\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CommunityThreads.count\",\"title\":\"Community Thread Count\",\"order\":\"none\"},{\"id\":\"CommunityThreads.CreatedOn\",\"title\":\"Community Thread Created On\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Community\",\r\n name: \"Total Threads\",\r\n id: \"b4b19cfd-db8e-4a80-956f-1379fcb5dd54\",\r\n layout: '{\"x\":0,\"y\":3,\"w\":5,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"CommunityMessages.count\"],\"timeDimensions\":[{\"dimension\":\"CommunityMessages.CreatedOn\",\"dateRange\":\"This week\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"CommunityMessages.count\",\"title\":\"Community Message Count\",\"order\":\"none\"},{\"id\":\"CommunityMessages.CreatedOn\",\"title\":\"Community Message Created On\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Community\",\r\n name: \"Total Responses\",\r\n id: \"2bd1c05e-6abe-4e3a-9a63-46fe5f4ec8db\",\r\n layout: '{\"x\":0,\"y\":9,\"w\":5,\"h\":3}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"dimensions\":[\"SurveyQuestions.Text\"],\"timeDimensions\":[{\"dimension\":\"SurveyAnswers.CreatedOn\"}],\"order\":{\"SurveyQuestions.Text\":\"asc\"},\"filters\":[{\"dimension\":\"SurveyQuestions.QuestionType\",\"operator\":\"contains\",\"values\":[\"options\"]}],\"measures\":[\"SurveyAnswers.averageValue\"]},\"chartType\":\"table\",\"orderMembers\":[{\"id\":\"SurveyAnswers.averageValue\",\"title\":\"Survey Answer Average Value\",\"order\":\"none\"},{\"id\":\"SurveyQuestions.Text\",\"title\":\"Survey Question Text\",\"order\":\"asc\"},{\"id\":\"SurveyAnswers.CreatedOn\",\"title\":\"Survey Answer Created On\",\"order\":\"none\"}],\"orders\":[{\"dimension\":{\"name\":\"SurveyQuestions.Text\",\"title\":\"Survey Question Text\",\"type\":\"string\",\"shortTitle\":\"Text\",\"suggestFilterValues\":true},\"direction\":\"asc\"}]}',\r\n dashboardName: \"Surveys\",\r\n name: \"Responses Average Value\",\r\n id: \"fc81e9d1-1dc6-42ae-8b05-4fbf914cd3ca\",\r\n layout: '{\"x\":12,\"y\":0,\"w\":12,\"h\":12}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"SurveyRuns.count\"],\"timeDimensions\":[{\"dimension\":\"SurveyRuns.CreatedOn\",\"granularity\":\"month\"}],\"order\":{},\"filters\":[],\"dimensions\":[\"SurveyRuns.Submitted\"]},\"chartType\":\"bar\",\"orderMembers\":[{\"id\":\"SurveyRuns.count\",\"title\":\"Survey Request Count\",\"order\":\"none\"},{\"id\":\"SurveyRuns.Submitted\",\"title\":\"Survey Request Submitted\",\"order\":\"none\"},{\"id\":\"SurveyRuns.CreatedOn\",\"title\":\"Survey Request Created On\",\"order\":\"none\"}],\"orders\":[],\"sessionGranularity\":\"month\"}',\r\n dashboardName: \"Surveys\",\r\n name: \"Survey Completions by Month\",\r\n id: \"8c3275cb-e35f-423d-bad1-1296a56b67cf\",\r\n layout: '{\"x\":0,\"y\":0,\"w\":12,\"h\":12}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ContractChanges.ChurnValue\"],\"timeDimensions\":[{\"dimension\":\"ContractChanges.ChangeDate\",\"granularity\":\"month\",\"dateRange\":\"Last 12 months\"}],\"order\":{}},\"chartType\":\"line\",\"orderMembers\":[{\"id\":\"ContractChanges.ChurnValue\",\"title\":\"Contract Change Monthly Value Churn (avg)\",\"order\":\"none\"},{\"id\":\"ContractChanges.ChangeDate\",\"title\":\"Contract Change Change Date\",\"order\":\"none\"}],\"orders\":[],\"sessionGranularity\":\"month\"}',\r\n dashboardName: \"Churn\",\r\n name: \"Monthly Value Churn ($ daily value)\",\r\n id: \"fc3798a7-f049-4774-8b57-65a16d4f3851\",\r\n layout: '{\"x\":12,\"y\":3,\"w\":12,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ContractChanges.ChurnQuantity\"],\"timeDimensions\":[{\"dimension\":\"ContractChanges.ChangeDate\",\"granularity\":\"month\",\"dateRange\":\"Last 12 months\"}],\"order\":{}},\"chartType\":\"line\",\"orderMembers\":[{\"id\":\"ContractChanges.ChurnQuantity\",\"title\":\"Contract Change Monthly Quantity Churn (avg)\",\"order\":\"none\"},{\"id\":\"ContractChanges.ChangeDate\",\"title\":\"Contract Change Change Date\",\"order\":\"none\"}],\"orders\":[],\"sessionGranularity\":\"month\"}',\r\n dashboardName: \"Churn\",\r\n name: \"Monthly Contracts Churn (%)\",\r\n id: \"7b1a556c-1c79-4601-a071-44103ea5f2a3\",\r\n layout: '{\"x\":0,\"y\":3,\"w\":12,\"h\":8}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"ContractChanges.CancelledContracts\"],\"timeDimensions\":[{\"dimension\":\"ContractChanges.ChangeDate\",\"granularity\":\"month\",\"dateRange\":\"Last 12 months\"}],\"order\":{},\"filters\":[{\"dimension\":\"ContractChanges.CancelledQuantity\",\"operator\":\"gt\",\"values\":[\"0\"]}],\"dimensions\":[\"OldPlans.Name\"]},\"chartType\":\"bar\",\"orderMembers\":[{\"id\":\"ContractChanges.CancelledContracts\",\"title\":\"Contract Change Cancelled Contracts\",\"order\":\"none\"},{\"id\":\"OldPlans.Name\",\"title\":\"Plan Cancelled Plan Name\",\"order\":\"none\"},{\"id\":\"ContractChanges.ChangeDate\",\"title\":\"Contract Change Change Date\",\"order\":\"none\"}],\"orders\":[],\"sessionGranularity\":\"month\"}',\r\n dashboardName: \"Churn\",\r\n name: \"Contract Cancellations by Plan\",\r\n id: \"58e5cc53-9d3d-4b7c-ad3c-78f3297f7449\",\r\n layout: '{\"x\":0,\"y\":19,\"w\":24,\"h\":10}',\r\n },\r\n {\r\n vizState:\r\n '{\"query\":{\"measures\":[\"HelpDeskMessages.FirstResponseTimeInHoursAvg\"],\"timeDimensions\":[{\"dimension\":\"HelpDeskMessages.CreatedOn\",\"dateRange\":\"Last 30 days\"}],\"order\":{}},\"chartType\":\"number\",\"orderMembers\":[{\"id\":\"HelpDeskMessages.FirstResponseTimeInHoursAvg\",\"title\":\"Help-Desk Message First Response (hours) (avg)\",\"order\":\"none\"},{\"id\":\"HelpDeskMessages.CreatedOn\",\"title\":\"Help-Desk Message Created On\",\"order\":\"none\"}],\"orders\":[]}',\r\n dashboardName: \"Help-desk\",\r\n name: \"Avg Hours to 1st Response\",\r\n id: \"094c49bd-6c95-4a2c-8396-524739e3a520\",\r\n layout: '{\"x\":0,\"y\":15,\"w\":6,\"h\":3}',\r\n },\r\n];\r\n","import gql from 'graphql-tag';\r\n\r\nexport const GET_DASHBOARD_ITEMS = gql`\r\n query GetDashboardItems {\r\n dashboardItems {\r\n id\r\n layout\r\n vizState\r\n dashboardName\r\n name\r\n }\r\n }\r\n`;\r\n\r\nexport const GET_DASHBOARD_ITEM = gql`\r\n query GetDashboardItem($id: String!) {\r\n dashboardItem(id: $id) {\r\n id\r\n layout\r\n vizState\r\n dashboardName\r\n name\r\n }\r\n }\r\n`;\r\n","import React from \"react\";\r\nimport { Layout, Menu, Alert } from \"antd\";\r\nimport { Link } from \"react-router-dom\";\r\nimport styled from \"styled-components\";\r\nimport logo from \"./logo.png\";\r\nimport { GET_DASHBOARD_ITEMS } from \"../graphql/queries\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\n\r\nconst StyledHeader = styled(Layout.Header)`\r\n padding: 0 28px;\r\n\r\n background: #212121;\r\n`;\r\n\r\nconst StyledMenu = styled(Menu)`\r\n background: transparent;\r\n margin-right: 100px;\r\n line-height: 41px;\r\n`;\r\n\r\nconst MenuItemStyled = styled(Menu.Item)`\r\n && {\r\n top: 4px;\r\n border-bottom: 4px solid transparent;\r\n\r\n &:hover {\r\n border-bottom: 4px solid transparent;\r\n & > a {\r\n color: #ffffff;\r\n opacity: 1;\r\n }\r\n }\r\n }\r\n &&.ant-menu-item-selected {\r\n color: white;\r\n border-bottom: 4px solid white;\r\n\r\n & > a {\r\n opacity: 1;\r\n }\r\n }\r\n && > a {\r\n color: #ffffff;\r\n opacity: 0.6;\r\n font-weight: bold;\r\n letter-spacing: 0.01em;\r\n }\r\n`;\r\n\r\nconst Logo = styled.div`\r\n float: left;\r\n margin-right 40px;\r\n`;\r\n\r\nconst Button = styled.a`\r\n && {\r\n background: rgba(237, 237, 255, 0.2);\r\n border-radius: 4px;\r\n padding: 8px 10px;\r\n opacity: 1 !important;\r\n line-height: 16px;\r\n min-width: 71px;\r\n text-align: center;\r\n margin-top: 5px;\r\n font-size: 13px;\r\n\r\n &:hover {\r\n background: rgba(243, 243, 251, 0.15);\r\n }\r\n }\r\n`;\r\n\r\nconst Header = ({ location }) => {\r\n const { loading, error, data } = useQuery(GET_DASHBOARD_ITEMS);\r\n let group =\r\n !error &&\r\n !loading &&\r\n data.dashboardItems.reduce((r, a) => {\r\n if (r.indexOf(a.dashboardName) === -1) r.push(a.dashboardName);\r\n return r;\r\n }, []);\r\n\r\n if (error) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \"Nexudus\r\n \r\n \r\n \r\n Designer\r\n \r\n {!loading &&\r\n group.map((group, i) => (\r\n \r\n \r\n {group}\r\n \r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React from 'react';\r\nimport { withRouter } from 'react-router';\r\nimport { Layout } from 'antd';\r\nimport { ApolloProvider as ApolloHooksProvider } from '@apollo/react-hooks';\r\nimport { ApolloProvider } from 'react-apollo';\r\nimport cubejs from '@cubejs-client/core';\r\nimport { CubeProvider } from '@cubejs-client/react';\r\nimport client from './graphql/client';\r\nimport Header from './components/Header';\r\nimport { ApiUrl } from './helpers';\r\n\r\nconst API_URL = ApiUrl();\r\n\r\nlet apiTokenPromise;\r\n\r\nconst cubejsApi = cubejs(\r\n () => {\r\n if (!apiTokenPromise) {\r\n apiTokenPromise = fetch(`${API_URL}/api/integrations/cubejs/auth`, {\r\n method: 'post',\r\n headers: { 'X-Requested-With': 'cubejs' },\r\n })\r\n .then((res) => (res.status === 200 ? res.json() : { jwt: '' }))\r\n .then((r) => r.jwt);\r\n }\r\n return apiTokenPromise;\r\n },\r\n {\r\n apiUrl: `${API_URL}/cubejs-api/v1`,\r\n }\r\n);\r\n\r\nconst AppLayout = ({ location, children }) => (\r\n \r\n
\r\n {children}\r\n \r\n);\r\n\r\nconst App = withRouter(({ location, children }) => (\r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n));\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport React from \"react\";\n\nvar _ref2 =\n/*#__PURE__*/\nReact.createElement(\"rect\", {\n width: 20,\n height: 20,\n rx: 10,\n fill: \"#ff9c00\"\n});\n\nvar _ref3 =\n/*#__PURE__*/\nReact.createElement(\"rect\", {\n x: 9,\n y: 6,\n width: 2,\n height: 8,\n fill: \"white\"\n});\n\nvar _ref4 =\n/*#__PURE__*/\nReact.createElement(\"rect\", {\n x: 6,\n y: 11,\n width: 2,\n height: 8,\n transform: \"rotate(-90 6 11)\",\n fill: \"white\"\n});\n\nvar SvgPlusIcon = function SvgPlusIcon(_ref) {\n var svgRef = _ref.svgRef,\n props = _objectWithoutProperties(_ref, [\"svgRef\"]);\n\n return React.createElement(\"svg\", _extends({\n width: 20,\n height: 20,\n viewBox: \"0 0 20 20\",\n fill: \"none\",\n ref: svgRef\n }, props), _ref2, _ref3, _ref4);\n};\n\nvar ForwardRef = React.forwardRef(function (props, ref) {\n return React.createElement(SvgPlusIcon, _extends({\n svgRef: ref\n }, props));\n});\nexport default __webpack_public_path__ + \"static/media/plus-icon.b24dfd75.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\r\nimport { Icon } from 'antd';\r\nimport { ReactComponent as PlusIconSvg } from './plus-icon.svg';\r\n\r\nimport styled from 'styled-components';\r\n\r\nconst PlusIconStyled = styled(Icon)`\r\n display: inline-block;\r\n background: #ff9c00;\r\n border-radius: 50%;\r\n width: 20px;\r\n height: 20px;\r\n position: relative;\r\n cursor: pointer;\r\n pointer-events: all !important;\r\n\r\n &::after {\r\n content: '';\r\n position: absolute;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: rgba(122, 119, 255, 0.1);\r\n border-radius: 50%;\r\n transition: transform 0.15s cubic-bezier(0, 0, 0.2, 1);\r\n z-index: 1;\r\n }\r\n\r\n &:hover::after {\r\n transform: scale(1.4);\r\n }\r\n\r\n & svg {\r\n width: 20px;\r\n height: 20px;\r\n z-index: 2;\r\n }\r\n`;\r\n\r\nconst PlusIcon = () => ;\r\n\r\nexport default PlusIcon;\r\n","import React from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Button, Dropdown } from 'antd';\r\n\r\nimport PlusIcon from './PlusIcon';\r\n\r\nimport styled from 'styled-components';\r\n\r\nconst StyledButton = styled(Button)`\r\n font-size: 14px;\r\n height: 48px;\r\n line-height: 3.5;\r\n box-shadow: 0px 2px 12px rgba(67, 67, 107, 0.1);\r\n border: none;\r\n color: #43436b;\r\n //animation-duration: 0s;\r\n\r\n &:hover + a {\r\n display: block;\r\n }\r\n\r\n &:hover,\r\n &.ant-dropdown-open,\r\n &:focus {\r\n color: #43436b;\r\n }\r\n\r\n &:after {\r\n animation: 0s;\r\n }\r\n\r\n & > i {\r\n position: relative;\r\n top: 3px;\r\n }\r\n`;\r\n\r\nconst SelectedFilterButton = styled(StyledButton)`\r\n && {\r\n height: 40px;\r\n line-height: 40px;\r\n box-shadow: none;\r\n border: 1px solid #ececf0;\r\n border-radius: 4px;\r\n }\r\n`;\r\n\r\nconst NewButton = styled(StyledButton)`\r\n color: #ff9c00;\r\n border: 1px solid rgba(255, 156, 0, 0.2);\r\n box-shadow: none;\r\n font-weight: bold;\r\n\r\n &:hover,\r\n &.ant-dropdown-open,\r\n &:focus {\r\n color: #ff9c00;\r\n border-color: rgba(255, 156, 0, 0.2);\r\n }\r\n`;\r\n\r\nconst TimeGroupButton = styled(NewButton)`\r\n border: none;\r\n padding: 0;\r\n`;\r\n\r\nconst PlusIconButton = styled.span`\r\n margin-left: 12px;\r\n top: 5px;\r\n position: relative;\r\n`;\r\n\r\nconst ButtonDropdown = ({ overlay, type, ...buttonProps }) => {\r\n let component;\r\n if (type === 'icon') {\r\n component = (\r\n \r\n \r\n \r\n );\r\n } else if (type === 'selected') {\r\n component = ;\r\n } else if (type === 'time-group') {\r\n component = ;\r\n } else if (type === 'selected-filter') {\r\n component = ;\r\n } else {\r\n component = ;\r\n }\r\n\r\n return (\r\n \r\n {component}\r\n \r\n );\r\n};\r\n\r\nButtonDropdown.propTypes = {\r\n overlay: PropTypes.object.isRequired,\r\n type: PropTypes.oneOf(['new', 'icon', 'selected']),\r\n};\r\n\r\nexport default ButtonDropdown;\r\n","import React, { useState } from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Menu, Input } from 'antd';\r\nimport { sortBy, prop } from 'ramda';\r\nimport ButtonDropdown from './ButtonDropdown'; // Can't be a Pure Component due to Dropdown lookups overlay component type to set appropriate styles\r\nconst { Search } = Input;\r\nconst sortByTitle = sortBy(prop('title'));\r\n\r\nconst menuStyle = {\r\n maxHeight: 300,\r\n overflow: 'auto',\r\n};\r\n\r\nconst MemberMenu = ({ onClick, availableMembers }) => {\r\n const [filter, setFilter] = useState(null);\r\n\r\n if (filter)\r\n availableMembers = availableMembers.filter(\r\n (i) => i.title.toLowerCase().indexOf(filter.toLowerCase()) > -1\r\n );\r\n return (\r\n <>\r\n ref && ref.focus()}\r\n value={filter}\r\n onChange={(e) => {\r\n setFilter(e.target.value);\r\n }}\r\n placeholder={'Search...'}\r\n />\r\n \r\n {availableMembers.length ? (\r\n sortByTitle(availableMembers).map((m) => (\r\n onClick(m)}>\r\n {m.title}\r\n \r\n ))\r\n ) : (\r\n No members found\r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nconst MemberDropdown = ({ onClick, availableMembers, ...buttonProps }) => (\r\n \r\n }\r\n {...buttonProps}\r\n />\r\n);\r\n\r\nMemberDropdown.propTypes = {\r\n onClick: PropTypes.func.isRequired,\r\n availableMembers: PropTypes.array.isRequired,\r\n};\r\nexport default MemberDropdown;\r\n","import React from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Button } from 'antd';\r\nimport removeButtonSvg from './remove-button.svg';\r\n\r\nimport styled from 'styled-components';\r\n\r\nconst StyledButton = styled.a`\r\n height: 16px;\r\n width: 16px;\r\n background-image: url(${removeButtonSvg});\r\n display: block;\r\n position: absolute;\r\n right: -5px;\r\n top: -5px;\r\n z-index: 9;\r\n display: none;\r\n\r\n &:hover {\r\n background-position: 16px 0;\r\n display: block;\r\n }\r\n`\r\n\r\nconst RemoveButtonGroup = ({ onRemoveClick, children, display, ...props }) => (\r\n \r\n {children}\r\n \r\n \r\n);\r\n\r\nRemoveButtonGroup.propTypes = {\r\n onRemoveClick: PropTypes.func.isRequired,\r\n children: PropTypes.object.isRequired\r\n};\r\n\r\nexport default RemoveButtonGroup;\r\n","import React from 'react';\r\n\r\nimport styled from 'styled-components';\r\n\r\nconst LabelStyled = styled.div`\r\n margin-bottom: 12px;\r\n color: #A1A1B5;\r\n text-transform: uppercase;\r\n letter-spacing: 0.03em;\r\n font-size: 11px;\r\n font-weight: bold;\r\n`\r\nconst MemberGroupTitle = ({ title }) => (\r\n {title}\r\n);\r\n\r\nexport default MemberGroupTitle;\r\n","import React from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport MemberDropdown from './MemberDropdown';\r\nimport RemoveButtonGroup from './RemoveButtonGroup';\r\nimport MemberGroupTitle from './MemberGroupTitle';\r\nimport PlusIcon from './PlusIcon';\r\n\r\nconst MemberGroup = ({\r\n members, availableMembers, addMemberName, updateMethods, title\r\n}) => (\r\n
\r\n \r\n {members.map(m => (\r\n updateMethods.remove(m)}>\r\n updateMethods.update(m, updateWith)}>\r\n {m.title}\r\n \r\n \r\n ))}\r\n 0 ? \"icon\" : \"new\"}\r\n onClick={m => updateMethods.add(m)} availableMembers={availableMembers}\r\n >\r\n {addMemberName}\r\n \r\n \r\n
\r\n);\r\n\r\nMemberGroup.propTypes = {\r\n members: PropTypes.array.isRequired,\r\n availableMembers: PropTypes.array.isRequired,\r\n addMemberName: PropTypes.string.isRequired,\r\n updateMethods: PropTypes.object.isRequired\r\n};\r\n\r\nexport default MemberGroup;\r\n","import React from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Select, Input } from 'antd';\r\nconst { Option } = Select;\r\nconst FilterInputs = {\r\n boolean: ({ values, onChange }) => (\r\n \r\n \r\n \r\n \r\n ),\r\n string: ({ values, onChange }) => (\r\n \r\n ),\r\n number: ({ values, onChange }) => (\r\n onChange([e.target.value])}\r\n value={(values && values[0]) || ''}\r\n />\r\n ),\r\n};\r\nFilterInputs.string.propTypes = {\r\n values: PropTypes.array,\r\n onChange: PropTypes.func.isRequired,\r\n};\r\nFilterInputs.string.defaultProps = {\r\n values: [],\r\n};\r\nFilterInputs.number.propTypes = {\r\n values: PropTypes.array,\r\n onChange: PropTypes.func.isRequired,\r\n};\r\nFilterInputs.number.defaultProps = {\r\n values: [],\r\n};\r\n\r\nconst FilterInput = ({ member, updateMethods }) => {\r\n const Filter = FilterInputs[member.dimension.type] || FilterInputs.string;\r\n return (\r\n updateMethods.update(member, { ...member, values })}\r\n />\r\n );\r\n};\r\n\r\nFilterInput.propTypes = {\r\n member: PropTypes.object.isRequired,\r\n updateMethods: PropTypes.object.isRequired,\r\n};\r\nexport default FilterInput;\r\n","import React from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Select } from 'antd';\r\nimport MemberDropdown from './MemberDropdown';\r\nimport RemoveButtonGroup from './RemoveButtonGroup';\r\nimport FilterInput from './FilterInput';\r\nimport PlusIcon from './PlusIcon';\r\n\r\nconst FilterGroup = ({\r\n members,\r\n availableMembers,\r\n addMemberName,\r\n updateMethods,\r\n}) => (\r\n \r\n {members.map((m) => (\r\n
\r\n updateMethods.remove(m)}>\r\n \r\n updateMethods.update(m, { ...m, dimension: updateWith })\r\n }\r\n availableMembers={availableMembers}\r\n style={{}}\r\n >\r\n {m.dimension.title}\r\n \r\n \r\n updateMethods.update(m, { ...m, operator })}\r\n style={{ width: 200, marginRight: 8 }}\r\n >\r\n {m.operators.map(\r\n (operator) =>\r\n (m.dimension.type !== 'boolean' ||\r\n operator.title === 'equals') && (\r\n \r\n {operator.title}\r\n \r\n )\r\n )}\r\n \r\n \r\n
\r\n ))}\r\n updateMethods.add({ dimension: m })}\r\n availableMembers={availableMembers}\r\n type=\"new\"\r\n >\r\n {addMemberName}\r\n \r\n \r\n
\r\n);\r\n\r\nFilterGroup.propTypes = {\r\n members: PropTypes.array.isRequired,\r\n availableMembers: PropTypes.array.isRequired,\r\n addMemberName: PropTypes.string.isRequired,\r\n updateMethods: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default FilterGroup;\r\n","import React from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Select } from 'antd';\r\nimport MemberDropdown from './MemberDropdown';\r\nimport RemoveButtonGroup from './RemoveButtonGroup';\r\nimport PlusIcon from './PlusIcon';\r\n\r\nconst OrderGroup = ({\r\n members,\r\n availableMembers,\r\n addMemberName,\r\n updateMethods,\r\n updateFilters,\r\n}) => {\r\n return (\r\n \r\n {members.map((m) => (\r\n
\r\n {\r\n updateMethods('remove', m);\r\n }}\r\n >\r\n {\r\n updateMethods('update', m, { ...m, dimension: updateWith });\r\n }}\r\n availableMembers={availableMembers}\r\n style={{}}\r\n >\r\n {m.dimension.title}\r\n \r\n \r\n {\r\n updateMethods('update', m, { ...m, direction });\r\n }}\r\n style={{ width: 150 }}\r\n >\r\n \r\n Ascending\r\n \r\n \r\n Descending\r\n \r\n \r\n
\r\n ))}\r\n {\r\n updateMethods('add', { dimension: m });\r\n }}\r\n availableMembers={availableMembers}\r\n type=\"new\"\r\n >\r\n {addMemberName}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nOrderGroup.propTypes = {\r\n members: PropTypes.array.isRequired,\r\n availableMembers: PropTypes.array.isRequired,\r\n addMemberName: PropTypes.string.isRequired,\r\n updateMethods: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default OrderGroup;\r\n","import React from 'react';\r\nimport { Menu } from 'antd';\r\nimport SubMenu from 'antd/lib/menu/SubMenu';\r\nconst DateRanges = [{ title: 'All time', value: undefined }];\r\nconst CurrentDateRanges = [\r\n { value: 'Today' },\r\n { value: 'Yesterday' },\r\n { value: 'This week' },\r\n { value: 'This month' },\r\n { value: 'This quarter' },\r\n { value: 'This year' },\r\n];\r\n\r\nconst PastDateRanges = [\r\n { value: 'Last 7 days' },\r\n { value: 'Last 30 days' },\r\n { value: 'Last 3 months' },\r\n { value: 'Last 6 months' },\r\n { value: 'Last 12 months' },\r\n { value: 'Last week' },\r\n { value: 'Last month' },\r\n { value: 'Last quarter' },\r\n { value: 'Last year' },\r\n];\r\n\r\nconst FutureDateRanges = [\r\n { value: 'Next 7 days' },\r\n { value: 'Next 30 days' },\r\n { value: 'Next 3 months' },\r\n { value: 'Next 6 months' },\r\n { value: 'Next 12 months' },\r\n { value: 'Next week' },\r\n { value: 'Next month' },\r\n { value: 'Next quarter' },\r\n { value: 'Next year' },\r\n];\r\n\r\nconst DateRangeMenu = ({ onClick, defaultValueLabel }) => (\r\n \r\n onClick({ title: 'All time', value: undefined })}\r\n >\r\n {defaultValueLabel || 'All time'}\r\n \r\n \r\n {CurrentDateRanges.map((m) => (\r\n onClick(m)}>\r\n {m.title || m.value}\r\n \r\n ))}\r\n \r\n \r\n {PastDateRanges.map((m) => (\r\n onClick(m)}>\r\n {m.title || m.value}\r\n \r\n ))}\r\n \r\n \r\n {FutureDateRanges.map((m) => (\r\n onClick(m)}>\r\n {m.title || m.value}\r\n \r\n ))}\r\n \r\n \r\n);\r\n\r\nexport default DateRangeMenu;\r\n","import React from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Menu } from 'antd';\r\nimport ButtonDropdown from './ButtonDropdown';\r\nimport MemberDropdown from './MemberDropdown';\r\nimport RemoveButtonGroup from './RemoveButtonGroup';\r\nimport MemberGroupTitle from './MemberGroupTitle';\r\nimport PlusIcon from './PlusIcon';\r\nimport styled from 'styled-components';\r\nimport DateRangeMenu from './DateRangeMenu';\r\n\r\nconst GroupLabel = styled.span`\r\n font-size: 14px;\r\n margin: 0 12px;\r\n`;\r\n\r\nconst TimeGroup = ({\r\n members,\r\n availableMembers,\r\n addMemberName,\r\n updateMethods,\r\n title,\r\n}) => {\r\n const granularityMenu = (member, onClick) => (\r\n \r\n {member.granularities.length ? (\r\n member.granularities.map((m) => (\r\n onClick(m)}>\r\n {m.title}\r\n \r\n ))\r\n ) : (\r\n No members found\r\n )}\r\n \r\n );\r\n\r\n return (\r\n
\r\n \r\n {members.map((m) => [\r\n updateMethods.remove(m)}\r\n key={`${m.dimension.name}-member`}\r\n >\r\n \r\n updateMethods.update(m, { ...m, dimension: updateWith })\r\n }\r\n availableMembers={availableMembers}\r\n >\r\n {m.dimension.title}\r\n \r\n ,\r\n for,\r\n \r\n updateMethods.update(m, { ...m, dateRange: dateRange.value })\r\n }\r\n />\r\n }\r\n key={`${m.dimension.name}-date-range`}\r\n >\r\n {m.dateRange || 'All time'}\r\n ,\r\n by,\r\n \r\n updateMethods.update(m, { ...m, granularity: granularity.name })\r\n )}\r\n key={`${m.dimension.name}-granularity`}\r\n >\r\n {m.dimension.granularities.find((g) => g.name === m.granularity) &&\r\n m.dimension.granularities.find((g) => g.name === m.granularity)\r\n .title}\r\n ,\r\n ])}\r\n {!members.length && (\r\n \r\n updateMethods.add({ dimension: member, granularity: 'day' })\r\n }\r\n availableMembers={availableMembers}\r\n type=\"new\"\r\n >\r\n {addMemberName}\r\n \r\n \r\n )}\r\n
\r\n );\r\n};\r\n\r\nTimeGroup.propTypes = {\r\n members: PropTypes.array.isRequired,\r\n availableMembers: PropTypes.array.isRequired,\r\n addMemberName: PropTypes.string.isRequired,\r\n updateMethods: PropTypes.object.isRequired,\r\n};\r\n\r\nexport default TimeGroup;\r\n","import React from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport {\r\n Menu, Icon, Dropdown\r\n} from 'antd';\r\n\r\nimport styled from 'styled-components';\r\n\r\nconst StyledDropdownTrigger = styled.span`\r\n color: #43436B;\r\n cursor: pointer;\r\n margin-left: 13px;\r\n\r\n & > span {\r\n margin: 0 8px;\r\n }\r\n`\r\n\r\nconst ChartTypes = [\r\n { name: 'line', title: 'Line', icon: 'line-chart' },\r\n { name: 'area', title: 'Area', icon: 'area-chart' },\r\n { name: 'bar', title: 'Bar', icon: 'bar-chart' },\r\n { name: 'pie', title: 'Pie', icon: 'pie-chart' },\r\n { name: 'table', title: 'Table', icon: 'table' },\r\n { name: 'number', title: 'Number', icon: 'info-circle' }\r\n];\r\n\r\nconst SelectChartType = ({ chartType, updateChartType }) => {\r\n const menu = (\r\n \r\n {ChartTypes.map(m => (\r\n updateChartType(m.name)}>\r\n \r\n {m.title}\r\n \r\n ))}\r\n \r\n );\r\n\r\n const foundChartType = ChartTypes.find(t => t.name === chartType);\r\n return (\r\n \r\n \r\n \r\n {foundChartType.title}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nSelectChartType.propTypes = {\r\n chartType: PropTypes.string.isRequired,\r\n updateChartType: PropTypes.func.isRequired\r\n};\r\n\r\nexport default SelectChartType;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { useCubeQuery } from \"@cubejs-client/react\";\r\nimport { Spin, Row, Col, Statistic, Table, Modal } from \"antd\";\r\nimport { CSVLink } from \"react-csv\";\r\nimport FileSaver from \"file-saver\";\r\nimport {\r\n CartesianGrid,\r\n PieChart,\r\n Pie,\r\n Cell,\r\n AreaChart,\r\n Area,\r\n XAxis,\r\n YAxis,\r\n Tooltip,\r\n ResponsiveContainer,\r\n Legend,\r\n BarChart,\r\n Bar,\r\n LineChart,\r\n Line,\r\n Brush,\r\n} from \"recharts\";\r\nimport styled from \"styled-components\";\r\n\r\nimport \"./recharts-theme.less\";\r\nimport moment from \"moment\";\r\nimport numeral from \"numeral\";\r\nimport { getPngData } from \"recharts-to-png\";\r\nimport ReactExport from \"react-export-excel\";\r\n\r\nconst ExcelFile = ReactExport.ExcelFile;\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\nconst longNumberFormatter = (item) => {\r\n return numeral(item).format(Math.abs(item) > 1000 ? \"0,0.[00]a\" : \"0,0.[00]\");\r\n};\r\nconst numberFormatter = (item) => numeral(item).format(\"0,0.[00]\");\r\nconst dateFormatter = (item) =>\r\n moment(item).date() === 1\r\n ? moment(item).format(\"MMM YY\")\r\n : moment(item).format(\"Do MMM YY\");\r\nconst smartDateFormatter = (item) => {\r\n const m = moment(item);\r\n if (m.second() > 0) return m.format(\"LLL\");\r\n if (m.minute() > 0) return m.format(\"LLL\");\r\n if (m.hour() > 0) return m.format(\"LLL\");\r\n return m.format(\"LL\");\r\n};\r\nconst colors = [\r\n \"#37B067\",\r\n \"#6296BC\",\r\n \"#EDB40D\",\r\n \"#7FD7C1\",\r\n \"#9F8CAE\",\r\n \"#EB6672\",\r\n \"#376C72\",\r\n \"#EE9DCC\",\r\n \"#E3791A\",\r\n \"#9F765E\",\r\n \"#BBE2AD\",\r\n \"#B9D2D5\",\r\n \"#EED39D\",\r\n \"#EEA7A7\",\r\n \"#D0CADB\",\r\n \"#BBF2D5\",\r\n \"#7DB8B9\",\r\n \"#F1C9DD\",\r\n \"#FFC097\",\r\n \"#DAC1B1\",\r\n];\r\nconst xAxisFormatter = (item) => {\r\n if (item.length > 5 && moment(item).isValid()) {\r\n return dateFormatter(item);\r\n } else {\r\n return item;\r\n }\r\n};\r\n\r\nconst CartesianChart = ({\r\n resultSet,\r\n children,\r\n ChartComponent,\r\n height,\r\n chartRef,\r\n}) => (\r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n {/* */}\r\n \r\n \r\n \r\n);\r\nconst TypeToChartComponent = {\r\n line: ({ resultSet, height, chartRef }) => {\r\n return (\r\n \r\n {resultSet.seriesNames().map((series, i) => (\r\n \r\n ))}\r\n \r\n );\r\n },\r\n bar: ({ handleBarClick, resultSet, height, chartRef }) => {\r\n return (\r\n \r\n {resultSet.seriesNames().map((series, i) => {\r\n const hasDrillMembers =\r\n resultSet.loadResponse.annotation.measures[\r\n series.yValues[series.yValues.length - 1]\r\n ].drillMembers.length > 0;\r\n\r\n return (\r\n handleBarClick(event, series.yValues)}\r\n dataKey={series.key}\r\n name={series.title}\r\n fill={colors[i]}\r\n />\r\n );\r\n })}\r\n \r\n );\r\n },\r\n area: ({ resultSet, height, chartRef }) => (\r\n \r\n {resultSet.seriesNames().map((series, i) => (\r\n \r\n ))}\r\n \r\n ),\r\n pie: ({ resultSet, height, chartRef }) =>\r\n resultSet.seriesNames().length > 0 && (\r\n \r\n \r\n \r\n {resultSet.chartPivot().map((series, index) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n ),\r\n table: ({ resultSet }) => (\r\n
\r\n ({\r\n ...c,\r\n align: c.type === \"number\" ? \"right\" : \"left\",\r\n render: (t) => {\r\n return c.type === \"number\" ? (\r\n
{numberFormatter(t)}
\r\n ) : c.type === \"time\" ? (\r\n smartDateFormatter(t)\r\n ) : c.format === \"link\" ? (\r\n \r\n Link\r\n \r\n ) : c.type === \"boolean\" ? (\r\n t ? (\r\n \"Yes\"\r\n ) : (\r\n \"No\"\r\n )\r\n ) : (\r\n t\r\n );\r\n },\r\n dataIndex: c.key,\r\n }))}\r\n dataSource={resultSet.tablePivot()}\r\n />\r\n
\r\n ),\r\n number: ({ resultSet }) => (\r\n \r\n \r\n {resultSet.seriesNames().map((s) => (\r\n \r\n ))}\r\n \r\n \r\n ),\r\n};\r\nconst TypeToMemoChartComponent = Object.keys(TypeToChartComponent)\r\n .map((key) => ({\r\n [key]: React.memo(TypeToChartComponent[key]),\r\n }))\r\n .reduce((a, b) => ({ ...a, ...b }));\r\n\r\nconst SpinContainer = styled.div`\r\n text-align: center;\r\n\r\n margin-bottom: 10px;\r\n`;\r\n\r\nconst TimeRange = styled.div`\r\n margin-top: -25px;\r\n font-size: 13px;\r\n font-family: monospace;\r\n margin-bottom: 10px;\r\n`;\r\n\r\nconst Spinner = () => (\r\n \r\n \r\n \r\n);\r\n\r\nconst renderChart =\r\n (Component) =>\r\n ({\r\n name,\r\n handleBarClick,\r\n resultSet,\r\n error,\r\n chartType,\r\n height,\r\n setChart,\r\n handleDownload,\r\n }) => {\r\n const formattedTimeDimensions =\r\n resultSet &&\r\n resultSet.loadResponse.query.timeDimensions.length > 0 &&\r\n resultSet.loadResponse.query.timeDimensions[0].dateRange\r\n ? `${moment(resultSet.loadResponse.query.timeDimensions[0].dateRange[0])\r\n .add(1, \"second\")\r\n .format(\"LL\")} – ${moment(\r\n resultSet.loadResponse.query.timeDimensions[0].dateRange[1]\r\n ).format(\"LL\")}`\r\n : null;\r\n console.log(`resultSet`, resultSet && resultSet.tableColumns());\r\n return (\r\n (resultSet && (\r\n <>\r\n {{formattedTimeDimensions || \"All the time\"}}\r\n setChart(ref)}\r\n height={height}\r\n resultSet={resultSet}\r\n handleBarClick={handleBarClick}\r\n />\r\n {chartType !== \"number\" && (\r\n <>\r\n ({ label: c.title, key: c.key }))}\r\n filename={`${name || \"export\"}.csv`}\r\n data={resultSet.tablePivot()}\r\n >\r\n CSV\r\n \r\n {\" | \"}\r\n XLS\r\n }\r\n filename={name}\r\n >\r\n \r\n {resultSet.tableColumns().map((c) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n )}\r\n {chartType !== \"table\" && chartType !== \"number\" && (\r\n <>\r\n {chartType !== \"number\" && \" | \"}\r\n \r\n PNG\r\n \r\n \r\n )}\r\n \r\n )) ||\r\n (error && error.toString()) || \r\n );\r\n };\r\n\r\nconst ChartRenderer = ({\r\n dateRange,\r\n selectedBusinesses,\r\n name,\r\n vizState,\r\n chartHeight,\r\n}) => {\r\n const [chart, setChart] = React.useState();\r\n\r\n const handleDownload = React.useCallback(async () => {\r\n if (chart !== undefined) {\r\n // Send the chart to getPngData\r\n const pngData = await getPngData(chart);\r\n // Use FileSaver to download the PNG\r\n FileSaver.saveAs(pngData, `${name}_chart.png`);\r\n }\r\n }, [chart]);\r\n\r\n const { query, chartType } = vizState;\r\n const [drillDownQuery, setDrillDownQuery] = useState();\r\n\r\n // eslint-disable-next-line no-unused-vars\r\n const [tableData, setTableData] = useState(null);\r\n\r\n if (dateRange) {\r\n if (query.timeDimensions.length > 0) {\r\n query.timeDimensions[0].dateRange = dateRange;\r\n }\r\n }\r\n\r\n if (selectedBusinesses && selectedBusinesses.length > 0) {\r\n if (!query.filters) query.filters = [];\r\n\r\n //Check if there is a filter already for locations\r\n const foundFilter = query.filters.find(\r\n (f) => f.dimension === \"Businesses.Id\" && f.operator === \"equals\"\r\n );\r\n const bids = selectedBusinesses.map((b) => b.Id.toString());\r\n if (foundFilter) {\r\n query.filters.splice(query.filters.indexOf(foundFilter), 1);\r\n }\r\n query.filters.push({\r\n dimension: \"Businesses.Id\",\r\n operator: \"equals\",\r\n values: bids,\r\n });\r\n }\r\n\r\n const renderProps = useCubeQuery(query);\r\n const drillDownResponse = useCubeQuery(\r\n {\r\n ...drillDownQuery,\r\n },\r\n {\r\n skip: !drillDownQuery,\r\n }\r\n );\r\n\r\n useEffect(() => {\r\n if (drillDownResponse.resultSet) {\r\n setTableData(drillDownResponse);\r\n }\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [drillDownResponse.isLoading]);\r\n\r\n function handleBarClick(event, yValues) {\r\n if (event.xValues != null) {\r\n const { resultSet } = renderProps;\r\n const drillDownQuery = resultSet.drillDown({\r\n xValues: event.xValues,\r\n yValues,\r\n });\r\n setDrillDownQuery(drillDownQuery);\r\n }\r\n }\r\n\r\n try {\r\n const component = TypeToMemoChartComponent[chartType];\r\n return (\r\n <>\r\n {drillDownQuery && (\r\n {\r\n setDrillDownQuery(null);\r\n setTableData(null);\r\n }}\r\n onOk={() => {\r\n setDrillDownQuery(null);\r\n setTableData(null);\r\n }}\r\n cancelButtonProps={{ style: { display: \"none\" } }}\r\n >\r\n {!drillDownResponse.isLoading &&\r\n renderChart(TypeToMemoChartComponent[\"table\"])({\r\n name: \"Drill down data\",\r\n height: 200,\r\n setChart,\r\n handleDownload,\r\n ...drillDownResponse,\r\n })}\r\n\r\n {drillDownResponse.isLoading && }\r\n \r\n )}\r\n {component &&\r\n renderChart(component)({\r\n chartType,\r\n name,\r\n height: chartHeight,\r\n handleBarClick,\r\n setChart,\r\n handleDownload,\r\n ...renderProps,\r\n })}\r\n \r\n );\r\n } catch (ex) {\r\n return
Error: {ex}
;\r\n }\r\n};\r\n\r\nChartRenderer.propTypes = {\r\n vizState: PropTypes.object,\r\n cubejsApi: PropTypes.object,\r\n};\r\nChartRenderer.defaultProps = {\r\n vizState: {},\r\n chartHeight: 300,\r\n cubejsApi: null,\r\n};\r\nexport default ChartRenderer;\r\n","export default (oldState, newState) => {\r\n const { query, sessionGranularity } = oldState;\r\n const defaultGranularity = sessionGranularity || 'day';\r\n if (newState.query) {\r\n const oldQuery = query;\r\n let newQuery = newState.query;\r\n\r\n const { meta } = oldState;\r\n\r\n if (\r\n (oldQuery.timeDimensions || []).length === 1\r\n && (newQuery.timeDimensions || []).length === 1\r\n && newQuery.timeDimensions[0].granularity\r\n && oldQuery.timeDimensions[0].granularity !== newQuery.timeDimensions[0].granularity\r\n ) {\r\n newState = {\r\n ...newState,\r\n sessionGranularity: newQuery.timeDimensions[0].granularity,\r\n };\r\n }\r\n\r\n if (\r\n (oldQuery.measures || []).length === 0 && (newQuery.measures || []).length > 0\r\n || (\r\n (oldQuery.measures || []).length === 1\r\n && (newQuery.measures || []).length === 1\r\n && oldQuery.measures[0] !== newQuery.measures[0]\r\n )\r\n ) {\r\n const defaultTimeDimension = meta.defaultTimeDimensionNameFor(newQuery.measures[0]);\r\n newQuery = {\r\n ...newQuery,\r\n timeDimensions: defaultTimeDimension ? [{\r\n dimension: defaultTimeDimension,\r\n granularity: defaultGranularity,\r\n dateRange: \"Last 30 days\"\r\n }] : [],\r\n };\r\n return {\r\n ...newState,\r\n query: newQuery,\r\n chartType: defaultTimeDimension ? 'line' : 'number'\r\n };\r\n }\r\n\r\n if (\r\n (oldQuery.dimensions || []).length === 0\r\n && (newQuery.dimensions || []).length > 0\r\n ) {\r\n newQuery = {\r\n ...newQuery,\r\n timeDimensions: (newQuery.timeDimensions || []).map(td => ({ ...td, granularity: undefined })),\r\n };\r\n return {\r\n ...newState,\r\n query: newQuery,\r\n chartType: 'table'\r\n };\r\n }\r\n\r\n if (\r\n (oldQuery.dimensions || []).length > 0\r\n && (newQuery.dimensions || []).length === 0\r\n ) {\r\n newQuery = {\r\n ...newQuery,\r\n timeDimensions: (newQuery.timeDimensions || []).map(td => ({\r\n ...td, granularity: td.granularity || defaultGranularity\r\n })),\r\n };\r\n return {\r\n ...newState,\r\n query: newQuery,\r\n chartType: (newQuery.timeDimensions || []).length ? 'line' : 'number'\r\n };\r\n }\r\n\r\n if (\r\n (\r\n (oldQuery.dimensions || []).length > 0\r\n || (oldQuery.measures || []).length > 0\r\n )\r\n && (newQuery.dimensions || []).length === 0\r\n && (newQuery.measures || []).length === 0\r\n ) {\r\n newQuery = {\r\n ...newQuery,\r\n timeDimensions: [],\r\n filters: []\r\n };\r\n return {\r\n ...newState,\r\n query: newQuery,\r\n sessionGranularity: null\r\n };\r\n }\r\n return newState;\r\n }\r\n\r\n if (newState.chartType) {\r\n const newChartType = newState.chartType;\r\n if (\r\n (newChartType === 'line' || newChartType === 'area')\r\n && (query.timeDimensions || []).length === 1\r\n && !query.timeDimensions[0].granularity\r\n ) {\r\n const [td] = query.timeDimensions;\r\n return {\r\n ...newState,\r\n query: {\r\n ...query,\r\n timeDimensions: [{ ...td, granularity: defaultGranularity }]\r\n }\r\n };\r\n }\r\n\r\n if (\r\n (newChartType === 'pie' || newChartType === 'table' || newChartType === 'number')\r\n && (query.timeDimensions || []).length === 1\r\n && query.timeDimensions[0].granularity\r\n ) {\r\n const [td] = query.timeDimensions;\r\n return {\r\n ...newState,\r\n query: {\r\n ...query,\r\n timeDimensions: [{ ...td, granularity: undefined }]\r\n }\r\n };\r\n }\r\n }\r\n\r\n return newState;\r\n }\r\n","import React, { useState } from 'react';\r\nimport * as PropTypes from 'prop-types';\r\nimport { Row, Col, Card, Divider } from 'antd';\r\nimport styled from 'styled-components';\r\nimport { QueryBuilder } from '@cubejs-client/react';\r\nimport MemberGroup from './MemberGroup';\r\nimport FilterGroup from './FilterGroup';\r\nimport OrderGroup from './OrderGroup';\r\nimport TimeGroup from './TimeGroup';\r\nimport SelectChartType from './SelectChartType';\r\nimport ChartRenderer from '../ChartRenderer';\r\nimport stateChangeHeuristics from './stateChangeHeuristics.js';\r\n\r\nconst ControlsRow = styled(Row)`\r\n background: #ffffff;\r\n margin-bottom: 12px;\r\n padding: 18px 28px 10px 28px;\r\n`;\r\n\r\nconst StyledDivider = styled(Divider)`\r\n margin: 0 12px;\r\n height: 4.5em;\r\n top: 0.5em;\r\n background: #f4f5f6;\r\n`;\r\n\r\nconst HorizontalDivider = styled(Divider)`\r\n padding: 0;\r\n margin: 0;\r\n background: #f4f5f6;\r\n`;\r\n\r\nconst ChartCard = styled(Card)`\r\n border-radius: 4px;\r\n border: none;\r\n`;\r\n\r\nconst ChartRow = styled(Row)`\r\n padding-left: 28px;\r\n padding-right: 28px;\r\n`;\r\n\r\nconst Empty = styled.div`\r\n text-align: center;\r\n margin-top: 185px;\r\n`;\r\n\r\nconst ExploreQueryBuilder = ({\r\n vizState,\r\n cubejsApi,\r\n setVizState,\r\n chartExtra,\r\n}) => {\r\n const [orders, setOrders] = useState(vizState.orders || []);\r\n\r\n const updateOrder = {\r\n add: (o) => {\r\n orders.push(o);\r\n setOrders(orders);\r\n },\r\n remove: (o) => {\r\n var index = orders.indexOf(o);\r\n orders.splice(index, 1);\r\n setOrders(orders);\r\n },\r\n update: (old, nw) => {\r\n var index = orders.indexOf(old);\r\n orders[index] = nw;\r\n },\r\n };\r\n\r\n const getOrderObject = () => {\r\n const orderObj = {};\r\n for (let index = 0; index < orders.length; index++) {\r\n const order = orders[index];\r\n orderObj[order.dimension.name] = order.direction || 'asc';\r\n }\r\n return orderObj;\r\n };\r\n\r\n return (\r\n {\r\n a.query.order = getOrderObject();\r\n a.orders = orders;\r\n setVizState(a);\r\n }}\r\n cubejsApi={cubejsApi}\r\n wrapWithQueryRenderer={false}\r\n stateChangeHeuristics={stateChangeHeuristics}\r\n render={({\r\n measures,\r\n availableMeasures,\r\n updateMeasures,\r\n dimensions,\r\n availableDimensions,\r\n updateDimensions,\r\n segments,\r\n availableSegments,\r\n updateSegments,\r\n filters,\r\n updateFilters,\r\n timeDimensions,\r\n availableTimeDimensions,\r\n updateTimeDimensions,\r\n isQueryPresent,\r\n chartType,\r\n updateChartType,\r\n validatedQuery,\r\n cubejsApi,\r\n }) => [\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!!isQueryPresent && [\r\n ,\r\n \r\n \r\n \r\n \r\n ,\r\n ,\r\n \r\n \r\n {\r\n updateOrder[action](...rest);\r\n updateChartType(chartType); //force the refresh of the chart\r\n }}\r\n />\r\n \r\n ,\r\n ]}\r\n \r\n ,\r\n \r\n \r\n {isQueryPresent ? (\r\n [\r\n \r\n \r\n ,\r\n \r\n \r\n ,\r\n ]\r\n ) : (\r\n \r\n

Start exploring!

\r\n

Choose a measure or dimension to get started

\r\n
\r\n )}\r\n \r\n ,\r\n ]}\r\n />\r\n );\r\n};\r\nExploreQueryBuilder.propTypes = {\r\n vizState: PropTypes.object,\r\n setVizState: PropTypes.func,\r\n cubejsApi: PropTypes.object,\r\n chartExtra: PropTypes.array,\r\n};\r\nExploreQueryBuilder.defaultProps = {\r\n vizState: {},\r\n setVizState: null,\r\n cubejsApi: null,\r\n chartExtra: null,\r\n};\r\nexport default ExploreQueryBuilder;\r\n","import gql from \"graphql-tag\";\r\n\r\nexport const CREATE_DASHBOARD_ITEM = gql`\r\n mutation CreateDashboardItem($input: DashboardItemInput) {\r\n createDashboardItem(input: $input) {\r\n id\r\n layout\r\n vizState\r\n name\r\n }\r\n }\r\n`;\r\n\r\nexport const UPDATE_DASHBOARD_ITEM = gql`\r\n mutation UpdateDashboardItem($id: String!, $input: DashboardItemInput) {\r\n updateDashboardItem(id: $id, input: $input) {\r\n id\r\n layout\r\n vizState\r\n name\r\n }\r\n }\r\n`;\r\n\r\nexport const DELETE_DASHBOARD_ITEM = gql`\r\n mutation DeleteDashboardItem($id: String!) {\r\n deleteDashboardItem(id: $id) {\r\n id\r\n layout\r\n vizState\r\n name\r\n }\r\n }\r\n`;\r\n","import React, { useState } from 'react';\r\nimport { Form, Modal, Input, Alert } from 'antd';\r\n\r\nimport { useMutation } from '@apollo/react-hooks';\r\nimport { GET_DASHBOARD_ITEMS } from '../graphql/queries';\r\nimport {\r\n CREATE_DASHBOARD_ITEM,\r\n UPDATE_DASHBOARD_ITEM,\r\n} from '../graphql/mutations';\r\n\r\nconst layout = {\r\n labelCol: { span: 8 },\r\n wrapperCol: { span: 16 },\r\n};\r\n\r\nconst TitleModal = ({\r\n history,\r\n itemId,\r\n titleModalVisible,\r\n setTitleModalVisible,\r\n setAddingToDashboard,\r\n finalVizState,\r\n setTitle,\r\n finalTitle,\r\n finalDashboardName,\r\n setDashboardName,\r\n}) => {\r\n const [error, setError] = useState(null);\r\n const [addDashboardItem] = useMutation(CREATE_DASHBOARD_ITEM, {\r\n refetchQueries: [\r\n {\r\n query: GET_DASHBOARD_ITEMS,\r\n },\r\n ],\r\n });\r\n const [updateDashboardItem] = useMutation(UPDATE_DASHBOARD_ITEM, {\r\n refetchQueries: [\r\n {\r\n query: GET_DASHBOARD_ITEMS,\r\n },\r\n ],\r\n });\r\n return (\r\n <>\r\n {error && (\r\n setError(null)}\r\n type=\"error\"\r\n message={error.toString()}\r\n />\r\n )}\r\n {\r\n setTitleModalVisible(false);\r\n setAddingToDashboard(true);\r\n\r\n try {\r\n await (itemId ? updateDashboardItem : addDashboardItem)({\r\n variables: {\r\n id: itemId,\r\n input: {\r\n vizState: JSON.stringify(finalVizState),\r\n name: finalTitle,\r\n dashboardName: finalDashboardName,\r\n },\r\n },\r\n });\r\n history.push(`/dashboards/${finalDashboardName}`);\r\n } catch (ex) {\r\n setError('Error: ' + ex);\r\n } finally {\r\n setAddingToDashboard(false);\r\n }\r\n }}\r\n onCancel={() => setTitleModalVisible(false)}\r\n >\r\n
\r\n \r\n setDashboardName(e.target.value)}\r\n />\r\n \r\n \r\n setTitle(e.target.value)}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TitleModal;\r\n","import React from \"react\";\r\nimport { Row, Col } from \"antd\";\r\nimport styled from 'styled-components';\r\n\r\nconst StyledRow = styled(Row)`\r\n padding: 23px 28px 13px 28px;\r\n background: white;\r\n`\r\n\r\nconst ButtonsCol = styled(Col)`\r\n text-align: right;\r\n`\r\n\r\nconst PageHeader = ({ title, button, noBorder }) => (\r\n \r\n \r\n {title}\r\n \r\n \r\n {button}\r\n \r\n \r\n);\r\n\r\nexport default PageHeader;\r\n","import React from 'react';\r\nimport { Typography } from 'antd';\r\nimport { Link } from 'react-router-dom';\r\nimport styled from 'styled-components';\r\n\r\nconst StyledLink = styled(Link)`\r\n && {\r\n color: #d5d5de;\r\n &:hover {\r\n color: #7a77ff;\r\n }\r\n }\r\n`;\r\n\r\nconst StyledDash = styled.span`\r\n color: #d5d5de;\r\n`;\r\n\r\nconst ExploreTitle = ({ itemTitle }) => (\r\n \r\n {itemTitle ? (\r\n \r\n Dashboard\r\n \r\n {itemTitle}\r\n \r\n ) : (\r\n 'Designer'\r\n )}\r\n \r\n);\r\n\r\nexport default ExploreTitle;\r\n","import React, { useState } from 'react';\r\nimport { Alert, Button, Spin } from 'antd';\r\nimport { useQuery } from '@apollo/react-hooks';\r\nimport { withRouter } from 'react-router-dom';\r\nimport ExploreQueryBuilder from '../components/QueryBuilder/ExploreQueryBuilder';\r\nimport { GET_DASHBOARD_ITEM } from '../graphql/queries';\r\nimport TitleModal from '../components/TitleModal.js';\r\nimport { isQueryPresent } from '@cubejs-client/react';\r\nimport PageHeader from '../components/PageHeader.js';\r\nimport ExploreTitle from '../components/ExploreTitle.js';\r\n\r\nconst ExplorePage = withRouter(({ history, location }) => {\r\n const [addingToDashboard, setAddingToDashboard] = useState(false);\r\n const params = new URLSearchParams(location.search);\r\n const itemId = params.get('itemId');\r\n const { loading, error, data } = useQuery(GET_DASHBOARD_ITEM, {\r\n variables: {\r\n id: itemId,\r\n },\r\n skip: !itemId,\r\n });\r\n const [vizState, setVizState] = useState(null);\r\n const finalVizState =\r\n vizState ||\r\n (itemId && !loading && data && JSON.parse(data.dashboardItem.vizState)) ||\r\n {};\r\n const [titleModalVisible, setTitleModalVisible] = useState(false);\r\n const [title, setTitle] = useState(null);\r\n const [dashboardName, setDashboardName] = useState(null);\r\n const finalTitle =\r\n title != null\r\n ? title\r\n : (itemId && !loading && data && data.dashboardItem.name) || 'New Chart';\r\n\r\n const finalDashboardName =\r\n dashboardName != null\r\n ? dashboardName\r\n : (itemId && !loading && data && data.dashboardItem.dashboardName) ||\r\n 'Dashboard';\r\n\r\n if (loading) {\r\n return ;\r\n }\r\n\r\n if (error) {\r\n return ;\r\n }\r\n\r\n return (\r\n
\r\n \r\n }\r\n button={\r\n setTitleModalVisible(true)}\r\n >\r\n {itemId ? 'Update' : 'Add to Dashboard'}\r\n \r\n }\r\n />\r\n \r\n
\r\n );\r\n});\r\nexport default ExplorePage;\r\n","import React, { useState } from 'react';\r\nimport RGL, { WidthProvider } from 'react-grid-layout';\r\nimport { useMutation } from '@apollo/react-hooks';\r\nimport 'react-grid-layout/css/styles.css';\r\nimport 'react-resizable/css/styles.css';\r\nimport { GET_DASHBOARD_ITEMS } from '../graphql/queries';\r\nimport { UPDATE_DASHBOARD_ITEM } from '../graphql/mutations';\r\nimport dragBackground from './drag-background.svg';\r\nimport styled from 'styled-components';\r\nconst ReactGridLayout = WidthProvider(RGL);\r\n\r\nconst DragField = styled(ReactGridLayout)`\r\n margin: 16px 28px 50px 28px;\r\n ${(props) =>\r\n props.isDragging\r\n ? `\r\n background: url(${dragBackground});\r\n background-repeat: repeat-y;\r\n background-position: 0px -4px;\r\n background-size: 100% 52px;\r\n `\r\n : ''};\r\n`;\r\n\r\nconst Dashboard = ({ children, dashboardItems }) => {\r\n const [isDragging, setIsDragging] = useState(false);\r\n const [updateDashboardItem] = useMutation(UPDATE_DASHBOARD_ITEM, {\r\n refetchQueries: [\r\n {\r\n query: GET_DASHBOARD_ITEMS,\r\n },\r\n ],\r\n });\r\n\r\n const onLayoutChange = (newLayout) => {\r\n newLayout.forEach((l) => {\r\n const item = dashboardItems.find((i) => i.id.toString() === l.i);\r\n const toUpdate = JSON.stringify({\r\n x: l.x,\r\n y: l.y,\r\n w: l.w,\r\n h: l.h,\r\n });\r\n\r\n if (item && toUpdate !== item.layout) {\r\n updateDashboardItem({\r\n variables: {\r\n id: item.id,\r\n input: {\r\n layout: toUpdate,\r\n },\r\n },\r\n });\r\n }\r\n });\r\n };\r\n\r\n return (\r\n setIsDragging(true)}\r\n onDragStop={() => setIsDragging(false)}\r\n onResizeStart={() => setIsDragging(true)}\r\n onResizeStop={() => setIsDragging(false)}\r\n cols={24}\r\n rowHeight={40}\r\n onLayoutChange={onLayoutChange}\r\n isDragging={isDragging}\r\n >\r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default Dashboard;\r\n","import React from 'react';\r\nimport { Card, Menu, Icon, Dropdown, Modal } from 'antd';\r\nimport styled from 'styled-components';\r\nimport { useMutation } from '@apollo/react-hooks';\r\nimport { Link } from 'react-router-dom';\r\nimport { GET_DASHBOARD_ITEMS } from '../graphql/queries';\r\nimport { DELETE_DASHBOARD_ITEM } from '../graphql/mutations';\r\n\r\nconst StyledCard = styled(Card)`\r\n box-shadow: 0px 2px 4px rgba(141, 149, 166, 0.1);\r\n border-radius: 4px;\r\n\r\n .ant-card-head {\r\n border: none;\r\n }\r\n .ant-card-body {\r\n padding-top: 12px;\r\n }\r\n`;\r\n\r\nconst DashboardItemDropdown = ({ itemId }) => {\r\n const [removeDashboardItem] = useMutation(DELETE_DASHBOARD_ITEM, {\r\n refetchQueries: [\r\n {\r\n query: GET_DASHBOARD_ITEMS,\r\n },\r\n ],\r\n });\r\n const dashboardItemDropdownMenu = (\r\n \r\n \r\n Edit\r\n \r\n \r\n Modal.confirm({\r\n title: 'Are you sure you want to delete this item?',\r\n okText: 'Yes',\r\n okType: 'danger',\r\n cancelText: 'No',\r\n\r\n onOk() {\r\n removeDashboardItem({\r\n variables: {\r\n id: itemId,\r\n },\r\n });\r\n },\r\n })\r\n }\r\n >\r\n Delete\r\n \r\n \r\n );\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst DashboardItem = ({ itemId, children, title }) => (\r\n }\r\n >\r\n {children}\r\n \r\n);\r\n\r\nexport default DashboardItem;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Menu } from 'antd';\r\n\r\nconst CurrentDateRanges = [\r\n { value: 'Today' },\r\n { value: 'Yesterday' },\r\n { value: 'This week' },\r\n { value: 'This month' },\r\n { value: 'This quarter' },\r\n { value: 'This year' },\r\n];\r\n\r\nconst BusinessesMenu = ({ onClick }) => {\r\n const [businesses, setBusinesses] = useState([]);\r\n const [selectedBusinesses, setSelectedBusinesses] = useState([]);\r\n\r\n const addBusiness = (biz) => {\r\n const foundBiz = businesses.find((b) => b.Id == biz.Id);\r\n\r\n const newBusinesses = selectedBusinesses.concat([foundBiz]);\r\n setSelectedBusinesses(newBusinesses);\r\n onClick(newBusinesses);\r\n };\r\n\r\n const removeBusiness = (biz) => {\r\n const newBusinesses = selectedBusinesses.filter((item) => {\r\n return item.Id !== biz.Id;\r\n });\r\n setSelectedBusinesses(newBusinesses);\r\n onClick(newBusinesses);\r\n };\r\n\r\n const clear = () => {\r\n setSelectedBusinesses([]);\r\n onClick([]);\r\n };\r\n\r\n const toggle = (biz) => {\r\n var isSelected = selectedBusinesses.find((b) => b.Id == biz.key);\r\n var foundBiz = businesses.find((b) => b.Id == biz.key);\r\n if (isSelected) removeBusiness(foundBiz);\r\n else addBusiness(foundBiz);\r\n };\r\n\r\n useEffect(() => {\r\n const fetchBusinesses = async () => {\r\n const result = await fetch('/api/sys/businesses?orderby=Name');\r\n const json = await result.json();\r\n setBusinesses(json.Records);\r\n };\r\n fetchBusinesses();\r\n return () => {};\r\n }, []);\r\n\r\n return (\r\n b.Id.toString())}\r\n >\r\n clear(biz)} key={'default'}>\r\n {'All locations'}\r\n \r\n {businesses.map((biz) => (\r\n toggle(biz)} key={biz.Id}>\r\n {biz.Name}\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nexport default BusinessesMenu;\r\n","import React, { useState } from \"react\";\r\nimport { Spin, Button, Alert, Typography } from \"antd\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { useQuery } from \"@apollo/react-hooks\";\r\nimport { GET_DASHBOARD_ITEMS } from \"../graphql/queries\";\r\nimport ChartRenderer from \"../components/ChartRenderer\";\r\nimport Dashboard from \"../components/Dashboard\";\r\nimport DashboardItem from \"../components/DashboardItem\";\r\nimport PageHeader from \"../components/PageHeader\";\r\nimport { withRouter } from \"react-router\";\r\nimport DateRangeMenu from \"../components/QueryBuilder/DateRangeMenu\";\r\nimport ButtonDropdown from \"../components/QueryBuilder/ButtonDropdown\";\r\nimport styled from \"styled-components\";\r\nimport BusinessesMenu from \"../components/QueryBuilder/BusinessesMenu\";\r\nconst deserializeItem = (i) => ({\r\n ...i,\r\n layout: JSON.parse(i.layout) || {},\r\n vizState: JSON.parse(i.vizState),\r\n});\r\n\r\nconst defaultLayout = (i) => ({\r\n x: i.layout.x || 0,\r\n y: i.layout.y || 0,\r\n w: i.layout.w || 4,\r\n h: i.layout.h || 8,\r\n minW: 4,\r\n minH: 2,\r\n});\r\n\r\nconst DashboardPage = withRouter(({ match }) => {\r\n const { loading, error, data } = useQuery(GET_DASHBOARD_ITEMS);\r\n\r\n const [dateRange, setDateRange] = useState(null);\r\n const [selectedBusinesses, setSelectedBusinesses] = useState([]);\r\n\r\n if (loading) {\r\n return ;\r\n }\r\n\r\n if (error) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n const dashboardItem = (item) => (\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n\r\n const Empty = () => (\r\n \r\n

There are no charts on this dashboard

\r\n \r\n \r\n \r\n \r\n );\r\n\r\n const decodedDashboardName = decodeURIComponent(match.params.dashboardName);\r\n const items =\r\n data &&\r\n data.dashboardItems.filter(\r\n (item, i) => item.dashboardName == decodedDashboardName\r\n );\r\n const Title = styled.h4`\r\n display: inline;\r\n margin-right: 10px;\r\n `;\r\n\r\n return !data || data.dashboardItems.length ? (\r\n
\r\n \r\n \r\n <Typography.Title level={4} style={{ display: \"inline\" }}>\r\n {decodedDashboardName}\r\n </Typography.Title>\r\n \r\n \r\n setDateRange(selectedDateRange.value)\r\n }\r\n />\r\n }\r\n >\r\n {dateRange || \"Default time range\"}\r\n \r\n {\" - \"}\r\n {\r\n setSelectedBusinesses(biz);\r\n }}\r\n />\r\n }\r\n >\r\n {selectedBusinesses.length > 0\r\n ? selectedBusinesses.map((b) => b.Name).join(\", \")\r\n : \"All locations\"}\r\n \r\n
\r\n }\r\n button={\r\n \r\n \r\n \r\n }\r\n />\r\n\r\n \r\n {items && items.map(deserializeItem).map(dashboardItem)}\r\n \r\n \r\n ) : (\r\n \r\n );\r\n});\r\n\r\nexport default DashboardPage;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.less';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport {\r\n HashRouter as Router,\r\n Switch,\r\n Route,\r\n Redirect,\r\n} from 'react-router-dom';\r\nimport ExplorePage from './pages/ExplorePage';\r\nimport DashboardPage from './pages/DashboardPage';\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n); // If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\n\r\nserviceWorker.unregister();\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZMAAACHCAYAAADTLLRYAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyNpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDYuMC1jMDAyIDc5LjE2NDM1MiwgMjAyMC8wMS8zMC0xNTo1MDozOCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIDIxLjEgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkYyMzAxRjQ0QjJEQzExRUFCOUFBQTAzMzZGNUU5NkFFIiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkYyMzAxRjQ1QjJEQzExRUFCOUFBQTAzMzZGNUU5NkFFIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6RjIzMDFGNDJCMkRDMTFFQUI5QUFBMDMzNkY1RTk2QUUiIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6RjIzMDFGNDNCMkRDMTFFQUI5QUFBMDMzNkY1RTk2QUUiLz4gPC9yZGY6RGVzY3JpcHRpb24+IDwvcmRmOlJERj4gPC94OnhtcG1ldGE+IDw/eHBhY2tldCBlbmQ9InIiPz5VKtnGAAAcUElEQVR42uydC1xV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\"","module.exports = __webpack_public_path__ + \"static/media/remove-button.2310b2e0.svg\";","module.exports = __webpack_public_path__ + \"static/media/drag-background.3335e303.svg\";"],"sourceRoot":""}