Blame view

datalets/shared_js/behaviors/BaseDataletBehaviors.js 2.82 KB
73bcce88   luigser   COMPONENTS
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();

      }

  }