Giter VIP home page Giter VIP logo

ax5ui / ax5ui-grid Goto Github PK

View Code? Open in Web Editor NEW
99.0 13.0 36.0 5.63 MB

Javascript UI Component - GRID ( Excel Grid, jqGrid, angularjs grid, jquery grid, SlickGrid, ag-grid gridify)

Home Page: http://ax5.io/ax5ui-grid/demo/index.html

License: MIT License

Shell 0.02% JavaScript 41.06% CSS 2.82% HTML 54.27% PHP 1.83%
javascriptui jquery bootstrap ax5ui grid table ax5ui-grid ax5core jquery-plugin ax5grid

ax5ui-grid's Introduction

Build Status npm version

ax5ui-grid

"grid" displays data in a table format with various options provided for configuration.

ax5grid

Dependencies

Install with bower

bower install ax5ui-grid

bower is web front-end package manager. When you install bower, it will be installed under the bower_components folder to resolve the plug-in dependencies.
(You can change the folder location. .bowerrc )

It is recommended that you install by using bower. If you've never used bower, please refer to http://bower.io/#install-bower.

Install with npm

If you do not use bower, it also can be installed by using npm as an alternative. In case of npm, which is the package manager for the front end, you need to solve the problem of plug-in dependencies.

npm install jquery
npm install ax5core
npm install ax5ui-grid

After downloading the install file of npm, you will need to copy it to the location where you want to use as a resource for the project. If the copy process is inconvenient, it also can be done easily by using gulp or grunt.

Download code

Insert "ax5grid" in HTML HEAD.

Folder location can be any for your project. However, please be sure to assign the right path in the project.

<link rel="stylesheet" type="text/css" href="https://cdn.rawgit.com/ax5ui/ax5ui-grid/master/dist/ax5grid.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/ax5ui/ax5core/master/dist/ax5core.min.js"></script>
<script type="text/javascript" src="https://cdn.rawgit.com/ax5ui/ax5ui-grid/master/dist/ax5grid.min.js"></script>

CDN urls This is a list of CDN urls for ax5ui-grid. ax5ui offers the CDN services through the rawgit.

https://cdn.rawgit.com/ax5ui/ax5ui-grid/master/dist/ax5grid.css
https://cdn.rawgit.com/ax5ui/ax5ui-grid/master/dist/ax5grid.js
https://cdn.rawgit.com/ax5ui/ax5ui-grid/master/dist/ax5grid.min.js

Basic Usage

<div data-ax5grid="first-grid" data-ax5grid-config='{name:"my first grid"}' style="height: 100%;"></div>
var firstGrid = new ax5.ui.grid();
firstGrid.setConfig({
    target: $('[data-ax5grid="first-grid"]'),
    frozenColumnIndex: 2,
    frozenRowIndex: 0,
    showLineNumber: true,
    showRowSelector: true,
    multipleSelect: true,
    lineNumberColumnWidth: 40,
    rowSelectorColumnWidth: 28,
    sortable: true, 
    multiSort: false,
    header: {
        align: "center",
        columnHeight: 28
    },
    body: {
        align: "center",
        columnHeight: 28,
        onClick: function () {
            // console.log(this);
            this.self.select(this.dindex);
        }
    },
    columns: [
        {
            key: "a",
            label: "필드A",
            width: 80,
            styleClass: function () {
                return "ABC";
            },
            enableFilter: true,
            align: "center"
        },
        {key: "b", label: "필드B", align: "center"},
        {
            key: undefined, label: "필드C", columns: [
            {key: "price", label: "단가", formatter: "money", align: "right"},
            {key: "amount", label: "수량", formatter: "money", align: "right"},
            {key: "cost", label: "금액", align: "right", formatter: "money"}
        ]
        },
        {key: "saleDt", label: "판매일자", align: "center"},
        {key: "customer", label: "고객명"},
        {key: "saleType", label: "판매타입"}
    ]
});

Preview

If you have any questions, please refer to the following gitHub

Question

axisj-contributed

ax5ui-grid's People

Contributors

aeei avatar dongyoung86 avatar groovedk avatar hoksi avatar hyunjun19 avatar mojosoeun avatar sera0731 avatar thomasjang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ax5ui-grid's Issues

add row 시 columns 의 key값 문제.

데이터가
inoutSxn:"001"
totPlMnm:2.2
inputManagementDetails:Array[3]
0:Object
actyYymm:"201604"
mnm:1
1:Object
actyYymm:"201605"
mnm:0.5
2:Object
actyYymm:"201606"
mnm:0.7

