Skip to end of metadata
Go to start of metadata

You are viewing an old version of this content. View the current version.

Compare with Current View Version History

« Previous Version 13 Next »

Eftersom det är en omfattande uppdatering så noteras förändringarna i detta dokumentInnehåll

Gemensamma attribut

Fyra nya datamängder som är gemensamma för alla kommuner har lagts till:

  1. Skadekategorier

  2. Skadetyper

  3. Organisationer/bolag

  4. Verksamheter

Beskrivning finns här för hur det har tillkommit

Syftet är att kunna ta ut kommun-överskridande statistik

Kommunerna kan inte redigera dessa tabeller men de kan förändra länkningen till motsvarade egna attribut. I redigeringsformulären har för de egna attributen så finns det tillagd en lista med de gemensamma attributen.

Följande tabeller påverkas

Tabell

Beskrivning

Administration_generic

Ny tabell: Id, namn_sv,namn_en,namn

Administration

Kolumn generic tillagd

Operation_type_generic

Ny tabell: Id, namn_sv,namn_en,namn

Operation_type

Kolumn generic tillagd

Categories_generic

Ny tabell: Id, namn_sv,namn_en,namn

Categories

Kolumn generic tillagd

type_generic

Ny tabell: Id, namn_sv,namn_en,namn

damage_type

Kolumn generic tillagd

 Skadetyper

id

namn_sv

namn_no

namn_en

1

Skadegörelse

Vandalism

Vandalism

2

Vatten

Vann

Water

3

Glaskross

Glassknuser

Glass breaker

4

Klotter

Doodle

Doodle

5

Inbrott

Innbrudd

Burglary

6

Ansvar

Ansvar

Liability

7

Brand

Brann

Fire

8

Stöld

Tyveri

Theft

9

Övrigt

Annet

Other

10

Skada

Skade

Damage

Konfiguration

SIV konfiguration

Uppdaterade SIV ska bara innehålla ett dataslag, Skador. Anpassning till olika typer av användare görs genom dels förfinade roller för “skador i verksamheten” och del filter. Även allmän konfiguration av webb-klienten påverkar utseendet

Fil

Beskrivning

siv_damages.xml

Ny fil som innehåller alla konfiguration för skador förutom upplags-listor. Ersätter sive_all.xml och sive_open_damages.xml

sive_all.xml och sive_open_damages.xml och sive_common_types.xml

Borttagna (De finns fysiskt kvar fortfarande)

Det finns säkert brister men det är klart att testa i labb-miljö.

Kartteman

Vi håller på med att lägga till och förbättra kartteman kopplade till skador. Dels en allmän default stil och dels teman som förstärker ett urval. Arbetet pågår

Det svåra är att med symbolik kategorisera eller visa en trend i kartan.

RegSO och DeSO

Dessa fanns redan konfigurerade under open_sweden/scb.xml. Nya style i Geoserver är tillagd. I toc.opensweden.scb är justerad så att gruppen kallas nu “Statistikområden” och det är bara Deso och Regso som visas.

Här kanske någon roll och ACL bör justeras så att inte något annat från SCB dyker upp i klienten.

Om vi kan ladda demografi under de senaste åren så är det en bra fortsättning

Ikartan klienten

TOC är ändrad så att Urval och bakrundskarta kommer längst ner. Det finns säker mer att göra så att den är lättarbetad för användaren. Kanske är det något för projekt ny klient.

Roller

Under rolltypen “Skador i verksamheten” fanns förut bara rollerna “Administrator” och “Normalanvändare” som har en massa ACLer koppplade till sig. Dessa finns kvar men har kompletterats med följande mer specifika roller:

  • Skapa och redigera skador

  • Ta ut statistik för skador

  • Tillgång till dynamisk filter för skador

  • Välja kommuner i dynamisk filter för skador

  • Snabbsök för skadeområden

  • Söka och visa skadeområden

  • Redigera skadeområden

  • Snabbsök för skadeplatser

  • Söka och visa skadeplatser

  • Redigera skadeplatser

Det som återstår är att redigera alla användargrupper och ersätta de gamla rollerna mot de nya

Rapporter

Rapporterna som vi gjorde i våras har fått gå till papperskorgen. I och med införande av filter så kan inte SQL användas utan istället så är datakällan Weave data-definition “skfab_view_damages” som användes.

