1 from unfold.plugin import Plugin
3 class UnivbrisFvf (Plugin):
7 ////////////////////////////////////////
9 modified querytable for univbris foam
10 ///////////////////////////////////////
12 A plugin for displaying a query as a list
14 More accurately, we consider a subject entity (say, a slice)
15 that can be linked to any number of related entities (say, resources, or users)
16 The 'query' argument will correspond to the subject, while
17 'query_all' will fetch the complete list of
18 possible candidates for the relationship.
20 Current implementation makes the following assumptions
21 * query will only retrieve for the related items a list of fields
22 that corresponds to the initial set of fields displayed in the table
23 * query_all on the contrary is expected to return the complete set of
24 available attributes that may be of interest, so that using a QueryEditor
25 one can easily extend this table without having to query the backend
26 * checkboxes is a boolean flag, set to true if a rightmost column
27 with checkboxes is desired
28 * optionally pass columns as the initial set of columns
29 if None then this is taken from the query's fields
30 * init_key is the name of a column that should appear in both queries
31 and used internally in the plugin for checkboxes initialization.
32 If not specified, metadata will be used to find out a primary key.
33 However in the case of nodes & slice for example, the default key
34 as returned by the metadata would be 'urn', but 'urn' could only
35 be used for this purpose if it gets displayed initially, which is
36 not necessarily a good idea.
37 This is why a slice view would use 'hrn' here instead.
38 * datatables_options are passed to dataTables as-is;
39 however please refrain from passing an 'aoColumns'
40 as we use 'aoColumnDefs' instead.
43 def __init__ (self, query=None, query_all=None,
44 checkboxes=False, columns=None,
46 datatables_options={}, **settings):
47 Plugin.__init__ (self, **settings)
49 # Until we have a proper way to access queries in Python
50 self.query_all = query_all
51 self.query_all_uuid = query_all.query_uuid if query_all else None
54 def template_file (self):
55 return "univbrisfvf.html"
57 def template_env (self, request):
59 env.update(self.__dict__)
60 #env['columns']=self.columns
63 def requirements (self):
65 'js_files' : [ "js/spin-presets.js", "js/spin.min.js", "js/jquery.spin.js",
66 "js/dataTables.js", "js/dataTables.bootstrap.js", "js/with-datatables.js",
67 "js/manifold.js", "js/manifold-query.js",
68 "js/unfold-helper.js",
69 # querytable.js needs to be loaded after dataTables.js as it extends
70 # dataTableExt.afnSortData
73 'css_files': [ "css/dataTables.bootstrap.css",
74 # hopefully temporary, when/if datatables supports sPaginationType=bootstrap3
75 # for now we use full_numbers, with our own ad hoc css
76 "css/dataTables.full_numbers.css",
77 "css/univbrisfvf.css",
82 # the list of things passed to the js plugin
83 def json_settings_list (self):
84 return ['plugin_uuid', 'domid',
85 'query_uuid', 'query_all_uuid',
86 'checkboxes', 'datatables_options',
87 'hidden_columns', 'init_key',]