diff --git a/js/models/message_handler.js b/js/models/message_handler.js index 7ef0c380..c11b069d 100644 --- a/js/models/message_handler.js +++ b/js/models/message_handler.js @@ -1,3 +1,5 @@ +import { camelCaseToSnakeCase } from "../utils"; + export default class MessageHandler { constructor(A, aladin) { this.A = A; @@ -9,29 +11,26 @@ export default class MessageHandler { } handleAddCatalogFromURL(msg) { - this.aladin.addCatalog( - this.A.catalogFromURL(msg["votable_URL"], msg["options"]), - ); + const options = MessageHandler.parseOptions(msg["options"] || {}); + this.aladin.addCatalog(this.A.catalogFromURL(msg["votable_URL"], options)); } handleAddMOCFromURL(msg) { - const options = msg["options"] || {}; - if (options["lineWidth"] === undefined) { - options["lineWidth"] = 3; - } + const options = MessageHandler.parseOptions(msg["options"] || {}); + if (options["lineWidth"] === undefined) options["lineWidth"] = 3; this.aladin.addMOC(this.A.MOCFromURL(msg["moc_URL"], options)); } handleAddMOCFromDict(msg) { - const options = msg["options"] || {}; - if (options["lineWidth"] === undefined) { - options["lineWidth"] = 3; - } + const options = MessageHandler.parseOptions(msg["options"] || {}); + if (options["lineWidth"] === undefined) options["lineWidth"] = 3; this.aladin.addMOC(this.A.MOCFromJSON(msg["moc_dict"], options)); } handleAddOverlayFromSTCS(msg) { - const overlayOptions = msg["overlay_options"]; + const overlayOptions = MessageHandler.parseOptions( + msg["overlay_options"] || {}, + ); const stcString = msg["stc_string"]; const overlay = this.A.graphicOverlay(overlayOptions); this.aladin.addOverlay(overlay); @@ -51,7 +50,7 @@ export default class MessageHandler { } handleAddTable(msg, buffers) { - const options = msg["options"] || {}; + const options = MessageHandler.parseOptions(msg["options"] || {}); const buffer = buffers[0].buffer; const decoder = new TextDecoder("utf-8"); const blob = new Blob([decoder.decode(buffer)]); @@ -66,4 +65,12 @@ export default class MessageHandler { ); URL.revokeObjectURL(url); } + + static parseOptions(options) { + for (const optionName in options) { + const convertedOptionName = camelCaseToSnakeCase(optionName); + options[convertedOptionName] = options[optionName]; + } + return options; + } } diff --git a/js/utils.js b/js/utils.js new file mode 100644 index 00000000..16f42a2b --- /dev/null +++ b/js/utils.js @@ -0,0 +1,8 @@ +export function camelCaseToSnakeCase(pyname) { + if (pyname.charAt(0) === "_") pyname = pyname.slice(1); + let temp = pyname.split("_"); + for (let i = 1; i < temp.length; i++) { + temp[i] = temp[i].charAt(0).toUpperCase() + temp[i].slice(1); + } + return temp.join(""); +} diff --git a/js/widget.js b/js/widget.js index df445791..552c3c4a 100644 --- a/js/widget.js +++ b/js/widget.js @@ -1,18 +1,10 @@ import A from "https://esm.sh/aladin-lite@3.3.3-beta"; import "./widget.css"; import EventHandler from "./models/event_handler"; +import { camelCaseToSnakeCase } from "./utils"; let idxView = 0; -function camelCaseToSnakeCase(pyname) { - if (pyname.charAt(0) === "_") pyname = pyname.slice(1); - let temp = pyname.split("_"); - for (let i = 1; i < temp.length; i++) { - temp[i] = temp[i].charAt(0).toUpperCase() + temp[i].slice(1); - } - return temp.join(""); -} - function initAladinLite(model, el) { let initOptions = {}; model.get("init_options").forEach((option_name) => {