From d580598558b7b083c41113b491ef9540e7189e00 Mon Sep 17 00:00:00 2001 From: Paul Kaplan <pkaplan@media.mit.edu> Date: Mon, 22 May 2017 15:18:17 -0400 Subject: [PATCH] Add dynamic labelling --- src/components/monitor/monitor.jsx | 2 +- src/lib/monitor-adapter.js | 13 ++++++++----- src/lib/opcode-labels.js | 10 +++++----- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/components/monitor/monitor.jsx b/src/components/monitor/monitor.jsx index edd0fb043..54b1ebe8a 100644 --- a/src/components/monitor/monitor.jsx +++ b/src/components/monitor/monitor.jsx @@ -7,7 +7,7 @@ const styles = require('./monitor.css'); const categories = { data: '#FF8C1A', sensing: '#5CB1D6', - sounds: '#CF63CF', + sound: '#CF63CF', looks: '#9966FF', motion: '#4C97FF' }; diff --git a/src/lib/monitor-adapter.js b/src/lib/monitor-adapter.js index eccf540be..f458f67c6 100644 --- a/src/lib/monitor-adapter.js +++ b/src/lib/monitor-adapter.js @@ -12,15 +12,18 @@ const MONITOR_HEIGHT = 23; const isUndefined = a => typeof a === 'undefined'; -module.exports = function ({id, opcode, value, x, y}, monitorIndex) { - - // Look up category and label from opcode label file +module.exports = function ({id, opcode, params, value, x, y}, monitorIndex) { let opcodeData = OpcodeLabels[opcode]; if (isUndefined(opcodeData)) { - log.error(`No category/label found for opcode: ${opcode}`); + log.error(`No data found for opcode: ${opcode}`); opcodeData = {category: 'data', label: opcode}; } - const {label, category} = opcodeData; + + // Use labelFn with fields if provided for dynamic labelling (e.g. variables) + let {label, category, labelFn} = opcodeData; + if (!isUndefined(labelFn)) { + label = labelFn(params); + } // Simple layout if x or y are undefined // @todo scratch2 has a more complex layout behavior we may want to adopt diff --git a/src/lib/opcode-labels.js b/src/lib/opcode-labels.js index 402d6e56e..9dbdcb59f 100644 --- a/src/lib/opcode-labels.js +++ b/src/lib/opcode-labels.js @@ -34,7 +34,7 @@ module.exports = { // Data data_variable: { category: 'data', - label: 'Variable _' // @todo placeholder for params + labelFn: params => params.VARIABLE }, // Sound @@ -50,18 +50,18 @@ module.exports = { // Sensing sensing_loudness: { category: 'sensing', - label: 'loundness' + label: 'loudness' }, sensing_of: { category: 'sensing', - label: '_ of _' // @todo placeholder for params + labelFn: params => `${params.PROPERTY} of ${params.OBJECT}` }, sensing_current: { category: 'sensing', - label: 'current _' // @todo placeholder for param + labelFn: params => params.CURRENTMENU.toLowerCase() }, sensing_timer: { - category: 'timer', + category: 'sensing', label: 'timer' } }; -- GitLab