UNPKG

coffeescript-ui

Version:
1,107 lines (872 loc) 23.6 kB
### * coffeescript-ui - Coffeescript User Interface System (CUI) * Copyright (c) 2013 - 2016 Programmfabrik GmbH * MIT Licence * https://github.com/programmfabrik/coffeescript-ui, http://www.coffeescript-ui.org ### class Demo.ListviewDemoTable extends Demo.DemoTable constructor: () -> super("demo-table") addListview: (description, listview) -> CUI.dom.addClass(listview.DOM, "cui-list-view-demo-frame") @addExample(description, CUI.dom.append(CUI.dom.div("cui-demo-td-abs"), listview.DOM)) class Demo.ListViewDemo extends Demo constructor: (@opts={}) -> super(@opts) createListView: ( options = {} ) -> options.num_columns ?= 4 options.num_rows ?= 4 options.maximize_column ?= [] options.oversized_cells ?= [] options.listViewOptions ?= {} options.listViewOptions.rowMove ?= false options.listViewOptions.fixedRows ?= 1 options.listViewOptions.fixedCols ?= 1 options.custom_cells ?= {} options.colspans ?= {} options.label_rotate90 ?= false #create the header row with the names of our columns headerRow = new CUI.ListViewRow() if not options.listViewOptions.cols options.listViewOptions.cols = [] for column in [0...options.num_columns] if column in options.maximize_column options.listViewOptions.cols.push( "maximize" ) else options.listViewOptions.cols.push( "auto" ) list_view = new CUI.ListView( options.listViewOptions ) if options.listViewOptions.fixedRows > 0 for column in [0...options.num_columns] name = "Column" sizing = options.listViewOptions.cols[column] if sizing == "maximize" name = "Max-Col" else if sizing == "fixed" name = "Fix-Col" headerRow.addColumn( new CUI.ListViewHeaderColumn label: text: name+column rotate_90: options.label_rotate90 ) list_view.appendRow(headerRow) for row in [0...options.num_rows] by 1 dataRow = new CUI.ListViewRow() column = 0 while column < options.num_columns index = column+row*options.num_columns text = "Cell "+index if index in options.oversized_cells text = text+":\nOversized Oversized Oversized\nMore Text\nEven more\nYes!" colspan = options.colspans[row]?[column] custom = options.custom_cells[row]?[column] if custom dataRow.addColumn(new CUI.ListViewColumn(colspan: colspan, element: custom )) else if colspan > 1 text += " (COLSPAN: "+colspan+")" dataRow.addColumn(new CUI.ListViewColumn(colspan: colspan, element: new CUI.Label(text: text, multiline: true))) if colspan > 1 column += colspan - 1 column++ list_view.appendRow(dataRow) list_view.render() list_view display: -> tests = [ text: "Ng Examples" content: @createNextGenTab , text: "Simple Examples" content: @createSimpleTab , text: "Many Cells" content: @createManyCellsTab , text: "Tests" content: @createTestsTab , text: "Listviews inside Layouts" content: @createLayoutsTab , text: "Nested Listviews" content: @createNestedTab , text: "Listview inside Panels" content: @createListviewInPanelTab # , # text: "Listview Layout Performance" # content: @createListviewLayoutPerformance # , # text: "Listview Flex Performance" # content: @createListviewFlexPerformance # , # text: "Isolation" # content: @createListviewIsolation ] tabs = [] console.time "ListViewDemo.display" for test in tests txt = "ListViewDemo.display[#{test.text}]" do (test) => tabs.push text: test.text load_on_show: true content: => test.content.call(@) tabs = new CUI.Tabs tabs: tabs console.timeEnd "ListViewDemo.display" tabs.DOM # options = { # num_columns: 100 # num_rows: 100 # } # list_view = @createListView(options) # list_view.DOM createTestsWithMaximizeOnOff: (maximize,demo_table) -> if maximize max = "maximize" else max = "auto" options = { listViewOptions: maximize: maximize cols: [max, "auto","auto","auto"] fixedCols: 0 } list_view = @createListView(options) demo_table.addExample(CUI.util.dump(options),list_view) options = { listViewOptions: maximize: maximize cols: ["auto",max,"auto","auto"] fixedCols: 1 } list_view = @createListView(options) demo_table.addExample(CUI.util.dump(options),list_view) options = { listViewOptions: maximize: maximize cols: ["auto","auto","auto","auto"] fixedCols: 1 } list_view = @createListView(options) demo_table.addExample(CUI.util.dump(options),list_view) createTestsTab: -> demo_table = new Demo.ListviewDemoTable() @createTestsWithMaximizeOnOff(true,demo_table) @createTestsWithMaximizeOnOff(false,demo_table) options = { listViewOptions: cols: ["fixed","fixed","fixed","fixed"] oversized_cells: [6,8] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) #reduce amount of examples return demo_table.table options = { listViewOptions: cols: ["maximize","maximize","auto","auto"] fixedCols: 0 } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { listViewOptions: cols: ["auto","auto","maximize","maximize"] fixedCols: 2 } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { listViewOptions: cols: ["auto","auto","auto","maximize"] fixedCols: 3 } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { listViewOptions: cols: ["auto","auto","auto","maximize"] fixedRows: 3 fixedCols: 3 } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { listViewOptions: cols: ["auto","auto","auto","maximize"] fixedRows: 2 fixedCols: 2 } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { listViewOptions: cols: ["auto","auto","auto","maximize"] fixedRows: 2 fixedCols: 1 num_rows: 1 } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) demo_table.table createNextGenTab: -> options = { maximize_column: [1] listViewOptions: fixedRows: 1 fixedCols: 1 colResize: true colspans: 5: 2: 2 custom_cells: 10: 2: new CUI.Input(textarea: true, content_size: true).start().DOM 13: 1: new CUI.Input(textarea: true).start().DOM num_rows: 30 oversized_cells: [5,10] } list_view = @createListView(options) createSimpleTab: -> demo_table = new Demo.ListviewDemoTable() if false options = { listViewOptions: fixedCols: 0 oversized_cells: [2,4,14] colspans: # third regular row, second column gets a colspan of "2" 2: 1: 2 custom_cells: 2: 1: new CUI.Label( text:"a very long text that should be copied from somewhere else.").DOM } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { } list_view = @createListView() demo_table.addListview(CUI.util.dump(options),list_view) options = { maximize_column: [1] oversized_cells: [6,8] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { maximize_column: [0] listViewOptions: fixedCols: 0 oversized_cells: [4,10] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { maximize_column: [0] listViewOptions: fixedCols: 0 colClasses: [null, "list-view-demo-width-100", "list-view-demo-width-100", "list-view-demo-width-100"] oversized_cells: [4,10] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { maximize_column: [] listViewOptions: maximize: false fixedCols: 0 colClasses: ["list-view-demo-width-100", "list-view-demo-width-100", "list-view-demo-width-100", "list-view-demo-width-100"] oversized_cells: [4,10] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { maximize_column: [] listViewOptions: maximize: false fixedCols: 0 colClasses: ["list-view-demo-width-100", "list-view-demo-width-100", "list-view-demo-width-100", "list-view-demo-width-100"] label_rotate90: true oversized_cells: [4,10] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) if 1 options = { # maximize_column: [0] listViewOptions: fixedCols: 2 oversized_cells: [4,10] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { # maximize_column: [0] listViewOptions: fixedCols: 2 fixedRows: 2 oversized_cells: [4,10] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { listViewOptions: fixedCols: 2 oversized_cells: [2,4,14] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { listViewOptions: fixedCols: 1 rowMove: true oversized_cells: [2,4,14] } list_view = @createListView(options) demo_table.addListview("Moveable rows:"+CUI.util.dump(options),list_view) options = { listViewOptions: fixedCols: 1 rowMove: true oversized_cells: [2,4,14] } list_view = @createListView(options) demo_table.addListview("Moveable rows:"+CUI.util.dump(options),list_view) options = { listViewOptions: fixedCols: 0 rowMove: true oversized_cells: [2,4,14] } list_view = @createListView(options) demo_table.addListview("Moveable rows, No FixedCols: "+CUI.util.dump(options),list_view) options = { listViewOptions: fixedCols: 1 rowMove: true oversized_cells: [2,4,14] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { listViewOptions: cols: ["auto","fixed","auto","auto"] oversized_cells: [2,4,14] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { listViewOptions: fixedCols: 0 fixedRows: 0 cols: ["auto","maximize","auto","maximize"] # maximize_column: [0] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) demo_table.table createManyCellsTab: -> demo_table = new Demo.ListviewDemoTable() options = { num_columns: 100 num_rows: 10 } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) #return @__table options = { num_columns: 10 num_rows: 20 } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { num_columns: 10 num_rows: 4 maximize_column: [3] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) options = { num_columns: 4 num_rows: 20 maximize_column: [3] } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) demo_table.table createLayoutsTab: -> demo_table = new Demo.ListviewDemoTable() # ------------------- options = { num_columns: 3 num_rows: 4 listViewOptions: maximize: true maximize_column: [1] custom_cells: 0: 1: CUI.dom.append(CUI.dom.div(), CUI.dom.text("a very long text that should be copied from somewhere else.")) } list_view = @createListView(options) vertical_layout = new CUI.HorizontalLayout class: "cui-list-view-demo-frame" left: flexHandle: hidden: false closed: false content: "left" right: flexHandle: hidden: false closed: false content: "right" center: content: list_view.DOM demo_table.addListview("maximized Listview inside HorizontalLayout",vertical_layout) # ------------------- options = { num_columns: 3 num_rows: 4 listViewOptions: maximize: true fixedCols: 0 maximize_column: [1] custom_cells: 4: CUI.dom.append(CUI.dom.div(), CUI.dom.text("a very long text that should be copied from somewhere else.")) } list_view = @createListView(options) vertical_layout = new CUI.HorizontalLayout class: "cui-list-view-demo-frame" left: flexHandle: hidden: false closed: false content: "left" right: flexHandle: hidden: false closed: false content: "right" center: content: list_view.DOM demo_table.addListview("maximized Listview inside HorizontalLayout",vertical_layout) # ----------------------- options = { num_columns: 4 num_rows: 10 } list_view = @createListView(options) vertical_layout = new CUI.VerticalLayout class: "cui-list-view-demo-frame" top: flexHandle: hidden: false closed: false content: "top" bottom: flexHandle: hidden: false closed: false content: "bottom" center: content: list_view.DOM demo_table.addListview("maximized Listview inside VerticalLayout",vertical_layout) # ------------------- options = { num_columns: 4 num_rows: 10 listViewOptions: maximize: false } list_view = @createListView(options) vertical_layout = new CUI.VerticalLayout class: "cui-list-view-demo-frame" top: flexHandle: hidden: false closed: false content: "top" bottom: flexHandle: hidden: false closed: false content: "bottom" center: content: list_view.DOM demo_table.addListview("maximized Listview inside VerticalLayout",vertical_layout) # ------------------- options = { num_columns: 10 num_rows: 10 listViewOptions: maximize: false } list_view = @createListView(options) vertical_layout = new CUI.HorizontalLayout class: "cui-list-view-demo-frame" left: flexHandle: hidden: false closed: false content: "left" right: flexHandle: hidden: false closed: false content: "right" center: content: list_view.DOM demo_table.addListview("maximized Listview inside HorizontalLayout",vertical_layout) # ------------------- options = { num_columns: 3 num_rows: 10 listViewOptions: maximize: true maximize_column: [1] } list_view = @createListView(options) vertical_layout = new CUI.HorizontalLayout class: "cui-list-view-demo-frame" left: flexHandle: hidden: false closed: false content: "left" right: flexHandle: hidden: false closed: false content: "right" center: content: list_view.DOM demo_table.addListview("maximized Listview inside HorizontalLayout",vertical_layout) demo_table.table createNestedTab: -> demo_table = new Demo.ListviewDemoTable() # -------------- nested tabs optionsInnerListview = num_columns: 2 num_rows: 2 listViewOptions: maximize: false innerListview = @createListView( optionsInnerListview ) tabs = new CUI.Tabs footer_right: "Right" footer_left: "Left" maximize: false tabs: [ text: "testTab1" content: innerListview.DOM , text: "testTab2" content: new CUI.Label( text: "Tab 2: Very short test text. 1 2 3 4 5").DOM ] options = num_columns: 4 num_rows: 4 custom_cells: 0: 1: tabs.DOM list_view = @createListView(options) CUI.dom.addClass(list_view.DOM, "cui-list-view-demo-frame") demo_table.addListview(CUI.util.dump(options)+CUI.util.dump(options2),list_view) # -------------- nested inside fixed column options = num_columns: 2 num_rows: 2 listViewOptions: maximize: false child_list_view = @createListView(options) options2 = num_columns: 4 num_rows: 4 colspans: 1: 2: 2 custom_cells: 0: 1: child_list_view.DOM list_view = @createListView(options2) demo_table.addListview(CUI.util.dump(options)+CUI.util.dump(options2),list_view) # -------------- nested inside fixed column with colspan options = num_columns: 2 num_rows: 2 listViewOptions: maximize: false oversized_cells: [1,2] child_list_view = @createListView(options) options2 = num_columns: 4 num_rows: 4 colspans: 0: 1: 2 custom_cells: 0: 1: child_list_view.DOM list_view = @createListView(options2) demo_table.addListview(CUI.util.dump(options)+CUI.util.dump(options2),list_view) # -------------------------nested listview inside maxed column ---------------- options = { num_columns: 2 num_rows: 2 } child_list_view = @createListView(options) options2 = { num_columns: 5 num_rows: 5 listViewOptions: fixedCols: 1 rowMove: true maximize_column: [1] } child_list_view2 = @createListView(options2) options3 = { num_columns: 4 num_rows: 4 custom_cells: { 1: 1: child_list_view.DOM 3: 1: child_list_view2.DOM } maximize_column: [1] } list_view = @createListView(options3) CUI.dom.addClass(list_view.DOM, "cui-list-view-demo-frame-y") demo_table.addListview(CUI.util.dump(options)+CUI.util.dump(options2)+CUI.util.dump(options3),list_view) # ----------------------------nested listview inside non maxed column------------- options = { num_columns: 2 num_rows: 2 } child_list_view = @createListView(options) options2 = { num_columns: 5 num_rows: 5 listViewOptions: fixedCols: 1 rowMove: true maximize_column: [1] } child_list_view2 = @createListView(options2) options = { num_columns: 4 num_rows: 4 custom_cells: { 1: 3: child_list_view.DOM 4: 2: child_list_view2.DOM } #maximize_column: [1] } list_view = @createListView(options) CUI.dom.addClass(list_view.DOM, "cui-list-view-demo-frame-y") demo_table.addListview(CUI.util.dump(options),list_view) # ----------------------------maxed listview inside non maxed-x listview inside non maxed-x listview------------- options = { num_columns: 2 num_rows: 2 } child_list_view = @createListView(options) options3 = { num_columns: 4 num_rows: 4 listViewOptions: fixedCols: 1 rowMove: true maximize_column: [1] } child_list_view3 = @createListView(options3) options2 = { num_columns: 4 num_rows: 4 listViewOptions: fixedCols: 1 rowMove: true maximize_column: [2] custom_cells: { 0: 1: child_list_view3.DOM } } child_list_view2 = @createListView(options2) options = { num_columns: 4 num_rows: 4 custom_cells: { 0: 2: child_list_view.DOM 2: 4: child_list_view2.DOM } #maximize_column: [1] } list_view = @createListView(options) CUI.dom.addClass(list_view.DOM, "cui-list-view-demo-frame-y") demo_table.addListview(CUI.util.dump(options),list_view) # ----------------------------maxed listview inside non maxed-x listview inside non maxed-x listview- with fixedcols0------------ options = { num_columns: 2 num_rows: 2 } child_list_view = @createListView(options) options3 = { num_columns: 4 num_rows: 4 listViewOptions: rowMove: true maximize_column: [1] } child_list_view3 = @createListView(options3) options2 = { num_columns: 4 num_rows: 4 listViewOptions: rowMove: true maximize_column: [2] custom_cells: { 2: 3: child_list_view3.DOM } } child_list_view2 = @createListView(options2) options = { num_columns: 4 num_rows: 4 listViewOptions: fixedCols: 0 rowMove: true custom_cells: { 2: 3: child_list_view.DOM 3: 3: child_list_view2.DOM } #maximize_column: [1] } list_view = @createListView(options) CUI.dom.addClass(list_view.DOM, "cui-list-view-demo-frame-y") demo_table.addListview(CUI.util.dump(options),list_view) # ----------------------------maxed listview inside non maxed-x listview inside non maxed-x listview- with fixedcols0------------ options2 = { num_columns: 4 num_rows: 4 listViewOptions: rowMove: true maximize_column: [2] } child_list_view2 = @createListView(options2) options = { num_columns: 4 num_rows: 4 listViewOptions: fixedCols: 0 rowMove: true custom_cells: { 9: child_list_view2.DOM } #maximize_column: [1] } list_view = @createListView(options) CUI.dom.addClass(list_view.DOM, "cui-list-view-demo-frame-y") demo_table.addListview(CUI.util.dump(options),list_view) # ---------------- table inside listview ------------------ inner_table = CUI.dom.table("inner-table") CUI.dom.append(inner_table, CUI.dom.append(CUI.dom.tr_one_row( CUI.dom.div( ), CUI.dom.text("innerTable")))) options = { listViewOptions: fixedCols: 0 num_columns: 2 num_rows: 2 custom_cells: { 0: inner_table } } list_view = @createListView(options) demo_table.addListview(CUI.util.dump(options),list_view) demo_table.table createListviewInPanelTab: ()-> demo_table = new Demo.ListviewDemoTable() # -------------------------- options = { listViewOptions: fixedCols: 1 num_columns: 4 num_rows: 4 maximize_column: [3] } list_view = @createListView(options) options2 = { listViewOptions: fixedCols: 1 maximize: false num_columns: 4 num_rows: 4 } list_view2 = @createListView(options2) p1 = new CUI.Panel text: "Panel with maximized Listview" content: list_view.DOM p2 = new CUI.Panel text: "Panel with non-maximized Listview" closed: true content: list_view2.DOM layout = CUI.dom.append(CUI.dom.append(CUI.dom.div("listview-in-panel-panels-container"), p1.DOM), p2.DOM) demo_table.addListview("Listviews inside Panels",layout) #---------------------- demo_table.table createListviewLayoutPerformance: ()-> options2 = { listViewOptions: fixedCols: 1 maximize: true num_columns: 4 num_rows: 10 } horizontal_layout = new CUI.HorizontalLayout left: content: @createListView(options2) center: content: new CUI.VerticalLayout center: content: [ @createListView(options2) , @createListView(options2) , @createListView(options2) ] right: content: @createListView(options2) horizontal_layout.DOM createListviewFlexPerformance: -> array = [] for i in [0..10] options = { listViewOptions: fixedCols: 1 maximize: true num_columns: 4 num_rows: 10 maximize_column: [1] } list_view = @createListView(options) array.push(list_view.DOM) array createListviewIsolation: -> array = [] options = { listViewOptions: fixedCols: 1 maximize: true num_columns: 100 num_rows: 100 maximize_column: [1] } list_view = @createListView(options) CUI.dom.addClass(list_view.DOM, "cui-list-view-demo-frame") array.push(list_view.DOM) options = { listViewOptions: fixedCols: 1 maximize: true num_columns: 4 num_rows: 10 maximize_column: [1] } list_view = @createListView(options) CUI.dom.addClass(list_view.DOM, "cui-list-view-demo-frame") array.push(list_view.DOM) array Demo.register(new Demo.ListViewDemo())