完成集群管理和数据管理功能
This commit is contained in:
parent
7efdc5d699
commit
7073155320
|
@ -0,0 +1,4 @@
|
||||||
|
/// <reference path="../../includes.d.ts" />
|
||||||
|
declare module Developer {
|
||||||
|
function createCurrentSubNavBar($scope: any, $location: any, $routeParams: any): any;
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
/// <reference path="../../includes.d.ts" />
|
||||||
|
/// <reference path="developerPlugin.d.ts" />
|
||||||
|
declare module Developer {
|
||||||
|
class OptionsParams {
|
||||||
|
pagerSizeOption: number[];
|
||||||
|
dataType: any;
|
||||||
|
currentTableSize: number;
|
||||||
|
dataBatch: any;
|
||||||
|
labels: {};
|
||||||
|
currentPageNum: number;
|
||||||
|
totalSize: any;
|
||||||
|
priorTableSize: number;
|
||||||
|
createParamData(): {
|
||||||
|
currentPageNum: number;
|
||||||
|
dataType: any;
|
||||||
|
submittedBatch: any;
|
||||||
|
limit: number;
|
||||||
|
priorTableSize: number;
|
||||||
|
};
|
||||||
|
getPageSizeNum(): number;
|
||||||
|
}
|
||||||
|
class DataModelService {
|
||||||
|
data: any[];
|
||||||
|
paramOptions: any;
|
||||||
|
constructor();
|
||||||
|
protected getDataModel(paramOptions: any): any;
|
||||||
|
initParamOptions(): void;
|
||||||
|
updateModel(): void;
|
||||||
|
maybeFormat(): void;
|
||||||
|
updateParamOption(option: string, value: any): void;
|
||||||
|
getParamOption(key: string): any;
|
||||||
|
}
|
||||||
|
}
|
|
@ -686,73 +686,6 @@ a:hover.data_file_btn {
|
||||||
background: url(../img/icons2.gif) -6px 9px no-repeat;
|
background: url(../img/icons2.gif) -6px 9px no-repeat;
|
||||||
}
|
}
|
||||||
|
|
||||||
.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical {
|
|
||||||
margin-left: 170px;
|
|
||||||
}
|
|
||||||
.nav-pf-vertical {
|
|
||||||
width: auto;
|
|
||||||
min-width: 170px;
|
|
||||||
}
|
|
||||||
.nav-pf-vertical .list-group > .list-group-item > a {
|
|
||||||
width: auto;
|
|
||||||
}
|
|
||||||
.nav-pf-vertical > .list-group > .list-group-item > a .fa,
|
|
||||||
.nav-pf-vertical > .list-group > .list-group-item > a .glyphicon,
|
|
||||||
.nav-pf-vertical > .list-group > .list-group-item > a .pficon {
|
|
||||||
line-height: 25px;
|
|
||||||
margin-right: 3px;
|
|
||||||
}
|
|
||||||
.nav-pf-vertical > .list-group > .list-group-item > a img {
|
|
||||||
max-height: 16px;
|
|
||||||
max-width: 16px;
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
|
||||||
.navbar-tab-vertical {
|
|
||||||
height: 70px;
|
|
||||||
width: 100%;
|
|
||||||
display: block;
|
|
||||||
background: #1d1d1d;
|
|
||||||
border-color: #1d1d1d;
|
|
||||||
}
|
|
||||||
.navbar-tab-horizontal {
|
|
||||||
height: 100%;
|
|
||||||
width: 100px;
|
|
||||||
display: block;
|
|
||||||
background: #1d1d1d;
|
|
||||||
border-color: #1d1d1d;
|
|
||||||
}
|
|
||||||
.gesture {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.navbar-lf {
|
|
||||||
width: 200px;
|
|
||||||
min-height: 800px;
|
|
||||||
background: #1d1d1d;
|
|
||||||
position: absolute;
|
|
||||||
left: 0;
|
|
||||||
top: 0px;
|
|
||||||
}
|
|
||||||
.navbar-lf-menu {
|
|
||||||
display: block;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
.log-img {
|
|
||||||
width: "66";
|
|
||||||
height: "21";
|
|
||||||
alt: "logo";
|
|
||||||
}
|
|
||||||
.fl {
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
a.logo {
|
|
||||||
display: block;
|
|
||||||
width: 130px;
|
|
||||||
padding: 20px 0 0 40px;
|
|
||||||
}
|
|
||||||
.content-margin {
|
|
||||||
margin-left: 170px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* This is for the 'Overview' page with all the rows of boxes */
|
/* This is for the 'Overview' page with all the rows of boxes */
|
||||||
.service-view-rectangle {
|
.service-view-rectangle {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
@ -1099,3 +1032,70 @@ kubernetes-container-terminal .terminal-actions {
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical {
|
||||||
|
margin-left: 170px;
|
||||||
|
}
|
||||||
|
.nav-pf-vertical {
|
||||||
|
width: auto;
|
||||||
|
min-width: 170px;
|
||||||
|
}
|
||||||
|
.nav-pf-vertical .list-group > .list-group-item > a {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
.nav-pf-vertical > .list-group > .list-group-item > a .fa,
|
||||||
|
.nav-pf-vertical > .list-group > .list-group-item > a .glyphicon,
|
||||||
|
.nav-pf-vertical > .list-group > .list-group-item > a .pficon {
|
||||||
|
line-height: 25px;
|
||||||
|
margin-right: 3px;
|
||||||
|
}
|
||||||
|
.nav-pf-vertical > .list-group > .list-group-item > a img {
|
||||||
|
max-height: 16px;
|
||||||
|
max-width: 16px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
.navbar-tab-vertical {
|
||||||
|
height: 70px;
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
background: #1d1d1d;
|
||||||
|
border-color: #1d1d1d;
|
||||||
|
}
|
||||||
|
.navbar-tab-horizontal {
|
||||||
|
height: 100%;
|
||||||
|
width: 100px;
|
||||||
|
display: block;
|
||||||
|
background: #1d1d1d;
|
||||||
|
border-color: #1d1d1d;
|
||||||
|
}
|
||||||
|
.gesture {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.navbar-lf {
|
||||||
|
width: 200px;
|
||||||
|
min-height: 800px;
|
||||||
|
background: #1d1d1d;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
.navbar-lf-menu {
|
||||||
|
display: block;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
.log-img {
|
||||||
|
width: "66";
|
||||||
|
height: "21";
|
||||||
|
alt: "logo";
|
||||||
|
}
|
||||||
|
.fl {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
a.logo {
|
||||||
|
display: block;
|
||||||
|
width: 130px;
|
||||||
|
padding: 20px 0 0 40px;
|
||||||
|
}
|
||||||
|
.content-margin {
|
||||||
|
margin-left: 170px;
|
||||||
|
}
|
||||||
|
|
File diff suppressed because one or more lines are too long
Binary file not shown.
|
@ -0,0 +1,101 @@
|
||||||
|
/// <reference path="../../includes.ts"/>
|
||||||
|
module Developer{
|
||||||
|
var log = Logger.get('developer-navigation');
|
||||||
|
export function createCurrentSubNavBar($scope, $location, $routeParams){
|
||||||
|
return activateCurrent([
|
||||||
|
{
|
||||||
|
href: "#",
|
||||||
|
label: "数据查看",
|
||||||
|
title: "查看所有数据",
|
||||||
|
items: [{
|
||||||
|
href: UrlHelpers.join(context,"Overview/data-type/all"),
|
||||||
|
label: "全部",
|
||||||
|
title: "全部数据"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
href: UrlHelpers.join(context,"Overview/data-type/financial"),
|
||||||
|
label: "财政",
|
||||||
|
title: "财政数据"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
href: UrlHelpers.join(context,"Overview/data-type/social-security"),
|
||||||
|
label: "社保",
|
||||||
|
title: "社保数据"
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
href: UrlHelpers.join(context, "task"),
|
||||||
|
label: "任务",
|
||||||
|
title: "数据汇总任务",
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
function activateCurrent(navBarItems) {
|
||||||
|
navBarItems = _.compact(navBarItems);
|
||||||
|
var injector = HawtioCore.injector;
|
||||||
|
var $location = injector ? injector.get<ng.ILocationService>("$location") : null;
|
||||||
|
if ($location) {
|
||||||
|
var path = normalizeHref(trimQuery($location.path()));
|
||||||
|
var found = false;
|
||||||
|
function makeActive(item) {
|
||||||
|
item.active = true;
|
||||||
|
found = true;
|
||||||
|
}
|
||||||
|
function getHref(item) {
|
||||||
|
var href = item.href;
|
||||||
|
var trimHref = trimQuery(href);
|
||||||
|
return normalizeHref(trimHref);
|
||||||
|
}
|
||||||
|
angular.forEach(navBarItems, (item) => {
|
||||||
|
if (!found && item) {
|
||||||
|
if (angular.isFunction(item.isActive)) {
|
||||||
|
if (item.isActive(item, path)) {
|
||||||
|
makeActive(item);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
var trimHref = getHref(item);
|
||||||
|
if (!trimHref) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (trimHref === path) {
|
||||||
|
makeActive(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
// Maybe it's a sub-item of a tab, let's fall back to that maybe
|
||||||
|
if (!found) {
|
||||||
|
angular.forEach(navBarItems, (item) => {
|
||||||
|
if (!found) {
|
||||||
|
if (!angular.isFunction(item.isActive)) {
|
||||||
|
var trimHref = getHref(item);
|
||||||
|
if (!trimHref) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (_.startsWith(path, trimHref)) {
|
||||||
|
makeActive(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// still not found, let's log it
|
||||||
|
if (!found) {
|
||||||
|
log.debug("No navigation tab found for path:", path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return navBarItems;
|
||||||
|
}
|
||||||
|
|
||||||
|
function trimQuery(text) {
|
||||||
|
if (text) {
|
||||||
|
var idx = text.indexOf("?");
|
||||||
|
if (idx >= 0) {
|
||||||
|
return text.substring(0, idx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return text;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,141 @@
|
||||||
|
/// <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 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
|
||||||
|
}
|
||||||
|
|
||||||
|
angular.forEach(this.labels,(value, key) =>{
|
||||||
|
if(extendValue.indexOf(key))
|
||||||
|
result[key] = value;
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public getPageSizeNum(){
|
||||||
|
var num = Math.ceil(this.totalSize/this.currentTableSize);
|
||||||
|
if(num < this.currentPageNum)
|
||||||
|
num = this.currentPageNum;
|
||||||
|
return num;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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 populateKeys(items:Array<any>){
|
||||||
|
var result =[];
|
||||||
|
angular.forEach(items, (item) =>{
|
||||||
|
result.push(populateKey(item));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
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));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function createParamData(options: OptionsParams){
|
||||||
|
return options.createParamData();
|
||||||
|
}
|
||||||
|
|
||||||
|
export class DataModelService{
|
||||||
|
public data = [];
|
||||||
|
public paramOptions = null;
|
||||||
|
|
||||||
|
constructor(){
|
||||||
|
this.initParamOptions();
|
||||||
|
//this.updateModel();
|
||||||
|
this.maybeFormat();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//更新数据模型
|
||||||
|
protected getDataModel(paramOptions){
|
||||||
|
var result ;
|
||||||
|
$.ajax({
|
||||||
|
async: false,
|
||||||
|
type : "POST",
|
||||||
|
url : "/java/console/api/data.json",
|
||||||
|
dataType : 'json',
|
||||||
|
data: createParamData(paramOptions),
|
||||||
|
success : function(data) {
|
||||||
|
console.log(paramOptions);
|
||||||
|
result = data.data;
|
||||||
|
paramOptions.totalSize=data.length;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public initParamOptions(){
|
||||||
|
this.paramOptions = new OptionsParams();
|
||||||
|
}
|
||||||
|
|
||||||
|
public updateModel(){
|
||||||
|
this.data = this.getDataModel(this.paramOptions);
|
||||||
|
this.maybeFormat();
|
||||||
|
}
|
||||||
|
|
||||||
|
//格式数据模型中的每个单条记录
|
||||||
|
public maybeFormat(){
|
||||||
|
populateKeys(this.data);
|
||||||
|
populateNames(this.data);
|
||||||
|
}
|
||||||
|
|
||||||
|
//更新用户选择参数
|
||||||
|
public updateParamOption(option:string, value:any){
|
||||||
|
this.paramOptions[option] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
//根据key获取用户选择参数
|
||||||
|
public getParamOption(key:string){
|
||||||
|
return this.paramOptions[key];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//创建数据模型服务
|
||||||
|
_module.factory("DataModel", ['$rootScope', '$http', '$location', '$resource', ($rootScope, $http, $location, $resource) => {
|
||||||
|
var $scope = new DataModelService();
|
||||||
|
return $scope;
|
||||||
|
}]);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -55,19 +55,19 @@
|
||||||
</button>
|
</button>
|
||||||
<span class="pull-right"> </span>
|
<span class="pull-right"> </span>
|
||||||
|
|
||||||
<button ng-show="id"
|
<!--<button ng-show="id"
|
||||||
class="btn btn-primary pull-right"
|
class="btn btn-primary pull-right"
|
||||||
ng-click="id = undefined"><i class="fa fa-list"></i></button>
|
ng-click="id = undefined"><i class="fa fa-list"></i></button>
|
||||||
<span ng-show="id" class="pull-right"> </span>
|
<span ng-show="id" class="pull-right"> </span>
|
||||||
<a class="btn btn-default pull-right"
|
<a class="btn btn-default pull-right"
|
||||||
title="Create a new replication controller"
|
title="Create a new replication controller"
|
||||||
ng-click="createRCs()"><i class="fa fa-plus"></i> 创建汇总数据库</a>
|
ng-click="createRCs()"><i class="fa fa-plus"></i> 创建汇总数据库</a>
|
||||||
<span class="pull-right"> </span>
|
<span class="pull-right"> </span>-->
|
||||||
<button ng-show="model.fetched"
|
<button ng-show="model.fetched"
|
||||||
ng-disabled="!id && tableConfig.selectedItems.length == 0"
|
ng-disabled="!id && tableConfig.selectedItems.length == 0"
|
||||||
class="btn btn-success pull-right"
|
class="btn btn-success pull-right"
|
||||||
ng-click="extractData.open(id || tableConfig.selectedItems)">
|
ng-click="extractData.open(id || tableConfig.selectedItems)">
|
||||||
<i class="fa fa-play-circle"></i> 抽取汇总数据库
|
<i class="fa fa-play-circle"></i> 汇总
|
||||||
</button>
|
</button>
|
||||||
<!--<span ng-include="'runButton.html'"></span>-->
|
<!--<span ng-include="'runButton.html'"></span>-->
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,78 @@
|
||||||
|
.layout-pf.layout-pf-fixed .container-pf-nav-pf-vertical {
|
||||||
|
margin-left: 170px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-pf-vertical {
|
||||||
|
& .list-group > .list-group-item > a {
|
||||||
|
width: auto;
|
||||||
|
}
|
||||||
|
width: auto;
|
||||||
|
min-width: 170px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-pf-vertical > .list-group > .list-group-item > a .fa,
|
||||||
|
.nav-pf-vertical > .list-group > .list-group-item > a .glyphicon,
|
||||||
|
.nav-pf-vertical > .list-group > .list-group-item > a .pficon {
|
||||||
|
line-height: 25px;
|
||||||
|
margin-right: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-pf-vertical > .list-group > .list-group-item > a img {
|
||||||
|
max-height: 16px;
|
||||||
|
max-width: 16px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-tab-vertical {
|
||||||
|
height: 70px;
|
||||||
|
width: 100%;
|
||||||
|
display: block;
|
||||||
|
background: #1d1d1d;
|
||||||
|
border-color: #1d1d1d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-tab-horizontal {
|
||||||
|
height: 100%;
|
||||||
|
width: 100px;
|
||||||
|
display: block;
|
||||||
|
background: #1d1d1d;
|
||||||
|
border-color: #1d1d1d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gesture {
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-lf {
|
||||||
|
width: 200px;
|
||||||
|
min-height: 800px;
|
||||||
|
background: #1d1d1d;
|
||||||
|
position: absolute;
|
||||||
|
left: 0;
|
||||||
|
top: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.navbar-lf-menu {
|
||||||
|
display: block;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.log-img {
|
||||||
|
width: "66";
|
||||||
|
height: "21";
|
||||||
|
alt: "logo";
|
||||||
|
}
|
||||||
|
|
||||||
|
.fl {
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.logo {
|
||||||
|
display: block;
|
||||||
|
width: 130px;
|
||||||
|
padding: 20px 0 0 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-margin {
|
||||||
|
margin-left: 170px;
|
||||||
|
}
|
Loading…
Reference in New Issue