From d70263e798b2b3c8913c91ba50d54dad43452840 Mon Sep 17 00:00:00 2001 From: Shweelan Samson Date: Mon, 4 Mar 2019 21:06:04 +0300 Subject: [PATCH] Fix bugs in resources download Fix a bug caused when downloading with smart query filter on. Also fix a bug in downloading presets. --- lib/ui/db.ts | 14 +++++++++----- ui/devices-page.ts | 4 ++-- ui/faults-page.ts | 6 +++--- ui/files-page.ts | 6 +++--- ui/presets-page.ts | 6 +++--- ui/provisions-page.ts | 6 +++--- ui/virtual-parameters-page.ts | 6 +++--- 7 files changed, 26 insertions(+), 22 deletions(-) diff --git a/lib/ui/db.ts b/lib/ui/db.ts index bbe2880..d9f245f 100644 --- a/lib/ui/db.ts +++ b/lib/ui/db.ts @@ -101,11 +101,15 @@ export function query( .collection(RESOURCE_COLLECTION[resource] || resource); const cursor = collection.find(q); if (options.projection) { - cursor.project( - resource === "devices" - ? mongodbFunctions.processDeviceProjection(options.projection) - : options.projection - ); + let projection = options.projection; + if (resource === "devices") { + projection = mongodbFunctions.processDeviceProjection( + options.projection + ); + } + + if (resource === "presets") projection.configurations = 1; + cursor.project(projection); } if (resource === "users") cursor.project({ password: 0 }); diff --git a/ui/devices-page.ts b/ui/devices-page.ts index d4315f1..e9b6fac 100644 --- a/ui/devices-page.ts +++ b/ui/devices-page.ts @@ -28,7 +28,7 @@ const getDownloadUrl = memoize((filter, indexParameters) => { const columns = {}; for (const p of indexParameters) columns[p.label] = stringify(p.parameter); return `/api/devices.csv?${m.buildQueryString({ - filter: filter, + filter: stringify(filter), columns: JSON.stringify(columns) })}`; }); @@ -382,7 +382,7 @@ export const component: ClosureComponent = (): Component => { vnode.state["selected"] = selected; const downloadUrl = getDownloadUrl( - vnode.attrs["filter"], + filter, vnode.attrs["indexParameters"] ); diff --git a/ui/faults-page.ts b/ui/faults-page.ts index c221d5b..3f3bb0b 100644 --- a/ui/faults-page.ts +++ b/ui/faults-page.ts @@ -6,7 +6,7 @@ import * as store from "./store"; import * as notifications from "./notifications"; import memoize from "../lib/common/memoize"; import * as smartQuery from "./smart-query"; -import { map, parse } from "../lib/common/expression-parser"; +import { map, parse, stringify } from "../lib/common/expression-parser"; import { loadYaml, yaml } from "./dynamic-loader"; const PAGE_SIZE = config.ui.pageSize || 10; @@ -32,7 +32,7 @@ const getDownloadUrl = memoize(filter => { } return `/api/faults.csv?${m.buildQueryString({ - filter: filter, + filter: stringify(filter), columns: JSON.stringify(cols) })}`; }); @@ -272,7 +272,7 @@ export const component: ClosureComponent = (): Component => { } vnode.state["selected"] = selected; - const downloadUrl = getDownloadUrl(vnode.attrs["filter"]); + const downloadUrl = getDownloadUrl(filter); const attrs = {}; attrs["resource"] = "faults"; diff --git a/ui/files-page.ts b/ui/files-page.ts index e0e910a..8d19025 100644 --- a/ui/files-page.ts +++ b/ui/files-page.ts @@ -8,7 +8,7 @@ import memoize from "../lib/common/memoize"; import putFormComponent from "./put-form-component"; import * as overlay from "./overlay"; import * as smartQuery from "./smart-query"; -import { map, parse } from "../lib/common/expression-parser"; +import { map, parse, stringify } from "../lib/common/expression-parser"; const PAGE_SIZE = config.ui.pageSize || 10; @@ -112,7 +112,7 @@ const getDownloadUrl = memoize(filter => { const cols = {}; for (const attr of attributes) cols[attr.label] = attr.id; return `/api/files.csv?${m.buildQueryString({ - filter: filter, + filter: stringify(filter), columns: JSON.stringify(cols) })}`; }); @@ -375,7 +375,7 @@ export const component: ClosureComponent = (): Component => { } vnode.state["selected"] = selected; - const downloadUrl = getDownloadUrl(vnode.attrs["filter"]); + const downloadUrl = getDownloadUrl(filter); const attrs = {}; attrs["resource"] = "files"; diff --git a/ui/presets-page.ts b/ui/presets-page.ts index 6842050..d075616 100644 --- a/ui/presets-page.ts +++ b/ui/presets-page.ts @@ -8,7 +8,7 @@ import * as notifications from "./notifications"; import putFormComponent from "./put-form-component"; import memoize from "../lib/common/memoize"; import * as smartQuery from "./smart-query"; -import { map, parse } from "../lib/common/expression-parser"; +import { map, parse, stringify } from "../lib/common/expression-parser"; const PAGE_SIZE = config.ui.pageSize || 10; @@ -105,7 +105,7 @@ const getDownloadUrl = memoize(filter => { const cols = {}; for (const attr of attributes) cols[attr.label] = attr.id; return `/api/presets.csv?${m.buildQueryString({ - filter: filter, + filter: stringify(filter), columns: JSON.stringify(cols) })}`; }); @@ -456,7 +456,7 @@ export const component: ClosureComponent = (): Component => { } vnode.state["selected"] = selected; - const downloadUrl = getDownloadUrl(vnode.attrs["filter"]); + const downloadUrl = getDownloadUrl(filter); const attrs = {}; attrs["resource"] = "presets"; diff --git a/ui/provisions-page.ts b/ui/provisions-page.ts index 7ef1eda..b585591 100644 --- a/ui/provisions-page.ts +++ b/ui/provisions-page.ts @@ -8,7 +8,7 @@ import memoize from "../lib/common/memoize"; import putFormComponent from "./put-form-component"; import * as overlay from "./overlay"; import * as smartQuery from "./smart-query"; -import { map, parse } from "../lib/common/expression-parser"; +import { map, parse, stringify } from "../lib/common/expression-parser"; import { loadCodeMirror } from "./dynamic-loader"; const PAGE_SIZE = config.ui.pageSize || 10; @@ -95,7 +95,7 @@ const getDownloadUrl = memoize(filter => { const cols = {}; for (const attr of attributes) cols[attr.label] = attr.id; return `/api/provisions.csv?${m.buildQueryString({ - filter: filter, + filter: stringify(filter), columns: JSON.stringify(cols) })}`; }); @@ -424,7 +424,7 @@ export const component: ClosureComponent = (): Component => { } vnode.state["selected"] = selected; - const downloadUrl = getDownloadUrl(vnode.attrs["filter"]); + const downloadUrl = getDownloadUrl(filter); const attrs = {}; attrs["resource"] = "provisions"; diff --git a/ui/virtual-parameters-page.ts b/ui/virtual-parameters-page.ts index aa694f7..41dd3dd 100644 --- a/ui/virtual-parameters-page.ts +++ b/ui/virtual-parameters-page.ts @@ -8,7 +8,7 @@ import memoize from "../lib/common/memoize"; import putFormComponent from "./put-form-component"; import * as overlay from "./overlay"; import * as smartQuery from "./smart-query"; -import { map, parse } from "../lib/common/expression-parser"; +import { map, parse, stringify } from "../lib/common/expression-parser"; import { loadCodeMirror } from "./dynamic-loader"; const PAGE_SIZE = config.ui.pageSize || 10; @@ -95,7 +95,7 @@ const getDownloadUrl = memoize(filter => { const cols = {}; for (const attr of attributes) cols[attr.label] = attr.id; return `/api/virtualParameters.csv?${m.buildQueryString({ - filter: filter, + filter: stringify(filter), columns: JSON.stringify(cols) })}`; }); @@ -434,7 +434,7 @@ export const component: ClosureComponent = (): Component => { } vnode.state["selected"] = selected; - const downloadUrl = getDownloadUrl(vnode.attrs["filter"]); + const downloadUrl = getDownloadUrl(filter); const attrs = {}; attrs["resource"] = "virtualParameters";