Skip to content

Commit 0a82739

Browse files
author
Austin T Schaffer
authored
Merge pull request #2 from AtlasSystems/user/ats/add-barcode-extraction
Add Barcode Extraction
2 parents 21105e8 + 24a6ec3 commit 0a82739

2 files changed

Lines changed: 39 additions & 5 deletions

File tree

Aeon-ArchivesSpace-Addon/Aeon-ArchivesSpace.lua

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -231,6 +231,14 @@ function BuildItemsGrid()
231231
gridColumn.OptionsColumn.ReadOnly = true;
232232
gridColumn.Width = 50;
233233

234+
gridColumn = gridView.Columns:Add();
235+
gridColumn.Caption = "Barcode";
236+
gridColumn.FieldName = "Barcode";
237+
gridColumn.Name = "gridColumnBarcode";
238+
gridColumn.Visible = true;
239+
gridColumn.OptionsColumn.ReadOnly = true;
240+
gridColumn.Width = 50;
241+
234242
catalogSearchForm.Grid.GridControl.DataSource = CreateItemsTable();
235243

236244
gridControl:EndUpdate();
@@ -245,6 +253,7 @@ function CreateItemsTable()
245253
itemsTable.Columns:Add("CallNumber");
246254
itemsTable.Columns:Add("Author");
247255
itemsTable.Columns:Add("Volume");
256+
itemsTable.Columns:Add("Barcode");
248257

249258
return itemsTable;
250259
end
@@ -382,12 +391,15 @@ function PopulateDataGrid()
382391

383392
for _, v in ipairs(archivalObject.instances) do
384393
local itemRow = itemsDataTable:NewRow();
385-
availableData["ArchivalObjectContainer"] = ExtractArchivalObjectContainer(sessionId, v);
394+
local topContainer = GetTopContainerFromAPI(sessionId, v)
395+
availableData["ArchivalObjectContainer"] = ExtractArchivalObjectContainer(v, topContainer);
396+
availableData["ArchivalObjectContainerBarcode"] = ExtractArchivalObjectContainerBarcode(topContainer);
386397
itemRow:set_item(mapping["Title"].ItemGridColumn, availableData[mapping["Title"].AspaceData]);
387398
itemRow:set_item(mapping["SubTitle"].ItemGridColumn, availableData[mapping["SubTitle"].AspaceData]);
388399
itemRow:set_item(mapping["CallNumber"].ItemGridColumn, availableData[mapping["CallNumber"].AspaceData]);
389400
itemRow:set_item(mapping["Author"].ItemGridColumn, availableData[mapping["Author"].AspaceData]);
390401
itemRow:set_item(mapping["Volume"].ItemGridColumn, availableData[mapping["Volume"].AspaceData]);
402+
itemRow:set_item(mapping["Barcode"].ItemGridColumn, availableData[mapping["Barcode"].AspaceData]);
391403
itemsDataTable.Rows:Add(itemRow);
392404
end
393405

@@ -494,7 +506,17 @@ function ExtractDigitalObjectCitation(sessionId, json)
494506
return availableData;
495507
end
496508

497-
function ExtractArchivalObjectContainer(sessionId, archivalObjectInstance)
509+
function GetTopContainerFromAPI(sessionId, archivalObjectInstance)
510+
if (archivalObjectInstance.sub_container ~= nil and archivalObjectInstance.sub_container ~= JsonParser.NIL) then
511+
local topContainerUri = archivalObjectInstance.sub_container.top_container.ref;
512+
local topContainer = ArchivesSpaceGetRequest(sessionId, topContainerUri);
513+
return topContainer
514+
end
515+
516+
return nil
517+
end
518+
519+
function ExtractArchivalObjectContainer(archivalObjectInstance, topContainer)
498520
local container = "";
499521

500522
if (archivalObjectInstance.container ~= nil and archivalObjectInstance.container ~= JsonParser.NIL) then
@@ -505,15 +527,23 @@ function ExtractArchivalObjectContainer(sessionId, archivalObjectInstance)
505527
if (archivalObjectInstance.container.type_2 ~= nil and archivalObjectInstance.container.type_2 ~= JsonParser.NIL) then
506528
container = container .. ', ' .. archivalObjectInstance.container.type_2 .. " " .. archivalObjectInstance.container.indicator_2;
507529
end
508-
elseif(archivalObjectInstance.sub_container ~= nil and archivalObjectInstance.sub_container ~= JsonParser.NIL) then
509-
local topContainerUri = archivalObjectInstance.sub_container.top_container.ref;
510-
local topContainer = ArchivesSpaceGetRequest(sessionId, topContainerUri);
530+
elseif (topContainer) then
511531
container = topContainer.long_display_string;
512532
end
513533

514534
return container;
515535
end
516536

537+
function ExtractArchivalObjectContainerBarcode(topContainer)
538+
local barcode = "";
539+
540+
if topContainer and topContainer.barcode then
541+
barcode = topContainer.barcode;
542+
end
543+
544+
return barcode;
545+
end
546+
517547
function ExtractProperty(object, propery)
518548
if object then
519549
return EmptyStringIfNil(object[propery]);

Aeon-ArchivesSpace-Addon/DataMapping.lua

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,10 @@ HostAppInfo.InstanceDataImport["Volume"] =
6565
AeonField = "ItemVolume", AspaceData = "ArchivalObjectContainer", FieldLength = 255, ItemGridColumn = "Volume"
6666
}
6767

68+
HostAppInfo.InstanceDataImport["Barcode"] =
69+
{
70+
AeonField = "ItemNumber", AspaceData = "ArchivalObjectContainerBarcode", FieldLength = 50, ItemGridColumn = "Barcode"
71+
}
6872

6973
-- Resource Citation Import Mapping
7074
HostAppInfo.CitationDataImport = {}

0 commit comments

Comments
 (0)