sinatra-hexacta 0.3.5 → 0.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/sinatra/extensions/init.rb +1 -0
- data/lib/sinatra/extensions/processmanager.rb +106 -0
- data/lib/sinatra/handlers/init.rb +2 -1
- data/lib/sinatra/handlers/processes.rb +28 -0
- data/lib/sinatra/helpers/init.rb +0 -1
- data/lib/sinatra/public/js/app.js +1 -1
- data/lib/sinatra/views/inputs/input.slim +13 -2
- data/lib/sinatra/views/inputs/multiple_select.slim +3 -2
- data/lib/sinatra/views/inputs/select.slim +4 -3
- data/lib/sinatra/views/inputs/textarea.slim +2 -2
- metadata +3 -2
- data/lib/sinatra/helpers/subscriptions.rb +0 -44
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a30ba69a60abe8d2c4d4759c82edf7afd5d079a7dc4e1b9fa44f4de0ca9ec141
         | 
| 4 | 
            +
              data.tar.gz: b818302b6ff34967f195d6e59d67b65feafa6e1de6ab41747b64cb6550cf30ea
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 0e45db2dad9dc2c44115290af7f7dc3d2edc9756f8ead2f7a3c3ede018ef779b61bcb911e49f4d760bdbc164b58506663c533dc15e79a1bcd77581c94bbd5752
         | 
| 7 | 
            +
              data.tar.gz: 8f71f3b2d0fda29e8c26a48d45968e2ad2822d030d3549c11ada3201494bd4082458f91387253e4bb140e4582db413325cf4689c6c170578f60ef42cdd404ce5
         | 
| @@ -0,0 +1,106 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            class AsyncProcess
         | 
| 4 | 
            +
              include SuckerPunch::Job
         | 
| 5 | 
            +
              attr_reader :handler
         | 
| 6 | 
            +
            end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            class ExampleProcess < AsyncProcess
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              attr_reader :log, :error, :interrupted, :name, :id
         | 
| 11 | 
            +
              
         | 
| 12 | 
            +
              def self.name
         | 
| 13 | 
            +
                "THE NAME"
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              def perform(handler, other_params)
         | 
| 17 | 
            +
                @handler = handler
         | 
| 18 | 
            +
                @handler.total = params[:ids].count
         | 
| 19 | 
            +
                # loop
         | 
| 20 | 
            +
                # if error @handler.log("error no falta", e.message)
         | 
| 21 | 
            +
                # @handler.increase
         | 
| 22 | 
            +
                #
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
            end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            class ProcessHandler
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              attr_reader :log, :error, :interrupted, :name, :id, :performed, :total, :clazz
         | 
| 29 | 
            +
              attr_accessor :total
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              def initialize(id, name, clazz)
         | 
| 32 | 
            +
                @id = id
         | 
| 33 | 
            +
                @total = 0
         | 
| 34 | 
            +
                @performed = 0
         | 
| 35 | 
            +
                @log = []
         | 
| 36 | 
            +
                @error = ""
         | 
| 37 | 
            +
                @interrupted = false
         | 
| 38 | 
            +
                @name = name
         | 
| 39 | 
            +
                @clazz = clazz
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
              def progress
         | 
| 43 | 
            +
                return 0 if @total == 0
         | 
| 44 | 
            +
                (@performed.to_f / @total.to_f)*100.0
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              def increase
         | 
| 48 | 
            +
                @performed += 1
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              def log(severity, message)
         | 
| 52 | 
            +
                @log << "[#{severity}] #{Time.now} #{message}"
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              def interrupt
         | 
| 56 | 
            +
                @interrupted = true
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              def running?
         | 
| 60 | 
            +
                @total != @performed
         | 
| 61 | 
            +
              end
         | 
| 62 | 
            +
            end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
            class ProcessManager
         | 
| 65 | 
            +
              include Singleton
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              attr_reader :handlers
         | 
| 68 | 
            +
             | 
| 69 | 
            +
              def initialize
         | 
| 70 | 
            +
                @handlers = []
         | 
| 71 | 
            +
              end
         | 
| 72 | 
            +
             | 
| 73 | 
            +
              def find(clazz)
         | 
| 74 | 
            +
                @handlers.find { |handler| handler.clazz == clazz }
         | 
| 75 | 
            +
              end
         | 
| 76 | 
            +
             | 
| 77 | 
            +
              def run(*args)
         | 
| 78 | 
            +
                clean(args.first.to_s)
         | 
| 79 | 
            +
                if !running?(args.first.to_s)
         | 
| 80 | 
            +
                  handler = ProcessHandler.new(rand(1..100000000), args.first.name, args.first.to_s)
         | 
| 81 | 
            +
                  clazz = args.first
         | 
| 82 | 
            +
                  args[0] = handler
         | 
| 83 | 
            +
                  clazz.perform_async(*args)
         | 
| 84 | 
            +
                  @handlers << handler
         | 
| 85 | 
            +
                  handler
         | 
| 86 | 
            +
                else
         | 
| 87 | 
            +
                  find(args.first.to_s)
         | 
| 88 | 
            +
                end
         | 
| 89 | 
            +
              end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
              def finish(handler)
         | 
| 92 | 
            +
                @handlers -= [handler]
         | 
| 93 | 
            +
              end
         | 
| 94 | 
            +
             | 
| 95 | 
            +
              def clean(clazz)
         | 
| 96 | 
            +
                @handlers.select { |handler| !handler.running? }.each do |handler|
         | 
| 97 | 
            +
                  handler.interrupt
         | 
| 98 | 
            +
                  self.finish(handler)
         | 
| 99 | 
            +
                end
         | 
| 100 | 
            +
              end
         | 
| 101 | 
            +
             | 
| 102 | 
            +
              def running?(clazz)
         | 
| 103 | 
            +
                !@handlers.select { |handler| handler.clazz == clazz }.empty?;
         | 
| 104 | 
            +
              end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
            end
         | 
| @@ -0,0 +1,28 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            module Sinatra
         | 
| 3 | 
            +
              module ProcessesHandler
         | 
| 4 | 
            +
                extend Hexacta
         | 
| 5 | 
            +
             | 
| 6 | 
            +
                def enable_processes
         | 
| 7 | 
            +
                  p "Enabling processes..."
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                  get '/processes' do
         | 
| 10 | 
            +
                    return "" if ProcessManager.instance.find(params[:class]).nil?
         | 
| 11 | 
            +
                    content_type :json
         | 
| 12 | 
            +
                    return { "progress" => ProcessManager.instance.find(params[:class]).progress }.to_json
         | 
| 13 | 
            +
                  end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                  post '/processes/:id' do |id|
         | 
| 16 | 
            +
                    ProcessManager.instance.interrupt(id)
         | 
| 17 | 
            +
                  end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                  post '/process' do
         | 
| 20 | 
            +
                    a_handler = ProcessManager.instance.run(params)
         | 
| 21 | 
            +
                    a_handler.to_json
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
              register ProcessesHandler
         | 
| 27 | 
            +
            end
         | 
| 28 | 
            +
             | 
    
        data/lib/sinatra/helpers/init.rb
    CHANGED
    
    
| @@ -6,14 +6,25 @@ | |
| 6 6 | 
             
              - placeholder = "..."
         | 
| 7 7 | 
             
            -unless defined? onkeyup
         | 
| 8 8 | 
             
              -onkeyup = ''
         | 
| 9 | 
            +
            -unless defined? readonly
         | 
| 10 | 
            +
              -readonly = false
         | 
| 11 | 
            +
            - unless defined? clazz
         | 
| 12 | 
            +
              - clazz = nil
         | 
| 9 13 |  | 
| 10 14 | 
             
            -if required
         | 
| 11 15 | 
             
              .form-group.has-feedback.has-success
         | 
| 12 16 | 
             
                label #{title}
         | 
| 13 17 | 
             
                .fg-line
         | 
| 14 | 
            -
                   | 
| 18 | 
            +
                  -if readonly
         | 
| 19 | 
            +
                    input.form-control.fg-input id="#{id}" type="#{type}" placeholder="#{placeholder}" name="#{name}" required="" value="#{value}" class="#{clazz}" onkeyup="#{onkeyup}" readonly=''
         | 
| 20 | 
            +
                  -else
         | 
| 21 | 
            +
                    input.form-control.fg-input id="#{id}" type="#{type}" placeholder="#{placeholder}" name="#{name}" required="" value="#{value}" class="#{clazz}" onkeyup="#{onkeyup}"
         | 
| 22 | 
            +
             | 
| 15 23 | 
             
            -else
         | 
| 16 24 | 
             
              .form-group
         | 
| 17 25 | 
             
                label #{title}
         | 
| 18 26 | 
             
                .fg-line
         | 
| 19 | 
            -
                   | 
| 27 | 
            +
                  -if readonly
         | 
| 28 | 
            +
                    input.form-control.fg-input id="#{id}" type="#{type}" placeholder="#{placeholder}" name="#{name}" value="#{value}" onkeyup="#{onkeyup}" class="#{clazz}" readonly=''
         | 
| 29 | 
            +
                  -else
         | 
