You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

189 lines
8.3 KiB

// use this to isolate the scope
(function () {
if(!$axure.document.configuration.showPageNotes && !$axure.document.configuration.showAnnotationsSidebar) { return; }
$(window.document).ready(function () {
$axure.player.createPluginHost({
id: 'pageNotesHost',
context: 'interface',
title: 'NOTES',
gid: 2
});
generatePageNotes();
$(document).on('ContainerHeightChange', function () {
updateContainerHeight();
});
$('#footnotesButton').click(footnotes_click).addClass('sitemapToolbarButtonSelected');
$('#notesNextButton').click(notesNext_click);
$('#notesPreviousButton').click(notesPrevious_click);
// bind to the page load
$axure.page.bind('load.page_notes', function () {
var hasNotes = false;
$('#pageNotesContent').html("");
if($axure.document.configuration.showPageNotes) {
//populate the notes
var notes = $axure.page.notes;
if(notes) {
var showNames = $axure.document.configuration.showPageNoteNames;
for(var noteName in notes) {
var pageNoteUi = "<div class='pageNoteContainer'>";
if(showNames) {
pageNoteUi += "<div class='pageNoteName'>" + noteName + "</div>";
}
pageNoteUi += "<div class='pageNote'>" + linkify(notes[noteName]) + "</div>";
pageNoteUi += "</div>";
pageNoteUi += "<div class='dottedDivider'></div>";
$('#pageNotesContent').append(pageNoteUi);
hasNotes = true;
}
}
}
if($axure.document.configuration.showAnnotationsSidebar) {
var widgetNotes = $axure.page.widgetNotes;
if(widgetNotes) {
for(var i = 0; i < widgetNotes.length; i++) {
var widgetNote = widgetNotes[i];
var widgetNoteUi = "<div class='widgetNoteContainer' data-id='" + widgetNote["id"] + "'>";
widgetNoteUi += "<div class='widgetNoteFootnote'></div>";
widgetNoteUi += "<div class='widgetNoteLabel'>" + widgetNote["label"] + "</div>";
for(var widgetNoteName in widgetNote) {
if(widgetNoteName != "label" && widgetNoteName != "id") {
widgetNoteUi += "<div class='pageNoteName'>" + widgetNoteName + "</div>";
widgetNoteUi += "<div class='pageNote'>" + linkify(widgetNote[widgetNoteName]) + "</div>";
widgetNoteUi += "<div class='nondottedDivider'></div>";
}
}
widgetNoteUi += "</div>";
widgetNoteUi += "<div class='nondottedDivider'></div>";
$('#pageNotesContent').append(widgetNoteUi);
hasNotes = true;
}
$('.widgetNoteContainer').children(':last-child').remove();
$('.widgetNoteFootnote').append("<div class='annnoteline'></div><div class='annnoteline'></div><div class='annnoteline'></div>");
$('.widgetNoteContainer').click(function () {
var wasSelected = $(this).hasClass('widgetNoteContainerSelected');
$('.widgetNoteContainerSelected').removeClass('widgetNoteContainerSelected');
if(!wasSelected) $(this).addClass('widgetNoteContainerSelected');
$axure.messageCenter.postMessage('toggleSelectWidgetNote', this.getAttribute('data-id'));
});
}
}
if(hasNotes) $('#pageNotesEmptyState').hide();
else $('#pageNotesEmptyState').show();
//If footnotes enabled for this prototype...
if($axure.document.configuration.showAnnotations == true) {
//If the fn var is defined and set to 0, hide footnotes
//else if hide-footnotes button selected, hide them
var fnVal = getHashStringVar(FOOTNOTES_VAR_NAME);
if(fnVal.length > 0 && fnVal == 0) {
$('#footnotesButton').removeClass('sitemapToolbarButtonSelected');
$axure.messageCenter.postMessage('annotationToggle', false);
} else if(!$('#footnotesButton').is('.sitemapToolbarButtonSelected')) {
//If the footnotes button isn't selected, hide them on this loaded page
$axure.messageCenter.postMessage('annotationToggle', false);
}
}
return false;
});
function linkify(text) {
var urlRegex = /(\b(((https?|ftp|file):\/\/)|(www\.))[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
return text.replace(urlRegex, function(url, b, c) {
var url2 = (c == 'www.') ? 'http://' + url : url;
return '<a href="' + url2 + '" target="_blank" class="noteLink">' + url + '</a>';
});
}
});
function updateContainerHeight() {
$('#pageNotesScrollContainer').height($('#pageNotesHost').height() - $('#pageNotesHeader').outerHeight());
}
$(document).on('sidebarCollapse', function (event, data) {
clearSelection();
});
$(document).on('pluginShown', function (event, data) {
if(data != 2) {
clearSelection();
}
});
function clearSelection() {
$('.widgetNoteContainerSelected').removeClass('widgetNoteContainerSelected');
$axure.messageCenter.postMessage('toggleSelectWidgetNote', '');
}
function footnotes_click(event) {
if($('#footnotesButton').is('.sitemapToolbarButtonSelected')) {
$('#footnotesButton').removeClass('sitemapToolbarButtonSelected');
$axure.messageCenter.postMessage('annotationToggle', false);
//Add 'fn' hash string var so that footnotes stay hidden across reloads
setVarInCurrentUrlHash(FOOTNOTES_VAR_NAME, 0);
} else {
$('#footnotesButton').addClass('sitemapToolbarButtonSelected');
$axure.messageCenter.postMessage('annotationToggle', true);
//Delete 'fn' hash string var if it exists since default is visible
deleteVarFromCurrentUrlHash(FOOTNOTES_VAR_NAME);
}
}
function notesNext_click(event) {
openNextPage();
}
function notesPrevious_click(event) {
openPreviousPage();
}
function generatePageNotes() {
var pageNotesUi = "<div id='pageNotesHeader'' class='sitemapHeader'>";
pageNotesUi += "<div id='pageNotesToolbar' class='sitemapToolbar'>";
pageNotesUi += "<div class='pluginNameHeader'>NOTES</div>";
pageNotesUi += "<div class='pageNameHeader'></div>";
pageNotesUi += "<div class='pageButtonHeader'>";
pageNotesUi += "<a id='notesPreviousButton' title='Previous Page' class='sitemapToolbarButton prevPageButton'></a>";
pageNotesUi += "<a id='notesNextButton' title='Next Page' class='sitemapToolbarButton nextPageButton'></a>";
if($axure.document.configuration.showAnnotations == true) {
pageNotesUi += "<a id='footnotesButton' title='Toggle Footnotes' class='sitemapToolbarButton'></a>";
}
pageNotesUi += "</div>";
pageNotesUi += "</div>";
pageNotesUi += "</div>";
pageNotesUi += "<div id='pageNotesScrollContainer'>";
pageNotesUi += "<div id='pageNotesContainer'>";
pageNotesUi += "<div id='pageNotesEmptyState' class='emptyStateContainer'><div class='emptyStateTitle'>No notes for this page.</div><div class='emptyStateContent'>Notes added in Axure RP will appear here.</div><div class='dottedDivider'></div></div>";
pageNotesUi += "<span id='pageNotesContent'></span>";
pageNotesUi += "</div></div>";
$('#pageNotesHost').html(pageNotesUi);
updateContainerHeight();
if(!$axure.document.configuration.showAnnotations) {
$('#pageNotesHost .pageNameHeader').css('padding-right', '55px');
}
}
})();