React InstantSearch query different indexes with different data source(document) - react-instantsearch

How can I implement searching in different indexes with different data sources using a single search box? I am unable to switch <InstantSearch/>'s indexName(for example on button press to change index) without breaking the <Hits/> component because it is still retaining the previous hits.

Related

Flutter Firestore Composite Index with variable item not realistic?

I just created a StreamBuilder that has this stream:
stream: db
.collection('GearLockerItems')
.where('inPack.$packID', isEqualTo: true)
.orderBy('itemName')
.snapshots(),
When I ran the code, it didn't work at first, and when I checked the debug console. I saw a link I had to click and then it went and build a composite index and it worked!
But.... the composite index if for that specific variable $packID which means everytime I click on a new "pack" in my app to get this list, it wont work until I manually click to create the index....
This doesn't seem intuitive fro an app that lots of user could use, I can't manually index each item. Is there anyway around this or do I need to rething my entire db?
One way to solve this is to flatten the 'inPack.$packID' to be part of the document fields rather than inside an object.
Another is to list all possible options and create indexes for them, takes some time yes but gets the job done. I would not follow this approach as it will be prune to future errors if new packs are created and an index is not created for those. unless if you create a cloud function to automate the indexes creation. But again too many indexes will increase the size and will be counterproductive to "write operations" performance.
Also, take a look at this question as it is relevant to your case.
UPDATE:
Removed the suggestion about doing the composite indexes programmatically as it is not supported. For more details see this and this.

Where is the overview of all work items (across all boards)

When, in Azure Devops, opening the Boards > Backlog page there is no possibility to have an overview of all work items accross all of the teams.
You see "All backlogs", but they are divided into the teams.
I want to see an overview of all work items for all these teams.
Is this possible?
You can just create a simple query:
Then you can format it as a flat list or tree.
But keep in mind that the limit for query results is 20000 items.
I want to see an overview of all work items for all these teams.
You can't do that using any of the regular azure boards (kanban board and sprint board).
The only way (well, the only way known to me) to do that is with Queries (Boards -> Queries). To see work items across projects, remember to check the Query across projects checkbox.
At your disposal you have myriads of fields that you can use to filter your results as well. Use them to fine tune your query result if you want. Last but not least, use Column options to specify which columns to show in your result. Since you want work items across projects, you may want to be able to see which project an item belongs to without opening the item. To do that, include the column Area path from Column options dialog. I use the following columns, and sort by ID descending.
Finally save the query.
Now go to Dashboard, click the Edit button, and add the Query Results widget. Configure that widget to use the query you just created. Note that by default, the column Area Path is not included in the Selected columns list on the right, but you have to include it yourself from the Available columns list on the left. Move columns up/down as you see fit.
Click Done editing when you are done. Through that widget you can edit the work items by clicking on the Title of each work item, which will open the item in a modal. You cannot reorder items (I suppose to set priority) on this widget itself, but hey, setting priority is just a few clicks away, so not a big deal. If you like, you can sort the query result using Priority, and after updating priority you should click Refresh to see the updated result.
Hope that helps!

Growing Tables with aggregations

I'm looking at creating a table that could potentially be loaded with 100s of rows. I was hoping to use the growing option that the tables provide. I have a few questions.
If I have a aggregation which is a total for all the rows in that column, will it be the total of all rows or only of those that have been loaded. Or can this be set with a variable etc.
similar to above the select all feature to tick all the rows, will this select every row even the ones not included, or will it just select the loaded rows. Again is this just a variable that I can set.
This is a first time really using any of the UI5 table elements, and the sap said this which I didn't really understand:
"Show Aggregations
Show aggregations (such as totals) on the table footer (sap.m.Column, aggregation: footer).
Do not show aggregations in “growing” mode. It is not clear, if an aggregation will only aggregate the items loaded into the front end, or all items."
For the growing tables, by default all actions and aggregations will only be processed for the data already loaded. Your citation from SAP means that it is not clear to the end user if the aggregated data refers to the visible data or to all data.
If you want to implement something like "Select all" or "Delete All", it would be better to implement this in the backend. From the guidelines of sap.m.List:
In multiple selection mode, users can (de)select all items using the shortcut CTRL+A. This only affects items that have already been loaded to the front-end server. All other items are not (de)selected before they are loaded (for example, items added via lazy loading with growingScrollToLoad). This conflicts with the guideline that all items the user can reach by scrolling must be (de)selected.
To process all items, listen to the selectionChange event and to its flag selectAll. This indicates whether CTRL+A was triggered. As soon as an action is triggered, process the items accordingly. Depending on the number of items, consider processing them in the back end.

