This repo is archived. You can view files and clone it, but cannot push or open issues or pull requests.
SXS20240115/SRC/iMES_PAD/JSplugins/ModuleInstaller/sJDSInstallerService.js
2024-01-24 16:47:50 +08:00

220 lines
9.1 KiB
JavaScript

define(['angularAMD'], function (angularAMD) {
angularAMD.service('sJDSInstallerService', ['$rootScope', '$filter', '$translate', 'config', '$http', '$mdDialog', '$moduleInstaller', '$css', '$timeout',
function($rootScope, $filter, $translate, config, $http, $mdDialog, $moduleInstaller, $css, $timeout){
var $sJDSInstallerService = this, configDialog;
function checkVersion(sJDSLoginInfo, callback, errorback){
$moduleInstaller.status.msg = $filter('translate')('sJDS.msg.check_version');
send(sJDSLoginInfo, function(data){
if(data.url != ''){
//sJDSLoginInfo.version = data.version;
var temp_version = data.version;
var url = 'http://'+sJDSLoginInfo.ip+':'+sJDSLoginInfo.port+data.url;
if(callback)
callback(sJDSLoginInfo, url, temp_version);
} else {
entersJDS(sJDSLoginInfo);
}
}, errorback);
}
//20190718 modify by Dustdusk for M#:
function getsJDSInfo(callback){
var sJDSLoginInfo = {};
//20180420 modify by Dustdusk for M#45433:智派工的ip / port / 站台名稱 一律由SMES傳入
sJDSLoginInfo.ip = config.server.ip;
sJDSLoginInfo.port = config.server.port;
sJDSLoginInfo.name = 'sJDS_'+config.setting.environment;
sJDSLoginInfo.account = config.cache.account;
sJDSLoginInfo.user_name = config.cache.name;
sJDSLoginInfo.password = config.cache.password;
sJDSLoginInfo.session = config.mdssessionno;
sJDSLoginInfo.lang = $translate.use();
require(['text!sJDS/config/config.json'], function(sJDSConfig){
//找到,表示智派工已下載
try{
sJDSLoginInfo.version = JSON.parse(sJDSConfig).appVersion||'0.0.0.0';
}catch(e){
sJDSLoginInfo.version = '0.0.0.0';
}
if(typeof(callback) == 'function')
callback(sJDSLoginInfo);
}, function(e){
//找不到,表示未下載
sJDSLoginInfo.version = '0.0.0.0';
if(typeof(callback) == 'function')
callback(sJDSLoginInfo);
});
}
function entersJDS(sJDSLoginInfo, version){
if(version){
sJDSLoginInfo.version = version;
}
localStorage.setItem('sJDS_login', JSON.stringify(sJDSLoginInfo));
if(window.resolveLocalFileSystemURL){
window.resolveLocalFileSystemURL(cordova.file.dataDirectory+'update//sJDS',
function(updateFolder){
document.location.href = updateFolder.toURL() + '//index.html';
},
function(){
$sJDSInstallerService.showConfigDialog();
}
);
} else {
document.location.href = 'sJDS/index.html';
}
}
function combineIP(array){
var totalip;
array.forEach(function(ipstring){
if(!totalip)
totalip = ipstring;
else
totalip += '.' +ipstring;
});
return totalip;
}
function doUpdate(sJDSLoginInfo, dialog){
$sJDSInstallerService.update(sJDSLoginInfo, function(sJDSLoginInfo, version){
$timeout(function(){
entersJDS(sJDSLoginInfo, version);
});
}, function(msg){
$timeout(function(){
dialog.mode = 'setting';
});
});
}
function send(sendData, callback, errorback){
var lang = {
'zh_CN':'Chs',
'zh_TW':'Chs',
'en_US':'Eng'
};
var data = {
url: 'http://' + sendData.ip + ':' + sendData.port + '/'+sendData.name+'/Api/Adapter',
method : 'POST',
headers : {
'Content-Type': 'application/json;charset=UTF-8'
},
data :{
uri:'IUpdateService',
method:'GetUpdate',
userNo:sendData.account,
applicationId:config.applicationId,
cookie:'',
session:sendData.session,
language:lang[sendData.lang],
data:sendData.version
}
};
$http(data).success(function(data, status, headers) {
$rootScope.hideLoading();
if(data.success){
callback(data.result);
} else {
//$rootScope.showAlert(data.message, errorback);
$moduleInstaller.status.msg = data.message;
if(errorback)
errorback();
}
}).error(function(respose,status_code,c,d){
$rootScope.hideLoading();
$moduleInstaller.status.msg = status_code;
if(errorback)
errorback();
//$rootScope.showAlert(respose, errorback);
});
}
$sJDSInstallerService.update = function(sJDSLoginInfo, callback, errorback){
checkVersion(sJDSLoginInfo,
function(sJDSLoginInfo, url, version){
$moduleInstaller.update({
url:url,
root_path:'sJDS',
callback:function(){
if(callback){
callback(sJDSLoginInfo, version);
}
},
errorback:function(){
if(errorback){
errorback();
}
}
});
}, function(){
if(errorback){
errorback();
}
}
);
}
$sJDSInstallerService.back = function(){
localStorage.setItem('SMES_login', localStorage.getItem('sJDS_login'));
if(window.resolveLocalFileSystemURL){
window.resolveLocalFileSystemURL(cordova.file.dataDirectory+'update', function(updateFolder){
document.location.href = updateFolder.toURL() + '/index.html';
}, function(){
document.location.href = '../index.html';
});
} else {
document.location.href = '../index.html';
}
};
$sJDSInstallerService.open = function(content){
if(content.mode == 'setting'){
$moduleInstaller.status.msg = $filter('translate')('sJDS.msg.input_server_info');
}
if(content.msg){
$moduleInstaller.status.msg = content.msg;
}
getsJDSInfo(function(sJDSLoginInfo){
$mdDialog.dialog(
'JSplugins/ModuleInstaller/sJDSConfig.tmp.html',
function(dialog){
configDialog = dialog;
return {
mode:content.mode,
serverIp: sJDSLoginInfo.ip.split('.'),
port: sJDSLoginInfo.port,
server_name: sJDSLoginInfo.name,
status:$moduleInstaller.status,
beforeShown: function(){
$css.add('JSplugins/ModuleInstaller/sJDSConfig.css');
componentHandler.upgradeAllRegistered();
if(content.mode != 'setting'){
$timeout(function(){
doUpdate(sJDSLoginInfo, dialog);
}, 200);
}
},
confirm:function(){
dialog.mode = undefined;
sJDSLoginInfo.ip = combineIP(dialog.serverIp);
sJDSLoginInfo.port = dialog.port;
sJDSLoginInfo.name = dialog.server_name;
//localStorage.setItem('sJDS_login', JSON.stringify(sJDSLoginInfo));
$timeout(function(){
doUpdate(sJDSLoginInfo, dialog);
}, 200);
},
cancel:function(){
$css.remove('JSplugins/ModuleInstaller/sJDSConfig.css');
dialog.hide();
}
};
}
);
});
};
}]);
});