Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
required: function required(options) {
let res = {
isValid: true,
error: false
};
const defaults = {
errorMessage: ValitdateText.required
};
const settings = $.extend(true,{},defaults,options);
const msgOptions = {
attribute: settings.attribute
};
const errorMessage = ValidationUtils.templateMessage(settings.errorMessage,msgOptions);
if (settings.value) {
// TODO check other types
switch (typeof settings.value) {
case 'string':
if (settings.value.length === 0) {
res = {
isValid: false,
error: errorMessage
};
}
break;
case 'object':
if (typeof settings.value.inputVal === 'string' && settings.value.inputVal.length === 0) {
res = {
isValid: false,
arcgisIsServiceName: function arcgisIsServiceName(options) {
let res = {
isValid: true,
error: false
};
const defaults = {};
const settings = $.extend(true,{},defaults,options);
const msgOptions = {
attribute: settings.attribute
};
const errorMessage = ValidationUtils.templateMessage(settings.errorMessage || ValitdateText.portal.nameNotAvailableFS,msgOptions);
const portal = lang.getObject('app.portal',false,AppStore.getState());
const getValidLayerName = function getValidLayerName(value) {
const dfd = new Deferred();
let i = 0;
const checkName = function checkName() {
const append = '_' + i;
const name = i === 0 ? value.slice(0,120) : value.slice(0,120 - append.length) + append;
portal.isNameAvailable({
name
}).then((response) => {
if (response.available) {
dfd.resolve(name);
isValid: true,
error: false
};
const defaults = {};
const settings = $.extend(true,{},defaults,options);
const msgOptions = {
attribute: settings.attribute
};
if (settings.value && settings.value.inputVal && settings.value.dataVal) {
if (settings.value.dataVal === 'no results') {
res.isValid = false,
res.error = ValidationUtils.templateMessage(settings.errorMessage || ValitdateText.noResults,msgOptions);
} else if (!settings.value.dataVal.name || !settings.value.dataVal.geometry) {
res.isValid = false,
res.error = ValidationUtils.templateMessage(settings.errorMessage || ValitdateText.notValid,msgOptions);
}
}
return res;
},
addressToLocation: function addressToLocation(options) {
res.fixValue = response;
dfd.resolve(res);
},() => {
dfd.resolve(res);
});
return dfd;
} else if (settings.value && typeof settings.value !== 'string') {
res.isValid = false;
res.error = ValitdateText.nameNotString;
return res;
} else {
return res;
}
} else {
res.isValid = false;
res.error = ValidationUtils.templateMessage(settings.errorMessage || ValitdateText.portal.unableToCheckName,msgOptions);
return res;
}
}
};
res.isValid = false;
res.error = ValitdateText.portal.unableToCheckName;
dfd.resolve(res);
}
},() => {
res.isValid = false;
res.error = ValitdateText.portal.unableToCheckName;
dfd.resolve(res);
});
return dfd;
} else if (settings.value && typeof settings.value === 'string' && settings.value.length > 0 && (settings.value.match(/[^a-zA-Z0-9_]/gi) || settings.value.match(/^[\d]/gi))) {
const dfd = new Deferred();
const correctFormat = settings.value.match(/^[\d]/gi) ? '_' + settings.value.toCamelCase().replace(/[^a-zA-Z0-9_]/gi,'').slice(0,120) : settings.value.toCamelCase().replace(/[^a-zA-Z0-9_]/gi,'').slice(0,120);
res.isValid = false;
res.error = ValidationUtils.templateMessage(settings.errorMessage || ValitdateText.naming.arcgisServiceNameFormat,msgOptions);
getValidLayerName(correctFormat).then((response) => {
res.fixValue = response;
dfd.resolve(res);
},() => {
dfd.resolve(res);
});
return dfd;
} else if (settings.value && typeof settings.value !== 'string') {
res.isValid = false;
res.error = ValitdateText.nameNotString;
return res;
} else {
return res;
}
} else {
res.isValid = false;
location: function location(options) {
let res = {
isValid: true,
error: false
};
const defaults = {};
const settings = $.extend(true,{},defaults,options);
const msgOptions = {
attribute: settings.attribute
};
if (settings.value && settings.value.inputVal && settings.value.dataVal) {
if (settings.value.dataVal === 'no results') {
res.isValid = false,
res.error = ValidationUtils.templateMessage(settings.errorMessage || ValitdateText.noResults,msgOptions);
} else if (!settings.value.dataVal.name || !settings.value.dataVal.geometry) {
res.isValid = false,
res.error = ValidationUtils.templateMessage(settings.errorMessage || ValitdateText.notValid,msgOptions);
}
}
return res;
},
addressToLocation: function addressToLocation(options) {
https: function https(options) {
let res = {
isValid: true,
error: false
};
const defaults = {
errorMessage: ValitdateText.https
};
const settings = $.extend(true,{},defaults,options);
const msgOptions = {
attribute: settings.attribute
};
const errorMessage = ValidationUtils.templateMessage(settings.errorMessage,msgOptions);
if (settings.value && typeof settings.value === 'string' && settings.value.length > 1 && settings.value.search('https') !== 0 && settings.value.search('//') !== 0) {
res = {
isValid: false,
error: errorMessage
};
}
return res;
},
imageUrl: function imageUrl(options) {
}, (response) => {
const match = response[0];
if (match) {
res.extras = [{
type: 'addressToLocation',
match,
response: response
}];
dfd.resolve(res);
} else {
res.isValid = false,
res.error = ValidationUtils.templateMessage(settings.errorMessage || ValitdateText.noResults,msgOptions);
dfd.resolve(res);
}
});
imageUrl: function imageUrl(options) {
let res = {
isValid: true,
error: false
};
const defaults = {
errorMessage: ValitdateText.imageUrl
};
const settings = $.extend(true,{},defaults,options);
const msgOptions = {
attribute: settings.attribute
};
const errorMessage = ValidationUtils.templateMessage(settings.errorMessage,msgOptions);
if (settings.value && typeof settings.value === 'string' && settings.value.length > 0) {
const dfd = new Deferred();
const image = new Image();
image.onload = () => {
dfd.resolve(res);
};
image.onerror = () => {
res.isValid = false,
res.error = errorMessage;
dfd.resolve(res);
};
image.src = settings.value;
regex: function regex(options) {
let res = {
isValid: true,
error: false
};
const defaults = {
errorMessage: ValitdateText.regex,
regexReplace: ''
};
const settings = $.extend(true,{},defaults,options);
const msgOptions = {
attribute: settings.attribute
};
const errorMessage = ValidationUtils.templateMessage(settings.errorMessage,msgOptions);
const patterns = [].concat(settings.regex);
if (settings.regex && typeof settings.regex === 'object' && settings.value && patterns.length === 1 && settings.value.match(patterns[0])) {
const value = settings.prefix ? settings.prefix(settings.value) : settings.value;
res = {
isValid: false,
error: errorMessage
};
res.fixValue = value.replace(settings.regex, settings.regexReplace);
} else if (settings.regex && typeof settings.regex === 'object' && settings.value && patterns.length > 1) {
const matches = patterns.reduce((prev,current) => {
if (settings.value.match(current)) {
return prev.concat(current);