Skip to content

Commit

Permalink
be: fields
Browse files Browse the repository at this point in the history
  • Loading branch information
getrebuild committed Nov 7, 2023
1 parent 2809170 commit 4d88b80
Show file tree
Hide file tree
Showing 3 changed files with 94 additions and 61 deletions.
2 changes: 1 addition & 1 deletion @rbv
Submodule @rbv updated from 1d4fe5 to b78591
69 changes: 9 additions & 60 deletions src/main/resources/web/admin/metadata/fields.html
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,14 @@
</div>
<div class="col-sm-6">
<div class="dataTables_oper">
<button class="btn btn-primary btn-space J_new-field" type="button"><i class="icon zmdi zmdi-plus"></i> [[${bundle.L('添加')}]]</button>
<button class="btn btn-primary btn-space J_new2-field bosskey-show" type="button"><i class="icon zmdi zmdi-plus"></i> [[${bundle.L('批量添加')}]]</button>
<button class="btn btn-primary J_new-field" type="button"><i class="icon zmdi zmdi-plus"></i> [[${bundle.L('添加')}]]</button>
<div class="btn-group bosskey-show">
<button class="btn btn-light w-auto dropdown-toggle ml-2" type="button" data-toggle="dropdown">[[${bundle.L('更多')}]] <i class="icon zmdi zmdi-more-vert"></i></button>
<div class="dropdown-menu dropdown-menu-right">
<a class="dropdown-item J_new2-field">[[${bundle.L('批量添加')}]]</a>
<a class="dropdown-item J_export-fields">[[${bundle.L('导出')}]] (CSV)</a>
</div>
</div>
</div>
</div>
</div>
Expand Down Expand Up @@ -94,63 +100,6 @@
}
</script>
<script th:src="@{/assets/js/metadata/entity-switch.js}" type="text/babel"></script>
<script type="text/babel">
const wpc = window.__PageConfig
$(document).ready(() => {
loadFields()

$('.input-search .btn').on('click', () => renderList())
$('.input-search .form-control').keydown((e) => {
if (e.which === 13) $('.input-search .btn').trigger('click')
})
$('.J_new-field').on('click', () => {
if (wpc.isSuperAdmin) RbModal.create(`/p/admin/metadata/field-new?entity=${wpc.entityName}`, $L('添加字段'))
else RbHighbar.error($L('仅超级管理员可添加字段'))
})
$('.J_new2-field').on('click', () => {
if (wpc.isSuperAdmin) RbModal.create(`/p/admin/metadata/field-new2?entity=${wpc.entityName}`, $L('批量添加字段'), { width: 1064 })
else RbHighbar.error($L('仅超级管理员可添加字段'))
})
})

let fields_data = []
const loadFields = function () {
$.get(`../list-field?entity=${wpc.entityName}&refname=true`, function (res) {
fields_data = res.data || []
renderList()

$('.tablesort').tablesort()
})
}

const renderList = function () {
const $tbody = $('#dataList tbody').empty()
const q = ($val('.input-search .form-control') || '').toLowerCase()

$(fields_data).each(function (idx, item) {
if (q && !(item.fieldName.toLowerCase().contains(q) || item.fieldLabel.toLowerCase().contains(q))) return

const $tr = $(`<tr data-id="${item.fieldId || ''}"></tr>`).appendTo($tbody)
const $name = $(`<td><a href="field/${item.fieldName}" class="column-main">${item.fieldLabel}</a></td>`).appendTo($tr)
if (item.fieldName === wpc.nameField) {
$tr.addClass('primary')
$(`<span class="badge badge-pill badge-secondary font-weight-light ml-1 pb-0">${$L('名称')}</span>`).appendTo($name)
} else if (!item.creatable) {
$tr.addClass('muted')
} else if (!item.nullable) {
$tr.addClass('danger')
}
$(`<td><div class="text-muted">${item.fieldName}</div></td>`).appendTo($tr)
let dt = item.displayType
if (item.displayTypeRef) dt += ` (${item.displayTypeRef[1]})`
$(`<td><div class="text-muted">${dt}</div></td>`).appendTo($tr)
$(`<td><div class="text-none" _title="${$L('无')}">${item.comments || ''}</div></td>`).appendTo($tr)
$(`<td class="actions"><a class="icon J_edit" href="field/${item.fieldName}"><i class="zmdi zmdi-settings"></i></a></td>`).appendTo($tr)
})

$('.dataTables_info').text($L('共 %d 个字段', $tbody.find('tr').length))
$('#dataList').parent().removeClass('rb-loading-active')
}
</script>
<script th:src="@{/assets/js/metadata/fields.js}" type="text/babel"></script>
</body>
</html>
84 changes: 84 additions & 0 deletions src/main/resources/web/assets/js/metadata/fields.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
/*!
Copyright (c) REBUILD <https://getrebuild.com/> and/or its owners. All rights reserved.
rebuild is dual-licensed under commercial and open source licenses (GPLv3).
See LICENSE and COMMERCIAL in the project root for license information.
*/

