Render Attributes for Selected Store

Render attributes of the selected stores with template rendering.
  1. Store Selection
  2. Render Store Attributes with Template

Store Selection

The TiledView has a bindable property that you can use: selectedStore. The TiledView handles the click event on all store markers and save the store clicked into this property. It automatically change the style of the marker if it was provided on the TiledView initialization.

JavaScript
        let selectedStoreObj = new woosmap.utils.MVCObject();
selectedStoreObj.selectedStore = null;
selectedStoreObj.selectedStore_changed = function() {
    const selectedStore = this.get('selectedStore');
    renderSelectedStore(selectedStore);
  };
selectedStoreObj.bindTo('selectedStore', mapView, 'selectedStore', false);

    

Render Store Attributes with Template

HTML
        <div id="main">
  <div id="my-map-container">
    <div id="my-map"></div>
  </div>
  <div id="sidebar-container">
    <div id="sidebar">
      <section id="selected-store-container">
      </section>
    </div>
  </div>
</div>

    
JavaScript
        const selectedStoreTemplate = "<div class='woosmap-tableview-cell'>" +
  "<div class='store-photo-header'></div>" +
  "<div class='selected-store-card'><div class='hero'>" +
  "<div class='store-title'>{{name}}</div>" +
  "{{#types}}<div class='store-types'>{{types}}</div>{{/types}}</div>" +
  "<div class='content'><div class='store-address'>{{address.lines}}</div>" +
  "{{#contact.phone}}<div class='store-contact'><a href='tel:{{contact.phone}}'>{{contact.phone}}</a></div>{{/contact.phone}}" +
  "{{#contact.website}}<div class='store-website'><a href='{{contact.website}}' target='_blank'>Go to website</a></div>{{/contact.website}}" +
  "</div></div>" +
  "</div>";

function renderSelectedStore(store) {
  const templateRenderer = new woosmap.TemplateRenderer(selectedStoreTemplate);
  const selectedStoreHTML = templateRenderer.render(store.properties);
  const $selectedStoreContainer = woosmap.$('#selected-store-container');
  $selectedStoreContainer.html(selectedStoreHTML); 
}

    

Click on a store to see attributes displayed in the sidebar.