(function(back) { const SETTINGS_FILE = "run.json"; var ExStats = require("exstats"); var statsList = ExStats.getList(); statsList.unshift({name:"-",id:""}); // add blank menu item var statsIDs = statsList.map(s=>s.id); // ...and overwrite them with any saved values // This way saved values are preserved if a new version adds more settings const storage = require('Storage') let settings = Object.assign({ record: true, B1: "dist", B2: "time", B3: "pacea", B4: "pacec", B5: "bpm", B6: "step", B7: "caden", B8: "speed", paceLength: 1000, notify: false, }, storage.readJSON(SETTINGS_FILE, 1) || {}); function saveSettings() { storage.write(SETTINGS_FILE, settings) } function getBoxChooser(boxID) { return { min: 0, max: statsIDs.length-1, value: Math.max(statsIDs.indexOf(settings[boxID]),0), format: v => statsList[v].name, onchange: v => { settings[boxID] = statsIDs[v]; saveSettings(); }, } } var menu = { '': { 'title': 'Run' }, '< Back': back, }; if (WIDGETS["recorder"]) menu[/*LANG*/"Record Run"] = { value : !!settings.record, format : v => v?/*LANG*/"Yes":/*LANG*/"No", onchange : v => { settings.record = v; saveSettings(); } }; ExStats.appendMenuItems(menu, settings, saveSettings); Object.assign(menu,{ 'Box 1': getBoxChooser("B1"), 'Box 2': getBoxChooser("B2"), 'Box 3': getBoxChooser("B3"), 'Box 4': getBoxChooser("B4"), 'Box 5': getBoxChooser("B5"), 'Box 6': getBoxChooser("B6"), 'Box 7': getBoxChooser("B7"), 'Box 8': getBoxChooser("B8"), }); E.showMenu(menu); })