代码之家  ›  专栏  ›  技术社区  ›  schweerelos

如何使工作流任务表在DSpace中可排序?

  •  1
  • schweerelos  · 技术社区  · 7 年前

    在具有Mirage 2主题的DSpace XMLUI中,我希望提交页面上的“池中的任务”和“您拥有的任务”表可以排序和过滤。我该怎么做?

    1 回复  |  直到 7 年前
        1
  •  0
  •   schweerelos    7 年前

    该策略在是否使用传统的DSpace工作流和可配置工作流方面略有不同。

    任务表的唯一ID(仅限传统的DSpace工作流)

    要解决的第一个问题是两个表具有相同的ID dspace-xmlui/src/main/java/org/dspace/app/xmlui/aspect/xmlworkflow/Submissions.java

            // Tasks you own
    -       Table table = workflow.addTable("workflow-tasks",ownedItems.size() + 2,5);
    +       Table table = workflow.addTable("workflow-tasks-owned",ownedItems.size() + 2,5);    
            table.setHead(T_w_head2);
    

    同样地,对于同一文件中更深层的池中的任务。

    添加一些模板,以确保表具有 thead / tbody tfoot 结构

       <xsl:template match="dri:table[@n='workflow-tasks-pooled' or @n='workflow-tasks-owned']">
               <xsl:apply-templates select="dri:head"/>
               <div class="table-responsive">
                       <table>
                               <xsl:call-template name="standardAttributes">
                                       <xsl:with-param name="class">ds-table table table-striped table-hover</xsl:with-param>
                               </xsl:call-template>
                               <xsl:apply-templates select="dri:row[1]"/>
                               <tbody>
                                       <xsl:apply-templates select="dri:row[position()!=1 and position()!=last()]"/>
                               </tbody>
                               <xsl:apply-templates select="dri:row[last()]"/>
                       </table>
               </div>
       </xsl:template>
    
       <xsl:template match="dri:table[@n='workflow-tasks-pooled' or @n='workflow-tasks-owned']/dri:row[@role='header']">
               <thead>
               <tr class="ds-table-header-row">
                       <xsl:apply-templates select="dri:cell"/>
               </tr>
               </thead>
       </xsl:template>
    
       <xsl:template match="dri:table[@n='workflow-tasks-pooled' or @n='workflow-tasks-owned']/dri:row[last()]">
               <tfoot>
                       <tr>
                               <xsl:apply-templates select="dri:cell"/>
                       </tr>
               </tfoot>
       </xsl:template>
    

    中的进口 dspace-xmlui-mirage2/src/main/webapp/styles/classic_mirage_color_scheme/_main.scss 不太正确。这样修复它们:

    index bc58570..95444c7 100644
    --- a/dspace-xmlui-mirage2/src/main/webapp/styles/classic_mirage_color_scheme/_main.scss
    +++ b/dspace-xmlui-mirage2/src/main/webapp/styles/classic_mirage_color_scheme/_main.scss
    @@ -31,8 +31,8 @@
     @import "classic_mirage_color_scheme/vocabulary-support";
    
     @import "classic_mirage_color_scheme/jquery_ui";
    -@import "classic_mirage_color_scheme/dataTables.bootstrap";
    +//@import "classic_mirage_color_scheme/dataTables.bootstrap";
     @import "shared/dspace-bootstrap-tweaks";
     @import "../vendor/jquery-ui/themes/base/jquery-ui.css";
    -@import "../vendor/datatables/media/css/jquery.dataTables.min.css";
    +@import "../vendor/datatables/media/css/dataTables.bootstrap.css";
     @import "style";
    

    激活数据表功能

    然后,激活 datatables theme.js .在适用于您的配置中进行交换--下面的更改将

    • 当表中至少有5项时,启用分页和过滤;
    • 默认情况下禁用排序;和
    • 加入一些语言调整。

    $(function() {
    var poolTable = $('#aspect_xmlworkflow_Submissions_table_workflow-tasks-pooled');
    poolTable.DataTable({
        "paging": poolTable.find("tbody tr").size() >= 5,
        "autoWidth": true,
        "info": false,
        "searching": poolTable.find("tbody tr").size() >= 5,
        "columnDefs": [
            { targets: 0, orderable: false, searchable: false }
        ],
        "order": [],
        "oLanguage" : {
            "sSearch": "Filter tasks:"
        }
    });
    poolTable.closest(".dataTables_wrapper").before("<p class='help'>Click on a column header to sort the table by that column.</p>");
    
    var ownedTable = $('#aspect_xmlworkflow_Submissions_table_workflow-tasks-owned');
    ownedTable.DataTable({
        "paging": ownedTable.find("tbody tr").size() >= 5,
        "autoWidth": true,
        "info": false,
        "searching": ownedTable.find("tbody tr").size() >= 5,
        "columnDefs": [
            { targets: 0, orderable: false, searchable: false }
        ],
        "order": []
    });
    ownedTable.closest(".dataTables_wrapper").before("<p class='help'>Click on a column header to sort the table by that column.</p>");
    });