한국투자증권 주식매매프로그램 만들기

파이썬 주식매매프로그램 만들기

Dojo/Datagrid

2. Dojo Formatter Function & Cell Style

토폴로지 2013. 8. 8. 07:52

1.1     Dojo Formatter & Cell Style Example Code

<!DOCTYPE html>

<html >

<head>

        

<style>

         #gridDiv {

                                                         height: 20em;

                                                         width : 50em;

                                         }

         .FontRed {

                                                         color: #FF0000;

                                         }

</style>

         <link rel="stylesheet" href="dojo-release-1.9.1/dijit/themes/claro/claro.css">

         <link rel="stylesheet" href="dojo-release-1.9.1/dojox/grid/resources/claroGrid.css">

         <script src='dojo-release-1.9.1/dojo/dojo.js'></script>

         <script>

  require([ 'dojox/grid/DataGrid', 'dojo/data/ItemFileWriteStore','dojox/math/round', 'dojo/domReady!'],

    function( DataGrid, ItemFileWriteStore){

    var data = {

      items: []

    };

    var data_list = [

      { col1: "normal", col2: 10, col3: 'But are not followed by two hexadecimal', col4: 29.91},

      { col1: "important", col2: 2, col3: 'Because a % sign always indicates', col4: 9.33},

      { col1: "important", col2: 7, col3: 'Signs can be selectively', col4: 19.34}

    ];

    data.items.push(data_list[0]);

         data.items.push(data_list[1]);

         data.items.push(data_list[2]);

    var store = new ItemFileWriteStore({data: data});

    /*set up layout*/

    var layout = [[

      {'name': 'Column 1', 'field': 'col1', 'width': '100px',

                         formatter: function(fields){

                                         return fields + " <em> status</em>";

        }},

      {'name': 'Column 2', 'field': 'col2', 'width': '100px',

                         formatter: function(fields){                                                                                                                     

                                         this.customStyles.push("background-color: #41AF39;");

                                         this.customStyles.push("font-weight: normal;");

                                         if(fields > 5)

                                         {

                                                         this.customStyles.push("background-color: #FFE400;");

                                                         this.customStyles.push("text-align: center;");

                                                         this.customStyles.push("font-weight: bold;");

                                         }

                                                                                                                                                                        

                                                         return fields;

                         }

           },

      {'name': 'Column 3', 'field': 'col3', 'width': '200px', classes: "FontBold"},

      {'name': 'Column 4', 'field': 'col4', 'width': '150px', styles: "text-align: center;"},

           {'name': 'Column 5', 'field': '_item', 'width': '150px', cellStyles: "text-align: right;",

                         formatter: function(item, rowIndex, cell){

                                         var store2 = cell.grid.store,

            ba = store2.getValue(item, "col2") / store.getValue(item, "col4");

                                         return dojox.math.round(ba, 3);

    }

           }

    ]];

 

    /*create a new grid*/

    var grid = new DataGrid({

        id: 'grid',

        store: store,

        structure: layout,

        rowSelector: '20px'});

        /*append the new grid to the div*/

        grid.placeAt("gridDiv");

        /*Call startup() to render the grid*/

        grid.startup();

});

         </script>

</head>

<body class="claro">

    <div id="gridDiv"></div>

</body>

</html>

Table 2 Formatter & Cell Style Example Code

1.2     Code 설명

Formatter 함수는 보통 데이터를 가공해야 할 때 쓰인다. 여기서는 각각의 셀에 대하여 if문을 줘서 색깔을 주는데에도 쓰였다. Formatter 3개의 argument를 호출할 수 있는데 cell에 대한 데이터 값, cell row Index, 그리고 cell에 대한 object 그 자체이다.

column 1의 경우 받은 data에서 뒤에 문자열 status를 붙이고 출력하도록 설정하였고, column2 background font-weight를 설정하면서 data값이 5이상일 때 다른 style이 들어가도록 설정하였다. column3 css style class를 이용해 font 색상을 바꾸었다. column5는 따로 생성한 column인데 같은 row에 있는 cell들의 data값을 이용하여 새로운 data를 만들었다. 주의할 점은 'field' 값을 무조건 _item으로 설정해야 적용된다는 점이다. 즉 기존에 있는 column에서 row 한줄만 다른 데이터의 값을 받아와 가공해서 보여주는 것은 불가능하다.

1.3     결과 화면



Figure 2 Table 2의 결과 화면

반응형

'Dojo > Datagrid' 카테고리의 다른 글

3. Dojo Datagrid Row event  (0) 2013.08.08
1. Dojo Simple Datagrid  (0) 2013.08.08