erp_app 3.1.11 → 3.1.12

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.
Files changed (50) hide show
  1. data/app/controllers/erp_app/desktop/tail/base_controller.rb +33 -0
  2. data/config/routes.rb +3 -0
  3. data/db/data_migrations/20130703181549_create_tail_desktop_application.rb +22 -0
  4. data/lib/erp_app/version.rb +1 -1
  5. data/public/javascripts/erp_app/desktop/applications/tail/module.js +36 -0
  6. data/public/javascripts/erp_app/desktop/applications/tail/tail_panel.js +145 -0
  7. data/public/javascripts/erp_app/mobile/applications/job_tracker/view/templates.js +16 -16
  8. data/public/stylesheets/erp_app/shared/compass-ext-all.css +5 -0
  9. data/spec/dummy/db/data_migrations/20130422163128_add_usd_currency.erp_base_erp_svcs.rb +12 -0
  10. data/spec/dummy/db/data_migrations/20130422163129_add_iso_codes.erp_base_erp_svcs.rb +19 -0
  11. data/spec/dummy/db/data_migrations/20130422163130_setup_compass_ae_instance.erp_base_erp_svcs.rb +21 -0
  12. data/spec/dummy/db/data_migrations/20130422163131_upgrade_compass_ae_instances_data.erp_base_erp_svcs.rb +19 -0
  13. data/spec/dummy/db/data_migrations/20130422163132_add_guid_to_instances.erp_base_erp_svcs.rb +10 -0
  14. data/spec/dummy/db/data_migrations/20130422163133_create_capability_scope_types.erp_tech_svcs.rb +15 -0
  15. data/spec/dummy/db/data_migrations/20130422163134_schedule_delete_expired_sessions_job.erp_tech_svcs.rb +16 -0
  16. data/spec/dummy/db/data_migrations/20130422163135_setup_audit_log_types.erp_tech_svcs.rb +22 -0
  17. data/spec/dummy/db/data_migrations/20130422163136_create_group_relationship_and_role_types.erp_tech_svcs.rb +20 -0
  18. data/spec/dummy/db/data_migrations/20130422163137_note_capabilities.erp_tech_svcs.rb +24 -0
  19. data/spec/dummy/db/data_migrations/20130422163138_erp_app_setup.erp_app.rb +252 -0
  20. data/spec/dummy/db/data_migrations/20130422163139_update_preferences.erp_app.rb +53 -0
  21. data/spec/dummy/db/data_migrations/20130422163140_create_desktop_app_audit_log_viewer.erp_app.rb +24 -0
  22. data/spec/dummy/db/data_migrations/20130422163141_add_file_manager_application.erp_app.rb +32 -0
  23. data/spec/dummy/db/data_migrations/20130422163142_add_default_capabilities.erp_app.rb +23 -0
  24. data/spec/dummy/db/data_migrations/20130422163143_add_new_contact_widgets.erp_app.rb +42 -0
  25. data/spec/dummy/db/data_migrations/20130422163144_add_userinfo_widget.erp_app.rb +29 -0
  26. data/spec/dummy/db/data_migrations/20130422163145_create_party_and_role_type_for_communication_events.erp_app.rb +11 -0
  27. data/spec/dummy/db/data_migrations/20130422163146_create_user_management_mobile_application.erp_app.rb +17 -0
  28. data/spec/dummy/db/data_migrations/20130422163147_create_configuration_management_desktop_application.erp_app.rb +27 -0
  29. data/spec/dummy/db/data_migrations/20130422163148_create_job_tracker_desktop_application.erp_app.rb +23 -0
  30. data/spec/dummy/db/data_migrations/20130422163149_created_tracked_jobs.erp_app.rb +15 -0
  31. data/spec/dummy/db/data_migrations/20130422163150_upgrade_remove_system_mgmt_app.erp_app.rb +16 -0
  32. data/spec/dummy/db/data_migrations/20130422163151_create_security_management_desktop_application.erp_app.rb +29 -0
  33. data/spec/dummy/db/data_migrations/20130422163152_add_job_tracker_mobile_app.erp_app.rb +17 -0
  34. data/spec/dummy/db/migrate/20130422163121_base_erp_services.erp_base_erp_svcs.rb +486 -0
  35. data/spec/dummy/db/migrate/20130422163122_add_txn_status.erp_base_erp_svcs.rb +37 -0
  36. data/spec/dummy/db/migrate/20130422163123_upgrade_compass_ae_instances.erp_base_erp_svcs.rb +34 -0
  37. data/spec/dummy/db/migrate/20130422163124_add_uuid_compass_ae_instance.erp_base_erp_svcs.rb +17 -0
  38. data/spec/dummy/db/migrate/20130422163125_add_long_lat_to_address.erp_base_erp_svcs.rb +16 -0
  39. data/spec/dummy/db/migrate/20130422163126_base_tech_services.erp_tech_svcs.rb +271 -0
  40. data/spec/dummy/db/migrate/20130422163127_create_has_attribute_tables.erp_tech_svcs.rb +39 -0
  41. data/spec/dummy/db/migrate/20130422163128_create_groups.erp_tech_svcs.rb +19 -0
  42. data/spec/dummy/db/migrate/20130422163129_upgrade_security.erp_tech_svcs.rb +54 -0
  43. data/spec/dummy/db/migrate/20130422163130_upgrade_security2.erp_tech_svcs.rb +275 -0
  44. data/spec/dummy/db/migrate/20130422163131_add_queue_to_delayed_jobs.erp_tech_svcs.rb +14 -0
  45. data/spec/dummy/db/migrate/20130422163132_base_app_framework.erp_app.rb +276 -0
  46. data/spec/dummy/db/migrate/20130422163133_add_job_tracker.erp_app.rb +20 -0
  47. data/spec/dummy/db/migrate/20130422163134_update_mobile_application.erp_app.rb +28 -0
  48. data/spec/dummy/db/schema.rb +883 -0
  49. data/spec/dummy/db/spec.sqlite3 +0 -0
  50. metadata +89 -3
