Extension talk:Cargo
Self-Inflicted Duplicate Issue[edit]
Putting the solution at the top!
Don't do this: My MediaWiki Page -> My Template #1 -> Cargo Query using Template #2 for display -> Template #2 stores Cargo data.
Re-using Template #2 caused rebuilding of the associated Cargo database to pick up on My Mediawiki Page as something to include in Cargo despite the exact same data being present in Template #2.
Thanks to Yaron Koren for patiently debugging my recursive template usage issue.
Original problem follows...
This isn't a recurrence of the duplicate rows issue that cropped up in 2021. I am 99.9% sure it's self-inflicted.
Steps
- Import page data from Excel into MyCargoDB. All pages are prefixed with CARGO ("CARGO_MyPageName") because they're data, not to be looked at directly by readers.
- The template MyTemplate queries data pulled into Cargo from the imported CARGO pages.
- Page called MyPageName uses MyTemplate to display data pulled into Cargo from CARGO_MyPageName.
- Rebuild MyCargoDB.
- Now MyPageName using MyTemplate displays Cargo data twice.
- The view in Cargo Tables of MyCargoDB shows CARGO_MyPageName AND now MyPageName which explains why it's appearing twice.
- If this keeps up I'll have 150 duplicates.
I'm not sure what mistake I've made to create this circular import into Cargo.
SovereignGFC (talk) 15:06, 2 May 2023 (UTC)
- That first step sounds odd - are you directly creating a table within the database? If so, you shouldn't do that - the data stored by Cargo should always reflect what's in the wikitext. Could that be the issue? Yaron Koren (talk) 02:56, 3 May 2023 (UTC)
- Apologies, I am not directly creating a table. I import through an extension that creates wiki pages from said Excel sheet that match MyTemplate.
- After importing, I immediately execute runJobs.php.
- I then Recreate data on MyCargoDB.
- If any MyPageName using MyTemplate that got put into MyCargoDB exists at that point, MyCargoDB gains an entry from MyPageName even though MyCargoDB was already populated by MyTemplate. SovereignGFC (talk) 22:02, 3 May 2023 (UTC)
- Okay, never mind. Well, it's strange that pages that look simply like "MyPageName" are showing up as holding Cargo data - even though they're meant to only display, not store, Cargo data. What exactly is in the template "MyTemplate"? Yaron Koren (talk) 14:30, 4 May 2023 (UTC)
- MyTemplate is NOT a Cargo-generated template. It is an actual page template that DOES contain Cargo queries using templates created by Cargo's Create a class. SovereignGFC (talk) 01:11, 5 May 2023 (UTC)
- Well, does MyTemplate contain a call to #cargo_store? And if not, how are the pages that call it getting Cargo data stored for them? Yaron Koren (talk) 17:32, 5 May 2023 (UTC)
- MyTemplate does not have calls to #cargo_store.
- MyPageName -> MyTemplate -> Cargo query in MyTemplate -> Separate Cargo-specific pages/templates referenced in query. SovereignGFC (talk) 18:29, 5 May 2023 (UTC)
- Alright. Well, barring more information about your setup, I'm totally stumped - I have no idea how pages like MyPageName could show up in Special:CargoTables. Yaron Koren (talk) 18:43, 5 May 2023 (UTC)
- What additional information might be helpful? SovereignGFC (talk) 00:50, 6 May 2023 (UTC)
- The contents of MyPageName and MyTemplate, I suppose. Yaron Koren (talk) 13:29, 7 May 2023 (UTC)
- What additional information might be helpful? SovereignGFC (talk) 00:50, 6 May 2023 (UTC)
- Alright. Well, barring more information about your setup, I'm totally stumped - I have no idea how pages like MyPageName could show up in Special:CargoTables. Yaron Koren (talk) 18:43, 5 May 2023 (UTC)
- Well, does MyTemplate contain a call to #cargo_store? And if not, how are the pages that call it getting Cargo data stored for them? Yaron Koren (talk) 17:32, 5 May 2023 (UTC)
- MyTemplate is NOT a Cargo-generated template. It is an actual page template that DOES contain Cargo queries using templates created by Cargo's Create a class. SovereignGFC (talk) 01:11, 5 May 2023 (UTC)
- Okay, never mind. Well, it's strange that pages that look simply like "MyPageName" are showing up as holding Cargo data - even though they're meant to only display, not store, Cargo data. What exactly is in the template "MyTemplate"? Yaron Koren (talk) 14:30, 4 May 2023 (UTC)
Header in dynamic table[edit]
How to change header in dynamic table?
Tamplate: {{#cargo_query:
tables=Items
|fields=CONCAT( '{{item icon|', Items.name, '}}' )
|format=dynamic table
}}
Table header looks like this:
name, '}}' )
|
---|
Item |
Item |
Thanks! -- Oleksii 212.80.47.83 06:58, 6 May 2023 (UTC)
- Add something like "=ColumnName" after the final ")" - i.e., set an alias for the field. Yaron Koren (talk) 13:30, 7 May 2023 (UTC)
- how to display format=dynamic table in Lua?
local args = {
where = '...',
limit='10',
format='dynamic table',
orderBy = '_pageName',
}- the word 'format' seems to be a Lua reserved word
- --Oleksii 212.80.47.83 15:55, 7 May 2023 (UTC)
- There might not be any way to display result formats from within a Lua Cargo query - I'm not sure. Yaron Koren (talk) 02:42, 8 May 2023 (UTC)
WITHIN statement error when a Hierarchy item has an apostrophe[edit]
I have a hierarchy definition in a template that includes the item "St. Mary's Anglican Church". When I try to query this with a WITHIN statement, I get an error that appears to split this at the apostrophe:
WHERE Collection IN ( SELECT `_value` FROM `cargo__CollectedIn__Collection__hierarchy` WHERE `_left` >= ( SELECT `_left` FROM `cargo__CollectedIn__Collection__hierarchy` WHERE `_value` = "St. Mary' ) AND `_right` <= ( SELECT `_right` FROM `cargo__CollectedIn__Collection__hierarchy` WHERE `_value` = "St. Mary' ) )s Anglican Church") ORDER BY `cargo__Collection`.`_pageID`,`cargo__Collection`.`_pageName`
. When I put double-quotes around a string with an apostrophe in a WHERE clause this seems to work fine. Is this a bug or am I writing the query wrong? Thanks! Tenbergen (talk) 04:10, 9 May 2023 (UTC)
Recreate and 500 Line Bug Again[edit]
- MediaWiki 1.39.3
- Cargo 3.4.2
When I kick off re-create data from the Cargo tables page, it gets stuck at 500 lines.
When I import a spreadsheet to that same table/template with 500+ lines and execute runJobs.php, the table populates.
What additional diagnostic or debugging data can I provide? SovereignGFC (talk) 03:40, 13 May 2023 (UTC)
- Sorry, I missed this before. Do you see any errors in the browser's JavaScript console? Yaron Koren (talk) 02:37, 29 May 2023 (UTC)
- Now that the backup function (export to Excel which keeps my special character filled text intact) works thanks to the phpspreadsheet update, I was able to test this.
- Open browser dev/debug tools.
- Recreate data link on template page, Cargo view all tables page (line of the table), or Cargo table (table to be recreated).
- ...no errors detected. The command to recreate data just returns a 200 OK.
- Invoke runJobs.php. Observe that only 500 rows exist.
- SovereignGFC (talk) 01:32, 2 June 2023 (UTC)
- Now that the backup function (export to Excel which keeps my special character filled text intact) works thanks to the phpspreadsheet update, I was able to test this.
Vertical list of names be grouped by the initial letters[edit]
Sorry if my question has already been asked here, but I have just started using Cargo. How could a vertical list of names (from Cargo databases) be grouped by the letters of the alphabet using a Cargo query? Lalo5555 (talk) 08:49, 27 May 2023 (UTC)
- If you use the "category" format, it will provide a display that's hopefully close enough to what you are looking for. Yaron Koren (talk) 02:36, 29 May 2023 (UTC)
Export as Excel, Composer, What Did I Miss?[edit]
(This is preventing me from properly testing the 500-line recreate bug as I want to back up my big table beforehand!)
When I try to export as Excel, I get a 500 internal server error when I click on the link to download. Unfortunately, even with MediaWiki debug on, that's all I do get:
HTTP/1.1 500 Internal Server Error Date: Wed, 31 May 2023 02:41:54 GMT Server: Apache X-Powered-By: PHP/7.4.33 X-Content-Type-Options: nosniff X-Request-Id: ZHaz8pqI3nmiV89-O7ng8wAAAss Strict-Transport-Security: max-age=63072000; includeSubDomains X-Frame-Options: SAMEORIGIN Content-Length: 0 Connection: close Content-Type: text/html; charset=UTF-8
I have Composer installed at the same level of directory as MediaWiki and I confirm that phpoffice/phpspreadsheet is installed (1.19.0). I know it works because I can import spreadsheets just fine...but not export for some reason. SovereignGFC (talk) 02:46, 31 May 2023 (UTC)
- The "excel" format code is very old, and it actually uses the PHPExcel library, not PhpSpreadsheet. Yaron Koren (talk) 13:04, 31 May 2023 (UTC)
- Inspired by this discussion, I just added support for PhpSpreadsheet to the "excel" format. At least, in theory - I haven't actually tried running it. But there's a chance that it works! Yaron Koren (talk) 15:54, 1 June 2023 (UTC)
- Can confirm this works!
- I did the very proper and sophisticated thing of "copy entire single changed file and paste text into existing version" before running the query.
- All 800+ items exported without issue. SovereignGFC (talk) 00:51, 2 June 2023 (UTC)
- That's great to hear! Yaron Koren (talk) 02:44, 2 June 2023 (UTC)
- Inspired by this discussion, I just added support for PhpSpreadsheet to the "excel" format. At least, in theory - I haven't actually tried running it. But there's a chance that it works! Yaron Koren (talk) 15:54, 1 June 2023 (UTC)