Result
編集はcontenteditable属性を使っています。
動作サンプルなのですべてのセルは編集可能となっていますので、コンテンツに応じて便宜変更してください
jQuery
var vis = function (e) { var count = $(e).children( 'td' ).not( ':first-of-type' ).length; var width = $( '.chart' ).height(); var barwidth = (width/count)-10; var heighest = 0; var chartTitle = $( 'th:first-of-type' ).html(); var tableTitle = $( '.table-title' ).html(); var chartTitleVal = $(e).children( 'td:first-of-type' ).html(); $( '.chart' ).empty(); $( '.legend' ).empty(); $( '.titles' ).empty(); $( '.title' ).empty(); $( '.x-axis' ).empty(); $( '.title' ).html(chartTitleVal); $( '.chart' ).prepend( '<div class="x-axis">' +tableTitle+ '</div>' ); //テキストをグラフ側にも反映 $( 'th' ).not( ':first-of-type' ).each( function (){ var title = $( this ).html(); $( '.titles' ).append( '<div style="width:' +barwidth+ 'px;">' +title+ '</div>' ); }); $(e).children( 'td' ).not( ':first-of-type' ).each( function (){ var contents = $( this ).html(); var value = parseInt(contents); if ( value > heighest){ heighest = value } }); $(e).children( 'td' ).not( ':first-of-type' ).each( function (){ //tableの数値をグラフに反映 var contents = $( this ).html(); var value = parseInt(contents); var barheight = (value/heighest)*100; $( '.chart' ).append( '<div class="bar" style="width:' +barheight+ '%; height:' +barwidth+ 'px;"></div>' ); $( '.legend' ).append( '<div style="width:' +barwidth+ 'px;">' +value+ '</div>' ); }); } $( 'tr' ).not( '.header' ).on( 'click' , function (){ var x = $( this ); x.css({ 'background' : '#E2EBC2' }).addClass( 'selected' ).siblings().removeClass( 'selected' ).css({ 'background' : '#FFFFFF' }); vis(x); }); $( function (){ var x = $( 'tr' ).not( '.header' ).first(); x.css({ 'background' : '#E2EBC2' }).addClass( 'selected' ).siblings().css({ 'background' : '#FFFFFF' }); vis(x); }); $( 'td' ).on( 'keyup paste input' , function (){ var x = $( this ).parent(); vis(x); }); $( 'th' ).on( 'keyup paste input' , function (){ var x = $( '.selected' ); vis(x); }); $( '.table-title' ).on( 'keyup paste input' , function (){ var x = $( '.selected' ); vis(x); }); |
css
.chart { margin-top : -60px ; border-top : 1px solid black ; border-left : 1px solid black ; height : 450px ; width : 300px ; transform : rotate ( -90 deg); } .bar { background : #66C0CC ; margin-top : 10px ; animation : height 0.8 s ease; padding : 10px ; } .x-axis { margin-top : -30px ; padding-bottom : 10px ; } .legend { clear : both ; color : #66C0CC ; width : 450px ; } .legend div { float : left ; margin-left : 10px ; } .titles { clear : both ; width : 450px ; margin-top : -60px ; } .titles div { float : left ; margin-left : 10px ; } |
html
< div class = "left" > < div class = "table" > < h2 class = "table-title" contenteditable = "true" >販売実績</ h2 > < table > < tr class = "header" > < th contenteditable = true >年</ th > < th contenteditable = true >りんご</ th > < th contenteditable = true >なし</ th > < th contenteditable = true >みかん</ th > < th contenteditable = true >もも</ th > </ tr > < tr > < td contenteditable = true >2010年</ td > < td contenteditable = true >2</ td > < td contenteditable = true >31</ td > < td contenteditable = true >24</ td > < td contenteditable = true >51</ td > </ tr > < tr > < td contenteditable = true >2011年</ td > < td contenteditable = true >36</ td > < td contenteditable = true >21</ td > < td contenteditable = true >47</ td > < td contenteditable = true >109</ td > </ tr > < tr > < td contenteditable = true >2012年</ td > < td contenteditable = true >56</ td > < td contenteditable = true >9</ td > < td contenteditable = true >33</ td > < td contenteditable = true >18</ td > </ tr > < tr > < td contenteditable = true >2013年</ td > < td contenteditable = true >90</ td > < td contenteditable = true >55</ td > < td contenteditable = true >71</ td > < td contenteditable = true >12</ td > </ tr > < tr > < td contenteditable = true >2014年</ td > < td contenteditable = true >36</ td > < td contenteditable = true >92</ td > < td contenteditable = true >77</ td > < td contenteditable = true >61</ td > </ tr > </ table > </ div > </ div > < div class = "right" > < h3 class = "title" ></ h3 > < div class = "chart" > < div class = "x-axis" ></ div > </ div > < div class = "titles" > </ div > < div class = "legend" > </ div > </ div > |
via
Just a moment...