From f60cf38b6c0da2fa2139e1834d4ff71053da656e Mon Sep 17 00:00:00 2001 From: Anjali Date: Mon, 13 May 2019 12:33:59 -0700 Subject: [PATCH] Populate column dropdown for getList --- apps/src/applab/dropletConfig.js | 3 ++- apps/src/applab/getListDropdown.js | 23 +++++++++++++++++++++++ apps/src/code-studio/datasetLibrary.json | 12 ++++++++---- 3 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 apps/src/applab/getListDropdown.js diff --git a/apps/src/applab/dropletConfig.js b/apps/src/applab/dropletConfig.js index 571a10bc5c262..f5749d2789157 100644 --- a/apps/src/applab/dropletConfig.js +++ b/apps/src/applab/dropletConfig.js @@ -15,6 +15,7 @@ import { setPropertyDropdown, setPropertyValueSelector } from './setPropertyDropdown'; +import {getListColumnDropdown} from './getListDropdown'; import {getStore} from '../redux'; import * as applabConstants from './constants'; @@ -527,7 +528,7 @@ export var blocks = [ params: ['tableName', 'columnName'], dropdown: { 0: () => getAssetDropdown('dataset'), - 1: ['true', 'false'] // () => populateColumns() + 1: getListColumnDropdown() }, nativeIsAsync: true, type: 'value' diff --git a/apps/src/applab/getListDropdown.js b/apps/src/applab/getListDropdown.js new file mode 100644 index 0000000000000..21b8a5237f284 --- /dev/null +++ b/apps/src/applab/getListDropdown.js @@ -0,0 +1,23 @@ +import datasetLibrary from '../code-studio/datasetLibrary.json'; +import {getFirstParam} from '../dropletUtils'; + +export function getListColumnDropdown() { + return function(aceEditor) { + const tableName = getFirstParam('getList', this.parent, aceEditor); + const columns = getColumnsForTable(tableName); + const opts = []; + columns.forEach(columnName => + opts.push({display: `"${columnName}"`, text: `"${columnName}"`}) + ); + return opts; + }; +} + +function getColumnsForTable(tableName) { + for (let dataset of datasetLibrary.datasets) { + if (`"${dataset.name}"` === tableName) { + return dataset.columns.split(','); + } + } + return []; +} diff --git a/apps/src/code-studio/datasetLibrary.json b/apps/src/code-studio/datasetLibrary.json index f2848bd5a45f1..231f251b6a101 100644 --- a/apps/src/code-studio/datasetLibrary.json +++ b/apps/src/code-studio/datasetLibrary.json @@ -3,22 +3,26 @@ { "name": "dogs", "description": "Different breeds of dogs, including images and rankings on different qualities like size and friendliness", - "url": "/api/v1/dataset-library/dogBreeds.csv" + "url": "/api/v1/dataset-library/dogBreeds.csv", + "columns": "name,size,dogFriendly,imgURL" }, { "name": "words", "description": "The 1000 most commonly used English words and their parts of speech", - "url": "/api/v1/dataset-library/words.csv" + "url": "/api/v1/dataset-library/words.csv", + "columns": "word,partOfSpeech" }, { "name": "countries", "description": "Information about different countries, images of their flags, and MP3 of their anthem", - "url": "/api/v1/dataset-library/countries.csv" + "url": "/api/v1/dataset-library/countries.csv", + "columns": "Country,flagImgURL,Capital,anthemMP3" }, { "name": "spotify", "description": "The top 20 songs in many regions of the world, including 30 second MP3 links to most songs", - "url": "/api/v1/dataset-library/spotify.csv" + "url": "/api/v1/dataset-library/spotify.csv", + "columns": "Track Name,Artist,Streams,songURL,Album Image,previewMP3,Position,Region,Country Code" } ] }