0

I have asked yet a similar question here

Actually I need to make dynamic this operation, beginning from this example:

$.when(myfun(my_args))
.done(function(res){

var one_x = ["label1_x"], one_d = ["label1"];
var two_x = ["label2_x"], two_d = ["label2"];

res['data'].forEach(function(items,index) {
  switch(res['data'][index]['Term']) {
    case 'label1':
      one_x.push(res['data'][index]['Index']);
      one_d.push(res['data'][index]['Value']);
      break;
    case 'label2':
      two_x.push(res['data'][index]['Index']);
      two_d.push(res['data'][index]['Value']);
      break;
  }
});

var mychart = bb.generate({

   data: {
       type: line();
       xs: {
              "label1":"one_x",
              "label2":"two_x"
       },
       columns: [
          one_x, one_d,
          two_x, two_d
       ],
       axis: {
           x: {
             type: "timeseries",
             tick: {
               format: "%Y-%m-%d"
             }
           }
       },
});

This comes right from my working code, I would like make this dynamic. I could use arrays to split information but I don't know how to pass arrays to bb object. Any hints?

rivaldid
  • 85
  • 1
  • 11
  • This is a data example: https://nopaste.ml/#XQAAAQAzAgAAAAAAAAA9goAZG5qYzLbk0ElsfqvDnJ8P0w0vAGKHEg16w656DyJ6fz3cE3sCd7wl0pvOp0oI/MN06pyNRxhpGig1EEB8IEsUO+EmbVXx8YAHWUOseInaYDa+/pQ1xmEIpnNV81f0DhPh8VmhB+M4LJdPDTGDpTrGNirVlzksgSxk5bnMJbrUr2XIkBh+mP/tswIm – rivaldid Jul 11 '23 at 09:24
  • https://nopaste.ml/#XQAAAQCbBAAAAAAAAAAQahiMp2YRt2txkPuit2MZKZhKd7cH2nyPtSl98rkJ5qzFRZ4PY33vA+XHwN8HMDNUYvyI2BuyxG7XpjrzPBDmub11vOoZ78G+QN9H4cM1U8AT4z4m0M2leUUu2d2YNo+xRgrcKhj8IUQWKKTncOiQ0ZMM9ohbPgYAr4en54g1W43oTBG9UBEFvkDCjiiV8p/bgCzxhucU9BkNhX711bO7tl60iaK5bXi+Gg3xW0D9/HIoCxOMH5OgXSxBQJ21v9PvImmXoWTNMvlkArHtsGJhBZQoevqKANMvNYJlx9Yl32THbnupy3VBXGE8DYL88FkCTuOSdxQwrHKoI+pToinbHhIuAfIGPAL/vDs+iWonQ3hh2AbtkE3UDEbkxGDxC28sGyCyWfDCKd7ZOEK2MdJohjcFnSW33jnoOXmw/yi9D9qhKdtbH4m+vjrU6jFrtiHlKqT8Ig5at1mD4XsdoFG2AGDdpxZzSo3mtx+YA3rFLaDEugxgiYAk3BVFSv+Pc6Mg – rivaldid Jul 12 '23 at 09:52
  • In the above nopaste I made my own data manipulation, now I have an array for columns attribute and an object for xs attribute. Billboard is not showing anything, what I am doing wrong? – rivaldid Jul 12 '23 at 09:53
  • https://jsfiddle.net/3cu7vsyk/ – rivaldid Jul 12 '23 at 10:12

1 Answers1

0

I solved:

$.when(post_api(get_chart))
.done(function(res) {

    var
        chartindex = $(),
        chartdata = {},
        chartdata_keyless = [];

    res.data.forEach(function(item,index) {

        var
            key = res.data[index].Term,
            value = res.data[index].Value,
            i = res.data[index].Index,
            keyindex = key+'_index',
            array_index = key+'_x',
            array_data = key+'_d';

        chartindex[key] = keyindex;

        chartdata[array_index] = chartdata[array_index] || [];
        chartdata[array_data] = chartdata[array_data] || [];

        (chartdata[array_index].length == 0) && chartdata[array_index].push(keyindex);
        (chartdata[array_data].length == 0) && chartdata[array_data].push(key);

        chartdata[array_index].push(i);
        chartdata[array_data].push(value);

    }); // end forEach

    //(Array.isArray(chartdata)) ? console.log('Valid array') : console.log('Not a valid array');

    $.each(chartdata, function(key, value) {
        //console.log('Key:', key);
        //console.log('Value:', value);
        chartdata_keyless.push(value);
    })

    //console.log(chartindex);
    //console.log(chartdata);
    //console.log(chartdata_keyless);

    var mychart = bb.generate({

        title: {
            text: "Trend last "+points+" points for audit data",
            position: "center",
        },

        data: {
            type: line(),
            xs: chartindex,
            columns: chartdata_keyless,
        },

        bindto: object,
        axis: {
            x: {
              type: "timeseries",
              tick: {
                format: "%Y-%m-%d"
              }
            }
        },

    }); // end chart

}); // end done
rivaldid
  • 85
  • 1
  • 11