JSFiddle - React, Tailwind, and code Playground
by Felipe Alfaro
JavaScript
console.clear();
// framework ------------------------------------------------------------------------------------------------------
var sampleParams = {
'q': 'Sample data',
'loc': 'ID1234567890,1234567',
'another_param': 'another_value'
};
function searchFn(newParams) {
console.log('change url using...', newParams);
sampleParams = newParams;
}
searchFn(sampleParams);
// service ------------------------------------------------------------------------------------------------------
var multipleParamSeparator = ',';
var paramsConfig = {
q: {
name: 'query_string',
parser: String
},
loc: {
name: 'location',
parser: stringToStringsInArray
}
};
function stringToStringsInArray(value) {
return String(value).split(multipleParamSeparator).map(String);
}
function paramIsValid(paramName) {
return Boolean(paramsConfig[paramName]);
}
function valueIsUnique(paramName, value) {
var parsedParam = fnParams(paramName);
}
function fnAdd(paramName, value) {
if (paramIsValid(paramName)) {
var currentValue = sampleParams[paramName].split(multipleParamSeparator);
if (currentValue.indexOf(value) === -1) {
searchFn(Object.assign({}, sampleParams, {
[paramName]: (function () {
return sampleParams[paramName] + multipleParamSeparator + String(value);
})()
}));
}
}
}
function fnParams(paramName) {
if (paramName) {
if (paramIsValid(paramName)) {
return paramsConfig[paramName].parser ? paramsConfig[paramName].parser(sampleParams[paramName]) : sampleParams[paramName];
}
}
else {
var parameters = {};
for (var param in sampleParams) {
if (paramIsValid(param)) {
parameters[param] = paramsConfig[param].parser ? paramsConfig[param].parser(sampleParams[param]) : sampleParams[param];
}
}
return parameters;
}
}
function fnData() {
var parameters = {};
for (var param in sampleParams) {
if (paramIsValid(param)) {
...