Instructions
# Multi-Field Arithmetic Calculator β Plugin Guide
---
## πΊπΈ English
### What This Plugin Does
This is a **non-visual controller element**. It sits invisibly on your Bubble page and evaluates arithmetic formulas using named variables you define. The results are exposed as **Bubble states** that you bind to Text elements, conditionals, or workflows.
---
### Element Fields (Properties Panel)
#### ββ Input Fields ββ
Up to **5 Field Name / Field Value pairs** (A1βB5):
| Field | Description |
|---|---|
| **A1 β Field Name** | Variable name used in your formula (e.g. `Price`, `Qty`, `A`) |
| **B1 β Field Value** | The numeric value, or a text option key if using Option Mapping |
| A2/B2 β¦ A5/B5 | Same structure for fields 2 through 5 |
> β οΈ Field names are **case-sensitive**. `Price` β `price`. English letters only.
---
#### ββ Option Mapping ββ
Up to **5 Option Key / Option Value list pairs** (C1βD5):
| Field | Description |
|---|---|
| **C1 β Option Keys** | A Bubble list of text values (e.g. dropdown display values: `Small`, `Medium`, `Large`) |
| **D1 β Option Values** | A matching Bubble list of numbers (e.g. `1`, `2`, `3`) β order must match C |
| C2/D2 β¦ C5/D5 | Additional slots for more option sets |
> This lets you map dropdown/option set text choices β numbers without hardcoding. The plugin merges all 5 slots into one lookup table automatically.
---
#### ββ Formula ββ
| Field | Description |
|---|---|
| **E β Formula** | Arithmetic expression using your variable names. Supported: `+ - * /` and `( )` |
**Examples:**
```text
(Price * Qty) - Discount
(A + B) * C / 100
A * B + C - D
```
---
#### ββ Output Formatting ββ
| Field | Description |
|---|---|
| **F β Decimal Places** | Number of decimal digits in `result_text` (0β10, default: 2) |
| **G β Thousands Separator** | Toggle `,` grouping (e.g. `1,234.56`) |
| **H β Prefix** | Text prepended to result (e.g. `$`, `β©`, `Total: `) |
| **I β Suffix** | Text appended to result (e.g. ` pts`, ` kg`, `%`) |
| **J β Auto-Recalculate** | If ON, recalculates on every property change. If OFF, use the **Recalculate** action. |
---
### Exposed States
| State | Type | Description |
|---|---|---|
| **result** | number | Raw numeric result of the formula |
| **result_text** | text | Formatted string: prefix + number + suffix |
| **has_error** | boolean | `true` if the last calculation failed |
| **error_message** | text | Human-readable error description |
---
### Events
| Event | When it fires |
|---|---|
| **Calculation Complete** | After every successful formula evaluation |
| **Calculation Error** | When evaluation fails (bad formula, division by zero, etc.) |
---
### Actions
| Action | What it does |
|---|---|
| **Recalculate** | Manually triggers formula evaluation (useful when Auto-Recalculate is OFF) |
| **Reset** | Sets `result` β 0, `result_text` β empty, clears error states |
---
### Typical Setup Flow
1. Place the **Arithmetic Calculator** element on your page (it's invisible β size doesn't matter).
2. Set **A1 Field Name** = `Price`, **B1 Field Value** = (bind to your input's value).
3. Set **A2 Field Name** = `Qty`, **B2 Field Value** = (bind to your input's value).
4. (Optional) Bind **C1 Option Keys** and **D1 Option Values** if any field value comes from a dropdown.
5. Set **E Formula** = `Price * Qty`.
6. Configure **FβI** for formatting.
7. On a Text element, bind its value to `Arithmetic Calculator's result_text`.
8. Optionally use **Calculation Complete** event to trigger downstream workflows.
---
---
## π°π· νκ΅μ΄
### νλ¬κ·ΈμΈ κ°μ
μ΄ νλ¬κ·ΈμΈμ **λΉμκ°μ 컨νΈλ‘€λ¬ μ리먼νΈ**μ
λλ€. Bubble νμ΄μ§μ 보μ΄μ§ μλ μ±λ‘ μμΉνλ©°, μ¬μ©μκ° μ μν λ³μλͺ
κ³Ό κ³μ°μμ κΈ°λ°μΌλ‘ μ°μ μ°μ°μ μνν©λλ€. κ²°κ³Όλ **Bubble μν(State)** λ‘ λ
ΈμΆλμ΄ ν
μ€νΈ μ리먼νΈλ μν¬νλ‘μ°μ λ°μΈλ©ν μ μμ΅λλ€.
---
### νλ κ΅¬μ± (Properties ν¨λ)
#### ββ μ
λ ₯ νλ ββ
μ΅λ **5κ°μ νλλͺ
/ νλκ° μ** (A1βB5):
| νλ | μ€λͺ
|
|---|---|
| **A1 β νλ μ΄λ¦** | κ³μ°μμμ μ¬μ©ν λ³μλͺ
(μ: `Price`, `Qty`, `A`) |
| **B1 β νλ κ°** | μ«μκ°, λλ μ΅μ
λ§€ν μ¬μ© μ ν
μ€νΈ μ΅μ
ν€ |
| A2/B2 β¦ A5/B5 | λμΌν ꡬ쑰μ 2~5λ²μ§Έ νλ |
> β οΈ νλλͺ
μ **λμλ¬Έμλ₯Ό ꡬλΆ**ν©λλ€. `Price` β `price`. μλ¬Έλ§ μ¬μ© κ°λ₯ν©λλ€.
---
#### ββ μ΅μ
λ§€ν ββ
μ΅λ **5κ°μ μ΅μ
ν€ / μ΅μ
κ° λ¦¬μ€νΈ μ** (C1βD5):
| νλ | μ€λͺ
|
|---|---|
| **C1 β μ΅μ
ν€ (text list)** | Bubble ν
μ€νΈ 리μ€νΈ (μ: λλ‘λ€μ΄ νμκ°: `Small`, `Medium`, `Large`) |
| **D1 β μ΅μ
κ° (number list)** | C1κ³Ό μμκ° μΌμΉνλ μ«μ 리μ€νΈ (μ: `1`, `2`, `3`) |
| C2/D2 β¦ C5/D5 | μΆκ° μ΅μ
μΈνΈλ₯Ό μν μ¬λ‘― |
> λλ‘λ€μ΄/μ΅μ
μ
μ ν
μ€νΈ μ νκ°μ μ«μλ‘ λ§€νν λ μ¬μ©ν©λλ€. 5κ° μ¬λ‘―μ νλμ μ‘°ν ν
μ΄λΈλ‘ μλ λ³ν©λ©λλ€.
---
#### ββ κ³μ°μ ββ
| νλ | μ€λͺ
|
|---|---|
| **E β κ³μ°μ** | λ³μλͺ
μ μ¬μ©ν μ°μ μ. μ§μ κΈ°νΈ: `+ - * /` λ° `( )` |
**μμ:**
```text
(Price * Qty) - Discount
(A + B) * C / 100
A * B + C - D
```
---
#### ββ μΆλ ₯ ν¬λ§· ββ
| νλ | μ€λͺ
|
|---|---|
| **F β μμμ μ리μ** | `result_text`μ νμν μμμ μλ¦Ώμ (0~10, κΈ°λ³Έκ°: 2) |
| **G β μ²λ¨μ ꡬλΆμ** | `,` κ΅¬λΆ μ¬λΆ (μ: `1,234.56`) |
| **H β μ λμ΄** | κ²°κ³Ό μμ λΆμΌ λ¬Έμ (μ: `$`, `β©`, `ν©κ³: `) |
| **I β μ λ―Έμ¬** | κ²°κ³Ό λ€μ λΆμΌ λ¬Έμ (μ: ` μ`, ` kg`, `%`) |
| **J β λ³κ²½ μ μλκ°±μ ** | ONμ΄λ©΄ μμ± λ³κ²½λ§λ€ μλ κ³μ°. OFFμ΄λ©΄ **Recalculate** μ‘μ
μλ μ€ν νμ |
---
### λ
ΈμΆ μν (States)
| μν | νμ
| μ€λͺ
|
|---|---|---|
| **result** | number | κ³μ°μμ μμ μ«μ κ²°κ³Ό |
| **result_text** | text | ν¬λ§·λ λ¬Έμμ΄: μ λμ΄ + μ«μ + μ λ―Έμ¬ |
| **has_error** | boolean | λ§μ§λ§ κ³μ°μ΄ μ€ν¨νμΌλ©΄ `true` |
| **error_message** | text | μ€λ₯ λ΄μ© μ€λͺ
|
---
### μ΄λ²€νΈ (Events)
| μ΄λ²€νΈ | λ°μ μμ |
|---|---|
| **Calculation Complete** | κ³μ° μ±κ³΅ μλ§λ€ |
| **Calculation Error** | κ³μ° μ€ν¨ μ (μλͺ»λ κ³μ°μ, 0μΌλ‘ λλκΈ° λ±) |
---
### μ‘μ
(Actions)
| μ‘μ
| μ€λͺ
|
|---|---|
| **Recalculate** | κ³μ°μμ μλμΌλ‘ μ¬μ€ν (μλκ°±μ OFF μ μ μ©) |
| **Reset** | `result` β 0, `result_text` β λΉκ°, μ€λ₯ μν μ΄κΈ°ν |
---
### κΈ°λ³Έ μ¬μ© νλ¦
1. **Arithmetic Calculator** μ리먼νΈλ₯Ό νμ΄μ§μ λ°°μΉν©λλ€ (보μ΄μ§ μμΌλ―λ‘ ν¬κΈ° 무κ΄).
2. **A1 νλ μ΄λ¦** = `Price`, **B1 νλ κ°** = μΈν κ°μ λ°μΈλ©.
3. **A2 νλ μ΄λ¦** = `Qty`, **B2 νλ κ°** = μΈν κ°μ λ°μΈλ©.
4. (μ ν) λλ‘λ€μ΄ μ°λ μ **C1 μ΅μ
ν€**, **D1 μ΅μ
κ°** μ 리μ€νΈ λ°μΈλ©.
5. **E κ³μ°μ** = `Price * Qty` μ
λ ₯.
6. **FβI** λ‘ μΆλ ₯ ν¬λ§· μ€μ .
7. ν
μ€νΈ μλ¦¬λ¨ΌνΈ κ°μ `Arithmetic Calculator's result_text` μ λ°μΈλ©.
8. νμ μ **Calculation Complete** μ΄λ²€νΈλ‘ νμ μν¬νλ‘μ° μ°κ²°.