What is the best way to Sort Forge/BIM360 Docs files lists? - autodesk-forge

I am currently in the process of implementing pagination, sort and search functionalities in the project files/plans/sheets views of BIM 360 Docs integration.
Since I couldn't find any best practices regarding to these features, I thought I would reach out so that I don't keep stuck reinventing the wheel.
Background:
Most of the implementation uses https://github.com/Autodesk-Forge/forge-api-dotnet-client/ SDK.
Based on what I saw it looks like there is no built-in results sorting in the Forge/BIM 360 APIs. BIM 360 Docs looks as if it sorted results on the client.
One has to cache all the results as structured data on the client in order to provide the sorting functionality. That also does not play well with any pagination approach.
Question:
Is there a way to sort results using the API, so that they come back in a predefined order, also while paginating?

According to our engineering team, the "sort" feature isn't currently supported by Forge Data Management API. Apologizing for the inconvenience caused.
I have logged a request FDM-1813[Support sorting in APIs of BIM360 integration] in our internal system to our engineering team to allocate time to evaluate the possibility. As it required some time to complete this task, please remember this request id for the future reference. You're welcome to track updates or provide additional information by quoting this request id via forge.help#autodesk.com.
However, a workaround is to fetch all data from the API, then sorting on the client side via Javascript.
Cheers,

Related

AUTODESK FORGE BIM360 WEBHOOK ISSUES ROADMAP

We are looking into ways of visualizing Issues and Rfi’s (minimally) as geopositioned items in our GIS (Geographic Information System). We achieved some interesting results, though looking at automating the process, ideally, I would like to have data pushed to me as opposed to have to manually pull it. The obvious solution is to use Webhooks Events. A list of exposed webhooks is available here but there is nothing related to Issues and Rfi’s. I was wondering what is the roadmap for Forge Webhooks.
Is there another way to achieve the same “Push” effect?
Is there a plan to expose Issues and Rfi’s events to Webhooks? (Creation, status, modifications…)
Notification is something we often hear. We have a wish as a future enhancement. But I don't think it's in our radar for near future. (RFI, for example, access API itself is still to come.) We will be announcing new APIs through our newsletter or on our documentation. But feel free to check back say in 3-6 months to see where we are.
For now, we will need to check back periodically.

Is there any Google Drive powered alternative to real time API?

I've just learned that Google Realtime API is now deprecated. It is suggested to migrate to Firestore instead. However, Firestore's model is not built around Google Drive so it will not be possible to manage and share real-time documents via Google Drive.
Is there any alternative migration path that would keep files stored in Google Drive?
For example, real time documents may have a simple API endpoint that would allow to get and save them as pure JSON. This would mean that we can keep using Google Drive to store our data and only use Firestore to handle real-time editing sessions (if this is needed).
I don't think you'll find any off-the-shelf solutions natively supporting Drive as a backing source, but if you can export your data model as JSON, Convergence can probably handle it. (In full transparency, I am a founder)
It is almost certainly the quickest way to get back to feature parity with the Realtime API, and probably beyond, as we have first-class support for UX features you probably want as well, beyond just the data synchronization.
Yes, you can export your Realtime data via a separate REST API detailed here:
Exporting Realtime Data This ability should remain available after the realtime API is turned down on January 15th, 2019, though Google has not stated for how long, AFAIK
(Firestore doesn't seem to offer any Operational-Transform-like conflict resolution, so is not a viable alternative for applications that currently have good reasons to use the realtime API, though that is Google's only suggestion so far.)

Referrer limit per google-maps api key

We are providing websites/CMS solutions for more than 2500 customers. Almost all websites have google-map module. So since google changed its map usage policy, from one day to another all those webs had an error on their map modules. We need to come up with some quick (and dirty) solution. We decided to use multiple api-keys, and devide domains between them - alphabetic. And we registered all those 2500+ domains under these keys - manually. One by one.
The solution worked until last week. Now we somehow reached some kind of limit, as we cannot register any new domains/referrers under one of those api-keys. The actual count of domains/referrer of this given api-key: 1537. The saving process yields an error with tracking code (which is every time I try different).
Is there really some kind of limit? Does anyone experienced the same problems. Does some time-economic solution exists?
Thanks for any help or suggestions. Peace!
There is indeed a limit of (at time of writing) about 1,000 referer restrictions per API key. You can create about 100 keys per project, so you can authenticate 100,000 domains with a single project. To proceed further, you can create multiple projects (note that multiple projects can be combined under the same billing account, so you would still receive a single bill).
As a short term fix, you can temporarily remove all restrictions on the key, so that apps relying on that key are functional again. Then you can take the time to release a new key sharding pattern that follows these guidelines.
I just created a feature request so that the situation can be improved, for this use case ("star" it, to be notified of updates).
Google has recently released an alpha version of API that allows manage API keys programmatically.
The best way to handle thousands of authorized domains is to use an API to programmatically manage your API Keys and their restrictions, and we have recently launched a new service that allows you to do this.
This API is still in Alpha. If you are interested in becoming a Trusted Tester for this service, you can use the following form to sign up, please read the instructions carefully:
https://forms.gle/qx2SMcarWCAsbWVp7
Please note that this API is not part of the Google Maps Platform. After you fill out the form, you will be contacted by the API Keys API team with instructions on how to get started, and how to receive support.
API Keys API is currently free of charge. However, please note that use of Cloud Endpoints may be subject to charges at high traffic volume. You can check the pricing sheet here:
https://cloud.google.com/endpoints/pricing-and-quotas
source: https://issuetracker.google.com/issues/35829646#comment12
Hope this helps!

Database Driven iOS Apps

So this is more of a general question about apps and techniques rather than a specific code question...
When developing an larger app, how would a developer access lots of data from a website. The example I'll use is an app like Yelp. They have both a web-access site and an app, both share the same information. I would imagine that information like that is stored on the website via some sort of MySQL database and the iOS device access's it as needed based on the user's requests.
How might a developer writing an app start something like this? I assume you need to somehow securely tie the MySQL database to iOS and so on. I've seen a lot of techniques on the web, but they all seem very simple and not safe for a large scale app.
Any ideas would be awesome!
The key term you're looking for is "API" (Application Programming Interface).
A Yelp iOS app won't access Yelp's databases directly. There will be a layer (I simplify here somewhat) between that and the iOS app; this layer will provide a series of methods (the API) by which clients can make queries and potentially manipulate remote state.
A common API format is JSON over HTTP, and indeed, this is what the official Yelp API seems to be.
Good starting points would be the documentation for NSURLConnection and NSJSONSerialization, and the Yelp API documentation I link above.

Integrating CRM with Google maps

Just started testing Zoho Crm as a CRM solution for our company. Someone asked for a Google map on the page showing our upcoming engagements.I know Zoho provides an API that allows accessing its data from the outside, but I actually need to integrate the map on the data-entry form.If anyone could provide a pointer to any mashup with Zoho CRM (be it Google MAps, Bing Maps, or any similar web service), I would be extremely grateful.
I know this is an ancient question, but since there's no answers and this is pretty much all that came up on google when searching for Zoho CRM integration with Google Maps I'll take a stab at this anyway. I recently got a similiar request, but in this case they wanted to display the leads on a page outside of Zoho.
I created a Java servlet and JSP that runs on Google App Engine. The servlet will connect to Zoho CRM to retrieve all leads and geocode the addresses they are registered with. The client-side Javascript is then taking care of creating the markers on the map for all the addresses.
It's a bit too much code to paste here (although not that much), but you can check it out at http://code.google.com/p/zohomap/.
I put the demo up at http://zohomap.appspot.com/.
I know this is an old question, but it came up on Google Search. About three years ago, I start a similar Google Maps integration project for SugarCRM. The JJWDesign Google Maps project is up on GitHub.com. The idea came about during a marketing meeting and quickly grew out of control.
Download at:
https://github.com/jjwdesign/JJWDesign-Google-Maps
Here are some of the pitfalls that I've experienced:
Exceeding Limits of Geocoding: The Google Maps API v3 has in place a limit of 2,500 Geocoding requests per day. It is also throttled to 10 per second. So, you'll most likely need to develop something to queue these requests. I used a CRON/Scheduled Task to handle the processing trigger.
PHP Memory Limits: The design of SugarCRM creates rather large objects for each one of it's records. Using 10,000 of these objects will usually exceed the memory allowed for PHP to execute. So, special consideration may be needed in examining the best way to pull data into the map.
Always develop/test with a large data set; 10,000+ records. This way you'll be able to more easily see inefficiencies in your code; especially JavaScript. The IE Browser has been know to cause issues with MarkerClustering.
Get ready for an explosion of interest in advanced search / filtering functionality. Also, expect to develop a large section of Admin configuration. Everyone wants something slightly different.
Cheers,
Jeff