@alauda-fe/common
Version:
Alauda frontend team common codes.
47 lines • 4.88 kB
JavaScript
export const DEFAULT_OPERATOR = '=';
/**
* 将basic的conditions转换为advanced形式
* 如:
* [
* {
* condition: 'category1',
* operator: '=',
* values: ['con1', 'con2']
* },
* {
* condition: 'category2',
* operator: '!=',
* values: ['con11']
* },
* {
* condition: '!custom'
* }
* ]
* 将会转化为:
* '[category1 = (con1,con2)],[category2 != (con11)],[!custom]'
*/
export function MultiSearchAdvanced(conditions) {
return conditions
?.map(condition => condition.condition
? condition.operator
? `[${condition.condition} ${condition.operator || ''} (${condition.values?.join(',')})]`
: `[${condition.condition}]`
: '')
?.filter(Boolean)
?.join(',');
}
// 上述函数的反解析
export function MultiSearchBasic(advancedConditions) {
const reg = /\[(?:(?<condition>[^,]+?)\s(?<operator>[\s\S]+?)\s\((?<values>[^\]]*?)\)|(?<customCondition>[^,]+?))\](?:,|$)/g;
const matches = Array.from(advancedConditions?.matchAll(reg) || []);
return matches.map(match => {
const { groups } = match;
const condition = groups.condition || groups.customCondition;
return {
condition,
operator: groups.operator,
values: groups.values?.split(','),
};
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9zcmMvbXVsdGktc2VhcmNoL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFXLEdBQUcsQ0FBQztBQUU1Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvQkc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQUMsVUFBNkI7SUFDL0QsT0FBTyxVQUFVO1FBQ2YsRUFBRSxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FDaEIsU0FBUyxDQUFDLFNBQVM7UUFDakIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRO1lBQ2xCLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxTQUFTLElBQ3JCLFNBQVMsQ0FBQyxRQUFRLElBQUksRUFDeEIsS0FBSyxTQUFTLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSTtZQUN0QyxDQUFDLENBQUMsSUFBSSxTQUFTLENBQUMsU0FBUyxHQUFHO1FBQzlCLENBQUMsQ0FBQyxFQUFFLENBQ1A7UUFDRCxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUM7UUFDakIsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEIsQ0FBQztBQUVELFdBQVc7QUFDWCxNQUFNLFVBQVUsZ0JBQWdCLENBQzlCLGtCQUEwQjtJQUUxQixNQUFNLEdBQUcsR0FDUCxnSEFBZ0gsQ0FBQztJQUVuSCxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNwRSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDekIsTUFBTSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUM7UUFFN0QsT0FBTztZQUNMLFNBQVM7WUFDVCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7WUFDekIsTUFBTSxFQUFFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQztTQUNsQyxDQUFDO0lBQ0osQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VhcmNoQ29uZGl0aW9uIH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX09QRVJBVE9SOiBzdHJpbmcgPSAnPSc7XG5cbi8qKlxuICog5bCGYmFzaWPnmoRjb25kaXRpb25z6L2s5o2i5Li6YWR2YW5jZWTlvaLlvI9cbiAqIOWmgu+8mlxuICogW1xuICogIHtcbiAqICAgIGNvbmRpdGlvbjogJ2NhdGVnb3J5MScsXG4gKiAgICBvcGVyYXRvcjogJz0nLFxuICogICAgdmFsdWVzOiBbJ2NvbjEnLCAnY29uMiddXG4gKiAgfSxcbiAqICB7XG4gKiAgICBjb25kaXRpb246ICdjYXRlZ29yeTInLFxuICogICAgb3BlcmF0b3I6ICchPScsXG4gKiAgICB2YWx1ZXM6IFsnY29uMTEnXVxuICogIH0sXG4gKiAge1xuICogICAgY29uZGl0aW9uOiAnIWN1c3RvbSdcbiAqICB9XG4gKiBdXG4gKiDlsIbkvJrovazljJbkuLrvvJpcbiAqICdbY2F0ZWdvcnkxID0gKGNvbjEsY29uMildLFtjYXRlZ29yeTIgIT0gKGNvbjExKV0sWyFjdXN0b21dJ1xuICovXG5leHBvcnQgZnVuY3Rpb24gTXVsdGlTZWFyY2hBZHZhbmNlZChjb25kaXRpb25zOiBTZWFyY2hDb25kaXRpb25bXSk6IHN0cmluZyB7XG4gIHJldHVybiBjb25kaXRpb25zXG4gICAgPy5tYXAoY29uZGl0aW9uID0+XG4gICAgICBjb25kaXRpb24uY29uZGl0aW9uXG4gICAgICAgID8gY29uZGl0aW9uLm9wZXJhdG9yXG4gICAgICAgICAgPyBgWyR7Y29uZGl0aW9uLmNvbmRpdGlvbn0gJHtcbiAgICAgICAgICAgICAgY29uZGl0aW9uLm9wZXJhdG9yIHx8ICcnXG4gICAgICAgICAgICB9ICgke2NvbmRpdGlvbi52YWx1ZXM/LmpvaW4oJywnKX0pXWBcbiAgICAgICAgICA6IGBbJHtjb25kaXRpb24uY29uZGl0aW9ufV1gXG4gICAgICAgIDogJycsXG4gICAgKVxuICAgID8uZmlsdGVyKEJvb2xlYW4pXG4gICAgPy5qb2luKCcsJyk7XG59XG5cbi8vIOS4iui/sOWHveaVsOeahOWPjeino+aekFxuZXhwb3J0IGZ1bmN0aW9uIE11bHRpU2VhcmNoQmFzaWMoXG4gIGFkdmFuY2VkQ29uZGl0aW9uczogc3RyaW5nLFxuKTogU2VhcmNoQ29uZGl0aW9uW10ge1xuICBjb25zdCByZWcgPVxuICAgIC9cXFsoPzooPzxjb25kaXRpb24+W14sXSs/KVxccyg/PG9wZXJhdG9yPltcXHNcXFNdKz8pXFxzXFwoKD88dmFsdWVzPlteXFxdXSo/KVxcKXwoPzxjdXN0b21Db25kaXRpb24+W14sXSs/KSlcXF0oPzosfCQpL2c7XG5cbiAgY29uc3QgbWF0Y2hlcyA9IEFycmF5LmZyb20oYWR2YW5jZWRDb25kaXRpb25zPy5tYXRjaEFsbChyZWcpIHx8IFtdKTtcbiAgcmV0dXJuIG1hdGNoZXMubWFwKG1hdGNoID0+IHtcbiAgICBjb25zdCB7IGdyb3VwcyB9ID0gbWF0Y2g7XG4gICAgY29uc3QgY29uZGl0aW9uID0gZ3JvdXBzLmNvbmRpdGlvbiB8fCBncm91cHMuY3VzdG9tQ29uZGl0aW9uO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbmRpdGlvbixcbiAgICAgIG9wZXJhdG9yOiBncm91cHMub3BlcmF0b3IsXG4gICAgICB2YWx1ZXM6IGdyb3Vwcy52YWx1ZXM/LnNwbGl0KCcsJyksXG4gICAgfTtcbiAgfSk7XG59XG4iXX0=