All files / addon/components/freestyle bootstrap-power-select-lazy.js

13.33% Statements 2/15
100% Branches 0/0
0% Functions 0/8
13.33% Lines 2/15

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94        1x   1x                                                                                                                                                                              
import { Promise } from 'rsvp';
import Component from '@ember/component';
import layout from '../../templates/components/freestyle/bootstrap-power-select-lazy';
 
const { setTimeout } = window;
 
const COLORS = [
  'Aqua',
  'Black',
  'Blue',
  'Brown',
  'B1',
  'B2',
  'B3',
  'B4',
  'B5',
  'B6',
  'B7',
  'B8',
  'B9',
  'B10',
  'B11',
  'B12',
  'B12',
  'B12',
  'B12',
  'B12',
  'B12',
  'B12',
  'B12',
  'B12',
  'Cyan',
  'Dark Blue',
  'Fuchsia',
  'Gray',
  'Green',
  'White',
  'Magenta',
  'Navy Blue',
  'Orange',
  'Purple',
  'Red',
  'Salmon',
  'Teal',
  'Violet',
  'Yellow'
];
 
function fuzzySearch(array, searchString) {
  return array.filter((string) => {
    return string.toLowerCase().includes(searchString.toLowerCase());
  });
}
 
export default Component.extend({
  layout,
 
  pageSize: 10,
  selected: undefined,
 
  multiSelectSelected: undefined,
 
  init() {
    this._super(...arguments);
  },
 
  pageCount(results) {
    const pageSize = this.get('pageSize');
    return Math.ceil(results.length / pageSize);
  },
 
  /* Create fake async search task */
  fetchColors(searchString, page) {
    const timeout = 1000;
    const pageSize = this.get('pageSize');
 
 
    return new Promise((resolve) => {
      setTimeout(() => {
        const fuzzyColors = fuzzySearch(COLORS, searchString);
        const pageColors = fuzzyColors.slice((page - 1) * pageSize, page * pageSize);
 
        resolve({ options: pageColors, pageCount: this.pageCount(fuzzyColors) });
      }, timeout);
    });
  },
 
  actions: {
    fetchColors(searchString, page) {
      return this.fetchColors(searchString, page);
    },
  }
});