[Feature Request] Allow setting of initial view in HTML Report

Hi, I'm hoping to start publishing models to a wider community who are not Archi users, and the HTML Report is a great starting point for this. However I'm finding users are confused because the inital view when they open the report is blank, and they don't know where to navigate to.
I can of course create a "Start here" canvas view with explanatory text and links to the relevant views for different stakeholders, but I would like this view to be automatically loaded when the user opens the HTML report. I saw from a forum post that this can be done by some post-processing of the generated HTML, but I suspect this would be a very simple feature to implement at export time. Could we perhaps set a "default.html.view=true" property on the view we want to be displayed, which the report generator then picks up?

Hi,

However I'm finding users are confused because the inital view when they open the report is blank, and they don't know where to navigate to

In fact it should not be blank. This is the page generated using the model element itself, thus you should put at least some description there (the Purpose field in Archi when the model name is selected).

I can of course create a "Start here" canvas view [...] but I would like this view to be automatically loaded

I have the exact same need ;-)

I suspect this would be a very simple feature to implement at export time

Well... in fact no. The report is generated using a template engine. This engine (Stringtemplate) can only check if an attribute exists, but not its value, so this limits a lot the kind of features you are suggesting.
That being said, I'm working on an enhanced version of the HTML report that will also include a dump of the model in an embedded JS based database. Maybe this could help access some properties at run time.

Hi, thanks for responding to this request. I was wrong about the initial page being "blank", but because documentation is unstyled text, the content tends to be not very noticeable - better than nothing, but a very different experience from a view with Archimate or Canvas elements and links.
I'll probably try a script for post-processing the HTML as a short-term fix, but your solution of an embedded database sounds very interesting. I wish I had the right skills to help out. Archi has reached a level of maturity where it is getting close to meeting my team's core needs - a fantastic tool.

Suggest alasql if looking for JavaScript database.  Has some great features which I think should greatly assist.

Suggest alasql if looking for JavaScript database. Has some great features which I think should greatly assist.

It already uses alasql. I discovered it some years ago and that's a really great solution. It can be used as a relational DB, but also as a graph DB and I should also explore this.
If you have any experiences or ideas, please share ;-)

I am playing with it on node.js.  having to fix to handle async.  Have forked and partly working.  Started on journey as I wanted function for data in on parameter to find out it was already there but undocumented.  Seems deliberate but could have been by accident of coding.
Can see using it with visjs to achieve dynamic nodal diagrams very easily.  Was playing with it to test generating XML from tableau server.

I have the same need to select an initial view of HTML report.
Can we summarise the progress on this topic since 2018?
As I can see, alasql is now part of HTML reports as a separate tab. What resources would you suggest on customizing or post-processing HTML reports? For example, except of the initial view, I would like to embed some comments integration.

I have changed the model.js included with the HTML report to allow for linking directly to a view. It doesn't change the initial view, but you could simply link to whichever initial view you like. With this change, clicking a view changes the URL, and the URL refers to the view's ID. If this is something the devs would like to include with Archi I'd be happy to do a PR, or you're welcome to just take it.
I plan to set up CI so that when I push a commit of my Archi model it triggers a build that generates the HTML report using the CLI, replaces model.js, and publishes the updated drawing.
This is the code I added to the bottom of the document ready function:
	let $viewLinks = $("a[href][target='view']");
	$viewLinks.on('click', function (event) {
		const id = event.currentTarget.href.split("/").pop().slice(0, -5);
		window.location.hash = '#' + id;
		event.stopPropagation();
		return false;
	});
	function openViewFromHash(e) {
		const isInitialLoad = e === undefined;
		const targetId = window.location.hash.substr(1);
		const matchingLinks = $viewLinks.filter(function (index, element) {
			const id = element.href.split("/").pop().slice(0, -5);
			return id === targetId;
		});
		const link = matchingLinks[0];
		if (link) {
			const $link = $(link);
			$("iframe[name='view']").attr('src', $link.attr('href'));
			if (isInitialLoad) {
				let spans = [];
				let $parentListItem = $link.parent().parent().parent();
				while ($parentListItem[0].tagName === 'LI') {
					spans.push($parentListItem.children().first());
					$parentListItem = $parentListItem.parent().parent();
				}
				while (spans.length) {
					spans.pop().click();
				}
			}
		}
	}
	openViewFromHash(); //Read initial hash on page load
	$(window).on('hashchange', openViewFromHash);

Disclaimer: I have not given this code extensive testing - it is hot off the press.

I have changed the model.js included with the HTML report to allow for linking directly to a view. It doesn't change the initial view, but you could simply link to whichever initial view you like. With this change, clicking a view changes the URL, and the URL refers to the view's ID. If this is something the devs would like to include with Archi I'd be happy to do a PR, or you're welcome to just take it.
I plan to set up CI so that when I push a commit of my Archi model it triggers a build that generates the HTML report using the CLI, replaces model.js, and publishes the updated drawing.
This is the code I added to the bottom of the document ready function:
	let $viewLinks = $("a[href][target='view']");
	$viewLinks.on('click', function (event) {
		const id = event.currentTarget.href.split("/").pop().slice(0, -5);
		window.location.hash = '#' + id;
		event.stopPropagation();
		return false;
	});
	function openViewFromHash(e) {
		const isInitialLoad = e === undefined;
		const targetId = window.location.hash.substr(1);
		const matchingLinks = $viewLinks.filter(function (index, element) {
			const id = element.href.split("/").pop().slice(0, -5);
			return id === targetId;
		});
		const link = matchingLinks[0];
		if (link) {
			const $link = $(link);
			$("iframe[name='view']").attr('src', $link.attr('href'));
			if (isInitialLoad) {
				let spans = [];
				let $parentListItem = $link.parent().parent().parent();
				while ($parentListItem[0].tagName === 'LI') {
					spans.push($parentListItem.children().first());
					$parentListItem = $parentListItem.parent().parent();
				}
				while (spans.length) {
					spans.pop().click();
				}
			}
		}
	}
	openViewFromHash(); //Read initial hash on page load
	$(window).on('hashchange', openViewFromHash);

Disclaimer: I have not given this code extensive testing - it is hot off the press.

@vic51 Thanks for that, it might be useful, although needs @jbsarrodie to look at it.

@vic51 Thanks for that, it might be useful, although needs @jbsarrodie to look at it.

Thank you for this code. That's an interresting approach which limits impact on other parts of the report. I'll test it this week and will commit it in a new branch.

Thank you for this code. That's an interresting approach which limits impact on other parts of the report. I'll test it this week and will commit it in a new branch.

It's a lot of JS to get the URL to display in the bar. What's stopping the URL being updated in the first place? Or some other way to get the link - with a right-click, copy link menu?

It's a lot of JS to get the URL to display in the bar. What's stopping the URL being updated in the first place? Or some other way to get the link - with a right-click, copy link menu?

It's a lot of JS to get the URL to display in the bar. What's stopping the URL being updated in the first place?

The way the report works (through iframes) there is no other way of doing it. Thisis how I would have implemented it with current contraints. That's also very similar to some attempts I made on other versions of the report.

Or some other way to get the link - with a right-click, copy link menu?

This does not address the same need because a direct link to a view of diagram doesn't show the navigation menu.
In short that the right way to do it. I simply have to test it a bit more before including it.

It's a lot of JS to get the URL to display in the bar. What's stopping the URL being updated in the first place?

The way the report works (through iframes) there is no other way of doing it. Thisis how I would have implemented it with current contraints. That's also very similar to some attempts I made on other versions of the report.

Or some other way to get the link - with a right-click, copy link menu?

This does not address the same need because a direct link to a view of diagram doesn't show the navigation menu.
In short that the right way to do it. I simply have to test it a bit more before including it.

In short that the right way to do it.

OK, just trying to throw out alternate thinking before going with it. i.e. is the use case to display the URL or a convenient way to get it?

In short that the right way to do it.

OK, just trying to throw out alternate thinking before going with it. i.e. is the use case to display the URL or a convenient way to get it?

is the use case to display the URL or a convenient way to get it?

The use case it to enable deeplink: ie. a mean for users to bookmark or share a link to the report with a chosen view already opened. This makes it possible (for example) to add links to specific views inside other architecture documents or wikis.
So the easiest way for users to bookmark or share the page is to simply update the browser's URL. In fact the proposed code acts as a very light JS router. I've seen much worse and big implementations for this kind of stuff, so that's a good start.
That was listed on my ideas for a new version of the report

is the use case to display the URL or a convenient way to get it?

The use case it to enable deeplink: ie. a mean for users to bookmark or share a link to the report with a chosen view already opened. This makes it possible (for example) to add links to specific views inside other architecture documents or wikis.
So the easiest way for users to bookmark or share the page is to simply update the browser's URL. In fact the proposed code acts as a very light JS router. I've seen much worse and big implementations for this kind of stuff, so that's a good start.
That was listed on my ideas for a new version of the report

