@knockout-js/org
Version:
Knockout组织相关组件
102 lines (101 loc) • 3.9 kB
JavaScript
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
import { getDictItems } from "@knockout-js/api";
import { useAppCode } from "@knockout-js/layout/esm/components/provider";
import { useEffect, useState } from "react";
var timeoutFn = undefined, isLoad = false;
var distData = {}, distDataChangeEvent = "distDataChangeEvent", collectRefCodes = [];
/**
* 用来处理缓存字典项列表
* @returns
*/ export var useDistItems = function(dictCode, appCode, dataSource) {
var _ref;
var refCode = "".concat((_ref = appCode !== null && appCode !== void 0 ? appCode : useAppCode()) !== null && _ref !== void 0 ? _ref : "", ":").concat(dictCode);
var _distData_refCode;
var _useState = _sliced_to_array(useState((_distData_refCode = distData[refCode]) !== null && _distData_refCode !== void 0 ? _distData_refCode : []), 2), items = _useState[0], setItems = _useState[1];
/**
* 通过列表设置存储
* @param list
*/ var setDistItems = function(list) {
var refCodes = _to_consumable_array(new Set(list.map(function(item) {
return item.refCode;
})));
refCodes.forEach(function(code) {
if (code) {
distData[code] = list.filter(function(item) {
return item.refCode == code;
});
}
});
document.dispatchEvent(new CustomEvent(distDataChangeEvent));
};
/**
* 刷新列表接口
*/ var reloadDistItems = function() {
var _ref = _async_to_generator(function() {
var result;
return _ts_generator(this, function(_state) {
switch(_state.label){
case 0:
return [
4,
getDictItems(refCode, true)
];
case 1:
result = _state.sent();
if (result.length) {
setDistItems(result);
}
return [
2
];
}
});
});
return function reloadDistItems() {
return _ref.apply(this, arguments);
};
}();
useEffect(function() {
var _dataSource;
if ((_dataSource = dataSource) === null || _dataSource === void 0 ? void 0 : _dataSource.length) {
setDistItems(dataSource);
} else {
if (!collectRefCodes.includes(refCode)) {
collectRefCodes.push(refCode);
isLoad = true;
}
if (isLoad) {
clearTimeout(timeoutFn);
timeoutFn = setTimeout(function() {
getDictItems(collectRefCodes).then(function(result) {
if (result.length) {
setDistItems(result);
}
isLoad = false;
});
}, 100);
}
}
}, [
refCode,
dataSource
]);
useEffect(function() {
var handleChange = function() {
var _distData_refCode;
setItems((_distData_refCode = distData[refCode]) !== null && _distData_refCode !== void 0 ? _distData_refCode : []);
};
document.addEventListener(distDataChangeEvent, handleChange);
return function() {
document.removeEventListener(distDataChangeEvent, handleChange);
};
}, []);
return [
items,
reloadDistItems
];
};
//# sourceMappingURL=index.js.map