const wpc = window.__PageConfig

$(document).ready(() => {
loadFields()

$('.input-search .btn').on('click', () => renderList())
$('.input-search .form-control').keydown((e) => {
if (e.which === 13) $('.input-search .btn').trigger('click')
})
$('.J_new-field').on('click', () => {
if (wpc.isSuperAdmin) RbModal.create(`/p/admin/metadata/field-new?entity=${wpc.entityName}`, $L('添加字段'))
else RbHighbar.error($L('仅超级管理员可添加字段'))
})

$('.J_new2-field').on('click', () => {
if (wpc.isSuperAdmin) RbModal.create(`/p/admin/metadata/field-new2?entity=${wpc.entityName}`, $L('批量添加字段'), { width: 1064 })
else RbHighbar.error($L('仅超级管理员可添加字段'))
})

$('.J_export-fields').on('click', exportFields)
})

let fields_data = []
const loadFields = function () {
$.get(`../list-field?entity=${wpc.entityName}&refname=true`, function (res) {
fields_data = res.data || []
renderList()

$('.tablesort').tablesort()
})
}

const renderList = function () {
const $tbody = $('#dataList tbody').empty()
const q = ($val('.input-search .form-control') || '').toLowerCase()

$(fields_data).each(function (idx, item) {
if (q && !(item.fieldName.toLowerCase().contains(q) || item.fieldLabel.toLowerCase().contains(q))) return

const $tr = $(`<tr data-id="${item.fieldId || ''}"></tr>`).appendTo($tbody)
const $name = $(`<td><a href="field/${item.fieldName}" class="column-main">${item.fieldLabel}</a></td>`).appendTo($tr)
if (item.fieldName === wpc.nameField) {
$tr.addClass('primary')
$(`<span class="badge badge-pill badge-secondary font-weight-light ml-1 pb-0">${$L('名称')}</span>`).appendTo($name)
} else if (!item.creatable) {
$tr.addClass('muted')
} else if (!item.nullable) {
$tr.addClass('danger')
}
$(`<td><div class="text-muted">${item.fieldName}</div></td>`).appendTo($tr)
let type = item.displayType
if (item.displayTypeRef) type += ` (${item.displayTypeRef[1]})`
$(`<td><div class="text-muted">${type}</div></td>`).appendTo($tr)
$(`<td><div class="text-none" _title="${$L('无')}">${item.comments || ''}</div></td>`).appendTo($tr)
$(`<td class="actions"><a class="icon J_edit" href="field/${item.fieldName}"><i class="zmdi zmdi-settings"></i></a></td>`).appendTo($tr)
})

$('.dataTables_info').text($L('共 %d 个字段', $tbody.find('tr').length))
$('#dataList').parent().removeClass('rb-loading-active')
}

function exportFields() {
const rows = [[$L('内部标识'), $L('字段名称'), $L('类型'), $L('必填'), $L('备注')].join(', ')]
fields_data.forEach((item) => {
let type = item.displayType
if (item.displayTypeRef) type += ` (${item.displayTypeRef[1]})`
rows.push([item.fieldName, item.fieldLabel, type, item.nullable ? 'N' : 'Y', item.comments ? item.comments.replace(/[,;]/, ' ') : ''].join(', '))
})

const encodedUri = encodeURI('data:text/csv;charset=utf-8,\ufeff' + rows.join('\n'))
const link = document.createElement('a')
link.setAttribute('href', encodedUri)
link.setAttribute('download', `RBFIELDS_${wpc.entityName.toUpperCase()}.csv`)
document.body.appendChild(link)
link.click()
setTimeout(() => document.body.removeChild(link), 1000)
}

0 comments on commit 4d88b80

Please sign in to comment.