@@ -0,0 +1,33 @@
1
+ module ErpApp
2
+ module Desktop
3
+ module Tail
4
+ class BaseController < ::ErpApp::Desktop::BaseController
5
+
6
+ def get_tail
7
+ contents = []
8
+
9
+ cursor = params[:cursor].to_i
10
+
11
+ log_file = File.join(Rails.root, 'log', "#{Rails.env}.log")
12
+
13
+ File.open(log_file) do |f|
14
+ if cursor == 0
15
+ f.seek(-1, IO::SEEK_END)
16
+ else
17
+ f.seek cursor
18
+ end
19
+
20
+ if !f.eof?
21
+ contents = f.readlines
22
+ cursor = f.tell
23
+ end
24
+
25
+ end
26
+
27
+ render :json => {:success => true, :tail => contents.join('<br/>'), :cursor => cursor}
28
+ end
29
+
30
+ end
31
+ end #Tail
32
+ end #Desktop
33
+ end #ErpApp
data/config/routes.rb CHANGED
@@ -73,6 +73,9 @@ ErpApp::Engine.routes.draw do
73
73
  #audit_log_view
74
74
  match '/desktop/audit_log_viewer/:action.:format' => 'desktop/audit_log_viewer/base'
75
75
 
76
+ #tail
77
+ match '/desktop/tail(/:action)' => "desktop/tail/base"
78
+
76
79
  #widget proxy
77
80
  match '/widgets/:widget_name/:widget_action/:uuid(/:id)' => "widget_proxy#index", :as => :widget
78
81
 
