describe('WalkontableBorder', function () { var $table, $container, $wrapper, debug = false; beforeEach(function () { $container = $('
'); $wrapper = $('
'); $container.width(100).height(200); $table = $('
'); $container.append($wrapper); $wrapper.append($table); $container.appendTo('body'); createDataArray(); }); afterEach(function () { if (!debug) { $('.wtHolder').remove(); } $container.remove(); }); it('should add/remove border to selection when cell is clicked', function () { var wt = new Walkontable.Core({ table: $table[0], data: getData, totalRows: 5, totalColumns: 5, selections: [new Walkontable.Selection({ border: { width: 1, color: 'red' } })], onCellMouseDown: function onCellMouseDown(event, coords, TD) { wt.selections.current.clear(); wt.selections.current.add(coords); wt.draw(); } }); shimSelectionProperties(wt); wt.draw(); var $td1 = $table.find('tbody tr:eq(1) td:eq(0)'); var $td2 = $table.find('tbody tr:eq(2) td:eq(1)'); var $top = $(wt.selections.current.getBorder(wt).top); var $right = $(wt.selections.current.getBorder(wt).right); var $bottom = $(wt.selections.current.getBorder(wt).bottom); var $left = $(wt.selections.current.getBorder(wt).left); $td1.simulate('mousedown'); expect($top.css('height')).toBe('1px'); expect($top.position().top).toBe(23); expect($top.position().left).toBe(0); expect($right.css('width')).toBe('1px'); expect($right.position().top).toBe(23); expect($right.position().left).toBe(49); expect($bottom.css('height')).toBe('1px'); expect($bottom.position().top).toBe(46); expect($bottom.position().left).toBe(0); expect($left.css('width')).toBe('1px'); expect($left.position().top).toBe(23); expect($left.position().left).toBe(0); $td2.simulate('mousedown'); expect($top.css('height')).toBe('1px'); expect($top.position().top).toBe(46); expect($top.position().left).toBe(49); expect($right.css('width')).toBe('1px'); expect($right.position().top).toBe(46); expect($right.position().left).toBe(99); expect($bottom.css('height')).toBe('1px'); expect($bottom.position().top).toBe(69); expect($bottom.position().left).toBe(49); expect($left.css('width')).toBe('1px'); expect($left.position().top).toBe(46); expect($left.position().left).toBe(49); }); it('should add/remove corner to selection when cell is clicked', function () { var wt = new Walkontable.Core({ table: $table[0], data: getData, totalRows: 5, totalColumns: 5, selections: [new Walkontable.Selection({ border: { width: 2, color: 'green', cornerVisible: function cornerVisible() { return true; } } }), new Walkontable.Selection({})], onCellMouseDown: function onCellMouseDown(event, coords, TD) { wt.selections.current.clear(); wt.selections.current.add(coords); wt.draw(); } }); shimSelectionProperties(wt); wt.draw(); var $td1 = $table.find('tbody tr:eq(1) td:eq(0)'); var $td2 = $table.find('tbody tr:eq(2) td:eq(1)'); var $corner = $(wt.selections.current.getBorder(wt).corner); $td1.simulate('mousedown'); expect($corner.css('width')).toBe('5px'); expect($corner.css('height')).toBe('5px'); expect($corner.position().top).toBe(42); expect($corner.position().left).toBe(45); $td2.simulate('mousedown'); expect($corner.css('width')).toBe('5px'); expect($corner.css('height')).toBe('5px'); expect($corner.position().top).toBe(65); expect($corner.position().left).toBe(95); }); it('should move the fill handle / corner border to the left, if in the position it would overlap the container (e.g.: far-right)', function () { $container.css({ overflow: 'hidden', width: '200px' }); var wt = new Walkontable.Core({ table: $table[0], data: getData, totalRows: 5, totalColumns: 4, selections: [new Walkontable.Selection({ border: { width: 2, color: 'green', cornerVisible: function cornerVisible() { return true; } } }), new Walkontable.Selection({})], onCellMouseDown: function onCellMouseDown(event, coords, TD) { wt.selections.current.clear(); wt.selections.current.add(coords); wt.draw(); } }); shimSelectionProperties(wt); wt.draw(); var $td1 = $table.find('tbody tr:eq(1) td:eq(0)'); var $td2 = $table.find('tbody tr:eq(3) td:eq(3)'); var $td3 = $table.find('tbody tr:eq(2) td:eq(1)'); var $corner = $(wt.selections.current.getBorder(wt).corner); $td1.simulate('mousedown'); expect($corner.css('width')).toBe('5px'); expect($corner.css('height')).toBe('5px'); expect($corner.position().top).toBe(42); expect($corner.position().left).toBe(45); expect($container[0].clientWidth === $container[0].scrollWidth).toBe(true); $td2.simulate('mousedown'); expect($corner.css('width')).toBe('5px'); expect($corner.css('height')).toBe('5px'); expect($corner.position().top).toBe(88); expect($corner.position().left).toBe(193); expect($container[0].clientWidth === $container[0].scrollWidth).toBe(true); $td3.simulate('mousedown'); expect($corner.css('width')).toBe('5px'); expect($corner.css('height')).toBe('5px'); expect($corner.position().top).toBe(65); expect($corner.position().left).toBe(95); expect($container[0].clientWidth === $container[0].scrollWidth).toBe(true); }); });