lifegadget/ui-list

View on GitHub
addon/components/ui-column-pane.js

Summary

Maintainability
A
40 mins
Test Coverage
import Ember from 'ember';
const { keys, create } = Object;  
const { computed, observer, $, run, on, typeOf, debug, isPresent } = Ember;   
const { defineProperty, get, set, inject, isEmpty, merge } = Ember;  
const a = Ember.A;  

import layout from '../templates/components/ui-column-pane';
import UiPane from 'ui-list/components/ui-pane';

const ColumnPane = UiPane.extend({
  layout: layout,
  row: computed.alias('item'), // allow for a more contextual name for "item"
  classNameBindings: ['id'],
  classNames: ['column'],
  id: computed.alias('column.id'),
  name: computed.alias('column.name'),
  type: computed.alias('column.type'),
  format: computed.alias('column.format'),
  options: computed.alias('column.options'),
  value: null,
  _value: on('init', function() {
    const prop = this.get('id');
    const cp = computed.alias(`data.${prop}`);
    defineProperty(this, 'value', cp);
  }),
  horizontal: computed.alias('column.horizontal'),
  vertical: computed.alias('column.vertical'),

  aspects: computed('column',function() {
    const {type,options,buttons} = this.getProperties('type','options','buttons');
    if (type === 'buttons') {
      this.set('options', merge(options,buttons));
      return ['ui-buttons-aspect'];
    }
    else if (type === 'selection') {
      return ['ui-selection-aspect'];
    }
    else {
      return ['ui-cell-aspect'];
    }
  })
});

ColumnPane[Ember.NAME_KEY] = 'Column Pane';
export default ColumnPane;