Hello community, here is the log from the commit of package hawk2 for openSUSE:Factory checked in at 2016-03-26 15:24:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/hawk2 (Old) and /work/SRC/openSUSE:Factory/.hawk2.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "hawk2" Changes: -------- --- /work/SRC/openSUSE:Factory/hawk2/hawk2.changes 2016-03-17 16:49:29.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.hawk2.new/hawk2.changes 2016-03-26 15:24:55.000000000 +0100 @@ -1,0 +2,20 @@ +Mon Mar 21 08:18:40 UTC 2016 - kgronl...@suse.com + +- Update to version 2.0.0+git.1458543074.dc9aa66: + + UI: Updated EventControl (bsc#970280) + + History: Show timezone for report dates + + History: Fix tab memory between transitions + +------------------------------------------------------------------- +Fri Mar 18 12:21:08 UTC 2016 - kgronl...@suse.com + +- Update to version 2.0.0+git.1458303640.7745849: + + UI: Use EventControl in history explorer (bsc#970280) + + Wizard: Fix broken file system category by dehumanizing category names for ids + + Wizard: Allow more actions without requiring admin access + + Simulator: Ignore error RC from crm_simulate if nothing is written to stderr + + Wizard: Nicer category icons + + Reports: Less verbose version string + + Deflate assets in production + +------------------------------------------------------------------- Old: ---- hawk2-2.0.0+git.1457531142.ac2dc9f.tar.bz2 New: ---- hawk2-2.0.0+git.1458543074.dc9aa66.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ hawk2.spec ++++++ --- /var/tmp/diff_new_pack.lbHr8H/_old 2016-03-26 15:24:56.000000000 +0100 +++ /var/tmp/diff_new_pack.lbHr8H/_new 2016-03-26 15:24:56.000000000 +0100 @@ -35,7 +35,7 @@ Summary: HA Web Konsole License: GPL-2.0 Group: %{pkg_group} -Version: 2.0.0+git.1457531142.ac2dc9f +Version: 2.0.0+git.1458543074.dc9aa66 Release: 0 Url: http://www.clusterlabs.org/wiki/Hawk Source: %{name}-%{version}.tar.bz2 @@ -100,7 +100,7 @@ BuildRequires: rubygem(%{rb_default_ruby_abi}:thor) >= 0.19 BuildRequires: rubygem(%{rb_default_ruby_abi}:tilt:1.4) BuildRequires: rubygem(%{rb_default_ruby_abi}:uglifier) -BuildRequires: rubygem(%{rb_default_ruby_abi}:web-console:2) >= 2.1 +BuildRequires: rubygem(%{rb_default_ruby_abi}:web-console) >= 2.1 %if 0%{?bundle_gems} %else ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.lbHr8H/_old 2016-03-26 15:24:56.000000000 +0100 +++ /var/tmp/diff_new_pack.lbHr8H/_new 2016-03-26 15:24:56.000000000 +0100 @@ -1,4 +1,4 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/ClusterLabs/hawk.git</param> - <param name="changesrevision">ac2dc9f0c0507c688a2b5732cad7bbd1e5f33c85</param></service></servicedata> \ No newline at end of file + <param name="changesrevision">dc9aa660b415aeff726ac9f3dcac441c8fdc7281</param></service></servicedata> \ No newline at end of file ++++++ hawk2-2.0.0+git.1457531142.ac2dc9f.tar.bz2 -> hawk2-2.0.0+git.1458543074.dc9aa66.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/.travis.yml new/hawk2-2.0.0+git.1458543074.dc9aa66/.travis.yml --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/.travis.yml 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/.travis.yml 2016-03-21 09:18:34.000000000 +0100 @@ -8,11 +8,14 @@ - rails-3_2 rvm: - - "2.1.8" - "2.2.4" - "2.3.0" gemfile: hawk/Gemfile script: sh -c 'cd hawk && bin/rake brakeman:run test' notifications: - irc: "chat.freenode.net#clusterlabs-dev" + irc: + channels: + - "chat.freenode.net#clusterlabs-dev" + on_success: never + on_failure: change diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/Gemfile new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/Gemfile --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/Gemfile 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/Gemfile 2016-03-21 09:18:34.000000000 +0100 @@ -30,7 +30,7 @@ gem "kramdown", ">= 1.3.3" group :development do - gem "web-console", "~> 2.1" + gem "web-console", ">= 2.1" gem "spring", "~> 1.3" gem "ruby_parser", "~> 3.6" gem "uglifier" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/assets/javascripts/module/basics.js new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/assets/javascripts/module/basics.js --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/assets/javascripts/module/basics.js 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/assets/javascripts/module/basics.js 2016-03-21 09:18:34.000000000 +0100 @@ -28,6 +28,15 @@ $('.nav-wrapper').toggleClass('active') }); + $.urlParam = function(name){ + var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); + if (results && results.length >= 1) { + return results[1]; + } else { + return undefined; + } + }; + $.growl( false, { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/assets/javascripts/module/reports.js new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/assets/javascripts/module/reports.js --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/assets/javascripts/module/reports.js 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/assets/javascripts/module/reports.js 2016-03-21 09:18:34.000000000 +0100 @@ -2,7 +2,7 @@ // See COPYING for license. $(function() { - var time_format_string = 'YYYY-MM-DD H:mm'; + var time_format_string = 'YYYY-MM-DD HH:mm Z'; var REFRESH_INTERVAL = 5000; var running_timeout = null; @@ -396,29 +396,78 @@ }); }); - $('#reports #report-show').each(function() { - var report_id = $(this).data('report'); - $(this).find('#cancel-report-loading').on('click', function(e) { - location.href = Routes.reports_path(); + function afterDisplay(self) { + var data = $('#reports #transition-data'); + var report = data.data('report'); + var transitions = $.parseJSON(data.text()); + + $.each(transitions, function(i, item) { + item.index = i; }); - $.ajax({ - url: Routes.display_report_path({id: report_id}), - dataType: "html", - success: function(data) { - $('#reports #report-show').html(data); - } + + var last_popover_element = null; + + $('#reports #eventcontrol').EventControl({ + data: transitions, + onhover: function(item, element, event, inout) { + if (inout == 'in') { + element.data('title', item.basename); + element.data('content', moment(item.timestamp).format(time_format_string)); + + if (last_popover_element != element) { + if (last_popover_element != null) { + last_popover_element.popover('destroy'); + } + element.popover({ + placement: 'top', + container: 'body' + }); + last_popover_element = element; + } + element.popover('show'); + } else { + element.popover('hide'); + } + }, + oncreate: function(item, element) { + if (parseInt($.urlParam('transition')) == item.index + 1) { + element.css('color', '#94FB23'); + } else if (item.basename.indexOf('error') > -1) { + element.addClass('text-danger'); + } else if (item.basename.indexOf('warn') > -1) { + element.addClass('text-warning'); + } else if (item.basename.indexOf('input') > -1) { + element.addClass('text-info'); + } + }, + onclick: function(item, element, event) { + Cookies.set("hawk-eventcontrol", {report: report, state: this.save_state()}); + var hash = location.hash; + if (!hash) { + hash = ''; + } + location.href = Routes.display_report_path(report, {transition: item.index + 1}) + hash; + }, }); - }); - $('#reports #report-display').each(function() { - $(this).find('.dropdown-toggle').dropdown(); + $('#reports #middle .panel-heading .btn').each(function(index, link) { + var a = $(link) + a.attr('href', a.attr('href').split('#')[0] + location.hash); + }); + + var state = Cookies.getJSON('hawk-eventcontrol'); + if (state && "report" in state && "state" in state && state.report == report) { + $('#reports #eventcontrol').EventControl(state.state); + } + + self.find('.dropdown-toggle').dropdown(); - $(this).find('.remote a[data-toggle="tab"]') + self.find('.remote a[data-toggle="tab"]') .on('show.bs.tab', function(e) { var hash = this.hash; var target = $(e.target); - $('#reports #middle .iterator a').each(function(index, link) { + $('#reports #middle .panel-heading .btn').each(function(index, link) { var $link = $(link) $link.attr( @@ -455,7 +504,7 @@ }); }); - $(this).find('.remote li.active a[data-toggle="tab"]').each(function(index, link) { + self.find('.remote li.active a[data-toggle="tab"]').each(function(index, link) { var hash = this.hash; var target = $(link); @@ -496,5 +545,24 @@ } }); }); + } + + $('#reports #report-show').each(function() { + var report_id = $(this).data('report'); + $(this).find('#cancel-report-loading').on('click', function(e) { + location.href = Routes.reports_path(); + }); + $.ajax({ + url: Routes.display_report_path({id: report_id}), + dataType: "html", + success: function(data) { + $('#reports #report-show').replaceWith(data); + afterDisplay($('#reports #report-display')); + } + }); + }); + + $('#reports #report-display').each(function() { + afterDisplay($(this)); }); }); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/assets/stylesheets/application/_content.scss new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/assets/stylesheets/application/_content.scss --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/assets/stylesheets/application/_content.scss 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/assets/stylesheets/application/_content.scss 2016-03-21 09:18:34.000000000 +0100 @@ -138,3 +138,7 @@ } } } + +.breather { + margin-top: 10px; +} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/controllers/reports_controller.rb new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/controllers/reports_controller.rb --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/controllers/reports_controller.rb 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/controllers/reports_controller.rb 2016-03-21 09:18:34.000000000 +0100 @@ -377,7 +377,7 @@ if t.nil? '' else - t.strftime('%F %R') + t.strftime('%F %R %Z') end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/controllers/simulator_controller.rb new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/controllers/simulator_controller.rb --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/controllers/simulator_controller.rb 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/controllers/simulator_controller.rb 2016-03-21 09:18:34.000000000 +0100 @@ -58,7 +58,11 @@ "-G", "#{Rails.root}/tmp/sim.graph", "-D", "#{Rails.root}/tmp/sim.dot", *injections) - if status != 0 + # FIXME: Return value of crm_simulate is + # completely unpredictable and nonsensical, + # so only presume it's an error if there's + # actually output on stderr. + if status != 0 && !err.blank? render json: { error: err }, status: 500 return end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/helpers/wizard_helper.rb new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/helpers/wizard_helper.rb --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/helpers/wizard_helper.rb 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/helpers/wizard_helper.rb 2016-03-21 09:18:34.000000000 +0100 @@ -49,12 +49,18 @@ case wizard when "database" "database" - when "filesystem" + when "file system" "hdd-o" + when "nfs" + "globe" when "server" "server" - else + when "stonith" + "plug" + when "wizard" "list" + else + "magic" end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/models/report.rb new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/models/report.rb --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/models/report.rb 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/models/report.rb 2016-03-21 09:18:34.000000000 +0100 @@ -60,9 +60,8 @@ next unless File.exist?(path) v = peinput_version path if v && v != pcmk_version - version = _("PE Input created by different Pacemaker version (%{version})") % { version: v } - elsif v != pcmk_version - version = _("Pacemaker version not present in PE Input") + # version = _("PE Input created by different Pacemaker version (%{version})") % { version: v } + version = v else version = nil end @@ -123,6 +122,7 @@ def tags(hb_report, path) out, _err, _status = transition_cmd hb_report, "transition tags #{path}" + return [] if out == "No tags.\n" out.split end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/models/wizard.rb new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/models/wizard.rb --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/models/wizard.rb 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/models/wizard.rb 2016-03-21 09:18:34.000000000 +0100 @@ -72,8 +72,9 @@ return false if action['name'] == 'cib' if action['name'] == 'crm' t = (action['text'] || '').split.first || '' - return false if ['configure', 'resource'].any? { |c| c == t } + return false if ['configure', 'resource', 'cib'].any? { |c| c == t } end + return false if action['name'] == 'call' && action['sudo'].nil? true end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/views/reports/display.html.haml new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/views/reports/display.html.haml --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/views/reports/display.html.haml 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/views/reports/display.html.haml 2016-03-21 09:18:34.000000000 +0100 @@ -53,41 +53,17 @@ .row .panel.panel-default .panel-heading - %ul.nav.nav-pills.nav-justified.iterator - %li{ role: "presentation", class: current_transition == first_transition ? "disabled" : nil } - = link_to _("Previous"), url_for(transition: prev_transition) - - - window_transition.each do |transition| - %li{ role: "presentation", class: current_transition == transition ? "active" : nil } - - if transition == "begin" - .dropdown - %button#dropdownBegin.btn.dropdown-toggle{type: :button, data: { toggle: "dropdown" }, aria: { haspopup: true, expanded: true } } - .text-center - %strong - = '... <span class="caret"></span>'.html_safe - %ul#collapsed.dropdown-menu{ aria: { labelledby: "dropdownBegin" } } - - prev_transitions.each do |n| - %li= link_to n, url_for(transition: n), title: transition_tooltip(n), data: { toggle: :tooltip } - %li.divider{role: :separator} - - lt = first_transition - %li.text-center= link_to icon_tag('fast-backward'), url_for(transition: lt), title: transition_tooltip(lt), data: { toggle: :tooltip } - - elsif transition == "end" - .dropdown - %button#dropdownEnd.btn.dropdown-toggle{type: :button, data: { toggle: "dropdown" }, aria: { haspopup: true, expanded: true } } - .text-center - %strong - = '... <span class="caret"></span>'.html_safe - %ul#collapsed.dropdown-menu{ aria: { labelledby: "dropdownEnd" } } - - next_transitions.each do |n| - %li= link_to n, url_for(transition: n), title: transition_tooltip(n), data: { toggle: :tooltip } - %li.divider{role: :separator} - - lt = last_transition - %li.text-center= link_to icon_tag('fast-forward'), url_for(transition: lt), title: transition_tooltip(lt), data: { toggle: :tooltip } - - else - = link_to transition, url_for(transition: transition), title: transition_tooltip(transition), data: { toggle: :tooltip } - - %li{ role: "presentation", class: current_transition == last_transition ? "disabled" : nil } - = link_to _("Next"), url_for(transition: next_transition) + #eventcontrol.eventcontrol + .row.clearfix.breather + .col-md-4 + .pull-left + = link_to icon_tag("step-backward"), url_for(transition: prev_transition), class: 'btn btn-xs btn-primary' + .col-md-4.col-md-offset-4 + .pull-right + = link_to icon_tag("step-forward"), url_for(transition: next_transition), class: 'btn btn-xs btn-primary' + %script#transition-data{type: "application/json", data: { report: @report.id, current: current_transition } } + :plain + #{@transitions.to_json} - unless @transition.nil? .panel-body %dl.dl-horizontal diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/views/wizards/index.html.haml new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/views/wizards/index.html.haml --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/app/views/wizards/index.html.haml 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/app/views/wizards/index.html.haml 2016-03-21 09:18:34.000000000 +0100 @@ -7,7 +7,7 @@ %ul.nav.nav-pills.nav-stacked.nav-bighelp.nav-topspace{ data: { help_target: "#rightbar > .rightbar_help > *" } } - wizard_categories(@wizards).each do |category| %li.toggable.btn.btn-default.btn-lg - %span{ href: "##{category}", data: { toggle: "collapse", parent: ".nav-bighelp" } } + %span{ href: "##{category.dehumanize}", data: { toggle: "collapse", parent: ".nav-bighelp" } } .pull-right = icon_tag "chevron-down" @@ -16,7 +16,7 @@ - else = icon_text wizard_icon(category), category.titleize - %ul.nav.nav-pills.nav-stacked.collapse{ id: category } + %ul.nav.nav-pills.nav-stacked.collapse{ id: category.dehumanize } - @wizards.sort_by(&:name).each do |wizard| - next unless wizard.category.eql?(category) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/config/environments/production.rb new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/config/environments/production.rb --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/config/environments/production.rb 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/config/environments/production.rb 2016-03-21 09:18:34.000000000 +0100 @@ -26,6 +26,8 @@ # config.active_record.migration_error = :page_load # config.active_record.dump_schema_after_migration = false + config.middleware.insert_before ActionDispatch::Static, Rack::Deflater + config.cache_store = :memory_store config.assets.debug = false diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/config/initializers/inflections.rb new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/config/initializers/inflections.rb --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/config/initializers/inflections.rb 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/config/initializers/inflections.rb 2016-03-21 09:18:34.000000000 +0100 @@ -14,4 +14,21 @@ inflect.acronym "OCFS2" inflect.acronym "cLVM" inflect.acronym "CIDR" + inflect.acronym "SBD" + inflect.acronym "QA" +end + +module ActiveSupport::Inflector + # does the opposite of humanize ... mostly. + # Basically does a space-substituting .underscore + def dehumanize(the_string) + result = the_string.to_s.dup + result.downcase.gsub(/ +/,'_') + end +end + +class String + def dehumanize + ActiveSupport::Inflector.dehumanize(self) + end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/vendor/assets/javascripts/jquery/mousewheel.js new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/vendor/assets/javascripts/jquery/mousewheel.js --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/vendor/assets/javascripts/jquery/mousewheel.js 1970-01-01 01:00:00.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/vendor/assets/javascripts/jquery/mousewheel.js 2016-03-21 09:18:34.000000000 +0100 @@ -0,0 +1,221 @@ +/*! + * jQuery Mousewheel 3.1.13 + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + */ + +(function (factory) { + if ( typeof define === 'function' && define.amd ) { + // AMD. Register as an anonymous module. + define(['jquery'], factory); + } else if (typeof exports === 'object') { + // Node/CommonJS style for Browserify + module.exports = factory; + } else { + // Browser globals + factory(jQuery); + } +}(function ($) { + + var toFix = ['wheel', 'mousewheel', 'DOMMouseScroll', 'MozMousePixelScroll'], + toBind = ( 'onwheel' in document || document.documentMode >= 9 ) ? + ['wheel'] : ['mousewheel', 'DomMouseScroll', 'MozMousePixelScroll'], + slice = Array.prototype.slice, + nullLowestDeltaTimeout, lowestDelta; + + if ( $.event.fixHooks ) { + for ( var i = toFix.length; i; ) { + $.event.fixHooks[ toFix[--i] ] = $.event.mouseHooks; + } + } + + var special = $.event.special.mousewheel = { + version: '3.1.12', + + setup: function() { + if ( this.addEventListener ) { + for ( var i = toBind.length; i; ) { + this.addEventListener( toBind[--i], handler, false ); + } + } else { + this.onmousewheel = handler; + } + // Store the line height and page height for this particular element + $.data(this, 'mousewheel-line-height', special.getLineHeight(this)); + $.data(this, 'mousewheel-page-height', special.getPageHeight(this)); + }, + + teardown: function() { + if ( this.removeEventListener ) { + for ( var i = toBind.length; i; ) { + this.removeEventListener( toBind[--i], handler, false ); + } + } else { + this.onmousewheel = null; + } + // Clean up the data we added to the element + $.removeData(this, 'mousewheel-line-height'); + $.removeData(this, 'mousewheel-page-height'); + }, + + getLineHeight: function(elem) { + var $elem = $(elem), + $parent = $elem['offsetParent' in $.fn ? 'offsetParent' : 'parent'](); + if (!$parent.length) { + $parent = $('body'); + } + return parseInt($parent.css('fontSize'), 10) || parseInt($elem.css('fontSize'), 10) || 16; + }, + + getPageHeight: function(elem) { + return $(elem).height(); + }, + + settings: { + adjustOldDeltas: true, // see shouldAdjustOldDeltas() below + normalizeOffset: true // calls getBoundingClientRect for each event + } + }; + + $.fn.extend({ + mousewheel: function(fn) { + return fn ? this.bind('mousewheel', fn) : this.trigger('mousewheel'); + }, + + unmousewheel: function(fn) { + return this.unbind('mousewheel', fn); + } + }); + + + function handler(event) { + var orgEvent = event || window.event, + args = slice.call(arguments, 1), + delta = 0, + deltaX = 0, + deltaY = 0, + absDelta = 0, + offsetX = 0, + offsetY = 0; + event = $.event.fix(orgEvent); + event.type = 'mousewheel'; + + // Old school scrollwheel delta + if ( 'detail' in orgEvent ) { deltaY = orgEvent.detail * -1; } + if ( 'wheelDelta' in orgEvent ) { deltaY = orgEvent.wheelDelta; } + if ( 'wheelDeltaY' in orgEvent ) { deltaY = orgEvent.wheelDeltaY; } + if ( 'wheelDeltaX' in orgEvent ) { deltaX = orgEvent.wheelDeltaX * -1; } + + // Firefox < 17 horizontal scrolling related to DOMMouseScroll event + if ( 'axis' in orgEvent && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { + deltaX = deltaY * -1; + deltaY = 0; + } + + // Set delta to be deltaY or deltaX if deltaY is 0 for backwards compatabilitiy + delta = deltaY === 0 ? deltaX : deltaY; + + // New school wheel delta (wheel event) + if ( 'deltaY' in orgEvent ) { + deltaY = orgEvent.deltaY * -1; + delta = deltaY; + } + if ( 'deltaX' in orgEvent ) { + deltaX = orgEvent.deltaX; + if ( deltaY === 0 ) { delta = deltaX * -1; } + } + + // No change actually happened, no reason to go any further + if ( deltaY === 0 && deltaX === 0 ) { return; } + + // Need to convert lines and pages to pixels if we aren't already in pixels + // There are three delta modes: + // * deltaMode 0 is by pixels, nothing to do + // * deltaMode 1 is by lines + // * deltaMode 2 is by pages + if ( orgEvent.deltaMode === 1 ) { + var lineHeight = $.data(this, 'mousewheel-line-height'); + delta *= lineHeight; + deltaY *= lineHeight; + deltaX *= lineHeight; + } else if ( orgEvent.deltaMode === 2 ) { + var pageHeight = $.data(this, 'mousewheel-page-height'); + delta *= pageHeight; + deltaY *= pageHeight; + deltaX *= pageHeight; + } + + // Store lowest absolute delta to normalize the delta values + absDelta = Math.max( Math.abs(deltaY), Math.abs(deltaX) ); + + if ( !lowestDelta || absDelta < lowestDelta ) { + lowestDelta = absDelta; + + // Adjust older deltas if necessary + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { + lowestDelta /= 40; + } + } + + // Adjust older deltas if necessary + if ( shouldAdjustOldDeltas(orgEvent, absDelta) ) { + // Divide all the things by 40! + delta /= 40; + deltaX /= 40; + deltaY /= 40; + } + + // Get a whole, normalized value for the deltas + delta = Math[ delta >= 1 ? 'floor' : 'ceil' ](delta / lowestDelta); + deltaX = Math[ deltaX >= 1 ? 'floor' : 'ceil' ](deltaX / lowestDelta); + deltaY = Math[ deltaY >= 1 ? 'floor' : 'ceil' ](deltaY / lowestDelta); + + // Normalise offsetX and offsetY properties + if ( special.settings.normalizeOffset && this.getBoundingClientRect ) { + var boundingRect = this.getBoundingClientRect(); + offsetX = event.clientX - boundingRect.left; + offsetY = event.clientY - boundingRect.top; + } + + // Add information to the event object + event.deltaX = deltaX; + event.deltaY = deltaY; + event.deltaFactor = lowestDelta; + event.offsetX = offsetX; + event.offsetY = offsetY; + // Go ahead and set deltaMode to 0 since we converted to pixels + // Although this is a little odd since we overwrite the deltaX/Y + // properties with normalized deltas. + event.deltaMode = 0; + + // Add event and delta to the front of the arguments + args.unshift(event, delta, deltaX, deltaY); + + // Clearout lowestDelta after sometime to better + // handle multiple device types that give different + // a different lowestDelta + // Ex: trackpad = 3 and mouse wheel = 120 + if (nullLowestDeltaTimeout) { clearTimeout(nullLowestDeltaTimeout); } + nullLowestDeltaTimeout = setTimeout(nullLowestDelta, 200); + + return ($.event.dispatch || $.event.handle).apply(this, args); + } + + function nullLowestDelta() { + lowestDelta = null; + } + + function shouldAdjustOldDeltas(orgEvent, absDelta) { + // If this is an older event and the delta is divisable by 120, + // then we are assuming that the browser is treating this as an + // older mouse wheel event and that we should divide the deltas + // by 40 to try and get a more usable deltaFactor. + // Side note, this actually impacts the reported scroll distance + // in older browsers and can cause scrolling to be slower than native. + // Turn this off by setting $.event.special.mousewheel.settings.adjustOldDeltas to false. + return special.settings.adjustOldDeltas && orgEvent.type === 'mousewheel' && absDelta % 120 === 0; + } + +})); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/vendor/assets/javascripts/misc/eventcontrol.js new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/vendor/assets/javascripts/misc/eventcontrol.js --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/vendor/assets/javascripts/misc/eventcontrol.js 1970-01-01 01:00:00.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/vendor/assets/javascripts/misc/eventcontrol.js 2016-03-21 09:18:34.000000000 +0100 @@ -0,0 +1,455 @@ +// Copyright (c) 2016 Kristoffer Gronlund <kgronl...@suse.com> +// See COPYING for license. + +(function($) { + function unit_in_timespan(h, min_time, timespan) { + var s = min_time - (min_time % h); + var e = min_time + timespan; + if (h > 15*60*1000) { + s -= 3600*1000; + } + var r = [s]; + while (s < e) { + s += h; + if (s >= min_time && s <= e) { + r.push(s); + } + } + if (r.length > 20) { + r = r.slice(0, 20); + } + return r; + } + + var MIN_SPAN = 10000; + var MAX_SPAN = 1000 * 3600 * 24 * 365 * 100; + var MAJSPANS = [4*365*24*3600*1000, 365*24*3600*1000, 120*24*3600*1000, 42*24*3600*1000, 28*24*3600*1000, 21*24*3600*1000, 14*24*3600*1000, 10*24*3600*1000]; + var MAJUNITS = [365*24*3600*1000, 120*24*3600*1000, 31*24*3600*1000, 21*24*3600*1000, 14*24*3600*1000, 7*24*3600*1000, 4*24*3600*1000, 2*24*3600*1000]; + var MINSPANS = [3*24*3600*1000, 2*24*3600*1000, 24*3600*1000, 12*3600*1000, 6*3600*1000, 3*3600*1000, 3600*1000, 45*60*1000, 30*60*1000, 20*60*1000, 10*60*1000, 5*60*1000, 3*60*1000, 60*1000, 45*1000, 20*1000, 12*1000, 0]; + var MINUNITS = [ 12*3600*1000, 6*3600*1000, 4*3600*1000, 3*3600*1000, 3600*1000, 30*60*1000, 15*60*1000, 5*60*1000, 4*60*1000, 3*60*1000, 2*60*1000, 60*1000, 30*1000, 15*1000, 10*1000, 5*1000, 2*1000, 1000]; + + var EventControl = function(element, options) { + this.settings = $.extend({ + onhover: function(item, element, event, inout) {}, + onclick: function(item, element, event) {}, + oncreate: function(item, element) {}, + data: [], + hammertime: false, + items_height: 101, + markers_height: 31 + }, options); + + this.element = element; + this.width = element.width(); + + this.items_h = this.settings.items_height; + this.markers_h = this.settings.markers_height; + this._dragging = null; + this._drag_x = 0; + + element.addClass('eventcontrol'); + element.append(['<div class="ec-items ec-draggable" style="top:0px;height:', this.items_h, 'px;"></div>', + '<div class="ec-markers ec-draggable" style="top:', (this.items_h + 1), 'px;height:', this.markers_h, 'px;">', + '<div class="ec-ticks"></div>', + '<div class="ec-labels"></div>', + '</div>' + ].join('')); + + this.items = element.children('.ec-items'); + this.markers = element.children('.ec-markers'); + this.ticks = this.markers.children('.ec-ticks'); + this.labels = this.markers.children('.ec-labels'); + this.min_time = moment("2070-01-01"); + this.max_time = moment("1970-01-01"); + this.timespan = MAX_SPAN; + this.max_timespan = MAX_SPAN; + this.center_time = this.min_time.valueOf() + MAX_SPAN * 0.5; + this.init(); + return this; + }; + + EventControl.prototype.init = function() { + var self = this; + var element = this.element; + + function stop_dragging() { + element.children('.ec-draggable').removeClass('ec-dragging'); + self._dragging = null; + } + + function pan_with_delta(dragdelta, min_time, max_time) { + if (dragdelta > 0.9) { + dragdelta = 0.9; + } else if (dragdelta < -0.9) { + dragdelta = -0.9; + } + var time_offset = dragdelta * self.timespan; + var new_min_time = moment(min_time + time_offset); + var new_max_time = moment(max_time + time_offset); + if (!new_min_time.isSame(self.min_time) || new_max_time.isSame(self.max_time)) { + self.update_timespan(new_min_time, new_max_time); + } + } + + if (self.settings.hammertime) { + self.mc = new Hammer.Manager(self.element.get()[0]); + self.mc.add(new Hammer.Pan()); + // Tap recognizer with minimal 2 taps + self.mc.add( new Hammer.Tap({ event: 'doubletap', taps: 2 }) ); + // Single tap recognizer + self.mc.add( new Hammer.Tap({ event: 'singletap' }) ); + self.mc.get('doubletap').recognizeWith('singletap'); + // we only want to trigger a tap, when we don't have detected a doubletap + self.mc.get('singletap').requireFailure('doubletap'); + + self.mc.on("panstart panleft panright singletap doubletap tap", function(e) { + if (e.type == "singletap") { + var tgt = $(e.target); + if (tgt.hasClass('ec-dot')) { + self.settings.onclick.call(self, tgt.data('event'), tgt, e); + } + } else if (e.type == "panstart") { + self._pan_min_time = self.min_time.valueOf(); + self._pan_max_time = self.max_time.valueOf(); + } else if (e.type == "panleft" || e.type == "panright") { + var deltapx = -e.deltaX; + var dragdelta = deltapx / self.width; + + pan_with_delta(dragdelta, self._pan_min_time, self._pan_max_time); + } else if (e.type == "doubletap") { + var base = element.offset(); + var dir = 1; + var offset = (e.center.x - base.left) / self.width; + self.zoom(dir, offset); + } else { + console.log("Unexpected hammer event", e.type); + } + }); + + } else { + element.on('click', function(e) { + var tgt = $(e.target); + if (tgt.hasClass('ec-dot')) { + self.settings.onclick.call(self, tgt.data('event'), tgt, e); + } + }); + + element.mousedown(function(e) { + if (e.which == 1) { + element.children('.ec-draggable').addClass('ec-dragging'); + self._dragging = true; + self._drag_x = e.pageX; + self._drag_min_time = self.min_time.valueOf(); + self._drag_max_time = self.max_time.valueOf(); + return false; + } + }); + + $('body').mouseup(function(e) { + if (e.which == 1) { + stop_dragging(); + } + }); + + $('body').on("dragend",function(){ + stop_dragging(); + }); + + $('body').mousemove(function(e) { + if (e.which == 1 && self._dragging) { + var deltapx = -(e.pageX - self._drag_x); + var dragdelta = deltapx / self.width; + pan_with_delta(dragdelta, self._drag_min_time, self._drag_max_time); + } + }); + } + + $(window).resize(function() { + if (!self._dirty) { + if (self.min_time && self.max_time) { + self._dirty = true; + window.setTimeout(function() { + var mit = self.min_time.clone(); + var mat = self.max_time.clone(); + self.update_timespan(mit, mat); + }, 400); + } + } + }); + + element.on('mousewheel', function(event) { + event.preventDefault(); + var dir = event.deltaY; + var base = element.offset(); + var offset = (event.pageX - base.left) / self.width; + self.zoom(dir, offset); + }); + + $.each(self.settings.data, function(i, item) { + self.items.append('<div class="ec-dot" style="left:0px;top:0px;"></div>'); + var elem = self.items.children('.ec-dot:last-child'); + elem.data('event', item); + item._starttime = moment(item.timestamp).valueOf(); + + self.settings.oncreate.call(self, item, elem); + + elem.hover(function(event) { + self.settings.onhover.call(self, item, elem, event, 'in'); + }, function(event) { + self.settings.onhover.call(self, item, elem, event, 'out'); + }); + + var t = moment(item.timestamp); + if (t < self.min_time) { + self.min_time = t.clone(); + } + if (t > self.max_time) { + self.max_time = t; + } + }); + + self.min_time.subtract(5, 's'); + self.max_time.add(5, 's'); + self.center_time = self.min_time.valueOf() + (self.max_time.valueOf() - self.min_time.valueOf()) * 0.5; + + self.update_timespan(self.min_time.clone(), self.max_time.clone()); + }; + + EventControl.prototype.save_state = function() { + return {min_time: this.min_time.valueOf(), max_time: this.max_time.valueOf()}; + }; + + EventControl.prototype.load_state = function(state) { + this.update_timespan(state.min_time, state.max_time); + }; + + EventControl.prototype.zoom = function(dir, focus) { + if (focus === undefined) { + focus = 0.5; + } + + var new_min_time = this.min_time.clone(); + var new_max_time = this.max_time.clone(); + var delta; + + if (dir < 0) { + delta = this.timespan * 0.5; + new_min_time.subtract(delta * focus, 'ms'); + new_max_time.add(delta * (1.0 - focus), 'ms'); + } else { + delta = this.timespan * 0.25; + new_min_time.add(delta * focus, 'ms'); + new_max_time.subtract(delta * (1.0 - focus), 'ms'); + } + + return this.update_timespan(new_min_time, new_max_time); + }; + + EventControl.prototype.update_timespan = function(new_min_time, new_max_time) { + var self = this; + var element = this.element; + var i = 0; + + self._dirty = false; + self.width = element.width(); + + if (!moment.isMoment(new_min_time)) { + new_min_time = moment(new_min_time); + } + if (!moment.isMoment(new_max_time)) { + new_max_time = moment(new_max_time); + } + + self.timespan = new_max_time.valueOf() - new_min_time.valueOf(); + if (self.timespan < MIN_SPAN) { + var ct = self.min_time.valueOf() + (self.max_time.valueOf() - self.min_time.valueOf()) * 0.5; + new_min_time = moment(ct - MIN_SPAN*0.5); + new_max_time = moment(ct + MIN_SPAN*0.5); + self.timespan = new_max_time.valueOf() - new_min_time.valueOf(); + } + + if (self.max_timespan == MAX_SPAN) { + self.max_timespan = self.timespan * 2; + } + + if (self.timespan > self.max_timespan) { + new_min_time = moment(self.center_time - self.max_timespan * 0.5); + new_max_time = moment(self.center_time + self.max_timespan * 0.5); + self.timespan = self.max_time.valueOf() - self.min_time.valueOf(); + } + self.min_time = new_min_time; + self.max_time = new_max_time; + + var min_time_ms = self.min_time.valueOf(); + var major; + var minor; + var major_fmt = 'YYYY-MM-DD'; + var minor_fmt = 'HH:mm'; + var maj_unit = 24*3600*1000; + var min_unit = null; + + + if (self.timespan >= 6*24*3600*1000) { + min_unit = null; + if (self.timespan > 4*365*24*3600*1000) { + major_fmt = 'YYYY'; + } else if (self.timespan > 120*24*3600*1000) { + major_fmt = 'YYYY-MM'; + } + for (i = 0; i < MAJSPANS.length; i++) { + if (self.timespan > MAJSPANS[i]) { + maj_unit = MAJUNITS[i]; + break; + } + } + } else { + for (i = 0; i < MINSPANS.length; i++) { + if (self.timespan > MINSPANS[i]) { + min_unit = MINUNITS[i]; + break; + } + } + if (min_unit < 60*1000) { + minor_fmt = 'HH:mm:ss'; + } + } + + major = unit_in_timespan(maj_unit, min_time_ms, self.timespan); + + var lastlblend = -1; + var existing_ticks = self.ticks.children('.ec-tick'); + var existing_labels = self.labels.children('.ec-label,.ec-region-label'); + var tick_idx = 0; + var label_idx = 0; + + function addlabel(cls, l, t, lbl) { + if (l > lastlblend) { + if (label_idx < existing_labels.length) { + var label = $(existing_labels[label_idx]); + label.css('left', l).css('top', t).text(lbl).addClass(cls).removeClass((cls == 'ec-label') ? 'ec-region-label' : 'ec-label'); + lastlblend = l + label.width(); + label_idx += 1; + } else { + self.labels.append(['<div class="', cls, '" style="left:', l, 'px;top:', t, 'px;">', lbl, '</div>'].join("")); + lastlblend = l + self.labels.children('.' + cls + ':last-child').width(); + } + } + } + + function addtick(l, t, h) { + if (tick_idx < existing_ticks.length) { + var tick = $(existing_ticks[tick_idx]); + tick.css('left', l).css('top', t).css('height', h); + tick_idx += 1; + } else { + self.ticks.append(['<div class="ec-tick" style="left:', l, 'px;top:', t, 'px;height:', h, 'px;"></div>'].join('')); + } + } + + var span = self.width / self.timespan; + var ts; + var xoffs; + + if (min_unit !== null) { + minor = unit_in_timespan(min_unit, min_time_ms, self.timespan); + + for (i = 0; i < minor.length; i++) { + ts = minor[i]; + xoffs = span * (ts - min_time_ms); + addtick(xoffs, 1, self.items_h + 1 + self.markers_h); + addlabel('ec-label', xoffs + 1, self.items_h + 1, moment(ts).format(minor_fmt)); + } + } else { + for (i = 0; i < major.length; i++) { + addtick(span * (major[i] - min_time_ms), 1, self.items_h * 0.5); + } + } + + lastlblend = -1; + for (i = 0; i < major.length; i++) { + ts = major[i]; + var l = span * (ts - min_time_ms); + if (l < 2) { + if (i + 1 < major.length) { + var next = span * (major[i + 1] - min_time_ms); + if (next > 60) { + l = 2; + } + } else { + l = 2; + } + } + addlabel('ec-region-label', l + 1, self.items_h + self.markers_h - 14, moment(ts).format(major_fmt)); + } + + for (i = tick_idx; i < existing_ticks.length; i++) { + $(existing_ticks[i]).remove(); + } + for (i = label_idx; i < existing_labels.length; i++) { + $(existing_labels[i]).remove(); + } + + var item_offset = 2; + var item_slot_x = -100; + var item_slot_y = item_offset; + var item_w = 8; + var item_d = item_w + item_offset; + var items = self.items.children('.ec-dot'); + + span = (self.width - (item_offset * 2)) / self.timespan; + + for (i = 0; i < items.length; i++) { + var elem = $(items[i]); + var item = elem.data('event'); + var m = item._starttime; + + var x = Math.floor(item_offset + span * (m - min_time_ms)); + var xf = x % item_d; + x = x - xf; + var y = item_offset; + var pushed = false; + xoffs = item_slot_x; + if ((x + xf - item_slot_x) <= item_w) { + pushed = true; + x = xoffs; + y = item_slot_y + item_d; + if (y > self.items_h - item_offset) { + xoffs += item_d; + x = xoffs; + y = item_offset; + } + } else { + item_slot_y = item_offset; + } + + if (!pushed) { + x += xf; + } + + item_slot_x = x; + item_slot_y = y; + + elem.css('left', x).css('top', y); + } + }; + + $.fn.EventControl = function(options) { + return this.each(function() { + var element = $(this); + var self = element.data('eventcontrol'); + if (!self) { + self = new EventControl(element, options); + element.data('eventcontrol', self); + } else if (options === undefined) { + return self.save_state(); + } else if (options == 'zoom-in') { + return self.zoom.apply(self, [1] + arguments.slice(1, 2)); + } else if (options == 'zoom-out') { + return self.zoom.apply(self, [-1] + arguments.slice(1, 2)); + } else { + self.load_state(options); + } + return self; + }); + }; +}(jQuery)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/vendor/assets/javascripts/vendor.js new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/vendor/assets/javascripts/vendor.js --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/vendor/assets/javascripts/vendor.js 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/vendor/assets/javascripts/vendor.js 2016-03-21 09:18:34.000000000 +0100 @@ -9,11 +9,13 @@ //= require jquery/jsviews //= require jquery/sortable //= require jquery/blockui +//= require jquery/mousewheel //= require misc/moment //= require bootstrap-sprockets //= require bootstrap //= require font-awesome/font-awesome //= require misc/highlight //= require misc/js.cookie +//= require misc/eventcontrol //= require js-routes diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/vendor/assets/stylesheets/misc/_eventcontrol.scss new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/vendor/assets/stylesheets/misc/_eventcontrol.scss --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/vendor/assets/stylesheets/misc/_eventcontrol.scss 1970-01-01 01:00:00.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/vendor/assets/stylesheets/misc/_eventcontrol.scss 2016-03-21 09:18:34.000000000 +0100 @@ -0,0 +1,75 @@ +.eventcontrol { + /*background: #eee; */ + color: #444; + background: #e3e3e3; + border-radius: 3px; + border: 1px solid #e0e0e0; + overflow: hidden; + position: relative; + width: 100%; +} + +.eventcontrol .ec-items { + background: #fafafa; + /*border-radius: 3px;*/ +} + +.eventcontrol .ec-markers { + border-top: 1px solid #fff; +} + +.eventcontrol .ec-dot { + position: absolute; + padding: 0; + width: 0px; + height: 0px; + border: 4px solid; + border-radius: 2px; + cursor:pointer; + background: #fff; + z-index: 1; +} + +.eventcontrol .ec-markers .ec-ticks { +} + +.eventcontrol .ec-markers .ec-ticks .ec-tick { + position: absolute; + width: 0px; + border-left: 1px solid #ececec; +} + +.eventcontrol .ec-markers .ec-labels { +} + +.eventcontrol .ec-label { + position: absolute; + padding: 0; + font-size: 12px; + text-align: left; + white-space: nowrap; + color: #777; +} + +.eventcontrol .ec-region-label { + position: absolute; + padding: 0; + font-size: 10px; + font-weight: bold; + text-align: left; + white-space: nowrap; + color: #999; +} + +.eventcontrol .ec-draggable { + cursor:hand; + cursor:grab; + cursor:-moz-grab; + cursor:-webkit-grab; +} + +.eventcontrol .ec-dragging { + cursor:grabbing; + cursor:-moz-grabbing; + cursor:-webkit-grabbing; +} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/vendor/assets/stylesheets/vendor.scss new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/vendor/assets/stylesheets/vendor.scss --- old/hawk2-2.0.0+git.1457531142.ac2dc9f/hawk/vendor/assets/stylesheets/vendor.scss 2016-03-09 14:47:38.000000000 +0100 +++ new/hawk2-2.0.0+git.1458543074.dc9aa66/hawk/vendor/assets/stylesheets/vendor.scss 2016-03-21 09:18:34.000000000 +0100 @@ -14,3 +14,4 @@ @import "bootstrap"; @import "font-awesome/font-awesome"; @import "misc/highlight"; +@import "misc/eventcontrol";