Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Создаем/изменяем файл, содержащий что-либо на диске.
- ```ruby
- ../lib/gexcore/dashboards/service.rb
- module Gexcore::Dashboards
- class Service < Gexcore::BaseService
- def self.load_dashboard(row)
- f = filename_dashboard(row.cluster, row.name)
- data =YAML.load_file(f)
- #
- data
- end
- ###
- def self.base_dir_dashboards
- File.join(Rails.root, "data/dashboards")
- end
- def self.filename_dashboard(cluster, name)
- File.join(base_dir_dashboards, "#{cluster.id}", "#{name}.yml")
- end
- def self.filename(dashboard)
- File.join(base_dir_dashboards, "#{dashboard.cluster_id}", "#{dashboard.name}.yml")
- end
- end
- end
- ```
- ```ruby
- ../app/models/dashboard.rb
- class Dashboard < ActiveRecord::Base
- belongs_to :cluster
- ...
- ### content
- def fullpath
- Gexcore::Dashboards::Service.filename(self)
- end
- def dir_path
- File.join(Rails.root, "data/dashboards", "#{self.cluster_id}")
- end
- def content
- filename = fullpath
- return nil if filename.nil?
- return '' if !File.exists? filename
- File.read(filename)
- end
- def content=(v)
- # create directory and file if not exist
- FileUtils.mkdir_p(dir_path) unless File.directory?(dir_path)
- #work
- File.open(fullpath, "w+") do |f|
- f.write(v)
- end
- end
- end
- ```
- ```ruby
- ../app/controllers/admin/dashboards_controller.rb
- class Admin::DashboardsController < Admin::MyAdminBaseController
- ...
- private
- def dashboards_params
- params.require(:dashboard).permit(:name, :enabled, :title, :cluster_id, :pos, :content)
- end
- end
- ```
- ```ruby
- ../app/views/admin/dashboards/_form.html.haml
- #mainform
- = horizontal_simple_form_for([:admin, @item], :html => { class: 'form-horizontalc', :multipart => true }) do |f|
- = render 'shared/form_errors', f: f
- = f.input :title
- = f.input :name
- = f.input :cluster_id, :value => @cluster_id, :readonly => true
- = f.input :pos, as: :integer
- = f.input :enabled, as: :boolean
- = f.input :content, as: :text, label: "Content", :rows => 16, :cols => 80, :data=>{}, input_html: {value: @item.content, class: 'form_input_content' }
- %div{id: "content", class: '', data: {}}(style="width:100%; height: 600px; border: 2px #333333 solid;")
- %br
- = f.button :submit, :class => "btn btn-primary"
- = render 'js_ace'
- :javascript
- function init_editor(id){
- //var editor = ace.edit("content");
- var editor = ace.edit(id);
- editor.setTheme("ace/theme/chrome");
- editor.getSession().setMode("ace/mode/haml");
- editor.getSession().setNewLineMode("windows");
- editor.getSession().setTabSize(2);
- return editor;
- }
- // init editors
- var editor = init_editor("content");
- $(document).ready(function() {
- // set content from input to editor
- $( "textarea.form_input_content" ).each(function( index ) {
- var textarea = $(this);
- textarea.hide();
- editor.getSession().setValue(textarea.val());
- });
- // set content from editor back to input
- $('#mainform form').submit(function(){
- $( "textarea.form_input_content" ).each(function( index ) {
- var textarea = $(this);
- textarea.val(editor.getSession().getValue());
- });
- });
- });
- ```
- ```ruby
- ../app/views/admin/dashboards/_js_ace.html.haml
- <script src="/js/ace/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script>
- ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement