Changeset 1108


Ignore:
Timestamp:
01/31/11 20:15:20 (13 years ago)
Author:
gaba
Message:

Collections - jstree solution, CustomTermsets? - load, save to WorkspaceProfile?

Location:
MDService2/trunk/MDService2
Files:
81 added
6 edited

Legend:

Unmodified
Added
Removed
  • MDService2/trunk/MDService2/WebContent/index.jsp

    r1085 r1108  
    2020<script src="scripts/jquery/jquery-treeview/jquery.treeview.js" type="text/javascript"></script>
    2121<script src="scripts/jquery/jquery-treeTable/jquery.treeTable.js" type="text/javascript"></script>
     22<script src="scripts/jquery/jsTree.v.1.0rc2/jquery.jstree.js" type="text/javascript"></script>
    2223<script src="scripts/jquery/jquery-autocomplete/jquery.autocomplete.js" type="text/javascript"></script>
    2324<script src="scripts/mdservice_helpers.js" type="text/javascript"></script>
     
    8687                        <span id="qts_save" class="cmd cmd_save" ></span>
    8788                        <div id="userqueries" ></div>
     89                       
     90                        <div id="usertermsets" >               
     91                                <label>Termsets</label><select id="ts_select" ></select>
     92                                <span id="ts_add" class="cmd cmd_add" ></span>
     93                                <span id="ts_delete" class="cmd cmd_del" ></span>
     94                        </div>         
     95                        <label>name</label>
     96                        <input type="text" id="ts_input" ></input>
     97                        <span id="ts_save" class="cmd cmd_save" ></span>
     98                        <div id="userterms" ></div>
    8899                </div>
    89100               
  • MDService2/trunk/MDService2/WebContent/scripts/mdservice2_ui.js

    r1085 r1108  
    340340
    341341function  preprocessJSON(json){
    342        
     342        if (json["WorkspaceProfile"]["CustomTermsets"] != undefined){
     343       
     344        if (String(json["WorkspaceProfile"]["CustomTermsets"]) != "null") {
     345                if (json["WorkspaceProfile"].CustomTermsets[0] == undefined){
     346                        var jj = json["WorkspaceProfile"]["CustomTermsets"]["item"];
     347                        delete json["WorkspaceProfile"]["CustomTermsets"]["item"];
     348                        json["WorkspaceProfile"]["CustomTermsets"] = [{}];
     349                        json["WorkspaceProfile"]["CustomTermsets"][0] = jj;
     350                }
     351       
     352               
     353                $.each(json["WorkspaceProfile"]["CustomTermsets"], function(i,item) {
     354                    if (this.Terms[0] == undefined){
     355                        var jj = this["Terms"]["item"];
     356                                delete this["Terms"]["item"];
     357                                this.Terms = [{}];
     358                        this.Terms[0] = jj;
     359                    }
     360                });
     361        }
     362        }
    343363        if (json["WorkspaceProfile"].Querysets[0] == undefined){
    344364                var jj = json["WorkspaceProfile"]["Querysets"]["item"];
     
    582602
    583603}
    584 
     604////////////////////////////////ttermsets
     605function appendTermUI(json,i, ts){
     606        var del = '';
     607        var name = '';
     608        //var ul;
     609        var id = $(ts).attr('id');
     610
     611        del = '<span class="cmd cmd_del" ><xsl:text> </xsl:text></span>';
     612        name = '<div class="cmds-elem-prop"><span class="label">name:</span><input type="text" class="input-name" value="' + json + '"></div>';
     613               
     614       
     615        var x = '<div class="cmds-elem-plus" ><span class="cmd cmd_load"></span><span class="detail-caller" ><a href="'+id + '_'+ i+'" >' +
     616        json + '</a></span>' +
     617        del +
     618        '<div class="detail" ></div>';
     619         
     620        $(ts).append(x);
     621       
     622        createTooltip(ts);
     623}
     624
     625function createTermsUI(json, ts){
     626        $(ts).children().remove();
     627        if (json.Terms != "null") {
     628                $.each(json.Terms, function(i,item) {
     629               
     630                //      if (this != "null"){
     631                                appendTermUI(item,i, ts);
     632                        //}
     633                });
     634        }
     635       
     636}
     637
     638
     639function loadTermsets(json) {
     640       
     641        var $select;
     642        $select = $('#ts_select');
     643       
     644        $select.find("option").remove();
     645        if (String(json) != "null") {
     646                $.each(json, function(i,item) {
     647                    $select.append(new Option(item.name, i));
     648                });
     649               
     650               
     651                // find id of selected
     652                if ($select.find("option").size() > 0) {
     653                        $select.find("option").first().attr("selected","true");
     654                        var id = parseInt($select.find("option:selected").val());
     655                        var jsonq = json[id];
     656                       
     657                        $('#ts_input').val(jsonq["name"]);
     658                        qs = $("#userterms");
     659                        createTermsUI(jsonq, qs);
     660                }
     661               
     662                $select.change(function(data){
     663                        if ($select.find("option").size() > 0) {
     664                                // find id of selected
     665                                var id = parseInt($select.find("option:selected").val());
     666                                var jsonq = json[id];
     667                               
     668                                $('#ts_input').val(jsonq["name"]);
     669                                qs = $("#userterms");
     670                               
     671                                createTermsUI(jsonq, qs);
     672                        }
     673             });
     674               
     675        }
     676
     677}
    585678function saveWorkspace(type){
    586679        var JSONText = JSON.stringify(jsonw["WorkspaceProfile"]);
     
    612705function loadWorkspaceProfiles(){
    613706        //empty json
    614         jsonw = {'WorkspaceProfile':{'Termsets':'null','Repositories':'null','Querysets':'null','created':'null','lastchanged':'null','profilename':'null'}};
     707        jsonw = {'WorkspaceProfile':{'CustomTermsets':'null','Termsets':'null','Repositories':'null','Querysets':'null','created':'null','lastchanged':'null','profilename':'null'}};
    615708        $('#qts_input').val("");
    616709       
     
    621714                                $("#serverqs").attr("data",JSON.stringify(json));
    622715                                //loadQuerysets(json["WorkspaceProfile"]["Querysets"],"server");
     716                                //loadTermsets(json[""WorkspaceProfile"]["Termsets"]);
    623717                                loadRepositories(json["WorkspaceProfile"]["Repositories"]);
    624718                               
     
    634728                                jsonw = preprocessJSON(data);
    635729                                loadQuerysets(jsonw["WorkspaceProfile"]["Querysets"],"user");
     730                                loadTermsets(jsonw["WorkspaceProfile"]["CustomTermsets"]);
    636731                                //createTooltip(this);
    637732        });
     
    639734}
    640735function loadCollections(ini){
    641        
     736        var coll_uri = link('collections','htmllist?repository=' + getSelectedRepository());
     737               
     738        $("#collections").jstree({
     739                "html_data" : {
     740                        "ajax" : {
     741                                "url" : coll_uri,
     742                                "data" : function (n) {
     743                                        return {  //id : n.attr ? n.attr("id") : 0 ,
     744                                                          collection : n.attr ? n.attr("handle") : "",
     745                                                          maxdepth : n.attr ? 2 : 1 };
     746                                }
     747                        }
     748                },
     749                types : {
     750                        // the default type
     751                        "default" : {
     752                                "max_children"  : -1,
     753                                "max_depth"             : -1,
     754                                "valid_children": "all"
     755
     756                }
     757                },
     758
     759                "plugins" : [ "themes", "html_data", "ui" , "checkbox", "types" ]
     760        });
     761       
     762        $('#collections').bind('loaded.jstree reopen.jstree', function(event, data)
     763                        {
     764                                if (ini) {
     765                                        loadQueryFromUriParams();
     766                                }
     767                               
     768                                var dataelems = data.inst.get_container()
     769                                createTooltip($(dataelems));
     770                                        //data.inst.get_container().unblock();         
     771                });
     772
     773        $('#collections').bind("change_state.jstree", function (event, data) {
     774                var dataelems = data.inst.get_container();
     775                var coll;
     776                collections.splice(0, collections.length);
     777               
     778                $(this).find('.jstree-checked').each(function(index){
     779                        if (!($(this).parent().parent().hasClass("jstree-checked")) ) {
     780                                //notifyUser("selection...:" + index + ":" + String.trim($(this).children('a').text())  + $(this).attr("handle"),'debug');     
     781                                coll = new Collection($(this).attr("handle"), String.trim($(this).children('a').text()));
     782                                collections[collections.length] = coll;                                         
     783                        }
     784                });
     785               
     786                collections_widget.load(collections);
     787       
     788    });
     789
     790        /*
    642791        $('#collections').load(link('collections','htmllist?repository=' + getSelectedRepository()), //profile.collections.base_uri,
    643792                        function() {
     
    736885                                                        notifyUser("selection...:" + index + ":" + this.textContent  + $(this).attr("handle"),'debug');
    737886                                                        coll = new Collection($(this).attr("handle"), this.textContent);
    738                                                         collections[collections.length] = coll;
    739                                                         /*
    740                                                         if (index == 0) {
    741                                                                 collection_text = this.textContent;
    742                                                         } else {
    743                                                                 collection_text = collection_text + ", " + this.textContent;
    744                                                         }
    745                                                         */
    746                                                
     887                                                        collections[collections.length] = coll;                                         
    747888                                                });
    748889                                                //$('#collection_list').attr("value",collection_text);
    749890                                                collections_widget.load(collections);
    750891                                        });// end of treeview click
    751         });// end of collection callback       
     892        });// end of collection callback
     893        */
    752894}
    753895function loadTerms(){
     
    11951337        });
    11961338
     1339        $('#columns-widget .cmd_save').click(function(event) {
     1340                var terms = [{}];       
     1341                       
     1342                var id = $("#ts_select option").size();
     1343                var name = "termset_" + id;
     1344               
     1345                columns_widget.getListWidget().find('.list-item').each(function(i,elem){
     1346                        terms[i] = $(elem).text();
     1347                });
     1348               
     1349                var dt = new Date();
     1350                var str_time = dateFormat(dt);//dt.toString("dd/mm/yyyy HH:mm:ss");
     1351                var jsont = {"name":name, "time" : str_time, "Terms" :terms};
     1352                if (jsonw["WorkspaceProfile"]["CustomTermsets"] == undefined) {
     1353                        jsonw["WorkspaceProfile"]["CustomTermsets"] = [{}];
     1354                }
     1355                jsonw["WorkspaceProfile"]["CustomTermsets"][id] = jsont;
     1356               
     1357                saveWorkspace("USER");
     1358                loadTermsets(jsonw["WorkspaceProfile"]["CustomTermsets"]);
     1359                //createTermsUI(jsonw["WorkspaceProfile"]["CustomTermsets"][id],$('#userterms'));
     1360                $("#ts_select option").removeAttr("selected");
     1361                $("#ts_select option").last().attr("selected","selected");
     1362                $('#ts_input').attr("value",name);
     1363                createTermsUI(jsonw["WorkspaceProfile"]["CustomTermsets"][id],$('#userterms'))
     1364        });
     1365       
    11971366        /*
    11981367        $('#querylist .query_header').find('.cmd_del').live('click',  function(event) {
     
    14011570        });
    14021571       
     1572        $('#ts_save').click(function(){
     1573                var id = $("#ts_select option:selected").val();
     1574                //notifyUser($('#qts_input').val() + $('#qts_input').text(),'debug');
     1575                jsonw["WorkspaceProfile"]["CustomTermsets"][id]["name"] = $('#ts_input').val();
     1576                       
     1577                $("#ts_select option:selected").text( $('#ts_input').val());
     1578                saveWorkspace("USER");
     1579        });
     1580        $('#ts_add').click(function(){
     1581                var new_name = "new_termset";
     1582               
     1583                var id = $('#ts_select option').size();
     1584                var dt = new Date();
     1585                var str_time = dateFormat(dt);//dt.toString("yyyy-MM-dd HH:mm:ss");
     1586               
     1587                if (id == 0){
     1588                        jsonw["WorkspaceProfile"]["CustomTermsets"] = [{}];
     1589                }
     1590       
     1591                jsonw["WorkspaceProfile"]["CustomTermsets"][id] = {"name":new_name,"created":str_time , "Terms" : "null"};
     1592               
     1593                saveWorkspace("USER");
     1594                //todo
     1595               
     1596                //loadWorkspace(jsonw["WorkspaceProfile"]["Querysets"]);
     1597                $("#ts_select").append(new Option(new_name, id));
     1598                $("#ts_select").find('option').attr("selected","false");
     1599                $("#ts_select").find('option').last().attr("selected","true");
     1600                $('#ts_input').val(new_name);
     1601                createTermsUI(jsonw["WorkspaceProfile"]["CustomTermsets"][id],$('#userterms'))
     1602        });
     1603        $('#ts_delete').click(function(){
     1604                var count = $("#ts_select option").size();
     1605               
     1606                //if (count > 1){
     1607                        var id = parseInt($("#ts_select option:selected").val());
     1608                        var size = jsonw["WorkspaceProfile"].CustomTermsets.length;
     1609               
     1610                        for (var i=id;i<size-1;i++){
     1611                                jsonw["WorkspaceProfile"].CustomTermsets[i] = jsonw["WorkspaceProfile"].CustomTermsets[i+1];
     1612                        }
     1613               
     1614                        delete jsonw["WorkspaceProfile"].CustomTermsets[size-1];
     1615                        jsonw["WorkspaceProfile"]["CustomTermsets"].length = size-1;
     1616                        // set null string , if 0 termsets
     1617                        if (count == 1) {
     1618                                jsonw["WorkspaceProfile"]["CustomTermsets"] = "null";
     1619                        }
     1620                        saveWorkspace("USER");
     1621                        loadTermsets(jsonw["WorkspaceProfile"]["CustomTermsets"]);
     1622        });
     1623       
     1624        $('#userterms .cmd_load').live('click',function(event){
     1625                var term = String.trim($(this).parent().find('a').text());
     1626                columns_widget.add(new ListItem(term));
     1627               
     1628        });
     1629        $('#userterms .cmd_del').live('click', function(event){
     1630                var id = parseInt($("#ts_select option:selected").val());
     1631                var str = $(this).parent().find('a').attr("href");
     1632                var iq = parseInt(str.substring(10));
     1633                var size = jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"].length;
     1634               
     1635                for (var i=iq;i<size-1;i++){
     1636                        jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"][i] = jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"][i+1];
     1637                }
     1638       
     1639                delete jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"][size-1];
     1640                jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"].length = size-1;
     1641               
     1642                if (size == 1){
     1643                        jsonw["WorkspaceProfile"]["CustomTermsets"][id]["Terms"] = "null";
     1644                }
     1645               
     1646                saveWorkspace("USER");
     1647                loadTermsets(jsonw["WorkspaceProfile"]["CustomTermsets"]);
     1648                //$("#ts_select option").remove();
     1649                //$("#ts_select option").first().attr("selected","true");
     1650        });
     1651
     1652       
    14031653        $('#collections .cmd_load').live('click',function(event){
    14041654                hideWelcomeMessage();
    14051655                var collection_text = "";
    1406                 var coll = $(this).next().next().next();
     1656                var coll = $(this).parent();
    14071657                collections.splice(0, collections.length);
    1408                 collections[0] = new Collection($(coll).attr("handle"), $(coll).html());
     1658                collections[0] = new Collection($(coll).attr("handle"), String.trim($(coll).children('a').text()));
    14091659                var columns = columns_widget.getColumnsListText();//$('#columns_list').attr("value");
    14101660                var query = new Query(collections,columns,"","");
  • MDService2/trunk/MDService2/WebContent/scripts/mdservice_widgets.js

    r1062 r1108  
    110110
    111111ListWidget.prototype.init = function () {
    112         var x = "<input type='text' class='input-widget autocomplete-input' /><div class='index-context'><table></table></div><div class='list-widget'></div>";
     112        var x_save = "";
     113       
     114        if ($(this.parent_div).attr("id") == 'columns-widget') {
     115                x_save = "<span class='cmd cmd_save' />";
     116        }
     117       
     118        var x = "<input type='text' class='input-widget autocomplete-input' />" +
     119        x_save +
     120        "<div class='index-context'><table></table></div><div class='list-widget'></div>";
    113121        $(this.parent_div).append(x);
    114122
     
    257265ListItem.prototype.render = function () {
    258266       
    259         var x = "<div id='" + this.listid + "'class='list-item'><span>" + this.name + "</span><span class='cmd cmd_del'> </span></div>";
     267        var x_save = "";
     268       
     269        //if ($(this.parent_container).parent().attr("id") == 'columns-widget') {
     270        //      x_save = "<span class='cmd cmd_save' />";
     271        //}
     272       
     273        var x = "<div id='" + this.listid + "'class='list-item'><span>" + this.name + "</span><span class='cmd cmd_del'> </span>" + x_save + "</div>";
    260274
    261275        $(this.parent_container).prepend(x);
  • MDService2/trunk/MDService2/src/eu/clarin/cmdi/mdservice/action/CollectionProxyAction.java

    r1085 r1108  
    3636               
    3737                URL targetURL = null;
    38                 //targetURL =new URL( getBaseURL(), getActionkey());                           
    39                 targetURL = new URL(getBaseURL(), "?operation=getCollections&maxdepth=" + this.getMaxdepth() + "&collection=");
     38                //targetURL =new URL( getBaseURL(), getActionkey());
     39                //FIXME: get maxdepth-constant out of here !!
     40                String params = "";
     41                params = "&maxdepth=" + getMaxdepth();
     42                params = params + "&collection=";
     43                if (getCollection() != null){
     44                        params = params + getCollection();
     45                }
     46                targetURL = new URL(getBaseURL(), "?operation=getCollections" + params);
    4047                //Admin.notifyUser("CollectionProxy.targetURL:" + targetURL);
    4148
  • MDService2/trunk/MDService2/src/xsl/collection2view.xsl

    r1081 r1108  
    6666                        </xsl:when>
    6767        <xsl:otherwise>
    68                         <div>
    69                                         <ul class="treeview">
     68                        <!-- <div>
     69                         -->
     70                       
     71                                         <ul class="treeview">
    7072                                                <xsl:apply-templates select="*" >
    7173                                                        <xsl:sort order="ascending" select="@n" />                                                     
    7274                                        </xsl:apply-templates>                 
    7375                                        </ul>
    74                                 </div>   
     76                                <!-- </div>
     77                                 -->   
    7578                 </xsl:otherwise>
    7679        </xsl:choose>
    7780       
    7881</xsl:template>
    79 
     82<!-- treeview -->
    8083<xsl:template match="c" >
    8184        <xsl:variable name="lv" select="count(ancestor::c)" />
    82        
     85        <xsl:variable name="root" select="/Collections/@root" />
     86                       
     87        <xsl:choose>
     88        <xsl:when test="($lv&gt;0) or $root='root'">   
    8389        <li>
    84          <span class="cmd cmd_load"> </span>
     90                <xsl:attribute name="class">
     91                                                <xsl:choose>
     92                                        <xsl:when test="@cnt_subcolls=0">jstree-leaf</xsl:when>
     93                                        <xsl:otherwise>jstree-closed</xsl:otherwise>
     94                                </xsl:choose>                                   
     95                </xsl:attribute>
     96                <xsl:attribute name="handle">
     97                <xsl:value-of select="@handle"/>               
     98                </xsl:attribute>
     99                         <span class="cmd cmd_load"> </span>
     100         
     101         <!--
     102         <label class="showselection" count="0" some_selection="0" >o</label>
     103         <input type="checkbox" class="selection" child="undefined" />
     104         <span class="folder" >
     105        <xsl:attribute name="handle">
     106        <xsl:value-of select="@handle"/>
     107                </xsl:attribute>
     108                <a href="{my:formURL('record','htmldetail', @handle )}" ><xsl:value-of select="@n" /></a></span>               
     109     <span class="note"> |<xsl:value-of select="@cnt" />|</span><span class="cmd cmd_detail"> </span>
     110          -->   
     111     <a href="{my:formURL('record','htmldetail', @handle )}" ><xsl:value-of select="@n" /></a>
     112
     113                <xsl:if test="c and ($lv&lt;$max_depth or $max_depth=0)">
     114                        <ul>
     115                                <xsl:choose>
     116                                        <xsl:when test="$sort='s'">                             
     117                                                <xsl:apply-templates select="c" >
     118                                                                <xsl:sort order="descending" select="@cnt" data-type="number" />
     119                                                </xsl:apply-templates>         
     120                                        </xsl:when>
     121                                        <xsl:otherwise>
     122                                                <xsl:apply-templates select="c" >
     123                                                                <xsl:sort order="ascending" select="@n" />
     124                                                </xsl:apply-templates>         
     125                                        </xsl:otherwise>
     126                                </xsl:choose>                                   
     127                        </ul>
     128               
     129                </xsl:if>
     130        </li>
     131        </xsl:when>
     132        <xsl:otherwise>
     133                        <xsl:if test="c and ($lv&lt;$max_depth or $max_depth=0)">
     134                       
     135                                <xsl:choose>
     136                                        <xsl:when test="$sort='s'">                             
     137                                                <xsl:apply-templates select="c" >
     138                                                                <xsl:sort order="descending" select="@cnt" data-type="number" />
     139                                                </xsl:apply-templates>         
     140                                        </xsl:when>
     141                                        <xsl:otherwise>
     142                                                <xsl:apply-templates select="c" >
     143                                                                <xsl:sort order="ascending" select="@n" />
     144                                                </xsl:apply-templates>         
     145                                        </xsl:otherwise>
     146                                </xsl:choose>                                   
     147               
     148                </xsl:if>
     149       
     150        </xsl:otherwise>
     151        </xsl:choose>
     152</xsl:template>
     153<!--  old version treeview
     154
     155<xsl:template match="c" >
     156        <xsl:variable name="lv" select="count(ancestor::c)" />
     157       
     158        <li>
     159                <xsl:attribute name="class">
     160                                                <xsl:choose>
     161                                        <xsl:when test="@cnt_subcolls=0">                               
     162                                                jstree-leaf     
     163                                        </xsl:when>
     164                                        <xsl:otherwise>
     165                                                jstree-closed
     166                                        </xsl:otherwise>
     167                                </xsl:choose>                                   
     168                </xsl:attribute>
     169                <xsl:attribute name="handle">
     170                <xsl:value-of select="@handle"/>               
     171                </xsl:attribute>
     172                         <span class="cmd cmd_load"> </span>
    85173         <label class="showselection" count="0" some_selection="0" >o</label>
    86174         <input type="checkbox" class="selection" child="undefined" />   
     
    91179                <a href="{my:formURL('record','htmldetail', @handle )}" ><xsl:value-of select="@n" /></a></span>               
    92180     <span class="note"> |<xsl:value-of select="@cnt" />|</span><span class="cmd cmd_detail"> </span>
    93         <!--
    94         <span class="folder"><xsl:value-of select="@n" />(<xsl:value-of select="@cnt" />)
    95         </span>
    96          -->   
    97        
     181               
    98182                <xsl:if test="c and ($lv&lt;$max_depth or $max_depth=0)">
    99183                        <ul>
     
    115199        </li>
    116200</xsl:template>
    117 
     201 -->
     202 
    118203<xsl:template match="c" mode="detail" >
    119204<xsl:param name="parentid" select="'c-'" />
  • MDService2/trunk/MDService2/src/xsl/terms2view.xsl

    r1081 r1108  
    440440                                        $(this).after('<div class="ui-context-dialog cmds-ui-closable cmd cmd_get" ></div>');                                   
    441441                                        detail = $(this).parent().children('.ui-context-dialog');                               
    442                                                                        
     442                                                               
    443443                                        detail.load($(this).attr('href'), function(event) {
    444444                                                                $(this).removeClass('cmd_get cmd');
Note: See TracChangeset for help on using the changeset viewer.