[[TOC]] = Pakistan Developers = If you have skills in Python, !JavaScript (jQuery, Ext &/or !OpenLayers) or CSS then you're most welcome to help with code. == Getting Started == * InstallationGuidelines * DeveloperGuidelines * [http://www.slideshare.net/AidIQ/sahana-introduction-to-the-code-v2 Tutorial Presentation] Join the [MailingList Mailing List] & [wiki:Chat Chat] channel to join the community - we'll gladly help you along the way:) Please feel free to fix any of these: * [http://eden.sahanafoundation.org/report/18 Easy Tickets] * [http://eden.sahanafoundation.org/report/16 Open Tickets for Pakistan] == Feature Requests == === Homepage === '''* Main ideas / purpose''' * The homepage should be a portal for * People to understand what's going on for Sahana Eden responses to Pakistan flood w/o login * How people can help Pakistan via Sahana Eden * What Sahana Eden is trying to communicate with NPO/relief orgs/publics * Connection with forum of Sahana-eden, Sahana-pakistan-2010, Pakistan wiki '''* Draft design ''' [http://eden.sahanafoundation.org/attachment/wiki/PakistanDevelopers/Homepage%20for%20Pakistan-Sahana.doc Draft Homepage for Pakistan Sahana Eden] * Input welcome http://groups.google.com.tw/group/sahana-eden/browse_thread/thread/bee1749436c18d97 === Localisation === * We need the [PakistanTranslation strings translating to Urdu] * Need to add the text from the custom views on the live site * We need to amend places with blocks of text broken up (e.g. to remove HTML markup) to include an 'if rtl'/'else' on the order * We need to specify the 'Submit' buttons label explicitly to pass it into T() * We need to Localise {{{static/img/help_on.gif}}} & {{{help_off.gif}}} * ~~We need to set a global variable for RTL based on language choice: {{{response.s3.rtl}}}~~ * ~~easiest is to add a simple lookup table for RTL languages in {{{models/00_settings.py}}} (if not in table then assume LTR)~~ This variable should be read to alter: * ~~The text should all be right-justified (currently body has direction: ltr; in sahana.css We can change this globally with a theme but we need it dynamic per language)~~ * ~~Form Labels should be put to the right of the INPUT boxes (& comments to the left): alternate RTL s3_formstyle in {{{models/00_settings.py}}}~~ (No need - all handled automatically :) ) * ~~Should first complete #622 & then handle the variant & align the label~~ * ~~colon should be to the left of the label: ({{{static/scripts/s3/labels.js}}}) should read a global javascript variable set in {{{views/sahana_scripts_min.html}}} & {{{sahana_scripts_debug.html}}}~~ === Requests Management === * #495: Request Priority level .represent doesn't work nicely in a Popup (done) * [BluePrint/Requests#NotesfromPakistan Usability suggestions] * Add an Organisation default pre-fill routine (like staff in RAT) * Add hospital_id to the rms_req table & deprecate the mini-RMS inside HMS * Add a link to create a Req from a Hospital (just like we have from a Shelter) === Inventory === See: BluePrint/Inventory === Map === * ~~Map requires a refresh to get icons to appear at proper size (Firefox/IE. Chrome/Safari stay small)~~: #493 (done) * ~~This makes the highlightControl popups much more painful~~ * Provide a Legend for Feature Layers in full-screen mode: #499 * Make the Legend in the Non-fullscreen mode dynamic * Fresh water source !PoIs * Water !FeatureClass is there in the Programme !FeatureGroup, so can be added already although a nicer UI would be great * Could use the Landmark model as a basis: http://pakistan.sahanafoundation.org/eden/gis/landmark * Could also have a custom map query which displays a Water layer for all Shelters which provide Water Services ==== [wiki:UserGuidelines/GIS/Data Data] ==== * [wiki:UserGuidelines/GIS/Data#ImportData Import Locations] * L0 (Country): Done (using [http://pakgis.blogspot.com/2009/07/vector-datasets_22.html PakGIS data]) * L1 (Province/Territory): Done (using [http://pakgis.blogspot.com/2009/03/national-provincial-boundaries-of.html PakGIS data]) * L2 (District): Available (using [http://ags.pdc.org/rest/services/Pakistan/PAKISTAN_FLOOD/MapServer/30 PDC data]) * L3 (Tehsil/City District): Available (using [http://ags.pdc.org/rest/services/Pakistan/PAKISTAN_FLOOD/MapServer/29 PDC data]) * L4 (Union Council): ''tbc'': Use [http://en.wikipedia.org/wiki/Union_councils_of_Pakistan Wikipedia] (etc) for Hierarchy/Points. Place in hierarchy using intersection calculations (see import_geonames() in modules/s3gis.py) * L5 (Village): ''tbc'': Use [wiki:UserGuidelinesGISData#Geonames Geonames] for Points (which is sufficient). * L1-L3 Polygons: http://pakgis.blogspot.com/2009/07/vector-datasets_22.html * L3 requires a manual request, which we've done & been granted access * L1-L3 Polygons: http://ags.pdc.org/rest/services/Pakistan/PAKISTAN_FLOOD/MapServer/30 * L0-L2 polygons (L2 possibly out of date): http://www.gadm.org/data/shp/PAK_adm.zip * L1 & a few L2s: http://downloads.cloudmade.com/asia/pakistan * L1 Polygons: http://finder.geocommons.com/overlays/61368 * ~~Lock down L0-L2 Locations~~ * De-duplication of existing locations: #482 (code done: still needs someone to go through & make use of) * Import !GeoData into !GeoServer for more advanced GIS: #497 * !GeoServer/PostGIS now installed & serving the PDC data in 900913. Any additional data sets can easily be added. * ~~Style the L3 data: Transparency, Labels~~ * Add a Legend (esp for Flood Extent) * Add WFS support to Sahana (not too hard to add layers manually - copy basics from WMS) * Look for Overlays we could add to Map: * http://ags.pdc.org/rest/services/Pakistan/PAKISTAN_FLOOD/MapServer * Example: http://www.esri.com/services/disaster-response/pakistan-flood-2010/index.html * http://agsprod.pdc.org/arcgis/Pakistan/PAKISTAN_FLOOD/MapServer/WMSServer?request=GetCapabilities&service=WMS * Not accessible to us (either in WMS Browser or manually) since it's in 4326/54004 & we consume 900913 * Have downloaded data via WFS & now serving by our own !GeoServer * Alternate options were: * Install [wiki:GIS/InstallationGuidelines/Linux#ProxyCache MapProxy] to reproject * Get a set of OSM tiles in 4326! * http://agsprod.pdc.org/arcgis/Pakistan/PAKISTAN_FLOOD/MapServer/WFSServer?request=GetCapabilities&service=WFS * http://blog.fortiusone.com/2010/08/18/1435/ * Good to be able to support the Photos (currently shows 'undefined' for all attributes): http://finder.geocommons.com/overlays/61378 * http://www.logcluster.org/ops/pak09a * http://www.un-spider.org/pakistan-floods * http://groups.google.com/group/PakReport-volunteers/web/mapping-links ==== Locations Selector ==== ===== Map-based Selector ===== * [wiki:BluePrintGISSelectLocationFromMap Add Location by placing cursor on Map]: #487 (done basics) * Update screen Marker should be in the same layer & replaced by the create feature tool * use Drag tool not Draw tool? * Set Map's Draw tool to depressed dynamically in Update forms if no Lat/Lon yet specified * Create Map should also read whether a Lat/Lon has been entered into the Fields & use that to show the initial Marker (=> Dynamic Map!) * Want to zoom to the relevant area of the map based on the selected locations hierarchy (needs polygon data) * When selecting Lat Lon from the map, change the mouse cursor to crosshair * This is partially-working: clicking the button on enables the crosshair, clicking it off disables, but currently it's not being set on 1st load * See nearby locations (Feature Markers) & be able to select them as an alternative to placing a new Marker (nice message saying 'Do you mean...) * Add the Draw Tool to the main map - when a new marker is placed, provide a popup form to select which type of resource is being added & then open up the full form for that resource in an extra tab with the location Lat/Lon pre-populated (& hierarchy if we have polygons!) ===== Hierarchical Autocomplete for Locations ===== * #502 * If an Lx is selected in Autocomplete then load the appropriate dropdown (& any above it) & put this in there * freeing up the Name field again for a sub-location * When saving a Create form & it fails validation then lose our location_id setting * The Add Location popup should only download the correct value for 'parent' (not entire list) if we're going to set/hide anyway * A user might wish to select an existing location & then amend the hierarchy! * make people do this via the 'Locations' menu? (Give them Help on this?) * Check whether fields are readable/writable (e.g. addr_street may need to be hidden from some modules) * Add robustness by checking L0 isSelectBox() * Add Geocoder support * Add !DrawTool icon in help (like is already there in the Location Update form) * Use subheadings CSS instead of ASCII ---- * Download hierarchy levels to a Store in the background to improve performance? * shn_read/shn_list - replace existing system in read/list? (consistency & ease of maintenance) * ~~Update form: Hierarchy needs populating from old record~~ * ~~Include a Search box underneath the hierarchy which is an Autocomplete filtered to the appropriate level that we've already selected~~ * ~~Format of results should include the hierarchy of missing steps to help resolve duplicate names~~ * ~~Add a visible field for location name beside address (defaults to being populated by the name of the resource, but can be overridden)~~ * ~~The extra 'Save Location' button shouldn't be required (Auto-Save when main form is submitted. Does this make code simpler as only need to update location_id at the end?)~~ * ~~Changing things in higher levels should clear lower levels?~~ * ~~Handle the case where we link to a general Lx Location record & which we now refine to add a Street Address or Lat/Lon~~ * ~~we have a UUID but the 1st update should be either just changing location_id (if using the hierarchy) or creating a new record (if using lat/lon or addr_street)~~ * Don't display Lat/Lon for Admin levels (Lx)? * ~~if shn_has_role(!MapAdmin): Provide an 'Add Location' option next to each level of hierarchy~~ * ~~L1-L2 Levels shouldn't be editable by non-!MapAdmins (& should be auto-selected by !MapAdmins)~~ * Include the functionality in {{{views/gis/location_autocomplete.js}}} inside the definition of the 'location_id' reusable field * Although don't use get_location_id() as this slows down the model, instead make it a class instead of a function so you can manipulate the attributes and instantiate once in a lambda * [wiki:BluePrintGISLocationsHierarchy] * [wiki:BluePrintGISLocationsSearch Location Search] ==== De-duplicator ==== e.g. Karachi * Should show the distance between them * Add Marker to the Map displays (this is a more-generally useful fix. Should we replace that Map with Ext one, though?) * different colour markers on thse same map would be ideal! * Option to Merge records would be nice! ==== Popups ==== * Should add an 'Open' hyperlink to open the resource (in a new tab?) * Locations have a URL which doesn't work (wants to open map in JS div) * Hide blank fields? * Customised Popups for Incidents, Assessments & Requests * Hide fields which aren't so necessary to make the critical ones stand out * It would be good if the map pop-ups showed the resource type as a header at the top - currently it isn't entirely clear what the popup is showing. * Fix Clustering: #498 (done) * ~~Cluster Popups with multiple records should show 'name - type' not just 'name'~~ * Better still: {{{ Location A - - - Location B - - - If there is more than one location listed include: "Zoom in for detail" }}} ==== Printing ==== ''Would like to see A4 District-level maps with names and boundaries of Tehsils that we can insert text and tables onto top of.'' This is about controlling the layout of a printed map rather than using an interactive map. Need to do some thinking of how this should look: * is the 'text' labels? * is the 'tables' popups? Can we have a popup moved to a different part of the screen to control printed layout? We have a basic [wiki:BluePrintCSS#PrintView print.css] which means that the normal browser Print functionality gives a reasonable print. * Should we hint to go into Landscape mode? * http://css-discuss.incutio.com/wiki/Print_Stylesheets#The_.40page_rule_and_forcing_Landscape_orientation * http://www.webmasterworld.com/forum83/1736.htm We want the Legend inside the Ext window - ideally able to hover & be moved to a place where it doesn't obstruct anything key: #499 We could also really use a 'Zoom to Location' feature: #655 * Autocomplete box to search our internal Locations (filter out level='XX', as-usual. See views/gis/location_autocomplete.js for an example) * Upon selection it zooms to the Bounds (if Polygon) or just the Center with zoom+2 (if Point) * This could initially replace the Geonames searchCombo, but later it would be ideal if the search 1st checked our internal features &, if that fails, then search Geonames/Google/Yahoo geocoders For WMS layers which we serve via our own !GeoServer, we can refine the DPI output for these requests: * http://docs.geoserver.org/latest/en/user/services/wms/vendor.html#format-options Previously we have investigated these approaches: * [wiki:BluePrintGISPrinting Print to PDF via Java Applet] * [http://trac.mapfish.org/trac/mapfish/ticket/161 print to Image file by converting PDF to Image] * However this will only be able to see Feature Layers exposed as web services (KML/GeoRSS) & it is hard to get detailed control of the output. * trying to integrate a screen capture tool into the browser, e.g. using Flash or Java, but haven't found anything suitable yet. === Shelter Registry === * On the map, where it shows the shelter, it should show the comments as well, so that one could easily find the requisite facilities. These facilities should be searchable though. * BluePrintShelterRegister - Usability suggestion * Move School Reports to CR (they are Shelters) (-> PTressel) * Replace District & Union Council with location_id * Provide Estimations of Requirements based on associated Inventory & [http://www.sphereproject.org/component/option,com_docman/task,cat_view/gid,17/Itemid,203/lang,english/ Sphere Standards] * Automate dynamic requests into RMS? === Assessments === * Complete [http://www.ecbproject.org/page/48 ECB's Rapid Assessment Tool] - add validations: #643 * Reporting (use custom method handlers & representations): * Summary data for a single RA: /rat/assessment/1/summary.svg * Summary data for an aggregation of RAs by different levels of location hierarchy * Comparative report for different RAs within a level of location hierarchy * Highlighting the Unmet needs === Incident Reporting === * .represent for irs_iimage.image as a thumbnail (like for gis_marker) * should be using doc_image not irs_iimage * #508: [BluePrintIncidentReporting#SimplifiedCategories Provide normal users with a simplified set of options for Category] === Floods === * Add support for info from 2nd report on: http://www.radio.gov.pk/flood.asp * Add Graphical Reporting (like the KML on the Map) === Reports === * Recent Activity on the site (read our own RSS feeds?) * Summary info (similar to the SUMMARY-FAP.pdf & WFP .ppt) * Flood alerts like: http://www.reliefweb.int/rw/fullmaps_sa.nsf/luFullMap/F4CC4F05DE48DA6EC1257783003580AC/$File/Map.jpg.jpg?OpenElement&emid=FL-2010-000141-PAK * jqplot? * Map * KML XSLT (=>Dominic) === Misc === * ~~Make all Tooltips onHover, not onClick?~~ * Would be good to write a custom PDF writer for this format of report so we can consider getting people to enter data into DB directly. * split column headers * (dominic) A nice printable HTML works as good as custom PDF, but can be achieved sooner * [BluePrintImporter PDF Importer?] * Test the XForms controller with component resource to have OCRable forms to collect this info === Rotary Club === Rotary Club are training 750-1000 volunteers to collect data. ==== Structure ==== {{{ district 3271 is South, i.e. Sindh and Balochistan Of which I am a part, and the 3273, which is Punjab and Pakhtoonkha }}} * There is district management, all volunteers, around 20-25 to look after our district * 200 clubs * each with 20+ members working in their specific geographic location ==== Requirements ==== First reponsibility for all of them to arrange donations, buy food stuff, medicines etc and report to the district officials and then ship them to locations - preferably to one of the club in that area if not then to Red Crescent and the NCHD and then some other NGOS. * Assessments * Inventory management: Distributions * buying water purification units and solar lights for the shelters * A little workflow... like if one files requests, they retired too, upon fulfilment * SMS * flood reports and requests for supplies * shelter registration 1. We should be able to register volunteers, and assign them to geographic regions. This would help us query and know the number of people working in each geographic area. 2. Volunteers belonging to a group (like geographic area) could then be sent messages via SMS service. So an interface to let us do that that would be great. 3. When our volunteers go out, they would enter data about the status of inventory at their locations, and items required urgently. They would also be able to update the status of a shelter, in that they may setup a place as a shelter and provides its Lon/Lat, or they may remove a place as shelter for it may have been inundated too. 4. We want to record damages to people/life, and property. Currently, we can record life losses in Incident Reporting, while property losses can be registered in Situation Reports & Assessments. 5. We can also record loss to farm animal and cattle. There could be (a) field(s) to do that. Instead of going for a table of animal and then entering the number of lost animals, we could give an open text field. 6. We want to see the Situations, Assessments, Schools and Flood Reports to be visible on the map as well. Can that be done? 7. We would love to see an option where we could define a warehouse/shelter/school, where we could mention the inventory available there, and their count. This feature is available in Agasti. If provided, our volunteers would be able to trace themselves the items they need and where they are placed. 8. Missing Persons: * When adding a new missing person, we would need to provide his hometown (from where he was lost) and the location of his residence. Like someone could be missing from a camp/shelter in Peshawar, while his residence would be in Swat. * When reporting a missing person, we should be able to provide his photo too. This should be optional. * An option should be there, like a status/flag, to tell if the person has been found. Additional information like “where from” would be an added plus, but not essential. 9. When entering a shelter or inventory, we would like to identify the city/location where it is located. This is the first anchor of reference. Also, we should be allowed to (optionally) provide coordinates, or point the location on the map. That way, it should be visible on the map when someone takes a view of the map with shelter, inventory and incident overviews. This would be very helpful. 10. Since I can see the situation and incidents are different in the system, “Situation” should also be available in the map overlays. ==== Sync ==== Want to be able to collect data on offline laptops & sync to base * This means that the schema for this module is pretty fixed as we can't update remote laptops * Extra data can be incoporated into comments fields for transferring to new optional fields centrally by-hand * Can still develop UI tweaks to ease data entry (just won't be visible to remote laptops): Labels/Help * Can still develop Reporting functionality * Can still develop other modules * Power may be an issue, so best to have printed copies of the Assessment Tool as well * Sync process should be tested thoroughly (even if kept to a very simple Data upload facility) * UserGuidelinesSynchronisation * BluePrintSynchronisation ==== SMS ==== * Outbound to alert teams (working with a local telco to get details) * SMS inbound for them to report incidents (separate to the general public whose reports we can pull from Ushahidi so can use the general shortcode) * UserGuidelinesMsg * BluePrintMessagingModule * !MessageUser role to control access to Outbound SMS * Turn the shn_list_of_nations() in 00_utils.py into a Storage() & add Country Dialling Codes * Deployment setting to control dialling profixes from response.s3.countries == After Action Notes == === Move to deployment_settings control: === * ~~Locations Hierarchy~~ * ~~Languages (For Local Location Names & Language Bar (inc basic bar on/off)~~ * Enable ACLs (e.g. DVI, Editor, ~~!MapAdmin~~) * Security Policy, etc from s3_setting table * RSS Feeds * Enabling Autocompletes (they're unnecessary for small deployments, but critical for big ones) * ~~MGRSMousePointer~~ * highlightControl * Clustering * Need to complete !WebSetup! * Deployment Views need to be able to be more easily customised separately from core * Provide a separate views_deployment folder which has all views checked-in &, where-used, uses that instead * More use of customisable rheaders? === Autocompletes === * Define the autocompletes within the reusable fields like person_id & location_id * part of the rework to make them more reusable through get_location_id() * Although don't use get_location_id() as this slows down the model, instead make it a class instead of a function so you can manipulate the attributes and instantiate once in a lambda === Popups === * Replace colorbox with Ext popups? === Updates === Currently we use the 'comments' textarea to record updates to a record. Possible alternatives: * Threaded Discussions Plugin: http://www.web2py.com/plugins/default/comments * An 'updates' component resource tab * Keeping a full copy of each version of the record (e.g. accessible via tabs) === Mapping === * Feature Classes should be mappings of Resources to Markers (via Symbology) * This makes them available to KML/GeoRSS/GPX feeds (need to rework XSLT for Markers) * gis.get_marker() * s3xrc.py gis_encode() * Feature Layers * Expose to Catalogue: Not urgent for Pak! * Menu * define_map() (controllers/gis.py) * zzz_1st_run.py * Feeds (the section in gis/index should be auto-populated by those we display in the viewer) * Add Filters (e.g. L1 for Provinces) * See if we can convert Mapping API to use a JS file in static which is merged with a bunch of JS vars written out in views * (working towards this slowly anyway within s3gis) * makes it faster to develop since no need to keep restarting server for module changes * makes it easier for OL devs to help out without needing to understand Python * May be hard due to so many different options available to us! * Break it up into snippets again... * Clustering * Cluster across Vector types (needed for changing filters without map-refresh anyway) * Can we just use allLayers for this? * Major rewrite? Do at same time as porting to JS with vars? (along with the refreshing of Vector layers without full server reload) * Refactor to reduce code output * Markers loaded only once/image * array of images to cache/resize at beginning (global with handles) * onFeatureSelect() merged with KML/GeoRSS versions? === Tidy-up Code === * Move s3msg to being instantiated in 00_db.py * move DB calls out of init into a get_config() function * Rename javascript functions to s3_* to keep them tidy in the DOM * S3MultiselectWidgetAddClick * S3MultiselectWidgetDeleteClick * StatusBar * tb_remove * s3_gis_* for GIS ones * ~~convertDD~~ * ~~convertFillback~~ * ~~convertGps~~ * ~~viewMap~~ * ~~viewMapMulti~~ * loadClusterPopup * onFeatureUnselect * onPopupClose * tooltipSelect * tooltipUnselect * zoomToSelectedFeature * Rename global javascript variables to S3.* to keep them tidy in the DOM * non-global should be s3_* * {{{table}}} should always refer to a Table() object, {{{tablename}}} to a string * Use title on 'Add XXX' to provide useful help - complementary to Help text on the Help button * Help button text should include how to use autocompletes. === Bigger Features === * Cache Permission Checks * Make Index pages (& a space inside rheaders of other pages) into Wikis so that Editors can edit online docs more easily * Embed Potlatch & Wikipedia pages so that edits of this kind of data can be done 'upstream' in common sources ---- [wiki:Pakistan]