Thanks, I'm glad to hear it may be useful. For me the worst part was invoking the click event to re-expand the tree view on the first page load. If I was willing to edit the rest of the file I would probably have made that something I could have invoked directly. If I was able to edit the generated HTML I might have facilitated something cleaner so that I could just get the list of nodes that need to be expanded with a simple selector. Those things could make this code simpler and shorter, but I wanted to keep it contained so that I could easily re-incorporate it if the base model.js changed.
Let me know if there's anything I can do to help from my end.

Thanks, I'm glad to hear it may be useful. For me the worst part was invoking the click event to re-expand the tree view on the first page load. If I was willing to edit the rest of the file I would probably have made that something I could have invoked directly. If I was able to edit the generated HTML I might have facilitated something cleaner so that I could just get the list of nodes that need to be expanded with a simple selector. Those things could make this code simpler and shorter, but I wanted to keep it contained so that I could easily re-incorporate it if the base model.js changed.
Let me know if there's anything I can do to help from my end.

the worst part was invoking the click event to re-expand the tree view on the first page load.

Looks similar to what I as suck with, if the tree is shown expanded by default - the way to sort it could be re-expand, which I've not figured out how to do yet here: https://github.com/archimatetool/archi/issues/696#issuecomment-761889767 @vic51  what do you think?
By, the way, probably your approach could help in my 2nd challenge - to change url even on model elements clicks (to not only see its description but be able to comment on to).

the worst part was invoking the click event to re-expand the tree view on the first page load.

Looks similar to what I as suck with, if the tree is shown expanded by default - the way to sort it could be re-expand, which I've not figured out how to do yet here: https://github.com/archimatetool/archi/issues/696#issuecomment-761889767 @vic51  what do you think?
By, the way, probably your approach could help in my 2nd challenge - to change url even on model elements clicks (to not only see its description but be able to comment on to).

I have not given this code extensive testing - it is hot off the press.

That works well so far - I'm testing it also. Thanks for such a valuable update @vic51 !

I have not given this code extensive testing - it is hot off the press.

That works well so far - I'm testing it also. Thanks for such a valuable update @vic51 !

Disclaimer: I have not given this code extensive testing - it is hot off the press.

@vic51 I've just tested and found an issue: it works when navigating using the model tree, but not when following view-links (view references) inside the view itself. This is because the onClick event is managed only for top level links and not those from the view iframe. A workaround could be to rely on onLoad event on the iframe.
Here's a working code:
	// Add show/hide function on modeltree
	$('.tree li.parent_li > span').on('click', function (e) {
		var children = $(this).parent('li.parent_li').find(' > ul > li');
		if (children.is(":visible")) {
			children.hide('fast');
			$(this).find(' > i').addClass('glyphicon-triangle-right').removeClass('glyphicon-triangle-bottom');
		} else {
			// START SORT
			$(this).parent('li.parent_li').find(' > ul').each(function(index){
				$(this).children('li.tree-folder').sort(strcmp).appendTo($(this));
				$(this).children('li.tree-element').sort(strcmp).appendTo($(this));
			});
			// END SORT
			children.show('fast');
			$(this).find(' > i').addClass('glyphicon-triangle-bottom').removeClass('glyphicon-triangle-right');
		}
		e.stopPropagation();
	});

	// Enable deeplinks
	let $viewLinks = $("a[href][target='view']");

	function openViewFromHash(e) {
		const isInitialLoad = e === undefined;
		const targetId = window.location.hash.substr(1);
		const matchingLinks = $viewLinks.filter(function (index, element) {
			const id = element.href.split("/").pop().slice(0, -5);
			return id === targetId;
		});
		const link = matchingLinks[0];
		if (link) {
			const $link = $(link);
			$("iframe[name='view']").attr('src', $link.attr('href'));
			if (isInitialLoad) {
				let spans = [];
				let $parentListItem = $link.parent().parent().parent();
				while ($parentListItem[0].tagName === 'LI') {
					spans.push($parentListItem.children().first());
					$parentListItem = $parentListItem.parent().parent();
				}
				while (spans.length) {
					spans.pop().click();
				}
			}
		}
	}
	openViewFromHash(); //Read initial hash on page load
	$(window).on('hashchange', openViewFromHash);

	// Must be done last because otherwise the first load of the iframe would trigger a has change
	$("iframe[name='view']").on('load', function (event) {
		const id = event.currentTarget.contentWindow.location.href.split("/").pop().slice(0, -5);
		window.location.hash = '#' + id;
		event.stopPropagation();
		return false;
	});

This has two issues though:

This doesn't work offline, leading to crossdomain errors in the console. More work is needed to find an approach which always work or to not register the onLoad event if we detect we're offline.
Using the URL fragment  doesn't always play well with SSO (mine always redirect to the root because the fragment is not seen as part of the URL). Maybe using a URL parameter (?id=xxxx) and pushState) would be better.

Disclaimer: I have not given this code extensive testing - it is hot off the press.

@vic51 I've just tested and found an issue: it works when navigating using the model tree, but not when following view-links (view references) inside the view itself. This is because the onClick event is managed only for top level links and not those from the view iframe. A workaround could be to rely on onLoad event on the iframe.
Here's a working code:
	// Add show/hide function on modeltree
	$('.tree li.parent_li > span').on('click', function (e) {
		var children = $(this).parent('li.parent_li').find(' > ul > li');
		if (children.is(":visible")) {
			children.hide('fast');
			$(this).find(' > i').addClass('glyphicon-triangle-right').removeClass('glyphicon-triangle-bottom');
		} else {
			// START SORT
			$(this).parent('li.parent_li').find(' > ul').each(function(index){
				$(this).children('li.tree-folder').sort(strcmp).appendTo($(this));
				$(this).children('li.tree-element').sort(strcmp).appendTo($(this));
			});
			// END SORT
			children.show('fast');
			$(this).find(' > i').addClass('glyphicon-triangle-bottom').removeClass('glyphicon-triangle-right');
		}
		e.stopPropagation();
	});

	// Enable deeplinks
	let $viewLinks = $("a[href][target='view']");

	function openViewFromHash(e) {
		const isInitialLoad = e === undefined;
		const targetId = window.location.hash.substr(1);
		const matchingLinks = $viewLinks.filter(function (index, element) {
			const id = element.href.split("/").pop().slice(0, -5);
			return id === targetId;
		});
		const link = matchingLinks[0];
		if (link) {
			const $link = $(link);
			$("iframe[name='view']").attr('src', $link.attr('href'));
			if (isInitialLoad) {
				let spans = [];
				let $parentListItem = $link.parent().parent().parent();
				while ($parentListItem[0].tagName === 'LI') {
					spans.push($parentListItem.children().first());
					$parentListItem = $parentListItem.parent().parent();
				}
				while (spans.length) {
					spans.pop().click();
				}
			}
		}
	}
	openViewFromHash(); //Read initial hash on page load
	$(window).on('hashchange', openViewFromHash);

	// Must be done last because otherwise the first load of the iframe would trigger a has change
	$("iframe[name='view']").on('load', function (event) {
		const id = event.currentTarget.contentWindow.location.href.split("/").pop().slice(0, -5);
		window.location.hash = '#' + id;
		event.stopPropagation();
		return false;
	});

This has two issues though:

This doesn't work offline, leading to crossdomain errors in the console. More work is needed to find an approach which always work or to not register the onLoad event if we detect we're offline.
Using the URL fragment  doesn't always play well with SSO (mine always redirect to the root because the fragment is not seen as part of the URL). Maybe using a URL parameter (?id=xxxx) and pushState) would be better.

Seing your other comment now...

For me the worst part was invoking the click event to re-expand the tree view on the first page load. If I was willing to edit the rest of the file I would probably have made that something I could have invoked directly.

That code (originally mine) is a piece of crap, but it works ;-)
Don't hesitate to refactor it, for example to define the function called inside the onClick (// Add show/hide function on modeltree) outside so we can call it directly.

If I was able to edit the generated HTML I might have facilitated something cleaner so that I could just get the list of nodes that need to be expanded with a simple selector.

I'm interrested for two reasons:

We can easilly change the HTML (it is generated through a templating system)
I have created a new (single page) HTML export that will be the basis for a next generation HTML report in Archi. It no more contains iframes, but deeplinks (still not implemented) will still requires to re-open the model tree nodes.

Those things could make this code simpler and shorter, but I wanted to keep it contained so that I could easily re-incorporate it if the base model.js changed.
Let me know if there's anything I can do to help from my end.

Feel free to fork the code and test your ideas ;-)

Seing your other comment now...

For me the worst part was invoking the click event to re-expand the tree view on the first page load. If I was willing to edit the rest of the file I would probably have made that something I could have invoked directly.

That code (originally mine) is a piece of crap, but it works ;-)
Don't hesitate to refactor it, for example to define the function called inside the onClick (// Add show/hide function on modeltree) outside so we can call it directly.

If I was able to edit the generated HTML I might have facilitated something cleaner so that I could just get the list of nodes that need to be expanded with a simple selector.