이런식으로 inputManagementDetails 에 동적으로 배열이 생성됩니다.

이녀석을 위해서

      var colMap =
      [  
       {key: 'inoutSxn', label: '<b>구분</b>', width: 40, align: 'center', editor: {type: 'text'}},
       {key: 'totPlMnm', label: '<b>합계</b>', width: 60, align: 'center', formatter: function () {
           return ax5.util.number(.........., {"money": true});
       }}
     ];

      for (var i=0; i<monthdata.length; i++) {
          colMap.push({key: 'inputManagementDetails['+i+'].mnm', label: '<b>' +monthdata[i].actyYymm + '</b>', width: 85, align: 'center',editor:{type: 'money', updateWith:['totPlMnm'], disabled: function() {return false;}}});     
      }

....

Grid 초기화 시에
columns: colMap

요로코롬 하니..일단 데이터가 잘 들어오고..수정도 잘 됩니다.

그런데 신규 행 추가를 하니...
추가 후 동적으로 늘린 행에 값을 입력하면..입력 후 바로 사라져 버리더군요..ㅡㅡ

그래서 key 가 문제인가 싶어...키를
'inputManagementDetails['+i+'].mnm' 에서 'inputManagementDetails'+i
이런식으로 배열표시( [] )와 ( . ) 을 제거하니.
값을 binding 하지는 못해도 신규 추가시에 입력은 되더군요...

왜 그런지 아직 파악을 못하고 있는 중입니다...ㅡㅡ

기존 HTML과 javascript로 만든 inline editor grid를 수정하면서

테스트를 진행하고 있는데...갈길이 태산이군요..^^;

Grid autocomplete 구현문의

안녕하세요? grid에서 autocomplete 구현 문의합니다.
현재 grid inline editor에 select 예제가 있어서 그것을 참고하여 붙였는데요~
ax5select 대신 ax5autocomplete 를 사용하여 적용해보았습니다.

  1. enter 키 입력시 autocomplete 가 열렸다 닫힙니다. open 이벤트 발생후 close 이벤트가 바로 발생하는데. 엔터키 입력하면 open 한 상태로 유지하는 방법 문의합니다

  2. 데이터가 입력되어 있는 autocomplete 인 경우
    첨부한 이미지처럼 autocomplete 목록이 아래로 내려가는 현상이 발생합니다.
    어디서 수정해야하는지 문의합니다.

image

컬럼 무빙 기능 UI부분은 언제 정도 추가될까요?

AXGrid를 기존 버젼부터 잘 쓰고 있습니다.

예전부터 계속 AXGrid를 사용하면서도 한 가지 아쉬운 부분이 컬럼 이동 기능인데요..

내부적으론 어느 정도 기능 구현해놓으신 것 같은데

컬럼 무빙 기능의 UI부분 기능은 언제 정도 추가하실 계획이신가요?

addRow 이후에 focus 이동.

안녕하세요.

  1. addRow 호출하여 row 추가하면 그리드 스크롤이 제일 아래로 내려가는 현상이 있어서 문의합니다.

image

그리드의 첫번째 row 를 클릭후 firstGrid.addRow(newRowData, 2);
를 호출하여 row를 추가하면

image

위 이미지처럼 스크롤이 제일 아래로 내려갑니다.

스크롤을 위로 올려보면
image

추가한 데이터는 정상적으로 add되어 있습니다.

  1. 위에서 처럼 addrow 한 이후에 해당 row로 focus를 주면
    firstGrid.addRow(newRowData, 2);
    firstGrid.focus(2);

image

위 이미지처럼 추가된 row가 제일 위로 가게 됩니다.
아래 이미지처럼 스크롤이동없이 add된 row가 보였으면 합니다.

image

어떻게 해야하는지 문의합니다.

그리드 행 추가 시 오류

아래 처럼 그리드 컬럼 설정 후 행 추가 시 오류가 발생 합니다.

, editor: "text", formatter: function formatter() {
return ax5.util.date(this.value, {return:'yyyy/MM/dd'});
}

오류 : Uncaught TypeError: Cannot read property 'getUTCFullYear' of undefined

inline editor 모드에서 editor type = select의 경우

Grid의 inline editor모드일경우
editor type = select 의 컬럼을 수정하게 되면
선택한 selectbox의 optionValue 값이 해당 컬럼의 값으로 변경됩니다.

이경우 코드는 따로 어딘가에 두고 optionText 값이 column에 들어가야 할텐데..
어찌 할바를 모르겠네요..
그냥 optionValue 로만 들어가니...
선택한 코드와 코드값을 모두 그리드 Row에 표현하고 싶은데..힘드네요

