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:	27
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


                #22
                hi Claudio - no, that should be fine - we do a one-time check at the server to see if the user-skin DS is available and, if it isn't, skip related logic for the session.

                Comment


                  #23
                  SmartClient Version: v13.1p_2025-04-23/AllModules Development Only (built 2025-04-23)

                  Originally posted by Isomorphic View Post
                  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.
                  Hello, I still have got this problem:
                  Code:
                  === 2025-04-24 11:17:43,458 [ec-5] ERROR Download - Problem sending static file: /Users/bosticco/iscSDK/tools/visualBuilder/wsmvn/CustomSkins/target/CustomSkins/isomorphic/skins/JLight_Pink/images/DynamicForm/ColorPicker_icon_transparent.png 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.SQLDataSource.getConnection(SQLDataSource.java:636)
                      at com.isomorphic.datasource.DataSourceDMI.evalInlineScript(DataSourceDMI.java:1004)
                      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.URIRegexFilter.ignore(URIRegexFilter.java:566)
                      at com.isomorphic.servlet.URIRegexFilter.ignore(URIRegexFilter.java:561)
                      at com.isomorphic.servlet.URIRegexFilter.matchedRule(URIRegexFilter.java:524)
                      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:250)
                      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)
                      ... 61 more
                  Actually it happens also if I just load my Shiva-based skin, then change the density setting in the preview, after the 4th switch.

                  I also see updates in the logs:
                  Code:
                  === 2025-04-24 11:26:14,181 [ec-5] INFO DSRequest - Executing isc_userSkin.update[noScript] with
                  criteria: {pk:1}
                  values: {pk:1, name:"JLight_Pink",
                   userSettings:"{\n \"name\":\"JLight_Pink\", \n \"baseSkin\":\"Shiva\", \n \"density\":\"Expanded\", \n \"sassText\":\"$theme_name: ''JLight_Pink'';\\n$primary_font: Roboto;\\n$highlight_color: #FF2850;\\n$icon_color: #AD828A;\\n$headerIcon_color: #333333;\\n$standard_header_color: #616161;\\n$secondary_header_bgColor: #EDEDED;\\n$gradient_start_color: transparent;\\n$gradient_end_color: transparent;\\n$button_color: #FFFFFF;\\n$button_disabled_bgColor: #C0C0C0;\\n$secondaryButton_color: #DDDDDD;\\n$secondaryButton_bgColor: #FF7FA6;\\n$secondaryButton_focused_bgColor: #FFB2C9;\\n$secondaryButton_down_bgColor: rgba(229, 0, 70, 0.51);\\n$menuButton_disabled_bgColor: #C0C0C0;\\n$window_header_bgColor: #FFE8EF;\\n$dialog_header_bgColor: rgba(255, 40, 80, 0.11);\\n$listGrid_headerButton_over_bgColor: rgba(31, 23, 18, 0);\\n$listGrid_headerButton_selected_bgColor: rgba(0, 0, 0, 0);\\n$listGrid_headerButton_selected_over_bgColor: rgba(31, 23, 18... [set log category to DEBUG to see full object]
                  === 2025-04-24 11:26:14,181 [ec-5] INFO DataSourceDMI - operationBinding for DataSource: isc_userSkin with operationType: update, operationId: noScript does not have a <serverObject> in force and does not specify any operationBinding settings that could affect its behavior. This operation will almost certainly give the same result as a default operation, and so is almost certainly unnecessary
                  === 2025-04-24 11:26:14,195 [ec-5] INFO SQL - Executing SQL query on 'dbUtils': UPDATE DBUTILS.isc_userSkin SET modified_at=TO_DATE('2025-04-24 11:26:14','YYYY-MM-DD HH24:MI:SS'), modified_by=NULL, name='JLight_Pink', userSettings=? WHERE (isc_userSkin.pk=1)
                  === 2025-04-24 11:26:14,288 [ec-5] INFO DSRequest - Switching cacheSyncTiming to 'immediate' because this is a client 'update' request (dataSource is 'isc_userSkin')
                  === 2025-04-24 11:26:14,288 [ec-5] INFO DSRequest - primaryKeys: {pk=1}
                  === 2025-04-24 11:26:14,289 [ec-5] INFO SQLRefetchStrategy - isc_userSkin: using default operationBinding
                  === 2025-04-24 11:26:14,289 [ec-5] INFO DSRequest - Executing isc_userSkin.fetch rows: 0->-1 with
                  criteria: {pk:1}
                  === 2025-04-24 11:26:14,291 [ec-5] INFO InterfaceProvider - No provider found for interface: ISpringBeanFactory
                  === 2025-04-24 11:26:14,293 [ec-5] INFO InterfaceProvider - No provider found for interface: ICDIBeanManager
                  === 2025-04-24 11:26:14,294 [ec-5] INFO DSRequest - Executing isc_userSkin.fetch rows: 0->-1 with
                  criteria: {pk:1}
                  === 2025-04-24 11:26:14,777 [ec-5] INFO DSResponse - DSResponse: List with 1 items
                  even if I haven't changed anything.

                  The tomcat connection pool is configured like this:
                  Code:
                  type="javax.sql.DataSource"
                  factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
                  minEvictableIdleTimeMillis="5000"
                  numTestsPerEvictionRun="5"
                  timeBetweenEvictionRunsMillis="10000"
                  testOnBorrow="false"
                  testOnReturn="true"
                  removeAbandonedOnBorrow="true"
                  removeAbandonedOnMaintenance="true"
                  removeAbandonedTimeout="300"
                  logAbandoned="true"
                  maxTotal="12"
                  maxIdle="5"
                  maxWaitMillis="5000"
                  validationQuery="select 1 from dual"

                  Comment


                    #24
                    I forgot to mention that issues #1 and #4 are fixed for me, thank you very much

                    Comment


                      #25
                      hi Claudio - the saves you see are because you changed Density, which is stored in the skin - the next time you load the skin, the Skin Editor will set the proper density automatically.

                      That said, there's no need for us to send the skin's config to the server, just to update the Density - we'll fix that in the near future.

                      We'll have another look at the server error, although a quick test doesn't show it happening following a number of density-changes in an SDK. Do you perhaps have a particularly small max-post size?

                      Comment

                      Working...
                      X