I'm interrested for two reasons:

We can easilly change the HTML (it is generated through a templating system)
I have created a new (single page) HTML export that will be the basis for a next generation HTML report in Archi. It no more contains iframes, but deeplinks (still not implemented) will still requires to re-open the model tree nodes.

Those things could make this code simpler and shorter, but I wanted to keep it contained so that I could easily re-incorporate it if the base model.js changed.
Let me know if there's anything I can do to help from my end.

Feel free to fork the code and test your ideas ;-)

Here's a working code

@jbsarrodie, for me it did not work, as you can check here (view-reference on Hips): https://evlibra.github.io/Archi_Body/#c14cadeb-c7f3-462e-aa9d-1a3e66872563
Also, when the browser window is refreshed, the view folder in a tree is collapsed even if it was uncollapsed before.

Here's a working code

@jbsarrodie, for me it did not work, as you can check here (view-reference on Hips): https://evlibra.github.io/Archi_Body/#c14cadeb-c7f3-462e-aa9d-1a3e66872563
Also, when the browser window is refreshed, the view folder in a tree is collapsed even if it was uncollapsed before.

Thanks @jbsarrodie I'll play with your changes and comments and see how it goes.

Feel free to fork the code and test your ideas ;-)
I'd like to! I actually gave it a shot, but I'm running IntelliJ IDEA on MacOS, and it looked like it was going to take more expertise than I have to get a build environment working. I'm primarily a PHP dev, although I have done a little Java in the past.

I could try again from a Windows PC and Eclipse and see how it goes. I'd love to play with your next gen HTML report.
@evlibra I don't know about the isse you were having. I didn't really take any time to understand the why or how of the sorting, I just saw that it was there and figured I'd better try to make sure it still runs.
I had a quick look at your example above, and for some reason the tree view is starting opened and then my click closes it. I could add a condition to only issue the click if it is already closed, but I'm curious why it starts open for you. I'm heading into a meeting so I'll have to look into it later.

Thanks @jbsarrodie I'll play with your changes and comments and see how it goes.

Feel free to fork the code and test your ideas ;-)
I'd like to! I actually gave it a shot, but I'm running IntelliJ IDEA on MacOS, and it looked like it was going to take more expertise than I have to get a build environment working. I'm primarily a PHP dev, although I have done a little Java in the past.

I could try again from a Windows PC and Eclipse and see how it goes. I'd love to play with your next gen HTML report.
@evlibra I don't know about the isse you were having. I didn't really take any time to understand the why or how of the sorting, I just saw that it was there and figured I'd better try to make sure it still runs.
I had a quick look at your example above, and for some reason the tree view is starting opened and then my click closes it. I could add a condition to only issue the click if it is already closed, but I'm curious why it starts open for you. I'm heading into a meeting so I'll have to look into it later.

@vic51 I've intentionally made the view starting open - to better overview/comment on the content (with hypotesis.is).
// Setup modeltree 	$('.tree li:has(ul)').addClass('parent_li').find(' > ul > li').**show()**;
That caused the issue of unsorted open tree by default, since sorting is done only on click:
// Add show/hide function on modeltree 	$('.tree li.parent_li > span').on('click', function (e) { 		var children = $(this).parent('li.parent_li').find(' > ul > li'); 		if (children.is(":visible")) { 			children.hide('fast'); 			$(this).find(' > i').addClass('glyphicon-triangle-right').removeClass('glyphicon-triangle-bottom'); 		} else { 			// START SORT 			$(this).parent('li.parent_li').find(' > ul').each(function(index){ 				$(this).children('li.tree-folder').sort(strcmp).appendTo($(this)); 				$(this).children('li.tree-element').sort(strcmp).appendTo($(this)); 			}); 			// END SORT 			children.show('fast'); 			$(this).find(' > i').addClass('glyphicon-triangle-bottom').removeClass('glyphicon-triangle-right'); 		} 		e.stopPropagation(); 	});

@vic51 I've intentionally made the view starting open - to better overview/comment on the content (with hypotesis.is).
// Setup modeltree 	$('.tree li:has(ul)').addClass('parent_li').find(' > ul > li').**show()**;
That caused the issue of unsorted open tree by default, since sorting is done only on click:
// Add show/hide function on modeltree 	$('.tree li.parent_li > span').on('click', function (e) { 		var children = $(this).parent('li.parent_li').find(' > ul > li'); 		if (children.is(":visible")) { 			children.hide('fast'); 			$(this).find(' > i').addClass('glyphicon-triangle-right').removeClass('glyphicon-triangle-bottom'); 		} else { 			// START SORT 			$(this).parent('li.parent_li').find(' > ul').each(function(index){ 				$(this).children('li.tree-folder').sort(strcmp).appendTo($(this)); 				$(this).children('li.tree-element').sort(strcmp).appendTo($(this)); 			}); 			// END SORT 			children.show('fast'); 			$(this).find(' > i').addClass('glyphicon-triangle-bottom').removeClass('glyphicon-triangle-right'); 		} 		e.stopPropagation(); 	});

I'd like to! I actually gave it a shot, but I'm running IntelliJ IDEA on MacOS, and it looked like it was going to take more expertise than I have to get a build environment working. I'm primarily a PHP dev, although I have done a little Java in the past.

The good thing with Archi HTML report is that it is based on a templating system interpreted at runtime, meaning that you don't have to compile anything (no need to know Java).
Maybe a simple good start is the following:

Install the latest version of Archi (I guess it should already been done)
Everything takes place inside Archi/plugins/com.archimatetool.reports_x.y.z/templates subfolder, so do a git init in it and push it on a new repository under your GitHub account
Do any change you think is needed in the html subfolder which contains the static files (CSS, JS)
If you want to change the HTML, it is generated based on the templates inside st subfolder:

modelreport.stg is used to generate the main index.html file (the templating system is used to generate the model tree)
frame.stg is used to generate the individual pages for the elements, relationships and views.

The templating system used is StringTemplate.

I'd like to! I actually gave it a shot, but I'm running IntelliJ IDEA on MacOS, and it looked like it was going to take more expertise than I have to get a build environment working. I'm primarily a PHP dev, although I have done a little Java in the past.

The good thing with Archi HTML report is that it is based on a templating system interpreted at runtime, meaning that you don't have to compile anything (no need to know Java).
Maybe a simple good start is the following:

Install the latest version of Archi (I guess it should already been done)
Everything takes place inside Archi/plugins/com.archimatetool.reports_x.y.z/templates subfolder, so do a git init in it and push it on a new repository under your GitHub account
Do any change you think is needed in the html subfolder which contains the static files (CSS, JS)
If you want to change the HTML, it is generated based on the templates inside st subfolder:

modelreport.stg is used to generate the main index.html file (the templating system is used to generate the model tree)
frame.stg is used to generate the individual pages for the elements, relationships and views.

The templating system used is StringTemplate.

@evlibra ok, so try it without making the view start open and my code should open the tree to the node that the page is opened on. That code only runs on the first page load so it shouldn't cause problems as a user navigates the tree view. If you still want everything expanded my code could be modified to run the click on all spans. I took care to queue the required clicks in a stack so that I could expand the tree from the root down to the leaves. If instead you built the queue recursively from the root then you could process it in order, or even avoid the stack and just invoke the click event directly in the order of recursion.
Thanks for the tips @jbsarrodie! Looks straight forward enough. Should I be spending time on this if there's a next gen version on the horizon or should I work against that? I'll take a look at the problems you reported.

@evlibra ok, so try it without making the view start open and my code should open the tree to the node that the page is opened on. That code only runs on the first page load so it shouldn't cause problems as a user navigates the tree view. If you still want everything expanded my code could be modified to run the click on all spans. I took care to queue the required clicks in a stack so that I could expand the tree from the root down to the leaves. If instead you built the queue recursively from the root then you could process it in order, or even avoid the stack and just invoke the click event directly in the order of recursion.
Thanks for the tips @jbsarrodie! Looks straight forward enough. Should I be spending time on this if there's a next gen version on the horizon or should I work against that? I'll take a look at the problems you reported.

Should I be spending time on this if there's a next gen version on the horizon or should I work against that? I'll take a look at the problems you reported.

The current version of the report will still be used for some time. I don't expect my new version to take over before next year, so you should work on the current version you already know (unless you decide to do fundamental changes).
I'll pick code here and there when needed to add it to my new version ;-)

Should I be spending time on this if there's a next gen version on the horizon or should I work against that? I'll take a look at the problems you reported.

The current version of the report will still be used for some time. I don't expect my new version to take over before next year, so you should work on the current version you already know (unless you decide to do fundamental changes).
I'll pick code here and there when needed to add it to my new version ;-)

If you still want everything expanded

yes, @vic51 , I want the option to have everything expanded by default. Would appreciate your advice on how to run the click on all spans. Was unable to figure it our from here without debugging:
				while ($parentListItem[0].tagName === 'LI') {
					spans.push($parentListItem.children().first());
					$parentListItem = $parentListItem.parent().parent();
				}
				while (spans.length) {
					spans.pop().click();
				}

