220 lines
9.1 KiB
JavaScript
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();
|
|
}
|
|
};
|
|
}
|
|
);
|
|
});
|
|
};
|
|
}]);
|
|
});
|