15.082
Bearbeitungen
(Änderung 758655 von HeikoBot (Diskussion) rückgängig gemacht.) Markierung: Rückgängigmachung |
(adressenTab_(fbdata) eigener Sortieralgorithmus) |
||
| Zeile 183: | Zeile 183: | ||
-- =p.adressenTab_({fullpagename="E-Tankstelle Hochstraße"}) | -- =p.adressenTab_({fullpagename="E-Tankstelle Hochstraße"}) | ||
-- =p.adressenTab_({fullpagename="TestPerson2"}) | -- =p.adressenTab_({fullpagename="TestPerson2"}) | ||
-- =p.adressenTab_({fullpagename="Jakob Wassermann"}) | |||
local t = "" | local t = "" | ||
| Zeile 193: | Zeile 194: | ||
["VonObjekt"] = { querypostfix = "#-", default = ""}, | ["VonObjekt"] = { querypostfix = "#-", default = ""}, | ||
["AdresseVon"] = { querypostfix = "", default = ""}, | ["AdresseVon"] = { querypostfix = "", default = ""}, | ||
["AdresseBis"] = { querypostfix = "", default = "" | ["AdresseBis"] = { querypostfix = "", default = ""}} | ||
-- DB-Abfrage | -- DB-Abfrage | ||
| Zeile 205: | Zeile 205: | ||
if addresses ~= nil then | if addresses ~= nil then | ||
-- defaults fehlender Attribute setzen | -- defaults fehlender Attribute und Sortier-Index setzen | ||
for i, _ in pairs(addresses) do | for i, _ in pairs(addresses) do | ||
for j, a in pairs(attr) do | for j, a in pairs(attr) do | ||
addresses[i][j] = addresses[i][j] or a.default | addresses[i][j] = addresses[i][j] or a.default | ||
end | end | ||
addresses[i].von_sort_index = smwDate2SortIndex(addresses[i]["AdresseVon"]) | |||
addresses[i].bis_sort_index = smwDate2SortIndex(addresses[i]["AdresseBis"]) | |||
end | end | ||
-- Tabelle sortieren | -- Tabelle sortieren | ||
for i = 1, #addresses - 1 do -- max. #addresses - 1 Durchgänge nötig | |||
local swap_this_interation = false | |||
for j = 1, #addresses - 1 do | |||
local swap = vonBisSortCompare(addresses[j], addresses[j+1]) | |||
if swap then | |||
addresses[j], addresses[j+1] = addresses[j+1], addresses[j] | |||
end | |||
swap_this_interation = swap_this_interation or swap | |||
end | |||
if not swap_this_interation then | |||
break | |||
end | |||
end | |||
-- Liste erstellen | -- Liste erstellen | ||
| Zeile 230: | Zeile 244: | ||
end | end | ||
t = t .. "'''" | t = t .. "'''" | ||
-- Zusatzinfos in Klammern anfügen | -- Zusatzinfos in Klammern anfügen | ||
local bracket = {} | local bracket = {} | ||
| Zeile 264: | Zeile 277: | ||
-- mw.log("t = " .. t) | -- mw.log("t = " .. t) | ||
return t | return t | ||
end | |||
function smwDate2SortIndex(date) | |||
-- mw.log("smwDate2SortIndex(" .. date .. ")") | |||
-- Konsolenzeile zum Debuggen: | |||
-- =p.smwDate2SortIndex("2000") | |||
-- =p.smwDate2SortIndex("Februar 2000") | |||
-- =p.smwDate2SortIndex("3. Februar 2000") | |||
local sort_index = "" | |||
local date=str.split2(date, " ") | |||
if #date == 1 then -- nur Jahr | |||
sort_index = tostring(date[1]) .. | |||
"0101" -- 1. Januar | |||
elseif #date == 2 then -- nur Monat + Jahr | |||
sort_index = tostring(date[2]) .. | |||
string.format("%02d", com.getMonthnr(date[1])) .. | |||
"01" -- 1. Tag | |||
elseif #date == 3 then -- komplettes Datum | |||
sort_index = tostring(date[3]) .. | |||
string.format("%02d",com.getMonthnr(date[2])) .. | |||
string.format("%02d", tonumber(string.match(date[1], "%d*"))) | |||
end | |||
sort_index = tonumber(sort_index) or 0 | |||
-- mw.log("sort_index = " .. tostring(sort_index)) | |||
return sort_index | |||
end | |||
function vonBisSortCompare(k1, k2) | |||
-- mw.log("vonBisSortCompare(k1, k2)") | |||
-- mw.logObject(k1) | |||
-- mw.logObject(k2) | |||
local swap = false | |||
if k1.bis_sort_index ~= 0 then | |||
if k2.von_sort_index ~= 0 then | |||
swap = ( k1.bis_sort_index > k2.von_sort_index ) | |||
elseif k2.bis_sort_index ~= 0 then | |||
swap = ( k1.bis_sort_index > k2.bis_sort_index ) | |||
end | |||
elseif k1.von_sort_index ~= 0 then | |||
if k2.von_sort_index ~= 0 then | |||
swap = ( k1.von_sort_index > k2.von_sort_index ) | |||
elseif k2.bis_sort_index ~= 0 then | |||
swap = ( k1.von_sort_index > k2.bis_sort_index ) | |||
end | |||
else | |||
if k2.von_sort_index ~= 0 or k2.bis_sort_index ~= 0 then | |||
swap = true | |||
end | |||
end | |||
-- mw.log("swap = " .. tostring(swap)) | |||
return swap | |||
end | end | ||
return p | return p | ||