@@ -0,0 +1,22 @@
1
+ class CreateTailDesktopApplication
2
+ def self.up
3
+ app = DesktopApplication.create(
4
+ :description => 'Tail',
5
+ :icon => 'icon-document_pulse',
6
+ :javascript_class_name => 'Compass.ErpApp.Desktop.Applications.Tail',
7
+ :internal_identifier => 'tail',
8
+ :shortcut_id => 'tail-win'
9
+ )
10
+ pt1 = PreferenceType.iid('desktop_shortcut')
11
+ pt1.preferenced_records << app
12
+ pt1.save
13
+
14
+ pt2 = PreferenceType.iid('autoload_application')
15
+ pt2.preferenced_records << app
16
+ pt2.save
17
+ end
18
+
19
+ def self.down
20
+ DesktopApplication.destroy_all(['internal_identifier = ?','tail'])
21
+ end
22
+ end
@@ -2,7 +2,7 @@ module ErpApp
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 3
4
4
  MINOR = 1
5
- TINY = 11
5
+ TINY = 12
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].compact.join('.')
8
8
  end
@@ -0,0 +1,36 @@
1
+ Ext.define("Compass.ErpApp.Desktop.Applications.Tail",{
2
+ extend:"Ext.ux.desktop.Module",
3
+ id:'tail-win',
4
+ init : function(){
5
+ this.launcher = {
6
+ text: 'Tail',
7
+ iconCls:'icon-document_pulse',
8
+ handler: this.createWindow,
9
+ scope: this
10
+ }
11
+ },
12
+
13
+ createWindow : function(){
14
+ var desktop = this.app.getDesktop();
15
+ var win = desktop.getWindow('tail');
16
+ if(!win){
17
+ win = desktop.createWindow({
18
+ id: 'tail',
19
+ title:'Tail',
20
+ width:1000,
21
+ height:550,
22
+ iconCls: 'icon-document_pulse',
23
+ shim:false,
24
+ animCollapse:false,
25
+ constrainHeader:true,
26
+ layout: 'fit',
27
+ items:[
28
+ {
29
+ xtype:'tail-tailpanel'
30
+ }
31
+ ]
32
+ });
33
+ }
34
+ win.show();
35
+ }
36
+ });
@@ -0,0 +1,145 @@
1
+ Ext.define('Compass.ErpApp.Desktop.Applications.Tail.TailPanel',{
2
+ extend: 'Ext.Panel',
3
+ alias: 'widget.tail-tailpanel',
4
+ tailing: false,
5
+ docked:'top',
6
+ cursor: 0,
7
+ tailTask: null,
8
+ autoScroll:true,
9
+
10
+ dockedItems:[
11
+ {
12
+ xtype:'toolbar',
13
+ items:[
14
+ {
15
+ text:'Start Tailing',
16
+ itemId: 'start',
17
+ handler:function(btn){
18
+ var startBtn = btn,
19
+ endBtn = btn.up('panel').down('#stop'),
20
+ panel = btn.up('panel');
21
+
22
+ Ext.createWidget('window', {
23
+ title:'Start Tailing',
24
+ buttonAlign:'center',
25
+ items:[
26
+ {
27
+ xtype:'form',
28
+ bodyPadding:'5px',
29
+ defaults:{
30
+ xtype:'numberfield'
31
+ },
32
+ items:[
33
+ {
34
+ fieldLabel:'Interval In Seconds',
35
+ value: '5',
36
+ name:'seconds'
37
+ }
38
+ ]
39
+ }
40
+ ],
41
+ buttons:[
42
+ {
43
+ text:'Start',
44
+ handler:function(btn){
45
+ var window = btn.up('window'),
46
+ values = btn.up('window').down('form').getValues();
47
+
48
+ panel.startTailing(values);
49
+ startBtn.disable();
50
+ endBtn.enable();
51
+ window.close();
52
+ }
53
+ },
54
+ {
55
+ text:'Cancel',
56
+ handler:function(btn){
57
+ btn.up('window').close();
58
+ }
59
+ }
60
+ ]
61
+ }).show();
62
+ }
63
+ },
64
+ {
65
+ text: 'Stop Tailing',
66
+ itemId: 'stop',
67
+ disabled: true,
68
+ handler: function(btn){
69
+ var startBtn = btn.up('panel').down('#start'),
70
+ panel = btn.up('panel');
71
+
72
+ panel.stopTailing();
73
+ btn.disable();
74
+ startBtn.enable();
75
+ }
76
+ },
77
+ {
78
+ text: 'Clear',
79
+ itemId: 'clear',
80
+ handler: function(btn){
81
+ var panel = btn.up('panel');
82
+
83
+ panel.update('');
84
+ }
85
+ }
86
+ ]
87
+ }
88
+ ],
89
+ html: '',
90
+ bodyStyle: {
91
+ backgroundColor: 'black',
92
+ color: 'yellow'
93
+ },
94
+
95
+ startTailing: function(values){
96
+ this.tailing = true;
97
+ this.cursor = 0;
98
+ if(this.tailTask){
99
+ this.tailTask.start();
100
+ }
101
+ else{
102
+ var runner = new Ext.util.TaskRunner();
103
+ this.tailTask = runner.newTask({
104
+ run: this.tail,
105
+ interval: (parseInt(values['seconds']) * 1000),
106
+ scope: this
107
+ });
108
+ this.tailTask.start();
109
+ }
110
+ },
111
+
112
+ stopTailing: function(){
113
+ this.tailTask.stop();
114
+ this.tailing = false;
115
+ },
116
+
117
+ tail: function(){
118
+ var me = this;
119
+
120
+ if(me.tailing){
121
+ Ext.Ajax.request({
122
+ url: '/erp_app/desktop/tail/get_tail',
123
+ params:{
124
+ cursor: me.cursor
125
+ },
126
+ success:function(response){
127
+ responseObj = Ext.JSON.decode(response.responseText);
128
+ if(responseObj.success){
129
+ me.cursor = responseObj.cursor;
130
+ me.update(me.body.dom.innerHTML + responseObj.tail);
131
+
132
+ var d = me.body.dom;
133
+ d.scrollTop = d.scrollHeight - d.offsetHeight;
134
+ }
135
+ },
136
+ failure:function(){
137
+
138
+ }
139
+ });
140
+ }
141
+ else{
142
+ this.tailTask.stop();
143
+ }
144
+ }
145
+ });
@@ -1,22 +1,22 @@
1
1
  Ext.ns('Compass.ErpApp.Mobile.JobTracker.Templates');
