Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Rex Dri
Rex Dri
Commits
fca46abf
Commit
fca46abf
authored
Aug 27, 2018
by
Florent Chehab
Browse files
Better performance on all backend
UnivMarkers components added
parent
2eeaf5bc
Pipeline
#26573
passed with stages
in 3 minutes
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
backend/models/my_model/myModelViewSet.py
View file @
fca46abf
...
...
@@ -10,3 +10,18 @@ class MyModelViewSet(DictModeViewSet):
permissions
.
IsAuthenticated
,
NoDeleteIfNotAdmin
,
)
def
get_queryset
(
self
):
"""
Extended default rest framework behavior
to prefetch some table and enhance performances
"""
self
.
mymodel_queryset
=
self
.
queryset
.
prefetch_related
(
'moderated_by'
,
'updated_by'
)
return
self
.
extend_queryset
()
def
extend_queryset
(
self
):
"""
Function to extend get_queryset when subclassing
"""
return
self
.
mymodel_queryset
backend/models/university/campus.py
View file @
fca46abf
...
...
@@ -43,8 +43,7 @@ class CampusSerializer(BasicModuleSerializer):
class
CampusViewSet
(
BasicModuleViewSet
):
queryset
=
Campus
.
objects
.
all
().
prefetch_related
(
'updated_by'
)
# pylint: disable=E1101
queryset
=
Campus
.
objects
.
all
()
# pylint: disable=E1101
serializer_class
=
CampusSerializer
...
...
frontend/src/components/map/UnivMakers.js
0 → 100644
View file @
fca46abf
import
React
,
{
Component
}
from
'
react
'
;
import
{
connect
}
from
"
react-redux
"
;
import
Loading
from
'
../other/Loading
'
;
import
{
Map
,
TileLayer
,
Marker
,
Popup
,
LayersControl
,
FeatureGroup
,
Circle
,
LayerGroup
}
from
'
react-leaflet
'
;
// import MarkerClusterGroup from 'react-leaflet-markercluster';
import
{
universitiesFetchData
,
universitiesInvalidated
,
mainCampusFetchData
,
mainCampusInvalidated
}
from
'
../../generated/actions
'
;
class
UnivMarkers
extends
Component
{
render
()
{
let
universities
=
this
.
props
.
universities
;
let
mainCampus
=
this
.
props
.
mainCampus
;
let
selected_main_campus
=
[];
for
(
let
main_campus_pk
in
mainCampus
)
{
let
campus
=
mainCampus
[
main_campus_pk
]
let
univ
=
universities
[
campus
.
university
]
selected_main_campus
.
push
({
univ_name
:
univ
.
name
,
lat
:
campus
.
lat
,
lon
:
campus
.
lon
})
}
return
(
selected_main_campus
.
map
((
el
)
=>
(
<
Marker
position
=
{[
el
.
lat
,
el
.
lon
]}
>
<
Popup
>
{
el
.
univ_name
}
<
/Popup
>
<
/Marker
>
))
);
}
}
const
mapStateToProps
=
(
state
)
=>
{
return
{
universities
:
state
.
universities
.
fetched
.
universities
,
universitiesFetchedAt
:
state
.
universities
.
fetched
.
fetchedAt
,
universitiesHasError
:
state
.
universities
.
hasError
,
universitiesIsLoading
:
state
.
universities
.
isLoading
,
universitiesInvalidated
:
state
.
universities
.
invalidated
,
mainCampus
:
state
.
mainCampus
.
fetched
.
mainCampus
,
mainCampusFetchedAt
:
state
.
mainCampus
.
fetched
.
fetchedAt
,
mainCampusHasError
:
state
.
mainCampus
.
hasError
,
mainCampusIsLoading
:
state
.
mainCampus
.
isLoading
,
mainCampusInvalidated
:
state
.
mainCampus
.
invalidated
,
};
};
export
default
connect
(
mapStateToProps
)(
UnivMarkers
);
frontend/src/components/map/UnivMap.js
View file @
fca46abf
...
...
@@ -9,10 +9,11 @@ import {
mainCampusFetchData
,
mainCampusInvalidated
}
from
'
../../generated/actions
'
;
import
UnivMarkers
from
'
./UnivMakers
'
;
class
UnivMap
extends
Component
{
componentDidMount
()
{
if
(
this
.
props
.
universities
.
length
==
0
||
this
.
props
.
invalidated
)
{
this
.
props
.
fetchUniversitiesData
(
'
http://127.0.0.1:8000/api/university
'
);
...
...
@@ -51,20 +52,6 @@ class UnivMap extends Component {
return
<
Loading
/>
;
}
let
universities
=
this
.
props
.
universities
;
let
mainCampus
=
this
.
props
.
mainCampus
;
console
.
log
(
universities
,
mainCampus
)
let
univ_to_plot
=
[];
for
(
let
main_campus_pk
in
mainCampus
)
{
let
campus
=
mainCampus
[
main_campus_pk
]
let
univ
=
universities
[
campus
.
university
]
univ_to_plot
.
push
({
name
:
univ
.
name
,
main_campus
:
campus
})
}
return
(
<
Map
center
=
{[
35
,
0
]}
zoom
=
{
2
}
style
=
{{
height
:
"
800px
"
}}
>
<
LayersControl
position
=
"
topright
"
>
...
...
@@ -104,15 +91,7 @@ class UnivMap extends Component {
<
/LayersControl.BaseLayer
>
<
/LayersControl
>
{
univ_to_plot
.
map
((
el
)
=>
(
<
Marker
position
=
{[
el
.
main_campus
.
lat
,
el
.
main_campus
.
lon
]}
>
<
Popup
>
{
el
.
name
}
<
/Popup
>
<
/Marker
>
))
}
<
UnivMarkers
/>
<
/Map
>
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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