1. More updates to the map of science vis.

This commit is contained in:
tankchintan 2011-05-28 00:05:42 +00:00
parent 1c594395aa
commit c79c6cf968
13 changed files with 150 additions and 14 deletions

View file

@ -32,6 +32,24 @@ div.overview-value :last-child {
padding-right: 10px; padding-right: 10px;
vertical-align: text-top; vertical-align: text-top;
} }
/* <------ INDIVIDUAL MAP OF SCIENCE */
#map-of-science {
float: right;
padding: 0 3px 20px 0;
background-color: #fff;
}
#map-of-science h3 {
margin: 0;
padding: 0;
}
#map-of-science h3 img {
padding-right: 10px;
vertical-align: text-top;
}
/* <------ POSITIONS */ /* <------ POSITIONS */
ul#individual-personInPosition { ul#individual-personInPosition {
list-style-type: circle; list-style-type: circle;

View file

@ -9,6 +9,15 @@
width: 100%; width: 100%;
} }
#map-of-science-info {
margin-bottom: 6px;
margin-top: -6px;
}
.hide-dom-on-init {
display: none;
}
#left-column { #left-column {
float: left; float: left;
width: 260px; width: 260px;
@ -24,6 +33,12 @@
height: 480px; height: 480px;
} }
#percent-mapped-info {
float:right;
display: none;
margin-top: 5px;
}
#header-entity-label { #header-entity-label {
font-family: "Lucida Sans Unicode","Lucida Grande", Geneva, helvetica, sans-serif; font-family: "Lucida Sans Unicode","Lucida Grande", Geneva, helvetica, sans-serif;
font-size: 1.5275em; font-size: 1.5275em;
@ -102,6 +117,10 @@ a.clear-selected-entities {
/* table */ /* table */
.science-area-tab {
}
#main-science-areas-table-container table { #main-science-areas-table-container table {
cellpadding: 0; cellpadding: 0;
cellspacing: 0; cellspacing: 0;
@ -119,6 +138,10 @@ a.clear-selected-entities {
width: 100%; width: 100%;
} }
table.datatable-table tbody tr {
border-top: 3px solid;
}
#main-science-areas-table-footer { #main-science-areas-table-footer {
margin-top: 10px; margin-top: 10px;
text-align: left; text-align: left;
@ -136,4 +159,4 @@ a.clear-selected-entities {
.paginatedtabs { .paginatedtabs {
font-size: 0.81em; font-size: 0.81em;
} }

View file

@ -19,8 +19,8 @@ var DataTableWidget = Class.extend({
widget: '', widget: '',
init: function(opts) { init: function(sciMapWidget) {
this.opts = opts; this.sciMapWidget = sciMapWidget;
this.subdisciplineInfo = {}; this.subdisciplineInfo = {};
this.disciplineInfo = {}; this.disciplineInfo = {};
@ -64,10 +64,10 @@ var DataTableWidget = Class.extend({
me.disciplineInfo[currentSubdisciplinesDiscipline].publicationCount = me.disciplineInfo[currentSubdisciplinesDiscipline].publicationCount =
me.disciplineInfo[currentSubdisciplinesDiscipline].publicationCount + density; me.disciplineInfo[currentSubdisciplinesDiscipline].publicationCount + density;
} }
}); });
$(".hide-dom-on-init").show();
me.setupView(); me.setupView();
}, },
hasKey: function(key) { hasKey: function(key) {
@ -81,6 +81,13 @@ var DataTableWidget = Class.extend({
}, },
initView: function() { initView: function() {
}, },
parseIDIntoScienceTypeAreaID: function(rawID) {
var type = rawID.substring(0, rawID.indexOf("-"));
var area = rawID.substring(rawID.indexOf("-") + 1);
return [type, area];
},
setupView: function() { setupView: function() {
var me = this; var me = this;
@ -125,7 +132,7 @@ var DataTableWidget = Class.extend({
var i = 0; var i = 0;
$.each(me.disciplineInfo, function(index, item) { $.each(me.disciplineInfo, function(index, item) {
rowsToInsert[i++] = '<tr><td>' + SCIMAP_TYPE.DISCIPLINE + '</td>'; rowsToInsert[i++] = '<tr id="' + SCIMAP_TYPE.DISCIPLINE + '-' + index + '" style="color:' + DISCIPLINES[index].color + ';"><td>' + SCIMAP_TYPE.DISCIPLINE + '</td>';
rowsToInsert[i++] = '<td>' + item.label + '</td>'; rowsToInsert[i++] = '<td>' + item.label + '</td>';
rowsToInsert[i++] = '<td>' + item.publicationCount.toFixed(1) + '</td>'; rowsToInsert[i++] = '<td>' + item.publicationCount.toFixed(1) + '</td>';
rowsToInsert[i++] = '<td>' + (100 * (item.publicationCount / me.pubsMapped)).toFixed(1) + '</td></tr>'; rowsToInsert[i++] = '<td>' + (100 * (item.publicationCount / me.pubsMapped)).toFixed(1) + '</td></tr>';
@ -133,7 +140,7 @@ var DataTableWidget = Class.extend({
$.each(me.subdisciplineInfo, function(index, item) { $.each(me.subdisciplineInfo, function(index, item) {
rowsToInsert[i++] = '<tr><td>' + SCIMAP_TYPE.SUBDISCIPLINE + '</td>'; rowsToInsert[i++] = '<tr id="' + SCIMAP_TYPE.SUBDISCIPLINE + '-' + index + '" style="color:' + DISCIPLINES[SUBDISCIPLINES[index].discipline].color + ';"><td>' + SCIMAP_TYPE.SUBDISCIPLINE + '</td>';
rowsToInsert[i++] = '<td>' + item.label + '</td>'; rowsToInsert[i++] = '<td>' + item.label + '</td>';
rowsToInsert[i++] = '<td>' + item.publicationCount.toFixed(1) + '</td>'; rowsToInsert[i++] = '<td>' + item.publicationCount.toFixed(1) + '</td>';
rowsToInsert[i++] = '<td>' + (100 * (item.publicationCount / me.pubsMapped)).toFixed(1) + '</td></tr>'; rowsToInsert[i++] = '<td>' + (100 * (item.publicationCount / me.pubsMapped)).toFixed(1) + '</td></tr>';
@ -144,6 +151,18 @@ var DataTableWidget = Class.extend({
table.append(tbody); table.append(tbody);
$("#" + me.dom.containerID).append(table); $("#" + me.dom.containerID).append(table);
table.children("tbody").children("tr").mouseenter(function() {
var params = me.parseIDIntoScienceTypeAreaID($(this).attr("id"));
me.sciMapWidget.mouseIn(params[0], params[1]);
});
table.children("tbody").children("tr").mouseleave(function() {
var params = me.parseIDIntoScienceTypeAreaID($(this).attr("id"));
me.sciMapWidget.mouseOut(params[0], params[1]);
});
/* /*
* GMAIL_STYLE_PAGINATION_CONTAINER_CLASS, ACTIVE_DISCIPLINE_SUBDISCIPLINE_FILTER has to be declared * GMAIL_STYLE_PAGINATION_CONTAINER_CLASS, ACTIVE_DISCIPLINE_SUBDISCIPLINE_FILTER has to be declared
* for the filter & pagination to work properly. * for the filter & pagination to work properly.
@ -195,7 +214,11 @@ var DataTableWidget = Class.extend({
me.widget.fnFilter(""); me.widget.fnFilter("");
}); });
$("#percent-mapped-info").show();
$("#percent-mapped").text((100 * me.pubsMapped / (me.pubsWithNoJournals + me.pubsWithInvalidJournals + me.pubsMapped)).toFixed(2));
}, },
changeFilter: function(filterType) { changeFilter: function(filterType) {
var me = this; var me = this;

View file

@ -108,7 +108,7 @@ ScimapMarkerManager = MarkerManager.extend({
marker.focus(); marker.focus();
}); });
}, },
mouseIn: function(key) { mouseOut: function(key) {
var marker = this.getMarker(key); var marker = this.getMarker(key);
if (marker) { if (marker) {
marker.unfocus(); marker.unfocus();

View file

@ -39,7 +39,7 @@ var EntityVisModeController = Class.extend({
initWidgets: function(map, sliderControl) { initWidgets: function(map, sliderControl) {
var widgets = {}; var widgets = {};
widgets['scimap'] = new ScimapWidget(map, sliderControl); widgets['scimap'] = new ScimapWidget(map, sliderControl);
widgets['sci_area_table'] = new DataTableWidget(); widgets['sci_area_table'] = new DataTableWidget(widgets['scimap']);
this.widgets = widgets; this.widgets = widgets;
}, },

View file

@ -6,6 +6,8 @@
<#if temporalVisualizationEnabled> <#if temporalVisualizationEnabled>
<#assign classSpecificExtension> <#assign classSpecificExtension>
<#include "individual-visualizationTemporalGraph.ftl"> <#include "individual-visualizationTemporalGraph.ftl">
<div style="clear: both;"></div>
<#include "individual-visualizationMapOfScience.ftl">
</#assign> </#assign>
</#if> </#if>

View file

@ -18,7 +18,10 @@
<section id="visualization" role="region"> <section id="visualization" role="region">
<#if isAuthor> <#if isAuthor>
<#assign coAuthorIcon = "${urls.images}/visualization/co_author_icon.png"> <#assign coAuthorIcon = "${urls.images}/visualization/co_author_icon.png">
<#assign mapOfScienceIcon = "${urls.images}/visualization/mapofscience/vivo_scimap_icon_v001.png">
<#assign coAuthorVisUrl = individual.coAuthorVisUrl> <#assign coAuthorVisUrl = individual.coAuthorVisUrl>
<#assign mapOfScienceVisUrl = individual.mapOfScienceUrl>
<#assign googleJSAPI = "https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221%22%2C%22packages%22%3A%5B%22imagesparkline%22%5D%7D%5D%7D"> <#assign googleJSAPI = "https://www.google.com/jsapi?autoload=%7B%22modules%22%3A%5B%7B%22name%22%3A%22visualization%22%2C%22version%22%3A%221%22%2C%22packages%22%3A%5B%22imagesparkline%22%5D%7D%5D%7D">
<img class="infoIcon" src="${urls.images}/iconInfo.png" alt="information icon" title="The publication information may be incomplete" /> <img class="infoIcon" src="${urls.images}/iconInfo.png" alt="information icon" title="The publication information may be incomplete" />
@ -28,12 +31,21 @@
<div class="collaboratorship-link-separator"></div> <div class="collaboratorship-link-separator"></div>
<div id="coauthorship_link_container" class="collaboratorship-link-container"> <div id="coauthorship_link_container" class="collaboratorship-link-container">
<div class="collaboratorship-icon"> <div class="collaboratorship-icon">
<a href="${coAuthorVisUrl}"><img src="${coAuthorIcon}" alt="Co-author network icon" width="30px" height="30px" /></a> <a href="${coAuthorVisUrl}"><img src="${coAuthorIcon}" alt="Co-author network icon" width="30px" height="30px" /></a>
</div> </div>
<div class="collaboratorship-link"><a href="${coAuthorVisUrl}">Co-Author Network</a></div> <div class="collaboratorship-link"><a href="${coAuthorVisUrl}">Co-Author Network</a></div>
</div> </div>
<div class="collaboratorship-link-separator"></div>
<div id="mapofscience_link_container" class="collaboratorship-link-container">
<div class="collaboratorship-icon">
<a href="${mapOfScienceVisUrl}"><img src="${mapOfScienceIcon}" alt="Map Of Science icon" width="30px" height="30px" /></a>
</div>
<div class="collaboratorship-link"><a href="${mapOfScienceVisUrl}">Map Of Science</a></div>
</div>
${scripts.add('<script type="text/javascript" src="${googleJSAPI}"></script>', ${scripts.add('<script type="text/javascript" src="${googleJSAPI}"></script>',
'<script type="text/javascript" src="${urls.base}/js/visualization/visualization-helper-functions.js"></script>', '<script type="text/javascript" src="${urls.base}/js/visualization/visualization-helper-functions.js"></script>',
'<script type="text/javascript" src="${urls.base}/js/visualization/sparkline.js"></script>')} '<script type="text/javascript" src="${urls.base}/js/visualization/sparkline.js"></script>')}

View file

@ -0,0 +1,8 @@
<#-- $This file is distributed under the terms of the license in /doc/license.txt$ -->
<#-- Map Of Science visualization -->
<section id="map-of-science" role="region">
<h3><img src="${urls.images}/visualization/mapofscience/vivo_scimap_icon_v001.png" width="25px" height="25px" />
<a href="${individual.mapOfScienceUrl}">Map Of Science</a></h3>
</section>

View file

@ -25,6 +25,8 @@
</#if> </#if>
<#assign mapOfScienceIcon = '${urls.images}/visualization/mapofscience/vivo_scimap_icon_v001.png'>
<#assign entityMapOfScienceDataURL = "${urls.base}${dataVisualizationURLRoot}?vis=${mapOfScienceVisParam}&uri=${entityURI}&output=json"> <#assign entityMapOfScienceDataURL = "${urls.base}${dataVisualizationURLRoot}?vis=${mapOfScienceVisParam}&uri=${entityURI}&output=json">
<#assign entityMapOfScienceDisciplineCSVURL = "${urls.base}${dataVisualizationURLRoot}?vis=${mapOfScienceVisParam}&uri=${entityURI}&output=csv&vis_mode=discipline"> <#assign entityMapOfScienceDisciplineCSVURL = "${urls.base}${dataVisualizationURLRoot}?vis=${mapOfScienceVisParam}&uri=${entityURI}&output=csv&vis_mode=discipline">
<#assign entityMapOfScienceSubDisciplineCSVURL = "${urls.base}${dataVisualizationURLRoot}?vis=${mapOfScienceVisParam}&uri=${entityURI}&output=csv&vis_mode=subdiscipline"> <#assign entityMapOfScienceSubDisciplineCSVURL = "${urls.base}${dataVisualizationURLRoot}?vis=${mapOfScienceVisParam}&uri=${entityURI}&output=csv&vis_mode=subdiscipline">

View file

@ -7,7 +7,24 @@ corresponding changes in the included Templates. -->
<#include "mapOfScienceSetup.ftl"> <#include "mapOfScienceSetup.ftl">
<div id="map-of-science-response"> <div id="map-of-science-response">
<div id="left-column">
<#--
<div id="subject-parent-entity" class="hide-dom-on-init">
<a id="subject-parent-entity-profile-url" href="#"></a>&nbsp;
<a id="subject-parent-entity-temporal-url" href="#"><img src="${mapOfScienceIcon}" width="15px" height="15px"/></a>
</div>
-->
<h2 id="header-entity-label" class="hide-dom-on-init"><span><a id="entityMoniker" href="${entityVivoProfileURL}">${entityLabel}</a>&nbsp;
<img id="incomplete-data-disclaimer" class="infoIcon" src="${urls.images}/iconInfo.png" alt="information icon" title="This information is based solely on Publications which have been loaded into the VIVO system" /></span></h2>
<div id="map-of-science-info" class="hide-dom-on-init"> Explore publication activity across 554 scientific sub-disciplines
<img class="filterInfoIcon" src="${urls.images}/iconInfo.png"
alt="information icon"
title="Spiel on Discipline vs Sub-Discipline" />
</div>
<div id="left-column" class="hide-dom-on-init">
<div id="notification-container" style="display:none"> <div id="notification-container" style="display:none">
<div id="error-notification" class="ui-state-error" style="padding:10px; -moz-box-shadow:0 0 6px #980000; -webkit-box-shadow:0 0 6px #980000; box-shadow:0 0 6px #980000;"> <div id="error-notification" class="ui-state-error" style="padding:10px; -moz-box-shadow:0 0 6px #980000; -webkit-box-shadow:0 0 6px #980000; box-shadow:0 0 6px #980000;">
<a class="ui-notify-close" href="#"><span class="ui-icon ui-icon-close" style="float:right"></span></a> <a class="ui-notify-close" href="#"><span class="ui-icon ui-icon-close" style="float:right"></span></a>
@ -32,7 +49,7 @@ corresponding changes in the included Templates. -->
<span id="subdisciplines-filter" class="filter-option">554 Sub-Disciplines</span> <span id="subdisciplines-filter" class="filter-option">554 Sub-Disciplines</span>
<img class="filterInfoIcon" src="${urls.images}/iconInfo.png" <img class="filterInfoIcon" src="${urls.images}/iconInfo.png"
alt="information icon" alt="information icon"
title="Spiel on Discuipline vs Sub-Discipline" /> title="Spiel on Discipline vs Sub-Discipline" />
</div> </div>
<div id="main-science-areas-table-container"></div> <div id="main-science-areas-table-container"></div>
@ -42,5 +59,12 @@ corresponding changes in the included Templates. -->
</div> </div>
</div> </div>
<div id="right-column"><div id="map_area"></div></div> <div id="right-column"><div id="map_area"></div>
<div id="percent-mapped-info">
mapped <span id="percent-mapped"></span>% of publications
<img class="filterInfoIcon" src="${urls.images}/iconInfo.png"
alt="information icon"
title="Spiel on percent mapped" /></div>
</div>
</div> </div>

View file

@ -125,6 +125,7 @@ public class VisualizationFrameworkConstants {
public static final String UTILITIES_VIS = "utilities"; public static final String UTILITIES_VIS = "utilities";
public static final String ENTITY_COMPARISON_VIS = "entity_comparison"; public static final String ENTITY_COMPARISON_VIS = "entity_comparison";
public static final String PUBLICATION_TEMPORAL_VIS_SHORT_URL = "publication-graph"; public static final String PUBLICATION_TEMPORAL_VIS_SHORT_URL = "publication-graph";
public static final String MAP_OF_SCIENCE_VIS_SHORT_URL = "map-of-science";
public static final String GRANT_TEMPORAL_VIS_SHORT_URL = "grant-graph"; public static final String GRANT_TEMPORAL_VIS_SHORT_URL = "grant-graph";
public static final String CO_PI_VIS = "coprincipalinvestigator"; public static final String CO_PI_VIS = "coprincipalinvestigator";

View file

@ -121,7 +121,23 @@ public class MapOfScienceVisualizationRequestHandler implements
organizationEntity = OrganizationUtilityFunctions.mergeEntityIfShareSameURI( organizationEntity = OrganizationUtilityFunctions.mergeEntityIfShareSameURI(
organizationEntity, organizationEntity,
organizationWithAssociatedPeople); organizationWithAssociatedPeople);
} } /*else {
// This is for just people.
Set<SubEntity> test = new HashSet<SubEntity>();
test.add(new SubEntity(subjectEntityURI));
documentURIForAssociatedPeopleTOVO = SelectOnModelUtilities
.getPublicationsWithJournalForAssociatedPeople(dataset, test);
organizationEntity = OrganizationUtilityFunctions.mergeEntityIfShareSameURI(
organizationEntity,
organizationWithAssociatedPeople);
}*/
if (allDocumentURIToVOs.isEmpty() && documentURIForAssociatedPeopleTOVO.isEmpty()) { if (allDocumentURIToVOs.isEmpty() && documentURIForAssociatedPeopleTOVO.isEmpty()) {

View file

@ -86,6 +86,13 @@ public class IndividualTemplateModel extends BaseIndividualTemplateModel {
return getVisUrl(temporalVisURL); return getVisUrl(temporalVisURL);
} }
public String getMapOfScienceUrl() {
String mapOfScienceVisURL = getBaseVisUrl() + "/" + VisualizationFrameworkConstants.MAP_OF_SCIENCE_VIS_SHORT_URL + "/";
return getVisUrl(mapOfScienceVisURL);
}
public String getSelfEditingId() { public String getSelfEditingId() {
String id = null; String id = null;
String idMatchingProperty = ConfigurationProperties.getBean(getServletContext()).getProperty("selfEditing.idMatchingProperty"); String idMatchingProperty = ConfigurationProperties.getBean(getServletContext()).getProperty("selfEditing.idMatchingProperty");