Files
Backend-Api/ServiceHost/wwwroot/AssetsClient/js/services/url-params-builder.js
2025-06-02 22:20:04 +03:30

47 lines
1.4 KiB
JavaScript

class UrlParamsBuilder {
constructor(basePath) {
this.basePath = basePath;
this.params = new URLSearchParams();
this.hasAnyFilter = false;
}
addParam(key, value) {
if (value !== undefined && value !== null && value !== "" && value !== "0") {
this.params.set(key, value);
this.hasAnyFilter = true;
}
return this;
}
// اضافه‌کردن پارامتر از DOM (با val یا data-value-normal)
addParamFromDOM(key, selector, { dataAttr = "data-value-normal", fallbackToVal = true } = {}) {
const $el = $(selector);
let value = $el.attr(dataAttr);
if (!value && fallbackToVal) value = $el.val();
return this.addParam(key, value);
}
buildUrl() {
return this.hasAnyFilter
? `${window.location.origin}${this.basePath}?${this.params.toString()}`
: `${window.location.origin}${this.basePath}`;
}
pushState() {
const url = this.buildUrl();
window.history.pushState({}, '', url);
return url;
}
static readParams(keys = []) {
const urlParams = new URLSearchParams(window.location.search);
const result = {};
keys.forEach(key => {
result[key] = urlParams.get(key) || "";
});
return result;
}
}
window.UrlParamsBuilder = UrlParamsBuilder;