aggregation-platform/plugins/developer/ts/dataManagerModel.ts

251 lines
8.1 KiB
TypeScript

/// <reference path="../../includes.ts"/>
/// <reference path="developerPlugin.ts"/>
module Developer {
export class OptionsParams {
public pagerSizeOption = [20, 50, 100];
public dataType = null;
public currentTableSize = 20;
public dataBatch = null;
public labels = {};
public currentPageNum = 1;
public totalSize = null;
public priorTableSize = 20;
public keyQuery = null;
public volumeType = 1;
public totlePage = 1;
public createParamData() {
var extendValue = ["cityName", "districtName", "dataVersion", "systemName", "dataYear"];
var result = {
currentPageNum: this.currentPageNum,
dataType: this.dataType,
submittedBatch: this.dataBatch,
limit: this.currentTableSize,
priorTableSize: this.priorTableSize,
keyQuery: this.keyQuery,
volumeType: this.volumeType
}
angular.forEach(this.labels, (value, key) => {
if (extendValue.indexOf(key))
result[key] = value;
});
console.log(result);
console.log("参数");
return result;
}
public getPageSizeNum() {
var num = Math.ceil(this.totalSize / this.currentTableSize);
console.log(this.totalSize);
if (num < this.currentPageNum)
num = this.currentPageNum;
return num;
}
}
function createLabel(cityName: string, districtName: string, systemName: string, version: string, year: string) {
return {
cityName: cityName,
districtName: districtName,
systemName: systemName,
version: "版本" + version,
year: year
}
}
function createAlias(cityName: string, districtName: string, systemName: string, version: string, year: string) {
return cityName + "_" + districtName + "_" + systemName + "_" + year + "_版本" + version;
}
function createKey(regionalismCode, systemId, version) {
return regionalismCode + "-" + systemId + "-" + version;
}
function populateKey(item) {
var result = item;
result["_key"] = createKey(item.regionalismCode, item.systemCode, item.dataVersion);
return result;
}
function createItemsAlias(items: Array < any > ) {
var result = [];
angular.forEach(items, (item) => {
item.alias = createAlias(item.cityName, item.districtName, item.systemName, item.dataVersion, item.year);
result.push(item);
});
return result;
}
function populateLabel(item) {
var result = item
result["labels"] = createLabel(item.cityName, item.districtName, item.systemName, item.dataVersion, item.year);
return result;
}
function populateLabels(items: Array < any > ) {
var result = [];
angular.forEach(items, (item) => {
result.push(populateLabel(item));
});
return result;
}
function populateKeys(items: Array < any > ) {
var result = [];
angular.forEach(items, (item) => {
result.push(populateKey(item));
});
return result;
}
function createName(cityName, districtName) {
return cityName + "-" + districtName;
}
function populateName(item) {
var result = item;
result["name"] = createName(item.cityName, item.districtName);
return result;
}
function populateNames(items: Array < any > ) {
var result = [];
angular.forEach(items, (item) => {
result.push(populateName(item));
});
return result;
}
function createParamData(options: OptionsParams) {
return options.createParamData();
}
function formatTask(items: Array < any > ) {
var result = [];
angular.forEach(items, (item) => {
var tmp_batch = "";
if (item.submittedBatch.indexOf("批次") == -1) {
tmp_batch = "批次" + item.submittedBatch;
} else {
tmp_batch = item.submittedBatch;
}
item["_key"] = item.regionalismCode + "-" + item.systemCode + "-" + item.dataVersion;
item["name"] = item.cityName + "-" + item.districtName;
item["status"] = item.completeStatus;
item["from"] = item.dataPath;
item["process"] = item.rate;
item["to"] = item.dstPath;
item["labels"] = {
dataType: item.dataType,
batch: tmp_batch,
dataVersion: "版本" + item.dataVersion,
dataYear: item.year
}
result.push(item);
});
// console.log(result);
// console.log("formatTask");
return result;
}
export class DataModelService {
public data: Array < any > = [];
public paramOptions: OptionsParams = new OptionsParams();
public transferTasks: Array < any > = [];
public doneTask: Array < any > = [];
public runningTask: Array < any > = [];
constructor() {
this.updateModel();
}
//更新数据模型
protected getDataModel(paramOptions) {
var result;
$.ajax({
async: false,
type: "POST",
url: "/java/console/api/data.json",
dataType: 'json',
data: createParamData(paramOptions),
success: function(data) {
result = data.data;
paramOptions.totalSize = data.length;
paramOptions.totlePage = data.page.totlePage;
}
});
console.log(result);
console.log("getDataModel");
return result;
}
public initParamOptions() {
this.paramOptions = new OptionsParams();
}
public updateModel() {
this.data = this.getDataModel(this.paramOptions);
this.maybeFormat();
}
//格式数据模型中的每个单条记录
public maybeFormat() {
this.data = populateKeys(this.data);
this.data = populateNames(this.data);
this.data = populateLabels(this.data);
this.data = createItemsAlias(this.data);
}
//更新用户选择参数
public updateParamOption(option: string, value: any) {
this.paramOptions[option] = value;
}
//根据key获取用户选择参数
public getParamOption(key: string) {
return this.paramOptions[key];
}
public startIntervalTask($interval, $http) {
var result;
var timer = $interval(() => {
this.doneTask = [];
this.runningTask = [];
$.ajax({
async: true,
type: "POST",
url: "/java/console/api/task/transfer/list",
success: function(data) {
if (data) {
result = data;
}
}
});
this.transferTasks = formatTask(result);
angular.forEach(this.transferTasks, (task) => {
if (task.completeStatus == 2)
this.doneTask.push(task);
else
this.runningTask.push(task);
})
}, 1500);
timer.then(() => {
console.log("Done!");
}, () => {
console.log("error");
}, () => {
console.log("每次都更新");
});
}
}
//创建数据模型服务
_module.factory("DataModel", ['$rootScope', '$http', '$interval', '$location', '$resource', ($rootScope, $http, $interval, $location, $resource) => {
var $scope = new DataModelService();
$scope.startIntervalTask($interval, $http);
return $scope;
}]);
}