Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Repo info
Activity
    Dr. Lofi Dewanto
    @lofidewanto_twitter
    Hi all I found out that elemento-core 1.0.1 has a dep to gwt-safehtml SNAPSHOT version... Is that a bug?
    Harald Pehl
    @hpehl
    Is there a more recent version of gwt-safehtml
    Dr. Lofi Dewanto
    @lofidewanto_twitter
    I'm not sure... Maybe @niloc132 ?
    Colin Alworth
    @niloc132
    not yet, we're finishing up release stuff for the prereqs for safehtml
    how did maven central let you release something that depends on a snapshot?
    Dr. Lofi Dewanto
    @lofidewanto_twitter
    Yeah that was crazy ... Never had that I feel that I'm living in NPM world 😂
    I had a small internal hackathon for micro frontends with JS... And we use GWT... I'll summarize our experiences later...
    Josh B
    @JoshIsOnIt
    Hi guys, I'm trying to migrate from 2.8 to 2.9, and when I try and compile I get errors like "Unable to find class java/lang/Enum" "Unable to resolve supertype java/lang/Object" seems like something fundamental is missing. Is there something obvious to correct this?
    Colin Alworth
    @niloc132
    probably better to ask in the main gwt room... but it sounds like your classpath is mixed up, either both gwt 2.8 and 2.9 emul, or you have some other jre emul dirtying up your classpath and confusing the compiler
    Josh B
    @JoshIsOnIt
    oh shoot! I meantto be in the gwt room!!!
    At any rate, thanks Colin, I will see if I can confirm that. I thought I had cleaned it up and removed any trace of 2.8
    Colin Alworth
    @niloc132
    any elemento users who have a bit of time to try, we have a candidate 1.0.0-RC1 release for gwt-safehtml in this staging repo: https://oss.sonatype.org/content/repositories/orggwtproject-1043
    if all looks good we'll push it to central
    Harald Pehl
    @hpehl
    @/all I've just released Elemento 1.0.2. It upgrades gwt-safehtml to 1.0.0-RC1
    See https://github.com/hal/elemento/releases/tag/1.0.2
    Rob Newton
    @rob5n
    thankyou
    Dr. Lofi Dewanto
    @lofidewanto_twitter
    Thanks!
    Bogdan Petridean
    @bpetridean
    Thanks!
    Harald Pehl
    @hpehl
    @/all I've just released Elemento 1.0.3. The only change is that the minimal Java version is now Java 1.8. See https://github.com/hal/elemento/releases/tag/1.0.3
    This should help projects which still require Java 8, but want to upgrade to the latest Elemento version
    The new version should land in maven central soon.
    Frank Hossfeld
    @FrankHossfeld
    Perfect! Thanks!
    Tino Desjardins
    @TDesjardins
    :thumbsup:
    Harald Pehl
    @hpehl
    @/all FYI I've updated all demos of Elemento (thanks @treblereel for updating the crysknife demo). All demos compile again and are online available at https://hal.github.io/elemento/index.html
    Dmitrii Tikhomirov
    @treblereel
    @hpehl cool, thanks !
    Dr. Lofi Dewanto
    @lofidewanto_twitter
    👍👍👍
    Daniel Korbel
    @masterdany88
    Hi. How to use this class with elemento?: https://developer.mozilla.org/en-US/docs/Web/API/URL/URL
    ?
    I cant find valid import
    Colin Alworth
    @niloc132
    @masterdany88 elemental2.dom.URL
    Rob Newton
    @rob5n
    Hi! A question about elemento templates: I have a @DataElement class field called say "user_id". And in the corresponding HTML template file I have an element with attribute 'data-element="user_ID"' so I mistakenly used the wrong case for id/ID. It appears that the elemento annotation processor at compile time doesn't flag this mismatch at compile time. But at runtime the element is not found and not bound to the java object field!? Is this known behaviour? I must confess that I am using a hacked version of elemento-template-* 0.9.6 that depends on elemento-core 1.0.2. I wonder if I have broken something in my hack.
    Colin Alworth
    @niloc132
    @rob5n not an elemento expert, but annotation processors aren't smart enough to handle changes in code, they rely on whatever is calling them to know what actually changed
    so, what is your build tool, and are you sure it is running the processor when you make any chance at all to the html template?
    Rob Newton
    @rob5n
    @niloc132 I do a clean build from maven. I can see the elemento processor compiling the templates in the compile output. If it cannot find a match it logs:
    Cannot find a matching element in AuditLogEnq.html using "[data-element=user_id]" as selector
    But I am finding that the compiler finds a case-insensitive match and compiles the template. But at runtime it comes unstuck.
    Of course I should be careful to get the cases matching in the first place, but sometimes mistakes are made and I am confused by it compiling OK but not running.
    Colin Alworth
    @niloc132
    even from a clean? that's very weird, definitely sounds like a bug in elemento's processor
    Rob Newton
    @rob5n
    From TemplatedProcessor:
        private void verifySelector(String selector, Element element, TemplateSelector templateSelector,
                org.jsoup.nodes.Element root) {
            // make sure to use the same logic for finding matching elements as in TemplateUtils!
            Elements elements = root.getElementsByAttributeValue("data-element", selector);
    Which calls the jsoup library:
        /**
         * Find elements that have an attribute with the specific value. Case insensitive.
    ...
         */
        public Elements getElementsByAttributeValue(String key, String value) {
    Colin Alworth
    @niloc132
    yep, that looks like a bug :)
    Rob Newton
    @rob5n
    So the compile checker does case insensitive.
    Rob Newton
    @rob5n
    And the generated code calls TemplateUtil.resolveElementAs(...) which calls:
    context.querySelector("[data-element=" + identifier + "]");
    which would be case sensitive .
    So yes @niloc132 it looks like a bug
    Colin Alworth
    @niloc132
    yep - gotta fix one or the other
    Rob Newton
    @rob5n
    OK, the way to use JSoup to do a case-insensitive match on attribute name and a case-sensitive match on attibute value is:
            //Elements elements = root.getElementsByAttributeValue("data-element", selector);
            Elements elements = root.getElementsByAttribute("data-element");
            long matchCount = elements.stream().filter(elem -> elem.attributes().getIgnoreCase("data-element").equals(selector)).count();
    I'll add an issue to the crysknife-io project, which is where the maintained templating code now lives, @treblereel
    Harald Pehl
    @hpehl
    Thanks @rob5n for looking into this. Looks like a bug to me. And thanks for adding an issue to crysknife.
    Daniel Korbel
    @masterdany88
    Hi. I found out in newest version that method click() has disapeared from HTMLElement and HTMLAnchorElement
    How this can be replaced?
    Dmitrii Tikhomirov
    @treblereel
    maybe after elemental2 has been updated to 1.1.0
    Daniel Korbel
    @masterdany88
    I am using elemental2-dom 1.1.0 version
    Daniel Korbel
    @masterdany88
    How to simulate programatically click operation?
    Daniel Korbel
    @masterdany88

    I use to do this approach https://blog.jayway.com/2017/07/13/open-pdf-downloaded-api-javascript/

    showFile(blob){
      // It is necessary to create a new blob object with mime-type explicitly set
      // otherwise only Chrome works like it should
      var newBlob = new Blob([blob], {type: "application/pdf"})
    
      // IE doesn't allow using a blob object directly as link href
      // instead it is necessary to use msSaveOrOpenBlob
      if (window.navigator && window.navigator.msSaveOrOpenBlob) {
        window.navigator.msSaveOrOpenBlob(newBlob);
        return;
      } 
    
      // For other browsers: 
      // Create a link pointing to the ObjectURL containing the blob.
      const data = window.URL.createObjectURL(newBlob);
      var link = document.createElement('a');
      link.href = data;
      link.download="file.pdf";
      link.click();
      setTimeout(function(){
        // For Firefox it is necessary to delay revoking the ObjectURL
        window.URL.revokeObjectURL(data);
      }, 100);
    }
    
    fetch([url to fetch], {[options setting custom http-headers]})
    .then(r => r.blob())
    .then(showFile)

    but it is no longer possible
    My current impl:

    public class BlobDownload {
    
        private BlobDownload() {
        }
    
        public static <T> void downloadBlob(T data, String contentType, String fileName) {
            BlobPropertyBag blobPropertyBag = BlobPropertyBag.create();
            blobPropertyBag.setType(contentType);
            Blob blob = new Blob(new Blob.ConstructorBlobPartsArrayUnionType[]{Blob.ConstructorBlobPartsArrayUnionType.of(data)}, blobPropertyBag);
            downloadBlob(blob, fileName);
        }
    
        public static void downloadBlob(Blob blob, String fileName) {
            String url = URL.createObjectURL(blob);
            HTMLAnchorElement anchor = a()
                    .attr("href", url)
                    .attr("download", fileName)
                    .style("display: none;")
                    .element();
    
            DomGlobal.document.body.appendChild(anchor);
            anchor.focus();
            anchor.remove();
            DomGlobal.setTimeout(p0 -> URL.revokeObjectURL(url), 5000);
        }
    }