2
2
  Compass.ErpApp.Mobile.JobTracker.Templates.jobDetails = new Ext.XTemplate(
3
3
  '<div class="profile">',
4
- '<p>',
5
- '<span class="label">Job Name</span>',
6
- '<span class="value">{job_name}</span>',
7
- '</p>',
8
- '<p>',
9
- '<span class="label">Last Run At</span>',
10
- '<span class="value">{last_run_at:date("m/d/Y g:i:s")}</span>',
11
- '</p>',
12
- '<p>',
13
- '<span class="label">Next Run At</span>',
14
- '<span class="value">{next_run_at:date("m/d/Y g:i:s")}</span>',
15
- '</p>',
16
- '<p>',
17
- '<span class="label">Runtime</span>',
18
- '<span class="value">{run_time}</span>',
19
- '</p>',
4
+ '<p>',
5
+ '<span class="label">Job Name</span>',
6
+ '<span class="value">{job_name}</span>',
7
+ '</p>',
8
+ '<p>',
9
+ '<span class="label">Last Run At</span>',
10
+ '<span class="value">{last_run_at:date("m/d/Y g:i:s")}</span>',
11
+ '</p>',
12
+ '<p>',
13
+ '<span class="label">Next Run At</span>',
14
+ '<span class="value">{next_run_at:date("m/d/Y g:i:s")}</span>',
15
+ '</p>',
16
+ '<p>',
17
+ '<span class="label">Runtime</span>',
18
+ '<span class="value">{run_time}</span>',
19
+ '</p>',
20
20
  '</div>',
21
21
  '<br/>',
22
22
  '<div id="resetPasswdBtnHolder"></div>');
@@ -31,6 +31,11 @@
31
31
  padding : 5px;
32
32
  }
33
33
 
