APIリファレンス(fw2)
2023/04/26
    2.2.1.3.readDir()
    2.2.2.1.dbtable
    2.2.2.2.dbview
    2.2.2.4.report
    2.2.2.5.screen
     2.2.4.1.1.parse()
    2.2.4.2.CustomLog
     2.2.4.2.1.write()
     2.2.4.3.2.open()
     2.2.4.4.2.open()
    2.2.4.5.DataLinker
     2.2.4.5.2.addHook()
     2.2.4.5.3.clear()
     2.2.4.5.4.delete()
     2.2.4.5.5.get()
     2.2.4.5.6.insert()
     2.2.4.5.7.set()
     2.2.4.5.9.update()
     2.2.4.5.10.upload()
     2.2.4.5.11.upsert()
     2.2.4.5.12.validate()
     2.2.4.5.13.where()
    2.2.4.6.DataSet
     2.2.4.6.2.average()
     2.2.4.6.3.concat()
     2.2.4.6.4.convert()
     2.2.4.6.5.crossJoin()
     2.2.4.6.6.filter()
     2.2.4.6.7.length()
     2.2.4.6.8.lookup()
     2.2.4.6.10.remove()
     2.2.4.6.11.rename()
     2.2.4.6.12.sort()
     2.2.4.6.13.subset()
     2.2.4.6.14.sum()
     2.2.4.6.15.toList()
    2.2.4.7.DataStream
     2.2.4.7.2.select()
    2.2.4.8.Dialog
     2.2.4.8.2.close()
     2.2.4.8.3.confirm()
     2.2.4.8.4.error()
     2.2.4.8.5.lightbox()
     2.2.4.8.6.message()
     2.2.4.8.7.open()
     2.2.4.8.8.wait()
    2.2.4.9.download()
    2.2.4.10.filter
     2.2.4.11.1.delete()
     2.2.4.11.2.get()
     2.2.4.11.3.has()
     2.2.4.11.4.set()
    2.2.4.12.Mail
     2.2.4.12.2.attach()
     2.2.4.12.3.send()
    2.2.4.13.Map
     2.2.4.13.3.getLatLng()
     2.2.4.14.1.parse()
     2.2.4.14.2.styles
     2.2.4.15.2.parse()
     2.2.4.16.1.recognize()
    2.2.4.17.Order
     2.2.4.17.2.shift()
     2.2.4.18.2.parse()
     2.2.4.18.3.toImage()
     2.2.4.19.1.make()
     2.2.4.19.2.read()
     2.2.4.20.1.delete()
     2.2.4.20.2.open()
     2.2.4.20.3.read()
     2.2.4.20.4.write()
     2.2.4.21.2.open()
     2.2.4.22.2.send()
     2.2.4.23.1.end()
     2.2.4.23.2.get()
     2.2.4.23.3.head()
     2.2.4.23.4.post()
     2.2.4.23.5.query()
     2.2.4.23.6.send()
     2.2.4.23.7.set()
     2.2.4.24.1.open()
     2.2.4.25.1.parse()
    2.3.1.1.load
    2.3.1.2.receive
    2.3.1.3.unload
   2.3.2.関数
    2.3.2.1.close()
    2.3.2.2.isDialog()
    2.3.2.3.on()
    2.3.2.4.send()
    2.3.3.1.anyItem
    2.3.3.2.dialog
     2.3.3.2.1.confirm
     2.3.3.2.2.date
     2.3.3.2.3.error
     2.3.3.2.4.file
     2.3.3.2.5.lightbox
     2.3.3.2.6.message
     2.3.3.2.7.wait
    2.3.3.3.items
    2.3.3.4.query
    2.3.3.5.radioGroup
    2.4.1.1.style
     2.4.2.1.1.append
     2.4.2.1.2.delete
     2.4.2.2.1.repeat
     2.4.2.2.3.detailTable
     2.4.2.3.1.click
     2.4.2.3.2.contextmenu
     2.4.2.3.3.doubleclick
     2.4.2.3.4.mousedown
     2.4.2.3.5.mouseup
     2.4.3.1.1.append
     2.4.3.1.2.delete
     2.4.3.2.1.repeat
     2.4.3.2.3.detailTable
     2.4.3.3.1.click
     2.4.3.3.2.contextmenu
     2.4.3.3.3.doubleclick
     2.4.3.3.4.mousedown
     2.4.3.3.5.mouseup
     2.4.4.1.1.click
     2.4.4.1.2.contextmenu
     2.4.4.1.3.doubleclick
     2.4.4.1.4.mousedown
     2.4.4.1.5.mouseup
     2.4.5.1.1.disabled
     2.4.5.1.2.value
     2.4.5.1.3.tip
     2.4.5.2.1.click
     2.4.5.2.2.contextmenu
     2.4.5.2.3.doubleclick
     2.4.5.2.4.mousedown
     2.4.5.2.5.mouseup
     2.4.6.1.1.calculate
     2.4.6.1.2.dataLink
     2.4.6.1.3.disabled
     2.4.6.1.4.filter
     2.4.6.1.5.placeholder
     2.4.6.1.6.readOnly
     2.4.6.1.7.value
     2.4.6.2.1.blur
     2.4.6.2.2.change
     2.4.6.2.3.click
     2.4.6.2.4.contextmenu
     2.4.6.2.5.doubleclick
     2.4.6.2.6.focus
     2.4.6.2.7.keydown
     2.4.6.2.8.keypress
     2.4.6.2.9.keyup
     2.4.6.2.10.mousedown
     2.4.6.2.11.mouseup
     2.4.7.1.1.checked
     2.4.7.1.2.dataLink
     2.4.7.1.3.disabled
     2.4.7.1.4.value
     2.4.7.2.1.blur
     2.4.7.2.2.change
     2.4.7.2.3.click
     2.4.7.2.4.contextmenu
     2.4.7.2.5.doubleclick
     2.4.7.2.6.focus
     2.4.7.2.7.mousedown
     2.4.7.2.8.mouseup
     2.4.8.1.1.checked
     2.4.8.1.2.dataLink
     2.4.8.1.3.disabled
     2.4.8.1.4.value
     2.4.8.2.1.blur
     2.4.8.2.2.change
     2.4.8.2.3.click
     2.4.8.2.4.contextmenu
     2.4.8.2.5.doubleclick
     2.4.8.2.6.focus
     2.4.8.2.7.mousedown
     2.4.8.2.8.mouseup
     2.4.9.1.1.autoLoad
     2.4.9.1.2.dataLink
     2.4.9.1.3.disabled
     2.4.9.1.4.list
     2.4.9.1.5.placeholder
     2.4.9.1.6.selected
     2.4.9.1.7.value
     2.4.9.2.1.blur
     2.4.9.2.2.change
     2.4.9.2.3.click
     2.4.9.2.4.contextmenu
     2.4.9.2.5.doubleclick
     2.4.9.2.6.focus
     2.4.9.2.7.keydown
     2.4.9.2.8.keypress
     2.4.9.2.9.keyup
     2.4.9.2.10.mousedown
     2.4.9.2.11.mouseup
     2.4.10.1.1.autoLoad
     2.4.10.1.2.dataLink
     2.4.10.1.3.disabled
     2.4.10.1.4.list
     2.4.10.1.5.placeholder
     2.4.10.1.6.readOnly
     2.4.10.1.7.value
     2.4.10.2.1.blur
     2.4.10.2.2.change
     2.4.10.2.3.click
     2.4.10.2.4.contextmenu
     2.4.10.2.5.doubleclick
     2.4.10.2.6.focus
     2.4.10.2.7.keydown
     2.4.10.2.8.keypress
     2.4.10.2.9.keyup
     2.4.10.2.10.mousedown
     2.4.10.2.11.mouseup
     2.4.11.1.1.disabled
     2.4.11.1.2.max
     2.4.11.1.3.min
     2.4.11.1.4.step
     2.4.11.1.5.value
     2.4.11.2.1.blur
     2.4.11.2.2.change
     2.4.11.2.3.click
     2.4.11.2.4.contextmenu
     2.4.11.2.5.doubleclick
     2.4.11.2.6.focus
     2.4.11.2.7.keydown
     2.4.11.2.8.keypress
     2.4.11.2.9.keyup
     2.4.11.2.10.mousedown
     2.4.11.2.11.mouseup
     2.4.12.1.2.disabled
     2.4.12.1.4.hourOptions
     2.4.12.1.5.maxDate
     2.4.12.1.6.minDate
     2.4.12.1.8.placeholder
     2.4.12.1.9.readOnly
     2.4.12.1.10.usedialog
     2.4.12.1.11.value
     2.4.12.2.1.blur
     2.4.12.2.2.change
     2.4.12.2.3.click
     2.4.12.2.4.contextmenu
     2.4.12.2.5.doubleclick
     2.4.12.2.6.focus
     2.4.12.2.7.keydown
     2.4.12.2.8.keypress
     2.4.12.2.9.keyup
     2.4.12.2.10.mousedown
     2.4.12.2.11.mouseup
     2.4.13.1.1.dataLink
     2.4.13.1.2.disabled
     2.4.13.1.3.readOnly
     2.4.13.1.4.value
     2.4.13.2.1.blur
     2.4.13.2.2.change
     2.4.13.2.3.click
     2.4.13.2.4.contextmenu
     2.4.13.2.5.doubleclick
     2.4.13.2.6.focus
     2.4.13.2.7.keydown
     2.4.13.2.8.keypress
     2.4.13.2.9.keyup
     2.4.13.2.10.mousedown
     2.4.13.2.11.mouseup
     2.4.14.1.1.disabled
     2.4.14.1.2.max
     2.4.14.1.3.min
     2.4.14.1.4.pageSize
     2.4.14.1.5.value
     2.4.14.2.1.change
     2.4.14.2.2.click
     2.4.14.2.3.contextmenu
     2.4.14.2.4.doubleclick
     2.4.14.2.5.mousedown
     2.4.14.2.6.mouseup
     2.4.15.1.1.dataLink
     2.4.15.1.2.disabled
     2.4.15.1.3.file
     2.4.15.1.4.readOnly
     2.4.15.1.5.value
     2.4.15.2.4.readAsText
     2.4.15.2.5.upload
     2.4.15.3.1.blur
     2.4.15.3.2.change
     2.4.15.3.3.click
     2.4.15.3.4.contextmenu
     2.4.15.3.5.doubleclick
     2.4.15.3.6.focus
     2.4.15.3.7.mousedown
     2.4.15.3.8.mouseup
   2.4.16.画像
     2.4.16.1.1.alt
     2.4.16.1.2.dataLink
     2.4.16.1.3.fitSize
     2.4.16.1.4.src
     2.4.16.1.5.tip
     2.4.16.1.6.value
     2.4.16.2.1.click
     2.4.16.2.2.contextmenu
     2.4.16.2.3.doubleclick
     2.4.16.2.4.mousedown
     2.4.16.2.5.mouseup
     2.4.17.1.1.calculate
     2.4.17.1.2.dataLink
     2.4.17.1.3.filter
     2.4.17.1.4.tip
     2.4.17.1.5.value
     2.4.17.2.1.click
     2.4.17.2.2.contextmenu
     2.4.17.2.3.doubleclick
     2.4.17.2.4.mousedown
     2.4.17.2.5.mouseup
     2.4.18.1.1.autoLoad
     2.4.18.1.2.dataLink
     2.4.18.1.3.direction
     2.4.18.1.4.disabled
     2.4.18.1.5.list
     2.4.18.1.6.listType
     2.4.18.1.7.placeholder
     2.4.18.1.8.selected
     2.4.18.1.9.selectType
     2.4.18.1.10.value
     2.4.18.2.1.click
     2.4.18.2.2.contextmenu
     2.4.18.2.3.doubleclick
     2.4.18.2.4.mousedown
     2.4.18.2.5.mouseup
     2.4.19.1.1.col
     2.4.19.1.2.data
     2.4.19.1.3.header
     2.4.19.1.4.placeholder
     2.4.19.1.5.row
     2.4.19.2.1.click
     2.4.19.2.2.contextmenu
     2.4.19.2.3.doubleclick
     2.4.19.2.4.mousedown
     2.4.19.2.5.mouseup
     2.4.20.1.1.firstDate
     2.4.20.1.2.lastDate
     2.4.20.1.3.month
     2.4.20.1.4.texts
     2.4.20.1.6.year
     2.4.20.2.1.addText
     2.4.20.2.2.clearText
     2.4.20.2.3.delText
     2.4.20.2.4.move
     2.4.20.2.5.nextMonth
     2.4.20.2.6.nextYear
     2.4.20.2.7.prevMonth
     2.4.20.2.8.prevYear
     2.4.20.3.1.change
     2.4.20.3.2.click
     2.4.20.3.3.contextmenu
     2.4.20.3.4.doubleclick
     2.4.20.3.5.mousedown
     2.4.20.3.6.mouseup
     2.4.21.1.1.days
     2.4.21.1.2.dayWidth
     2.4.21.1.3.disabled
     2.4.21.1.4.edate
     2.4.21.1.5.etime
     2.4.21.1.6.height
     2.4.21.1.7.sdate
     2.4.21.1.8.stime
     2.4.21.1.9.texts
     2.4.21.1.10.timeWidth
     2.4.21.2.1.addText
     2.4.21.2.2.clearText
     2.4.21.2.3.delText
     2.4.21.2.4.nextDays
     2.4.21.2.5.prevDays
     2.4.21.3.1.click
     2.4.21.3.2.contextmenu
     2.4.21.3.3.doubleclick
     2.4.21.3.4.mousedown
     2.4.21.3.5.mouseup
     2.4.22.1.1.autoUpdate
     2.4.22.1.3.disabled
     2.4.22.1.4.readOnly
     2.4.22.1.5.screenItem
     2.4.22.1.6.useDialog
     2.4.22.2.1.click
     2.4.22.2.2.contextmenu
     2.4.22.2.3.doubleclick
     2.4.22.2.4.mousedown
     2.4.22.2.5.mouseup
     2.4.22.2.6.update
     2.4.23.1.2.placeholder
     2.4.23.1.3.table
     2.4.23.2.1.click
     2.4.23.2.2.contextmenu
     2.4.23.2.3.doubleclick
     2.4.23.2.4.mousedown
     2.4.23.2.5.mouseup
     2.4.24.1.1.L
     2.4.24.1.2.lat
     2.4.24.1.3.lng
     2.4.24.1.4.map
     2.4.24.1.5.mapSource
     2.4.24.1.6.markers
     2.4.24.1.7.zoom
     2.4.24.2.1.addMarker
     2.4.24.2.3.delMarker
     2.4.24.2.4.showMap
     2.4.24.3.1.change
     2.4.24.3.2.click
     2.4.24.3.3.contextmenu
     2.4.24.3.4.doubleclick
     2.4.24.3.5.mousedown
     2.4.24.3.6.mouseup
     2.4.24.4.1.id
     2.4.24.4.2.instance
     2.4.24.4.3.lat
     2.4.24.4.4.lng
     2.4.24.4.5.on()
     2.4.24.4.6.opacity
     2.4.24.4.7.popup
     2.4.25.1.1.autoUpdate
     2.4.25.1.2.chart
     2.4.25.1.3.data
     2.4.25.1.4.dataColors
     2.4.25.1.5.type
     2.4.25.2.1.dataColor
     2.4.25.2.2.update
     2.4.25.3.1.click
     2.4.25.3.2.contextmenu
     2.4.25.3.3.doubleclick
     2.4.25.3.4.mousedown
     2.4.25.3.5.mouseup
     2.4.26.1.1.height
     2.4.26.1.2.width
     2.4.26.2.1.getContext
     2.4.26.3.1.click
     2.4.26.3.2.contextmenu
     2.4.26.3.3.doubleclick
     2.4.26.3.4.drop
     2.4.26.3.5.mousedown
     2.4.26.3.6.mouseup
     2.4.26.3.7.resize
     2.4.27.1.1.data
     2.4.27.2.1.send
     2.4.27.3.1.blur
     2.4.27.3.2.click
     2.4.27.3.3.contextmenu
     2.4.27.3.4.doubleclick
     2.4.27.3.5.focus
     2.4.27.3.6.keydown
     2.4.27.3.7.keypress
     2.4.27.3.8.keyup
     2.4.27.3.9.mousedown
     2.4.27.3.10.mouseup
     2.4.27.3.11.receive
     2.4.28.1.1.html
     2.4.28.1.2.src
     2.4.28.1.3.value
     2.4.28.2.1.click
     2.4.28.2.2.contextmenu
     2.4.28.2.3.doubleclick
     2.4.28.2.4.mousedown
     2.4.28.2.5.mouseup
     2.4.29.1.1.dataLink
     2.4.29.1.2.disabled
     2.4.29.1.3.fitSize
     2.4.29.1.4.imageSource
     2.4.29.1.5.lineColor
     2.4.29.1.6.lineWidth
     2.4.29.1.7.value
     2.4.29.2.1.getContext
     2.4.29.2.2.remove
     2.4.29.2.3.upload
     2.4.29.3.1.click
     2.4.29.3.2.contextmenu
     2.4.29.3.3.doubleclick
     2.4.29.3.4.drop
     2.4.29.3.5.mousedown
     2.4.29.3.6.mouseup
     2.4.29.3.7.resize
     2.4.30.1.1.autoDetect
     2.4.30.1.2.dataLink
     2.4.30.1.3.href
     2.4.30.1.4.target
     2.4.30.1.5.text
     2.4.30.1.6.value
     2.4.30.2.1.click
     2.4.30.2.2.contextmenu
     2.4.30.2.3.doubleclick
     2.4.30.2.4.mousedown
     2.4.30.2.5.mouseup
     2.4.31.1.2.commentNum
     2.4.31.1.3.readOnly
     2.4.31.2.1.loadComment
     2.4.31.3.1.submit
     2.4.31.3.2.update
     2.4.32.1.1.list
     2.4.32.1.2.placeholder
     2.4.32.2.1.click
     2.4.32.2.2.contextmenu
     2.4.32.2.3.doubleclick
     2.4.32.2.4.drop
     2.4.32.2.5.mousedown
     2.4.32.2.6.mouseup
     2.4.33.1.1.alt
     2.4.33.1.2.dataLink
     2.4.33.1.3.file
     2.4.33.1.4.fitSize
     2.4.33.1.5.src
     2.4.33.1.6.value
     2.4.33.2.4.readAsText
     2.4.33.2.5.upload
     2.4.33.3.1.click
     2.4.33.3.2.contextmenu
     2.4.33.3.3.doubleclick
     2.4.33.3.4.mousedown
     2.4.33.3.5.mouseup
     2.4.34.1.1.value
     2.4.34.2.1.click
     2.4.34.2.2.contextmenu
     2.4.34.2.3.doubleclick
     2.4.34.2.4.keydown
     2.4.34.2.5.keypress
     2.4.34.2.6.keyup
     2.4.34.2.7.mousedown
     2.4.34.2.8.mouseup
     2.4.35.1.1.disabled
     2.4.35.1.2.stampGroup
     2.4.35.1.3.stampList
     2.4.35.1.4.userList
     2.4.35.2.1.load
     2.4.35.3.1.change
     2.4.35.3.2.click
     2.4.35.3.3.contextmenu
     2.4.35.3.4.doubleclick
     2.4.35.3.5.keydown
     2.4.35.3.6.keypress
     2.4.35.3.7.keyup
     2.4.35.3.8.mousedown
     2.4.35.3.9.mouseup
     2.4.36.1.1.disabled
     2.4.36.1.2.tab
     2.4.36.1.3.tabWidth
     2.4.36.1.4.value
     2.4.36.2.1.change
     2.4.36.2.2.click
     2.4.36.2.3.contextmenu
     2.4.36.2.4.doubleclick
     2.4.36.2.5.keyup
     2.4.36.2.6.keypress
     2.4.36.2.7.keyup
     2.4.36.2.8.mousedown
     2.4.36.2.9.mouseup
     2.4.37.1.1.autoLoad
     2.4.37.1.2.dataLink
     2.4.37.1.3.disabled
     2.4.37.1.4.list
     2.4.37.1.5.placeholder
     2.4.37.1.6.readOnly
     2.4.37.1.7.value
     2.4.37.2.1.click
     2.4.37.2.2.contextmenu
     2.4.37.2.3.doubleclick
     2.4.37.2.4.keydown
     2.4.37.2.5.keypress
     2.4.37.2.6.keyup
     2.4.37.2.7.mousedown
     2.4.37.2.8.mouseup
     2.4.38.1.1.disabled
     2.4.38.1.5.value
     2.4.38.2.2.click
     2.4.38.2.3.contextmenu
     2.4.38.2.4.doubleclick
     2.4.38.2.5.keydown
     2.4.38.2.6.keypress
     2.4.38.2.7.keyup
     2.4.38.2.8.mousedown
     2.4.38.2.9.mouseup
     2.4.39.1.1.dataLink
     2.4.39.1.2.disabled
     2.4.39.1.3.layerList
     2.4.39.1.4.placeholder
     2.4.39.1.5.value
     2.4.39.2.1.change
     2.4.39.2.2.click
     2.4.39.2.3.contextmenu
     2.4.39.2.4.doubleclick
     2.4.39.2.5.keydown
     2.4.39.2.6.keypress
     2.4.39.2.7.keyup
     2.4.39.2.8.mousedown
     2.4.39.2.9.mouseup
     2.4.40.1.1.disabled
     2.4.40.1.2.logGroup
     2.4.40.1.3.logType
     2.4.40.1.4.value
     2.4.40.2.1.reload
     2.4.40.3.1.click
     2.4.40.3.2.contextmenu
     2.4.40.3.3.doubleclick
     2.4.40.3.4.keydown
     2.4.40.3.5.keypress
     2.4.40.3.6.keyup
     2.4.40.3.7.mousedown
     2.4.40.3.8.mouseup
     2.4.41.1.1.scale
     2.4.41.1.2.src
     2.4.41.2.1.load
     2.4.41.2.2.upload
     2.4.41.3.1.click
     2.4.41.3.2.contextmenu
     2.4.41.3.3.doubleclick
     2.4.41.3.4.drop
     2.4.41.3.5.mousedown
     2.4.41.3.6.mouseup
     2.4.42.1.1.autoLoad
     2.4.42.1.2.dataLink
     2.4.42.1.3.disabled
     2.4.42.1.4.images
     2.4.42.1.5.imageSize
     2.4.42.1.6.list
     2.4.42.1.7.placeholder
     2.4.42.1.8.selected
     2.4.42.1.9.selectType
     2.4.42.1.10.value
     2.4.42.2.1.change
     2.4.42.2.2.click
     2.4.42.2.3.contextmenu
     2.4.42.2.4.doubleclick
     2.4.42.2.5.keydown
     2.4.42.2.6.keypress
     2.4.42.2.7.keyup
     2.4.42.2.8.mousedown
     2.4.42.2.9.mouseup
   4.3.1.config
   4.3.2.app
    4.3.2.1.dbtable
    4.3.2.2.dbview
    4.3.2.3.findModel
    4.3.2.4.report
    4.3.2.5.screen
   4.3.3.lib
    4.3.3.1.CustomLog
     4.3.3.1.1.write()
    4.3.3.2.DataSet
     4.3.3.2.2.average()
     4.3.3.2.3.concat()
     4.3.3.2.4.convert()
     4.3.3.2.5.crossJoin()
     4.3.3.2.6.filter()
     4.3.3.2.7.length()
     4.3.3.2.8.lookup()
     4.3.3.2.10.remove()
     4.3.3.2.11.rename()
     4.3.3.2.12.sort()
     4.3.3.2.13.subset()
     4.3.3.2.14.sum()
    4.3.3.3.Mail
     4.3.3.3.2.send()
   4.4.1.log()
    4.5.1.1.get()
    4.5.1.2.post()
     4.5.2.2.1.append
     4.5.2.2.2.appendChild
     4.5.2.2.3.basename
     4.5.2.2.6.extname
     4.5.2.2.7.getFilePath
     4.5.2.2.8.mkdir
     4.5.2.2.9.move
     4.5.2.2.10.pdf2image
     4.5.2.2.11.read
     4.5.2.2.12.readdir
     4.5.2.2.13.remove
     4.5.2.2.14.rename
     4.5.2.2.15.stat
     4.5.2.2.16.unzip
     4.5.2.2.17.write
     4.5.2.2.18.zip
    4.5.3.1.関数
     4.5.3.1.1.getURL
     4.5.3.1.2.register
    4.5.4.3.カラム
    4.5.4.4.行
    4.5.4.5.セル
    4.5.4.6.画像
     4.5.4.7.1.書式設定
     4.5.4.7.2.フォント
     4.5.4.7.3.配置
     4.5.4.7.4.枠線
   4.5.5.XPDFJ
     4.5.5.2.1.addBox
     4.5.5.2.2.addImage
     4.5.5.2.3.addLine
     4.5.5.2.4.addParagraph
     4.5.5.2.5.addText
     4.5.5.2.6.getTextSizes
     4.5.5.2.7.newDoc
     4.5.5.2.8.newPage
     4.5.5.2.9.ouput
    4.5.5.3.使用例
     4.5.5.3.1.実例1
     4.5.5.3.2.実例2
   6.2.1.cols
   6.2.2.config
   6.3.1.count()
   6.4.1.limit()
   6.4.5.where()
   6.6.2.where()
   6.7.1.all()
   6.7.3.where()
    6.9.1.3.IN
    6.9.1.4.BETWEEN
    6.9.1.5.IS NULL
   6.9.4.用例

1.Buddy APIの概要

この文書では、Buddyアプリ開発者がJavascriptプログラムの開発に用いるアプリケーションプログラムインタフェース(API)について述べます。本文書はフレームワーク2を対象とします。

BuddyのJavaScript APIは、スクリーン設計およびサーバー機能設計に用いられます。

スクリーン設計に関するAPIはスクリーンスクリプトの作成に用いられます。スクリーンスクリプトにはブラウザ側で実行する処理を記述します。スクリーンスクリプトでは、あらかじめ用意されているbuddyscreenとbuddyの2つのオブジェクトを通じてBuddyのAPI機能を利用します。

一方、サーバー機能設計に関するAPIはサーバー側で実行する処理を記述するために用いられます。スクリーンスクリプトと同様に、サーバー機能のスクリプトではあらかじめ用意されているbuddyとlibの2つのオブジェクトを通じてAPI機能を利用します。

2.スクリーン設計

本項ではスクリーン設計で用いるAPIについて説明します。

2.1.概要

空のスクリーンのスクリプトには次の内容があらかじめセットされています。

 buddyscreen.on("load", async(evt)=>{
     //初期化処理
 })

 buddyscreen.on("unload", async(evt)=>{

 })

 buddyscreen.on("receive", async(evt)=>{

 })

buddyscreenはこのスクリーン自身を意味するオブジェクトで、あらかじめ用意されています。

buddyscreen.on()はイベントハンドラを定義する関数です。イベントハンドラは、指定した名前のイベントが生じたときに呼ばれる関数です。上述の空のスクリーンのスクリプトではload, unload, receiveの3つのイベントについて空のイベントハンドラを定義しています。

スクリーンスクリプトでは上記の3つのイベントのハンドラに加えて、スクリーンを構成するスクリーンモジュールについて生じるイベントのハンドラを記述します。

例えばアイテム名BUTTON1のボタンがクリックされたときのイベントハンドラは次のように書きます。

 buddyscreen.items.BUTTON1.on("click", async(evt)=>{
     // ここに処理内容を書く
 })

関数や変数を自由に定義して使うことができます。

また、buddyというオブジェクトもあらかじめ用意されています。buddyオブジェクトを通じてBuddyの各種機能をスクリーンスクリプトから利用することができます。

2.2.buddyオブジェクト

buddyオブジェクトはスクリーンスクリプトの作成に用いるBuddyの機能を提供するオブジェクトです。buddyオブジェクトはスクリーンプログラム内であらかじめ定義されています。buddyオブジェクトの主な構成要素は次の通りです。

2.2.1.buddy.api

本項ではbuddy.apiモジュールについて説明します。このモジュールにはアプリのfilesディレクトリを操作する関数やユーザ情報を得るための関数が含まれます。

2.2.1.1.deleteFile()

buddy.api.deleteFile関数はアプリのfilesディレクトリ内のファイルを削除します。

 buddy.api.deleteFile(file)

file引数には削除するファイルのパス名を文字列で与えます。以下に例を示します。

 //ファイルを削除する
 const file = "test.txt" //削除するファイル名
 const result = await buddy.api.deleteFile(file)
2.2.1.2.getUserInfo()

buddy.api.getUserInfo関数はログインユーザー(自分自身)の情報を取得します。

 buddy.api.getUserInfo()

以下に例を示します。

 const userInfo = await buddy.api.getUserInfo();

buddy.api.getUserInfo関数は以下のプロパティから成るオブジェクトを返します。

guset
ゲストアカウントかどうか(true/false)
name
表示名
user_id
ユーザーID
2.2.1.3.readDir()

buddy.api.readDir関数はアプリのfilesディレクトリ内のディレクトリの中身を取得します。

 buddy.api.readDir(dir)

dir引数には対象のディレクトリ名を文字列で与えます。空文字列を与えるとfilesディレクトリの中身を返します。

以下に例を示します。

 const dir = "" //取得するディレクトリ(images,importなど)
 const result = await buddy.api.readDir(dir)

buddy.api.readDir関数は、ディレクトリの中身(ファイルまたはディレクトリ)を表すオブジェクトの配列を返します。この配列の要素は、以下のプロパティから成るオブジェクトです。

atime
最終アクセス日時
ctime
作成日時
dir
ディレクトリかどうかを表す真偽値(ディレクトリなら真)
mtime
最終更新日時
name
ファイル名
path
ファイル名を含むパス名
size
ファイルサイズ(バイト数)
2.2.1.4.renameFile()

buddy.api.renameFile関数はアプリのfilesディレクトリ内のファイルの名前を変更します。

 buddy.api.renameFile(src, dst)

src引数には名前を変更するファイルのパス名、dst引数には変更後のパス名を文字列で与えます。

以下に例を示します。

 const src = "foo.txt" //名前を変更するファイル
 const dst = "bar.txt" //変更後のファイル名
 const result = await buddy.api.renameFile(src, dst)

2.2.2.buddy.app

本項ではbuddy.appモジュールについて説明します。このモジュールにはアプリを構成するDBテーブル、DBビュー、スクリーン、レポート、サーバー機能を表すオブジェクトとそれらを操作するための関数が含まれます。

2.2.2.1.dbtable

buddy.app.dbtableプロパティはDBテーブル設計で定義されたDBテーブルの集合を表すオブジェクトです。個々のDBテーブルオブジェクトは次のように名前で参照できます。

     const table1 = buddy.app.dbtable.table1
     const name = 'table2'
     const table2 = buddy.app.dbtable[name]

DBテーブルオブジェクトについては【モデルオブジェクト】を参照してください。

2.2.2.2.dbview

buddy.app.dbviewプロパティはDBビュー設計で定義されたDBビューの集合を表すオブジェクトです。個々のDBビューオブジェクトは次のように名前で参照できます。

     const view1 = buddy.app.dbview.view1
     const name = 'view2'
     const view2 = buddy.app.dbview[name]

DBビューオブジェクトについては【モデルオブジェクト】を参照してください。

2.2.2.3.findModel()

buddy.app.findModel関数はDBテーブル・ビュー設計で定義されたDBテーブル・ビューオブジェクトを返します。

 buddy.app.findModel(name)

name引数にはDBテーブル・ビューの名前を文字列で与えます。

DBテーブル・ビューオブジェクトについては【モデルオブジェクト】を参照してください。

2.2.2.4.report

buddy.app.reportプロパティはレポート設計で定義されたレポートの集合を表すオブジェクトです。個々のレポートオブジェクトは次のように名前で参照できます。

     const report1 = buddy.app.report.report1
     const name = 'report2'
     const report2 = buddy.app.report[name]
2.2.2.5.screen

buddy.app.screenプロパティはスクリーン設計で定義されたスクリーンの集合を表すオブジェクトです。個々のスクリーンオブジェクトは次のように名前で参照できます。

     const screen1 = buddy.app.screen.screen1
     const name = 'screen2'
     const screen2 = buddy.app.screen[name]
2.2.2.6.serverFunction

buddy.app.serverFunctionプロパティはサーバー機能設計で定義されたサーバー機能の集合を表すオブジェクトです。個々のサーバー機能オブジェクトは次のように名前で参照できます。

     const function1 = buddy.app.serverFunction.function1
     const name = 'function2'
     const function2 = buddy.app.serverFunction[name]
2.2.2.7.transitionTo()

buddy.app.transitionTo関数は現在のスクリーンから別のスクリーンへ移行します。

 buddy.app.transitionTo(screenName, params, query)

screenName引数にはスクリーン名を文字列で与えます。params引数にはURLの追加パスとしてデータを渡すときに使用するパラメータを与えます。ただし、どのような追加パスを使用するかをあらかじめ設定しておく必要があり、今のところアプリのスクリーンについてこの設定をする手段が用意されていないため使えません。よってparams引数には空のオブジェクト{}を指定してください。query引数にはURLの末尾に「?変数=値&...」の形式でデータを渡すためのクエリを{変数名: 値, ...}の形式のオブジェクトで与えます。params引数とquery引数は省略できます。

2.2.3.buddy.config

buddy.configプロパティは、アプリやサーバーの設定情報を表すオブジェクトです。このオブジェクトは以下のプロパティから成ります。

AppName
アプリ名
companyName
会社名
host
サーバーのホスト名
port
サーバーのポート番号
target
アプリのビルド種別("debug" または "release")

2.2.4.buddy.lib

buddy.libモジュールは、Buddyの様々な機能にアクセスするAPIを提供するモジュールの集まりです。

2.2.4.1.CSV(プラグイン)

buddy.lib.CSV は、CSVサポートプラグインをアプリに追加することによって利用できます。

2.2.4.1.1.parse()

CSV形式のテキストを読み取ります。

  const csvtext = await buddyscreen.items.FILE1.readAsText({})
  const data = buddy.lib.CSV.parse(csvtext)

結果は配列の配列になります。

2.2.4.2.CustomLog

buddy.lib.CustomLogモジュールは、アプリのカスタムログファイルにタイムスタンプを付けてメッセージを出力する機能を提供するモジュールです。

2.2.4.2.1.write()

buddy.lib.CustomLog.write関数はカスタムログにメッセージを出力します。

 buddy.lib.CustomLog.write(text)

text引数には出力するメッセージを文字列で与えます。

以下に例を示します。

 //カスタムログへ出力する
 const text = "文字列"
 await buddy.lib.CustomLog.write(text)

text引数に与えた文字列は、関数呼び出し時のタイムスタンプ、実行ユーザの名前と共に日付別のカスタムログファイルに書き込まれます。カスタムログファイルは開発画面のログ閲覧機能により閲覧できます。

2.2.4.3.DataExporter

DataExporterクラスはスクリプトからデータエクスポートダイアログを開くための機能を提供するクラスです。

2.2.4.3.1.コンストラクタ

DataExporterオブジェクトを作成する方法を以下に示します。

 new buddy.lib.DataExporter(options)

options引数には、データエクスポートダイアログのオプションを以下のプロパティから成るオブジェクトで与えます。

table
テーブル名(省略可)

以下に例を示します。この例ではtable1というDBテーブルが選択された状態でデータエクスポートダイアログを開きます。

 const exporter = new buddy.lib.DataExporter({
     table: "table1" //テーブル名の指定
 })
 const result = await exporter.open()
2.2.4.3.2.open()

DataExporterオブジェクトのopenメソッドはデータエクスポートダイアログを開きます。

 open()

以下に例を示します。

 const exporter = new buddy.lib.DataExporter({
     table: "table1" //テーブル名の指定
 })
 const result = await exporter.open()
 if(result.code === "success"){
     //成功時の処理
 }

openメソッドは以下のプロパティから成るオブジェクトを返します。

code
データエクスポートが成功したかどうかを表す文字列。成功ならば"success"、失敗ならば"err"が渡されます。
value
Errorオブジェクト(データエクスポートが失敗した場合)
2.2.4.4.DataImporter

DataImporterクラスはスクリプトからデータインポートダイアログを開くための機能を提供するクラスです。

2.2.4.4.1.コンストラクタ

DataImporterオブジェクトを作成する方法を以下に示します。

 new buddy.lib.DataImporter(options)

options引数には、データインポートダイアログのオプションを以下のプロパティから成るオブジェクトで与えます。

table
テーブル名(省略可)

以下に例を示します。この例ではtable1というDBテーブルが選択された状態でデータインポートダイアログを開きます。

 const importer = new buddy.lib.DataImporter({
     table: "table1" //テーブル名の指定
 })
 const result = await importer.open()
2.2.4.4.2.open()

DataImporterオブジェクトのopenメソッドはデータエクスポートダイアログを開きます。

 open()

以下に例を示します。

 const importer = new buddy.lib.DataImporter({
     table: "table1" //テーブル名の指定
 })
 const result = await importer.open()
 if(result.code === "success"){
     //成功時の処理
 }

openメソッドは以下のプロパティから成るオブジェクトを返します。

code
データインポートが成功したかどうかを表す文字列。成功ならば"success"、失敗ならば"err"が渡されます。
value
Errorオブジェクト(データインポートが失敗した場合)
2.2.4.5.DataLinker

本項ではDataLinkerクラスについて説明します。

値を格納できるスクリーンモジュールには「データリンク」という属性があり、DBテーブル・ビュー名とカラム名をセットできます。DataLinkerクラスは、データリンク属性を設定したスクリーンアイテムとデータベースとの結びつきを扱う仕組みを提供します。

2.2.4.5.1.コンストラクタ

DataLinkerオブジェクトを作成する方法を以下に示します。

 new buddy.lib.DataLinker(buddy, table) 

buddy引数にはbuddyオブジェクトを与えます。table引数にはDBテーブル・ビュー名またはDBテーブル・ビューオブジェクトを与えます。以下に例を示します。

 // DBテーブル table1 に対するDataLinkerを作成
 const linker1 = new buddy.lib.DataLinker(buddy, 'table1')
 
 // DBビュー view1 に対するDataLinkerを作成
 const linker2 = new buddy.lib.DataLinker(buddy, buddy.app.dbview.view1)
2.2.4.5.2.addHook()

DataLinkerオブジェクトのaddHookメソッドは、スクリーンアイテムやデータベースの読み書きの際に、データの加工、ログの保存、通知などの処理をおこなうフック関数を設定します。

 addHook(フック名, フック関数)

フック名はどういう場合にフック関数が実行されるかを指定する名前で、次のいずれかを指定します。

get
getメソッドが実行される時。得られたデータをフック関数で加工すれば、その結果がgetの結果となる。
set
setメソッドが実行される時。setに渡されたデータをフック関数で加工すれば、その結果がsetされる。
after_insert
insertメソッドが実行された後。insertされたデータがフック関数で得られるのでログや通知に利用できる。
before_insert
insertメソッドが実行される前。insertされるデータをフック関数で加工できる。また処理をキャンセルすることもできる。
after_update
updateメソッドが実行された後。updateされたデータがフック関数で得られるのでログや通知に利用できる。
before_update
updateメソッドが実行される前。updateされるデータをフック関数で加工できる。また処理をキャンセルすることもできる。
after_upsert
upsertメソッドが実行された後。upsertされたデータがフック関数で得られるのでログや通知に利用できる。
before_upsert
upsertメソッドが実行される前。upsertされるデータをフック関数で加工できる。また処理をキャンセルすることもできる。
after_delete
deleteメソッドが実行された後。deleteされたデータがフック関数で得られるのでログや通知に利用できる。
before_delete
deleteメソッドが実行される前。処理をキャンセルすることができる。

フック関数は次の内容のオブジェクトを一つ引数に取ります。

cancel
この関数を実行すると処理をキャンセルできる。(before_* の場合。)
data
DateSetオブジェクトとしてデータが入っている。フック関数はこのdataをreturnするようにする。

同じフック名で複数回addHook()することが可能で、そのタイミングで複数のフック関数が実行されることになります。

フック関数は同期的に実行されます。処理の中で非同期処理を実行することは可能ですが、終了を待たずにreturnすることに注意してください。

以下、いくつかの例をあげます。

linker.addHook('get', (proc) => {
    // カラムnowの値を現在日時に
    proc.data.rows[0].now = new Date()
    return proc.data
})
linker.addHook('before_insert', (proc) => {
    // age < 18 は追加しない
    if(proc.data.rows[0].age < 18){
    	proc.cancel()
    }
    return proc.data
})

フック関数でcancel()で処理をキャンセルした場合、そのlinker.insert()などの実行はエラーとなりますので、try catch でエラー処理をおこなうようにしてください。

2.2.4.5.3.clear()

DataLinkerオブジェクトのclearメソッドは、指定のDBテーブル・ビューがデータリンクにセットされたアイテム群の値をまとめてクリアします。

 clear(mode)

mode引数には値のクリア方法を次のいずれかの文字列で与えます。

"insert"
新しいレコードを挿入できるようにクリアする
"update"
既存のレコードを更新できるようにクリアする
2.2.4.5.4.delete()

DataLinkerオブジェクトのdeleteメソッドは、アイテム群から収集した値にもとづいて指定のDBテーブルからレコードを削除します。

 delete()

以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたアイテム群の値を集めて、table1のレコードを削除します。

 const tableName = "table1" //対象のテーブル
 const linker = new buddy.lib.DataLinker(buddy, tableName)
 const result = await linker.delete()

deleteメソッドはDataSetオブジェクトを返します。詳しくは【buddy.lib.DataSet】を参照してください。

2.2.4.5.5.get()

DataLinkerオブジェクトのgetメソッドは、指定のDBテーブル・ビューがデータリンクにセットされたアイテム群から値を収集します。

 get()

以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたアイテム群の値を収集します。

 const tableName = "table1" //対象のテーブル
 const linker = new buddy.lib.DataLinker(buddy, tableName)
 const data = linker.get()

getメソッドはDataSetオブジェクトを返します。詳しくは【buddy.lib.DataSet】を参照してください。

2.2.4.5.6.insert()

DataLinkerオブジェクトのinsertメソッドは、アイテム群から収集した値にもとづいてDBテーブルにレコードを挿入します。

 insert()

以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたアイテム群の値を集めて、table1にレコードを挿入します。

 const tableName = "table1" //対象のテーブル
 const linker = new buddy.lib.DataLinker(buddy, tableName)
 const result = await linker.insert()

insertメソッドはDataSetオブジェクトを返します。詳しくは【buddy.lib.DataSet】を参照してください。

2.2.4.5.7.set()

DataLinkerオブジェクトのsetメソッドは、指定のDBテーブル・ビューがデータリンクにセットされたアイテム群に値をまとめてセットします。

 set(data)

data引数にはアイテム群にセットする値を以下のいずれかの形式で与えます。

a. {カラム名: 値, ...} の形式のオブジェクト
b. 上記の形式のオブジェクトを要素とする配列
c. DataSetオブジェクト

以下に例を示します。この例では、table1というDBテーブルからIDカラムの値が1のレコードを読み込み、その結果に基づいてtable1がデータリンクに設定されたアイテム群に値をセットします。

const tableName = "table1" //対象のテーブル
const linker = new buddy.lib.DataLinker(buddy, tableName)
const data = await buddy.app.dbtable[tableName].select()
    .where({ID: 1})
linker.set(data)
2.2.4.5.8.setDisabled()

TBD 閲覧・入力画面テンプレートを参照

2.2.4.5.9.update()

DataLinkerオブジェクトのupdateメソッドは、アイテム群から収集した値にもとづいてDBテーブルのレコードを更新します。

 update()

以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたアイテム群の値を集めて、table1のレコードを更新します。

 const tableName = "table1" //対象のテーブル
 const linker = new buddy.lib.DataLinker(buddy, tableName)
 const result = await linker.update()

updateメソッドはDataSetオブジェクトを返します。詳しくは【buddy.lib.DataSet】を参照してください。

2.2.4.5.10.upload()

DataLinkerオブジェクトのuploadメソッドは、ファイル型カラムをデータリンクに設定したファイル選択モジュールがある場合に、選択されたファイルをアップロードしてそのURLをアイテムの値にセットします。

 upload()

以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたファイル選択モジュールについて、選択されたファイルをアップロードしてそのURLをアイテムの値にセットします。

const tableName = "table1" //対象のテーブル
const linker = new buddy.lib.DataLinker(buddy, tableName)
await linker.upload()
2.2.4.5.11.upsert()

DataLinkerオブジェクトのupsertメソッドは、アイテム群から収集した値にもとづいてDBテーブルに新しいレコードを挿入、または既存のレコードを更新します。

 upsert()

以下に例を示します。この例では、table1というDBテーブルがデータリンクに設定されたアイテム群の値を集めて、table1に新しいレコードを追加、または既存のレコードを更新します。

 const tableName = "table1" //対象のテーブル
 const linker = new buddy.lib.DataLinker(buddy, tableName)
 const result = await linker.upsert()

upsertメソッドはDataSetオブジェクトを返します。詳しくは【buddy.lib.DataSet】を参照してください。

2.2.4.5.12.validate()

DataLinkerオブジェクトのvalidateメソッドは、アイテム群から収集した値について、カラムのデータ型などと形式が合致しているか検査します。

 validate(mode)

mode引数には検査方法を次のいずれかの文字列で与えます。

"insert"
レコードを挿入できるか検査する
"update"
レコードを更新できるか検査する

validateメソッドは、検査結果として問題が見つかったら、その内容を示す文字列を、問題がなければnullを返します。

2.2.4.5.13.where()

TBC 検索画面テンプレートを参照

2.2.4.6.DataSet

本項ではDataSetクラスについて説明します。

DataSetは、カラム名の配列と、各カラム名に対する値を格納したオブジェクト(レコード)の配列からなる複合的データを扱います。いわばDBテーブルのようなデータをメモリ上に保持する仕組みと言えます。

実際にDBテーブルやDBビューのselect()で得られるデータはDataSetオブジェクトであり、またinsert()やupdate()でDBテーブルに投入するデータもDataSetオブジェクトの形で与えることができます。
また、テーブルモジュールのdataプロパティにDataSetオブジェクトをセットして、カラム名をヘッダとした表としてデータを表示することができます。

DataSetは、以下で説明する様々なメソッドによって、一部分を取り出す、カラム名を変更する、他のDataSetと結合する、などの操作を施すことができます。

2.2.4.6.1.コンストラクタ

DataSetオブジェクトを作成するには、次のようにします。

    const dataset = new buddy.lib.DataSet([
        {name: "foo", amount: 100},
        {name: "bar", amount: 200},
    ])

次のようにして、カラム名の順序や表示名を指定することもできます。

    const dataset = new buddy.lib.DataSet({
    	fields: [
            {name: "name", display: "名称"},
            {name: "amount", display: "数量"},
        ],
        rows: [
            {name: "foo", amount: 100},
            {name: "bar", amount: 200},
    	]
    })

上記の例のdatasetをテーブルモジュールのdataプロパティにセットした場合、テーブルのヘッダにはdisplayで指定した表示名が使われます。

上記のようにしてコンストラクタでデータを与えてDataSetオブジェクトを作成することもできますが、データベースに格納されたデータの場合はDBテーブルやDBビューのselect()メソッドで読み出せばその結果はDataSetオブジェクトになっています。

2.2.4.6.2.average()

DataSetオブジェクトのaverage()メソッドは、指定されたカラムの値の全レコードにおける平均を返します。
カラムは配列で複数指定することもでき、その場合はそれぞれのカラムについての平均値の配列を返します。

  const avg = dataset.average("amount")
  const avgarray = dataset.average(["amount", "price"])
  const amountavg = avgarray[0]
  const priceavg = avgarray[1]

※別名として、avg()もaverage()と同じ機能です。

2.2.4.6.3.concat()

DataSetオブジェクトのconcat()メソッドは、レコードを追加します。
引数にはDataSetオブジェクトを与えるか、DataSetのコンストラクタで指定できるデータを与えるとDataSetオブジェクトに変換されて処理されます。引数に与えたDataSetオブジェクトの全レコードが、レコードに追加されます。
ただし、カラム情報は元のままになりますので、追加するDataSetオブジェクトはカラム構造が同じものにしなければなりません。

  dataset.concat(dataset2)
2.2.4.6.4.convert()

DataSetオブジェクトのconvert()メソッドは、指定したカラムの各レコードでの値について、指定した関数によって処理した結果に置き換えます。
関数は元の値を引数として、新しい値を返すようにします。

例えば amount カラムの値を全レコードについて 1 加算するには次のようにします。

  dataset.convert("amount", function(oldvalue){
    return oldvalue + 1
  })

※内容がコピーされて新たなDataSetオブジェクトが作られるものではなく、元のDataSetオブジェクトの内容が変化することに注意してください。

2.2.4.6.5.crossJoin()

DataSetオブジェクトのcrossJoin()メソッドは、別のDataSetオブジェクトを結合してできた新たなDataSetオブジェクトを返します。

結合の方法としては、全レコードのそれぞれに、指定した別DataSetの全レコードを結合します。カラムは両方をあわせたものになります。同名のカラムがあれば、そのカラムの値は指定した別DataSetの値になります。

結果のレコード数は、元のレコード数と指定した別DataSetのレコード数を掛け合わせたものになります。

  const dataset3 = dataset.crossJoin(dataset2)

上記の例で、例えばdatasetのレコードが次の内容で、

  [
    {foo: 1, bar: 10},
    {foo: 2, bar: 20},
  ]

dataset2のレコードが次の内容の場合、

  [
    {bar: 100, baz: 1000},
    {bar: 200, baz: 2000},
  ]

dataset3のレコードは次の内容になります。

  [
    {foo: 1, bar: 100, baz: 1000},
    {foo: 1, bar: 200, baz: 2000},
    {foo: 2, bar: 100, baz: 1000},
    {foo: 2, bar: 200, baz: 2000},
  ]

上述のように、同名のカラムがあると値が上書きされることになりますので、それでは困る場合は、あらかじめどちらかのDataSetについてrename()を用いてカラム名を変更しておくようにします。

2.2.4.6.6.filter()

DataSetオブジェクトのfilter()メソッドは、指定した条件を満たすレコードだけを抽出して新しいDataSetオブジェクトを作成して返します。

例えば、amountカラムの値が正のレコードのみを抽出するなら、次のようにします。

    const dataset2 = dataset.filter(function(row){return row.amount > 0})

filter()メソッドの引数には、レコードオブジェクト(カラム名をプロパティとしてその値がセットされている)を引数として条件に合致するときに真を返す関数を指定します。
上記の例では、rowがレコードオブジェクトで、row.amount > 0 という式がamountカラムの値が正の場合に真となります。

2.2.4.6.7.length()

DataSetオブジェクトのlength()メソッドは、レコード数を返します。

2.2.4.6.8.lookup()

DataSetオブジェクトのlookup()メソッドは、指定した条件に合致した最初のレコードを返します。
条件は、レコードオブジェクトを引数として、条件に合致するかどうかを真偽値で返す関数を指定します。
条件に合致したレコードがない場合はundefinedを返します。

例えば、amountカラムの値が負の最初のレコードを得たい場合は、次のようにします。

  const foundrecord = dataset.lookup(function(record){
    return record.amount < 0
  })

※条件に合致した全レコードを得たい場合は、find()メソッドを使用してください。

2.2.4.6.9.leftOuterJoin()

DataSetオブジェクトのleftOuterJoin()メソッドは、別のDataSetオブジェクトを結合してできた新たなDataSetオブジェクトを返します。

結合の方法としては、元の全レコードに対して、on()で指定したカラムの値が合致する別DataSetのレコードがあればそれを結合します。
カラムは両方のカラムをあわせたものになります。
結合の際に同名のカラムがあれば、そのカラムの値は別DataSetの値になります。

  const dataset3 = dataset.leftOuterJoin(dataset2).on('foo', 'baz')

上の例ではdatasetのfooカラムの値と、dataset2のbazカラムの値が同じレコードを結合しています。該当するdataset2のレコードがない場合はdatasetの元のレコードがそのまま結果のレコードになります。

例えば、datasetのレコードが次の内容で、

  [
    {foo: 1, bar: 10},
    {foo: 2, bar: 20},
  ]

dataset2のレコードが次の内容の場合、

  [
    {baz: 1, xyz: 100},
    {baz: 1, xyz: 200},
    {baz: 3, xyz: 300},
  ]

結果のdataset3のレコードは次の内容になります。

  [
    {foo: 1, bar: 10, baz: 1, xyz: 100},
    {foo: 1, bar: 10, baz: 1, xyz: 200},
    {foo: 2, bar: 20},
  ]

上述のように、同名のカラムがあると値が上書きされることになりますので、それでは困る場合は、あらかじめどちらかのDataSetについてrename()を用いてカラム名を変更しておくようにします。

2.2.4.6.10.remove()

DataSetオブジェクトのremove()メソッドは、指定のカラムを除いたそれ以外のカラムをコピーした新たなDataSetオブジェクトを作成して返します。

例えば、name,amount,memoの三つのカラムを持つDataSetオブジェクトdatasetがあったとして、次のようにするとamount以外のカラムをコピーしたDataSetオブジェクトdataset2を作ることができます。

    const dataset2 = dataset.remove("amount")
2.2.4.6.11.rename()

DataSetオブジェクトのrename()メソッドは、カラム名を変更しながらコピーした新たなDataSetオブジェクトを作成して返します。

例えば、nameとamountのカラムを持つDataSetオブジェクトdatasetをコピーして、カラム名amountをvalueに変更したい場合、次のようにします。

  const dataset2 = dataset.rename("amount", "value")

dataset2はnameとvalueのカラムを持つDataSetオブジェクトになります。

また引数に、元のカラム名を引数として変更後のカラム名を返す関数を指定することもできます。

  const dataset2 = dataset.rename(function(old){
    return "set1." + old
  })

上の例は、すべてのカラム名の前に「set1.」と付けます。

2.2.4.6.12.sort()

DataSetオブジェクトのsort()メソッドは、レコードの並び順を変更します。
引数に、並び順を決める関数を指定します。並び順を決める関数は比較するレコードオブジェクトをa, b二つの引数として、aが先の場合は負、bが先の場合は正、同順の場合は0を返します。

例えば、amountカラムの値が大きいものを先にする並び順としたい場合は、次のようにします。

  const dataset2 = dataset.sort(function(a, b){
    return b.amount - a.amount
  })
2.2.4.6.13.subset()

DataSetオブジェクトのsubset()メソッドは、指定したカラム名のカラムだけを抜き出した新たなDataSetオブジェクトを作成して返します。

例えば、name,amount,memoの三つのカラムを持つDataSetオブジェクトdatasetがあったとして、次のようにするとnameとamountをコピーしたDataSetオブジェクトdataset2を作ることができます。

    const dataset2 = dataset.subset("name", "amount")
2.2.4.6.14.sum()

DataSetオブジェクトのsum()メソッドは、指定されたカラムの値の全レコードにおける合計を返します。
カラムは配列で複数指定することもでき、その場合はそれぞれのカラムについての合計値の配列を返します。

  const sum = dataset.sum("amount")
  const sumarray = dataset.average(["amount", "price"])
  const amountsum = sumarray[0]
  const pricesum = sumarray[1]
2.2.4.6.15.toList()

DataSetオブジェクトのtoList()メソッドは、プルダウンリストモジュールやリストモジュールのlistプロパティにセットできる形式のDataSetオブジェクトを得ます。

プルダウンリストやリストのlistプロパティにセットするデータは、{name: 表示文字列, value: 値} というオブジェクトの配列です。toList()では表示文字列と値として使うカラム名を指定して、この形式のデータがrowsプロパティの値としてセットされたDataSetオブジェクトを得ます。

  const list = dataset.toList("ID", "name")

上記のように引数を文字列で与える場合、一つ目が値のカラム名、二つ目が表示文字列のカラム名です。表示文字列のカラム名を省略すると、値のカラムと同じになります。

  const list = dataset.toList({name: "name", value: "ID"})

このようにnameとvalueのプロパティを持つオブジェクトで指定することもできます。

2.2.4.6.16.toNameValueList()

DataSetオブジェクトのtoNameValueList()メソッドは、プルダウンリストモジュールやリストモジュールのlistプロパティにセットできる形式の配列データを得ます。

プルダウンリストやリストのlistプロパティにセットするデータは、{name: 表示文字列, value: 値} というオブジェクトの配列です。toNameValueList()では表示文字列と値として使うカラム名を指定して、この形式のデータを得ます。

  const list = dataset.toNameValueList("ID", "name")

上記のように引数を文字列で与える場合、一つ目が値のカラム名、二つ目が表示文字列のカラム名です。表示文字列のカラム名を省略すると、値のカラムと同じになります。

  const list = dataset.toNameValueList({name: "name", value: "ID"})

このようにnameとvalueのプロパティを持つオブジェクトで指定することもできます。

2.2.4.7.DataStream

本項ではDataStreamクラスについて説明します。
DataStreamは、全体を一度に読み込むのではなく、指定のサイズずつ読み込む機能を提供します。

2.2.4.7.1.コンストラクタ

DataStreamオブジェクトは次のように作成します。

  const table = buddyscreen.app.dbtable.table1
  const stream = new buddy.lib.DataStream(table, {
    size: 100
  })

コンストラクタの第一引数はDBテーブルかDBビューのモデルオブジェクトです。第二引数はオプションで、次のものを指定します。

limit
全体として何件のレコードを読み込むかを指定します。省略すると全レコード。
offset
何件目のレコードから読み込むかを指定します。先頭が0です。省略すると先頭から。
orderby
レコードの並び順を決めるカラム名を指定します。
size
何件ずつ読み込むかを指定します。省略すると100。
where
読み込むレコードを限定する条件を指定します。
2.2.4.7.2.select()

DataStreamオブジェクトのselect()メソッドは、コンストラクタで指定されたsizeずつレコード群を読み込んでDataSetオブジェクトとして返します。

  const result = await stream.select()
2.2.4.8.Dialog

本項ではDialogクラスについて説明します。

Dialogクラスは、様々なダイアログ表示の機能を提供します。

2.2.4.8.1.コンストラクタ

Dialogオブジェクトを作成するには次のようにします。

  const dialog = new buddy.lib.Dialog({…})

引数のオブジェクトには必要に応じて次のオプションを指定します。

width
横幅
height
高さ
size
サイズを"small"、"medium"、"large"のいずれかで指定。横幅と高さは次になる。
small: 230x240
medium: 600x520
large: 960x740
title
ダイアログのタイトル
modal
モーダル表示するかしないかの真偽値。モーダル表示の場合はダイアログ内のボタンをクリックしない限り閉じません。モーダル表示でない場合は、ダイアログの外側をクリックしても閉じます。
props
ダイアログの内側へ渡すプロパティオブジェクト
style
ダイアログに適用するスタイルオブジェクト
buttons
ダイアログに表示するボタン群を次の名称の配列で指定(括弧内はボタンに表示される文字列)。ボタンをクリックするとダイアログが閉じて、結果オブジェクトのcodeプロパティにボタンの名称がセットされる。
no(いいえ)
cancel(キャンセル)
close(閉じる)
back(戻る)
ok(OK)
save(保存)
yes(はい)
forward(進む)
next(次へ)
button_order
ボタンの順序指定("auto"、"custom"のいずれか)。autoの場合はBuddy内部で決まっている順序。customの場合はbuttonsで指定した順序。
2.2.4.8.2.close()

Dialogオブジェクトのclose()メソッドは、そのダイアログを閉じます。
message()などのメソッドを使ってダイアログを開くとき、awaitで閉じるのを待つ場合には、close()メソッドを使うことはありません。
次の例のように、awaitを使わずにダイアログを開き、タイマーで指定時間後に閉じるようにしたい場合に使用します。

  const dialog = new buddy.lib.Dialog({title: "確認"})
  dialog.message("保存しました") //awaitしない
  setTimeout(function(){dialog.close();}, 3000) //3秒後に閉じる
2.2.4.8.3.confirm()

Dialogオブジェクトのconfirm()メソッドは、「OK」と「キャンセル」のボタンを持つダイアログで指定したメッセージを表示します。ボタンをクリックするとダイアログが閉じて、結果オブジェクトのcodeプロパティにクリックしたボタンに応じて「ok」「cancel」がセットされます。
confirm()メソッドはプロミスを返すので、ダイアログが閉じて結果が返されるのを待ちたい場合は、awaitを使用する必要があることに注意してください。

  const dialog = new buddy.lib.Dialog({title: "確認"})
  const result = await dialog.confirm("よろしいですか?")
  if(result.code == "ok"){
    // OKボタンをクリックしたときの処理
  }
2.2.4.8.4.error()

Dialogオブジェクトのerror()メソッドは、「閉じる」ボタンを持つダイアログで指定したメッセージをエラーとして表示します。
error()メソッドはプロミスを返すので、ダイアログが閉じのを待ちたい場合は、awaitを使用する必要があることに注意してください。

  const dialog = new buddy.lib.Dialog({title: "エラー"})
  await dialog.error("処理できませんでした")
2.2.4.8.5.lightbox()

Dialogオブジェクトのlightbox()メソッドは、画像をダイアログで表示します。ダイアログ中の画像をクリックするとダウンロードする機能があります。
lightbox()メソッドはプロミスを返すので、ダイアログが閉じのを待ちたい場合は、awaitを使用する必要があることに注意してください。

  const dialog = new buddy.lib.Dialog({title: "画像", props: {download: false}})
  await dialog.lightbox("files/images/sample.png")  

デフォルトでは画像をクリックするとダウンロードしますが、上記の例のように props: {download: false} を指定するとクリックしてもダウンロードしません。

2.2.4.8.6.message()

Dialogオブジェクトのmessage()メソッドは、「閉じる」ボタンを持つダイアログで指定したメッセージを表示します。
message()メソッドはプロミスを返すので、ダイアログが閉じのを待ちたい場合は、awaitを使用する必要があることに注意してください。

  const dialog = new buddy.lib.Dialog({title: "確認"})
  await dialog.message("処理しました")

buttonsで使用するボタンを指定することもできます。

  const dialog = new buddy.lib.Dialog({title: "確認", buttons: ["yes", "no"], modal: true})
  const result = await dialog.message("18歳以上ですか?")
  if(result.code == "yes"){
    //yesの場合の処理
  }else{
    //noの場合の処理
  }
2.2.4.8.7.open()

Dialogオブジェクトのopen()メソッドは、ダイアログの中でスクリーンを開きます。そのスクリーンのスクリプトで、ダイアログを閉じて結果を返すことができます。
open()メソッドはプロミスを返すので、ダイアログが閉じて結果が返されるのを待ちたい場合は、awaitを使用する必要があることに注意してください。

例えば、編集用のスクリーンeditscreenを、{id: 1}を渡してダイアログで開き、閉じられたら編集結果を受け取るには次のようにします。

  const dialog = new buddy.lib.Dialog({title: "編集", props: {id: 1}, size: "medium"})
  const result = await dialog.open(buddy.app.screen.editscreen)
  if(result.code == "ok"){
    // result.value に入っている値による処理
  }

以下はダイアログの中で開かれるスクリーンeditscreenの側のスクリプト例です。

次のようにしてreceiveイベントで指定されたidを受け取ることができます。また、ダイアログを閉じる関数closeも自動的に渡されるので、保持しておいて閉じるときに使います。

  let id
  let close
  buddyscreen.on("receive", async(evt)=>{
    close = evt.data.close
    id = evt.data.id
    // 指定されたidのデータを読み出すなどの処理
  })

また、editscreenのボタンOKBUTTONをクリックされたらダイアログを閉じて結果を返すようにするには次のようにします。

  buddyscreen.items.OKBUTTON.on('click', async(evt)=>{
    // 結果データを変数に入れる
    const value = …
    // 閉じて結果を返す
    close('ok', value)
  })
2.2.4.8.8.wait()

Dialogオブジェクトのwait()メソッドは、何らかの時間のかかる処理をおこなう場合に、進行中を示すダイアログを表示してユーザーを待たせるために使用します。
このダイアログには「閉じる」などのボタンはありません。処理が終了したらclose()メソッドで閉じるように、スクリプトを書く必要があります。

  const dialog = new buddy.lib.Dialog()
  dialog.wait("処理中です…")
  // ここで目的の処理をおこなう
  …
  // 処理が終了したらダイアログを閉じる
  dialog.close()  

wait()の引数の文字列がダイアログのタイトルとして表示されます。

2.2.4.9.download()

buddy.lib.download()関数は、指定のURLをブラウザ内で開くのではなく、ファイルとしてダウンロードします。

  buddy.lib.download('files/images/sample.png', 'test.png')

第一引数にはURLを指定します。第二引数にはダウンロードして保存するときのファイル名を指定します。第二引数を省略すると、URLのファイル名部分のファイル名で保存されます。
上記の例では、第二引数にtest.pngを指定しているので、このファイル名で保存されます。指定しなければsample.pngとして保存されることになります。

2.2.4.10.filter

filterは数値、文字列、日付などの値を指定の形式表示に加工する機能を提供します。
buddy.lib.filter.getFilteredValue()を使用して以下のようにします。

例えば、変数valueの数値をカンマ区切りの文字列にしたいときは次のようにします。

  const result = buddy.lib.filter.getFilteredValue('comma', value)

getFilteredValue()の第一引数には、フィルタ名またはフィルタ名の配列を指定し、第二引数には対象の値を指定します。
フィルタ名の配列を指定した場合は、配列の先頭から順に適用されて、最後の結果を返します。

例えば、カンマ区切りにして先頭に「¥」をつけたいときは次のようにします。

  const result = buddy.lib.filter.getFilteredValue(['comma', 'yen'], value)

フィルタ名を指定しなければ、値がnullかundefinedの場合は空文字列に、そうでない場合は元の値のまま、となります。例えば次のようにします。

  const result = buddy.lib.filter.getFilteredValue(null, value)

フィルタには標準では次のものが用意されています。

数値関係

percent
パーセント
round
四捨五入
floor
切り捨て
ceil
切り上げ
tentimes
10倍
onetenth
10分の1
yen
comma
カンマ区切り
byte
バイト

日付関係

wareki
和暦の日付
seireki
西暦の日付

文字列関係

upper
大文字アルファベット
lower
小文字アルファベット
katakana
ひらがなからカタカナ
hiragana
カタカナからひらがな
zen2han
全角から半角英数字
han2zen
半角から全角英数字

その他

mask
*でマスク

拡張フィルタプラグインをアプリに追加すると、以下のフィルタが利用できます。

日時関係(プラグイン)

age
年齢。日付から年齢を得る
age-d
年齢(日単位で計算)。誕生日前日に年を取る
ymd
日付(yyyy/mm/dd)
ymd-h
日付(yyyy-mm-dd)
jymd-1
日付(yyyy年m月d日)
jymd
日付(yyyy年mm月dd日)
ymdhms-s
日時(yyyy/mm/dd hh:mm)
ymdhms-h-s
日時(yyyy-mm-dd hh:mm)
ymdhms
日時(yyyy/mm/dd hh:mm:ss)
ymdhms-h
日時(yyyy-mm-dd hh:mm:ss)
jymdhms-1-s
日時(yyyy年m月d日h時m分)
jymdhms-1
日時(yyyy年m月d日h時m分s秒)
jymdhms-s
日時(yyyy年mm月dd日hh時mm分)
jymdhms
日時(yyyy年mm月dd日hh時mm分ss秒)
hms-s
時刻(hh:mm)
hms
時刻(hh:mm:ss)
jhms-1-s
時刻(h時m分)
jhms-1
時刻(h時m分s秒)
jhms-s
時刻(hh時mm分)
jhms
時刻(hh時mm分ss秒)

パス関係(プラグイン)

pathdir
ディレクトリ名部分
pathbase
ファイル名部分
pathext
拡張子部分
pathinfiles
filesからの相対パス

その他(プラグイン)

trim
先頭や末尾の空白文字を取り除く
kyuu2shin
旧漢字を新漢字に置換
2.2.4.11.KeyValueStore

KeyValueStoreオブジェクトは、アプリに一つあらかじめ用意されているキーバリューストアデータベースへのアクセスを提供します。
キーバリューストアデータベースは、キーとなる文字列に対して値となる文字列を一つ格納できる、単純なデータベースです。

2.2.4.11.1.delete()

buddy.lib.KeyValueStore.delete()は、指定したキーを削除します。
delete()メソッドはプロミスを返すので、処理の終了を待ちたいときはawaitを使用します。

  await buddy.lib.KeyValueStore.delete('test')

指定したキーが存在しないときはnot foundエラーが発生します。

2.2.4.11.2.get()

buddy.lib.KeyValueStore.get()は、指定したキーの値を得ます。
get()メソッドはプロミスを返すので、awaitを使用します。

  const value = await buddy.lib.KeyValueStore.get('test')

指定したキーが存在しないときはnot foundエラーが発生します。

2.2.4.11.3.has()

buddy.lib.KeyValueStore.has()は、指定したキーが存在するかどうかの真偽値を得ます。
has()メソッドはプロミスを返すので、awaitを使用します。

  const exists = await buddy.lib.KeyValueStore.has('test')
2.2.4.11.4.set()

buddy.lib.KeyValueStore.set()は、指定したキーに指定した値をセットします。
set()メソッドはプロミスを返すので、処理の終了を待つにはawaitを使用します。

  await buddy.lib.KeyValueStore.set('test', 100)
2.2.4.12.Mail

本項ではMailクラスの説明をします。
Mailクラスはメールを送信する機能を提供します。

2.2.4.12.1.コンストラクタ

Mailオブジェクトは、メールの宛先、表題、内容などを指定して次のように作成します。

    const mail = new buddy.lib.Mail({
    	"from": "", //送信元
    	"subject": "", //メールタイトル
    	"body": "", //送信する本文
    	"to": "", //送信先
    	"cc": "",
    	"bcc": "",
    })

上記のようにして得られたmailオブジェクトを用いて、下記のattach()で添付ファイルを指定したり、send()で実際にメールを送信したりできます。

2.2.4.12.2.attach()

Mailオブジェクトのattach()メソッドは、メールの添付ファイルを追加します。
引数には、files内のファイルについてfilesからの相対パスで指定するか、あるいはファイル選択モジュールのアイテムを「buddyscreen.items.アイテム名」で指定します。後者の場合は送信の前にサーバーにアップロードされます。
引数は上記のいずれかの単独の値か、あるいは配列で複数の値を指定することも可能です。

  mail.attach("images/sample.png")
  mail.attach(buddyscreen.items.FILE1)
2.2.4.12.3.send()

Mailオブジェクトのsend()メソッドは、メールを実際に送信します。
指定された添付ファイルが存在しないとエラーが発生します。

  mail.send()
2.2.4.13.Map

本項ではbuddy.lib.Mapオブジェクトについて説明します。

2.2.4.13.1.getAddress()

buddy.lib.Map.getAddress関数は、郵便番号に対応する住所を得ます。

  const result = await buddy.lib.Map.getAddress("100-0001", {mode: "SIMPLE"})
  // result[0].address が住所

一つ目の引数には郵便番号を指定します。ハイフンありでもなしでも構いません。
二つ目の引数はオプションオブジェクトで、上記のようにmodeを指定します。modeは次のいずれかです。

SIMPLE
結果は次の要素のオブジェクトの配列となります。
zip: 郵便番号
address: 住所
kana: 住所のカナ表記
FULL
結果は次の要素のオブジェクトの配列となります。(cityに対してcity_kanaがカナ表記など、_kanaのつく要素もありますが、下記では省略)
zip: 郵便番号
pref: 都道府県
city: 市
ward: 区
town: 町

結果は、複数該当する場合もあるので、配列になっていることに注意してください。

2.2.4.13.2.getCurrentPosition()

buddy.lib.Map.getCurrentPosition関数は現在地の緯度・経度を取得します。

 buddy.lib.Map.getCurrentPosition()

buddy.lib.Map.getCurrentPosition関数は以下のプロパティから成るオブジェクトを返します。

lat
緯度
lng
経度

以下に例を示します。

 const result = await buddy.lib.Map.getCurrentPosition()
 //result.lat //緯度
 //result.lng //経度

ブラウザに位置情報の取得を許可するかどうか聞かれますので「許可」を選択してください。

GPS搭載の端末では正確な値が返りますが、GPS非搭載の端末ではIPアドレスなどから求めた大雑把な値が返ります。

2.2.4.13.3.getLatLng()

buddy.lib.Map.getLatLng関数は住所から緯度・経度を求めます。

 buddy.lib.Map.getLatLng(address)

address引数には住所を文字列で与えます。

 const address = "" //住所(住所を特定する文字列または郵便番号)
 const result = await buddy.lib.Map.getLatLng(address)

戻り値は {lat: 緯度, lng: 経度} の形式のオブジェクトのの配列です。該当する住所がなければ空の配列を返します。曖昧な住所を渡すと複数の座標データが返されます。

2.2.4.14.Markdown(プラグイン)

buddy.lib.Markdownは、markdownサポートプラグインをアプリに追加することによって利用できます。

markdownサポートプラグインは、markdown形式のテキストをHTML形式に変換する機能を提供するプラグインです。このプラグインを導入すると、以下の機能が追加されます。

用例を以下に示します。

//markdownをHTMLに変換する
const markdown = "# markdown"
const html = buddy.lib.Markdown.parse(markdown)
//console.log("parse", html)
2.2.4.14.1.parse()

buddy.lib.Markdown.parse()関数はmarkdown形式のテキストをHTML形式に変換します。

 buddy.lib.Markdown.parse(text)

text引数にはmarkdown形式のテキストを文字列で与えます。buddy.lib.Markdown.parse()関数はHTML形式のテキストを文字列で返します。

2.2.4.14.2.styles

buddy.lib.Markdown.stylesプロパティは長さ1の配列で、第1要素としてbuddy.lib.Markdown.parse()関数によって得られるHTML形式のテキストと共に利用できるCSS形式のスタイルシートが文字列で格納されています。このスタイルシートの利用例を以下に示します。

const markdown = "# markdown"
const html = buddy.lib.Markdown.parse(markdown)
const style = `<style>${buddy.lib.Markdown.styles[0]}</style>`
buddyscreen.items.IFRAME1.html = style + html

この例ではmarkdown形式からHTML形式に変換したテキストをbuddy.lib.Markdown.styles[0]に格納されたCSSスタイルシートのテキストと連結してIFrameモジュールで表示します。

2.2.4.15.MSDOC(プラグイン)

buddy.lib.MSDOCは、Docxサポートプラグインをアプリに追加することによって利用できます。

2.2.4.15.1.コンストラクタ

MSDOCオブジェクトは、元となるWordファイルを指定して次のように作成します。

 const doc = new buddy.lib.MSDOC(data)

data引数には以下のいずれかを与えます。

2.2.4.15.2.parse()

parseメソッドはページ内の文字データを取得します。

 await doc.parse()

parseメソッドは以下のプロパティから成る結果オブジェクトを返します。

text
ページ内の文字データ
2.2.4.16.OCR(プラグイン)

buddy.lib.OCRは、OCRサポートプラグインをアプリに追加することによって利用できます。

2.2.4.16.1.recognize()

buddy.lib.OCR.recognize()関数は画像から文字を認識します。

 const result = buddy.lib.OCR.recognize(src, options)

src引数には入力画像をURLまたはバイナリデータで与えます。options引数には以下のプロパティから成るオブジェクトを与えます。

language
言語(デフォルト:"jpn")
progress
進行状況を表示する(デフォルト:false)

buddy.lib.OCR.recognize()関数は文字の認識結果をオブジェクトで返します。結果オブジェクトをresultとすると、以下のプロパティに認識結果が渡されます。

result.data.text
認識された文字

詳細は https://github.com/naptha/tesseract.js を参照してください。

2.2.4.17.Order

Orderクラスは、DBテーブルやDBビューからselect()でデータを読み出す際のorderby()で指定する並び順指定を保持し、指定のカラムを追加・順序変更・削除する機能を提供します。

2.2.4.17.1.コンストラクタ

Orderオブジェクトは次のように並び順を決めるカラム名を指定して作成します。

  const order = new buddy.lib.Order('ID')
  const order = new buddy.lib.Order(['group', 'age desc'])

上記のように、配列で指定することもできます。またカラム名のあとにスペースで区切って「desc」と付けると降順の指定となります。
上の例は、まずgroupの昇順として、groupが同じものはageの降順とする、という指定となります。

上記のようにして得られたorderは、モデルオブジェクトのselect()に付加するorderby()の引数として与えることができます。

2.2.4.17.2.shift()

Orderオブジェクトのshift()メソッドは、現在の並び順を元に、指定したカラムを追加・順序変更・削除します。

  order.shift('age')

上記のようにすると、次の動作となります。

カラムageが現在の並び順にない場合は、並び順配列の末尾に追加されます。

カラムageが現在の並び順にあって、desc指定ではない場合は、ageにdesc指定が付加されます。

カラムageが現在の並び順にあって、desc指定がある場合は、ageが並び順から取り除かれます。

2.2.4.18.PDF(プラグイン)

buddy.lib.PDFは、PDF閲覧プラグインをアプリに追加することによって利用できます。

2.2.4.18.1.コンストラクタ

PDFオブジェクトは、元となるPDFファイルを指定して次のように作成します。

 const pdf = new buddy.lib.PDF(src)

src引数には以下のいずれかを与えます。

上記のようにして得られたPDFオブジェクトを用いて、下記のparse()でファイル内容を読み取ったり、toImage()でページを画像に変換したりできます。

2.2.4.18.2.parse()

parseメソッドはページの内容をテキスト形式で取得します。

 await pdf.parse()

parseメソッドは以下のプロパティから成る結果オブジェクトを返します。

pdfInfo
PDFファイルの情報を表すオブジェクト。主なプロパティは以下の通り
pdfInfo.numPages: ページ数
pages
ページ毎のテキストの配列
2.2.4.18.3.toImage()

toImageメソッドはページの内容を画像に変換します。

 await pdf.toImage(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

scale
倍率。デフォルト値は1
page
画像化するページ(最初のページは1)。デフォルト値は1
type
画像データの出力形式。"binary"(デフォルト)または"base64"

toImageメソッドは得られた画像データを返します。

2.2.4.19.QRCode(プラグイン)
2.2.4.19.1.make()

make関数は内容を指定してQRコードの画像を生成します。

 await buddy.lib.QRCode.make(text)

text引数にはQRコード画像にする内容を文字列で与えます。make関数は以下のプロパティから成る結果オブジェクトを返します。

height
QRコード画像の高さ
image
QRコード画像を表示するimg要素
url
QRコード画像のデータURL
width
QRコード画像の幅
2.2.4.19.2.read()

read関数は画像からQRコードの内容を読み取ります。

 await buddy.lib.QRCode.read(image)

image引数にはQRコード画像を表示するimg要素を与えます。read関数は読み取った内容を文字列で返します。

以下に用例を示します。

 // 画像からQRコードの内容を読み取る
 const image = new Image()
 const text = await buddy.lib.QRCode.read( image )
 // 読み取った内容をコンソールに表示する
 console.log(text)
2.2.4.19.3.readFromCamera()

readFromCamera関数はQRコード読み取りダイアログを開きます。

 await buddy.lib.QRCode.readFromCamera(options)

options引数には以下のプロパティから成るオブジェクトを渡します(省略可)。

interval
QRコード読み取り処理の間隔。単位はミリ秒。デフォルト値は100。

readFromCamera関数は以下のプロパティから成る結果オブジェクトを返します。

code
QRコード読み取りダイアログの戻り値。QRコードの読み取りが完了した場合は read、読み取りがキャンセルされた場合は cancel が設定されます。
value
QRコードの読み取りが完了した場合(codeプロパティの値が read のとき)に読み取った内容が設定されます。

以下に用例を示します。

 // QRコード読み取りダイアログを開く
 const result = await buddy.lib.QRCode.readFromCamera()
 // 読み取りが完了したら
 if( result.code === "read" ){
     // 読み取った内容をコンソールに表示する
     console.log(result.value)
 }
2.2.4.20.ReadLog(プラグイン)

buddy.lib.ReadLogモジュールは、既読プラグインをアプリに追加することにより利用できます。

2.2.4.20.1.delete()

delete関数は既読ログを削除します。

 await buddy.lib.ReadLog.delete(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

logGroup
ログのグループ分け。
$query

以下に例を示します。

 // 既読ログを削除する
 await buddy.lib.ReadLog.delete({
     logGroup: "$query", //ログのグループ分け。
 })
2.2.4.20.2.open()

open関数は既読ログダイアログを開きます。

 await buddy.lib.ReadLog.open(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

logGroup
ログのグループ分け。
$query
title
既読ログダイアログのタイトル(省略可)。デフォルト値は "既読ログ"

以下に例を示します。

 // 既読ログダイアログを開く
 const data = await buddy.lib.ReadLog.open({
     logGroup: "$query", //ログのグループ分け
 })
 console.log(data)
2.2.4.20.3.read()

read関数は既読ログを読み込みます。

 await buddy.lib.ReadLog.read(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

logGroup
ログのグループ分け。
$query

以下に例を示します。

 // 既読ログを読む
 const data = await buddy.lib.ReadLog.read({
     logGroup: "$query", //ログのグループ分け。
 })
 console.log(data)
2.2.4.20.4.write()

write関数は既読ログを書き込みます。

 await buddy.lib.ReadLog.write(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

logType
同じユーザーが複数回開いたときの処理方法を文字列で指定する。firstなら最初のみ記録、lastなら最後のみ記録、allならすべて記録する。
logGroup
ログのグループを文字列で指定する。
【FIXME】$queryを指定した場合は、TBD

以下に例を示します。

 // 既読ログを書く
 await buddy.lib.ReadLog.write({
     logType: "first", // 最初のみ記録
     logGroup: "$query", // ロググループ
 })
2.2.4.21.SearchDialog

SearchDialogクラスは、指定のDBテーブルやDBビューを対象とした汎用の検索条件設定ダイアログを提供します。

2.2.4.21.1.コンストラクタ

SearchDialogオブジェクトは、検索対象のDBテーブル名あるいはDBビュー名を指定して、次のように作成します。

  const dialog = new buddy.lib.SearchDialog("table1")
2.2.4.21.2.open()

SearchDialogオブジェクトのopen()メソッドは、検索条件設定ダイアログを開きます。
ダイアログの「検索」ボタンをクリックして閉じた場合、SearchDialogオブジェクトのwhereプロパティに設定した検索条件のオブジェクトがセットされています。そのオブジェクトは、対象のDBテーブル/DBビューに対するselect()の際にwhere()の引数として使うことができます。

  await dialog.open()
  // dialog.where に検索条件が入っている
2.2.4.22.ShortMessage

ShortMessageクラスは、他のユーザーに対してメッセージを送信する機能を提供します。
相手がオフラインのときはメールで送信する機能があります。

2.2.4.22.1.コンストラクタ

ShortMessageオブジェクトは、次のように宛先、表題、本文を指定して作成します。

  const message = new buddy.lib.ShortMessage({
	to: ":ALL", // 宛先
	title: "お知らせ", //表題
	body: "…", //本文
  })

宛先は、ユーザーID(カンマ区切りで複数指定可)、:ALL(全ユーザー)、:ONLINE(全オンラインユーザー)、:GROUP(グループ名)(指定のグループのユーザー)のいずれかを指定します。
ユーザーIDに、ユーザー管理を分離したアプリのユーザーを指定する場合は、アプリ名:ユーザーID とします。

2.2.4.22.2.send()

ShortMessageオブジェクトのsend()メソッドは、実際にメッセージを送信します。
オプションとして、相手がオフラインの場合にメールで送信するかどうかを指定できます。

  const result = await message.send({
	offlineUser: "sendmail"
  })

上記のように、offlineUser: "sendmail" を指定すると、相手がオフラインの場合にメールで送信します。

resultは各宛先への送信結果の配列で、送信結果は次のいずれかになります。

2.2.4.23.Superagent

buddy.lib.SuperagentモジュールはHTTPクライアントを簡便に作成するためのAPIを提供するモジュールです。本節ではsuperagentモジュールの主なAPI関数について説明します。superagentモジュールの網羅的なドキュメントは下記URLで提供されています。

 https://ladjs.github.io/superagent/

たとえばGETメソッドでリソースURL /search の内容を得るには以下のようにします。

 buddy.lib.Superagent
   .get('/search')
   .end(function(err, res){
       if (err || !res.ok) {
           alert('エラー');
       } else {
           alert('結果:' + JSON.stringify(res.body));
       }
   });
2.2.4.23.1.end()

end関数はリクエストを送信します。引数にはレスポンスを処理するコールバック関数を与えます。次の例ではGETリクエストをend関数で送信して、引数に与えたコールバック関数でレスポンスを受け取ります。

 buddy.lib.Superagent
   .get('/search')
   .end(function(err, res){
       // ここにレスポンスの処理を記述する
   });
2.2.4.23.2.get()

get関数はGETリクエストの作成を開始します。引数にはリソースURLを文字列で与えます。次の例ではget関数でリソースURL /search へのGETリクエストの作成を開始しています。

 buddy.lib.Superagent
   .get('/search')
   .end(callback);
2.2.4.23.3.head()

head関数はHEADリクエストの作成を開始します。引数にはリソースURLを文字列で与えます。次の例ではhead関数でリソースURL /favicon.ico へのHEADリクエストの作成を開始しています。

 buddy.lib.Superagent
   .head('/favicon.ico')
   .end(callback);
2.2.4.23.4.post()

post関数はPOSTリクエストの作成を開始します。引数にはリソースURLを文字列で与えます。次の例ではpost関数でリソースURL /user/add へのPOSTリクエストの作成を開始しています。

 buddy.lib.Superagent
   .post('/user/add')
   .send({ name: 'john', age: 20 })
   .end(callback);
2.2.4.23.5.query()

query関数はリクエストのURLにクエリを追加します。引数にはクエリをオブジェクトまたは文字列で与えます。次の例ではGETリクエストのURLにクエリを追加して /search?q=test&order=desc にします。

 buddy.lib.Superagent
   .get('/search')
   .query({'q': 'test', 'order', 'desc'})
   .end(callback);

query関数は複数回に分けて呼び出すこともできます。

 buddy.lib.Superagent
   .get('/search')
   .query({'q': 'test'})
   .query({'order', 'desc'})
   .end(callback);

クエリは文字列でも指定できます。

 buddy.lib.Superagent
   .get('/search')
   .query('q=test&amp;order=desc')
   .end(callback);

文字列の場合も複数に分けて与えることができます。

 buddy.lib.Superagent
   .get('/search')
   .query('q=test')
   .query('order=desc')
   .end(callback);
2.2.4.23.6.send()

send関数は作成中のリクエストにデータを追加します。次の例ではsend関数でPOSTリクエストにデータを追加しています。

 buddy.lib.Superagent
   .post('/user/add')
   .send({ name: 'john', age: 20 })
   .end(callback);

send関数は複数回に分けて呼び出すこともできます。

 buddy.lib.Superagent
   .post('/user/add')
   .send({ name: 'john' })
   .send({ age: 20 })
   .end(callback);

データの型を示すContent-Type:ヘッダフィールドのデフォルト値はsend関数の引数によって決まります。

 a. 引数がオブジェクトの場合:application/json
 b. 引数が文字列の場合:application/x-www-form-urlencoded

Content-Type:ヘッダフィールドの値を設定するにはset関数を用います。次の例は上述の最初の例と同等です。

 buddy.lib.Superagent
   .post('/user/add')
   .set('Content-Type', 'application/json')
   .send({ name: 'john', age: 20 })
   .end(callback);
2.2.4.23.7.set()

set関数は作成中のリクエストにヘッダフィールドを追加します。次の例ではGETリクエストに Accept: application/json というヘッダフィールドを追加します。

 buddy.lib.Superagent
   .get('/search')
   .set('Accept', 'application/json')
   .end(callback);
2.2.4.24.TableHistory(プラグイン)

buddy.lib.TableHistoryは、履歴操作ダイアログプラグインをアプリに追加することによって利用できます。

2.2.4.24.1.open()

open関数は履歴操作ダイアログを開きます。

 await buddy.lib.TableHistory.open(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

table
履歴操作ダイアログの処理対象となるテーブル(buddy.app.dbtable 配列の要素)
restore
復元ボタンを使用する場合は true に設定する。restoreプロパティを省略またはtrue以外の値を設定すると復元ボタンを表示しない

以下に例を示します。

 //履歴操作ダイアログを開く
 const table = "table1" //テーブル名
 await buddy.lib.TableHistory.open({
     table: buddy.app.dbtable[table]
 })
2.2.4.25.XML(プラグイン)

buddy.lib.XML は、XMLサポートプラグインをアプリに追加することによって利用できます。

2.2.4.25.1.parse()

XML形式のテキストを読み取ります。

  const xmltext = await buddyscreen.items.FILE1.readAsText({})
  const data = await buddy.lib.XML.parse(xmltext)

awaitが必要なことに注意してください。

結果は入れ子のオブジェクトや配列になります。

2.3.buddyscreenオブジェクト

buddyscreenオブジェクトはスクリーン設計で定義する個々のスクリーン自身を表すオブジェクトです。buddyscreenオブジェクトはスクリーンプログラム内であらかじめ定義されています。buddyscreenオブジェクトの主な構成要素は次の通りです。

2.3.1.イベント

本項ではスクリーンに関して発生するイベントについて説明します。

2.3.1.1.load

loadイベントはスクリーンが表示されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.on('load', async(evt)=>{
     // イベントハンドラの処理内容
 })
2.3.1.2.receive

receiveイベントは、スクリーンが表示されたときに、loadイベントに続いて発生します。また、スクリーンコンテナ内のスクリーンではスクリーンコンテナからデータが送られてきたときにも発生します。イベントハンドラで、URLのクエリ、ダイアログのパラメータ、スクリーンコンテナからの送信データ、を受け取ることができます。

イベントハンドラは次のように定義します。

 buddyscreen.on('receive', async(evt)=>{
     // イベントハンドラの処理内容
 })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにデータが渡されます。

evt.container_index
スクリーンコンテナ内の場合、スクリーンコンテナの番号(最初のスクリーンコンテナが0)
evt.data
独立したスクリーンの場合はURLに「?id=1」のように付加されたクエリの内容({id: 1}のような)。ダイアログとして開かれたスクリーンの場合は、開くときに指定されたオプションパラメータ。スクリーンコンテナ内の場合はスクリーンコンテナから送られてきたデータ。
2.3.1.3.unload

unloadイベントはスクリーンが閉じられるときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.on('unload', async(evt)=>{
     // イベントハンドラの処理内容
 })

2.3.2.関数

本項ではbuddyscreenオブジェクトに含まれる関数について説明します。

2.3.2.1.close()

buddyscreen.close関数は、スクリーンがダイアログとして開かれているときにそのダイアログを閉じます。

 buddyscreen.close(code, value)

code引数にはダイアログを開いたプログラムに対して返されるコード値を与えます。value引数にはダイアログを開いたプログラムに対して返される任意のデータを与えます。

2.3.2.2.isDialog()

buddyscreen.isDialog関数はスクリーンがダイアログとして開かれているときにtrueを返します。

 buddyscreen.isDialog()
2.3.2.3.on()

buddyscreen.on関数はスクリーンに関して発生するイベントの処理方法(イベントハンドラ)を定義します。

 buddyscreen.on(name, func)

name引数にはイベント名を文字列で与えます。func引数にはイベントが発生したときに呼ばれる関数を与えます。

2.3.2.4.send()

buddyscreen.send関数は、スクリーンコンテナ内に埋め込まれたスクリーンから外のスクリーンにデータを送ります。

 buddyscreen.send(data)

data引数には外のスクリーンに送るデータを与えます。例えばSCREENCONTAINER1というスクリーンコンテナの内側のスクリーンから外側のスクリーンにデータを送るには次のようにします。

 //内側のスクリーンで
 buddyscreen.send({value: 1})

 //外側のスクリーンで
 buddyscreen.items.SCREENCONTAINER1.on("receive", async(evt)=>{
    // evt.data.value が受け取ったデータ
    // evt.container_index で何番目のスクリーンかがわかる
 })
2.3.2.5.transitionTo()

buddyscreen.transitionTo関数は別のスクリーンに移動します。この関数がスクリーンコンテナの内側のスクリーン内で実行された場合はスクリーンコンテナ内のスクリーンを切り替えます。

 buddyscreen.transitionTo(screen, query)

screen引数には遷移先のスクリーン名またはスクリーンオブジェクトを与えます。query引数にはURLクエリを { 名前: 値, ... } の形式のオブジェクトで与えます。クエリはURLに ?名前=値&… という形で付加されます。query引数は省略できます。

2.3.3.プロパティ

本項ではbuddyscreenオブジェクトに含まれるプロパティについて説明します。

2.3.3.1.anyItem

buddyscreen.anyItemプロパティは、すべてのスクリーンアイテムに対して一括でイベントハンドラを定義するために用います。

例えばchangeイベントに対するイベントハンドラをすべてのスクリーンアイテムについて定義するには次のように記述します。

 buddyscreen.anyItem.on("change", async (evt)=>{
     // changeイベントの処理内容
 })
2.3.3.2.dialog

本項ではbuddyscreen.dialogモジュールについて説明します。本モジュールには各種ダイアログを開くための関数が含まれます。

2.3.3.2.1.confirm

buddyscreen.dialog.message関数は確認メッセージを表示するためのダイアログを開きます。

 buddyscreen.dialog.confirm(text)

text引数には表示する確認メッセージを文字列で与えます。

2.3.3.2.2.date

buddyscreen.dialog.message関数は日時選択ダイアログを開きます。

 buddyscreen.dialog.date(param)

param引数には日時選択ダイアログに渡すパラメータを { 名前: 値, ... } の形式のオブジェクトで与えます(省略可)。

2.3.3.2.3.error

buddyscreen.dialog.message関数はエラーメッセージを表示するためのダイアログを開きます。

 buddyscreen.dialog.error(text)

text引数には表示するエラーメッセージを文字列で与えます。

2.3.3.2.4.file

buddyscreen.dialog.message関数はファイル選択ダイアログを開きます。

 buddyscreen.dialog.file(param)

param引数にはファイル選択ダイアログに渡すパラメータを { 名前: 値, ... } の形式のオブジェクトで与えます(省略可)。

2.3.3.2.5.lightbox
2.3.3.2.6.message

buddyscreen.dialog.message関数はメッセージを表示するためのダイアログを開きます。

 buddyscreen.dialog.message(text)

text引数には表示するメッセージを文字列で与えます。

2.3.3.2.7.wait
2.3.3.3.items

buddyscreen.itemsプロパティは、そのスクリーンを構成するボタンやテキストボックスなどの要素(スクリーンアイテム)へのアクセスを提供するオブジェクトです。たとえば、BUTTON1という名前のボタンは次のように参照できます。

 buddyscreen.items.BUTTON1

スクリーンアイテムには関数、プロパティ、イベントが定義されています。たとえばボタンモジュールにはラベルとして表示される値を取得または変更するvalueプロパティが設けられています。このプロパティは次のように参照できます。

 buddyscreen.items.BUTTON1.value = "文字列";
2.3.3.4.query

queryプロパティは、独立したスクリーンの場合はURLのクエリの内容が格納されているオブジェクトです。例えば「?id=1」というクエリであれば、{id: 1}となります。
ダイアログとして開かれたスクリーンの場合は、開くときに指定されたオプションパラメータの内容です。
スクリーンコンテナ内のスクリーンでは、空オブジェクトとなります。

2.3.3.5.radioGroup

buddyscreen.radioGroupプロパティは、同じradioname属性をもつラジオボタン群について、現在選択されているラジオボタンのアイテム名やキャプション(caption)を得るためのメソッドを提供するオブジェクトです。詳しくは【ラジオボタン群の操作】の節を参照してください。

2.4.スクリーンモジュール

スクリーンモジュールは、スクリーンを構成する部品を表すオブジェクトです。スクリーンモジュールには、大きく4つの用途別に以下のものがあります。

2.4.1.全モジュールの共通機能

本項ではすべてのスクリーンモジュールに共通する機能について説明します。

2.4.1.1.style

styleプロパティは、スクリーンモジュールのスタイル設定を参照したり値を変更したりするのに用います。以下に例を示します。

 // フォントの大きさを8にする
 buddyscreen.items.LABEL1.style.fontSize = 8

 // 枠線を幅1pxの緑色の実線にする
 buddyscreen.items.LABEL2.style.border = "1px solid green"

 // 文字色を赤色にする
 buddyscreen.items.LABEL3.style.color = "red"

 // 背景色を黄色にする
 buddyscreen.items.LABEL4.style.backgroundColor = "yellow"

2.4.2.横配置ボックス

横配置ボックスモジュールは、入れ子になった他のスクリーンモジュール(子モジュール)を横に並べて画面上に配置するレイアウト用のモジュールです。子モジュールは横1列分の幅の合計が横配置ボックスモジュールの幅を超えないように折り返して配置されます。

2.4.2.1.アクション
2.4.2.1.1.append

appendアクションは、繰り返しを一回追加します。追加位置(先頭が0、省略すると0)を指定できます。

 append(0)
2.4.2.1.2.delete

deleteアクションは、繰り返しの一回を削除します。削除する位置(先頭が0)を指定します。

 delete(1)
2.4.2.2.プロパティ
2.4.2.2.1.repeat

repeatプロパティには横配置ボックスの要素を繰り返し表示する回数を数値で与えます。以下に例を示します。

 buddyscreen.items.HORIZONTAL1.repeat = 1

上の例ではモジュール名で指定した横配置ボックスの要素の繰り返し表示回数を1に設定します。

※設計画面でのアイテム属性「繰返し回数」と対応します。

2.4.2.2.2.repeatControl

repeatControlプロパティは、繰り返し回数を増減する+-のボタンをマウスオーバーで表示するかどうかを、真偽値で指定します。

 buddyscreen.items.HORIZONTAL1.repeatControl = true

※設計画面でのアイテム属性「繰返し調整ボタン」と対応します。

2.4.2.2.3.detailTable

detailTableプロパティは、このボックスを明細テーブル内容の繰り返し表示に使用する場合に、その明細テーブル名を指定します。

 buddyscreen.items.HORIZONTAL1.detailTable = "meisai"

※設計画面でのアイテム属性「明細テーブル」と対応します。

2.4.2.3.イベント

本項では横配置ボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.2.3.1.click

clickイベントはモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.2.3.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.2.3.3.doubleclick

doubleclickイベントはモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.2.3.4.mousedown

mousedownイベントはモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.2.3.5.mouseup

mouseupイベントはモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.3.縦配置ボックス

縦配置ボックスモジュールは、入れ子になった他のスクリーンモジュール(子モジュール)を縦に並べて画面上に配置するレイアウト用のモジュールです。前項の横配置ボックスモジュールとは異なり、子モジュールの高さの合計が縦配置ボックスモジュールの高さを超えても折り返しはされません。

2.4.3.1.アクション
2.4.3.1.1.append

appendアクションは、繰り返しを一回追加します。追加位置(先頭が0、省略すると0)を指定できます。

 append(0)
2.4.3.1.2.delete

deleteアクションは、繰り返しの一回を削除します。削除する位置(先頭が0)を指定します。

 delete(1)
2.4.3.2.プロパティ
2.4.3.2.1.repeat

repeatプロパティには縦配置ボックスの要素を繰り返し表示する回数を数値で与えます。以下に例を示します。

 buddyscreen.items.VERTICAL1.repeat = 1

上の例ではモジュール名で指定した縦配置ボックスの要素の繰り返し表示回数を1に設定します。

2.4.3.2.2.repeatControl

repeatControlプロパティは、繰り返し回数を増減する+-のボタンをマウスオーバーで表示するかどうかを、真偽値で指定します。

 buddyscreen.items.HORIZONTAL1.repeatControl = true

※設計画面でのアイテム属性「繰返し調整ボタン」と対応します。

2.4.3.2.3.detailTable

detailTableプロパティは、このボックスを明細テーブル内容の繰り返し表示に使用する場合に、その明細テーブル名を指定します。

 buddyscreen.items.HORIZONTAL1.detailTable = "meisai"

※設計画面でのアイテム属性「明細テーブル」と対応します。

2.4.3.3.イベント

本項では縦配置ボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.3.3.1.click

clickイベントはモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.3.3.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.3.3.3.doubleclick

doubleclickイベントはモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.3.3.4.mousedown

mousedownイベントはモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.3.3.5.mouseup

mouseupイベントはモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.4.水平区切り線(プラグイン)

区切り線モジュールは、画面を区切る横線を引くレイアウト用のモジュールです。

2.4.4.1.イベント

本項では区切り線モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.4.1.1.click

clickイベントは区切り線がクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.4.1.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.4.1.3.doubleclick

doubleclickイベントは区切り線がダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.4.1.4.mousedown

mousedownイベントは区切り線の上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.4.1.5.mouseup

mouseupイベントは区切り線の上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.5.ボタン

ボタンモジュールは、画面上にボタンを設けるモジュールです。

2.4.5.1.プロパティ
2.4.5.1.1.disabled

disabledプロパティは、ボタンを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.BUTTON1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.5.1.2.value

valueプロパティは、ボタンに表示する文字列を変更したり現在の値を参照したりするのに用います。

 buddyscreen.items.BUTTON1.value = "文字列"

valueプロパティの値には文字列を与えます。

※設計画面でのアイテム属性「値」と対応します。

2.4.5.1.3.tip

tipプロパティは、このボタンにマウスオーバーしたときに表示されるツールチップ表示の内容を指定します。

 buddyscreen.items.BUTTON1.tip = "文字列"

※設計画面でのアイテム属性「チップ」と対応します。

2.4.5.2.イベント

本項ではボタンモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.5.2.1.click

clickイベントはモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.5.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.5.2.3.doubleclick

doubleclickイベントはモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.5.2.4.mousedown

mousedownイベントはモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.5.2.5.mouseup

mouseupイベントはモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.6.テキストボックス

テキストボックスモジュールは、画面上に文字列の入力欄を設けるモジュールです。

2.4.6.1.プロパティ
2.4.6.1.1.calculate

calculateプロパティは、このテキストボックスの値を自動計算して表示する指示を含んでいます。設計画面でのアイテム属性「自動計算」での設定があればその内容を表すオブジェクトがセットされています。

スクリーンスクリプトで自動計算の内容を指定するには、calculateプロパティに関数を与えます。以下に例を示します。

buddyscreen.items.TEXTBOX3.calculate = (util)=>{
    // TEXTBOX1とTEXTBOX2の値を足す
    return util.sum("TEXTBOX1", "TEXTBOX2")
}

buddyscreen.items.TEXTBOX4.calculate = (util)=>{
    // TEXTBOX1の値を整数に変換して1.1を掛け、
    // 小数点以下を切り捨てる
    return Math.floor( util.int("TEXTBOX1") * 1.1)
}

calculateプロパティに与えた関数の引数には、自動計算の内容を記述するためのヘルパー関数を集めたutilモジュールが渡されます。詳しくは【utilモジュール】を参照してください。

calculateプロパティに与えた関数は、値を返さなければなりません。この戻り値がテキストボックスの値になります。

calculateプロパティに与えた関数が他のスクリーンモジュールの値を参照している場合、それらのスクリーンモジュールの値が変更されたら自動的にcalculateプロパティに与えた関数が実行されてテキストボックスの値が更新されます。

calculateプロパティに与える関数では非同期処理は使えないことに注意してください。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.6.1.3.disabled

disabledプロパティは、テキストボックスを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.TEXTBOX1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応しています。

2.4.6.1.4.filter

filterプロパティは、テキストボックスの値の表示前に適用されるフィルターを設定するのに用います。以下に例を示します。

 buddyscreen.items.TEXTBOX1.filter = "COMMA"

フィルターの詳細については【フィルターAPI】を参照してください。

※設計画面でのアイテム属性「フィルター」と対応しています。

2.4.6.1.5.placeholder

placeholderプロパティは、テキストボックスに値が設定されていないときに表示する文字列を指定します。以下に例を示します。

 buddyscreen.items.TEXTBOX1.placeholder = "値を入力してください"

※設計画面でのアイテム属性「プレースホルダ」と対応しています。

2.4.6.1.6.readOnly

readOnlyプロパティは、テキストボックスを読み取り専用に設定します。以下に例を示します。

 buddyscreen.items.TEXTBOX1.readOnly = true

readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは解除されます。

※設計画面でのアイテム属性「読み取り専用」と対応しています。

2.4.6.1.7.value

valueプロパティは、テキストボックスに表示する文字列を変更したり現在の値を取得したりするのに用います。

 buddyscreen.items.TEXTBOX1.value = ""

※設計画面でのアイテム属性「値」と対応しています。

2.4.6.2.イベント

本項ではテキストボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.6.2.1.blur

blurイベントはテキストボックスから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.6.2.2.change

changeイベントはテキストボックスの値が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
変化後の値
2.4.6.2.3.click

clickイベントはテキストボックスがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.6.2.4.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.6.2.5.doubleclick

doubleclickイベントはテキストボックスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.6.2.6.focus

focusイベントはテキストボックスに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.6.2.7.keydown

keydownイベントはテキストボックス上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.6.2.8.keypress

keypressイベントはテキストボックス上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.6.2.9.keyup

keyupイベントはテキストボックス上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.6.2.10.mousedown

mousedownイベントはテキストボックス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.6.2.11.mouseup

mouseupイベントはテキストボックス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.7.チェックボックス

チェックボックスモジュールは、画面上に真偽値(オン・オフ)の入力欄を設けるモジュールです。

2.4.7.1.プロパティ

本項ではチェックボックスモジュールのプロパティについて説明します。

2.4.7.1.1.checked

checkedプロパティは、チェックボックスの状態(チェックが入っているか否か)を変更したり現在の値を取得したりするのに用います。

 buddyscreen.items.CHECKBOX1.checked = true

value引数には設定する値(trueまたはfalse)を与えます。チェックボックスの値を変更すると後述の【change】イベントが発生します。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.7.1.3.disabled

disabledプロパティは、チェックボックスを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.CHECKBOX1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応しています。

2.4.7.1.4.value

valueプロパティは、チェックボックスのラベル文字列(キャプション)を変更したり現在の値を取得したりするのに用います。以下に例を示します。

 buddyscreen.items.CHECKBOX1.value = "文字列"

※設計画面でのアイテム属性「値」と対応しています。

2.4.7.2.イベント

本項ではチェックボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.7.2.1.blur

blurイベントはチェックボックスから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.7.2.2.change

changeイベントはチェックボックスの値が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.checked
変化後の値
2.4.7.2.3.click

clickイベントはチェックボックスがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.7.2.4.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.7.2.5.doubleclick

doubleclickイベントはチェックボックスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.7.2.6.focus

focusイベントはチェックボックスに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.7.2.7.mousedown

mousedownイベントはチェックボックス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.7.2.8.mouseup

mouseupイベントはチェックボックス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.8.ラジオボタン

ラジオボタンモジュールは、画面上にラジオボタンを設けるモジュールです。複数のラジオボタンに同じradioname属性(ラジオボタン名)を付けて1つのグループにします。同じグループ内のラジオボタンは1つだけが選択された状態(オン)になり残りは選択されていない状態(オフ)になります。グループ単位のラジオボタンの操作については【ラジオボタン群の操作】の節を参照してください。

2.4.8.1.プロパティ

本項ではラジオボタンモジュールのプロパティについて説明します。

2.4.8.1.1.checked

checkedプロパティは、ラジオボタンの状態(チェックが入っているか否か)を変更したり現在の値を取得したりするのに用います。

 buddyscreen.items.RADIO1.checked = true

value引数には設定する値(trueまたはfalse)を与えます。チェックボックスの値を変更すると後述の【change】イベントが発生します。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.8.1.3.disabled

disabledプロパティは、ラジオボタンを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.RADIO1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応しています。

2.4.8.1.4.value

valueプロパティは、ラジオボタンのラベル文字列(キャプション)を変更したり現在の値を取得したりするのに用います。以下に例を示します。

 buddyscreen.items.RADIO1.value = "文字列"

※設計画面でのアイテム属性「値」と対応しています。

2.4.8.2.イベント

本項ではラジオボタンモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.8.2.1.blur

blurイベントはラジオボタンから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.8.2.2.change

changeイベントはラジオボタンの値が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
変化後の値
2.4.8.2.3.click

clickイベントはラジオボタンがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.8.2.4.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.8.2.5.doubleclick

doubleclickイベントはラジオボタンがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.8.2.6.focus

focusイベントはラジオボタンに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.8.2.7.mousedown

mousedownイベントはラジオボタン上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.8.2.8.mouseup

mouseupイベントはラジオボタン上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.8.3.ラジオボタン群の操作

ラジオボタンは複数のラジオボタンを組み合わせて、そのうちのどれか一つだけがチェックできるように使います。そのためには、組み合わせる各ラジオボタンのアイテム属性「ラジオグループ」に同じ文字列を指定します。

ラジオグループが「test」の場合、スクリーンのスクリプトでは、次のようにしてそのグループのどれかのチェックボックスがチェックされたときにイベント処理ができます。

 buddyscreen.radioGroup.test.on('change', async(evt)=>{
  …
 })

また、グループのどのラジオボタンがチェックされているかを次のようにして得ることができます。

 const selected = buddyscreen.radioGroup.test.value

また、次のようにリンク先のテーブルとカラムをセットすることで、グループをdataLinkerの処理対象とできます。

 buddyscreen.radioGroup.test.dataLink = {table: テーブル名, column: カラム名}

2.4.9.プルダウンリスト

プルダウンリストモジュールは、画面上にプルダウン方式の選択肢の入力欄を設けるモジュールです。選択肢は次の2つの方法で指定できます。

 a. 選択肢を配列で与える。
 b. DBテーブル・ビューのカラムから読んだデータを選択肢とする。
2.4.9.1.プロパティ

本項ではプルダウンリストモジュールのプロパティについて説明します。

2.4.9.1.1.autoLoad

autoLoadプロパティは、dataLinkプロパティにセットされたテーブル名とカラム名がある場合に、選択肢をそのテーブルのカラムから読み込むかどうかを真偽値で指定します。

 buddyscreen.items.SELECT1.autoLoad = true

※設計画面でのアイテム属性「選択肢の自動読込」と対応します。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.9.1.3.disabled

disabledプロパティは、プルダウンリストを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.SELECT1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応しています。

2.4.9.1.4.list

listプロパティは、プルダウンリストの現在の選択肢を得たり、新たにセットしたりします。

設計画面でのアイテム属性「リスト」でセットした選択肢は、{name: 名称, value: 値} のオブジェクトの配列となります。

 const list = buddyscreen.items.SELECT1.list

スクリーンのスクリプトでlistプロパティに選択をセットする場合には、次のいくつかの方法があります。

     buddyscreen.items.SELECT1.list = [
       {"foo": 1}, 
       {"bar": 2}
     ]
     buddyscreen.items.SELECT1.list = ["foo", "bar"]
     buddyscreen.items.SELECT1.list = "午前0-11時"
     buddyscreen.items.SELECT1.list = "都道府県"
     buddyscreen.items.SELECT1.list = "日-土曜日"
     const data = await buddy.app.dbtable.table1.select()
     buddyscreen.items.SELECT1.list = data.rename("ID", "value")

※オブジェクトの配列の場合と、データベースから読み出したDataSetの場合、nameで指定した値がnullまたはundefinedの場合は、valueで指定した値がnameに使われます。

2.4.9.1.5.placeholder

placeholderプロパティは、プルダウンリストに値が設定されていないときに表示する文字列を指定します。以下に例を示します。

 buddyscreen.items.SELECT1.placeholder = "値を入力してください"

※設計画面でのアイテム属性「プレースホルダ」と対応しています。

2.4.9.1.6.selected

selectedプロパティは、プルダウンリストで選択されている選択肢を {name: 名称, value: 値} のオブジェクトの形で得ます。読み取り専用です。

2.4.9.1.7.value

valueプロパティは、プルダウンリストの選択されている選択肢の値を得たり、値をセットすることでその選択肢が選択された状態にすることができます。

buddyscreen.items.SELECT1.value = 1
2.4.9.2.イベント

本項ではプルダウンリストモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.9.2.1.blur

blurイベントはプルダウンリストから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... }

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.9.2.2.change

changeイベントはプルダウンリストの値が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
変化後の値
2.4.9.2.3.click

clickイベントはプルダウンリストがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.9.2.4.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.9.2.5.doubleclick

doubleclickイベントはプルダウンリストがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.9.2.6.focus

focusイベントはプルダウンリストに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.9.2.7.keydown

keydownイベントはプルダウンリスト上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.9.2.8.keypress

keypressイベントはプルダウンリスト上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.9.2.9.keyup

keyupイベントはプルダウンリスト上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.9.2.10.mousedown

mousedownイベントはプルダウンリスト上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.9.2.11.mouseup

mouseupイベントはプルダウンリスト上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.10.コンボボックス(プラグイン)

コンボボックスモジュールは、プルダウンリストとテキストボックスの機能を合わせ持つ入力欄を画面上に設けるモジュールです。プルダウンリストモジュールと同様に、選択肢は次の2つの方法で指定できます。

 a. 選択肢を配列で与える
 b. DBテーブル・ビューのカラムから読んだデータを選択肢とする。

また、選択肢にない文字列をテキストボックスモジュールと同様に自由に入力できます。

2.4.10.1.プロパティ
2.4.10.1.1.autoLoad

autoLoadプロパティは、コンボボックスのデータリンク属性が設定されている場合に、選択肢をデータベースから自動的に読み込むかどうかを指定します。以下に例を示します。

 buddyscreen.items.COMBOBOX1.autoLoad = true

autoLoadプロパティの値には真偽値を与えます。値が真のときは自動読み込みが有効になり、それ以外のときは無効が解除されます。

※設計画面でのアイテム属性「選択肢の自動読込」と対応しています。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.10.1.3.disabled

disabledプロパティは、コンボボックスを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.COMBOBOX1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応しています。

2.4.10.1.4.list

listプロパティは、コンボボックスの現在の選択肢を得たり、新たにセットしたりします。

設計画面でのアイテム属性「リスト」でセットした選択肢は、{name: 名称, value: 値} のオブジェクトの配列となります。

 const list = buddyscreen.items.COMBOBOX1.list

スクリーンのスクリプトでlistプロパティに選択をセットする場合には、次のいくつかの方法があります。

     buddyscreen.items.SELECT1.list = [
       {"foo": 1}, 
       {"bar": 2}
     ]
     buddyscreen.items.SELECT1.list = ["foo", "bar"]
     buddyscreen.items.SELECT1.list = "午前0-11時"
     buddyscreen.items.SELECT1.list = "都道府県"
     buddyscreen.items.SELECT1.list = "日-土曜日"
     const data = await buddy.app.dbtable.table1.select()
     buddyscreen.items.SELECT1.list = data.rename("ID", "value")

※オブジェクトの配列の場合と、データベースから読み出したDataSetの場合、nameで指定した値がnullまたはundefinedの場合は、valueで指定した値がnameに使われます。

2.4.10.1.5.placeholder

placeholderプロパティは、コンボボックスに値が設定されていないときに表示する文字列を指定します。以下に例を示します。

 buddyscreen.items.COMBOBOX1.placeholder = "値を入力してください"

※設計画面でのアイテム属性「プレースホルダ」と対応しています。

2.4.10.1.6.readOnly

readOnlyプロパティは、コンボボックスを読み取り専用に設定します。以下に例を示します。

 buddyscreen.items.COMBOBOX1.readOnly = true

readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは解除されます。

※設計画面でのアイテム属性「読み取り専用」と対応しています。

2.4.10.1.7.value

valueプロパティは、コンボボックスに表示されている選択肢の値を得たり、値をセットすることでその選択肢が選択された状態にすることができます。

buddyscreen.items.COMBOBOX1.value = 1
2.4.10.2.イベント

本項ではコンボボックスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.10.2.1.blur

blurイベントはコンボボックスから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.10.2.2.change

changeイベントはコンボボックスの値が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
変化後の値
evt.cause
"set"(setValue/setOptionsアクションによる変更)または"user"(ユーザによる変更)
2.4.10.2.3.click

clickイベントはコンボボックスがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.10.2.4.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.10.2.5.doubleclick

doubleclickイベントはコンボボックスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.10.2.6.focus

focusイベントはコンボボックスに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.10.2.7.keydown

keydownイベントはコンボボックス上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.10.2.8.keypress

keypressイベントはコンボボックス上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.10.2.9.keyup

keyupイベントはコンボボックス上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.10.2.10.mousedown

mousedownイベントはコンボボックス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.10.2.11.mouseup

mouseupイベントはコンボボックス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.11.スライダー(プラグイン)

スライダーモジュールは、画面上にスライド式の数値入力欄を設けるモジュールです。スライダーモジュールでは、入力できる値の範囲(最大値と最小値)を設定できます。

2.4.11.1.プロパティ
2.4.11.1.1.disabled

disabledプロパティは、スライダーを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.SLIDER1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応しています。

2.4.11.1.2.max

maxプロパティは、スライダーの値の最大値を設定したり現在の最大値を取得したりするのに用います。以下に例を示します。

 buddyscreen.items.SLIDER1.max = 100

maxプロパティの値には整数値を与えます。デフォルト値は100です。

※設計画面でのアイテム属性「最大値」と対応しています。

2.4.11.1.3.min

minプロパティは、スライダーの値の最小値を設定したり現在の最小値を取得したりするのに用います。以下に例を示します。

 buddyscreen.items.SLIDER1.min = 100

minプロパティの値には整数値を与えます。デフォルト値は0です。

※設計画面でのアイテム属性「最小値」と対応しています。

2.4.11.1.4.step

stepプロパティは、スライダーの値の刻みを設定したり現在の刻みを取得したりするのに用います。以下に例を示します。

 buddyscreen.items.SLIDER1.step = 1

stepプロパティの値には整数値を与えます。デフォルト値は1です。

※設計画面でのアイテム属性「刻み」と対応しています。

2.4.11.1.5.value

valueプロパティは、スライダーに表示する値を変更したり現在の値を取得したりするのに用います。

 buddyscreen.items.SLIDER1.value = 50

※設計画面でのアイテム属性「値」と対応しています。

2.4.11.2.イベント

本項ではスライダーモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.11.2.1.blur

blurイベントはスライダーから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.11.2.2.change

changeイベントはスライダーの値が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
変化後の値
evt.cause
"set"(setValueアクションによる変更)または"user"(ユーザによる変更)
2.4.11.2.3.click

clickイベントはスライダーがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.11.2.4.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.11.2.5.doubleclick

doubleclickイベントはスライダーがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.11.2.6.focus

focusイベントはスライダーに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.11.2.7.keydown

keydownイベントはスライダー上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.11.2.8.keypress

keypressイベントはスライダー上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.11.2.9.keyup

keyupイベントはスライダー上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.11.2.10.mousedown

mousedownイベントはスライダー上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.11.2.11.mouseup

mouseupイベントはスライダー上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.12.日時入力

日時入力モジュールは、画面上に日時入力欄を設けるモジュールです。手入力の他、カレンダーのような日時選択ダイアログでの入力も可能です。

2.4.12.1.プロパティ

本項では日時選択モジュールのプロパティについて説明します。

2.4.12.1.1.datetimetype

datetimetypeプロパティは、日時入力モジュールで日時のどの部分を扱うかを指定します。

 buddyscreen.items.DATE1.datetimetype = "ymd"

セットする値は以下のいずれかの文字列を与えます。

ymd
年月日
ymdhm
年月日 時分
ymdhms
年月日 時分秒
hm
時分
hms
時分秒

※設計画面でのアイテム属性「日時タイプ」と対応します。

2.4.12.1.2.disabled

disabledプロパティは、日時入力を操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.SELECT1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応しています。

2.4.12.1.3.errorhandling

errorhandlingプロパティは、日時入力に入力された内容が日時として正しくない場合にどのように処理するかの設定の、現在値を得たり新たな値をセットしたりします

 buddyscreen.items.DATE1.errorhandling = "none"

セットする値は次のいずれかです。

none
何もしない
dialog
ダイアログ表示
throw
スクリプトエラーとする

※設計画面でのアイテム属性「エラー表示」と対応します。

2.4.12.1.4.hourOptions

hourOptionsプロパティは、時刻入力欄の時間の選択肢について、現在の値を得たり新たな値をセットしたりします。

 buddyscreen.items.DATE1.hourOptions = "9,10,11,12"

選択肢の値はカンマ区切りの数値文字列(例:"9,10,11,12,13,14,15,16,17")です。

※設計画面でのアイテム属性「時選択肢」と対応します。

2.4.12.1.5.maxDate

maxDateプロパティは、日付入力欄で選択できる範囲の末尾日の、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.DATE1.maxDate = "2023/7/31"

セットする値は、Date型オブジェクトまたはDate型に変換できる日付文字列です。

※設計画面でのアイテム属性「範囲末尾日」と対応します。

2.4.12.1.6.minDate

minDateプロパティは、日付入力欄で選択できる範囲の先頭日の、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.DATE1.minDate = "2023/7/1"

セットする値は、Date型オブジェクトまたはDate型に変換できる日付文字列です。

※設計画面でのアイテム属性「範囲先頭日」と対応します。

2.4.12.1.7.minuteOptions

minuteOptionsプロパティは、時刻入力欄の分の選択肢について、現在の値を得たり新たな値をセットしたりします。

 buddyscreen.items.DATE1.minuteOptions = "0,15,30,45"

選択肢の値はカンマ区切りの数値文字列です。

※設計画面でのアイテム属性「分選択肢」と対応します。

2.4.12.1.8.placeholder

placeholderプロパティは、日時入力に値が設定されていないときに表示する文字列を指定します。以下に例を示します。

 buddyscreen.items.DATE1.placeholder = "日を入力してください"

※設計画面でのアイテム属性「プレースホルダ」と対応しています。

2.4.12.1.9.readOnly

readOnlyプロパティは、日時入力を読み取り専用に設定します。以下に例を示します。

 buddyscreen.items.DATE1.readOnly = true

readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは解除されます。

※設計画面でのアイテム属性「読み取り専用」と対応しています。

2.4.12.1.10.usedialog

usedialogプロパティは、日時入力をクリックしたときにダイアログを開いて日時を選択入力するかどうかの設定の、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.DATE1.usedialog = true

セットする値は真偽値で、真の場合はダイアログが開きます。偽の場合はダイアログは開かず日時文字列の手入力となります。

※設計画面でのアイテム属性「ダイアログ使用」と対応します。

2.4.12.1.11.value

valueプロパティは、日時入力に表示する日時を変更したり現在の値を取得したりするのに用います。

 buddyscreen.items.DATE1.value = "2023/7/7"

※設計画面でのアイテム属性「値」と対応しています。

2.4.12.2.イベント

本項では日時選択モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.12.2.1.blur

blurイベントは日時選択モジュールから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.12.2.2.change

changeイベントは日時選択モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
変化後の値
2.4.12.2.3.click

clickイベントは日時選択モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.12.2.4.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.12.2.5.doubleclick

doubleclickイベントは日時選択モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.12.2.6.focus

focusイベントは日時選択モジュールに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.12.2.7.keydown

keydownイベントは日時選択モジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.12.2.8.keypress

keypressイベントは日時選択モジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.12.2.9.keyup

keyupイベントは日時選択モジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.12.2.10.mousedown

mousedownイベントは日時選択モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.12.2.11.mouseup

mouseupイベントは日時選択モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.13.色選択(プラグイン)

色選択モジュールは、画面上に色の入力欄を設けるモジュールです。色は#xxxxxxの形の文字列(xxxxxxは6桁の16進数)で表されます。入力欄をクリックすると色を対話的に選択できるダイアログが開きます。

2.4.13.1.プロパティ

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.13.1.2.disabled

disabledプロパティは、色選択を操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.COLOR1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応しています。

2.4.13.1.3.readOnly

readOnlyプロパティは、色選択を読み取り専用に設定します。以下に例を示します。

 buddyscreen.items.COLOR1.readOnly = true

readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは読み取り専用の状態が解除されます。

※設計画面でのアイテム属性「読み取り専用」と対応しています。

2.4.13.1.4.value

valueプロパティは、色選択に表示する色を変更したり現在の色を取得したりするのに用います。

 buddyscreen.items.COLOR1.value = "#ff0000"

valueプロパティの値には色の名前(black, white, redなど)またはコード値(#000000~#ffffff, #000~#fff)を文字列で与えます。

※設計画面でのアイテム属性「値」と対応しています。

2.4.13.2.イベント

本項では色選択モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.13.2.1.blur

blurイベントは色選択モジュールから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.13.2.2.change

changeイベントは色選択モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
変化後の値
evt.cause
"set"(setValueアクションによる変更)または"user"(ユーザによる変更)
2.4.13.2.3.click

clickイベントは色選択モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.13.2.4.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.13.2.5.doubleclick

doubleclickイベントは色選択モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.13.2.6.focus

focusイベントは色選択モジュールに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.13.2.7.keydown

keydownイベントは色選択モジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.13.2.8.keypress

keypressイベントは色選択モジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.13.2.9.keyup

keyupイベントは色選択モジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.13.2.10.mousedown

mousedownイベントは色選択モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.13.2.11.mouseup

mouseupイベントは色選択モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.14.レコードセレクタ

レコードセレクタモジュールは、DBテーブルやDBビューの多数あるレコードのうち、どのレコードあるいはレコード群(テーブル表示の場合)を表示しているかを示すとともに、前や次のレコードあるいはレコード群に切り替えるボタン類を設けるモジュールです。

レコードセレクタでは、何件目から何件目までの間で、現在は何件目、ということを扱うのみで、それに応じて該当するレコードをDBテーブルやDBビューから読み出して表示する処理は、スクリプトでおこなう必要があります。

2.4.14.1.プロパティ

本項ではレコードセレクタモジュールのプロパティについて説明します。

2.4.14.1.1.disabled

disabledプロパティは、レコードセレクタを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.RECORDSELECTOR1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

2.4.14.1.2.max

maxプロパティは、レコードセレクタの値の最大値の現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.RECORDSELECTOR1.max = 1000

設定しなかった場合のデフォルト値は100です。

2.4.14.1.3.min

minプロパティは、レコードセレクタの値の最小値の現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.RECORDSELECTOR1.min = 1

設定しなかった場合のデフォルト値は1です。

2.4.14.1.4.pageSize

pageSizeプロパティは、レコードセレクタの「<<」「>>」ボタンをクリックしたときに何件ずつ前や次へ移動するかの設定値の、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.RECORDSELECTOR1.pageSize = 10

設定しない場合のデフォルト値は20です。

2.4.14.1.5.value

valueプロパティは、レコードセレクタの現在の値を返したり新たな値をセットしたりします。

 buddyscreen.items.RECORDSELECTOR1.value = 10

※設計画面でのアイテム属性「値」と対応します。

2.4.14.2.イベント

本項ではDBレコードセレクタモジュールから発生するイベントについて説明します。

2.4.14.2.1.change

changeイベントはDBレコードセレクタモジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。

 モジュール名_onChange: function(evt){ ... }

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
変化後の値
evt.cause
"set"(setValueアクションによる変更)または"user"(ユーザによる変更)
2.4.14.2.2.click

clickイベントはDBレコードセレクタモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.14.2.3.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.14.2.4.doubleclick

doubleclickイベントはDBレコードセレクタモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.14.2.5.mousedown

mousedownイベントはDBレコードセレクタモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.14.2.6.mouseup

mouseupイベントはDBレコードセレクタモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.15.ファイル選択

ファイル選択モジュールは、アプリを開いているパソコンやスマホなどの中にあるファイルを選択するための入力欄を画面上に設けるモジュールです。
選択したファイルは、内容を読み取ったり、サーバーにアップロードしたりできます。

2.4.15.1.プロパティ

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.15.1.2.disabled

disabledプロパティは、ファイル選択を操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.FILE1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.15.1.3.file

fileプロパティは読み取り専用で、選択されているファイルのFileオブジェクトを得ます。

 const file = buddyscreen.items.FILE1.file

uploadアクションを実行してアップロードすると、fileプロパティはnullになります。

2.4.15.1.4.readOnly

readOnlyプロパティは、ファイル選択を読み取り専用に設定します。以下に例を示します。

 buddyscreen.items.FILE1.readOnly = true

readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは解除されます。

※設計画面でのアイテム属性「読み取り専用」と対応しています。

2.4.15.1.5.value

valueプロパティは、ファイル選択の値として次のように利用します。

ファイル未選択で値もない状態にするにはnullをセットします。

 buddyscreen.items.FILE1.value = null

サーバーのfiles内のファイルのURL(filesからの相対URL)を値としてセットすることもできます。このときもファイル未選択の状態になります。

 buddyscreen.items.FILE1.value = "users/test.txt"

uploadアクションを実行してアップロードした後には、valueはアップロードされたファイルのURL(filesからの相対URL)になります。

 await buddyscreen.items.FILE1.upload("files/users")
 const url = buddyscreen.items.FILE1.value
2.4.15.2.アクション

本項ではファイル選択モジュールのアクションについて説明します。

2.4.15.2.1.readAsArrayBuffer

readAsArrayBufferアクションは、選択されたファイルをArrayBufferオブジェクトとして読み取ります。

 const data = await buddyscreen.items.FILE1.readAsArrayBuffer()
2.4.15.2.2.readAsBinaryString(非推奨)

readAsBinaryStringアクションは、選択されたファイルをバイナリデータとして読み取ります。

 const data = await buddyscreen.items.FILE1.readAsBinaryString()

readAsBinaryStringアクションの利用は推奨されません。代わりに前述のreadAsArrayBufferアクションを利用してください。

2.4.15.2.3.readAsDataURL

readAsDataURLアクションは、選択されたファイルをデータURLとして読み取ります。

 const url = await buddyscreen.items.FILE1.readAsDataURL()

データURLとは、内容を含んだ特殊な形式のURLです。例えば画像ファイルの内容を上記のようにしてデータURLとして読み取ると、そのURLを画像モジュールのsrcにセットすることで画像として表示することが可能です。

2.4.15.2.4.readAsText

readAsTextアクションは、選択されたファイルをテキストデータとして読み取ります。

 const txt = await buddyscreen.items.FILE1.readAsText({encoding: "Shift_JIS"})

引数には {encoding: "…"} としてテキストのエンコーディングを指定します。省略すると UTF8 になります。

2.4.15.2.5.upload

uploadアクションは、選択されたファイルをサーバにアップロードします。アップロードに成功すると、値はアップロードされたファイルのサーバー上でのURLになります。

 await buddyscreen.items.FILE1.upload("files/users")

引数には files/ で始まるアップロード先のディレクトリを指定します。

アップロードの結果値にセットされるURLは、files からの相対URLになります。例えば test.txt を上記のように files/users にアップロードすると、値にセットされるのは users/test.txt のようになります。

2.4.15.3.イベント

本項ではファイル選択モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.15.3.1.blur

blurイベントはファイル選択モジュールから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.15.3.2.change

changeイベントはファイル選択モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
変化後の値
2.4.15.3.3.click

clickイベントはファイル選択モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.15.3.4.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.15.3.5.doubleclick

doubleclickイベントはファイル選択モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.15.3.6.focus

focusイベントはファイル選択モジュールに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.15.3.7.mousedown

mousedownイベントはファイル選択モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.15.3.8.mouseup

mouseupイベントはファイル選択モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.16.画像

画像モジュールは、画面上に画像を表示するためのモジュールです。

2.4.16.1.プロパティ

本項では画像モジュールのプロパティについて説明します。

2.4.16.1.1.alt

altプロパティは、画像モジュールが表示する代替テキストの、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.IMAGE1.alt = "商品画像"

※設計画面でのアイテム属性「代替テキスト」と対応します。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.16.1.3.fitSize

fitSizeプロパティは、画像モジュールの中に画像をどう伸縮して表示するかの設定の、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.IMAGE1.fitSize = "fit"

セットする値は次のいずれかです。

(空文字列)
伸縮なし
width
横幅にあわせる
height
高さにあわせる
both
両方にあわせる
fit
縦横比を保持して両方に合わせる

※設計画面でのアイテム属性「画像の伸縮」と対応します。

2.4.16.1.4.src

srcプロパティは、画像モジュールが表示する画像ファイルのURLの、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.IMAGE1.src = "files/users/test.jpg"

※srcプロパティとvalueプロパティは同じ機能です。

※設計画面でのアイテム属性「ソース」と対応します。

2.4.16.1.5.tip

tipプロパティは、この画像にマウスオーバーしたときに表示されるツールチップ表示の内容を指定します。

 buddyscreen.items.IMAGE1.tip = "文字列"

※設計画面でのアイテム属性「チップ」と対応します。

2.4.16.1.6.value

valueプロパティは、srcプロパティと同じ機能です。srcプロパティをご覧ください。

2.4.16.2.イベント

本項では画像モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.16.2.1.click

clickイベントは画像モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.16.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.16.2.3.doubleclick

doubleclickイベントは画像モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.16.2.4.mousedown

mousedownイベントは画像モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.16.2.5.mouseup

mouseupイベントは画像モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.17.文字列

文字列モジュールは、画面上に文字列を表示するためのモジュールです。文字列モジュールは表示している文字列を値として保持します。

2.4.17.1.プロパティ

本項では文字列モジュールのプロパティについて説明します。

2.4.17.1.1.calculate

calculateプロパティは、この文字列の値を自動計算して表示する指示を含んでいます。設計画面でのアイテム属性「自動計算」での設定があればその内容を表すオブジェクトがセットされています。

スクリーンスクリプトで自動計算の内容を指定するには、calculateプロパティに関数を与えます。以下に例を示します。

buddyscreen.items.TEXTBOX3.calculate = (util)=>{
    // TEXTBOX1とTEXTBOX2の値を足す
    return util.sum("TEXTBOX1", "TEXTBOX2")
}

buddyscreen.items.TEXTBOX4.calculate = (util)=>{
    // TEXTBOX1の値を整数に変換して1.1を掛け、
    // 小数点以下を切り捨てる
    return Math.floor( util.int("TEXTBOX1") * 1.1)
}

calculateプロパティに与えた関数の引数には、自動計算の内容を記述するためのヘルパー関数を集めたutilモジュールが渡されます。詳しくは【utilモジュール】を参照してください。

calculateプロパティに与えた関数は、値を返さなければなりません。この戻り値が文字列の値になります。

calculateプロパティに与えた関数が他のスクリーンモジュールの値を参照している場合、それらのスクリーンモジュールの値が変更されたら自動的にcalculateプロパティに与えた関数が実行されてテキストボックスの値が更新されます。

calculateプロパティに与える関数では非同期処理は使えないことに注意してください。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.17.1.3.filter

filterプロパティは、文字列モジュールに適用するフィルタ設定の、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.LABEL1.filter = "COMMA"

filters引数にはフィルタ名を文字列で与えます。フィルタ名はカンマで区切って複数指定できます。フィルタの詳細については後述の【フィルタAPI】の節を参照してください。

※設計画面でのアイテム属性「フィルタ」と対応します。

2.4.17.1.4.tip

tipプロパティは、この文字列にマウスオーバーしたときに表示されるツールチップ表示の内容を指定します。

 buddyscreen.items.LABEL1.tip = "文字列"

※設計画面でのアイテム属性「チップ」と対応します。

2.4.17.1.5.value

valueプロパティは、文字列モジュールが表示する値(文字列)の、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.LABEL1.value = "名前"

※設計画面でのアイテム属性「値」と対応します。

2.4.17.2.イベント

本項では文字列モジュールから発生するイベントについて説明します。

2.4.17.2.1.click

clickイベントは文字列モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.17.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.17.2.3.doubleclick

doubleclickイベントは文字列モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.17.2.4.mousedown

mousedownイベントは文字列モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.17.2.5.mouseup

mouseupイベントは文字列モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.18.リスト

リストモジュールは複数の項目を選択できる選択肢入力欄を画面上に設けるモジュールです。

2.4.18.1.プロパティ

本項ではリストモジュールのプロパティについて説明します。

2.4.18.1.1.autoLoad

autoLoadプロパティは、dataLinkプロパティにセットされたテーブル名とカラム名がある場合に、選択肢をそのテーブルのカラムから読み込むかどうかを真偽値で指定します。

 buddyscreen.items.LIST1.autoLoad = true

※設計画面でのアイテム属性「選択肢の自動読込」と対応します。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.18.1.3.direction

directionプロパティは、リストの選択肢の配置方向の設定の、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.LIST1.direction = "vertical"

セットする値は次のいずれかです。

horizontal
横方向
vertical
縦方向

※設計画面でのアイテム属性「方向」と対応します。

2.4.18.1.4.disabled

disabledプロパティは、リストを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.LIST1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.18.1.5.list

listプロパティは、リストの現在の選択肢を得たり、新たにセットしたりします。

設計画面でのアイテム属性「リスト」でセットした選択肢は、{name: 名称, value: 値} のオブジェクトの配列となります。

 const list = buddyscreen.items.LIST1.list

スクリーンのスクリプトでlistプロパティに選択をセットする場合には、次のいくつかの方法があります。

     buddyscreen.items.LIST1.list = [
       {"foo": 1}, 
       {"bar": 2}
     ]
     buddyscreen.items.LIST1.list = ["foo", "bar"]
     buddyscreen.items.LIST1.list = "午前0-11時"
     buddyscreen.items.LIST1.list = "都道府県"
     buddyscreen.items.LIST1.list = "日-土曜日"
     const data = await buddy.app.dbtable.table1.select()
     buddyscreen.items.LIST1.list = data.rename("ID", "value")

※オブジェクトの配列の場合と、データベースから読み出したDataSetの場合、nameで指定した値がnullまたはundefinedの場合は、valueで指定した値がnameに使われます。

2.4.18.1.6.listType

listTypeプロパティは、リストの選択肢の表示方法設定の、現在値を得たり新たな値をセットしたりします。

buddyscreen.items.LIST1.listType = "normal"

セットする値は次のいずれかです。

normal
標準(文字列として並べる)
radio/check
ラジオ/チェックボックス(selectTypeプロパティがsingleならラジオボタン、そうでなければチェックボックス)

※設計画面でのアイテム属性「リストタイプ」と対応。

2.4.18.1.7.placeholder

placeholderプロパティは、リストに選択肢が設定されていないときに表示する文字列を指定します。以下に例を示します。

 buddyscreen.items.LIST1.placeholder = "選択肢がありません"

※設計画面でのアイテム属性「プレースホルダ」と対応しています。

2.4.18.1.8.selected

selectedプロパティは、リストで選択されている選択肢を取得します。このプロパティは読み取り専用です。

2.4.18.1.9.selectType

selectTypeプロパティは、リストの選択の仕方の、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.LIST1.selectType = "single"

セットする値は次のいずれかです。

none
選択なし
single
単一選択
multi
複数選択

※設計画面でのアイテム属性「選択タイプ」と対応します。

2.4.18.1.10.value

valueプロパティは、リストの選択されている選択肢の値を得たり、値をセットすることでその選択肢が選択された状態にすることができます。

 buddyscreen.items.LIST1.value = 1
 buddyscreen.items.LIST1.value = [1, 2, 3]
2.4.18.2.イベント

本項ではリストモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.18.2.1.click

clickイベントはリストモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにはクリックされたリスト項目の情報が渡されます。

evt.data
リスト項目がクリックされた場合は以下のプロパティからなるオブジェクトが渡される。リスト項目以外がクリックされた場合はdataプロパティは未定義。
name: 項目の名前
value: 項目の値
index: 項目の番号(最初のリスト項目が0)
2.4.18.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.18.2.3.doubleclick

doubleclickイベントはリストモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.18.2.4.mousedown

mousedownイベントはリストモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.18.2.5.mouseup

mouseupイベントはリストモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.19.テーブル

テーブルモジュールは行と列から成る表(テーブル)形式のデータを表示するためのモジュールです。テーブルには列ラベルを示すヘッダ行を付与することができます。

2.4.19.1.プロパティ

本項ではテーブルモジュールのプロパティについて説明します。

2.4.19.1.1.col

colプロパティは0からの順序またはカラム名を指定して、列を表すデータを得ます。

  const col = buddyscreen.items.TABLE1.col(1) 
  const col = buddyscreen.items.TABLE1.col("price") 

得られた列データは、内容の各セルの値などを含んでいるものではなく、value, style, filter のプロパティで、表示する値、スタイル、フィルターをセットするために使用します。

次のようにするとその列の値がすべて0になります。

  col.value = 0

次のようにセルオブジェクトを引数として表示する値を返す関数を指定することもできます。次の例では値を10倍して表示します。

  col.value = function(cell){return cell.value * 10}

次のようにスタイルやフィルタを指定できます。

  col.style = {color: "red"}
  col.filter = "comma"
2.4.19.1.2.data

dataプロパティは、参照時と代入時では扱いが異なります。

参照時

参照時にはテーブルに表示するデータのデータ部分(ヘッダ部分を含まない)について、
{列名: {value: 値, style: スタイルオブジェクト},…} というオブジェクトの配列の形で返します。
例えば、

 const data = buddyscreen.items.TABLE1.data

とした場合のdataの内容は次のようなものになります。

[
  {
    "名称": {value: "サンプルA", style: {}},
    "数量": {value: 100, style: {}},
  },
  {
    "名称": {value: "サンプルB", style: {}},
    "数量": {value: 200, style: {}},
  },
]

この中のstyleの内容を変更することで表示スタイルを調整することができます。例えばデータ2行目の数量の文字色を赤くするには上記のdataを用いて次のようにします。

  data[1]["数量"].style.color = "red"

またfilterプロパティをセットすることでフィルタを適用できます。例えば上と同じ箇所の数値にcommaフィルタを適用するなら次のようにします。

  data[1]["数量"].filter = "comma"

filterには上のようにフィルタ名をセットするほか、文字列を引数としてそれを加工した文字列を返す関数を指定することができます。

代入時

代入時には、テーブルのヘッダ部分とデータ部分があわせてセットされます。その方法は次のいずれかです。

    const data = await buddy.app.dbtable.table1.select()
    buddyscreen.items.TABLE1.data = data
    const data = await buddy.app.dbtable.table1.select().stream()
    buddyscreen.items.TABLE1.data = data
    buddyscreen.items.TABLE1.data = [
      {"名称": "サンプルA", "数量": 100},
      {"名称": "サンプルB", "数量": 200},
    ]
    buddyscreen.items.TABLE1.data = null
2.4.19.1.3.header

headerプロパティは、ヘッダ部分のみを取り出したり、セットしたりします。

 const header = buddyscreen.items.TABLE1.header

この場合のheaderの内容は例えば次のようになります。

[
  {name: '名前', display: '名前', style: {width: 140}},
  {name: '数量', display: '数量', style: {width: 140}},
]

このstyleのwidthを調整すれば、列幅を変更できます。例えば1列目の幅を300pxにしたい場合、上記で得たheaderを用いて次のようにします。(列の番号は0から始まることに注意してください。)

  header[0].style.width = 300

filterのセットも可能で、その列全体にフィルタを適用できます。

  header[0].filter = "comma"
2.4.19.1.4.placeholder

placeholderプロパティは、テーブルにデータが設定されていないときに表示する文字列を指定します。以下に例を示します。

 buddyscreen.items.TABLE1.placeholder = "データがありません"

※設計画面でのアイテム属性「プレースホルダ」と対応しています。

2.4.19.1.5.row

rowプロパティは、0からの順序を指定して行全体を表すデータを得ます。

  const row = buddyscreen.items.TABLE1.row(0)

得られた行データは、内容の各セルの値などを含んでいるものではなく、value, style, filter のプロパティで、表示する値、スタイル、フィルターをセットするために使用します。

次のようにするとその行の値がすべて空文字列になります。

  row.value = ""

次のようにセルオブジェクトを引数として表示する値を返す関数を指定することもできます。次の例では値を10倍して表示します。

  row.value = function(cell){return cell.value * 10}

次のようにスタイルやフィルタを指定できます。

  row.style = {color: "red"}
  row.filter = "comma"
2.4.19.2.イベント
2.4.19.2.1.click

clickイベントはテーブルモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにクリックされたセル、行および列に関する情報が渡されます。

evt.colIndex
クリックされた列番号(最初の列が0)
evt.row
クリックされた行のデータ。値は { カラム名: 値オブジェクト, ... } の形式のオブジェクト。カラム名に対応する値オブジェクトは以下のプロパティからなるオブジェクト。
value: カラム値
style: スタイルオブジェクト
evt.rowIndex
クリックされた行番号(最初の行が0)
evt.value
クリックされたセルの値
2.4.19.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.19.2.3.doubleclick

doubleclickイベントはテーブルモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.19.2.4.mousedown

mousedownイベントはテーブルモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.19.2.5.mouseup

mouseupイベントはテーブルモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.20.カレンダー(プラグイン)

カレンダーモジュールは画面上にカレンダーを表示するモジュールです。カレンダーには日付を指定してテキスト項目を挿入することができます。

2.4.20.1.プロパティ
2.4.20.1.1.firstDate

firstDateプロパティはカレンダーで表示されている月の最初の日付をDateオブジェクトで返します。このプロパティは読み取り専用です。

2.4.20.1.2.lastDate

firstDateプロパティはカレンダーで表示されている月の最後の日付をDateオブジェクトで返します。このプロパティは読み取り専用です。

2.4.20.1.3.month

monthプロパティはカレンダーで表示する月を設定したり現在の月を取得したりするのに用います。以下に例を示します。

 buddyscreen.items.CALENDAR1.month = 1

monthプロパティの値は1から12までです。

※設計画面でのアイテム属性「月」と対応します。

2.4.20.1.4.texts

textsプロパティはテキスト項目の配列を取得したり変更したりするのに用います。以下に例を示します。

 buddyscreen.items.CALENDAR1.texts[0]

この例では最初のテキスト項目を取得します。

変更時に値として指定できるのはテキスト項目の配列またはDataSetオブジェクトです。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。

2.4.20.1.5.useNavigator

useNavigatorプロパティは移動ボタンを有効にします。以下に例を示します。

 buddyscreen.items.CALENDAR1.useNavigator = true

useNavigatorプロパティの値には真偽値を与えます。値が真のときは移動ボタンが表示され、それ以外のときは非表示になります。

※設計画面でのアイテム属性「移動ボタンの使用」と対応します。

2.4.20.1.6.year

yearプロパティはカレンダーで表示する月の年を設定したり現在の年を取得したりするのに用います。以下に例を示します。

 buddyscreen.items.CALENDAR1.year = 2024

※設計画面でのアイテム属性「年」と対応します。

2.4.20.2.アクション

本項ではカレンダーモジュールのアクションについて説明します。

2.4.20.2.1.addText

addTextアクションはカレンダーにテキスト項目を追加表示します。

 addText(date, text, data)

date引数には挿入先の日付をDate型で与えます。text引数には表示する文字列を指定します。data引数(省略可)には任意のデータを与えます。

addTextアクションは追加されたテキスト項目を表すオブジェクトを返します。

2.4.20.2.2.clearText

clearTextアクションはaddTextアクションで追加したテキスト項目を削除します。

 clearText(date)

date引数(省略可)には日付をDate型で与えます。date引数を与えるとその日付のすべてのテキスト項目を削除します。date引数を省略するとすべてのテキスト項目を削除します。

2.4.20.2.3.delText

delTextアクションは指定の日付に付与されているテキスト項目をひとつ削除します。

 delText(obj)

obj引数には削除するテキスト項目オブジェクトまたはインデックス番号を与えます。テキスト項目オブジェクトはaddTextアクションの戻り値として返されます。また、textsプロパティ(テキスト項目オブジェクトの配列)を用いてtexts[0]などとして取得します。インデックス番号にはtextsの要素の番号(最初が0)を与えます。

2.4.20.2.4.move

moveアクションはカレンダーで表示する月を動かします。

 move(text)

text引数には以下のいずれかを文字列で与えます。

     2024/04
     2024-04
     +1m
     -2m
     +3months
     +1y
     -2y
     +3years
2.4.20.2.5.nextMonth

nextMonthアクションはカレンダーで表示する月を翌月に動かします。

 nextMonth()
2.4.20.2.6.nextYear

nextYearアクションはカレンダーで表示する月を翌年の同じ月に動かします。

 nextYear()
2.4.20.2.7.prevMonth

prevMonthアクションはカレンダーで表示する月を前月に動かします。

 prevMonth()
2.4.20.2.8.prevYear

prevYearアクションはカレンダーで表示する月を前年の同じ月に動かします。

 prevYear()
2.4.20.3.イベント

本項ではカレンダーモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.20.3.1.change

changeイベントはカレンダーモジュールが表示する年または月が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数dataには以下のプロパティから成るオブジェクトが渡されます。

data.year
変更後の年
data.month
変更後の月
data.cause
"set"(setYearMonthアクションによる変更)または"user"(ユーザによる変更)
2.4.20.3.2.click

clickイベントはカレンダーモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.date
日付をクリックした場合はその日付の文字列、そうでなければundefined
evt.header
ヘッダ(曜日)をクリックした場合は以下のプロパティからなるオブジェクト

weeknum: 曜日の番号(日曜日が0)
weektext: 曜日の名前
evt.holidayname
祝日の日付をクリックした場合はその祝日の名前(文字列)、そうでなければundefined
evt.text
テキスト項目をクリックした場合は以下のプロパティからなるオブジェクト

date: 日付
index: 同じ日付の何番目のテキスト項目か(最初が0)
value: テキスト項目の内容
data: 任意のデータ(addTextアクションのdata引数の値)
2.4.20.3.3.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.20.3.4.doubleclick

doubleclickイベントはカレンダーモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.20.3.5.mousedown

mousedownイベントはカレンダーモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.20.3.6.mouseup

mouseupイベントはカレンダーモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.21.タイムテーブル

タイムテーブルモジュールは画面上に時間割表を表示するモジュールです。時間割表には開始・終了日時を指定してテキスト項目を挿入することができます。

2.4.21.1.プロパティ
2.4.21.1.1.days

daysプロパティは開始日からの表示日数を設定します。

 buddyscreen.items.TIMETABLE1.days = 7

※設計画面でのアイテム属性「日数」と対応します。

2.4.21.1.2.dayWidth

dayWidthプロパティはタイムテーブルの日付カラムの幅を設定します。

 buddyscreen.items.TIMETABLE1.dayWidth = 50
2.4.21.1.3.disabled

disabledプロパティは、タイムテーブルを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.TIMETABLE1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.21.1.4.edate

edateプロパティはタイムテーブルモジュールで表示されている日付の最後の日付を返します。

 const edate = buddyscreen.items.TIMETABLE1.edate

このプロパティは読み取り専用です。このプロパティの値は開始日と表示日数に基づいて自動的に設定されます。

2.4.21.1.5.etime

etimeプロパティはタイムテーブルの表示終了時刻を設定します。

 buddyscreen.items.TIMETABLE1.etime = 18

※設計画面でのアイテム属性「終了時」と対応します。

2.4.21.1.6.height

dayWidthプロパティはタイムテーブルの行の高さを設定します。

 buddyscreen.items.TIMETABLE1.height = 25
2.4.21.1.7.sdate

sdateプロパティはタイムテーブルモジュールの開始日を設定します。

 buddyscreen.items.TIMETABLE1.sdate = "2020/12/31"

sdateプロパティの値は以下のいずれかです。

※設計画面でのアイテム属性「開始日」と対応します。

2.4.21.1.8.stime

stimeプロパティはタイムテーブルの表示開始時刻を設定します。

 buddyscreen.items.TIMETABLE1.stime = 9

※設計画面でのアイテム属性「開始時」と対応します。

2.4.21.1.9.texts

textsプロパティはタイムテーブルに追加したテキスト項目の配列を返します。

 const texts = buddyscreen.items.TIMETABLE1.texts

textsプロパティの値は以下のプロパティから成るオブジェクトの配列です。

start
開始日時(Dateオブジェクト)
end
終了日時(Dateオブジェクト)
text
表示文字列
bgcolor
背景色

textsプロパティは読み取り専用です。テキスト項目の追加にはaddTextアクション、テキスト項目の削除にはclearText、delTextアクションを利用してください。

2.4.21.1.10.timeWidth

dayWidthプロパティはタイムテーブルの時刻カラムの幅を設定します。

 buddyscreen.items.TIMETABLE1.timeWidth = 50

dayWidthプロパティを指定しなければ時刻カラムの幅はタイムテーブルモジュールの幅と表示日数から自動的に計算されます。dayWidthプロパティを指定すると固定幅になります。

2.4.21.1.11.useNavigator

useNavigatorプロパティは移動ボタンを有効にします。以下に例を示します。

 buddyscreen.items.TIMETABLE1.useNavigator = true

useNavigatorプロパティの値には真偽値を与えます。値が真のときは移動ボタンが表示され、それ以外のときは非表示になります。

※設計画面でのアイテム属性「移動ボタンの使用」と対応します。

2.4.21.2.アクション

本項ではタイムテーブルモジュールのアクションについて説明します。

2.4.21.2.1.addText

addTextアクションはタイムテーブルにテキスト項目を追加表示します。

 addText(start, end, text, bgcolor)

start引数とend引数には開始日時と終了日時をそれぞれDate型オブジェクト(またはDate型に変換できる日時文字列)で与えます。text引数には表示文字列、bgcolor引数には表示文字列の背景色を指定します。text引数は文字列に加えて次の形式のオブジェクトを受け付けます。

 { text: 表示文字列, popup: ポップアップ文字列 }

popupプロパティを省略するとtextプロパティの値がポップアップ文字列として用いられます。このオブジェクトには他のプロパティも自由に含めてよく、Clickイベントハンドラに渡されるevt.textプロパティには上記のオブジェクトがそのまま渡されます。たとえばtext引数の値を

 { id: データ番号, text: 表示文字列, popup: ポップアップ文字列 }

としておけば、Clickイベントハンドラではデータ番号をevt.text.idで受け取れます。テキスト項目の追加が成功したらtrueを、失敗したらfalseを返します。日をまたぐテキスト項目は追加できますが、開始時刻と終了時刻が表示開始時と表示終了時の間にないテキスト項目の追加は失敗します。

2.4.21.2.2.clearText

clearTextアクションはすべてのテキスト項目を削除します。

 clearTex()
2.4.21.2.3.delText

delTextアクションはテキスト項目をひとつ削除します。

 delText(index)

index引数には削除するテキスト項目の番号を与えます(最初のテキスト項目が0)。

2.4.21.2.4.nextDays

nextDaysアクションはタイムテーブルの表示期間を日数分だけ未来に進めます。

 nextDays()
2.4.21.2.5.prevDays

prevDaysアクションはタイムテーブルの表示期間を日数分だけ過去に戻します。

 prevDays()
2.4.21.3.イベント

本項ではタイムテーブルモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.21.3.1.click

clickイベントはタイムテーブルモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 モジュール名_onClick: function(evt){ ... }

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、タイムテーブル内のどこをクリックしたかに応じてevtオブジェクトの以下のプロパティに情報が渡されます。

a. テキスト項目をクリックした場合

evt.data
クリックしたデータ項目。以下のプロパティから成るオブジェクト:
start: 開始日時(Dateオブジェクト)
end: 終了日時(Dateオブジェクト)
text: 表示文字列
bgcolor: 背景色

b. テキスト項目以外をクリックした場合

evt.datetime
クリックした日時(Dateオブジェクト)

2.4.21.3.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.21.3.3.doubleclick

doubleclickイベントはタイムテーブルモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.21.3.4.mousedown

mousedownイベントはタイムテーブルモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.21.3.5.mouseup

mouseupイベントはタイムテーブルモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.22.クロス集計設定(プラグイン)

クロス集計設定モジュールはDBテーブル・DBビューのクロス集計を行なうための各種オプションを対話的に設定するためのモジュールです。クロス集計結果の表示には【クロス集計表】モジュールおよび【グラフ】モジュールを用います。

2.4.22.1.プロパティ
2.4.22.1.1.autoUpdate

autoUpdateプロパティはクロス集計設定モジュールの内容が更新されたときに連携先(クロス集計表、グラフ)の表示を自動的に更新するかどうかを指定します。以下に例を示します。

 buddyscreen.items.CROSSCONFIG1.autoUpdate = true

autoUpdateプロパティには真偽値を与えます。trueを与えると自動更新機能が有効になり、それ以外を与えると無効になります。

※設計画面でのアイテム属性「自動更新」と対応します。

2.4.22.1.2.crossOptions

crossOptionsプロパティには、スクリーン設計画面でのアイテム属性「クロス集計設定」で設定した内容がオブジェクトとしてセットされています。

2.4.22.1.3.disabled

disabledプロパティは、クロス集計設定モジュールを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.CROSSCONFIG1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.22.1.4.readOnly

readOnlyプロパティは、クロス集計設定モジュールを読み取り専用に設定します。以下に例を示します。

 buddyscreen.items.CROSSCONFIG1.readOnly = true

readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは読み取り専用の状態が解除されます。

※設計画面でのアイテム属性「読み取り専用」と対応しています。

2.4.22.1.5.screenItem

screenItemプロパティには、スクリーン設計画面でのアイテム属性「連携先」で設定した内容がスクリーンアイテム名の文字列の配列としてセットされています。

2.4.22.1.6.useDialog

useDialogプロパティはクロス集計設定モジュールを画面上にボタンとして表示し、ボタンが押されたらクロス集計設定画面をダイアログで表示するように設定します。以下に例を示します。

 buddyscreen.items.CROSSCONFIG1.useDialog = true

useDialogプロパティには真偽値を与えます。trueを与えるとダイアログとして表示する機能が有効になり、それ以外を与えると無効になります。

※設計画面でのアイテム属性「ダイアログ化」と対応します。

2.4.22.2.イベント

本項ではクロス集計モジュールから発生するイベントについて説明します。

2.4.22.2.1.click

clickイベントはクロス集計設定モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.22.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.22.2.3.doubleclick

doubleclickイベントはクロス集計設定モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.22.2.4.mousedown

mousedownイベントはクロス集計設定モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.22.2.5.mouseup

mouseupイベントはクロス集計設定モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.22.2.6.update

updateイベントは次のいずれかの場合に発生します。

イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('update', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evt.eventプロパティには以下のプロパティから成るオブジェクトが渡されます。

crossOptions
クロス集計設定の内容を表すオブジェクト
crossDBTable
クロス集計結果を読み込むためのオブジェクト

crossDBTableオブジェクトのselect()メソッドを呼び出すとサーバから集計データを読み込みます。以下に例を示します。

 // クロス集計結果を表すオブジェクトを得る
 const {crossDBTable} = evt.event
 // サーバから集計データを読み込む
 const table = await crossDBTable.select()
 // データをクロス集計表モジュールで表示する
 buddyscreen.items.CROSSTABLE1.table = table

2.4.23.クロス集計表(プラグイン)

2.4.23.1.プロパティ
2.4.23.1.1.defaultWidth

defaultWidthプロパティは、クロス集計表の列の表示幅を設定したり現在の表示幅を得たりするのに用います。以下に例を示します。

 buddyscreen.items.CROSSTABLE1.defaultWidth = 200
2.4.23.1.2.placeholder

placeholderプロパティは、クロス集計表にデータが設定されていないときに表示する文字列を指定します。以下に例を示します。

 buddyscreen.items.CROSSTABLE1.placeholder = "データがありません"

※設計画面でのアイテム属性「プレースホルダ」と対応しています。

2.4.23.1.3.table

tableプロパティは、クロス集計設定モジュールのupdateイベントを通じて渡されるクロス集計データをクロス集計表モジュールで表示するのに用います。このプロパティは書き込み専用です。以下に例を示します。

 // updateイベント発生時に実行する処理
 buddyscreen.items.CROSSCONFIG1.on('update', async function(evt){
     // 1. クロス集計結果を表すオブジェクトを得る
     const {crossDBTable} = evt.event
     // 2. サーバから集計データを読み込む
     const table = await crossDBTable.select()
     // 3. 読み込んだ集計データを表示する
     buddyscreen.items.CROSSTABLE1.table = table
 })

この例ではクロス集計設定モジュール(CROSSCONFIG1)のupdateイベントの処理内容を次のように記述しています。

  1. まずイベントオブジェクトevtからクロス集計結果を表すオブジェクトcrossDBTableを取得します。

  2. このオブジェクトのselect()アクションを呼んでサーバから集計データを読み込みます。

  3. 読み込んだ集計データをクロス集計表モジュール(CROSSTABLE1)のtableプロパティに設定して、データを表示します。

なお、クロス集計設定モジュールの「連携先」にクロス集計表モジュールを入れた場合には集計データの受け渡しが自動的に行われます。その場合、上述の例のようなupdateイベントハンドラを記述する必要はありません。

2.4.23.2.イベント
2.4.23.2.1.click

Clickイベントはクロス集計表モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.23.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.23.2.3.doubleclick

contextmenuイベントはクロス集計表モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.23.2.4.mousedown

mousedownイベントはクロス集計表モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.23.2.5.mouseup

mouseupイベントはクロス集計表モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.24.地図(プラグイン)

地図モジュールは画面上に地図を表示するモジュールです。地図上には緯度・経度で指定した地点にマーカーを設けて情報を表示することができます。

2.4.24.1.プロパティ
2.4.24.1.1.L

Lプロパティは地図モジュールが地図の表示に用いているLeafletライブラリを参照するためのプロパティです。

2.4.24.1.2.lat

latプロパティは地図モジュールで表示する地図の中心の緯度を設定したり現在の緯度を求めたりするのに用います。以下に例を示します。

const lat = buddyscreen.items.MAP1.lat

※設計画面でのアイテム属性「緯度」と対応しています。

2.4.24.1.3.lng

lngプロパティは地図モジュールで表示する地図の中心の経度を設定したり現在の経度を求めたりするのに用います。以下に例を示します。

const lng = buddyscreen.items.MAP1.lng

※設計画面でのアイテム属性「経度」と対応しています。

2.4.24.1.4.map

mapプロパティは地図モジュールが地図の表示に用いているLeafletライブラリの地図インスタンスを保持しているプロパティです。このプロパティは読み取り専用です。

2.4.24.1.5.mapSource

mapSourceプロパティは地図モジュールで表示する地図データのソース(供給源)を設定したり現在のソースを得たりするのに用います。以下に例を示します。この例ではソースを国土地理院標準タイルに設定しています。

buddyscreen.items.MAP1.mapSource = "std"

mapSourceプロパティには次のいずれかの値を与えます。

  1. 定義済みのソース名:次のソース名が利用できます。
"std"
標準
"pale"
淡色
"blank"
白地図
"seamlessphoto"
写真
"relief"
色別標高図
  1. 以下のプロパティからなるオブジェクト
url
地図表示ライブラリLeafletで利用できるソースのURL
options
以下のプロパティからなるオプションオブジェクト
attribution: 名称などソースの情報として表示する文字列(HTML)

※設計画面でのアイテム属性「地図データ」と対応しています。

2.4.24.1.6.markers

markersプロパティは地図モジュールで表示するマーカーをマーカーオブジェクトの配列として表すプロパティです。このプロパティは読み取り専用です。例えば最初のマーカーオブジェクトを得るには次のようにします。

const marker = buddyscreen.items.MAP1.markers[0]

マーカーを追加削除するにはaddMarker, clearMarkers, delMarkerの各アクションを使用してください。

2.4.24.1.7.zoom

zoomプロパティは地図モジュールで表示する地図のズーム倍率を設定したり現在の倍率を求めたりするのに用います。以下に例を示します。

const zoom = buddyscreen.items.MAP1.zoom

※設計画面でのアイテム属性「ズーム」と対応しています。

2.4.24.2.アクション

本項では地図モジュールのアクションについて説明します。

2.4.24.2.1.addMarker

addMarkerアクションは緯度・経度で表された地点にマーカーを追加表示します。マーカーにはポップアップ表示されるマークアップ付きテキスト(HTML)を付与できます。

 addMarker(data)

data引数には以下のプロパティから成るオブジェクトを与えます。

lat
マーカーを設ける地点の緯度
lng
マーカーを設ける地点の経度
opacity
マーカーの透明度(0~1の実数値)。1は完全な不透明を表す
popup
ポップアップ表示するHTML文字列

addMarkerアクションは追加されたマーカーオブジェクトを返します。

2.4.24.2.2.clearMarkers

clearMarkersアクションはすべてのマーカーを削除します。

 clearMarkers()
2.4.24.2.3.delMarker

delMarkerアクションはマーカーをひとつ削除します。

 delMarker(marker)

marker引数には削除するマーカーオブジェクトを与えます。

2.4.24.2.4.showMap

showMapアクションは緯度・経度で表された地点を地図モジュールに表示します。

 showMap(data)

data引数には以下のプロパティから成るオブジェクトを与えます。

lat
表示する地点の緯度
lng
表示する地点の経度
zoom
表示倍率
2.4.24.3.イベント

本項では地図モジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.24.3.1.change

changeイベントは地図モジュールが表示する場所(緯度、経度)や倍率が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.bounds
地図の表示範囲。値は以下のプロパティからなるオブジェクト。
_northEast: 表示範囲の北東角の位置を表す { lat: 緯度, lng: 経度 } の形式のオブジェクト
_southWest: 表示範囲の南西角の位置を表す { lat: 緯度, lng: 経度 } の形式のオブジェクト
evt.lat
地図の中心の緯度
evt.lng
地図の中心の経度
evt.zoom
地図の表示倍率
2.4.24.3.2.click

clickイベントは地図モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 モジュール名_onClick: function(evt){ ... }

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.bounds
地図の表示範囲。値は以下のプロパティからなるオブジェクト。
_northEast: 表示範囲の北東角の位置を表す { lat: 緯度, lng: 経度 } の形式のオブジェクト
_southWest: 表示範囲の南西角の位置を表す { lat: 緯度, lng: 経度 } の形式のオブジェクト
evt.lat
クリックされた地点の緯度
evt.lng
クリックされた地点の経度
evt.zoom
地図の表示倍率
2.4.24.3.3.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.24.3.4.doubleclick

doubleclickイベントは地図モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.24.3.5.mousedown

mousedownイベントは地図モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.24.3.6.mouseup

mouseupイベントは地図モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.24.4.マーカーオブジェクト

本項では地図モジュールで扱うマーカーオブジェクトについて説明します。マーカーオブジェクトを作成するにはaddMarkerアクションを使用します。

2.4.24.4.1.id

idプロパティはマーカーオブジェクトを一意に区別できる識別子です。このプロパティは読み取り専用です。

2.4.24.4.2.instance

instanceプロパティはマーカーオブジェクトに対応するLeafletライブラリのマーカーインスタンスを保持するプロパティです。このプロパティは読み取り専用です。

2.4.24.4.3.lat

latプロパティはマーカーの表示位置の緯度を設定したり現在の緯度を得たりするのに用います。以下に例を示します。

const lat = buddyscreen.items.MAP1.markers[0].lat
2.4.24.4.4.lng

lngプロパティはマーカーの表示位置の経度を設定したり現在の経度を得たりするのに用います。以下に例を示します。

const lng = buddyscreen.items.MAP1.markers[0].lng
2.4.24.4.5.on()

onアクションはマーカーにイベントハンドラを追加します。

 on(name, handler)

name引数にはLeafletライブラリで利用できるイベント名を、handler引数には関数オブジェクトを与えます。

2.4.24.4.6.opacity

opacityプロパティはマーカーの透明度を設定したり現在の透明度を得たりするのに用います。以下に例を示します。

const opacity = buddyscreen.items.MAP1.markers[0].opacity
2.4.24.4.7.popup

popupプロパティはマーカーのポップアップ文字列を設定したり現在のポップアップ文字列を得たりするのに用います。以下に例を示します。

const popup = buddyscreen.items.MAP1.markers[0].popup

2.4.25.グラフ(プラグイン)

グラフモジュールはデータを可視化するグラフを表示するためのモジュールです。

2.4.25.1.プロパティ
2.4.25.1.1.autoUpdate

autoUpdateプロパティはグラフモジュールのdataプロパティが更新されたときに描画を自動的に更新するかどうかを指定します。以下に例を示します。

 buddyscreen.items.GRAPH1.autoUpdate = true

autoUpdateプロパティには真偽値を与えます。trueを与えると自動更新機能が有効になり、それ以外を与えると無効になります。

※設計画面でのアイテム属性「自動更新」と対応します。

2.4.25.1.2.chart

chartプロパティはグラフモジュールの表示に用いられているChart.jsのチャートオブジェクトを返します。このプロパティは読み取り専用です。

2.4.25.1.3.data

dataプロパティはグラフモジュールに表示するグラフの内容を指定するのに用います。以下に例を示します。この例では、DBテーブル・ビューから読み込んだデータを渡しています。

 const tableName = "table1" // テーブル名
 const table = buddy.app.findModel(tableName)
 const result = await table.select()
 buddyscreen.items.GRAPH1.data = result

また、グラフ表示ライブラリChart.jsのデータ構造を直接渡すこともできます。以下に例を示します。

 const data = {
	labels: ["1", "2", "3"],
	datasets: [{
		label: "Dataset",
		data: [1, 4, 9],
		borderColor: "red",
		backgroundColor: "pink",
	}],
 }
 buddyscreen.items.GRAPH1.data = data

この場合、dataプロパティにはChart.jsのdataプロパティに指定できるすべてのオプションが指定できます。詳しくはChart.jsのドキュメントを参照してください。

2.4.25.1.4.dataColors

dataColorsプロパティはグラフモジュールで用いられる描線のデフォルトの色セットを指定します。以下に例を示します。

 const dataColors = [
     '#4dc9f6',
     '#f67019',
     '#f53794',
     '#537bc4',
     '#acc236',
     '#166a8f',
     '#00a950',
     '#58595b',
     '#8549ba',
 ]
 buddyscreen.items.GRAPH1.dataColors = dataColors

dataColorsプロパティには色指定の文字列の配列を与えます。

※設計画面でのアイテム属性「データ系列色」と対応します。

2.4.25.1.5.type

typeプロパティはグラフモジュールが表示するグラフの種類を指定します。以下に例を示します。

 buddyscreen.items.GRAPH1.type = "bar"

typeプロパティには次のいずれかの文字列を与えます。

"bar"
棒グラフ
"bubble"
バブルグラフ
"doughnut"
ドーナツ円グラフ
"line"
折れ線グラフ
"pie"
円グラフ
"polarArea"
ポラー円グラフ
"radar"
レーダーチャート
"scatter"
散布図

※設計画面でのアイテム属性「グラフの種類」と対応します。

2.4.25.2.アクション

本項ではグラフモジュールのアクションについて説明します。

2.4.25.2.1.dataColor

dataColorアクションはグラフ描画に用いられるデフォルトの色セットの要素を返します。

 buddyscreen.items.モジュール名.dataColor(index)

index引数には色セットの要素の番号(最初が0)を指定します。

2.4.25.2.2.update

updateアクションは、グラフモジュールの描画を更新します。

 buddyscreen.items.モジュール名.update()

自動更新を有効にしている場合にはupdateアクションはdataプロパティを更新したときに自動的に呼ばれます。

2.4.25.3.イベント
2.4.25.3.1.click

clickイベントはグラフモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 モジュール名_onClick: function(evt){ ... }

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.25.3.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.25.3.3.doubleclick

doubleclickイベントはグラフモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.25.3.4.mousedown

mousedownイベントはグラフモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.25.3.5.mouseup

mouseupイベントはグラフモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.26.キャンバス(プラグイン)

キャンバスモジュールは、スクリプトにより画面上に図形や文字列を描画するモジュールです。

キャンバスモジュールに図形を描画するには、まず【getContext】アクションで2次元グラフィックスコンテキストを得ます。次に、コンテキストオブジェクトの各種メソッドを呼び出して図形を描画します。例として、CANVAS1という名前のキャンバスモジュールに塗りつぶした矩形を青で、矩形の枠線を赤で描画するスクリプトを以下に示します。

 var ctx = this.items.CANVAS1.getContext();
 ctx.fillStyle = &quot;blue&quot;;
 ctx.fillRect(120, 120, 200, 150);
 ctx.strokeStyle = &quot;red&quot;;
 ctx.strokeRect(100, 100, 200, 150);

2次元グラフィックスコンテキストの描画メソッドの詳細についてはHTML5のキャンバス要素に関する解説書やオンラインチュートリアル(例えば下記URL)などを参照してください。

 https://developer.mozilla.org/ja/docs/Web/Guide/HTML/Canvas_tutorial/Drawing_shapes
2.4.26.1.プロパティ
2.4.26.1.1.height

heightプロパティはキャンバスの現在の高さを返します。このプロパティは読み取り専用です。

2.4.26.1.2.width

widthプロパティはキャンバスの現在の幅を返します。このプロパティは読み取り専用です。

2.4.26.2.アクション

本項ではキャンバスモジュールのアクションについて説明します。

2.4.26.2.1.getContext

getContextアクションはキャンバスの描画コンテキストを返します。

 buddyscreen.items.モジュール名.getContext(contextType)

contextType引数には描画コンテキストの種類("2d", "webgl"など)を与えます。

2.4.26.3.イベント

本項ではキャンバスモジュールから発生するイベントについて説明します。一部のイベントハンドラのevt引数に渡されるイベントオブジェクトについては【イベントAPI】の節を参照してください。

2.4.26.3.1.click

clickイベントはキャンバスがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.26.3.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.26.3.3.doubleclick

doubleclickイベントはキャンバスがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.26.3.4.drop

dropイベントはキャンバスに対してファイルがドロップされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('drop', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.files
ドロップされたファイルの一覧を表す配列。配列の要素は以下のプロパティからなるオブジェクト。
name: ファイル名
size: ファイルサイズ
type: ファイル種別(MIMEタイプ)
upload: ファイルをサーバーにアップロードする関数
2.4.26.3.5.mousedown

mousedownイベントはキャンバス上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.26.3.6.mouseup

mouseupイベントはキャンバス上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.26.3.7.resize

resizeイベントはキャンバスの大きさが変更されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('resize', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.27.スクリーンコンテナ

スクリーンコンテナモジュールは、別のスクリーンを画面上に埋め込むためのモジュールです。埋め込まれる側の別スクリーンを「内側」、スクリーンコンテナが設けられたスクリーンを「外側」と呼びます。内側スクリーンの埋め込み方法には次の2つがあります。

 a. 1つのスクリーンコンテナ内に1つだけ内側スクリーンを表示する(デフォルト)。
 b. 内側スクリーンを0個以上複製して反復表示する。

内側スクリーンの反復表示回数を指定するには後述のsetIterateアクションを用います。デフォルトの反復表示回数は1です。

2.4.27.1.プロパティ
2.4.27.1.1.data

dataプロパティにはスクリーンコンテナに埋め込むスクリーンを与えます。以下に例を示します。

 const screenName = "スクリーン名"
 buddyscreen.items.SCREENCONTAINER1.data = buddy.app.screen[screenName]

上の例ではscreenNameに与えた名前のスクリーンをスクリーンコンテナに埋め込みます。

dataプロパティの値をスクリーンの配列にすると1つのスクリーンコンテナに複数のスクリーンを埋め込むことができます。以下に例を示します。

 const screenName = "スクリーン名"
 const data = new Array(2)
 data.fill(buddy.app.screen[screenName])
 buddyscreen.items.SCREENCONTAINER1.data = data

上の例では長さが2の配列を設けて、fillメソッドで配列のすべての要素を同じスクリーンに設定し、その配列をdataプロパティに代入しています。これにより同じスクリーンが2回繰り返して表示されます。

上の例では同じスクリーンを繰り返しましたが、異なるスクリーンを要素とする配列を代入することも可能です。

2.4.27.2.アクション

本項ではスクリーンコンテナモジュールのアクションについて説明します。

2.4.27.2.1.send

埋め込まれたスクリーンにデータを送ります。

 buddyscreen.items.モジュール名.send(data)

data引数には埋め込まれたスクリーンに送るデータの配列を与えます。配列の最初の要素は1つ目のスクリーンに送られます。次の要素があれば2つ目のスクリーンに送られます。以下同様に、n番目の要素があればn番目のスクリーンに送られます。

2.4.27.3.イベント

本項ではスクリーンコンテナから発生するイベントについて説明します。

2.4.27.3.1.blur

blurイベントはスクリーンコンテナから入力フォーカスが外れたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('blur', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.27.3.2.click

clickイベントはスクリーンコンテナがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.27.3.3.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.27.3.4.doubleclick

doubleclickイベントはスクリーンコンテナがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.27.3.5.focus

focusイベントはスクリーンコンテナに入力フォーカスが移ってきたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('focus', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.27.3.6.keydown

keydownイベントはスクリーンコンテナ上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.27.3.7.keypress

keypressイベントはスクリーンコンテナ上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.27.3.8.keyup

keyupイベントはスクリーンコンテナ上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.27.3.9.mousedown

mousedownイベントはスクリーンコンテナ上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.27.3.10.mouseup

mouseupイベントはスクリーンコンテナ上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.27.3.11.receive

receiveイベントはスクリーンコンテナ内のスクリーンから送信されたイベントを受け取ったときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('receive', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.data
スクリーンから送信されたデータ
evt.container_index
何番目のスクリーンから送信されたか(先頭が0)

2.4.28.IFrame(プラグイン)

IFrameモジュールはHTMLの<iframe>タグを用いて画面内にネット上のコンテンツ(ウェブページなど)を埋め込むためのモジュールです。

2.4.28.1.プロパティ
2.4.28.1.1.html

srcプロパティはIFrameモジュールに表示するコンテンツをHTML形式で与えるのに用います。以下に例を示します。

 buddyscreen.items.IFRAME1.html = "<h1>テスト</h1>"

htmlプロパティを変更するとsrcプロパティの値も変更されます。

2.4.28.1.2.src

srcプロパティはIFrameモジュールに表示するWebページへのリンクを設定したり現在のリンクを取得したりするのに用います。以下に例を示します。

 buddyscreen.items.IFRAME1.src = "./files/test.html"

※設計画面でのアイテム属性「ソース」と対応しています。

2.4.28.1.3.value

valueプロパティはsrcプロパティの別名です。

2.4.28.2.イベント
2.4.28.2.1.click

clickイベントはIFrameがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.28.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.28.2.3.doubleclick

doubleclickイベントはIFrameがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.28.2.4.mousedown

mousedownイベントはIFrame上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.28.2.5.mouseup

mouseupイベントはIFrame上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.29.手書入力(プラグイン)

2.4.29.1.プロパティ

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.29.1.2.disabled

disabledプロパティは、手書入力モジュールを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.HANDWRITE1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.29.1.3.fitSize

fitSizeプロパティは手書入力モジュールで背景画像を表示する場合に画像の伸縮をコントロールするためのプロパティです。以下に例を示します。

 buddyscreen.items.HANDWRITE1.fitSize = "fit"

fitSizeプロパティの有効な値は次のいずれかの文字列です。

''
伸縮なし
'both'
両方にあわせる
'fit'
縦横比を保持して両方に合わせる
'height'
高さにあわせる
'width'
横幅にあわせる

※設計画面でのアイテム属性「画像の伸縮」と対応しています。

2.4.29.1.4.imageSource

imageSourceプロパティは手書入力モジュールの背景画像として表示する表示するファイルのURLを設定するためのプロパティです。以下に例を示します。

 buddyscreen.items.HANDWRITE1.imageSource = "files/images/foo.jpg"

※設計画面でのアイテム属性「背景画像」と対応します。

2.4.29.1.5.lineColor

lineWidthプロパティは手書入力に用いる線の色を変更したり現在の線の色を取得したりするのに用います。以下に例を示します。

 buddyscreen.items.HANDWRITE1.lineColor = "red"

lineColorプロパティの値にはHTMLで利用可能な色指定(redなどの色名、#000000~#fffff、#000~#fffの数値指定)を与えます。

※設計画面でのアイテム属性「線の色」と対応します。

2.4.29.1.6.lineWidth

lineWidthプロパティは手書入力に用いる線の太さを変更したり現在の線の太さを取得したりするのに用います。以下に例を示します。

 buddyscreen.items.HANDWRITE1.lineWidth = 10
 buddyscreen.items.HANDWRITE1.lineWidth = "10px"

lineWidthプロパティの値には整数値またはピクセル数(例:"10px")が指定できます。

※設計画面でのアイテム属性「線の太さ」と対応します。

2.4.29.1.7.value

valueプロパティは手書入力モジュールの描画内容を取得したり新しい描画内容に置き換えたりするのに用います。

valueプロパティにnullを代入すると描画内容をクリアします。以下に例を示します。

 buddyscreen.items.HANDWRITE1.value = null;

valueプロパティの値は、DBテーブルの文字列(フリー)型のカラムの値として保存したり、DBテーブルから読み取って復元したりできます。

2.4.29.2.アクション
2.4.29.2.1.getContext

getContextアクションは手書入力モジュールに使われているキャンバスの描画コンテキストを返します。

 buddyscreen.items.モジュール名.getContext(contextType)

contextType引数には描画コンテキストの種類("2d", "webgl"など)を与えます。

2.4.29.2.2.remove

removeアクションは手書入力モジュールの描画内容から要素を削除します。

 buddyscreen.items.モジュール名.remove(num)

num引数(省略可)には削除する要素の数を整数値で与えます。省略すると1を指定したのと同じになります。描画内容は新しく描いた要素から削除されます。

2.4.29.2.3.upload

uploadアクションは手書入力モジュールの描画内容をPNG形式の画像ファイルとしてアップロードします。

 buddyscreen.items.モジュール名.upload(dst)

dst引数(省略可)にはアップロード先のディレクトリ名をfiles/からの相対パスで与えます。dst引数を省略すると、データリンクが指定されていたらそのカラムのRootDirを使用し、指定がなければfiles/ディレクトリを使用します。

2.4.29.3.イベント
2.4.29.3.1.click

clickイベントは手書入力モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.29.3.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.29.3.3.doubleclick

doubleclickイベントは手書入力モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.29.3.4.drop

dropイベントは手書入力モジュールに対してファイルがドロップされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('drop', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.files
ドロップされたファイルの一覧を表す配列。配列の要素は以下のプロパティからなるオブジェクト。
name: ファイル名
size: ファイルサイズ
type: ファイル種別(MIMEタイプ)
upload: ファイルをサーバーにアップロードする関数
2.4.29.3.5.mousedown

mousedownイベントは手書入力モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.29.3.6.mouseup

mouseupイベントは手書入力モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.29.3.7.resize

resizeイベントは手書入力モジュールの大きさが変更されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('resize', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.30.リンク(プラグイン)

2.4.30.1.プロパティ
2.4.30.1.1.autoDetect

autoDetectプロパティはhrefプロパティの値がメールまたは電話番号かどうかを自動判定する機能を有効にします。以下に例を示します。

 buddyscreen.items.LINK1.autoDetect = true

autoDetectプロパティには真偽値を与えます。trueを与えると自動判定機能が有効になり、それ以外を与えると無効になります。

※設計画面でのアイテム属性「自動判定」と対応します。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.30.1.3.href

targetプロパティはリンクの参照先を設定したり現在の参照先を取得したりするのに用います。以下に例を示します。

 buddyscreen.items.LINK1.href = "https://www.google.co.jp/"

※設計画面でのアイテム属性「ターゲット」と対応します。

2.4.30.1.4.target

targetプロパティはリンクがクリックされたときにどのウィンドウ(フレーム)に表示するかを指定します。以下に例を示します。

 buddyscreen.items.LINK1.target = "_blank"

この例では新しいウィンドウを開いてリンク先を表示します。

※設計画面でのアイテム属性「ターゲット」と対応します。

2.4.30.1.5.text

textプロパティはリンク(アンカー)として表示する文字列を設定したり現在の文字列を取得したりするのに用います。以下に例を示します。

 buddyscreen.items.LINK1.text = "ここをクリックしてダウンロード"

※設計画面でのアイテム属性「文字列」と対応します。

2.4.30.1.6.value

valueプロパティはhrefプロパティの別名です。詳しくは【href】の項を参照してください。

2.4.30.2.イベント
2.4.30.2.1.click

clickイベントは手書入力モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.30.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.30.2.3.doubleclick

doubleclickイベントはリンクモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.30.2.4.mousedown

mousedownイベントはリンクモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.30.2.5.mouseup

mouseupイベントはリンクモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.31.コメント(プラグイン)

2.4.31.1.プロパティ
commentGroup(コメントグループを指定)
commentNum(コメントの取得数を指定)
readOnly(アイテムを読み取り専用に設定)
2.4.31.1.1.commentGroup

commentGroupプロパティはコメントグループを指定するのに用います。以下に例を示します。

 buddyscreen.items.Comment1.commentGroup = "group1"

※設計画面でのアイテム属性「コメントグループ」と対応します。

2.4.31.1.2.commentNum

commentNumプロパティは一度に取得するコメントの数を指定するのに用います。以下に例を示します。

 buddyscreen.items.Comment1.commentNum = 10

※設計画面でのアイテム属性「コメント取得数」と対応します。

2.4.31.1.3.readOnly

readOnlyプロパティは、色選択を読み取り専用に設定します。以下に例を示します。

 buddyscreen.items.Comment1.readOnly = true

readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは読み取り専用の状態が解除されます。

※設計画面でのアイテム属性「読み取り専用」と対応しています。

2.4.31.2.アクション
2.4.31.2.1.loadComment

loadCommentアクションは保存されたコメントデータを読み込みます。

 buddyscreen.items.モジュール名.loadComment()
2.4.31.3.イベント
2.4.31.3.1.submit

submitイベントはコメントが投稿されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('submit', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.31.3.2.update

updateイベントはコメントコンポーネントの内容が更新されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('update', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.32.FileList(プラグイン)

2.4.32.1.プロパティ
2.4.32.1.1.list

listプロパティはFileListモジュールに表示するファイルおよびディレクトリの配列を設定したり現在の値を取得したりするのに用います。以下に例を示します。

buddyscreen.items.FileList1.list = [];

buddy.api.readDir() 関数でディレクトリの内容を読み取ってFileListモジュールで表示する例を以下に示します。

const path = ""; // filesディレクトリからの相対パス
const list = await buddy.api.readDir(path);
buddyscreen.items.FileList1.list = list;
2.4.32.1.2.placeholder

placeholderプロパティは、FileListモジュールにデータが設定されていないときに表示する文字列を指定します。以下に例を示します。

 buddyscreen.items.FileList1.placeholder = "ここにファイル一覧が表示されます"

※設計画面でのアイテム属性「プレースホルダ」と対応しています。

2.4.32.2.イベント
2.4.32.2.1.click

clickイベントはFileListモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティにはクリックされた項目の情報が渡されます。

evt.file
クリックされたファイルまたはディレクトリの情報。ファイル・ディレクトリ以外がクリックされた場合は未定義

ファイル・ディレクトリの情報は以下のプロパティからなるオブジェクトで表されます。

atime
最終アクセス日時
ctime
作成日時
dir
ディレクトリならばtrue
download()
ファイルをダウンロードする関数
mtime
最終更新日時
name
ファイル名またはディレクトリ名
path
filesディレクトリからの相対パス
size
ファイルサイズ(バイト数)

ファイルの場合は関数を呼び出すとそのファイルをダウンロードできます。以下に例を示します。

 if (evt.file && !evt.file.dir) {
     evt.file.download()
 }
2.4.32.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.32.2.3.doubleclick

doubleclickイベントはFileListモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.32.2.4.drop

dropイベントはFileListモジュールに対してファイルがドロップされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('drop', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.files
ドロップされたファイルの一覧を表す配列。配列の要素は以下のプロパティからなるオブジェクト。
name: ファイル名
size: ファイルサイズ
type: ファイル種別(MIMEタイプ)
upload: ファイルをサーバーにアップロードする関数
2.4.32.2.5.mousedown

mousedownイベントはFileListモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.32.2.6.mouseup

mouseupイベントはFileListモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.33.FilePreview(プラグイン)

2.4.33.1.プロパティ
2.4.33.1.1.alt

altプロパティはFilePreviewモジュールにデータが設定されていないときに表示する代替テキストを設定したり現在の代替テキストを取得したりするのに用います。以下に例を示します。

 buddyscreen.items.FilePreview1.alt = "ファイル"

※設計画面でのアイテム属性「代替テキスト」と対応しています。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.33.1.3.file

fileプロパティは読み取り専用で、選択されているファイルのFileオブジェクトを得ます。

 const file = buddyscreen.items.FilePreview1.file

uploadアクションを実行してアップロードすると、fileプロパティはnullになります。

2.4.33.1.4.fitSize

fitSizeプロパティはFilePreviewモジュールで画像ファイルを表示する場合に適用する画像の伸縮をコントロールするプロパティです。以下に例を示します。

 buddyscreen.items.FilePreview1.fitSize = "fit"

fitSizeプロパティの有効な値は次のいずれかの文字列です。

''
伸縮なし
'both'
両方にあわせる
'fit'
縦横比を保持して両方に合わせる
'height'
高さにあわせる
'width'
横幅にあわせる

※設計画面でのアイテム属性「画像の伸縮」と対応しています。

2.4.33.1.5.src

srcプロパティはvalueプロパティの別名です。詳しくはvalueプロパティの節を参照してください。

2.4.33.1.6.value

valueプロパティは、FilePreviewモジュールの値として次のように利用します。

ファイル未選択で値もない状態にするにはnullをセットします。

 buddyscreen.items.FilePreview1.value = null

サーバーのfiles内のファイルのURL(filesからの相対URL)を値としてセットすることもできます。このときもファイル未選択の状態になります。

 buddyscreen.items.FilePreview1.value = "users/test.txt"

uploadアクションを実行してアップロードした後には、valueはアップロードされたファイルのURL(filesからの相対URL)になります。

 await buddyscreen.items.FilePreview1.upload("files/users")
 const url = buddyscreen.items.FILE1.value
2.4.33.2.アクション
2.4.33.2.1.readAsArrayBuffer

readAsArrayBufferアクションは、選択されたファイルをArrayBufferオブジェクトとして読み取ります。

 const data = await buddyscreen.items.FilePreview1.readAsArrayBuffer()
2.4.33.2.2.readAsBinaryString(非推奨)

readAsBinaryStringアクションは、選択されたファイルをバイナリデータとして読み取ります。

 const data = await buddyscreen.items.FilePreview1.readAsBinaryString()

readAsBinaryStringアクションの利用は推奨されません。代わりに前述のreadAsArrayBufferアクションを利用してください。

2.4.33.2.3.readAsDataURL

readAsDataURLアクションは、選択されたファイルをデータURLとして読み取ります。

 const url = await buddyscreen.items.FilePreview1.readAsDataURL()

データURLとは、内容を含んだ特殊な形式のURLです。例えば画像ファイルの内容を上記のようにしてデータURLとして読み取ると、そのURLを画像モジュールのsrcにセットすることで画像として表示することが可能です。

2.4.33.2.4.readAsText

readAsTextアクションは、選択されたファイルをテキストデータとして読み取ります。

 const txt = await buddyscreen.items.FilePreview1.readAsText({encoding: "Shift_JIS"})

引数には {encoding: "…"} としてテキストのエンコーディングを指定します。省略すると UTF8 になります。

2.4.33.2.5.upload

uploadアクションは、選択されたファイルをサーバにアップロードします。アップロードに成功すると、値はアップロードされたファイルのサーバー上でのURLになります。

 await buddyscreen.items.FilePreview1.upload("files/users")

引数には files/ で始まるアップロード先のディレクトリを指定します。

アップロードの結果として値にセットされるURLは、files からの相対URLになります。例えば test.txt を上記のように files/users にアップロードすると、値にセットされるのは users/test.txt のようになります。

2.4.33.3.イベント
2.4.33.3.1.click

clickイベントはFilePreviewモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.33.3.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.33.3.3.doubleclick

doubleclickイベントはFilePreviewモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.33.3.4.mousedown

mousedownイベントはFilePreviewモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.33.3.5.mouseup

mouseupイベントはFilePreviewモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.34.QRコード(プラグイン)

QRコードモジュールはQRコードを表示するためのスクリーンモジュールです。また、QRコード画像を作成したりQRコード画像から内容を読み取ったりする機能を提供します。

2.4.34.1.プロパティ
2.4.34.1.1.value

srcプロパティはQRコードモジュールに表示するQRコード(2次元バーコード)画像が表す内容を設定したり現在の内容を取得したりするのに用います。以下に例を示します。

 buddyscreen.items.QRCODE1.value = "$url"

valueプロパティの値が $url の場合はブラウザが現在表示しているページのURLが内容として設定されます。

※設計画面でのアイテム属性「値」と対応しています。

2.4.34.2.イベント
2.4.34.2.1.click

clickイベントはQRコードモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.34.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.34.2.3.doubleclick

doubleclickイベントはQRコードモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.34.2.4.keydown

keydownイベントはQRコードモジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.34.2.5.keypress

keypressイベントはQRコードモジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.34.2.6.keyup

keyupイベントはQRコードモジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.34.2.7.mousedown

mousedownイベントはQRコードモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.34.2.8.mouseup

mouseupイベントはQRコードモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.35.スタンプ(プラグイン)

スタンプモジュールは電子的にスタンプ(印鑑)を押す処理を実現するためのスクリーンモジュールです。スタンプモジュールを利用すると稟議のプロセスを容易にアプリとして実現できます。

2.4.35.1.プロパティ
2.4.35.1.1.disabled

disabledプロパティは、スタンプモジュールを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.STAMP1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.35.1.2.stampGroup

stampGroupプロパティは、スタンプグループの設定を変更したり現在の設定を取得したりするのに用います。

 buddyscreen.items.STAMP1.stampGroup = ""

stampGroupプロパティの値として $query を設定した場合は、クエリに渡されたデータに基づいて 名前=値&... の形式のグループ名を作ります。

※設計画面でのアイテム属性「スタンプグループ」と対応します。

2.4.35.1.3.stampList

stampListプロパティは、設計画面でのアイテム属性「スタンプリスト」で設定した内容が、{value: 値, symbol: 印影, color: 色} の形式のオブジェクトとしてセットされています。

2.4.35.1.4.userList

userListプロパティは、設計画面でのアイテム属性「ユーザリスト」で設定した内容が、{id: ユーザ名} の形式のオブジェクトとしてセットされています。

2.4.35.2.アクション
2.4.35.2.1.load

loadアクションはスタンプモジュールの状態をキーバリューストアから読み出します。

 await buddyscreen.items.STAMP1.load()
2.4.35.3.イベント
2.4.35.3.1.change

clickイベントはスタンプが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。またevtオブジェクトの以下のプロパティに情報が渡されます。

evt.stamp
押されたスタンプを表す、以下のプロパティから成るオブジェクト
user: ユーザ名
value: スタンプの値
timestamp: 押印日時(Dateオブジェクト)
evt.list
押印済みスタンプの一覧を表す、以下のプロパティから成るオブジェクトの配列
user: ユーザ名
value: スタンプの値
timestamp: 押印日時(Dateオブジェクト)
2.4.35.3.2.click

clickイベントはスタンプモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.35.3.3.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.35.3.4.doubleclick

doubleclickイベントはスタンプモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.35.3.5.keydown

keydownイベントはスタンプモジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.35.3.6.keypress

keypressイベントはスタンプモジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.35.3.7.keyup

keyupイベントはスタンプモジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.35.3.8.mousedown

mousedownイベントはスタンプモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.35.3.9.mouseup

mouseupイベントはスタンプモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.36.タブ(プラグイン)

タブモジュールはスクリーンコンテナの内容を対話的に切り替えるためのタブを設けるスクリーンモジュールです。

2.4.36.1.プロパティ
2.4.36.1.1.disabled

disabledプロパティは、タブモジュールを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.TAB1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.36.1.2.tab

tabプロパティはタブの表示内容をスクリプトで設定するのに用います。以下に例を示します。

 buddyscreen.items.TAB1.tab = ["tab1", "tab2", "tab3"]

この例では名前がそれぞれ「tab1」、「tab2」、「tab3」の3つのタブを作成します。

tabプロパティの値は次のいずれかです。

  1. 文字列の配列

  2. 以下のプロパティからなるオブジェクトの配列

display
表示名
value
style
スタイルオブジェクト
  1. 以下のカラムをもつDataSetオブジェクト
display
表示名
value
2.4.36.1.3.tabWidth

tabWidthプロパティはタブの表示幅を設定したり現在の表示幅を取得したりするのに用います。

tabWidthプロパティの値を読み出すとタブ幅の配列が返されます。

tabWidthプロパティに値をセットするとタブ幅を変更できます。有効な値は、タブ数と同じ長さの数値の配列、または数値です。

2.4.36.1.4.value

srcプロパティはタブモジュールが表示するタブを設定したり現在の設定を取得したりするのに用います。以下に例を示します。

 buddyscreen.items.TAB1.value = "tab1"

※設計画面でのアイテム属性「値」と対応しています。

2.4.36.2.イベント
2.4.36.2.1.change

clickイベントはタブが変更されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。またevtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
選択されたタブ(設計画面のアイテム属性「タブ」で設定した値)
2.4.36.2.2.click

clickイベントはタブモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.36.2.3.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.36.2.4.doubleclick

doubleclickイベントはタブモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.36.2.5.keyup

keydownイベントはタブモジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.36.2.6.keypress

keypressイベントはタブモジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.36.2.7.keyup

keyupイベントはタブモジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.36.2.8.mousedown

mousedownイベントはタブモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.36.2.9.mouseup

mouseupイベントはタブモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.37.ダイアログ入力(プラグイン)

ダイアログ入力モジュールは選択肢入力をダイアログで行なうためのスクリーンモジュールです。

2.4.37.1.プロパティ
2.4.37.1.1.autoLoad

autoLoadプロパティは、選択肢を自動で読み込むかどうかを設定します。以下に例を示します。

 buddyscreen.items.DIALOGINPUT1.autoLoad = true

autoLoadプロパティの値には真偽値を与えます。値が真のときは自動読み込みが有効になり、それ以外のときは無効になります。

※設計画面でのアイテム属性「選択肢の自動読込」と対応します。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.37.1.3.disabled

disabledプロパティは、ダイアログ入力モジュールを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.DIALOGINPUT1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.37.1.4.list

listプロパティは、ダイアログ入力モジュールで用いる選択肢のリストを設定したり現在の選択肢のリストを取得したりするのに用います。以下に例を示します。

 buddyscreen.items.DIALOGINPUT1.list = ["red", "green", "blue"]

listプロパティの値には文字列の配列、または {name: 名前, value: 値} の形式のオブジェクトの配列を与えます。

※設計画面でのアイテム属性「リスト」と対応します。

2.4.37.1.5.placeholder

placeholderプロパティは、ダイアログ入力モジュールに値が設定されていないときに表示する文字列を指定します。以下に例を示します。

 buddyscreen.items.DIALOGINPUT1.placeholder = "値を入力してください"

※設計画面でのアイテム属性「プレースホルダ」と対応しています。

2.4.37.1.6.readOnly

readOnlyプロパティは、ダイアログ入力モジュールを読み取り専用に設定します。以下に例を示します。

 buddyscreen.items.DIALOGINPUT1.readOnly = true

readOnlyプロパティの値には真偽値を与えます。値が真のときは読み取り専用になり、それ以外のときは読み取り専用の状態が解除されます。

※設計画面でのアイテム属性「読み取り専用」と対応しています。

2.4.37.1.7.value

valueプロパティは、ダイアログ入力モジュールの値を変更したり現在の値を取得したりするのに用います。

 buddyscreen.items.DIALOGINPUT1.value = ""

※設計画面でのアイテム属性「値」と対応しています。

2.4.37.2.イベント
2.4.37.2.1.click

clickイベントはダイアログ入力モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.37.2.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.37.2.3.doubleclick

doubleclickイベントはダイアログ入力モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.37.2.4.keydown

keydownイベントはダイアログ入力モジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.37.2.5.keypress

keypressイベントはダイアログ入力モジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.37.2.6.keyup

keyupイベントはダイアログ入力モジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.37.2.7.mousedown

mousedownイベントはダイアログ入力モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.37.2.8.mouseup

mouseupイベントはダイアログ入力モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.38.動作ボタンセット(プラグイン)

動作ボタンセットプラグインは、次の5つの動作ボタンがスクリーンモジュールに追加します。

  1. 移動ボタン
  2. Importボタン
  3. Exportボタン
  4. Reportボタン
  5. 通知ボタン

本項で説明するプロパティやイベントは特に限定がなければすべての動作ボタンに共通です。

2.4.38.1.プロパティ
2.4.38.1.1.disabled

disabledプロパティは、動作ボタンを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.モジュール名.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.38.1.2.targetReport(Reportボタンのみ)

targetReportプロパティは、Reportボタンで出力する対象となるレポートを設定します。以下に例を示します。

 buddyscreen.items.モジュール名.targetReport = "report1"

targetReportプロパティの値にはレポート名を文字列で与えます。

※設計画面でのアイテム属性「対象」と対応します。

2.4.38.1.3.targetScreen(移動ボタンのみ)

targetScreenプロパティは、移動ボタンで移動先となるスクリーンを設定します。以下に例を示します。

 buddyscreen.items.モジュール名.targetScreen = "screen1"

targetScreenプロパティの値にはスクリーン名を文字列で与えます。

※設計画面でのアイテム属性「対象」と対応します。

2.4.38.1.4.targetTable(Import/Exportボタンのみ)

targetTableプロパティは、Importボタンでインポート先となるテーブル、またはExportボタンでエクスポート元となるテーブル・ビューを設定します。以下に例を示します。

 buddyscreen.items.モジュール名.targetTable = "table1"

targetTableプロパティの値にはテーブル名またはビュー名を文字列で与えます。

※設計画面でのアイテム属性「対象」と対応します。

2.4.38.1.5.value

valueプロパティは、動作ボタンに表示されるラベルを変更したり現在の設定を取得したりするのに用います。

 buddyscreen.items.モジュール名.value = ""

※設計画面でのアイテム属性「値」と対応しています。

2.4.38.2.イベント
2.4.38.2.1.change(通知ボタンのみ)

clickイベントは通知ボタンで通知が送信されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。またevtオブジェクトのvalueプロパティに情報が渡されます。

evt.value.type
通知の種別。メールの場合は mail、ショートメッセージの場合は short_message
evt.value.list
通知の送信先。{id: ユーザー名} の形式のオブジェクトの配列
2.4.38.2.2.click

clickイベントは動作ボタンがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.38.2.3.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.38.2.4.doubleclick

doubleclickイベントは動作ボタンがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.38.2.5.keydown

keydownイベントは動作ボタン上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.38.2.6.keypress

keypressイベントは動作ボタン上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.38.2.7.keyup

keyupイベントは動作ボタン上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.38.2.8.mousedown

mousedownイベントは動作ボタン上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.38.2.9.mouseup

mouseupイベントは動作ボタン上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.39.多段選択(プラグイン)

多段選択プラグインは階層付きの選択肢入力を行うためのスクリーンモジュールです。

2.4.39.1.プロパティ

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.39.1.2.disabled

disabledプロパティは、多段選択モジュールを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.LAYERSELECT1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.39.1.3.layerList

layerListプロパティは、多段選択モジュールで用いる階層付きの選択肢を設定するのに用います。

layerListプロパティの設定例を以下に示します。

buddyscreen.items.LAYERSELECT1.layerList = [
    {
        name: "分類1",
        list: [
            {name: "商品A"},
            {name: "商品B"},
        ],
    },
    {
        name: "分類2", 
        list: [
            {name: "商品C"},
            {name: "商品D"},
            {name: "商品E"},
        ]
    },
]

layerListプロパティの値は {name: 名前, list: 配列} の形式のオブジェクトの配列です。listプロパティの値も同じ形式のオブジェクトの配列です。listプロパティは省略できます。

※設計画面でのアイテム属性「階層設定」と対応します。

2.4.39.1.4.placeholder

placeholderプロパティは、多段選択モジュールに値が設定されていないときに表示する文字列を指定します。以下に例を示します。

 buddyscreen.items.LAYERSELECT1.placeholder = "値を入力してください"

※設計画面でのアイテム属性「プレースホルダ」と対応しています。

2.4.39.1.5.value

valueプロパティは、多段選択モジュールの値を変更したり現在の値を取得したりするのに用います。

 buddyscreen.items.LAYERSELECT1.value = ""

※設計画面でのアイテム属性「値」と対応しています。

2.4.39.2.イベント
2.4.39.2.1.change

changeイベントは多段選択モジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
変化後の値
2.4.39.2.2.click

clickイベントは多段選択モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.39.2.3.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.39.2.4.doubleclick

doubleclickイベントは多段選択モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.39.2.5.keydown

keydownイベントは多段選択モジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.39.2.6.keypress

keypressイベントは多段選択モジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.39.2.7.keyup

keyupイベントは多段選択モジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.39.2.8.mousedown

mousedownイベントは多段選択モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.39.2.9.mouseup

mouseupイベントは多段選択モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.40.既読(プラグイン)

既読モジュールは既読管理を容易に実現するためのスクリーンモジュールです。

2.4.40.1.プロパティ
2.4.40.1.1.disabled

disabledプロパティは、既読ボタンを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.READLOG1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.40.1.2.logGroup

logGroupプロパティは、既読モジュールのログのグループを設定します。

 buddyscreen.items.LAYERSELECT1.logGroup = ""

logGroupプロパティの値にはグループ名を文字列で与えます。

logGroupプロパティの値として $query を設定した場合は、クエリに渡されたデータに基づいて 名前=値&... の形式のグループ名を作ります。

※設計画面でのアイテム属性「ロググループ」と対応しています。

2.4.40.1.3.logType

logTypeプロパティは、既読モジュールのログのとり方を設定します。

 buddyscreen.items.LAYERSELECT1.logType = "first"

logTypeプロパティの値には以下のいずれかを文字列で与えます。

first
最初のみ記録する
last
最後のみ記録する
all
すべて記録する

※設計画面でのアイテム属性「ログのとり方」と対応しています。

2.4.40.1.4.value

valueプロパティは、既読ボタンに表示するラベルを変更したり現在のラベルを取得したりするのに用います。

 buddyscreen.items.LAYERSELECT1.value = "既読"

※設計画面でのアイテム属性「値」と対応しています。

2.4.40.2.アクション
2.4.40.2.1.reload

reloadアクションは既読ログを再読み込みします。

 await buddyscreen.items.モジュール名.reload()
2.4.40.3.イベント
2.4.40.3.1.click

clickイベントは既読モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.40.3.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.40.3.3.doubleclick

doubleclickイベントは既読モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.40.3.4.keydown

keydownイベントは既読モジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.40.3.5.keypress

keypressイベントは既読モジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.40.3.6.keyup

keyupイベントは既読モジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.40.3.7.mousedown

mousedownイベントは既読モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.40.3.8.mouseup

mouseupイベントは既読モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.41.PDF閲覧(プラグイン)

PDF閲覧モジュールはPDFファイルの内容を表示するためのスクリーンモジュールです。

2.4.41.1.プロパティ
2.4.41.1.1.scale

scaleプロパティはPDF閲覧モジュールの表示倍率を指定します。

 buddyscreen.items.PDFVIEWER1.scale = 1.0

scaleプロパティには数値を与えます。

2.4.41.1.2.src

srcプロパティはPDF閲覧モジュールで表示するPDFファイルを指定します。

 buddyscreen.items.PDFVIEWER1.src = "files/sample.pdf"

srcプロパティにはPDFファイルのURLまたはバイナリデータを与えます。上記の例ではアプリのfiles配下のPDFファイルのURLを指定しています。

2.4.41.2.アクション
2.4.41.2.1.load

loadアクションはPDF閲覧モジュールで表示するPDFファイルを読み込みます。

 await buddyscreen.items.PDFVIEWER1.load(data)

data引数には読み込むPDFファイルを以下のいずれかの方法で与えます。

2.4.41.2.2.upload

uploadアクションはページを画像化してアップロードします。画像形式はPNGです。

 await buddyscreen.items.モジュール名.upload(path, options)

path引数にはアップロード先のパス名(files配下のPNG画像のファイル名)を与えます。options引数には以下のプロパティからなるオブジェクトを与えます(この引数は省略できます)。

page
ページ番号(最初のページが1)。省略すると1ページ目を画像化します
scale
スケール(省略可、デフォルト値は1)
2.4.41.3.イベント
2.4.41.3.1.click

clickイベントはPDF閲覧モジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.41.3.2.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.41.3.3.doubleclick

doubleclickイベントはPDF閲覧モジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.41.3.4.drop

dropイベントはドラッグアンドドロップ操作でPDF閲覧モジュールにファイルがドロップされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('dropk', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、以下のプロパティにドロップ操作についての情報が渡されます。

evt.event.files
ドロップされたファイルの一覧(HTML FileListオブジェクト)。
evt.files
ドロップされたファイルの一覧。以下のプロパティから成るオブジェクトの配列
name: 名前
size: サイズ。単位はバイト
type: MIMEタイプ(例:"application/pdf")
file: HTML Fileオブジェクト
async upload(dst): ファイルをアップロードする関数。dst引数(省略可)にはアップロード先のディレクトリ名を与える
2.4.41.3.5.mousedown

mousedownイベントはPDF閲覧モジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.41.3.6.mouseup

mouseupイベントはPDF閲覧モジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.42.画像付きリスト(プラグイン)

画像付きリストは、選択肢を画像付きで表示できるリストモジュールです。

2.4.42.1.プロパティ
2.4.42.1.1.autoLoad

autoLoadプロパティは、選択肢を自動で読み込むかどうかを設定します。以下に例を示します。

 buddyscreen.items.IMAGELIST1.autoLoad = true

autoLoadプロパティの値には真偽値を与えます。値が真のときは自動読み込みが有効になり、それ以外のときは無効になります。

※設計画面でのアイテム属性「選択肢の自動読込」と対応します。

dataLinkプロパティは、設計画面でのアイテム属性「データリンク」で設定した内容が、{table: テーブル名, column: カラム名} の形式のオブジェクトとしてセットされています。

2.4.42.1.3.disabled

disabledプロパティは、画像付きリストモジュールを操作できない無効状態に設定します。以下に例を示します。

 buddyscreen.items.IMAGELIST1.disabled = true

disabledプロパティの値には真偽値を与えます。値が真のときは無効状態になり、それ以外のときは無効状態が解除されます。

※設計画面でのアイテム属性「使用不可」と対応します。

2.4.42.1.4.images

imagesプロパティは、画像付きリストモジュールで表示する画像を設定します。次のいくつかの方法があります。

buddyscreen.items.IMAGELIST1.images = ["path/foo.png", "path/bar.png", ...]
buddyscreen.items.IMAGELIST1.images = (item)=>{ ... }
buddyscreen.items.IMAGELIST1.images = {foo: "path/foo.png", bar: "path/bar.png", ...}

いずれの場合も、画像はURL(ファイル名またはデータURL)で与えます。

また、imagesプロパティの値をnullまたはundefinedに設定すると画像を表示しなくなります。

2.4.42.1.5.imageSize

imageSizeプロパティは、画像付きリストモジュールで表示する画像の大きさを設定します。以下に例を示します。

 buddyscreen.items.IMAGELIST1.imageSize = 32

imageSizeプロパティの値は32、128、256のいずれかです。

※設計画面でのアイテム属性「画像サイズ」と対応します。

2.4.42.1.6.list

listプロパティは、画像付きリストの現在の選択肢を得たり、新たにセットしたりします。

設計画面でのアイテム属性「リスト」でセットした選択肢は、{name: 名称, value: 値} のオブジェクトの配列となります。

 const list = buddyscreen.items.IMAGELIST1.list

スクリーンのスクリプトでlistプロパティに選択をセットする場合には、次のいくつかの方法があります。

     buddyscreen.items.IMAGELIST1.list = [
       {"foo": 1}, 
       {"bar": 2}
     ]
     buddyscreen.items.IMAGELIST1.list = ["foo", "bar"]
     buddyscreen.items.IMAGELIST1.list = "午前0-11時"
     buddyscreen.items.IMAGELIST1.list = "都道府県"
     buddyscreen.items.IMAGELIST1.list = "日-土曜日"
     const data = await buddy.app.dbtable.table1.select()
     buddyscreen.items.IMAGELIST1.list = data.rename("ID", "value")

※オブジェクトの配列の場合と、データベースから読み出したDataSetの場合、nameで指定した値がnullまたはundefinedの場合は、valueで指定した値がnameに使われます。

2.4.42.1.7.placeholder

placeholderプロパティは、画像付きリストモジュールにデータが設定されていないときに表示する文字列を指定します。以下に例を示します。

 buddyscreen.items.IMAGELIST1.placeholder = "ここに画像付きリストが表示されます"

※設計画面でのアイテム属性「プレースホルダ」と対応しています。

2.4.42.1.8.selected

selectedプロパティは、画像付きリストで選択されている選択肢を取得します。このプロパティは読み取り専用です。

2.4.42.1.9.selectType

selectTypeプロパティは、画像付きリストの選択の仕方の、現在値を得たり新たな値をセットしたりします。

 buddyscreen.items.IMAGELIST1.selectType = "single"

セットする値は次のいずれかです。

none
選択なし
single
単一選択
multi
複数選択

※設計画面でのアイテム属性「選択タイプ」と対応します。

2.4.42.1.10.value

valueプロパティは、画像付きリストで選択されている選択肢の値を取得したり新しい値を設定したりするのに用います。

 buddyscreen.items.IMAGELIST1.value = 1
2.4.42.2.イベント
2.4.42.2.1.change

changeイベントは画像付きリストモジュールの値が変化したときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('change', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。また、evtオブジェクトの以下のプロパティに情報が渡されます。

evt.value
変化後の値
2.4.42.2.2.click

clickイベントは画像付きリストモジュールがクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('click', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.42.2.3.contextmenu

contextmenuイベントはコンテキストメニュー(Windowsでは右クリックメニュー)が開かれたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('contextmenu', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.42.2.4.doubleclick

doubleclickイベントは画像付きリストモジュールがダブルクリックされたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('doubleclick', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.42.2.5.keydown

keydownイベントは画像付きリストモジュール上でキーボードのキーが押し下げられたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keydown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.42.2.6.keypress

keypressイベントは画像付きリストモジュール上でキーボードのキーが押されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keypress', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.42.2.7.keyup

keyupイベントは画像付きリストモジュール上で押下されたキーボードのキーが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('keyup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.42.2.8.mousedown

mousedownイベントは画像付きリストモジュール上でマウスボタンが押下されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mousedown', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.4.42.2.9.mouseup

mouseupイベントは画像付きリストモジュール上で押されたマウスボタンが離されたときに生じます。イベントハンドラは次のように定義します。

 buddyscreen.items.モジュール名.on('mouseup', async(evt)=>{ ... })

イベントハンドラの引数evtにはイベントオブジェクトが渡されます。

2.5.イベントハンドラ

イベントは、実行中のアプリケーションで発生した事象についてスクリーンプログラムが受け取るメッセージ(通知)です。イベントは大きく分けて次の3種類があります。

  1. マウスボタンの押下やキーボード入力、画面サイズの変更などアプリ利用者の入力デバイスの操作によって発生するイベント(click,keypress,resizeなど)。

  2. スクリーンプログラムの起動や終了、画像ファイルの読み込みエラーなどの事象に応じて発生するイベント(load,unloadなど)。

  3. スクリーンプログラムから別のスクリーンプログラムへアプリケーション固有の事象の発生を通知するイベント(receiveなど)。

あるイベントが発生したという通知をスクリーンプログラムが受け取るには、そのイベントに呼応する名前のイベントハンドラを記述します。たとえばBUTTON1というモジュール名のボタンが押されたときに生じるclickイベントを受け取るには以下のようなイベントハンドラを追加します。

 buddyscreen.items.BUTTON1.on("click", async(evt)=>{
     // ここにclickイベントの処理内容を記述します。例:
     api.dialog.alert("BUTTON1が押されました。");
 })

2.6.イベントオブジェクト

イベントオブジェクトは、一部のイベントハンドラにevt引数として渡されてくるオブジェクトです。イベントオブジェクトがハンドラのevt引数に渡されてくるイベントには以下の3種類があります。

 ・キーボードイベント
 ・フォーカスイベント
 ・マウスイベント

2.6.1.共通プロパティ

イベントオブジェクトにはイベントの種類に関わらず以下の共通プロパティがあります。

event
イベントを詳細に記述する種々のプロパティから成るオブジェクト
index
垂直・水平配置BOXモジュールで繰返し回数の指定により内側のスクリーンモジュールが複数表示されている場合に、何番目のスクリーンモジュールに対して生じたイベントかを表す番号(最初が0)
name
イベント名
item
イベントの対象となるオブジェクト(スクリーンモジュール)

evt.itemオブジェクトの主なプロパティは以下の通りです。

ItemName
アイテム名
ItemOptions
アイテムの設定を表すオブジェクト
ItemStyle
アイテムのスタイルを表すオブジェクト
ItemType
アイテムの種類
ScreenItems
子のスクリーンアイテムの配列

evt.eventオブジェクトの内容は、発生したイベントによって異なります。

2.6.2.キーボードイベント

キーボードイベントには以下のイベントがあります。

 keydown
 keypress
 keyup

これらのイベントに対するeventオブジェクトは次のデータ型と名前のプロパティから成ります。

 boolean altKey
 number charCode
 boolean ctrlKey
 boolean getModifierState(key)
 string key
 number keyCode
 string locale
 number location
 boolean metaKey
 boolean repeat
 boolean shiftKey
 number which

2.6.3.フォーカスイベント

フォーカスイベントには以下のイベントがあります。

 blur
 focus

これらのイベントに対するeventオブジェクトは次のデータ型と名前のプロパティから成ります。

 DOMEventTarget relatedTarget

2.6.4.マウスイベント

マウスイベントには以下のイベントがあります。

 click
 contextmenu
 doubleclick
 mousedown
 mouseup

これらのイベントに対するeventオブジェクトは次のデータ型と名前のプロパティから成ります。

 boolean altKey
 number button
 number buttons
 number clientX
 number clientY
 boolean ctrlKey
 boolean getModifierState(key)
 boolean metaKey
 number pageX
 number pageY
 DOMEventTarget relatedTarget
 number screenX
 number screenY
 boolean shiftKey

3.プラグイン

4.サーバー機能設計

本項ではサーバー機能設計のAPIについて説明します。

4.1.概要

サーバー機能設計では、サーバー側で実行されるJavaScriptプログラム(以下、サーバー機能スクリプトと呼びます)を作成します。サーバー機能スクリプトは機能名で識別され、スクリーンプログラムや別のサーバー機能から呼び出されます。スクリーンプログラムはブラウザ(クライアント側)で動作するのに対して、サーバー機能スクリプトはサーバー上で動作します。

4.1.1.基本的な書き方

フレームワーク2では、白紙のサーバー機能を新規作成すると、次の内容があらかじめ用意されます。

result = async function(buddy){
	
	return 0
}

このresultにセットされた関数の中に必要な処理を記述し、結果をreturnで返せば、このサーバー機能の実行結果となります。(あらかじめ用意された内容では return 0 となっていますが、適宜書き換えてください。)
この関数の外に変数や関数の定義を書いて、それを呼び出しても構いません。

サーバー機能を実行するときに与えたオプション引数のオブジェクトは、options というこのサーバー機能の中で大域的な変数としてセットされています。

例えばオプション引数のaとbの値を乗算した結果を返すサーバー機能は次のようになります。

result = async function(buddy){
	return options.a * options.b
}

実用的なサーバー機能を作成するには、アプリの構成要素やBuddyの様々な機能を扱う必要がありますが、そのために上記のあらかじめ用意された関数の引数のbuddyや、大域的な変数として用意されたものがあります。それらについては以下で説明します。

4.1.2.呼び出し方法

スクリーンプログラムからサーバー機能を呼び出すには次のようにします。

const funcname = "function1"
const options = {…}
try {
    const result = await buddy.app.serverFunction[funcname].execute(options);
}catch(err){
    buddyscreen.dialog.error(err)
}

funcnameは実行するサーバー機能名です。
optionsは、サーバー機能に与えるオプション引数です。サーバー機能内でoptionsという大域変数を通じて参照できます。
サーバー機能でエラーが発生した場合は、catch(err)のブロックが実行されます。
実行結果resultは、次のプロパティからなるオブジェクトです。

result
サーバー機能の「result」にセットされた関数のreturn値
console
プロパティlogにサーバー機能でのconsole.log()の出力内容の配列がセットされている

つまり、サーバー機能のreturn値を得るにはresult.result、console.log()の出力内容配列を得るには result.console.log となります。

4.1.3.定義済み関数・変数

サーバー機能のスクリプト内では以下の名前があらかじめ定義されています。

result
この変数にセットされたasync関数が実行され、その結果がサーバー機能の結果となります。
buddy
アプリの設計情報(DBテーブル、DBビュー、スクリーン、レポート、サーバー機能)を表すオブジェクトやトランザクション処理、カスタムログなどの機能を提供するオブジェクト。
result変数にセットされたasync関数が実行されるときに、引数として渡されます。
options
サーバー機能実行時に渡されたオプション引数のオブジェクトがセットされます。
console
サーバー機能の実行中にメッセージを出力するための機能を提供するオブジェクト。
lib
サーバー機能のスクリプトの中で利用できるBuddyの機能を提供するモジュール群から成るオブジェクト。
api
アプリやサーバーの情報を得るなどの補助的な機能を提供するオブジェクト。

4.2.サーバー機能オブジェクト

本項ではサーバー機能オブジェクトについて説明します。

サーバー機能オブジェクトを得るにはbuddy.app.serverFunctionプロパティを利用します。詳しくは【buddy.app.serverFunctionプロパティ】を参照してください。

4.2.1.execute()

サーバー機能オブジェクトのexecuteメソッドはサーバー機能を実行します。

 execute(name, options)

name引数には実行するサーバー機能の名前を文字列で与えます。options引数にはサーバー機能に渡すオプションをオブジェクトで与えます。

以下に例を示します。この例ではfunction1という名前のサーバー機能を実行します。

 const name = "function1"; // サーバー機能名
 const options = {}; // オプションパラメータ
 try{
     const result = await buddy.app.serverFunction[name].execute(options)
 }catch(err){
     buddyscreen.dialog.error(err)
 }

4.3.buddyオブジェクト

4.3.1.config

buddy.configプロパティはアプリの設計情報を保持しています。buddy.configプロパティは以下のプロパティから成るオブジェクトです。

modelconf
DBテーブル・DBビューのモデル設計情報
outputconf
レポート設計情報
functionconf
サーバー機能設計情報
buddyconf
アプリ情報。以下のプロパティから成るオブジェクト
appName: アプリ名
target: アプリのビルド種別("debug"または"release")
user
ユーザー情報。以下のプロパティから成るオブジェクト
group: ユーザー種別。"admin"(運用管理・開発者)、"operator"(運用管理者)、"developer"(開発者)、"user"(一般)、"trial"(お試し)、"support"(サポート)のいずれか
logintime: ログイン時刻印
name: ユーザー表示名
user: ユーザー名
user_group: グループ名の配列

4.3.2.app

本項ではbuddy.appオブジェクトについて説明します。

4.3.2.1.dbtable

buddy.app.dbtableプロパティはDBテーブル設計で定義されたDBテーブルの集合を表すオブジェクトです。個々のDBテーブルオブジェクトは次のように名前で参照できます。

 const table1 = buddy.app.dbtable.table1
 
 const name = 'table2'
 const table2 = buddy.app.dbtable[name]

DBテーブルオブジェクトについては【モデルオブジェクト】を参照してください。

4.3.2.2.dbview

buddy.app.dbviewプロパティはDBビュー設計で定義されたDBビューの集合を表すオブジェクトです。個々のDBビューオブジェクトは次のように名前で参照できます。

 const view1 = buddy.app.dbview.view1
 
 const name = 'view2'
 const view2 = buddy.app.dbview[name]

DBビューオブジェクトについては【モデルオブジェクト】を参照してください。

4.3.2.3.findModel

buddy.app.findModel関数はDBテーブル・ビュー設計で定義されたDBテーブル・ビューオブジェクトを返します。

buddy.app.findModel(name)

name引数にはDBテーブル・ビューの名前を文字列で与えます。

DBテーブル・ビューオブジェクトについては【モデルオブジェクト】を参照してください。

4.3.2.4.report

buddy.app.reportプロパティはレポート設計で定義されたレポートの集合を表すオブジェクトです。個々のレポートオブジェクトは次のように名前で参照できます。

 const report1 = buddy.app.report.report1
 
 const name = 'report2'
 const report2 = buddy.app.report[name]
4.3.2.5.screen

buddy.app.screenプロパティはスクリーン設計で定義されたスクリーンの集合を表すオブジェクトです。個々のスクリーンオブジェクトは次のように名前で参照できます。

 const screen1 = buddy.app.screen.screen1
 
 const name = 'screen2'
 const screen2 = buddy.app.screen[name]
4.3.2.6.serverFunction

buddy.app.serverFunctionプロパティはサーバー機能設計で定義されたサーバー機能の集合を表すオブジェクトです。個々のサーバー機能オブジェクトは次のように名前で参照できます。

 const function1 = buddy.app.serverFunction.function1
 
 const name = 'function2'
 const function2 = buddy.app.serverFunction[name]

4.3.3.lib

本項ではbuddy.libオブジェクトについて説明します。

4.3.3.1.CustomLog

buddy.lib.CustomLogモジュールは、アプリのカスタムログファイルに時刻印を付けてメッセージを出力する機能を提供するモジュールです。

4.3.3.1.1.write()

buddy.lib.CustomLog.write関数はカスタムログにメッセージを出力します。

 buddy.lib.CustomLog.write(text)

text引数には出力するメッセージを文字列で与えます。

以下に例を示します。

 //カスタムログへ出力する
 const text = "文字列"
 await buddy.lib.CustomLog.write(text)

text引数に与えた文字列は、関数呼び出し時のタイムスタンプ、実行ユーザの名前と共に日付別のカスタムログファイルに書き込まれます。カスタムログファイルは開発画面のログ閲覧機能により閲覧できます。

4.3.3.2.DataSet

本項ではDataSetクラスについて説明します。

DataSetは、カラム名の配列と、各カラム名に対する値を格納したオブジェクト(レコード)の配列からなる複合的データを扱います。いわばDBテーブルのようなデータをメモリ上に保持する仕組みと言えます。

実際にDBテーブルやDBビューのselect()で得られるデータはDataSetオブジェクトであり、またinsert()やupdate()でDBテーブルに投入するデータもDataSetオブジェクトの形で与えることができます。
また、テーブルモジュールのdataプロパティにDataSetオブジェクトをセットして、カラム名をヘッダとした表としてデータを表示することができます。

DataSetは、以下で説明する様々なメソッドによって、一部分を取り出す、カラム名を変更する、他のDataSetと結合する、などの操作を施すことができます。

4.3.3.2.1.コンストラクタ

DataSetオブジェクトを作成するには、次のようにします。

    const dataset = new buddy.lib.DataSet([
        {name: "foo", amount: 100},
        {name: "bar", amount: 200},
    ])

次のようにして、カラム名の順序や表示名を指定することもできます。

    const dataset = new buddy.lib.DataSet({
    	fields: [
            {name: "name", display: "名称"},
            {name: "amount", display: "数量"},
        ],
        rows: [
            {name: "foo", amount: 100},
            {name: "bar", amount: 200},
    	]
    })

上記の例のdatasetをテーブルモジュールのdataプロパティにセットした場合、テーブルのヘッダにはdisplayで指定した表示名が使われます。

上記のようにしてコンストラクタでデータを与えてDataSetオブジェクトを作成することもできますが、データベースに格納されたデータの場合はDBテーブルやDBビューのselect()メソッドで読み出せばその結果はDataSetオブジェクトになっています。

4.3.3.2.2.average()

DataSetオブジェクトのaverage()メソッドは、指定されたカラムの値の全レコードにおける平均を返します。
カラムは配列で複数指定することもでき、その場合はそれぞれのカラムについての平均値の配列を返します。

  const avg = dataset.average("amount")
  const avgarray = dataset.average(["amount", "price"])
  const amountavg = avgarray[0]
  const priceavg = avgarray[1]

※別名として、avg()もaverage()と同じ機能です。

4.3.3.2.3.concat()

DataSetオブジェクトのconcat()メソッドは、レコードを追加します。
引数にはDataSetオブジェクトを与えるか、DataSetのコンストラクタで指定できるデータを与えるとDataSetオブジェクトに変換されて処理されます。引数に与えたDataSetオブジェクトの全レコードが、レコードに追加されます。
ただし、カラム情報は元のままになりますので、追加するDataSetオブジェクトはカラム構造が同じものにしなければなりません。

  dataset.concat(dataset2)
4.3.3.2.4.convert()

DataSetオブジェクトのconvert()メソッドは、指定したカラムの各レコードでの値について、指定した関数によって処理した結果に置き換えます。
関数は元の値を引数として、新しい値を返すようにします。

例えば amount カラムの値を全レコードについて 1 加算するには次のようにします。

  dataset.convert("amount", function(oldvalue){
    return oldvalue + 1
  })

※内容がコピーされて新たなDataSetオブジェクトが作られるものではなく、元のDataSetオブジェクトの内容が変化することに注意してください。

4.3.3.2.5.crossJoin()

DataSetオブジェクトのcrossJoin()メソッドは、別のDataSetオブジェクトを結合してできた新たなDataSetオブジェクトを返します。

結合の方法としては、全レコードのそれぞれに、指定した別DataSetの全レコードを結合します。カラムは両方をあわせたものになります。同名のカラムがあれば、そのカラムの値は指定した別DataSetの値になります。

結果のレコード数は、元のレコード数と指定した別DataSetのレコード数を掛け合わせたものになります。

  const dataset3 = dataset.crossJoin(dataset2)

上記の例で、例えばdatasetのレコードが次の内容で、

  [
    {foo: 1, bar: 10},
    {foo: 2, bar: 20},
  ]

dataset2のレコードが次の内容の場合、

  [
    {bar: 100, baz: 1000},
    {bar: 200, baz: 2000},
  ]

dataset3のレコードは次の内容になります。

  [
    {foo: 1, bar: 100, baz: 1000},
    {foo: 1, bar: 200, baz: 2000},
    {foo: 2, bar: 100, baz: 1000},
    {foo: 2, bar: 200, baz: 2000},
  ]

上述のように、同名のカラムがあると値が上書きされることになりますので、それでは困る場合は、あらかじめどちらかのDataSetについてrename()を用いてカラム名を変更しておくようにします。

4.3.3.2.6.filter()

DataSetオブジェクトのfilter()メソッドは、指定した条件を満たすレコードだけを抽出して新しいDataSetオブジェクトを作成して返します。

例えば、amountカラムの値が正のレコードのみを抽出するなら、次のようにします。

    const dataset2 = dataset.filter(function(row){return row.amount > 0})

filter()メソッドの引数には、レコードオブジェクト(カラム名をプロパティとしてその値がセットされている)を引数として条件に合致するときに真を返す関数を指定します。
上記の例では、rowがレコードオブジェクトで、row.amount > 0 という式がamountカラムの値が正の場合に真となります。

4.3.3.2.7.length()

DataSetオブジェクトのlength()メソッドは、レコード数を返します。

4.3.3.2.8.lookup()

DataSetオブジェクトのlookup()メソッドは、指定した条件に合致した最初のレコードを返します。
条件は、レコードオブジェクトを引数として、条件に合致するかどうかを真偽値で返す関数を指定します。
条件に合致したレコードがない場合はundefinedを返します。

例えば、amountカラムの値が負の最初のレコードを得たい場合は、次のようにします。

  const foundrecord = dataset.lookup(function(record){
    return record.amount < 0
  })

※条件に合致した全レコードを得たい場合は、find()メソッドを使用してください。

4.3.3.2.9.leftOuterJoin()

DataSetオブジェクトのleftOuterJoin()メソッドは、別のDataSetオブジェクトを結合してできた新たなDataSetオブジェクトを返します。

結合の方法としては、元の全レコードに対して、on()で指定したカラムの値が合致する別DataSetのレコードがあればそれを結合します。
カラムは両方のカラムをあわせたものになります。
結合の際に同名のカラムがあれば、そのカラムの値は別DataSetの値になります。

  const dataset3 = dataset.leftOuterJoin(dataset2).on('foo', 'baz')

上の例ではdatasetのfooカラムの値と、dataset2のbazカラムの値が同じレコードを結合しています。該当するdataset2のレコードがない場合はdatasetの元のレコードがそのまま結果のレコードになります。

例えば、datasetのレコードが次の内容で、

  [
    {foo: 1, bar: 10},
    {foo: 2, bar: 20},
  ]

dataset2のレコードが次の内容の場合、

  [
    {baz: 1, xyz: 100},
    {baz: 1, xyz: 200},
    {baz: 3, xyz: 300},
  ]

結果のdataset3のレコードは次の内容になります。

  [
    {foo: 1, bar: 10, baz: 1, xyz: 100},
    {foo: 1, bar: 10, baz: 1, xyz: 200},
    {foo: 2, bar: 20},
  ]

上述のように、同名のカラムがあると値が上書きされることになりますので、それでは困る場合は、あらかじめどちらかのDataSetについてrename()を用いてカラム名を変更しておくようにします。

4.3.3.2.10.remove()

DataSetオブジェクトのremove()メソッドは、指定のカラムを除いたそれ以外のカラムをコピーした新たなDataSetオブジェクトを作成して返します。

例えば、name,amount,memoの三つのカラムを持つDataSetオブジェクトdatasetがあったとして、次のようにするとamount以外のカラムをコピーしたDataSetオブジェクトdataset2を作ることができます。

    const dataset2 = dataset.remove("amount")
4.3.3.2.11.rename()

DataSetオブジェクトのrename()メソッドは、カラム名を変更しながらコピーした新たなDataSetオブジェクトを作成して返します。

例えば、nameとamountのカラムを持つDataSetオブジェクトdatasetをコピーして、カラム名amountをvalueに変更したい場合、次のようにします。

  const dataset2 = dataset.rename("amount", "value")

dataset2はnameとvalueのカラムを持つDataSetオブジェクトになります。

また引数に、元のカラム名を引数として変更後のカラム名を返す関数を指定することもできます。

  const dataset2 = dataset.rename(function(old){
    return "set1." + old
  })

上の例は、すべてのカラム名の前に「set1.」と付けます。

4.3.3.2.12.sort()

DataSetオブジェクトのsort()メソッドは、レコードの並び順を変更します。
引数に、並び順を決める関数を指定します。並び順を決める関数は比較するレコードオブジェクトをa, b二つの引数として、aが先の場合は負、bが先の場合は正、同順の場合は0を返します。

例えば、amountカラムの値が大きいものを先にする並び順としたい場合は、次のようにします。

  const dataset2 = dataset.sort(function(a, b){
    return b.amount - a.amount
  })
4.3.3.2.13.subset()

DataSetオブジェクトのsubset()メソッドは、指定したカラム名のカラムだけを抜き出した新たなDataSetオブジェクトを作成して返します。

例えば、name,amount,memoの三つのカラムを持つDataSetオブジェクトdatasetがあったとして、次のようにするとnameとamountをコピーしたDataSetオブジェクトdataset2を作ることができます。

    const dataset2 = dataset.subset("name", "amount")
4.3.3.2.14.sum()

DataSetオブジェクトのsum()メソッドは、指定されたカラムの値の全レコードにおける合計を返します。
カラムは配列で複数指定することもでき、その場合はそれぞれのカラムについての合計値の配列を返します。

  const sum = dataset.sum("amount")
  const sumarray = dataset.average(["amount", "price"])
  const amountsum = sumarray[0]
  const pricesum = sumarray[1]
4.3.3.3.Mail

本項ではbuddy.lib.Mailクラスについて説明します。

//メール送信
const mail = new buddy.lib.Mail({
"from": "", //送信元(youradress@example.com)
"subject": "", //メールタイトル
"body": "", //送信する本文
"to": "", //送信先
//"cc": "",
//"bcc": "",
})
try{
await mail.send()
}catch(err){
//エラー時の処理
}

4.3.3.3.1.コンストラクタ

buddy.lib.Mailクラスは次のようにインスタンスを作成して利用します。

const mail = new buddy.lib.Mail({
"from": "送信元アドレス",
"subject": "メールタイトル",
"body": "送信する本文",
"to": "送信先アドレス",
"cc": "CC送信先アドレス",
"bcc": "BCC送信先アドレス",
})

4.3.3.3.2.send()

sendメソッドはメールを送信します。

send()

以下に例を示します。

const mail = new buddy.lib.Mail({
    "from": "送信元アドレス",
    "subject": "メールタイトル",
    "body": "送信する本文",
    "to": "送信先アドレス",
    // "cc": "CC送信先アドレス",
    // "bcc": "BCC送信先アドレス",
})
try{	
    await mail.send()
}catch(err){
	//エラー時の処理
}
4.3.3.4.Transaction

buddy.lib.Transaction関数はDBテーブル・ビューの操作のトランザクション処理を行うための仕組みを提供します。

 buddy.lib.Transaction(options, callback)

options引数にはオプションオブジェクトを与えます。この引数は現在は使われていないので空のオブジェクトを与えてください。callback引数にはトランザクション処理の内容を記述したコールバック関数を与えます。

コールバック関数の引数にはbuddyオブジェクトが渡されます。このbuddyオブジェクトを用いてデータベース操作を行うとトランザクション内の処理として扱われます。

コールバック関数は真偽値を返さなければなりません。真を返すと実行したデータベース操作を確定します。それ以外を返すと実行済みのデータベース操作を巻き戻します。

以下に例を示します。

 await buddy.lib.Transaction({}, async (buddy)=>{
     // 上の引数のbuddyを用いてデータベース操作をおこなうと、トランザクション処理となります
     ....
     // trueを返すと処理を確定します
     // falseを返すと全体を巻き戻します
     return true    	
})

4.4.consoleオブジェクト

consoleオブジェクトはサーバー機能のスクリプトの中であらかじめ定義されています。このオブジェクトはサーバー機能の実行中にメッセージを出力するための機能を提供します。

4.4.1.log()

console.log関数はサーバー機能の実行中にメッセージを出力します。

console.log(output)

output引数には出力する文字列を与えます。出力内容はサーバー機能の実行結果の一部としてクライアント側に返されます。

4.5.libオブジェクト

libオブジェクトはサーバー機能のスクリプトの中であらかじめ定義されています。このオブジェクトはサーバー機能のスクリプトで利用できるBuddyの機能を提供するモジュール群から成るオブジェクトです。

4.5.1.BuddyAgent

lib.BuddyAgentモジュールはHTTP GET/POSTメソッドによる外部サーバーとの通信の機能を提供します。

外部サーバーにはBuddyの運用管理メニューの通信設定で許可されたアドレスだけが使用できます。デフォルトではすべてのアドレスが拒否されます。

4.5.1.1.get()

get関数はHTTP GETメソッドで外部サーバーにデータを送信します。

 await lib.BuddyAgent.get(url, query)

url引数には外部サーバーのアドレス(URL)を文字列で与えます。URLのホスト部分にはBuddyの運用管理メニューの通信設定で許可したアドレスのみが指定できます。query引数には送信するクエリを {名前: 値, ...} の形式のオブジェクトで与えます。

4.5.1.2.post()

post関数はHTTP POSTメソッドで外部サーバーにデータを送信します。

 await lib.BuddyAgent.post(url, data)

url引数には外部サーバーのアドレス(URL)を文字列で与えます。URLのホスト部分にはBuddyの運用管理メニューの通信設定で許可したアドレスのみが指定できます。data引数には送信するデータ {プロパティ名: プロパティ値, ...} の形式のオブジェクトで与えます。プロパティ値がBuddyFileオブジェクトのときはファイルの内容が添付ファイルとして送信されます。

4.5.2.BuddyFile

lib.BuddyFileクラスはアプリケーションのfilesディレクトリ配下のファイルおよびディレクトリを操作するための仕組みを提供します。

4.5.2.1.コンストラクタ

BuddyFileオブジェクトを作成するにはJavaScriptのnew演算子を用います。

 new lib.BuddyFile(filePath, options)

引数:

filePath
ファイルまたはディレクトリへのパス名。
options
オプション。

filePath引数には操作対象となるファイルまたはディレクトリをアプリケーションのfilesディレクトリからの相対パス名で与えます。options引数には以下のプロパティから成るオブジェクトを与えます。

temporary
trueを与えると一時ファイルを作成します。filePath引数に与えたパス名は無視され、一時ファイル名が自動的に与えられます。作成された一時ファイルはサーバー機能スクリプトの実行完了時に自動的に削除されます。
4.5.2.2.メソッド

本項ではBuddyFileオブジェクトのメソッドについて説明します。

4.5.2.2.1.append

appendメソッドはデータをファイルに追加します。ファイルが存在しない場合は新しく作成されます。

 await append(data, options)

data引数にはファイルに書き込むデータを文字列で与えます。options引数には以下のプロパティから成るオブジェクトを与えます。

encode
data引数に与えた文字列の文字コード(省略可)。
4.5.2.2.2.appendChild

appendChildメソッドはBuddyFileオブジェクトのパス名からの相対パスを表す新しいBuddyFileオブジェクトを返します。

 appendChild(name)

name引数にはBuddyFileオブジェクトのパス名からの相対パスを文字列で与えます。以下に例を示します。

 var importDir = new BuddyFile('import', {});
 var importFile = importDir.appendChild('table1.csv');

このとき変数importFileの値はimport/table1.csvを表すBuddyFileオブジェクトです。

4.5.2.2.3.basename

basenameメソッドはBuddyFileオブジェクトのパス名のうちファイル名を返します。

 basename(ext)

ext引数には拡張子を文字列で与えます(省略可)。ファイル名の拡張子と一致した場合には拡張子のないファイル名が返されます。

4.5.2.2.4.createReadStream

createReadStreamメソッドはファイルからの読み込みストリームを作成します。

 createReadStream(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

encode
読み込みストリームの文字コード(省略可)。
parse
ファイル形式(省略可)。文字列"csv"を与えるとファイルをCSV形式と見なして解析します。
4.5.2.2.5.createWriteStream

createWriteStreamメソッドはファイルへの書き込みストリームを作成します。

 createWriteStream(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

encode
書き込みストリームの文字コード。
4.5.2.2.6.extname

extnameメソッドはBuddyFileオブジェクトのパス名のうちファイル名の拡張子を返します。

 extname()
4.5.2.2.7.getFilePath

getFilePathメソッドはBuddyFileオブジェクトのパス名を返します。

 getFilePath()
4.5.2.2.8.mkdir

mkdirメソッドはディレクトリを作成します。

 await mkdir(options)

options引数は今のところ使用しません。

4.5.2.2.9.move

moveメソッドはファイルまたはディレクトリを移動します。

 await move(dst, options)

dst引数には移動後の新しいパス名を与えます。options引数は今のところ使用しません。移動が成功すると、存在しないパス名を指すBuddyFileオブジェクトになります。

4.5.2.2.10.pdf2image

pdf2imageメソッドはPDFファイルを画像ファイルに変換します。

 await pdf2image(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

type
画像ファイル形式。"png"(PNG形式)または"jpeg"(JPEG形式)のいずれか(省略するとPNG形式)
pages
画像化するページ数(省略すると全部)
outputdir
出力ディレクトリ(省略すると元のPDFファイルと同じディレクトリ)
4.5.2.2.11.read

readメソッドはファイルからデータを読み込みます。

 await read(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

encode
ファイルの文字コード(省略可)。
parse
ファイル形式(省略可)。文字列"csv"を与えるとファイルをCSV形式と見なして解析します。文字列"xlsx"を与えるとXLSXファイルとして開き、Workbookオブジェクトを返します(【lib.Workbook】の節を参照)。

readメソッドは読み込んだファイルの内容を返します。

4.5.2.2.12.readdir

readdirメソッドはディレクトリ内のファイルおよびサブディレクトリの一覧を返します。

 await readdir(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

encode
ファイル名の文字コード(省略可)。

readdirメソッドはファイルおよびサブディレクトリを表すBuddyFileオブジェクトの配列を返します。

4.5.2.2.13.remove

removeメソッドはファイルまたはディレクトリを削除します。

 await remove(options)

options引数は今のところ使用しません。削除が成功すると、存在しないパス名を指すBuddyFileオブジェクトになります。

4.5.2.2.14.rename

renameメソッドはファイルまたはディレクトリの名前を変更します。

 await rename(dst, options)

dst引数には新しい名前を与えます。options引数は今のところ使用しません。名前の変更が成功すると、存在しないパス名を指すBuddyFileオブジェクトになります。

renameメソッドはmoveメソッドの別名です。dstに別のディレクトリ配下のパス名を与えると、BuddyFileオブジェクトが表すファイルまたはディレクトリをそのディレクトリ配下に移動します。

4.5.2.2.15.stat

statメソッドはパスの状態を取得します。

 await stat()

statメソッドはパスの状態を表すオブジェクト(Node.jsのfs.Statsオブジェクト)を返します。fs.Statsオブジェクトはサーバーの実行環境によって詳細が異なります。主なプロパティを以下に示します。

atime
最終アクセス日時(Dateオブジェクト)
ctime
最終状態変更日時(Dateオブジェクト)
mtime
最終修正日時(Dateオブジェクト)
size
ファイルサイズ(バイト数)

fs.Statsオブジェクトの例を以下に示します。

    {
        dev: 64768,
        mode: 16895,
        nlink: 2,
        uid: 0,
        gid: 0,
        rdev: 0,
        blksize: 4096,
        ino: 3038506,
        size: 4096,
        blocks: 8,
        atime: "2017-10-10T14:25:58.910Z",
        mtime: "2017-10-10T14:25:58.909Z",
        ctime: "2017-10-10T14:25:58.909Z",
        birthtime: "2017-10-10T14:25:58.909Z"
    }

fs.Statsオブジェクトの詳細については下記URLのNode.jsドキュメントを参照してください。

 https://nodejs.org/api/fs.html#fs_class_fs_stats
4.5.2.2.16.unzip

unzipメソッドはZIPファイルの内容を展開します。

await unzip(unzipDir, options)

unzipDir引数には展開先のディレクトリを表すBuddyFileオブジェクトを与えます。options引数には以下のプロパティから成るオブジェクトを与えます。

encode
ファイル名の文字コード(省略可)。省略した場合は文字コードを自動検出します。文字コードを変更しない場合は"through"を指定します。
4.5.2.2.17.write

writeメソッドはデータをファイルに書き込みます。ファイルが存在しない場合は新しく作成されます。

 await write(data, options)

data引数にはファイルに書き込むデータを文字列で与えます。options引数には以下のプロパティから成るオブジェクトを与えます。

encode
data引数に与えた文字列の文字コード(省略可)。
4.5.2.2.18.zip

zipメソッドはBuddyFileオブジェクトが表すファイルまたはディレクトリを内容とするZIPファイルを作成します。既にZIPファイルが存在する場合は、そのZIPファイルの内容を置き換えます。

 await zip(zipFile, options)

zipFile引数にはZIPファイルを表すBuddyFileオブジェクトを与えます。options引数には以下のプロパティから成るオブジェクトを与えます。

omitDirectory
BuddyFileオブジェクトがディレクトリを表す場合に、そのディレクトリ名をzipファイルに含めるかどうかを真偽値で指定します。trueなら含めます。falseなら含めません(省略可。デフォルト値はtrue)。

4.5.3.FileManager

lib.FileManagerモジュールは、サーバー機能スクリプトからファイルマネージャを利用するためのAPIを提供するモジュールです。アプリケーションのfilesディレクトリ配下のファイルは固有のURLを持ち、ファイルが存在する間は常にダウンロード可能です。一方、ファイルマネージャは有効期限のあるURLをファイルに与えて一時的にダウンロードを許す仕組みを提供します。有効期限が過ぎるとファイルは自動的に削除され、ファイルに付与されたURLは無効になります。ファイルマネージャの管理下にあるファイルを「一時ファイル」と呼びます。

4.5.3.1.関数
4.5.3.1.1.getURL

getURL関数は一時ファイルの識別子(ハッシュ)からそのファイルをダウンロードできるURLを得ます。

 const url = lib.FileManager.getURL(hash)

hash引数には一時ファイルの識別子となるハッシュ値を文字列で与えます。

4.5.3.1.2.register

register関数はBuddyFileオブジェクトが表すファイルをファイルマネージャに登録します。

 const hash = await lib.FileManager.register(file, options)

file引数には登録対象となるファイルを表すBuddyFileオブジェクトを与えます。options引数には以下のプロパティから成るオブジェクトを与えます。

auth
権限情報オブジェクト(省略可)。省略すると同じアプリケーションからのみアクセスを許可します。
fileName
ファイル名(省略可)。省略すると元のファイル名を用います。
limit
有効期限(省略可)。ファイルを削除する日時をDateオブジェクトで与えます。省略すると登録から1時間有効となります。
tags
タグオブジェクト。現在はdownloadタグ(デフォルト値true)が指定できます。trueならダウンロードを強制します。falseならブラウザの設定に従います。

register関数は登録ファイルに割り当てられたハッシュ値を文字列で返します。ここで得られたハッシュ値は上述のgetURL関数でファイルのダウンロードURLを得るために用います。

4.5.4.Workbook

lib.WorkbookクラスはExcelワークブックを読み書きするためのAPIを提供するクラスです。

WorkbookクラスはNode.jsのexceljsモジュールに基づいています。exceljsの詳細については下記URLのドキュメントを参照してください。

 https://www.npmjs.com/package/exceljs
4.5.4.1.ワークブック

Workbookオブジェクトを作成するにはJavaScriptのnew演算子を用います。

 var workbook = new lib.Workbook();

既存のXLSXファイルを読み込んでWorkbookオブジェクトを作成するには、次の例のようにBuddyFileオブジェクトのread()メソッドの第1引数に{parse: "xlsx"}オプションを与えます。

 var xlsx = new BuddyFile(&quot;import/test.xlsx&quot;);
 xlsx.read({parse: &quot;xlsx&quot;}, function(err, workbook){
   // ここでworkbookはWorkbookオブジェクト
 });

WorkbookオブジェクトをXLSX形式のファイルとして保存するには、次の例のようにBuddyFileオブジェクトのwrite()メソッドの第1引数にWorkbookオブジェクトを与えます。

 var xlsx = new BuddyFile(&quot;output/test.xlsx&quot;);
 xlsx.write(workbook, function(err){
   // ...
 });
4.5.4.2.ワークシート

ワークブックに新しいワークシートを追加するには次のようにします。

 var sheet = workbook.addWorksheet('My Sheet');

ワークブックからワークシートを得るには次の例のようにgetWorksheet()を用います。引数には名前または番号(先頭が1)を与えます。

 // 名前で探す
 var worksheet = workbook.getWorksheet('My Sheet');
 // 番号で探す
 var worksheet = workbook.getWorksheet(1);
4.5.4.3.カラム

ワークシートのカラムにカラム名(key)、表示名(header)、幅(width)などを設定するには次の例のようにワークシートのcolumnsプロパティを変更します。

 worksheet.columns = [
   { key: 'id', header: 'ID', width: 10 },
   { key: 'name', header: '名前', width: 30 },
   { key: 'dob', header: '生年月日', width: 20 }
 ];

ワークシートからカラムを得るには次の例のようにgetColumn()を用います。引数にはカラム名、英文字、番号(先頭が1)を与えます。

 var idCol = worksheet.getColumn('id');
 var nameCol = worksheet.getColumn('B');
 var dobCol = worksheet.getColumn(3);

カラムのプロパティを変えるには次のようにします。

 nameCol.key = 'name';
 nameCol.header = '氏名';
 nameCol.width = 15;

カラムの各セルについて同じ処理を繰り返し実行するには次の例のようにeachCell()を用います。

 nameCol.eachCell(function(cell, rowNumber) {
   // cellはセルオブジェクト、rowNumberは行番号
 });
4.5.4.4.行

ワークシートに新しい行を追加するには次の例のようにaddRow()を用います。引数にはカラム名をプロパティとするオブジェクトを与えます。ここで指定するカラム名(id、nameなど)は、前節に示した方法で予め定義しておく必要があります。

 worksheet.addRow({id: 1, name: '近藤勇', dob: new Date(1834,11,9)});
 worksheet.addRow({id: 2, name: '土方歳三', dob: new Date(1835,5,31)});

addRow()の引数には配列を与えることもできます。この場合、値はカラムAから順に格納されます。

 worksheet.addRow([3, '斎藤一', new Date(1844,2,18)]);

ワークシートから行を得るには次の例のようにgetRow()を用います。引数には番号(最初が1)を与えます。

 var row = worksheet.getRow(5);

ワークシートの最後の編集可能な行を得るには次の例のようにlastRowプロパティを用います(編集可能な行がないときはundefined)。

 var row = worksheet.lastRow;

行の高さを設定するには次の例のようにheightプロパティを変更します。

 row.height = 42.5;

行の値を一括して変更するには次の例のようにvaluesプロパティを用います。

 row.values = { id: 3, name: '斎藤一', dob: new Date(1844,2,18) };

行のセルを得るには次の例のようにgetCell()を用いて名前、英文字、番号(先頭が1)を与えます。

 row.getCell('id').value = 3;
 row.getCell('B').value = '斎藤一';
 row.getCell(3).value = new Date(1844,2,18);

ワークシートの各行について同じ処理を繰り返し実行するには次の例のようにeachRow()を用います。

 worksheet.eachRow(function(row, rowNumber) {
   // rowは行オブジェクト、rowNumberは行番号
   console.log('Row ' + rowNumber + ' = ' + JSON.stringify(row.values));
 });
4.5.4.5.セル

ワークシートからセルを得るには次の例のようにgetCell()を用います。

 worksheet.getCell('C3').value = new Date(1844,2,18);

セルを結合するには次の例のようにmergeCells()を用います。

 worksheet.mergeCells('A4:B5');

セルの結合を解除するには次の例のようにunMergeCells()を用います。

 worksheet.unMergeCells('A4');
4.5.4.6.画像

ワークシートに画像を表示するには、Workbook.addImage()とWorksheet.addImage()を用いて次のようにします。

const wb = new lib.Workbook();
const ws = wb.addWorksheet('test');
const imgfile = new lib.BuddyFile('images/test.jpg');
const imgid = wb.addImage(imgfile);
ws.addImage(imgid, {
	tl: {col: 1, row: 1},
	br: {col: 2, row: 4}
});

Worrkbook.addImage()は、引数に表示する画像ファイルのBuddyFileオブジェクトを渡すと、画像IDが得られます。

Worksheet.addImage()は、第一引数に画像IDを指定し、第二引数で表示位置を指定します。(上記の例では、tlで左上のセル、brで右下のセルを指定しています。)表示位置の指定方法はいくつあります。exceljsのドキュメントを参照してください。

4.5.4.7.スタイル

本節ではセルのスタイルを変更するためのプロパティについて述べます。

4.5.4.7.1.書式設定

セルの書式設定を変更するには次のようにnumFmtプロパティを設定します。

 worksheet.getCell('A1').numFmt = '0.00%';
4.5.4.7.2.フォント

セルのフォントを変更するには次のようにfontプロパティを設定します。

 worksheet.getCell('A1').font = { name: 'Arial', size: 12 };

セルのfontプロパティには次のプロパティから成るオブジェクトを与えます。

name
フォント名('Arial'など)
color
色。例えば {argb: 'FFFF0000'} のようにargbプロパティから成るオブジェクトを与えます。
bold
太字(trueまたはfalse)
italic
斜体(trueまたはfalse)
underline
下線(true, false, 'none', 'single', 'double', 'singleAccounting', 'doubleAccounting'のいずれか)
strike
取り消し線(trueまたはfalse)
4.5.4.7.3.配置

セルの配置を変更するには次のようにalignmentプロパティを設定します。

 worksheet.getCell('A1').alignment = { vertical: 'top', horizontal: 'left' };

セルのalignmentプロパティには次のプロパティから成るオブジェクトを与えます。

horizontal
横位置('left', 'center', 'right', 'fill', 'justify', 'centerContinuous', 'distributed'のいずれか)
vertical
縦位置('top', 'middle', 'bottom', 'distributed', 'justify'のいずれか)
wrapText
折り返し(trueまたはfalse)
indent
字下げ(整数値)
readingOrder
文字の方向('rtl'または'ltr')
textRotation
回転角度(-90から90までの数値、または'vertical')
4.5.4.7.4.枠線

セルの枠線を変更するには次のようにborderプロパティを設定します。

 worksheet.getCell('A1').border = {
   top: {style: 'thin'},
   bottom: {style: 'thin'},
   left: {style: 'thin'},
   right: {style: 'thin'}
 };

セルのborderプロパティには次のプロパティから成るオブジェクトを与えます。

top
上の枠線スタイル
bottom
下の枠線スタイル
left
左の枠線スタイル
right
右の枠線スタイル

枠線スタイルにはstyleプロパティから成るオブジェクトを与えます。styleプロパティの有効な値は次の通りです。

style
'dashDot', 'dashDotDot', 'dotted', 'double', 'hair', 'medium', 'mediumDashDot', 'mediumDashDotDot', 'mediumDashed', 'slantDashDot', 'thick', 'thin'のいずれか。
4.5.4.7.5.塗りつぶし

セルの塗りつぶしを変更するには次の例のようにfillプロパティを設定します。

 // パターン(単色)
 worksheet.getCell('A1').fill = {
   type: 'pattern',
   pattern: 'solid',
   fgColor: {argb: 'FFFFFF00'}
 };
 // パターン
 worksheet.getCell('A2').fill = {
   type: 'pattern',
   pattern: 'darkHorizontal',
   fgColor: {argb: 'FFFFFF00'},
   bgColor: {argb: 'FF000000'}
 };
 // グラデーション
 worksheet.getCell('A3').fill = {
   type: 'gradient',
   gradient: 'angle',
   degree: 0,
   stops: [
     {position: 0.0, color: {argb: 'FFFF0000'}},
     {position: 0.5, color: {argb: 'FFFFFF00'}},
     {position: 1.0, color: {argb: 'FF00FF00'}}
   ]
 };

パターンで塗りつぶすには、セルのfillプロパティに以下のプロパティから成るオブジェクトを与えます。

type
文字列'pattern'(必須)。
pattern
パターン名(必須)。'darkDown', 'darkGray', 'darkGrid', 'darkHorizontal', 'darkTrellis', 'darkUp', 'darkVertical', 'darkVertical', 'gray0625', 'gray125', 'lightDown', 'lightGray', 'lightGrid', 'lightGrid', 'lightHorizontal', 'lightTrellis', 'lightUp', 'lightVertical', 'mediumGray', 'none', 'solid'のいずれか。
fgColor
前景色(省略可)。デフォルトは'black'。
bgColor
背景色(省略可)。デフォルトは'white'。

グラデーションで塗りつぶすには、セルのfillプロパティに以下のプロパティから成るオブジェクトを与えます。

type
文字列'gradient'(必須)。
gradient
グラデーションタイプ(必須)。'angle'または'path'。
degree
グラデーション方向の角度('angle'タイプの場合に必須)。0なら左から右へのグラデーション、1から359の値なら時計回りにグラデーション方向を回転。
center
パスの始点の相対座標('path'タイプの場合に必須)。0から1までの相対値でパスの始点を指定。
stops
グラデーションを構成する色の配列(必須)。配列の要素は次のプロパティから成るオブジェクト。
position
位置。始点を0、終点を1とする相対位置で指定。
color … 色。

4.5.5.XPDFJ

lib.XPDFJクラスは、テキストや画像を含むPDFファイルをサーバー機能のスクリプトで生成するための仕組みを提供するクラスです。本クラスの機能の概要は次の通りです。

4.5.5.1.コンストラクタ

XPDFJオブジェクトを作成するにはJavaScriptのnew演算子を用います。

 new lib.XPDFJ(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

src
ソースオブジェクトまたはXMLテキスト(省略可)
ydir
y軸(上下方向)をどちら向きとするか("up"または"down"、省略すると"up")

ソースオブジェクトの作成方法は後述します。srcを省略した場合、ソースは後述のXPDFJクラスのメソッドで組み立てます。ydirによる指定は後述のメソッドにおいてy(縦位置指定)とh(図形の縦送り)に影響します(srcによるソースには影響しません)。

4.5.5.2.メソッド

本節ではXPDFJクラスのメソッドについて述べます。各メソッドの呼び出しはXPDFJオブジェクト自身を返すので、次のように書くことが可能です。

 var xpdfj = new lib.XPDFJ(…);
 xpdfj.newDoc(…).addText(…).addLine(…).…
4.5.5.2.1.addBox

addBoxメソッドは矩形を追加します。

 addBox(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

w
横送り(右へ)
h
縦送り(ydirがupなら上へ、downなら下へ)
linewidth
線幅(省略すると0.25)
linedash
破線指定("5,5" のように"線長,スキップ長"をポイントで指定。省略すると実線
color
線色("#RRGGBB"で指定、省略すると黒(#000000))
bgcolor
塗りつぶし色("#RRGGBB"で指定、省略すると塗りつぶさず枠線のみ)
x
横位置(省略するとページ左端)
y
縦位置(省略するとページ上端)
align
配置基準(【addText】メソッドの節を参照)

ある位置と、そこからw、hで指定した長さだけ移動した位置とを対角とする矩形を描きます。

4.5.5.2.2.addImage

addImageメソッドは画像を追加します。今のところPNG画像のみ利用できます。

 addImage(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

src
画像ファイルをfilesからのパス名で指定
w … 幅
h … 高さ
x
横位置(省略するとページ左端)
y
縦位置(省略するとページ上端)
align
配置基準(【addText】メソッドの節を参照)
4.5.5.2.3.addLine

addLineメソッドは直線を追加します。

 addLine(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

w
横送り(右へ)
h
縦送り(ydirがupなら上へ、downなら下へ)
linewidth
線幅(省略すると0.25)
linedash
破線指定("5,5" のように"線長,スキップ長"をポイントで指定。省略すると実線
color
線色("#RRGGBB"で指定、省略すると黒(#000000))
x
横位置(省略するとページ左端)
y
縦位置(省略するとページ上端)
align
配置基準(【addText】メソッドの節を参照)

ある位置からw、hで指定した長さだけ移動した位置まで直線を引きます。hが0なら水平線、wが0なら垂直線となります。x、y、alignは、w、hの指定によって構成される矩形がどの位置に配置されるかを決めます。オプション指定の組み合わせによって、x、yで指定した位置が直線の端になるとは限らない点に注意してください。

4.5.5.2.4.addParagraph

addParagraphメソッドは段落を追加します。

 addParagraph(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

text
表示する文字列
font
フォント("mincho"または"gothic"、省略すると"mincho")
fontsize
フォントサイズ(省略すると10ポイント)
color
文字色("#RRGGBB"で指定、省略すると黒(#000000))
size
段落の横幅(省略すると100)
textalign
各行の配置方法(b: 行頭揃え、m: 中央揃え、e: 行末揃え、w: 両端揃え、W: 強制両端揃え、省略するとw)。wによる両端揃えは末尾行だけは行頭揃えとなります。Wによる強制両端揃えは末尾行も含めて両端揃えとなります。
linefeed
行送り(省略すると150%)。値は数値かパーセントで指定します。パーセント指定するとfontsizeを元に計算します。linefeedは行間ではなく行送りであることに注意してください。
textdir
"v"と指定すると縦書き。省略すると横書き
x
横位置(省略するとページ左端)
y
縦位置(省略するとページ上端)
align
配置基準(【addText】メソッドの節を参照)

textオプションの文字列はsizeで指定された横幅に収まるように折り返されて表示されます。また、文字列に\nを含めるとそこで折り返されます。

4.5.5.2.5.addText

addTextメソッドはテキストを追加します。

 addText(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

text
表示する文字列
font
フォント("mincho"または"gothic"、省略すると"mincho")
fontsize
フォントサイズ(省略すると10ポイント)
color
文字色("#RRGGBB"で指定、省略すると黒(#000000))
textdir
"v"と指定すると縦書き。省略すると横書き
x
横位置(省略するとページ左端)
y
縦位置(省略するとページ上端)
align
配置基準(後述)

textオプションの文字列は\rや\nを含んでいても折り返されません。alignによる配置基準は、x、yで指定した位置が表示するもののどこにあたるかを、縦位置についてはt、m、bのいずれか、横位置についてはl、c、r のいずれかを組み合わせて指定します。

t
y位置が表示物の上端
m
y位置が表示物の中央
b
y位置が表示物の下端
l
x位置が表示物の左端
c
x位置が表示物の中央
r
x位置が表示物の右端

alignを省略すると、tl(配置基準を表示物の左上)が用いられます。

4.5.5.2.6.getTextSizes

getTextSizesメソッドはソースに含まれる各テキストと段落のサイズを返します。このメソッドはソースがXPDFJオブジェクトのメソッドで組み立てられた場合に有効です。

 getTextSizes(options)

options引数にはオプションオブジェクトを与えますが今のところ使用されません。getTextSizesメソッドは [横サイズ, 縦サイズ] の配列(単位はポイント)を返します。

4.5.5.2.7.newDoc

newDocメソッドはドキュメントを作成(ページも一つ自動的に追加)します。

 newDoc(options)

options引数には以下のプロパティから成るオブジェクトを与えます。

pagesize
ページサイズ:"ハガキ"、"ハガキL"、"B5"、"B5L"、"B4"、"B4L"、"A4"、"A4L"、"A3"、"A3L"のいずれか(「L」と付くのは横、付かないのは縦)
width
ページ横幅
height
ページ高さ

pagesizeもwidth、heightも指定しなかった場合はA4縦サイズとなります。

4.5.5.2.8.newPage

newPageメソッドは新しいページを追加します。以後のページの構成要素はそのページに配置されます。

 newPage()
4.5.5.2.9.ouput

ouputメソッドは、ソースにもとづいてPDFファイルを生成します。

 await ouput(file, options)

file引数には出力先ファイルとなるBuddyFileオブジェクトを指定します。options引数にはオプションオブジェクトを与えますが今のところ使用されません。outputメソッドは作成されたPDFファイルのパス名を返します。XPDFJクラスのメソッドでソースを組み立てる場合は、その最後にoutput()を呼び出してください。

4.5.5.3.使用例
4.5.5.3.1.実例1

ソースをXPDFJクラスのメソッドで組み立てる例を以下に示します。

var xpdfj = new lib.XPDFJ({ydir: "down"});
 
xpdfj.newDoc({pagesize: "A4"});
xpdfj.addText({text: "テスト\ntest", x: 50, y: 50, font: "gothic", fontsize: 20, color: "#ff0000"});
xpdfj.addParagraph({text: "テスト2 <testtest> なんとか\nかんとか", x: 50, y: 80});
xpdfj.addLine({x: 50, y: 150, w: 200, h: 0});
xpdfj.addBox({x: 50, y: 200, w: 150, h: 200, bgcolor: '#00ffff'});
xpdfj.addImage({src: 'images/kamogawa.png', x: 50, y: 300, w: 327, h: 240});
 
var bf = new lib.BuddyFile("", {temporary: true});
await xpdfj.output(bf, {});

4.5.5.3.2.実例2

ソースをオブジェクトで与える例を以下に示します。

var src = {XPDFJ: {version: "0.1"}, _:[
        {Doc: {version:"1.3", pagewidth:"595", pageheight:"842"}},
        {new_font: {setvar:"$font", basefont:"Ryumin-Light", encoding:"UniJIS-UCS2-HW-H"}},
        {new_page: {setvar:"$page"}},
        {TStyle: {setvar:"$tstyle", font:"$font", fontsize:"20"}},
        {Text: {setvar:"$text", style:"$tstyle", texts:"テスト"}, _:[
                {call: [
                        {show: {page:"$page", x:"40", y:"800", align:"tl"}},
                ]},
        ]},
        {print: {file:"$Args{outfile}"}},
]};
 
var xpdfj = new lib.XPDFJ({src: src});
var bf = new lib.BuddyFile("", {temporary: true});
await xpdfj.output(bf, {});
4.5.5.4.ソースオブジェクトの作成

ソースをオブジェクトで指定する場合は、次のいずれかの形式を組み合わせて入れ子にすることで組み立てます。二番目の形式は属性がない場合に用います。

 {タグ名: {属性名: 属性値,…}, _:[子オブジェクトまたは文字列,…]}
 {タグ名: [子オブジェクトまたは文字列,…]}

例えば、前掲の【実例2】のソースオブジェクトは、次のXMLテキストに変換されて、XPDFJで処理されます。

<?xml version="1.0" encoding="UTF-8"?>
<XPDFJ version="0.1">
        <Doc version="1.3" pagewidth="595" pageheight="842"/>
        <new_font setvar="$font" basefont="Ryumin-Light" encoding="UniJIS-UCS2-HW-H"/>
        <new_page setvar="$page"/>
        <TStyle setvar="$tstyle" font="$font" fontsize="20"/>
        <Text setvar="$text" style="$tstyle" texts="テスト">
                <call>
                        <show page="$page" x="40" y="800" align="tl"/>
                </call>
        </Text>
        <print file="$Args{outfile}"/>
</XPDFJ>
4.5.5.5.マクロの利用

XPDFJには独自のタグを定義したりできるマクロ機能があります。ソース中で直接マクロ機能を利用することもできますし、マクロファイルを用意して<do file="…"/>で読み込むことで利用することもできます。

  1. XPDFJでも、files/import/にマクロファイルを入れておけば、上記のオブジェクト形式なら{do: {file: "…"}}として読み込まれます。

例えばXPDFJの標準マクロstddefs.incを利用すると、次のようにHTMLライクなタグを使って書けます(files/import/に、stddefs.inc、stdfontsH.inc、stdfontsV.incを入れておく必要があります)。

var src = {XPDFJ: {version: "0.2"}, _:[
        {do: {file: "stddefs.inc"}},
        {BODY: [
                {H2: ["見出し"]},
                {P: ["XPDFJ\r\nテスト"]},
        ]},
        {print: {file:"$Args{outfile}"}},
]};

あるいはXMLテキストとしてソースを与えるなら次のように記述します。

<?xml version="1.0"?>
<XPDFJ version="0.2">
        <do file="stddefs.inc"/>
        <BODY>
                <H2>見出し</H2>
                <P>XPDFJ
                テスト</P>
        </BODY>
        <print file="$Args{outfile}"/>
</XPDFJ>

標準マクロの解説は別文書「XPDFJ標準マクロ概説」を参照してください。

4.6.api.xml2js

api.xml2jsモジュールはXMLを読み取るAPIを提供します。使用例を以下に示します。

var xml = "<xml>test</xml>";
try{
    const json = await api.xml2js.parseStringPromise(xml)
    //変換後の処理
    console.log(json)
}catch(err){
    //エラー時の処理
}

4.6.1.parseStringPromise()

parseStringPromise関数はXML形式の文字列を解析してオブジェクトに変換します。

 await api.xml2js.parseStringPromise(xml)

xml引数にはXML形式の文字列を与えます。parseStringPromise関数は解析結果をオブジェクトで返します。

4.7.api.getAppInfo

api.getAppInfo関数はアプリの情報を返します。

await api.getAppInfo()

api.getAppInfo関数は以下のプロパティからなるオブジェクトを返します。

name
アプリ名
display
アプリ表示名
target
デバッグ版かリリース版かを示す文字列("debug"または"release")
url
アプリのアドレス(URL)
alias
アプリの別名(エイリアス)の配列
version
アプリのバージョン番号
owner
アプリの作成者
independent
ログインを分離しているときは真、そうでなければ偽を返す
build
最終ビルド日時。以下のプロパティからなるオブジェクトを返す。
 
 debug: デバッグ版の最終ビルド日時
 release: リリース版の最終ビルド日時
create
アプリ作成日時

4.8.api.getServerInfo

api.getServerInfo関数はサーバーの情報を返します。

await api.getServerInfo()

api.getServerInfo関数は以下のプロパティからなるオブジェクトを返します。

host
サーバーのホスト名
port
サーバーのポート番号
url
サーバーのアドレス(URL)
default_ui
デフォルトのUI設定("Buddy"または"Buddy2")
status
サーバーの状況。以下のプロパティからなるオブジェクトを返す。
 
 storage: ストレージ使用量(後述) 
 memory: メモリ使用量(単位はバイト)
 app_count: アプリ数
 user_count: ユーザー数
regulation
サーバーの契約プランなどの情報。以下のプロパティからなるオブジェクトを返す
 
 plan: 契約プラン名
 user_max: 利用可能ユーザー数
 concur: 同時接続ユーザー数
 appcount_max: アプリ数

サーバー状況(status)のstorageプロパティはストレージ使用状況の内訳を以下のプロパティ(値はストレージ使用量を表す数値、単位はバイト)からなるオブジェクトとして返す。

database
データベース
files
ダウンロードファイル
app
アプリ領域
release
本番用
debug
デバッグ
editor
開発
log
ログ
backup
バックアップ
trash
削除済み
temporary
一時保存
disk
総ディスク容量
free
空きディスク容量

5.レポート設計

本項ではレポート設計のAPIについて説明します。

5.1.レポートオブジェクト

本項ではレポートオブジェクトについて説明します。

レポートオブジェクトを得るにはbuddy.app.reportプロパティを利用します。詳しくは【buddy.app.reportプロパティ】を参照してください。

5.1.1.output()

レポートオブジェクトのoutputメソッドはレポート出力を実行します。

 output(param)

param引数にはレポート出力に使用するパラメータ(以下のプロパティから成るオブジェクト)を与えます。

where
絞り込み条件
order
並べ替え指定
offset
何件目から出力するか
num
何件出力するか
上記以外のプロパティ
レポート中で「this.param.プロパティ名」で参照できる

以下に例を示します。この例ではreport1という名前のレポートを出力します。

 const reportName = "report1" //レポート名
 const report = buddy.app.report[reportName]
 const param = {
      //レポート出力に使用するパラメータ
 }
 const result = await report.output(param)

6.モデルオブジェクト

DBテーブル設計で定義されるテーブルおよびDBビュー設計で定義されるビューをまとめて「モデル」と呼び、モデルの設計情報を表すオブジェクトのことを「モデルオブジェクト」と呼びます。

6.1.概要

DBテーブルおよびDBビューを表すモデルオブジェクトは、スクリーンおよびサーバー機能のスクリプトにおいてbuddy.app.findModel(DBテーブル・ビュー名)で取得できます。たとえばtable1というDBテーブルのモデルオブジェクトは次のように得られます。

 const table = buddy.app.findModel("table1")

6.2.プロパティ

本項ではモデルオブジェクトのプロパティについて説明します。

6.2.1.cols

colsプロパティは、各カラムのカラム名をプロパティとしてカラムの情報がセットされたオブジェクトです。

カラム情報のオブジェクトにはgetChoice()というメソッドが用意されており、そのカラムに設定された選択肢または外部参照によって他のテーブルから読み込まれた選択肢を得ることができます。
結果はDataSetオブジェクトとして得られ、プルダウンリストなどのlistプロパティにセットすることができます。

  const list = await buddy.app.dbtable.table1.cols.foo.getChoice()
  buddyscreen.items.SELECT1.list = list

上の例ではDBテーブルtable1のカラムfooに設定された選択肢を得て、アイテムSELECT1の選択肢としてセットしています。awaitが必要なことに注意してください。

上記のようにするだけなら、SELECT1のアイテム属性で、「データリンク」をtable1.fooにセットし、「選択肢の自動読込」を「はい」にすればOKで、スクリプトを書く必要はありません。
しかし、上記のようにすれば得たlistを加工(例えば先頭に空の選択肢を追加するなど)してからセットするようなことが可能となります。

6.2.2.config

configプロパティの値はDBテーブル・ビューの設計情報オブジェクトです。設計情報オブジェクトクトについては【設計情報オブジェクト】を参照してください。

6.3.メソッド

6.3.1.count()

モデルオブジェクトのcountメソッドはDBテーブル・ビューのレコード数を得ます。

countメソッドはプロミスを返します。このプロミスをawaitすることにより、レコード件数が整数値で返されます。

countメソッドが返したプロミスについて以下のメソッドを呼び出すことにより、レコードの絞り込み条件を追加で指定できます。

where()
絞り込み条件。指定しなければ全レコード数を得る

whereメソッドもプロミスを返します。このプロミスをawaitすることにより、レコード件数が整数値で返されます。

以下に例を示します。この例ではtable1というDBテーブルにnameカラムの値が"foo"のレコードが何件あるかを求めて結果をコンソールに表示します。

 const table = buddy.app.findModel("table1")
 const count = await table.count()
       .where({name: "foo"}) //絞り込み条件
 // レコード数をコンソールに表示
 console.log(count)

6.3.2.delete()

モデルオブジェクトのdeleteメソッドはDBテーブルからレコードを削除します。この操作はDBビューに対しては実行できません。

 delete()

deleteメソッドはプロミス(レコード削除プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの絞り込み条件などを追加で指定できます。allとwhereはどちらか一方を必ず呼ばなければなりません。

all()
レコード全件を削除する
returning()
結果のDataSetオブジェクトに含めるカラム名を指定する
where()
絞り込み条件

これらの追加のメソッドもプロミス(レコード削除プロミス)を返します。

得られたプロミスをawaitすることによりレコードの削除が実行され、削除されたレコード群がDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルからIDカラムの値が1のレコードを削除します。

 const table = buddy.app.findModel("table1")
 const result = await table.delete()
       .where({ID: 1}) //絞り込み条件
       .returning("ID") //削除したレコードのIDを返す

6.3.3.insert()

モデルオブジェクトのinsertメソッドはDBテーブルにレコードを挿入します。この操作はDBビューに対しては実行できません。

 insert(data)

data引数には挿入するレコードを以下のいずれかの形式で与えます。

a. {カラム名: 値, ...} の形式のオブジェクト
b. 上記の形式のオブジェクトを要素とする配列
c. レコード数が1のDataSetオブジェクト

insertメソッドはプロミス(レコード挿入プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、結果のDataSetオブジェクトの設定を追加で指定できます。

returning()
結果のDataSetオブジェクトに含めるカラム名

このメソッドもプロミス(レコード挿入プロミス)を返します。

得られたプロミスをawaitすることによりレコードの挿入が実行され、挿入されたレコードがDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルにnameカラムの値が"foo"のレコードを追加します。

 const table = buddy.app.findModel("table1")
 const result = await table.insert({name: "foo"})
       .returning("ID") //挿入したレコードのIDを返す

6.3.4.lookup()

モデルオブジェクトのlookupメソッドはDBテーブル・ビューから条件に合致する最初のレコードを読み取ります。

 lookup()

lookupメソッドはプロミスを返します。このプロミスをawaitすることにより、条件に合う最初のレコードが {カラム名: 値, ...} の形式のオブジェクトで返されます。条件に合うレコードが無ければnullが返されます。

lookupメソッドが返したプロミスについて以下のメソッドを呼び出すことにより、レコードの絞り込み条件などを追加で指定できます。

limit()
レコードの最大件数
offset()
読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
orderby()
検索結果の並べ替え方法
where()
検索条件。指定しなければレコード全件を得る

これらの追加のメソッドもプロミスを返します。このプロミスをawaitするとレコードの読み取り結果が得られます。

以下に例を示します。この例ではtable1というDBテーブルからnameカラムの値が"foo"のレコードを読み取ってIDカラムの値で降順にソートし、最初のレコードの内容をコンソールに表示します。

 const table = buddy.app.findModel("table1")
 const result = await table.lookup()
       .where({name: "foo"}) //絞り込み条件
       .orderby("ID DESC") //並べ替え
 console.log(result)

6.3.5.select()

モデルオブジェクトのselectメソッドはDBテーブル・ビューからレコードを読み取ります。

 select()

selectメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの絞り込み条件などを追加で指定できます。

limit()
レコードの最大件数
offset()
読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
orderby()
検索結果の並べ替え方法
stream()
レコードの読み取り結果をDataStreamオブジェクトにする。指定しなければ結果はDataSetオブジェクトになる。
where()
検索条件。指定しなければレコード全件を得る

これらの追加のメソッドもプロミス(レコード更新プロミス)を返します。

得られたプロミスをawaitすることにより、レコードの読み取り結果がDataSetオブジェクト(streamメソッドを呼んだ場合はDataStreamオブジェクト)で返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を、DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルからnameカラムの値が"foo"のレコードを最大100件読み取り、IDカラムの値で降順にソートされた結果を得ます。

 const table = buddy.app.findModel("table1")
 const result = await table.select()
       .where({name: "foo"}) //絞り込み条件
       .limit(100) //レコードの最大件数
       .orderby("ID DESC") //並べ替え
 // 結果の先頭レコードのIDの値を表示
 buddyscreen.items.LABEL1.value = result.rows[0].ID
 // 結果全体をテーブルで表示
 buddyscreen.items.TABLE1.data = result 

6.3.6.update()

モデルオブジェクトのupdateメソッドはDBテーブルのレコードを更新します。この操作はDBビューに対しては実行できません。

 update(data)

data引数にはレコードの更新後の値を以下のいずれかの形式で与えます。

a. {カラム名: 値, ...} の形式のオブジェクト
b. 上記の形式のオブジェクトを要素とする配列
c. レコード数が1のDataSetオブジェクト

updateメソッドはプロミス(レコード更新プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、結果のDataSetオブジェクトの設定を追加で指定できます。

returning()
結果のDataSetオブジェクトに含めるカラム名
where()
絞り込み条件。指定しなければレコード全件を更新する

このメソッドもプロミス(レコード挿入プロミス)を返します。

得られたプロミスをawaitすることによりレコードの更新が実行され、更新されたレコードがDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルのレコードのうちIDが1のレコードのnameカラムの値を"bar"に変更します。結果として返されるDataSetオブジェクトには更新されたレコードのIDカラムの値が含まれます。

 const table = buddy.app.findModel("table1")
 const result = await table.update({name: "bar"})
       .where({ID: 1}) //絞り込み条件
       .returning("ID") //更新したレコードのIDを返す

6.3.7.upsert()

モデルオブジェクトのupsertメソッドはDBテーブルに新しいレコードを挿入、または既存のレコードを更新します。この操作はDBビューに対しては実行できません。

 upsert(data)

data引数には新規レコードまたは既存レコードの更新後の値を以下のいずれかの形式で与えます。

a. {カラム名: 値, ...} の形式のオブジェクト
b. 上記の形式のオブジェクトを要素とする配列
c. レコード数が1のDataSetオブジェクト

upsertメソッドはプロミス(レコード更新プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、結果のDataSetオブジェクトの設定を追加で指定できます。

returning()
結果のDataSetオブジェクトに含めるカラム名
where()
絞り込み条件。指定しなければレコード全件を更新する

このメソッドもプロミス(レコード挿入プロミス)を返します。

得られたプロミスをawaitすることによりレコードの挿入または更新が実行され、挿入・更新されたレコード群がDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルからIDが1のレコードを探します。条件に合うレコードがあればnameカラムの値を"bar"に更新(update)します。条件に合うレコードがなければ新しいレコードを挿入します。結果として返されるDataSetオブジェクトには挿入・更新されたレコードのIDカラムの値が含まれます。

 const table = buddy.app.findModel("table1")
 const result = await table.upsert({name: "bar"})
       .where({ID: 1}) //絞り込み条件
       .returning("ID") //更新したレコードのIDを返す

6.4.レコード検索プロミス

本項ではレコード検索(count、lookup、selectメソッド)により得られるプロミス(レコード検索プロミス)について説明します。

6.4.1.limit()

limitメソッドはレコード検索(count、lookup、selectメソッド)により得られるレコードの最大件数を制限します。

 limit(num)

num引数にはレコードの最大件数を整数値で与えます。

limitメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。

offset()
読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
orderby()
検索結果の並べ替え方法
stream()
レコードの読み取り結果をDataStreamオブジェクトにする。指定しなければ結果はDataSetオブジェクトになる。
where()
絞り込み条件

これらの追加のメソッドもプロミス(レコード更新プロミス)を返します。

得られたプロミスをawaitすることにより、レコードの読み取り結果がDataSetオブジェクトまたはDataStreamオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を、DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルからレコードを最大100件読み取ります。

 const table = buddy.app.findModel("table1")
 const result = await table.select()
       .limit(100) //レコードの最大件数

6.4.2.offset()

offsetメソッドはレコード検索(count、lookup、selectメソッド)により読み取るレコードの開始位置を指定します。

 offset(num)

num引数にはレコード読み取りの開始位置を整数値(最初のレコードが0)で与えます。

offsetメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。

limit()
レコードの最大件数
orderby()
検索結果の並べ替え方法
stream()
レコードの読み取り結果をDataStreamオブジェクトにする。指定しなければ結果はDataSetオブジェクトになる。
where()
絞り込み条件

これらの追加のメソッドもプロミス(レコード検索プロミス)を返します。

得られたプロミスをawaitすることにより、レコードの読み取り結果がDataSetオブジェクトまたはDataStreamオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を、DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルからレコードを最大100件読み取ります。

 const table = buddy.app.findModel("table1")
 const result = await table.select()
       .limit(100) //レコードの最大件数

6.4.3.orderby()

orderbyメソッドはレコード検索(count、lookup、selectメソッド)によるレコードの読み取り結果の並べ替え方法を指定します。

 orderby(spec1, spec2, ...)
 orderby([spec1, spec2, ...])

引数のspec1、spec2、…にはカラム名と順序指定を空白文字で区切った文字列を与えます。順序指定は以下のいずれかの文字列です。

ASC
昇順
DESC
降順

orderbyメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。

limit()
レコードの最大件数
offset()
読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
stream()
レコードの読み取り結果をDataStreamオブジェクトにする。指定しなければ結果はDataSetオブジェクトになる。
where()
絞り込み条件

これらの追加のメソッドもプロミス(レコード検索プロミス)を返します。

得られたプロミスをawaitすることにより、レコードの読み取り結果がDataSetオブジェクトまたはDataStreamオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を、DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルからレコードを読み取り、IDカラムの値で降順にソートされた結果を得ます。

 const table = buddy.app.findModel("table1")
 const result = await table.select()
       .orderby("ID DESC") //並べ替え

6.4.4.stream()

streamメソッドはレコード検索(count、lookup、selectメソッド)によるレコードの読み取り結果をDataStreamオブジェクトで返すように設定します。

 stream()

streamメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。

limit()
レコードの最大件数
orderby()
検索結果の並べ替え方法
offset()
読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
where()
絞り込み条件

これらの追加のメソッドもプロミス(レコード検索プロミス)を返します。

得られたプロミスをawaitすることにより、レコードの読み取り結果がDataStreamオブジェクトで返されます。DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。

6.4.5.where()

whereメソッドはレコード検索(count、lookup、selectメソッド)の絞り込み条件を指定します。

 where(condition)

condition引数には絞り込み条件を表すオブジェクトを与えます。絞り込み条件については【絞り込み条件】の項を参照してください。

whereメソッドはプロミス(レコード検索プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。

limit()
レコードの最大件数
offset()
読み取るレコードの開始位置(最初が0)。指定しなければ最初のレコードから読み取る
orderby()
検索結果の並べ替え方法
stream()
レコードの読み取り結果をDataStreamオブジェクトにする。指定しなければ結果はDataSetオブジェクトになる。

これらの追加のメソッドもプロミス(レコード検索プロミス)を返します。

得られたプロミスをawaitすることにより、レコードの読み取り結果がDataSetオブジェクトまたはDataStreamオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を、DataStreamオブジェクトについては【buddy.lib.DataStream】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルからnameカラムの値が"foo"のレコードを読み取ります。

 const table = buddy.app.findModel("table1")
 const result = await table.select()
       .where({name: "foo"}) //絞り込み条件

6.5.レコード挿入プロミス

6.5.1.returning()

returningメソッドは、insertメソッドで挿入されたレコードを表すDataSetオブジェクトに含めるカラム名を指定します。

 returning(column1, column2, ...)

引数にはカラム名を文字列で1つ以上与えます。

returningメソッドはプロミス(レコード挿入プロミス)を返します。

得られたプロミスをawaitすることにより、レコードの挿入が実行され、挿入されたレコードがDataSetオブジェクトとして返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルにnameカラムの値が"foo"のレコードを挿入します。結果として返されるDataSetオブジェクトには挿入されたレコードのIDカラムの値が含まれます。

 const table = buddy.app.findModel("table1")
 const result = await table.insert({name: "foo"})
       .returning("ID") //挿入されたレコードのIDを返す

6.6.レコード更新プロミス

6.6.1.returning()

returningメソッドは、updateメソッドまたはupsertメソッドで更新されたレコードを表すDataSetオブジェクトに含めるカラム名を指定します。

 returning(column1, column2, ...)

引数にはカラム名を文字列で1つ以上与えます。

returningメソッドはプロミス(レコード更新プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの絞り込み条件を追加で指定できます。

where()
絞り込み条件

このメソッドもプロミス(レコード更新プロミス)を返します。

得られたプロミスをawaitすることにより、レコードの更新が実行され、更新されたレコードがDataSetオブジェクトとして返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。

6.6.2.where()

returningメソッドは、updateメソッドまたはupsertメソッドで更新されたレコードを表すDataSetオブジェクトに含めるカラム名を指定します。

 returning(column1, column2, ...)

引数にはカラム名を文字列で1つ以上与えます。

returningメソッドはプロミス(レコード更新プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの更新結果についての設定を追加で指定できます。

returning()
結果のDataSetオブジェクトに含めるカラム名

このメソッドもプロミス(レコード更新プロミス)を返します。

得られたプロミスをawaitすることにより、レコードの更新が実行され、更新されたレコードがDataSetオブジェクトとして返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。

6.7.レコード削除プロミス

6.7.1.all()

allメソッドはdeleteメソッドでレコードを削除するときにレコード全件を削除対象にすることを指定します。

 all()

allメソッドはプロミスを返します。このプロミスについて以下のメソッドを呼び出すことにより、結果に含めるカラムを追加で指定できます。

returning()
結果に含めるカラム名

このメソッドもプロミスを返します。

得られたプロミスをawaitすることによりレコードの削除が実行され、削除されたレコード群がDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルからIDカラムの値が1のレコードを削除します。

 const table = buddy.app.findModel("table1")
 const result = await table.delete()
       .all() //レコード全件を削除対象にする
       .returning("ID") //削除したレコードのIDを返す

6.7.2.returning()

returningメソッドは、deleteメソッドで削除されたレコード群を表すDataSetオブジェクトに含めるカラム名を指定します。

 returning(column1, column2, ...)

引数にはカラム名を文字列で1つ以上与えます。

returningメソッドはプロミス(レコード削除プロミス)を返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの削除条件などを追加で指定できます。

all()
レコード全件を削除対象にする
where()
絞り込み条件。指定しなければレコード全件を削除する

これらの追加のメソッドもプロミス(レコード削除プロミス)を返します。

得られたプロミスをawaitすることにより、レコードの削除が実行され、削除されたレコード群がDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルからnameカラムの値が"foo"のレコードを削除します。

 const table = buddy.app.findModel("table1")
 const result = await table.select()
       .where({name: "foo"}) //絞り込み条件
       .returning("ID") //削除されたレコードのIDを返す

6.7.3.where()

whereメソッドはdeleteメソッドによるレコード削除の絞り込み条件を指定します。

 where(condition)

condition引数には絞り込み条件を表すオブジェクトを与えます。絞り込み条件については【絞り込み条件】の項を参照してください。

whereメソッドはプロミスを返します。このプロミスについて以下のメソッドを呼び出すことにより、レコードの読み取り条件などを追加で指定できます。

all()
レコード全件を削除対象にする
returning()
結果に含めるカラム名を指定する

これらの追加のメソッドもプロミスを返します。このプロミスをawaitすることにより、レコードの削除が実行され、削除されたレコード群がDataSetオブジェクトで返されます。DataSetオブジェクトについては【buddy.lib.DataSet】を参照してください。

以下に例を示します。この例ではtable1というDBテーブルからnameカラムの値が"foo"のレコードを削除します。

 const table = buddy.app.findModel("table1")
 const result = await table.delete()
       .where({name: "foo"}) //絞り込み条件
       .returning("ID") //削除されたレコードのIDを返す

6.8.モデル設計情報

本項ではDBテーブル・ビュー設計で定義されるモデル設計情報について説明します。

6.8.1.DBテーブル

DBテーブルのconfigプロパティの値はテーブルの設計情報オブジェクトです。

DBテーブルの設計情報オブジェクトは以下のプロパティから成ります。

TableDbname
DB上のテーブル名(英数_)
TableDisplayname
表示上のテーブル名(日本語可)
TableType
テーブルタイプ(STOCK または FLOW)
TableFlags
テーブルフラグの配列
TableMemo
備考(開発上のメモ)
TableColumns
カラム情報オブジェクト(後述)の配列
TablePrimaryKeyColumns
Primary Key指定するカラム名の配列
TableIndexes
インデックス情報オブジェクト(後述)の配列
TableRules
ルール情報オブジェクト(後述)の配列
TableOrders
順序情報オブジェクト(後述)の配列
TableAuth
アクセス制御オブジェクト

カラム情報オブジェクトは次のプロパティから成ります。

ColumnDbname
DB上のカラム名(英数_)
ColumnDisplayname
表示上のカラム名(日本語可)
ColumnCategory
データ型のカテゴリ
ColumnClass
データ型のクラス
ColumnType
データ型
ColumnDefaultvalue
デフォルト値
ColumnOrder
カラムの順序(整数値)
ColumnFlags
カラムフラグの配列
ColumnChoices
選択肢の配列
ColumnRange
範囲選択肢(「最小値:最大値:刻み値」)
ColumnMemo
備考(開発上のメモ)

インデックス情報オブジェクトは以下のプロパティから成ります。

IndexDbname
DB上のインデックス名(英数_)
IndexDisplayname
表示上のインデックス名(日本語可)
IndexUnique
Uniqueかどうか(trueまたはfalse)
IndexColumnsOrExpressions
カラム名または式の配列

ルール情報オブジェクトは以下のプロパティから成ります。

RuleDbname
DB上の制約名(英数_)
RuleDisplayname
表示上のルール名(日本語可)
RuleCheck
検査式
※特殊な指定として、「カラム名 NOT NULL」「UNIQUE(カラム名,…)」

順序情報オブジェクトは以下のプロパティから成ります。

OrderName
順序名(英数_)
OrderDisplayname
表示上の順序名(日本語可)
OrderDefault
デフォルト順序かどうか(trueまたはfalse)
OrderSpecs
次の順序カラム指定オブジェクトの配列
OrderColumn
カラム名
OrderDirection
ASC または DESC

6.8.2.DBビュー

DBビューのconfigプロパティの値はビューの設計情報オブジェクトです。

DBビューの設計情報オブジェクトは以下のプロパティから成ります。

ViewType
ビューの型(LIST、SUM、CROSS)
ViewDbname
DB上のビュー名(英数_)
ViewDisplayname
表示上のビュー名(日本語可)
ViewMemo
備考(開発上のメモ)
ViewColumns
カラム情報オブジェクト(後述)の配列
ViewFrom
テーブル/ビュー名 または後述のViewFromオブジェクト(入れ子可)
ViewWhere
ビューのWHERE式
ViewHaving
ビューのHAVING式
ViewOrderBy
ORDER BY指定オブジェクトの配列
ViewCross
クロス集計(CROSS)型ビューのオプション
ViewAuth
アクセス制御オブジェクト

カラム情報オブジェクトは以下のプロパティから成ります。

ColumnAsname
DB上のAS名(英数_)
ColumnDisplayname
表示上のカラム名(日本語可)
ColumnExpression
カラム内容の式
ColumnSumType
集計型(GROUP、SUM、COUNT、MAX、MIN、AVG、NONE)
ColumnOrder
カラムの順序(整数値)
ColumnMemo
備考(開発上のメモ)

ViewFromオブジェクトは以下のプロパティから成ります。

FromLeft
左側のテーブル/ビュー名 またはViewFromオブジェクト
FromLeftAsname
左側のテーブル/ビューのAS名
FromRight
右側のテーブル/ビュー名 またはViewFromオブジェクト
FromRightAsname
右側のテーブル/ビューのAS名
JoinType
JOIN指定(JOIN、LEFT JOIN、RIGHT JOIN、FULL JOIN)
JoinOn
次のJOIN ON条件式オブジェクトの配列

JOIN ON条件式オブジェクトは以下のプロパティから成ります。

ColumnLeft
左側のテーブル/ビューのカラム名
ColumnRight
右側のテーブル/ビューのカラム名
Operator
演算子(=、!=)

ORDER BY指定オブジェクトは以下のプロパティから成ります。

OrderColumn
カラム名
OrderDirection
ソート順序(ASC、DESC、NONE)

クロス集計型ビューのオプションは以下のプロパティからなるオブジェクトです。

CrossColumns
列ラベルカラムのDB名の配列
CrossRows
行ラベルカラムのDB名の配列
CrossValues
値カラムのDB名の配列
CrossFunc
集計関数(SUM、COUNT、MAX、MIN、AVG)

6.8.3.データ型

テーブルカラムの型には以下の5つがあります。

 ・数値
 ・真偽値
 ・文字列
 ・日付・時間
 ・ファイル

それぞれの型に属する型の詳細および対応するPostgreSQLのデータ型を以下に示します。

 数値型の詳細(括弧内は有効な範囲):
・数値
numeric(小数点より上は131072桁まで、小数点より下は16383桁まで)
・自動連番
serial8(1から9223372036854775807まで)
・整数
int8(-9223372036854775808から+9223372036854775807まで)
・小数点
float8(15桁精度、およそ1E-307から1E+308まで)
・金額
money(-92233720368547758.08 から +92233720368547758.07まで)
真偽値型の詳細:
・真偽値 … bool
文字列型の詳細:
・フリー … text
・英数字 … text
・ひらがな … text
・全角カナ … text
・半角カナ … text
・郵便番号 … text
・メールアドレス … text
日付・時間型の詳細(括弧内は有効な範囲):
・日時
timestamp with time zone(紀元前4713年から294276年まで)
・日付
date(紀元前4713年から5874897年まで)
・時間
time(00:00:00から24:00:00まで)
・時間間隔
interval(-178000000年から178000000年まで)
ファイル型の詳細:
・フリー … text
・PDF … text
・WORD … text
・EXCEL … text
・画像 … text

文字列型のうち、フリーの場合は任意の文字列が有効です。その他の型の詳細は以下の正規表現にマッチする文字列のみが有効です。

英数字
^[A-Za-z0-9_]*$
ひらがな
^[\u3041-\u309f\u30a0\u30fb\u30fc]*$
全角カナ
^[\u30a0-\u30ff\u3099-\u309c]*$
半角カナ
^[\uff65-\uff9f]*$
郵便番号
^\d{3}-?\d{4}$
メールアドレス
^([A-Za-z0-9._%+-]+@([A-Za-z0-9]+(-[A-Za-z0-9]+)*.)+[A-Za-z]{2,})?$

一方、JavaScriptでは整数も実数もすべて国際規格IEEE 754に基づく倍精度浮動小数点数で表されます。したがってJavaScriptで正しく扱える整数は-9007199254740991から9007199254740991まで(絶対値が2の53乗未満の数)です。JavaScriptで扱える実数の範囲はPostgreSQLのfloat8と同じです。

6.8.4.型キャスト

文字列以外のデータ型の定数は、文字列と型キャストを組み合わせた以下の形式のSQL式で記述します。

 'string'::type

'string'には文字列、typeにはPostgreSQLのデータ型の名前を与えます(前節の【データ型】の項を参照してください)。型キャストの用例を以下に示します。

 '123'::int8 … 整数
 '123.45'::float8 … 小数点
 't'::bool … 真偽値
 '2016-12-25 12:34:56 +0900'::timestamp with time zone … 日時
 '2016-12-25'::date … 日付
 '12:34:56'::time … 時間
 '1 year 2 months 3 days'::interval … 時間間隔

型キャストはSQL式の結果を別のデータ型に変換するのにも用いられます。以下に例を示します。

AGE("birthday")::text
時間間隔から文字列へ
("date" || ' ' || "time")::timestamp … 文字列から日時へ
NULL::text
文字列型のNULLへ

6.8.5.カラム式

カラム内容の式にはSQLの式を自由に記述できます。本節では、ビューエディタのカラムの式編集ダイアログで選択して入力できるSQL式について説明します。

6.8.5.1.ABS(絶対値)

ABS関数は、与えられた値の絶対値を返します。

 ABS(number)

引数numberには値が数値型となる式(たとえば数値リテラルや数値型のカラム名)を与えます。戻り値のデータ型は入力値と同じです。たとえばABS(-34.5)は34.5を返します。

6.8.5.2.AGE(日または日時の差)

AGE関数は、日付や日時の差を求めます。

 AGE(timestamp1, timestamp2)
 AGE(timestamp1)

引数timestamp1およびtimestamp2には値が日付型または日時型となる式(たとえば日付リテラルや日時型のカラム名)を与えます。戻り値のデータ型は時間間隔型です。引数が2つの場合、2つの日付または日時の差を返します。たとえばAGE('2017-06-15'::timestamp, '1980-01-01'::timestamp)は37 years 5 mons 14 daysを返します。引数が1つの場合、現在の日付と与えられた値との差を返します。たとえば現在の日付が2017年6月20日のとき、AGE('1 Jan 2017'::date)は5 mons 19 daysを返します。これはAGE(CURRENT_DATE, '1 Jan 2017'::date)と書くのと同義です。

6.8.5.3.ARRAY_AGG(該当レコードの値を集約して配列化)

ARRAY_AGG関数は、与えられたレコードの値を集約して配列にします。

 ARRAY_AGG(column)

column引数には複数の値を返す式(たとえばカラム名)を与えます。戻り値は入力値と同じデータ型の配列です。

6.8.5.4.ARRAY_TO_STRING(配列から文字列に変換)

ARRAY_TO_STRING関数は配列を文字列に変換します。

 ARRAY_TO_STRING(array, text1)
 ARRAY_TO_STRING(array, text1, text2)

array引数には値が配列の式(たとえば配列リテラルや配列型のカラム名)、text1引数には区切り文字列を与えます。text2引数は省略可能で、与えられたときは配列中のNULL値を表す文字列として用いられます。たとえばARRAY_TO_STRING(ARRAY[-2, 1, NULL, 1, 2], ',', '')は-2,-1,,1,2を返します。

6.8.5.5.CASE(条件式)

CASE式は、条件の真偽に応じて別の値を返します。

 CASE
 WHEN &lt;condition&gt; THEN &lt;value1&gt;
 ELSE &lt;value2&gt;
 END

conditionには条件式を与えます。また、value1とvalue2には条件が真のときと偽のときに返される値をそれぞれ指定します。条件式はWHEN … THEN … の部分は2つ以上繰り返し記述することで複数指定できます。このときvalue2はすべての条件式が偽のときに返される値となります。ELSE … の部分は省略できます。ELSE句がなく、どの条件も真でないとき、CASE式の結果はNULLです。

6.8.5.6.COALESCE(NULLでない最初の値)

COALESCE関数は、与えられた引数のうち最初のNULLでない値を返します。すべての引数がNULLのときは結果はNULLです。

 COALESCE(value1, value2, ...)

以下に用例を示します。

 COALESCE(display_name, user_id, '&lt;unknown&gt;')

この式はdisplay_nameがNULLでなければをその値を返します。そうでない場合(値がNULLのとき)は、user_idがNULLでなければその値を返します。さもなければ<unknown>が返されます。

6.8.5.7.CONCAT(文字列結合)

CONCAT関数は、すべての引数を文字列化して結合した結果を返します。値がNULLの引数は無視されます。

 CONCAT(value1, value2, ...)

引数には任意のデータ型の式(たとえば文字列リテラルやカラム名)を与えます。戻り値のデータ型は文字列型です。

6.8.5.8.DATE_PART(年切出)

この式はDATE_PART関数を用いて日時型の値から年を取り出します。

 DATE_PART('year', timestamp)

timestamp引数には値が日付型の式(たとえば日時型のカラム名)を与えます。第1引数に以下のフィールド名を与えることで日時の成分を取り出せます。

 century … 世紀
 day … 日
decade
年を10で割った値
dow
日曜日(0)から土曜日(6)までの曜日
doy
年内の通算日数(1~366)
epoch
1970年1月1日からの経過秒数
hour … 時
isodow
月曜日(1)から日曜日(7)までの曜日
isoyear
ISO 8601週番号年
microseconds
マイクロ秒(端数を含む秒に1,000,000を乗じた値)
millennium
ミレニアム(1千年期間)
milliseconds
ミリ秒(端数を含む秒に1,000を乗じた値)
minute … 分
month … 月
quarter
四半期(1~4)
second … 秒
timezone
UTCからの時間帯オフセット(秒単位)
timezone_hour
時間帯オフセットの時の成分
timezone_minute
時間帯オフセットの分の成分
week
ISO 8601週番号
year … 年

日時フィールド名の詳細についてはPostgreSQLマニュアルのDATE_PART関数の節を参照してください。

 https://www.postgresql.jp/document/9.4/html/functions-datetime.html
6.8.5.9.FLOOR(切り捨て)

FLOOR関数は、与えられた引数より大きくない最大の整数を返します。

 FLOOR(number)

引数numberには値が数値型となる式(たとえば数値リテラルや数値型のカラム名)を与えます。戻り値のデータ型は入力値と同じです。たとえばFLOOR(-45.6)は-46を返します。

6.8.5.10.FORMAT(書式設定された文字列)

FORMAT関数は、C言語のsprintf関数と同様の方法で整形された文字列を生成します。

 FORMAT(format, value, ...)

format引数には第2引数以降の値の出力書式を決めるフォーマット文字列(フォーマット指定子を含む文字列)を与えます。戻り値のデータ型は文字列型です。フォーマット指定子は%で始まる以下の形式の文字列です。

 %[position][flags][width]type

positionはn$の形式の文字列で、nは出力する引数の番号です(format引数のあとの最初の引数が1)。flagsに-を指定すると左詰めになります。widthには出力する最小の文字幅を与えます。widthに*を指定すると次の引数が文字幅として用いられ、*n$を指定するとn番目の引数が文字幅として用いられます。
position、flags、widthは省略できます。typeにはフォーマット変換の形を指定します。以下の型が利用できます。

s
文字列に変換して出力します。NULL値は空文字列になります。
I
必要なら二重引用符で囲まれたSQL識別子に変換して出力します。NULL値はエラーになります。
L
引用符で囲まれたリテラルに変換して出力します。NULL値は引用符なしでNULLと出力されます。

また、フォーマット指定子の特別な場合として、%%は文字%を出力します。FORMAT関数の用例を以下に示します。

 FORMAT('%s, %s', 'foo', 'bar')
     結果:foo, bar
 FORMAT('%s-%s-%s', 1, 2, 3)
     結果:1-2-3
 FORMAT('%3$s-%2$s-%1$s', 1, 2, 3)
     結果:3-2-1
 FORMAT('%s%%', 12.3)
     結果:12.3%
 FORMAT('|%5s|', 'foo')
     結果:|  foo|
 FORMAT('|%-5s|', 'foo')
     結果:|foo  |
 FORMAT('|%*s|', 5, 'foo')
     結果:|  foo|
 FORMAT('|%*2$s|', 'foo', 5, 'bar')
     結果:|  bar|
 FORMAT('|%1$*2$s|', 'foo', 5, 'bar')
     結果:|  foo|
 format('%I', 'foo');
     結果:foo
 format('%I', '123');
     結果:&quot;123&quot;
 format('%L', 'foo');
     結果:'foo'
 format('%L', NULL);
     結果:NULL

フォーマット指定子の詳細についてはPostgreSQLマニュアルのformat関数の節を参照してください。

 https://www.postgresql.jp/document/9.4/html/functions-string.html
6.8.5.11.INTERVAL(一日後)

このSQL式は、与えられた日付の一日後の日付を返します。

 &lt;date&gt; + '1 day'::INTERVAL

<date>の部分には値が日付型の式(たとえば日付型のカラム名)を与えます。このSQL式のデータ型は<date>の式と同じです。また、'1 day'::INTERVALの部分には別の時間間隔型リテラルを指定できます。いくつかの例とその意味を以下に示します。

 '1 year 2 mons 3 days 04:05:06'::INTERVAL … 1年2ヶ月3日4時間5分6秒
 '1 year 2 months 3 days 4 hours 5 minutes 6 seconds'::INTERVAL … 同上
 '2 weeks'::INTERVAL … 14日
'1.5 year'::INTERVAL
1年6ヶ月
'1.5 month'::INTERVAL
1ヶ月15日(1ヶ月=30日で換算されます)
'1.5 week'::INTERVAL
10日12時間
'1.5 day'::INTERVAL
1日12時間
'1.5 hour'::INTERVAL
1時間30分
'1.5 minute'::INTERVAL
1分30秒

時間間隔型リテラルの詳細についてはPostgreSQLマニュアルの時間間隔入力の節を参照してください。

 https://www.postgresql.jp/document/9.4/html/datatype-datetime.html
6.8.5.12.LEFT(先頭の文字列)

LEFT関数は、文字列の先頭(左)から指定文字数分の部分文字列を返します。

 LEFT(text, number)

text引数には値が文字列型の式(たとえば文字列リテラルや文字列型のカラム名)を与えます。number引数には文字数を指定します。文字数が負の値のときは、その値の絶対値に等しい文字数の分だけ文字列の末尾を除いた部分文字列を返します。

6.8.5.13.LOWER(小文字変換)

LOWER関数は、与えられた文字列を小文字に変換します。

 LOWER(text)

text引数には値が文字列型の式(たとえば文字列型のカラム名)を与えます。戻り値のデータ型は文字列型です。

6.8.5.14.NULLIF(条件下でNULL)

NULLIF関数は、与えられた2つの値が等しければNULLを返します。

 NULLIF(value1, value2)

引数value1とvalue2には任意のデータ型の式(たとえばカラム名やリテラル値)を与えます。2つの値が等しければ結果はNULLです。そうでなければvalue1が返されます。このとき、戻り値のデータ型はvalue1と同じです。以下にNULLIF関数を用いてゼロ除算を避ける例を示します。

 column1 / NULLIF(column2, 0)

この式の結果は、column2が0のときはNULL、そうでなければcolumn1/column2です。

 COALESCE(column1 / NULLIF(column2, 0), 0)

この例では上述のCOALESCE関数を併用してcolumn2が0のときの結果を0としています。

6.8.5.15.RIGHT(末尾の文字列)

RIGHT関数は、文字列の末尾(右)から指定文字数分の部分文字列を返します。

 RIGHT( &lt;text&gt;, &lt;number&gt;)

text引数には値が文字列型の式(たとえば文字列リテラルや文字列型のカラム名)を与えます。number引数には文字数を指定します。文字数が負の値のときは、その値の絶対値に等しい文字数の分だけ文字列の先頭を除いた部分文字列を返します。

6.8.5.16.ROUND(四捨五入)

ROUND関数は、与えられた数値を四捨五入して返します。

 ROUND(number)

引数には値が数値型の式(たとえば数値リテラルや数値型のカラム名)を与えます。戻り値のデータ型は入力値と同じです。たとえばROUND(23.4)は23を返します。

6.8.5.17.SUBSTR(文字列切出)

SUBSTR関数は、与えられた文字列の部分文字列を返します。

 SUBSTR(text, number1, number2)

text引数には値が文字列型の式(たとえば文字列リテラルや文字列型のカラム名)を与えます。number1引数には部分文字列の開始位置(文字列の先頭が0)、number2引数には部分文字列の文字数を整数で与えます。

6.8.5.18.TO_CHAR(文字列化)

TO_CHAR関数は、種々のデータ型の値を整形された文字列に変換します。

 TO_CHAR(value, text)

value引数には整形される値を与えます。text引数には出力書式を定義するテンプレートを文字列で与えます。TO_CHAR関数の用例を以下に示します。

 TO_CHAR('Dec 25 2016'::date, 'YYYY-MM-DD')
     結果:'2016-12-25'
 TO_CHAR('2016-12-25'::date, 'Dy, Mon DD YYYY')
     結果:'Sun, Dec 25 2016'
 TO_CHAR('12 hours 34 minutes 56 seconds'::interval, 'HH24:MI:SS');
     結果:'12:34:56'
 TO_CHAR(123, '9999')
     結果:'  123'
 TO_CHAR(123, '0000')
     結果:' 0123'
 TO_CHAR(-123, '9999')
     結果:' -123'
 TO_CHAR(-123, '0000')
     結果:'-0123'
 TO_CHAR(-123, 'FM99999')
     結果:'-123'
 TO_CHAR(123, '9999.9')
     結果:'  123.0'
 TO_CHAR(123, 'FM9999.9')
     結果:'123.'
 TO_CHAR(12.3, '999.999')
     結果:'  12.300'
 TO_CHAR(12.3, 'FM999.999')
     結果:'12.3'
 TO_CHAR(1234, '99')
     結果:' ##'
 TO_CHAR(-1234, '99')
     結果:'-##'

書式テンプレートの詳細についてはPostgreSQLマニュアルのデータ型書式設定関数の節を参照してください。

 https://www.postgresql.jp/document/9.4/html/functions-formatting.html
6.8.5.19.UPPER(大文字変換)

UPPER関数は、与えられた文字列を大文字に変換します。

 UPPER(text)

text引数には値が文字列型の式(たとえば文字列型のカラム名)を与えます。戻り値のデータ型は文字列型です。

6.9.絞り込み条件

絞り込み条件(where)はDBテーブル・ビューに格納されたレコードのうち、読み出しや更新などのデータ操作の対象となるレコードを選択するための条件を記述するオプションです。絞り込み条件を指定すると、その条件を満たすレコードのみが処理対象となります。絞り込み条件を指定しなければDBテーブル・ビューの全レコードが処理対象となります。絞り込み条件として指定できるオブジェクトは以下のとおりです。

 1. カラム名と値の対から成るオブジェクト
 2. サブクエリ(副問い合わせ)を含むオブジェクト
 3. 絞り込み条件の論理和・論理積を表すオブジェクト

6.9.1.カラム名と値の対

絞り込み条件としてカラム名と値の対から成る次の形式のオブジェクトを与えた場合、カラムの値が所与の関係を満たすかどうかをすべての対について調べます。

 {"カラム名1": カラム1の値, "カラム名2": カラム2の値, ...}

カラムの値として指定できるのは以下のものです。

 a. 数値や文字列などのリテラル(即値)
 b. {op: 演算子, value: 値} の形式のオブジェクト
 c. {op: 演算子, values: [値1, 値2, ...]} の形式のオブジェクト
 d. {op: 演算子, min: 下限値, max: 上限値} の形式のオブジェクト
 e. {op: 演算子} の形式のオブジェクト
6.9.1.1.リテラル

値として数値や文字列などのリテラル(即値)を指定した場合、その値とカラムの値が等しいかどうかを調べます。この指定方法は、後述の比較演算子を用いた形式で {op: "=", value: 値} と記述するのと同等です。

6.9.1.2.比較演算子

値として次の形式のオブジェクトを与えた場合、カラムの値とvalueの値を演算子opで比較します。

 {op: 演算子, value: 値}

opには以下の演算子が指定できます。

=
等しい
!=
等しくない
<>
等しくない
<
より小さい
<=
より小さい、または等しい(以下)
>
より大きい
>=
より大きい、または等しい(以上)
LIKE
valueで与えられたパタン文字列に一致する
NOT LIKE
valueで与えられたパタン文字列に一致しない

パタン文字列の最初および最後に現れるパーセント記号(%)は0個以上の文字の並びと一致します。たとえば {op: "LIKE", value: "日本%"} と指定すると "日本"、"日本人"、"日本列島" などに一致します。パタン文字列については後述の【パタン文字列】の節を参照してください。

6.9.1.3.IN

値として次の形式のオブジェクトを与えた場合、カラムの値がvaluesの要素として含まれるかどうかを調べます。

 {op: 演算子, values: [値1, 値2, ...]}

opには以下の演算子が指定できます。

IN
カラムの値がvaluesの要素として含まれる
NOT IN
カラムの値がvaluesの要素として含まれない

valuesには1つ以上の要素からなる配列を与えます。空の配列を与えるとエラーになります。

6.9.1.4.BETWEEN

値として次の形式のオブジェクトを与えた場合、カラムの値が最小値と最大値で表された範囲に含まれるかどうかを調べます。

 {op: 演算子, min: 最小値, max: 最大値}

opには以下の演算子が指定できます。

BETWEEN
カラムの値が範囲内にある(最小値以上かつ最大値以下である)
NOT BETWEEN
カラムの値が範囲外にある(最小値以上でない、または最大値以下でない)
6.9.1.5.IS NULL

値として次の形式のオブジェクトを与えた場合、opに指定した条件が成り立つかどうかを調べます。

 {op: 演算子}

opには以下の演算子が指定できます。

IS NULL
カラムの値がNULLである
IS NOT NULL
カラムの値がNULLではない

6.9.2.サブクエリによる絞り込み

サブクエリを用いた絞り込み条件には以下のものがあります。

 a. {カラム名: {op: 演算子, ref: サブクエリ}, ...}の形式のオブジェクト … カラムの値とサブクエリの結果をop:プロパティで指定した演算子で比較します。この場合のサブクエリは結果が1件だけでなければなりません。
 b. {カラム名: {op: 演算子, q: ALLまたはANYまたはSOME, ref: サブクエリ}, ...}の形式のオブジェクト … カラムの値とサブクエリの結果をop:プロパティで指定した演算子で比較して、すべて(q:プロパティの値がALLの場合)または1件以上(ANYまたはSOMEの場合)について真かどうかを調べます。
 c. {EXISTS: {ref: サブクエリ}}の形式のオブジェクト … サブクエリの結果が1件以上あるか否かを調べます。

ref:プロパティにはサブクエリオブジェクトを与えます。サブクエリオブジェクトについては【サブクエリ】の節を参照してください。

6.9.3.絞り込み条件の論理和・論理積

次の形式で絞り込み条件オブジェクトの配列を与えた場合、それらの絞り込み条件の論理和(OR)や論理積(AND)が成り立つかどうかを調べます。

 {論理演算子: [絞り込み条件1, 絞り込み条件2, ...]}

論理演算子には以下のものが指定できます。

OR
論理積(「または」の意)
AND
論理積(「かつ」の意)

6.9.4.用例

絞り込み条件の用例を以下に示します。

  1. 社員番号が100に等しいレコードを選択します。

    {"社員番号": 100}

  2. 年齢が20歳以上のレコードを選択します。

    {"年齢": {op: ">=", value: 20}}

  3. 年齢が20歳以上で、なおかつ性別が女性のレコードを選択します。

    {"年齢": {op: ">=", value: 20}, "性別": "女性"}

  4. 性別が男性または未指定のレコードを選択します。

    {"性別": {op: "IN", values: ["男性", "未指定"]}}

  5. 注文日が2010年のレコードを選択します。

    {"注文日": {op: "BETWEEN", min: 2010/01/01", max: "2010/12/31"}}

  6. 年齢が20歳以上、または性別が女性のレコードを選択します。

    {"OR": [{"年齢": {op: ">=", value: 20}}, {"性別": "女性"}]}

また、サブクエリの例として次のSQL文を考えます。この問い合わせは天気(weather)テーブルを検索して最低気温(temp_lo)カラムの値が最大の都市名(city)カラムの値を返します。

 SELECT city FROM weather
 WHERE temp_lo = (SELECT max(temp_lo) FROM weather);

この問い合わせをBuddyで実現するには次のようなスクリーンプログラムを記述します。

 var tableName = "weather";
 var subquery = this.tables[tableName].select(["max(temp_lo)"], {});
 var options = {
     where: {"temp_lo": {op: "=", ref: subquery}},
 };
 this.tables[tableName].readData(options, (function(error, data) {
     ...
 });

このときoptions.whereに与えられる絞り込み条件は以下の通りです。

 {"temp_lo": {op: "=", ref: {select: ["max(temp_lo)"], from: {model: "weather"}}}}

7.自動計算

本節では自動計算に用いるAPIについて説明します。

7.1.utilオブジェクト

utilオブジェクトは、スクリーンモジュールの自動計算の設定でスクリプトを選んだ場合に、スクリーンモジュールのcalculateプロパティに設定する関数の引数として渡されてくるオブジェクトです。utilオブジェクトには自動計算の記述に便利な関数がまとめられています。

たとえば2つのテキストBOXモジュールTEXTBOX1,TEXTBOX2に入力されている値を足し合わせて文字列モジュールLABEL1に表示するにはスクリーンのloadイベントハンドラに以下のようなスクリプトを追加します。

 buddyscreen.on("load", async(evt)=>{
     // 自動計算の例
     buddyscreen.items.LABEL1.calculate = (util)=>{
         return util.sum("TEXTBOX1", "TEXTBOX2")
     }
 })

LABEL1のcalculateプロパティに設定した関数のutil引数に、本項で説明するutilオブジェクトが渡されてきます。上述の例で用いているutil.sum()は引数で与えられた名前の2つのモジュールの現在の値を足し合わせた値(総和)を計算する関数です。

7.1.1.util.int

util.int関数はname引数で与えられた名前のモジュールの現在の値を整数値として返します。

 util.int(name)

7.1.2.util.numeric

util.numeric関数はname引数で与えられた名前のモジュールの現在の値を実数値として返します。

 util.numeric(name)

7.1.3.util.sum

util.sum関数は引数で与えられた1つ以上の名前のモジュールの現在の値の総和を返します。

 util.sum(name1, name2, ...)