| 30 | 
            +
                    input.form-control.fg-input id="#{id}" type="#{type}" placeholder="#{placeholder}" name="#{name}" value="#{value}" onkeyup="#{onkeyup}" class="#{clazz}" 
         | 
| @@ -4,7 +4,8 @@ | |
| 4 4 | 
             
              - id = "#{name}_#{rand(1000)}"
         | 
| 5 5 | 
             
            - unless defined? placeholder
         | 
| 6 6 | 
             
              - placeholder = "Selecciona..."
         | 
| 7 | 
            -
             | 
| 7 | 
            +
            - unless defined? clazz
         | 
| 8 | 
            +
              - clazz = nil
         | 
| 8 9 | 
             
            - unless defined? selected_elements
         | 
| 9 10 | 
             
              - selected_elements = []
         | 
| 10 11 | 
             
            - if selected_elements.nil?
         | 
| @@ -14,7 +15,7 @@ | |
| 14 15 | 
             
            -if required
         | 
| 15 16 | 
             
              .form-group.has-success
         | 
| 16 17 | 
             
                label.fg-label #{placeholder}
         | 
| 17 | 
            -
                select.chosen id="#{id}" name="#{name}[]" data-placeholder=("#{placeholder}") chosen="" multiple="" style=("display: none;") required=""
         | 
| 18 | 
            +
                select.chosen id="#{id}" class="#{clazz}" name="#{name}[]" data-placeholder=("#{placeholder}") chosen="" multiple="" style=("display: none;") required=""
         | 
| 18 19 | 
             
                  -for element in elements
         | 
| 19 20 | 
             
                    -if selected_elements.include?(element[:value].to_s)
         | 
| 20 21 | 
             
                      option value="#{element[:value]}" selected="" #{element[:text]} 
         | 
| @@ -6,12 +6,13 @@ | |
| 6 6 | 
             
              - placeholder = "Selecciona..."
         | 
| 7 7 | 
             
            - unless defined? chosen
         | 
| 8 8 | 
             
              - chosen = nil
         | 
| 9 | 
            -
             | 
| 9 | 
            +
            - unless defined? clazz
         | 
| 10 | 
            +
              - clazz = nil
         | 
| 10 11 |  | 
| 11 12 | 
             
            -if required
         | 
| 12 13 | 
             
              .form-group.has-success
         | 
| 13 14 | 
             
                label #{placeholder}
         | 
| 14 | 
            -
                select.chosen.form-control id="#{id}" name="#{name}" data-placeholder=("#{placeholder}") style=("display: none;") required=""
         | 
| 15 | 
            +
                select.chosen.form-control id="#{id}" class="#{clazz}" name="#{name}" data-placeholder=("#{placeholder}") style=("display: none;") required="" 
         | 
| 15 16 | 
             
                  -for element in elements
         | 
| 16 17 | 
             
                    -if chosen == element[:value]
         | 
| 17 18 | 
             
                      option value="#{element[:value]}" selected="" #{element[:text]}
         | 
| @@ -21,7 +22,7 @@ | |
| 21 22 | 
             
            -else
         | 
| 22 23 | 
             
              .form-group
         | 
| 23 24 | 
             
                label #{placeholder}
         | 
| 24 | 
            -
                select.chosen id="#{id}" name="#{name}" data-placeholder=("#{placeholder}") style=("display: none;")
         | 
| 25 | 
            +
                select.chosen id="#{id}" class="#{clazz}" name="#{name}" data-placeholder=("#{placeholder}") style=("display: none;")
         | 
| 25 26 | 
             
                  -for element in elements
         | 
| 26 27 | 
             
                    -if chosen == element[:value]
         | 
| 27 28 | 
             
                      option value="#{element[:value]}" selected="" #{element[:text]}
         | 
| @@ -11,6 +11,6 @@ | |
| 11 11 | 
             
              .fg-line
         | 
| 12 12 | 
             
                label.fg-label #{title}
         | 
| 13 13 | 
             
                - if required
         | 
| 14 | 
            -
                  textarea.form-control name="#{name}" placeholder=("#{placeholder}") rows="#{rows}" maxlength="#{length}" required="" #{value}
         | 
| 14 | 
            +
                  textarea.form-control id="#{id}" name="#{name}" placeholder=("#{placeholder}") rows="#{rows}" maxlength="#{length}" required="" #{value}
         | 
| 15 15 | 
             
                - else
         | 
| 16 | 
            -
                  textarea.form-control name="#{name}" placeholder=("#{placeholder}") rows="#{rows}" maxlength="#{length}" #{value}
         | 