If you still want everything expanded

yes, @vic51 , I want the option to have everything expanded by default. Would appreciate your advice on how to run the click on all spans. Was unable to figure it our from here without debugging:
				while ($parentListItem[0].tagName === 'LI') {
					spans.push($parentListItem.children().first());
					$parentListItem = $parentListItem.parent().parent();
				}
				while (spans.length) {
					spans.pop().click();
				}

@jbsarrodie I've done as you suggested with a git repo just for the html template files. Here's a commit which has the original work I did plus a fix for the linked views within the frame. What I got to work with local was to push a message from the frame to the main page, and then have the main page update the hash. Here's the commit: https://github.com/vic51/archi-html-template/commit/fb214875ad9edd7d236daa66c0b85f01556cd3c6
I like your idea of using pushState instead of the hash. I'll do that in another commit. I still need to get to the point of having this published behind a sso but might run into the same problem. I'm planning to use S3 and OpenID/Okta as described here: https://aws.amazon.com/blogs/networking-and-content-delivery/securing-cloudfront-distributions-using-openid-connect-and-aws-secrets-manager/
@evlibra I think the expanded tree view is a different issue from the link to a view thing I'm trying to achieve here. Maybe discussion could continue in your issue's thread for that. It would be generally independent from this unless it required this code to check for a node being already open before sending a click event. My approach would be to replace the code you quoted with code that did a recursive search for spans and then clicked them as they were found, since the discovery order should match a sane clicking order.

@jbsarrodie I've done as you suggested with a git repo just for the html template files. Here's a commit which has the original work I did plus a fix for the linked views within the frame. What I got to work with local was to push a message from the frame to the main page, and then have the main page update the hash. Here's the commit: https://github.com/vic51/archi-html-template/commit/fb214875ad9edd7d236daa66c0b85f01556cd3c6
I like your idea of using pushState instead of the hash. I'll do that in another commit. I still need to get to the point of having this published behind a sso but might run into the same problem. I'm planning to use S3 and OpenID/Okta as described here: https://aws.amazon.com/blogs/networking-and-content-delivery/securing-cloudfront-distributions-using-openid-connect-and-aws-secrets-manager/
@evlibra I think the expanded tree view is a different issue from the link to a view thing I'm trying to achieve here. Maybe discussion could continue in your issue's thread for that. It would be generally independent from this unless it required this code to check for a node being already open before sending a click event. My approach would be to replace the code you quoted with code that did a recursive search for spans and then clicked them as they were found, since the discovery order should match a sane clicking order.

Hi guys
I haven't checked your implementation, but I would just like to share what we've done, in case it helps.
It opens our main canvas as the initial diagram, but it opens a specific diagram depending on the URL, e.g.:
https://archi.intranet/?link=15ebcf04-0eea-444e-9e54-83933641db3a/views/id-130cf7bba0d641c8bff1110af492e0d1.html
The URL above will automatically open the specific view desired, and the code will expand all related tree nodes and perform a scroll-down animation.
`
$(document).ready(() => setLandingPage());
	function setLandingPage() {
		let link = new URLSearchParams(window.location.search).get('link');

		if (link === null) {
			// Opens our dashboard canvas as the initial diagram / IFrame
			$('ul.tree>li.parent_li:eq(1)>span').click();
			$('ul.tree>li.parent_li:eq(1)>ul>li.tree-element a')[1].click();
		}
		else {
			// Opens the view link passed in the querystring, e.g.:
			//    https://archi.intranet/?link=15ebcf04-0eea-444e-9e54-83933641db3a/views/id-130cf7bba0d641c8bff1110af492e0d1.html

			let anchorSelection = $("a[href='" + link + "']");
			anchorSelection[0].click();

			let targetListItem = anchorSelection.parent().parent().parent();
			targetListItem.find("span")[0].click();

			while (true) {
				targetListItem = targetListItem.parent().parent();

				if (targetListItem[0].tagName == "LI")
					targetListItem.find("span")[0].click();
				else
					break;
			}

			window.onload = () => {
				setTimeout(() => {
					$('.root-panel-body').animate({
						scrollTop: anchorSelection.offset().top + anchorSelection.scrollTop() - $('.root-panel-body').height()
					});
				}, 100);
			};
		}
	}

`
On the top right you can see a link, which facilitates sharing the view that's on the iframe currently.
The code related to that portion is in this other thread: link

Hi,
I recently had to finalize an implementation of the deeplink feature. Thanks to your help, I was able to update the report so that deeplink works in all use-cases I know (especially the one involving authentication through a third party SAML IDP server).
This implementation relies on a query string and pushstate and not a hash because hash are seen as "client" side and not transmitted to authentication servers. And thanks to @vic51 changing view from the view frame works using messages.
@Phillipus I'll add this (and some other changes) in a new html-report branch. This should be merged into the next version of Archi.
@eduardobbs I'll look at your other features and might add them too.

As with #726 any changes to the HTML report should be tested on the "Preview HTML Report" feature (the IE 11 internal browser on Windows). If it doesn't work the other option is to remove the "Preview HTML Report" feature from Archi. BTW - using another internal browser renderer (Chromium) is not supported properly on Eclipse.

As with #726 any changes to the HTML report should be tested on the "Preview HTML Report" feature (the IE 11 internal browser on Windows). If it doesn't work the other option is to remove the "Preview HTML Report" feature from Archi. BTW - using another internal browser renderer (Chromium) is not supported properly on Eclipse.

Already tested and it "works". In fact, because the internal browser doesn't show a URL bar, I don't know if it actually "works",  but it doesn't brake anything.

@jbsarrodie I was just thinking, in my situation I am IFraming the Archi HTML into another site (our Google Site intranet), therefore the visitor wont see the URL bar and hence wont be able to share the diagram link using the routing mechanism the way I suppose you are developing.
The "link" link that you can see on the top-right-hand side of the last image I posted on this thread enables that, although I have not implemented it in the best way at the moment. A more elegant implementation than mine could be a "share" link with a popup whereby the user has the option to copy it to his clipboard. My implementation allows the same thing but by right-clicking the "link" link instead (not intuitive).

I had the same need and solved it using simple unix file tricks.

Create initial HTML report and save in <somedir>
navigate to and copy the URL of the view you want as the initial view to load. Specifically this part /views/<yourHomeView GUID>.html

# cd <somedir>/<model GUID>/elements
# mv model.html model-orig.html
# ln -s ../views/<yourHomeView GUID>.html model.html

when complete your elements directory should look similar to this (your view GUID will differ):
 # pwd
<somedir>/<model guid>/elements
# ls -l model*
-rw-r--r--      1 scotty  staff  15494401 Sep  3 11:28 model-old.html
lrwxr-xr-x      1 scotty  staff        50 Aug 26 14:54 model.html -> ../views/b4f0323e-064d-479a-9688-1fd741291c02.html

Now reload the index and your home view will be automatically loaded first.
I also like to preserve the QUERY link that is part of the model-orig.html file... so I use perl to insert a link to into the index.html to model-orig.html named (QUERY DB) next to my model name.
This seems to keep my editing to a minimum prior to publishing.
hope this helps someone.
Scotty


default features list not installing server.xml features

Following the examples on https://github.com/WASdev/ci.gradle/blob/master/docs/installFeature.md#installfeature-task, I was able to get openidconnectclient-1.0 installed using:
liberty {
	server {
		features {
			name = ['openidconnectclient-1.0']
       		        acceptLicense = true
		}
	}
}

However, if I don't explicitly name openidconnectclient-1.0, it will not install even though it is listed in my server.xml feature list. If I understand correctly, all features listed in my server.xml should be installed if I include:
liberty {
	server {
		features {
       		        acceptLicense = true
		}
	}
}

Just made a PR to resolve this issue. A bit of our logic in the liberty.groovy file needed to be refined. After it's merged , we will push out a snapshot to make sure this fixes your problem.

The PR has been merged and we have just updated our snapshot. Try testing this on our 2.1.1-SNAPSHOT and let us know if this resolves your issue.

I'm closing this issue since it should be resolved. If this is still a problem, please reopen the issue.


UORG data, map, app transfer to DOR AGOL

Benefit
Transfer all data and maps associated with UORG recreate story map from UGRC to DOR AGOL. DOR to will host and update the app within their organization.
Acceptance Criteria

[ ] Data, maps, and apps successfully transferred to DOR.
[ ] Delete APM record in ServiceNow ("UGRC Business Applications")

Notes
Palletjack is involved with this app and may or may not be needed going forward.
Risks
App no longer works due to unsuccessful migration.
Issue Reference
refs #

FY24 Q4 Sprint 6 Notes
From Jared Anderson at DOR:

The OutdoorTeam_utDNR account was assigned a "creator" user type as well as a "creator" role, which did not give permissions to publish hosted feature layers. I updated the role to "publisher" which should give permissions to publish features.

