|
@@ -0,0 +1,65 @@
|
|
|
+import { Pipe, PipeTransform } from '@angular/core';
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ * ███████╗██╗██╗ ████████╗███████╗██████╗ ██╗████████╗███████╗███╗ ███╗███████╗██████╗ ██╗██████╗ ███████╗
|
|
|
+ * ██╔════╝██║██║ ╚══██╔══╝██╔════╝██╔══██╗██║╚══██╔══╝██╔════╝████╗ ████║██╔════╝██╔══██╗██║██╔══██╗██╔════╝
|
|
|
+ * █████╗ ██║██║ ██║ █████╗ ██████╔╝██║ ██║ █████╗ ██╔████╔██║███████╗██████╔╝██║██████╔╝█████╗
|
|
|
+ * ██╔══╝ ██║██║ ██║ ██╔══╝ ██╔══██╗██║ ██║ ██╔══╝ ██║╚██╔╝██║╚════██║██╔═══╝ ██║██╔═══╝ ██╔══╝
|
|
|
+ * ██║ ██║███████╗██║ ███████╗██║ ██║██║ ██║ ███████╗██║ ╚═╝ ██║███████║██║ ██║██║ ███████╗
|
|
|
+ * ╚═╝ ╚═╝╚══════╝╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚══════╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚══════╝
|
|
|
+ *
|
|
|
+ * Pipe que se aplica a filtrar en la vista de lista los elementos que cumplen condiciones aplicables a través
|
|
|
+ * de algunos parámetros definidos en un subfiltro
|
|
|
+ *
|
|
|
+ * Obs. Aún no injectado
|
|
|
+ *
|
|
|
+ */
|
|
|
+@Pipe({
|
|
|
+ name: "filterItems"
|
|
|
+})
|
|
|
+export class FilterItemsPipe implements PipeTransform {
|
|
|
+
|
|
|
+ /**
|
|
|
+ *
|
|
|
+ * @param items
|
|
|
+ * @param filters
|
|
|
+ */
|
|
|
+ transform(items: Array<any>, ...filters: Array<[string, string, any]>) {
|
|
|
+ if (filters.length === 0) {
|
|
|
+ return items;
|
|
|
+ }
|
|
|
+
|
|
|
+ return items.filter(item => {
|
|
|
+ let expressions: Array<string> = filters.map(filter => {
|
|
|
+ let operator = "===";
|
|
|
+ let leftOperand = "record." + filter[0];
|
|
|
+ let rightOperand = typeof(filter[2]) === "string" ? "'" + filter[2] + "'" : filter[2];
|
|
|
+
|
|
|
+ if (filter[1] === "!=") {
|
|
|
+ operator = "!==";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (filter[1] === ">") {
|
|
|
+ operator = ">";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (filter[1] === "<") {
|
|
|
+ operator = "<";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (filter[1] === ">=") {
|
|
|
+ operator = "<=";
|
|
|
+ }
|
|
|
+
|
|
|
+ if (filter[1] === "<=") {
|
|
|
+ operator = "<=";
|
|
|
+ }
|
|
|
+
|
|
|
+ return leftOperand + operator + rightOperand;
|
|
|
+ });
|
|
|
+
|
|
|
+ return eval(expressions.join("&&"));
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|