with Columns Ai and Odoo?
Builds a graph object from scratch and publishes it. See the documentation
Builds a graph object from a template and publishes it. See the documentation
import { ChartType } from 'columns-graph-model';
import { Columns } from 'columns-sdk';
export default defineComponent({
props: {
columns_ai: {
type: "app",
app: "columns_ai",
}
},
async run({steps, $}) {
const rows = [{
"value": 312,
"state": "WA",
"parent": "US"
}];// rows is an example data set where you should organize your data in a similar way.
//Instantiates a Columns SDK object with your API Key.
const columns = new Columns(this.columns_ai.$auth.api_key);
const data = columns.data(['state'], ['value'], rows);
const graph = columns.graph(data);
// switch to different chart types: BAR, PIE, DOUGHGUT, LINE, AREA, SCATTER, etc.
graph.type = ChartType.COLUMN;
// customise the graph (lots of options in its data model)
graph.settings.general.palette = ['#ff0000', '#00ff00', '#0000ff'];
graph.settings.general.background = '#00000002';
return graph;
},
})
import xmlrpc from 'xmlrpc';
export default defineComponent({
props: {
odoo: {
type: "app",
app: "odoo",
}
},
async run({ steps, $ }) {
const url = this.odoo.$auth.server_url;
const db = this.odoo.$auth.db;
const username = this.odoo.$auth.username;
const password = this.odoo.$auth.password;
// Create clients for common and object endpoints
const common = xmlrpc.createSecureClient(`${url}/xmlrpc/2/common`);
const models = xmlrpc.createSecureClient(`${url}/xmlrpc/2/object`);
// Using async/await with promises
async function getFields() {
try {
// Authenticate and get uid
const uid = await new Promise((resolve, reject) => {
common.methodCall('authenticate', [db, username, password, {}], (error, value) => {
if (error) reject(error);
resolve(value);
});
});
// Get fields
const results = await new Promise((resolve, reject) => {
models.methodCall('execute_kw', [
db,
uid,
password,
'res.partner',
'fields_get',
[],
{ 'attributes': ['string', 'help', 'type'] }
], (error, value) => {
if (error) reject(error);
resolve(value);
});
});
return results;
} catch (error) {
throw new Error(error);
}
}
return await getFields();
},
})