Commit 9a0e4e1c authored by Administrator's avatar Administrator

Merge branch 'mat-master'

Intégration last changes of Mathieu
parents 8af90db3 75530220
......@@ -509,6 +509,7 @@ class NodesList(APIView):
def get(self, request):
query = (Node
.query(Node.id, Node.name, NodeType.name.label('type'))
.filter(Node.user_id == request.session._session_cache['_auth_user_id'])
.join(NodeType)
)
if 'type' in request.GET:
......
......@@ -10,7 +10,7 @@ https://docs.djangoproject.com/en/1.6/ref/settings/
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
BASE_DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
PROJECT_PATH = os.path.join(BASE_DIR, os.pardir)
PROJECT_PATH = os.path.abspath(PROJECT_PATH)
......@@ -33,16 +33,7 @@ TEMPLATE_DEBUG = True
TEMPLATE_DIRS = (
# Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
# Always use forward slashes
# Don't forget to use absolute paths, not relative paths.
'/srv/gargantext/templates',
#import os.path
#
#TEMPLATE_DIRS = (
# os.path.join(os.path.dirname(__file__), 'templates').replace('\\','/'),
#)
os.path.join(BASE_DIR, 'templates'),
)
......@@ -121,11 +112,11 @@ USE_TZ = True
ROOT_URLCONF = 'gargantext_web.urls'
STATIC_ROOT = '/var/www/gargantext/static/'
STATIC_ROOT = os.path.join(PROJECT_PATH, 'static')
STATIC_URL = '/static/'
MEDIA_ROOT = '/var/www/gargantext/media'
#MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
# MEDIA_ROOT = '/var/www/gargantext/media'
MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media')
MEDIA_URL = '/media/'
......@@ -136,11 +127,8 @@ STATICFILES_FINDERS = (
STATICFILES_DIRS = (
#os.path.join(BASE_DIR, "static"),
'/srv/gargantext/static',
#'/var/www/www/alexandre/media',
#'/var/www/alexandre.delanoe.org/',
)
os.path.join(BASE_DIR, "static"),
)
TEMPLATE_CONTEXT_PROCESSORS = (
"django.contrib.auth.context_processors.auth",
......
......@@ -29,6 +29,7 @@ urlpatterns = patterns('',
url(r'^project/(\d+)/corpus/(\d+)/$', views.corpus),
url(r'^project/(\d+)/corpus/(\d+)/delete/$', views.delete_corpus),
url(r'^project/(\d+)/corpus/(\d+)/corpus.csv$', views.corpus_csv),
url(r'^project/(\d+)/corpus/(tests_mvc_listdocuments+)/corpus.tests_mvc_listdocuments$', views.corpus_csv),
url(r'^project/(\d+)/corpus/(\d+)/timerange/(\d+)/(\d+)$', views.subcorpus),
......@@ -57,6 +58,7 @@ urlpatterns = patterns('',
url(r'^ngrams$', views.ngrams),
url(r'^nodeinfo/(\d+)$', views.nodeinfo),
url(r'^tests/mvc$', views.tests_mvc),
url(r'^tests/mvc-listdocuments$', views.tests_mvc_listdocuments),
)
......
......@@ -701,6 +701,17 @@ def tests_mvc(request):
}))
return HttpResponse(html)
def tests_mvc_listdocuments(request):
'''Just a test page for Javascript MVC.'''
t = get_template('tests/mvc-listdocuments.html')
user = request.user
date = datetime.datetime.now()
html = t.render(Context({
'user': user,
'date': date,
}))
return HttpResponse(html)
def ngrams(request):
'''The ngrams list.'''
t = get_template('ngrams.html')
......
......@@ -87,7 +87,7 @@ var groupings = {
// Define the application
var gargantext = angular.module('Gargantext', ['n3-charts.linechart', 'ngCookies'])
var gargantext = angular.module('Gargantext', ['n3-charts.linechart', 'ngCookies']);
// Customize the application's scope
......@@ -168,7 +168,7 @@ gargantext.controller("QueryController", function($scope, $http) {
// change view to loading mode
$scope.loading = true;
// query parameters: columns
var retrieve = {type: 'fields', list: ['id', 'name']};
var retrieve = {type: 'fields', list: ['id', 'name', 'metadata.publication_date']};
// query parameters: pagination
var pagination = $scope.pagination;
// query parameters: sort
......@@ -200,13 +200,27 @@ gargantext.controller("QueryController", function($scope, $http) {
// send query to the server
$http.post(url, query).success(function(response){
$scope.resultsCount = response.pagination.total;
$scope.results = response.data;
$scope.results = response.results;
$scope.columns = response.retrieve;
$scope.loading = false;
}).error(function(response){
console.error(response);
});
}
}
// change current page
$scope.decrement = function() {
if ($scope.pagination.offset > 0) {
$scope.pagination.offset--;
}
$scope.postQuery();
};
$scope.increment = function() {
if ($scope.pagination.offset < $scope.resultsCount) {
$scope.pagination.offset += $scope.pagination.limit;
}
$scope.postQuery();
};
});
// Controller for datasets
......@@ -220,10 +234,17 @@ gargantext.controller("DatasetController", function($scope, $http) {
$scope.results = [];
$scope.resultsCount = undefined;
// corpus retrieval
$scope.projects = [];
$scope.corpora = [];
$http.get('/api/nodes?type=Corpus', {cache: true}).success(function(response){
$scope.corpora = response.data;
$http.get('/api/nodes?type=Project', {cache: true}).success(function(response){
$scope.projects = response.data;
});
// update corpora according to the select parent project
$scope.updateCorpora = function() {
$http.get('/api/nodes?type=Corpus&parent=' + $scope.projectId, {cache: true}).success(function(response){
$scope.corpora = response.data;
});
};
// update entities depending on the selected corpus
$scope.updateEntities = function() {
var url = '/api/nodes/' + $scope.corpusId + '/children/metadata';
......@@ -302,7 +323,7 @@ gargantext.controller("GraphController", function($scope, $http, $element) {
options: {
axes: {
x: {key: 'x', type: 'date'},
y: {type: 'log'},
y: {type: 'linear', type: 'numeric'},
},
tension: 1.0,
lineMode: 'bundle',
......@@ -363,15 +384,27 @@ gargantext.controller("GraphController", function($scope, $http, $element) {
});
});
// Convert this object back to a sorted array
var yMin, yMax;
var linearData = [];
for (var x in dataObject) {
var row = {x: convert(x)};
var yList = dataObject[x];
for (var i=0; i<yList.length; i++) {
row['y' + i] = yList[i];
y = yList[i];
row['y' + i] = y;
if (yMax == undefined || y > yMax) {
yMax = y;
}
if (yMin == undefined || y < yMin) {
yMin = y;
}
}
linearData.push(row);
}
// Update the axis
$scope.graph.options.axes.y.min = yMin;
$scope.graph.options.axes.y.max = yMax;
$scope.graph.options.axes.y.ticks = 100;
// Finally, update the graph
var series = [];
for (var i=0, n=$scope.datasets.length; i<n; i++) {
......
This diff is collapsed.
......@@ -227,10 +227,10 @@
<div class="corpus">
<button ng-click="removeDataset($index)" title="remove this dataset">X</button>
<select ng-model="mesured" style="background-color:{{ getColor($index, datasets.length) }}" ng-options="value as key for (key, value) in {'Documents count': 'nodes.count', 'Ngrams count': 'ngrams.count'}" ng-change="updateQuery()"></select>
in the corpus
<select ng-model="corpusId" ng-change="updateEntities()">
<option ng-repeat="corpus in corpora" value="{{corpus.id}}">{{corpus.name}}</option>
</select>
in the project
<select ng-model="projectId" ng-change="updateCorpora()" ng-options="project.id as project.name for project in projects"></select>,
corpus
<select ng-model="corpusId" ng-change="updateEntities()" ng-options="corpus.id as corpus.name for corpus in corpora"></select>
</div>
<div class="filters" ng-if="entities">
<ul>
......@@ -273,7 +273,7 @@
<br/>
Y-axis: use a
<select ng-model="graph.options.axes.y.type" ng-options="type for type in ['log', 'linear']"></select>
<select ng-model="graph.options.axes.y.type" ng-options="type for type in ['linear', 'log']"></select>
scale
<br/>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment