Api daten verarbeiten - in Tabelle ausgeben - bitte um Hilfe

klausi89

Erfahrenes Mitglied
ich kann irgendwie machen was ich will.....hab schon gefühlte tausend varianten durchprobiert
ich bekomme aus den craetion_date die in Tage angegeben sind keine angaben in Monaten (gerundet)

und aus den Url wollte ich eigentlich nen klickbaren bootstrap button machen und an jede url /r=referralname anhängen

ich schau da wie ins Uhrwerk...ist eben echt blöd wenn man da garnich weiß was man macht...so wie die Tabelle nun ist kann ich sie leider dann auch nicht verwenden.....

trotzdem danke mal gucken ob ich irgendwie noch was rausfinde im moment bin ich ratlos da geh ich lieber erstmal mit dem Hund raus....:)
 

Sempervivum

Erfahrenes Mitglied
So funktioniert es mit den Wochen und dem Link:
Code:
        $('#table-ajax').DataTable({
            "processing": true,
            "ajax": {
                "url": "datatables-ajax.json",
                "dataSrc": "list_data.premium.BTC"
            },
            "columns": [
                { "data": "name" },
                { "data": "name" },
                { "data": "url" },
                { "data": "creation_date" }
            ],
            "order": [[1, "desc"]],
            "columnDefs": [
                {
                    "render": function (data, type, row) {
                        return Math.round(data / 30.5);
                    },
                    "targets": 3
                },
                {
                    "render": function (data, type, row) {
                        var thehtml = '<a class="lnkbtn" href="' + data + '">' + data + '</a>';
                        return thehtml;
                },
                    "targets": 2
                }
            ]
        });
Button <button> und Link <a href=""> vertragen sich leider nicht. Wie man es auch schachtelt, es wird nicht valide. Ich empfehle, auf <button> zu verzichten und stattdessen das a-href-Element entspr. zu gestalten. Wenn ich mir dies ansehe:
http://getbootstrap.com/docs/4.0/components/buttons/
ist es mit wenigen Zeilen CSS getan:
Code:
        .lnkbtn {
            display: inline-block;
            padding: 5px;
            border-radius: 3px;
            background-color: darkgrey;
            color: white;
            text-decoration: none;
        }
 
Zuletzt bearbeitet:

klausi89

Erfahrenes Mitglied
Danke so geht es - hab einen Bootstrap button gemacht .....btn btn-primay btn-sm

jez nur noch die Frage könntest du mir bitte kurz erklären warum die Matherechnung Data / 30.5 - wofür steht denn die 30.5

und wie könnte ich im Button statt der Url - z.Bsp. View Site oder ähnliches stehen haben
 

klausi89

Erfahrenes Mitglied
Danke so geht es - hab einen Bootstrap button gemacht .....btn btn-primay btn-sm

jez nur noch die Frage könntest du mir bitte kurz erklären warum die Matherechnung Data / 30.5 - wofür steht denn die 30.5

und wie könnte ich im Button statt der Url - z.Bsp. View Site oder ähnliches stehen haben
 

klausi89

Erfahrenes Mitglied
Hallo Sempervivum ich hätte da nochma eine Frage

{
"render": function (data, type, row) {
return Math.round(data / 30.5);
},
"targets": 2

}

gibt es dieses auch für Division/ Multiplikation etc.
meinetwegen data/100000 (Division) aber finde da nichts so richtig
bin mir nicht sicher ob Math.floor da das richtige ist

und

ich habe eine Zeile mit einer progressbar verknüpft

{
"render": function (data, type, row) {
var thehtml = '<div class="progress"><div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="' + data + '" aria-valuemin="0" aria-valuemax="100" style="width:' + data + '%">' + data + '</div></div>';
return thehtml;
},
"targets": 6
},

gibt es da die Möglichkeit die Math.round mit einzubauen....

hatte es extra probiert

{
"render": function (data, type, row) {
return Math.round(data,2);
},
"targets": 6

}

da rundet er zwar auf 2 Stellen nach dem Komma aber die Progressbar wird dann nicht mehr angezeigt
Vielleicht könntest du dazu nochmal was schreiben.
Danke
 

Sempervivum

Erfahrenes Mitglied
gibt es dieses auch für Division/ Multiplikation etc.
meinetwegen data/100000 (Division) aber finde da nichts so richtig
bin mir nicht sicher ob Math.floor da das richtige ist
Selbstverständlich, Du kannst alle Rechenoperationen, die JS unterstützt, verwenden.
da rundet er zwar auf 2 Stellen nach dem Komma aber die Progressbar wird dann nicht mehr angezeigt
Vermutlich hast Du beide Codes für das Rendern von Spalte 6 hintereinander notiert. In diesem Fall überschreibt die letzte Definition alle davor. Du muss beides zusammen fassen:
Code:
"render": function (data, type, row) {
    var thehtml = '<div class="progress"><div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="' + data + '" aria-valuemin="0" aria-valuemax="100" style="width:' + data + '%">' + Math.round(data,2) + '</div>';
     return thehtml;
},
"targets": 6
},
 

klausi89

Erfahrenes Mitglied
Einwandfrei, danke dir eine letzte Frage hätte ich noch

was mich jetzt noch stört ist das jeder den Code meiner Tabelle einfach einsehen könnte vorallem weil der Apikey da ja auch drin stehen würde - hab das zwar ausgelagert in eine php datei aber der restliche code und wo die api abgerufen wird ist ja nun trotzdem für jeden sichtbar.
Kann man da was machen ?
 

Sempervivum

Erfahrenes Mitglied
Das ist mir früher in anderem Zusammenhang auch schon aufgefallen. Jeder kann den Code einsehen und den API-Key stehlen. Leider kenne ich keine Lösung dafür.