Read the statement by Michael Teeuw here.
Getting API data in table
-
I get data through an API, lets say:
alarm: "0" d0neerslag: "4" d0tmax: "12" d0tmin: "5" ....Currently I’m making a table, row and cells in the getDOM function to display the data:
var TemperatuurRow = document.createElement("tr"); TemperatuurRow.className = "temperatuur-row"; var TempTextCell = document.createElement("td"); TempTextCell.className = "small"; TempTextCell.innerHTML = "Neerslag"; TemperatuurRow.appendChild(TempTextCell); table.appendChild(TemperatuurRow); var TempDataCell = document.createElement("td"); TempDataCell.className = "small fas fa-thermometer-half"; TempDataCell.innerHTML = " " + MWB.d0neerslag; TemperatuurRow.appendChild(TempDataCell); table.appendChild(TemperatuurRow); ... return table;This is a lot of type-work. I was thinking isn’t there a better way?
I was thinking of creating a table with the names and combine this with the results from the API. Can this be done? And how?(still trying to learn JS, but not afraid to ask) :smiling_face:
-
@htilburgs you could make a routine to do each element.
Using replace or regular expression is just as much work in my opinion
-
@sdetweil, so what you’re saying is continu as I’m started with table, row, cells manual?
I was hoping something in the next style would work.
for (i = 0; i < this.MWB.length; i++) { var MWB = this.MWB[i];and combining this with the text of the result. But I can’t figure it out.
-
@htilburgs well, thinking something like this , same work, less actual code, more readable
// create elements... take an object in as parms, makes it easier to understand // what is supplied vs not newElement: function(parms_object ){ var e=null; switch(parms_object.type){ case 'table': e=document.createElement('table'); break; case 'row': e=document.createElement('tr'); break; case 'column': e=document.createElement('td'); break; } if(parms_object.classname !== undefined) e.className=parms_object.classname; if (parms_object.value !== undefined) e.innerHTML = parms_object.value if(parms_object.parent !== undefined) (parms_object.parent).appendChild(e) return e; }, getDom: function(){ var wrapper = document.createElement("div"); var table = this.newElement({type:'table'}) // note here, just type specified, to test code above // repeat the rows/columns block as needed maybe in a loop as well.. // get the list of items in the object for(item_name of Object.keys(this.MBW)){ // i think this returns keys in position order, not alphabetical var row=this.newElement({type:"row",classname:"temperatuur-row",parent:table}) // add a column for the data item name this.newElement({parent:row, type:"column",classname:"small",value:item_name}) // parms in any order // get the data for the item let item_value= this.MBW[item_name] this.newElement({type:"column",classname:"small",value:item_value,parent:row}) } wrapper.appendChild(table) return wrapper } -
@sdetweil Thank you for the reply. I’m going to play with it and see which kind suited me the best.
-
@htilburgs by using a routine to do the element create->parent.append() you reuse one copy of the code, instead of the tedious copy/paste/edit/fix cycle…
some people use div/span/span/span instead of table… this routine will work the same with two case statements added, so you can use div and span instead of tr/td
-
@sdetweil hi did you make a table then? where did you put your java code? i.e. which file?
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login