Coder Social home page Coder Social logo

exhibit's People

Contributors

cdenise avatar crcowan avatar dfeeney avatar distobj avatar eob avatar karger avatar kiolalis avatar lmorillas avatar petriroponen avatar pike avatar qqliu avatar ricardocabral avatar tcokoro avatar zepheiryan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

exhibit's Issues

document.location.search breaks IE 8

In the changes from 3.0.0rc1 to 3.1.0rc, code was introduced that uses "document.location.search" unfortunately ".search" is undefined on IE8 so Exhibit fails.

I know that IE8 is old but right now we are stuck with it. Any chance on making a fix so that 3.1.0rc and later still works on IE8?

Thanks.

Charles

Allow for URL escaped {{ }} in lenses

I'm using django to create URLs for exhibit lenses, and that does a iri_to_url, which url-escapes the {{ }} that I passed in.

I'm currently working around that by decodeURI() on the value in the subcontent parser:

diff --git a/elmo/static/simile/exhibit/scripts/ui/lens.js b/elmo/static/simile/exhibit/scripts/ui/lens.js
index 54589df..8f34e7f 100644
--- a/elmo/static/simile/exhibit/scripts/ui/lens.js
+++ b/elmo/static/simile/exhibit/scripts/ui/lens.js
@@ -495,6 +495,8 @@ Exhibit.Lens._parseSubcontentAttribute = function(value) {
     var fragments, current, open, close;
     fragments = [];
     current = 0;
+    /* XXX Hack: django encodes IRIs, decode this here */
+    value = decodeURI(value);
     while (current < value.length && (open = value.indexOf("{{", current)) >= 0) {
         close = value.indexOf("}}", open);
         if (close < 0) {

@karger, do you have an opinion on whether this is good for exhibit to do or not?

Not possible to access id of item in lense

I want to access the data filed id of an item in a lense, but it is empty.

If I take the flag demo and change the the .code to .id in the lense, I get nothing.

https://github.com/simile-widgets/exhibit/tree/master/scripted/demos/flags

<div data-ex-role="lens" style="display: none;" class="map-lens">
    <div class="flag-container">
        <img data-ex-src-subcontent="http://upload.wikimedia.org/wikipedia/commons/thumb/9/9a/Flag_of_{{.label}}.svg/200px-Flag_of_{{.label}}.svg.png" alt="wikipedia flag image"/>
    </div>
    <div><b data-ex-content=".label"></b> [<span data-ex-content=".code"></span>]</div>
    <div>(Image from Wikipedia)</div>
</div>

change the third last line to

    <div><b data-ex-content=".label"></b> [<span data-ex-content=".id"></span>]</div>

is this the expected behavior? Is there any other way of accessing the id of an item?
(I know in this example the value of id is duplicated to code, but my source is bibsonomy json output and it has an id, which is not reproducible from any other field.

[EDIT] Actually in my case I found out, it is possible to reproduce the id from the other values, by doing concat('http://www.bibsonomy.org/bibtex/', .intraHash, '/', .user) or more precise concat('http://www.bibsonomy.org/bibtex/2', .intraHash, '/', .user)

Bug in building hierarchical facet

Hi,

I found one problem in building the hierarchical facet, it creates the duplicated entries.
I pasted here the fix i made, from hierarchical-facet.js
replace if (!valueSet.contains(parentValue)) {
by if (!values.contains(parentValue)) {

Regards,
Quyen

Facet - incorrect count for array type items

Demo Link :http://simile-widgets.org/exhibit/examples/presidents/presidents.html
Json data: http://simile-widgets.org/exhibit/examples/presidents/presidents.js

If you look at the json file for the above US president demo, there are 8 presidents whose religion is mentioned as 'Episcopal' but in the facet, it lists as only 7.
Digging further, I noticed that the facet is counting only the first value in the array.
It's ignoring the rest.

'George Washington' has following data for religion - he is excluded in the facet search for 'Episcopal'
"religion": [
"Anglican",
"Episcopal",
"Deist"
]

'Deist' is also not listed in the facet, as it appears only once in json file and is not the first item in the array.

Refactor List and Cloud facet to inhieret from a common superclass

There's a lot of code shared between these two facets. Create an EnumeratedFacet class and then refactor code from the ListFacet and CloudFacet into that parent class.

In the end, ListFacet and CloudFacet should contain minimal code -- just how to render the items.

You'll probably want to:

  • Load ListFacet and CloudFacet into a diff viewer to help analyze the differences (and, more important, the commonalities)
  • Read up on how to perform inheritance with Javascript (this may end up being a discussion on this issue thread).

Expression ".foo = 5" is always false, only works with ".foo = '5'". AKA Exhibit.Set only stores strings

When comparing for equality, the operator doesn't try to parse numbers, and thus always comes back with false.

In a way this is due to the fact that you can put Strings, Numbers and Booleans into an Exhibit.Set, but it only returns Strings.

ES6 has a real Set, but that probably breaks browser compat. Maybe use a shim that's out there?

Also, changing the semantics of Exhibit.Set() might break a ton of sites, sadly.

View with linked items as main item type

Please consider http://www.simile-widgets.org/exhibit/examples/senate/senate.html as an example. Is it possible to create another view with committees linked to the selected senators only? So, if some bill is selected in the sponsoring facet, only committees that have members that sponsored that bill should be shown.

If I would create a tabular view with the expression .committeeMember, the committees are shown as lists: multiple per senator, one senator per row. What I'd like to do is sort of change the item type of the view to committee, so that every committee has one row, and duplicates are removed.

Is something like that possible? I cannot find a demo that does something similar. When the collection of the view is changed, the facets don't work for that view any more.

we are using the Exhibit Timeline 3.0 in our website. We are displaying the StartDate and Enddate in the popup of each event as a label. But we need to display a textfield at there with the dates of event with a calendar.

we are using the Exhibit Timeline 3.0 in our website. We are displaying the StartDate and Enddate in the popup of each event as a label. But we need to display a textfield at there with the dates of event with a calendar.

We are able to add a text field(<input type="text" .....) but how we can give the value of the event to textfield.

I'm trying from last couple of days.

Thanks in Advance.

Facets not loaded when not displayed at opening page

Please take a look at the following page (source code below): http://exhibit.camilstaps.nl/display-none.html.

I have my facets in a container with display:none; to show them on a later moment. When I click 'toggle facets', the facets are shown but are empty. Is that by design / how do I resolve this?


This is the relevant HTML. I'm using the data of the senate example.

<div data-ex-role="collection" data-ex-item-types="Senator"></div>
<table>
    <tr>
        <td>
            <button id="toggle-facets">Toggle facets</button>
            <div id="facet-list" style="display:none;">
                <div data-ex-role="facet"
                     data-ex-expression=".party"></div>
                <div data-ex-role="facet"
                     data-ex-expression=".state"></div>
            </div>
        </td>
        <td>
            <div data-ex-role="viewPanel">
                <div data-ex-role="view"
                     data-ex-view-class="Tabular"
                     data-ex-columns=".label, .party, .state"
                     data-ex-columns="name, party, state"></div>
            </div>
        </td>
    </tr>
</table>

Unscrambling widget configuration

Exhibit is generally used to create widgets that are configured based on attributes in dom elements describing the widgets. However, the codebase is cluttered with alternative code that configures an element based on a passed-in "configuration" js object. I don't think this code has been used for years, if ever, and I suspect it will break immediately if anyone tries to use it.

As one concrete example, util/settings.js implements a "_internalCollectSettings" method (used for configuring from dom and js object) that reads values from the configuration and uses them to determine settings for the widget. When you read values from a dom object, you'll always get strings. But if you read from a configuration object you might get other types. internalCollectSettings seems to be trying to prepare for this, since to decide whether to process a value it tests for (typeof value === "string" && value.length ? 0) || (typeof value !== "string") . However, once the test is passed and internalCollectSettings begins to process the value, it invokes "value.split(;)" which is going to throw an error on anything but a string, which means non-string values won't be incorporated in the settings.

More generally, there are lots of inconsistent code pathways based on whether you invoke configure() or configureFromDom() and I'm pretty sure the inconsistency means the configure() methods just won't work right. For example, in list-facet.js there is significant code duplication between configureFromDom() and configure(), even though configureFromDom calls configure.

I'd like to clean up this clutter. The most aggressive way to do this would be simply to remove all the functions that configure from a js object instead of a dom node. If anyone is using these functions, please speak up! A somewhat less aggressive approach would be to better merge the configure() and configureFromDom() methods so that configure is less reliant on never-used code. However I still won't be testing the non-dom pathways, so there's no guarantee they'll work.

Empty strings treated as valid property values

When a google spreadsheet import reports an empty string in a cell, that empty string is assigned as the value of the corresponding item property in exhibit. This causes tests like if-exists to return true. It seems more intuitive and consistent for an empty string to be treated as a null, so the corresponding property is taken to be not defined on the given item.

upload dist folder

Just wondering if 'dist' folder can be uploaded as well. It will greatly help non-java users to simply copy/paste the dist folder for the development (scripted only). I don't think it's necessary for all users to download and install ant. Not everyone is familiar with ant..

Cannot build/devel exhibit under windows

The exhibit repository makes heavy use of symlinks in its tools directory, so that non-versioned names of e.g. jar files can be linked to the specific version currently in the repo. Symlinks don't check out into windows properly, so none of the java based tools (yuicompressor, jslint, etc) can run.

Apparently there is a way to help git handle symlinks on windows: http://stackoverflow.com/questions/5917249/git-symlinks-in-windows But this is above my pay grade.

Given that git is all about version control, is it even necessary to have the tools in the repo with their specific version numbers? Why not just incorporate whichever version we need using the unqualified file name (without version numbers) and indicate (changing) version numbers in commit messages?

After finishing load event

Hello!
I am using the plugin and I need to make an element in every item of the list draggable. So I am adding element with class 'draggable' to the lens

<div data-ex-role="lens">
      <span data-ex-content=".hour"></span>: <span data-ex-content=".label"></span>
      <img class="draggable" data-ex-src-content=".image" />
    </div>

And call draggable ui to this class

<script type="text/javascript">
$(document).ready(function(){
      $(".draggable").draggable({});
});
</script>

The problem is that after any filtering and grouping the elements are rerendered, so drag does not work any more. The only event I could bind this to is 'DOMSubtreeModified' but is it a right solution? Is there any exhibit event after rerendering the view?
exhibitConfigured.exhibit did not help

Inconsistent use of history leads to redundant rendering

It appears that the standard design for views is a "reconstruct" method that gets called when they need to be regenerated based on changes to the underlying collection. This reconstruct method is called through two different pathways:

  1. via an "onItemsChanged" event that is fired whenever the underlying collection changes
  2. via an "importState" method that is fired by the history mechanism whenever the history state changes.

Right now, it seems that a change to the collection via a facet interaction causes both a direct change in the collection and a change to the history state, so the reconstruct method gets called twice for each collection change. This makes exhibit twice as slow, and also introduces some bugs due to races between the two rerenders. For example, in the tabular view, changing the collection resets the paginated page to zero (important if the number of items shrinks so you don't see an empty page) but importState does not. When importState runs first, you end up with a view showing no results because you're on the wrong page.

Timeline raises a TypeError: Timeline.DefaultEventSource is not a constructor

Sometimes, when reloaded, timeline raises a TypeError: Timeline.DefaultEventSource is not a constructor and doesn't draw the timeline.

For example with http://simile-widgets.org/exhibit3/examples/cereals/cereal-characters.html

TypeError: Timeline.DefaultEventSource is not a constructor
Exhibit.TimelineView.prototype._initializeUI()time-ex...ndle.js (línea 1)
Exhibit.TimelineView.createFromDOM()time-ex...ndle.js (línea 1)
Exhibit.ViewPanel.prototype._createView()exhibit...ndle.js (línea 1)
Exhibit.ViewPanel.prototype._switchView()exhibit...ndle.js (línea 1)
Exhibit.ViewPanel.prototype.importState()exhibit...ndle.js (línea 1)
Exhibit.History.stateListener()exhibit...ndle.js (línea 1)
Exhibit.History.init()exhibit...ndle.js (línea 1)
exhibit-scripted-bundle.js()exhibit...ndle.js (línea 1)
.on/e()jquery-....min.js (línea 3)
f.event.dispatch()jquery-....min.js (línea 3)
f.event.add/i()jquery-....min.js (línea 3)
f.event.trigger()jquery-....min.js (línea 3)
.trigger/<()jquery-....min.js (línea 3)
f</<.each()jquery-....min.js (línea 2)
f</e.prototype.each()jquery-....min.js (línea 2)
.trigger()jquery-....min.js (línea 3)
Exhibit._Impl.prototype.configureFromDOM()exhibit...ndle.js (línea 1)
Exhibit.autoCreate/fDone()exhibit...ndle.js (línea 1)
.on/e()jquery-....min.js (línea 3)
f.event.dispatch()jquery-....min.js (línea 3)
f.event.add/i()jquery-....min.js (línea 3)
f.event.trigger()jquery-....min.js (línea 3)
.trigger/<()jquery-....min.js (línea 3)
f</<.each()jquery-....min.js (línea 2)
f</e.prototype.each()jquery-....min.js (línea 2)
.trigger()jquery-....min.js (línea 3)
Exhibit.Database._LocalImpl.prototype._loadLinks/fNext()exhibit...ndle.js (línea 1)
Exhibit.Importer.prototype.load/finish()exhibit...ndle.js (línea 1)
Exhibit.Database._LocalImpl.prototype.loadItems/wrapFinish()exhibit...ndle.js (línea 1)


...est,latest,totalDuration,totalEventCount,totalDensity,intervalDuration,eventsPer...

time-ex...ndle.js (línea 1)
TypeError: Timeline.DefaultEventSource is not a constructor
Exhibit.Debug.exception/f(e2=
TypeError: Timeline.DefaultEventSource is not a constructor


...est,latest,totalDuration,totalEventCount,totalDensity,intervalDuration,eventsPer...

, msg2=undefined)exhibit...ndle.js (línea 1)
Exhibit.Debug.exception(e=
TypeError: Timeline.DefaultEventSource is not a constructor


...est,latest,totalDuration,totalEventCount,totalDensity,intervalDuration,eventsPer...

, msg=undefined)exhibit...ndle.js (línea 1)
Exhibit.ViewPanel.prototype._createView()exhibit...ndle.js (línea 1)
Exhibit.ViewPanel.prototype._switchView(newIndex=1)exhibit...ndle.js (línea 1)
Exhibit.ViewPanel.prototype.importState(state=Object { viewIndex=1})exhibit...ndle.js (línea 1)
Exhibit.History.stateListener(evt=undefined)exhibit...ndle.js (línea 1)
Exhibit.History.init(ex=Object { _database={...}, _uiContext={...}, _registry={...}, más...}, persist=true)exhibit...ndle.js (línea 1)
exhibit-scripted-bundle.js(evt=Object { type="exhibitConfigured", timeStamp=1441215515284, jQuery17209661653833930088=true, más...}, ex=Object { _database={...}, _uiContext={...}, _registry={...}, más...})exhibit...ndle.js (línea 1)
.on/e(a=Object { type="exhibitConfigured", timeStamp=1441215515284, jQuery17209661653833930088=true, más...})jquery-....min.js (línea 3)
f.event.dispatch(c=Object { type="exhibitConfigured", timeStamp=1441215515284, jQuery17209661653833930088=true, más...})jquery-....min.js (línea 3)
f.event.add/i(a=Object { type="exhibitConfigured", timeStamp=1441215515284, jQuery17209661653833930088=true, más...})jquery-....min.js (línea 3)
f.event.trigger(c=Object { type="exhibitConfigured", timeStamp=1441215515284, jQuery17209661653833930088=true, más...}, d=[Object { type="exhibitConfigured", timeStamp=1441215515284, jQuery17209661653833930088=true, más...}, Object { _database={...}, _uiContext={...}, _registry={...}, más...}], e=Document cereal-characters.html, g=undefined)jquery-....min.js (línea 3)
.trigger/<()jquery-....min.js (línea 3)
f</<.each(a=Object[Document cereal-characters.html], c=function(), d=undefined)jquery-....min.js (línea 2)
f</e.prototype.each(a=function(), b=undefined)jquery-....min.js (línea 2)
.trigger(a="exhibitConfigured.exhibit", b=Object { _database={...}, _uiContext={...}, _registry={...}, más...})jquery-....min.js (línea 3)
Exhibit._Impl.prototype.configureFromDOM(root=undefined)exhibit...ndle.js (línea 1)
Exhibit.autoCreate/fDone()exhibit...ndle.js (línea 1)
.on/e(a=Object { type="dataload", timeStamp=1441215514480, jQuery17209661653833930088=true, más...})jquery-....min.js (línea 3)
f.event.dispatch(c=Object { type="dataload", timeStamp=1441215514480, jQuery17209661653833930088=true, más...})jquery-....min.js (línea 3)
f.event.add/i(a=Object { type="dataload", timeStamp=1441215514480, jQuery17209661653833930088=true, más...})jquery-....min.js (línea 3)
f.event.trigger(c=Object { type="dataload", timeStamp=1441215514480, jQuery17209661653833930088=true, más...}, d=[Object { type="dataload", timeStamp=1441215514480, jQuery17209661653833930088=true, más...}], e=body, g=undefined)jquery-....min.js (línea 3)
.trigger/<()jquery-....min.js (línea 3)
f</<.each(a=Object[body], c=function(), d=undefined)jquery-....min.js (línea 2)
f</e.prototype.each(a=function(), b=undefined)jquery-....min.js (línea 2)
.trigger(a="dataload.exhibit", b=undefined)jquery-....min.js (línea 3)
Exhibit.Database._LocalImpl.prototype._loadLinks/fNext()exhibit...ndle.js (línea 1)
Exhibit.Importer.prototype.load/finish()exhibit...ndle.js (línea 1)
Exhibit.Database._LocalImpl.prototype.loadItems/wrapFinish()exhibit...ndle.js (línea 1)


...=function(){Exhibit.Backwards.enabled.Attributes=true;Exhibit.getAttribute=Exhib...

error_timeline

Use unminified libraries?

We use various 3d-party libraries, and include their minified versions in the repository. I think it would be better to include the non-minified versions. This can be useful during debugging, and our build process minifies the entire library anyway.

Prevent caching of json data

Browsers cache the json returned from a html links

Ideally, Exhibit is using the latest json data.
We can prevent caching by appending a random number:
<link href="senators.json?i=232323.232323" type="application/json" rel="exhibit-data" />

We can generate this HTML dynamically

// create an HTML head link with optional cache buster
function loadExhibitResource(file, opts ){              
  if (opts && opts.cache && opts.cache === 'no')   file += "?i="+(Math.random()*99999999);
  var link  =  document.createElement("link");
  link.href =  file;
  link.type =  'application/json';
  link.rel  =  'exhibit-data';
  document.getElementsByTagName("head")[0].appendChild(link);       
}

loadExhibitResource('senators.json', {cache: no} );

Pagination bug in tabular view

Looking at this site:
http://www.strictly-israeli-dancing.co.uk/dances.htm
If you advance to a high numbered page, then filter to a small number of items, nothing is displayed---presumably because the view thinks it's still on a high page, while the item is on a low page. Pagination should reset (perhaps to last page?) if a filter is changed that reduces the number of items to less than what would be on the current page.

An architecture picture of exhibit

Hi,

I have used Exhibit for an open source project and thank you for building such a nice tool.
I would like to make a suggestion. It would be really useful if on the wiki page of component overview (https://github.com/simile-widgets/exhibit/wiki/Component-Overview), you could create an architecture picture of exhibit. As it has quite complicated architecture, with different components and layers and they interact with each other.
I have worked Exhibit for more than half year, and now I am still struggling with it if I need to modify something. So I think with the clear architecture picture, at least I know which direction to go, when I want to make a change.

Thank you,
Quyen

Custom Tabular view content not possible any more (since #169?)

As I understand, it is possible to do something like the following:

<div data-ex-role="view"
    data-ex-view-class="Tabular"
    data-ex-label="Compare Their Wealth"
    data-ex-columns=".number, .ageAtPeak, .wealth, .origin, .origin-country, .company"
    data-ex-column-labels="rank &amp; name, age at peak, wealth in billion USD, origin, country of origin, company"
    data-ex-sort-column="0"
    data-ex-sort-ascending="true"
    >
    <table style="display:none;">
      <tr>
        <td>
          <span data-ex-content=".number"></span>:
          <span data-ex-content=".label"></span>
        </td>
        <td><div data-ex-content=".ageAtPeak"></div></td>
        <td><div data-ex-content=".wealth"></div></td>
        <td><div data-ex-content=".origin"></div></td>
        <td><div data-ex-content=".origin-country"></div></td>
        <td><div data-ex-content=".company"></div></td>
      </tr>
    </table>
</div>

This would make it possible to sort on the .number, while displaying both .number and .label in one column. (This isn't useful in this example, but is in other cases).

This was possible on 3.1.2-rc1 (it showed e.g. "1: John Davison Rockefeller"), but isn't possible any longer on the current master (it now shows e.g. "1"). I created a sample at http://conversationaltorah.camilstaps.nl/billionaires.html, which is a copy of the billionaires demo adapted to show the problem. The code it uses is 138dd86, with #173 and #174 merged in (these PRs don't affect this, and I need them on another page).

I did some testing:

My (possibly premature) conclusion is that something went wrong in #169.

Map view - show marker for individual country only

If I have data containing a list of projects and the countries where the projects are implemented (one project can belong to multiple countries), what is the best way to show all projects for only one country?
If I use country as one of the facet, it displays marker on the selected country as well as other countries where the same project is implemented.

For instance, say, project X is implemented in US and Canada. If I set country as a facet and select only 'US', a marker appears in both US and Canada. I want to display only one marker when user selects specific country.

If the project and country association is one to one, there's no issue but in this case, one project can be associated with multiple countries. Any solution/suggestion?

No more able to open another-lens from an open-lens

This is maybe not a bug but a behavior change from Exhibit 2.x to Exhibit 3.x.
Description:
I have few lenses defined for different objects. When I click an object (from a table/tile/map) its lens is showed, this lens contains some links to other objects/lens on which I can click.
In exhibit 2 [1], clicking a link from an open lens just opens and replaces the previous lens by the clicked object (and this is very useful for browsing linked data/objects), while
In exhibit 3 [2], the clicked link to another object-lens does nothing, you have to close the open lens to be able to open another one from your table/tile/map (and you can't browse the "path" through your objects).
In some way, you can have one "popup" lens but cannot click that "popup" lens to browse and replace it with another object/popup/lens.
I don't think this is a browser issue, as it behaves the same way using FireFox or IE on Windows 7 in my case.
I'll be pleased to provide additional description/example if it helps.
All suggestion are welcome.
Thanks a lot for this great project !

[1] i.e. http://static.simile.mit.edu/exhibit/api-2.1.0/exhibit-api.js
[2] i.e. http://api.simile-widgets.org/exhibit/HEAD/exhibit-api.js

Reset Exhibit

I'm currently using exhibit in a single page ember application. Exhibit loads just fine the first time the page is viewed however when the page is revisited it no longer loads. I'm guessing I need to somehow reset exhibit so it will properly reload.

I tried doing Exhibit = undefined however it doesn't seem to completely reset things.

Use standard parser generator for expressions and lenses

Exhibit currently implements its own parser both for exhibit expressions and lenses. Standard parser generators exist (e.g. jison) which can take grammars for these things and produce the right parsers. This would make the code more understandable and modifiable.

Allow setting utility to parse a list

The "Type" would be the same (string, int, etc...) and there would be an eventual Dimension property. If "Dimension" is "*", then it interprets the value as a list.

Edge case for lens template processing in Google Map view

The following is a part of a custom lens template (for an image src tag) that is failing in the map view:

ex:src-content=".thumbnail"

An example of a definition for .thumbnail is -

http://maps.google.com/maps/api/staticmap?center=48.148376300000002,-122.4197436&zoom=2&size=100x100&markers=color:orange%7Clabel:%7C48.148376300000002,-122.4197436&maptype=satellite&sensor=false

When I inspect this element with FireFox Web Tools and 'Copy Outer HTML' it shows the following -

http://maps.google.com/maps/api/staticmap?center=48.148376300000002,-122.4197436&amp;zoom=2&amp;size=100x100&amp;markers=color:orange%7Clabel:%7C48.148376300000002,-122.4197436&amp;maptype=satellite&amp;sensor=false

I use the same definition with both timeline and tabular views - which do not encode '&' - and therefore work as expected.

Note that this has become an issue since moving to Exhibit Version 3.0. Also note that this same Map Lens Template displays properly in IE. But I saw in the code where there is a fall-back to Version 2.0 for IE - which was very confusing at first.

I have scoured the source and cannot isolate where this might be happening.

See http://clearinghouse.marinedebris.noaa.gov/visualize for the site this is hosted on.

Thanks in advance for any insight.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.