1. 10 Sep, 2004 1 commit
    • Russ Fish's avatar
      Add MapQuest-style pan and zoom controls to the floormap.php3 page, and · aa7d57a9
      Russ Fish authored
      generally improve the clarity and appearance of the maps.  The scale factor
      buttons numbered 1-5 actually correspond to scale factors of 1, 1.5, 2, 2.5,
      and 3.
      
      Notice that the floorimages table in the database now has an integer "scale"
      column to distinguish the cached zoomed-in images with a suffix "-[1-5].jpg" .
      
      I use jpeg files instead of the png files that were used before.  They look as
      good or better, and are a third the size.  Panning around at a given zoom
      factor just involves cropping out a different rectangle of the scaled-up
      images.
      
      The 0311X064_[1-4]fl.pdf floor map files we got from Michael Kay started
      out life in Adobe Illustrator.  Although GhostScript/gv crash while
      trying to draw the pdf files, extracting them into PostScript files in
      Acrobat on Coke allows GhostScript to render them flawlessly.
      
      I started out using gs to render jpeg files in the shell, and then
      found that ImageMagick uses the same GhostScript renderer, and nicely
      handles cropping, drawing and annotations, and format conversion as well.
      
      The PostScript rendering gets slow at higher zoom factors.  So I cache the
      zoomed floor images, scaled up by rendering the PostScript files at a finer
      dot-pitch (density) in GhostScript, and then cropping out the right rectangle
      to register them properly.
      
      For readability, and to avoid having the thin lines and bitmap fonts used in
      some parts of the PostScript map from falling between the pixel cracks, I
      actually render at twice the pixel density and filter down to the final image
      with a gaussian -sharpen option to keep it from looking blurry.
      
      ImageMagick is callable from both the shell and as the Image::Magick package
      in Perl.  I converted the Perl logic in floormap.in to use Image::Magick
      instead of the GD graphics library, resulting in anti-aliased (smoothed)
      drawing of the wireless node dots and labels on floor maps for a better
      appearance.  Then I added optional scaling and centering arguments which
      select the proper cached zoomed-in image, and drive the logic for cropping and
      drawing.
      
      I modified the floormap.php3 file to wrap an input form around a set of zoom
      control buttons and the floormap image.  The zoom buttons set the scale
      argument to the Perl floormap script called on the server.  The floor map
      image itself is wrapped in a graphical submit button, so clicking on it
      returns the mouse coordinates within the image, which are then sent to the
      centering argument of the Perl script.
      aa7d57a9
  2. 10 Jun, 2004 1 commit
    • Leigh Stoller's avatar
      Add support so that setnodeloc and floormaps can be used on the · 159ced78
      Leigh Stoller authored
      new_nodes table. Thought it would be easy, but ended up doing more
      damage then I expected; oh well. New nodes show up in "gold" color
      (not listed in the legend).
      
      I added a link from the newnode_edit page. Rob will need to arrange
      for a location_info entry to be created when a new node is made live
      (but only if building/floor are not null).
      159ced78
  3. 09 Jun, 2004 1 commit
    • Leigh Stoller's avatar
      Switch everything over to using new buildings and floorimages tables · 315c5d9c
      Leigh Stoller authored
      that I added to the DB. See revision 1.251 of sql/database-create.sql.
      I have removed all of the hardwired names of buildings, images, files,
      etc. I have also added MEB floors 1 and 2, but they do not show up on
      the status page unlesss there are actually nodes assigned to them.
      When you go to set a node location, you do see the little thumbs of
      all existing buildings/floors, so you can add nodes to floors that do
      not currently have any.
      
      Still needs some work to cleanly display multiple buildings, but thats
      for another day.
      315c5d9c
  4. 08 Jun, 2004 1 commit
    • Leigh Stoller's avatar
      A bunch of cleanup and improvement. · 7bc9596e
      Leigh Stoller authored
      * Redo all the MEB .png files, removing the existing titles from the
        images, and cropping down the images to the actual floors. Redid the
        thumbnail files at the same time. Note that the existing location_info
        entries need to be updated, which I will do.
      
      * Rework portions of floormap.in in preparation for using the DB to
        describe the image files (still hardwired into the floormap).
      
      * Draw a title in each image using a truetype font, based on what will
        eventually come out of the DB, plus a floor tag.
      
      * Add option (-t) to not draw any titles; just naked images.
      7bc9596e
  5. 07 Jun, 2004 2 commits
    • Leigh Stoller's avatar
      Add support for deleting node locations. · 89001ca0
      Leigh Stoller authored
      89001ca0
    • Leigh Stoller's avatar
      New script to set the node location. Linked from the shownode page. Only · 303132ed
      Leigh Stoller authored
      admin people allowed. Comment from script:
      
      # * Initially we come in with just a nodeid. Display a page of little maps
      #   and titles the user must select (a floor in a building) from. User clicks.
      # * Next time through we have a building and floor defined in addition to the
      #   the nodeid. We put up that big image with the current nodes on that floor.
      #   We use the external floormap program to generate that image, but without
      #   an imagemap. Instead, we use a form with an input type=image, which acts
      #   as a big submit button; when the user clicks in the image, the browser
      #   submits the form, but with the x,y coords added as form arguments.
      # * We get all of the above arguments on the final click, including x,y. Verify
      #   all the aguments, and then do the insert.
      # * If user goes to reset the node location, form includes an additional submit
      #   button that says to use the old coords. This allows us to change the contact
      #   info for a node without actually changing the location.
      
      Caveats:
      
      * We do not describe buildings in the DB, and so we are currently hardwired
        to MEB for the building, and the images for each floor are still
        hardwired in the external script (vis/floormap.in) that creates the
        image. Needs to be dealt with before we can export this stuff.
      
      * There is no way web interface to delete a location entry. That should be
        easy to deal with when needed, but in the meantime:
      
      	delete from location_info where node_id='pcXXX'
      
      * All nodes get a "Set Location Entry" on the shownode page menu; I leave
        it to admin people to not set the location for a non-wireless node; will
        fix later as needed.
      
      * Coordinates are all in pixels. As Russ points out, this is (way) less
        then ideal, but certainly simple.
      303132ed