Advertisement
Guest User

Untitled

a guest
Dec 13th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import { IHtmlValue, IOverridableValue, MapOf } from '../../shared';
  2. import { IRegionSetting, IUrlSettings } from '../../shared/models';
  3. import { normalizeSummary } from './mappers';
  4. import { TranslationEnum, TextType, ITranslation } from '../../locales/Messages'
  5.  
  6. const isEmpty = (value: MapOf<IHtmlValue>) => {
  7.   return value && !value.get('text');
  8. };
  9.  
  10. const isMaxLength = (value: MapOf<IHtmlValue>, maxLength: number) => {
  11.   return value && (value.get('text') as string).length > maxLength;
  12. };
  13.  
  14. export const MAX_LENGTH_TITLE = 150;
  15.  
  16. const generateTextType = (): ITranslation => {
  17.   return {
  18.   key: TranslationEnum.validation_maxLength_du,
  19.   values: {
  20.       field: {
  21.         key: TranslationEnum.title,
  22.         values: {
  23.           maxLength: MAX_LENGTH_TITLE
  24.         }
  25.       }
  26.     }
  27.   };
  28. }
  29.  
  30. export const TITLE_MAX_LENGTH_ERROR:ITranslation = generateTextType();
  31.  
  32. export const titleValidation = (title: MapOf<IHtmlValue>): TextType => {
  33.   let error:TextType = '';
  34.   if (isEmpty(title)) {
  35.     error = {key: TranslationEnum.validation_required_le, values:{field:TranslationEnum.title}};
  36.   } else if (isMaxLength(title, MAX_LENGTH_TITLE)) {
  37.     error = TITLE_MAX_LENGTH_ERROR;
  38.   }
  39.   return error;
  40. };
  41.  
  42. export const MAX_LENGTH_ALERT = 150;
  43.  
  44. export const alertTextValidation = (
  45.   alertText: MapOf<IOverridableValue<IHtmlValue>>
  46. ): TextType => {
  47.   let error: TextType = '';
  48.   const alertTextValue = alertText.get('value') as MapOf<IHtmlValue>;
  49.   if (alertText.get('isOverriden') && isEmpty(alertTextValue)) {
  50.     error = {key: TranslationEnum.validation_required_l, values:{field: TranslationEnum.alertText}}
  51.   } else if (isMaxLength(alertTextValue, MAX_LENGTH_ALERT)) {
  52.     error = {key: TranslationEnum.validation_maxLength_du, values:{field: TranslationEnum.alertText, maxLength: MAX_LENGTH_ALERT}}
  53.   }
  54.   return error;
  55. };
  56.  
  57. export const MAX_SUMMARY_ALERT_WARNING = 1024;
  58.  
  59. export const summaryWarningValidation = (
  60.   summary: MapOf<IOverridableValue<IHtmlValue>>
  61. ): TextType | undefined => {
  62.   let warning: TextType | undefined;
  63.   const normalizedSummary = normalizeSummary(summary.getIn(['value', 'html']) as string);
  64.  
  65.   if (normalizedSummary.length > MAX_SUMMARY_ALERT_WARNING) {
  66.     warning = {key: TranslationEnum.summary_warning, values:{field: TranslationEnum.summary, maxLength: MAX_SUMMARY_ALERT_WARNING}}
  67.   }
  68.  
  69.   return warning;
  70. };
  71.  
  72. export const MAX_SUMMARY_ALERT = 1000;
  73.  
  74. export const summaryValidation = (
  75.   summary: MapOf<IOverridableValue<IHtmlValue>>
  76. ): TextType => {
  77.   let error: TextType = '';
  78.   const summaryValue = summary.get('value') as MapOf<IHtmlValue>;
  79.  
  80.   if (summary.get('isOverriden') && isEmpty(summaryValue)) {
  81.     error = {key: TranslationEnum.validation_required_l, values: {field: TranslationEnum.summary}}
  82.   } else if (isMaxLength(summaryValue, MAX_SUMMARY_ALERT)) {
  83.     error = {key: TranslationEnum.validation_maxLength_de_l, values: {field: TranslationEnum.validation_maxLength_de_l, maxLength: MAX_SUMMARY_ALERT}};
  84.   }
  85.   return error;
  86. };
  87.  
  88. export const regionalSettingsValidation = (
  89.   settings: MapOf<IOverridableValue<IRegionSetting>>
  90. ): TextType => {
  91.   let error:TextType = '';
  92.   const regionIds = settings.getIn(['value', 'regionIds']);
  93.   const noSelectedRegions = regionIds === undefined || regionIds.size === 0;
  94.   if (
  95.     settings.getIn(['value', 'isOfRegionalInterestOnly']) &&
  96.     noSelectedRegions
  97.   ) {
  98.     error = {key: TranslationEnum.validation_region_required};
  99.   }
  100.   return error;
  101. };
  102.  
  103. export const slugRegex = /^[-a-z0-9]*$/;
  104.  
  105. const isValidSlug = (slugValue: string) =>
  106.   slugValue !== '' && slugRegex.test(slugValue);
  107.  
  108. export const urlSettingsValidation = (
  109.   urlSettings: MapOf<IUrlSettings>
  110. ): TextType => {
  111.   let error: TextType = '';
  112.   const overridden = urlSettings.getIn(['slug', 'isOverriden']);
  113.   if (overridden) {
  114.     const slugValue = urlSettings.getIn(['slug', 'value']);
  115.     if (!slugValue || slugValue === '') {
  116.       error = {key: TranslationEnum.validation_required_le, values: {field: TranslationEnum.slug}}
  117.     } else if (!isValidSlug(slugValue)) {
  118.       error = {key: TranslationEnum.validation_slug_format}
  119.     }
  120.   }
  121.   return error;
  122. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement