Changeset a5a2087 in osmose-frontend


Ignore:
Timestamp:
May 11, 2014 6:56:24 PM (6 years ago)
Author:
Jocelyn Jaubert <jocelyn.jaubert@…>
Children:
0d934f6
Parents:
d6630e5 (diff), a976688 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge remote-tracking branch 'frodrigo/master' into beta

Files:
3 added
13 edited

Legend:

Unmodified
Added
Removed
  • errors.py

    rf6a2ac9 rc975680  
    112112 
    113113@route('/errors') 
    114 def index_redirect(): 
    115     redirect("errors/") 
    116  
    117  
     114@route('/errors.<format:ext>') 
    118115@route('/errors/') 
    119116@route('/errors/done') 
     117@route('/errors/done.<format:ext>') 
    120118@route('/errors/false-positive') 
    121 def index(db, lang): 
     119@route('/errors/false-positive.<format:ext>') 
     120def index(db, lang, format=None): 
    122121    if request.path.endswith("false-positive"): 
    123122        title = _("False positives") 
     
    130129        gen = "error" 
    131130 
    132     countries = query_meta._countries(db, lang) 
     131    if not format in ('rss', 'gpx', 'josm'): 
     132        format = None 
     133 
     134    countries = query_meta._countries(db, lang) if format == None else None 
    133135    items = query_meta._items(db, lang) 
    134136 
     
    137139    params.limit = None 
    138140 
    139     errors_groups = query._count(db, params, [ 
    140         "dynpoi_class.item", 
    141         "dynpoi_class.source", 
    142         "dynpoi_class.class", 
    143         "dynpoi_source.comment"], 
    144         ["dynpoi_item"], [ 
    145         "first(dynpoi_item.menu) AS menu", 
    146         "first(dynpoi_class.title) AS title"], 
    147         orderBy = True) 
     141    if format == None and params.item: 
     142        errors_groups = query._count(db, params, [ 
     143            "dynpoi_class.item", 
     144            "dynpoi_class.source", 
     145            "dynpoi_class.class", 
     146            "dynpoi_source.comment"], 
     147            ["dynpoi_item"], [ 
     148            "first(dynpoi_item.menu) AS menu", 
     149            "first(dynpoi_class.title) AS title"], 
     150            orderBy = True) 
    148151 
    149     total = 0 
    150     for res in errors_groups: 
    151         if res["count"] != -1: 
    152             total += res["count"] 
     152        total = 0 
     153        for res in errors_groups: 
     154            if res["count"] != -1: 
     155                total += res["count"] 
     156    else: 
     157        errors_groups = [] 
     158        total = 0 
    153159 
    154160    params.limit = request.params.get('limit', type=int, default=100) 
     
    167173        errors = None 
    168174 
    169     return template('errors/index', countries=countries, items=items, errors_groups=errors_groups, total=total, errors=errors, query=request.query_string, country=params.country, item=params.item, translate=utils.translator(lang), gen=gen, opt_date=opt_date, title=title) 
     175    if format == 'rss': 
     176        response.content_type = 'application/rss+xml' 
     177        tpl = 'errors/list.rss' 
     178    elif format == 'gpx': 
     179        response.content_type = 'application/gpx+xml' 
     180        tpl = 'errors/list.gpx' 
     181    elif format == 'josm': 
     182        objects = [] 
     183        for res in errors: 
     184            if res["elems"]: 
     185                elems = res["elems"].split("_") 
     186                for e in elems: 
     187                    m = re.match(r"([a-z]+)([0-9]+)", e) 
     188                    if m: 
     189                        cur_type = m.group(1) 
     190                        objects.append(cur_type[0] + m.group(2)) 
     191 
     192        response.status = 302 
     193        response.set_header('Location', 'http://localhost:8111/load_object?objects=%s' % ','.join(objects)) 
     194        return 
     195    else: 
     196        tpl = 'errors/index' 
     197 
     198    return template(tpl, countries=countries, items=items, errors_groups=errors_groups, total=total, errors=errors, query=request.query_string, country=params.country, item=params.item, translate=utils.translator(lang), gen=gen, opt_date=opt_date, title=title, website=utils.website) 
  • osmose.py

    r9c41fa6 rc975680  
    3131 
    3232def ext_filter(config): 
    33     regexp = r'html|json|xml|rss|png|svg|pdf' 
     33    regexp = r'html|json|xml|rss|png|svg|pdf|gpx|josm' 
    3434    def to_python(match): 
    35         return match if match in ('html', 'json', 'xml', 'rss', 'png', 'svg', 'pdf') else 'html' 
     35        return match if match in ('html', 'json', 'xml', 'rss', 'png', 'svg', 'pdf', 'gpx', 'josm') else 'html' 
    3636    def to_url(ext): 
    3737        return ext 
  • static/map/Osmose.Editor.js

    r29cb681 ra976688  
    4848    }); 
    4949 
    50     $(window).on('beforeunload', this._beforeunload.bind(this)); 
     50    $(window).on('beforeunload', L.Util.bind(this._beforeunload, this)); 
    5151 
    5252    L.Control.Sidebar.prototype.initialize.call(this, placeholder, options); 
     
    115115        reuse_changeset: reuse_changeset, 
    116116        modify: self._modifiyObjectStack, 
    117         delete: self._deleteObjectStack 
     117        'delete': self._deleteObjectStack 
    118118      }), 
    119119    }).done(function () { 
  • static/map/Osmose.Errors.js

    r800e4b1 rdbb2335  
    3838        url = null, 
    3939        self = this; 
    40       this._map.spin(true, { 
    41         length: 50, 
    42         radius: 50, 
    43         width: 20, 
    44         direction: -1, 
    45         color: '#fff', 
    46       }); 
     40      this._map.spin(true); 
    4741      if (urlPart.item) { 
    4842        this._params.item = urlPart.item; 
  • static/map/Osmose.Marker.js

    ra870ebb ra976688  
    77    this._editor = editor; 
    88    L.GeoJSON.prototype.initialize.call(this, data, { 
    9       pointToLayer: this._pointToLayer.bind(this), 
    10       onEachFeature: this._onEachFeature.bind(this), 
     9      pointToLayer: L.Util.bind(this._pointToLayer, this), 
     10      onEachFeature: L.Util.bind(this._onEachFeature, this), 
    1111    }); 
    1212  }, 
  • static/map/Osmose.Spin.js

    re32b292 rdbb2335  
    11L.SpinMapMixin = { 
    2     spin: function (state, options) { 
     2    spin: function (state) { 
    33        if (!!state) { 
    44            // start spinning ! 
  • static/map/map.js

    r96314da r5e2dd37  
    2222  map.addControl(new OsmoseMenuToggle(menu)); 
    2323  menu.show(); 
     24 
     25  new OsmoseExport(map, menu); 
    2426 
    2527  var editor = new OsmoseEditor('editor', { 
  • static/map/style.css

    r93ef597 r5e2dd37  
    209209 
    210210@media(max-width:399px) { 
    211   #menu-lang, #menu-openstreetmapfr, #menu-byuser, #menu-relation_analyser, #menu-statistics, #menu-help, #menu-delay { 
     211  #menu-lang, #menu-openstreetmapfr, #menu-byuser, #menu-relation_analyser, #menu-statistics, #menu-export, #menu-help, #menu-delay { 
    212212    display: none; 
    213213  } 
     
    215215 
    216216@media(min-width:400px) and (max-width:767px) { 
    217   #menu-byuser, #menu-relation_analyser, #menu-statistics, #menu-help, #menu-delay { 
     217  #menu-byuser, #menu-relation_analyser, #menu-statistics, #menu-export, #menu-help, #menu-delay { 
    218218    display: none; 
    219219  } 
     
    221221 
    222222@media(min-width:768px) and (max-width:991px) { 
    223   #menu-relation_analyser, #menu-statistics, #menu-help { 
     223  #menu-relation_analyser, #menu-statistics, #menu-export, #menu-help { 
    224224    display: none; 
    225225  } 
  • tools/assets.py

    r07df62a r5e2dd37  
    4141    'map/Osmose.Errors.js', 
    4242    'map/Osmose.Spin.js', 
     43    'map/Osmose.Export.js', 
    4344    'map/map.js', 
    4445    'map/menu.js', 
  • tools/query_meta.py

    rec5ceb2 radb06c1  
    7676            ret = {"categ":res["categ"], "menu": "no translation", "item": []} 
    7777            result.append(ret) 
     78            ret["menu_lang"] = {k: v for k, v in res["categ_menu"].iteritems() if v} 
    7879            for l in lang: 
    7980                if l in res["categ_menu"]: 
  • views/errors/index.tpl

    r370abfd rf054b5c  
    11%favicon=None 
    22%for res in items: 
    3 %    if item == res['item']: 
     3%    if item == str(res["item"]): 
    44%        title += ' - ' + translate.select(res['menu']) 
    55%        favicon = "../images/markers/marker-l-%s.png" % res["item"] 
    66%    end 
    77%end 
    8 %rebase layout title=title, favicon=favicon 
     8%rss="http://"+website+"/errors.rss?%s" % query 
     9%rebase layout title=title, favicon=favicon, rss=rss 
    910<a href=".?{{query}}">{{_("Informations")}}</a> 
    1011<a href="done?{{query}}">{{_("Fixed")}}</a> 
  • views/errors/list.tpl

    r6f5c3a9 r4066327  
    3939%    end 
    4040%    e = gen if gen in ('error', 'false-positive') else 'error' 
    41     <td title="erreur n°{{res["id"]}}"><a href="../{{e}}/{{res["id"]}}">E</a></td> 
     41    <td title="{{_(u"error n°")}}{{res["id"]}}"><a href="../{{e}}/{{res["id"]}}">E</a></td> 
    4242%    if res["lat"] and res["lon"]: 
    4343%        lat = res["lat"] 
  • views/map/index.tpl

    r560e75d rc975680  
    151151%end 
    152152 
     153<li id="menu-export"><a href='#'>{{_("Export")}} ▼</a> 
     154<ul class="submenu"> 
     155  <li><a href="../errors" target="_blank">{{_("Html list")}}</a></li> 
     156  <li><a href="../errors.josm" target="hiddenIframe">JOSM</a></li> 
     157  <li><a href="../errors.rss" target="_blank">RSS</a></li> 
     158  <li><a href="../errors.gpx">.gpx</a></li> 
     159  <li><a href="../api/0.2/errors" target="_blank">Json</a></li> 
     160  <li><a href="markers" target="_blank">GeoJson</a></li> 
     161</ul> 
     162 
    153163<li id="menu-help"><a href='#'>{{_("Help")}} ▼</a> 
    154164<ul class="submenu"> 
Note: See TracChangeset for help on using the changeset viewer.