Implementasi filter operator Exists, NotExists, Match dan NotMatch pada javascript

Perlu diketahui tips ini hanya berlaku untuk template web v3 dan sesudahnya. Sebelum memulai implementasi perlu dilakukan pengecekan pada file WebUI/Infrastructure/QueryRequestParameter.cs jika belum menggunakan versi terbaru dari solution template web.

Code yang belum support:

//....
//....
@operator = request[$"filter[filters][{i}][filters][{j}][operator]"];

if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][filters][{j}][value]"]))
{
	value = request[$"filter[filters][{i}][filters][{j}][value]"];
}

if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][filters][{j}][value][]"]))
{
	string[] split = request[$"filter[filters][{i}][filters][{j}][value][]"].Split(',');
	object[] objects = new object[split.Length];

	for (int k = 0; k < split.Length; k++)
	{
		objects[k] = split[k];
	}

	value = objects;
}
//....
//....

//....
//....
//first level filter
@operator = request[$"filter[filters][{i}][operator]"];

if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][value]"]))
{
	value = request[$"filter[filters][{i}][value]"];
}

if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][value][]"]))
{
	string[] split = request[$"filter[filters][{i}][value][]"].Split(',');
	object[] objects = new object[split.Length];

	for (int k = 0; k < split.Length; k++)
	{
		objects[k] = split[k];
	}

	value = objects;
}
//....
//....

Code yang sudah support:

//....
//....
@operator = request[$"filter[filters][{i}][filters][{j}][operator]"];

if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][filters][{j}][value]"]))
{
	value = request[$"filter[filters][{i}][filters][{j}][value]"];
}

if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][filters][{j}][value][]"]))
{
	string[] split = request[$"filter[filters][{i}][filters][{j}][value][]"].Split(',');
	object[] objects = new object[split.Length];

	for (int k = 0; k < split.Length; k++)
	{
		objects[k] = split[k];
	}

	value = objects;
}

//tambahkan code di bawah ini
if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][filters][{j}][value][field]"]))
{
	value = new FilterQuery(
		request[$"filter[filters][{i}][filters][{j}][value][field]"],
		FilterQuery.ParseOperator(request[$"filter[filters][{i}][filters][{j}][value][operator]"]),
		request[$"filter[filters][{i}][filters][{j}][value][value]"]
	);
}
//....
//....

//....
//....
//first level filter
@operator = request[$"filter[filters][{i}][operator]"];

if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][value]"]))
{
	value = request[$"filter[filters][{i}][value]"];
}

if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][value][]"]))
{
	string[] split = request[$"filter[filters][{i}][value][]"].Split(',');
	object[] objects = new object[split.Length];

	for (int k = 0; k < split.Length; k++)
	{
		objects[k] = split[k];
	}

	value = objects;
}
//tambahkan code di bawah ini
if (!string.IsNullOrEmpty(request[$"filter[filters][{i}][value][field]"]))
{
	value = new FilterQuery(
		request[$"filter[filters][{i}][value][field]"],
		FilterQuery.ParseOperator(request[$"filter[filters][{i}][value][operator]"]),
		request[$"filter[filters][{i}][value][value]"]
	);
}
//....
//....

Berikut contoh code implementasi pada javascript:

var dataSource = new kendo.data.DataSource(options);
var filter = {
	field: "@nameof(Checksheet.MaintPackages)",
	operator: "@FilterOperator.Exists.ToDescription()",
	value: {
		field: "@($"{nameof(TaskList)}.{nameof(Discipline)}.{nameof(Plant)}.{nameof(Plant.CompanyId)}")",
		operator: "@FilterOperator.Equals.ToDescription()",
		value: parseInt("@(User?.CompanyId)")
	}
};

datasource.query({
	"filter": filter
});

//atau
datasource.filter(filter);

Topaz Moderato has written 14 articles

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>