add Escalator and EscalatorSlope (with no support for rendermap and buildgraph so far)
This commit is contained in:
parent
5a0d628bf3
commit
03b07d8a76
6 changed files with 119 additions and 5 deletions
|
@ -3,7 +3,6 @@ import time
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.db.models import Field
|
|
||||||
from django.forms import CharField, ModelForm, ValidationError
|
from django.forms import CharField, ModelForm, ValidationError
|
||||||
from django.forms.models import ModelChoiceField
|
from django.forms.models import ModelChoiceField
|
||||||
from django.forms.widgets import HiddenInput
|
from django.forms.widgets import HiddenInput
|
||||||
|
|
|
@ -282,7 +282,9 @@ editor = {
|
||||||
'levelconnector': '#FFFF00',
|
'levelconnector': '#FFFF00',
|
||||||
'shadow': '#000000',
|
'shadow': '#000000',
|
||||||
'stair': '#FF0000',
|
'stair': '#FF0000',
|
||||||
'arealocation': '#0099FF'
|
'arealocation': '#0099FF',
|
||||||
|
'escalator': '#FF9900',
|
||||||
|
'escalatorslope': '#DD7700'
|
||||||
},
|
},
|
||||||
_line_draw_geometry_style: function(style) {
|
_line_draw_geometry_style: function(style) {
|
||||||
style.stroke = true;
|
style.stroke = true;
|
||||||
|
|
33
src/c3nav/mapdata/migrations/0022_escalator.py
Normal file
33
src/c3nav/mapdata/migrations/0022_escalator.py
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.10.4 on 2016-12-17 23:54
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import c3nav.mapdata.fields
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('mapdata', '0021_auto_20161217_2333'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Escalator',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.SlugField(unique=True, verbose_name='Name')),
|
||||||
|
('geometry', c3nav.mapdata.fields.GeometryField()),
|
||||||
|
('direction', models.BooleanField(choices=[(True, 'up'), (False, 'down')], verbose_name='direction')),
|
||||||
|
('level', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='escalators', to='mapdata.Level', verbose_name='level')),
|
||||||
|
('package', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='escalators', to='mapdata.Package', verbose_name='map package')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Escalator',
|
||||||
|
'default_related_name': 'escalators',
|
||||||
|
'verbose_name_plural': 'Escalators',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
32
src/c3nav/mapdata/migrations/0023_escalatorslope.py
Normal file
32
src/c3nav/mapdata/migrations/0023_escalatorslope.py
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# Generated by Django 1.10.4 on 2016-12-18 00:12
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import c3nav.mapdata.fields
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('mapdata', '0022_escalator'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='EscalatorSlope',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.SlugField(unique=True, verbose_name='Name')),
|
||||||
|
('geometry', c3nav.mapdata.fields.GeometryField()),
|
||||||
|
('level', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='escalatorslopes', to='mapdata.Level', verbose_name='level')),
|
||||||
|
('package', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='escalatorslopes', to='mapdata.Package', verbose_name='map package')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Escalator Slope',
|
||||||
|
'verbose_name_plural': 'Escalator Slopes',
|
||||||
|
'default_related_name': 'escalatorslopes',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
|
@ -165,6 +165,54 @@ class Outside(GeometryMapItemWithLevel):
|
||||||
default_related_name = 'outsides'
|
default_related_name = 'outsides'
|
||||||
|
|
||||||
|
|
||||||
|
class Escalator(GeometryMapItemWithLevel):
|
||||||
|
"""
|
||||||
|
An escalator area
|
||||||
|
"""
|
||||||
|
DIRECTIONS = (
|
||||||
|
(True, _('up')),
|
||||||
|
(False, _('down')),
|
||||||
|
)
|
||||||
|
direction = models.BooleanField(verbose_name=_('direction'), choices=DIRECTIONS)
|
||||||
|
|
||||||
|
geomtype = 'polygon'
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _('Escalator')
|
||||||
|
verbose_name_plural = _('Escalators')
|
||||||
|
default_related_name = 'escalators'
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def fromfile(cls, data, file_path):
|
||||||
|
kwargs = super().fromfile(data, file_path)
|
||||||
|
|
||||||
|
if 'direction' not in data:
|
||||||
|
raise ValueError('missing direction.')
|
||||||
|
kwargs['direction'] = data['direction']
|
||||||
|
|
||||||
|
return kwargs
|
||||||
|
|
||||||
|
def get_geojson_properties(self):
|
||||||
|
result = super().get_geojson_properties()
|
||||||
|
result['direction'] = 'up' if self.direction else 'down'
|
||||||
|
return result
|
||||||
|
|
||||||
|
def tofile(self):
|
||||||
|
result = super().tofile()
|
||||||
|
result['direction'] = self.direction
|
||||||
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
class EscalatorSlope(DirectedLineGeometryMapItemWithLevel):
|
||||||
|
"""
|
||||||
|
An escalator slope, indicating which side of the escalator is up
|
||||||
|
"""
|
||||||
|
class Meta:
|
||||||
|
verbose_name = _('Escalator Slope')
|
||||||
|
verbose_name_plural = _('Escalator Slopes')
|
||||||
|
default_related_name = 'escalatorslopes'
|
||||||
|
|
||||||
|
|
||||||
class Stair(DirectedLineGeometryMapItemWithLevel):
|
class Stair(DirectedLineGeometryMapItemWithLevel):
|
||||||
"""
|
"""
|
||||||
A stair
|
A stair
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
from c3nav.mapdata.models import AreaLocation, Level, LocationGroup, Package, Source
|
from c3nav.mapdata.models import AreaLocation, Level, LocationGroup, Package, Source
|
||||||
from c3nav.mapdata.models.collections import Elevator
|
from c3nav.mapdata.models.collections import Elevator
|
||||||
from c3nav.mapdata.models.geometry import (Building, Door, ElevatorLevel, Hole, LevelConnector, LineObstacle, Obstacle,
|
from c3nav.mapdata.models.geometry import (Building, Door, ElevatorLevel, Escalator, EscalatorSlope, Hole,
|
||||||
Outside, Room, Stair)
|
LevelConnector, LineObstacle, Obstacle, Outside, Room, Stair)
|
||||||
|
|
||||||
ordered_models = (Package, Level, LevelConnector, Source, Building, Room, Outside, Door, Obstacle, Hole)
|
ordered_models = (Package, Level, LevelConnector, Source, Building, Room, Outside, Door, Obstacle, Hole)
|
||||||
ordered_models += (Elevator, ElevatorLevel, LineObstacle, Stair)
|
ordered_models += (Elevator, ElevatorLevel, LineObstacle, Stair, Escalator, EscalatorSlope)
|
||||||
ordered_models += (LocationGroup, AreaLocation)
|
ordered_models += (LocationGroup, AreaLocation)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue