Theo Todman's Web Page - Notes Pages
Website Documentation
Website Generator Documentation - Timelines (Photos & Blog)
(Work In Progress: output at 15/11/2024 18:37:26)
This document covers1 the following functions performed by clicking buttons on the front screen:-
- Update / Output Timeline Pages (cmdTimelines_Click)
To see the Code, click on the procedure name above.
Introduction
- This page describes the creation and maintenance of photographic timelines on my Website.
- Note that some of this processing is complex and involves the creation of many temporary datasets. This processing may fall foul of the ‘No more databases’ bug in MS Access. I need to check all this out before running the processes on new data.
- Starting from the above button, there are currently 9 options.
- The first 3 are maintenance functions.
- The next 6 are used to generate the timeline pages. Of these options, 2 are specific, 4 are generic (that is, they use the same processing, but with different parameters and data). I intend to add further generic items in due course.
- So:-
- Maintenance
- Search the Photos_Raw table.
- Update Photos_Raw_Excluded.
- Correct inconsistent Photo Types using Photos_Raw_MultiType_List query.
- Generate Timelines: Specific
- Blog2.
- Coxes Farm Timeline3,
- Generate Timelines: Generic
- Coxes Farm Repairs4.
- Coxes Farm Pre-Repairs5.
- Coxes Farm Gardens6
- Henry7.
- Of these:-
- The static data maintenance items will be described after the data structures and general philosophy and procedures have been explained.
- Item 4 (Blog8) doesn’t use photos, but is a timeline.
- Item 5 (Coxes Farm Timeline9) is fully functional, but is still under development as far as adding data is concerned.
- Item 6 (Coxes Farm Repairs10) is also fully functional but is awaiting11 the addition of the Coxes Farm Phase III developments.
- Item 7 (Coxes Farm Pre-Repairs12) is also fully functional and complete.
- Item 8 (Coxes Farm Gardens13) is also fully functional14, but subject to the addition of new data ‘as and when’.
- Item 9 (Henry15) doesn’t work at the moment as the data isn’t set up yet.
- In due course I intend to add generic timelines for holidays, work trips and the like.
Detailed Processing – Maintenance of Static Data
- Data Structures:
- Blog16
- The control table is the Blog table. This the Blog item Title, Entry Date (for sequencing), Topic (quick summary) and up to 4 Note IDs.
- The Notes table contains the text of the Blog items, which are linked to from the Blog17 page itself.
- Coxes Farm Timeline18
- The idea of this timeline is to show items side-by-side for comparison. All data is entered manually.
- Timeline
- This is the control table, with ‘Timeline’ = ‘CoxesFarm’.
- The table currently only contains rows for this timeline, so it could – I suppose – be extended for others.
- Columns:-
- Timeline: ‘CoxesFarm’.
- Item_Date
- Item_ID: Leave a gap19 if two photos!
- Item_Text: Appears at the top of the middle field on the page row. It describes the purpose of the photo(s) on this row.
- Item_Text_P1: Describes the LHS photo.
- Item_Photo1: DOS file-name of the photo. JPEGs. No path (‘Photos/Notes/’ is assumed).
- Item_Photo1_Percent: Can be used to reduce the size of the photo. Currently always 100.
- Item_Photo1_Alt: Text to appear in the ‘mouse over’ pop-up.
- The above 4 fields relate to the LHS photo. They are repeated for the optional second (RHS) photo.
- Generic Timelines
- Photo_Narratives
- The control table, which provides the monthly headings for the timeline.
- Columns:-
- Photo_Type: ‘Timeline’ set, as appropriate, to:
→ ‘CoxesFarmRepairs’,
→ ‘CoxesFarmPreRepairs’,
→ ‘CoxesFarmGardens’, or
→ ‘Henry’ (TBA)
- Photo_Year + Photo_Month: Two columns to segregate the photos in the timeline. Should be set to zero if the dates are unknown, in which case the photos appear at the bottom of the timeline.
- Photo_Subgroup: Integer. For segregating bunches of photos in the same month.
- Photo_Narrative: Text to describe the phots for this month. Can include my bulleting indicators.
- Photo_Title: Supplements the subtitle for this month: ‘YYYY – Month – Title’.
- Photos_Raw
- This is the table that contains information on the photos to be displayed, and sundry metadata that affects their display.
- Columns
- Photo_Type: ‘Timeline’, set as above.
- Photo_FileName: DOS name (JPEG)
- File_DateCreated: DOS date - when file copied to PC
- Photo_Source: Currently, Olympus Digital Camera, iPhone, and sundry external sources
- Photo_Timestamp: Date+Time photo taken as deduced from JPEG header; default = 0
- Photo_Timestamp_Manual: Time photo taken as manually taken from iCloud Photos
- Photo_Size: in bytes
- Photo_Popup_Title: calculated from other information on this row of the table
- Link_Key: For matching Full and compressed photos
- Photo_Detail: Full, Medium, Medium - Larger
- Matching_Photo_FileName: Based on Link_Key
- Exclude? Currently 467 / 1778 are excluded
- Photo_Narrative: ‘For display in pop-up’ but currently unused20.
- Photo_ID: Autonumber
- Photo_Subgroup: currently has values 0-4; not sure why!21
- Portrait? For 'swivelled' photos
- The three Data Maintenance menu options allow:-
- Search the Photos_Raw table
- Check Excluded Photos
- Manually check photos excluded from the web-pages after being imported into Photos_Raw.
- In particular ensure that both of two different-sized photos are excluded when one is, or that the middle only (or all three) are if there are three different-sized photos of the same image.
- Uses Photos_Raw_Excluded which is an inner join of Photos_Raw and Photo_Raw_Excluded_Link_Keys.
- The latter is recreated just before the above query is displayed, using Photo_Raw_Excluded_Link_KeysQ. Its purpose is to enable the query to have editable rows.
- Check Photo Type Consistency
- Manually check that photos have consistent types (ie. that different size versions of the same photo don’t appear in different pages).
- Uses Photos_Raw_MultiType_List, which is a variant of the above query, but in a difference order, to return rows on Photos_Raw table requiring attention.
- However, Photo_Raw_Excluded_Link_Keys is re-used to show only the Link_Keys with multiple Photo_Types. It is recreated by Photo_Type_Goup_Mismatch_Gen which uses a cascade of queries to determine those rows on Photos_Raw table that have more than one ‘Photo_Type’ for the same ‘Link_Key’.
- No rows should be returned if all is well (as it is currently)!
Detailed Processing – Blog22
- The Blog (Note 26823) now uses Functor_14 to generate the HTML table in the webpage, using the MS Access table Blog.
- It’s mainly on this menu as an attempt to remind me how the Blog is now maintained & output!
- The user is asked whether they want to update the Blog table, and – if not – the Blog (Note 26824) is output via Notes_To_Regen and CreateNotesWebPages.
- This was a major enhancement to my Blog processing, and seems to make the process much easier to administer.
- I note here – however – that the ability to show links to Printable Notes – which appears in the archived versions of April 2020 and July 2019 – has been removed. These links would have been edited in manually (I edited them out of the earlier Archived versions). Printable Notes25,26 had got out of hand, and the links from Archived notes were to the current ‘Printable’ versions, which was incorrect. The software for Printable Versions of Archived Notes was too complex to maintain as I developed the system, so got abandoned. In any case, I’ve abandoned the whole ‘Printable Notes’ part of the system architecture, for now at least.
- The processing of Functor_14 should be documented in my Note on Functors27, but it seems it’s just listed. As the processing works and is rarely used these days, further documentation isn’t a priority.
Detailed Processing – Coxes Farm Timeline28
- This uses Functor_15 to generate the table in the webpage, using the MS Access table Timeline.
- It is slightly half-baked at the moment, but the intention is to select contrasting photos from the other timelines and display them – with comments – in whatever order seems helpful.
- The user is initially asked whether they want to update the Timeline table.
- The processing of Functor_15 should be documented in my Note on Functors29, but it seems it’s just listed. As the processing works and is rarely used these days, further documentation isn’t a priority.
- The only operational point of interest is the location of the photos. This is in the ‘Photos/Notes/’ directory. Photos have to be moved there manually, and also copied from the local to the public website manually.
- Oh yes – the Note 1276 status has to be set to ‘Temp’ first, or the functor content isn’t refreshed.
Detailed processing – Generic Timelines
- Overview:
- These use Functor_16 to generate the table in the webpage, using the MS Access tables Photos_Raw and Photo_Narratives.
- This function is much more sophisticated than the items immediately above, and allows the importing of photos in bulk.
- The names of photo JPEGs are copied from the selected directory30 into the table Photos_Raw, classified by (currently) one of three photo-types, reflecting the four options above, ie:-
- Coxes Farm Repairs31: “CoxesFarmRepairs”.
- Coxes Farm Pre-Repairs32: “CoxesFarmPreRepairs”.
- Coxes Farm Gardens33: “CoxesFarmGardens”. For some reason 9 of these34 have Timeline = “CoxesFarmGarden” (singular).
- Henry35: “Henry”.
- Optionally, the photos themselves are copied to the Photos/Notes directory on the local copy of my website (they must be copied over manually to the live site).
- Large and small copies of the same photo are matched up – using the string immediately before the “. jpg36” to the preceding “_” (if any) – so that the small photo appears on the grid, for rapidity of loading, the large photo only being displayed on request.
- I found a useful free utility – Mass Image Compressor – that can compress images in bulk. It works fine, and quickly.
- The photos are segregated by month and displayed in descending date order. The date used is the “date taken” in the JPEG header, if there is one, otherwise a manually-entered date can be used. If both exist, the manually entered date takes precedence.
- Within the month bands, a further segregation is allowed by photo-subgroup.
- A narrative associated with each Month (or Subgroup within Month) can be entered to the Photo_Narratives table.
- A jump-table (by Month, not sub-group) appears at the top of the page to allow easy access to, and an overview of, the timeline. The Narrative for the month appears as a pop-up.
- An issue was display of portrait photos, which appeared as landscape in the grid, and when rotated distorted the grid unacceptably. I sorted this eventually, and flag such items – manually rotated using the standard Microsoft Photos utility – within Photos_Raw.
- A final issue was the date the photo was taken. This can often be deduced from the JPEG header, using a modified version of a utility I found on-line (now incorporated into GetProperty). Otherwise, the date can be encoded in the file-name, or physically typed in to the Photos_Raw table.
- Photo Preparation: Generic Timelines
- New photos can optionally be imported into the database and then incorporated into the web pages and exported to the website. Before this, they need to be made ready – that is, extracted from the camera and placed in the right directory at the right resolution.
- In general, as noted, I have two versions: a ‘small’ (compressed) version – which is what is initially presented on the page – and the original (full size, though this itself might have been compressed from the full-resolution photo captured by the camera) which is displayed if the ‘small’ version is clicked on.
- There’s a separate root directory for each of the three generic timelines, as noted below.
- Each of these directories has three sub-directories:-
- Originals: The latest batch.
- Compressed: The ‘small’ versions of the latest batch.
- Saved: Presumably37, a holding spot for multiple batches, while I decide what – if anything – to do with them after they have been processed. They are not really needed further, so can be deleted when the dust settles.
- The root directory ultimately – ie. before running the import routines – contains the contents of the ‘Originals’ and ‘Compressed’ directories.
- My policy – to make things easier – is to import more photos than will ultimately be selected – I can see how they look on the page and then fiddle with the control tables so superfluous ones are eliminated. How are the rejected items not copied over to the live and test sites?38
- So, how is the compression performed?39
- The following subroutines and functions are called into play:-
- cmdTimelines_Click:
- This (which is invoked for all the 9 timeline processes) does some pre-processing40 for the generic timelines:-
- Firstly certain parameters41 are set. The importance and use of these will be explained in due course:-
- If i = 6
→ Photo Query = "Coxes_Farm_Repairs"
→ Photo Type = "CoxesFarmRepairs"
→ Directory_From = "C:\Theo's Files\Coxes Farm Repairs\Photos_Import_Repairs\"
→ Message = "Import more Photos for Coxes_Farm_Repairs?"
- If i = 7
→ Photo Query = "Coxes_Farm_Pre_Repairs"
→ Photo Type = "CoxesFarmPreRepairs"
→ Directory_From = "C:\Theo's Files\Coxes Farm Repairs\Photos_Import_PreRepairs\"
→ Message = "Import more Photos for Coxes_Farm_Pre_Repairs?"
- If i = 8
→ Photo Query = "Coxes_Farm_Gardens"
→ Photo Type = "CoxesFarmGardens"
→ Directory_From = "C:\Theo's Files\Coxes Farm Repairs\Photos_Import_Garden\"
→ Message = "Import more Photos for Coxes_Farm_Gardens?"
- As can be inferred from the above, importing (more) photos from the selected directory is optional. If the answer to the above question(s) is ‘yes’, the following routines are called, in order:-
- Create_Timeline: with parameter set to 6 to 8 as necessary. Why is this important process run so early?42
- Photo_Preparation: with parameter ‘Photo Type’.
- Photo_Copy: with parameters Photo Query and Directory_From (set above).
- Then, optionally, the Photo_Narratives table is updated manually to add or amend monthly titles for the timeline. The process STOPs while any updates are performed.
- Next, optionally, we can update the Photos_Raw table (to add / amend the narratives of or include / exclude individual photos). The process STOPs while any updates are performed. On resumption, sub Photo_Preparation is run, with parameter Photo Type (set above).
- Finally, though optionally, the timeline web page is output. CreateNotesWebPages is called after a row is inserted on an emptied Notes_To_Regen table – after the usual parameters (global variables) on are set. The user is reminded that the status of the relevant Note has to be set to ‘Temp’ for the Functor to re-import new data. I should update the Note status automatically! Again, this processing is repeated in the code for each of the three ‘generic’ options. It should be parameterised.
- The process then terminates.
- All the above can be performed – and refined – iteratively by re-running the process from the top.
- Create_Timeline:
- This is the controlling routine. We start by decoding the parameter43:-
- Case 6
→ DirectoryName = "C:\Theo's Files\Coxes Farm Repairs\Photos_Import_Repairs"
→ Photo_Type = "CoxesFarmRepairs"
→ Photo_Source = "iPhone"
- Case 7
→ DirectoryName = "C:\Theo's Files\Coxes Farm Repairs\Photos_Import_PreRepairs"
→ Photo_Type = "CoxesFarmPreRepairs"
→ Photo_Source = "iPhone"
- Case 8
→ DirectoryName = "C:\Theo's Files\Coxes Farm Repairs\Photos_Import_Garden"
→ Photo_Type = "CoxesFarmGardens"
→ Photo_Source = "iPhone"
- The process now reads through all the files in the supplied directory and checks if44 the file name is in the Photos_Raw table, adding it if it is not.
- Before adding the record, ‘.JPG’ is converted to ‘.jpg’ in the file name.
- Then up to three dates are extracted:-
- If the file name starts with ‘CF_’ it is assumed to contain a date in ‘YYMMDD’ format. This is parsed and placed in Photo_Timestamp_Manual.
- The file creation date is placed in File_Timestamp_Created
- Sub GetProperty is called to extract property 12 from the JPEG header. This is parsed and if it’s a date in the correct format it’s placed in File_Timestamp.
- The file size is placed in File_Size.
- After reading in all the records, a msgbox is opened showing how many files45 have been imported. When this is OKed, the sub is exited.
- GetProperty:
- This is a modified version of a bit of freeware found on-line (originally in VB). It returns “Property n” from the JPEG header. I only use it with n=12, which is “date photo taken”. It is not always set.
- Photo_Preparation:
- This is a fairly complex subroutine that performs a sequence of tasks on the Photos_Raw table for all rows for the requested Photo Type (this is set in the calling subroutine to the generic timeline under preparation).
- The following three fields are set up:-
- Photo_Source: Initially taken from Photos_Raw, but if the file name contains ‘P101’ it is changed to ‘Olympus Digital Camera’.
- Photo_Popup_Title: Set up as a concatenation of:-
→ File Name
→ Photo Source
→ File Timestamp
→ Photo Narrative
- Link_Key: This is taken from the File name: it’s usually the text between the final ‘_’ and ‘[. jpg. jpg46’. If there’s no such thing, it’s ‘None_’ concatenated with the Photo ID (though there are none of these at present).
- The corresponding fields in Photos_Raw are then updated with these values.
- Next, the Photos_Raw table is re-read in descending Photo_Size within Link_Key sequence, ignoring those already flagged as Excluded. Basically, by moving back and forth on this file, photos of size < 1Mb are flagged as “Medium’, otherwise ‘Full’. If there’s more than one ‘Medium’ photo for the same Link_Key, the earlier (larger) is flagged ‘Medium - Larger’.
- We now check for inconsistent Photo-Types between different-sized images of the same photo:-
- Rows are added to a ‘dummy47’ table of link-keys: Photo_Raw_Excluded_Link_Keys using query Photo_Type_Goup_Counts which in turn runs off Photo_Type_Goupings. The idea is to check that the same Link Key isn’t associated with more than one Photo Type (Timeline).
- If there are, query Photos_Raw_MultiType_List is opened which allows Photos_Raw to be edited – basically allowing errant photos to be excluded.
- The process STOPs while this manual update is undertaken.
- We now check for inconsistent "exclusions".
- Query Photo_Raw_Excluded_Link_KeysQ is used to add the keys of excluded photos to Photo_Raw_Excluded_Link_Keys.
- Then query Photos_Raw_Excluded_Inconsistencies is run off this table as a recordset. If this recordset has more than three columns, it indicates inconsistencies.
- in this case, the following two queries are opened48:-
→ Photos_Raw_Excluded, and
→ Photos_Raw_Excluded_Errors
- The process STOPs while Photos_Raw_Excluded is used to update the now easily accessible rows of table Photos_Raw.
- The query Photos_Raw_Excluded_Errors appears to be corrupt, having invalid field names.
- Finally, check for where 3 or more photos for same ID are not excluded:-
- Query Photo_Raw_Non_Excluded_Triplets adds rows – if any – to the generic49 keys table Photo_Raw_Excluded_Link_Keys.
- If the table is non-empty, Photos_Raw_Excluded is opened.
- The process STOPs while Photos_Raw_Excluded is used to update the now easily accessible rows of table Photos_Raw.
- Compressed_Photos_Copy:
- This is a routine that copies already compressed images from a selected directory and copies them to another selected directory, prefixing the file name with “Small_”. This is just to save me the bother of pasting in “Small_” so many times and making errors!
- Files are copied from a generic directory C:\Theo's Files\Coxes Farm Repairs\General_Temp_Import\Compressed .I’m not sure why it’s not the Compressed sub-directory
- Currently, the ‘copy to’ directory is hard-coded and not parameterised: it needs to be changed manually for each different timeline run. Currently set to ‘C:\Theo's Files\Coxes Farm Repairs\Photos_Import_Repairs\’. I need to fix this. As noted above, they are copied with ‘Small_’ prefixed. Also note that this is the root, rather than the ‘Compressed’ directory for this timeline.
- A check is made that the file doesn’t already exist in the ‘copy to’ directory. Files are not overwritten. Instead the process STOPs. I’m not sure what I’m to do50 as it continues with the next file thereafter. I suppose I could terminate the process and investigate.
- Photo_Copy:
- Copies photos to the ‘C:\Theo's Files\Websites\Theo's Website\Photos\Notes\’.
- It is called with two parameters:-
→ strPhotoQuery, and
→ Directory_From
- These were set when the Timeline was selected from the menu.
- Both the Full and Medium JPEGS are copied (names taken from columns 1 – Photo_FileName – and 10 – Matching_Photo_FileName). The ‘Medium’ JPEG usually has ‘Small_’ prefixed!
- Already-existing photos are not overwritten (the processing just carries on).
- Photo_Copy2:
- There are two runs51:-
- The first orders the photos from disk so they can be matched to those taken from the iPhone
- The second prefixes the date to the front (with a CF_ prefix), with the original ID to the rear
- The driving query is Coxes_Farm_Photos_Backup:-
- Runs off the Backup_Site_Map table52,
- This query selects anything from ‘C:\Theo's Files\Photos\Coxes Farm\’, but
- Ignores items for:-
→ Root
→ "Coxes Farm_201307\" And <>
→ "Lych_Gate\"
→ "Survey\"
→ "Sylvia\"
→ "Coxes Farm Selective Delapidations\"
- The process outputs to directory "C:\Theo's Files\Photos\Coxes Farm\Temp\".
- … to be completed, maybe! The process doesn’t seem to be called from anywhere else in the system.
- Images_Add:
- This Function is called by53 ImageRef to add rows concerning images – in this case photos – to the Images table.
- There are four parameters:-
- Directory: this seems to be unused!
- Image Reference: This is the File Name54 of the image.
- SRC?
- Link?
- The function returns the Image ID (the autonumber generated for new Images) or ‘9999’ for already-existing Images as the value of the function.
- The Images table holds the Image ID (autonumber), the Image’s Directory and File Name the timestamp and two Y/N flags55.
- The directory is always set to ‘C:\Theo's Files\Websites\Theo's Website\Photos\Notes\’. So, what’s the parameter for?
- The File Name is set to the Image Ref, unless this is more than 250 characters long, in which case56 an error is presumed and ‘Dud: ‘ is prefixed to the leftmost 250 characters of the Image Ref.
- The timestamp is always set to ‘Now’. This means that after a full website regen, all the active Image rows have timestamps set to when the regen ran. At least thereby we can see which Images are active!
- If a new row is being added, SRC? And Link? are set from the parameters. If it’s an update, they are updated only if the parameters are set to ‘True’.
- Functor_16:
- The processing of Functor_16 should be documented in my Note on Functors57, but it seems it’s just listed.
- I’ll document it here for now, then maybe move it.
- The Functor is called with 3 parameters: Note_ID, Note_Title, Note_Text
- The query selection – based on Note_ID – is a bit clunky, and requires making more generic:-
→ 1278: Coxes_Farm_Repairs
→ 1282: Coxes_Farm_Pre_Repairs
→ 1283: Coxes_Farm_Gardens
- Next, we create the ‘monthly’ jump table that appears before the monthly-segmented elements of the page.
- A query is constructed from the Photo_Narratives table, selecting rows for this Timeline (using the Photo_Type from the first column of the main query, which identifies the Timeline.) Only level 0 rows are selected.
- Photo_Type, Photo_Month, Photo_Year and Photo_Narrative are selected, rows being returned in descending date sequence, those without a date appearing at the end as ‘Unknown Date’.
- The jump-table has 12 columns58
- As many rows as needed are added.
- Entries in the table have the Year+Month in the visible text, and the Photo_Narrative as a ‘mouse-over’ pop-up. There’s a hyperlink to the relevant section in the main text.
- Entries are padded out with blanks to the end of the row as necessary.
- The Photo_Narrative has any bulleting, line feeds and hyperlinks removed for when it appears in the pop-up.
This Note is awaiting further attention59.
In-Page Footnotes:
Footnote 1:
- Or will do, once it has been completed!
Footnote 11:
- I ought also to split out the trivial issues into a ‘minor developments’ timeline.
Footnote 14:
- Though I need to investigate why 9 items have ‘Timeline’ set to ‘CoxesFarmGarden’ singular.
Footnote 19:
- I’m not sure of use. Sequencing?
Footnotes 20, 21, 37, 38, 39, 42, 50:
- Why is this? Check it out.
Footnote 30:
- These are hard-coded separately for the three current timelines, as documented later).
Footnote 34:
- These require investigation.
Footnotes 36, 46:
- Sub ImageRef is supposed to cope with documentary references to JPEGS, but it doesn’t seem to in this instance and the code STOPs.
- I need to sort this out sometime, but I’ve circumvented it for now by inserting a space between ‘.’ and ‘jpg’.
Footnote 40:
- The code is currently needlessly repetitive, having been initially created when there was only one timeline and then cloned twice.
- I intend to make this truly generic before expanding the functionality to cover a multitude of timelines.
- It has occurred to me that some timelines – for holidays, say, should be daily rather than monthly. This might be a significant – though useful – development.
Footnote 41:
- These ought to be in a parameter table.
Footnote 43:
- Firstly, I ought to send these parameters directly, or hold them in a table to save having long strings held in multiple places.
- Secondly, ‘iPhone’ is hard-coded: while it’s the only source of photos now, not so in the past. What to do with catch-up timelines?
Footnote 44:
- Given the ‘too many databases bug in MS Access, it may be best not to check and just have an ‘On error resume next’ error condition.
Footnote 45:
- The count is only incremented if the record is actually added, so the ‘resume next’ wheeze wouldn’t quite work. We’d need a ‘go to’ of some sort within the loop.
Footnotes 47, 49:
- This is lazy – I should use another table (or make the name more generic).
Footnote 48: Footnote 51:
- I have no idea whether this is a Sub that is still run … requires further investigation.
- The process is quite complex, and I’ll document it if and when I know it’s still used.
Footnote 52:
- So, it requires the Backup system to be running!
Footnote 53:
- ImageRef is a highly complex function that needs documenting. Without this, I don’t know what the Y/N flags are for.
- I had thought that Images would appear as ‘+InnnI+ analogous to other Reference Functions, but it seems not. Maybe I intended this but didn’t go through with it.
Footnote 54:
- Except – looking at the data in the table – in 124 of 1479 rows this isn’t a file name itself but refers to one in brackets.
- Eg. ‘CoxesFarm (iPhone - 03/01/2018 09:18:00 - CF_180103_1147.jpg)’
- These all have SRC? False and Link? True.
- It seems that the file name in brackets also appears in the Images table.
Footnote 55:
- I don’t currently know what these represent.
- They are sent or returned as parameters.
Footnote 56:
- There is one actual example of this – ref 1752, timestamped 25/10/24, so not ‘regenerated’ – which came from this Note! Search on ‘P101’ above.
- Quite how it got there escapes me. I vaguely remember the code STOPing in ImageRef.
- Interestingly, the check in ImageRef is on 100-characters, so there’s another instance – again from this Note, same date – without ‘Dud: ‘ prefixed! It’s in a footnote that uses the string ‘.jpg’. Maybe this will cause another instance!
- Indeed it did! It caused two ‘STOPs’ and a duplicate key on the insert. I got round the latter by adding a ‘Resume Next’, and changed the ‘STOP’ to a ‘Debug.print’.
Footnote 58:
- The number ‘12’ doesn’t equate to the number of months in a year, as not all months for a year are represented.
- The processing here might be improved to allow for more flexibility.
Previous Version of this Note:
Summary of Notes Referenced by This Note
To access information, click on one of the links in the table above.
Summary of Notes Citing This Note
Status: Priority Task List (2025 - May), 2, 3, 4 |
Status: Summary (2025 - March), 2, 3, 4 |
Status: Summary Task List (YTD: 24Q4 - 25Q2), 2 |
Status: Web-Tools (2025 - March), 2, 3 |
Website - Outstanding Developments (2025 - May), 2, 3, 4, 5, 6, 7, 8 |
Website Generator Documentation - Backups, 2, 3, 4 |
Website Generator Documentation - Control Page |
Website Generator Documentation - Functors, 2, 3, 4 |
|
|
To access information, click on one of the links in the table above.
Text Colour Conventions
- Blue: Text by me; © Theo Todman, 2025