123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- // ******* Annotation MANAGER ******** //
- $axure.internal(function($ax) {
- var NOTE_SIZE = 10;
- var _annotationManager = $ax.annotation = {};
- var _updateLinkLocations = $ax.annotation.updateLinkLocations = function(textId) {
- var diagramObject = $ax.getObjectFromElementId(textId);
- var rotation = (diagramObject && diagramObject.style.rotation);
- var shapeId = $ax.style.GetShapeIdFromText(textId);
- //we have to do this because webkit reports the post-transform position but when you set
- //positions it's pre-transform
- if(WEBKIT && rotation) {
- //we can dynamiclly rotate a widget now, show need to remember the transform rather than just remove it
- //here jquery.css will return 'none' if element is display none
- var oldShapeTransform = document.getElementById(shapeId).style['-webkit-transform'];
- var oldTextTransform = document.getElementById(textId).style['-webkit-transform'];
- $('#' + shapeId).css('-webkit-transform', 'scale(1)');
- $('#' + textId).css('-webkit-transform', 'scale(1)');
- }
- $('#' + textId).find('span[id$="_ann"]').each(function(index, value) {
- var elementId = value.id.replace('_ann', '');
- var annPos = $(value).position();
- var left = annPos.left - NOTE_SIZE;
- var top = annPos.top;
- $('#' + elementId + 'Note').css('left', left).css('top', top);
- });
- //undo the transform reset
- if(WEBKIT && rotation) {
- $('#' + shapeId).css('-webkit-transform', oldShapeTransform || '');
- $('#' + textId).css('-webkit-transform', oldTextTransform || '');
- }
- };
- var dialogs = {};
- $ax.annotation.ToggleWorkflow = function(event, id, width, height) {
- if(dialogs[id]) {
- var $dialog = dialogs[id];
- // reset the dialog
- dialogs[id] = undefined;
- if($dialog.dialog("isOpen")) {
- $dialog.dialog("close");
- return;
- }
- }
- // we'll need to save the scroll position just for stupid IE which will skip otherwise
- var win = $(window);
- var scrollY = win.scrollTop();
- var scrollX = win.scrollLeft();
- var bufferH = 10;
- var bufferV = 10;
- var blnLeft = false;
- var blnAbove = false;
- var sourceTop = event.pageY - scrollY;
- var sourceLeft = event.pageX - scrollX;
- if(sourceLeft > width + bufferH) {
- blnLeft = true;
- }
- if(sourceTop > height + bufferV) {
- blnAbove = true;
- }
- var top = 0;
- var left = 0;
- if(blnAbove) top = sourceTop - height - 20;
- else top = sourceTop + 10;
- if(blnLeft) left = sourceLeft - width - 4;
- else left = sourceLeft - 6;
- $ax.globals.MaxZIndex = $ax.globals.MaxZIndex + 1;
- if(IE_10_AND_BELOW) height += 50;
- var dObj = $ax.getObjectFromElementId(id);
- var ann = dObj.annotation;
- var $dialog = $('<div></div>')
- .appendTo('body')
- .html($ax.legacy.GetAnnotationHtml(ann))
- .dialog({
- title: dObj.label,
- width: width,
- height: height,
- minHeight: 150,
- zIndex: $ax.globals.MaxZIndex,
- position: [left, top],
- dialogClass: 'dialogFix',
- autoOpen: false
- });
- $dialog.parent().appendTo('#base');
- $dialog.dialog('open');
- dialogs[id] = $dialog;
- // scroll ... just for IE
- window.scrollTo(scrollX, scrollY);
- };
- $ax.annotation.InitializeAnnotations = function (query) {
- if(!$ax.document.configuration.showAnnotations) return;
- query.each(function(dObj, elementId) {
- if(!dObj.annotation) return;
- if(dObj.type == 'hyperlink') {
- var textId = $ax.style.GetTextIdFromLink(elementId);
- var elementIdQuery = $('#' + elementId);
- elementIdQuery.after("<span id='" + elementId + "_ann'>​</span>");
- if($ax.document.configuration.useLabels) {
- var label = $('#' + elementId).attr("data-label");
- if(!label || label == "") label = "?";
- $('#' + textId).append("<div id='" + elementId + "Note' class='annnotelabel' >" + label + "</div>");
- } else {
- $('#' + textId).append("<div id='" + elementId + "Note' class='annnoteimage' ></div>");
- }
- $('#' + elementId + 'Note').click(function(e) {
- $ax.annotation.ToggleWorkflow(e, elementId, 300, 200, false);
- return false;
- });
- _updateLinkLocations(textId);
- } else {
- if($ax.document.configuration.useLabels) {
- var label = $('#' + elementId).attr("data-label");
- if(!label || label == "") label = "?";
- $('#' + elementId + "_ann").append("<div id='" + elementId + "Note' class='annnotelabel'>" + label + "</div>");
- } else {
- $('#' + elementId + "_ann").append("<div id='" + elementId + "Note' class='annnoteimage'></div>");
- }
- $('#' + elementId + 'Note').click(function(e) {
- $ax.annotation.ToggleWorkflow(e, elementId, 300, 200, false);
- return false;
- });
- }
- $('#' + elementId + 'Note.annnoteimage').append("<div class='annnoteline'></div><div class='annnoteline'></div><div class='annnoteline'></div>");
- });
- };
- $ax.annotation.jQueryAnn = function(query) {
- var elementIds = [];
- query.each(function(diagramObject, elementId) {
- if(diagramObject.annotation) elementIds[elementIds.length] = elementId;
- });
- var elementIdSelectors = jQuery.map(elementIds, function(elementId) { return '#' + elementId + '_ann'; });
- var jQuerySelectorText = (elementIdSelectors.length > 0) ? elementIdSelectors.join(', ') : '';
- return $(jQuerySelectorText);
- };
- $(window.document).ready(function() {
- $ax.annotation.InitializeAnnotations($ax(function(dObj) { return dObj.annotation; }));
- $ax.messageCenter.addMessageListener(function(message, data) {
- //If the annotations are being hidden via the Sitemap toggle button, hide any open dialogs
- if(message == 'annotationToggle') {
- if(data == false) {
- for(var index in dialogs) {
- var $dialog = dialogs[index];
- if($dialog.dialog("isOpen")) {
- $dialog.dialog("close");
- }
- }
- }
- }
- });
- });
- });
|