サンプル(JavaScript)の利用方法について
ファイル
cstap_lib_get_field_element.js
ソースコード
/**<br /> * タイプ:ライブラリー<br /> *<br /> * 説明<br /> * フィールドタイプごとのエレメントの出しわけを行います<br /> * 主に一覧画面でのカスタマイズビューでの利用を想定しています<br /> *<br /> * 使い方<br /> * getFieldElement(record['レコード番号'])<br /> *<br /> * URL<br /> * http://toyokumo-blog.kintoneapp.com/wp-content/uploads/2014/05/cstap_lib_get_field_element.js<br /> *<br /> * @author Yuichi Ochiai <ochiai@cstap.com><br /> */</p> <p>/* フィールドタイプごとのデータの出しわけ */<br /> var getFieldElement = function(column) {<br /> var type = column['type'];<br /> var element = document.createElement('div');</p> <p> switch (type) {<br /> case 'SINGLE_LINE_TEXT':<br /> case 'MULTI_LINE_TEXT':<br /> case 'RADIO_BUTTON':<br /> case 'DROP_DOWN':<br /> case 'STATUS':<br /> case 'NUMBER':<br /> case 'CALC':<br /> case 'RECORD_NUMBER':<br /> element.innerHTML = column['value'];<br /> break;</p> <p> case 'LINK':<br /> var link = column['value'];<br /> element.innerHTML = '<a target="_blank" href="' + link + '">' + link + '</a>';<br /> break;</p> <p> case 'CHECK_BOX':<br /> case 'MULTI_SELECT':<br /> element.innerHTML = column['value'].join('<br />');<br /> break;</p> <p> case 'CREATOR':<br /> case 'MODIFIER':<br /> element.innerHTML = userLink(column['value']);<br /> break;</p> <p> case 'USER_SELECT':<br /> var values = column['value'];<br /> var users = [];<br /> for (var i = 0, l = values.length; i < l; i++) {<br /> users[i] = userLink(values[i]);<br /> }<br /> element.innerHTML = users.join('<br />');<br /> break;</p> <p> case 'DATE':<br /> var value = new Date(column['value']);<br /> element.innerHTML = value.toLocaleDateString();<br /> break;</p> <p> case 'TIME':<br /> var value = new Date(column['value']);<br /> element.innerHTML = value.toLocaleTimeString();<br /> break;</p> <p> case 'DATETIME':<br /> case 'CREATED_TIME':<br /> case 'UPDATED_TIME':<br /> var value = new Date(column['value']);<br /> element.innerHTML = value.toLocaleString();<br /> break;</p> <p> case 'FILE':<br /> var values = column['value'];<br /> for (var i = 0, l = values.length; i < l; i++) {<br /> element.appendChild(fileLink(values[i]));<br /> }<br /> break;</p> <p> case 'SUBTABLE':<br /> var records = column['value'];<br /> var t = document.createElement('table');<br /> var thead = document.createElement('thead');</p> <p> for (var i = 0, l = records.length; i < l; i++) {<br /> var record = records[i]['value'];<br /> var row = t.insertRow(i);<br /> for (var k in record)<br /> if (record.hasOwnProperty(k)) {<br /> if (i === 0) {<br /> var th = document.createElement('th');<br /> th.innerHTML = '<th>' + k + '</th>';<br /> thead.appendChild(th);<br /> }<br /> var cell = row.insertCell(row.cells.length);<br /> cell.appendChild(getFieldElement(record[k]));<br /> }<br /> }<br /> t.appendChild(thead);<br /> element.appendChild(t);<br /> break;<br /> }</p> <p> return element;<br /> };</p> <p>/* ユーザーへのリンク */<br /> var userLink = function(user) {<br /> var code = user['code'];<br /> var name = user['name'];<br /> return '<a target="_blank" href="/k/#/people/user/' + code + '">' + name + '</a>';<br /> };</p> <p>/* ファイルのダウンロードリンク */<br /> var fileLink = function(file) {<br /> var fname = file['name'];<br /> var fileKey = file['fileKey'];<br /> var url = '/k/v1/file.json?fileKey=' + fileKey;<br /> var ele = document.createElement('div');<br /> var a = document.createElement('a');<br /> a.href = "#";<br /> a.innerHTML = fname;<br /> a.onclick = function() {<br /> var xhr = new XMLHttpRequest();<br /> xhr.open('GET', url, false);<br /> xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');<br /> xhr.setRequestHeader("Accept-Charset", "x-user-defined");</p> <p> xhr.onreadystatechange = function(event) {<br /> if ((xhr.readyState === 4) && (xhr.status === 200)) {<br /> var blob = new Blob([xhr.response], {type: 'application/octet-stream'});<br /> var burl = window.URL || window.webkitURL;<br /> var blobUrl = burl.createObjectURL(blob);<br /> var alink = document.createElement("a");<br /> alink.href = blobUrl;<br /> alink.download = fname;<br /> alink.click();<br /> return true;<br /> }<br /> };<br /> xhr.send();<br /> };<br /> ele.appendChild(a);</p> <p> return ele;<br /> };<br />