무슨 방법이 없을까요?

header 의 색상

멋진 그리드 감사히 생각합니다.

header 의 색상변경할수 있나요 ? styleClass 로 사용될 예정인가요 ?

Cell 을 Click 하면 파랑색으로 표시되고 있는데, API 호출로도 Focus 를 줄 수 있으면 어떨까요?

Inline edit 기능으로 사용자가 입력한 Data 를 ajax 로 보내게 되는데,
잘못된 값이 있다면 $.ajax() 호출전이나 $.ajax() 응답후 해당 Cell 을 Focus 해주고 싶습니다.
(addRow({}) API 호출시에도 첫번째 Column 에 Focus 를 해주고 싶습니다.)

그리고 Grid 에 Data 가 많은 경우
API 로 Focus 를 준 Cell 이 현재 Scroll 안에 보이지 않을 수 있는데,
해당 Cell 이 사용자에게 보이도록 Scroll 도 이동시켜줄 수 있었으면 합니다.

특정 컬럼의 색상을 변경하고 싶습니다.

Grid에서 특정컬럼의 글자색 혹은 background색상을 변경하는 기능이 있을까요?

"_config.columns[].styleClass"를 사용하면 되지 않을까~싶은데,
사용법을 찾을 수 없어서 문의 남깁니다.

감사합니다 ^^

Grid 컬럼 감추기

예전에...AXU4J 의 그리드에 있었던 기능인데요, 특정 컬럼을 display:false 하는 설정은 없을까요?
있을것 같은데... API를 봐도 못찾겠습니다 ㅠㅠ

tree grid 에서 행 추가

그리드에서의 행 추가 가능이 트리타입인 경우 마지막에만 추가됩니다.
지정된 그룹별로 소팅된 기준에서 그리드의 선택된 행 자식 노드의 마지막에 추가한다면 소팅에 문제가 생기지 않고 중간에 추가(자식노드추가)도 가능할거 같습니다.

그리드 높이 조절 질문합니다.

안녕하세요. (( 먼저 이렇게 여기에 글을 올려도 될지.. 잘 모르겠으나 ))

개발된 어플리케이션을 구경하다가 멋져보여서, 샘플을 그대로 따라해보다가...

그리드의 높이를 변경해보려 하였으나 잘 안되서요. 어떻게 설정해야할지 막막해서

도움을 받을 수 있을까하여, 이렇게 글을 올리게 되었습니다.

http://ax5.io/ax5ui-grid/api/index.html << api 사이트에 api에 대한 내용이 없고, 웹은 제가 초짜라서요 ^^; (많이 어렵네요)

긴글 읽어주셔서 감사합니다.

IE에서 데이터를 출력하였는데 59,006행 이상 제대로 출력되지 않습니다.

크롬에서는 잘 돌아가는데 IE에서는 59006행이상 제대로 출력되지 않는거 같습니다.

IE 버전은 (11.0.9600.18617)입니다.

test.txt

샘플코드 첨부하겠습니다.

해당내용을 실행해보면 max row는 7만건으로 나오지만 59006건이상부터는 이상하게 나옵니다.

버그인지 구조상 어쩔수없는건지 제가 잘못된건지 확인부탁드립니다.

grid excel export bug

grid.js 를 최신버전으로 받아 페이스북에 문의 했던 체크박스 값 표출되는 부분은 해결되었습니다

그런데 추가로 문의 드렸던 숫자값들중 0012 라는 숫자가 있을때 익스포트를 하면 12로 표현이 됩니다
0 이라는 숫자가 없어지는데 버그 인가요??

아니 값을 불러와서 셋팅할때 어떤 이유로 0값을 제거하는 로직이 있는건지 확인 부탁드립니다

안녕하세요

안녕하세요

혹시 아래와 같이도 구성이 가능하나요..?

text : 텍스트 (edit는 되면 안된다)
edit : 수정
button : 버튼
empty : 공백 (edit는 되면 안된다)

image

각 row및 col마다 개별적으로 컨트롤 할 수 있게요..

아님 기능을 따로 추가해야 할까요..?

selectbox 에서 optionText

select box 에서 선택시 optionText 로 설정한 text가 안나오고 있습니다.
확인해보니,
var label = function label(columnKeys) {
있는 부분에서요.
{{text}}

{{" + columnKeys.optionText + "}}
로 변경하면 될 것 같은데~ 확인후 패치부탁합니다. :)

