PageSourceSearch

https://oilspillmonitor.ng/dashboard/

html oilspillmonitor.ng collected 2026-09-26 04:38:28 UTC 19,210 bytes, 590 lines download raw bytes

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.