本文整理汇总了TypeScript中ramda.not函数的典型用法代码示例。如果您正苦于以下问题:TypeScript not函数的具体用法?TypeScript not怎么用?TypeScript not使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了not函数的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的TypeScript代码示例。
示例1: wrapForeignOpt
export const associationDecorator = ({ modelName, fields }: { modelName: string; fields }) => {
const TAG = '[associationDecorator]';
logger.log(TAG, { fields });
// prettier-ignore
const associationFields = R.filter(R.compose(R.not, R.isNil, R.prop('associations')))(fields);
logger.log(TAG, { associationFields }, R.not(R.isEmpty(associationFields)));
if (R.not(R.isEmpty(associationFields))) {
const wrapForeignOpt = R.map(opt => ({
...opt,
association: AppContext.adapters.models.getAssociationConfigs(opt.modelName),
}));
const withAssociations = R.mapObjIndexed(field => ({
...field,
foreignOpts: wrapForeignOpt(field.foreignOpts),
}))(associationFields);
logger.debug(TAG, { withAssociations, wrapForeignOpt });
const wrappedFields = R.mergeDeepRight(fields, withAssociations);
logger.debug(TAG, { wrappedFields });
return { modelName, fields: wrappedFields };
}
return { modelName, fields };
};
开发者ID:danielwii,项目名称:asuna-admin,代码行数:26,代码来源:index.ts
示例2: wrap
wrap(text: string, columns: number): string {
const wrap = s => this.wrap(s, columns);
const splitAtColumns = R.splitAt(columns);
if (R.length(text) <= columns) {
return text;
}
if (R.not(containsSpaces(text))) {
return R.head(splitAtColumns(text)) + NEW_LINE + wrap(R.last(splitAtColumns(text)));
}
if (SPACE === text[columns]) {
return R.head(splitAtColumns(text)) + NEW_LINE + wrap(R.trim(splitAtColumns(text)[1]));
}
return replaceLastSpace(R.head(splitAtColumns(text))) + wrap(R.last(splitAtColumns(text)));
}
开发者ID:paucls,项目名称:katas,代码行数:18,代码来源:wrapper.ts
示例3: catch
export const jsonDecorator = ({
modelName,
fields,
}: {
modelName: string;
fields: (Fields & WithHidden) | PositionsField;
}): { modelName; fields: (Fields & WithHidden) | PositionsField } => {
const TAG = '[jsonDecorator]';
logger.log(TAG, { fields });
const jsonFields = R.filter(R.pathEq(['options', 'json'], 'str'))(fields);
if (R.not(R.isEmpty(jsonFields))) {
logger.debug(TAG, { jsonFields });
const toJson = value => {
if (R.is(String, value) && value.length) {
try {
return JSON.parse(value);
} catch (e) {
logger.warn(TAG, e, { jsonFields });
return null;
}
}
if (R.is(Object, value)) {
return value;
}
return null;
};
const transformValue = R.over(R.lens(R.prop('value'), R.assoc('value')), toJson);
const transformedFields = R.map(transformValue)(jsonFields);
const wrappedFields = R.mergeDeepRight(fields, transformedFields);
logger.log(TAG, 'wrappedFields', { wrappedFields });
return { modelName, fields: wrappedFields };
}
return { modelName, fields };
};
开发者ID:danielwii,项目名称:asuna-admin,代码行数:39,代码来源:index.ts
示例4: castModelName
export const enumDecorator = ({
modelName,
fields,
}: {
modelName: string;
fields: (Fields & WithHidden) | PositionsField | EnumField;
}): { modelName; fields: (Fields & WithHidden) | PositionsField | EnumField } => {
const TAG = '[enumDecorator]';
logger.log(TAG, { fields });
const enumFilterFields = R.filter(R.propEq('type', DynamicFormTypes.EnumFilter))(fields);
if (R.not(R.isEmpty(enumFilterFields))) {
const [, enumFilterField] = R.toPairs(enumFilterFields)[0];
logger.debug(TAG, { enumFilterField });
const enums = _.map(
_.keys(idx(enumFilterField as EnumField, _ => _.options.enumData)),
castModelName,
);
const current = castModelName(R.pathOr('', ['value'])(enumFilterField));
logger.debug(TAG, { enums, current });
// check if positions has value already
// save positions value if no value exists, update models' sequence for else
const positionsFieldPair = R.compose(
R.toPairs,
R.map(field => {
// raw is the original value, if exists, means it's update request
if (field.value && !field.raw) {
const value = R.is(String, field.value) ? JSON.parse(field.value) : field.value;
return { ...field, value, raw: field.value };
}
return { ...field, value: R.path([current, 'value'])(fields), raw: field.value };
}),
R.filter(R.pathEq(['options', 'type'], 'SortPosition')),
)(fields);
const filteredNames = R.without(current)(enums);
const filteredFields = R.omit(filteredNames)(fields);
const wrappedFields = current
? R.mergeDeepRight(filteredFields, {
[current]: {
isFilterField: true,
options: { filterType: R.path(['options', 'filterType'])(enumFilterField) },
value: R.isEmpty(positionsFieldPair)
? R.path([current, 'value'])(filteredFields)
: R.path([0, 1, 'value'])(positionsFieldPair),
},
...R.fromPairs(positionsFieldPair),
})
: filteredFields;
logger.debug(TAG, 'wrappedFields', {
current,
filteredNames,
filteredFields,
wrappedFields,
positionsFieldPair,
});
return { modelName, fields: wrappedFields };
}
return { modelName, fields };
};
开发者ID:danielwii,项目名称:asuna-admin,代码行数:65,代码来源:index.ts
示例5: async
export const asyncLoadAssociationsDecorator = async ({
modelName,
fields,
}: {
modelName: string;
fields: (Fields & WithHidden & WithAssociation) | PositionsField | EnumField;
}): Promise<{
modelName;
fields: (Fields & WithHidden) | PositionsField | EnumField | AssociationField;
}> => {
const TAG = '[asyncLoadAssociationsDecorator]';
logger.log(TAG, { fields });
const relationShips = [DynamicFormTypes.Association, DynamicFormTypes.ManyToMany];
const associations = R.filter(field => R.contains(field.type)(relationShips))(fields);
if (R.not(R.isEmpty(associations))) {
logger.debug(TAG, 'associations is', associations);
// 当已经拉取过数据后不再进行拉取,在这里认为如果已存在的 items 数量和 value 中的不一致,则重新拉取
// TODO 如果按第一次已经拉取过来看,其实不需要再次拉取,相关数据应该从组件中传出
// const filteredAssociations = R.pickBy(field => R.not(R.has('associations', field)))(
const filteredAssociations = R.pickBy(field => {
const loaded = idx(field, _ => _.associations[field.name]) as any;
if (loaded) {
return idx(loaded, _ => _.existItems.length) != idx(field, _ => _.value.length);
}
return true;
})(associations);
logger.log(TAG, { filteredAssociations });
if (R.isEmpty(filteredAssociations)) {
return { modelName, fields };
}
// TODO add onSearch query in options
const wrappedAssociations = await Promise.all(
R.values(filteredAssociations).map(async field => {
const selectable = R.pathOr([], ['options', 'selectable'])(field);
logger.debug(TAG, { field, selectable });
if (selectable) {
const primaryKey = _.first(AppContext.adapters.models.getPrimaryKeys(selectable));
const fieldsOfAssociations = AppContext.adapters.models.getFieldsOfAssociations();
const foreignOpts = [
{
modelName: selectable,
association: fieldsOfAssociations[selectable],
onSearch: _.debounce(async (value, callback) => {
logger.log(TAG, 'onSearch', { value });
AppContext.adapters.models
.loadAssociation(selectable, { keywords: value })
.then(response => {
const items = extractItemsBy(primaryKey)([response]);
callback(items);
})
.catch(reason => {
logger.error(TAG, reason);
});
}, 500),
},
];
logger.debug(TAG, { fieldsOfAssociations, foreignOpts });
try {
const results = await bluebird.props({
itemsResponse: AppContext.adapters.models.loadAssociation(selectable),
existItemsResponse: AppContext.adapters.models.loadAssociationByIds(
selectable,
field.value,
),
});
// 当前方法只处理了单个外键的情况,没有考虑如联合主键的处理
const foreignKeysResponse = {
[selectable]: {
items: _.compact(extractItemsBy(primaryKey)([results.itemsResponse])),
existItems: _.compact(extractItemsBy(primaryKey)([results.existItemsResponse])),
},
};
logger.debug(TAG, { foreignOpts, foreignKeysResponse });
return { ...field, foreignOpts, associations: foreignKeysResponse };
} catch (e) {
logger.error(TAG, e);
}
}
logger.warn(TAG, 'no foreignKeys with association', { field });
return { ...field, type: DynamicFormTypes.Input };
}),
);
const pairedWrappedAssociations = R.zipObj(R.keys(filteredAssociations), wrappedAssociations);
logger.debug(TAG, { pairedWrappedAssociations });
// FIXME 临时解决关联数据从 entities 到 ids 的转换
const transformedAssociations = R.map(association => {
const primaryKey = _.first(AppContext.adapters.models.getPrimaryKeys(association.name));
let value;
if (_.isArrayLike(association.value)) {
//.........这里部分代码省略.........
开发者ID:danielwii,项目名称:asuna-admin,代码行数:101,代码来源:async.ts
注:本文中的ramda.not函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论