# frozen_string_literal: true module MetacodesHelper def metacodeset metacodes = current_user.settings.metacodes return false unless metacodes[0].include?('metacodeset') return 'Most' if metacodes[0].sub('metacodeset-', '') == 'Most' return 'Recent' if metacodes[0].sub('metacodeset-', '') == 'Recent' MetacodeSet.find(metacodes[0].sub('metacodeset-', '').to_i) end def user_metacodes @m = current_user.settings.metacodes set = metacodeset @metacodes = if set && set == 'Most' Metacode.where(id: current_user.most_used_metacodes).to_a elsif set && set == 'Recent' Metacode.where(id: current_user.recent_metacodes).to_a elsif set set.metacodes.to_a else Metacode.where(id: @m).to_a end focus_code = user_metacode if !focus_code.nil? && @metacodes.index { |m| m.id == focus_code.id }.nil? @metacodes.push(focus_code) end @metacodes.sort! { |m1, m2| m2.name.downcase <=> m1.name.downcase } if !focus_code.nil? @metacodes.rotate!(@metacodes.index { |m| m.id == focus_code.id }) else @metacodes.rotate!(-1) end end def user_metacode current_user.settings.metacode_focus ? Metacode.find(current_user.settings.metacode_focus.to_i) : nil end def user_most_used_metacodes @metacodes = current_user.most_used_metacodes.map { |id| Metacode.find(id) } end def user_recent_metacodes @metacodes = current_user.recent_metacodes.map { |id| Metacode.find(id) } end def metacode_sets_json metacode_sets = [] metacode_sets << { name: 'Recently Used', metacodes: user_recent_metacodes .map { |m| { id: m.id, icon_path: asset_path(m.icon), name: m.name } } } metacode_sets << { name: 'Most Used', metacodes: user_most_used_metacodes .map { |m| { id: m.id, icon_path: asset_path(m.icon), name: m.name } } } metacode_sets += MetacodeSet.order('name').all.map do |set| { name: set.name, metacodes: set.metacodes.order('name') .map { |m| { id: m.id, icon_path: asset_path(m.icon), name: m.name } } } end metacode_sets << { name: 'All', metacodes: Metacode.order('name').all .map { |m| { id: m.id, icon_path: asset_path(m.icon), name: m.name } } } metacode_sets.to_json end end