När den ansluts i BIRT utan relation till dataslag så innehåller den alla poster som är tillgängliga för användaren. Effekten av filter finns med här så rapporterna får korrekt filtrerad data.

Fyra rapporter för statistik är klara för test

  1. Utveckling över tid: med attributen kategori. typ. område, plats, organisation och verksamhet

  2. Utveckling över tid gemensam: med attributen gemensamma kategori, typ, organisation, verksamhet och Regso-områden

  3. Jämförelse mellan två perioder: Samma attribut som för punkt 1

  4. Jämförelse mellan två perioder gemensam: Samma attribut som för punkt 2

Problemställningen nu när inte SQL kan användas är att hämta ut rätt mängd data baserat på rapport-parametrarna. Därför måste BIRT dataset fixas med att addera beräknande kolumner

Kolumner som beräknas för dataset two_periods

From_date_1, To_date_1, From_date_2, To_date_2

Korrekta jämförbara värden för datum ingående parameterar “från period 1 …”

//From_date_1
var dt =params["from_period_1"].value.toString().split('-');
var y = new Number(dt[0]);
var m = new Number(dt[1])-1;
var d = new Number(dt[2]);
BirtDateTime.date(y,m,d);

Period_1, period_2, Period_1_cost, period_2_cost, period och damage_date_trunc

För att veta vilka poster som ska vara med i period_1 repetitive period_2 så får kolumnen värdet 1 om den är med och värdet 0 om den inte är med är värdet 0. Summan av kolumnen är därmed antal poster. På samma vis sätt kostnad för för period_1_cost och period_2_cost när posten är inom perioden

//Period_1
if ( row["damage_date_trunc"] >= row["from_date_1"]  && row["damage_date_trunc"] <= row["to_date_1"] )
{
1
}
else
{
0
} 

Period används som hjälp för att filtrera

//Period
row["period_1"] +row["period_2"]

damage_date_trunc gör om damage_date till datum så det kan jämföras

//damage_date_trunc
var dt = row["damage_date"];
var y = dt.getFullYear();
var m = dt.getMonth();
var d = dt.getDate();
new Date(y,m,d);

Filter

För att minska ner dataset till bara relevanta poster så sätts filter baserat på kolumnen period

image-20240711-115005.png

Rapporten

Tabellelementet binds till dataset two_periods. Em grupp skapas efter önskat attribut, t-ex- operation_common. Summering på t.ex period_1_cost per grupp operation_common. Samma för period 2.

Detaljrden behövs inte eller kan göras osynlig.

Screenshot_2024-07-11_13-52-56.png

För diagram så grupperas informationen automatiskt

image-20240711-120301.png

Kolumner som beräknas för dataset one_period

För rapporten utveckling över tid så behövs inte period 2 kolumner men ytterligare en kolumn, group, för att gruppera tidsperiod

//group
function getQuarter(date) { 
  var month = date.getMonth() + 1; 
  return Math.ceil(month / 3); 
} 
function getWeek(d) {
    // Copy date so don't modify original
    d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));
    // Set to nearest Thursday: current date + 4 - current day number
    // Make Sunday's day number 7
    d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay()||7));
    // Get first day of year
    var yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));
    // Calculate full weeks to nearest Thursday
    var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7);
    // Return array of year and week number
    return [weekNo];
}
function pad(num, size) {
    var s = "000000000" + num;
    return s.substr(s.length-size);
}
var dt = row["damage_date"];
//Year
if (params["groupPeriod"].value == "year") {
dt.getFullYear().toString();
//year-momnth
} else if (params["groupPeriod"].value == "month"){
dt.getFullYear() + "-" + pad(dt.getMonth()+1,2);
//year-quarter
} else if (params["groupPeriod"].value == "quarter"){
dt.getFullYear() + "-" + pad(getQuarter(dt),2);
//year-week
} else if (params["groupPeriod"].value == "week"){
dt.getFullYear() + "-" + pad(getWeek(dt),2);
//date
} else if (params["groupPeriod"].value == "date"){
dt.getFullYear() + "-" + pad(dt.getMonth()+1,2) + "-" + pad(dt.getDate(),2);
}else{
dt.getFullYear().toString();
}
  • No labels