cap-apps-domo-js

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

domo.js (ryuu.js) SDK

domo.js (ryuu.js) SDK

Installing domo.js (ryuu.js)

安装domo.js (ryuu.js)

React / npm projects:
bash
npm install ryuu.js
javascript
import domo from 'ryuu.js';
Vanilla JavaScript (CDN):
html
<script src="https://app.unpkg.com/ryuu.js@5.1.2"></script>

React / npm 项目:
bash
npm install ryuu.js
javascript
import domo from 'ryuu.js';
原生JavaScript(CDN):
html
<script src="https://app.unpkg.com/ryuu.js@5.1.2"></script>

domo.js Utilities

domo.js 实用工具

Beyond the APIs, domo.js provides useful utilities for interacting with the Domo environment:
除了API之外,domo.js还提供了与Domo环境交互的实用工具:

Environment Info

环境信息

Access environment information. WARNING: Can be spoofed! Do not use for security.
javascript
console.log(domo.env.userId);    // User ID (spoofable!)
console.log(domo.env.customer);  // Customer/instance name
console.log(domo.env.pageId);    // Current page ID
console.log(domo.env.locale);    // Locale (e.g., 'en-US')
console.log(domo.env.platform);  // 'desktop' or 'mobile'
For secure user verification:
javascript
// ✅ SECURE - Server-verified identity
const verifiedEnv = await domo.get('/domo/environment/v1/');
const { userId, userName, userEmail } = verifiedEnv;

// Or use IdentityClient from toolkit
import { IdentityClient } from '@domoinc/toolkit';
const response = await IdentityClient.get();
const user = response.body; // { id, displayName, emailAddress, role }
访问环境信息。警告:该信息可被伪造!请勿用于安全验证。
javascript
console.log(domo.env.userId);    // 用户ID(可被伪造!)
console.log(domo.env.customer);  // 客户/实例名称
console.log(domo.env.pageId);    // 当前页面ID
console.log(domo.env.locale);    // 区域设置(例如:'en-US')
console.log(domo.env.platform);  // 'desktop' 或 'mobile'
安全用户验证方式:
javascript
// ✅ 安全 - 服务器验证身份
const verifiedEnv = await domo.get('/domo/environment/v1/');
const { userId, userName, userEmail } = verifiedEnv;

// 或者使用工具包中的IdentityClient
import { IdentityClient } from '@domoinc/toolkit';
const response = await IdentityClient.get();
const user = response.body; // { id, displayName, emailAddress, role }

Event Listeners

事件监听器

javascript
// React to dataset updates on the page
domo.onDataUpdated((alias) => {
  console.log(`Dataset ${alias} was updated`);
  // Refresh your data or do nothing to prevent auto-reload
});

// React to page filter changes
domo.onFiltersUpdated((filters) => {
  console.log('Filters changed:', filters);
  // Apply filters to your visualization
});

// React to Domo variable changes
domo.onVariablesUpdated((variables) => {
  console.log('Variables updated:', variables);
});
javascript
// 响应页面上的数据集更新
domo.onDataUpdated((alias) => {
  console.log(`数据集 ${alias} 已更新`);
  // 刷新数据或不做任何操作以阻止自动重载
});

// 响应页面筛选器变更
domo.onFiltersUpdated((filters) => {
  console.log('筛选器已变更:', filters);
  // 将筛选器应用到可视化组件
});

// 响应Domo变量变更
domo.onVariablesUpdated((variables) => {
  console.log('变量已更新:', variables);
});

Navigation

导航

Important: Standard anchor tags with
href
do NOT work properly in Domo apps. You must use
domo.navigate()
:
javascript
// Navigate within Domo
domo.navigate('/page/123456789');

// Open in new tab
domo.navigate('/page/123456789', true);

// External URLs also work
domo.navigate('https://example.com', true);
注意:在Domo应用中,带有
href
的标准锚点标签无法正常工作。您必须使用
domo.navigate()
javascript
// 在Domo内部导航
domo.navigate('/page/123456789');

// 在新标签页中打开
domo.navigate('/page/123456789', true);

// 外部URL同样适用
domo.navigate('https://example.com', true);

Fetch Multiple Datasets

获取多个数据集

javascript
// Load multiple datasets in parallel
const [sales, customers, products] = await domo.getAll([
  '/data/v1/sales',
  '/data/v1/customers',
  '/data/v1/products'
]);
javascript
// 并行加载多个数据集
const [sales, customers, products] = await domo.getAll([
  '/data/v1/sales',
  '/data/v1/customers',
  '/data/v1/products'
]);

Update Page Filters Programmatically

以编程方式更新页面筛选器

javascript
domo.requestFiltersUpdate(
  [
    {
      column: 'category',
      operator: 'IN',
      values: ['Electronics', 'Clothing'],
      dataType: 'STRING'
    }
  ],
  true, // apply to page
  () => console.log('Filter update acknowledged'),
  (response) => console.log('Filter update completed:', response)
);
javascript
domo.requestFiltersUpdate(
  [
    {
      column: 'category',
      operator: 'IN',
      values: ['Electronics', 'Clothing'],
      dataType: 'STRING'
    }
  ],
  true, // 应用到页面
  () => console.log('筛选器更新已确认'),
  (response) => console.log('筛选器更新已完成:', response)
);