Grid inlineEditor에 textarea..

axboot framework 사용자입니다.

  1. grid의 inlineEditor 중에서 여러줄을 입력할 수 있는 textarea 같은

inlineEditor 는 없는건가요?

없다면 만들어 제가 보고 싶은데요~

textarea이기 때문에 grid의 row height가 늘어나야 해서 좀 고민이 됩니다.

  1. grid에서 multiline 설정은 어떻게 하는지 궁금합니다.

감사합니다. ^^

Cell 편집 기능 이용시 궁금한게 있습니다.

  1. Cell Edit Mode 에서(Cell 을 Double Click 하거나 Enter Key 를 누름.)
    ESC Key 아닌 Enter Key 를 누르거나, 아래 방향키를 누르거나, 아니면 화면내 다른 곳을 Click 하여
    Edit Mode 를 빠져나오면 getList("modified") 에 해당 행이 출력되는거 같습니다.
    값이 변경한 행만 출력될 줄 알았는데 그렇지 않네요.

  2. Cell 위에서 CapsLock Shift Alt 등의 Key 를 누르면 Edit Mode 로 변경되면서 값을 모두 지우는거 같습니다.
    Edit Mode 가 되지도 않으며 값도 변경되지 않을 줄 알았는데 그렇지 않네요.
    Notebook Keyboard 라서 못눌러본 Key 들이 더 있네요.(Insert, NumLock 등등)

  3. Cell 위에서 ` \ - = [ ] \ ; ' , . / 등의 Key 를 누르면 Edit Mode 로 변경되면서 값을 모두 지우기만 하는거 같습니다. Edit Mode 가 되면서 해당 Key 로 값이 변경될 줄 알았는데 그렇지 않네요.

addRow에 대해서.

안녕하세요?
grid에서 row를 추가할때 addRow를 호출하는데요~
api 문서에 ax5grid.addRow(_row, [_dindex], [_options]) 이렇게 되어있던데.

그래서,
ax5grid.addRow({date:201607}, 3);
이런식으로 특정 index 값을 넣어주니 add row가 정상동작하지 않습니다.
확인부탁드려요.ㅠㅠ

ax5ui-grid#1.4.18 버전을 사용중입니다.
감사합니다.

mergeCell에서 키보드 이동시 에러

1

3행 filed B에서 filed A로 키보드 이동시 에러가 납니다.
머지가 되면 rowspan이 되면서 해당 위치가 비어있어서 그런것 같아요.

ax5grid.js

 "LR": function LR(_dx) {
                var moveResult = true;
                var focusedColumn;
                var originalColumn;
                var while_i = 0;
                var isScrollPanel = false;
                var containerPanelName = "";

                for (var c in this.focusedColumn) {
                    focusedColumn = jQuery.extend({}, this.focusedColumn[c], true);
                    break;
                }
                if (!focusedColumn) return false;

                originalColumn = this.bodyRowMap[focusedColumn.rowIndex + "_" + focusedColumn.colIndex];

                columnSelect.focusClear.call(this);
                columnSelect.clear.call(this);

                if (_dx < 0) {
                    focusedColumn.colIndex = focusedColumn.colIndex + _dx;
                    if (focusedColumn.colIndex < 0) {
                        focusedColumn.colIndex = 0;
                        moveResult = false;
                    }
                } else {
                    focusedColumn.colIndex = focusedColumn.colIndex + (originalColumn.colspan - 1) + _dx;
                    if (focusedColumn.colIndex > this.colGroup.length - 1) {
                        focusedColumn.colIndex = this.colGroup.length - 1;
                        moveResult = false;
                    }
                }

                if (typeof this.bodyRowMap[focusedColumn.rowIndex + "_" + focusedColumn.colIndex] === "undefined") {
                    focusedColumn.rowIndex = 0;
                }
                while_i = 0;
                while (typeof this.bodyRowMap[focusedColumn.rowIndex + "_" + focusedColumn.colIndex] === "undefined") {
                    focusedColumn.colIndex--;
                    if (focusedColumn.rowIndex <= 0 && focusedColumn.colIndex <= 0) {
                        // find fail
                        moveResult = false;
                        break;
                    }
                    while_i++;
                }

                var nPanelInfo = GRID.util.findPanelByColumnIndex.call(this, focusedColumn.dindex, focusedColumn.colIndex);

                focusedColumn.panelName = nPanelInfo.panelName;
                containerPanelName = nPanelInfo.containerPanelName;
                isScrollPanel = nPanelInfo.isScrollPanel;

                this.focusedColumn[focusedColumn.dindex + "_" + focusedColumn.colIndex + "_" + focusedColumn.rowIndex] = focusedColumn;

                var $column = this.$.panel[focusedColumn.panelName].find('[data-ax5grid-tr-data-index="' + focusedColumn.dindex + '"]').find('[data-ax5grid-column-rowindex="' + focusedColumn.rowIndex + '"][data-ax5grid-column-colindex="' + focusedColumn.colIndex + '"]').attr('data-ax5grid-column-focused', "true");

                if ($column && isScrollPanel) {
                    // 스크롤 패널 이라면~
                    var newLeft = function () {
                        if ($column.position().left + $column.outerWidth() > Math.abs(this.$.panel[focusedColumn.panelName].position().left) + this.$.panel[containerPanelName].width()) {
                            return $column.position().left + $column.outerWidth() - this.$.panel[containerPanelName].width();
                        } else if (Math.abs(this.$.panel[focusedColumn.panelName].position().left) > $column.position().left) {
                            return $column.position().left;
                        } else {
                            return;
                        }
                    }.call(this);

                    //console.log(newLeft);

                    if (typeof newLeft !== "undefined") {
                        GRID.header.scrollTo.call(this, { left: -newLeft });
                        scrollTo.call(this, { left: -newLeft });
                        GRID.scroller.resize.call(this);
                    }
                }

                return moveResult;
            },

에러 타겟 $column.position().left
에러 메시지
Uncaught TypeError: Cannot read property 'left' of undefined
at ax5grid. (ax5grid.js:3401)
at ax5grid.LR (ax5grid.js:3408)
at ax5grid.LEFT (ax5grid.js:3495)
at ax5grid.moveFocus (ax5grid.js:3512)
at ax5grid.KEY_LEFT (ax5grid.js:901)
at ax5grid.keyDown (ax5grid.js:955)
at ax5grid.js:844
at dispatch (jquery.min.js:4)
at r.handle (jquery.min.js:4)

그리드에서 특정 ROW의 Column 값을 변경하고 싶습니다.

그리드에서 특정 행은 검색팝업을 오픈하여

팝업에서 선택된 데이터를 그리드에서 선택한 특정행열의 값을 변경할 수 있는지요?

팝업오픈해서 특정값을 callback처리 까지는 했는데.....

updateColumn 이건 아닌거 같은데....

방법을 없나요?

아 그리고 혹시 그리드내에 hidden Column은 없나요?...코드값같은 넘들은 보이지 않고 써야하는데..

감사합니다.

frozenColumnIndex 오류 및 엑셀다운 확인

안녕하세요.

ax5ui grid를 사용하면서 frozenColumnIndex관련하여 오류를 발견하였습니다.

frozenColumnIndex의 값을 7까지주었을 때는 이상이 없었으나 아래와 같이 이상하게 나옵니다

그리고 4번행까지만 그렸는데 frozenColumnIndex때문인지 테이블 height까지 줄을 그리는거 같습니다.
이것도 그린행까지만 표시되게 안되는건가요..?

image

확인부탁드립니다.

그리고 엑셀다운로드는 xx.xls는 잘 되는데 xx.xlsx로 하면 되질 않습니다
xx.xlsx는 현재 지원하지 않는 기능인지 확인부탁드립니다.

소스첨부해드립니다.
test.txt

tabPanel 사용시 각 tab별 grid 생성

layout, grid를 사용하여 tab별 grid 생성시
처음 active가 true인 tab만 grid가 생성되고 다른 탭은 생성되지 않은 현상이 있습니다.

image

image

이벤트 질문있습니다.

이슈가 아닌 질문을 어디에 해야하는지 몰라서 적습니다.

인라인 이벤트로 textarea를 만들고 있습니다.
인라인 이벤트 발생시 모달을 생성하여 작성하면 그리드에 표시하게 끔 하고 만들었는데

모달의 위치를 인라인 이벤트 근처에 생성하고 싶습니다.

인라인 이벤트를 확장하여
getHtml, init, bindUI 메서드를 이용했는데 인라인 컬럼 위치를 어떻게 받아야할지 모르겠습니다.
_root 와 _columnKey를 이용해서 가져올수 있을것 같긴한데.
가이드를 주셨으면 감사하겠습니다.

그리드 컨텍스트 메뉴의 popupFilter 사용시 선택된 항목이 다릅니다.

그리드에 컨텍스트 메뉴로 트리뷰에서의 이동 및 추가삭제를 구현하려고 합니다.
popupFilter 속성으로 부모의 위치에 따라서 나오는 메뉴를 변경하고 있는데 return false 로 컨텍스트메뉴의 아이템을 제외하면 항목과 인덱스가 맞지 않습니다.

예를들어 5개 메뉴중(라인포함 6개) 중간 3개를 제외하고 3,4,5 메뉴중 두번째 클릭시 제외하기 전 인덱스에 해당하는 메뉴가 선택된다고 나옵니다.
아래 코드를 예로 들면 3,4,5 (이동, 구분선, 추가) 가 있을때, 이동을 누르면 원 메뉴인 "위로"(필터링 되지
않은 메뉴의 첫번째 인덱스)가 선택됩니다.

코드는 그리드의 컨텍스트부분만 발췌해서 올립니다.

contextMenu: {
    iconWidth: 20,
    acceleratorWidth: 100,
    itemClickAndClose: false,
    icons: {
        'arrow': '<i class="fa fa-caret-right"></i>'
    },
    items: [
        {label: "위로", act_tp:"moveUp", icon: '<i class="fa fa-arrow-up" aria-hidden="true"></i>'},
        {label: "아래로", act_tp:"moveDown",  icon: '<i class="fa fa-arrow-down" aria-hidden="true"></i>'},
        {label: "이동", act_tp:"move", icon: '<i class="fa fa-arrows" aria-hidden="true"></i>'},
        {divide: true},
        {label: "추가", act_tp:"C", icon: '<i class="fa fa-plus" aria-hidden="true"></i>'},
        {label: "삭제", act_tp:"D", icon: '<i class="fa fa-minus" aria-hidden="true"></i>'}
    ],

    popupFilter: function (item, param) {
        // console.log("popupFilter-------");
        // console.log(item, param);
        
        var listItem = param.item;
        var parentItem = _this.getParentNode(listItem);
        var hsArr = listItem["__hs__"].split(".");
        // console.log(hsArr);

        if (listItem.parent_cd == "top"){
            return (item.act_tp == "C");
        }else{

            var rtnFlag = true;

            if (item.act_tp == "moveUp"){
                rtnFlag = !( ax5.util.number(hsArr[hsArr.length-1]) == 0) ;
            }else if (item.act_tp == "moveDown"){
                rtnFlag = !(parentItem["__children__"].length-1 == ax5.util.number(hsArr[hsArr.length-1]));
            }else if (item.act_tp == "move"){
                rtnFlag = !(listItem.parent_cd == "top");
            }else if (item.act_tp == "C"){
                rtnFlag = true;
            }else if (item.act_tp == "D"){
                rtnFlag = !(listItem.parent_cd == "top");
            }

            return rtnFlag;
        }
    },


    onClick: function (item, param) {
        console.log("contextMenu onClick--------------");
        console.log(item, param);

        var listItem = param.item;
        var act_tp = item.act_tp;
        
        var hsArr = listItem["__hs__"].split(".");
        var siblingIdx = ax5.util.number(hsArr[hsArr.length-1]);

        console.log(siblingIdx);
        console.log(act_tp);

        if (act_tp == "C") {
            
        } else if (act_tp == "D") {

        } else if (act_tp == "moveUp") {
            
        } else if (act_tp == "moveDown") {

        } else if (act_tp == "move") {

        }

        _this.target.contextMenu.close();
    }
}

multiLine 설정후 줄바꿈안됩니다~

안녕하세요?
또~!! 문의를 하네요.^^;;
그리드에서 컬럼정의시
{key: "b", label: "필드B", align: "center", multiLine:true}
이렇게 해주었는데요.
첨부한 이미지처럼 멀티라인이 적용이 안되는데요~
개행되어야 하는것 아닌가요? 확인부탁합니다.

image

mobile(tablet) scrolling performance issue

안녕하세요.
훌륭한 프레임웍을 공유해주셔서 감사합니다.

일반 PC 브라우저에서는 다른 그리드보다 퍼포먼스 측면에서 우수한데요
유독 스크립트 처리가 느린 모바일에서는 느린 것 같습니다.

하드웨어 가속 css 를 써도 별 차이가 없네요.
-webkit-overflow-scrolling: touch;
transform: translate3d(0, 0, 0);

혹시 개선 방법이 있을까요? 차라리 가상 스크롤을 해제한다던지...

mergeCell 인 경우 방향키로 이동시

안녕하세요?
grid에서 mergeCell 인 경우 방향키로 이동시
a, b, c 컬럼이 있고.
b 컬럼이 mergecell로 설정하였습니다.
방향키로 위로 올라가면 그리드에 스크롤이 윗쪽으로 이동하지 않습니다.

  • 아래 방향키는 정상동작합니다.
    확인부탁합니다. 감사합니다.

Explorer에서 스크롤 속도개선 문의

안녕하세요.

ax5ui-grid(inline-editor)를 사용하여 구현한 화면을
"크롬"이나 "파이어폭스"에서 사용하면 스크롤이 원활하게 작동됩니다.
유독 "익스플로러"와 "엣지"에서만 버벅임이 심하구요...

관련문의가 있었나 찾아보니, 해당내용은 없는것 같고...
위와같은 현상이 정상적인건지, 혹은 개선의여지가 있는 것인지 궁금합니다.

this.align 개선

엘리먼트가 hidden이거나 너비 또는 높이가 0 일때는 align 처리 안하도록 변경 필요

모든 행에 대하여 RowSelect Checkbox 를 선택해주었다가 선택해제해주는 기능이 있으면 어떨까요.

http://ax5.io/ax5ui-grid/demo/2-aside-columns.html 화면내 Grid 에 RowSelector Checkbox 들이 보이고 RowSelector Header 자리는 비어있네요. 그 자리에 모든 행을 선택했다가 선택해제해주는 Button 이나 Text 를 넣으면 어떨까요?

RowSelector Header 를 Click 했을때
하나이상의 선택된 행이 있으면 모두 선택 해제해주고, 선택된 행이 없으면 모두 선택 해주는 기능이 있었으면 합니다.

Grid에서 Textarea 구현방법 문의

안녕하세요.
웹 애플리케이션 개발 목적으로 ax5ui-grid를 사용중인 웹 개발자 입니다.

ax5ui-grid에서 TextArea 구현을 어떻게 하는지 방법을 여쭈고자 합니다.

  • 약 1000자 정도의 서술형식의 text를 입력 및 저장 목적
  • 팝업으로 띄우지 않고, Grid에서 직접 입력 및 저장

아래와 같이 몇가지 테스트 해보았는데, 원하는 결과를 얻지 못하고 있습니다.

  • Formatter에서 html textarea 태그는 줄 띄워쓰기도 안되고, 틀이 깨져보임
  • editor: {type:"text"}, multiLine:true 의 옵션을 주어도 멀티라인이 안됨

확인부탁드립니다.
이상입니다.

감사합니다.

columns 항목에 css 의 min-width 항목 사용

columns 항목에 css 의 min-width 항목 사용하는 방법은 없을까요 ?

columnMinWidth 라는 것이 있는데, 사용방법을 정확히 알기 어렵습니다.

컴럼의 size를 '%' 로 줄수 있고, min-width 와 사용된다면 괜찮을듯합니다.

bootstrap과 함께 개발을 진행해보고 있는데, min-width 의 기능만 있으면 아주 훌륭한 조합이 될듯합니다.

grid search, focus..

안녕하세요?

  1. 그리드에서 primarykey(각 row별로 unique한 값) 로 search 하여
    해당 index를 얻어올 수 있는 기능이 있는지 문의합니다.
  2. 그리고, 그리드의 특정 row 로 focus되게 하는 방법은 있는지도 문의합니다.
    (63row중에서 중간에 있는 row를 select를 했더니 focus는 이동이 안되더라고요.
    스크롤을 내려보니 select는 되어 있었습니다.)
    감사합니다.

Grid inlineEditor selectbox..

Grid inlineEditor에서 select box를 사용하고 있는데요.

IE에서 etner를 치면 select box가 open되었다가 바로 close 됩니다.

그래서 선택을 할 수 없습니다.(마우스로 동작시 정상)

크롬에서는 enter를 치면 select box가 open된 상태로 유지되어 선택할 수 있더라고요.

http://ax5.io/ax5ui-grid/demo/13-inline-edit.html#ax5select-ax5select-14

데모사이트 url입니다.

답변부탁드립니다. 감사합니다.

Grid tree view 에서 체크박스 에디터 기능 사용시 disabled 된 체크박스도 일괄적용되는 현상

그리드 트리뷰에서 부모 체크시 자식노드도 같이 체크되는 부분에서
disable 된 체크박스도 적용이 되는 문제가 있네요.

image

자식노드까지 체크가 잘 됩니다.
하지만 디스에이블 된 아이들도 값이 변경 되네요.
image

부모를 체크해서 자식들을 체크할때 updateChildRows 호출시 _updatedata 에 함수를 받아서 피해갈 로직을 직접 작성하거나, 디스에이블 조건에 부합시 체크로직을 타지 않으면 되지 않을까 합니다.

감사합니다.

grid에서 tooltip?

안녕하세요?
grid에서 tooltip 설정이 가능한지요?
어떻게 설정하는지 알려주세요.
감사합니다.

internet explore 상에서의 속도

inline editor 모드일경우
chrome에서는 달력이나 number 등 editor클릭시 바로바로 수정모드가 되는데
internet exlporer(11) 에서는 상당히 느립니다.
ax5 grid 데모페이상에서도 확인해 보면 달력이 뜨거나 수정모드가 되는게 눈에 천천히 보일정도입니다.
데이터가 많을 수록 더 느려지네요....ㅡㅡ

axisj 에서는 브라우저에 관계없이 속도가 잘 나오는데..
빠르게 할수 있는 방법이 있을까요?

tabPanel 사용시 각 tab별 grid 생성

재문의 드립니다.
아래 그림과 같이 그려지기는 하는데 전부를 그리지는 않는것 같습니다.

하단 합계를 보면 45,000 인데 첫라인만 그려지는것 같습니다.

참고로 현재 버전은 1.3.135 입니다.

image

Grid에서 페이징을 하면 화면이 새로고침 됩니다.

var pga010searchGrid = {
		initView: function () {
			this.target = new ax5.ui.grid();
			this.target.setConfig({
			    target: $('[data-ax5grid="pga010_search_Grid"]'), 
			    page: {
			        navigationItemCount: 2,
			        height: 30,
			        display: true,
                    firstIcon: '<i class="fa fa-step-backward" aria-hidden="true"></i>',
                    prevIcon: '<i class="fa fa-caret-left" aria-hidden="true"></i>',
                    nextIcon: '<i class="fa fa-caret-right" aria-hidden="true"></i>',
                    lastIcon: '<i class="fa fa-step-forward" aria-hidden="true"></i>',
                    onChange: function () {
                    	searchPagingBtn(this.page.selectPage);
                    }
			    },
			    columns: [
					{key: "rn", label: "No", align: "center", width: "*"},      
			        {key: "kindNm", label: "종류", align: "center", width: "*"},
			        {key: "name", label: "명칭", width: "*"}
			    ],				
			});
            return this;
		},
        setData: function (_pageNo, searchList, listNo) {
			var totalPage = parseInt(listNo/10);
			if((listNo/5)-totalPage > 0)
				totalPage += 1;

            this.target.setData({
                list: searchList,
                page: {
                    currentPage: _pageNo || 0,
                    pageSize: totalPage,
                    totalElements: listNo,
                    totalPages: totalPage
                }
            });
            return this;
        },
        align: function () {
            this.target.align();
        }
};


function searchPagingBtn(pageNum){		
	if(pageNum == null){
		pageNum = 0;
	}
	$("#pageNum").val(pageNum); //페이징 번호 지정
	
	var formData = $('form[name=parkSearchForm]').serialize();
	
    $.ajax({
        method: "GET",
        url: "./pga010parkListSearch.do",
        data: formData,
        //data: {"pageNum":pageNum},
		dataType:"json",
        success: function (res) {         
        	pga010searchGrid.setData(pageNum, res.pga010searchList, res.pga010ListCnt);
    
        }
    });        
}

onChange에서 함수를 타서 Grid에 뿌려줄 리스트와 리스트의 총 Count 그리고 페이지 번호를 넘깁니다.

setData까지는 진행되어 리스트 결과값이 Grid에 잠시 그려지는데 바로 화면이 새로고침되어 처음으로 돌아가버립니다.

backward, left, right, forward 버튼 전부 다 누를시 같은현상인데

reload함수를 쓴것도 아니고 되돌아가는 페이지 url을 호출한것도 아닌데 왜 이러는 걸까요?

그리고 Grid 아래에 0 - 0 of 0 으로 표시되는 data-ax5grid-page="status" 부분을 화면에서 표시하지 않도록 제어할수 있는 속성이 있나요?

Grid에서 select된 Row의 값을 가져오는 방법을 찾고 있습니다.

inline-editor방식으로 구현한 Grid에서
선택(체크박스)되어진 Row들의 특정 컬럼값을 가져오는 방법을 알고 싶습니다.
(API문서에서 제가 찾지 못한 것 일수도....)

ax5ui-grid 데모페이지등을 찾아봤지만 발견하지 못하여 부득이 이곳에 글을 남깁니다.

** 이렇게 좋은 컴포넌드를 만들어주셔서 매우~~~ 감사드립니다!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.