> For the complete documentation index, see [llms.txt](https://docs.shimoku.com/dev/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.shimoku.com/dev/releases/2022/v.0.8.md).

# v.0.8

{% hint style="danger" %}
This version has been deprecated. If used with the current API version it can produce unexpected behaviour or errors.
{% endhint %}

{% hint style="danger" %}
The package shimoku-api-python is no longer maintained
{% endhint %}

{% hint style="info" %}
To get the new version :magic\_wand:
{% endhint %}

```
pip install --upgrade shimoku-api-python
pip install --upgrade shimoku-components-catalog
```

{% hint style="info" %}
Created a [*Bento* *box*](https://en.wikipedia.org/wiki/Bento) component that allow to group components in the grid without gaps, opening up a new galaxy of grid configurations :bento::bento:
{% endhint %}

### Fixes

* Added time sleep to the `POST` operations for table rows which allows now to put large tables of thousands of rows avoiding `Too many requests error`

### Improvements

* Now reports could be hidden and unhidden easily with a new method.

First create a component

```python
report_id: str = s.plt.html(
    html=html,
    menu_path=menu_path,
    order=0,
    rows_size=2, cols_size=6,
)
```

Now, to hide it use `hide_report()`

```python
# to pick your target app
target_app = [
    app 
    for app in s.business.get_business_apps(s.plt.business_id) 
    if app['name'] == 'test'
]
asseert len(target_app) == 1
app_id = target_app[0]['id']

s.report.hide_report(
    business_id=s.plt.business_id,
    app_id=app_id,  
    report_id=report_id,
th
```

Now the report cannot be seen in the FrontEnd web app

To unhide it just undo the operation with `unhide_report()`

```python
s.report.unhide_report(
    business_id=s.plt.business_id,
    app_id=app_id, 
    report_id=report_id,
)
```

Combined with the `Input forms` this allow users to see the components they want to.

### New <a href="#refactor" id="refactor"></a>

* Now all the components have an input attribute `bentobox_data` that allow to group multiple components in a *Bento box*.&#x20;

```python
bentobox: Dict[str, Union[str, int] = {
  bentoboxId: string
  bentoboxOrder: int
  bentoboxSizeColumns: int
  bentoBoxSizeRows: intpy
}
```

Some behaviour considerations:

> * If two or more Reports have **the same bentoboxId**, they are grouped inside the Bento Group Component.
> * Report Group has its Grid. Every Report inside the Report Group must be distributed like the available Grid. This Grid inside Report Group must be:
>
>   a) **24 columns** - NO gap\
>   b) **Row size 16 px height** - NO gap
> * If *bentoBoxId* has been informed, but not **sizeRows** was not informed:
>   * Indicators reports will have, by default, eight rows.
>   * Other reports will have, by default, 14 rows.
> * If *bentoBoxId* has been informed, but not **sizeColumns** was not informed:
>   * Indicators reports will have, by default, 12 cols.
>   * Other reports will have, by default, 24 cols.
> * The Report with bentoboxOrder with the smallest number **was the "master.”** This Report defines the bentoboxSizeRows and the bentoboxSizeColumns.

Example:

```python
menu_path: str = 'test/bentobox-test'
bentobox_id: Dict = {'bentoboxId': 'test20220101'}
bentobox_data: Dict = {
    'bentoboxOrder': 0,
    'bentoboxSizeColumns': 8,
    'bentoboxSizeRows': 20,
}
bentobox_data.update(bentobox_id)

data_ = [
    {
        "description": "",
        "title": "Estado",
        "value": "Abierto",
    },
]
s.plt.indicator(
    data=data_,
    menu_path=menu_path,
    order=0, rows_size=8, cols_size=12,
    value='value',
    header='title',
    footer='description',
    bentobox_data=bentobox_data,
)

s.plt.indicator(
    data=data_,
    menu_path=menu_path,
    order=1, rows_size=8, cols_size=12,
    value='value',
    header='title',
    footer='description',
    bentobox_data=bentobox_id,
)

data = [
    {'date': dt.date(2021, 1, 1), 'x': 5, 'y': 5},
    {'date': dt.date(2021, 1, 2), 'x': 6, 'y': 5},
    {'date': dt.date(2021, 1, 3), 'x': 4, 'y': 5},
    {'date': dt.date(2021, 1, 4), 'x': 7, 'y': 5},
    {'date': dt.date(2021, 1, 5), 'x': 3, 'y': 5},
]
s.plt.bar(
    data=data,
    x='date', y=['x', 'y'],
    menu_path=menu_path,
    order=2, rows_size=14, cols_size=24,
    bentobox_data=bentobox_id,
)
```

And create stuff such as:

![](/files/UfnE7j5h3NiNGR6Ks1pg)

### Enjoy your ~~meal~~ grid!

![](https://upload.wikimedia.org/wikipedia/commons/e/ea/Bento_at_Hanabishi%2C_Koyasan.jpg)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.shimoku.com/dev/releases/2022/v.0.8.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
