69e5852480cdf91d18b4e823c45070d5c5f44500
[ccsdk/features.git] / sdnr / wt / devicemanager / provider / src / main / resources / elasticsearch / plugins / head / src / app / data / resultDataSourceInterface.js
1 /**
2  * Copyright 2010-2013 Ben Birch
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this software except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 (function( app ) {
17
18         var data = app.ns("data");
19
20         data.ResultDataSourceInterface = data.DataSourceInterface.extend({
21                 results: function(res) {
22                         this._getSummary(res);
23                         this._getMeta(res);
24                         this._getData(res);
25                         this.sort = {};
26                         this.fire("data", this);
27                 },
28                 _getData: function(res) {
29                         var columns = this.columns = [];
30                         this.data = res.hits.hits.map(function(hit) {
31                                 var row = (function(path, spec, row) {
32                                         for(var prop in spec) {
33                                                 if(acx.isObject(spec[prop])) {
34                                                         arguments.callee(path.concat(prop), spec[prop], row);
35                                                 } else if(acx.isArray(spec[prop])) {
36                                                         if(spec[prop].length) {
37                                                                 arguments.callee(path.concat(prop), spec[prop][0], row)
38                                                         }
39                                                 } else {
40                                                         var dpath = path.concat(prop).join(".");
41                                                         if(! columns.contains(dpath)) {
42                                                                 columns.push(dpath);
43                                                         }
44                                                         row[dpath] = (spec[prop] || "null").toString();
45                                                 }
46                                         }
47                                         return row;
48                                 })([ hit._type ], hit, {});
49                                 row._source = hit;
50                                 return row;
51                         }, this);
52                 }
53         });
54
55 })( this.app );