import { Http } from "../Http";
import { ColorMap } from "./ColorMap";
const colormap = require("/assets/geePalette.json");
const _ = require("lodash");
/**
* @memberof gve
* @class gve.Palette
* @since gve
*/
export class Palette {
paletteName: string = "GVEEPalette";
band_rendering: any = {
gray: {
min: "",
max: "",
color_gradient: "",
reverse: false, //reverse为false的时候代表从黑到白 为true的时候代表从白到黑
},
pseudocolor: {
min: "",
max: "",
// 种类1
interpolation: "",
colormap: "", // .... //Editor 修改内容
// 种类2
intervals: "",
},
};
color_rendering: any;
/**
* 图例颜色的构造方法,构造一个新的图例实例。
* @hideconstructor
* @param {Object} [options] 图例颜色对象
* @return Geometry.Palette
*/
constructor(options?: any) {
if (!(this instanceof Palette)) {
return new Palette(options);
}
this.band_rendering = {
gray: {
min: "",
max: "",
color_gradient: "",
reverse: false, //reverse为false的时候代表从黑到白 为true的时候代表从白到黑
},
pseudocolor: {
min: "",
max: "",
// 种类1
interpolation: "",
colormap: "", // .... //Editor 修改内容
// 种类2
intervals: "",
},
uniquevalue: {
colortable: {
values: [],
colors: [],
na: "" // 可选,没有不要传递此值,不要传递空值
}
}
};
if (options && options.pseudocolor) {
this.band_rendering = {
pseudocolor: _.assign(
{
min: "",
max: "",
// 种类1
interpolation: "",
colormap: "", // .... //Editor 修改内容
// 种类2
intervals: "",
},
options
),
};
}
this.color_rendering = {
blending: "",
brightness: "",
gamma: "",
};
return this;
}
/**
* 获取图例主题列表
* @returns Array<String>
*/
getPaletteThemes() {
console.log("colormapppppppp: ", colormap)
return Object.keys(colormap);
}
/**
* 返回获取给定主题的可用调色板名称的数组
* @param {String} theme 给定的主题条件
* @returns Array<String>
*/
getPaletteNames(theme: string) {
return Object.keys(colormap[theme]);
}
/**
* 指定主题指定名称的图例对应索引
* @param {String} theme 主题的名称
* @param {String} name 调色板名称
* @returns Object
*/
getPaletteNumbers(theme: string, name: string) {
return Object.keys(colormap[theme][name]);
}
/**
* 获取指定调色板名称和主题的颜色列表
* @param {String} theme 主题的名称
* @param {String} name 调色板名称
* @param {String|Number} number 颜色的索引
* @param {String} format 返回的格式分别为string和array两种,默认为string
* @returns Array<String>|String
*/
getPalette(
theme: string,
name: string,
number: string | number,
format?: string
) {
if (!(theme && name && number)) {
return [];
}
if (typeof (number) == 'number') {
number = number.toString();
}
if (format && format.match(/array/i)) {
return colormap[theme][name][number];
}
return colormap[theme][name][number];
}
/**
* 用给定的名称和调色板创建一个新的ColorMap对象
* @param {String} name - 颜色映射的名称
* @param {Palette} platte - -配色图的调色板
* @returns {Promise<ColorMap>} ColorMap
*/
async createColormap(name: string, platte: Palette) {
let data = await Http.getRequest_expressions();
Http.responseSubject$.next(data);
console.log("create color map", data);
//可能是请求中止
if (!data) {
return;
}
let colormap = new ColorMap();
return colormap;
}
getColorMap() {
return colormap;
}
}