SLA plugin updated
[unfold.git] / plugins / sladialog / static / js / sladialog.js
1 /**
2  * MyPlugin:    demonstration plugin
3  * Version:     0.1
4  * Description: Template for writing new plugins and illustrating the different
5  *              possibilities of the plugin API.
6  *              This file is part of the Manifold project 
7  * Requires:    js/plugin.js
8  * URL:         http://www.myslice.info
9  * Author:      Jordan AugĂ© <jordan.auge@lip6.fr>
10  * Copyright:   Copyright 2012-2013 UPMC Sorbonne UniversitĂ©s
11  * License:     GPLv3
12  */
13
14 (function($){
15
16     var SlaDialog = Plugin.extend({
17
18         /** XXX to check
19          * @brief Plugin constructor
20          * @param options : an associative array of setting values
21          * @param element : 
22          * @return : a jQuery collection of objects on which the plugin is
23          *     applied, which allows to maintain chainability of calls
24          */
25         init: function(options, element) {
26             // for debugging tools
27             this.classname="SlaDialog";
28             // Call the parent constructor, see FAQ when forgotten
29             this._super(options, element);
30
31             /* Member variables */
32
33             /* Plugin events */
34
35             /* Setup query and record handlers */
36
37             // Explain this will allow query events to be handled
38             // What happens when we don't define some events ?
39             // Some can be less efficient
40             this.listen_query(options.query_uuid);
41             
42             /* GUI setup and event binding */
43             // call function
44
45         },
46
47         find_row: function(key)
48         {
49             // key in third position, column id = 2
50             var KEY_POS = 2;
51
52             var cols = $.grep(this.table.fnSettings().aoData, function(col) {
53                 return (col._aData[KEY_POS] == key);
54             } );
55
56             if (cols.length == 0)
57                 return null;
58             if (cols.length > 1)
59                 throw "Too many same-key rows in ResourceSelected plugin";
60
61             return cols[0];
62         },
63
64         /* PLUGIN EVENTS */
65         // on_show like in querytable
66
67
68         /* GUI EVENTS */
69
70         uncheck: function(urn)
71         {
72             $('#slamodal').on('hidden.bs.modal', function(e){
73                 $('#' + (urn).replace(/"/g,'')).click();
74                 console.log('#' + (data.value).replace(/"/g,''));
75             });
76         },
77
78         // a function to bind events here: click change
79         // how to raise manifold events
80         set_state: function(data, username)
81         {
82             
83         },
84
85         post_agreement: function()
86         {
87             console.log(this.options.user);
88         },
89
90         /* GUI MANIPULATION */
91
92         // We advise you to write function to change behaviour of the GUI
93         // Will use naming helpers to access content _inside_ the plugin
94         // always refer to these functions in the remaining of the code
95
96         show_hide_button: function() 
97         {
98             // this.id, this.el, this.cl, this.elts
99             // same output as a jquery selector with some guarantees
100         },
101
102         /* TEMPLATES */
103
104         // see in the html template
105         // How to load a template, use of mustache
106
107         /* QUERY HANDLERS */
108
109         // How to make sure the plugin is not desynchronized
110         // He should manifest its interest in filters, fields or records
111         // functions triggered only if the proper listen is done
112
113         // no prefix
114
115         on_filter_added: function(filter)
116         {
117
118         },
119
120         on_field_state_changed: function(result)
121         {
122             console.log("triggered state_changed: "+result);
123             // this.set_state(result, this.options.username);
124         }, 
125
126         // ... be sure to list all events here
127
128         /* RECORD HANDLERS */
129         on_all_new_record: function(record)
130         {
131             //
132         },
133
134         on_new_record: function(record)
135         {
136
137         },
138
139         /* INTERNAL FUNCTIONS */
140         _dummy: function() {
141             // only convention, not strictly enforced at the moment
142         },
143
144     });
145
146     /* Plugin registration */
147     $.plugin('SlaDialog', SlaDialog);
148
149     // TODO Here use cases for instanciating plugins in different ways like in the pastie.
150
151 })(jQuery);