| 16 | 
            +
                  textarea.form-control id="#{id}" name="#{name}" placeholder=("#{placeholder}") rows="#{rows}" maxlength="#{length}" #{value}
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: sinatra-hexacta
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.3. | 
| 4 | 
            +
              version: 0.3.10
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Marco Zanger
         | 
| @@ -67,10 +67,12 @@ files: | |
| 67 67 | 
             
            - lib/sinatra/extensions/mailbuilder.rb
         | 
| 68 68 | 
             
            - lib/sinatra/extensions/mailsender.rb
         | 
| 69 69 | 
             
            - lib/sinatra/extensions/notification.rb
         | 
| 70 | 
            +
            - lib/sinatra/extensions/processmanager.rb
         | 
| 70 71 | 
             
            - lib/sinatra/handlers/errors.rb
         | 
| 71 72 | 
             
            - lib/sinatra/handlers/init.rb
         | 
| 72 73 | 
             
            - lib/sinatra/handlers/notifications.rb
         | 
| 73 74 | 
             
            - lib/sinatra/handlers/params.rb
         | 
| 75 | 
            +
            - lib/sinatra/handlers/processes.rb
         | 
| 74 76 | 
             
            - lib/sinatra/handlers/reports.rb
         | 
| 75 77 | 
             
            - lib/sinatra/helpers/alerts.rb
         | 
| 76 78 | 
             
            - lib/sinatra/helpers/cas.rb
         | 
| @@ -80,7 +82,6 @@ files: | |
| 80 82 | 
             
            - lib/sinatra/helpers/libraries.rb
         | 
| 81 83 | 
             
            - lib/sinatra/helpers/reports.rb
         | 
| 82 84 | 
             
            - lib/sinatra/helpers/schedule.rb
         | 
| 83 | 
            -
            - lib/sinatra/helpers/subscriptions.rb
         | 
| 84 85 | 
             
            - lib/sinatra/hexacta.rb
         | 
| 85 86 | 
             
            - lib/sinatra/public/css/app.min.1.css
         | 
| 86 87 | 
             
            - lib/sinatra/public/css/app.min.2.css
         | 
| @@ -1,44 +0,0 @@ | |
| 1 | 
            -
            # encoding: utf-8
         | 
| 2 | 
            -
            module Sinatra
         | 
| 3 | 
            -
              module SubscriptionHelper
         | 
| 4 | 
            -
             | 
| 5 | 
            -
                def notify_to(user,creator,title,message,label,link=nil)
         | 
| 6 | 
            -
                  notification = Notification.find_or_create(:user_id => user.id,
         | 
| 7 | 
            -
                                              :creator_id => creator.id,
         | 
| 8 | 
            -
                                              :title => title,
         | 
| 9 | 
            -
                                              :message => message,
         | 
| 10 | 
            -
                                              :label => label,
         | 
| 11 | 
            -
                                              :link => link,
         | 
| 12 | 
            -
                                              :creation_date => Date.today)
         | 
| 13 | 
            -
                  if link.nil?
         | 
| 14 | 
            -
                    notification.link = "/notifications/#{notification.id}"
         | 
| 15 | 
            -
                    notification.save
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
                  notification
         | 
| 18 | 
            -
                end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                def notify(creator,title,message,label,link=nil)
         | 
| 21 | 
            -
                  Subscription.where(:label => label).all.each do |subscription|
         | 
| 22 | 
            -
                    notification = notify_to(subscription.user,creator,title,message,label,link)
         | 
| 23 | 
            -
                  end
         | 
| 24 | 
            -
                end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                def notify_error(creator,title,message)
         | 
| 27 | 
            -
                  Subscription.where(:label => 'error').all.each do |subscription|
         | 
| 28 | 
            -
                    creator = subscription.user if creator.nil?
         | 
| 29 | 
            -
                    notification = Notification.find(:user_id => subscription.user_id,
         | 
| 30 | 
            -
                                                     :creator_id => creator.id,
         | 
| 31 | 
            -
                                                     :title => title,
         | 
| 32 | 
            -
                                                     :message => message,
         | 
| 33 | 
            -
                                                     :label => 'error',
         | 
| 34 | 
            -
                                                     :read_date => nil)
         | 
| 35 | 
            -
                    if notification.nil?
         | 
| 36 | 
            -
                      notification = notify_to(subscription.user,creator,title,message,'error')
         | 
| 37 | 
            -
                    end
         | 
| 38 | 
            -
                  end
         | 
| 39 | 
            -
             | 
| 40 | 
            -
                end
         | 
| 41 | 
            -
              end
         | 
| 42 | 
            -
             | 
| 43 | 
            -
              helpers SubscriptionHelper
         | 
| 44 | 
            -
            end
         |