{% extends "framework/base.html" %}
{#{% load i18n %}#}
{% block header %}
    <title>{{ _('SVN 路径 列表') }}</title>
{% endblock %}


{% block content %}
    <div class="row header">
        <div class="col-sm-5">
            <h1>{{ _('SVN 路径') }}
                <small>{{ _('列表') }}</small>
            </h1>
        </div>
    </div>


    <div class="row ">
        <div class="col-sm-12">
            <form id="filter-form" class="form-inline pane">
                <input style="display:none" type="text">


                <script>
                    // 过滤条件字段定义
                    var filter_field_schemas = {
                        id:
                            {
                                label: '{{ _('id') }}',
                                name: 'id',
                                type: 'number',
                                data_url: '',
                            },
                        alias:
                            {
                                label: '{{ _('路径别名') }}',
                                name: 'alias',
                                type: 'char',
                                data_url: '',
                            },
                        project_name:
                            {
                                label: '{{ _('项目') }}',
                                name: 'project_name',
                                type: 'choice',
                                data_url: '/svn_admin/svn_path/svn_project_list',
                            },
                        path:
                            {
                                label: '{{ _('svn 路径') }}',
                                name: 'path',
                                type: 'char',
                                data_url: '',
                            },
                        parent:
                            {
                                label: '{{ _('上级路径') }}',
                                name: 'parent',
                                type: 'choice',
                                data_url: '/svn_admin/svn_path/list',
                            },
                        status:
                            {
                                label: '{{ _('状态') }}',
                                name: 'status',
                                type: 'choice',
                                data_url: '',
                                choices: [{% for o in request.parser_context.view.model.fields_map.status.choices %}
                                    ["{{ o.0 }}", '{{ o.1 }}'],{% endfor %}
                                ]
                            },
                        remark:
                            {
                                label: '{{ _('备注') }}',
                                name: 'remark',
                                type: 'char',
                                data_url: '',
                            },
                        read_member:
                            {
                                label: '{{ _('可读成员') }}',
                                name: 'read_member',
                                type: 'char',
                                data_url: '',
                            },
                        write_member:
                            {
                                label: '{{ _('可写成员') }}',
                                name: 'write_member',
                                type: 'char',
                                data_url: '',
                            },
                        other_permission:
                            {
                                label: '{{ _('其他默认权限') }}',
                                name: 'other_permission',
                                type: 'choice',
                                data_url: '',
                                choices: [
                                    {% for o in request.parser_context.view.model.fields_map.other_permission.choices %}
                                        ["{{ o.0 }}", '{{ o.1 }}'],{% endfor %}
                                ]
                            },
                        create_datetime:
                            {
                                label: '{{ _('创建时间') }}',
                                name: 'create_datetime',
                                type: 'date',
                                data_url: '',
                            },
                        update_datetime:
                            {
                                label: '{{ _('更新时间') }}',
                                name: 'update_datetime',
                                type: 'date',
                                data_url: '',
                            },
                    }

                    // 默认过滤条件
                    var filter_conditions = [{
                        name: 'alias',
                        operator: "exact",
                        value: "",
                        type: "char",
                        label: '{{ _('路径别名') }}',
                        choices: [],
                        is_default: true
                    }]
                </script>
                {% include "framework/widgets/filter.html" %}
            </form>
        </div>
    </div>

    <div class="row">
        <div class="col-sm-12">
            <div class="table-container">
                <div id="toolbar" class="">
                    <a id="add-btn" class="btn btn-sm btn-primary openDialog"
                       href="{{ url('svn_admin.svn_path.edit') }}">
                        <span class="glyphicon glyphicon-plus-sign"></span> {{ _('添加') }}
                    </a>
                    <button id="delete-btn" class="btn btn-sm btn-danger " disabled>
                        <span class="glyphicon glyphicon-remove"></span> {{ _('删除') }}
                    </button>
                    <button id="expandAll-btn" class="btn btn-sm btn-default ">
                        {{ _('展开') }}
                    </button>
                    <button id="collapseAll-btn" class="btn btn-sm btn-default ">
                        {{ _('收缩') }}
                    </button>
                    {% if request.allow_menu.svn_user_svn_path_preview_db_files %}
                        <a id="preview-db-file-btn"
                           class="btn btn-sm btn-default dialog "
                           href="{{ url('svn_admin.svn_path.preview_db_files') }}?format=html">
                            <span class="glyphicon "></span> {{ _('预览DB文件') }}
                        </a>
                    {% endif %}
                </div>
                <table id="table" class="table table-striped"></table>
            </div>
        </div>
    </div>


    <script>

        var $table = $('#table')
        var bootstrapTableOption = {
            height: Math.max(400, getWindowHeightWidth()[1] - Math.min($('html').height(), $table.offset().top) + 10),
            url: window.location.pathname,  //请求后台的URL（*）
            locale: BootstrapTableLocale,
            toolbar: '#toolbar',
            method: "GET", //请求方式（*）
            dataType: "json",
            striped: true, //是否显示行间隔色
            cache: false,  //是否使用缓存，默认为true，所以一般情况下需要设置一下这个属性（*）
            sortable: true,  //是否启用排序
            sortOrder: "asc", //排序方式
            resizable: true,
            queryParams: function (params) {
                var paramsArray = $('#filter-form').serializeArray()
                paramsArray.push({name: 'page_size', value: params.pageSize || 10000})
                paramsArray.push({name: 'page', value: params.pageNumber || 1})
                paramsArray.push({name: 'keywords', value: params.searchText})
                var orderPrefix = params.sortOrder == 'asc' ? '' : '-'
                paramsArray.push({name: 'ordering', value: orderPrefix + (params.sortName || '')})
                return paramsArray;

            },//传递参数（*）
            showExport: true,
            totalField: 'count',
            dataField: 'results',
            showJumpTo: "true",
            responseHandler: function (res) {
                if (res.code !== 0) {
                    alertMsg(res.msg)
                }
                return res.data
            },
            onLoadError: function (status, jqXHR) {

                ajaxError(jqXHR, status)


            },
            pagination: true, //是否显示分页（*）
            sidePagination: "client", //分页方式：client 客户端分页，server 服务端分页（*）
            queryParamsType: "",      //https://examples.bootstrap-table.com/index.html?bootstrap3#options/query-params-type.html
            pageNumber: 1, //初始化加载第一页，默认第一页
            pageSize: 10000, //每页的记录行数（*）
            pageList: [100, 200, 600, 2400], //可供选择的每页的行数（*）
            search: true, //是否显示表格搜索，如指定搜索customSearch是客户端搜索，sidePagination: "server"进服务端
            showSearchClearButton: true,
            strictSearch: false, //严格查询
            showFullscreen: false,
            showColumnsToggleAll: true,
            showColumns: true, //是否显示所有的列
            showRefresh: true, //是否显示刷新按钮
            minimumCountColumns: 3, //最少允许的列数
            clickToSelect: false, //是否启用点击选中行
            multipleSelectRow: true,//按shift 多选
            showToggle: false, //是否显示详细视图和列表视图的切换按钮
            cardView: false,   //是否显示详细视图
            detailView: true,//显示详情
            detailViewIcon: false,
            detailViewByClick: false,
            fixedColumns: true,
            fixedNumber: 1,
            fixedRightNumber: 1,
            groupBy: true,//分组
            groupByField: 'type',
            uniqueId: 'id',
            onDblClickRow: function (row, $element, field) {
                $element.treegrid('toggle');
            },
            // 表格树设置 https://bootstrap-table.com/docs/extensions/treegrid/#example
            idField: 'id',
            treeEnable: true,
            treeShowField: 'project_name',
            parentIdField: 'parent',
            onPostBody: function (data) {
                var columns = $table.bootstrapTable('getOptions').columns
                if (columns && columns[0][1].visible) {
                    // http://maxazan.github.io/jquery-treegrid
                    $table.treegrid({
                        initialState: 'collapsed',//'expanded'
                        treeColumn: 4,
                        onChange: function () {
                           $table.bootstrapTable('resetWidth')
                        }
                    })
                    $table.treegrid('getRootNodes').treegrid('expand');
                }
                $('[data-toggle="tooltip"]').tooltip()

            },
            // -- end
            columns: [{
                checkbox: true,
                align: 'center',
                valign: 'middle'
            },
                {
                    field: 'id',
                    title: "{{ _('id') }}",
                    align: 'center',
                    valign: 'middle',
                    sortable: true,
                    visible: true,
                },
                {
                    field: 'alias',
                    title: "{{ _('路径别名') }}",
                    align: 'center',
                    valign: 'middle',
                    sortable: true,
                    visible: true,
                },
                {
                    field: 'project_name',
                    title: "{{ _('项目') }}",
                    align: 'center',
                    valign: 'middle',
                    sortable: true,
                    visible: true,
                },
                {
                    field: 'path',
                    title: "{{ _('svn 路径') }}",
                    align: 'left',
                    valign: 'middle',
                    sortable: true,
                    visible: true,
                },
                {
                    field: 'parent',
                    title: "{{ _('上级路径') }}",
                    align: 'center',
                    valign: 'middle',
                    sortable: true,
                    visible: false,
                },
                {
                    field: 'status',
                    title: "{{ _('状态') }}",
                    align: 'center',
                    valign: 'middle',
                    sortable: true,
                    visible: true,
                    formatter: function (value, row, index) {
                        return row.status_alias.toString()
                    }
                },
                {
                    field: 'remark',
                    title: "{{ _('备注') }}",
                    align: 'center',
                    valign: 'middle',
                    sortable: true,
                    visible: true,
                },
                {
                    field: 'read_member',
                    title: "{{ _('可读成员') }}",
                    align: 'left',
                    valign: 'middle',
                    sortable: true,
                    visible: true,
                    formatter: function (value, row, index) {
                        var read_member = JSON.parse(value)
                        return '<b  data-toggle="tooltip" title="' + read_member + '">' + read_member.length + '</b>'
                    }
                },
                {
                    field: 'write_member',
                    title: "{{ _('可写成员') }}",
                    align: 'left',
                    valign: 'middle',
                    sortable: true,
                    visible: true,
                    formatter: function (value, row, index) {
                        var write_member = JSON.parse(value)
                        return '<b  data-toggle="tooltip" title="' + write_member + '">' + write_member.length + '</b>'
                    }
                },
                {
                    field: 'other_permission',
                    title: "{{ _('其他访问权限') }}",
                    align: 'center',
                    valign: 'middle',
                    sortable: true,
                    visible: true,
                    formatter: function (value, row, index) {
                        return row.other_permission_alias
                    }
                },
                {
                    field: 'create_datetime',
                    title: "{{ _('创建时间') }}",
                    align: 'center',
                    valign: 'middle',
                    sortable: true,
                    visible: true,
                },
                {
                    field: 'update_datetime',
                    title: "{{ _('更新时间') }}",
                    align: 'center',
                    valign: 'middle',
                    sortable: true,
                    visible: false,
                },
                {
                    field: '_operate',
                    title: '{{ _('操作') }}',
                    align: 'center',
                    valign: 'middle',
                    formatter: function (value, row, index) {
                        return [
                            '<a href="{{ url('svn_admin.svn_path.edit') }}?id=' + row.id + '" class="btn btn-xs btn-info openDialog">{{ _('编辑') }}</a> ',
                            '<a href="{{ url('svn_admin.svn_path.edit') }}?id=' + row.id + '&is_copy=1" class="btn btn-default btn-xs openDialog">{{ _('复制') }}</a> ',
                        ].join('');
                    },
                },
            ]
        }

        var $delete = $('#delete-btn')

        // 刷新表格
        function refreshTable() {
            $table.bootstrapTable('refresh', {})
        }

        $('.filter-btn').click(function (event) {
            event.preventDefault();
            refreshTable()
            return false
        })

        $('#expandAll-btn').click(function () {
            $table.treegrid('expandAll');
        })
        $('#collapseAll-btn').click(function () {
            $table.treegrid('collapseAll');
        })

        $(function () {
            $table.bootstrapTable(bootstrapTableOption)
            $table.on('check.bs.table uncheck.bs.table check-all.bs.table uncheck-all.bs.table', function () {
                $delete.prop('disabled', !$table.bootstrapTable('getSelections').length)
            })

            $delete.click(function () {
                if (!confirmRandom('确认删除吗?')) {
                    return false
                }
                var ids = $.map($table.bootstrapTable('getSelections'), function (row) {
                    return row.id
                })
                $.post("{{ url('svn_admin.svn_path.delete') }}", {id: ids}, function (data) {
                    if (data.code == 0) {
                        $table.bootstrapTable('remove', {
                            field: 'id',
                            values: ids
                        })
                        $delete.prop('disabled', true)
                        art.dialog(data.msg).time(1)
                    } else {
                        art.dialog.alert(data.msg)
                    }
                }, 'json')
            })
        })

    </script>
{% endblock %}