Skip to content

Commit

Permalink
✨ Add support for snake_case and camelCase options for add_table, add…
Browse files Browse the repository at this point in the history
…_moc and add_overlay_from_stcs
  • Loading branch information
Xen0Xys committed Apr 24, 2024
1 parent 20d4d2f commit f1b6674
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 22 deletions.
33 changes: 20 additions & 13 deletions js/models/message_handler.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { camelCaseToSnakeCase } from "../utils";

export default class MessageHandler {
constructor(A, aladin) {
this.A = A;
Expand All @@ -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);
Expand All @@ -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)]);
Expand All @@ -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;
}
}
8 changes: 8 additions & 0 deletions js/utils.js
Original file line number Diff line number Diff line change
@@ -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("");
}
10 changes: 1 addition & 9 deletions js/widget.js
Original file line number Diff line number Diff line change
@@ -1,18 +1,10 @@
import A from "https://esm.sh/[email protected]";
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) => {
Expand Down

0 comments on commit f1b6674

Please sign in to comment.