34
+ .icon-document_pulse {
35
+ background-image: url(/images/icons/document_pulse/document_pulse_16x16.png) !important;
36
+ filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/icons/document_pulse/document_pulse_16x16.png', sizingMethod='crop');
37
+ }
38
+
34
39
  .icon-tasks {
35
40
  background-image: url(/images/icons/calendar/calendar_16x16.png) !important;
36
41
  filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/icons/calendar/calendar_16x16.png', sizingMethod='crop');
@@ -0,0 +1,12 @@
1
+ # This migration comes from erp_base_erp_svcs (originally 20110525001935)
2
+ class AddUsdCurrency
3
+
4
+ def self.up
5
+ Currency.create(:name => 'US Dollar', :internal_identifier => 'USD', :major_unit_symbol => "$")
6
+ end
7
+
8
+ def self.down
9
+ Currency.usd.destroy
10
+ end
11
+
12
+ end
@@ -0,0 +1,19 @@
1
+ # This migration comes from erp_base_erp_svcs (originally 20110609150135)
2
+ require 'yaml'
3
+
4
+ class AddIsoCodes
5
+
6
+ def self.up
7
+ #find the erp_base_erp_svcs engine
8
+ engine_path = Rails::Application::Railties.engines.find{|item| item.engine_name == 'erp_base_erp_svcs'}.config.root.to_s
9
+
10
+ GeoCountry.load_from_file(File.join(engine_path,'db/data_sets/geo_countries.yml'))
11
+ GeoZone.load_from_file(File.join(engine_path,'db/data_sets/geo_zones.yml'))
12
+ end
13
+
14
+ def self.down
15
+ GeoCountry.delete_all
16
+ GeoZone.delete_all
17
+ end
18
+
19
+ end
@@ -0,0 +1,21 @@
1
+ # This migration comes from erp_base_erp_svcs (originally 20110913145838)
2
+ class SetupCompassAeInstance
3
+
4
+ def self.up
5
+ c = CompassAeInstance.new
6
+ c.description = 'Base CompassAE Instance'
7
+ c.internal_identifier = 'base'
8
+ c.version = '3.1'
9
+ c.save
10
+
11
+ rt = RoleType.new
12
+ rt.description = 'CompassAE Instance Owner'
13
+ rt.internal_identifier = 'compass_ae_instance_owner'
14
+ rt.save
15
+ end
16
+
17
+ def self.down
18
+ #remove data here
19
+ end
20
+
21
+ end
@@ -0,0 +1,19 @@
1
+ # This migration comes from erp_base_erp_svcs (originally 20130211555555)
2
+ class UpgradeCompassAeInstancesData < ActiveRecord::Migration
3
+ def self.up
4
+ if CompassAeInstance.find_by_internal_identifier('base').nil?
5
+ c = CompassAeInstance.order('id ASC').first
6
+ c.description = 'Base CompassAE Instance'
7
+ c.internal_identifier = 'base'
8
+ c.schema = 'public'
9
+ c.save
10
+ end
11
+
12
+ if RoleType.find_by_internal_identifier('compass_ae_instance_owner').nil?
13
+ rt = RoleType.new
14
+ rt.description = 'CompassAE Instance Owner'
15
+ rt.internal_identifier = 'compass_ae_instance_owner'
16
+ rt.save
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,10 @@
1
+ # This migration comes from erp_base_erp_svcs (originally 20130404201756)
2
+ class AddGuidToInstances
3
+
4
+ def self.up
5
+ CompassAeInstance.all.each do |instance|
6
+ instance.setup_guid
7
+ end
8
+ end
9
+
10
+ end
@@ -0,0 +1,15 @@
1
+ # This migration comes from erp_tech_svcs (originally 20110109173616)
2
+ class CreateCapabilityScopeTypes
3
+
4
+ def self.up
5
+ CapabilityType.create(:internal_identifier => 'download', :description => 'Download') if CapabilityType.where("internal_identifier = 'download'").first.nil?
6
+
7
+ ScopeType.create(:description => 'Instance', :internal_identifier => 'instance') if ScopeType.where("internal_identifier = 'instance'").first.nil?
8
+ ScopeType.create(:description => 'Class', :internal_identifier => 'class') if ScopeType.where("internal_identifier = 'class'").first.nil?
9
+ ScopeType.create(:description => 'Query', :internal_identifier => 'query') if ScopeType.where("internal_identifier = 'query'").first.nil?
10
+ end
11
+
12
+ def self.down
13
+ end
14
+
15
+ end
@@ -0,0 +1,16 @@
1
+ # This migration comes from erp_tech_svcs (originally 20110802200222)
2
+ class ScheduleDeleteExpiredSessionsJob
3
+
4
+ def self.up
5
+ #insert data here
6
+ date = Date.tomorrow
7
+ start_time = DateTime.civil(date.year, date.month, date.day, 2, 0, 1, -(5.0/24.0))
8
+
9
+ ErpTechSvcs::Sessions::DeleteExpiredSessionsJob.schedule_job(start_time)
10
+ end
11
+
12
+ def self.down
13
+ #remove data here
14
+ end
15
+
16
+ end
@@ -0,0 +1,22 @@
1
+ # This migration comes from erp_tech_svcs (originally 20111111144706)
2
+ class SetupAuditLogTypes
3
+
4
+ def self.up
5
+ application_alt = AuditLogType.create(:description => 'Application', :internal_identifier => 'application')
6
+
7
+ [
8
+ {:description => 'Custom Message', :internal_identifier => 'custom_message'},
9
+ {:description => 'Successful Logout', :internal_identifier => 'successful_logout'},
10
+ {:description => 'Successful Login', :internal_identifier => 'successful_login'},
11
+ {:description => 'Accessed Area', :internal_identifier => 'accessed_area'},
12
+ {:description => 'Session Timeout', :internal_identifier => 'session_timeout'}
13
+ ].each do |alt_hash|
14
+ AuditLogType.create(alt_hash).move_to_child_of(application_alt)
15
+ end
16
+ end
17
+
18
+ def self.down
19
+ AuditLogType.destroy_all
20
+ end
21
+
22
+ end
@@ -0,0 +1,20 @@
1
+ # This migration comes from erp_tech_svcs (originally 20121116155018)
2
+ class CreateGroupRelationshipAndRoleTypes
3
+
4
+ def self.up
5
+ #insert data here
6
+ to_role = RoleType.create(:description => 'Security Group', :internal_identifier => 'group')
7
+ from_role = RoleType.create(:description => 'Security Group Member', :internal_identifier => 'group_member')
8
+ RelationshipType.create(:description => 'Security Group Membership',
9
+ :name => 'Group Membership',
10
+ :internal_identifier => 'group_membership',
11
+ :valid_from_role => from_role,
12
+ :valid_to_role => to_role
13
+ )
14
+ end
15
+
16
+ def self.down
17
+ #remove data here
18
+ end
19
+
20
+ end
@@ -0,0 +1,24 @@
1
+ # This migration comes from erp_tech_svcs (originally 20121130212146)
2
+ class NoteCapabilities
3
+
4
+ def self.up
5
+ #insert data here
6
+ admin = SecurityRole.find_or_create_by_description_and_internal_identifier(:description => 'Admin', :internal_identifier => 'admin')
7
+ employee = SecurityRole.find_or_create_by_description_and_internal_identifier(:description => 'Employee', :internal_identifier => 'employee')
8
+
9
+ admin.add_capability('create', 'Note')
10
+ admin.add_capability('delete', 'Note')
11
+ admin.add_capability('edit', 'Note')
12
+ admin.add_capability('view', 'Note')
13
+
14
+ employee.add_capability('create', 'Note')
15
+ employee.add_capability('delete', 'Note')
16
+ employee.add_capability('edit', 'Note')
17
+ employee.add_capability('view', 'Note')
18
+ end
19
+
20
+ def self.down
21
+ #remove data here
22
+ end
23
+
24
+ end