getters.js 2.66 KB
Newer Older
wanli's avatar
wanli committed
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 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126
export default {
  /**
   * Files list(filtered)
   * @param state
   * @param getters
   * @param rootState
   */
  files(state, getters, rootState) {
    if (rootState.fm.settings.hiddenFiles) {
      return state.files;
    }

    return state.files.filter((item) => item.basename.match(new RegExp('^([^.]).*', 'i')));
  },

  /**
   * Directories list(filtered)
   * @param state
   * @param getters
   * @param rootState
   * @returns {*}
   */
  directories(state, getters, rootState) {
    if (rootState.fm.settings.hiddenFiles) {
      return state.directories;
    }

    return state.directories.filter((item) => item.basename.match(new RegExp('^([^.]).*', 'i')));
  },

  /**
   * Files counter
   * @param state
   * @param getters
   * @returns {*}
   */
  filesCount(state, getters) {
    return getters.files.length;
  },

  /**
   * Directories counter
   * @param state
   * @param getters
   * @returns {*}
   */
  directoriesCount(state, getters) {
    return getters.directories.length;
  },

  /**
   * Files size - bytes
   * @param state
   * @param getters
   * @returns {*}
   */
  filesSize(state, getters) {
    if (getters.files.length) {
      return getters.files.reduce((previous, current) => previous + Number(current.size), 0);
    }

    return 0;
  },

  /**
   * Count selected files and folders
   * @param state
   * @param getters
   * @returns {number}
   */
  selectedCount(state, getters) {
    return getters.selectedList.length;
  },

  /**
   * Selected files size
   * @param state
   * @returns {number}
   */
  selectedFilesSize(state) {
    const selectedFiles = state.files.filter((file) => state.selected.files.includes(file.path));

    if (selectedFiles.length) {
      return selectedFiles.reduce((previous, current) => previous + Number(current.size), 0);
    }

    return 0;
  },

  /**
   * Selected files and folders
   * @param state
   */
  selectedList(state) {
    const selectedDirectories = state.directories.filter((directory) => state.selected.directories.includes(directory.path));

    const selectedFiles = state.files.filter((file) => state.selected.files.includes(file.path));

    return selectedDirectories.concat(selectedFiles);
  },

  /**
   * Breadcrumb
   * @param state
   * @returns {*}
   */
  breadcrumb(state) {
    if (state.selectedDirectory) {
      return state.selectedDirectory.split('/');
    }

    return null;
  },

  /**
   * Compare directories name
   * @param state
   */
  directoryExist: (state) => (basename) => state.directories.some((el) => el.basename === basename),

  /**
   * Compare files name
   * @param state
   */
  fileExist: (state) => (basename) => state.files.some((el) => el.basename === basename),
};