<templatestyles src="Modul:Dokumentacija/styles.css"></templatestyles>
Modul radi kao dio predloška {{Infookvir kemijski spoj}}.
Modul ima jednu javnu funkciju imena glavna.
Funkcija dohvaća identifikator članka na Wikidati, te traži kemijske identifikatore povezane uz stavku na Wikidati. Kemijski identifikatori se uspoređuju sa lokalnim vrijednostima, te se označavaju ovisno o poklapanjima.
Popis identifikatora i broj njihovog svojstva nalazi se u tablici imena identifikatori na početku modula. Tablica popisuje i sprema lokalnu vrijednost i vrijednost sa Wikidate u varijablama lokalnaval i WDval, respektivno.
Ovisno o podudarnosti, modul vraća:
- ako obje vrijednosti postoje i jednake su, vraća se lokalna vrijednost, znak ✓ i članak se svrstava u Kategorija:Kemijski identifikatori isti kao na Wikidati
- ako obje vrijednosti postoje ali nisu jednake, vraća se Wikidata vrijednost, znak X i Kategorija:Kemijski identifikatori različiti od Wikidate
- ako lokalni identifikator ne postoji, vraća se Wikidata vrijednost, znak ✓ i Kategorija:Podatci dohvaćeni sa Wikidate
- ako Wikidata identifikator ne postoji, vraća se lokalna vrijednost, znak ? i Kategorija:Kemijski identifikatori koji nisu prisutni na Wikidati
local p = {}
local entityID = mw.wikibase.getEntityIdForCurrentPage()
local identifikatori = {
[0] = { ime = "CAS", WDprop = "P231", lokalnaval = "", WDval = "", link = "CAS registarski broj", vp = "https://chem.nlm.nih.gov/chemidplus/rn/$1"},
[1] = { ime = "EC", WDprop = "P232", lokalnaval = "", WDval = "", link = "EC registarski broj", vp = "https://echa.europa.eu/information-on-chemicals/ec-inventory"},
[2] = { ime = "UN", WDprop = "P695", lokalnaval = "", WDval = "", link = "UN broj", vp = "http://www.unece.org/fileadmin/DAM/trans/danger/publi/adr/adr2011/English/VolumeI.pdf"},
[3] = { ime = "RTECS", WDprop = "P657", lokalnaval = "", WDval = "", link = "RTECS broj", vp = "https://www.cdc.gov/niosh/npg/npgdrtec.html"},
[4] = { ime = "PubChem", WDprop = "P662", lokalnaval = "", WDval = "", link = "PubChem", vp = "https://pubchem.ncbi.nlm.nih.gov/compound/$1"},
}
function dohvatiLokalneID(frame)
local args = mw.getCurrentFrame():getParent().args
for i,v in pairs(identifikatori) do
identifikatori[i].lokalnaval = args[identifikatori[i].ime] or ''
end
end
function dohvatiWikidataID(frame, entityID)
if (entityID) then
--ako je trenutna stranica povezana s wikidatom
local entity = mw.wikibase.getEntity( entityID )
for i,v in pairs(identifikatori) do
identifikatori[i].WDval = entity:formatPropertyValues( identifikatori[i].WDprop )["value"]
end
end
end
function p.dohvatiIdentifikatore(frame)
dohvatiLokalneID(frame)
dohvatiWikidataID(frame, entityID)
local retval = ''
local catbase = "Kemijski identifikatori"
for i,v in pairs(identifikatori) do
if (identifikatori[i].lokalnaval ~= '' and identifikatori[i].lokalnaval ~= '-' ) and identifikatori[i].WDval ~= '' then
-- obje vrijednosti postoje
if identifikatori[i].lokalnaval == identifikatori[i].WDval then
--obje vrijednosti postoje i iste su
retval = retval.. "\n|-\n| <b>[[" .. identifikatori[i].link ..'|'.. identifikatori[i].ime .. ' broj]]</b>'
.. '\n| ['.. identifikatori[i].vp:gsub("$1", identifikatori[i].lokalnaval) .. ' ' .. identifikatori[i].lokalnaval .. ']'
.. ' <abbr style="color:limegreen;" title="Podatak je isti kao na Wikidati"><b>✓</b></abbr>'
.. "[[Kategorija:" .. catbase .. " isti kao na Wikidati]]"
else -- obje vrijednosti postoje no nisu iste
retval = retval.. "\n|-\n| <b>[[" .. identifikatori[i].link ..'|'.. identifikatori[i].ime .. ' broj]]</b>'
.. '\n| ['.. identifikatori[i].vp:gsub("$1", identifikatori[i].WDval) .. " " .. identifikatori[i].WDval .. "]"
.. ' <abbr style="color:red;" title="Podatak je različit od Wikidate (lokalni navodi '.. identifikatori[i].lokalnaval ..')><b>X</b></abbr>'
.. "[[Kategorija:" .. catbase .. " različiti od Wikidate]]"
end --obje jednake
else -- ako jedan od podataka ne postoji
if identifikatori[i].WDval ~= '' then
-- WD postoji a lokalna ne postoji
retval = retval.. "\n|-\n| <b>[[" .. identifikatori[i].link ..'|'.. identifikatori[i].ime .. ' broj]]</b>'
.. '\n| ['.. identifikatori[i].vp:gsub("$1", identifikatori[i].WDval) .. " " .. identifikatori[i].WDval .. "]"
.. ' <abbr style="color:darkgreen;" title="Podatak je dohvaćen s Wikidate"><b>✓</b></abbr>'
.. "[[Kategorija:" .. catbase .. " dohvaćeni s Wikidate]]"
else
if identifikatori[i].lokalnaval ~= '' and identifikatori[i].lokalnaval ~= '-' then
-- lokalna postoji a WD ne postoji
retval = retval.. "\n|-\n| <b>[[" .. identifikatori[i].link ..'|'.. identifikatori[i].ime .. ' broj]]</b>'
.. '\n| ['.. identifikatori[i].vp:gsub("$1", identifikatori[i].lokalnaval) .. " " .. identifikatori[i].lokalnaval .. "]"
.. ' <abbr style="color:darkgrey;" title="Nije moguće potvrditi; podatak nije prisutan na Wikidati"><b>?</b></abbr>'
.. "[[Kategorija:" .. catbase .. " koji nisu prisutni na Wikidati]]"
else
retval = retval..''
end --WD postoji
end --lokalna postoji
end -- obje postoje
end -- end do
return retval
end
function p.dohvatiFormulu(frame)
if (entityID) then
--ako je trenutna stranica povezana s wikidatom
return mw.wikibase
.getEntity(entityID)
:formatPropertyValues( 'P274')['value']
.. ' <abbr style="color:darkgreen; position: absolute;" title="Podatak je dohvaćen s Wikidate"><b>✓</b></abbr>'
.. '[[Kategorija:Kemijske formule dohvaćene s Wikidate]]'
end
end
function p.dohvatiNFPA(frame)
local ret = '\n|-\n| <b>[[NFPA 704]]</b>\n|'
if (frame:getParent().args['NFPA 704'] ~= nil
and frame:getParent().args['NFPA 704'] ~= '' ) then
-- provjera - baza
-- TODO dodati logiku usporedbe
--mw.log(frame:getParent().args['NFPA 704'])
local check = {}
for capture in frame:getParent().args['NFPA 704']:gmatch('%a+ [012345]%.') do
table.insert(check, capture)
end
mw.logObject(check)
ret = ret .. frame:getParent().args['NFPA 704']
return ret
else
local WDprop = {
['property'] = 'P4952',
['pval'] = 'Q51139288',
['props'] = {
['H'] = { p = 'P993', val = '', wdval = ''},
['F'] = { p = 'P994', val = '', wdval = ''},
['R'] = { p = 'P995', val = '', wdval = ''},
['O'] = { p = 'P877', val = '', wdval = ''},
}
}
if (entityID and mw.wikibase.getEntity( entityID )['claims'][WDprop['property']] ~= nil) then
--ako je trenutna stranica povezana s wikidatom
local entity = mw.wikibase.getEntity( entityID )['claims'][WDprop['property']][1]
-- provjera valjanosti
if (entity['mainsnak']['datavalue']['value']['id'] == WDprop.pval
and entity['mainsnak']['property'] == WDprop.property) then
mw.log('Provjera prolaz')
for k, v in pairs(WDprop['props']) do
if entity['qualifiers'][v['p']][1]['datavalue'] == nil then
v['wdval'] = "0"
else
v['wdval'] = entity['qualifiers'][v['p']][1]['datavalue']['value']
end
end
ret = ret .. '\n'.. frame:expandTemplate{ title = 'NFPA 704', args = {
H = WDprop['props']['H']['wdval'],
F = WDprop['props']['F']['wdval'],
R = WDprop['props']['R']['wdval'],
O = WDprop['props']['O']['wdval'],
} }
ret = ret ..' <abbr style="color:darkgreen; position: absolute; line-height: 110px; padding-left: 10px;" title="Podatak je dohvaćen s Wikidate"><b>✓</b></abbr>'
.. '[[Kategorija:Kemijski identifikator NFPA 704 dohvaćen s Wikidate]]'
end
else ret = ''
end
end
return ret
end
return p