Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    #16
    hi Claudio - yes, that approach of loading Roboto is fine.

    Roboto-Light-Vivid is the font used in Shiva, so your skin must be based on Shiva - can you confirm the fontList at the top of your load_skin.js? And confirm whether your skin is still actually using Roboto-Light-Vivid anywhere...

    Comment


      #17
      Actually, can you show the record you added to set up Roboto manually in registeredFonts.json, and confirm whether you see the Roboto font actually being used the Skin Editor preview? In a quick test, adding the font makes it available to choose in the Skin Editor, but it isn't properly loaded so it isn't used on-screen.

      Comment


        #18
        v13.1p_2025-04-15/Enterprise Development Only

        Hello, yes, all of my custom skins are based on Shiva.

        At the top of my load_skin.js I see:

        Code:
         var currentSkin = isc.setCurrentSkin({
                // name is autoderived to be the containing folder
                name: "autoDetect",
                series: "Flat",
                // base font-list
                fonts: ['Roboto']
            });
        in registeredFonts.json I'm adding this record:

        Code:
         {
                "pk": 1,
                "name": "Roboto",
                "type": "text",
                "family": "Roboto",
                "fontFileUrl": "",
                "cssFileUrl": "https://fonts.googleapis.com/css?family=Roboto:400,400i,500,500i,700,700i&display=swap",
                "css":""
            },
        I checked the load_skin.js and skin_styles.css and there aren't usages of Roboto-Light-Vivid in my custom skins. I do find usages of Arial in load_skin.js for isc.Gauge and isc.FacetChart, though.

        And yes, I see the Roboto font in the skinEditor preview:

        Click image for larger version

