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 django.conf import settings
|
||||
from django.db.models import Field
|
||||
from django.forms import CharField, ModelForm, ValidationError
|
||||
from django.forms.models import ModelChoiceField
|
||||
from django.forms.widgets import HiddenInput
|
||||
|
|
|
@ -282,7 +282,9 @@ editor = {
|
|||
'levelconnector': '#FFFF00',
|
||||
'shadow': '#000000',
|
||||
'stair': '#FF0000',
|
||||
'arealocation': '#0099FF'
|
||||
'arealocation': '#0099FF',
|
||||
'escalator': '#FF9900',
|
||||
'escalatorslope': '#DD7700'
|
||||
},
|
||||
_line_draw_geometry_style: function(style) {
|
||||
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'
|
||||
|
||||
|
||||
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):
|
||||
"""
|
||||
A stair
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
from c3nav.mapdata.models import AreaLocation, Level, LocationGroup, Package, Source
|
||||
from c3nav.mapdata.models.collections import Elevator
|
||||
from c3nav.mapdata.models.geometry import (Building, Door, ElevatorLevel, Hole, LevelConnector, LineObstacle, Obstacle,
|
||||
Outside, Room, Stair)
|
||||
from c3nav.mapdata.models.geometry import (Building, Door, ElevatorLevel, Escalator, EscalatorSlope, Hole,
|
||||
LevelConnector, LineObstacle, Obstacle, Outside, Room, Stair)
|
||||
|
||||
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue