react-hook-core
Version:
423 lines (422 loc) • 12.1 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true })
var core_1 = require("./core")
var reflect_1 = require("./reflect")
function mergeFilter(obj, b, pageSizes, arrs) {
var a = b
if (!b) {
a = {}
}
var keys = Object.keys(obj)
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
var key = keys_1[_i]
var p = a[key]
var v = obj[key]
if (v && v !== "") {
a[key] = isArray(key, p, arrs) ? v.split(",") : v
}
}
var spage = obj["page"]
if (!isNaN(spage)) {
var page = parseInt(spage, 10)
a.page = page > 1 ? page : undefined
}
var slimit = obj["limit"]
if (!isNaN(slimit)) {
var limit = parseInt(slimit, 10)
if (pageSizes && pageSizes.length > 0) {
if (pageSizes.indexOf(limit) >= 0) {
a.limit = limit
return a
}
} else {
a.limit = limit > 0 ? limit : 12
}
}
return a
}
exports.mergeFilter = mergeFilter
function isArray(key, p, arrs) {
if (p) {
if (Array.isArray(p)) {
return true
}
}
if (arrs) {
if (Array.isArray(arrs)) {
if (arrs.indexOf(key) >= 0) {
return true
}
} else {
var v = arrs[key]
if (v && Array.isArray(v)) {
return true
}
}
}
return false
}
exports.isArray = isArray
function initFilter(m, com) {
if (!isNaN(m.page)) {
var page = parseInt(m.page, 10)
m.page = page
if (page >= 1) {
com.page = page
}
}
if (!isNaN(m.limit)) {
var pageSize = parseInt(m.limit, 10)
m.limit = pageSize
if (pageSize > 0) {
com.limit = pageSize
}
}
if (!m.limit && com.limit) {
m.limit = com.limit
}
if (!isNaN(m.firstLimit)) {
var initPageSize = parseInt(m.firstLimit, 10)
if (initPageSize > 0) {
m.firstLimit = initPageSize
com.initLimit = initPageSize
} else {
com.initLimit = com.limit
}
} else {
com.initLimit = com.limit
}
var st = m.sort
if (st && st.length > 0) {
var ch = st.charAt(0)
if (ch === "+" || ch === "-") {
com.sortField = st.substring(1)
com.sortType = ch
} else {
com.sortField = st
com.sortType = ""
}
}
return m
}
exports.initFilter = initFilter
function getFields(form, arr) {
if (arr && arr.length > 0) {
return arr
}
if (!form) {
return undefined
}
var nodes = form.nextSibling
if (!nodes.querySelector) {
if (!form.nextSibling) {
return []
} else {
nodes = form.nextSibling.nextSibling
}
}
if (!nodes.querySelector) {
return undefined
}
var table = nodes.querySelector("table")
var fields = []
if (table) {
var thead = table.querySelector("thead")
if (thead) {
var ths = thead.querySelectorAll("th")
if (ths) {
var l = ths.length
for (var i = 0; i < l; i++) {
var th = ths[i]
var field = th.getAttribute("data-field")
if (field) {
fields.push(field)
}
}
}
}
}
return fields.length > 0 ? fields : undefined
}
exports.getFields = getFields
function getPageTotal(pageSize, total) {
if (!pageSize || pageSize <= 0) {
return 1
} else {
if (!total) {
total = 0
}
if (total % pageSize === 0) {
return Math.floor(total / pageSize)
}
return Math.floor(total / pageSize + 1)
}
}
exports.getPageTotal = getPageTotal
function formatText() {
var args = []
for (var _i = 0; _i < arguments.length; _i++) {
args[_i] = arguments[_i]
}
var formatted = args[0]
if (!formatted || formatted === "") {
return ""
}
if (args.length > 1 && Array.isArray(args[1])) {
var params = args[1]
for (var i = 0; i < params.length; i++) {
var regexp = new RegExp("\\{" + i + "\\}", "gi")
formatted = formatted.replace(regexp, params[i])
}
} else {
for (var i = 1; i < args.length; i++) {
var regexp = new RegExp("\\{" + (i - 1) + "\\}", "gi")
formatted = formatted.replace(regexp, args[i])
}
}
return formatted
}
exports.formatText = formatText
function buildMessage(resource, results, limit, page, total) {
if (!results || results.length === 0) {
return resource.msg_no_data_found
} else {
if (!page) {
page = 1
}
var fromIndex = (page - 1) * limit + 1
var toIndex = fromIndex + results.length - 1
var pageTotal = getPageTotal(limit, total)
if (pageTotal > 1) {
var msg2 = formatText(resource.msg_search_result_page_sequence, fromIndex, toIndex, total, page, pageTotal)
return msg2
} else {
var msg3 = formatText(resource.msg_search_result_sequence, fromIndex, toIndex)
return msg3
}
}
}
exports.buildMessage = buildMessage
function removeFormatUrl(url) {
var startParams = url.indexOf("?")
return startParams !== -1 ? url.substring(0, startParams) : url
}
function getPrefix(url) {
return url.indexOf("?") >= 0 ? "&" : "?"
}
function addParametersIntoUrl(ft, isFirstLoad, page, fields, limit) {
if (!isFirstLoad) {
if (!fields || fields.length === 0) {
fields = core_1.resources.fields
}
if (!limit || limit.length === 0) {
limit = core_1.resources.limit
}
if (page) {
ft[core_1.resources.page] = page
}
var pageIndex = ft[core_1.resources.page]
if (pageIndex && !isNaN(pageIndex) && pageIndex <= 1) {
delete ft.page
}
var keys = Object.keys(ft)
var currentUrl = window.location.host + window.location.pathname
var url = removeFormatUrl(currentUrl)
for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {
var key = keys_2[_i]
var objValue = ft[key]
if (objValue) {
if (key !== fields) {
if (typeof objValue === "string" || typeof objValue === "number") {
if (key === limit) {
if (objValue !== core_1.resources.defaultLimit) {
url += getPrefix(url) + (key + "=" + objValue)
}
} else {
if (typeof objValue === "string") {
url += getPrefix(url) + (key + "=" + encodeURIComponent(objValue))
} else {
url += getPrefix(url) + (key + "=" + objValue)
}
}
} else if (typeof objValue === "object") {
if (objValue instanceof Date) {
url += getPrefix(url) + (key + "=" + objValue.toISOString())
} else {
if (Array.isArray(objValue)) {
if (objValue.length > 0) {
var strs = []
for (var _a = 0, objValue_1 = objValue; _a < objValue_1.length; _a++) {
var subValue = objValue_1[_a]
if (typeof subValue === "string") {
strs.push(encodeURIComponent(subValue))
} else if (typeof subValue === "number") {
strs.push(subValue.toString())
}
}
url += getPrefix(url) + (key + "=" + strs.join(","))
}
} else {
var keysLvl2 = Object.keys(objValue)
for (var _b = 0, keysLvl2_1 = keysLvl2; _b < keysLvl2_1.length; _b++) {
var key2 = keysLvl2_1[_b]
var objValueLvl2 = objValue[key2]
if (objValueLvl2) {
if (objValueLvl2 instanceof Date) {
url += getPrefix(url) + (key + "." + key2 + "=" + objValueLvl2.toISOString())
} else {
if (typeof objValueLvl2 === "string") {
url += getPrefix(url) + (key + "." + key2 + "=" + encodeURIComponent(objValueLvl2))
} else {
url += getPrefix(url) + (key + "." + key2 + "=" + objValueLvl2)
}
}
}
}
}
}
}
}
}
}
var p = "http://"
var loc = window.location.href
if (loc.length >= 8) {
var ss = loc.substring(0, 8)
if (ss === "https://") {
p = "https://"
}
}
window.history.replaceState({ path: currentUrl }, "", p + url)
}
}
exports.addParametersIntoUrl = addParametersIntoUrl
function buildSort(sort) {
var sortObj = {}
if (sort && sort.length > 0) {
var ch = sort.charAt(0)
if (ch === "+" || ch === "-") {
sortObj.field = sort.substring(1)
sortObj.type = ch
} else {
sortObj.field = sort
sortObj.type = ""
}
}
return sortObj
}
exports.buildSort = buildSort
function setSort(sortable, sort) {
var st = buildSort(sort)
sortable.sortField = st.field
sortable.sortType = st.type
}
exports.setSort = setSort
function buildSortFilter(obj, sortable) {
var filter = reflect_1.clone(obj)
if (sortable.sortField && sortable.sortField.length > 0) {
filter.sort = sortable.sortType === "-" ? "-" + sortable.sortField : sortable.sortField
} else {
delete filter.sort
}
delete filter.fields
return filter
}
exports.buildSortFilter = buildSortFilter
function handleToggle(target, on) {
var off = !on
if (target) {
if (on) {
if (!target.classList.contains("on")) {
target.classList.add("on")
}
} else {
target.classList.remove("on")
}
}
return off
}
exports.handleToggle = handleToggle
function getSortElement(target) {
return target.nodeName === "I" ? target.parentElement : target
}
exports.getSortElement = getSortElement
function handleSort(target, previousTarget, sortField, sortType) {
var type = target.getAttribute("sort-type")
var field = toggleSortStyle(target)
var s = sort(sortField, sortType, field, type == null ? undefined : type)
if (sortField !== field) {
removeSortStatus(previousTarget)
}
return s
}
exports.handleSort = handleSort
function sort(preField, preSortType, field, sortType) {
if (!preField || preField === "") {
var s = {
field: field,
type: "+",
}
return s
} else if (preField !== field) {
var s = {
field: field,
type: !sortType ? "+" : sortType,
}
return s
} else if (preField === field) {
var type = preSortType === "+" ? "-" : "+"
var s = { field: field, type: type }
return s
} else {
return { field: field, type: sortType }
}
}
exports.sort = sort
function removeSortStatus(target) {
if (target && target.children.length > 0) {
target.removeChild(target.children[0])
}
}
exports.removeSortStatus = removeSortStatus
function toggleSortStyle(target) {
var field = target.getAttribute("data-field")
if (!field) {
var p = target.parentNode
if (p) {
field = p.getAttribute("data-field")
}
}
if (!field || field.length === 0) {
return ""
}
if (target.nodeName === "I") {
target = target.parentNode
}
var i = null
if (target.children.length === 0) {
target.innerHTML = target.innerHTML + '<i class="sort-up"></i>'
} else {
i = target.children[0]
if (i.classList.contains("sort-up")) {
i.classList.remove("sort-up")
i.classList.add("sort-down")
} else if (i.classList.contains("sort-down")) {
i.classList.remove("sort-down")
i.classList.add("sort-up")
}
}
return field
}
exports.toggleSortStyle = toggleSortStyle
function getOffset(limit, page, firstLimit) {
var p = page && page > 0 ? page : 1
if (firstLimit && firstLimit > 0) {
var offset = limit * (p - 2) + firstLimit
return offset < 0 ? 0 : offset
} else {
var offset = limit * (p - 1)
return offset < 0 ? 0 : offset
}
}
exports.getOffset = getOffset