Beispiel #1
0
    test('it updates cell values when changed externally', async function(assert) {
      let columnCount = 2;
      let rows = [
        {
          A: 'A',
          B: 'B',
        },
      ];

      await generateTable(this, { rows, columnCount });

      assert.equal(table.getCell(0, 0).text, 'A', 'renders correct initial value');
      assert.equal(table.getCell(0, 1).text, 'B', 'renders correct initial value');

      run(() => {
        set(rows[0], 'A', 'Y');
        set(rows[0], 'B', 'Z');
      });

      await wait();

      assert.equal(table.getCell(0, 0).text, 'Y', 'renders correct updated value');
      assert.equal(table.getCell(0, 1).text, 'Z', 'renders correct updated value');
    });
Beispiel #2
0
    test('sends onDoubleClick action', async function(assert) {
      this.on(
        'onCellDoubleClick',
        ({ event, cellValue, cellMeta, columnValue, columnMeta, rowValue, rowMeta }) => {
          assert.ok(event, 'event sent');

          assert.equal(cellValue, '0A', 'cellValue sent');
          assert.ok(cellMeta, 'cellMeta sent');

          assert.equal(columnValue.name, 'A', 'columnValue sent');
          assert.ok(columnMeta, 'columnMeta sent');

          assert.ok(rowValue, 'rowValue sent');
          assert.ok(rowMeta, 'rowMeta sent');
        }
      );

      await generateTable(this);
      await table.getCell(0, 0).doubleClick();
    });
Beispiel #3
0
    test('meta caches work', async function(assert) {
      this.on('onClick', ({ cellMeta, rowMeta, columnMeta }) => {
        set(cellMeta, 'wasClicked', true);
        set(columnMeta, 'wasClicked', true);
        set(rowMeta, 'wasClicked', true);
      });

      generateTableValues(this, { rowCount: 100, footerRowCount: 1 });

      this.render(hbs`
        <div style="height: 500px;">
          {{#ember-table data-test-main-table=true as |t|}}
            {{#ember-thead api=t columns=columns as |h|}}
              {{#ember-tr api=h as |r|}}
                {{#ember-th api=r as |column columnMeta|}}
                  {{#if columnMeta.wasClicked}}column{{/if}}
                  clicked
                {{/ember-th}}
              {{/ember-tr}}
            {{/ember-thead}}

            {{#ember-tbody api=t rows=rows as |b|}}
              {{#ember-tr api=b as |r|}}
                {{#ember-td
                  api=r
                  onClick="onClick"

                  as |value column row cellMeta columnMeta rowMeta|
                }}
                  {{#if cellMeta.wasClicked}}cell{{/if}}
                  {{#if columnMeta.wasClicked}}column{{/if}}
                  {{#if rowMeta.wasClicked}}row{{/if}}
                  clicked
                {{/ember-td}}
              {{/ember-tr}}
            {{/ember-tbody}}

            {{#ember-tfoot api=t rows=footerRows as |f|}}
              {{#ember-tr api=f as |r|}}
                {{#ember-td api=r as |value column row cellMeta columnMeta rowMeta|}}
                  {{#if columnMeta.wasClicked}}column{{/if}}
                  clicked
                {{/ember-td}}
              {{/ember-tr}}
            {{/ember-tfoot}}
          {{/ember-table}}
        </div>
      `);

      await wait();
      await table.getCell(0, 0).click();

      assert.ok(table.getCell(0, 0).text.includes('cell'), 'meta property set correctly');

      table.rows.objectAt(0).cells.forEach(cell => {
        assert.ok(cell.text.includes('row'), 'row meta correct');
      });

      table.rows.forEach(row => {
        assert.ok(row.cells.objectAt(0).text.includes('column'), 'column meta correct');
      });

      assert.ok(table.headers.objectAt(0).text.match(/column/i), 'header meta correct');
      assert.ok(table.footers.objectAt(0).text.includes('column'), 'footer meta correct');

      await scrollTo('[data-test-ember-table]', 0, 100000);

      assert.notOk(table.getCell(0, 0).text.includes('cell'), 'meta updated on scroll');

      table.rows.objectAt(0).cells.forEach(cell => {
        assert.notOk(cell.text.includes('row'), 'row meta correct');
      });

      table.rows.forEach(row => {
        assert.ok(row.cells.objectAt(0).text.includes('column'), 'column meta correct');
      });

      assert.ok(table.headers.objectAt(0).text.match(/column/i), 'header meta correct');
      assert.ok(table.footers.objectAt(0).text.includes('column'), 'footer meta correct');

      await scrollTo('[data-test-ember-table]', 0, 0);

      assert.ok(table.getCell(0, 0).text.includes('cell'), 'meta updated when scrolling back');

      table.rows.objectAt(0).cells.forEach(cell => {
        assert.ok(cell.text.includes('row'), 'row meta correct');
      });

      table.rows.forEach(row => {
        assert.ok(row.cells.objectAt(0).text.includes('column'), 'column meta correct');
      });

      assert.ok(table.headers.objectAt(0).text.match(/column/i), 'header meta correct');
      assert.ok(table.footers.objectAt(0).text.includes('column'), 'footer meta correct');
    });