edeap
Version:
Euler Diagrams Drawn with Ellipses Area-Proportionally (Edeap)
85 lines (84 loc) • 3.15 kB
JavaScript
import { EdeapAreas } from "./EdeapAreas.js";
import { Optimizer } from "./optimizer.js";
import { generateSVG, initialState } from "./other.js";
// import { logMessage, logReproducability } from "./logMessage";
export { parse } from "./parse.js";
export { HILL_CLIMBING, SIMULATED_ANNEALING } from "./optimizer.js";
export { TextDimensionsBrowser } from "./TextDimensionsBrowser.js";
export { TextDimensionsServer } from "./TextDimensionsServer.js";
export class Edeap {
constructor(config) {
Object.defineProperty(this, "state", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "areas", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
this.state = initialState(config);
this.areas = new EdeapAreas(this.state);
// reproducability logging
// logMessage(
// logReproducability,
// "// paste this into the abstract description:"
// );
// logMessage(logReproducability, overlaps);
// logMessage(
// logReproducability,
// "// paste this in index.html just before the reproducability logging:"
// );
// for (let i = 0; i < sharedState.ellipseParams.length; i++) {
// logMessage(logReproducability, `ellipseParams[${i}] = {};`);
// logMessage(
// logReproducability,
// "ellipseParams[" + i + "].X = " + sharedState.ellipseParams[i].X + ";"
// );
// logMessage(
// logReproducability,
// "ellipseParams[" + i + "].Y = " + sharedState.ellipseParams[i].Y + ";"
// );
// logMessage(
// logReproducability,
// "ellipseParams[" + i + "].A = " + sharedState.ellipseParams[i].A + ";"
// );
// logMessage(
// logReproducability,
// "ellipseParams[" + i + "].B = " + sharedState.ellipseParams[i].B + ";"
// );
// logMessage(
// logReproducability,
// "ellipseParams[" + i + "].R = " + sharedState.ellipseParams[i].R + ";"
// );
// logMessage(
// logReproducability,
// "contours[" + i + "] = '" + sharedState.contours[i] + "';"
// );
// }
}
optimizie(config = {}) {
const { sync, ...cfg } = config;
const opt = new Optimizer({ state: this.state, areas: this.areas, ...cfg });
return opt.optimize(sync);
}
svg(cfg) {
return generateSVG({ state: this.state, areas: this.areas, ...cfg });
}
htmlReport() {
return this.areas.zoneAreaTableBody();
}
}
export function edeapSvg(config) {
const instancee = new Edeap(config);
instancee.optimizie({ ...config, sync: true });
return instancee.svg(config);
}
export async function edeapSvgAsync(config) {
const instancee = new Edeap(config);
await instancee.optimizie({ ...config, sync: false });
return instancee.svg(config);
}