123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- var FEATURE_SETUP_FAILED = -2;
- var FEATURE_SETUP_ERROR_STATE = -1;
- var FEATURE_SETUP_WITHOUT_DIALOG = 0;
- var FEATURE_SETUP_REQUIRES_DIALOG = 1;
- var FEATURE_SETUP_REQUIRES_QOS = 2;
- function CFeatureManager()
- {
- this.m_oFeatureRegistry = new CFeatureRegistry();
- this.m_oFormMgr = goApplicationManager.getFormManager();
- this.m_oFeatureObjFactory = new CFeatureObjectFactory();
- this.m_aFeatureLaunchStack = new Array();
- };
- CFeatureManager.prototype.getFeatureRegistry = function ()
- {
- return this.m_oFeatureRegistry;
- };
- CFeatureManager.prototype.getFeatureObjectFactory = function ()
- {
- return this.m_oFeatureObjFactory;
- };
- CFeatureManager.prototype.getFeatureLaunchStack = function ()
- {
- return this.m_aFeatureLaunchStack;
- };
- CFeatureManager.prototype.getAllFeatureDetailsInStack = function (iFeatureIdx)
- {
- var aFeatureLaunchStack = this.getFeatureLaunchStack();
- if (typeof iFeatureIdx != "number")
- {
- iFeatureIdx = aFeatureLaunchStack.length - 1;
- }
- var aFeatureDetails = new Array();
- if (this.m_aFeatureLaunchStack.length > 0)
- {
- var sCurrentFeatureName = aFeatureLaunchStack[iFeatureIdx];
- var idxFeature;
- var oFeatureObject = this.getFeatureRegistry().getRegisteredFeature(sCurrentFeatureName);
- for (idxFeature in oFeatureObject)
- {
- var idxFeatureDetails = aFeatureDetails.length;
- aFeatureDetails[idxFeatureDetails] = new Array();
- aFeatureDetails[idxFeatureDetails][0] = typeof oFeatureObject[idxFeature];
- aFeatureDetails[idxFeatureDetails][1] = idxFeature.toString();
- if (typeof oFeatureObject[idxFeature] == "function")
- {
- aFeatureDetails[idxFeatureDetails][2] = "[Function code]";
- }
- else
- {
- aFeatureDetails[idxFeatureDetails][2] = oFeatureObject[idxFeature];
- }
- }
- }
- return aFeatureDetails;
- };
- CFeatureManager.prototype.launchFeature = function (sFeatureName, aFeatureParams)
- {
- if (this.getFeatureRegistry().isRegistered(sFeatureName) === true && this.getFeatureRegistry().isFeatureLaunchable(sFeatureName) === true)
- {
- var iFeatureState = this.setupFeature(sFeatureName, aFeatureParams);
-
-
-
-
-
-
- if (iFeatureState !== FEATURE_SETUP_REQUIRES_QOS)
- {
- if (iFeatureState == FEATURE_SETUP_WITHOUT_DIALOG || iFeatureState == FEATURE_SETUP_REQUIRES_DIALOG)
- {
- this.m_aFeatureLaunchStack[this.m_aFeatureLaunchStack.length] = sFeatureName;
- }
- if (iFeatureState == FEATURE_SETUP_REQUIRES_DIALOG)
- {
-
- if (goApplicationManager)
- {
- goApplicationManager.getWindowManager().showDialogFrame();
- }
-
- var aFeatureDefinedParams = this.retrieveFeatureParams(sFeatureName);
- if (this.m_oFormMgr !== null)
- {
- var oNewForm = this.m_oFormMgr.setupDialogForm(aFeatureDefinedParams, true);
- if (oNewForm !== null)
- {
-
-
- var oldUnload = window.onbeforeunload;
- window.onbeforeunload = null;
-
- this.m_oFormMgr.submitForm(oNewForm);
- window.onbeforeunload = oldUnload;
-
- }
- }
- }
- }
- }
- };
- CFeatureManager.prototype.setupFeature = function (sFeatureName, aFeatureParams)
- {
- try
- {
- var oRegdFeature = this.getFeatureRegistry().getRegisteredFeature(sFeatureName);
- if (oRegdFeature instanceof AFeatureObject)
- {
- if (oRegdFeature.isQualityOfServiceRequired() === true)
- {
- if (cfgSize("CalcFns") === 0 || cfgGet("currentMetadataFunctionOperations") != "all")
- {
- this.setupQoSForFeature(sFeatureName, aFeatureParams);
- fetchMetadataFunctionList();
- return FEATURE_SETUP_REQUIRES_QOS;
- }
- oRegdFeature.setQualityOfServiceStatus(false);
- }
-
- var aNewFeatureParams = [];
- if (typeof aFeatureParams == "string")
- {
- aNewFeatureParams.push(aFeatureParams);
- }
- else if (typeof aFeatureParams != "undefined" && aFeatureParams !== null)
- {
- for (var iParamNum = 0; iParamNum < aFeatureParams.length; iParamNum++)
- {
- aNewFeatureParams.push(aFeatureParams[iParamNum]);
- }
- }
- oRegdFeature.setup(aNewFeatureParams);
- if (oRegdFeature.isInErrorState())
- {
- oRegdFeature.processErrorState();
- return FEATURE_SETUP_ERROR_STATE;
- }
- else if (oRegdFeature.isDialogRequired())
- {
- return FEATURE_SETUP_REQUIRES_DIALOG;
- }
- else if (oRegdFeature.isSafeWithoutDialog())
- {
- oRegdFeature.proceedWithoutDialog();
- return FEATURE_SETUP_WITHOUT_DIALOG;
- }
- }
- }
- catch (e)
- {
-
-
- if (typeof gQSDebug != "undefined" && gQSDebug)
- {
- alert(e);
- }
- }
- return FEATURE_SETUP_FAILED;
- };
- CFeatureManager.prototype.setupQoSForFeature = function (sFeatureName, aFeatureParams)
- {
- var oAppManager = null;
- if (typeof goApplicationManager != "undefined" && goApplicationManager instanceof CApplicationManager)
- {
- oAppManager = goApplicationManager;
- }
- else if (typeof goDialogManager != "undefined" && goDialogManager instanceof CDialogManager)
- {
- oAppManager = goDialogManager.getApplicationManager();
- }
- else if (typeof goWindowManager != "undefined" && goWindowManager instanceof CWindowManager)
- {
- oAppManager = goWindowManager.getApplicationManager();
- }
- if (oAppManager !== null)
- {
- oAppManager.add("featureWaitingToLaunch", sFeatureName);
- oAppManager.add("featureWaitingToLaunchParams", aFeatureParams);
- }
- };
- CFeatureManager.prototype.retrieveFeatureParams = function (sFeatureName)
- {
- var aFeatureParams = new Array();
- try
- {
- var oRegdFeature = this.getFeatureRegistry().getRegisteredFeature(sFeatureName);
- if (oRegdFeature instanceof AFeatureObject)
- {
- aFeatureParams = oRegdFeature.getDialogParameters();
- }
- }
- catch (e)
- {
- }
- return aFeatureParams;
- };
- CFeatureManager.prototype.executeFeature = function (sFeatureName, aFeatureParams)
- {
- try
- {
- var oRegdFeature = this.getFeatureRegistry().getRegisteredFeature(sFeatureName);
- if (oRegdFeature instanceof AFeatureObject)
- {
- return oRegdFeature.execute(aFeatureParams);
- }
- }
- catch (e)
- {
- }
- return false;
- };
- CFeatureManager.prototype.registerFeatures = function ()
- {
- var aFeatures = goIncludedFeatures.keys();
- for (var idxFeature = 0; idxFeature < aFeatures.length; idxFeature++)
- {
- var sFeatureName = aFeatures[idxFeature];
- var oFeatureObject = this.getFeatureObjectFactory().getFeatureObject(sFeatureName);
- if (oFeatureObject instanceof AFeatureObject)
- {
- this.getFeatureRegistry().register(sFeatureName, oFeatureObject, goIncludedFeatures.get(sFeatureName));
- }
- else
- {
- this.getFeatureRegistry().addToUnregisteredList(sFeatureName, oFeatureObject);
- }
- }
- aFeatures = goExcludedFeatures.keys();
- for (var idxFeature = 0; idxFeature < aFeatures.length; idxFeature++)
- {
- var sFeatureName = aFeatures[idxFeature];
- var oFeatureObject = this.getFeatureObjectFactory().getFeatureObject(sFeatureName);
- this.getFeatureRegistry().addToUnregisteredList(sFeatureName, oFeatureObject);
- }
- };
|