How to change bg color of standard tile in tile container based on property from json










0















I try to dynamically change background color of every tile with some property (in json file I have property in different tiles like "tileColorGroup": "Group1", "tileColorGroup": "Group2", "tileColorGroup": "Group3"...and so on every group have own background color.



I'm using XML views and JS controllers. I tried to achieve that by code below in my view1.controller.js



onInit : function () { 
var oTileContainer = this.byId("TileContainer");
var oTiles = oTileContainer.getTile();
console.log("oTiles: " + oTiles); <--- no value


Maybe exists better way to do it?



Thanks in advance for any help and suggestions










share|improve this question




























    0















    I try to dynamically change background color of every tile with some property (in json file I have property in different tiles like "tileColorGroup": "Group1", "tileColorGroup": "Group2", "tileColorGroup": "Group3"...and so on every group have own background color.



    I'm using XML views and JS controllers. I tried to achieve that by code below in my view1.controller.js



    onInit : function () { 
    var oTileContainer = this.byId("TileContainer");
    var oTiles = oTileContainer.getTile();
    console.log("oTiles: " + oTiles); <--- no value


    Maybe exists better way to do it?



    Thanks in advance for any help and suggestions










    share|improve this question


























      0












      0








      0








      I try to dynamically change background color of every tile with some property (in json file I have property in different tiles like "tileColorGroup": "Group1", "tileColorGroup": "Group2", "tileColorGroup": "Group3"...and so on every group have own background color.



      I'm using XML views and JS controllers. I tried to achieve that by code below in my view1.controller.js



      onInit : function () { 
      var oTileContainer = this.byId("TileContainer");
      var oTiles = oTileContainer.getTile();
      console.log("oTiles: " + oTiles); <--- no value


      Maybe exists better way to do it?



      Thanks in advance for any help and suggestions










      share|improve this question
















      I try to dynamically change background color of every tile with some property (in json file I have property in different tiles like "tileColorGroup": "Group1", "tileColorGroup": "Group2", "tileColorGroup": "Group3"...and so on every group have own background color.



      I'm using XML views and JS controllers. I tried to achieve that by code below in my view1.controller.js



      onInit : function () { 
      var oTileContainer = this.byId("TileContainer");
      var oTiles = oTileContainer.getTile();
      console.log("oTiles: " + oTiles); <--- no value


      Maybe exists better way to do it?



      Thanks in advance for any help and suggestions







      sapui5






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 13 '18 at 20:12









      Jaro

      1,54211122




      1,54211122










      asked Oct 27 '18 at 21:20









      DirtyFrankDirtyFrank

      155




      155






















          2 Answers
          2






          active

          oldest

          votes


















          0














          If you want to use TileContainer control only then you can achieve it by using formatter and CSS.



          VIEW



          <TileContainer
          id="container"
          class="tileContainerHolder"
          tiles="/TileCollection">
          <StandardTile
          icon="icon"
          type="type"
          number="number"
          numberUnit="numberUnit"
          title="parts: [ 'title', 'tileColorGroup'], formatter:'my.Formatter.addBackgroundColor'"
          info="info"
          infoState="infoState" />
          </TileContainer>


          Formatter.js



          jQuery.sap.declare("my.Formatter");
          my.Formatter =
          addBackgroundColor: function (title, tileColorGroup)
          this.addStyleClass("grp" + tileColorGroup);//Add group class
          return title;

          ;


          CSS



          .tileContainerHolder .grpGroup1.sapMTile 
          background: #f0ab00;

          .tileContainerHolder .grpGroup2.sapMTile
          background: #007cc0;

          .tileContainerHolder .grpGroup3.sapMTile
          background: #008a3b;




          Note: For adding the class you need to use any one of the bind
          property like title here so that we can get the instance of the Tile
          and add the corresponding class to it.







          share|improve this answer
































            1














            TileContainer does not have a method getTile - the method is getTiles. That may be why your code is not working.



            Also note that TileContainer is deprecated in SAPUI5 1.50.



            You could extend the GenericTile control to provide a property for background colour that you can bind to.






            share|improve this answer






















              Your Answer






              StackExchange.ifUsing("editor", function ()
              StackExchange.using("externalEditor", function ()
              StackExchange.using("snippets", function ()
              StackExchange.snippets.init();
              );
              );
              , "code-snippets");

              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "1"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );













              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53026382%2fhow-to-change-bg-color-of-standard-tile-in-tile-container-based-on-property-from%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              0














              If you want to use TileContainer control only then you can achieve it by using formatter and CSS.



              VIEW



              <TileContainer
              id="container"
              class="tileContainerHolder"
              tiles="/TileCollection">
              <StandardTile
              icon="icon"
              type="type"
              number="number"
              numberUnit="numberUnit"
              title="parts: [ 'title', 'tileColorGroup'], formatter:'my.Formatter.addBackgroundColor'"
              info="info"
              infoState="infoState" />
              </TileContainer>


              Formatter.js



              jQuery.sap.declare("my.Formatter");
              my.Formatter =
              addBackgroundColor: function (title, tileColorGroup)
              this.addStyleClass("grp" + tileColorGroup);//Add group class
              return title;

              ;


              CSS



              .tileContainerHolder .grpGroup1.sapMTile 
              background: #f0ab00;

              .tileContainerHolder .grpGroup2.sapMTile
              background: #007cc0;

              .tileContainerHolder .grpGroup3.sapMTile
              background: #008a3b;




              Note: For adding the class you need to use any one of the bind
              property like title here so that we can get the instance of the Tile
              and add the corresponding class to it.







              share|improve this answer





























                0














                If you want to use TileContainer control only then you can achieve it by using formatter and CSS.



                VIEW



                <TileContainer
                id="container"
                class="tileContainerHolder"
                tiles="/TileCollection">
                <StandardTile
                icon="icon"
                type="type"
                number="number"
                numberUnit="numberUnit"
                title="parts: [ 'title', 'tileColorGroup'], formatter:'my.Formatter.addBackgroundColor'"
                info="info"
                infoState="infoState" />
                </TileContainer>


                Formatter.js



                jQuery.sap.declare("my.Formatter");
                my.Formatter =
                addBackgroundColor: function (title, tileColorGroup)
                this.addStyleClass("grp" + tileColorGroup);//Add group class
                return title;

                ;


                CSS



                .tileContainerHolder .grpGroup1.sapMTile 
                background: #f0ab00;

                .tileContainerHolder .grpGroup2.sapMTile
                background: #007cc0;

                .tileContainerHolder .grpGroup3.sapMTile
                background: #008a3b;




                Note: For adding the class you need to use any one of the bind
                property like title here so that we can get the instance of the Tile
                and add the corresponding class to it.







                share|improve this answer



























                  0












                  0








                  0







                  If you want to use TileContainer control only then you can achieve it by using formatter and CSS.



                  VIEW



                  <TileContainer
                  id="container"
                  class="tileContainerHolder"
                  tiles="/TileCollection">
                  <StandardTile
                  icon="icon"
                  type="type"
                  number="number"
                  numberUnit="numberUnit"
                  title="parts: [ 'title', 'tileColorGroup'], formatter:'my.Formatter.addBackgroundColor'"
                  info="info"
                  infoState="infoState" />
                  </TileContainer>


                  Formatter.js



                  jQuery.sap.declare("my.Formatter");
                  my.Formatter =
                  addBackgroundColor: function (title, tileColorGroup)
                  this.addStyleClass("grp" + tileColorGroup);//Add group class
                  return title;

                  ;


                  CSS



                  .tileContainerHolder .grpGroup1.sapMTile 
                  background: #f0ab00;

                  .tileContainerHolder .grpGroup2.sapMTile
                  background: #007cc0;

                  .tileContainerHolder .grpGroup3.sapMTile
                  background: #008a3b;




                  Note: For adding the class you need to use any one of the bind
                  property like title here so that we can get the instance of the Tile
                  and add the corresponding class to it.







                  share|improve this answer















                  If you want to use TileContainer control only then you can achieve it by using formatter and CSS.



                  VIEW



                  <TileContainer
                  id="container"
                  class="tileContainerHolder"
                  tiles="/TileCollection">
                  <StandardTile
                  icon="icon"
                  type="type"
                  number="number"
                  numberUnit="numberUnit"
                  title="parts: [ 'title', 'tileColorGroup'], formatter:'my.Formatter.addBackgroundColor'"
                  info="info"
                  infoState="infoState" />
                  </TileContainer>


                  Formatter.js



                  jQuery.sap.declare("my.Formatter");
                  my.Formatter =
                  addBackgroundColor: function (title, tileColorGroup)
                  this.addStyleClass("grp" + tileColorGroup);//Add group class
                  return title;

                  ;


                  CSS



                  .tileContainerHolder .grpGroup1.sapMTile 
                  background: #f0ab00;

                  .tileContainerHolder .grpGroup2.sapMTile
                  background: #007cc0;

                  .tileContainerHolder .grpGroup3.sapMTile
                  background: #008a3b;




                  Note: For adding the class you need to use any one of the bind
                  property like title here so that we can get the instance of the Tile
                  and add the corresponding class to it.








                  share|improve this answer














                  share|improve this answer



                  share|improve this answer








                  edited Oct 30 '18 at 10:13

























                  answered Oct 30 '18 at 10:08









                  inizioinizio

                  1,013612




                  1,013612























                      1














                      TileContainer does not have a method getTile - the method is getTiles. That may be why your code is not working.



                      Also note that TileContainer is deprecated in SAPUI5 1.50.



                      You could extend the GenericTile control to provide a property for background colour that you can bind to.






                      share|improve this answer



























                        1














                        TileContainer does not have a method getTile - the method is getTiles. That may be why your code is not working.



                        Also note that TileContainer is deprecated in SAPUI5 1.50.



                        You could extend the GenericTile control to provide a property for background colour that you can bind to.






                        share|improve this answer

























                          1












                          1








                          1







                          TileContainer does not have a method getTile - the method is getTiles. That may be why your code is not working.



                          Also note that TileContainer is deprecated in SAPUI5 1.50.



                          You could extend the GenericTile control to provide a property for background colour that you can bind to.






                          share|improve this answer













                          TileContainer does not have a method getTile - the method is getTiles. That may be why your code is not working.



                          Also note that TileContainer is deprecated in SAPUI5 1.50.



                          You could extend the GenericTile control to provide a property for background colour that you can bind to.







                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Oct 28 '18 at 20:37









                          rikusvrikusv

                          30015




                          30015



























                              draft saved

                              draft discarded
















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid


                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.

                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53026382%2fhow-to-change-bg-color-of-standard-tile-in-tile-container-based-on-property-from%23new-answer', 'question_page');

                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              這個網誌中的熱門文章

                              How to read a connectionString WITH PROVIDER in .NET Core?

                              Node.js Script on GitHub Pages or Amazon S3

                              Museum of Modern and Contemporary Art of Trento and Rovereto