RdfSchemaAlignmentDialog.UILink = function(dialog, link, table, options, parentUINode) { this._dialog = dialog; this._link = link; this._options = options; this._parentUINode = parentUINode; // Make sure target node is there this._link.target = this._link.target || { nodeType: "cell-as-literal" } this._tr = table.insertRow(table.rows.length); this._tdMain = this._tr.insertCell(0); this._tdToggle = this._tr.insertCell(1); this._tdDetails = this._tr.insertCell(2); $(this._tdMain).addClass("schema-alignment-link-main").attr("width", "250").addClass("padded"); $(this._tdToggle).addClass("schema-alignment-link-toggle").attr("width", "1%").addClass("padded"); $(this._tdDetails).addClass("schema-alignment-link-details").attr("width", "90%"); this._collapsedDetailDiv = $('
').appendTo(this._tdDetails).addClass("padded").html("..."); this._expandedDetailDiv = $('
').appendTo(this._tdDetails).addClass("schema-alignment-detail-container"); var self = this; var show = function() { if (self._options.expanded) { self._collapsedDetailDiv.hide(); self._expandedDetailDiv.show(); } else { self._collapsedDetailDiv.show(); self._expandedDetailDiv.hide(); } }; show(); $(this._tdToggle).html(" "); $('') .attr("src", this._options.expanded ? "images/expanded.png" : "images/collapsed.png") .appendTo(this._tdToggle) .click(function() { self._options.expanded = !self._options.expanded; $(this).attr("src", self._options.expanded ? "images/expanded.png" : "images/collapsed.png"); show(); }); this._renderMain(); this._renderDetails(); }; RdfSchemaAlignmentDialog.UILink.prototype._renderMain = function() { $(this._tdMain).empty(); var l = this._getTypeName(this._link); var label = l || "property?"; var self = this; $('') .attr("title", "remove property") .attr("src", "images/close.png") .css("cursor", "pointer") .prependTo(this._tdMain) .click(function() { window.setTimeout(function() { self._parentUINode.removeLink(self); self._tr.parentNode.removeChild(self._tr); //self._dialog.preview(); }, 100); }); var a = $('') .addClass("schema-alignment-link-tag") .html(label) .appendTo(this._tdMain) .click(function(evt) { self._startEditProperty(this); }); $('').attr("src", "images/arrow-start.png").prependTo(a); $('').attr("src", "images/arrow-end.png").appendTo(a); }; RdfSchemaAlignmentDialog.UILink.prototype._renderDetails = function() { if (this._targetUI) { this._targetUI.dispose(); } if (this._tableDetails) { this._tableDetails.remove(); } this._tableDetails = $('
').addClass("schema-alignment-table-layout").appendTo(this._expandedDetailDiv); this._targetUI = new RdfSchemaAlignmentDialog.UINode( this._dialog, this._link.target, this._tableDetails[0], { expanded: "links" in this._link.target && this._link.target.links.length > 0 }); }; RdfSchemaAlignmentDialog.UILink.prototype._startEditProperty = function(elmt) { var self = this; //default value var def=''; if(self._link.target!==null && "columnName" in self._link.target){ def = URL.urlify(self._link.target.columnName).toLowerCase(); } new RdfSchemaAlignmentDialog.RdfResourceDialog(elmt,'property',function(obj){ self._link.uri = obj.id; self._link.curie = obj.name; self._renderMain(); },def ); }; RdfSchemaAlignmentDialog.UILink.prototype._getTypeName = function(t){ if(t.curie !== undefined && t.curie !==''){ return t.curie; }else{ return t.uri; } }; RdfSchemaAlignmentDialog.UILink.prototype.getJSON = function() { if ("uri" in this._link && this._link.uri !== null && "target" in this._link && this._link.target !== null) { var targetJSON = this._targetUI.getJSON(); if (targetJSON !== null) { return { uri: this._link.uri, curie:this._link.curie, target: targetJSON }; } } return null; };