Motor heb412_gen para manejar nube de documentos y plantillas (hojas de cálculo .ods y documentos .odt)
Este es el motor principal de la aplicación (https://gitlab.com/pasosdeJesus/heb412)[Heb412] que maneja una nube de documentos y plantillas ods y odt
Aplican practicamente las mismas instrucciones de otros motores genérico basados en msip, ver por ejemplo: https://gitlab.com/pasosdeJesus/sal7711_gen
Las funcionalidades que provee al momento de este escrito son:
- Nube de documentos
- Exportación de información
- Exportación de un sólo registro a una plantilla .ods
- Exportación de un sólo registro a una plantilla .odt
- Exportación de un conjunto de registros a una plantilla .ods (estilo listado)
- Importación de información
- Importación de un conjunto de registros desde un listado .ods
La exportación e importación requieren la previa configuración de la nube.
1. Configure gemas, javascript y base de datos
Este motor opera sobre msip y mr519_gen
En su Gemfile asegure tener:
gem 'rspreadsheet'
gem 'redcarpet'
gem 'msip',
git: 'https://gitlab.com/pasosdeJesus/heb412_gen.git'
gem 'mr519_gen',
git: 'https://gitlab.com/pasosdeJesus/mr519_gen.git'
gem 'heb412_gen',
git: 'https://gitlab.com/pasosdeJesus/heb412_gen.git'
Incluya el motor javascript en su app/assets/javascript/application.js
por ejemplo después de //= require msip/motor
agregue:
//= require heb412_gen/motor
y despúes de msip_prepara_eventos_comunes...
agregue:
heb412_gen_prepara_eventos_comunes(root);
Ejecute migraciones que agregarán las tablas necesarias
bin/rails db:migrate
2. Configure su aplicación para proveer Nube
2.1 Directorio
Cree un directorio que será la raíz del sistema de archivos y que debe poder ser escrito por el usuario que ejecute la aplicación, e.g
mkdir public/heb412/
2.2 Configurar directorio en aplicación
Configure esa ruta en su aplicación en config/application.rb
con
config.x.heb412_ruta = Pathname(
ENV.fetch('HEB412_RUTA', Rails.root.join('public', 'heb412').to_s)
)
y en su archivo .env
algo como:
if (test "$HEB412_RUTA" = "") then {
export HEB412_RUTA=${DIRAP}/public/heb412
} fi;
2.3 Menú
Agregue un menú o enlaces a los urls de la nube por ejemplo en
</code>
<%= menu_item "Nube", heb412_gen.sisini_path %>
### 2.4 Configurar rutas
En ```config/routes.rb```
mount Heb412Gen::Engine, at: '/', as: 'heb412_gen'
## 3. Configure su aplicación para utilizar llenadores de plantillas
Hay 3 tipos de llenadores de plantillas:
- Para llenar una plantilla ODS con datos de un listado (vista index),
que se supone puede demorarse en generar una conjunto grande de datos
- Para llenar una plantilla ODS con datos de un resumen (vista show),
que suponemos se genera r
CAMPOS_PLANTILLAS_PROPIAS = {
'Actividad' => {
campos: [
'id', 'fecha', 'responsable', 'nombre',
'areas', 'subareas', 'convenios_financieros',
'actividades_de_convenio', 'objetivo', 'poblacion'
],
controlador: 'Cor1440Gen::ActividadesController',
ruta: '/actividades'
}
}
def campos_plantillas
Heb412Gen::Ability::CAMPOS_PLANTILLAS_PROPIAS.
clone.merge(CAMPOS_PLANTILLAS_PROPIAS)
end
Vea un ejemplo m
can :manage, Heb412Gen::Doc
can :manage, Heb412Gen::Plantillahcm
can :manage, Heb412Gen::Plantillahcr
can :manage, Heb412Gen::Plantilladoc
y a usuarios que necesiten generarlas por lo menos de lectura
can :read, Heb412Gen::Doc
can :manage, Heb412Gen::Plantillahcm
can :manage, Heb412Gen::Plantillahcr
can :manage, Heb412Gen::Plantilladoc
### 3.3 Menú para gestionar plantillas
Cree una entrada en el men
<% if can? :manage, Heb412Gen::Plantillahcm %> <%= opcion_menu "Definir plantillas para listados en hojas de calculo", heb412_gen.plantillashcm_path, desplegable: true %> <% end %>
### 3.4 Configure una vista `index` que llenará un listado .ods
Ser
... class ActoressocialesController < Heb412Gen::ModelosController ... def vistas_manejadas ['Actorsocial'] end ...
Despu
<%= simple_form_for :filtro, { remote: true, url: sivel2_gen.envia_casos_filtro_path, method: "get" } do |f| %> ...
</div>
<div class="col-sm-3">
</div>
</div> <!-- row -->
<% end %>
Este m
def presenta(atr)
case atr.to_s
when 'nacionalde'
nacionalde ? nacional.nombre : ''
when 'tdoc'
self.tdocumento.sigla if self.tdocumento
else
presenta_gen(atr)
end
end
Y la funci