diff --git a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleForm/widgets/FreeFormTableController.js b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleForm/widgets/FreeFormTableController.js index e592ce85c00f96ff1456611ee627679e301c4e53..411a4db6485ba01048a85a22ae9c080db9d8ca09 100644 --- a/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleForm/widgets/FreeFormTableController.js +++ b/plasmid/source/core-plugins/newbrowser/1/as/webapps/newbrowser/html/js/views/SampleForm/widgets/FreeFormTableController.js @@ -137,13 +137,67 @@ function FreeFormTableController(sample, isEnabled) { } this.importCSV = function(tableModel, $wrappedTable) { + var _this = this; var $fileInput = $("<input>", { "type" : "file"}); $fileInput.change(function(event) { var file = event.target.files[0]; var fileReader = new FileReader(); fileReader.onload = function(event) { + //Needed for the reading + var readedTableModel = { + name : "", + modelDetailed : [[]], + modelMini : { rows : [], columns : [] } + } + + var CSVReadingMode = { + NAME : 0, + MINI_ROWS : 1, + MINI_COLUMNS : 2, + DETAILED : 3 + } + + //Read model from file var contents = event.target.result; - var test = 0; + var lines = contents.split(";\n"); + + var csvReadingModeSelected = null; + for(var i = 0; i < lines.length; i++) { + var line = lines[i]; + if(line === "#Name") { + csvReadingModeSelected = CSVReadingMode.NAME; + } else if(line === "#Mini Rows") { + csvReadingModeSelected = CSVReadingMode.MINI_ROWS; + } else if(line === "#Mini Columns") { + csvReadingModeSelected = CSVReadingMode.MINI_COLUMNS; + } else if(line === "#Detailed") { + csvReadingModeSelected = CSVReadingMode.DETAILED; + } else { + switch(csvReadingModeSelected) { + case CSVReadingMode.NAME: + readedTableModel.name = line.split(';')[0]; + break; + case CSVReadingMode.MINI_ROWS: + readedTableModel.modelMini.rows.push(line.split(';')[0]); + break; + case CSVReadingMode.MINI_COLUMNS: + readedTableModel.modelMini.columns.push(line.split(';')[0]); + break; + case CSVReadingMode.DETAILED: + var columns = line.split(';'); + readedTableModel.modelDetailed.push(columns); + break; + } + } + } + + //Update Model + tableModel.name = readedTableModel.name; + tableModel.modelMini = readedTableModel.modelMini; + tableModel.modelDetailed = readedTableModel.modelDetailed; + + //Update DOM and UI + _this._updateChangesOnDOMandView(tableModel, $wrappedTable); }; fileReader.readAsText(file); }); @@ -183,7 +237,7 @@ function FreeFormTableController(sample, isEnabled) { csv += "#Detailed;\n"; for(var i = 0; i < tableModel.modelDetailed.length; i++) { if(i != 0) { - csv += "\n"; + csv += ";\n"; } for(var j = 0; j < tableModel.modelDetailed[i].length; j++) { if(j != 0) {