1<!DOCTYPE html> 2<html class="no-js" lang="en"> 3<head> 4 <meta charset="utf-8"> 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 6 <!-- Author: Alberto González Palomo <http://sentido-labs.com> 7 ©2015 Alberto González Palomo <http://sentido-labs.com> 8 The author grants Stakeholder Democracy Network Ltd. <http://stakeholderdemocracy.org> 9 a sublicensable, assignable, royalty free, including the rights 10 to create and distribute derivative works, non-exclusive license 11 to this software. --> 12 <link rel="author" href="http://sentido-labs.com"/> 13 <title>Dashboard - Oil Spill Monitor</title> 14 <meta name="description" content="GIS web application for monitoring oil spills"/> 15 <meta name="keywords" content="GIS Nigeria oil spills gas flares pollution environment"/> 16 <meta name="geo.country" content="ng"/> 17 <meta name="apple-mobile-web-app-capable" content="yes"/> 18 <meta name="viewport" content="width=device-width, initial-scale=1.0"/> 19 20 <!-- Place favicon.ico and apple-touch-icon.png in the root directory --> 21 22 <link rel="stylesheet" href="css/vendor/combined.0.9.3.gz.css"> 23 <link rel="stylesheet" href="css/index.0.9.3.gz.css"> 24 <!-- script src="js/vendor/modernizr-2.6.2.min.js"></script --> 25</head> 26<body class="flexbox flexbox-vertical"> 27 <!--[if IE]> <div class="alert alert-error">This application needs features <b>not available in this browser</b>. It works in current versions of <b>Chrome</b>, <b>Firefox</b>, <b>Opera</b>, <b>Safari</b> and also in <b>Internet Explorer</b> version <b>10</b> and newer.</div> <![endif]--> 28<header> 29 <h1><a href="https://oilspillmonitor.ng/" target="oil-spill-monitor">Dashboard - Oil Spill Monitor</a></h1> 30 <label><input type="checkbox" checked onchange="$('object[type=filter]').style.display=this.checked?'':'none'" style="vertical-align:baseline"/> Show filter toolbar</label> 31 <object type="filter">Showing spills [By company] | [In State] | [Recorded by NOSDRA Zonal Office] for the period [FromDate]-[ToDate] where estimated impact [empty | >=1bbls | >5bbls | >10bbls | >100bbls]</object> 32 <div id="progress" class="progress" style="display:hidden"> 33 <div class="bar" style="width:0;"></div> 34 </div> 35</header> 36<div class="dashboard"> 37 38 <div>Average impacted area per bbl: <span id="quick-result">-</span></div> 39 <!-- 40 //Other variables needed 41 TotalNumberOfUniqueSpills = number of rows 42 --> 43 <div> 44 <h2>Total Number of spills recorded: 45 <object type="summary" function="count"> 46 [Num: Total number of spills recorded] 47 </object> 48 </h2> 49 <div> 50 <object type="map" 51 select="estimatedquantity" size-factor="0.1" min-size="5" 52 color="rgba(0, 0, 0, 0.5)" 53 width="1000" height="800" 54 class="foldable"> 55 [Map: all spills] 56 </object> 57 </div> 58 </div> 59 60 61 <!-- 62 //Other variables needed 63 ARRAY of spills where cleanupdate and cleanupcompletedate is empty 64 --> 65 <div> 66 <h2>Number of spills where no cleanup is recorded: 67 <object type="summary" view="no-cleanup" function="count"> 68 [Num: no cleanup recorded] 69 </object> 70 </h2> 71 <div> 72 <object type="table" view="no-cleanup" 73 select="id, incidentnumber, status, cleanupdate, cleanupcompletedate" 74 class="foldable"> 75 [Table: Post cleanup inspections] 76 </object> 77 </div> 78 </div> 79 80 81 <!-- 82 //Other variables needed 83 ARRAY where postcleanupinspectiondate is not empty 84 --> 85 <div> 86 <h2>Number of post cleanup inspections carried out: 87 <object type="summary" view="post-cleanup-inspections" 88 function="count"> 89 [Num: Number of post cleanup inspections] 90 </object> 91 </h2> 92 <div> 93 <object type="table" view="post-cleanup-inspections" 94 select="id, incidentnumber, status, incidentdate, postcleanupinspectiondate" 95 class="foldable"> 96 [Table: Post cleanup inspections] 97 </object> 98 </div> 99 </div> 100 101 102 103 <!-- 104 //Other variables needed 105 ARRAY where postimpactassesmentdate is not empty 106 --> 107 <div> 108 <h2>Number of post impact assesments carried out: 109 <object type="summary" view="post-impact-assessments" 110 function="count"> 111 [Num: Number of post impact assesments] 112 </object> 113 </h2> 114 <div> 115 <object type="table" view="post-impact-assessments" 116 select="id, incidentnumber, status, incidentdate, postimpactassessmentdate" 117 class="foldable"> 118 [Table: Post impact assessments] 119 </object> 120 </div> 121 </div> 122 123 124 125 126 <!-- 127 //Other variables needed 128 ARRAY where jivdate is empty 129 --> 130 <div> 131 <h2 style="cursor:pointer" 132 onclick="var p=this.parentNode;p.className=p.className?'':'folded'" 133 >Joint Investigative Visits Not Completed: 134 <object type="summary" view="no-jiv" 135 function="percent" decimals="2"> 136 [Num: % of JIV's not carried out] 137 </object>% 138 </h2> 139 <div> 140 <object type="table" view="no-jiv" 141 select="id, incidentnumber, incidentdate, jivdate" 142 class="foldable"> 143 [List: of cases where no JIV was carried out] 144 </object> 145 </div> 146 </div> 147 148 149 150 <!-- div> 151 <p>[Bubble comparrison: NoSpills by NoCleanup by Nopostcleanupinspectiondate b
151y NoPostImpactAssesments by NoJIVs]</p> 152 </div --> 153 154 <!-- 155 //Other variables needed 156 TotalBblsRecordedSpilled = the arrays SUM(estimatedquantity) 157 NumberOfEmptyQuantityRows = no of rows with empty estimatedquantity 158 PercentageOfEmptyQuantityRows = NumberOfEmptyQuantity as a % of TotalNumberOfUniqueSpills 159 EstimatedBblsAverage = AverageBblsSpilled x NumberOfEmptyQuantity 160 Need to specify 'empty' in the case where all returned records have no value in estimatedquantity and make sure estimate of totals based on averages is clearly marked as such 161 --> 162 <div> 163 <h2>Total Barrels Spilled: 164 <object type="summary" 165 function="sum" decimals="2" field="estimatedquantity"> 166 [Num: Total spilled estimated bbls recorded] 167 </object> 168 bbl 169 </h2> 170 <p> 171 Estimated total by interpolating missing data from average: 172 <object type="summary" view="estimated-quantity" 173 field="estimatedquantity" 174 function="estimate-from-average" decimals="2"> 175 [Num: Estimated total of bbls spilled in further x% of unrecorded incidents - based on average size of spills] 176 </object> 177 bbl 178 </p> 179 <p> 180 Rows without estimated quantity data: 181 <object type="summary" view="no-estimated-quantity" 182 function="percent" decimals="2"> 183 [Num: % of rows with no estimatedquantity data] 184 </object>% 185 </p> 186 </div> 187 188 189 190 191 <!-- 192 //Other variables needed 193 TotalAreaOfImpact = the arrays SUM(estimatedspillarea) 194 NumberOfEmptyAreaRows = no of rows with empty estimatedspillarea 195 PercentageOfEmptyAreaRows = NumberOfEmptyArea as a % of TotalNumberOfUniqueSpills 196 EstimatedAreaOfImpact = NumberOfEmptyAreaRows x AverageBblsSpilled x AverageImpactedAreaPerBbl 197 Need to specify 'empty' in the case where all returned records have no value in estimatedspillarea and make sure estimate of totals based on averages is clearly marked as such 198 --> 199 <div> 200 <h2>Total Impacted Area: 201 <object type="summary" 202 function="sum" decimals="2" field="estimatedspillarea"> 203 [Num: Total area of impact recorded] 204 </object> 205 Km² 206 </h2> 207 <p> 208 Estimated total by interpolating missing data from average: 209 <object type="summary" view="estimated-spill-area" 210 field="estimatedspillarea" 211 function="estimate-from-average" decimals="2"> 212 [Num: Estimated total area of impact in further x% of unrecorded incidents - based on average impacted area] 213 </object> 214 Km² 215 </p> 216 <p> 217 Rows without estimated spill area: 218 <object type="summary" view="no-estimated-spill-area" 219 function="percent" decimals="2"> 220 [Num: % of rows with no estimatedspillarea data] 221 </object>% 222 </p> 223 </div> 224 225 226 227 228 <!-- 229 //Other variables needed 230 ARRAY Total estimatedquantity for each spillareahabitat 231 (foreach spillareahabitat get the sum of the esimatedquantity) 232 --> 233 <div> 234 <h2>Type of Impacted Area by volume spilled</h2> 235 <div> 236 <object type="bar chart" 237 group="estimatedquantity/spillareahabitat" 238 function="sum" decimals="2" label="Quantity in bbl" 239 class="foldable"> 240 [Bar: Type of impacted area by estimatedquantity] 241 </object> 242 </div> 243 </div> 244 245 246 247 248 <!-- 249 //Other variables needed 250 ARRAY Total estimatedquantity for each LGA 251 (foreach lga get the sum of the esimatedquantity) 252 (foreach record located within lga boundaries (spacial join may bring different results) get the sum of the esimatedquantity) 253 --> 254 <div> 255 <h2>Geographic Information</h2> 256 <object type="choropleth" 257 group="estimatedquantity/lga" 258 function="sum" decimals="2" label="bbl" 259 width="1000" height="800" 260 class="foldable"> 261 [Choropleth Map: estimatedquantity by LGA] 262 </object> 263 <object type="bar chart" 264 group="estimatedquantity/lga" 265 function="sum" decimals="2" label="Quantity in bbl" 266 height="1300" rotated 267 class="foldable"> 268 [Bar: estimatedquantity by LGA] 269 </object> 270 </div> 271 272 273 274 275 <!-- 276 //Other variables needed 277 ARRAY number of spills WHERE estimatedquantity > 5 278 //might be worth putting the scale, where known, as a search peramiter at the top of the page but possibly better to just give a limited view here or have a separate drilldown for where estimated impact [empty | >=1bbls | >5bbls | >10bbls | >100bbls] 279 --> 280 <!-- div> 281 <h2>Known Larger Spills of Heavy Impact</h2> 282 <div> 283 <object type="map" view="larger-than-5-bbls" 284 lat="5.4" lon="6.14" minZoom="2" zoom="8" maxZoom="18" 285 select="estimatedquantity" size-factor="0.1" min-size="5" 286 color="rgba(255, 0, 0, 0.5)" 287 width="1000" height="800" 288 class="foldable"> 289 [Map: Spills larger than 5 bbls] 290 </object> 291 <object type="table" view="larger-than-5-bbls" 292 select="id, incidentnumber, status, zonaloffice, incidentdate, contaminant, estimatedquantity, sitelocationname, descriptionofimpact" 293 class="foldable"> 294 [Table: Spills larger than 5 bbls - linked to oil spill monitor id] 295 </object> 296 <object type="bar chart" 297 group="estimatedquantity/lga" 298 function="sum" decimals="2" label="Quantity in bbl" 299 height="1300" rotated 300 class="foldable">
301 [Bar: Spills larger than 5 bbls by LGA] 302 </object> 303 <object type="bubble chart" 304 group="estimatedquantity/spillareahabitat" 305 function="sum" decimals="2" label="Quantity in bbl" 306 class="foldable"> 307 [Bubble: NoLgeSpills by NoCleanup by NoPostImpactAssesments] 308 </object> 309 </div> 310 </div --> 311 312 313 314 315 316 <!-- 317 //Other variables needed 318 ARRAY number of spills where WHERE cause = sab/theft by LGA 319 --> 320 <div> 321 <h2>Security problems: 322 <object type="summary" view="security-problems" 323 function="count"> 324 [] 325 </object> 326 </h2> 327 <object type="choropleth" view="security-problems" 328 group="estimatedquantity/lga" 329 function="count" label="incidents" 330 width="1000" height="800" 331 class="foldable"> 332 [Chloropleth Map: cause = sab/theft by LGA] 333 </object> 334 <object type="bar chart" view="security-problems" 335 group="estimatedquantity/lga" 336 function="count" label="Incident count" 337 height="1300" rotated 338 class="foldable"> 339 [Bar: cause = sab/theft by LGA] 340 </object> 341 </div> 342 343 344 345 346 <!-- 347 //Other variables needed 348 ARRAY number of spills where WHERE cause = corrosion 349 --> 350 <div> 351 <h2>Corrosion problems: 352 <object type="summary" view="corrosion-problems" 353 function="count"> 354 [] 355 </object> 356 </h2> 357 <div> 358 <object type="map" variant="heatmap" view="corrosion-problems" 359 lat="5.4" lon="6.14" minZoom="2" zoom="8" maxZoom="18" 360 select="" size-factor="0.1" min-size="5" 361 color="rgba(255, 0, 0, 0.5)" 362 width="1000" height="800" 363 class="foldable"> 364 [Heat Map: cause = corrosion] 365 </object> 366 <object type="map" view="corrosion-problems" 367 lat="5.4" lon="6.14" minZoom="2" zoom="8" maxZoom="18" 368 select="" size-factor="0.1" min-size="5" 369 color="rgba(255, 0, 0, 0.5)" 370 width="1000" height="800" 371 class="foldable"> 372 [Map: cause = corrosion incident] 373 </object> 374 <object type="table" view="corrosion-problems" 375 select="id, incidentnumber, incidentdate, estimatedquantity, cause" 376 class="foldable"> 377 [Table: Corrosion incidents] 378 </object> 379 </div> 380 </div> 381 382 383 <!-- 384 //Other variables needed 385 ARRAY number of spills where WHERE cause = eqf 386 --> 387 <div> 388 <h2>Equipment failure problems: 389 <object type="summary" view="equipment-failure" 390 function="count"> 391 [] 392 </object> 393 </h2> 394 <div> 395 <object type="map" variant="heatmap" view="equipment-failure" 396 select="" min-size="5" 397 color="rgba(255, 0, 0, 0.5)" 398 width="1000" height="800" 399 class="foldable"> 400 [Heat Map: cause = eqf] 401 </object> 402 <object type="map" view="equipment-failure" 403 select="" min-size="5" 404 color="rgba(255, 0, 0, 0.5)" 405 width="1000" height="800" 406 class="foldable"> 407 [Map: cause = equipment failure] 408 </object> 409 <object type="table" view="equipment-failure" 410 select="id, incidentnumber, incidentdate, estimatedquantity" 411 class="foldable"> 412 [Table: Equipment failure incidents] 413 </object> 414 </div> 415 </div> 416 417 <!-- 418 //Other variables needed 419 ARRAY number of spills where WHERE cause = ome 420 --> 421 <div> 422 <h2>Operational problems: 423 <object type="summary" view="operational-problems" 424 function="count"> 425 [Num: Number of post impact assesments] 426 </object> 427 </h2> 428 <div> 429 <object type="map" variant="heatmap" view="operational-problems" 430 select="" min-size="5" 431 color="rgba(255, 0, 0, 0.5)" 432 width="1000" height="800" 433 class="foldable"> 434 [Heat Map: cause = corrosion] 435 </object> 436 <object type="map" view="operational-problems" 437 select="" min-size="5" 438 color="rgba(255, 0, 0, 0.5)" 439 width="1000" height="800" 440 class="foldable"> 441 [Map: cause = corrosion incident] 442 </object> 443 <object type="table" view="operational-problems" 444 select="id, incidentnumber, incidentdate, cause, sitelocationname" 445 class="foldable"> 446 [Table: Corrosion incidents] 447 </object> 448 </div> 449 </div> 450 451 452 <div> 453 <h2>Cause of spill</h2> 454 <div> 455 Total spill amount: 456 <object type="summary" 457 function="sum" decimals="2" field="estimatedquantity"> 458 [] 459 </object> 460 bbl 461 </div> 462 <object type="pie chart" 463 group="estimatedquantity/cause" 464 label="Quantity in bbl" 465 class="foldable"> 466 [Pie: Cause] 467 </object> 468 </div> 469 470 <!-- 471 //Other variables needed 472 ARRAY number of spills by each cause 473 ARRAY number of spills WHERE cause = cor|eqf|ome 474 --> 475 <div> 476 <h2>Liable for compensation: 477 <object type="summary" view="liable-for-compensation" 478 function="count"> 479 [] 480 </object> 481 </h2> 482 <div> 483 <object type="map" view="liable-for-compensation" 484 select="" min-size="5" 485 color="rgba(255, 0, 0, 0.5)" 486 width="1000" height="800" 487 class="foldable"> 488 [Map: Compensation payable cases] 489 </object> 490 <object type="table" view="liable-for-compensation" 491 select="id, incidentnumber, incidentdate, cause, estimatedquantity, sitelocationname" 492 class="foldable"> 493 [Table: Compensation payable cases] 494 </object> 495 </div> 496 </div> 497 498 499 500 501 502 503 504 <h1>Trends over time</h1> 505 506 <div> 507 <h2>Incidents per month</h2> 508 <object type="line chart" 509 time="incidentdate" compare="estimatedquantity" 510 function="count" label="Spills per month" 511 class="foldable"> 512 [] 513 </object> 514 </div> 515 <div> 516 <h2>Barrels per month</h2> 517 <object type="line chart" view="estimated-quantity" 518 time="incidentdate" compare="estimatedquantity" 519 function="sum" label="Bbl per month" 520 class="foldable"> 521 [] 522 </object> 523 </div> 524 <div> 525 <h2>Sabotage incidents per month</h2> 526 <object type="line chart" view="security-problems" 527 time="incidentdate" compare="estimatedquantity/" 528 function="count" label="Incidents per month" 529 class="foldable"> 530 [] 531 </object> 532 </div> 533 534 535 <!-- 536 //Other variables needed 537 --> 538 <!-- div> 539 <h2>By Cause over time</h2> 540 <p>[Line: Cause by [jurisdiction] over incidentdate]</p> 541 <p>[Bar: Cause by [jurisdiction] over incidentdate]</p> 542 </div --> 543 544 <!-- 545 //Other variables needed 546 --> 547 <div> 548 <!-- h2>By bbls over time</h2 --> 549 <h2>Barrels per state over time</h2> 550 <object type="line chart" view="estimated-quantity" 551 time="incidentdate" compare="estimatedquantity/statesaffected" 552 function="sum" 553 class="foldable"> 554 [Line: estimatedquantity by [jurisdiction] over incidentdate] 555 </object> 556 <!-- p>[Bar: estimatedquantity by [jurisdiction] over incidentdate]</p --> 557 <!-- object type="bar chart" 558 group="estimatedquantity/spillareahabitat" 559 function="sum" decimals="2" label="Quantity in bbl" 560 class="foldable"> 561 [Bar: Type of impacted area by estimatedquantity] 562 </object --> 563 </div> 564 565 <!-- 566 //Other variables needed 567 --> 568 <!-- div> 569 <h2>By cleanup-indicators over time</h2> 570 <p>
570[Line: cleanupcompleteddate by [jurisdiction] over incidentdate]</p> 571 <p>[Bar: cleanupcompleteddate by [jurisdiction] over incidentdate]</p> 572 </div --> 573 574 <div> 575 <h2>Incidents per cause over time</h2> 576 <object type="line chart" 577 time="incidentdate" compare="estimatedquantity/cause" 578 function="count" 579 class="foldable"> 580 [] 581 </object> 582 </div> 583 584</div> 585
586<script src="js/vendor/combined.0.9.3.gz.js"></script>
vendor: 1 bytes, line 586
586
587<script src="js/index.0.9.3.gz.js"></script>
587 588 589</body> 590</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.