Skip to content

Commit 1ff3d56

Browse files
committed
chore(js): CONTRIBUTING.md: Add JavaScript development and debugging instructions
1 parent ef5fc18 commit 1ff3d56

File tree

2 files changed

+124
-2
lines changed

2 files changed

+124
-2
lines changed

.github/instructions/contributing.instructions.md

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1679,7 +1679,7 @@ The shortcode takes a regular expression for matching placeholder names.
16791679
Use the `code-placeholder-key` shortcode to format the placeholder names in
16801680
text that describes the placeholder--for example:
16811681
1682-
```
1682+
```markdown
16831683
{{% code-placeholders "DATABASE_NAME|USERNAME|PASSWORD_OR_TOKEN|API_TOKEN|exampleuser@influxdata.com" %}}
16841684
```sh
16851685
curl --request POST http://localhost:8086/write?db=DATABASE_NAME \
@@ -1703,3 +1703,64 @@ InfluxDB API documentation when documentation is deployed.
17031703
Redoc generates HTML documentation using the InfluxDB `swagger.yml`.
17041704
For more information about generating InfluxDB API documentation, see the
17051705
[API Documentation README](https://github.com/influxdata/docs-v2/tree/master/api-docs#readme).
1706+
1707+
## JavaScript in the documentation UI
1708+
1709+
The InfluxData documentation UI uses JavaScript with ES6+ syntax and
1710+
`assets/js/main.js` as the entry point to import modules from
1711+
`assets/js`.
1712+
Only `assets/js/main.js` should be imported in HTML files.
1713+
1714+
`assets/js/main.js` registers components and initializes them on page load.
1715+
1716+
If you're adding UI functionality that requires JavaScript, follow these steps:
1717+
1718+
1. In your HTML file, add a `data-component` attribute to the element that
1719+
should be initialized by your JavaScript code. For example:
1720+
1721+
```html
1722+
<div data-component="my-component"></div>
1723+
```
1724+
1725+
2. Following the component pattern, create a single-purpose JavaScript module
1726+
(`assets/js/components/my-component.js`)
1727+
that exports a single function that receives the component element and initializes it.
1728+
3. In `assets/js/main.js`, import the module and register the component to ensure
1729+
the component is initialized on page load.
1730+
1731+
### Debugging JavaScript
1732+
1733+
To debug JavaScript code used in the InfluxData documentation UI:
1734+
1735+
1. In your JavaScript module, import debug helpers from `assets/js/utils/debug-helpers.js`.
1736+
These helpers provide breakpoints and console logging as a workaround for
1737+
Hugo's lack of source map support in the asset pipeline.
1738+
2. Insert debug statements by calling the helper functions in your code--for example:
1739+
1740+
```js
1741+
import { debugLog, debugBreak, debugInspect } from './utils/debug-helpers.js';
1742+
1743+
const data = debugInspect(someData, 'Data');
1744+
debugLog('Processing data', 'myFunction');
1745+
1746+
function processData() {
1747+
// Add a breakpoint that works with DevTools
1748+
debugBreak();
1749+
1750+
// Your existing code...
1751+
}
1752+
```
1753+
1754+
3. Start Hugo in development mode--for example:
1755+
1756+
```bash
1757+
yarn hugo server
1758+
```
1759+
1760+
4. In VS Code, go to Run > Start Debugging, and select the "Debug Docs (console-based)" configuration.
1761+
1762+
Your system uses the configuration in `launch.json` to launch the site in Chrome
1763+
and attach the debugger to the Developer Tools console.
1764+
1765+
Make sure to remove the debug statements before merging your changes.
1766+
The debug helpers are designed to be used in development and should not be used in production.

CONTRIBUTING.md

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1667,7 +1667,7 @@ The shortcode takes a regular expression for matching placeholder names.
16671667
Use the `code-placeholder-key` shortcode to format the placeholder names in
16681668
text that describes the placeholder--for example:
16691669
1670-
```
1670+
```markdown
16711671
{{% code-placeholders "DATABASE_NAME|USERNAME|PASSWORD_OR_TOKEN|API_TOKEN|exampleuser@influxdata.com" %}}
16721672
```sh
16731673
curl --request POST http://localhost:8086/write?db=DATABASE_NAME \
@@ -1691,3 +1691,64 @@ InfluxDB API documentation when documentation is deployed.
16911691
Redoc generates HTML documentation using the InfluxDB `swagger.yml`.
16921692
For more information about generating InfluxDB API documentation, see the
16931693
[API Documentation README](https://github.com/influxdata/docs-v2/tree/master/api-docs#readme).
1694+
1695+
## JavaScript in the documentation UI
1696+
1697+
The InfluxData documentation UI uses JavaScript with ES6+ syntax and
1698+
`assets/js/main.js` as the entry point to import modules from
1699+
`assets/js`.
1700+
Only `assets/js/main.js` should be imported in HTML files.
1701+
1702+
`assets/js/main.js` registers components and initializes them on page load.
1703+
1704+
If you're adding UI functionality that requires JavaScript, follow these steps:
1705+
1706+
1. In your HTML file, add a `data-component` attribute to the element that
1707+
should be initialized by your JavaScript code. For example:
1708+
1709+
```html
1710+
<div data-component="my-component"></div>
1711+
```
1712+
1713+
2. Following the component pattern, create a single-purpose JavaScript module
1714+
(`assets/js/components/my-component.js`)
1715+
that exports a single function that receives the component element and initializes it.
1716+
3. In `assets/js/main.js`, import the module and register the component to ensure
1717+
the component is initialized on page load.
1718+
1719+
### Debugging JavaScript
1720+
1721+
To debug JavaScript code used in the InfluxData documentation UI:
1722+
1723+
1. In your JavaScript module, import debug helpers from `assets/js/utils/debug-helpers.js`.
1724+
These helpers provide breakpoints and console logging as a workaround for
1725+
Hugo's lack of source map support in the asset pipeline.
1726+
2. Insert debug statements by calling the helper functions in your code--for example:
1727+
1728+
```js
1729+
import { debugLog, debugBreak, debugInspect } from './utils/debug-helpers.js';
1730+
1731+
const data = debugInspect(someData, 'Data');
1732+
debugLog('Processing data', 'myFunction');
1733+
1734+
function processData() {
1735+
// Add a breakpoint that works with DevTools
1736+
debugBreak();
1737+
1738+
// Your existing code...
1739+
}
1740+
```
1741+
1742+
3. Start Hugo in development mode--for example:
1743+
1744+
```bash
1745+
yarn hugo server
1746+
```
1747+
1748+
4. In VS Code, go to Run > Start Debugging, and select the "Debug Docs (console-based)" configuration.
1749+
1750+
Your system uses the configuration in `launch.json` to launch the site in Chrome
1751+
and attach the debugger to the Developer Tools console.
1752+
1753+
Make sure to remove the debug statements before merging your changes.
1754+
The debug helpers are designed to be used in development and should not be used in production.

0 commit comments

Comments
 (0)