Blockly.JavaScript['average'] = function(block) {

 var value_v1 = Blockly.JavaScript.valueToCode(block, 'v1', Blockly.JavaScript.ORDER_ATOMIC);
 var value_v2 = Blockly.JavaScript.valueToCode(block, 'v2', Blockly.JavaScript.ORDER_ATOMIC);
 // TODO: Assemble JavaScript into code variable.
 var code = '(' + value_v1 + '+' + value_v2 + ')/2';
 // TODO: Change ORDER_NONE to the correct strength.
 return [code, Blockly.JavaScript.ORDER_NONE];

};

Blockly.JavaScript['console_log'] = function(block) {

 var value_msg = Blockly.JavaScript.valueToCode(block, 'msg', Blockly.JavaScript.ORDER_ATOMIC);
 // TODO: Assemble JavaScript into code variable.
 var code = 'console.log(' + value_msg + ');';
 return code;

};

Blockly.JavaScript['import file'] = function(block) {

 var value_csv = block.getFieldValue("value_csv", Blockly.JavaScript.ORDER_MEMBER);
 var code = value_csv;
 //エラーを知らせてくれるやつ
 //block.setWarningText("You get it!");
 return [code,Blockly.JavaScript.ORDER_ATOMIC];

}; Blockly.JavaScript['kaiki'] = function(block) {

 var value_csv = Blockly.JavaScript.valueToCode(block, 'read_csv', Blockly.JavaScript.ORDER_ATOMIC);
 //value_csv=value_csv.replace( "(", "");
 //value_csv=value_csv.replace( ")", "");
 //var code =   "$.ajax({type: 'POST',url: 'cgi-bin/sample.cgi',contentType: 'application/json',data:JSON.stringify("+value_csv+"),success: function(data) {var data_json=Object.entries(data);console.log(data_json);  if (!data[0]) { return;  } }, error:function(){alert('Ajax失敗');} });";
 var code =   "$.ajax({type: 'POST',url: 'cgi-bin/sample.cgi',contentType: 'application/json',data:JSON.stringify("+value_csv+"),async:false,success: function(data) {console.log(data);a = data;  if (!data[0]) { return;  } }, error:function(){alert('Ajax失敗');} })";
 //var code =   'console.log('+JSON.stringify(value_csv)+');';
 return [code,Blockly.JavaScript.ORDER_ATOMIC];

}; Blockly.JavaScript['file_out'] = function(block) {

 var value_file = Blockly.JavaScript.valueToCode(block, 'file', Blockly.JavaScript.ORDER_ATOMIC);
 // TODO: Assemble JavaScript into code variable.
 var testArr = value_file;
 //var code = 'console.log(typeof(' + testArr  + '));console.log(' + testArr  + ');';
 //var code = 'console.log(typeof(' + testArr  + '));';
 //var code = 'var a = 0;\n'+ testArr + ';download(a, "test.csv");';
 //var code = 'var a = 0;\n'+ testArr + ';console.log(typeof(a))';
 var code = 'var a = 0;\n'+ testArr + ';(new CSV(a)).save(\'test.csv\');';
 //var code = 'console.log('+testArr+');\n';
 return code;

};

function download(content, filename) {

 // create a temporary "a" element.
 const a = document.createElement("a");
 document.body.appendChild(a);
 a.style = "display:none";
 content = content.map((content)=>content.join(',')).join('\r\n');
 const blob = new Blob([content], { type: "text/csv" });
 const url = window.URL.createObjectURL(blob);
 a.href = url;
 a.download = filename;
 a.click();
 window.URL.revokeObjectURL(url); // release the used object.
 a.parentNode.removeChild(a); // delete the temporary "a" element
 } 

class CSV {

 constructor(data, keys = false) {
   this.ARRAY  = Symbol('ARRAY')
   this.OBJECT = Symbol('OBJECT')
   this.data = data
   if (CSV.isArray(data)) {
     if (0 == data.length) {
       this.dataType = this.ARRAY
     } else if (CSV.isObject(data[0])) {
       this.dataType = this.OBJECT
     } else if (CSV.isArray(data[0])) {
       this.dataType = this.ARRAY
     } else {
       throw Error('Error: 未対応のデータ型です')
     }
   } else {
     throw Error('Error: 未対応のデータ型です')
   }
   this.keys = keys
 }
 toString() {
   if (this.dataType === this.ARRAY) {
     return this.data.map((record) => (
       record.map((field) => (
         CSV.prepare(field)
       )).join(',')
     )).join('\n')
   } else if (this.dataType === this.OBJECT) {
     const keys = this.keys || Array.from(this.extractKeys(this.data))
     const arrayData = this.data.map((record) => (
       keys.map((key) => record[key])
     ))
     console.log([].concat([keys], arrayData))
     return [].concat([keys], arrayData).map((record) => (
       record.map((field) => (
         CSV.prepare(field)
       )).join(',')
     )).join('\n')
   }
 }
 save(filename = 'data.csv') {
   if (!filename.match(/\.csv$/i)) { filename = filename + '.csv' }
   //console.info('filename:', filename)
   //console.table(this.data)
   const csvStr = this.toString()
   const bom     = new Uint8Array([0xEF, 0xBB, 0xBF]);
   const blob    = new Blob([bom, csvStr], {'type': 'text/csv'});
   const url     = window.URL || window.webkitURL;
   const blobURL = url.createObjectURL(blob);
   let a      = document.createElement('a');
   a.download = decodeURI(filename);
   a.href     = blobURL;
   a.type     = 'text/csv';
   a.click();
 }
 extractKeys(data) {
   return new Set([].concat(...this.data.map((record) => Object.keys(record))))
 }
 static prepare(field) {
   return '"' + (''+field).replace(/"/g, '""') + '"'
 }
 static isObject(obj) {
   return '[object Object]' === Object.prototype.toString.call(obj)
 }
 static isArray(obj) {
   return '[object Array]' === Object.prototype.toString.call(obj)
 }

} https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4927234/
https://www.jstage.jst.go.jp/article/qes/4/3/4_3/_article/-char/ja
https://www.jstage.jst.go.jp/result/global/-char/ja?languageKind=ja&item1=8&word1=%E7%94%B0%E5%8F%A3+%E7%8E%84%E4%B8%80&yearfrom=&cond1=2&translate=0&yearto=&bglobalSearch=false&fromPage=/search/global/_search/-char/ja
https://www.heisei-u.ac.jp/ba/fukui/pdf/analysis34.pdf
https://repository.kulib.kyoto-u.ac.jp/dspace/bitstream/2433/106108/1/0285-2.pdf
http://train.gomi.info/oatable/

=授業 水色=研究室内行事
月曜日火曜日水曜日木曜日金曜日
1-2研究会
3-4
5-6
7-8
9-10
11-14予備日

実験1に必要なファイル

#ref(): File not found: "sample.ino" at page "横井_backup"


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS