> the requirements here may change until the job offer is sent (you must to check the requirements again BEFORE accept the job).
# USER INTERFACE LAYOUT #
The form layout is showed in the image below. The corresponding form in the project attached, is the frmDataMapViewer.cs form (where the solution must be coded).
# USER INTERFACE CONTROLS DESCRIPTION #
> “Control Description“: Must be update with “dscontrolname” input parameter (read only);
> “Map Provider“: The user can choose one of the options below. The default value (form_Load event) is “GoogleMapProvider”;
> “Main Location“: The user can inform a location as Main Location. This location will be use to determine with location must be consider when the Map Provider found more than one results for the datatable location. The result to be consider will be the result that is closer to the Main Location informed by the user; If the Map Provider does not find the Main Location, the font color must change to red (if found remain black); The Main Location must be market on the Map (use the default marker from each Map Provider).
> “Map Control“: Map area where the datatable locations and values will be show; See also “How the Map Must Show Locations and Values” topic; I recommend to use GMap.NET control (see external reference site mentioned); When the Map Provider can find the Main Location, the default Map Position is the Main Location; Otherwise, the default Map position is the Location with the higher value;
– The default scale is 1:10000;
> “Not found“: Must be update with the datatable locations that the Map Provider did not found. The format is: “Location (value)”; When the Map Provider find many results from the same datatable location but can not find the Main Location, the datatable location must be consider as a “not found” location;
> “Scroll Bar“: Must be update with the datatable dates in crescent order. The user can select any date and the Map Control needs to be update to the select date (locations and values for the selected date); The default value is the lower date;
> “Date Label“: Must be update with the date select by the user in the Scroll Bar (or the Scroll Bar default value);
# USER INTERFACE INPUT PARAMETERS #
> dscontrolname: name of the control
> tpdateincols: “True” for “Show Date In Columns” and “False” for “Show Date in Rows”;
> dtdata: datatable with data to use in the form
dtdata format: The first column will have the locations (show date in columns setting on) or the dates (show date in rows setting on); The second column to the last column (the data table can have multiple locations and multiple dates), will have the dates (show dates in columns setting on) or the locations (show dates in rows setting on); More details in the images below;
# USER INTERFACE CONTROLS USABILITY #
> The user can change the date using the scroll bar. When he changes the date, the map must be update with the locations and values for the date selected by the user;
> Every time that the Map is updated, the “Not Found” combo-box must be also update with the locations that the Map Provider could not found;
> If the user select any of the Maps Provider supported all the controls must be update: “Map Control”, “Not Found” combo; Main Location (research if it had changed);
# MAP FEATURES #
> Zoom In/Zoom Out: The user must be able to zoom in/zoom out in the map;
> Drag and Drop: The user can “navigate” on the Map Control do see locations that are out of the map. The default position is the Location with higher value in the center of the Map;
> Tool Tip: When the mouse stays on the circle (see topic below), the tool tip will show the Complete Location according to the datatable and the respective value;
> Other Map Provider Default Features: Keep them if it’s possible.
# HOW THE MAP MUST SHOW LOCATIONS AND VALUES #
A circle must be drawn with the value inside. The circle size depends on the number of digits of the value (see the Circle Size Radius Rule below). The font size and the circle size must be update with the Map Zoom. When Zoom In, the circle size (and the font size of the value inside it) must get zoom in the same proportion of the map; When Zoom Out, the same (get zoom out in the same proportion of the map);
The circle is filled with blue, but must be transparent, so the user can see the map behind the circle;
Circle Size Radius Rule: “r” is equivalent to 0,3 inches in the default scale (1:10000).
r = number of digits * 0,3 * (1 + first digit value/10)
# EXTERNAL REFERENCES #
# CONSIDERATIONS #
> The solution must be code in the project attached to the job description;
> Do not attach the external projects into the project attached to show the Map. You must to copy all references and classes that are needed and integrate them to the solution;
> The solution must work consider the 2 options in the “Structure View” setting (Show date in Rows or Show date in Columns);
> The structure already coded in the frmDataMapViewer.cs can not be change without authorization;
# WORKING AGREEMENT #
1) Depending on the questions received during the freelancer hiring process, the job description and the documents attached may change to improve the requirements description. So you MUST check the job description and the documents attached AGAIN BEFORE accept the job offer.
2) Do not start coding and do not send any solution BEFORE you have received and accepted the job offer. I will not consider any work done BEFORE the job offer is accepted.
3) The requirements for the job include the job description AND the all the documents attached to the job. You MUST consider BOTH of them.
4) You are free to ask anything you need to know to do the job, and also, you can ask me to change the job requirements (job description and documents attached) BEFORE accept the job offer.
5) If you think the price must be different, please send your price offer to do the job. After you accepted the job, I will not pay more than the offer accepted. In case of change of the requirements (or a new requirement), you will need to tell me how much it will cost more BEFORE start doing it. Otherwise you will need to accept what I estimate to pay for the extra work.
6) If the project delivered is not according to the job requirements, the contract may will be canceled (a partial solution will may not be accepted). In this case, will be pay only the value of the first milestone defined.