From ef68436ac04da078ffdcacd7e1f785473a303d45 Mon Sep 17 00:00:00 2001 From: Giulio Cesare Solaroli Date: Sun, 02 Oct 2011 23:56:18 +0000 Subject: First version of the newly restructured repository --- (limited to 'frontend/beta/js/Clipperz/PM/Components/Import/GenericImportComponent.js') diff --git a/frontend/beta/js/Clipperz/PM/Components/Import/GenericImportComponent.js b/frontend/beta/js/Clipperz/PM/Components/Import/GenericImportComponent.js new file mode 100644 index 0000000..4f6b1e4 --- a/dev/null +++ b/frontend/beta/js/Clipperz/PM/Components/Import/GenericImportComponent.js @@ -0,0 +1,523 @@ +/* + +Copyright 2008-2011 Clipperz Srl + +This file is part of Clipperz's Javascript Crypto Library. +Javascript Crypto Library provides web developers with an extensive +and efficient set of cryptographic functions. The library aims to +obtain maximum execution speed while preserving modularity and +reusability. +For further information about its features and functionalities please +refer to http://www.clipperz.com + +* Javascript Crypto Library is free software: you can redistribute + it and/or modify it under the terms of the GNU Affero General Public + License as published by the Free Software Foundation, either version + 3 of the License, or (at your option) any later version. + +* Javascript Crypto Library is distributed in the hope that it will + be useful, but WITHOUT ANY WARRANTY; without even the implied + warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + See the GNU Affero General Public License for more details. + +* You should have received a copy of the GNU Affero General Public + License along with Javascript Crypto Library. If not, see + . + +*/ + +if (typeof(Clipperz) == 'undefined') { Clipperz = {}; } +if (typeof(Clipperz.PM) == 'undefined') { Clipperz.PM = {}; } +if (typeof(Clipperz.PM.Components) == 'undefined') { Clipperz.PM.Components = {}; } +if (typeof(Clipperz.PM.Components.Import) == 'undefined') { Clipperz.PM.Components.Import = {}; } + +//############################################################################# + +Clipperz.PM.Components.Import.GenericImportComponent = function(anElement, args) { + args = args || {}; + + this._steps = this._steps || ['EDIT', 'PREVIEW', 'IMPORT']; + + Clipperz.PM.Components.Import.GenericImportComponent.superclass.constructor.call(this, anElement, args); + + this._user = args['user']; + + this._currentStep = 0; + this._currentStatus = 'IDLE'; // 'PROCESSING' + + this._parsedValues = null; + this._processedValues = null; + + this._backButton = null; + this._nextButton = null; + + Clipperz.NotificationCenter.register(null, 'importProcessorProgressUpdate', this, 'updateProgressDialogStatus'); + + return this; +} + +//============================================================================= + +YAHOO.extendX(Clipperz.PM.Components.Import.GenericImportComponent, Clipperz.PM.Components.BaseComponent, { + + 'toString': function() { + return "Clipperz.PM.Components.Import.GenericImportComponent component"; + }, + + //------------------------------------------------------------------------- + + 'user': function() { + return this._user; + }, + + //------------------------------------------------------------------------- + + 'textAreaConfig': function() { + return {tag:'textarea', name:this.getId('importTextArea'), cls:'importTextArea', id:this.getId('importTextArea'), cols:60, rows:15, html:""}; + }, + + 'textAreaContent': function() { + return this.getDom('importTextArea').value + }, + + //------------------------------------------------------------------------- + + 'steps': function() { + return this._steps; + }, + + 'currentStep': function() { + return this._currentStep; + }, + + 'setCurrentStep': function(aValue) { + this._currentStep = aValue; + this.updateSteps(); + }, + + //------------------------------------------------------------------------- + + 'currentStatus': function() { + return this._currentStatus; + }, + + 'startProcessing': function() { + this._currentStatus = 'PROCESSING'; + this.updateSteps(); + }, + + 'processingDone': function() { + this._currentStatus = 'IDLE'; + this.setCurrentStep(this.currentStep() + 1); + }, + + 'processingAborted': function() { + this._currentStatus = 'IDLE'; + this.updateSteps(); + }, + + //------------------------------------------------------------------------- + + 'stepsConfig': function() { + var result; + var i,c; + + result = []; + c = this.steps().length; + for (i=0; i"}]} + ]}); + } + } + + result = [{tag:'div', cls:'importWizardStepsBox', children:[ + {tag:'div', cls:'importWizardStepsInnerBox', children:[ + {tag:'table', cls:'importWizardSteps', children:[ + {tag:'tbody', children:[ + {tag:'tr', children:result} + ]} + ]} + ]}, + {tag:'div', cls:'importWizardStepsBoxFooter'} + ]}]; + + return result; + }, + + 'updateSteps': function() { + this.getElement('importSteps').update(""); + Clipperz.YUI.DomHelper.append(this.getDom('importSteps'), {tag:'div', children:this.stepsConfig()}); + }, + + //------------------------------------------------------------------------- + + 'backAction': function() { +//MochiKit.Logging.logDebug(">>> backAction"); + if (this.currentStep() == 0) { + Clipperz.NotificationCenter.notify(this, 'importCancelled'); + } else { + this.getElement('step_' + this.currentStep()).hide(); + this.setCurrentStep(this.currentStep() - 1); + this.getElement('step_' + this.currentStep()).show(); + + this.nextButton().enable(); + } +//MochiKit.Logging.logDebug("<<< backAction"); + }, + + //------------------------------------------------------------------------- + + 'backButton': function() { + return this._backButton; + }, + + 'setBackButton': function(aValue) { + this._backButton = aValue; + }, + + 'nextButton': function() { + return this._nextButton; + }, + + 'setNextButton': function(aValue) { + this._nextButton = aValue; + }, + + //------------------------------------------------------------------------- + + 'render': function() { +//MochiKit.Logging.logDebug(">>> Import.GenericImportComponent.render"); + this.domHelper().append(this.element(), {tag:'div', children:[ + {tag:'h2', html:this.toString()} + ]}); +//MochiKit.Logging.logDebug("<<< Import.GenericImportComponent.render"); + }, + + //------------------------------------------------------------------------- + + 'previewValues': function() { + Clipperz.PM.Components.MessageBox.showProgressPanel( + MochiKit.Base.method(this, 'deferredPreviewValues'), + MochiKit.Base.method(this, 'handlePreviewError'), + this.getDom('nextActionButton') + ); + }, + + 'deferredPreviewValues': function() { + throw Clipperz.Base.exception.AbstractMethod; + }, + + 'handlePreviewError': function(anError) { +console.log("anError", anError); + MochiKit.Logging.logError("An error occurred while previewing the data: " + anError); + alert("An error occurred while previewing the data"); + Clipperz.PM.Components.MessageBox().hide(); + }, + + //------------------------------------------------------------------------- + + 'previewRecordValues': function(someProcessedRecords) { +//MochiKit.Logging.logDebug(">>> previewRecordValues"); + this.getElement('previewDiv').update(""); +//MochiKit.Logging.logDebug("--- previewRecordValues - 1"); + this.domHelper().append(this.getElement('previewDiv'), {tag:'div', cls:'importPreviewDiv', children:[{tag:'table', id:'importPreview', cellspacing:'0', children:[ + {tag:'tbody', children: + MochiKit.Base.map(MochiKit.Base.bind(function(aRecord) { + var result; +//MochiKit.Logging.logDebug("--- previewRecordValues - 1.1"); +//console.log("fields", aRecord.currentVersion().fields()); + result = {tag:'tr', children:[{tag:'td', children:[ + {tag:'table', cls:'importPreview_record', children:[ + {tag:'tbody', children:[ + {tag:'tr', children:[ + {tag:'td', rowspan:'2', valign:'top', children:[ + {tag:'input', type:'checkbox', id:this.getId(aRecord.reference()), value:"aRecord.reference()", checked:true} + ]}, + {tag:'td', colspan:'2', children:[ + {tag:'span', cls:'importPreview_title', html:aRecord.label()} + ]} + ]}, + {tag:'tr', children:[ + {tag:'td', valign:'top', children:[ + {tag:'span', cls:'importPreview_notes', html:(MochiKit.Base.isNotEmpty(aRecord.notes()) ? aRecord.notes().replace(/\n/g, '
') : ' ')} + ]}, + {tag:'td', valign:'top', cls:'importPreview_fieds', children:[ + {tag:'table', cls:'importPreview_fields', children:[ + {tag:'tbody', children:MochiKit.Base.map(function(aField) { + var result; +//MochiKit.Logging.logDebug("--- previewRecordValues - 1.1.1"); + result = {tag:'tr', children:[ + {tag:'td', valign:'top', children:[ + {tag:'span', cls:'importPreview_fields_label', html:aField.label()} + ]}, + {tag:'td', valign:'top', children:[ + {tag:'span', cls:'importPreview_fields_value', html:aField.value()} + ]} + ]}; +//MochiKit.Logging.logDebug("--- previewRecordValues - 1.1.2"); + return result; + }, MochiKit.Base.values(aRecord.currentVersion().fields()))} + ]} + ]} + ]} + ]} + ]} + ]}]}; +//MochiKit.Logging.logDebug("--- previewRecordValues - 1.2"); + return result; + }, this), someProcessedRecords) + } + ]}]}); +//MochiKit.Logging.logDebug("--- previewRecordValues - 2"); + + MochiKit.Base.map(MochiKit.Base.bind(function(aRecord) { + this.getElement(aRecord.reference()).dom.value = aRecord.reference(); + }, this), someProcessedRecords); + + Clipperz.Style.applyZebraStylesToTable('importPreview'); +//MochiKit.Logging.logDebug("<<< previewRecordValues"); + }, + + //------------------------------------------------------------------------- + + 'updateProgressDialogStatus': function(anEvent) { + Clipperz.PM.Components.MessageBox().update({step:anEvent.parameters().progress}); + }, + + //------------------------------------------------------------------------- + + 'parsedValues': function() { + return this._parsedValues; + }, + + 'setParsedValues': function(aValue) { + this._parsedValues = aValue; + + return this._parsedValues; + }, + + //------------------------------------------------------------------------- + + 'processedValues': function() { + return this._processedValues; + }, + + 'setProcessedValues': function(aValue) { + this._processedValues = aValue; + return this._processedValues; + }, + + //------------------------------------------------------------------------- + + 'importValues': function() { + var deferredResult; + + deferredResult = new MochiKit.Async.Deferred(); + + deferredResult.addCallback(MochiKit.Base.bind(function() { + this.nextButton().disable(); + this.startProcessing(); + },this)); + deferredResult.addCallback(MochiKit.Base.method(this, 'importProcessedValues')); + deferredResult.addCallback(MochiKit.Base.method(this, 'processingDone')); + deferredResult.addErrback (MochiKit.Base.method(this, 'processingAborted')); + deferredResult.callback(); + + return deferredResult; + }, + + //------------------------------------------------------------------------- + + 'importProcessedValues': function() { + var deferredResult; + var processedValues; + var selectedRecords; + var i,c; + +//MochiKit.Logging.logDebug(">>> GenericImportComponent.importProcessedValues"); + processedValues = this.processedValues(); + selectedRecords = []; + + c = processedValues.length; + for (i=0; i>> inner deferred"); + innerDeferredResult = new MochiKit.Async.Deferred(); + +//innerDeferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("GenericImportComponent - 3.1: " + res); return res;}); + innerDeferredResult.addCallback(MochiKit.Base.method(this, 'importProcessedValues_core', someRecords)); +//innerDeferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("GenericImportComponent - 3.2: " + res); return res;}); + innerDeferredResult.addErrback(MochiKit.Base.method(this, 'handleProcessError')); +//innerDeferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("GenericImportComponent - 3.3: " + res); return res;}); + innerDeferredResult.callback(someRecords); +//MochiKit.Logging.logDebug("<<< inner deferred"); + + return innerDeferredResult; + }, this), selectedRecords); +//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("GenericImportComponent - 4: " + res); return res;}); + + deferredResult.addCallback(MochiKit.Base.method(Clipperz.PM.Components.MessageBox(), 'hide'), 'mainDiv'); + + deferredResult.addErrback(MochiKit.Base.bind(function() { + this.nextButton().enable(); + this.setCurrentStep(this.currentStep() -1); + }, this)); +//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("GenericImportComponent - 5: " + res); return res;}); + + deferredResult.callback(selectedRecords); +//MochiKit.Logging.logDebug("<<< GenericImportComponent.importProcessedValues"); + + return deferredResult; + }, + + //------------------------------------------------------------------------- + + 'importProcessedValues_core': function(someRecords) { + var deferredResult; + + deferredResult = new MochiKit.Async.Deferred(); + + deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', 'processingImportData'); + deferredResult.addCallback(Clipperz.NotificationCenter.deferredNotification, this, 'updatedProgressState', {steps:(someRecords.length + 6 + 1)}); + deferredResult.addCallback(MochiKit.Async.wait, 0.5); +//deferredResult.addBoth(function(res) {MochiKit.Logging.logDebug("importProcessedValues_core - 3: " + res); return res;}); + deferredResult.addCallback(MochiKit.Base.bind(function(someRecords) { + var i,c; + + c = someRecords.length; + for (i=0; i