PowerApps datasource to overcome 500 visible or searchable items limit

For PowerApps, what data source, other than SharePoint lists are accessible via Powershell?
There are actually two issues that I am dealing with. The first is dynamic updating and the second is the 500 item limit that SharePoint lists are subject to.
I need to dynamically update my data source, which I am currently doing with PowerShell. My data source is not static and updating records by hand is time-consuming and error prone. The driving force behind my question is that the SharePoint list view threshold is 5,000 records however you are limited to 500 visible and searchable records when using SharePoint lists in the Gallery View and my data source contains greater than 500 but less than 1000 records. If you have any items beyond the 500th record that should match the filter criteria, they will not be found. So SharePoint lists are not optional for me until that limitation is remediated
Reference: https://powerapps.microsoft.com/en-us/tutorials/function-filter-lookup/
To your first question, Powershell can be used for almost anything on the Microsoft stack. You could use SQL server, Dynamics 365, SP, Azure, and in the future there will be an SDK for the Common Data Service. There are a lot of connectors, and Powershell can work with a good majority of them.
Take note that working with these data structures through Powershell is independent from Powerapps. Powerapps just takes the data that the data connector gives it, and if you have something updating the data in the background (Powershell, cron job, etc.), In order to get a dynamic list of items, you can use a Timer control and a Refresh function on your data source to update the list every ~5-20 seconds.
To your second question about SharePoint, there is an article that came out around the time you asked this regarding working with large lists. I wouldn't say it completely solves your question, but this article seems to state using the "Filter" function on basic column types would possibly work for you:
...if you’d like to filter the set of items that you are showing in the gallery control, you will make use of a “Filter” expression, rather than the “Search” expression, which is the default that existing apps used. With our changes, SharePoint connector now supports “equals” type of queries on columns that support filtering (Single line of text, choice, numbers, dates and people), so make sure that the columns and the expressions you use are supported and watch for the same warning to avoid reverting back to the top 500 items.
It also notes that if you want to pull from a list larger than the 5k threshold, you would need to use indexes, I have not fully tested this yet but it seems that this could potentially solve your problem.

Eclipse Virtual TableViewer filtering and Sorting? [duplicate]

Our application is an RCP appliction and needs to display table of several thousands items. For this reason, we're using SWT.VIRTUAL in our TableViewer. That works pretty well except for selection.
We're having following issue :
Our TableViewer support sorting and filtering. When we use a virtual tableviewer, changing the selection does not preserve the current selected item but the row currently selected.This leads to another item being selected.
e.g: If Item 'A' present at the 5th row is selected by user and sorting is performed, then after sorting the Item at the 5th row gets selected instead of the Item 'A'.
Using a non virtual TableViewer, everything works fine.
We tried to go into debug and found out that the cache from the AbstractTableViewer.VirtualManager class seems to be up to date with the model.
Forcing the cache to be used in the AbstractTableViewer.virtualSetSelectionToWidget() can be a possible approach.
We have tried to implement a solution suggested in https://bugs.eclipse.org/bugs/show_bug.cgi?id=338696. However it didn't work.
Please suggest some pointers or alternative work around.
Thanks for the answers.
As a workaround for working with huge tables I would suggest you to take a look at the Nattable project http://www.eclipse.org/nattable/. It supports everything you need (sorting, filtering, tree structured elements, lazy loading etc.). We successfully use it in our project, where it is necessary to display hundreds of thousands elements as a tree with around 160 columns. It also has some pretty cool styling features, which can make your table more user-friendly and interactive. Hope this helps