Name:	2025-04-16 15.58.59.jpg
Views:	8
Size:	31.1 KB
ID:	275569

        This screenshot is from Chrome on MacOS where the Robot-Light-Vivid in bold isn't properly rendered.

        I also have a couple problems.

        With the "Fonts" tab selected, I tried filtering to search for Roboto-Light-Vivid in the skin editor, and I didn't find it, then I cleared the filter, and, with all nodes expanded, I scrolled the TreeGrid to look for other fonts, but after some scrolling I got this error:

        Code:
        *15:46:41.496:TMR9:WARN:Log:TypeError: rec is undefined
        Stack from error.stack:
            getCustomValueFieldValue() @ skinEditor.jsp:4256:82
            formatCellValue() @ skinEditor.jsp:5493:31
            ListGrid._formatCellValue()
            ListGrid.getCellValue()
            Class.invokeSuper()
            TreeGrid.getCellValue()
            Class.invokeSuper()
            Class.Super()
            getCellValue() @ skinEditor.jsp:5485:21
            anonymous()
            GridRenderer._getCellValue()
            GridRenderer.getTableHTML()
            Class.invokeSuper()
            TreeGridBody.getTableHTML()
            GridRenderer.getInnerHTML()
            Class.invokeSuper()
            Class.Super()
            GridBody.getInnerHTML()
            Canvas._getInnerHTML()
            Canvas._updateInnerHTML()
            Class.invokeSuper()
            GridRenderer._updateInnerHTML()
            Canvas._updateHTML()
            Canvas.redraw()
            Class.invokeSuper()
            GridRenderer.redraw()
            Class.invokeSuper()
            GridBody.redraw()
            GridRenderer._getRedrawOnScrollCallback/this.$134b()
            [c]Class.fireCallback()
            Class._fireActionsOnPause()
            [c]Class.fireCallback()
            Timer._fireTimeout()
            Timer.setTimeout/_7<()
            setTimeout handler*isc_c_Timer_setTimeout()
            [c]Class.delayCall()
            Class._fireActionsOnPause()
            [c]Class.fireCallback()
            Timer._fireTimeout()
            Timer.setTimeout/_7<()
            setTimeout handler*isc_c_Timer_setTimeout()
            [c]Class.delayCall()
            Class._fireActionsOnPause()
            [c]Class.fireCallback()
            Timer._fireTimeout()
            Timer.setTimeout/_7<()
            setTimeout handler*isc_c_Timer_setTimeout()
            [c]Class.delayCall()
            Class._fireActionsOnPause()
            [c]Class.fireCallback()
            Timer._fireTimeout()
            Timer.setTimeout/_7<()
            setTimeout handler*isc_c_Timer_setTimeout()
            [c]Class.delayCall()
            Class._fireActionsOnPause()
            [c]Class.fireCallback()
            Timer._fireTimeout()
            Timer.setTimeout/_7<()
            setTimeout handler*isc_c_Timer_setTimeout()
            [c]Class.delayCall()
            Class._fireActionsOnPause()
            [c]Class.fireCallback()
            Timer._fireTimeout()
            Timer.setTimeout/_7<()
            setTimeout handler*isc_c_Timer_setTimeout()
            [c]Class.delayCall()
            Class._fireActionsOnPause()
            [c]Class.fireCallback()
            Timer._fireTimeout()
            Timer.setTimeout/_7<()
        ISC_Core.js:1478:136
        Another problem is that after some switching back and forth between my custom skins, I got this error:

        Code:
        === 2025-04-16 15:36:00,608 [c-10] ERROR SQLConnectionManager - Caught exception while trying to obtain connection to server: dbUtils java.sql.SQLException: Cannot get a connection, pool error Timeout waiting for idle object
            at org.apache.tomcat.dbcp.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:142)
            at org.apache.tomcat.dbcp.dbcp2.BasicDataSource.getConnection(BasicDataSource.java:1543)
            at com.isomorphic.sql.SQLDriver.rawConnection(SQLDriver.java:1059)
            at com.isomorphic.sql.PoolableSQLConnectionFactory.makeUnpooledObject(PoolableSQLConnectionFactory.java:129)
            at com.isomorphic.sql.PoolableSQLConnectionFactory.makeObject(PoolableSQLConnectionFactory.java:138)
            at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1188)
            at com.isomorphic.pool.PoolManager.borrowObject(PoolManager.java:120)
            at com.isomorphic.sql.SQLConnectionManager.getConnection(SQLConnectionManager.java:222)
            at com.isomorphic.sql.SQLDriver.getTransformedResults(SQLDriver.java:1198)
            at com.isomorphic.sql.SQLDriver.executeQuery(SQLDriver.java:1739)
            at com.isomorphic.sql.SQLDataSource.executeNativeQuery(SQLDataSource.java:674)
            at com.isomorphic.sql.SQLDataSource.executeNativeQuery(SQLDataSource.java:668)
            at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1998)
            at com.isomorphic.sql.SQLDataSource.SQLExecute(SQLDataSource.java:1808)
            at com.isomorphic.sql.SQLDataSource.processRequest(SQLDataSource.java:509)
            at com.isomorphic.sql.SQLDataSource.executeFetch(SQLDataSource.java:453)
            at com.isomorphic.datasource.DataSource.execute(DataSource.java:3303)
            at com.isomorphic.application.AppBase.executeDefaultDSOperation(AppBase.java:656)
            at com.isomorphic.application.AppBase.executeAppOperation(AppBase.java:555)
            at com.isomorphic.application.AppBase.execute(AppBase.java:498)
            at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:4801)
            at com.isomorphic.datasource.DSRequest$execute.call(Unknown Source)
            at Script4.run(Script4.groovy:26)
            at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:317)
            at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:71)
            at com.isomorphic.scripting.ScriptXBase.evalScript(ScriptXBase.java:551)
            at com.isomorphic.scripting.ScriptXBase.eval(ScriptXBase.java:76)
            at com.isomorphic.rpc.Scripting.evalServerScript(Scripting.java:141)
            at com.isomorphic.rpc.BuiltinRPC.evalServerScript(BuiltinRPC.java:763)
            at com.isomorphic.datasource.DataSourceDMI.evalInlineScript(DataSourceDMI.java:1010)
            at com.isomorphic.datasource.DataSourceDMI.evalInlineScript(DataSourceDMI.java:836)
            at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:236)
            at com.isomorphic.datasource.DataSourceDMI.execute(DataSourceDMI.java:64)
            at com.isomorphic.datasource.DSRequest.execute(DSRequest.java:4777)
            at com.isomorphic.util.SkinUtil.getSkinConfigMap(SkinUtil.java:521)
            at com.isomorphic.servlet.ServletTools.sendStaticFile(ServletTools.java:1610)
            at com.isomorphic.servlet.ServletTools.sendStaticFile(ServletTools.java:1525)
            at com.isomorphic.servlet.FileDownload.doGet(FileDownload.java:225)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
            at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:178)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at com.isomorphic.servlet.CacheFilter.match(CacheFilter.java:219)
            at com.isomorphic.servlet.URIRegexFilter.match(URIRegexFilter.java:550)
            at com.isomorphic.servlet.URIRegexFilter.matchedRule(URIRegexFilter.java:526)
            at com.isomorphic.servlet.URIRegexFilter._doFilter(URIRegexFilter.java:377)
            at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:91)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at com.isomorphic.js.JSSyntaxScannerFilter._doFilter(JSSyntaxScannerFilter.java:262)
            at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:91)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at com.isomorphic.servlet.CompressionFilter._doFilter(CompressionFilter.java:263)
            at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:91)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at com.isomorphic.servlet.VersionedURLFilter._doFilter(VersionedURLFilter.java:83)
            at com.isomorphic.servlet.BaseFilter.doFilter(BaseFilter.java:91)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:185)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
            at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
            at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:650)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
            at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
            at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
            at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
            at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
            at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
            at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
            at java.lang.Thread.run(Thread.java:748)
        Caused by: java.util.NoSuchElementException: Timeout waiting for idle object
            at org.apache.tomcat.dbcp.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:445)
            at org.apache.tomcat.dbcp.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:359)
            at org.apache.tomcat.dbcp.dbcp2.PoolingDataSource.getConnection(PoolingDataSource.java:134)
            ... 81 more

        Comment


          #19
          Thanks Claudio - a few things:

          1) your exported skin-zip had Roboto-Light-Vivid because you weren't using any fonts with cssText, and the export loop was still (incorrectly) including the fonts from the base-skin in that case - that's been fixed for tomorrow

          2) in an ideal world, you could set your registeredFonts record to have css: "@import url(your URL)", which would cause it to be loaded with the skin, without a link in your app. However, there was a parsing issue in our StyleSheetHandler class that meant @imports didn't work properly. We're looking at this now.

          3) yes, we also see the Roboto font in the preview, but not in the Font-Picker in the outer window - sorry for the confusion - we're looking at this too, part of #2

          4) we'll find and fix the null "rec" issue

          5) your final point is a bit less obvious - we'll see if we can repro and get back to you

          Comment


            #20
            Following up, 1 and 4 have been fixed for today's builds - the latter came from the Tree's cell-formatter for font-sizes, when the value was ($someOtherFontSize + 2), for example.

            For 2 and 3, we do see some improvements that could be made here and we've done an initial look-see - but since you have things working as you need for the moment, we'll make these changes later in a more recent branch and take it from there.

            For 5, we weren't able to reproduce this - however, today's builds include several tweaks ported back from later branches, and these include an issue where the "Edit saved skin" picker could get out of sync with the actual loaded skin, and one where changing density while there were local changes in the trees could update in such a way that things were out of sync until you reloaded the page - if you did another save in the meantime, that could result in unexpected behaviors. Please try this out again and try to let us know some steps to reproduce if possible - for instance, are you switching only between Shiva variants, were changes made or reverted (saved or not) between skin-switches, was the page reloaded at any time, etc.

            Comment


              #21
              Originally posted by claudiobosticco View Post
              Hello, thanks for the clarification. Removing the isc_userSkin DataSource from the deployment solved the problem (and I don't need it in the application anyway).
              Hello, I just noticed this WARN in the tomcat logs:

              Code:
              WARN  DataStructCache File isc_userSkin.ds not found at explicitly specified location /Users/bosticco/iscSDK/tools/visualBuilder/wsmvn/Jat/target/Jat/isomorphic/../tools/skinTools/data, checking project-wide area
              could it be a problem?

              Comment

              Working...
              X