feat: visor da peça com zoom real, ficha NOBRADE e filtros agrupados pela norma
- painel à esquerda (folha no celular) com barra ← mural | filtros, palco com roda, pinça, duplo clique, arrastar e modo só a imagem (F) - ficha arquivística: código, nível, arranjo clicável, data da norma com selo de atribuída, produtor ISAAR, suporte, original, reprodução e citação - filtros em Arranjo, Data, Pontos de acesso e Suporte e uso; autor pela autoridade, espécie da 1.5 e condição de reprodução; link pelo código - datas: ano implausível vira ilegível, atribuição pelo miolo p10–p90 e histograma só com datas de até 30 anos de amplitude
This commit is contained in:
@@ -122,6 +122,15 @@ def _limites(ds: list[dict]) -> dict:
|
||||
'inicio': a, 'fim': b, 'qualidade': 'datas-limite', 'tipo': 'produção'}
|
||||
|
||||
|
||||
def _robustos(ds: list[dict]) -> dict:
|
||||
"""Datas-limite para atribuir a dossiês sem data: o miolo (percentis 10–90)
|
||||
das datas conhecidas, para que um punhado de extremos não vire [1800-1999?]."""
|
||||
anos = sorted(d['inicio'] for d in ds if d and d.get('inicio'))
|
||||
if not anos:
|
||||
return {'inicio': None, 'fim': None}
|
||||
return {'inicio': anos[int(len(anos) * .1)], 'fim': anos[min(len(anos) - 1, int(len(anos) * .9))]}
|
||||
|
||||
|
||||
def _dimensao(especies: Counter, n_itens: int, bytes_: int) -> dict:
|
||||
partes = [f'{n} {e}' for e, n in especies.most_common()]
|
||||
return {'por_especie': dict(especies), 'arquivos_digitais': n_itens, 'bytes': bytes_,
|
||||
@@ -330,9 +339,9 @@ def monta():
|
||||
|
||||
# datas atribuídas aos s.d. (proc. 1.3.3.2): período do fotógrafo, senão datas-limite da série
|
||||
rev_por_handle = {r['handle']: r for r in rev_datas}
|
||||
lim_secao = {inst: _limites([u['1.3']['producao'] for (i, _), us in por_serie.items() if i == inst
|
||||
for u in us if not u['_sd']]) for inst, _ in por_serie}
|
||||
lim_serie = {k: _limites([u['1.3']['producao'] for u in us if not u['_sd']]) for k, us in por_serie.items()}
|
||||
lim_secao = {inst: _robustos([u['1.3']['producao'] for (i, _), us in por_serie.items() if i == inst
|
||||
for u in us if not u['_sd']]) for inst, _ in por_serie}
|
||||
lim_serie = {k: _robustos([u['1.3']['producao'] for u in us if not u['_sd']]) for k, us in por_serie.items()}
|
||||
for k, us in por_serie.items():
|
||||
for u in us:
|
||||
if not u['_sd']:
|
||||
@@ -342,10 +351,10 @@ def monta():
|
||||
if per:
|
||||
nova = datas.atribuida(*per, 'período de atividade do autor')
|
||||
elif lim_serie[k]['inicio']:
|
||||
nova = datas.atribuida(lim_serie[k]['inicio'], lim_serie[k]['fim'], 'datas-limite da série')
|
||||
nova = datas.atribuida(lim_serie[k]['inicio'], lim_serie[k]['fim'], 'miolo das datas conhecidas da série (percentis 10–90)')
|
||||
elif lim_secao[k[0]]['inicio']:
|
||||
nova = datas.atribuida(lim_secao[k[0]]['inicio'], lim_secao[k[0]]['fim'],
|
||||
'datas-limite da instituição de origem')
|
||||
'miolo das datas conhecidas da instituição de origem (percentis 10–90)')
|
||||
else:
|
||||
continue
|
||||
nova['original'] = u['1.3']['producao']['original']
|
||||
|
||||
Reference in New Issue
Block a user