help_tips=Help tips
less_or_equals=Less or equals
less_than=Less than
+manage=Manage
move_left=Move left
move_right=Move right
new_violations=New violations
update_key.page=Update Key
project_quality_profiles.page=Quality Profiles
bulk_deletion.page=Bulk Deletion
-system_measure_filters.page=System Measure Filters
comparison.page=Comparison
measure_filter.sharing=Sharing
measure_filter.delete_confirm_title=Delete Filter
measure_filter.are_you_sure_want_delete_filter_x=Are you sure that you want to delete the filter "{0}"?
-measure_filter.remove_from_system=Remove from system
-measure_filter.add_to_system=Add to system
measure_filter.title_shared_filters=Shared Filters
-measure_filter.title_system_filters=System Filters
measure_filter.key_like=Key like
measure_filter.name_contains=Name contains
measure_filter.only_favourites=Favourites only
+measure_filter.manage_filters=Manage Filters
#------------------------------------------------------------------------------
#
if (properties.containsKey("onBaseComponents")) {
filter.setOnBaseResourceChildren(Boolean.valueOf((String) properties.get("onBaseComponents")));
}
- filter.setResourceName((String) properties.get("nameRegexp"));
+ filter.setResourceName((String) properties.get("nameSearch"));
filter.setResourceKeyRegexp((String) properties.get("keyRegexp"));
if (properties.containsKey("fromDate")) {
filter.setFromDate(toDate((String) properties.get("fromDate")));
CREATE TABLE "MEASURE_FILTERS" (
"ID" INTEGER NOT NULL GENERATED BY DEFAULT AS IDENTITY (START WITH 1, INCREMENT BY 1),
"NAME" VARCHAR(100) NOT NULL,
- "SYSTEM" BOOLEAN,
"SHARED" BOOLEAN NOT NULL DEFAULT FALSE,
"USER_ID" INTEGER,
"DESCRIPTION" VARCHAR(4000),
select * from snapshots where id=#{id}
</select>
- <select id="selectLastSnapshotByKey" parameterType="string" resultMap="snapshotResultMap">
+ <select id="selectLastSnapshotByResourceKey" parameterType="string" resultMap="snapshotResultMap">
select s.* from snapshots s, projects p where p.kee=#{id} and p.enabled=${_true} and p.copy_resource_id is null and s.islast=${_true} and p.id=s.project_id
</select>
assertThat(filter.sort().isAsc()).isTrue();
MeasureFilterCondition condition = filter.getMeasureConditions().get(0);
assertThat(condition.metric().getKey()).isEqualTo("lines");
- assertThat(condition.operator()).isEqualTo(">");
+ assertThat(condition.operator()).isEqualTo(MeasureFilterCondition.Operator.GREATER);
assertThat(condition.value()).isEqualTo(123.0);
}
#
class MeasuresController < ApplicationController
+ ROOT_BREADCRUMB = {:name => Api::Utils.message('layout.measures'), :url => {:action => 'index'}}
# GET /measures/index
def index
@filter = MeasureFilter.new
+ add_breadcrumbs(ROOT_BREADCRUMB)
render :action => 'search'
end
def search
+ add_breadcrumbs(ROOT_BREADCRUMB)
if params[:id]
@filter = MeasureFilter.find(params[:id])
+ add_breadcrumbs({:name => @filter.name, :url => {:action => 'filter', :id => @filter.id}})
else
@filter = MeasureFilter.new
+ add_breadcrumbs(message('search_verb'))
end
@filter.criteria=(params)
@filter.enable_default_display
# GET /measures/manage
def manage
access_denied unless logged_in?
+ add_breadcrumbs(ROOT_BREADCRUMB, message('measure_filter.manage'))
@shared_filters = MeasureFilter.find(:all,
:include => :user,
:conditions => ['shared=? and user_id<>?', true, current_user.id])
render :text => is_favourite.to_s, :status => 200
end
- # GET /measures/filters
- def filters
- verify_ajax_request
- render :partial => 'measures/filters'
- end
-
private
def find_filter(id)
filter = MeasureFilter.find(id)
+++ /dev/null
-#
-# Sonar, open source software quality management tool.
-# Copyright (C) 2008-2012 SonarSource
-# mailto:contact AT sonarsource DOT com
-#
-# Sonar is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 3 of the License, or (at your option) any later version.
-#
-# Sonar is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with Sonar; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02
-#
-class SystemMeasureFiltersController < ApplicationController
- SECTION = Navigation::SECTION_CONFIGURATION
-
- # GET /system_measure_filters/index
- def index
- access_denied unless has_role?(:admin)
-
- @system_filters = MeasureFilter.find(:all, :include => :user, :conditions => ['system=?', true])
- Api::Utils.insensitive_sort!(@system_filters) { |f| f.name }
-
- @shared_filters = MeasureFilter.find(:all, :include => :user, :conditions => ['shared=? and system=?', true, false])
- end
-
- # POST /system_measure_filters/add/<filter id>
- def add
- verify_post_request
- access_denied unless has_role?(:admin)
- require_parameters :id
-
- filter = MeasureFilter.find(params[:id])
- filter.system=true
- unless filter.save
- flash[:error]=filter.errors.full_messages.join("<br/>")
- end
- redirect_to :action => :index
- end
-
- # POST /system_measure_filters/remove/<filter id>
- def remove
- verify_post_request
- access_denied unless has_role?(:admin)
- require_parameters :id
-
- filter = MeasureFilter.find(params[:id])
- filter.system=false
- unless filter.save
- flash[:error]=filter.errors.full_messages.join("<br/>")
- end
- redirect_to :action => :index
- end
-
-end
# * <tt>:qualifiers</tt> - Array of resource qualifiers to filter.
# * <tt>:resource_type_property</tt> -Filter on resource types on which the property is enabled, for example 'supportsGlobalDashboards'.
# * <tt>:selected_resource</tt> - the resource that is selected by default.
+ # * <tt>:placeholder</tt> - the label to display when nothing is selected
+ # * <tt>:select2_options</tt> - hash of select2 options
#
def resource_select_tag(name, options={})
width=options[:width]
'formatSearching' => "function(){return '#{escape_javascript message('select2.searching')}'}",
'formatInputTooShort' => "function(term, minLength){return '#{escape_javascript message('select2.tooShort', :params => [min_length])}'}"
}
+ js_options['placeholder']= "'#{options[:placeholder]}'" if options.has_key?(:placeholder)
js_options['width']= "'#{width}'" if width
js_options['ajax']='{' + ajax_options.map { |k, v| "#{k}:#{v}" }.join(',') + '}'
js_options.merge!(options[:select2_options]) if options[:select2_options]
# * <tt>:html_id</tt> - The id of the HTML element. Default is the name.
# * <tt>:key_prefix</tt> - Prefix added to metric keys. Default is ''
# * <tt>:extra_values</tt> -
+ # * <tt>:placeholder</tt> - the label to display when nothing is selected
#
def metric_select_tag(name, metrics, options={})
width=options[:width]||'250px'
h
end
end
+ js_options['placeholder']= "'#{options[:placeholder]}'" if options.has_key?(:placeholder)
key_prefix = options[:key_prefix]||''
metrics.sort_by(&:short_name).inject(metrics_by_domain) do |h, metric|
icon = breadcrumb[:icon]
%>
<% if icon %><img src="<%= ApplicationController.root_context -%>/images/<%= icon -%>" width="16" height="16"><% end %>
- <%= link_to_if url, name, url -%>
+ <%= link_to_if url, h(name), url -%>
<% elsif breadcrumb.respond_to?(:html) %>
<%= breadcrumb.html -%>
<% end %>
<a href="<%= ApplicationController.root_context -%>/manual_rules/index"><%= message('manual_rules.page') -%></a></li>
<li class="<%= 'selected' if controller.controller_path=='admin_dashboards' -%>">
<a href="<%= ApplicationController.root_context -%>/admin_dashboards/index"><%= message('default_dashboards.page') -%></a></li>
- <li class="<%= 'selected' if controller.controller_path=='system_measure_filters' -%>">
- <a href="<%= ApplicationController.root_context -%>/system_measure_filters"><%= message('system_measure_filters.page') -%></a></li>
<% controller.java_facade.getPages(Navigation::SECTION_CONFIGURATION, nil, nil, nil, nil).each do |page|
page_url = (page.isController() ? page.getId() : "/plugins/configuration/#{page.getId()}")
%>
<% end %>
</div>
<% end %>
- <div id="content" class="<%= selected_section ? 'with_sidebar' : 'wo_sidebar' -%>">
+ <div <%= "id='content' class='with_sidebar'" if selected_section -%>>
<% if @project %>
<div class="print"><h2><%= @project.name(true) %></h2></div>
<% end %>
+++ /dev/null
-<ul id="system-filters">
- <%
- system_filters = Api::Utils.insensitive_sort(MeasureFilter.find(:all, :include => :user, :conditions => ['system=?', true])) { |f| f.name }
- system_filters.each do |filter| %>
- <li>
- <a href="<%= ApplicationController.root_context -%>/measures/filter/<%= filter.id -%>"><%= h filter.name -%></a>
- </li>
- <% end %>
-</ul>
-
-<% if logged_in? %>
- <br/>
- <div class="h2">My Favourites</div>
- <ul id="fav-filters">
- <% current_user.favourited_measure_filters.each do |filter| %>
- <li>
- <a href="<%= ApplicationController.root_context -%>/measures/filter/<%= filter.id -%>"><%= h filter.name -%></a>
- </li>
- <% end %>
- </ul>
- <br>
- <a href="<%= ApplicationController.root_context -%>/measures/manage" class="link-action">Manage</a>
-<% end %>
star.removeClass('fav').addClass('notfav');
star.attr('title', '<%= escape_javascript message('click_to_add_to_favourites') -%>');
}
- $j('#filters-sidebar').load(baseUrl + '/measures/filters');
}
});
});
</script>
<% end %>
-<div>
- <div class="page-split-left">
- <ul class="nav-pills" id="nav-pills">
- <li><a href="<%= ApplicationController.root_context -%>/measures" id="search-pill">Search</a></li>
- <li class="active"><a href="#" id="filters-pill">Filters</a></li>
- </ul>
-
- <div id="filters-sidebar">
- <%= render :partial => 'measures/filters' -%>
- </div>
- </div>
-
- <div class="page-split-right width100">
- <h2>My Measure Filters</h2>
- <table class="data marginbottom10" id="my-filters">
- <thead>
- <tr>
- <th class="thin"></th>
- <th><%= message('name') -%></th>
- <th><%= message('measure_filter.sharing') -%></th>
- <th class="right"><%= message('operations') -%></th>
+<h2>My Measure Filters</h2>
+<table class="data marginbottom10" id="my-filters">
+ <thead>
+ <tr>
+ <th class="thin"></th>
+ <th><%= message('name') -%></th>
+ <th><%= message('measure_filter.sharing') -%></th>
+ <th class="right"><%= message('operations') -%></th>
+ </tr>
+ </thead>
+ <tbody>
+ <% if current_user.measure_filters.empty? %>
+ <tr class="even">
+ <td colspan="4"><%= message('filters.no_filters') -%></td>
+ </tr>
+ <% else %>
+ <% current_user.measure_filters.each do |filter| %>
+ <tr id="my-<%= filter.name.parameterize -%>" class="<%= cycle('even', 'odd', :name => 'my-filters') -%>">
+ <td>
+ <%= measure_filter_star(filter, @fav_filter_ids.include?(filter.id)) -%>
+ </td>
+ <td>
+ <%= link_to h(filter.name), :action => 'filter', :id => filter.id -%>
+ <% if filter.description %>
+ <div><%= h filter.description -%></div>
+ <% end %>
+ </td>
+ <td>
+ <% if filter.shared %>
+ Shared with all users
+ <% else %>
+ Private
+ <% end %>
+ </td>
+ <td class="thin nowrap right">
+ <a id="edit_<%= filter.name.parameterize -%>" href="<%= ApplicationController.root_context -%>/measures/edit_form/<%= filter.id -%>" class="link-action open-modal"><%= message('edit') -%></a>
+
+ <a id="copy-<%= filter.name.parameterize -%>" href="<%= ApplicationController.root_context -%>/measures/copy_form/<%= filter.id -%>" class="link-action open-modal"><%= message('copy') -%></a>
+
+ <%= link_to_action message('delete'), "#{ApplicationController.root_context}/measures/delete/#{filter.id}",
+ :class => 'link-action link-red',
+ :id => "delete_#{filter.name.parameterize}",
+ :confirm_button => message('delete'),
+ :confirm_title => 'measure_filter.delete_confirm_title',
+ :confirm_msg => 'measure_filter.are_you_sure_want_delete_filter_x',
+ :confirm_msg_params => [filter.name] -%>
+ </td>
</tr>
- </thead>
- <tbody>
- <% if current_user.measure_filters.empty? %>
- <tr class="even">
- <td colspan="4"><%= message('filters.no_filters') -%></td>
- </tr>
- <% else %>
- <% current_user.measure_filters.each do |filter| %>
- <tr id="my-<%= filter.name.parameterize -%>" class="<%= cycle('even', 'odd', :name => 'my-filters') -%>">
- <td>
- <%= measure_filter_star(filter, @fav_filter_ids.include?(filter.id)) -%>
- </td>
- <td>
- <%= link_to h(filter.name), :action => 'filter', :id => filter.id -%>
- <% if filter.description %>
- <div><%= h filter.description -%></div>
- <% end %>
- </td>
- <td>
- <% if filter.shared %>
- Shared with all users
- <% else %>
- Private
- <% end %>
- </td>
- <td class="thin nowrap right">
- <a id="edit_<%= filter.name.parameterize -%>" href="<%= ApplicationController.root_context -%>/measures/edit_form/<%= filter.id -%>" class="link-action open-modal"><%= message('edit') -%></a>
-
- <a id="copy-<%= filter.name.parameterize -%>" href="<%= ApplicationController.root_context -%>/measures/copy_form/<%= filter.id -%>" class="link-action open-modal"><%= message('copy') -%></a>
-
- <%= link_to_action message('delete'), "#{ApplicationController.root_context}/measures/delete/#{filter.id}",
- :class => 'link-action link-red',
- :id => "delete_#{filter.name.parameterize}",
- :confirm_button => message('delete'),
- :confirm_title => 'measure_filter.delete_confirm_title',
- :confirm_msg => 'measure_filter.are_you_sure_want_delete_filter_x',
- :confirm_msg_params => [filter.name] -%>
- </td>
- </tr>
- <% end %>
- <% end %>
- </tbody>
- </table>
-
- <br/>
-
- <h2>Shared Measure Filters</h2>
- <table class="data" id="shared-filters">
- <thead>
- <tr>
- <th class="thin"></th>
- <th><%= message('name') -%></th>
- <th><%= message('shared_by') -%></th>
- <th class="right"><%= message('operations') -%></th>
+ <% end %>
+ <% end %>
+ </tbody>
+</table>
+
+<br/>
+
+<h2>Shared Measure Filters</h2>
+<table class="data" id="shared-filters">
+ <thead>
+ <tr>
+ <th class="thin"></th>
+ <th><%= message('name') -%></th>
+ <th><%= message('shared_by') -%></th>
+ <th class="right"><%= message('operations') -%></th>
+ </tr>
+ </thead>
+ <tbody>
+ <% if @shared_filters.empty? %>
+ <tr class="even">
+ <td colspan="4"><%= message('filters.no_filters') -%></td>
+ </tr>
+ <% else %>
+ <% @shared_filters.each do |filter| %>
+ <tr id="shared-<%= filter.name.parameterize -%>" class="<%= cycle('even', 'odd', :name => 'shared-filters') -%>">
+ <td>
+ <%= measure_filter_star(filter, @fav_filter_ids.include?(filter.id)) -%>
+ </td>
+ <td>
+ <%= link_to h(filter.name), :action => 'filter', :id => filter.id -%>
+ <% if filter.description %>
+ <div><%= h filter.description -%></div>
+ <% end %>
+ </td>
+ <td>
+ <%= filter.user ? h(filter.user.name) : '-' -%>
+ </td>
+ <td class="thin nowrap right">
+ <a id="copy-<%= filter.name.parameterize -%>" href="<%= ApplicationController.root_context -%>/measures/copy_form/<%= filter.id -%>" class="link-action open-modal"><%= message('copy') -%></a>
+ </td>
</tr>
- </thead>
- <tbody>
- <% if @shared_filters.empty? %>
- <tr class="even">
- <td colspan="4"><%= message('filters.no_filters') -%></td>
- </tr>
- <% else %>
- <% @shared_filters.each do |filter| %>
- <tr id="shared-<%= filter.name.parameterize -%>" class="<%= cycle('even', 'odd', :name => 'shared-filters') -%>">
- <td>
- <%= measure_filter_star(filter, @fav_filter_ids.include?(filter.id)) -%>
- </td>
- <td>
- <%= link_to h(filter.name), :action => 'filter', :id => filter.id -%>
- <% if filter.description %>
- <div><%= h filter.description -%></div>
- <% end %>
- </td>
- <td>
- <%= filter.user ? h(filter.user.name) : '-' -%>
- </td>
- <td class="thin nowrap right">
- <a id="copy-<%= filter.name.parameterize -%>" href="<%= ApplicationController.root_context -%>/measures/copy_form/<%= filter.id -%>" class="link-action open-modal"><%= message('copy') -%></a>
- </td>
- </tr>
-
- <% end %>
- <% end %>
- </tbody>
- </table>
-
- </div>
-
-</div>
-
-
-
-
-
-
-
+ <% end %>
+ <% end %>
+ </tbody>
+</table>
}
</style>
<% end %>
+<%
+ hidden_condition_indexes = []
+ for i in 1..3 do
+ unless @filter.criteria("c#{i}_metric") && @filter.criteria("c#{i}_val")
+ hidden_condition_indexes << i
+ end
+ end
+%>
<% content_for :script do %>
<script>
function submitSearch() {
});
window.location = url;
}
- var filtersLoaded = false;
+ var hiddenConditionIndexes = [<%= hidden_condition_indexes.join(',') -%>];
$j(document).ready(function () {
- $j('#search-pill').on('click', function (e) {
- $j('#search-pill').parent().addClass('active');
- $j('#filters-pill').parent().removeClass('active');
- $j('#search-form').show();
- $j('#filters').hide();
- });
- $j('#filters-pill').on('click', function (e) {
- $j('#search-pill').parent().removeClass('active');
- $j('#filters-pill').parent().addClass('active');
- $j('#search-form').hide();
- $j('#filters').show();
- if (!filtersLoaded) {
- $j('#filters').load(baseUrl + '/measures/filters');
- filtersLoaded = true;
+ $j('#select-lang').select2({allowClear:true, width:'100%', placeholder:'Languages'});
+ $j('#select-qualifiers').select2({allowClear:true, width:'100%', placeholder:'Resources'});
+ $j('#more-criteria')
+ .select2({allowClear:true, width:'100%', placeholder:'+ More Criteria'})
+ .on("change", function (e) {
+ $j("#criteria-" + e.val).insertBefore($j("#more-td")).show();
+ if (e.val == 'lang') {
+ $j("#select-" + e.val).select2("enable");
+ $j("#select-" + e.val).select2("focus");
+ }
+ $j("#more-criteria").select2("val", "");
+ if (e.val == 'metric') {
+ if (hiddenConditionIndexes.length > 0) {
+ var index = hiddenConditionIndexes.pop();
+ $j("#criteria-metric-" + index).insertBefore($j("#more-td")).show();
+ $j("#c" + index + "_metric").select2("focus");
+ if (hiddenConditionIndexes.length == 0) {
+ $j("#more-criteria option[value='metric']").remove();
+ }
+ }
+ } else {
+ $j("#more-criteria option[value='" + e.val + "']").remove();
}
});
- }
- );
+ });
</script>
<% end %>
-<div id="measure-filters">
+<div>
<div class="page-split-left">
- <ul class="nav-pills" id="nav-pills">
- <li class="active"><a href="#" id="search-pill">Search</a></li>
- <li><a href="#" id="filters-pill">Filters</a></li>
- </ul>
- <div id="filters" style="display:none"><%= image_tag 'loading.gif' -%></div>
+ <% if logged_in? %>
+ <ul id="filters">
+ <% current_user.favourited_measure_filters.each do |filter| %>
+ <li>
+ <a href="<%= ApplicationController.root_context -%>/measures/filter/<%= filter.id -%>"><%= h filter.name -%></a>
+ </li>
+ <% end %>
+ </ul>
+ <a href="<%= ApplicationController.root_context -%>/measures/manage" class="link-action"><%= message('manage') %></a>
+ <hr>
+ <% end %>
+
<form id="search-form" method="GET" action="<%= ApplicationController.root_context -%>/measures/search">
<% if @filter.id %>
<input type="hidden" name="id" value="<%= @filter.id -%>">
end
end
%>
- <table class="width100">
+ <table class="spaced width100">
<tbody>
<tr>
- <td class="width100">
- Base:<br>
- <%= resource_select_tag 'baseId', :resource_type_property => 'supportsGlobalDashboards', :width => '100%', :selected_resource => @filter.base_resource -%>
- </td>
- </tr>
- <tr>
- <td class="width100">
- On components:<br>
- <%= check_box_tag 'onBaseComponents', 'true', @filter.criteria['onBaseComponents'] -%>
+ <td>
+ <%= resource_select_tag 'baseId', :resource_type_property => 'supportsGlobalDashboards', :width => '100%', :selected_resource => @filter.base_resource, :placeholder => 'Path' -%>
</td>
</tr>
<tr>
- <td class="width100">
- Qualifiers:<br>
+ <td>
<%
- qualifiers = Api::Utils.java_facade.getResourceTypesForFilter().map do |resource_type|
+ qualifiers = [['Components', 'components']].concat(Api::Utils.java_facade.getResourceTypesForFilter().map do |resource_type|
[message("qualifiers.#{resource_type.getQualifier()}"), resource_type.getQualifier()]
- end
+ end)
%>
- <%= select_tag 'qualifiers[]', options_for_select([[message('any'), '']].concat(qualifiers), @filter.criteria['qualifiers']||''), :size => 5, :multiple => true, :class => 'large-input' -%>
+ <%= select_tag 'qualifiers[]', options_for_select(qualifiers, @filter.criteria['qualifiers']||''), :multiple => true, :id => 'select-qualifiers' -%>
</td>
</tr>
- <tr>
+ <tr id="criteria-lang" <%= "style='display:none'" unless @filter.criteria('languages') -%>>
<td>
- Language:<br>
- <% languages = [[message('any'), '']].concat(Api::Utils.languages.map { |lang| [lang.name, lang.key] }) %>
- <%= select_tag 'languages[]', options_for_select(languages, @filter.criteria['languages']||''), :size => 5, :multiple => true, :class => 'large-input' -%>
+ <% languages = [['', '']].concat(Api::Utils.languages.map { |lang| [lang.name, lang.key] }) %>
+ <%= select_tag 'languages[]', options_for_select(languages, @filter.criteria['languages']), :multiple => true, :id => 'select-lang', 'data-placeholder' => 'Languages' -%>
</td>
</tr>
- <tr>
- <td class="width100">
+ <tr id="criteria-name" <%= "style='display:none'" unless @filter.criteria('nameSearch') -%>>
+ <td>
<%= message('measure_filter.name_contains') -%>:<br>
- <input type="text" name="nameRegexp" value="<%= h @filter.criteria['nameRegexp'] -%>" class="large-input"></td>
+ <input type="text" name="nameSearch" value="<%= h @filter.criteria['nameSearch'] -%>"></td>
</tr>
- <tr>
- <td class="width100">
+ <tr id="criteria-key" <%= "style='display:none'" unless @filter.criteria('keyRegexp') -%>>
+ <td>
<%= message('measure_filter.key_like') -%>:<br>
<input type="text" name="keyRegexp" value="<%= h @filter.criteria['keyRegexp'] -%>" class="large-input"></td>
</tr>
- <tr>
+ <tr id="criteria-fav" <%= "style='display:none'" unless @filter.criteria('onFavourites') -%>>
<td>
<%= message 'measure_filter.only_favourites' %>:<br>
<%= check_box_tag 'onFavourites', 'true', @filter.criteria['onFavourites']=='true' -%>
</tr>
<% condition_metrics = Metric.all.select { |m| m.numeric? } %>
- <tr>
- <td>
- <br>
- <%= metric_select_tag 'c1_metric', condition_metrics, :allow_empty => true, :selected_key => @filter.criteria('c1_metric'), :width => '180px' -%>
- <%= select_tag 'c1_period', options_for_select([['Value', ''], ['Period 1', '1'], ['Period 2', '2'], ['Period 3', '3']], @filter.criteria('c1_period')) -%>
- <%= select_tag 'c1_op', options_for_select([['Equals', 'eq'], ['Less than', 'lt'], ['Less or equals', 'lte'], ['Greater than', 'gt'], ['Greater or equals', 'gte']], @filter.criteria('c1_op')) -%>
- <input type="text" size="5" name="c1_val" value="<%= h @filter.criteria('c1_val') -%>">
- <br><br>
- </td>
- </tr>
-
- <tr>
+ <% for i in 1..3 %>
+ <tr id="criteria-metric-<%= i -%>" <%= "style='display: none'" if hidden_condition_indexes.include?(i) -%>>
+ <td style="padding:10px 5px">
+ <%= metric_select_tag "c#{i}_metric", condition_metrics, :allow_empty => true, :selected_key => @filter.criteria("c#{i}_metric"), :width => '100%', :placeholder => 'Metric' -%>
+ <%= select_tag "c#{i}_period", options_for_select([['Value', ''], ['Period 1', '1'], ['Period 2', '2'], ['Period 3', '3']], @filter.criteria("c#{i}_period")) -%>
+ <br>
+ <%= select_tag "c#{i}_op", options_for_select([['=', 'eq'], ['<', 'lt'], ['<=', 'lte'], ['>', 'gt'], ['>=', 'gte']], @filter.criteria("c#{i}_op")) -%>
+ <input type="text" size="5" name="c<%= i -%>_val" value="<%= h @filter.criteria("c#{i}_val") -%>">
+ </td>
+ </tr>
+ <% end %>
+ <tr id="criteria-date" <%= "style='display:none'" unless @filter.criteria('fromDate') || @filter.criteria('toDate') -%>>
<td>
+ From date:
+ <input type="text" name="fromDate" value="<%= @filter.criteria['fromDate'] -%>" size="10" maxlength="10">
<br>
- <%= metric_select_tag 'c2_metric', condition_metrics, :allow_empty => true, :selected_key => @filter.criteria('c2_metric'), :width => '180px' -%>
- <%= select_tag 'c2_period', options_for_select([['Value', ''], ['Period 1', '1'], ['Period 2', '2'], ['Period 3', '3']], @filter.criteria('c2_period')) -%>
- <%= select_tag 'c2_op', options_for_select([['Equals', 'eq'], ['Less than', 'lt'], ['Less or equals', 'lte'], ['Greater than', 'gt'], ['Greater or equals', 'gte']], @filter.criteria('c2_op')) -%>
- <input type="text" size="5" name="c2_val" value="<%= h @filter.criteria('c2_val') -%>">
- <br><br>
- </td>
- </tr>
-
- <tr>
- <td>
- From date:<br>
- <input type="text" name="fromDate" value="<%= @filter.criteria['fromDate'] -%>">
- </td>
- </tr>
- <tr>
- <td>
- To date:<br>
- <input type="text" name="toDate" value="<%= @filter.criteria['toDate'] -%>">
+ To date:
+ <input type="text" name="toDate" value="<%= @filter.criteria['toDate'] -%>" size="10" maxlength="10"><br>
+ <span class="note">year-month-day (2012-01-31)</span>
</td>
</tr>
- <tr>
+ <tr id="criteria-age" <%= "style='display:none'" unless @filter.criteria('beforeDays') || @filter.criteria('afterDays') -%>>
<td>
- More than:<br>
- <input type="text" name="beforeDays" value="<%= @filter.criteria['beforeDays'] -%>" size="4"> days ago
+ More than
+ <input type="text" name="beforeDays" value="<%= @filter.criteria['beforeDays'] -%>" size="3"> days ago
+ <br>Within the last
+ <input type="text" name="afterDays" value="<%= @filter.criteria['afterDays'] -%>" size="3"> days
</td>
</tr>
- <tr>
- <td>Within the last:<br>
- <input type="text" name="afterDays" value="<%= @filter.criteria['afterDays'] -%>" size="4"> days
+ <tr id="more-td">
+ <td style="padding-top: 10px">
+ <select id="more-criteria">
+ <option value=""></option>
+ <option value="age">Age</option>
+ <option value="date">Date</option>
+ <option value="fav">Favourites Only</option>
+ <option value="key">Key</option>
+ <option value="lang">Language</option>
+ <option value="metric">Metric</option>
+ <option value="name">Name</option>
+ </select>
</td>
</tr>
+
<tr>
<td>
- <br/>
- <input type="button" name="search" value="Search" onclick="submitSearch()">
+ <input type="button" name="search" value="<%= message('search_verb') -%>" onclick="submitSearch()">
<a href="<%= ApplicationController.root_context -%>/measures">New search</a>
</td>
</tr>
</div>
<% if @filter.results && @filter.display %>
- <div id="filter-result" class="page-split-right">
+ <div class="page-split-right">
+ <div id="content">
- <% if @filter.name %>
- <p>
- <span class="h3"><%= h @filter.name -%></span>
- <% if @filter.description.present? %>
- - <span><%= h @filter.description -%></span>
- <% end %>
- </p>
- <% end %>
+ <% if @filter.name %>
+ <p>
+ <span class="h3"><%= h @filter.name -%></span>
+ <% if @filter.description.present? %>
+ - <span><%= h @filter.description -%></span>
+ <% end %>
+ </p>
+ <% end %>
- <%
- edit_mode = (params[:edit]=='true')
- unless edit_mode
- %>
- <table class="width100">
- <tr>
- <td class="left">
- Display as:
- <% MeasureFilterDisplay.keys.each do |display_key| %>
- <%= link_to_if display_key!=@filter.display.key, display_key, params.merge(:action => 'search', :display => display_key, :id => @filter.id) -%>
- <% end %>
- <td class="right">
- <a id="edit" href="<%= url_for params.merge({:edit => true, :id => @filter.id}) -%>" class="button"><%= message('configure') -%></a>
- <% if logged_in? %>
- <% if @filter.id==nil || @filter.user_id==current_user.id %>
- <a id="save" href="<%= url_for params.merge({:action => 'save_form', :id => @filter.id}) -%>" class="button open-modal"><%= message('save') -%></a>
+ <%
+ edit_mode = (params[:edit]=='true')
+ unless edit_mode
+ %>
+ <table class="width100">
+ <tr>
+ <td class="left">
+ Display as:
+ <% MeasureFilterDisplay.keys.each do |display_key| %>
+ <%= link_to_if display_key!=@filter.display.key, display_key, params.merge(:action => 'search', :display => display_key, :id => @filter.id) -%>
<% end %>
- <% if @filter.id %>
- <a id="copy" href="<%= url_for params.merge({:action => 'copy_form', :id => @filter.id}) -%>" class="button open-modal"><%= message('copy') -%></a>
+ <td class="right">
+ <a id="edit" href="<%= url_for params.merge({:edit => true, :id => @filter.id}) -%>" class="button"><%= message('configure') -%></a>
+ <% if logged_in? %>
+ <% if @filter.id==nil || @filter.user_id==current_user.id %>
+ <a id="save" href="<%= url_for params.merge({:action => 'save_form', :id => @filter.id}) -%>" class="button open-modal"><%= message('save') -%></a>
+ <% end %>
+ <% if @filter.id %>
+ <a id="copy" href="<%= url_for params.merge({:action => 'copy_form', :id => @filter.id}) -%>" class="button open-modal"><%= message('copy') -%></a>
+ <% end %>
<% end %>
- <% end %>
- </tr>
- </table>
- <% end %>
- <% if @filter.security_exclusions %>
- <p class="notes"><%= message('results_not_display_due_to_security') -%></p>
- <% end %>
- <%= render :partial => "measures/display_#{@filter.display.class::KEY}", :locals => {:edit_mode => edit_mode} -%>
+ </tr>
+ </table>
+ <% end %>
+ <% if @filter.security_exclusions %>
+ <p class="notes"><%= message('results_not_display_due_to_security') -%></p>
+ <% end %>
+ <%= render :partial => "measures/display_#{@filter.display.class::KEY}", :locals => {:edit_mode => edit_mode} -%>
+ </div>
</div>
<% end %>
-
</div>
\ No newline at end of file
+++ /dev/null
-<h2><%= h message('measure_filter.title_system_filters') %></h2>
-<table class="data marginbottom10" id="system-filters">
- <thead>
- <tr>
- <th><%= message('name') -%></th>
- <th><%= message('shared_by') -%></th>
- <th class="right"><%= message('operations') -%></th>
- </tr>
- </thead>
- <tbody>
- <% if @system_filters.empty? %>
- <tr class="even">
- <td colspan="3"><%= message('filters.no_filters') -%></td>
- </tr>
- <% else %>
- <% @system_filters.each do |filter| %>
- <tr id="system-<%= filter.name.parameterize -%>" class="<%= cycle('even', 'odd', :name => 'system-filters') -%>">
- <td>
- <%= link_to h(filter.name), :controller => 'measures', :action => 'filter', :id => filter.id -%>
- <% if filter.description %>
- <div><%= h filter.description -%></div>
- <% end %>
- </td>
- <td>
- <%= filter.user ? h(filter.user.name) : '-' -%>
- </td>
- <td class="thin nowrap right">
- <%= link_to message('measure_filter.remove_from_system'), {:action => :remove, :id => filter.id}, {:class => 'button', :method => :post} -%>
- </td>
- </tr>
- <% end %>
- <% end %>
- </tbody>
-</table>
-
-<br/>
-
-<h2><%= h message('measure_filter.title_shared_filters') %></h2>
-<table class="data" id="shared-filters">
- <thead>
- <tr>
- <th><%= message('name') -%></th>
- <th><%= message('shared_by') -%></th>
- <th class="right"><%= message('operations') -%></th>
- </tr>
- </thead>
- <tbody>
- <% if @shared_filters.empty? %>
- <tr class="even">
- <td colspan="4"><%= message('filters.no_filters') -%></td>
- </tr>
- <% else %>
- <% @shared_filters.each do |filter| %>
- <tr id="shared-<%= filter.name.parameterize -%>" class="<%= cycle('even', 'odd', :name => 'shared-filters') -%>">
- <td>
- <%= link_to h(filter.name), :controller => 'measures', :action => 'filter', :id => filter.id -%>
- <% if filter.description %>
- <div><%= h filter.description -%></div>
- <% end %>
- </td>
- <td>
- <%= filter.user ? h(filter.user.name) : '-' -%>
- </td>
- <td class="thin nowrap right">
- <%= link_to message('measure_filter.add_to_system'), {:action => :add, :id => filter.id}, {:class => 'button', :method => :post} -%>
- </td>
- </tr>
- <% end %>
- <% end %>
- </tbody>
-</table>
t.column 'name', :string, :null => false, :limit => 100
t.column 'user_id', :integer, :null => true
t.column 'shared', :boolean, :default => false, :null => false
- t.column 'system', :boolean
t.column 'description', :string, :null => true, :limit => 4000
t.column 'data', :text, :null => true
t.timestamps
new_filter = MeasureFilter.new
new_filter.name = old_filter.name
new_filter.user_id = old_filter.user_id
- new_filter.system = old_filter.user_id.nil?
new_filter.shared = (old_filter.shared || old_filter.user_id.nil?)
data = []
data << 'onFavourites=true' if old_filter.favourites
data << "baseId=#{old_filter.resource_id}" if old_filter.resource_id
data << "pageSize=#{old_filter.page_size}" if old_filter.page_size
- data << "display=#{old_filter.default_value || 'list'}"
+ data << "display=#{old_filter.default_view || 'list'}"
columns = []
asc = nil
margin: 0 8px;
}
-#content {
- padding-top: 8px;
- width: auto;
-}
-
#sb {
width: 150px;
position: absolute;
min-width: 180px;
width: 180px;
margin: 0;
- -moz-box-sizing: border-box;
display: table-cell;
vertical-align: top;
background-color: #EFEFEF;
border: 1px solid #CCC;
color: #666;
line-height: 1.1em;
- padding: 10px;
+ border-top: none;
+ border-left: none;
+ padding: 10px 5px;
}
.page-split-right {
position: relative;
- padding: 10px 0 0 10px;
-moz-box-sizing: border-box;
display: table-cell;
margin: 0;
vertical-align: top;
width: 100%;
+ padding: 0 0 0 10px;
}
\ No newline at end of file
}
select:not([multiple]) {
- padding: 2px 5px;
+ padding: 1px 3px;
}
select.small-width {
.property table.data > thead > tr > th {
vertical-align: top;
-}
-
-.nav-pills:before, .nav-pills:after {
- content: "";
- display: table;
- line-height: 0;
-}
-
-.nav-pills:after {
- clear: both;
-}
-
-.nav-pills > li {
- float: left;
-}
-
-.nav-pills > li > a {
- line-height: 14px;
- margin-right: 2px;
- padding-left: 10px;
- padding-right: 10px;
- display: block;
-}
-
-.nav-pills > li > a {
- border-radius: 5px 5px 5px 5px;
- margin-bottom: 2px;
- margin-top: 2px;
- padding-bottom: 6px;
- padding-top: 6px;
-}
-
-.nav-pills > .active > a, .nav-pills > .active > a:hover {
- background-color: #4b9fd5;
- color: #FFFFFF;
}
\ No newline at end of file