Only this pageAll pages
Powered by GitBook
1 of 66

Juicebox

Loading...

Loading...

Loading...

Getting Started

Loading...

Loading...

Building Reports

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Viewing Reports

Loading...

Loading...

Loading...

Managing Users

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Managing my workspace

Loading...

Loading...

Loading...

Juicebox Documentation

Welcome to the Juicebox documentation! Here you'll find resources and information on creating and sharing your Juicebox reports, as well as tips and troubleshooting advice. We hope you find this resource helpful.

We are continually updating the documentation to reflect what's new in Juicebox. If you spot an area that is missing or could be improved, please reach out to us to let us know.

Technology requirements

Creating reports in Juicebox requires a computer with an internet connection and a browser. Juicebox supports the latest, stable release of the following browsers:

  • Apple Safari

  • Google Chrome

  • Mozilla Firefox

Microsoft Edge

Creating and editing reports requires a browser with a width of at least 960 px.

Insights

Capture

Annotate

Share

Collect

Debug

Charts

Charts are data visualizations you can add to your report. Each slice can contain one chart. The following charts are available:

  • Headline

  • Filters

  • Chooser

The measure ingredient editor

The measure ingredient editor

Header

Icon

Label (this is the same as the Label under Basics).

Multiple data tables

Each slice is limited to ingredients from a single data table. But you can use multiple data tables within the same story.

When configuring a chart in an app with multiple data tables, you select the data table to use for the chart.

If you do use multiple data tables within a story, please note that filtering between slices using different data tables will only work for ingredients having the same ingredient id in each data table. To see the ingredient id for a particular ingredient, open the ingredient editor, click the gear icon, select Copy ingredient id, and paste it somewhere. If the ingredient ids do not match across multiple data tables, .

Adding new ingredients

New ingredients are created by duplicating an existing ingredient and then modifying it as needed. To duplicate an ingredient, open the ingredient editor for the ingredient you want to duplicate, click the the gear icon, and select Duplicate column or Duplicate. The ingredient editor for the duplicated ingredient will open, ready for you to modify and save.

Card

The Card slice is used to display selected columns and measures on cards. Users can select cards to filter downstream results. Here's an example of a Card slice:

On the Configure tab, you can add the following:

Title. A dimension ingredient with values to display as card titles.

Long text. A dimension ingredient with values to display as card text.

Secondary data. Up to 3 measure ingredients to display on each card.

Image. A dimension ingredient with urls to images to display on each card.

All configuration fields are optional, but you must make a selection in at least one of the fields. In most cases, you will want to configure at least the Title field. There will be a card for each distinct combination of

The ingredient editor

The ingredient editor is a form used to view and edit ingredients. To access the ingredient editor, click on the ingredient pill, either in the data drawer or when configuring charts.

Different options appear in the ingredient editor depending on whether the ingredient is a dimension or a measure and whether the ingredient is a number, date, time, or place. Some of the options only affect particular chart types.

Ingredients

Ingredients are used to configure in Juicebox. There are two types of ingredients: and .

Dimensions

When you first load your data, you'll have one dimension ingredient for each column in your data. You can create additional dimensions from those data columns. For example, let's say your data has 3 columns: First_Name, Last_Name, and Age. After you load your data, you'll have 3 dimension ingredients corresponding to these 3 columns.

Headline

The Headline slice lets you combine images, text, and actions to create custom headers for your report or sections within you report. Here's an example of a configured Headline slice:

On the Configure tab, you can add the following:

Icon or Logo. You can select an icon or upload a logo image.

Announcement. You can add text that has a special style applied.

Announcement action. Using the Action builder form, you can add a link to a website or to a slice slug within the report. This link will appear next to the Announcement text.

Actions. Using the Action builder form, you can add a link to a website or to a slice slug within the report. Each link will appears as a button. You can have multiple Action buttons.

Feature image

How embedding works

Use the Juicebox API to perform user setup and request an embeddable url to show a user an app. That embeddable url can be used as an iFrame src to display the Juicebox in your website.

The Juicebox API is documented .

Table
Card
Reports Navigation
Bar
Scatterplot
Leaderboard
Map
Trend
Pie
Select Duplicate column to duplicate a dimension ingredient
Click the ingredient pill in the data drawer to open the ingredient editor
Click the ingredient pill in the chart configuration to open the ingredient editor
here

Tips and Tricks

Here are some tips and tricks we've learned along the way to help you build great reports:

Telling data storiesVisual designPreparing your dataUseful resources

Data table

Menu

  • Duplicate

  • Duplicate as Advanced

  • Copy ingredient ID

  • Delete

Basics

Field formula

Label

Number format. Select how values should be formatted from the dropdown, or enter a custom number format.

Date format. (For min(date) or max(date))

Styling

Description

Color

Color when negative

Image url

Advanced

Filter

Reverse. By default in the Leaderboard, higher numbers are deemed "better." To flip this for a particular measure, turn on Reverse.

Ranges. To show Measure Chooser or Card gauges or to colorize measure cells in a Table, ranges will need to be defined. Here's an example of ranges defined for a Sales measure:

In this example, there are three ranges: "Below", "On Target", and "Above". Each range is represented by a different color using hex codes and has a specific start and end value. The "Below" range starts at 0 and ends at 4 million, the "On Target" range ends at 5.5 million, and the "Above" range ends at 20 million.

- color: "#ee6055"
  label: Below
  endValue: 4000000
  startValue: 0
- color: "#eaf4f4"
  label: On Target
  endValue: 5500000
- color: "#60d394"
  label: Above
  endValue: 20000000
Title
,
Long text
, and
Image
.

Here's the Configure tab for the example above:

Card slice Configure tab

On the Style tab, you can adjust how the elements display in the slice. Here's the Style tab for the example above:

Displaying cards with measure gauges

There are two gauge card styles: Detail Gauge and Simple Gauge. These require a special configuration.

At least one measure ingredient will need to be added to the Card slice configuration. Each measure ingredient will need to have ranges defined in the Advanced/Ranges section of the measure ingredient editor, like so:

In this example, we have three ranges: "Poor", "Meh", and "Top Tier". Each range is represented by a different color and has a specific start and end value. The "Poor" range starts at 0 and ends at 0.4, the "Meh" range ends at 0.7, and the "Top Tier" range ends at 1.

Here's a Card slice with the Simple Gauge card style:

Card slice using the Simple Gauge card style

The Sales measure used in this example has the following ranges defined under Advanced/Ranges in the measure ingredient editor:

In this example, there are three ranges: "Below", "On Target", and "Above". Each range is represented by a different color using hex codes and has a specific start and end value. The "Below" range starts at 0 and ends at 4 million, the "On Target" range ends at 5.5 million, and the "Above" range ends at 20 million.

Example Card slice
Each column in the data becomes a dimension ingredient

You can click on the ingredient pill to open the ingredient editor. The ingredient editor is where you can see and modify the ingredient definition.

Click on the dimension ingredient pill to open the ingredient editor

To create a new dimension, you could duplicate the First Name ingredient and modify it to add a new dimension ingredient called Full Name that concatenates First_Name and Last_Name together. After that, you'll have 4 dimension ingredients.

A new dimension ingredient called Full Name has been created

Measures

Measures are values calculated over a group of data records. Average sales, student count, and maximum price are all examples of measures. Measures are created using the following aggregation formulas: sum(), avg(), min(), max(), and count_distinct(). Additional aggregations can be used as well (see advanced field formulas) . Measures are not displayed in the data preview. Instead you see existing measures and add new ones as you configure charts.

New measures are added as you configure charts

As with dimensions, you can click on measure ingredient pills to open the ingredient editor.

Click on the measure ingredient pill to open the ingredient editor

charts
dimensions
measures
. You can add an image to appear in the slice.

Here's the Configure tab for the example above:

Headline slice Configure tab

On the Style tab, you can adjust how the elements display in the slice. Here's the Style tab for the example above:

Headline slice Style tab
Example Headline slice
Action builder
reach out to us
Select the data table to use for each chart

The data preview

From the data preview you can see the data table columns, each column's data type, and the first 100 rows in the data table. You can also open the dimension ingredient editor by clicking on the pill at the top of each column.

To open the data preview, first open the data drawer and then select the data table you want to view. To exit the data preview, close the data drawer.

The data preview

Data types

From the data preview, you can see each column in your data and the data types for each column.

Data types for each column can be viewed from the data preview

Here are data types that are recognized in Juicebox:

Certain things in Juicebox require particular data types. For example, creating a sum or average measure only works with number columns, and the chart requires a date or time column. Bottom line: Don't mix-and-match data types within the same column in your data file. Number columns should contain only numbers, date columns should contain only dates, and so on. If a column has more than one type of data, it will get the text data type.

If the data type for a column is not what you expect, that may indicate there is an issue with the data. For example, if you expect a column to have the number data type, but it instead has a text data type, there may be values in the column that are not numbers. Here is guidance on for use in Juicebox.

Managing data

Replace uploaded data

To update uploaded data, click the Replace file button. If there is more than one data table in your report, select the data table that you want to update. (Alternatively, select the data table you want to update, click the gear icon, and select Replace file from the menu.) Then, select the new data file (CSV, XLS, or XLSX).

Select the Replace file button to update an uploaded data table

Once the upload process finishes, refresh the page. The report will then display the updated data.

It is good practice to share before replacing data. That way, if you select the wrong CSV (or something else goes wrong), you can Discard changes and revert back to where things were before doing the replace.

Clear the data cache

To improve performance, charts display cached data. The cache is cleared periodically (by default, every 2 hours), but the cache can be cleared manually by clicking the Clear Data Cache button and selecting Yes, clear it. The cache will be cleared for all data tables used in the report.

The caching period is set at the database connection level and the current options are: no caching, cleared after 2 hours, cleared after 1 day, or cleared after 1 year. If you would like the caching period adjusted for a particular database connection, .

If changes to the structure of a database-connected table are not reflected after clearing the data cache, .

Delete a data table

If you have a data table that you don't plan to use in your report, you may want to delete the data table to declutter the data drawer. To do this, open the data drawer, select the data table you want to delete, click the gear icon, and select Delete.

You will receive a warning message if the data table columns are used in your report.

If you are sure you want to delete the data table, click Yes, delete it.

Download data

For uploaded data tables, you can download the data by opening the data drawer, selecting the data table you want to download, clicking the gear icon, and selecting Download. The data will download as a CSV.

Scatterplot

The scatterplot chart displays a column value as a bubble plotted at the intersection of the x-axis measure and the y-axis measure. Adding a slice with a scatterplot chart (i.e., a scatterplot slice) is a good choice when users want to see the relationship between two measures.

Adding a scatterplot slice

To add a scatterplot slice:

  • select Scatterplot from the chart list

  • select the column with the values you want to display as bubbles

  • select the x- and y-axis measures

  • select the measure to use for the bubble size (optional)

  • select the number of regions

Using a scatterplot slice

Selections made in the scatterplot slice will filter downstream slices. You can select individual bubbles or regions. Selecting a region will select all bubbles within the region.

What is Juicebox?

Juicebox is a platform that lets you easily create and share beautiful, interactive data visualization reports. No code required.

A Juicebox report is the solution you create with Juicebox. Click here to join the Juicebox Gallery workspace to see example reports. Each report has its own URL, and you manage who can view it or make changes to it.

Parts of a Juicebox report

So what makes up a Juicebox report? Each report has the following parts that flow in a hierarchy:

  • A story (or data story) is a set of charts (i.e., data visualizations), text, and media presented on a single page, similar to a data dashboard. Each story should be focused on a particular audience and purpose, and guide users to the actionable insights they need. Within each story are sections, and within each section are slices. (Support for multiple stories per app is planned for a future release.)

  • Each is composed of one or more slices. Sections allow you to control layouts and background colors within the story.

  • are the basic building blocks of your story. Each slice can have text and/or an image, video, or chart.

What's unique about Juicebox

Juicebox lets you easily present and communicate your data to non-technical audiences. Key elements of Juicebox include:

  • No code required. You can build a Juicebox report entirely from your computer browser using the . If you know how to create pivot tables and formulas in a spreadsheet, you are ready to start building reports.

  • Interactivity is automatic. Selections made in slices above flow down to the slices below by default, allowing users to drill down and drive the story where they want to go.

  • Sharing is the point. Juicebox report are meant to be easily. You can decide how to share it (publicly or to only signed-in users). For reports that require a user to sign in, you can set up user data permissions so that each user only sees what they are supposed to see. The reports look great whether shared on a desktop, tablet, or phone.

Filters

The Filter slice allows users to select dimension values to filter downstream results. One or more dimensions can be included in a Filter slice and each dimension will appear as a "pill." When the user clicks on the pill, the dimension values appear in a dropdown and the user can select values from the dropdown. Here's an example of a Filter slice:

Example Filter slice

The Configure tab has the following option (in addition to the common slice configuration options):

Pick columns to filter on. Select one or more dimension ingredients to include as filters. Here's the Configure tab for the example above:

Filter slice Configure tab

The Style tab has the following options (in addition to the common slice configuration options):

Direction. If Horizontal is selected, the pills will display side-by-side. If Vertical is selected, the pills will be stacked vertically.

Alignment. Select Center, Left, or Right to adjust how pills are aligned within the slice.

Hide counts. By default, the number of distinct dimension values will appear in the pill. Enable this option to hide the counts from the pill.

Here's the Style tab for the example above:

Reach out to us

If you have questions or need assistance, please reach out to us. You can do this by emailing us at [email protected]. You can also chat with us from within Juicebox by selecting the help icon in the header of the workspace or app and selecting Chat with us. (The help icon is only visible for users with editing rights.)

Select the help icon to reach out to us

Pie

The pie chart displays column values and their share of the whole. Adding a slice with a pie chart (i.e., a pie slice) is a good choice when users want to see parts of a whole.

Adding a pie slice

To add a pie slice:

  • select Pie from the chart list

  • select the column to use to represent a pie slice

  • select the measure to use to determine the size of each slice

  • select Value to display the actual value of each pie slice or % Percent of whole to display the share of the pie slice as a percent

Using a pie slice

You can hover over or select individual pie slices to see more detail in the center of the chart. Selecting pie slices will filter downstream slices.

Selections as Variables

Slice selections don't always have to filter down the page

By default, selections in a slice filter the data in downstream slices. You can change this default behavior by configuring slice selections.

You can configure the slice selections to act as:

  1. Filters. Slice selections will filter downstream slices. (This is the default configuration.)

  2. Variables. Slice selections will not filter downstream slices but will be available for use in defining ingredients.

  3. Filters and Variables. Slices selections will filter downstream slices and be available for use in defining ingredients.

How to use Variables

If you configure slice selections to act as Variables, the selected values will be saved. You can use the saved values in ingredient definitions. For example, let's say you have a Filter slice with two dimesions: Genres and Directors.

Using variables in your ingredients labels

You can use variables to make dynamic ingredient labels. To start you need to know the ingredient id of the selected variable. You can open the ingredient and click the "..." and select "Copy Ingredient Id".

Use the id of the ingredient being used as a variable in the label by surrounding it with brackets like this “{{ingredient_id}}“. You can also other text in your label too, so "Budget of {{Director}}" would work if an ingredient with id of Director was a variable.The variable must be selected above. Otherwise you'll just get the label without the variable substituted.

Using variables in your ingredient's field expressions

You can use variables in your field definition. For instance, if you have selected a director in a variable, you can refer to the selected director in your field like this: field:

sum(if(Director="{{Director}}", Budget, 0))

Note the double quotes around {{Director}} because it's a string.

Using variables to define constants

You can use variables in your datasource constants. Just refer to the variable to get the first movie released by the selected director.firstMovieReleaseDate: min(if(Director="{{Director}}", ReleaseDate))

Limitations

Here are two things to keep in mind. We plan on improving these later.

  • We only substitute variables in fields, singular, and plural for ingredients. We aren't substituting in buckets. We are substituting in optional fields like id_field or latitude_field.

  • The variable is the first selected value. If you have multiple values selected, only the first will be available.

​

Leaderboard

The leaderboard chart displays which dimensions rank at the top (or bottom) across multiple measures. Adding a slice with a leaderboard chart (i.e., a leaderboard slice) is a good choice when users want to quickly see the "winners" and "losers."

Adding a leaderboard slice

To add a leaderboard slice:

  • select Leaderboard from the chart list

  • select the column with the values you want to be ranked

  • select the measures by which you want to rank the column values

  • select the max rows

  • add slice text (optional)

Using a leaderboard slice

If you have 10 rows in your leaderboard, you can use the LOOK AT options to see the top 10, bottom 10, or top 5 and bottom 5. (If you have 25 rows, you can opt to see the top 25, bottom 25, or top 13 and bottom 12). To see the ranking of a column value not shown in the leaderboard, you can click the filter pill and search for the dimension. Selections made in the leaderboard slice will filter downstream slices.

Focus and Filter

Selections made in a story automatically drive how the story progresses in two ways:

  • focusing

  • filtering

Selections that focus

Selections in charts let you focus in on a particular thing. In the example below, a user can select a measure (like Happiness or Family) using the measure chooser. The chart below shows only the selected measure.

Selections that filter

Selections in a slice will automatically filter downstream slices. This allows users to drill down on the data that is relevant to their problem.

In the example below, there are two slices. The top slice has a chart that shows regions ranked by a Happiness measure, and the bottom slice has a chart that shows which countries lead across multiple measures. Notice that when nothing is selected in the bar chart, the leaderboard shows the leaders across all countries. But when a particular region is selected in the bar chart (i.e., Western Europe), the leaderboard only ranks countries within the selected region.

Navigating Reports

For workspaces with multiple reports, users can navigate between reports from the workspace home page.

Using the home page

After signing in to your workspace, you will be on the workspace home page. Editors for the workspace will see all of the workspace reports. Viewers will only see those reports they have been given access to.

To find a specific report you can use the Sort by feature to order reports by last edit date, last publish date, or alphabetically. You can also use the Search feature to search report titles and descriptions.

