@seann good point, I could just put the collections directly in the module rather than the config, that would do it. @parnic suggested using profile switcher, or at least there may be functionality to grab. I should be able to take it from here – pretty simple. The most time-consuming part will be creating the collection of collections.
Read the statement by Michael Teeuw here.
Posts
-
RE: Conditional formatting of config (e.g., MMM-Unsplash)
-
Conditional formatting of config (e.g., MMM-Unsplash)
Is it possible to have conditional statements in the config? For example, for MMM-Unsplash, to have separate image collections for time of day, season, etc.?
-
RE: MMM-MealViewer
So I now get the following table:
Elementary Lunch
Entree “Bold” Cheese Pizza
Entree “Bold” Pepperoni Pizza
Vegetable Parmesan Butternut Gratin
Vegetable Seasoned Green Beans
Elementary Alternative
Entree Chef Salad
Entree Bologna & Cheese SandwichThe foodItemType in the first column and the foodItemName in the second column are siblings in the data array.
I’d like turn the first occurrence of foodItemType into a category so the table looks like this (ignore the spacing hyphens):
Elementary Lunch
Entree “Bold” Cheese Pizza
--------------“Bold” Pepperoni Pizza
Vegetable Parmesan Butternut Gratin
-------------------Seasoned Green Beans
Elementary Alternative
Entree Chef Salad
-------------Bologna & Cheese SandwichHere’s the current loop that creates the table. Any help would be appreciated.
// Iterate through the cafeteria lines for the school for (var j = 0; j < this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data.length; j++) { if (this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data[j].name !== 'Elmwood Vegetarian Hot Entree') { // Set up header row with the cafeteria line name cafeteriaLineRow = document.createElement("tr"); cafeteriaLineName = document.createElement("td"); cafeteriaLineName.innerHTML = this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data[j].name.replace("Elmwood Elementary", "Elementary Lunch").replace("Elmwood Alternative", "Elementary Alternative"); cafeteriaLineRow.appendChild(cafeteriaLineName); wrapper.appendChild(cafeteriaLineRow); // Iterate through the menu items for the cafeteria line for (var k = 0; k < this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data[j].foodItemList.data.length; k++) { if (this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data[j].foodItemList.data[k].item_Name !== 'Choice Of:') { foodItemTypeRow = documen t.createElement("tr"); foodItemType = document.createElement("td"); foodItemType.innerHTML = this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data[j].foodItemList.data[k].item_Type; foodItemName = document.createElement("td"); foodItemName.innerHTML = this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data[j].foodItemList.data[k].item_Name; foodItemTypeRow.appendChild(foodItemType); wrapper.appendChild(foodItemTypeRow); foodItemTypeRow.appendChild(foodItemName); wrapper.appendChild(foodItemTypeRow); } } } }
-
RE: MMM-MealViewer
MAJOR EDIT, MAJOR DUMMIE: helps if you append the rows to the table… Success! Now for some CSS.
@cowboysdude I edited my earlier post… minor detail about it being the weekend and not being able to pull lunch data for a day with no school. Now just having getting the data to show up in the table…
It will display the “loading” message, but then it’s blank when this.loaded = true. I outputted the innerHTML values to console and they’re all there. Not sure why they won’t show up in the DOM.
getDom: function() { // Set up the local wrapper var wrapper = null; // If we have some data to display then build the results table if (this.loaded) { wrapper = document.createElement("table"); // Iterate through the schools for (var i = 0; i < this.results.length; i++) { // Set up header row with the school name schoolRow = document.createElement("tr"); schoolName = document.createElement("td"); schoolName.innerHTML = this.results[i].physicalLocation.name; schoolRow.appendChild(schoolName); // Iterate through the cafeteria lines for the school for (var j = 0; j < this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data.length; j++) { // Set up header row with the cafeteria line name cafeteriaLineRow = document.createElement("tr"); cafeteriaLineName = document.createElement("td"); cafeteriaLineName.innerHTML = this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data[j].name; cafeteriaLineRow.appendChild(cafeteriaLineName); // Iterate through the menu items for the cafeteria line for (var k = 0; k < this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data[j].foodItemList.data.length; k++) { foodItemRow = document.createElement("tr"); foodItemType = document.createElement("td"); foodItemType.innerHTML = this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data[j].foodItemList.data[k].item_Type; foodItemName = document.createElement("td"); foodItemName.innerHTML = this.results[i].menuSchedules[0].menuBlocks[0].cafeteriaLineList.data[j].foodItemList.data[k].item_Name; foodItemRow.appendChild(foodItemType); foodItemRow.appendChild(foodItemName); } } } } else { // Otherwise lets just use a simple div wrapper = document.createElement('div'); wrapper.innerHTML = 'Loading menu data...'; } return wrapper; },
-
RE: MMM-MealViewer
But now I seem to have gotten myself into a pickle. I tried expanding the functionality to add a date range and multiple schools and, of course, I broke it. It’s doing the same thing as before where the ‘cafeteriaLineList’ property is stripped out of the helper results…
EDIT:
LOL, it’s the weekend and I had it pulling just for today, Sunday. Of course there’s no data. Dumb da dumb dumb… -
MMM-MealViewer
I’m trying to develop a module to get today’s school lunch menu options from my kids’ school. The district uses a service provided by mealviewer.com. The API is available at https://api.mealviewer.com/api/v4/school/[schoolname]/[date range start MM-DD-YYYY]/[date range end MM-DD-YYYY]/. To keep it simple I’m only pulling the current day so the start and end date values are the same.
Here’s an example: https://api.mealviewer.com/api/v4/school/ElmwoodElementary/02-15-2019/02-15-2019/
You can see that there is a TON of XML data returned. I’m only interested in the [CafeteriaLine] nodes and each of their respective [FoodItem] nodes and then the respective [Item_Type] and [Item_Name] for each [FoodItem].
I’m able to send an HTTP request and get (some) data but, unfortunately, most of the nonsense is returned and I don’t see the menu information. It’s like a big chunk out of the middle of the XML data is missing, whether I dump it out to the log before or after parsing it to JSON.
Any thoughts?