// Requires global variable from page: ofn_available_units_sorted export default class VariantUnitManager { constructor() { this.units = this.#loadUnits(ofn_available_units_sorted); } getUnitName(scale, unitType) { if (this.units[unitType][scale]) { return this.units[unitType][scale]['name']; } else { return ''; } }; // Filter by measurement system compatibleUnitScales(scale, unitType) { const scaleSystem = this.units[unitType][scale]['system']; return Object.entries(this.units[unitType]) .filter(([scale, scaleInfo]) => { return scaleInfo['system'] == scaleSystem; }) .map(([scale, _]) => parseFloat(scale)) .sort(); } // private #loadUnits(units) { // Transform unit scale to a JS Number for compatibility. This would be way simpler in Ruby or Coffeescript!! const unitsTransformed = Object.entries(units).map(([measurement, measurementInfo]) => { const measurementInfoTransformed = Object.fromEntries(Object.entries(measurementInfo).map(([scale, unitInfo]) => [ parseFloat(scale), unitInfo ] )); return [ measurement, measurementInfoTransformed ]; }); return Object.fromEntries(unitsTransformed); } }