Revize c5dff586
Přidáno uživatelem Pavel Fidranský před více než 6 roky(ů)
sources/src/main/java/cz/zcu/kiv/offscreen/servlets/api/GetDiagram.java | ||
---|---|---|
1 |
package cz.zcu.kiv.offscreen.servlets.api; |
|
2 |
|
|
3 |
import com.google.common.base.Strings; |
|
4 |
import cz.zcu.kiv.offscreen.servlets.BaseServlet; |
|
5 |
import cz.zcu.kiv.offscreen.user.DB; |
|
6 |
import cz.zcu.kiv.offscreen.user.Diagram; |
|
7 |
import org.json.JSONObject; |
|
8 |
|
|
9 |
import javax.servlet.http.HttpServletRequest; |
|
10 |
import javax.servlet.http.HttpServletResponse; |
|
11 |
import java.io.IOException; |
|
12 |
|
|
13 |
public class GetDiagram extends BaseServlet { |
|
14 |
|
|
15 |
@Override |
|
16 |
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { |
|
17 |
String diagramId = request.getParameter("diagramId"); |
|
18 |
|
|
19 |
if (Strings.isNullOrEmpty(diagramId)) { |
|
20 |
response.sendError(HttpServletResponse.SC_BAD_REQUEST); |
|
21 |
return; |
|
22 |
} |
|
23 |
|
|
24 |
DB db = new DB(getServletContext()); |
|
25 |
Diagram diagram = new Diagram(db, Integer.parseInt(diagramId)); |
|
26 |
|
|
27 |
JSONObject json = null; |
|
28 |
|
|
29 |
if (diagram.isPublic()) { |
|
30 |
json = new JSONObject(diagram.getDiagram()); |
|
31 |
|
|
32 |
} else { |
|
33 |
if (isLoggedIn(request)) { |
|
34 |
int loggedUserId = getUserId(request); |
|
35 |
|
|
36 |
if (diagram.getUserId() == loggedUserId) { |
|
37 |
json = new JSONObject(diagram.getDiagram()); |
|
38 |
} |
|
39 |
} |
|
40 |
} |
|
41 |
|
|
42 |
if (json == null) { |
|
43 |
response.setStatus(HttpServletResponse.SC_UNAUTHORIZED); |
|
44 |
} else { |
|
45 |
response.setContentType("application/json"); |
|
46 |
response.setCharacterEncoding("UTF-8"); |
|
47 |
response.setStatus(HttpServletResponse.SC_OK); |
|
48 |
response.getWriter().write(json.toString()); |
|
49 |
response.getWriter().flush(); |
|
50 |
} |
|
51 |
} |
|
52 |
} |
sources/src/main/webapp/WEB-INF/web.xml | ||
---|---|---|
60 | 60 |
<servlet-name>Logout</servlet-name> |
61 | 61 |
<servlet-class>cz.zcu.kiv.offscreen.servlets.api.Logout</servlet-class> |
62 | 62 |
</servlet> |
63 |
<servlet> |
|
64 |
<servlet-name>GetDiagram</servlet-name> |
|
65 |
<servlet-class>cz.zcu.kiv.offscreen.servlets.api.GetDiagram</servlet-class> |
|
66 |
</servlet> |
|
63 | 67 |
<servlet> |
64 | 68 |
<servlet-name>SaveDiagram</servlet-name> |
65 | 69 |
<servlet-class>cz.zcu.kiv.offscreen.servlets.api.SaveDiagram</servlet-class> |
... | ... | |
96 | 100 |
<servlet-name>Logout</servlet-name> |
97 | 101 |
<url-pattern>/api/log-out</url-pattern> |
98 | 102 |
</servlet-mapping> |
103 |
<servlet-mapping> |
|
104 |
<servlet-name>GetDiagram</servlet-name> |
|
105 |
<url-pattern>/api/get-diagram</url-pattern> |
|
106 |
</servlet-mapping> |
|
99 | 107 |
<servlet-mapping> |
100 | 108 |
<servlet-name>SaveDiagram</servlet-name> |
101 | 109 |
<url-pattern>/api/save-diagram</url-pattern> |
sources/src/main/webapp/js/app.js | ||
---|---|---|
31 | 31 |
/** @prop {object} API Application programming interface paths. */ |
32 | 32 |
this.API = { |
33 | 33 |
loadGraphData: 'api/load-graph-data', |
34 |
getDiagram: 'api/get-diagram', |
|
34 | 35 |
saveDiagram: 'api/save-diagram', |
35 | 36 |
removeDiagram: 'api/remove-diagram', |
36 | 37 |
}; |
... | ... | |
52 | 53 |
/** @prop {array<Group>} groupList */ |
53 | 54 |
this.groupList = []; |
54 | 55 |
|
56 |
/** TODO: jsDoc */ |
|
57 |
this.diagram = null; |
|
58 |
|
|
55 | 59 |
/** TODO: jsDoc */ |
56 | 60 |
this.archetype = { |
57 | 61 |
vertex: [], |
... | ... | |
311 | 315 |
var diagramId = app.utils.getQueryVariable('diagramId'); |
312 | 316 |
if (diagramId === false) diagramId = null; |
313 | 317 |
|
314 |
var diagramName = prompt('Enter new diagram name:'); |
|
318 |
var diagramName = prompt('Enter new diagram name:', self.diagram !== null ? self.diagram.name : '');
|
|
315 | 319 |
if (diagramName === null || diagramName === '') return false; |
316 | 320 |
|
317 | 321 |
$.ajax({ |
318 | 322 |
'type': 'POST', |
319 | 323 |
'url': app.API.saveDiagram, |
320 | 324 |
'data': { |
321 |
'diagram_id': diagramId,
|
|
325 |
'diagramId': diagramId,
|
|
322 | 326 |
'name': diagramName, |
323 |
'graph_json': JSON.stringify(self.graphExporter.run()),
|
|
327 |
'graphJson': JSON.stringify(self.graphExporter.run()),
|
|
324 | 328 |
'public': 0, |
325 | 329 |
}, |
326 | 330 |
'success': function() { |
... | ... | |
357 | 361 |
|
358 | 362 |
self.loader.enable(); |
359 | 363 |
|
360 |
var loadGraphDataURL = self.API.loadGraphData; |
|
364 |
var loadGraphDataPromise; |
|
365 |
|
|
366 |
if (diagramId === '') { |
|
367 |
loadGraphDataPromise = $.getJSON(self.API.loadGraphData); |
|
361 | 368 |
|
362 |
if (diagramId !== '') { |
|
363 |
loadGraphDataURL += '?diagramId=' + diagramId; |
|
369 |
} else { |
|
370 |
getDiagramPromise = $.getJSON(self.API.getDiagram + '?diagramId=' + diagramId); |
|
371 |
|
|
372 |
loadGraphDataPromise = getDiagramPromise.then(function(data) { |
|
373 |
self.diagram = { |
|
374 |
id: data.id, |
|
375 |
name: data.name, |
|
376 |
}; |
|
377 |
|
|
378 |
return $.getJSON(self.API.loadGraphData + '?diagramId=' + diagramId); |
|
379 |
}); |
|
364 | 380 |
} |
365 | 381 |
|
366 | 382 |
// get vertex position data |
367 |
$.getJSON(loadGraphDataURL).then(function(data) {
|
|
383 |
loadGraphDataPromise.then(function(data) {
|
|
368 | 384 |
// construct graph |
369 | 385 |
self.graphLoader.run(data); |
370 | 386 |
|
Také k dispozici: Unified diff
preset diagram name for saved diagrams