App and data moved over, photo links aren't working.


[posix] add pseudo-reset

Add posix pseudo reset

ping~

ping~

Could any one answer why we need pseudo-reset on posix ?

@FiveDimensions , any plans to move this PR forward?


Added locale support to isFloat

Added locale support to isFloat and updated README and tests

Coverage decreased (-0.08%) to 99.013% when pulling 288c31ad7cb6740789c865509b8f72bfac5841ea on FelipeNBrito:master into ce310577c38258b35d2e26d5593c8fb84eee5aaf on chriso:master.

For issue https://github.com/chriso/validator.js/issues/547

Coverage decreased (-0.08%) to 99.013% when pulling ba21d87c82f1621d39f9317fac838713f3595b86 on FelipeNBrito:master into ce310577c38258b35d2e26d5593c8fb84eee5aaf on chriso:master.


chore(main): release 0.1.9

Auto generated release
0.1.9 (2024-03-20)
Build System

deps-dev: bump phpstan/phpstan from 1.10.60 to 1.10.63 (#28) (959c9d1)
deps: bump nesbot/carbon from 3.0.2 to 3.1.1 (#27) (45522ac)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/jobtrek/php-slim-todo/releases/tag/v0.1.9 :sunflower:


EXTERNAL TABLE Vs. POLYBASE IN AZURE SQL DATABASE

Dear Team,
This article is miss-leading while trying to understand/using the concept of Polybase vs. creating external table from ADLS to Azure SQL Database.  Because of this, we are getting an impression like Azure SQL Database does supports Polybase design and by which we can reads the data directly from external sources like ADLS/Data Lake Store however it is not true as it does not support the Polybase design.
The reason, trying to connect with you, is after reading the article and while trying to implement external table as per above given command, it says, error in command near "HADOOP" which is completely out of context as it didn't say above on that, the command will not support. which is something different.
Kindly check this thread:
https://stackoverflow.com/questions/54240747/create-external-data-source-azure-sql
Please advise.
Best Regards
Sandeep KM

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: f7ac2fe2-31da-7db6-2d5f-5091022f41d2
Version Independent ID: bbf07c2c-7006-7b94-f12f-800fa7bc67e4
Content: CREATE EXTERNAL TABLE (Transact-SQL) - SQL Server
Content Source: docs/t-sql/statements/create-external-table-transact-sql.md
Product: sql
Technology: t-sql
GitHub Login: @CarlRabeler
Microsoft Alias: carlrab

Create External table is used for both elastic queries in Azure SQL Database and for polybase in Azure SQL Data Warehouse. I will revise the note at the top and the introductory sentence to make this a bit more clear.
@sandeepkmishra

Thank you so much @CarlRabeler. Much appreciate your quick response.
Your update will be really helpful/useful for lots of Architects/Leads/others, when someone proposing Polybase design to enterprise customers.  Just to make clear that external table is used in SQL Data warehouse is for Polybase design, while external table is used in Azure SQL Server is for Elastic search . Thank you once again and hope to see the changes.. Thank you and have a lovely weekend.
Best Regards,
Sandeep

fixed
#please-close


Refactor tests

This refactors tests to use input files instead of generated files.
This make it easier to reuse input files for multiple tests and inspect the input files.
Adds basic tests for multi-file/multi-locale output, but the code is notably ignoring json files.  I made the tests just work for now and we can introduce correct behavior in a different patch.
Possibly some of the test input data could be consolidated if need be.
Adds orchestra/testbench so we can boot Laravel without having all the scaffolding in place.
Requires #109 or #112.  I tested including #112 to verify tests run on Travis (without it they fail)

@martinlindhe if it's not clear, you need to merge https://github.com/martinlindhe/laravel-vue-i18n-generator/pull/112 before this passes the tests

Merged at https://github.com/librenms/laravel-vue-i18n-generator


UI design

Hi Is the UI intend to replicate the original chatgpt? because right now it isnt the same and some things things hurt my eyes, also there are some layout issues. If you intend to replicate it 100% I am happy to contribute on that end, fixing the mismatches and layout issues

It's meant to be close. I'm sure there are plenty of things I've missed. Always welcome to create PRs.


on_idle hook

Depends on the type of the chain, it usually have peak and off-peak hours. It will be good if there is a way to run some maintenance task on off-peak hours, for example, claim contract states, actively and progressively migrate storage format, doing expensive but not urgent calculation like calculate the winners of an election.
When block producer finished packing all the transactions and still have lots free remaining block weights (with #4058, it is possible to have a good estimation of the free amount before execute on_finalize hooks), it can call the on_idle(block_number: BlockNumber, free_weight: Weight) -> Weight to perform additional non-urgent work. This hook can return a number to indicate how much weight it used, and allow other modules to consume the unused part.
Chain operator can always dispatch an operational transaction to force perform the maintenance task if the the chain is too busy and never calls on_idle hook. Or on_initalize can do the maintenance task if it notices on_idle was never called in last N blocks.

Just an overall note that at the moment we do not expose the weight to the client (aka. block producer) as you mentioned. The block producer (basic-authorship) just gets informed once the block weight is full. I theory it should be super simple to expose a runtime API for this.

We really want this feature to allow us to leverage the "free" weights in the block. It could help #6594 as well.

Sounds good idea, though I think the function should return the weight it consumes ahead of time so that we don't go belong block weight.
Also transaction-payment adjust fee depending on how much full the blocks are, this logic might be affected.

@coriolinus I reckon this is quite similar to what we just talked about today, neh? If implemented, the parachain can also use the same mechanism (Or basically the part that reports block weight to the proposer).

@coriolinus I reckon this is quite similar to what we just talked about today, neh? If implemented, the parachain can also use the same mechanism (Or basically the part that reports block weight to the proposer).

No. The parachain stuff is not connected in any way to this. Parachain candidates etc are passed as inherent to the relay chain. Inherents are before transactions.

This means a transaction can not use the weight of an inherent.
Besides that, the proposer will never be aware of the weight or similar stuff. Weight is FRAME specific and other runtimes could use anything.

Good point about Weight is FRAME specific. Can we modify the proposer so an arbitrary data is passed around? And FRAME can interpreted it as weight.

Data passed from where to where? Can you please explain more what you want to do?

Here is my proposal:

Type

type OpaqueBlockContext = Vec<u8>
struct BlockContext(Weight)

Runtime API:

sp_api::Core

fn initialize_block(header: &<Block as BlockT>::Header) -> BlockContext

or add a new fn new_block_context() -> BlockContext to reduce breaking change

sp_block_builder::BlockBuilder

fn apply_extrinsic(extrinsic: <Block as BlockT>::Extrinsic, context: BlockContext) -> (ApplyExtrinsicResult, BlockContext)

take remaining weight, return new remaining weight

fn finalize_block(context: BlockContext) -> <Block as BlockT>::Header

call pallet on_idle with remaning weight and then call pallet on_finalize

sc-block-builder::BlockBuilder:

New field context: OpaqueBlockContext
context will be created via initialize_block or new_block_context
in fn push, pass the context and updates it using the return result from apply_extrinsic
in fn build, pass the context to finalize_block

why should this involve client ? isn't it possible to do everything inside the runtime ?
how I would see it is that just before on_finalize hooks are run we look at the weight and execute some on_idle until reaching the full block.

why should this involve client ? isn't it possible to do everything inside the runtime ?
how I would see it is that just before on_finalize hooks are run we look at the weight and execute some on_idle until reaching the full block.

I see this exactly in the same way.

Oh this block producer discussion got me confused. Yes we do have everything available in the runtime so we can just update the finalize_block on pallet-executive and handle the free weights there.

adding a hook is not difficult in #6877 thus if you want to make a PR I can "backport" to attribute macro

This would be super helpful for #6594 as @xlc already mentioned. I could use the excess weight to do some more storage removal without taking away too much weight from actual extrinsics during busy times.

This could also be useful for the scheduler, no?
It would be very cool to schedule something and then have it run directly in on_idle if the block isn't full, yet, or have it run in a future block in case the current block is too full.

@JesseAbram working on this here: https://github.com/paritytech/substrate/pull/8209


All plugins download not complete

Hi - hope this is the right place to raise this.
I have downloaded the Windows all plugins .zip from https://socalabs.com/ but it only contains 17 plugins where as there are 28 listed on the web site. The new Wavetable is missing for instance.
I'm just thinking whilst there is a good buzz around on the net about Wavetable it is worth double checking the .zips are complete.
Thanks for all the excellent work,
Nick

Thanks, I knew Wavetable wasn't in the big zip, I'll check to see why the others are missing


Bintray

I published 0.1.0 on Bintray.
I requested to be added to https://bintray.com/sbt/sbt-plugin-releases so we won't need a ugly resolver.
@densh you will have to create a Bintray user so I can add you to the scala-native org that I created

@densh resolved

@densh can you re-enable travis? Ty ;-).
you can close this: #20

CI is weird openning a new pr


Share database accounts for multi-pools.

Hi, I would like to be able to share the accounts database on others servers with mpos and others cryptocoins for a multi-pool.
Any suggestions on how to do it?
Thanks.
Best regards

i found it sorry
https://github.com/MPOS/php-mpos/issues/735


Added factory activated ProxyMiddleware

I am using SimpleInjector and needed the ProxyMiddleware to implement IMiddleware. Added this by creating a base class and two implementations, one factory activated and the other a conventional one.
https://docs.microsoft.com/en-us/aspnet/core/fundamentals/middleware/extensibility?view=aspnetcore-2.2

i have stuffed up who I am committing as, closing this off will open a new PR soon.


Add endpoints for managing group membership

[x] POST /groups/{id}/members/$ref (for adding a single member)
[x] DELETE graph/v1.0/groups/{id}/members/{id}/$ref (for deleting a single member)
[x] PATCH graph/v1.0/groups/{group-id} (for adding multiple members)

shouldn't we be able to create a key<EMAIL_ADDRESS>which has a collection of directory objects as a value?

shouldn't we be able to create a key<EMAIL_ADDRESS>
@micbar hm, true. That should work. For some reason I thought the body for the PATCH on /groups/{id} required some additional attributes.Please review once more.
I still think the API for managing group memberships as defined in ms graph is not exactly nice. I am trying to follow it anyway here.

which has a collection of directory objects as a value?

Not really directory objects, but strings/uris referencing directory objects.

shouldn't we be able to create a key<EMAIL_ADDRESS>which has a collection of directory objects as a value?

@rhafer something like: https://swagger.io/docs/specification/data-models/data-types/#array
Also, mind this restriction by the msgraph spec:

Note that up to 20 members can be added in a single request

The key would, obviously, be located in the PATCH request body

shouldn't we be able to create a key<EMAIL_ADDRESS>which has a collection of directory objects as a value?

@rhafer something like: https://swagger.io/docs/specification/data-models/data-types/#array

Yeah that's what I did. :-)

Also, mind this restriction by the msgraph spec:

Note that up to 20 members can be added in a single request

The key would, obviously, be located in the PATCH request body

Yeah. Though that limit is not something I can express in this SPEC, is it? We might think about adding such a limit to the actual graph API implementation at some point though.

yes it can be done within the spec: https://swagger.io/docs/specification/2-0/describing-parameters/

Additionally, you can:
use minItems and maxItems to control the size of the array,
enforce uniqueItems,

- in: query
          name: color
          required: false
          type: array
          minItems: 1
          maxItems: 5
          uniqueItems: true
          items:
            type: string
            enum: [black, white, gray, red, pink, orange, yellow, green, blue, purple, brown]

@rhafer  oh sorry, those docs are for v2. For v3: https://swagger.io/docs/specification/data-models/data-types/

Ok, thanks. I've added those limits to the spec. It doesn't seem to have any effect on the generated go code for the client. But the limit itself needs to be implemented server side anyway.


How to represent a blob field for mysql database?

Hello,
My use case requires to store blob in a mysql database. I've checked the documentation but I don't see where / how to do it. Perhaps with the "Other" type?, Can you please point a short fragment of code?

Hey @sistecma, you can use the field.Bytes type as follows:
func (T) Fields() []ent.Field {
	return []ent.Field{
		field.Bytes("blob").
			Optional(),
	}
}

Closing, but please reopen if you still need help with this.
Also, you're welcome to join our Slack channel in the Gophers Slack. If you're interested to get ~monthly updates on our new releases and features, subscribe to our newsletter 🙏

Excellent , thanks for the quick feedback. I already subscribed to the slack and newletter.
Saludos,


How to add date and time on recorded video?

I just added the metadata info. You can now get the date of the recorded video inside the metadata array of the resulting asset. Date is set as ISO8601. To find out the creation date of a video, initialize an AVAsset out of your video and inside the metadata array of that asset, get the AVMedataItem that has the key AVMetadataCommonKeyCreationDate. The value of this item will be the creation date in ISO 8601. To convert it to NSDate, use the provided category +[NSDate fromISO8601:].
Tell me if this is what you wanted.


Payment support in App template

Description
In Altinn 2 we support integrating payment as part of the service process.
To move the services from Altinn 2 we need payment support.
Consideration

How do we store payment info?
Do we need a payment component?
Common payment "app" for non Altinn App scenarios.
Which providers should we support (Payex, dips, Nets...)
Role requirement payment?
Process integration
No fixed URL in apps? Is this ok as a return URL or not?

Tasks

[ ] Verify that this issue is labeled with a correct area label.
[ ] QA has been done

Link to the Miroboard where design work: https://miro.com/app/board/uXjVMYz1128=/?share_link_id=865780642344

Comments/ Feedback on this sketch?

For mobile:

Closing this as newer design images are present in https://github.com/Altinn/app-lib-dotnet/issues/399 and other work is tracked through that issue

Closing this as newer design images are present in https://github.com/Altinn/app-lib-dotnet/issues/399 and other work is tracked through that issue (correct status)


Change the Structure of Files with Metrics

My idea is to split lib/scholar/metrics.ex into lib/scholar/metrics/classification.ex and lib/scholar/metric/regression.ex. This is because I think that the current structure:
/lib/scholar
| - ...
| - metrics.ex
| - /metrics
    | - distance.ex
    | - clustering.ex
    | - similarity.ex

might be ambiguous because users might not know what is inside metrics.ex when there is a directory called metrics. If we break apart metrics.ex into classification.ex and regression.ex, we will get rid of this ambiguity. The metrics.ex is also bulky, so it might be helpful to improve the readability.
/lib/scholar
| - ...
| - /metrics
    | - distance.ex
    | - clustering.ex
    | - similarity.ex
    | - regression.ex
    | - classification.ex

WDYT @josevalim @polvalente?

Do all metrics belong to either classification or regression? Or are there metrics that apply to both?

There are no metrics that apply to both tasks, but there are some tasks that can be considered as either classification or regression

Can you give some examples? And what would we do about these? Where would they live?

For example, you can predict the score on IMDB of a single person as a classification (since scores are from discrete set {1, 2, 3, ..., 10}) or you can treat this as a regression task where the score 7.5 is perfectly ok.

So, there are no somehow combined methods that deal with both regression and classification at the same time.

After applying the changes, we need to remember to change also livebooks in #117


Finding all Values for Config.js

For the Tutorial at (https://docs.microsoft.com/en-us/azure/active-directory/verifiable-credentials/verifiable-credentials-configure-verifier)
In the section where you update the app setting it's written for DOTNET not NODEJS.
That is fine, but that variables required are different with NodeJS giving variable that aren't specified. I've bolded them, please advise where to find variable or update code not to require them.
Config.js NODEJS {
"azTenantId": "",
"azClientId": "",
"azClientSecret": "",
"azCertificateName":  "",
"azCertThumbprint":  "",
"azCertificatePrivateKeyLocation":  "",
"CredentialManifest": "",
"IssuerAuthority": "YOUR-did:ion",
"VerifierAuthority": "VCs-did:ion"
}
appsettings.json DOTNET
{
"Endpoint": "https://beta.did.msidentity.com/v1.0/{0}/verifiablecredentials/request",
"VCServiceScope": "3db474b9-6a0c-4840-96ac-1fceb342124f/.default",
"Instance": "https://login.microsoftonline.com/{0}",
"TenantId": "YOURTENANTID",
"ClientId": "APPLICATION CLIENT ID",
"ClientSecret": "[client secret or instead use the prefered certificate in the next entry]",
"CertificateName": "[Or instead of client secret: Enter here the name of a certificate (from the user cert store) as registered with your application]",
"IssuerAuthority": "YOUR VC SERVICE DID",
"VerifierAuthority": "YOUR VC SERVICE DID",
"CredentialManifest": "THE CREDENTIAL URL FROM THE VC PORTAL"

}

@mrappard - Not quite sure I follow you when you say the values are different. But if you do not want to use a certificate based auth with the node.js sample, just set the azCertificateName to an empty string in config.json

The cert thumbprint and location will be part of the output when running .\Configure.ps or ./Configure.sh.
https://github.com/Azure-Samples/active-directory-verifiable-credentials-node/tree/main/1-node-api-idtokenhint/AppCreationScripts#option-3---specify-type-of-app-credentials


[SPARK-25871][STREAMING][WIP] Don't use EC for streaming WAL

What changes were proposed in this pull request?
The write ahead log expects to be able to call hflush, but that is a no-op when writing to a file with hdfs erasure coding.  So ensure that file is always written with replication instead, regardless of filesystem defaults.
How was this patch tested?
None yet.  I'm posting this mostly to make it visible.

Test build #98229 has started for PR 22882 at commit 98204e6.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/4607/
Test PASSed.

the problem is that the WAL expects hflush() & append() to work, but they don't for EC files.  So if you have hdfs configured to use EC by default, then anytime you try to use the streaming WAL you'll get a failure.  The end-user might not be the one that even configured hdfs EC, so it doesn't seem reasonable to expect them to configure a non-EC dir on hdfs and then point the WAL at that dir.

The problem I understand my question is more like why 98204e6 is not enough in the PR?

ah right, sorry I hadn't updated this after that merged.  I just updated it.

Test build #98517 has started for PR 22882 at commit 7f93d52.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/4796/
Test PASSed.

Test build #98517 has finished for PR 22882 at commit 7f93d52.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/98517/
Test PASSed.

Merging to master. I'll remove the "WIP" during merge.


If source address is remote node then we should treat it as ouside traffic.

If source address is remote node then we should treat it as ouside traffic. In other way traffic will be dropped by wireguard. And such traffic may exist in case some pod will connect to load balancer's external address with DSR enabled.
Fixes: #28492

/test

ping @markpash

/test


Update timescale branding

Timescale did a rebrand last month in which their logo changed. This PR reflects those changes to the logo. Here is a link to the official Timescale website announcing the rebrand.
I have sized the images to be the exact same dimensions as the previous ones. Except for the timescale_logo.png, the dimension ratio changed slightly which causes the height to be a couple pixels more.
Thank you.

I expect the readability of these icons to be bad on the dark theme. A tiny border around every icon can improve the situation.

That's a good point!
The logo is transparent, so should the background be white in addition to the white border?

Yes, I think so. You can play with variations to see which fits best.

Hi, sorry for the immense delay!
I have added a white background to the transparent Timescale logos!
As for the banner since it is only shown (to my knowledge) in the db configuration tab, it looks great even without a border.

verified


FIX: Revise Psychopy's installation

I thought I had already submitted this. This basically resolves the issues with Psychopy's installation last week. It also writes down how to load the environment (apologies, @acionca, because I thought this was already in yesterday).
Integrates https://github.com/TheAxonLab/hcph-sops/issues/253#issuecomment-1765928854

@acionca @esavary care for a speedy review?

I can have a look and test things during the session if it's ok

@acionca @esavary care for a speedy review?

I can have a look and test things during the session if it's ok

Let's do one thing - we merge it now, and during the session, you open issues with the problems you encounter.

Let's do one thing - we merge it now, and during the session, you open issues with the problems you encounter.

Sounds good !


[Documentation]: Description of To test if the CNF uses elastic volumes is not clear

Describe the bug
test case description To test if the CNF uses elastic volumes does not define what an elastic volume is. The rationale  of the test case does not explain why rescheduling is a problem (or why it should not be a problem and how volumes affect on it).
Expected behavior
1 Define elastic volume in the test case description
2 Clarify rationale.

Very similar to #1278, elastic_volumes lacks good documentation. Closed as duplicate.


flows cleanup

Changes:

Several flows were acting as quasi targets, this fixes the flows to just setup the flowgraph and moves settings into the appropriate targets.

Adds:

a helper function to set the showtools in the targets so it's consistent

It looks like this PR may have broken the docs tests.


No output when implementing evaluate.py

Hi,
I am trying to implement c3dpo_nrsfm as in github to learn it. I am neither getting any extracted 3D points nor an error. It stays as below

I tried the following commands in the sequence

python -m visdom.server
python ./experiment.py --cfg_file ./cfgs/h36m.yaml

and

python -m visdom.server
python ./demo.py

thanks
Mritula

Hi, I tried from initial steps, this time I managed installing torch 1.1.0, and re-running demo.py. I am getting a stick figure display now.
Previously, I used the latest torch version, unsure if this would have made all the difference.
Thanks
Mritula


runtime-caching-converter explicitly disallows non-GET

Library Affected:
workbox-build
Browser & Platform:
All (well I'm using Node v8.1.3)
Issue or Feature Request Description:
This line explicitly disallows non-GET inside the converter code. Why? I can just write one manually, this just disallows it for -build.
Additionally, the method arg isn't documented here—although that makes sense if it's disabled.

Ah, that was because we didn't have a clean way of supporting non-GET in WorkboxSW's registerRoute() until we added #644.
I can relax that restriction in the runtimeCaching conversion in a follow-up PR.


Need to document how to revoke consent

The Office Add-in developer docs would like to link to the Admin consent button section of this article to avoid duplicating documentation. But we have a customer request to document how to revoke admin consent too. So, it makes sense to put that documentation in this article too. (I can find no other place in your docs where it would go.)
I don't seem to have permissions to create a PR, so I'm making this an issue.
Please put the following Markdown at the end of the Admin consent button section. It creates a subsection (level 4):
#### Revoke admin consent

To revoke consent for a permission, take the following steps:

1. In the **Configured permissions** table, go to the table row for the permission that you want to revoke and select the **...** button.

1. On the menu that appears, select **Remove permission**.

1. Repeat the last two steps for every permission that you want to revoke.

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: 006699d8-d208-ec2e-9b14-ec6c5d4bd71f
Version Independent ID: b9ad346f-2140-8d7b-c5aa-b5e4d7bae866
Content: Quickstart: Configure an app to access a web API - Microsoft identity platform
Content Source: docs/identity-platform/quickstart-configure-app-access-web-apis.md
Service: identity-platform
GitHub Login: @cilwerner
Microsoft Alias: cwerner

@Rick-Kirkham
Thanks for your feedback! We will investigate and update as appropriate.

@Rick-Kirkham
Thanks for your feedback! I've assigned this issue to the author who will investigate and update as appropriate.

@cilwerner How can I "follow" or subscribe to this item in the backlog. I have a work item that is dependent on it.


LANG-1251: SerializationUtils.ClassLoaderAwareObjectInputStream should use static initializer to initialize primitiveTypes map.

SerializationUtils.ClassLoaderAwareObjectInputStream should use static initializer to initialize primitiveTypes map because initializing the map in the constructor of ClassLoaderAwareObjectInputStream would break thread safety. java.util.HashMap is not thread safe.

Coverage decreased (-0.06%) to 93.382% when pulling c8cf32f8f242f8a2b17865fee58b71c04db6b908 on ueshin:issues/LANG-1251 into bd9adbb637a8a4aa5eb61c6fde2c576d0ab3c4fa on apache:master.

Thanks! :+1:


NextJS Site - Runtime Errors with Cache bucket permissions

It looks like nothing in NextJs component never gives the lambda role permissions to write or read from the bucket https://github.com/sst/ion/blob/ba1e3e4e858de1c452f3f72ce35e1c71a0746445/pkg/platform/src/components/aws/nextjs.ts#L783 so at runtime I'm seeing nextjs/open-next errors when its trying to read from cache like  ERROR	Failed to get body cache AccessDenied: Access Denied and also writing to cache ERROR { clientName: 'S3Client', commandName: 'PutObjectCommand', input: { Bu...

Looks like the role never gets permissions attached https://github.com/sst/ion/blob/ba1e3e4e858de1c452f3f72ce35e1c71a0746445/pkg/platform/src/components/aws/nextjs.ts#L794-L831 maybe the plan was to use a link to that bucket ?

@cmanou thanks for looking into this. Fixed in the latest version.


goctl quickstart can't correct generate scaffold project.

Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior, if applicable:

The code is

mkdir demogo
cd demogo && goctl quickstart

The error is

Expected behavior
goctl can correct generate scaffold microservice mono project. not just API project.
Screenshots
If applicable, add screenshots to help explain your problem.

Environments (please complete the following information):

OS:  windows v10
go-zero version 1.3.8
goctl version 1.13.8

More description
Add any other context about the problem here.

Is the project in $GOPATH? If possible, please post your directory tree here, thanks!

The directory tree is not the same as the case

该项目是否在 $GOPATH 中？如果可以的话，请把你的目录树贴在这里，谢谢！

I had a similar problem.
The directory tree is not the same as the case
ps：goctl version 1.5.4 windows/amd64

该项目是否在 $GOPATH 中？如果可以的话，请把你的目录树贴在这里，谢谢！

Not even the latest version

Is the project in $GOPATH? If possible, please post your directory tree here, thanks!

我找了之前您在b站关于goctl quickstart的视频，发现最开始执行时会输出一行"go: creating new go.mod: module greet"(包括官方的文档目前也有这行输出)

但是从我上面提交的两个版本的截图以及问题发起者提供的截图上看，这行输出不见了，可能是后面移除了creating new go.mod这步操作


rtl8189fs: init at 2022-05-20

Description of changes
I've probably structured this badly but it works great.
Things done

Built on platform(s)

[x] x86_64-linux
[x] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[ ] Fits CONTRIBUTING.md.

This definitely needs its own meta at least, I'm not keen on being on the maintainer list for something I can't use (and the description etc would also be wrong) :p other than that I think this should be fair enough as an approach.

@lheckemann added a meta with myself as maintainer.


Backfill the CHANGELOG

It'd be amazing if the CHANGELOG could be backfilled with all the changes between 4.0.4 to 4.1.4.
Picking through the diff isn't a fun experience, https://github.com/aFarkas/lazysizes/compare/4.0.4...4.1.4

JFYI: I took 20 minutes to backfill the Changelog to the latest release, see https://github.com/aFarkas/lazysizes/pull/626

@grekko
thank you very much!!!


Fixed all issues and added nord theme

I fixed all my issues from last pull request.

There is currently no way to select a theme. Which means, this will override the default color scheme. There needs to be a way to pick between black and nord for this to work. @deepjyoti30 what do you say?

@reesericci Yeah. If I merge this PR, it'd override the default colorscheme.
I think the config already allows changing colorschemes? If the end user wants nord theme, they can just copy @WitherCubes config and apply it and everything will change?

Doesn't this change the background though? I don't think its currently possible to change the background in the config. @WitherCubes made changes to the core css files, and as such overrides the theme. If somebody wants to use this, they would have to build it themselves with the new css.

yup core files being changed @deepjyoti30

@reesericci It does make sense to allow more theming options. I think we can open an issue and discuss about it over there instead of this PR?! Feel free to open one!

We can give an option for the user to download the default theme or the nord theme.


NIFI-6443: fix simple-syslog-5424 was incorrectly expecting a space between SD elements (on master)

Thank you for submitting a contribution to Apache NiFi.
Please provide a short description of the PR here:
Description of PR
Fixes bug NIFI-6443 (against the master branch, previous PR was against 1.9.2)
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[x] Is there a JIRA ticket associated with this PR? Is it referenced
in the commit message?

[x] Does your PR title start with NIFI-XXXX where XXXX is the JIRA number you are trying to resolve? Pay particular attention to the hyphen "-" character.

[x] Has your PR been rebased against the latest commit within the target branch (typically master)?

[-] Is your initial contribution a single, squashed commit? Additional commits in response to PR reviewer feedback should be made on this branch and pushed to allow change tracking. Do not squash or use --force when pushing to allow for clean monitoring of changes.

For code changes:

[x] Have you ensured that the full suite of tests is executed via mvn -Pcontrib-check clean install at the root nifi folder?
[x] Have you written or updated unit tests to verify your changes?
[x] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?
[x] If applicable, have you updated the LICENSE file, including the main LICENSE file under nifi-assembly?
[x] If applicable, have you updated the NOTICE file, including the main NOTICE file found under nifi-assembly?
[x] If adding new Properties, have you added .displayName in addition to .name (programmatic access) for each of the new properties?

For documentation related changes:

[x] Have you ensured that format looks appropriate for the output in which it is rendered?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and submit an update to your PR as soon as possible.
@ottobackwards FYI

+1 from me

+1 from me as well, merging to master, thanks @mguelfi @ottobackwards


Clear cookie if set to an empty authenticated object

Problem
Many CDNs allow you to adjust caching based on the existence of a cookie. However, with the Cookie ESA store, when a user logs out their cookie will be set to {authenticated: {}}, leaving them with the existence of a cookie that essentially resolves as nothing.
Solution
This PR deletes the cookie if it is attempted to be set to {authenticated: {}}. This means that if any other metadata than an empty authenticated object exists, the cookie will still get set as normal. Therefore this should cover most out-of-the-box use cases.
This is my first PR so if I've done anything wrong please let me know! Thanks

closing due to inactivity


Compiled code of the version compatible with Leaflet 0.7.x isn't updated

Hi all!
I'm currently integrating the library within a project that uses the version 0.7.3 of Leaflet and noticed that it was impossible to "spiderfy" a marker at any level zoom as described the the README.md:

Note: the spiderfy occurs at the current zoom level if all items within the cluster are physically located at the same latitude and longitude.

What happens is that the source code is frequently updated and that the compiled isn't (the /dist folder):

In my case, if you look at the method _zoomOrSpiderfy, you will see that the code differs and that one (the source) enable the "spiderfy" effect at any level zoom, whereas the other one is outdated (the compiled):
[Source 👍🏼] (https://github.com/Leaflet/Leaflet.markercluster/blob/leaflet-0.7/src/MarkerClusterGroup.js#L711) - [Compiled 👎🏼] (https://github.com/Leaflet/Leaflet.markercluster/blob/leaflet-0.7/dist/leaflet.markercluster-src.js#L661)
Could you compile the source whenever you update the code base or just add a note to the README.md so people won't be confused about the features the library offers?
Thanks,
Clément

Thanks for the bump.
I've removed the built JS from master now, we will only ship it in tags.
I've done a final build for that branch now too so there is one somewhere..


Replace ParamSet with GhostCell-like system parameters

What problem does this solve or what need does it fill?
Right now, ParamSet works fine, but it produces large and complex types, doesn't play well with rustfmt, and does not allow you to name the parameters. It would be ideal if we could get the functionality of ParamSet while still keeping the parameters separate.
What solution would you like?

Any SystemParams that conflict with one another must be wrapped in type ParamCell.

ParamCell is a zero-cost wrapper that restricts access to multiple
Accessing the data behind ParamCell requires a Token.

Token is a ZST that can only safely be produced by specifying it as a SystemParam. Only one may exist at a time.
Read-only reference to ParamCell requires &Token, mutable reference requires &mut Token. This ensures that only one mutable parameter is accessed at a time, but allows multiple read-only parameters at once.

fn system(
    mut token: Token,
    foo: ParamCell<Query<(&Name, &Transform)>>,
    bar: ParamCell<Query<&mut Transform>>,
) {
    for _ in foo.get(&token).iter() {
        // Error: `token` is already borrowed
        // bar.get_mut(&mut token)
    }
    for _ in bar.get_mut(&mut token).iter_mut() {
        // ...
    }
}

...and the same in the current pre-existing design
fn system(
    // rustfmt has a grudge against bevy
    mut p: ParamSet<
        (
            Query<(&Name, &Transform)>,
            Query<&mut Transform
        )
    >,
) {
    // no names! just gotta remember
    for _ in p.p0().iter() {
        // Error: `p` is already borrowed
        // p.p1().iter_mut()
    }
    for _ in p.p1().iter_mut() {
        // ...
    }
}

(bikeshedding welcome)
Problems
The current described design does not allow for multiple disjoint parameter sets within one system. This issue may be solvable by allowing a system to declare multiple tokens, and link each PCell to its respective token with a lifetime.
fn system<'a, 'b>(
    mut t1: Token<'a>,
    foo1: ParamCell<'a, ResMut<Time>>,
    bar1: ParamCell<'a, Res<Time>>,

    mut t2: Token<'b>,
    mut foo2: ParamCell<'a, Query<&mut Transform>>,
    mut bar2: ParamCell<'a, Query<&Transform>>,
) -> // ...

The lifetimes are ugly, but they do allow the programmer to give meaningful names to groups of ParamCells if they desire. This would likely make for terrible compiler errors though.
What alternative(s) have you considered?
Just leave the current system, which is simpler. However, it is overly restrictive with read-only accesses.

Your multiple sets suggestion is impossible, as far as I know, since we can't do runtime dispatch based on lifetimes.
An easier way to achieve naming might be to have a derive(ParamSet)?
It's not quite as ad-hoc, but it gets the job done.

While it likely wouldn't be a derive, a paramset macro has been proposed in #4885

I actually prefer #4885 over this. The only advantage of this is that it can be inlined in a system.

I believe this is unsound because it would be possible to do something like

System A gets a Token and stores it in some kind of global variable (with lazy_static).
System B also gets a Token. System B then reads from the global variable. We now have access to two Tokens!

We might be able to do something with lifetimes because that would prevent you from putting it into a global variable, but it would still be possible to create a Token<'static>.
To solve this, we need to force the system to be generic over the lifetime of the token, i.e. for<'a> Fn(Token<'a>) so that we can't get the Token a 'static lifetime. I haven't looked at the code for SystemParam yet so I don't know if this would be possible.

S 🎉😆😆🇹🇯 se

So I've been thinking, and I agree with the others that the derive macro solution is better. At first I didn't like it since it's more verbose, but I realized that the macro solution would be way more teachable for new users, so it's probably the best solution.


Any update for a SwiftUI integration ?

Thanks

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: b9c2a719-62fa-b111-03a6-1268cc4caaaa
Version Independent ID: 2fe78b74-7717-bce9-9204-1089256563f5
Content: MSAL for iOS & macOS tutorial - Microsoft identity platform
Content Source: articles/active-directory/develop/tutorial-v2-ios.md
Service: active-directory
Sub-service: develop
GitHub Login: @mmacy
Microsoft Alias: jmprieur

@SylvainUsitab
Thanks for your feedback! We will investigate and update as appropriate.

Hi @SylvainUsitab ,
No updates as of yet. The best place to make a request for this is in User Voice (https://feedback.azure.com).
You can also keep track of this page, as well as the "what's new" product pages.
CCing the owners of this doc for awareness of your request. @mmacy and @jmprieur

i would really love this.


Propagation

Enables calculating the fields inside the simulation domain by calculating te Mode excitations and superimposing the respective fields.

@joamatab @flaport