Табулятор ajaxResponse со сложными вложенными json свойствами данных - PullRequest
0 голосов
/ 08 февраля 2020

Может ли кто-нибудь помочь с передачей следующих данных json в Tabulator через функцию ajaxResponse? Было бы очень полезно для полного примера того, как построить таблицу из данных json ниже. Спасибо за помощь : 3 Ошибка загрузки данных - невозможно обработать данные из-за недопустимого типа данных. Ожидается: массив Получено: объект Данные:

{5ofq7: {…}, l4uey: {…}, 66ute: {…} , f3wc2: {…}, v6lm2: {…},…}

5ofq7: id: «39570» item_key: «5ofq7» name: «AustralianSuper Pty Ltd» ip: «101.112.84.10»

meta: 9665u: "AustralianSuper Pty Ltd" jrv58: "AustralianSuper High Growth" syqxv: "ISF0031AU" mbwaa: "100000" clc6v: "" og0n12: "4.47" m0tyf: "" mf8ge: "17.52" r58wq2: "12.17" af3q82: "10.37" ri3w1: "9.86" krmsm: "" f8zyy2: "5.92" kztr1: "" pi5q4: "7.35" luul4: "6.31" p9vvi: "" fi17d: "" eft3 : "" b7omg: "" 9n8sj: "" 187j5: "" 166p3: "8.71" 9k83f: "12.43" v5jn5: "14.07" 8qs59: "AustralianSuper Pty Ltd" 8j6t8: "10496" kvwkh2: "0.51" g7pnc "dfka2:" "zrpgi2:" "lkg952:" " o77jo: "" 15cc6: "Многосекторный агрессивный" 73vew: "Фонд пенсионного обеспечения" n5i51: "Morningstar Aus Mse c Aggressive TR AUD" jvkfe: "Открытый" t1yvr: "0" kcn4h: "0" hwdr8: "29.989" ivfki : "49.708" rzr0z: "2.119" 9bw4z: "2.911" 8cpa5: "4.042" 6hq0z: "6.91" 1y2l7: "1.69" yl46p: "1.69" ih8bm: "" zds53: "" v1y5k: "" fq04j: " en2oj: "" stvhv: "" rjap92: "Admin" Значение rjap92: "1"

1 Ответ

0 голосов
/ 09 февраля 2020

Управляемому, чтобы собрать воедино решение, которое работает, определенно может быть улучшено более опытными разработчиками. Благодаря #Arnauld и #Felix Kling - это решение основано на их вкладе SO.

    <div id="example-table"></div>
    <script>
    var table = new Tabulator("#example-table", {
        autoColumns:true,
        height: 500,
        layout: "fitData",
        layoutColumnsOnNewData:true,
        ajaxURL:"https://xxxxx.com/wp-json/frm/v2/forms/22/entries?",
        ajaxResponse:function(url, params, response){
           var obj = response;
           var res = [];
           Object.keys(obj).forEach(k => {    //Convert nested objects to array of objects
               Object.keys(obj[k]).forEach(v => {
               (res[v] = (res[v] || { id: v }))[k] = obj[k][v];
                });
           });
         res=res.meta;                          //Select the required object from array
         var obj = res;
         var data =[];      //Convert object to required array format needed for Tabulator
             function toArray(obj) {     
             const result = [];
             for (const prop in obj) {
                 const value = obj[prop];
             if (typeof value === 'object') {
                result.push(value);
              }
              else {
              }
              }
        return result;
        }
    data=toArray(res);
    return data;
    },
    });
    </script>
...