Changeset 4331


Ignore:
Timestamp:
01/24/14 11:20:40 (10 years ago)
Author:
sroth
Message:

Adjusted xml output of the client to latest schema version.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • DASISH/t5.6/client/trunk/chrome/markingcollection/content/markingcollection/annotator-service/conversion.utils.js

    r4277 r4331  
    44 * @returns {annotationToOmObject.om_object} an object for Wired Marker
    55 */
    6 function annotation2om_object(annotation){
     6function annotation2om_object(annotation) {
    77    var om_object = {
    8                         oid             :"",
    9                         pfid            :"0",
    10                         doc_title       :"",
    11                         doc_url         :"",
    12                         con_url         :"",
    13                         bgn_dom         :"",
    14                         end_dom         :"",
    15                         oid_title       :"Test test test",
    16                         oid_property    :"<PROPERTY><HYPER_ANCHOR></HYPER_ANCHOR><NOTE></NOTE></PROPERTY>",
    17                         oid_mode        :"0",
    18                         oid_type        :"text",
    19                         oid_txt         :"", //must be the marked text!
    20                         oid_img         :null,
    21                         oid_date        :"",
    22                         pfid_order      : 4
    23                     };
    24    
     8        oid: "",
     9        pfid: "0",
     10        doc_title: "",
     11        doc_url: "",
     12        con_url: "",
     13        bgn_dom: "",
     14        end_dom: "",
     15        oid_title: "Test test test",
     16        oid_property: "<PROPERTY><HYPER_ANCHOR></HYPER_ANCHOR><NOTE></NOTE></PROPERTY>",
     17        oid_mode: "0",
     18        oid_type: "text",
     19        oid_txt: "", //must be the marked text!
     20        oid_img: null,
     21        oid_date: "",
     22        pfid_order: 4
     23    };
     24
    2525    //example anchor:
    2626    // http://snd.gu.se/#hyperanchor1.3://div[@id="node-170"]/div[1]/div[1]/div[1]/div[1]/p[1](294)(3)(sse)&
    2727    // //div[@id="node-170"]/div[1]/div[1]/div[1]/div[1]/p[1](365)(3)(kav)&
    2828    // border:thin dotted rgb(255,204,0);background-color:rgb(255,255,204);color:rgb(0,0,0);
    29    
     29
    3030    var title = $(annotation).find('headline').text().trim();
    3131    var body = $(annotation).find('body').text().trim();
     
    3434    var link = $(annotation).find('link').text();
    3535    var time = $(annotation).attr('timeStamp');
    36            
    37     var urlParts = link.split("#xpointer"); 
    38    
     36
     37    var urlParts = link.split("#xpointer");
     38
    3939    om_object.doc_url = urlParts[0];
    4040    om_object.con_url = urlParts[0];
    4141    var xpointer = urlParts[1];
    42    
     42
    4343    //start dom
    4444    xpointer.match(/start-point\(string-range\((.+?)\)\)\/range-to\(/);
    4545    var parts = RegExp.$1.split(',');
    4646    var parts0 = parts[0].replace('/text()[1]', '');
    47     om_object.bgn_dom = parts0+'('+parts[2]+')(3)';
    48    
     47    om_object.bgn_dom = parts0 + '(' + parts[2] + ')(3)';
     48
    4949    //end dom
    5050    xpointer.match(/range-to\(string-range\((.+?)\)\)\)/);
    5151    var parts = RegExp.$1.split(',');
    5252    var parts0 = parts[0].replace('/text()[1]', '');
    53     om_object.end_dom = parts0+'('+parts[2]+')(3)';
    54    
     53    om_object.end_dom = parts0 + '(' + parts[2] + ')(3)';
     54
    5555    //build hyperanchor
    56     console.log('fragment: '+om_object.bgn_dom+'&'+om_object.end_dom+'&'+style);
    57     var hyperanchor = '#hyperanchor1.3'+encodeURIComponent(':'+om_object.bgn_dom.replace(/"/g, '&quot;')+'&'+om_object.end_dom.replace(/"/g, '&quot;')+'&'+style);
    58    
     56    console.log('fragment: ' + om_object.bgn_dom + '&' + om_object.end_dom + '&' + style);
     57    var hyperanchor = '#hyperanchor1.3' + encodeURIComponent(':' + om_object.bgn_dom.replace(/"/g, '&quot;') + '&' + om_object.end_dom.replace(/"/g, '&quot;') + '&' + style);
     58
    5959    om_object.doc_title = title;
    60    
     60
    6161    om_object.oid = hashCode($(annotation).attr('URI'));
    62     if(om_object.oid < 0){
     62    if (om_object.oid < 0) {
    6363        om_object.oid = om_object.oid * -1;
    6464    }
    6565    console.log(link);
    66     om_object.oid_property = "<PROPERTY><HYPER_ANCHOR>"+om_object.doc_url+hyperanchor+"</HYPER_ANCHOR><NOTE>"+body+"</NOTE></PROPERTY>";
    67    
    68     if(type === 'note'){
     66    om_object.oid_property = "<PROPERTY><HYPER_ANCHOR>" + om_object.doc_url + hyperanchor + "</HYPER_ANCHOR><NOTE>" + body + "</NOTE></PROPERTY>";
     67
     68    if (type === 'note') {
    6969        om_object.oid_txt = body;
    7070        om_object.oid_type = 'text';
    7171    }
    7272    var d = new Date(time);
    73     om_object.oid_date = (d.getFullYear()+'/'+(parseInt(d.getMonth())+1))+'/'+d.getDate()+' '+d.getHours()+':'+d.getMinutes()+':'+d.getSeconds();
    74    
     73    om_object.oid_date = (d.getFullYear() + '/' + (parseInt(d.getMonth()) + 1)) + '/' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();
     74
    7575    return om_object;
    7676}
     
    8181 * @returns {String} annotation in xml
    8282 */
    83 function om_object2annotation(om_object){
     83function om_object2annotation(om_object) {
    8484    var note = om_object.oid_property.match(/<NOTE>(.+?)<\/NOTE>/)[1];
    8585    var hyperanchor = om_object.oid_property.match(/<HYPER_ANCHOR>(.+?)<\/HYPER_ANCHOR>/)[1];
    86     var style='';
     86    var style = '';
    8787    var timestamp = new Date(om_object.oid_date);
    88    
     88
    8989    hyperanchor = unescape(hyperanchor);
    90    
     90
    9191    hyperanchor.match(/^(.+\([0-9]+\)\([0-9]+\)\([\s\S]*\))&(.+\([0-9]+\)\([0-9]+\)\([\s\S]*\))&(.+)$/);
    92    
     92
    9393    style = RegExp.$3;
    94    
     94
    9595    var path = {};
    96    
     96
    9797    om_object.bgn_dom.match(/(.+)\(([0-9]+)\)\(([0-9]+)\)/);
    9898    path.start = RegExp.$1;
     
    104104    path.endOffset = RegExp.$2;
    105105    path.endType = RegExp.$3;
    106    
     106
    107107    var xpointer = '';
    108    
    109     xpointer += "#xpointer(start-point(string-range("+path.start+"/text()[1],'',"+path.startOffset+"))";
    110     xpointer += "/range-to(string-range("+path.end+"/text()[1],'',"+path.endOffset+")))";
    111    
     108
     109    xpointer += "#xpointer(start-point(string-range(" + path.start + "/text()[1],''," + path.startOffset + "))";
     110    xpointer += "/range-to(string-range(" + path.end + "/text()[1],''," + path.endOffset + ")))";
     111
    112112    var annotation = '<?xml version="1.0" encoding="UTF-8"?>\n\
    113113                      <annotation xmlns="http://www.dasish.eu/ns/addit"\n\
     
    115115                            xsi:schemaLocation="http://www.dasish.eu/ns/addit http://dasish.eu/DASISH-schema.xsd"\n\
    116116                            xmlns:xhtml="http://www.w3.org/1999/xhtml"\n\
    117                             lastModified="'+timestamp.toISOString()+'"\n\
    118                             URI="tempAID'+om_object.oid+'"\n\
    119                             ownerRef="tempownerRef'+om_object.oid+'"\n\
    120                             headline="'+om_object.oid_title+'">\n\
     117                            URI="' + annotationFramework.getBackend() + '/api/annotations/00000000-0000-0000-' + om_object.oid.substring(0, 4) + '-' + om_object.oid.substring(4, 14) + '00"\n\
     118                            ownerRef="' + annotationFramework.getBackend() + '/api/users/00000000-0000-0000-' + om_object.oid.substring(0, 4) + '-' + om_object.oid.substring(4, 14) + '00">\n\
     119                        <headline>' + om_object.oid_title + '</headline>\n\
     120                        <lastModified>' + timestamp.toISOString() + '</lastModified>\n\
    121121                        <body>\n\
    122                             <xmlBody mimeType="application/xml+xhtml">\n\
    123                                 <xhtml:span style="'+style+'">'+note+'</xhtml:span>\n\
     122                            <xmlBody>\n\
     123                                <mimeType>application/xml+xhtml</mimeType>\n\
     124                                <xhtml:span style="' + style + '">' + note + '</xhtml:span>\n\
    124125                            </xmlBody>\n\
    125126                        </body>\n\
    126127                            <targets>\n\
    127                                 <targetInfo ref="'+annotationFramework.getBackend()+'/api/targets/00000000-0000-0000-'+om_object.oid.substring(0,4)+'-'+om_object.oid.substring(4,14)+'"\n\
    128                                     link="'+om_object.doc_url/*+xpointer*/+'"\n\
    129                                     version="'+timestamp.toISOString()+'"/>\n\
     128                                <targetInfo ref="' + annotationFramework.getBackend() + '/api/targets/00000000-0000-0000-' + om_object.oid.substring(0, 4) + '-' + om_object.oid.substring(4, 14) + '00">\n\
     129                                    <link>' + om_object.doc_url + xpointer + '</link>\n\
     130                                    <version>' + timestamp.toISOString() + '</version>\n\
     131                                </targetInfo>\n\
    130132                            </targets>\n\
    131133                            <permissions>\n\
    132                                 <userWithPermission permission="owner" ref="tmpPermissionsListID'+om_object.oid+'"/>\n\
     134                                <userWithPermission ref="' + annotationFramework.getBackend() + '/api/users/00000000-0000-0000-' + om_object.oid.substring(0, 4) + '-' + om_object.oid.substring(4, 14) + '00">\n\
     135                                    <permission>owner</permission>\n\
     136                                </userWithPermission>\n\
    133137                            </permissions>\n\
    134138                      </annotation>';
     
    136140}
    137141
    138 function hashCode(str){
    139       var hash = 0;
    140       if (str == undefined || str.length == 0) return hash;
    141       for (i = 0; i < str.length; i++) {
    142           char = str.charCodeAt(i);
    143           hash = ((hash<<5)-hash)+char;
    144           hash = hash & hash; // Convert to 32bit integer
    145       }
    146       return hash;
     142function hashCode(str) {
     143    var hash = 0;
     144    if (str == undefined || str.length == 0)
     145        return hash;
     146    for (i = 0; i < str.length; i++) {
     147        char = str.charCodeAt(i);
     148        hash = ((hash << 5) - hash) + char;
     149        hash = hash & hash; // Convert to 32bit integer
     150    }
     151    return hash;
    147152}
    148153
    149154if (!Date.prototype.toISOString) {
    150155    Date.prototype.toISOString = function() {
    151         function pad(n) { return n < 10 ? '0' + n : n }
     156        function pad(n) {
     157            return n < 10 ? '0' + n : n
     158        }
    152159        return this.getUTCFullYear() + '-'
    153             + pad(this.getUTCMonth() + 1) + '-'
    154             + pad(this.getUTCDate()) + 'T'
    155             + pad(this.getUTCHours()) + ':'
    156             + pad(this.getUTCMinutes()) + ':'
    157             + pad(this.getUTCSeconds()) + 'Z';
     160                + pad(this.getUTCMonth() + 1) + '-'
     161                + pad(this.getUTCDate()) + 'T'
     162                + pad(this.getUTCHours()) + ':'
     163                + pad(this.getUTCMinutes()) + ':'
     164                + pad(this.getUTCSeconds()) + 'Z';
    158165    };
    159166}
    160167
    161168/*
    162 From SQL-lite for wired-marker
    163 <PROPERTY>
    164 <HYPER_ANCHOR>http://localhost/annotation/test/test-service.html#hyperanchor1.3%3A%2Fhtml%5B1%5D%2Fbody%5B1%5D%2Fdiv%5B2%5D%2Fp%5B1%5D(0)(3)(Ane)%26%2Fhtml%5B1%5D%2Fbody%5B1%5D%2Fdiv%5B2%5D%2Fp%5B1%5D(45)(3)(ter)%26background-color%3A%20rgb(%2044%2C%20254%2C%20%2081)%3Bcolor%3Argb(0%2C0%2C0)%3B</HYPER_ANCHOR>
    165 <NOTE>text om en fï¿œrfattare</NOTE>
    166 </PROPERTY>
    167 unescaped: http://localhost/annotation/test/test-service.html#hyperanchor1.3:/html[1]/body[1]/div[2]/p[1](0)(3)(Ane)&/html[1]/body[1]/div[2]/p[1](45)(3)(ter)&background-color: rgb( 44, 254, 81);color:rgb(0,0,0);text om en fï¿œrfattare
    168 */
     169 From SQL-lite for wired-marker
     170 <PROPERTY>
     171 <HYPER_ANCHOR>http://localhost/annotation/test/test-service.html#hyperanchor1.3%3A%2Fhtml%5B1%5D%2Fbody%5B1%5D%2Fdiv%5B2%5D%2Fp%5B1%5D(0)(3)(Ane)%26%2Fhtml%5B1%5D%2Fbody%5B1%5D%2Fdiv%5B2%5D%2Fp%5B1%5D(45)(3)(ter)%26background-color%3A%20rgb(%2044%2C%20254%2C%20%2081)%3Bcolor%3Argb(0%2C0%2C0)%3B</HYPER_ANCHOR>
     172 <NOTE>text om en fï¿œrfattare</NOTE>
     173 </PROPERTY>
     174 unescaped: http://localhost/annotation/test/test-service.html#hyperanchor1.3:/html[1]/body[1]/div[2]/p[1](0)(3)(Ane)&/html[1]/body[1]/div[2]/p[1](45)(3)(ter)&background-color: rgb( 44, 254, 81);color:rgb(0,0,0);text om en fï¿œrfattare
     175 */
Note: See TracChangeset for help on using the changeset viewer.