annotate scid/theme.h @ 60:3804a2ab60ec

misc: documentation improvements
author David Demelier <markand@malikania.fr>
date Thu, 18 Aug 2022 10:12:54 +0200
parents bc617784ec97
children 71cd8447e3a4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
1 /*
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
2 * theme.h -- theme management
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
3 *
32
081e1c258e64 misc: update copyright years
David Demelier <markand@malikania.fr>
parents: 30
diff changeset
4 * Copyright (c) 2021-2022 David Demelier <markand@malikania.fr>
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
5 *
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
6 * Permission to use, copy, modify, and/or distribute this software for any
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
7 * purpose with or without fee is hereby granted, provided that the above
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
8 * copyright notice and this permission notice appear in all copies.
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
9 *
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
17 */
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
18
28
4c16bb25e4f1 scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #ifndef SCID_THEME_H
4c16bb25e4f1 scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents:
diff changeset
20 #define SCID_THEME_H
4c16bb25e4f1 scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents:
diff changeset
21
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
22 /**
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
23 * \file theme.h
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
24 * \brief Theme management
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
25 *
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
26 * Themes are written in Javascript and usually with a combination of
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
27 * [mustache][] files as well. The Javascript code is executed before rendering
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
28 * the page with a JSON document containing the data to generate.
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
29 *
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
30 * This has been designed to address the issue that many web frameworks require
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
31 * different kind of HTML entities to generate the view and as such, the scid
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
32 * application can not generate those HTML tags.
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
33 *
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
34 * This module uses a global Javascript context to perform rendering, you must
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
35 * call theme_open before doing anything else. Once done, use theme_finish to
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
36 * cleanup resources.
33
1d0ddf9e6efd misc: general documentation
David Demelier <markand@malikania.fr>
parents: 32
diff changeset
37 *
1d0ddf9e6efd misc: general documentation
David Demelier <markand@malikania.fr>
parents: 32
diff changeset
38 * This module logs message with tag `theme`.
1d0ddf9e6efd misc: general documentation
David Demelier <markand@malikania.fr>
parents: 32
diff changeset
39 *
46
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
40 * ### Functions
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
41 *
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
42 * The following functions can be defined in the Javascript code.
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
43 *
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
44 * #### onPageIndex
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
45 *
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
46 * Called to render the index page, usually the dashboard with most recent
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
47 * builds on every projects.
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
48 *
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
49 * ```javascript
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
50 * {
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
51 * "projects: [
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
52 * {
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
53 * "name": "project name",
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
54 * "desc": "project short description",
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
55 * "url": "project URL or homepage",
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
56 * "jobs": [
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
57 * {
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
58 * "job": job-id,
57
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
59 * "tag": "job tag / revision"
60
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
60 * "status": true / false // If at least one failed
46
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
61 * }
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
62 * ]
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
63 * "n-failed": number of failed jobs
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
64 * "n-succes": number of successful jobs
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
65 * }
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
66 * ]
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
67 * }
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
68 * ```
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
69 *
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
70 * #### onPageJobresults
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
71 *
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
72 * Called to render most recent jobresults for a given job id.
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
73 *
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
74 * ```javascript
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
75 * {
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
76 * "jobresults": [
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
77 * {
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
78 * "id": jobresult id,
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
79 * "job_id": parent job id,
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
80 * "worker_name": "worker which realized the task",
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
81 * "console": "stdout and stderr merge",
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
82 * "exitcode": process exit code,
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
83 * "sigcode": process termination code (0 means success),
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
84 * "date": job result insertion date
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
85 * }
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
86 * ]
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
87 * }
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
88 * ```
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
89 *
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
90 * #### onPageStatus
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
91 *
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
92 * Called to render a unique status message (e.g. 404, 401).
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
93 *
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
94 * ```javascript
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
95 * {
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
96 * "status": number // Exemple: 400, 401
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
97 * }
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
98 * ```
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
99 *
60
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
100 * #### onPageWorkers
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
101 *
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
102 * Called to list all workers.
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
103 *
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
104 * ```javascript
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
105 * {
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
106 * "workers": [
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
107 * {
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
108 * "name": "worker name",
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
109 * "desc": "worker description",
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
110 * }
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
111 * ]
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
112 * }
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
113 * ```
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
114 *
57
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
115 * #### onPageWorker
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
116 *
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
117 * Called to show a worker information and its recent jobs.
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
118 *
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
119 * ```javascript
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
120 * {
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
121 * "name": "worker name",
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
122 * "desc": "worker description",
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
123 * "jobresults": [
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
124 * {
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
125 * "id": jobresult id,
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
126 * "job_id": parent job id,
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
127 * "worker_name": "worker which realized the task",
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
128 * "console": "stdout and stderr merge",
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
129 * "exitcode": process exit code,
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
130 * "sigcode": process termination code (0 means success),
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
131 * "date": job result insertion date
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
132 * }
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
133 * ]
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
134 * }
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
135 * ```
bc617784ec97 scid: many fixes in pages
David Demelier <markand@malikania.fr>
parents: 46
diff changeset
136 *
60
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
137 * #### onPageProjects
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
138 *
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
139 * Called to list all projects.
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
140 *
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
141 * ```javascript
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
142 * {
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
143 * "projects": [
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
144 * {
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
145 * "name": "project name",
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
146 * "desc": "project description",
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
147 * "url" "project URL or homepage",
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
148 * }
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
149 * ]
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
150 * }
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
151 * ```
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
152 *
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
153 * #### onPageProject
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
154 *
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
155 * ```javascript
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
156 * {
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
157 * "name": "project name",
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
158 * "desc": "project description",
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
159 * "url" "project URL or homepage",
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
160 * "script": "project script code"
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
161 * }
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
162 * ```
3804a2ab60ec misc: documentation improvements
David Demelier <markand@malikania.fr>
parents: 57
diff changeset
163 *
33
1d0ddf9e6efd misc: general documentation
David Demelier <markand@malikania.fr>
parents: 32
diff changeset
164 * [mustache]: https://mustache.github.io/
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
165 */
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
166
29
695637f1d8a7 scid: first index page in javascript
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
167 #include <jansson.h>
695637f1d8a7 scid: first index page in javascript
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
168
695637f1d8a7 scid: first index page in javascript
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
169 #include "pageutil.h"
695637f1d8a7 scid: first index page in javascript
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
170
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
171 /**
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
172 * Open the theme specified by directory path.
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
173 *
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
174 * \pre directory != NULL
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
175 * \param directory path to the theme directory (absolute path is recommended).
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
176 */
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
177 void
28
4c16bb25e4f1 scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 theme_open(const char *directory);
4c16bb25e4f1 scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents:
diff changeset
179
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
180 /**
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
181 * Return the path to the filename relative to the theme directory.
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
182 *
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
183 * \pre filename != NULL
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
184 * \param filename the filename to append
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
185 * \return the full path
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
186 * \note This function return a thread-local static variable.
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
187 */
28
4c16bb25e4f1 scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 const char *
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
189 theme_path(const char *filename);
29
695637f1d8a7 scid: first index page in javascript
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
190
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
191 /**
46
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
192 * Call a function from Javascript with an optional JSON document.
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
193 *
46
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
194 * \pre function != NULL
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
195 * \param function the function name to call from Javascript
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
196 * \param doc the optional document to pass to the Javascript function
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
197 * \return a newly allocated rendered string
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
198 * \note You must free the return value
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
199 */
29
695637f1d8a7 scid: first index page in javascript
David Demelier <markand@malikania.fr>
parents: 28
diff changeset
200 char *
46
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
201 theme_render(const char *function, json_t *doc);
41
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
202
00b9af607524 scid: implement /jobresults/id page
David Demelier <markand@malikania.fr>
parents: 40
diff changeset
203 /**
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
204 * Render the status page (for error code).
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
205 *
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
206 * The document requires the following properties:
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
207 *
40
752bb1cd2dd8 themes: improve status page
David Demelier <markand@malikania.fr>
parents: 33
diff changeset
208 * \param status the status code (e.g. 404)
46
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
209 * \param msg the status message (e.g. Not found)
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
210 * \return a newly allocated rendered string
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
211 * \note You must free the return value
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
212 */
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
213 char *
46
16f1c72d1635 scid: simplify theme code
David Demelier <markand@malikania.fr>
parents: 43
diff changeset
214 theme_status(int status, const char *msg);
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
215
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
216 /**
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
217 * Cleanup theme resources.
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
218 */
28
4c16bb25e4f1 scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 void
30
43333d18e4b8 scid: document theme
David Demelier <markand@malikania.fr>
parents: 29
diff changeset
220 theme_finish(void);
28
4c16bb25e4f1 scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents:
diff changeset
221
4c16bb25e4f1 scid: implement themes in javascript
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 #endif /* !SCID_THEME_H */