Changeset 5ceb062 in osmose-frontend


Ignore:
Timestamp:
Mar 18, 2014 10:08:57 PM (6 years ago)
Author:
Frédéric Rodrigo <fred.rodrigo@…>
Branches:
master
Children:
ae49110
Parents:
31616e3
git-author:
Frédéric Rodrigo <fred.rodrigo@…> (05/03/2014 12:05:49)
git-committer:
Frédéric Rodrigo <fred.rodrigo@…> (18/03/2014 22:08:57)
Message:

Osmose Editor

Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • osmose.py

    r72ad8d8 r5ceb062  
    9898import map 
    9999import false_positive 
     100import editor 
    100101 
    101102@route('/<filename:path>', name='static') 
  • static/map/Osmose.Editor.css

    r31616e3 r5ceb062  
    6363  background: green; 
    6464} 
     65 
     66#editor_save_form label { 
     67  display: inline-block; 
     68  text-align: right; 
     69  width: 30%; 
     70} 
     71 
     72#editor_save_form input { 
     73  width: 70% 
     74} 
     75 
     76.ui-widget-overlay { 
     77  position: fixed; 
     78  top: 0; 
     79  left: 0; 
     80  width: 100%; 
     81  height: 100%; 
     82  background: black; 
     83  opacity: .3; 
     84  filter: Alpha(Opacity=30); 
     85  z-index: 4000; 
     86} 
     87 
     88.ui-dialog { 
     89  padding: 10px; 
     90  background: white; 
     91  box-shadow: 0 1px 7px rgba(0,0,0,0.65); 
     92  -webkit-border-radius: 4px; 
     93  border-radius: 4px; 
     94  z-index: 4001; 
     95} 
     96 
     97.ui-dialog-titlebar { 
     98  font-size: 150%; 
     99  margin-bottom: 1em; 
     100} 
     101 
     102.ui-dialog-titlebar-close { 
     103  visibility: hidden; 
     104} 
     105 
     106.ui-dialog-buttonset { 
     107  text-align: right; 
     108} 
  • static/map/Osmose.Editor.js

    r31616e3 r5ceb062  
    1010  _editedObjectStack: {}, 
    1111 
     12  _deletedObjectStack: {}, 
     13 
    1214  initialize: function (placeholder, options) { 
    1315    this._$container = $("#" + placeholder); 
     
    2426    var self = this; 
    2527    $.ajax({ 
    26       url: '../api/0.2/error/' + error, 
     28      url: '../api/0.2/error/' + error + '/fresh_elems', 
    2729      dataType: 'json' 
    2830    }).done(function (data) { 
     
    5153 
    5254  _save: function (e) { 
    53     var self = this; 
    54     $.ajax({ 
    55       url: "../editor/save", 
    56       type: "POST", 
    57       data: JSON.stringify(self._editedObjectStack), 
    58     }).done(function () { 
    59       alert("Save OK"); //////////////////// TODO 
    60     }).fail(function () { 
    61       alert("Save Fail"); ////////////////// TODO 
     55    var self = this, 
     56      dialog = $('#dialog_editor_save_popup'); 
     57 
     58    dialog.find('#editor-edited-count').text(Object.keys(this._editedObjectStack).length); 
     59    dialog.find('#editor-deleted-count').text(Object.keys(this._deletedObjectStack).length); 
     60 
     61    dialog.dialog({ 
     62      modal: true, 
     63      buttons: [{ 
     64        text: dialog.attr('data-button_cancel'), 
     65        click: function () { 
     66          $(this).dialog('close'); 
     67        } 
     68      }, { 
     69        text: dialog.attr('data-button_save'), 
     70        click: function () { 
     71          var t = this; 
     72          $.ajax({ 
     73            url: '../editor/save', 
     74            type: 'POST', 
     75            contentType: 'application/json', 
     76            data: JSON.stringify({ 
     77              comment: document.forms.editor_save_form.elements.comment.value, 
     78              source: document.forms.editor_save_form.elements.source.value, 
     79              type: document.forms.editor_save_form.elements.type.value, 
     80              edited: self._editedObjectStack, 
     81              deleted: self._deletedObjectStack 
     82            }), 
     83          }).done(function () { 
     84            self._editedObjectStack = {}; 
     85            self._deletedObjectStack = {}; 
     86            self._count_touched(); 
     87            $(t).dialog('close'); 
     88          }).fail(function (xhr, err) { 
     89            alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status); 
     90          }); 
     91        }, 
     92      }] 
    6293    }); 
    6394  }, 
     
    76107    }); 
    77108    this.hide(); 
    78     var n = Object.keys(this._editedObjectStack).length, 
     109    this._count_touched(); 
     110  }, 
     111 
     112  _count_touched: function () { 
     113    var n = Object.keys(this._editedObjectStack).length + Object.keys(this._deletedObjectStack).length, 
    79114      es = $("#menu-editor-save"); 
    80115    if (n > 0) { 
    81116      es.show(); 
    82117      es.find("#menu-editor-save-number").text(Object.keys(this._editedObjectStack).length); 
     118    } else { 
     119      es.hide(); 
    83120    } 
    84121  }, 
     
    109146    if (cur_value.indexOf("=") < 0 || cur_value.startsWith("=") || cur_value.endsWith("=")) { 
    110147      cur_value = ""; 
    111     } 
    112  
    113     var edited_key = e.target.dataset.key; 
    114     if (!edited_key && cur_value.indexOf("=") >= 0) { 
    115       var edited = cur_value.split("="); 
    116       edited_key = edited[0].trim(); 
    117       $("input[type='text'][data-key='" + edited_key + "'", this._$container).attr('data-key', null); 
    118       e.target.dataset.key = edited_key; 
     148    } else { 
     149      var edited = cur_value.split("="), 
     150        k = edited[0].trim(); 
     151        edited_key = e.target.dataset.key; 
     152      if (!edited_key || k != edited_key) { 
     153        edited_key = k; 
     154        $("input[type='text'][data-key='" + edited_key + "'", this._$container).attr('data-key', null); 
     155        e.target.dataset.key = edited_key; 
     156      } 
    119157    } 
    120158 
  • tools/assets.py

    r31616e3 r5ceb062  
    2020js_map_bundle = Bundle( 
    2121    'js/jquery-1.7.2.js', 
     22    'js/jquery-ui-1.10.4.dialog.js', 
    2223    'js/mustache.js', 
    2324    'map/leaflet/leaflet-src.js', 
  • views/map/index.tpl

    r31616e3 r5ceb062  
    183183<div id="editor"></div> 
    184184 
     185<div id="dialog_editor_save_popup" title="{{_("Save changeset")}}" data-button_cancel="{{_("Cancel")}}" data-button_save="{{_("Save")}}"> 
     186  <p>{{_("Objects edited:")}}&nbsp;<span id="editor-edited-count"></span></p> 
     187  <p>{{_("Objects deleted:")}}&nbsp;<span id="editor-deleted-count"></span></p> 
     188  <form id="editor_save_form"> 
     189    <label for="comment">{{_("Comment")}}</label><input type="text" name="comment" id="comment" value="{{_("Fix with Osmose")}}"> 
     190    <br/><br/> 
     191    <label for="source">{{_("Source")}}</label><input type="text" name="source" id="source" value="Osmose"> 
     192    <br/><br/> 
     193    <label for="type">{{_("Type")}}</label><input type="text" name="type" id="type" value="fix"> 
     194  </form> 
     195</div> 
     196 
    185197</body> 
    186198</html> 
Note: See TracChangeset for help on using the changeset viewer.