databoxdex
Version:
216 lines (171 loc) • 6.27 kB
JavaScript
var m = require("mithril")
appendField = function(e) {
var record_index = e.srcElement.getAttribute('record')
var field_index = e.srcElement.getAttribute('field')
var tmp = {
name: records[record_index].generatorData['data'].name,
type: records[record_index].generatorData['data'].type,
length: records[record_index].generatorData['data'].length
}
if ((tmp.name == '') || (tmp.type == '')) {
return false;
}
records[record_index].recordData.push(tmp);
records[record_index].generatorData['data'].name = '';
records[record_index].generatorData['data'].type = 'c';
records[record_index].generatorData['data'].length = '';
}
appendIDField = function(e) {
var record_index = e.srcElement.getAttribute('record')
var field_index = e.srcElement.getAttribute('field')
var tmp = {
name: records[record_index].generatorData['dataID'].name,
value: records[record_index].generatorData['dataID'].value
}
// var exists = false;
// for (var i = 0; i < dataBox['data'].length; i++) {
// if ( dataBox[arr.substring(0,arr.length-2)][i].name == tmp.name ) {
// exists = true;
// break
// }
// }
if ((tmp.value == '')) {
return false;
}
records[record_index].recordDataID.push(tmp);
records[record_index].generatorData['dataID'].name = '';
records[record_index].generatorData['dataID'].value = '';
}
removeField = function(e) {
var record_index = e.srcElement.getAttribute('record')
var field_index = e.srcElement.getAttribute('field')
var toDelete = [];
for (var i = 0; i < records[record_index].recordDataID.length; i++) {
if (records[record_index].recordDataID[i].name == records[field_index].recordData.name) {
toDelete.push(i);
}
}
for (var i = 0; i < toDelete.length; i++) {
records[record_index].recordDataID.splice(toDelete[i],1)
}
records[record_index].recordData.splice(field_index, 1);
}
removeIDField = function(e) {
var record_index = e.srcElement.getAttribute('record')
var field_index = e.srcElement.getAttribute('field')
records[record_index].recordDataID.splice(field_index, 1);
}
generateABAP = function(e) {
var record_index = e.srcElement.getAttribute('record')
var ABAPstringBegin = 'BEGIN OF record,<br>';
var ABAPstringData = '';
var ABAPstringEnd = 'END OF record.<br>'
records[record_index].recordData.map(function(obj) {
// type TYPE c LENGTH 1,
ABAPstringData += obj.name + ' TYPE '
ABAPstringData += obj.type
if (parseInt(obj.length) > 0) {
ABAPstringData += ' LENGTH ' + obj.length + ' ,<br>'
} else {
ABAPstringData += ',<br>'
}
})
// console.log(ABAPstringBegin + ABAPstringData + ABAPstringEnd);
// copyToClipboard(ABAPstringBegin + ABAPstringData + ABAPstringEnd)
// alert('Copied to clipboard');
var win = window.open("", "Title", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=780, height=200, top="+(screen.height-400)+", left="+(screen.width-840));
win.document.body.innerHTML = ABAPstringBegin + ABAPstringData + ABAPstringEnd;
}
appendNewRecord = function() {
records.push({
generatorData : {
data: {
name: '',
type: 'c',
length: ''
},
dataID: {
name: '',
value: ''
}
},
recordData: [],
recordDataID: []
});
}
removeRecord = function(index) {
if (index==0) return false;
records.splice(index, 1);
}
convertRow = function(row, field) {
var tmpFields = [];
var pos = 0;
var string = '';
for (var i = 0; i < field.length; i++) {
string = row.substring(pos,(parseInt(field[i].length)+pos));
if (string.trim() == '') {
string = ' ';
}
tmpFields.push( string );
pos+=parseInt(field[i].length)
}
// if (pos<=row.length) {
// tmpFields.push( row.substring((row.length-pos),row.length) )
// }
databoxArrayData.push(tmpFields);
}
databoxConvert = function() {
databoxArrayData = []
var rowIndex = 0;
if (databoxData.length === 0) return false
for (rowIndex = 0; rowIndex < databoxData.length; rowIndex++) {
identified = false;
var identifier = ''
var tmpRow = []
row = databoxData[rowIndex]
for (var i = 0; i < records.length; i++) {
identifier = ''
for (var y = 0; y < records[i].recordDataID.length; y++) {
identifier += records[i].recordDataID[y].value
}
if ((row.substring(0, identifier.length) == identifier)&&identifier.length!==0) {
convertRow(row,records[i].recordData)
identified = true
break;
}
}
if (identified == false) {
tmpRow.push(row)
databoxArrayData.push(tmpRow)
console.log('Row '+rowIndex+' could not be matched with any records.')
}
}
}
labelData = function() {
function label(text, title) {
return m('span',{class:"label label-default",title:""},[m.trust(text)])
}
var template = []
for (var i = 0; i < databoxArrayData.length; i++) {
for (var x = 0; x < databoxArrayData[i].length; x++) {
template.push( label(databoxArrayData[i][x]) )
}
template.push( m('br') )
}
return template
}
refreshData = function() {
databoxConvert()
m.redraw()
}
importJSON = function() {
var json = window.prompt();
records = JSON.parse(json);
refreshData();
}
exportJSON = function() {
var win = window.open("", "Title", "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=yes, resizable=yes, width=780, height=200, top="+(screen.height-400)+", left="+(screen.width-840));
win.document.body.innerHTML = JSON.stringify(records);
// copyToClipboard(JSON.stringify(records));
// alert('JSON export was saved in your Clipboard')
}