Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
gargantext
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
humanities
gargantext
Commits
d4282870
Commit
d4282870
authored
Oct 04, 2016
by
Romain Loth
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
mygraphs: base response for adding a new graph (TODO last status updating details)
parent
5f68e1a3
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
170 additions
and
12 deletions
+170
-12
graph.py
graph/graph.py
+7
-1
rest.py
graph/rest.py
+2
-0
views.py
graph/views.py
+2
-0
myGraphs.html
templates/pages/corpora/myGraphs.html
+159
-11
No files found.
graph/graph.py
View file @
d4282870
...
...
@@ -142,6 +142,8 @@ def get_graph( request=None , corpus=None
session
.
add
(
new_node
)
session
.
commit
()
cooc_id
=
new_node
.
id
cooc_name
=
new_node
.
name
cooc_date
=
new_node
.
date
# and the empty content will need redoing by countCooccurrences
overwrite_node_contents
=
True
print
(
"GRAPH #
%
d ... Created new empty data node for saveOnly"
%
int
(
cooc_id
))
...
...
@@ -218,7 +220,11 @@ def get_graph( request=None , corpus=None
,
save_on_db
=
True
,
reset
=
overwrite_node_contents
#, limit=size
)
return
{
"state"
:
"saveOnly"
,
"target_id"
:
cooc_id
}
return
{
"state"
:
"saveOnly"
,
"target_id"
:
cooc_id
,
"target_name"
:
cooc_name
,
"target_date"
:
cooc_date
}
elif
corpus_size
>
graph_constraints
[
'corpusMax'
]:
# Then compute cooc asynchronously with celery
...
...
graph/rest.py
View file @
d4282870
...
...
@@ -132,6 +132,8 @@ class Graph(APIView):
link
=
"http://
%
s/projects/
%
d/corpora/
%
d/myGraphs"
%
(
request
.
get_host
(),
corpus
.
parent_id
,
corpus
.
id
)
return
JsonHttpResponse
({
'id'
:
data
[
"target_id"
],
'name'
:
data
[
"target_name"
],
'date'
:
data
[
"target_date"
],
'msg'
:
'''Your graph is being saved:
%
s
'''
%
format_html
(
link
)
...
...
graph/views.py
View file @
d4282870
...
...
@@ -78,6 +78,8 @@ def myGraphs(request, project_id, corpus_id):
#coocs_count[cooc.id] = len(cooc_nodes)
coocs_count
[
cooc
.
id
]
=
len
([
cooc_node
for
cooc_node
in
cooc_nodes
if
cooc_node
[
1
]
>
1
])
print
(
"coocs_count a posteriori"
,
coocs_count
)
return
render
(
template_name
=
'pages/corpora/myGraphs.html'
,
request
=
request
,
...
...
templates/pages/corpora/myGraphs.html
View file @
d4282870
...
...
@@ -12,6 +12,134 @@
<script
type=
"text/javascript"
>
/**
* Some html block templates to render responses after the ajax of goFirstGraph
*
* TODO use template_literals returned by lazy function or any other better templating
*/
var
processingHtml
=
'
\
<div class="progress">
\
<div class=" progress-bar progress-bar-striped active"
\
role="progressbar" aria-valuenow="45" aria-valuemin="0" aria-valuemax="100" style="width: 70%">
\
<span>
\
Processing
\
</span>
\
</div>
\
</div>'
var
finishedHtmlTemplate
=
'
\
<br>
\
From: begin of corpus
\
, To: end of corpus
\
<br>
\
<ul>
\
<li>
\
<a href="/projects/%%project_id%%/corpora/%%corpus_id%%/explorer?cooc_id=%%cooc_id%%&distance=conditional&bridgeness=5">
\
<span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span>
\
~%%nb_nodes%% nodes,
\
~%%nb_edges%% edges
\
with <b>Conditional</b> distance
\
</a>
\
</li>
\
<li>
\
<a href="/projects/%%project_id%%/corpora/%%corpus_id%%/explorer?cooc_id=%%cooc_id%%&distance=distributional&bridgeness=5">
\
<span class="glyphicon glyphicon-eye-open" aria-hidden="true"></span>
\
Compute this graph with Distributional distance
\
</a>
\
</li>
\
</ul>
\
<br>'
var
baseSkeletonTemplate
=
'
\
<div id="graph_%%cooc_id%%">
\
<div class="row">
\
<div class="col-md-1 content"></div>
\
<div class="col-md-5 content">
\
<li>
\
<h4>%%cooc_name%%</h4>
\
%%cooc_date%%
\
\
%%HERE_RESPONSE_DEPENDANT%%
\
\
</li>
\
</div>
\
<div class="col-md-3 content">
\
<button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="bottom"
\
data-content="
\
<ul>
\
<li
\
onclick="
\
garganrest.nodes.delete(%%cooc_id%%, function(){$(
\'
#graph_
\'
+%%cooc_id%%).remove()});
\
$(this).parent().parent().remove();
\
">
\
<a href=
\'
#
\'
>Delete this</a>
\
</li>
\
</ul>
\
">
\
<span class="glyphicon glyphicon-trash" aria-hidden="true"
\
title=
\'
Delete this graph
\'
></span>
\
</button>
\
</div>
\
</div>
\
</div>'
/**
* function showNewCoocDiv(status_code, cooc_id, cooc_name, cooc_date)
*
* (uses the templates to make a new cooc html appear)
*
* @param 'progress_status' || 'finished_status'
* @param projectId
* @param corpusId
* @param coocId
* @param coocName
* @param coocDate
* @param nNodes (optional <=> if finished_status)
* @param nEdges (optional <=> if finished_status)
*/
function
showNewCoocDiv
(
statusCode
,
projectId
,
corpusId
,
coocId
,
coocName
,
coocDate
,
nNodes
,
nEdges
)
{
var
resultHtml
=
baseSkeletonTemplate
// initial if
switch
(
statusCode
)
{
case
"progress_status"
:
resultHtml
=
resultHtml
.
replace
(
/%%HERE_RESPONSE_DEPENDANT%%/
,
processingHtml
)
break
;
case
"finished_status"
:
resultHtml
=
resultHtml
.
replace
(
/%%HERE_RESPONSE_DEPENDANT%%/
,
finishedHtmlTemplate
)
break
;
default
:
console
.
warning
(
"showNewCoocDiv: can't show div (Unknown statusCode"
,
statusCode
,
")"
);
return
false
}
// also replace template variables (thx c24b!)
resultHtml
=
resultHtml
.
replace
(
/%%project_id%%/g
,
projectId
);
resultHtml
=
resultHtml
.
replace
(
/%%corpus_id%%/g
,
corpusId
);
resultHtml
=
resultHtml
.
replace
(
/%%cooc_id%%/g
,
coocId
);
resultHtml
=
resultHtml
.
replace
(
/%%cooc_name%%/g
,
coocName
);
resultHtml
=
resultHtml
.
replace
(
/%%cooc_date%%/g
,
coocDate
);
if
(
typeof
nbEdges
!=
'undefined'
&&
typeof
nbNodes
!=
'undefined'
)
{
resultHtml
=
resultHtml
.
replace
(
/%%nb_nodes%%/g
,
nbNodes
);
resultHtml
=
resultHtml
.
replace
(
/%%nb_edges%%/g
,
nbEdges
);
}
// render the result in DOM
$
(
'#graph-list'
).
append
(
resultHtml
)
return
true
}
/**
* function goFirstGraph()
*
...
...
@@ -20,13 +148,24 @@
* 3) monitor status of the async generation
*/
function
goFirstGraph
()
{
// ajax config vars
var
graphApi
=
"/api/projects/{{project.id}}/corpora/{{ corpus.id }}/explorer"
var
graphParams
=
"saveOnly=True&distance=conditional&bridgeness=5"
var
coocId
=
null
// initial vars
var
projectId
=
"{{project.id | escapejs}}"
var
corpusId
=
"{{corpus.id | escapejs }}"
// vars we'll get at creation steps
var
coocId
=
null
// 1
var
coocName
=
null
// 1
var
coocDate
=
null
// 1
var
nbNodes
=
null
// 2
var
nbEdges
=
null
// 2
// run a "save new graph" ajax
// run the "save new graph" ajax
// -----------------------------
// cf. data["state"] == "saveOnly"
$
.
ajax
({
method
:
"GET"
,
url
:
graphApi
+
'?'
+
graphParams
,
...
...
@@ -34,9 +173,19 @@
xhr
.
setRequestHeader
(
"X-CSRFToken"
,
getCookie
(
"csrftoken"
));
},
success
:
function
(
data
){
// retrieve the new coocId
console
.
log
(
"data"
,
data
)
console
.
log
(
"data.id"
,
data
.
id
)
// console.log("data", data)
// 1 - retrieve the new coocId etc
if
(
data
.
id
&&
data
.
name
&&
data
.
date
)
{
coocId
=
data
[
'id'
]
coocName
=
data
[
'name'
]
coocDate
=
data
[
'date'
]
}
// 2 - show the node with basic info and progressbar
showNewCoocDiv
(
"progress_status"
,
projectId
,
corpusId
,
coocId
,
coocName
,
coocDate
)
},
error
:
function
(
result
)
{
console
.
log
(
"result"
,
result
)
...
...
@@ -55,7 +204,7 @@
<div
class=
"container theme-showcase"
role=
"main"
>
<h2>
My Graphs
</h2>
<ol>
<ol
id=
"graph-list"
>
{% if coocs %}
{% for cooc in coocs %}
<div
id=
"graph_{{cooc.id}}"
>
...
...
@@ -75,7 +224,7 @@
<ul>
<li>
<a
href=
"/projects/{{project.id}}/corpora/{{corpus.id}}/explorer?cooc_id={{cooc.id}}&
distance=conditional&
bridgeness=5"
>
<a
href=
"/projects/{{project.id}}/corpora/{{corpus.id}}/explorer?cooc_id={{cooc.id}}&
amp;distance=conditional&
bridgeness=5"
>
<span
class=
"glyphicon glyphicon-eye-open"
aria-hidden=
"true"
></span>
{% if cooc.hyperdata.conditional %}
~{{ cooc.hyperdata.conditional.nodes }} nodes,
...
...
@@ -89,7 +238,7 @@
</li>
<li>
<a
href=
"/projects/{{project.id}}/corpora/{{corpus.id}}/explorer?cooc_id={{cooc.id}}&
distance=distributional&
bridgeness=5"
>
<a
href=
"/projects/{{project.id}}/corpora/{{corpus.id}}/explorer?cooc_id={{cooc.id}}&
amp;distance=distributional&
bridgeness=5"
>
<span
class=
"glyphicon glyphicon-eye-open"
aria-hidden=
"true"
></span>
{% if cooc.hyperdata.distributional %}
~{{ cooc.hyperdata.distributional.nodes }} nodes,
...
...
@@ -217,11 +366,10 @@
<h4>
<span
class=
"glyphicon glyphicon-ok-circle"
aria-hidden=
"true"
></span>
Do you want to test ?
</h4>
</li>
<btn
class=
"btn btn-info"
onclick=
"goFirstGraph()"
>
<span
style=
"font-size:120%"
>
Compute a new graph
</span>
<br/>
with conditional distance
</btn>
{% endif %}
</
u
l>
</
o
l>
{% endblock %}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment