UNPKG

edeap

Version:

Euler Diagrams Drawn with Ellipses Area-Proportionally (Edeap)

85 lines (84 loc) 3.15 kB
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); }