To open the draft version of a report, click the Edit button. To open the published version of a report, hover or click around the report title, and then click the View Report button. (If the report has not been shared, you'll see a "Not shared yet" message.)

To get back to the home page from any report, click on the Home button in the report header.

Bar

The bar chart displays column values ranked by a measure. Adding a slice with a bar chart (i.e., a bar slice) is a good choice when users want to compare measures between categories (i.e., column values).

Adding a bar slice

To add a bar slice:

  • select Bar from the chart list

  • select the column to use for the bars

  • select the measure you want to use for the bar width

  • add slice text (optional)

Using a bar slice

Users can scroll if necessary to see all categories. Users can select one or more categories (i.e., column values) to filter downstream slices.

Workspace Settings

You can view and modify your workspace settings by going to the Settings page. To access the Settings page, click the gear icon in the upper right corner of your workspace. From there, select Settings.

Accessing the workspace Settings page

Once on the Settings page, you'll be able to change your workspace name and, depending on your subscription plan, create a custom subdomain and limit app access to only email addresses from a specific domain.

The workspace Settings page

Data

You must load data before you can design your report. Data can be in a flat file (CSV, XLS, or XLSX) or in a database table (or view). You load your data by either uploading the file or, if your data is in a database, selecting the schema and table (or view) to connect to.

The data drawer is where you set up your data. To open the data drawer, click the bar at the bottom of the editing panel. Click the bar again to close the data drawer.

Click the bar at the bottom to open the data drawer

After you load data, you can view your columns in the data preview and configure charts using dimensions and measures.

Reports Navigation

This feature is not available on all plans.

The Reports Navigation slice displays each report the viewer has access to as a card. The viewer can select a card to navigate to that report. Here's an example of a Reports Navigation chart.

Example Reports Navigation slice

If you need to explicitly define which reports are displayed, reach out to us.

Subscription and Billing

Owners can access the the Subscription page by clicking the gear icon in the upper-right corner of your workspace. From there, select Subscription.

Accessing the workspace Subscription page

Once on the Subscription page, you can compare plans and reach out to us about plans customized to meet your needs.

The workspace Subscription page

Map

The map chart displays a as a bubble on a map. Optionally, the bubble can be sized and colored by measures. Adding a slice with a map chart (i.e., a map slice) is a good choice when users want to see geographic information.

Adding a map slice

To add a map slice:

  • select Map

Getting a Workspace

Get a workspace

To get a workspace, go to and click the Let's Talk button. From there, pick a time to talk or send us a message. Once we understand your needs, we'll send you instructions to create your workspace.

Trend

The trend chart displays a measure plotted over time. Adding a slice with a trend chart (i.e., a trend slice) is a good choice when users want to see how a measure changes over time.

Adding a trend slice

To add a trend slice:

  • select Trend from the chart list

Time formats

To control how date or time dimensions are displayed in the report, you can specify a format. For example, let's say you have a dimension called Release Year. A representative value for Release Year in your data is 2019-03-01. You probably do not want to display the unformatted value in your report. Therefore, you will want to specify a time format in the ingredient editor.

The time format specified will determine how the date or time value will display in your report. The following date formats are available for selection in the column editor:

Table

The table chart displays selected dimensions and measures as columns in a table. Users can search, sort, and download the data. To search, click the filter pill and search for any value in the table. To sort the data by the values in a column, click on the column header. If data download is enabled, click on the Data button to download the data as a CSV or Excel file. By default, selecting rows will filter downstream results.

Configure

The Configure tab has the following options (in addition to the ):

Pick columns for your table. Select the dimension and measure ingredients to show in the table. They will appear in the order selected.

Adding Users

Adding viewers to a report

To add a viewer to a report with "Sign in required" access, you . Anyone who clicks on the access link and becomes a new user in your workspace with the and access to the report.

Share

The Share section of the editing panel is where you decide how to share your report with others.

Until your report is shared, only editors in your workspace will see the changes you've made. When you're ready for others to see your report, it's time to share your work with viewers. There are two steps to sharing a report:

  1. Publish the report (or changes to the report)

  2. Invite viewers

- color: lightgray
  label: Poor
  endValue: 0.4
  startValue: 0
- color: gray
  label: Meh
  endValue: 0.7
- color: lightblue
  label: Top Tier
  endValue: 1
- color: "#ee6055"
  label: Below
  endValue: 4000000
  startValue: 0
- color: "#eaf4f4"
  label: On Target
  endValue: 5500000
- color: "#60d394"
  label: Above
  endValue: 20000000
add slice text (optional)
Select Pie from the dropdown
A Pie slice
reach out to us
reach out to us
Select the Clear Data Cache button to clear all query caches for the report
Select the Clear Data Cache button to clear all query caches for the report
Deleting a data table
Deleting a data table
A warning message appears if you attempt to delete a data table that is used in the report
A warning message appears if you attempt to delete a data table that is used in the report
Downloading data
Downloading data
Select the Replace file button to update an uploaded data table
Filter slice Style tab
Select the help icon to reach out to us

2020-10-30 19:35:25.125456

Data type

Description

Example

Text

Variable-length character data

882d8f4dccdb3d143df3cc06901f3399 or Joe or True

Number

Numeric values, either with or without decimals

46 or 53.5

Date

A value for a date that includes the year, month, and day

2020-10-30

Time

trend
preparing your data
The data preview
Data types for each column can be viewed from the data preview

A value for a date and time that includes the year, month, day, hour, minute, second, and (optionally) subsecond

You can also share a report by downloading it as a PNG or PDF file and sending to viewers as an attachment. To download the app, click the Export button in the header or header bar of either the draft or published version of the report.

The following pages describe these steps:

Publishing a report (or report changes)
Inviting viewers

add slice text (optional)

Select Scatterplot from the dropdown
A scatterplot slice
  • Best practices are built in. We have done a lot of thinking about best practices for communicating with data. (Check out our book and blog.) These best practices are already built into the platform, so you don't have to worry about it.

  • section
    Slices
    editing panel
    shared
    Parts of a Juicebox report
    from the chart list
    Select Map from the dropdown
    • select the place column you want to display as a bubble on the map

    • select a measure to use for the bubble size (optional)

    • select a measure to use for the bubble color (optional)

    • select a map style

    • add slice text (optional)

    A map slice

    The map slice requires that you have a place column. A place column is a special type of column that has associated latitude and longitude fields.

    Using a map slice

    You can hover over a map bubble to see details. Selections made in the map slice will filter downstream slices.

    Place column editor

    A place column is a special kind of column that has an associated geographic location (i.e., latitude and longitude). A place column is required by the map chart, and you create a place column when you add a map chart to your data story.

    Place columns are created when you add a map chart

    To create a place column, your data will need three fields:

    1. A field that represents the name of the geographic location (e.g., city, state, country)

    2. A field with the latitude value for each location

    3. A field with the longitude value for each location

    The latitude and longitude fields in your data must be numbers, not strings. In other words, your latitudes should look like 38.8977 rather than 38.8977° N. Likewise, your longitudes should look like -77.0365, rather than 77.0365° W.

    place
    Your new workspace

    After creating your workspace, you'll be taken to the workspace home page. You are the owner of this workspace.

    The workspace home page

    Your workspace will have its own web address (something like 782-wily-persimmons.myjuicebox.io, which may be customized, depending on your subscription plan). This is your workspace URL. You can go directly to this URL to access your workspace.

    The workspace home page

    After signing in to your workspace, you will be on the workspace home page. What you see on the home page will depend on your user role:

    • Viewers will only see those reports they have been given access to.

    • Editors, admins, and owners for the workspace will see all reports in the workspace.

    • Owners and admins will have access to the People page to manage users.

    • Owners will have access to the workspace and pages.

    To find a specific report you can use the Sort by feature to order reports by last edit date, last publish date, or alphabetically. You can also use the Search feature to search report titles and descriptions.

    To open the draft version of a report, click the Edit button. To open the published version of a report, click the View button.

    Open the draft or published version of a report from the workspace home page

    To get back to the home page from any report, click on the Home button in the report header.

    Click the Home button to return to the workspace home page
    juiceanalytics.com
    Get in touch to get a Juicebox workspace
    Select Trend from the dropdown
    • select the time column to use for the x-axis

    • select up to 5 measures to display on a single y-axis

    • select 1 measure to display on a second y-axis (optional)

    • add slice text (optional)

    A Trend slice

    The trend chart requires a time column. A time column is created from date or time fields in your data. The time format selected for the time column will determine how your dates "roll up" in your trend chart. For example, if you select the format month yyyy, the trend chart will roll up by month. If you select the format yyyy, the trend chart will roll up by year.

    Time ingredients will "roll up" in charts to the period selected for the Format. For example, selecting the month yyyy format will roll up to the month. Selecting the yyyy format will roll up to the year.

    Using a trend slice

    You can hover over individual points to see more detail. Date range selections made in the trend slice will filter downstream slices.

    Dates in the data that are missing values will show a break in the trend line, like so:

    The trend line has a break because household_size is null for all 1973 dates

    March 1, 2019

    dd mon yyyy

    %-d %b %Y

    1 Mar 2019

    mm/dd/yyyy

    %-m/%-d/%Y

    3/1/2019

    mm-dd-yyyy

    %-m-%-d-%Y

    3-1-2019

    month yyyy

    %B %Y

    March 2019

    yyyy

    %Y

    2019

    If you want to apply a time format other than one in the dropdown, you can do so by entering the custom format in the Time format box using these codes. For example, let's say you want to display Release Years like "Mar 01 2014" (abbreviated month, padded day, and full year with no commas). You can do by entering %b %d %Y, like so:

    Enter a custom time format

    Date or time ingredients will "roll up" in charts to the period selected for the Format. For example, selecting the month yyyy format will roll up to the month. Selecting the yyyy format will roll up to the year.

    format label

    d3 equivalent

    How value2019-03-01will display

    month dd, yyyy

    Select a time format

    %B %-d, %Y

    Selected dimensions and measures with a number data type will be right-aligned within the table column; all other data types will be left-aligned.

    Enable download. If enabled, users will be able to download the data.

    File type. If downloads are enabled, select either Excel or CSV for the download file type.

    Style

    The Style tab has the following options (in addition to the common slice configuration options):

    Max rows per load. Enter the number of rows to load. The default value is 250.

    Show button to load more. If enabled, a Load more button will display if the number of rows exceeds the max rows per load value.

    Hide column icons. If enabled, icons for all columns will be hidden.

    Measure range coloring. If enabled, ranges defined for measures in the the Advanced/Ranges section of the measure ingredient editor will be used to color the measure table cells. For example, in the example above, the Avg Sales measure has the following ranges defined:

    Sort column. Set which column to sort on and the sort order for the initial sort. (The user can override the sort order by clicking on the column header.)

    common slice configuration options
    Example Table slice
    For reports with "Anyone with the link" access,
    (no sign in required).

    Adding editors to your workspace

    You can add an editor to your workspace from either the People page or from the editing panel of any report. From there, click the Add Editor button.

    From the People page, click Add Editor to invite a new editor to the workspace
    From the editing panel, click Add Editor to invite a new editor to the workspace

    Next, select whether to invite the new editor by creating and sharing an invite link or by sending an invitation via email.

    Select whether to invite by link or by email

    Invite by link

    To invite a new editor by invite link, select Create Invite Link. Then copy the one-time use invite link and share with the person you want to invite as an editor. Because the invite link will only work once, you should only share the link with one person. Upon clicking the link, the person will be asked to create a Juicebox account if one does not already exist and sign in. After signing in, the person will be an editor in your workspace.

    Copy and share invite link with one person

    Invite by email

    To invite a new editor by email, select Invite via email. Then enter the email addresses for each person you want to invite as an editor and click Send. Each person will receive an email with a one-time use link. Upon clicking the link, the person will be asked to create a Juicebox account if one does not already exist and sign in. After signing in, the person will be an editor in your workspace.

    share a viewer access link
    signs in
    viewer user role
    anyone with the report link can view the report
    chooser
    bar
    bar
    leaderboard
    Selections in choosers let the user focus in on a particular measure
    Selections in slices above filter slices below
    Select Leaderboard from dropdown
    A leaderboard slice
    Open the draft or shared version of a report from the home page
    Click the Home button to return to the workspace home page
    Select Bar from the dropdown
    A bar slice

    Loading data

    You must load data before you can configure charts. There are three ways to load data:

    1. Upload a data file

    2. Connect to a database table

    3. Connect to sample data

    The data drawer is where you set up your data. To open the data drawer, click the bar at the bottom of the editing panel. Click the bar again to close the data drawer.

    Upload a data file

    To upload the report's first data file, open the data drawer and drag a flat file (CSV, XLS, or XLSX) containing your data onto the data upload box or click Upload CSV or Excel and select the file to be uploaded. The file will be loaded to a BigQuery table and connected to the report.

    To load additional data files, first click the + and then drag-and-drop or select your CSV or Excel file.

    When loading data files, it is important that your data be nice and clean. Here are some tips for .

    Connect to a database table or view

    This feature is not available on all plans.

    If your report is connected to a database, you can select the schema and table (or view) to use as the data source. To set up a database connection, . The following databases are supported:

    For databases that are not maintained on a cloud platform, we support the latest two release versions. Earlier versions may work with Juicebox, but are not supported.

    Connect to sample data

    Juicebox also provides a selection of sample data tables if you want to start exploring before you have your own data. To load sample data, open the data drawer, select the Sample Data button, and choose one of the available datasets.

    Choose a sample data table and select Add Table.

    The sample data includes the following tables.

    The dimension ingredient editor

    Header

    In the ingredient editor header, you can set the icon and label, view the source data table, and access perform various actions from the gear menu.

    The dimension ingredient header

    Icon. This is a FontAwesome icon associated with the dimension ingredient. By default, text dimensions have check-square, time dimensions have calendar, place dimensions have map-marker-alt , and number dimensions and measures have hashtag . The default icon can be changed, or the icon can be removed.

    Label. This is the ingredient label. It is the same as the Plural label.

    Data table. This displays the name of the source data table.

    Gear menu. Provides access to the following actions:

    • Duplicate column. Creates a new dimension ingredient with the same definition. This is used to .

    • Duplicate as Advanced. Creates a new dimension ingredient with the same definition expressed in yaml. This is used in cases where the UI does not yet support a particular configuration option. In most cases, you should not need to duplicate as Advanced.

    • Copy ingredient ID. Copies the underlying ingredient ID for use in complex ingredient field formulas.

    Basics

    The Basics section of the ingredient editor contains the options that are required or used most frequently.

    Field formula. This is where the ingredient logic is defined. It could be the name of a single column or it could involve .

    Plural label. This is the label that will be used when the user selects multiple dimension values or no dimension values in the report.

    Singular label. This is the label that will be used when the user selects a single dimension value in the report.

    Number format. Only for dimensions with a number data type. Select how values should be formatted from the dropdown, or enter a custom .

    Time format. Only for date or time dimensions. Select how values should be formatted from the dropdown, or enter in a custom .

    Date or time ingredients will "roll up" in charts to the period selected for the Time format. For example, selecting the month yyyy format will roll up to the month. Selecting the yyyy format will roll up to the year.

    Latitude. Only for place dimensions. Enter the column associated with latitude value.

    Longitude. Only for place dimensions. Enter the column associated with the longitude value.

    Geometry Field. Only for place dimensions. Enter the column associated with the geojson geometry field.

    Styling

    Description

    Color

    Color when negative

    Image url

    Hide count. By default, filter pills will display the count of distinct dimension values. Enable this option if you want to hide the count.

    Advanced

    Buckets

    A bucketed dimension groups field values into buckets based on in the Buckets box, like so:

    For example, let's say your data includes a score field with customer scores, and you want to use the scores to group customers into different roles: Detractor, Passive, and Promoter. Here's what you would enter in the Buckets box:

    Conditions are evaluated in the order they are defined, which makes defining buckets for continuous values convenient:

    The Buckets default label is the label to display if a value does not meet any of the conditions.

    Lookups

    If the values in a field are not what you want displayed in your report, you can create lookups to change them by entering a list of values to lookup with their associated value to display in the Lookups box, like so:

    For example, let's say the Country field has "United States" values that you want to display as "USA", and it has null values that you want to display as "Unknown". Here's what you would enter in the Lookups box:

    If there is a value in the field that is not added to the list of values to lookup, then the original value in your data will be displayed.

    Id Field. Specify a custom unique identifier for columns. Especially useful for selections and filtering in unique cases. For example, you could set the field definition to string(" ") to hide the values and the Id Field to last_name .

    Order By

    Filter

    Reverse. By default, higher numbers are deemed "better." To flip this, turn on Reverse.

    Creating and Editing Reports

    If you're logged in as an editor (or a user with editing rights), you're able to create and edit reports.

    Add a new report

    To add a new report, select + Create New from the home page.

    Select + Create New to add a new report

    After selecting + Create New, you'll be asked to select the starting point for building your report. You can start with a pre-designed report from the Examples or select Start with a blank report to build an report from scratch:

    • Examples. Selections in the Examples category are finished reports, with data loaded and charts configured using that data. Examples are great to add to your workspace and use as reference or inspiration.

    • Start with a blank report. Select Start Blank if you want to start with a blank slate.

    After selecting your starting point, the report creation wizard will walk you through creating your report. You'll provide a title, description, color theme, and font, and then select Create Report to create your report. (Alternatively, you can select Skip Setup to create your report with default settings.)

    Once your report is created, you'll be taken to the draft version of the report. You're now ready to edit the report to and .

    Edit a report

    You make changes to a draft version of the report (the draft report) using an in-browser interface called the editing panel. Only can access the editing panel.

    While changes made in the editing panel are immediately reflected in the draft report, viewers cannot see the changes until they are .

    Accessing the editing panel

    To access the editing panel from the home page, select Edit on the report.

    To access the editing panel from a published report, select Cmd+E (Mac) or Ctrl+E (Windows).

    Overview of a draft report

    Changes to a report are made to a draft version of the report. If you see the editing panel, you know you are in the draft report. The editing panel is located on the left side of the draft report. Changes made and saved in the editing panel are immediately reflected in the draft report.

    Changes made in the editing panel are immediately reflected in the draft report, but viewers cannot see the changes until they are . Learn more about .

    You your report using the editing panel. You add to your report from the data drawer. You your report (or report changes) by clicking the Sharing button.

    Duplicate a report

    To duplicate a report, click the Duplicate Report button at the top of the editing panel. (Alternatively, you can click the Duplicate Report button from report Settings menu or from the home page.) Next, give your new report a title and select Duplicate. Once the new report is created it will open as a draft version, ready for you to edit and share.

    Delete a report

    To delete a report, open Settings & Themes and click the Delete Report button. (Alternatively, you can click the Delete Report button from the report Settings menu or from the home page.) Then confirm that you want to delete the report.

    Deleting a report cannot be undone.

    Publishing a report (or report changes)

    The first step in sharing a report is publishing the report.

    Publishing for the first time

    To publish for the first time, click the Sharing button in the report header. It will say "Start Sharing".

    Click Start Sharing to share a report for the first time

    Next, decide how you want to control access to the report:

    • Sign in required. Report can only be viewed by those that have signed in with a Juicebox account that has access to the report. Viewer access to the report can be by workspace owners or admins.

    • Link with a password. Report can be viewed by anyone with the report link and password. Because sign in is not required, report access cannot be managed.

    • Anyone with the link. Report can be viewed by anyone with the report link. Because sign in is not required, report access cannot be managed.

    If your report contains information that not everyone should see, you should publish it as Sign in required. If your report does not contain sensitive information, you may not know how you want to control access to the report. That's ok! Just select one and change it later as needed.

    After publishing, you are ready to .

    Publishing changes to a report

    Until you publish them, any changes you make to a report are only visible to editors while in the draft report. That is, viewers with access to the report won't see your changes until you publish them. With Juicebox, you can publish, refine your report, publish the new changes, refine some more, publish the new changes, and so on. You can continually improve and experiment without affecting what viewers see until you're ready.

    To publish changes, click the Sharing button in the report header. It will say "Sharing". Then click Save & Publish.

    Edit freely - you can always , to return to the last version of the report that you shared with viewers.

    The version of the report that editors work on is called the draft report. All changes are saved to the draft report until they are published, you do not have to keep track of whether you are working in the draft report. Here are indicators that you are in the draft version:

    • You see "draft" in the report url

    • You see the editing panel

    • You see the Sharing button

    Discarding changes to a report

    At some point you may want to discard all the unpublished changes in the draft report and go back to the previously published version of the report. To do this, click the Sharing button and select Discard.

    Discarding changes will discard all changes made since the last publish including changes to data.

    Limiting what data users can see

    Juicebox apps have integrated data permissions.

    Data permissions objects create filters that are applied to every database query. If the database table does not contain the column or ingredient referenced, the data permission will be ignored.

    Data permission objects reference ingredients which are named expressions that can use more than one database column. Data permission objects will soon be able to reference raw table columns by surrounding the column name with square bracket.

    • ingredient: [list of values] Show only rows where the ingredient expression evaluates to one of the list of values.

    Soon, Juicebox will also support accessing raw column values like this

    [column]: [list of values]Show only rows where the database column is in the list of values.

    For all the following examples an [column] can be used in any place where an ingredientis used.

    • ingredient__notin: [list of values] Show only rows where the ingredient expression does not contain a value in the list of values.

    • ingredient__eq: value Show only rows where the ingredient expression is equal to a value.

    • ingredient__ne: value Show only rows where the ingredient expression is not equal to a value.

    Examples of data permissions

    This user can only see rows where the state ingredient is in the list of four states AND the age ingredient is greater than 30.

    This user can see rows where the database table contains a column named “Student Name” which is equal to “Maria Hill” and the column named “Organization” is equal to 101.

    Making data permissions affect all apps

    Making data permissions that affect individual apps

    Embedding Juicebox Apps

    Juicebox apps can be embedded in any website you control.

    Overview of Embedding

    Delivering a Juicebox story requires:

    1. A Juicebox application.

    2. Juicebox users that may have .

    3. A website where your story will be displayed.

    Embedding gives you control of items 2) and 3). For these examples, we’ll call you HealthyCo 🧃. You sell organic juices and have developed several reports for internal and external use to show how your juices are performing.

    What is embedding?

    Embedding allows Juicebox stories to be delivered in any webpage by generating a one-time use url that represents a user viewing a report.

    This url can be displayed in an iFrame on HealthyCo’s website.

    When should I use embedding?

    There are several ways to use Juicebox.

    How embedding works

    Use the Juicebox API to perform user setup and request an embeddable url to show a user an app. That embeddable url can be used as an iFrame src to display the Juicebox in your website. .

    Signing In

    You can sign in to your workspace by going directly to your workspace URL or by going to myjuicebox.io and clicking the Sign back in button.

    Signing in using your workspace URL

    After entering your workspace URL into the browser, you'll be asked to sign in to your workspace. You can sign in by email or by using a Google or LinkedIn account.

    Sign in from workspace URL

    Signing in using

    You can sign in to your workspace by going to . From there, click the Sign back in button.

    Next, sign in using your email address or using your Google or LinkedIn account. If there is more than one workspace associated with your email address, you'll be asked to select a workspace. Otherwise, you'll be taken directly to your workspace.

    Signing in from an access link or invitation email

    You may be invited to join a workspace through an access link or through an invitation email. After clicking the access link or Open Report button in the invitation email, you'll be asked to sign in.

    From there, you can sign in with a Google account, LinkedIn account, or email address. If you do not already have an account, you'll be asked to sign up for one.

    Useful resources

    Here are some resources that we use at Juice and recommend.

    Colors and images

    Here are some tools we like for finding the right colors and images for your report:

    • Eye Dropper: a Google Chrome extension that lets you find the hex code for any color on most websites.

    • : a color scheme generator that helps you find colors that work well together.

    • : a source for freely-usable images, with photographer attribution.

    Fake data generator

    Sometimes you want to play around with design before gathering real data. To do that, you'll need some fake data. can help generate good quality fake data quickly. We've also had success asking GenAI tools like to create fake data.

    Data preparation

    Cleaning and restructuring data is a lot easier with a tool like .

    If you need help with data preparation or ETL tasks, .

    Access Views

    Access Views combine data permissions, selections, security, and app features into a view that you can embed or share with users.

    Setting Data Permissions for an Access View

    See Limiting what data users can see.

    How to set selections on an Access View

    You can preselect items for your users on the Access View. A selections object contains keys that are a colon delimited pair of the Slice Slug and the Ingredient Id of the Ingredient used in the slice.

    You can find the Slice Slug in the editor.

    The Ingredient Id can be found by selecting the Ingredient grouping used in the slice, then selecting "Copy Ingredient Id" in the ingredient editor.

    Making selections in a chooser

    Choosers can just include the chooser slice name.

    For choosers, you need to get the Ingredient Id for the Ingredient you want to select

    To select the third "Count of Date and Time" ingredient in the chooser above, you'd use this selections object.

    Making selections in the Access View URL.

    You can also make selections using the url. To do so, pass the data like this:

    Here's an example of a complex selection that selects one choice and two items on a leaderboard. All of this would appear on a single line, but we're splitting it to make it easier to read. Note that spaces need to be by replacing them with a "+" sign or "%20".

    The result looks like this:

    Juicebox API

    The Juicebox API can be used for generating urls to embed apps in your webpage.

    Handling Pagination

    The maximum pagination size is limited by object. Apps are limited to page sizes of 100, other objects will return 10000 objects. If the number of available objects exceeds the limit, the list will be paginated. Response headers will contain the following values.

    • X-Count The total number of objects available.

    • X-PageThe current page number

    • X-PageSize The number of objects on each page.

    • X-Next A link to fetch the next page of data. This will be "None" when on the last page of data.

    • X-Previous A link to fetch the previous page of data. This will be "None" when on the first page of data.

    Dynamic text

    Slice text can change dynamically based on what a user has selected in slices above.

    It is best practice to add dynamic text after configuring charts. Dynamic text will only return selections in charts.

    For example, suppose you have a slice followed by a slice, and the measure used in the trend slice is the measure selected in the upstream chooser slice. Your trend slice title says "Here's the trend for the measure selected above":

    You want to replace the phrase "the measure selected above" with the label of the measure selected above. For example, If the user selects IMDb Rating

    Approach

    How to setup users

    The user experience

    Invite users with access keys

    This is easiest for small numbers of users as it requires no integration or development work by HealthyCo.

    Use the app sharing view to create

    Apps are displayed on a subdomain of the Juicebox website. For instance, healthyco.myjuicebox.io.

    Embedding

    This is the most flexible approach and presents the Juicebox report directly in the HealthyCo website.

    Use Juicebox APIs to set up users with the correct data permissions. This can be fully customized by HealthyCo developers.

    The Juicebox story is embedded seamlessly in an iFrame on HealthyCo’s webpage.

    data permissions
    Here is the flow
    Coolors
    Unsplash
    Mockaroo
    ChatGPT
    Alteryx Designer Cloud
    reach out to us

    Snowflake

  • SQL Server

  • Sample Data

    Description

    lego_sets

    🎛 LEGO sets (CSV download or see the data in a Google Sheet). Source: Kaggle

    movie_trends

    🎬 Movie Trends (CSV download or see the data in a Google Sheet). Source: Kaggle

    olympic_medals

    🥇Olympic Medals 1896-2012 (CSV download or see the data in a Google Sheet). Source: International Olympic Committee, The Guardian Datablog, and Kaggle

    video_game_sales

    🎮 Video Game Sales (CSV download or see the data in a Google Sheet). Source: Kaggle. A helpful getting started article and video to create a dynamic bar chart.

    world_happiness_report_2020

    😀 World Happiness Report 2020 (CSV download or see the data in a Google Sheet). Source: World Happiness Report and Data.World

    preparing your data
    reach out to us
    BigQuery
    Databricks
    Postgres
    Redshift
    Click the bar at the bottom to open the data drawer
    Add data by uploading a CSV or Excel file
    Click the "+" in the data drawer to add additional data files
    Load sample data
    Settings
    Subscriptions
    The workspace home page
    Open the draft or published version of a report from the workspace home page
    Click the Home button to return to the workspace home page
    add your data table
    design your story
    users with editing rights
    shared
    shared
    how to manage report changes
    design
    data
    share
    Accessing the editing panel from the home page
    Parts of a draft report
    Duplicate a report
    Delete a report
    managed on the People page
    invite viewers to your report
    discard changes
    Select how you want to control access to the report
    Click "Sharing" to publish changes to a previously shared report
    Click "Discard" to revert back to the previously published version of the report
    myjuicebox.io
    myjuicebox.io
    Sign in from myjuicebox.io
    Sign in from a workspace invitation link

    ingredient__like: value Show only rows where the ingredient expression is like the value expression. Use % to represent wildcards.

  • ingredient__gt: value Show only rows where the ingredient expression is greater than a value.

    • You can use lt, lte, gt and gte for less than, less than or equal, greater than or greater than or equal respectively.

  • ingredient__between: [value1, value2] Show only rows where the ingredient expression is between value1 and value2

  • url-encoded
    The Slice Name
    Getting the Ingredient Id
    Finding Ingredient Ids for a Chooser
    One choice and two leaderboard selections
    { 
      "state": ["New Hampshire", "Vermont", "Maine", "Massachusetts"], 
      "age__gt": 30 
    }
    {
      "[Student Name]": "Maria Hill",
      "[Organization]": 101
    }
    {
       automatic_filters: {Data Permission Object}
    }
    {
       app_filters: {
         {app_slug}: {Data Permission Object}
         {app_slug2}: {Data Permission Object}
       }
    }
    {
       "{Slice Slug}:{Ingredient Id for Slice 1}": [{List of values}],
       "{Slice 2 Slug}:{Ingredient Id for Slice 2}": [{List of values}]
    }
    { 
       "{Chooser Slice Name}": [{Ingredient Id to select}]
    }
    {
       "Choice1": ["metric_dateandtime_z936yh2d"]
    }
    {url}?Choice1=metric_dateandtime_z936yh2d
    {url}?Choice1=metric_num_5fta5sgd
    &Leaderboard1:title=Beginning+of+2020
    &Leaderboard1:title=End+of+Aug+15
    Delete column. Deletes the ingredient.
    add new ingredients
    complex logic
    number format
    time format
    conditions
    The dimension ingredient Basics section
    Adding buckets
    Adding Lookups
    in the chooser slice, you want the trend slice title to display "Here's the trend for
    IMDb Rating
    ." Likewise, if the user selects
    Budget
    , you want the trend slice title to display "Here's the trend for
    Budget
    " (and so on).

    To do this, you would replace "the measure selected above" in the slice text area with dynamic text that references the chooser slice. Clicking the "@" button in the chooser slice will copy the dynamic text reference (also called the "slice slug"), which you can then paste into the downstream slice text.

    The trend slice now has dynamic text that displays the selection made in the measure chooser slice

    Here's what that looks like:

    More dynamic text shortcuts

    You can access other details about a slice with the following shortcuts.

    Shortcut
    Description

    @Slice.pill

    Display a selectable pill that lets you change the selection in Slice.

    @Slice.label

    Show a label for what kind of item is being selected in Slice.

    @Slice.list

    List the selections in Slice.

    @Slice.count

    Show the total number of unique items in Slice.

    @Slice.number

    Show the total number of selected items in Slice

    Here's an example

    We have a slice that lets you look at a leaderboard of Directors using the Movie Trends data.

    This slice is Leaderboard1

    We can use the dynamic text below to show and change details about what is selected. Here's the text

    @Leaderboard1.number selected out of @Leaderboard1.count @Leaderboard1.label

    The selections are @Leaderboard1.list

    Change them yourself here @Leaderboard1.pill

    Here's what this looks like.

    chooser
    trend
    The trend slice has a static title. Let's make it dynamic.

    Visual design

    Handy tips for telling a great data story visually.

    Data doesn't speak for itself.

    While "the data speaks for itself" is a nice idealistic phrase, in practice people often don't see or hear anything from the data because it is simply presented poorly. While you don't want to present a message the data isn't saying, you do want to ensure valuable insights are both attractive and effective.

    Visual design is about guiding attention. Let's look at some simple tips to guide attention through your data presentation.

    Photo by Halacious on Unsplash

    Color

    • Choose a data color that resonates with your story topic or company brand. Bolder, vibrant colors tend to be better for this.

    • Use section color backgrounds to define a visual flow for your story. For example, you may want a bold colored introductory section to grab interest, and then use lighter color section backgrounds in the rest of your story that will be less distracting for reading data from charts.

    • Be sure your text has good contrast for readability. If a dark background color is chosen on a section or slice, Juicebox will automatically make your text white.

    Typography & Styles

    • There are several font themes to choose from. Choose a set that conveys the mood of your story best. Is the story more opinionated or explanatory? Choose the "Literary" style. Is the story more a statistically accurate report update? You may want to choose "Professional", or "Bold" if you want to make a stronger point.

    • Use large text headers in Slice text to create titles for your sections.

    • Use small text for notes about data or guidance tips you would like to communicate to your viewers.

    Column and Measure Labels & Icons

    • Any data you add to Juicebox will be represented by a . Taking the extra thought to label this well and provide complimentary icons will make the editing experience better for you as an editor. However more importantly, this will result in a more unique and understandable story for your audience.

    • Keep your labels as short as possible while maintaining clarity. For example, instead of "Sales Dollars", you may just want to write "Sales" since you can use a dollar sign for your icon and format your numbers with the dollar format.

    • Icons allow you to add uniqueness or personality appropriate to your story style and data. Don't be afraid to have some fun with your icons! Search for good icons via text search or categories dropdown.

    Slices & Layouts

    • Unlike other dashboard reporting tools, Juicebox is more about helping you present your data like a story that has a beginning, middle, and end. This is why slices lay out vertically, by default, like a cross between a website and a slideshow presentation. You wouldn't start a presentation to your team by showing thumbnails of all your slides at once. Why would a data presentation be any different?

    • Put text next to your chart with a slice "Chart on right" or "Chart on left" This is great for adding more explanatory text that can easily be read while viewing a chart.

    • You also may put entire slices next to each other by changing the section layout to "Side-by-side layout". For this option, sometimes slices will scroll horizontally, so this is a good option when there are charts or text you would consider optional viewing.

    Branding

    • Often you may have a logo or branding colors you would like to style a data story with. You may want to set the as your logo color. And then use lighter secondary brand colors in section or slice backgrounds.

    • Have a logo? to a slice for instant brand appeal. Voila!

    Photos

    • You can to a slice, either your own or images from . Photos are a great opportunity to add visual interest to your story. Similar to a blog post with a great intro image, data stories are no different.

    Design

    Design is where you tell your story.

    The editing panel appears on the left of the draft report and is where you design the report.

    The editing panel is on the left of the draft report

    These are the editing panel components:

    • Header buttons

    • Settings & Themes

    Header buttons

    At the top of the editing panel are two buttons: Add Editor and Duplicate Report.

    The Add Editor button allows you to to the workspace.

    The Duplicate Report button creates a duplicate version of the report.

    Settings & Themes

    The Settings & Themes section is where you modify the basic settings for your report (title, description, icon) and the color and font themes. Here you also can delete a report and turn off the default behavior that automatically loads design changes to the draft report. Just expand the Settings & Themes section and make changes as needed.

    Delete Report. Click this button to delete the report.

    Icon. The icon appears on the home page and report header. Each report starts with a basic icon.

    Title. The title appears on the home page and report header. Aim to keep this short, ideally 1-3 words.

    Description. The description appears on the home page and report header. Here's where you add a bit more detail about your report. Aim to keep it at a sentence or a few phrases in length.

    Color theme. Choose the color theme to use for your report. You can select from pre-designed color themes or customize your own. The color in the circle will be the color used in charts. The three additional colors will be used automatically as the header and section backgrounds and will be available for selection as the background color for the header, sections, and slices.

    You can switch color themes at any time. If theme colors are used as backgrounds, these will be switched to the new theme colors. (If a non-theme color is used as a background, this color will not change when the theme changes.)

    Font theme. Choose a font theme for your report. You can switch font themes at any time.

    Editor controls. By default, changes made to the report design in the editing panel will be automatically loaded to the draft report. You can turn off that behavior by toggling off Editor controls. If Editor controls is turned off, you will have to click Reload Changes in the draft app before the changes will be loaded.

    Changes to settings and themes must be shared before they will appear on the home page.

    Header Style

    The Header Style section is where you create and style a basic header for your report. To do this, expand the Header Style section, select a header style, and adjust the header background as needed.

    Click the paint drop icon in the upper right of the Header Style section to adjust the header background color or image.

    • Customize. The Customize button will allow you to define or modify a custom color theme. Any other section or slice using the original theme colors will change to the new colors.

    • Custom. The Custom button lets you add a color outside of the color theme. Using the custom color will not affect any section or slice using a theme color.

    If you want to create a more custom header, you can set the Header Style to "No Header" and use the to design the custom header.

    Sections

    Sections are groups of slices within a report. Sections allow you to control layouts and backgrounds. To add a section, click on the plus-sign button that appears when you hover above, below, or between existing sections and select the type of chart to add to the new section. (If you're not sure which chart type, pick any of them. You can always delete it later.)

    Rename the section. The new section will have a name. Click on the name to edit it.

    Hide the section. When you hover on the section name, you'll see a toggle. If toggled off, the section will not display in the report.

    Delete the section. To delete a section, click on the gear icon and select Delete Section.

    Adjust the section layout. By default slices within a section will be stacked, one on top of the next, with no space in between. This default layout can be adjusted by clicking the Section Style dropdown.

    There are commonly used layouts available in the Layout dropdown, as well as the option to define a Custom layout. Custom layouts allow you to place slices exactly where you want.

    Adjust the section background. You can adjust the section background color and/or image by clicking the paint drop icon and making changes as needed.

    • Customize. The Customize button will allow you to define or modify a custom color theme. Any other section or slice using the original theme colors will change to the new colors.

    • Custom. The Custom button lets you add a color outside of the color theme. Using the custom color will not affect any section or slice using a theme color.

    If you choose a dark background, Juicebox will invert the visualization and text colors automatically.

    Collapse and reorder sections. To move a section up or down, hover over the section header and drag and drop the section where you want it to display. Because sections can get quite long, reordering will be easier if you collapse your sections first. To collapse a section, simply click the section header. To expand a collapsed section, click section header again.

    Listening to other sections. [Coming soon.]

    Slices

    Slices are the basic building blocks of your report. There's a lot to say about them on the next page.

    Inviting viewers

    After you publish your report, it's time to invite others to view it! How this happens depends on how you are controlling access to the report.

    Sharing a report with "Anyone with the link" access

    To share a report with "Anyone with the link" access, copy the report link and share it with others as you would any other website link. Anyone who clicks on the link will see the published version of your report.

    Slices

    Slices are the basic building blocks of your story. Slices are added to . Each slice can have text either by itself or with media (image or video) or a .

    Adding, duplicating, and deleting slices

    To add a slice to an empty section, click on the section header and select the slice type from the list. To add a slice to a section that has one or more slices, click the + button where you want the new slice to appear and select the slice type from the dropdown.

    Rather than adding a brand new slice, it may be easier to duplicate and modify an existing slice. To duplicate a slice, select the gear icon and then select

    Preparing your data

    Data preparation is tedious and time-consuming. We get it. But unless the data is properly prepared, your report design process is likely to be frustrating and unsuccessful. Time spent preparing your data will be worth it.

    What does properly prepared data look like?

    • Organized. Data values are organized in columns and rows in a single table. No merged cells, and no titles or notes that span multiple columns.

    Chooser

    Summarize measures, and allow user selections to configure other charts dynamically.

    A chooser chart can be used to:

    • Show a summary of measures

    • Let a user choose which measure to use in downstream charts

    • Let a user choose which column to use in downstream charts

    - label: Detractor
      condition: score <= 6
    - label: Passive
      condition: score <= 8
    - label: Promoter
      condition: <= 10
    - label: Under 25k
      condition: <25000
    - label: 25k-49k
      condition: <50000
    - label: 50k-99k
      condition: <99000
    value to lookup: value to display
    value to lookup: value to display
    value to lookup: value to display
    Adding a scatterplot slice
    Adding a leaderboard slice

    If you do add photos, think about how well the colors compliment the rest of your visuals.

  • Less is more. The more colors you add, the less you can use color to emphasize specific messages or your data you don't want to get lost.

  • Want to add a bit more😄fun?! Sprinkle in emojis.

    In general, a bit of layout diversity will create a more visually interesting story, but don't forget to put yourself in your audience's shoes. They are likely less familiar with the data than you, so you don't want to create unnecessarily distracting layout changes when they are simply wanting to understand something clearly.

    column or measure
    layout option.
    data color
    Add the logo image
    add images
    Unsplash
    Embedding a report with "Anyone with the link" access

    Reports with "Anyone with the link" access can be embedded in your site using an iframe. To do this, click the Copy Embed Code button and paste the embed code into your website:

    • In Squarespace you'll want to add a code block.

    • Wordpress lets you embed media from other sites as explained in this article.

    • Guidance for embedding on Wix is here.

    Copy the embed code

    Sharing a report with "Link with a password" access

    To share a report with "Link with a password" access, copy the report invite and share it with others. Anyone who clicks the link in the invite and enters the password will gain access to the published version of your report.

    Copy and share the password-protected invite
    Users need to enter the password to access the report

    Sharing a report with "Sign in required" access

    To share a report with "Sign in required" access, you invite individuals to sign up using a viewer access link. You can do this by:

    • sending a preset email with a one-time use viewer access link to specific email addresses, or

    • copying the multi-use viewer access link and sharing however you like (e.g., email, text, social media)

    Send a preset email with the viewer access link

    To send a preset email with the viewer access link to one or more email addresses, select the Send an email option.

    Select the "Send and email" option to send the viewer access link via a preset email

    Next, enter the email addresses for the recipients and click Send. The user will receive an email that looks like this:

    Preset email with viewer access link

    When the recipient clicks the Open Report button, they will be asked to sign in to your Juicebox workspace to see the app.

    Copy and share a multi-use viewer access link

    To share a multi-use viewer access link, select the Share a multi-use invite option.

    Copy and share an invite containing a multi-use access link

    From there, select Copy Invite button and send the invitation however you like (e.g., email, text, social media). When a recipient clicks the viewer access link in the invitation, they will be asked to sign in to your Juicebox workspace to see the report. The link can be used by multiple people and will remain usable until you regenerate the link by clicking Renew Invite.

    Controlling Access

    Regenerating a viewer access link

    To prevent new users from accessing the app through a previously shared viewer link, you can regenerate the link. Any previously used links will no longer allow new users to sign up. Users that have already signed up will still be able to see the app. Their access can be managed through the People view.

    To regenerate the link, click the Renew Invite button.

    Click the Renew Invite button to regenerate the viewer access link

    Changing how access to a report is controlled

    You can change how access to a report is controlled at any time. Simply click the access control you want.

    Copy and share the report link
    Duplicate
    . The duplicated slice will appear directly below the original slice.
    Duplicate a slice

    To delete a slice, select the gear icon and then select Delete.

    Delete a slice

    Adding slice content

    Every slice can have text and either a chart or media (i.e., image or video). To add text to a slice, type in the draft report where you want the text to appear and use the text editor to style the text.

    Text is added and styled directly in the draft report

    To add a chart to a Text slice, select the Add Chart button and select the desired chart from the list.

    Click Add Chart to add a chart to a Text slice

    Until you configure your chart, the chart will display an error message.

    An error message will display if the chart has not been configured

    To add an image or video to a slice, select the Add Media button and upload your own image, find an image on Unsplash, or a paste a URL to a YouTube or Vimeo video.

    If you want to delete the chart or media content in a slice and go back to a Text slice, click the trash can icon.

    Click the trash can icon to delete the chart or media content

    Common slice configuration options

    Each slice type has a specific set of configuration options, but the following options are shared by multiple slice types:

    Configure tab

    Data Table. A dropdown will display if there is more than one data source connected to the report. The slice will use the selected data source.

    Hide if no data. If turned on, the entire slice will be hidden if all data has been filtered out. If turned off, the slice will display with a message notifying the viewer that all data has been filtered out.

    Selections. You can select whether user selections are allowed and, if so, how many. You can also specify how selected items will be used. The options are:

    • as Filters. This is the default. Selections will filter downstream slices.

    • as Variables. Selections will not filter downstream slices. Instead, the selected values will be saved as variables that can be used in defining ingredients.

    • as Filters and Variables. Selections will both filter downstream slices and be saved as variables that can be used in defining ingredients.

    Variables are very powerful. Learn more here.

    Style tab

    Display. You can select which elements of a slice should display.

    One of the options is Hide all. This option can be used together with Variables and Dynamic text. [Link to a page with examples.]

    Chart/Media position. If a slice has a chart (or media), there are four layout options that control how the chart (or media) will appear in relation to the slice text.

    Below text

    The slice text will display above the chart/media. This is the default layout.

    Above text

    The chart/media will display above the slice text.

    Right of text

    The slice text will display on the left, and the chart/media will display on the right.

    Left of text

    The chart/media will display on the left, and the slice text will display on the right.

    Show legend. Some charts have legends. Turn this off to hide the legend.

    Show notes. Some charts have notes. Turn this off to hide the notes.

    Filters applied footnote. If turned on, a footnote will display in each slice showing which filters are being applied to the slice.

    Slice slugs

    Each slice has a unique id that is called a "slug". Slices with text only or media will have a slug like Text1 or Text5. Slices with charts will have a slug like Table1 or Scatterplot2. You can see the slice slug in the draft app as a badge in the top-left corner of the slice on hover. Clicking the badge in the draft app will scroll the slice into view in the editing panel.

    Slices with charts also show their slug in the editing panel as a badge. The slug for charts is often used in dynamic text [and other places]. To copy the slug, click the @ button next to the badge.

    Click the @ button to copy the slice slug

    Slice backgrounds

    By default, slices have a transparent background (revealing the section background color). To adjust the slice background color, click the paint drop icon, and select the desired theme color. If you have a specific color in mind, you can enter the hex code for that color after clicking the Custom button. You can also click the Customize button to modify the color theme.

    Reordering slices

    To reorder slices, drag and drop the slice where you want it to display. You can reorder slices within a section and move slices to different sections.

    sections
    chart
    Add a new slice

    Complete. All the values you need are in the data.

  • Consistent. Data in a column should be of the same type. Number columns should contain only numbers. Date columns should contain only dates.

  • Clean. Number formatting, leading and trailing spaces, carriage returns, and other weird values (e.g., "#N/A" and "#ERROR") are removed.

  • Column headers. The first row of your data should be your column header row. Column names should have letters, spaces, or underscores, and nothing else. Each column header should be unique.

  • An example of properly prepared data

    Let's take it step-by-step

    Your goal here is a single sheet containing all data organized into columns and rows, with the first row containing the column headers and each column containing values of the correct data type.

    1. Review and understand your data

    Interrogate your data early on. Do you know what the column headings mean? Do the values in the columns make sense? Are there any columns you need that are missing? If the data is not quite right, fix it before going to the next step.

    2. Make a working copy of your data

    As you are preparing your data, you may need to refer or revert to the original state of data. Therefore, it is very important that you make a working copy of your data and only make changes to the working copy.

    3. Un-merge cells

    Values should not span multiple columns or rows. Un-merge any merged cells.

    4. Remove extra rows and sheets

    The first row in your data should contain your column headers. Remove any rows above your column header row (e.g., report titles). Remove any other rows that do not contain data organized into columns (e.g., footnotes). If there are any sheets other than the one with your data, remove those.

    5. Remove columns you don't need (optional)

    Columns you don't need can be distracting during data preparation and report design, so it's a good idea to just remove them. (If you're not sure whether you need a particular column, just leave it in.)

    6. Remove rows you don't need

    Sometimes your data will contain rows you don't need. For example, let's say your data contains values broken out by state as well as values for the US. Because you can aggregate the state-level values to get the US values, you may not need the US records. Removing unneeded rows will simplify your ingredient definitions later on.

    7. Revise column names as needed

    The first row of your data should contain your column names. Your column names should be readable, brief, and contain only letters, spaces, and underscores. For example, if the column name is Student.First.Last.Name, you could change it to Student Name; if the column name is Revenue (per Proposal), you could change it to Revenue per proposal. Your column names will be used as labels, so better column names mean less work for you when defining columns and measures. Each column name should be unique.

    8. Restructure data as needed

    Consider each of your column headers. Does the column header itself contain a value that you'll want to use in your analysis? If so, you'll need to restructure your data.

    A common example is data with separate columns for each year, quarter, or other time period. In other words, your data may look like this:

    When it needs to look like this:

    Another common example is survey data, where each survey question is a separate column. We recommend restructuring the data so that there is a Question column and a Response column, and each question response is on a separate row.

    Restructuring data can be tricky, but it's a lot easier with the right tool. We recommend Alteryx Designer Cloud. If you need help, please reach out to us by clicking the blue button in the bottom right of your workspace and starting a chat.

    9. Remove number formatting

    Any column with numeric data should be free of formatting that adds thousands separators, $, %, USD, EUR, etc. You should just have numbers, either with or without decimals. A period . should be used as the decimal separator. Negative numbers should be indicated by a - before the number, e.g., -2567.4.

    10. Confirm numeric columns contain only numeric data (or nulls)

    Numeric columns should only contain numbers or nulls. Anything else will prevent you from using the column in measures that use sum(), avg(), min(), or max() aggregation functions. You'll want to remove things like spaces, "--", "N/A", "#N/A", "NULL", and "#ERROR". While true nulls (i.e., empty cells) are ok, words like "null" or "blank" are not. A period . should be used as the decimal separator. Negative numbers should be indicated by a - before the number, e.g., -2567.4.

    11. Confirm date columns contain only dates with date formatting (or nulls)

    Date columns should only contain dates or nulls. Dates should be formatted like MM-DD-YYYY, MM/DD/YYYY, or YYYY-MM-DD. While true nulls (i.e., empty cells) are ok, words like "null" or "blank" are not.

    12. Add latitude and longitude

    If you want to use the Map slice, you will need to have latitude and longitude columns in your data. The latitude and longitude fields in your data must be numbers, not strings. In other words, your latitudes should look like 38.8977 rather than 38.8977° N . Likewise, your longitudes should look like -77.0365, rather than 77.0365° W.

    13. Do a final check

    You're almost there! Do a final check to make everything looks ok. Should null values be null? Do values contain carriage returns, leading or trailing spaces, or anything else odd? The TRIM() function is useful for dealing with large numbers of leading and trailing spaces.

    14. Download your data as a CSV or Excel file

    Download your prepared data as a CSV file, with commas , separating the values. Give it a meaningful but brief name and save it in a location you can easily find.

    Congratulations! You're now ready to load data.

    Choices made in a chooser chart can drive the narrative of the story that follows using dynamic columns or measures. There are two types: measure chooser and dimesnion chooser.

    Measure chooser

    A chooser chart with measures (i.e., a measure chooser) will display a high-level summary of measures. The selection made in a measure chooser can be used as a dynamic measure in one or more downstream charts, allowing for user-driven exploration.

    To add a measure chooser slice:

    • select Chooser from the chart list

    Select Chooser from the dropdown
    • select the measures you want to add in the order you want them displayed

    • add slice text (optional)

    A measure chooser slice

    The type of chooser is determined by whether you add a column or measure first. Once you select the first measure, only measures can be added.

    Dimension chooser

    A chooser chart with dimensions (i.e., a dimension chooser) lets users select one dimension from a group of dimensions for use as a dynamic dimension in one or more downstream charts, allowing for user-driven exploration.

    A dimension chooser slice should always be connected to at least one downstream chart. See the dynamic dimensions section below.

    To add a dimension chooser:

    • select Chooser from the chart list

    Select Chooser from the dropdown
    • select the dimensions you want to add in the order you want them displayed

    A column chooser slice
    • add slice text (optional)

    • click Save changes

    The type of chooser is determined by whether you add a dimension or measure first. Once you select the first dimension, only dimensions can be added.

    Using dynamic dimensions or measures

    Chooser slices are particularly powerful when slices further down the report refer to the selections in the chooser.

    Chooser values will be "display only" (i.e., unselectable) unless a downstream slice includes a dynamic dimensions or measure referring to the chooser.

    To reference the selection made in a chooser slice:

    • Create a dimension chooser or measure chooser using the instructions in the sections above

    • In a downstream slice, select the chooser's slice slug in the column dropdown and/or measure dropdown

    Use dynamic ingredients in your charts to make them interactive

    Here's how to make your charts dynamic:

    After making your chart dynamic, you may want to make your slice text dynamic as well. To learn how, go here.

    Header Style
    Section
    Slices
    add editors
    Headline slice
    The Settings & Themes section
    The Header Style section
    Click the paint drop to change the Header Background
    Click on the plus-sign button to add a new section
    Change the section name
    Toggle off to hide the section
    The Custom layout option lets you place slices exactly where you want
    Examples of automatic behavior with light and dark backgrounds.

    User Roles and Management

    Users must be logged in to the workspace with a Juicebox user account. User permissions (i.e., what users can do once logged in) depends on the user role. There are four user roles: viewer, editor, admin, and owner.

    User Roles

    Here's an overview of what each role can do.

    Action
    Viewer
    Editor
    Adding a bar chart
    Adding a trend slice
    Admin
    Owner

    Action

    Viewer

    Editor

    Admin

    Owner

    View specific reports that they've been invited to

    ✔️

    N/A

    N/A

    N/A

    Invite viewers to specific reports

    ✔️

    ✔️

    ✔️

    Viewer

    Viewers can view the reports they've been given access to through an access link. They cannot see reports they have not been given access to and they cannot create new reports or edit reports.

    Editor

    Editors can view all reports, edit all reports, and create new reports.

    Admin

    Admins can view all reports, edit all reports, create new reports, and manage user roles and report access in the People page.

    Owner

    Each workspace has at least one owner. Owners can do everything admins can do. In addition, owners can adjust workspace settings and subscription and payment information.

    Managing Users

    Workspace owners and admins can manage users through the People page. At the top of the workspace home page, owners and admins will see a People button.

    The People button will display on the home page if you are an owner or admin

    Clicking the People button will open the People page.

    The People page

    The People page lists each workspace user as well as the number of reports the user has access to, the user's role, when the user last logged in, and when the user first signed up. You can search for users using the search bar at the top of the People page. You can sort the values in a column by clicking the column header.

    Changing a user's role

    To change a user's role, click on the user's name in the list of users. A modal will open where you can select a different role for the user from a dropdown.

    Modify the user's role

    There must be at least one workspace owner. If a user is the only owner for the workspace, the user's role cannot be changed.

    Changing a viewer's reports

    While owners, admins, and editors can access all reports in a workspace, viewers can only view the reports they have been given access to. To modify a viewer's reports, click on the viewer's name from the list of users. A modal will open where you can modify the viewers report access.

    Modify the viewer's report access

    To give the viewer access to all reports in the workspace, select All Reports. To give the user access to specific reports in the workspace, select Customized and then tick the boxes for each report the viewer should have access to.

    Changing a user's data permissions

    To limit the data that a user can see, you can set data permissions. By default, data permissions are set to {}, which gives the user access to all records. If a permissions object is added for the user, then the data will be filtered to show only the permitted records. For example, the permissions object below will only display records where customer_id = "30005". Information about setting up data permissions can be found here.

    This user can only see records where customer_id = "30005"

    Deleting a user

    To delete a user, hover over the user you wish to delete and select the trash can icon ().

    Click the trash can icon to delete the user

    Requesting data from embedded apps

    You can request content from Juicebox tables in embedded apps and check if the report is fully loaded.

    You can request the current filtered state of a Juicebox table. This can return either a downloadable file for your user or a json object that can be used to for other automations.

    Juicebox uses the javacsript api to safely allow cross origin communication between window objects. Juicebox listens for postMessage events. Juicebox filters postMessage messages to an allowed origin page (currently all Juicebox servers). Your Juicebox representative can ensure your site or test site is whitelisted.

    The messages can call is-report-ready, export-data, or download-data.

    Adding a map slice
    Add dynamic text

    View all reports

    ✔️

    ✔️

    ✔️

    Edit all reports

    ✔️

    ✔️

    ✔️

    Create new reports

    ✔️

    ✔️

    ✔️

    Manage users

    ✔️

    ✔️

    Manage workspace settings

    ✔️

    ✔️

    Change subscription

    and payment info

    ✔️

    Checking the report is fully loaded

    In order to export or download data, you must confirm that the Juicebox report is fully loaded. To do so, you can poll the Juicebox report with is-report-ready. A javascript sample looks like this.

    Receiving the callback

    Your page should register an event listener to receive the callback.

    Downloading data with download-data

    Once the report is fully loaded, you can request downloadable data. This will return a time-limited url that can be used to download the content. The download data request looks like:

    In this example, the Juicebox app is iframed in an iframe with id #juicebox-iframe. Table1 is the identifier for the table you want to download.

    Exporting data with export-data

    Alternatively, once a report is fully loaded, use export-data to return data from a table as a json object.

    As with downloading data, the Juicebox app is iframed in an iframe with id #juicebox-iframe. Table1 is the identifier for the table you want to export.

    Export data response format

    The response will be a json object containing the following keys.

    • columns: A list of columns objects in the order that they appear with column metadata. The properties of each column are:

      • name: The display name of the column as it appears in the header of the table.

      • field: The property on each row that contains the value.

      • format: A juicebox formatting string. For dates and datetimes, these correspond to strftimes. For numbers, the formats are an extension of d3.format which supports different formats for positive, negative, null, and zero values, as well as prefix and suffix support.

      • dtype: The datatype of the column. One of the following

        • str: String

        • num: Numeric

    • data: A list of rows. Each row will contain all the columns in the column list.

    Here is a sample response:

    Receiving the callback

    download-data or export-data request may take several seconds to return. Your page should register an event listener to receive the callback containing the data, like this example. The callback will be a message event with origin matching the Juicebox server.

    An example

    This html file provides a sample implementation of how to communicate with a Juicebox app in an iframe. You should view the source of this file to see how the communication works.

    https://myjuicebox.io/static/embedaccessview.html

    To use this file, you'll need:

    1. Your juicebox servername, typically "https://MYSITE.myjuicebox.io" which you will enter in the site URL.

    2. A Juicebox Access View key. Your Juicebox representative can help you get this.

    3. Click "Embed It!" to first create an embedded Juicebox iframe.

    4. Next you need the slug of a table in the app you've embedded.

    5. Choose either "Export Data" or "Download Data".

      1. Choosing "Export Data" will log the returned data in the browser console.

      2. Choosing "Download Data" will perform the download.

    postMessage
    delete

    Allow deleting redis cache for any app that the requesting user can modify.

    Authorizations
    AuthorizationstringRequired

    Token-based authentication with required prefix "Token"

    Path parameters
    idstringRequiredPattern: ^\w+(:\w+)?$
    Responses
    204

    No response body

    delete
    /api/v1/jb/apps/{id}/clear_cache/
    204

    No response body

    No content

    get

    List Access Views

    Authorizations
    AuthorizationstringRequired

    Token-based authentication with required prefix "Token"

    Responses
    200Success
    application/json
    get
    /api/v1/access_views/
    200Success
    post

    List Access Views

    Authorizations
    AuthorizationstringRequired

    Token-based authentication with required prefix "Token"

    Body
    createdstring · date-timeRead-onlyRequired
    modifiedstring · date-timeRead-onlyRequired
    keystringRead-onlyRequired
    is_activebooleanOptional

    Can this access key be used

    allowed_uses_cntinteger · min: -2147483648 · max: 2147483647Optional

    The number of times this access key CAN BE used. 0=unlimited uses

    usages_cntintegerRead-onlyRequired

    The number of times this access key HAS BEEN used

    expires_atstring · date-time | nullableOptional
    show_headerbooleanOptional
    language_codestring · max: 2Optional
    appstringRequired

    The app this key is granting access to

    Responses
    201Success
    application/json
    post
    /api/v1/access_views/
    get

    Get an Access View

    Authorizations
    AuthorizationstringRequired

    Token-based authentication with required prefix "Token"

    Path parameters
    keystringRequiredPattern: ^\w+$
    Responses
    200Success
    application/json
    get
    /api/v1/access_views/{key}/
    200Success
    put

    Modify an Access View

    Authorizations
    AuthorizationstringRequired

    Token-based authentication with required prefix "Token"

    Path parameters
    keystringRequiredPattern: ^\w+$
    Body
    createdstring · date-timeRead-onlyRequired
    modifiedstring · date-timeRead-onlyRequired
    keystringRead-onlyRequired
    is_activebooleanOptional

    Can this access key be used

    allowed_uses_cntinteger · min: -2147483648 · max: 2147483647Optional

    The number of times this access key CAN BE used. 0=unlimited uses

    usages_cntintegerRead-onlyRequired

    The number of times this access key HAS BEEN used

    expires_atstring · date-time | nullableOptional
    show_headerbooleanOptional
    language_codestring · max: 2Optional
    appstringRequired

    The app this key is granting access to

    Responses
    200Success
    application/json
    put
    /api/v1/access_views/{key}/
    delete

    Deleting an access view will set the is_active flag to False.

    Authorizations
    AuthorizationstringRequired

    Token-based authentication with required prefix "Token"

    Path parameters
    keystringRequiredPattern: ^\w+$
    Responses
    204

    The access view has been set to inactive.

    delete
    /api/v1/access_views/{key}/
    204

    The access view has been set to inactive.

    No content

    patch

    Modify an Access View

    Authorizations
    AuthorizationstringRequired

    Token-based authentication with required prefix "Token"

    Path parameters
    keystringRequiredPattern: ^\w+$
    Body
    createdstring · date-timeRead-onlyOptional
    modifiedstring · date-timeRead-onlyOptional
    keystringRead-onlyOptional
    is_activebooleanOptional

    Can this access key be used

    allowed_uses_cntinteger · min: -2147483648 · max: 2147483647Optional

    The number of times this access key CAN BE used. 0=unlimited uses

    usages_cntintegerRead-onlyOptional

    The number of times this access key HAS BEEN used

    expires_atstring · date-time | nullableOptional
    show_headerbooleanOptional
    language_codestring · max: 2Optional
    appstringOptional

    The app this key is granting access to

    Responses
    200Success
    application/json
    patch
    /api/v1/access_views/{key}/
    get

    List Access Views

    Authorizations
    AuthorizationstringRequired

    Token-based authentication with required prefix "Token"

    Path parameters
    keystringRequiredPattern: ^\w+$
    Responses
    200Success
    application/json
    get
    /api/v1/access_views/{key}/usage/
    200Success
    post

    For backward compatibility with some client's integrations that have hardcoded 200, we remap status 201 to 200.

    Body

    Serializer class used to validate a username and password.

    'username' is identified by the custom UserModel.USERNAME_FIELD.

    Returns a JSON Web Token that can be used to authenticate later calls.

    passwordstringWrite-onlyRequired
    tokenstringRead-onlyRequired
    emailstringWrite-onlyRequired
    Responses
    200Success
    application/json
    post
    /api/v1/jb/api-token-auth/
    200Success
    get

    Get a list of apps, new apps are created using the Juicebox editor.

    Authorizations
    AuthorizationstringRequired

    Token-based authentication with required prefix "Token"

    Responses
    200Success
    application/json
    get
    /api/v1/jb/apps/
    200Success

    Juicebox Embedding API

    Here are the relevant API calls

    To embed Juicebox apps in your own website, follow these steps.

    1. Request a JWT token as a client admin user. This token can be reused.

    2. Request details about what Juicebox apps are available. This will provide you an app id for the app you want to embed.

    3. Create a Juicebox user with the appropriate

    Telling data stories

    Start with your audience

    Before you start creating your Juicebox data story, you’ll want to make sure you have a good understanding of your audience’s needs. Everyone who will be using your data story or report has a role in the organization and associated responsibilities. The more your data story or report can help them fulfill those responsibilities, the more value it will have. To do that, make sure you understand your ideal user. Consider these questions:

    • Who is your ideal user?

    function checkIfReportIsReady() {
      const isReady = event => {
        if (event.data.type == "is-report-ready") {
          window.removeEventListener("message", isReady);
          if (event.data.data === true) {
            // Enable or perform the download or export action
          } else {
            setTimeout(checkIfReportIsReady, 500);
          }
        }
      };
      window.addEventListener("message", isReady, false);
      document.getElementById("juicebox-iframe").contentWindow.postMessage(
        { type: "is-report-ready" }, "*"
      );
    };
    window.addEventListener("message", event => {
        // Ideally you want to check where the event originated from before responding to it.
        // But for this demo page it has been commented out.
        // if (event.origin !== "http://localhost:8000") {
        //   console.log("Do not trust the sender of this message");
        //   return;
        // }
        console.log("Sender is trusted", event);
        console.log("Received event", event.data, "from", event.origin);
      }, false);
    });
    document.getElementById("juicebox-iframe").contentWindow.postMessage({
        type: "download-data",
        "download-data": {
           slug: Table1
        }
    });
    document.getElementById("juicebox-iframe").contentWindow.postMessage({
        type: "export-data",
        "export-data": {
           slug: Table1
        }
    });
    {
       "columns": [
           {
               "name": "Campaign Start",
               "field": "Campaign_Start",
               "format": "%b %-d, %Y",
               "dtype": "datetime"
           },
           {
               "name": "Campaign",
               "field": "Campaign",
               "format": null,
               "dtype": "str"
           },
     
           {
               "name": "Total Delivered",
               "field": "metric_Total_Delivered",
               "format": ",.0f;,.0f;,.0f;\"---\"",
               "dtype": "num"
           },
       ],
       "data": [
           {
               "Campaign_Start": "2023-10-22T00:00:00",
               "Campaign": "Fall Sale",
               "metric_Total_Delivered": 500,
           },
           {
               "Campaign_Start": "2023-12-22T00:00:00",
               "Campaign": "Winter Sale",
               "metric_Total_Delivered": 1254,
           }
       ]
    }
    window.addEventListener("message", event => {
        // Ideally you want to check where the event originated from before responding to it.
        // But for this demo page it has been commented out.
        // if (event.origin !== "http://localhost:8000") {
        //   console.log("Do not trust the sender of this message");
        //   return;
        // }
       console.log("Sender is trusted", event);
       console.log("Received event", event.data, "from", event.origin);
    }, false);
    

    date: Date, the values will be formatted as ISO-8601 formatted strings

  • datetime: Datetimes, the values will be formatted as ISO-8601 formatted strings

  • bool: Boolean values

  • https://observablehq.com/@d3/d3-format
    201Success
    200Success
    200Success
    {
      "created": "2025-12-14T06:07:53.569Z",
      "modified": "2025-12-14T06:07:53.569Z",
      "key": "text",
      "is_active": true,
      "allowed_uses_cnt": 1,
      "usages_cnt": 1,
      "expires_at": "2025-12-14T06:07:53.569Z",
      "data_permissions": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "selections": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "show_header": true,
      "language_code": "text",
      "app": "text"
    }
    {
      "created": "2025-12-14T06:07:53.569Z",
      "modified": "2025-12-14T06:07:53.569Z",
      "key": "text",
      "is_active": true,
      "allowed_uses_cnt": 1,
      "usages_cnt": 1,
      "expires_at": "2025-12-14T06:07:53.569Z",
      "data_permissions": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "selections": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "show_header": true,
      "language_code": "text",
      "app": "text"
    }
    {
      "created": "2025-12-14T06:07:53.569Z",
      "modified": "2025-12-14T06:07:53.569Z",
      "key": "text",
      "is_active": true,
      "allowed_uses_cnt": 1,
      "usages_cnt": 1,
      "expires_at": "2025-12-14T06:07:53.569Z",
      "data_permissions": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "selections": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "show_header": true,
      "language_code": "text",
      "app": "text"
    }
    DELETE /api/v1/jb/apps/{id}/clear_cache/ HTTP/1.1
    Host: 
    Authorization: YOUR_API_KEY
    Accept: */*
    
    GET /api/v1/access_views/ HTTP/1.1
    Host: 
    Authorization: YOUR_API_KEY
    Accept: */*
    
    [
      {
        "created": "2025-12-14T06:07:53.569Z",
        "modified": "2025-12-14T06:07:53.569Z",
        "key": "text",
        "is_active": true,
        "allowed_uses_cnt": 1,
        "usages_cnt": 1,
        "expires_at": "2025-12-14T06:07:53.569Z",
        "data_permissions": {
          "ANY_ADDITIONAL_PROPERTY": "anything"
        },
        "selections": {
          "ANY_ADDITIONAL_PROPERTY": "anything"
        },
        "show_header": true,
        "language_code": "text",
        "app": "text"
      }
    ]
    POST /api/v1/access_views/ HTTP/1.1
    Host: 
    Authorization: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 244
    
    {
      "is_active": true,
      "allowed_uses_cnt": 1,
      "expires_at": "2025-12-14T06:07:53.569Z",
      "data_permissions": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "selections": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "show_header": true,
      "language_code": "text",
      "app": "text"
    }
    GET /api/v1/access_views/{key}/ HTTP/1.1
    Host: 
    Authorization: YOUR_API_KEY
    Accept: */*
    
    {
      "created": "2025-12-14T06:07:53.569Z",
      "modified": "2025-12-14T06:07:53.569Z",
      "key": "text",
      "is_active": true,
      "allowed_uses_cnt": 1,
      "usages_cnt": 1,
      "expires_at": "2025-12-14T06:07:53.569Z",
      "data_permissions": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "selections": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "show_header": true,
      "language_code": "text",
      "app": "text"
    }
    PUT /api/v1/access_views/{key}/ HTTP/1.1
    Host: 
    Authorization: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 244
    
    {
      "is_active": true,
      "allowed_uses_cnt": 1,
      "expires_at": "2025-12-14T06:07:53.569Z",
      "data_permissions": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "selections": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "show_header": true,
      "language_code": "text",
      "app": "text"
    }
    DELETE /api/v1/access_views/{key}/ HTTP/1.1
    Host: 
    Authorization: YOUR_API_KEY
    Accept: */*
    
    PATCH /api/v1/access_views/{key}/ HTTP/1.1
    Host: 
    Authorization: YOUR_API_KEY
    Content-Type: application/json
    Accept: */*
    Content-Length: 244
    
    {
      "is_active": true,
      "allowed_uses_cnt": 1,
      "expires_at": "2025-12-14T06:07:53.569Z",
      "data_permissions": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "selections": {
        "ANY_ADDITIONAL_PROPERTY": "anything"
      },
      "show_header": true,
      "language_code": "text",
      "app": "text"
    }
    GET /api/v1/access_views/{key}/usage/ HTTP/1.1
    Host: 
    Authorization: YOUR_API_KEY
    Accept: */*
    
    [
      {
        "data_permissions": {
          "ANY_ADDITIONAL_PROPERTY": "anything"
        },
        "selections": {
          "ANY_ADDITIONAL_PROPERTY": "anything"
        },
        "app_slug": "text",
        "show_header": true,
        "language_code": "text",
        "timestamp": "2025-12-14T06:07:53.569Z"
      }
    ]
    POST /api/v1/jb/api-token-auth/ HTTP/1.1
    Host: 
    Content-Type: application/json
    Accept: */*
    Content-Length: 34
    
    {
      "password": "text",
      "email": "text"
    }
    GET /api/v1/jb/apps/ HTTP/1.1
    Host: 
    Authorization: YOUR_API_KEY
    Accept: */*
    
    [
      {
        "client_id": "text",
        "created_at": "2025-12-14T06:07:53.569Z",
        "description": "text",
        "footer_html": "text",
        "help_html": "text",
        "id": "text",
        "in_maintenance": true,
        "invitation_body": "text",
        "invitation_subject": "text",
        "label": "text",
        "maintenance_message": "text",
        "metadata": {
          "ANY_ADDITIONAL_PROPERTY": "anything"
        },
        "package_info": {
          "ANY_ADDITIONAL_PROPERTY": "anything"
        },
        "raw_config": {
          "ANY_ADDITIONAL_PROPERTY": "anything"
        },
        "show_footer": true,
        "show_help": true,
        "slug": "text",
        "usage": {
          "ANY_ADDITIONAL_PROPERTY": "anything"
        },
        "users": [
          1
        ]
      }
    ]
    {
      "token": "text"
    }
    that limits what the user can see.
  • Request an embed url for this user to see the app.

  • Serve the embed url in an iframe on your site.

  • Let's look at the details for each of these steps.

    Request a JWT token for a Client Admin user

    GET https://{domain}.myjuicebox.io/api/v1/jb/api-token-auth/

    Request a token that represents a client admin user. This user has permissions to perform user setup and request embed urls for your Juicebox account.

    Path Parameters

    Name
    Type
    Description

    domain*

    String

    Your Juicebox domain

    Headers

    Name
    Type
    Description

    Content-Type*

    String

    application/json

    Request Body

    Name
    Type
    Description

    email*

    String

    A client admin email

    password*

    String

    A client admin password

    Find the app you want the user to be able to see.

    Request list of available apps

    GET https://{domain}.myjuicebox.io/api/v1/jb/apps/

    Get a list of all available apps. Juicebox apps have both a published and draft version. The draft version will only be visible to editors and admins.

    Handling Pagination

    If the number of available apps exceeds 100, the list of apps will be paginated. Response headers will contain the following values.

    • X-Count The total number of apps available.

    • X-PageThe current page number

    • X-PageSize The number of apps on each page.

    • X-Next A link to fetch the next page of data. This will be "None" when on the last page of data.

    • X-Previous A link to fetch the previous page of data. This will be "None" when on the first page of data.

    Path Parameters

    Name
    Type
    Description

    domain*

    String

    Your Juicebox domain

    Headers

    Name
    Type
    Description

    Authorization*

    String

    "JWT {token}"

    A JWT token for a client admin user.

    Create a user with the Juicebox Data Permissions and app access you desire.

    Create a user

    POST https://{domain}.myjuicebox.io/api/v1/jb/users/

    Path Parameters

    Name
    Type
    Description

    domain*

    String

    Your Juicebox domain

    Headers

    Name
    Type
    Description

    Authorization*

    String

    "JWT {token}"

    A JWT token for a client admin user.

    Request Body

    Name
    Type
    Description

    email*

    String

    The email address of the user you want to create.

    extra

    Json

    A Juicebox Data Permissions object to control what this user can see. If omitted, the user will not have any data permissions applied.

    first_name

    String

    The user's first name

    last_name

    String

    The user's last name

    Now you can request an app embed url.

    Request an app embed url for a user

    POST https://{domain}.myjuicebox.io/api/v1/jb/apps/{appid}/embed/{email}/

    For security, the default duration of an embed url is 60 seconds. It can only be loaded once. It can be regenerated as many times as needed.

    Path Parameters

    Name
    Type
    Description

    domain*

    String

    Your Juicebox domain

    appid*

    String

    An app id for an app this user has access to.

    email*

    String

    An email for a user that has already been created.

    Query Parameters

    Name
    Type
    Description

    show_header

    String

    If this parameter is present in the query string, the application header (which allows export as png and pdf) will be displayed.

    Turn off display of the header with ?show_header=0

    show_footer

    String

    If this parameter is present in the query string, the application footer will be displayed.

    Turn off display of the header with ?show_footer=0

    Headers

    Name
    Type
    Description

    Authorization*

    String

    "JWT {token}"

    A JWT token for a client admin user.

    Serving the app in an iframe. To embed the app in your site, use the following html. You can vary height and width as appropriate for your site.

    Data permissions object

    What role do they have in the organization?

  • What makes them successful in that role?

  • What do they already know about the content of your data story?

  • What are some ways your data story will influence them?

  • A good place to start in designing your data story is with understanding the personality of your audience. Our data personality framework gives you a way to understand your target audience.

    Data personality framework

    Like a Myers-Briggs personality test, but for data users, this framework will give you a sense of what you need to emphasize in your data story.

    What should you focus on?

    Write a story abstract

    Understanding your audience and their needs is the starting point to gather thoughts for a data story. Now you want to organize those thoughts. One of the best ways to think through your story is to begin by writing. Writing will help you:

    • Clarify the structure;

    • Articulate the language and terminology;

    • Check the flow and transitions;

    • Test the attention span of your audience.

    You don’t need to write an essay; start with a story abstract. A story abstract provides the highest-level description of the key elements of your story. Do you remember those Mad Libs games where you filled in the blanks with nouns, verbs, and adjectives? Here’s a Mad Libs-style template for your data story:

    Data story template

    You’ll want to answer the following questions:

    1. What is the topic of your data story?

    2. Who is your target audience?

    3. What are the key questions you want to help them answer?

    4. What are the key measures that will help answer these questions?

    5. What dimensions or breakouts of the data will support the analysis?

    6. What types of insights should they learn from the data?

    7. What actions will your audience take based on these insights?

    8. How will these actions impact the organization’s goals?

    9. How will these actions impact the audience’s personal goals?

    Choose the right measures

    The choice of measures (or metrics) can make all the difference in your data story. Measures are your characters. A performance measure represents the thing you want to see improved in your organization, or the thing you want to see reduced or eliminated. It is the thing you want to track how it is changing and why it is moving up or down.

    There are four factors to consider when you decide what is the right measure to feature in your data story:

    1. Does the measure have a common interpretation across your audience? In other words, will your audience understand what the measure represents in their world.

    2. Is the measure something that your audience can take action on? The best kinds of measures have clear implications about what should be done as the measure moves up or down.

    3. Does the measure derive from accessible, credible data? Sometimes the most valuable and obvious measures are frustratingly hard to track or unmeasurable.

    4. Can the measure be calculated in a simple, transparent way? Complex measures based on obscure calculations often lead to confusion in the data-driven discussion that you are trying to enable.

    Story structure

    Data stories share a similar structure to traditional narratives. The three-act play structure that we are all familiar with sets out a problem (Act 1), allows the characters to change and grow through conflict (Act 2), then reaches a resolution (Act 3). Data stories can take your audience through a similar journey:

    1. Context. Here you are helping your audience understand the background, why the data is important, where it comes from, and what key questions you want to answer.

    2. Heart. Guided exploration is the core of your data story. This is where you provide the visualizations to interact with the data. You want to provide enough flexibility to answer key questions while maintaining focus on the data and insights that matter most.

    3. Actions. The last section of your data story should emphasize the detailed data and results that are most actionable for your audience. This may be a list of individual items or a summary of what you’ve learned from the data.

    The following diagram shows how these three stages connect to traditional storytelling.

    A checklist to evaluate your Juicebox data story

    We want to provide a short checklist of items to evaluate whether you’ve considered important design choices with your data story.

    Setting context

    Before your reader dives into the data, you want to set the context. How? At the top of your story, add a slice that gives a title, describes the data, even tells people what kinds of questions they can answer.

    Using descriptive text and dynamic statements

    Juicebox is designed to do more than just show data visualizations. You can use text to explain what’s being shown in the data. This text could include:

    • Titles for the visualizations to explain the content. Often the title can be expressed as the question that is answered by the visualization.

    • Explanations or insights based on the visualization. Is there something you want your audience to see in the data? Tell them. The text areas in Juicebox are an opportunity to be in conversation with your audience.

    Less is more

    So much to show...so little attention. Recognize that your audience may be distracted or have a short attention span. Focus is critical in a good data story. This can mean:

    • Show fewer measures.

    • Provide fewer filters or dimensional breakouts

    • Reduce the number of visualizations to get to your key messages more quickly

    • Be more concise in your textual descriptions

    Let a trusted colleague review your data story and ask them to identify anything that they think isn’t totally necessary to get your message across. If it's not necessary, it should be removed. The cost of more content is high when you risk losing the attention of your audience.

    Using layout

    By default, Juicebox will layout your sections and slices vertically. In this way, your audience can read through the content from top to bottom and your filtered selections will pass down the page.

    However, sometimes it will make sense to take advantage of the alternative layout options:

    Within sections, you can layout slices horizontally. Horizontal layouts will help put more information on the screen at once. They can be useful for displaying groups of measures side-by-side. You might also try laying out a bar chart and trend chart horizontally to visually connect the data in those two charts. Generally, it isn’t a good idea to show more than two or three slices horizontally.

    Horizontal section layou

    Within slices, you can also choose the layout of the text relative to a visualization. Placing the text to the left of the visualization is an effective way to make your data story easier to read.

    Left-to-right slice layout

    Breaking up your story into sections, visual breaks

    A data story will often have multiple sections, perhaps reflecting the three-parts of a story. In Juicebox, you can make visual breaks between sections using color. Find the color selector on the top of each section on the Design tab. By visually breaking up your sections, you’ll help your readers understand where the logical breaks are in your story.

    Data ingredient labels

    Getting your data ingredient labels right is a small and important design choice. Often when you load data into Juicebox, the data columns may not be written in a way that is easy for your audience to understand. We’ve made it easy in Juicebox to change those labels. What is the simplest and clearest way to describe the data ingredient? Will your audience understand any abbreviations or acronyms you are using?

    Advanced field formulas

    You can create advanced formulas that use field math, combine multiple aggregate functions, and use conditional logic.

    Field math

    You can add, subtract, multiply and divide numeric data fields; apply conversion functions to values; and concatenate text fields.

    {
      "token": {client admin token}
    }
    <iframe 
      title="{app title}" 
      src="{url}" 
      height="650px" 
      width="100%" 
      frameborder="0" 
      sandbox="allow-scripts allow-downloads allow-same-origin allow-forms allow-popups">
    </iframe>

    apps

    A list of app ids that this user is allowed to see.

    Add, subtract, multiple, and divide

    You can perform mathematical operations with data fields and constants. For example, if you have sale_amount and cost_amount in your data, you can add a Profits dimension like so:

    A dimension that uses field math

    If you divide by zero, you’ll get a null.

    Conversion functions

    Conversion functions change the value for a field. It might change to a different type or to a different time period.

    Function

    Examples

    Round to the nearest week (requires a date field)

    week(sales_date)

    Round to the nearest month (requires a date field)

    month(sales_date)

    Round to the nearest quarter (requires a date field)

    quarter(sales_date)

    Round to the nearest year (requires a date field)

    year(sales_date)

    Convert a numeric value to a string

    string(zipcode)

    Date parts in datediff and extract

    When using the datediff and extract functions, you can supply a datepart. This will determine the units that are counted or extracted. Possible values are

    Date part
    Description

    day

    week

    This begins on Sunday

    week(weekday)

    This date part begins on weekday. Valid weekdays are "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", and "saturday".

    month

    quarter

    Concatenating text fields

    You can use + to concatenate text data fields together. For example, you can concatenate first_name and last_name to create a Full name dimension.

    Concatenate text fields

    You must use double quotes in field expressions to define string constants. Single quotes will not work.

    If you want to concatenate fields that do not have a Text data type, you'll need to first convert the field to a string using the conversion function string(). For example, if you want to concatenate address, state, city, and zip together, but zip is not a string, you'll need to use string(zip).

    Aggregation functions

    Aggregation functions are used in measure ingredients to perform a calculation across multiple rows. If no aggregation function is provided for a measure ingredient, sum() will be used.

    Function

    Examples

    Sum

    sum(sales_dollars) or sum(revenue - expenses)

    Minimum

    min(age)

    Maximum

    max(age)

    Average

    avg(home_value)

    Count

    count(student_name) or count(*)

    When you upload a CSV file, percentiles and medians are calculated as approximate values. The statistically exact value may be slightly different.

    You can combine multiple aggregation functions together. For example, if you have sales_amount and salesperson_id in your data, you can add a Sales per Salesperson measure using the sum() and count_distinct() aggregation functions together like so:

    Combine multiple aggregation functions

    Conditional logic

    You can add conditional logic to formulas. Conditions are true/false statements that can be expressed in your formulas. Here are some examples of conditions:

    To use conditions in formulas, use the if function. This function contains pairs of conditions and values. A final value is used if none of your conditions match. Here is the if function pattern:

    Here are examples for formulas that use the if function:

    Defining conditions in IF statements

    Conditions are defined as [field] [comparison] [values]. These comparisons can be ANDed or ORed together.

    Conditions

    Examples

    Greater than a number

    sales > 20 or sales > 20.5

    Greater than or equal to

    sales >= 20

    Equal to a number or a string (strings must be surrounded by double quotes)

    age=20 or state="Tennessee"

    Not equal to a number or string

    age != 20 or state != "Tennessee"

    Checking if a value is null

    state IS NULL

    sales > 1000
    
    # This uses a list
    state IN ("Georgia", "Tennessee", "Virginia", "Texas", "South Carolina")
    
    # You can use ANDs and ORs
    sales > 1000 OR state = "Texas"
    
    # Use IS NULL to compare for missing values
    name IS NULL
    if([condition1], [value1], [condition2], [value2], …, [else_value])
    # A simple if  
    sum(if(state="Texas", sales_dollars, 0.0))
    
    # Multiple condition/value pairs
    sum(if(state="Texas", sales_dollars*0.08, state="Georgia", sales_dollars*0.07, state="Tennessee", sales_dollars*0.0925, sales_dollars*0.055))
    
    # You can use if() functions for both dimensions and measures
    if(last_name IS NULL, first_name, first_name + " " + last_name)

    Convert a string value to an integer

    int(age)

    Calculate an age at the current date.

    age(birth_date)

    Calculate the difference between dates

    datediff(end_date, start_date)

    Extract a component of a date

    extract(YEAR, birth_date)

    Return the last date in a period

    lastday(sales_date, MONTH) note: this can be used only on bigquery and snowflake databases

    year

    isoweek

    Uses ISO 8601 week boundaries. ISO weeks begin on Monday

    isoyear

    Uses ISO 8601 week-numbering year boundary.

    dayofweek (extract function only)

    Sunday=1, Monday=2, etc.

    dayofyear (extract function only)

    Count only distinct items

    count_distinct(student_name)

    Median

    median(sales_dollars)

    Percentiles expressed as percentileN where N can be between 1 and 99.

    percentile1(age) or percentile75(sales_dollars)

    Percentiles can also be expressed as an expression and a desired percentile.

    percentile(age, 0.25)

    Standard Deviation. Calculates the sample standard deviation for an expression.

    stddev(age)

    Checking if a value is in a list of values

    state IN ("TN", "GA", "FL")

    Checking if a value is True or False

    flag = "True"or flag = "False"

    Comparing dates.

    sales_date BETWEEN "ONE WEEK AGO" and "TODAY" or sales_date BETWEEN "2020-01-01" AND "2020-06-30"

    Intelligent date ranges (use PREVIOUS, THIS, or NEXT to define an offset and DAY, MONTH, MTD, QTR, YEAR, or YTD to define the period).

    sales_date IS THIS MONTH or sales_date IS LAST MONTH

    ANDing two conditions

    sales > 1000 AND sales_date IS THIS MONTH

    ORing two conditions

    sales > 1000 OR sales IS NULL

    Check if a value contains a string using % as a wildcard. If % is not provided, it will be inserted at the beginning and end of the value. LIKE is case-sensitive, ILIKE is case-insensitive.

    state LIKE "Te%" state ILIKE "m%"

    Number formats

    To control how numbers are displayed in the report, you can specify a format. For example, let's say you have a dimension called Budget. Representative values for Budget in your data are 3231.447 and 0.5264. You probably do not want to display the unformatted values in your report. Therefore, you will want to specify a number format in the ingredient editor.

    Select a number format

    The format specified in the ingredient editor will determine how the value will display in your report. The following standard formats are available:

    format label

    d3 equivalent

    How value3231.447 will display

    If you want to apply a number format other than one in the dropdown, you can do so by entering the custom format in the Number format box. For example, let's say you want to display Average Rating with 1 decimal. You can do this by entering .1f, like so:

    Number formats in Juicebox have the following parts

    Every part of the number format is optional except for the positive_format . If only the positive_format is given, it will be used for all numbers.

    prefix and suffix

    Prefix can be any text that appears before the number, while suffix will appear after the number. They must be between double quotes. Prefix and suffix support a special command pluralize(singular, plural) which chooses between two strings. If the number being formatted is one, the singular value will be displayed, otherwise the plural value will be displayed.

    formats

    This format documentation is adapted from .

    Formats have the following parts:

    You can optionally provide extra formats for negative, zero, or null values. The positive_format will be used when other formats aren’t provided.

    [fill[align]]

    The fill can be any character. The presence of a fill character is signaled by the align character following it, which must be one of the following:

    [sign]

    The sign can be:

    [symbol]

    The symbol can be

    [0]

    The zero (0) option enables zero-padding; this implicitly sets fill to 0 and align to =. The width defines the minimum field width; if not specified, then the width will be determined by the content. The comma (,) option enables the use of a group separator, such as a comma for thousands.

    [width] and [precision]

    Depending on the type, the precision either indicates the number of digits that follow the decimal point (types f and %), or the number of significant digits (types ​, e, g, r, s and p). If the precision is not specified, it defaults to 6 for all types except ​(none), which defaults to 12. Precision is ignored for integer formats (types b, o, d, x, X and c).

    The available type values are:

    Number Formatting Examples

    This format will show a certain number of digits. If the number is in the thousands, it wil be

    s, f, $, and % formats

    • .Ns formats display numbers with N digits of precision. This is a good way to display numbers that differ greatly in size.

    • .Nf displays numbers with a N digits after the decimal place.

    • Starting your format with a comma will put commas between 000s.

    Examples of positive, negative, zero and null formats

    Absolute values

    Ordinal values

    Using "ordinal" as a format will

    1 student

    either decimal or exponent notation, rounded to significant digits.

    r

    decimal notation, rounded to significant digits.

    p

    multiply by 100, round to significant digits, and then decimal notation with a percent sign.

    b

    binary notation, rounded to integer.

    o

    octal notation, rounded to integer.

    d

    decimal notation, rounded to integer.

    x

    hexadecimal notation, using lower-case letters, rounded to integer.

    X

    hexadecimal notation, using upper-case letters, rounded to integer.

    c

    converts the integer to the corresponding unicode character before printing.

    (none)

    like g, but trim insignificant trailing zeros.

    0.0

    .2s

    0.9123

    0.91

    .2s

    -0.9123

    -0.91

    .2s

    0

    0.00

    .2s

    0.00000000001

    0.00

    .1s

    0.9123

    0.9

    .1s

    0

    0.0

    .1s

    0.00000000001

    0.0

    .2s

    0

    0.00

    .1s

    0.1234567

    0.1

    .1s

    1.234567

    1

    .1s

    12.34567

    10

    .1s

    123.4567

    100

    .1s

    1234.567

    1K

    .1s

    12345.67

    10K

    .1s

    123456.7

    100K

    .1s

    1234567

    1M

    .1s

    12345678

    10M

    $.1s

    12345678

    $10M

    .1s

    123456789

    100M

    .1s

    1234567891

    1B

    .1s

    12345678912

    10B

    .3s

    0.1234567

    0.123

    .3s

    1.234567

    1.23

    $.3s

    1.234567

    $1.23

    .3s

    12.34567

    12.3

    .3s

    123.4567

    123

    .3s

    1234.567

    1.23K

    .3s

    12345.67

    12.3K

    $.3s

    12345.67

    $12.3K

    .3s

    123456.7

    123K

    .3s

    1234567

    1.23M

    .3s

    12345678

    12.3M

    .3s

    123456789

    123M

    .3s

    1234567891

    1.23B

    .3s

    12345678912

    12.3B

    .1s

    0.9

    0.9

    .1s

    -0.9

    -0.9

    .1s

    0

    0.0

    .1s

    100

    100

    .1s

    1100

    1K

    .1s

    10000

    10K

    ,.3s

    0.000123

    0.000

    ,.3s

    0.001234

    0.001

    ,.2s

    0.012345

    0.01

    ,.4s

    0.12345

    0.1235

    ,.3s

    1.2345

    1.23

    ,.3s

    123

    123

    ,.2s

    12345.56

    12K

    ,.2s

    1234567

    1.2M

    ,.2s

    1234567890

    1.2B

    ,.2s

    123456789012

    120B

    ,.2s

    1234567890123

    1.2T

    .2f

    1203

    1203.00

    .2f

    -1203

    -1203.00

    ,.2f

    -1203

    -1,203.00

    Note

    Note the commas between the 000s caused by the starting ‘,’

    .2f

    null

    0.00

    .2f

    NaN

    NaN

    .1%

    .12345

    12.3%

    .2%

    .12345

    12.34%

    .2%

    123.45

    12345.00%

    ,.2%

    123.45

    12,345.00%

    1,234 days from now

    ,.0f" days from now";|,.0f|" days ago";"today";"--unknown--"

    -1234

    1,234 days ago

    ,.0f" days from now";|,.0f|" days ago";"today";"--unknown--"

    0

    today

    ,.0f" days from now";|,.0f|" days ago";"today";"--unknown--"

    null

    –unknown–

    1.2K

    4th

    ordinal

    23

    23rd

    ordinal

    24

    24th

    ordinal

    100

    100th

    ordinal

    101

    101st

    How value 0.5264 will display

    # 2 Decimals

    ,.2f

    3,231.45

    0.53

    # Rounded

    ,.0f

    3,231

    1

    # 3 Sig figs

    .3s

    3.23K

    0.526

    $ 2 Decimals

    $.2f

    $3,231.45

    $0.53

    $ Rounded

    $,.0f

    $3,231

    $1

    $ 3 Sig figs

    $.3s

    $3.23K

    $0.526

    % 2 Decimals

    ,.2%

    323,144.70%

    52.64%

    % Rounded

    ,.0%

    323,145%

    53%

    Format

    Number

    Result

    "Total sales: ".0f

    1234

    Total sales: 1234

    ,.0f" days until Christmas"

    1234

    1,234 days until Christmas

    ,.0f"pluralize( student, students)"

    4

    4 students

    ,.0f"pluralize( student, students)"

    Align character

    Description

    >

    Forces the field to be right-aligned within the available space. (Default behavior).

    <

    Forces the field to be left-aligned within the available space.

    ^

    Forces the field to be centered within the available space.

    =

    like >, but with any sign and symbol to the left of any padding.

    Sign character

    Description

    -

    nothing for positive and a minus sign for negative. (Default behavior.)

    +

    a plus sign for positive and a minus sign for negative.

    (

    nothing for positive and parentheses for negative.

    SPACE

    a space for positive and a minus sign for negative.

    Symbol character

    Description

    $

    apply currency symbols per the locale definition.

    #

    for binary, octal, or hexadecimal notation, prefix by 0b, 0o, or 0x, respectively.

    Format

    Description

    f

    fixed point notation.

    s

    decimal notation with an SI prefix, rounded to significant digits.

    Note

    Juicebox changes numbers lower than 1 to be formatted with equivalent f notation.

    %

    multiply by 100, and then decimal notation with a percent sign.

    ordinal

    Display as an ordinal number (like 1st, 2nd, 3rd)

    e

    exponent notation.

    Format

    Number

    Result

    .1s

    0.9241

    0.9

    .1s

    0.9123

    0.9

    .1s

    0

    0.0

    .1s

    Format

    Number

    Result

    .2s;.3s

    1234

    1.2K

    .2s;.3s

    -1234

    -1.23K

    .2s;.3s;.4s

    0

    0.0000

    ,.0f" days from now";|,.0f|" days ago";"today";"--unknown--"

    Format

    Number

    Result

    \|.2s\|

    1234

    1.2K

    \|.2s\|

    -1234

    1.2K

    .2s;"negative "\|.3s\|

    -1234

    negative 1.23K

    Note

    Negative formats can have their own prefixes.

    .2s;\|.3s\|

    Format

    Number

    Result

    ordinal

    1

    1st

    ordinal

    2

    2nd

    ordinal

    3

    3rd

    ordinal

    d3 formats
    Enter a custom number format

    1

    g

    0.00000000001

    1234

    1234

    4

    "<prefix>"<positive_format>;<negative_format>;<zero_format>;<null_format>"<suffix>"
    [[fill]align][sign][symbol][0][width][,][.precision][type]

    Changelog 🎁

    What's coming soon?

    • AI-enhanced results.

    • Ability to add and manage multiple pages within the same report, giving more flexibility in organizing reports.

    • Ability to hide or show different sections to different users.

    • Additional advanced report design options available through our report design consulting services.

    October 7, 2025

    (release 4.101)

    🎁 What's new?

    • Formula editing panel: New dedicated interface for creating and editing formulas with improved usability

    Bug fixes & other improvements

    • Fixed issue where dynamic table column widths

    • Resolved persistent tooltip display issues in scatterplot

    September 25, 2025

    (release 4.100)

    Bug fixes & other improvements

    • Fixed an error impacting uploading images to Headline slice

    • Improved debug modal

    September 18, 2025

    (release 4.99)

    🎁 What's new?

    • New centralized debug modal for all slices accessible via the app header and slice configuration panel

    Bug fixes & other improvements

    • Various minor improvements to user experience and performance

    September 11, 2025

    (release 4.98)

    Bug fixes & other improvements

    • Various minor improvements to user experience and performance

    September 5, 2025

    (release 4.97)

    Bug fixes & other improvements

    • Home (Reports) page performance improvements

    August 28, 2025

    (release 4.96)

    Bug fixes & other improvements

    • Improved the debug modal

    • Improved table slice configuration options, including resizable columns

    • Improved ingredient editor panel

    August 21, 2025

    (release 4.95)

    Bug fixes & other improvements

    • Various minor improvements to user experience and performance

    August 14, 2025

    (release 4.94)

    Bug fixes & other improvements

    • Various minor improvements to user experience and performance

    August 7, 2025

    (release 4.93)

    Bug fixes & other improvements

    • Various minor improvements to user experience and performance

    July 31, 2025

    (release 4.92)

    Bug fixes & other improvements

    • Various minor improvements to user experience and performance

    July 28, 2025

    (release 4.91)

    Bug fixes & other improvements

    • Various minor improvements to user experience and performance

    July 17, 2025

    (release 4.90)

    🎁 What's new?

    • Now Editors can add custom labels and assign labels to apps to help organize and manage apps

    Bug fixes & other improvements

    • Adds a thousands separator to numeric counts in dynamic text

    • Various improvements to the Test Data Permissions panel, including adding an "Edit User" link to users with Admin permissions.

    July 10, 2025

    (release 4.89)

    Bug fixes & other improvements

    • User by app search improvements: From the People page, you can search for users with "App: <slug>", from app cards on the Reports page, the button showing count of users is now a link to the People page that filters users by those granted access to the app.

    • On the user account page, apps that the user has been given access to are now at the top of the list, making it easier to find and manage app access permissions.

    July 3, 2025

    (release 4.88)

    🎁 What's new?

    • Test user permissions: Editors can now preview what the report looks like for different users

    Bug fixes & other improvements

    • The name of the data source selected for the slice can be viewed on hover

    June 26, 2025

    (release 4.87)

    Bug fixes & other improvements

    • Fixed an issue where the saving shortcut keys (Ctrl+S/Cmd+S) stopped working

    • When you click on a slice badge in the app preview, the outliner now properly scrolls to show the selected slice

    • Various improvements to typography components

    June 23, 2025

    (release 4.86)

    🎁 What's new?

    • Enhanced home page for editors: New filtering side panel and table view help you organize and find your reports more easily

    Bug fixes & other improvements

    • Improved pie chart legend display and functionality

    June 12, 2025

    (release 4.85)

    Bug fixes & other improvements

    • Added support for quarter formats in trend charts, giving you more options for displaying time-based data

    • Improved access to materialized views in database object lists

    • Various dependency updates for better performance

    June 5, 2025

    (release 4.84)

    Bug fixes & other improvements

    • Improved debouncing for all filter pill selections, making filtering more responsive

    May 30, 2025

    (release 4.83)

    Bug fixes & other improvements

    • Fixed an error that occurred when adding a new section with the media slice

    • Improved tooltip functionality

    • Added config option for bar charts to define label width

    • Various improvements to the editing panel

    May 27, 2025

    (release 4.82)

    Bug fixes & other improvements

    • When selecting data sources from a database connection, longer table names are no longer being cut off

    • Added helpful messaging when no data source is available

    May 15, 2025

    (release 4.81)

    Bug fixes & other improvements

    • Improved filter clarity: When there's only one value available in filters and dynamic text, unselected data item values are now shown to provide better context

    • Enhanced export functionality with various improvements to make data exports more reliable

    • Improved data permissions system - now supports referencing database columns in both data permissions and automatic filters

    May 8, 2025

    (release 4.80)

    🎁 What's new?

    • New section disconnection option that allows you to toggle whether a section should be disconnected from others

    Bug fixes & other improvements

    • Enhanced trend legend functionality including interactive legend highlighting and selection

    • Improved DataBricks OAuth integration

    May 1, 2025

    (release 4.79)

    🎁 What's new?

    • Support for exporting and importing apps as YAML

    Bug fixes & other improvements

    • Improved the tooltip showing editing panel toggle shortcut keys

    • Fixed fonts used in the Debug view

    • Improved dynamic text capabilities, including better handling of advanced slice titles and enhanced selection value displays

    • Removed download menu option for data sources that do not support download

    Apr 24, 2025

    (release 4.78)

    Bug fixes & other improvements

    • The sticky filter bar now displays selections made in embedded filter pills referencing hidden filter slices

    • Fixes a bug that was preventing the deletion of annotations to Insights

    • Various improvements to the redesigned editing experience (coming soon)

    Apr 17, 2025

    (release 4.77)

    Bug fixes & other improvements

    • Various improvements to the redesigned editing experience (coming soon)

    April 10, 2025

    (release 4.76)

    Bug fixes & other improvements

    • Consistent categorical colors across charts

    • Adds loading progress bar to draft versions

    • Adds a "percent of sum" option to the bar chart

    • Removes the default check-square icon for text dimension ingredients

    Apr 3, 2025

    (release 4.75)

    Bug fixes & other improvements

    • Various improvements to the redesigned editing experience (coming soon)

    Mar 27, 2025

    (release 4.74)

    Bug fixes & other improvements

    • Improves database support for various date functions

    • Adds shadow for horizontal scrolling in the Table slice

    • Adds a PDF Poster export option

    • Flips comparison colors in the measure chooser if both the base and comparison measures have Reverse turned on

    Mar 20, 2025

    (release 4.73)

    🎁 What's new?

    • New loading progress bar at the bottom of published apps and "Filtered" notifications in each slice

    • New data_add() function that allows a date to be offset by date units. For example, date_add(sale_date, -1, year)will return the sale date minus 1 year.

    Bug fixes & other improvements

    • Option to show grid lines added to the Trend chart

    • Font schemes now use OS fonts rather than web fonts to reduce page load time and empower end users to tailor how fonts appear

    • datediff() and week() functions updated to support more databases, including SQLServer

    • Fix to AI-generated titles

    Mar 13, 2025

    (release 4.72)

    🎁 What's new?

    • Select all button added to filters dropdown

    Bug fixes & other improvements

    • Trend allows clearing selections without using the filter pill

    • Improved handling of duplicate ids in the filter pill

    • Fix to errors in filtersSummary dynamic text if "None" is selected

    • Adds the Reverse control to the ingredient editor for all ingredient types

    Mar 6, 2025

    (release 4.71)

    Bug fixes & other improvements

    • Various improvements to the rich text editing experience

    • Improved data connections to support more connection types, including Databricks

    • App-level data permissions now apply to the draft app (rather than just the published app)

    • Fix to button functionality in the Reports search bar

    Feb 27, 2025

    (release 4.70)

    Bug fixes & other improvements

    • Adds Invite User button to the Add User page

    • Improvements to the comparison measure chooser if the comparison values are 0

    • Fix to data source scrolling in the data drawer

    Feb 20, 2025

    (release 4.69)

    🎁 What's new?

    • New dimension value break out in the Trend slice

    • Trend line styling options

    • New bulk user creation API endpoint

    Bug fixes & other improvements

    • Leaderboard now allows the user to set a custom number of rows to display in the Leaderboard

    • Leaderboard now allows up to 8 measures

    • Pie now has the option to hide the legend/list

    • Bar chart now has the option to hide the y-axis

    Feb 13, 2025

    (release 4.68)

    🎁 What's new?

    • Buckets generation using AI (beta)

    • Trend line styling options

    • New bulk user creation API endpoint

    Bug fixes & other improvements

    • Removes "View" button for unpublished reports

    • Modifies bar chart tooltips to show % value if configured to show % of whole

    • Removed "Duplicate as Advanced" option for ingredients

    Feb 6, 2025

    (release 4.67)

    🎁 What's new?

    • Filters slice style option to show filter options as a Dropdown or Checkbox

    Bug fixes & other improvements

    • Fix to Add User form to view all reports when scrolling

    • Fix to Add User form to initially deselect all reports for Customized report access

    Jan 30, 2025

    (release 4.66)

    Bug fixes & other improvements

    • Adds a badge for ingredients that use buckets

    • Fixes to Trend tooltip so it doesn't get cut off

    • Removes deprecated Bar chart from UI

    Jan 16, 2025

    (release 4.65)

    🎁 What's new?

    • Adds a new Settings & Themes option to show a Table of Contents dropdown in the app ribbon for quick navigation between sections

    Bug fixes & other improvements

    • Adds a "Wrap cards" orientation option for the Card slice

    • Fixes issue with filter pill search not resetting for paginated slices

    Jan 9, 2025

    (release 4.64)

    🎁 What's new?

    • Adds ability to set up new users from the People page

    Bug fixes & other improvements

    • Adds additional configuration settings to y axes (primary and secondary) in the Trend chart

    • Adds option to show percent-of-whole in the Bar chart

    • Fixes to starter report preview

    Jan 3, 2025

    (release 4.63)

    🎁 What's new?

    • Adds a simple ribbon at the top of the draft app for common app-level changes

    Bug fixes & other improvements

    • Removes the paragraph tag in the published app when the slice title is empty

    • User list API can no search for integers

    • Adds a new height option to the Trend slice

    Dec 19, 2024

    (release 4.62)

    Bug fixes & other improvements

    • Adds a new height option to the Table, Bar, and Card slices

    • Adds the option to customize pie chart colors

    • Adds a My Apps category to the Create New UI for apps marked as clone-able

    Dec 12, 2024

    (release 4.61)

    Bug fixes & other improvements

    • Improvements to Publish & Share modal

    • Fix to repositioning of Filter slice dropdown from an embedded filter pill

    Dec 5, 2024

    (release 4.60)

    Bug fixes & other improvements

    • Fix to the Media slice to allow multiple images in the same section

    • Fix to correct overflow issues with long card description text

    Nov 21, 2024

    (release 4.59)

    Bug fixes & other improvements

    • Improvements to Bar chart performance

    • Adds shortcut keys for common editing tasks

    Nov 14, 2024

    (release 4.58)

    Bug fixes & other improvements

    • Improvements to the People page

    • Adds new Orientation layout option for the Card slice

    Nov 7, 2024

    (release 4.57)

    Bug fixes & other improvements

    • Improvements to API documentation

    • Adds config for Google Gemini safety settings

    • Improvements to the People page so that searches are performed on the backend

    Oct 31, 2024

    (release 4.56)

    Bug fixes & other improvements

    • Improvements to dropdown menus

    • Improvements to action builder buttons

    • Fix to API regarding changing user properties

    • Fix to which apps editors can see on the Insights page

    Oct 24, 2024

    (release 4.55)

    🎁 What's new?

    • Save Insight now allows for capture of either section or slice

    • Reports Navigation slice can be configured to pass selections from app to app

    • Allow user permissions to be edited from the People page

    Bug fixes & other improvements

    • Improvements to caching after ingredient definition changes

    • Fix to password saving

    Oct 17, 2024

    (release 4.54)

    🎁 What's new?

    • Adds an optional Insights page to the Home page navigation

    Bug fixes & other improvements

    • Small fixes to Trend and Bar charts

    • Fix to user count displayed on the Home page

    Oct 10, 2024

    (release 4.53)

    🎁 What's new?

    • Adds an optional badge for edits in the app header

    Bug fixes & other improvements

    • Fix to Reports Navigation for anonymous users

    Oct 3, 2024

    (release 4.52)

    🎁 What's new?

    • Redesigned home page cards

    • New Reports Navigation slice

    Bug fixes & other improvements

    • Filter side panel replaced with dropdown

    Sep 30, 2024

    (release 4.51)

    Bug fixes & other improvements

    • Improvements to slice selections configuration UI.

    • Adds option to include filtering context as a slice footnote.

    • Fix to slice background color picker bug.

    Sep 19, 2024

    (release 4.50)

    This release focuses on behind-the-scenes improvements to our infrastructure. You shouldn't notice any changes in your experience.

    Sep 12, 2024

    (release 4.49)

    🐛 Bug fixes & other improvements

    • Improves bar charts when only measures are selected

    • Improves AI caching

    • Improves color interpolation

    Sep 6, 2024

    (release 4.48)

    🐛 Bug fixes & other improvements

    • Adds more selection options ("Select one required", "Select up to one")

    • Adds UI for AI configuration and improves AI caching

    • Improves bar slice performance

    • Adds variables.filters expression to aid complex ingredient calculations

    Aug 29, 2024

    (release 4.47)

    🐛 Bug fixes & other improvements

    • Adds option to add a section between other sections

    • Default data download file name is now app label + current date

    • Download data button is centered and uses data color

    • Fix to slice slug uniqueness when sections are hidden

    Aug 22, 2024

    (release 4.46)

    🐛 Bug fixes & other improvements

    • Various improvements to the "Load more" feature in Bar, Table, and Card slices

    • Adds option to select the file extension of the Table slice data download

    Aug 15, 2024

    (release 4.45)

    🐛 Bug fixes & other improvements

    • Adds new configuration option to the table slice to set the default sort order

    • Fix: Clear the title when switching off advanced titles

    Aug 8, 2024

    (release 4.44)

    🐛 Bug fixes & other improvements

    • Fix: range dimensions that are single select should only send one value

    • Adds infrastructure to support AI-generated summary text

    Aug 1, 2024

    (release 4.43)

    🎁 What's new?

    • Enable and disable sections

    🐛 Bug fixes & other improvements

    • Improve in-line editing

    • Fixes to "Load more" in card, table and chart charts

    Jul 25, 2024

    (release 4.42)

    🐛 Bug fixes & other improvements

    • Adds UI to set the min and max bubble size

    • Fix to slice alignment in PDFs

    Jul 18, 2024

    (release 4.41)

    🐛 Bug fixes & other improvements

    • Fix for off-center positioning of centered text

    • Fixes to map legend styling

    Jul 11, 2024

    (release 4.40)

    🐛 Bug fixes & other improvements

    • Add in-line text editing to the Headline slice

    • Improve app wizard fonts and colors

    Jul 8, 2024

    (release 4.39)

    🎁 What's new?

    • In-line text editing

    🐛 Bug fixes & other improvements

    • Improve number formatting in pie charts

    Jun 27, 2024

    (release 4.38)

    🐛 Bug fixes & other improvements

    • Improve toast notifications

    Jun 21, 2024

    (release 4.37)

    🐛 Bug fixes & other improvements

    • Improve the inline text editing experience

    • Apply rate limits to juicebox api requests

    • Remove forced width on table slices in print pdfs

    • Fix: leaderboard not being rendered correctly sometimes

    Jun 13, 2024

    (release 4.36)

    🐛 Bug fixes & other improvements

    • Map styling config options are missing

    • Pre-populate slice slugs for custom layouts

    Jun 6, 2024

    (release 4.35)

    🐛 Bug fixes & other improvements

    • Add a new config option that allows slices to be hidden when they receive no data

    • Fix: keep "hidden" slices hidden when their data is fetched

    May 31, 2024

    (release 4.34)

    🐛 Bug fixes & other improvements

    • Improve insight capture button and animation

    • Update styling of grids and borders

    • Allow slice titles to be updated in-place behind a flag

    • Correcting styling for inline text editor

    May 16, 2024

    (release 4.33)

    🐛 Bug fixes & other improvements

    • Allow selecting a single item in range pickers

    • Remove the choices dropdown for the "group layout" field in django admin

    • Updates to the runs on cloud formation template for getting hung builds to work again

    • Adjust the browser breakpoint value for the editor on draft apps

    May 9, 2024

    (release 4.32)

    🐛 Bug fixes & other improvements

    • Migrate the map slice to the deckmap slice and allow multiple place dimensions in the deckmap slice

    • Fix: background blog being cut off in the header slice

    • Fix: insight images aren't returning the correct theme font

    May 2, 2024

    (release 4.31)

    🎁 What's new?

    • New grid layouts for sections

    • New "simple gauge" style for gauge templates

    🐛 Bug fixes & other improvements

    • Support default selections in all slices

    Apr 25, 2024

    (release 4.30)

    🐛 Bug fixes & other improvements

    • Improve ui in the share tab

    • Allow the number of pie chart segments to be configured in ui

    • Improve ai phase and flags when running data services

    • Improve tests for data services

    Apr 18, 2024

    (release 4.29)

    🐛 Bug fixes & other improvements

    • Add options the the graphql users query to filter and limit users

    • Enable the "show debug" button for all juicers

    • Validate user and app in the access view apis

    • Use uv for python requirements building

    Apr 11, 2024

    (release 4.28)

    🐛 Bug fixes & other improvements

    • Use color-mix to generate colors and simplify palette variables

    • Django performance improvements

    • Improve how we track app edits

    • Create an optional phase for the new dataservice that uses openai to generate automatic titles

    Apr 4, 2024

    (release 4.27)

    🐛 Bug fixes & other improvements

    • Convert choosers to a react slice

    • Improve button icon text color behavior

    • Add graphql mutation to update slice titles

    • Improve table styling

    Mar 28, 2024

    (release 4.26)

    🐛 Bug fixes & other improvements

    • Improve caching of parsed expressions

    • Make gh action testing results more concise

    • Add layout options to headline/hero slice

    • Convert gauge templates to tailwind

    Jan 9, 2023

    🎁 What's new?

    • Our new Insights feature (available to Business plan subscribers) lets you easily capture a particular insight within a report and share it using Powerpoint, email, Slack, or other tool of your choice. Use Insights to highlight the key takeaways and invite deeper conversation about the story your data is telling. (If you're on the Starter plan and would like to see Insights in action, just .)

    • With the new Selection option, you can make a chart display only (Select none) or require a single selection (Select one). By default, charts allow multiple selections (Select many).

    🐛 Bug fixes & other improvements

    • Selecting date ranges in a date filter is easier with our improved date picker.

    • Reordering columns and measures within a chart was broken, but it's fixed now.

    August 8, 2022

    🎁 What's new?

    • Share a Juicebox Report link with a Password: We've added a "middle of the road" option for Report Sharing. In addition to Public sharing ("Anyone with the link") and Private sharing ("sign-in required") Juicebox now has the ability to share a Link with a Password. This provides some control over who can view your report without requiring that they have a Juicebox account to see what you shared (but it's still private.)

    🐛 Bug fixes & other improvements

    • How many page views do you have left for this billing period? Now you can keep track by clicking the Share button for any report.

    • Quickly navigate from one report to another using the Home button dropdown in the header of any report.

    • Duplicate and delete reports directly from the Home page.

    July 7, 2022

    🎁 What's new?

    • Sharing options have been redesigned for more clarity. There are three sharing options:

      • 📢 Sharing as "Public" is now "Anyone with the link," and just like the name says (now 😊) this sharing mode allows anyone with the link to view the report.

      • 🔐 Sharing as "Private" is now "Sign in required." This mode requires people to sign in to Juicebox before they can see the report. There are two sub-sharing-options for this mode:

    🐛 Bug fixes & other improvements

    • Juicebox "apps" are now called "reports"

    • Improvements to data uploading

    • Date range selections in Filter slices are now done with a calendar picker

    May 12, 2022

    🎁 What's new?

    • As you make changes to charts, text, and colors, your app will update automatically! 🎉

    🐛 Bug fixes & other improvements

    • In the filter slice, you can now filter on a range of values in a number column.

    • Custom color themes are now easier to update.

    April 20, 2022

    🎁 What's new?

    • 📣 Introducing our newest chart type — Pie charts! 🥧 Confession time: Over the years, we've sidestepped the Great Pie Chart Controversy (Really? . .) by not offering a pie chart. But not anymore! Our pie chart is beautiful, simple to make, and automatically avoids those perilous pie-chart pitfalls. It's the right chart for showing parts of a whole, and we think you'll love it. Give it a try!

    🐛 Bug fixes & other improvements

    • Would you like to embed a Juicebox app in your own website? Just paste in the public app .

    • Trend charts are working again for measures with solely negative values.

    April 6, 2022

    🎁 What's new?

    • You can now export an app as either a PDF or PNG file. Just look for the Download button in the app header or header bar.

    🐛 Bug fixes & other improvements

    • You can create a Count measure using a boolean column. That used to be False, but now it's True.

    • Dynamic text that references selections in the filter slice is working.

    March 10, 2022

    🎁 What's new?

    • Four new font themes give you more options for setting the tone of your app.

    • Four new color themes add both dark and light palettes.

    🐛 Bug fixes & other improvements

    • Selections made for one filter pill in the Filter slice now filter across all other filter pills, so you don't have to worry about the order of columns. Filtering performance has improved too.

    • Did you know you can duplicate an app? The Duplicate App button is now at the top of the editing panel to make that more findable.

    • Higher numbers are often better (🏀), but not always (⛳️). A new option lets you tell Juicebox when a lower measure value is better, so that the Leaderboard chart shows who's really on top.

    February 11, 2022

    🎁 What's new?

    Ok, y'all. This is a big one. Like, the biggest update we've ever done. In this release, we're finishing our journey to remove the editing tabs in the editing panel on the left of the workspace. Some really important things are moving around ("where's my data??" and "so... how do I share now?" might be questions you'll ask). So, take a moment to review the highlights:

    • The Data Drawer replaces the Data tab

      • We've moved the Data tab to a drawer at the bottom of the window so you can easily see your data while you work. This gives you a clearer view of all your data and lets you switch between them more easily.

      • You can update your data using the easier-to-find Replace file button

    🐛 Bug fixes & other improvements

    • Leaderboard charts now have a bold new look. Really bold.

    • Leaderboard, Trend, and Map charts now use colors that are based on the color theme.

    • A newly designed Resource Center (in the bottom right of the window) and videos help you get the most out of Juicebox.

    December 8, 2021

    🎁 What's new?

    • Add images to the background of your header and sections. Take your data story style to the next level by adding background images to headers and sections. You can add your own images or find images on Unsplash.

    • Streamlined data prep. We've added lots of smarts to our data loading process so you can spend less time on data prep, more time telling your data story.

    🐛 Bug fixes & other improvements

    • New editing panel improvements help you get to the right place.

    • Charts no longer allow configuration if data has not been loaded.

    October 19, 2021

    🎁 What's new?

    • Easier color makeovers. Quickly see how your app looks in a whole new wardrobe. Themed color palettes make it easy to change the look of your app in one click.

    • Easier to use data. Now you can use all of your data columns as either dimensions or measures in charts. And you can decide how you want to calculate measures as you're adding charts to your story.

    🐛 Bug fixes & other improvements

    • A simpler way to create locations while making a map.

    • Selections in table charts now filter properly (i.e., based on all columns, not just the first one).

    • Improved performance for paginated charts.

    • Deleting or duplicating apps, sections, and slices is easier with new

    September 28, 2021

    🎁 What's new?

    • Templates added to the +Create New app workflow. We've incorporated templates of some of our best Juice-approved app designs into the workflow where you create a new app. These templates include full apps, and singular (but sweetly styled) charts that you can pick from. You can also add complete example apps to your workspace to use as inspiration and reference. Now, that data report idea you have can get the Juice-approved kick start you've been looking for.

    🐛 Bug fixes & other improvements

    • The map can display locations even if no measures have been selected.

    • Option to skip app setup details. If you want to accept the defaults and open your new app quickly, you can select Skip Setup in the app creation wizard.

    • Loading data from Excel files has been improved.

    September 7, 2021

    🎁 What's new?

    • Choosers have a new look. Chooser buttons are now sized based on their content and have a more eye-catching appearance.

    • Support for private editing notes. Now you can leave notes in apps for yourself and other editors that won't be seen by your users.

    🐛 Bug fixes & other improvements

    • Public app links shared on Facebook and Slack look better.

    • Dynamic text can now be copied using the slice "@" button and pasted into the text of a downstream slice.

    • Added Excel files (.xls and .xlsx) to data upload options (for now this defaults to loading only the first Excel tab).

    • Other improvements to the Design tab to make adding and configuring slices easier.

    August 13, 2021

    🎁 What's new?

    • More ways to style text. And now, with even more style! You can add numbered lists, bulleted lists, and block quotes. The text in your editor panel now looks more like it actually does in your app.

    • Less ingredient clutter. A big, unorganized pile of ingredients makes it hard to cook—and hard to build your Juicebox app. The new tidy and separate columns for measures and dimensions mean there's less clutter with your ingredients. Bon appétit! 🍱

    🐛 Bug fixes & other improvements

    • Adding charts is quicker and easier.

    • Improved trend legends.

    • Backend synchronization has been improved.

    July 26, 2021

    🎁 What's new?

    • ✨New text editor✨ With our new text editor, you can add and style text, emojis 🔥, and links with ease. Huzzah! (But if you still want to get down with Markdown, you can do that too.)

    • Multi-line trend. Now you can show up to 5 measures in a single trend chart. Compare to a target or a moving average (or both!) and bring context and clarity to changes over time. And if you want dual vertical axes, you can do that too.

    • Custom subdomains. Is your cute-and-fruity workspace subdomain a little too cute for your needs? Now you can customize your subdomain in the new Settings page. (Requires a Team plan subscription.)

    • Team plan goodies. Sign up for the Team plan and get access to more users, bigger uploads, a custom subdomain, and more.

    🐛 Bug fixes & other improvements

    • Simplified sharing.

    • The list of charts you can add to a slice was being cut off. That's fixed now.

    • Even more improvements to data loading.

    July 6, 2021

    🎁 What's new?

    • Header styles. We've added three pre-formatted options for your app's header: small, medium, and large. Feeling bold? You can turn those off and do your own thing. Vive la différence!

    🐛 Bug fixes & other improvements

    • The Help menu now has links to Documentation, Help articles, and other resources.

    • "Automagically" adding ingredients now adds a time ingredient for year columns.

    • Improved data loading now catches even more issues (so you don't have to).

    June 15, 2021

    🎁 What's new?

    • Easy-to-add images. Juicebox's new image upload capability lets you easily add images to your Juicebox app -- no more cryptic code. And, you can make an even bigger splash with the integration. Now, go image like a pro 📸.

    • Add a chart even if you don't have data. No data? No problem! Now when you click "Add a Chart" and select a chart type, you'll see an example of that chart in your app. Even if you don't yet have all the data that chart requires, it will still display and be interactive. So, now you can build your data story and then go find the data that tells your story. That's one more blocker to frictionless storytelling eliminated! 🥊

    🐛 Bug fixes & other improvements

    • An improved Designer tab in the editing panel.

    • Smarter data loading, particularly for European file formats.

    • More performance and bug fixes.

    May 24, 2021

    🎁 What's new?

    • A redesigned Apps page. The apps page is that special place you keep all your creations. So we decided to give it some love and add features that it’s been deserving:

      • Sort your apps — Sort the apps in your workspace based on date edited, date published, and (of course) alphabetically.

      • Search your apps — Find that app you created by searching for text in the title and description.

    • Simplified Editor Tabs — The options in the Settings tab have been moved into the Designer tab of the Editing Panel to help keep everything simple. So, from now on, that's where you'll be setting the Settings settings.

    🐛 Bug fixes & other improvements

    • 🕵️‍♀️Better recognition of the delimiter that is used in CSV files.

    • A profile popup to change your name or your password.

    • More performance and bug fixes.

    April 30, 2021

    🎁 What's new?

    • ✨Drag and drop data loading: The Data tab in the editor gets you where you need to go with fewer clicks. You can 🐉drag-n-drop CSV files to create new data sources or replace data in an existing data source.

    🐛 Bug fixes & other improvements

    • 💅Layout and usability improvements to the Story Designer

    • ⚗️Adding ingredients "automagically" is easier and quicker

    • ⌨️ Improved keyboard navigation.

    • More performance and bug fixes.

    April 12, 2021

    🎁 What's new?

    • Easier sign in. If you've ever created a workspace only to realize you don't quite remember how to get back to that space, you know how low that can make you feel. But, those day of scrounging around for the right URL are gone! Now, you can just point your browser to and sign in there -- you'll be ushered right to your space, just like the celeb you are. (Oh yeah, and if you have multiple workspaces, you'll be able to pick the one you want -- all from .)

    • Sample data. We've brought some interesting sample data sets to Juicebox so you can start making presentations without hunting for a clean CSV.

    🐛 Bug fixes & other improvements

    • 💅Layout, formatting and tooltip improvements. Great data presentations are more than a pretty face, but prettier doesn't hurt.

    • 📈+📉The trend chart now properly displays negative numbers.

    • 🏎️ More performance and bug fixes. Vroom, vrroooom!

    February 25, 2021

    🎁 What's new?

    • ✉️ Invite editors to your workspace. Now you can add editors to your workspace team more quickly by sharing invite links or sending invitation emails from either the People page or from the Publish & Share section of an app.

    • 🕵️‍♀️ Find your folks. The new search bar in the People page lets you find and manage users even more easily.

    🐛 Bug fixes & other improvements

    • ➕ When you create a new app, you'll go directly to the Data Sources section in that app.

    • 🎨 When you open an existing app, you'll go directly to the Story Designer section in that app.

    • 🔢 More data about your data. The data preview now shows you when you last loaded your data and the total number of records.

    • 📱 Editors can now

    January 18, 2021

    🎁 What's new?

    • Better control of who can see what. Owners and Admins have a new to see who is using your apps. Friend your friends🥰; change user roles✊; control app access🔐; unfriend your enemies😒.

    🐛 Bug fixes & other improvements

    • Even more chart layout improvements.

    • Faster app and new workspace creation.

    • Lots more performance and bug fixes.

    December 16, 2020

    🎁 What's new?

    • Sign up for a workspace. Now you (and all your friends) can . Why would you want your own workspace? Perhaps you want to do some data presentation work for that non-profit you're helping out with. Or maybe you have an idea for a data reporting side-gig. Whatever data-prez itch you have, now you can create a separate workspace to put it in. Juicebox all-the-things!

    • Duplicate an app. If you want to create a new app that is similar to an existing app, you can .

    • New footer.🦶Your app footer now shows the name of the app, when it was last published, the Juicebox version, and all the legal stuff. No more wondering if your Juicebox is up to date.

    🐛 Bug fixes & other improvements

    • More polished loading of the apps page and app editor.

    • Publishing apps should be celebrated - and now it is! 🎉

    • Improved chart layouts.

    • Access links shared on Facebook and LinkedIn are more inviting.

    October 29, 2020

    🎁 What's new?

    • Editable section names - Now you can rename your old, confusing names, like group_a8fwcyke, to something less confusing like Rumpelstiltskin. Or something. This will make them memorable and useful. And don't forget you can collapse and organize your sections to bring more clarity to your data story.

    • Support for database connections - Do you want to add a from a Redshift or Snowflake database? That's now possible! To get started, send us a message by clicking the chat button below.

    🐛 Bug fixes & other improvements

    • Numerous slice layout improvements - Whether you are mixing or combining slices in , everything looks👌.

    • Ingredients are easier to find - In the ingredient pill, measures now show their aggregation, and advanced ingredients get a cute, new calculator icon. Less sleuthing, more finding. 🔎

    • Trend labeling cleaned up - The x-axis has been improved so that it shows appropriate labels based on the length of time and aggregation. 📈

    October 10, 2020

    🎁 What's new?

    • Automagic color contrast - Don't be afraid of the dark! 🎃Now, when you change the background of your slices to a dark color, the slice will automatically invert other colors so that it remains readable. It's a beautiful way to draw attention to the highlights of your data story!

    • Easier to find your way home 🏠 - To get back to the apps page, just click the Apps button in the header of any app. It's a little like Little Red Riding Hood... but without the wolf.

    🐛 Bug fixes & other improvements

    • Faster loading apps: Apps built with uploaded CSVs now get faster the more you use them thanks to the magic of enhanced caching. Nobody likes waiting. Now there's less of it.

    • Better labels: Ok, we know that in some situations, labeling in the was well... broken. 🤕It's better now. Boo-boo all gone.

    • Bar charts use bucket order: that use will now show the buckets in the order you defined them. After all, can't we all use a little more order?

    September 17, 2020

    🎁 What's new?

    • An improved trend chart 📈 - We did a brain upgrade on the trend chart. The is now smarter about handling dates and times. You can easily roll up dates by month or year (see time ingredient improvement below), see which dates are missing data, and select ranges of dates to filter the story below. Hey, Trend Chart: it's time you were schooled 🎓.

    • Broken ingredients 🐣- Change is hard, we know that. When you replace a CSV on a data source, sometimes the new data has different names or different data types. This can break data ingredients. You'll see these highlighted (in a style we call "the blushing zebra") so you can fix them. Now change isn't so hard.

    🐛 Bug fixes & other improvements

    • Roll up time ingredients by month or year: You can easily roll up time ingredient dates by month or year by choosing a month or year format when . It's time to roll ⏰.

    • New advanced ingredient functions: There are new options for advanced aggregations. You can calculate . This improvement is in the top percentile.

    • More docs on formatting: The advanced ingredients docs now contains lots of examples of how to build . ,.0f" days until Christmas" might not mean anything to you, but it does to Juicebox. And to Santa. 🎁

    August 27, 2020

    🎁What's new?

    Share your app via a 🔗 link

    Invite anyone to create an account and view your app by simply . ​

    +New sign in with your existing account

    or with Google, LinkedIn, or your email address.

    ​​

    🐛Bug fixes & other improvements

    • A better new-app template - Now, when you make a fresh new app, you'll get a nice template with a header, intro, and sections to fill in to make your data story even more envied by your coworkers.

    • Automagically add your data🎩- When you add a Data Source to an app, press the "" button to tell Juicebox which data columns you're most interested in.

    • Story designer slice card improvements - Added emphasis to the "Save" button, added nice hovering touches, and cleaned some dusty corners.

    August 6, 2020

    🎁What's New?

    • Date improvements 📅- New Data Ingredients options let you by week, month, quarter or year.

    🐛Bug Fixes & Other improvements

    • Sharing is caring🔨- Lots of behind the scenes work to let you share your data stories.

    • Juicebox is more outgoing and informative if there's an issue uploading data.

    • Various infrastructure, error handling and warning improvements.

    July 16, 2020

    🎁What's new?

    • Replace CSV 🎉- Updating your data just got 💯better. Opening any existing CSV data source now gives you an option to replace its data.

    • Chat support 🗣- Get quick access to docs and a place to ask your burning questions. Just click the "?" button in the top right to get started.

    🐛Bug fixes & other improvements

    • Side panel measure formatting didn't work in some cases. We've ironed that out.

    • Various data error handling and warning improvements.

    Improved bucket generation for date ingredients and enhanced AI prompts

  • Fixed UI issues in the ingredient editor to properly handle bucket options and format fields

  • Various improvements to the redesigned editing experience (coming soon)

  • Fixed the dataCount() dynamic text method

  • Various improvements to the redesigned editing experience (coming soon)

  • Fixes @slice_slug.list dynamic text

    For Bar chart with values displayed as "percent of whole":

    • percentages will show decimals only if required distinguish between multiple measure values

    • percent rather than value will display on the y-axis

  • Removes data source from the Reports Navigation slice

  • Fix to calendar popup x button

    Improves API

  • Improves compound ID selections

  • Fixes for fontschemes

    Fix flickering in the sidepanel

  • Fix issues with appeditrecord deletion

  • Unify frontend templates between cards and choosers

  • Fix: icon selector modal has incorrect z-index

  • Improve recipe pooling behavior and debug panels

  • Add an option to colorize table cells by gauge colors

    "Send an email" will send a single-use invite link to the recipient you specify.

  • "Share a multi-use invite" creates an invite link that can be used any number of times, but still requires the viewers to sign in to see the report. Pro tip: you can have your recipients forward this invitation so others can join... after signing in, of course.

  • A nice bonus: Now you can Download data tables making collaborating with other Editors easier than ever

  • The Sharing button replaces the Share tab

    • We've moved the Sharing tab to a button in the upper right of the window that is always present, regardless of what you're doing in the editor. Now, you can quickly save and share your work with the click of a button.

  • Column and measure pills have a new, cleaner look and are easier to remove from charts.
  • For apps with multiple data tables, a new chart configuration option lets you choose which data table to use in the chart.

  • and
    buttons.
  • Broken ingredients are (mostly) a thing of the past.

  • Improvements to data loading workflow.

  • Other reliability and operational improvements.

    Know your apps — Finally, more information about app publish status is on the apps page.

  • 😍 your apps — The app layout is more beautiful. Oh yeah, and it uses less space. A lot less.

  • view
    both published and draft apps when on a phone.
  • More performance and bug fixes.

  • Database connections to Redshift, Snowflake, Postgres, SQL Server, and MySQL are now supported.

  • Many, many other things to make Juicebox even better.

  • Various Story Designer improvements. After all who doesn't like a better story?

  • Various performance and bug fixes. A variety of faster, and an anti-variety of broke.

  • Map charts zoom out farther: The map chart now lets you zoom out farther to get a global perspective. 🌍Next step: Mars. Maybe

  • Various performance and bug fixes. Much perform. Un-bugged.

  • Various performance and bug fixes.

  • No more "null island" ☠️🏝 - The map chart no longer displays Place dimension values where the latitude or longitude are missing (null) or are exactly 0,0 (the location of what we affectionately call null island in the middle of the Atlantic Ocean. We're guessing that's not the location you really wanted 💀).

  • Table slice column headers now resize - The table chart no longer cuts off multi-line column headers. Instead, the column header will resize to fit. Nobody likes being squeezed into something that's too small.

  • Various performance and bug fixes.

  • reach out to us
    Yes
    Oh yes
    embed code
    advanced measure
    Unsplash
    myjuicebox.io
    myjuicebox.io
    People page
    create your own workspace
    duplicate it
    section
    data source
    text styles
    horizontal section layouts
    scatterplot chart
    Bar charts
    bucketed dimensions
    trend chart
    broken ingredients
    defining the time ingredient
    percentiles and ages
    custom number formats
    sharing your access link
    Sign in
    Add Automagically
    group dates
    Publish as a public app
    Duplicate an app
    Color your story with beautiful Sections.