BaseDataletBehaviors.js
2.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
/**
* Created by Luigi Serra on 25/06/2015.
*/
var BaseDataletBehavior ={
properties: {
/**
* It represent the data url from CKAN api
*
* @attribute dataUrl
* @type string
* @default 'null'
*/
dataUrl: {
type: String,
value: ""
},
/**
* It represents one or multiple query string in JsonPath format(separated by spaces) to apply to data in order to pass to the components
*
* @attribute query
* @type string
* @default 'null'
*/
query:{
type: String,
value: ""
},
/**
* The selected and transformed data you can use in presentation phase
*
* @attribute data
* @type string
* @default 'null'.
*/
data: {
type: Array,
value: []
}
},
factoryImpl: function(data_url, query) {
this.data_url = data_url;
this.query = query;
}
}
var WorkcycleBehavior = {
_component: null,
/**
* Request data from source(e.g. CKAN by api) using some kind of technology(e.g. Ajax)
*
* @method requestData
*/
requestData: function(){
},
/**
* Select the fields from data(typically json) previously retrieved by ajax request. The selection could be done by jsonPath but
* it depends on the representation data format(CKAN apies return a json representation of the dataset).
*
* @method selectData
*/
selectData: function(){
},
/**
* Filter data previously selected. An example of filterting could be an expression such "fields > 30" or "fields = 'AAA'"
* If you are using jsonPath to select the datas you can apply an expression directly in the jsonPath query string.
*
* @method filterData
*/
filterData: function(){
},
/**
* Transform the selected data in order to build the structure that the presentation phase needs.
*
* @method transformData
*/
transformData: function(){
},
/**
* Called when core-ajax component receive the json data from called url. It is responsible to
* extract data from response, coded in json, and refine it by using JsonPath queries in the query attribute.
* After this phase it parses the resulting object to populate the structure(keys,values) to fill the final table by using
* angularJs syntax.
*
* @method handleResponse
*/
runWorkcycle: function() {
this.selectData();
this.filterData();
this.transformData();
},
init: function(component){
this._component = component;
this.requestData();
}
}