Sha256: e6a384c36e884b96939ae3b0d4f3a9b839470e2196d88403bc0ed60a5481a4c1

Contents?: true

Size: 1.9 KB

Versions: 83

Compression:

Stored size: 1.9 KB

Contents

// PARAM: h JSONB
// PARAM: row_info JSONB
// PARAM: return_grid_data boolean default false
// PARAM: dis boolean default false
// RETURN: JSONB
var sqls = []
var ress = []
try {
    var query_dir = plv8.find_function('query_grid_dir');
    var errinfo = plv8.find_function('errinfo');
    var ih = {};
    var sql = 'SELECT metadata, lenient, name, group_id, data FROM marty_data_grids WHERE id = $1'
    var dg = plv8.execute(sql, [row_info['id']])[0];
    var res;
    ['h','v'].forEach(function(dir) {
        var infos = dg["metadata"].filter(function(md) { return md["dir"] == dir; });
        if (infos.length == 0)
        {
            ih[dir] = [0]
            return
        }
        a = query_dir(h, infos, row_info);
        sqls.push(a);
        ih[dir] = []
        if (a) {
            res = plv8.execute(a[0], a[1]);
            ress.push(res);
            for (var j = 0; j < res.length; j++)
            {
                ih[dir].push(res[j]["index"])
            }
        }
        if (dis && ih[dir].length > 1)  {
            throw Error("matches > 1");
        }
    });
    if ((ih["v"].length == 0 || ih["h"].length == 0) &&
        !dg['lenient'] && !return_grid_data) {
        throw Error("Data Grid lookup failed");
    }
    
    vi = ih["v"].length > 0 ? Math.min.apply(9999, ih["v"]) : null
    hi = ih["h"].length > 0 ? Math.min.apply(9999, ih["h"]) : null
    
    var result = null;
    if (vi!==null && hi!==null) {
        result = dg["data"][vi][hi];
    }
    return { "result" : result,
             "name"   : dg["name"],
             "data"   : return_grid_data ? dg["data"] : null,
             "metadata" : return_grid_data ? dg["metadata"] : null
           };
} catch (err) {
    ei = errinfo(err);

    ei["error_extra"] = {}
    ei["error_extra"]["sql"] = sqls;
    ei["error_extra"]["results"] = ress;
    ei["error_extra"]["params"] = h;
    ei["error_extra"]["dg"] = dg;

    return ei;
}

Version data entries

83 entries across 83 versions & 1 rubygems

Version Path
marty-2.6.6 db/js/lookup_grid_distinct_v1.js
marty-2.6.5 db/js/lookup_grid_distinct_v1.js
marty-2.6.4 db/js/lookup_grid_distinct_v1.js
marty-2.6.3 db/js/lookup_grid_distinct_v1.js
marty-2.6.2 db/js/lookup_grid_distinct_v1.js
marty-2.6.1 db/js/lookup_grid_distinct_v1.js
marty-2.6.0 db/js/lookup_grid_distinct_v1.js
marty-2.5.9 db/js/lookup_grid_distinct_v1.js
marty-2.5.8 db/js/lookup_grid_distinct_v1.js
marty-2.5.7 db/js/lookup_grid_distinct_v1.js
marty-2.5.6 db/js/lookup_grid_distinct_v1.js
marty-2.5.5 db/js/lookup_grid_distinct_v1.js
marty-2.5.4 db/js/lookup_grid_distinct_v1.js
marty-2.5.2 db/js/lookup_grid_distinct_v1.js
marty-2.5.1 db/js/lookup_grid_distinct_v1.js
marty-2.5.0 db/js/lookup_grid_distinct_v1.js
marty-2.4.9 db/js/lookup_grid_distinct_v1.js
marty-2.4.8 db/js/lookup_grid_distinct_v1.js
marty-2.4.7 db/js/lookup_grid_distinct_v1.js
marty-2.4.6 db/js/lookup_grid_distinct_v1.js