Skip to content

Instantly share code, notes, and snippets.

@on2air
Created February 20, 2020 18:51
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save on2air/3fb13f50a931316fb3adbf6f3e70aef7 to your computer and use it in GitHub Desktop.
Save on2air/3fb13f50a931316fb3adbf6f3e70aef7 to your computer and use it in GitHub Desktop.
const getCollabId = (email) => {
email = email.trim().toLowerCase()
let collabs = base.activeCollaborators
for(let collab of collabs){
if(collab.email.toLowerCase() === email){
return collab.id
}
}
return null
}
const cast = ( table, field, value ) => {
let before = value
let fieldMeta = table.getField(field)
// @ts-ignore
if(fieldMeta.type === 'singleSelect'){
value = {name:value}
// @ts-ignore
}else if(fieldMeta.type === 'multipleSelects'){
let items = value.split(',')
let values = []
items.forEach( i => {
values.push({name: i.trim()})
})
value = values
// @ts-ignore
}else if(fieldMeta.type === 'number' || fieldMeta.type === 'percent' || fieldMeta.type === 'currency'){
value = {name:parseFloat(value)}
// @ts-ignore
}else if(fieldMeta.type === 'multipleRecordLinks'){
let items = value.split(',')
let values = []
items.forEach( i => {
values.push({id: i.trim()})
})
value = values
// @ts-ignore
}else if(fieldMeta.type === 'singleRecordLink'){
value = {id:value}
// @ts-ignore
}else if(fieldMeta.type === 'multipleAttachments'){
let items = value.split(',')
let values = []
items.forEach( i => {
values.push({url: i.trim()})
})
value = values
// @ts-ignore
}else if(fieldMeta.type === 'checkbox'){
value = value === 1 || value === true || value === 'true' || value === '1' || value === 'yes' || value === 'on'
// @ts-ignore
}else if(fieldMeta.type === 'barcode'){
value = {text: value}
// @ts-ignore
}else if(fieldMeta.type === 'rating' || fieldMeta.type === 'duration'){
value = parseInt(value)
// @ts-ignore
}else if(fieldMeta.type === 'singleCollaborator'){
value = {id: getCollabId(value)}
// @ts-ignore
}else if(fieldMeta.type === 'multipleCollaborators'){
let items = value.split(',')
let values = []
items.forEach( i => {
values.push({id: getCollabId(i)})
})
value = values
// @ts-ignore
}
// console.log('CAST',field,before,value)
return value
}
const sleep = (milliseconds) => {
// @ts-ignore
return new Promise(resolve => setTimeout(resolve, milliseconds))
}
const toButtons = ( label, items, skip = [], buttonsStart = [], buttonsEnd = [] ) => {
let buttons = []
for(let i=0; i<items.length; i++){
let item = items[i]
if(!skip.includes(item.name)){
buttons.push( item.name )
}
}
buttons = [...buttonsStart,...buttons,...buttonsEnd]
return input.buttons(label, buttons)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment