Web Map and Web Map Classic Arcade - esri

I am not sure if this is the correct Community ''folder'' where to post this, but I have a question relating to the wonderful workflow as demonstrated in this video Inspection Workflows Part 2: Web Map Creation & Dynamic Symbology
Two questions:
Is it possible to Access the water utilities Symbology also on the new Map Viewer? I see it neatly in the Classic..
Is it just me or when using the same method of IIF+DateDiff as to define symbology for points that have been inspected recently and those that have to be inspected - it works only in the Map Viewer Classic? Is it because the Layer View is added to the map? I tried a workaround - created layer view by Join Analysis and added it to the Map Viewer Map. Used the same Arcade that is in the demonstration. Worked great for the Map Viewer Classic Map. Ignores the second part of the expression in Map Viewer.
I would be happy if anyone could give a comment if this is how it's supposed to be for now.

Glad we're making progress on the first point! But I think I know the error for the second point, it's a tricky one!
According to your Arcade expression, you have two values, right?
"Inspected more than a year ago"
"Recent inspection"
Even though you put these two values correctly into the arcade expression, the map still doesn't technically know that these two values exist... until inpsection records are submitted that meet each of the provided criteria (inspection within the last year OR inspection not in the last year).
So, if you built the arcade epxression and all of your inspections are within the last year, you can symbolize everything by "Recent inspection" because the map has data that supports this first part fo the expression. Until you add an inspection record that occured "more than a year ago", the map won't register this value in the symbology and it will ignore that second part fo the arcade expression. However, once you add an inspection record that meets the second criteria, you'll still have to go into the symbology and manually turn on the "Inspected more than a year ago" symbology. But it will work since a record meeting this criteria is available for the arcade expression to consume.
I ran through the symbology workflow and when I had no inspection records submitted, I couldn't use either of your two values. I got a generic "Other" value. I added an inspection record with today's date and was able to add the "Recent inspection" value. Then, I added an inspection record and falsified the date to be three years ago; this allowed me to add the "Inspected more than a year ago" symbology color.
Here's my suggestion: when using an arcade expression like this to drive symbology, create "fake" inspections records that will trick the map to thinking that all of your different criteria are met. This way you can apply your: "Inspected more than a year ago" and "Recent inspection" symbologies.
Finally, it makes sense that the symbology from the Map Viewer Classic pulled into the New Map Viewer. Just like the utility symbology, the New Map Viewer will pull on that Map Viewer Classic's symbology.

Related

How can I automatically display specific header images depending on the current month?

Thanks in advance for any help or suggestions :)
I am using the latest version of WP with the Colormag theme. I have 12 different banner images - a specific one that is themed for each month of the year and want to automatically display the correct one depending on the current month.
The Colormag theme lets me upload multiple banner images and allows me to manually select the one I want to use but I can't see any way to automate this selection programmatically.
I have looked through multiple plugins but the only seem to allow different headers on different pages etc., nobody seems to have released one that allows any form of basic selection criteria to be used to determine which image to show.
I assume it can be done with php (maybe css?) but I'm only an amateur, doing unpaid volunteer work for this organisation (an purely funded by donations animal shelter). I have a grasp of the basics - I have done some simplistic css customisation on the site and am using various plugins but but no more :(.

How to Collect dijit/form/combobox Selected Values in Repeat Control

An XPage is used to display the number of points a person has collected, and the number of points remaining (see below).
I have a repeat control which gets a collection of documents meeting a specific criteria. The last column in the control contains 5 digit/form/comboboxes, which are displayed or hidden, according to the number of fields on each document that contain data.
The layout contains gift cards worth a certain amount of points, and the person can select how many of each gift card they want. eg.
Company Available in Values of Points Required Quantity Requested
The Quantity Requested column contains the digit/form/comboboxes. As the person selects values in the checkbox, I want the number of points remaining to be recalculated.
The onChange event of the digit/form/comboboxes calls a function in an Output Script which calls an RPC, which in turn calls an SSJS function. The SSJS function cycles through the documents displayed in the repeat control, gathering the points required information. I then wanted it to also grab the Quantity Requested. I understand from a previous posting that because of the way the digit/form/combox is rendered, I can only get the value using CSJS with dijit.byId and perhaps putting the value in a hidden field and retrieving it from there.
I can't seem to wrap my head around how I will do this when the repeat control will make it possible for there to be many combobox1 and combobox2, etc.
The XPage is not bound to a form, because all the items are just calculated on the fly and then discarded.
What is the best way to do this?
The JSON RPC service can't interact with any changes made in the browser, see https://www.intec.co.uk/json-rpc-service-component-tree-manipulation-openlog/. This could be the cause of your problems.
You may be able to get around it by triggering a partial refresh (POST) before calling the JSON RPC. In theory that might work, because the component tree (server-side map of the XPage) would get updated by the partialRefreshPost and the updates picked up by the JSON RPC. It's possible though that the Restore View picks up a version of the XPage other than the one for the browser, I don't know. I've never investigated that.
It's been a while since I've worked with server java script, I have been doing it the managed bean way with ActionListeners. If you have the data in the UI, then can you avoid server side processing and do it client side?
You can also use the DOM XSP Object like XSP.setSubmittedValue to have a key value pair sent with your post request to the server side, you can only have one... it can be JSON or any other value you set it to from the client side javascript.
I figured out how to do this. If anyone wants the code, let me know and I'll provide it.

Getting asana "now" tasks and "today" tasks under project and user via API

From within Asana, we can see how the tasks are split into "Now", "Next" and "later" in project view as well as "Today", "Upcoming" and "later" in user. I can't seem to find the API required to identify the tasks in each category. Is this functionality available for developers?
(I work at Asana)
In the reference for Tasks at https://asana.com/developers/api-reference/tasks, the docs describe the assignee_status field. This will give you the today/upcoming/later status for a task assigned to a user.
In project view, these statuses don't exist so I assume that by now/next/later you are referring to "priority headings", or arbitrary labels that you are able to create inside any list by ending the name of a task with a colon (:). There is not currently a way to find out which priority heading a task is under via the API.
If knowing the priority heading containing a task is important, you could iterate over the results (which by default show up in the same order they do in the UI), keeping track of which priority heading you saw last. This is inelegant and prone to problems if you filter the task list in some way (and possibly don't get all the priority headings as a result), but it might help you get the job done until a better solution is provided.
If you are querying for a list of tasks, make sure you add the opt_fields=assignee_status parameter and that field will be provided in each of your results.

SharePoint 2010: Advanced filtering on Managed Metadata field

I'm implementing a document management site on SharePoint 2010. Each document that is stored on the site, is tagged with one or more geographical locations indicating what the content of the document is about. I have implemented this using a Managed Metadata field that is bound to a term set in the term store containing all possible locations. The locations are organized hierarchically, so let’s say first by country, then by region, city etc.
I want to be able to quickly locate documents in a document library for a given location. SharePoint 2010 offers 3 out-of-the-box ways to accomplish this: (1) filtering on the column header, (2) using metadata navigation, and (3) using key filters.
So far, so good. Now this is where things are getting tricky. Each location in the term store is identified by a number of different labels. So each location has a default label and an average of 3 or 4 additional labels (synonyms). For example: a location could be referred to as “Amsterdam”, “S-123” and “W-456”.
I want to be able to:
Filter the document library by using any of the labels including the
synonyms
Include all locations that are below the location that he/she
specifies, in short: to recursively set the filter
Going back to the 3 out-of-the-box options:
Filtering on the column header; does NOT support use of synonyms and
does NOT support recursive filtering
Using metadata navigation; does NOT support use of synonyms but does
support recursive filtering
Using key filters; does support use of synonyms but does NOT support
recursive filtering
Can you think of a creative solution that meets my requirements using the out-of-the-box controls? And if not, what options do I have for full customization (custom filter web part, extending out-of-the-box web parts etc.)?
Hope to hear from you!
Regards,
Erik
I think I might have an answer. This works in our System - SharePoint 2010.
In you SharePoint instance, create your View of the list, but don't define any Filters. Save the View.
Open SharePoint Designer 2010 and navigate to the list and view.
In Design view, you then need to select the "WebPartPages:XsltListViewWebPart" (you may need to click one on the column headings to get the grey page elements to appear).
At the top of the screen, select the Options Ribbon tab, a green List View Tools upper-tab appears.
On this ribbon, far left, select Filter.
Define you filters.
It is tricky and not a smooth UI. Note the Group button allowing you to create groups of AND and OR elements. (I'd post an image here of the UI, but I no not have the experience points yet.)
Good Luck.

How to decide whether to split up a VB.Net application and, if so, how to split it up?

I have 2 1/2 years experience of VB.Net, mostly self taught, so please bear with me if I seem rather noobish still and do not know some of the basics. I would recommend you grab a cup of tea before starting on this, as it appears to have got quite long...
I currently have a rather large application (VB.Net website) of over 15000 lines of code at the last count. It does not do retail or anything particularly complex like that - it is literally just a wholesale viewing website with admin frontend, catalogue / catalogue management system and pageview system.
I don't really know much about how .Net applications work in the background - whether they are all loaded on the same thread or if each has its own thread... I just know how to code them, or at least like to think I do... :-)
Basically my application is set up as follows:
There are two different areas - the customer area and the administration frontend.
The main part of the customer frontend is the Catalogue. The MasterPage will load a list of products but that's all, and this is common to all the customer frontend pages.
I tend to work on only one or several parts of the application at a time before uploading the changes. So, for example, I may alter the hierarchy of the Catalogue and change the Catalogue page to match the hierarchy change whilst leaving everything else alone.
The pageview database is getting really quite large and so it is getting rather slow when the application is first requested due to the way it works.
The application timeout is set to 5 minutes - don't know how to change it, I have even tried asking this question on here and seem to remember the solution was quite complex and I was recommended not to change it, but if a customer requests the application 5 minutes after the last page view then it will reload the application from scratch. This means there is a very slow page load whenever it exceeds 5 minutes of inactivity.
I am not sure if this needs consideration to determine how best to split the application up, if at all, but each part of the catalogue system is set up as follows:
A Manager class at the top level, which is used by the admin frontend to add, edit and remove items of the specified type and the customer frontend to retrieve a list of items of the specified type. For example the "RangeManager" will contain a list of product "Ranges" and will be used to interact with these from the customer frontend.
An Item class, for example Range, which contains a list of Attributes. For example Name, Description, Visible, Created, CreatedBy and so on. The form for adding / editing loops through these to display relevant controls for the administrator. For example a Checkbox for BooleanAttribute.
An Attribute class, which can be of type StringAttribute, BooleanAttribute, IntegerAttribute and so on. There are also custom Attributes (not just datatypes) such as RangeAttribute, UserAttribute and so on. These are given a data field which is used to get a piece of data specific to the item it is contained in when it is first requested. Basically the Item is given a DataRow which is stored and accessed by Attributes only when they are first requested.
When one item is requested from a specific manager is requested, the manager will loop through all the items in the database and create a new instance of the item class. For example when a Range is requested from the RangeManager, the RangeManager will loop through all of the DataRows in the Ranges table and create a new instance of Range for each one. As stated above it simply creates a new instance with the DataRow, rather than loading all the data into it there and then. The Attributes themselves fetch the relevant data from the DataRow as and when they're first requested.
It just seems a tad stupid, in my mind, to recompile and upload the entire application every time I fix a minor bug or a spelling mistake for a word which is in the code behind (for example if I set the text of a Label dynamically). A fix / change to the Catalogue page, the way it is now, may mean a customer trying to view the Contact page, which is in no way related to the Catalogue page apart from by having the same MasterPage, cannot do so because the DLL is being uploaded.
Basically my question is, given my current situation, how would people suggest I change the architecture of the application by way of splitting it into multiple applications? I mean would it be just customer / admin, or customer / admin and pageviews, or some other way? Or not at all? Are there any other alternatives which I have not mentioned here? Could web services come in handy here? Like split the catalogue itself into a different application and just have the masterpage for all the other pages use a web service to get the names of the products to list on the left hand side? Am I just way WAY over-complicating things? Judging by the length of this question I probably am, and it wouldn't be the first time... I have tried to keep it short, but I always fail... :-)
Many thanks in advance, and sorry if I have just totally confused you!
Regards,
Richard
15000 LOC is not really all that big.
It sounds like you are not pre-compiling your site for publishing. You may want to read this: http://msdn.microsoft.com/en-us/library/1y1404zt(v=vs.80).aspx
Recompiling and uploading the application is the best way to do it. If all you are changing is your markup, that can be uploaded individually (e.g. changing some html layout in an aspx page).
I don't know what you mean here by application timeout, but if your app domain recycles every 5 minutes, then that doesn't seem right at all. You should look into this.
Also, if you find yourself working on various different parts of the site (i.e. many different changes), but need to deploy only some items in isolation, then you should look into how you are using your source control tools (you are using one, aren't you?). Look into something like GIT and branching/merging.
Start by reading:
Application Architecture Guide